diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index c81220d1b4..7b7a1e89d2 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -9,7 +9,7 @@ "type=bind,source=${localEnv:HOME}/.n8n,target=/home/node/.n8n,consistency=cached" ], "forwardPorts": [8080, 5678], - "postCreateCommand": "corepack prepare --activate && pnpm install ", + "postCreateCommand": "corepack prepare --activate && pnpm install", "postAttachCommand": "pnpm build", "customizations": { "codespaces": { diff --git a/.devcontainer/docker-compose.yml b/.devcontainer/docker-compose.yml index 7ecead94b6..16103c2a4f 100644 --- a/.devcontainer/docker-compose.yml +++ b/.devcontainer/docker-compose.yml @@ -19,5 +19,6 @@ services: - ..:/workspaces:cached command: sleep infinity environment: + DB_POSTGRESDB_HOST: postgres DB_TYPE: postgresdb DB_POSTGRESDB_PASSWORD: password diff --git a/.dockerignore b/.dockerignore index fe841322cc..1b60244f21 100644 --- a/.dockerignore +++ b/.dockerignore @@ -10,6 +10,7 @@ packages/**/.turbo packages/**/*.test.* .git .github +!.github/scripts *.tsbuildinfo packages/cli/dist/**/e2e.* docker/compose diff --git a/.github/pull_request_title_conventions.md b/.github/pull_request_title_conventions.md index 8808000e3b..b0e0ae579c 100644 --- a/.github/pull_request_title_conventions.md +++ b/.github/pull_request_title_conventions.md @@ -4,75 +4,79 @@ We have very precise rules over how Pull Requests (to the `master` branch) must A PR title consists of these elements: -``` +```text (): │ │ │ │ │ └─⫸ Summary: In imperative present tense. | | Capitalized | | No period at the end. │ │ - │ └─⫸ Scope: API|core|editor|* Node + │ └─⫸ Scope: API | benchmark | core | editor | * Node │ - └─⫸ Type: build|ci|docs|feat|fix|perf|refactor|test + └─⫸ Type: build | ci | chore | docs | feat | fix | perf | refactor | test ``` - PR title - - type - - scope (*optional*) - - summary + - type + - scope (_optional_) + - summary - PR description - - body (optional) - - blank line - - footer (optional) + - body (optional) + - blank line + - footer (optional) The structure looks like this: -### **Type** +## Type Must be one of the following: -- `feat` - A new feature -- `fix` - A bug fix -- `perf` - A code change that improves performance -- `test` - Adding missing tests or correcting existing tests -- `docs` - Documentation only changes -- `refactor` - A code change that neither fixes a bug nor adds a feature -- `build` - Changes that affect the build system or external dependencies (example scopes: broccoli, npm) -- `ci` - Changes to our CI configuration files and scripts (e.g. Github actions) +| type | description | appears in changelog | +| --- | --- | --- | +| `feat` | A new feature | ✅ | +| `fix` | A bug fix | ✅ | +| `perf` | A code change that improves performance | ✅ | +| `test` | Adding missing tests or correcting existing tests | ❌ | +| `docs` | Documentation only changes | ❌ | +| `refactor` | A behavior-neutral code change that neither fixes a bug nor adds a feature | ❌ | +| `build` | Changes that affect the build system or external dependencies (TypeScript, Jest, pnpm, etc.) | ❌ | +| `ci` | Changes to CI configuration files and scripts (e.g. Github actions) | ❌ | +| `chore` | Routine tasks, maintenance, and minor updates not covered by other types | ❌ | -If the prefix is `feat`, `fix` or `perf`, it will appear in the changelog. However if there is any BREAKING CHANGE (see Footer section below), the commit will always appear in the changelog. +> BREAKING CHANGES (see Footer section below), will **always** appear in the changelog unless suffixed with `no-changelog`. -### **Scope (optional)** +## Scope (optional) The scope should specify the place of the commit change as long as the commit clearly addresses one of the following supported scopes. (Otherwise, omit the scope!) -- `API` - changes to the *public* API +- `API` - changes to the _public_ API +- `benchmark` - changes to the benchmark cli - `core` - changes to the core / private API / backend of n8n - `editor` - changes to the Editor UI - `* Node` - changes to a specific node or trigger node (”`*`” to be replaced with the node name, not its display name), e.g. - - mattermost → Mattermost Node - - microsoftToDo → Microsoft To Do Node - - n8n → n8n Node + - mattermost → Mattermost Node + - microsoftToDo → Microsoft To Do Node + - n8n → n8n Node -### **Summary** +## Summary The summary contains succinct description of the change: - use the imperative, present tense: "change" not "changed" nor "changes" - capitalize the first letter -- *no* dot (.) at the end -- do *not* include Linear ticket IDs etc. (e.g. N8N-1234) +- _no_ dot (.) at the end +- do _not_ include Linear ticket IDs etc. (e.g. N8N-1234) - suffix with “(no-changelog)” for commits / PRs that should not get mentioned in the changelog. -### **Body (optional)** +## Body (optional) Just as in the **summary**, use the imperative, present tense: "change" not "changed" nor "changes". The body should include the motivation for the change and contrast this with previous behavior. -### **Footer (optional)** +## Footer (optional) The footer can contain information about breaking changes and deprecations and is also the place to [reference GitHub issues](https://docs.github.com/en/issues/tracking-your-work-with-issues/linking-a-pull-request-to-an-issue#linking-a-pull-request-to-an-issue-using-a-keyword), Linear tickets, and other PRs that this commit closes or is related to. For example: -``` +```text BREAKING CHANGE: @@ -83,7 +87,7 @@ Fixes # or -``` +```text DEPRECATED: @@ -95,18 +99,18 @@ Closes # A Breaking Change section should start with the phrase "`BREAKING CHANGE:` " followed by a summary of the breaking change, a blank line, and a detailed description of the breaking change that also includes migration instructions. > 💡 A breaking change can additionally also be marked by adding a “`!`” to the header, right before the “`:`”, e.g. `feat(editor)!: Remove support for dark mode` -> +> > This makes locating breaking changes easier when just skimming through commit messages. > 💡 The breaking changes must also be added to the [packages/cli/BREAKING-CHANGES.md](https://github.com/n8n-io/n8n/blob/master/packages/cli/BREAKING-CHANGES.md) file located in the n8n repository. Similarly, a Deprecation section should start with "`DEPRECATED:` " followed by a short description of what is deprecated, a blank line, and a detailed description of the deprecation that also mentions the recommended update path. -### **Revert commits** +### Revert commits If the commit reverts a previous commit, it should begin with `revert:` , followed by the header of the reverted commit. The content of the commit message body should contain: - information about the SHA of the commit being reverted in the following format: `This reverts commit `, -- a clear description of the reason for reverting the commit message. \ No newline at end of file +- a clear description of the reason for reverting the commit message. diff --git a/.github/scripts/ensure-provenance-fields.mjs b/.github/scripts/ensure-provenance-fields.mjs new file mode 100644 index 0000000000..2fad319a62 --- /dev/null +++ b/.github/scripts/ensure-provenance-fields.mjs @@ -0,0 +1,44 @@ +import { writeFile, readFile, copyFile } from 'fs/promises'; +import { resolve, dirname } from 'path'; +import child_process from 'child_process'; +import { fileURLToPath } from 'url'; +import { promisify } from 'util'; + +const exec = promisify(child_process.exec); + +const commonFiles = ['LICENSE.md', 'LICENSE_EE.md']; + +const baseDir = resolve(dirname(fileURLToPath(import.meta.url)), '../..'); +const packages = JSON.parse((await exec('pnpm ls -r --only-projects --json')).stdout); + +for (let { name, path, version, private: isPrivate } of packages) { + if (isPrivate) continue; + + const packageFile = resolve(path, 'package.json'); + const packageJson = { + ...JSON.parse(await readFile(packageFile, 'utf-8')), + // Add these fields to all published package.json files to ensure provenance checks pass + license: 'SEE LICENSE IN LICENSE.md', + homepage: 'https://n8n.io', + author: { + name: 'Jan Oberhauser', + email: 'jan@n8n.io', + }, + repository: { + type: 'git', + url: 'git+https://github.com/n8n-io/n8n.git', + }, + }; + + // Copy over LICENSE.md and LICENSE_EE.md into every published package, and ensure they get included in the published package + await Promise.all( + commonFiles.map(async (file) => { + await copyFile(resolve(baseDir, file), resolve(path, file)); + if (packageJson.files && !packageJson.files.includes(file)) { + packageJson.files.push(file); + } + }), + ); + + await writeFile(packageFile, JSON.stringify(packageJson, null, 2) + '\n'); +} diff --git a/.github/scripts/package.json b/.github/scripts/package.json index cd67711fa4..80bf0baf11 100644 --- a/.github/scripts/package.json +++ b/.github/scripts/package.json @@ -5,7 +5,7 @@ "debug": "4.3.4", "glob": "10.3.10", "p-limit": "3.1.0", - "picocolors": "1.0.0", + "picocolors": "1.0.1", "semver": "7.5.4", "tempfile": "5.0.0", "typescript": "*" diff --git a/scripts/trim-fe-packageJson.js b/.github/scripts/trim-fe-packageJson.js similarity index 79% rename from scripts/trim-fe-packageJson.js rename to .github/scripts/trim-fe-packageJson.js index 611cb2ec3c..791e483a2d 100644 --- a/scripts/trim-fe-packageJson.js +++ b/.github/scripts/trim-fe-packageJson.js @@ -1,12 +1,15 @@ const { writeFileSync } = require('fs'); const { resolve } = require('path'); -const baseDir = resolve(__dirname, '..'); +const baseDir = resolve(__dirname, '../..'); const trimPackageJson = (packageName) => { const filePath = resolve(baseDir, 'packages', packageName, 'package.json'); const { scripts, peerDependencies, devDependencies, dependencies, ...packageJson } = require( filePath, ); + if (packageName === '@n8n/chat') { + packageJson.dependencies = dependencies; + } writeFileSync(filePath, JSON.stringify(packageJson, null, 2) + '\n', 'utf-8'); }; diff --git a/.github/scripts/update-changelog.mjs b/.github/scripts/update-changelog.mjs index c0cce214a9..2bc571d267 100644 --- a/.github/scripts/update-changelog.mjs +++ b/.github/scripts/update-changelog.mjs @@ -16,7 +16,11 @@ const changelogStream = conventionalChangelog({ releaseCount: 1, tagPrefix: 'n8n@', transform: (commit, callback) => { - callback(null, commit.header.includes('(no-changelog)') ? undefined : commit); + const hasNoChangelogInHeader = commit.header.includes('(no-changelog)'); + const isBenchmarkScope = commit.scope === 'benchmark'; + + // Ignore commits that have 'benchmark' scope or '(no-changelog)' in the header + callback(null, hasNoChangelogInHeader || isBenchmarkScope ? undefined : commit); }, }).on('error', (err) => { console.error(err.stack); diff --git a/.github/workflows/benchmark-destroy-nightly.yml b/.github/workflows/benchmark-destroy-nightly.yml new file mode 100644 index 0000000000..70d0d17685 --- /dev/null +++ b/.github/workflows/benchmark-destroy-nightly.yml @@ -0,0 +1,43 @@ +name: Destroy Benchmark Env + +on: + schedule: + - cron: '0 5 * * *' + workflow_dispatch: + +permissions: + id-token: write + contents: read + +concurrency: + group: benchmark + cancel-in-progress: false + +jobs: + build: + runs-on: ubuntu-latest + environment: benchmarking + + steps: + - name: Checkout + uses: actions/checkout@v4.1.1 + + - name: Azure login + uses: azure/login@v2.1.1 + with: + client-id: ${{ secrets.BENCHMARK_ARM_CLIENT_ID }} + tenant-id: ${{ secrets.BENCHMARK_ARM_TENANT_ID }} + subscription-id: ${{ secrets.BENCHMARK_ARM_SUBSCRIPTION_ID }} + + - run: corepack enable + - uses: actions/setup-node@v4.0.2 + with: + node-version: 20.x + cache: 'pnpm' + + - name: Install dependencies + run: pnpm install --frozen-lockfile + + - name: Destroy cloud env + run: pnpm destroy-cloud-env + working-directory: packages/@n8n/benchmark diff --git a/.github/workflows/benchmark-nightly.yml b/.github/workflows/benchmark-nightly.yml new file mode 100644 index 0000000000..6c61d3bfc2 --- /dev/null +++ b/.github/workflows/benchmark-nightly.yml @@ -0,0 +1,101 @@ +name: Run Nightly Benchmark +run-name: Benchmark ${{ inputs.n8n_tag || 'nightly' }} + +on: + schedule: + - cron: '30 1,2,3 * * *' + workflow_dispatch: + inputs: + debug: + description: 'Use debug logging' + required: true + default: 'false' + n8n_tag: + description: 'Name of the n8n docker tag to run the benchmark against.' + required: true + default: 'nightly' + benchmark_tag: + description: 'Name of the benchmark cli docker tag to run the benchmark with.' + required: true + default: 'latest' + +env: + ARM_CLIENT_ID: ${{ secrets.BENCHMARK_ARM_CLIENT_ID }} + ARM_SUBSCRIPTION_ID: ${{ secrets.BENCHMARK_ARM_SUBSCRIPTION_ID }} + ARM_TENANT_ID: ${{ secrets.BENCHMARK_ARM_TENANT_ID }} + N8N_TAG: ${{ inputs.n8n_tag || 'nightly' }} + N8N_BENCHMARK_TAG: ${{ inputs.benchmark_tag || 'latest' }} + DEBUG: ${{ inputs.debug == 'true' && '--debug' || '' }} + +permissions: + id-token: write + contents: read + +concurrency: + group: benchmark + cancel-in-progress: false + +jobs: + build: + runs-on: ubuntu-latest + environment: benchmarking + + steps: + - name: Checkout + uses: actions/checkout@v4.1.1 + + - uses: hashicorp/setup-terraform@v3 + with: + terraform_version: '1.8.5' + + - run: corepack enable + - uses: actions/setup-node@v4.0.2 + with: + node-version: 20.x + cache: pnpm + + - name: Install dependencies + run: pnpm install --frozen-lockfile + + - name: Azure login + uses: azure/login@v2.1.1 + with: + client-id: ${{ env.ARM_CLIENT_ID }} + tenant-id: ${{ env.ARM_TENANT_ID }} + subscription-id: ${{ env.ARM_SUBSCRIPTION_ID }} + + - name: Destroy any existing environment + run: pnpm destroy-cloud-env + working-directory: packages/@n8n/benchmark + + - name: Provision the environment + run: pnpm provision-cloud-env ${{ env.DEBUG }} + working-directory: packages/@n8n/benchmark + + - name: Run the benchmark + env: + BENCHMARK_RESULT_WEBHOOK_URL: ${{ secrets.BENCHMARK_RESULT_WEBHOOK_URL }} + BENCHMARK_RESULT_WEBHOOK_AUTH_HEADER: ${{ secrets.BENCHMARK_RESULT_WEBHOOK_AUTH_HEADER }} + N8N_LICENSE_CERT: ${{ secrets.N8N_BENCHMARK_LICENSE_CERT }} + run: | + pnpm benchmark-in-cloud \ + --vus 5 \ + --duration 1m \ + --n8nTag ${{ env.N8N_TAG }} \ + --benchmarkTag ${{ env.N8N_BENCHMARK_TAG }} \ + ${{ env.DEBUG }} + working-directory: packages/@n8n/benchmark + + # We need to login again because the access token expires + - name: Azure login + if: always() + uses: azure/login@v2.1.1 + with: + client-id: ${{ env.ARM_CLIENT_ID }} + tenant-id: ${{ env.ARM_TENANT_ID }} + subscription-id: ${{ env.ARM_SUBSCRIPTION_ID }} + + - name: Destroy the environment + if: always() + run: pnpm destroy-cloud-env ${{ env.DEBUG }} + working-directory: packages/@n8n/benchmark diff --git a/.github/workflows/check-documentation-urls.yml b/.github/workflows/check-documentation-urls.yml index 34db00aa9b..0a2796abe7 100644 --- a/.github/workflows/check-documentation-urls.yml +++ b/.github/workflows/check-documentation-urls.yml @@ -26,7 +26,7 @@ jobs: run: pnpm install --frozen-lockfile - name: Build relevant packages - run: pnpm --filter @n8n/client-oauth2 --filter @n8n/imap --filter n8n-workflow --filter n8n-core --filter n8n-nodes-base --filter @n8n/n8n-nodes-langchain build + run: pnpm build:nodes - run: npm install --prefix=.github/scripts --no-package-lock diff --git a/.github/workflows/check-pr-title.yml b/.github/workflows/check-pr-title.yml index add6e858a3..e449891210 100644 --- a/.github/workflows/check-pr-title.yml +++ b/.github/workflows/check-pr-title.yml @@ -7,8 +7,7 @@ on: - edited - synchronize branches: - - '**' - - '!release/*' + - 'master' jobs: check-pr-title: @@ -29,6 +28,6 @@ jobs: - name: Validate PR title id: validate_pr_title - uses: n8n-io/validate-n8n-pull-request-title@v2.0.1 + uses: n8n-io/validate-n8n-pull-request-title@v2.2.0 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/chromatic.yml b/.github/workflows/chromatic.yml index bfd43e9257..7c5682076a 100644 --- a/.github/workflows/chromatic.yml +++ b/.github/workflows/chromatic.yml @@ -4,19 +4,49 @@ on: workflow_dispatch: pull_request_review: types: [submitted] - branch: - - 'master' - paths: - - packages/design-system/** - - .github/workflows/chromatic.yml concurrency: group: chromatic-${{ github.event.pull_request.number || github.ref }} cancel-in-progress: true jobs: + get-metadata: + name: Get Metadata + runs-on: ubuntu-latest + steps: + - name: Check out current commit + uses: actions/checkout@v4 + with: + ref: ${{ github.event.pull_request.head.sha }} + fetch-depth: 2 + + - name: Determine changed files + uses: tomi/paths-filter-action@v3.0.2 + id: changed + if: github.event_name == 'pull_request_review' + with: + filters: | + design_system: + - packages/design-system/** + - .github/workflows/chromatic.yml + + outputs: + design_system_files_changed: ${{ steps.changed.outputs.design_system == 'true' }} + is_community_pr: ${{ contains(github.event.pull_request.labels.*.name, 'community') }} + is_pr_target_master: ${{ github.event.pull_request.base.ref == 'master' }} + is_dispatch: ${{ github.event_name == 'workflow_dispatch' }} + is_pr_approved: ${{ github.event.review.state == 'approved' }} + chromatic: - if: ${{ github.event.review.state == 'approved' && !contains(github.event.pull_request.labels.*.name, 'community') }} + needs: [get-metadata] + if: | + needs.get-metadata.outputs.is_dispatch == 'true' || + ( + needs.get-metadata.outputs.design_system_files_changed == 'true' && + needs.get-metadata.outputs.is_community_pr == 'false' && + needs.get-metadata.outputs.is_pr_target_master == 'true' && + needs.get-metadata.outputs.is_pr_approved == 'true' + ) runs-on: ubuntu-latest steps: - uses: actions/checkout@v4.1.1 diff --git a/.github/workflows/ci-master.yml b/.github/workflows/ci-master.yml index 938335558e..5e828a7022 100644 --- a/.github/workflows/ci-master.yml +++ b/.github/workflows/ci-master.yml @@ -23,6 +23,9 @@ jobs: - name: Install dependencies run: pnpm install --frozen-lockfile + - name: Setup build cache + uses: rharkor/caching-for-turbo@v1.5 + - name: Build run: pnpm build @@ -38,12 +41,14 @@ jobs: needs: install-and-build strategy: matrix: - node-version: [18.x, 20.x, 22.x] + node-version: [18.x, 20.x, 22.4] with: ref: ${{ inputs.branch }} nodeVersion: ${{ matrix.node-version }} cacheKey: ${{ github.sha }}-base:build - collectCoverage: true + collectCoverage: ${{ matrix.node-version == '20.x' }} + secrets: + CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} lint: name: Lint diff --git a/.github/workflows/ci-postgres-mysql.yml b/.github/workflows/ci-postgres-mysql.yml index 16d446cc92..23088633b5 100644 --- a/.github/workflows/ci-postgres-mysql.yml +++ b/.github/workflows/ci-postgres-mysql.yml @@ -8,6 +8,8 @@ on: paths: - packages/cli/src/databases/** - .github/workflows/ci-postgres-mysql.yml + pull_request_review: + types: [submitted] concurrency: group: db-${{ github.event.pull_request.number || github.ref }} @@ -17,6 +19,7 @@ jobs: build: name: Install & Build runs-on: ubuntu-latest + if: github.event_name != 'pull_request_review' || startsWith(github.event.pull_request.base.ref, 'release/') steps: - uses: actions/checkout@v4.1.1 - run: corepack enable @@ -26,6 +29,9 @@ jobs: cache: 'pnpm' - run: pnpm install --frozen-lockfile + - name: Setup build cache + uses: rharkor/caching-for-turbo@v1.5 + - name: Build Backend run: pnpm build:backend @@ -52,6 +58,9 @@ jobs: cache: 'pnpm' - run: pnpm install --frozen-lockfile + - name: Setup build cache + uses: rharkor/caching-for-turbo@v1.5 + - name: Restore cached build artifacts uses: actions/cache/restore@v4.0.0 with: @@ -60,7 +69,7 @@ jobs: - name: Test SQLite Pooled working-directory: packages/cli - run: pnpm jest --coverage + run: pnpm jest mysql: name: MySQL @@ -78,6 +87,9 @@ jobs: cache: 'pnpm' - run: pnpm install --frozen-lockfile + - name: Setup build cache + uses: rharkor/caching-for-turbo@v1.5 + - name: Restore cached build artifacts uses: actions/cache/restore@v4.0.0 with: @@ -112,6 +124,9 @@ jobs: cache: 'pnpm' - run: pnpm install --frozen-lockfile + - name: Setup build cache + uses: rharkor/caching-for-turbo@v1.5 + - name: Restore cached build artifacts uses: actions/cache/restore@v4.0.0 with: diff --git a/.github/workflows/ci-pull-requests.yml b/.github/workflows/ci-pull-requests.yml index 1bdd6c60b9..48a34c5eab 100644 --- a/.github/workflows/ci-pull-requests.yml +++ b/.github/workflows/ci-pull-requests.yml @@ -1,6 +1,10 @@ name: Build, unit test and lint branch -on: [pull_request] +on: + pull_request: + branches: + - '**' + - '!release/*' jobs: install-and-build: @@ -9,7 +13,6 @@ jobs: steps: - uses: actions/checkout@v4.1.1 with: - repository: n8n-io/n8n ref: refs/pull/${{ github.event.pull_request.number }}/merge - run: corepack enable @@ -21,9 +24,15 @@ jobs: - name: Install dependencies run: pnpm install --frozen-lockfile + - name: Setup build cache + uses: rharkor/caching-for-turbo@v1.5 + - name: Build run: pnpm build + - name: Run formatcheck + run: pnpm format:check + - name: Run typecheck run: pnpm typecheck diff --git a/.github/workflows/docker-images-benchmark.yml b/.github/workflows/docker-images-benchmark.yml new file mode 100644 index 0000000000..b0aa6e997d --- /dev/null +++ b/.github/workflows/docker-images-benchmark.yml @@ -0,0 +1,43 @@ +name: Benchmark Docker Image CI + +on: + workflow_dispatch: + push: + branches: + - master + paths: + - 'packages/@n8n/benchmark/**' + - 'pnpm-lock.yaml' + - 'pnpm-workspace.yaml' + - '.github/workflows/docker-images-benchmark.yml' + +jobs: + build: + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v4.1.1 + + - name: Set up QEMU + uses: docker/setup-qemu-action@v3.0.0 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3.0.0 + + - name: Login to GitHub Container Registry + uses: docker/login-action@v3.0.0 + with: + registry: ghcr.io + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Build + uses: docker/build-push-action@v5.1.0 + with: + context: . + file: ./packages/@n8n/benchmark/Dockerfile + platforms: linux/amd64 + provenance: false + push: true + tags: | + ghcr.io/${{ github.repository_owner }}/n8n-benchmark:latest diff --git a/.github/workflows/docker-images-nightly.yml b/.github/workflows/docker-images-nightly.yml index b701392e8b..b6831b6399 100644 --- a/.github/workflows/docker-images-nightly.yml +++ b/.github/workflows/docker-images-nightly.yml @@ -6,10 +6,6 @@ on: - cron: '0 1 * * *' workflow_dispatch: inputs: - repository: - description: 'GitHub repository to create image off.' - required: true - default: 'n8n-io/n8n' branch: description: 'GitHub branch to create image off.' required: true @@ -36,6 +32,9 @@ on: required: false default: '' +env: + N8N_TAG: ${{ inputs.tag || 'nightly' }} + jobs: build: runs-on: ubuntu-latest @@ -49,7 +48,6 @@ jobs: - name: Checkout uses: actions/checkout@v4.1.1 with: - repository: ${{ github.event.inputs.repository || 'n8n-io/n8n' }} ref: ${{ github.event.inputs.branch || 'master' }} - name: Set up QEMU @@ -69,7 +67,7 @@ jobs: [[ "${{github.event.inputs.merge-master}}" == "true" ]] && git remote add upstream https://github.com/n8n-io/n8n.git -f; git merge upstream/master --allow-unrelated-histories || echo "" shell: bash - - name: Build and push + - name: Build and push to DockerHub uses: docker/build-push-action@v5.1.0 with: context: . @@ -81,7 +79,22 @@ jobs: push: true cache-from: type=gha cache-to: type=gha,mode=max - tags: ${{ secrets.DOCKER_USERNAME }}/n8n:${{ github.event.inputs.tag || 'nightly' }} + tags: ${{ secrets.DOCKER_USERNAME }}/n8n:${{ env.N8N_TAG }} + + - name: Login to GitHub Container Registry + if: env.N8N_TAG == 'nightly' + uses: docker/login-action@v3.0.0 + with: + registry: ghcr.io + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Push image to GHCR + if: env.N8N_TAG == 'nightly' + run: | + docker buildx imagetools create \ + --tag ghcr.io/${{ github.repository_owner }}/n8n:nightly \ + ${{ secrets.DOCKER_USERNAME }}/n8n:nightly - name: Call Success URL - optionally run: | diff --git a/.github/workflows/docker-images.yml b/.github/workflows/docker-images.yml deleted file mode 100644 index 5c91f3832d..0000000000 --- a/.github/workflows/docker-images.yml +++ /dev/null @@ -1,48 +0,0 @@ -name: Docker Image CI - -on: - release: - types: [published] - -jobs: - build: - runs-on: ubuntu-latest - - steps: - - uses: actions/checkout@v4.1.1 - - - name: Get the version - id: vars - run: echo ::set-output name=tag::$(echo ${GITHUB_REF:14}) - - - name: Set up QEMU - uses: docker/setup-qemu-action@v3.0.0 - - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v3.0.0 - - - name: Login to GitHub Container Registry - uses: docker/login-action@v3.0.0 - with: - registry: ghcr.io - username: ${{ github.actor }} - password: ${{ secrets.GITHUB_TOKEN }} - - - name: Login to DockerHub - uses: docker/login-action@v3.0.0 - with: - username: ${{ secrets.DOCKER_USERNAME }} - password: ${{ secrets.DOCKER_PASSWORD }} - - - name: Build - uses: docker/build-push-action@v5.1.0 - with: - context: ./docker/images/n8n - build-args: | - N8N_VERSION=${{ steps.vars.outputs.tag }} - platforms: linux/amd64,linux/arm64 - provenance: false - push: true - tags: | - ${{ secrets.DOCKER_USERNAME }}/n8n:${{ steps.vars.outputs.tag }} - ghcr.io/${{ github.repository_owner }}/n8n:${{ steps.vars.outputs.tag }} diff --git a/.github/workflows/e2e-reusable.yml b/.github/workflows/e2e-reusable.yml index b7dadc4173..b55d6728d2 100644 --- a/.github/workflows/e2e-reusable.yml +++ b/.github/workflows/e2e-reusable.yml @@ -22,11 +22,6 @@ on: required: false default: 'browsers:node18.12.0-chrome107' type: string - cache-key: - description: 'Cache key for modules and build artifacts.' - required: false - default: ${{ github.sha }}-${{ inputs.run-env }}-e2e-modules - type: string record: description: 'Record test run.' required: false @@ -46,6 +41,11 @@ on: description: 'PR number to run tests for.' required: false type: number + node_view_version: + description: 'Node View version to run tests with.' + required: false + default: '1' + type: string secrets: CYPRESS_RECORD_KEY: description: 'Cypress record key.' @@ -78,7 +78,6 @@ jobs: steps: - uses: actions/checkout@v4.1.1 with: - repository: n8n-io/n8n ref: ${{ inputs.branch }} - name: Checkout PR @@ -99,8 +98,6 @@ jobs: runTests: false install: false build: pnpm build - env: - VUE_APP_MAX_PINNED_DATA_SIZE: 16384 - name: Cypress install working-directory: cypress @@ -113,7 +110,7 @@ jobs: /github/home/.cache /github/home/.pnpm-store ./packages/**/dist - key: ${{ inputs.cache-key }} + key: ${{ github.sha }}-e2e testing: runs-on: ubuntu-latest @@ -130,7 +127,6 @@ jobs: steps: - uses: actions/checkout@v4.1.1 with: - repository: n8n-io/n8n ref: ${{ inputs.branch }} - name: Checkout PR @@ -148,7 +144,7 @@ jobs: /github/home/.cache /github/home/.pnpm-store ./packages/**/dist - key: ${{ inputs.cache-key }} + key: ${{ github.sha }}-e2e - name: Install dependencies run: pnpm install --frozen-lockfile @@ -169,6 +165,7 @@ jobs: spec: '${{ inputs.spec }}' env: NODE_OPTIONS: --dns-result-order=ipv4first + CYPRESS_NODE_VIEW_VERSION: ${{ inputs.node_view_version }} CYPRESS_RECORD_KEY: ${{ secrets.CYPRESS_RECORD_KEY }} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} E2E_TESTS: true diff --git a/.github/workflows/e2e-tests-pr.yml b/.github/workflows/e2e-tests-pr.yml index f845dbb062..047ce2d13a 100644 --- a/.github/workflows/e2e-tests-pr.yml +++ b/.github/workflows/e2e-tests-pr.yml @@ -3,33 +3,65 @@ name: PR E2E on: pull_request_review: types: [submitted] - branch: - - 'master' concurrency: group: e2e-${{ github.event.pull_request.number || github.ref }} cancel-in-progress: true jobs: + get-metadata: + name: Get Metadata + runs-on: ubuntu-latest + steps: + - name: Check out current commit + uses: actions/checkout@v4 + with: + ref: ${{ github.event.pull_request.head.sha }} + fetch-depth: 2 + + - name: Determine changed files + uses: tomi/paths-filter-action@v3.0.2 + id: changed + with: + filters: | + not_ignored: + - '!.devcontainer/**' + - '!.github/*' + - '!.github/scripts/*' + - '!.github/workflows/benchmark-*' + - '!.github/workflows/check-*' + - '!.vscode/**' + - '!docker/**' + - '!packages/@n8n/benchmark/**' + - '!**/*.md' + predicate-quantifier: 'every' + + outputs: + # The workflow should run when: + # - It has changes to files that are not ignored + # - It is not a community PR + # - It is targeting master or a release branch + should_run: ${{ steps.changed.outputs.not_ignored == 'true' && !contains(github.event.pull_request.labels.*.name, 'community') && (github.event.pull_request.base.ref == 'master' || startsWith(github.event.pull_request.base.ref, 'release/')) }} + run-e2e-tests: name: E2E [Electron/Node 18] uses: ./.github/workflows/e2e-reusable.yml - if: ${{ github.event.review.state == 'approved' && !contains(github.event.pull_request.labels.*.name, 'community') }} + needs: [get-metadata] + if: ${{ github.event.review.state == 'approved' && needs.get-metadata.outputs.should_run == 'true' }} with: pr_number: ${{ github.event.pull_request.number }} user: ${{ github.event.pull_request.user.login || 'PR User' }} - spec: 'e2e/*' secrets: CYPRESS_RECORD_KEY: ${{ secrets.CYPRESS_RECORD_KEY }} post-e2e-tests: runs-on: ubuntu-latest name: E2E [Electron/Node 18] - Checks - needs: [run-e2e-tests] + needs: [get-metadata, run-e2e-tests] if: always() steps: - name: E2E success comment - if: ${{!contains(github.event.pull_request.labels.*.name, 'community') && needs.run-e2e-tests.outputs.tests_passed == 'true' }} + if: ${{ needs.get-metadata.outputs.should_run == 'true' && needs.run-e2e-tests.outputs.tests_passed == 'true' }} uses: peter-evans/create-or-update-comment@v4.0.0 with: issue-number: ${{ github.event.pull_request.number }} diff --git a/.github/workflows/e2e-tests.yml b/.github/workflows/e2e-tests.yml index e7400adecb..2f63f61bc6 100644 --- a/.github/workflows/e2e-tests.yml +++ b/.github/workflows/e2e-tests.yml @@ -27,6 +27,11 @@ on: description: 'URL to call after workflow is done.' required: false default: '' + node_view_version: + description: 'Node View version to run tests with.' + required: false + default: '1' + type: string jobs: calls-start-url: @@ -46,6 +51,7 @@ jobs: branch: ${{ github.event.inputs.branch || 'master' }} user: ${{ github.event.inputs.user || 'PR User' }} spec: ${{ github.event.inputs.spec || 'e2e/*' }} + node_view_version: ${{ github.event.inputs.node_view_version || '1' }} secrets: CYPRESS_RECORD_KEY: ${{ secrets.CYPRESS_RECORD_KEY }} diff --git a/.github/workflows/linting-reusable.yml b/.github/workflows/linting-reusable.yml index 69bccd9ce6..ed8d234940 100644 --- a/.github/workflows/linting-reusable.yml +++ b/.github/workflows/linting-reusable.yml @@ -21,7 +21,6 @@ jobs: steps: - uses: actions/checkout@v4.1.1 with: - repository: n8n-io/n8n ref: ${{ inputs.ref }} - run: corepack enable @@ -33,6 +32,9 @@ jobs: - name: Install dependencies run: pnpm install --frozen-lockfile + - name: Setup build cache + uses: rharkor/caching-for-turbo@v1.5 + - name: Build if: ${{ inputs.cacheKey == '' }} run: pnpm build diff --git a/.github/workflows/notify-pr-status.yml b/.github/workflows/notify-pr-status.yml index 15672ea652..1169b02af8 100644 --- a/.github/workflows/notify-pr-status.yml +++ b/.github/workflows/notify-pr-status.yml @@ -16,6 +16,7 @@ jobs: (github.event_name == 'pull_request' && github.event.pull_request.merged == false && github.event.action == 'closed') steps: - uses: fjogeleit/http-request-action@dea46570591713c7de04a5b556bf2ff7bdf0aa9c # v1 + if: ${{!contains(github.event.pull_request.labels.*.name, 'community')}} name: Notify env: PR_URL: ${{ github.event.pull_request.html_url }} diff --git a/.github/workflows/release-create-pr.yml b/.github/workflows/release-create-pr.yml index a17fa1bf89..03572e541c 100644 --- a/.github/workflows/release-create-pr.yml +++ b/.github/workflows/release-create-pr.yml @@ -56,12 +56,12 @@ jobs: git push -f origin refs/remotes/origin/${{ github.event.inputs.base-branch }}:refs/heads/release/${{ env.NEXT_RELEASE }} - name: Push the release branch, and Create the PR - uses: peter-evans/create-pull-request@v5 + uses: peter-evans/create-pull-request@v6 with: base: 'release/${{ env.NEXT_RELEASE }}' - branch: '${{ env.NEXT_RELEASE }}-pr' + branch: 'release-pr/${{ env.NEXT_RELEASE }}' commit-message: ':rocket: Release ${{ env.NEXT_RELEASE }}' delete-branch: true - labels: 'release' + labels: release,release:${{ github.event.inputs.release-type }} title: ':rocket: Release ${{ env.NEXT_RELEASE }}' body-path: 'CHANGELOG-${{ env.NEXT_RELEASE }}.md' diff --git a/.github/workflows/release-publish.yml b/.github/workflows/release-publish.yml index d683642313..c3548a0cda 100644 --- a/.github/workflows/release-publish.yml +++ b/.github/workflows/release-publish.yml @@ -8,18 +8,17 @@ on: - 'release/*' jobs: - publish-release: - if: github.event.pull_request.merged == true + publish-to-npm: + name: Publish to NPM runs-on: ubuntu-latest - + if: github.event.pull_request.merged == true + timeout-minutes: 10 permissions: - contents: write id-token: write - - timeout-minutes: 60 env: NPM_CONFIG_PROVENANCE: true - + outputs: + release: ${{ steps.set-release.outputs.release }} steps: - name: Checkout uses: actions/checkout@v4.1.1 @@ -45,30 +44,103 @@ jobs: - name: Publish to NPM run: | echo "//registry.npmjs.org/:_authToken=${{ secrets.NPM_TOKEN }}" > ~/.npmrc - node scripts/trim-fe-packageJson.js + node .github/scripts/trim-fe-packageJson.js + node .github/scripts/ensure-provenance-fields.mjs sed -i "s/default: 'dev'/default: 'stable'/g" packages/cli/dist/config/schema.js pnpm publish -r --publish-branch ${{github.event.pull_request.base.ref}} --access public --tag rc --no-git-checks npm dist-tag rm n8n rc + - id: set-release + run: echo "release=${{ env.RELEASE }}" >> $GITHUB_OUTPUT + + publish-to-docker-hub: + name: Publish to DockerHub + needs: [publish-to-npm] + runs-on: ubuntu-latest + if: github.event.pull_request.merged == true + timeout-minutes: 10 + + steps: + - name: Checkout + uses: actions/checkout@v4.1.1 + with: + fetch-depth: 0 + + - name: Set up QEMU + uses: docker/setup-qemu-action@v3.0.0 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3.0.0 + + - name: Login to GitHub Container Registry + uses: docker/login-action@v3.0.0 + with: + registry: ghcr.io + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Login to DockerHub + uses: docker/login-action@v3.0.0 + with: + username: ${{ secrets.DOCKER_USERNAME }} + password: ${{ secrets.DOCKER_PASSWORD }} + + - name: Build + uses: docker/build-push-action@v5.1.0 + with: + context: ./docker/images/n8n + build-args: | + N8N_VERSION=${{ needs.publish-to-npm.outputs.release }} + platforms: linux/amd64,linux/arm64 + provenance: false + push: true + tags: | + ${{ secrets.DOCKER_USERNAME }}/n8n:${{ needs.publish-to-npm.outputs.release }} + ghcr.io/${{ github.repository_owner }}/n8n:${{ needs.publish-to-npm.outputs.release }} + + create-github-release: + name: Create a GitHub Release + needs: [publish-to-npm, publish-to-docker-hub] + runs-on: ubuntu-latest + if: github.event.pull_request.merged == true + timeout-minutes: 5 + + permissions: + contents: write + id-token: write + + steps: - name: Create a Release on GitHub uses: ncipollo/release-action@v1 with: commit: ${{github.event.pull_request.base.ref}} - tag: 'n8n@${{env.RELEASE}}' + tag: 'n8n@${{ needs.publish-to-npm.outputs.release }}' prerelease: true makeLatest: false body: ${{github.event.pull_request.body}} + trigger-release-note: + name: Trigger a release note + needs: [publish-to-npm, create-github-release] + if: github.event.pull_request.merged == true + runs-on: ubuntu-latest + steps: - name: Trigger a release note - continue-on-error: true - run: curl -u docsWorkflows:${{ secrets.N8N_WEBHOOK_DOCS_PASSWORD }} --request GET 'https://internal.users.n8n.cloud/webhook/trigger-release-note' --header 'Content-Type:application/json' --data '{"version":"${{env.RELEASE}}"}' + run: curl -u docsWorkflows:${{ secrets.N8N_WEBHOOK_DOCS_PASSWORD }} --request GET 'https://internal.users.n8n.cloud/webhook/trigger-release-note' --header 'Content-Type:application/json' --data '{"version":"${{ needs.publish-to-npm.outputs.release }}"}' - # - name: Merge Release into 'master' - # run: | - # git fetch origin - # git checkout --track origin/master - # git config user.name "Jan Oberhauser" - # git config user.email jan.oberhauser@gmail.com - # git merge --ff n8n@${{env.RELEASE}} - # git push origin master - # git push origin :${{github.event.pull_request.base.ref}} + # merge-back-into-master: + # name: Merge back into master + # needs: [publish-to-npm, create-github-release] + # if: ${{ github.event.pull_request.merged == true && !contains(github.event.pull_request.labels.*.name, 'release:patch') }} + # runs-on: ubuntu-latest + # steps: + # - uses: actions/checkout@v4.1.1 + # with: + # fetch-depth: 0 + # - run: | + # git checkout --track origin/master + # git config user.name "github-actions[bot]" + # git config user.email 41898282+github-actions[bot]@users.noreply.github.com + # git merge --ff n8n@${{ needs.publish-to-npm.outputs.release }} + # git push origin master + # git push origin :${{github.event.pull_request.base.ref}} diff --git a/.github/workflows/test-workflows.yml b/.github/workflows/test-workflows.yml index 8ba22b590c..2bb91dd065 100644 --- a/.github/workflows/test-workflows.yml +++ b/.github/workflows/test-workflows.yml @@ -73,6 +73,7 @@ jobs: env: N8N_ENCRYPTION_KEY: ${{secrets.ENCRYPTION_KEY}} SKIP_STATISTICS_EVENTS: true + DB_SQLITE_POOL_SIZE: 4 # - # name: Export credentials # if: always() diff --git a/.github/workflows/units-tests-reusable.yml b/.github/workflows/units-tests-reusable.yml index 61ed73672e..60bf593e82 100644 --- a/.github/workflows/units-tests-reusable.yml +++ b/.github/workflows/units-tests-reusable.yml @@ -22,6 +22,10 @@ on: required: false default: false type: boolean + secrets: + CODECOV_TOKEN: + description: 'Codecov upload token.' + required: false jobs: unit-test: @@ -32,7 +36,6 @@ jobs: steps: - uses: actions/checkout@v4.1.1 with: - repository: n8n-io/n8n ref: ${{ inputs.ref }} - run: corepack enable @@ -45,6 +48,10 @@ jobs: - name: Install dependencies run: pnpm install --frozen-lockfile + - name: Setup build cache + if: inputs.collectCoverage != true + uses: rharkor/caching-for-turbo@v1.5 + - name: Build if: ${{ inputs.cacheKey == '' }} run: pnpm build @@ -67,6 +74,6 @@ jobs: - name: Upload coverage to Codecov if: inputs.collectCoverage - uses: codecov/codecov-action@v3 + uses: codecov/codecov-action@v4.5.0 with: - files: packages/@n8n/chat/coverage/cobertura-coverage.xml,packages/@n8n/nodes-langchain/coverage/cobertura-coverage.xml,packages/@n8n/permissions/coverage/cobertura-coverage.xml,packages/@n8n/client-oauth2/coverage/cobertura-coverage.xml,packages/cli/coverage/cobertura-coverage.xml,packages/core/coverage/cobertura-coverage.xml,packages/design-system/coverage/cobertura-coverage.xml,packages/@n8n/codemirror-lang/coverage/cobertura-coverage.xml,packages/editor-ui/coverage/cobertura-coverage.xml,packages/nodes-base/coverage/cobertura-coverage.xml,packages/workflow/coverage/cobertura-coverage.xml + token: ${{ secrets.CODECOV_TOKEN }} diff --git a/.prettierignore b/.prettierignore index 4ac8f0dafb..2f5967e399 100644 --- a/.prettierignore +++ b/.prettierignore @@ -7,3 +7,11 @@ packages/nodes-base/nodes/**/test packages/cli/templates/form-trigger.handlebars cypress/fixtures CHANGELOG.md +.github/pull_request_template.md +# Ignored for now +**/*.md +# Handled by biome +**/*.ts +**/*.js +**/*.json +**/*.jsonc diff --git a/.vscode/extensions.json b/.vscode/extensions.json index 8fb03eb716..681de6c024 100644 --- a/.vscode/extensions.json +++ b/.vscode/extensions.json @@ -1,10 +1,12 @@ { "recommendations": [ + "biomejs.biome", "streetsidesoftware.code-spell-checker", "dangmai.workspace-default-settings", "dbaeumer.vscode-eslint", "EditorConfig.EditorConfig", "esbenp.prettier-vscode", + "mjmlio.vscode-mjml", "Vue.volar" ] } diff --git a/.vscode/settings.default.json b/.vscode/settings.default.json index 87db2ca2ee..99c514f741 100644 --- a/.vscode/settings.default.json +++ b/.vscode/settings.default.json @@ -1,6 +1,22 @@ { "editor.defaultFormatter": "esbenp.prettier-vscode", "editor.formatOnSave": true, + "[javascript]": { + "editor.defaultFormatter": "biomejs.biome" + }, + "[typescript]": { + "editor.defaultFormatter": "biomejs.biome" + }, + "[json]": { + "editor.defaultFormatter": "biomejs.biome" + }, + "[jsonc]": { + "editor.defaultFormatter": "biomejs.biome" + }, + "editor.codeActionsOnSave": { + "quickfix.biome": "explicit", + "source.organizeImports.biome": "never" + }, "search.exclude": { "node_modules": true, "dist": true, diff --git a/CHANGELOG.md b/CHANGELOG.md index 7610d8609e..baa7b95b7c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,702 @@ +# [1.65.0](https://github.com/n8n-io/n8n/compare/n8n@1.64.0...n8n@1.65.0) (2024-10-24) + + +### Bug Fixes + +* **AI Agent Node:** Preserve `intermediateSteps` when using output parser with non-tool agent ([#11363](https://github.com/n8n-io/n8n/issues/11363)) ([e61a853](https://github.com/n8n-io/n8n/commit/e61a8535aa39653b9a87575ea911a65318282167)) +* **API:** `PUT /credentials/:id` should move the specified credential, not the first one in the database ([#11365](https://github.com/n8n-io/n8n/issues/11365)) ([e6b2f8e](https://github.com/n8n-io/n8n/commit/e6b2f8e7e6ebbb6e3776a976297d519e99ac6c64)) +* **API:** Correct credential schema for response in `POST /credentials` ([#11340](https://github.com/n8n-io/n8n/issues/11340)) ([f495875](https://github.com/n8n-io/n8n/commit/f4958756b4976e0b608b9155dab84564f7e8804e)) +* **core:** Account for waiting jobs during shutdown ([#11338](https://github.com/n8n-io/n8n/issues/11338)) ([c863abd](https://github.com/n8n-io/n8n/commit/c863abd08300b53ea898fc4d06aae97dec7afa9b)) +* **core:** Add missing primary key to execution annotation tags table ([#11168](https://github.com/n8n-io/n8n/issues/11168)) ([b4b543d](https://github.com/n8n-io/n8n/commit/b4b543d41daa07753eca24ab93bf7445f672361d)) +* **core:** Change dedupe value column type from varchar(255) to text ([#11357](https://github.com/n8n-io/n8n/issues/11357)) ([7a71cff](https://github.com/n8n-io/n8n/commit/7a71cff4d75fe4e7282a398b4843428e0161ba8c)) +* **core:** Do not debounce webhooks, triggers and pollers activation ([#11306](https://github.com/n8n-io/n8n/issues/11306)) ([64bddf8](https://github.com/n8n-io/n8n/commit/64bddf86536ddd688638a643d24f80c947a12f31)) +* **core:** Enforce nodejs version consistently ([#11323](https://github.com/n8n-io/n8n/issues/11323)) ([0fa2e8c](https://github.com/n8n-io/n8n/commit/0fa2e8ca85005362d9043d82469f3c3525f4c4ef)) +* **core:** Fix memory issue with empty model response ([#11300](https://github.com/n8n-io/n8n/issues/11300)) ([216b119](https://github.com/n8n-io/n8n/commit/216b119350949de70f15cf2d61f474770803ad7a)) +* **core:** Fix race condition when resolving post-execute promise ([#11360](https://github.com/n8n-io/n8n/issues/11360)) ([4f1816e](https://github.com/n8n-io/n8n/commit/4f1816e03db00219bc2e723e3048848aef7f8fe1)) +* **core:** Sanitise IdP provided information in SAML test pages ([#11171](https://github.com/n8n-io/n8n/issues/11171)) ([74fc388](https://github.com/n8n-io/n8n/commit/74fc3889b946e8f224e65ef8d3d44125404aa4fc)) +* Don't show pin button in input panel when there's binary data ([#11267](https://github.com/n8n-io/n8n/issues/11267)) ([c0b5b92](https://github.com/n8n-io/n8n/commit/c0b5b92f62a2d7ba60492eb27daced268b654fe9)) +* **editor:** Add Personal project to main navigation ([#11161](https://github.com/n8n-io/n8n/issues/11161)) ([1f441f9](https://github.com/n8n-io/n8n/commit/1f441f97528f58e905eaf8930577bbcd08debf06)) +* **editor:** Fix Cannot read properties of undefined (reading 'finished') ([#11367](https://github.com/n8n-io/n8n/issues/11367)) ([475d72e](https://github.com/n8n-io/n8n/commit/475d72e0bc9e13c6dc56129902f6f89c67547f78)) +* **editor:** Fix delete all existing executions ([#11352](https://github.com/n8n-io/n8n/issues/11352)) ([3ec103f](https://github.com/n8n-io/n8n/commit/3ec103f8baaa89e579844947d945f00bec9e498e)) +* **editor:** Fix pin data button disappearing after reload ([#11198](https://github.com/n8n-io/n8n/issues/11198)) ([3b2f63e](https://github.com/n8n-io/n8n/commit/3b2f63e248cd0cba04087e2f40e13d670073707d)) +* **editor:** Fix RunData non-binary pagination when binary data is present ([#11309](https://github.com/n8n-io/n8n/issues/11309)) ([901888d](https://github.com/n8n-io/n8n/commit/901888d5b1027098653540c72f787f176941f35a)) +* **editor:** Fix sorting problem in older browsers that don't support `toSorted` ([#11204](https://github.com/n8n-io/n8n/issues/11204)) ([c728a2f](https://github.com/n8n-io/n8n/commit/c728a2ffe01f510a237979a54897c4680a407800)) +* **editor:** Follow-up fixes to projects side menu ([#11327](https://github.com/n8n-io/n8n/issues/11327)) ([4dde772](https://github.com/n8n-io/n8n/commit/4dde772814c55e66efcc9b369ae443328af21b14)) +* **editor:** Keep always focus on the first item on the node's search panel ([#11193](https://github.com/n8n-io/n8n/issues/11193)) ([c57cac9](https://github.com/n8n-io/n8n/commit/c57cac9e4d447c3a4240a565f9f2de8aa3b7c513)) +* **editor:** Open Community+ enrollment modal only for the instance owner ([#11292](https://github.com/n8n-io/n8n/issues/11292)) ([76724c3](https://github.com/n8n-io/n8n/commit/76724c3be6e001792433045c2b2aac0ef16d4b8a)) +* **editor:** Record sessionStarted telemetry event in Setting Store ([#11334](https://github.com/n8n-io/n8n/issues/11334)) ([1b734dd](https://github.com/n8n-io/n8n/commit/1b734dd9f42885594ce02400cfb395a4f5e7e088)) +* Ensure NDV params don't get cut off early and scrolled to the top ([#11252](https://github.com/n8n-io/n8n/issues/11252)) ([054fe97](https://github.com/n8n-io/n8n/commit/054fe9745ff6864f9088aa4cd66ed9e7869520d5)) +* **HTTP Request Tool Node:** Fix the undefined response issue when authentication is enabled ([#11343](https://github.com/n8n-io/n8n/issues/11343)) ([094ec68](https://github.com/n8n-io/n8n/commit/094ec68d4c00848013aa4eec4ac5efbd2c92afc5)) +* Include error in the message in JS task runner sandbox ([#11359](https://github.com/n8n-io/n8n/issues/11359)) ([0708b3a](https://github.com/n8n-io/n8n/commit/0708b3a1f8097af829c92fe106ea6ba375d6c500)) +* **Microsoft SQL Node:** Fix execute query to allow for non select query to run ([#11335](https://github.com/n8n-io/n8n/issues/11335)) ([ba158b4](https://github.com/n8n-io/n8n/commit/ba158b4f8533bd3430db8766d4921f75db5c1a11)) +* **OpenAI Chat Model Node, Ollama Chat Model Node:** Change default model to a more up-to-date option ([#11293](https://github.com/n8n-io/n8n/issues/11293)) ([0be04c6](https://github.com/n8n-io/n8n/commit/0be04c6348d8c059a96c3d37a6d6cd587bfb97f3)) +* **Pinecone Vector Store Node:** Prevent populating of vectors after manually stopping the execution ([#11288](https://github.com/n8n-io/n8n/issues/11288)) ([fbae17d](https://github.com/n8n-io/n8n/commit/fbae17d8fb35a5197fa183e3639bb36762dc73d2)) +* **Postgres Node:** Special datetime values cause errors ([#11225](https://github.com/n8n-io/n8n/issues/11225)) ([3c57f46](https://github.com/n8n-io/n8n/commit/3c57f46aaeb968d2974f2dc9790317a6a6fab624)) +* Resend invite operation on users list ([#11351](https://github.com/n8n-io/n8n/issues/11351)) ([e4218de](https://github.com/n8n-io/n8n/commit/e4218debd18812fa3aa508339afd3de03c4d69dc)) +* **SSH Node:** Cleanup temporary binary files as soon as possible ([#11305](https://github.com/n8n-io/n8n/issues/11305)) ([08a7b5b](https://github.com/n8n-io/n8n/commit/08a7b5b7425663ec6593114921c2e22ab37d039e)) + + +### Features + +* Add report bug buttons ([#11304](https://github.com/n8n-io/n8n/issues/11304)) ([296f68f](https://github.com/n8n-io/n8n/commit/296f68f041b93fd32ac7be2b53c2b41d58c2998a)) +* **AI Agent Node:** Make tools optional when using OpenAI model with Tools agent ([#11212](https://github.com/n8n-io/n8n/issues/11212)) ([fed7c3e](https://github.com/n8n-io/n8n/commit/fed7c3ec1fb0553adaa9a933f91aabfd54fe83a3)) +* **core:** introduce JWT API keys for the public API ([#11005](https://github.com/n8n-io/n8n/issues/11005)) ([679fa4a](https://github.com/n8n-io/n8n/commit/679fa4a10a85fc96e12ca66fe12cdb32368bc12b)) +* **core:** Enforce config file permissions on startup ([#11328](https://github.com/n8n-io/n8n/issues/11328)) ([c078a51](https://github.com/n8n-io/n8n/commit/c078a516bec857831cc904ef807d0791b889f3a2)) +* **core:** Handle cycles in workflows when partially executing them ([#11187](https://github.com/n8n-io/n8n/issues/11187)) ([321d6de](https://github.com/n8n-io/n8n/commit/321d6deef18806d88d97afef2f2c6f29e739ccb4)) +* **editor:** Separate node output execution tooltip from status icon ([#11196](https://github.com/n8n-io/n8n/issues/11196)) ([cd15e95](https://github.com/n8n-io/n8n/commit/cd15e959c7af82a7d8c682e94add2b2640624a70)) +* **GitHub Node:** Add workflow resource operations ([#10744](https://github.com/n8n-io/n8n/issues/10744)) ([d309112](https://github.com/n8n-io/n8n/commit/d3091126472faa2c8f270650e54027d19dc56bb6)) +* **n8n Form Page Node:** New node ([#10390](https://github.com/n8n-io/n8n/issues/10390)) ([643d66c](https://github.com/n8n-io/n8n/commit/643d66c0ae084a0d93dac652703adc0a32cab8de)) +* **n8n Google My Business Node:** New node ([#10504](https://github.com/n8n-io/n8n/issues/10504)) ([bf28fbe](https://github.com/n8n-io/n8n/commit/bf28fbefe5e8ba648cba1555a2d396b75ee32bbb)) +* Run `mfa.beforeSetup` hook before enabling MFA ([#11116](https://github.com/n8n-io/n8n/issues/11116)) ([25c1c32](https://github.com/n8n-io/n8n/commit/25c1c3218cf1075ca3abd961236f3b2fbd9d6ba9)) +* **Structured Output Parser Node:** Refactor Output Parsers and Improve Error Handling ([#11148](https://github.com/n8n-io/n8n/issues/11148)) ([45274f2](https://github.com/n8n-io/n8n/commit/45274f2e7f081e194e330e1c9e6a5c26fca0b141)) + + + +# [1.64.0](https://github.com/n8n-io/n8n/compare/n8n@1.63.0...n8n@1.64.0) (2024-10-16) + + +### Bug Fixes + +* Adjust arrow button colors in dark mode ([#11248](https://github.com/n8n-io/n8n/issues/11248)) ([439132c](https://github.com/n8n-io/n8n/commit/439132c291a812d57702c94eaa12878394ac4c69)) +* **core:** Ensure error reporter does not promote `info` to `error` messages ([#11245](https://github.com/n8n-io/n8n/issues/11245)) ([a7fc7fc](https://github.com/n8n-io/n8n/commit/a7fc7fc22997acec86dc94386c95349fd018f4ae)) +* **core:** Override executions mode if `regular` during worker startup ([#11250](https://github.com/n8n-io/n8n/issues/11250)) ([c0aa28c](https://github.com/n8n-io/n8n/commit/c0aa28c6cf3f77b04e04663217c9df8e3803ed3f)) +* **core:** Wrap nodes for tool use at a suitable time ([#11238](https://github.com/n8n-io/n8n/issues/11238)) ([c2fb881](https://github.com/n8n-io/n8n/commit/c2fb881d61291209802438d95892d052f5c82d43)) +* Don't show pinned data tooltip for pinned nodes ([#11249](https://github.com/n8n-io/n8n/issues/11249)) ([c2ad156](https://github.com/n8n-io/n8n/commit/c2ad15646d326a8f71e314d54efe202a5bcdd296)) +* **editor:** Bring back the "Forgot password" link on SigninView ([#11216](https://github.com/n8n-io/n8n/issues/11216)) ([4e78c46](https://github.com/n8n-io/n8n/commit/4e78c46a7450c7fc0694369944d4fb446cef2348)) +* **editor:** Fix chat crashing when rendering output-parsed content ([#11210](https://github.com/n8n-io/n8n/issues/11210)) ([4aaebfd](https://github.com/n8n-io/n8n/commit/4aaebfd4358f590e98c453ad4e65cc2c9d0f76f8)) +* **editor:** Make submit in ChangePasswordView work again ([#11227](https://github.com/n8n-io/n8n/issues/11227)) ([4f27b39](https://github.com/n8n-io/n8n/commit/4f27b39b45b58779d363980241e6e5e11b58f5da)) +* Expressions display actual result of evaluating expression inside string ([#11257](https://github.com/n8n-io/n8n/issues/11257)) ([7f5f0a9](https://github.com/n8n-io/n8n/commit/7f5f0a9df3b3fae6e2f9787443ac1cf9415d5932)) +* **Google Ads Node:** Update to use v17 api ([#11243](https://github.com/n8n-io/n8n/issues/11243)) ([3d97f02](https://github.com/n8n-io/n8n/commit/3d97f02a8d2b6e5bc7c97c5271bed97417ecacd2)) +* **Google Calendar Node:** Fix issue with conference data types not loading ([#11185](https://github.com/n8n-io/n8n/issues/11185)) ([4012758](https://github.com/n8n-io/n8n/commit/401275884e5db0287e4eeffb3c7497dd5e024880)) +* **Google Calendar Node:** Mode to add or replace attendees in event update ([#11132](https://github.com/n8n-io/n8n/issues/11132)) ([6c6a8ef](https://github.com/n8n-io/n8n/commit/6c6a8efdea83cf7194304ce089d7b72d8f6c1a9d)) +* **HTTP Request Tool Node:** Respond with an error when receive binary response ([#11219](https://github.com/n8n-io/n8n/issues/11219)) ([0d23a7f](https://github.com/n8n-io/n8n/commit/0d23a7fb5ba41545f70c4848d30b90af91b1e7e6)) +* **MySQL Node:** Fix "Maximum call stack size exceeded" error when handling a large number of rows ([#11242](https://github.com/n8n-io/n8n/issues/11242)) ([b7ee0c4](https://github.com/n8n-io/n8n/commit/b7ee0c4087eae346bc7e5360130d6c812dbe99db)) +* **n8n Trigger Node:** Merge with Workflow Trigger node ([#11174](https://github.com/n8n-io/n8n/issues/11174)) ([6ec6b51](https://github.com/n8n-io/n8n/commit/6ec6b5197ae97eb86496effd458fcc0b9b223ef3)) +* **OpenAI Node:** Fix tool parameter parsing issue ([#11201](https://github.com/n8n-io/n8n/issues/11201)) ([5a1d81a](https://github.com/n8n-io/n8n/commit/5a1d81ad917fde5cd6a387fe2d4ec6aab6b71349)) +* **Set Node:** Fix issue with UI properties not being hidden ([#11263](https://github.com/n8n-io/n8n/issues/11263)) ([1affc27](https://github.com/n8n-io/n8n/commit/1affc27b6bf9a559061a06f92bebe8167d938665)) +* **Strava Trigger Node:** Fix issue with webhook not being deleted ([#11226](https://github.com/n8n-io/n8n/issues/11226)) ([566529c](https://github.com/n8n-io/n8n/commit/566529ca1149988a54a58b3c34bbe4d9f1add6db)) + + +### Features + +* Add tracking for node errors and update node graph ([#11060](https://github.com/n8n-io/n8n/issues/11060)) ([d3b05f1](https://github.com/n8n-io/n8n/commit/d3b05f1c54e62440666297d8e484ccd22168da48)) +* **core:** Dedupe ([#10101](https://github.com/n8n-io/n8n/issues/10101)) ([52dd2c7](https://github.com/n8n-io/n8n/commit/52dd2c76196c6895b47145c2b85a6895ce2874d4)) +* **editor:** Send workflow context to assistant store ([#11135](https://github.com/n8n-io/n8n/issues/11135)) ([fade9e4](https://github.com/n8n-io/n8n/commit/fade9e43c84a0ae1fbc80f3ee546a418970e2380)) +* **Gong Node:** New node ([#10777](https://github.com/n8n-io/n8n/issues/10777)) ([785b47f](https://github.com/n8n-io/n8n/commit/785b47feb3b83cf36aaed57123f8baca2bbab307)) + + +### Performance Improvements + +* **Google Sheets Node:** Don't load whole spreadsheet dataset to determine columns when appending data ([#11235](https://github.com/n8n-io/n8n/issues/11235)) ([26ad091](https://github.com/n8n-io/n8n/commit/26ad091f473bca4e5d3bdc257e0818be02e52db5)) + + + +# [1.63.0](https://github.com/n8n-io/n8n/compare/n8n@1.62.1...n8n@1.63.0) (2024-10-09) + + +### Bug Fixes + +* **Convert to File Node:** Convert to ICS start date defaults to now ([#11114](https://github.com/n8n-io/n8n/issues/11114)) ([1146c4e](https://github.com/n8n-io/n8n/commit/1146c4e98d8c85c15ac67fa1c3bfb731234531e3)) +* **core:** Allow loading nodes from multiple custom directories ([#11130](https://github.com/n8n-io/n8n/issues/11130)) ([1b84b0e](https://github.com/n8n-io/n8n/commit/1b84b0e5e7485d9f99d61a8ae3df49efadca0745)) +* **core:** Always set `startedAt` when executions start running ([#11098](https://github.com/n8n-io/n8n/issues/11098)) ([722f4a8](https://github.com/n8n-io/n8n/commit/722f4a8b771058800b992a482ad5f644b650960d)) +* **core:** Fix AI nodes not working with new partial execution flow ([#11055](https://github.com/n8n-io/n8n/issues/11055)) ([0eee5df](https://github.com/n8n-io/n8n/commit/0eee5dfd597817819dbe0463a63f671fde53432f)) +* **core:** Print errors that happen before the execution starts on the worker instead of just on the main instance ([#11099](https://github.com/n8n-io/n8n/issues/11099)) ([1d14557](https://github.com/n8n-io/n8n/commit/1d145574611661ecd9ab1a39d815c0ea915b9a1c)) +* **core:** Separate error handlers for main and worker ([#11091](https://github.com/n8n-io/n8n/issues/11091)) ([bb59cc7](https://github.com/n8n-io/n8n/commit/bb59cc71acc9e494e54abc8402d58db39e5a664e)) +* **editor:** Shorten overflowing Node Label in InputLabels on hover and focus ([#11110](https://github.com/n8n-io/n8n/issues/11110)) ([87a0b68](https://github.com/n8n-io/n8n/commit/87a0b68f9009c1c776d937c6ca62096e88c95ed6)) +* **editor:** Add safety to prevent undefined errors ([#11104](https://github.com/n8n-io/n8n/issues/11104)) ([565b117](https://github.com/n8n-io/n8n/commit/565b117a52f8eac9202a1a62c43daf78b293dcf8)) +* **editor:** Fix design system form element sizing ([#11040](https://github.com/n8n-io/n8n/issues/11040)) ([67c3453](https://github.com/n8n-io/n8n/commit/67c3453885bc619fedc8338a6dd0d8d66dead931)) +* **editor:** Fix getInitials when Intl.Segmenter is not supported ([#11103](https://github.com/n8n-io/n8n/issues/11103)) ([7e8955b](https://github.com/n8n-io/n8n/commit/7e8955b322b1d2c84c0f479a5977484d8d5e3135)) +* **editor:** Fix schema view in AI tools ([#11089](https://github.com/n8n-io/n8n/issues/11089)) ([09cfdbd](https://github.com/n8n-io/n8n/commit/09cfdbd1817eba46c935308880fe9f95ded252b0)) +* **editor:** Respect tag querystring filter when listing workflows ([#11029](https://github.com/n8n-io/n8n/issues/11029)) ([59c5ff6](https://github.com/n8n-io/n8n/commit/59c5ff61354302562ba5a2340c66811afdd1523b)) +* **editor:** Show previous nodes autocomplete in AI tool nodes ([#11111](https://github.com/n8n-io/n8n/issues/11111)) ([8566b3a](https://github.com/n8n-io/n8n/commit/8566b3a99939f45ac263830eee30d0d4ade9305c)) +* **editor:** Update Usage page for Community+ edition ([#11074](https://github.com/n8n-io/n8n/issues/11074)) ([3974981](https://github.com/n8n-io/n8n/commit/3974981ea5c67f6f2bbb90a96b405d9d0cfa21af)) +* Fix transaction handling for 'revert' command ([#11145](https://github.com/n8n-io/n8n/issues/11145)) ([a782336](https://github.com/n8n-io/n8n/commit/a7823367f13c3dba0c339eaafaad0199bd524b13)) +* Forbid access to files outside source control work directory ([#11152](https://github.com/n8n-io/n8n/issues/11152)) ([606eedb](https://github.com/n8n-io/n8n/commit/606eedbf1b302e153bd13b7cef80847711e3a9ee)) +* **Gitlab Node:** Author name and email not being set ([#11077](https://github.com/n8n-io/n8n/issues/11077)) ([fce1233](https://github.com/n8n-io/n8n/commit/fce1233b58624d502c9c68f4b32a4bb7d76f1814)) +* Incorrect error message on calling wrong webhook method ([#11093](https://github.com/n8n-io/n8n/issues/11093)) ([d974b01](https://github.com/n8n-io/n8n/commit/d974b015d030c608158ff0c3fa3b7f4cbb8eadd3)) +* **n8n Form Trigger Node:** When clicking on a multiple choice label, the wrong one is selected ([#11059](https://github.com/n8n-io/n8n/issues/11059)) ([948edd1](https://github.com/n8n-io/n8n/commit/948edd1a047cf3dbddb3b0e9ec5de4bac3e97b9f)) +* **NASA Node:** Astronomy-Picture-Of-The-Day fails when it's YouTube video ([#11046](https://github.com/n8n-io/n8n/issues/11046)) ([c70969d](https://github.com/n8n-io/n8n/commit/c70969da2bcabeb33394073a69ccef208311461b)) +* **Postgres PGVector Store Node:** Fix filtering in retriever mode ([#11075](https://github.com/n8n-io/n8n/issues/11075)) ([dbd2ae1](https://github.com/n8n-io/n8n/commit/dbd2ae199506a24c2df4c983111a56f2adf63eee)) +* Show result of waiting execution on canvas after execution complete ([#10815](https://github.com/n8n-io/n8n/issues/10815)) ([90b4bfc](https://github.com/n8n-io/n8n/commit/90b4bfc472ef132d2280b175ae7410dfb8e549b2)) +* **Slack Node:** User id not sent correctly to API when updating user profile ([#11153](https://github.com/n8n-io/n8n/issues/11153)) ([ed9e61c](https://github.com/n8n-io/n8n/commit/ed9e61c46055d8e636a70c9c175d7d4ba596dd48)) + + +### Features + +* **core:** Introduce scoped logging ([#11127](https://github.com/n8n-io/n8n/issues/11127)) ([c68782c](https://github.com/n8n-io/n8n/commit/c68782c633b7ef6253ea705c5a222d4536491fd5)) +* **editor:** Add navigation dropdown component ([#11047](https://github.com/n8n-io/n8n/issues/11047)) ([e081fd1](https://github.com/n8n-io/n8n/commit/e081fd1f0b5a0700017a8dc92f013f0abdbad319)) +* **editor:** Add route for create / edit / share credentials ([#11134](https://github.com/n8n-io/n8n/issues/11134)) ([5697de4](https://github.com/n8n-io/n8n/commit/5697de4429c5d94f25ce1bd14c84fb4266ea47a7)) +* **editor:** Community+ enrollment ([#10776](https://github.com/n8n-io/n8n/issues/10776)) ([92cf860](https://github.com/n8n-io/n8n/commit/92cf860f9f2994442facfddc758bc60f5cbec520)) +* Human in the loop ([#10675](https://github.com/n8n-io/n8n/issues/10675)) ([41228b4](https://github.com/n8n-io/n8n/commit/41228b472de11affc8cd0821284427c2c9e8b421)) +* **OpenAI Node:** Allow to specify thread ID for Assistant -> Message operation ([#11080](https://github.com/n8n-io/n8n/issues/11080)) ([6a2f9e7](https://github.com/n8n-io/n8n/commit/6a2f9e72959fb0e89006b69c31fbcee1ead1cde9)) +* Opt in to additional features on community for existing users ([#11166](https://github.com/n8n-io/n8n/issues/11166)) ([c2adfc8](https://github.com/n8n-io/n8n/commit/c2adfc85451c5103eaad068f882066fd36c4aebe)) + + +### Performance Improvements + +* **core:** Optimize worker healthchecks ([#11092](https://github.com/n8n-io/n8n/issues/11092)) ([19fb728](https://github.com/n8n-io/n8n/commit/19fb728da0839c57603e55da4e407715e6c5b081)) + + + +## [1.62.1](https://github.com/n8n-io/n8n/compare/n8n@1.61.0...n8n@1.62.1) (2024-10-02) + + +### Bug Fixes + +* **AI Agent Node:** Fix output parsing and empty tool input handling in AI Agent node ([#10970](https://github.com/n8n-io/n8n/issues/10970)) ([3a65bdc](https://github.com/n8n-io/n8n/commit/3a65bdc1f522932d463b4da0e67d29076887d06c)) +* **API:** Fix workflow project transfer ([#10651](https://github.com/n8n-io/n8n/issues/10651)) ([5f89e3a](https://github.com/n8n-io/n8n/commit/5f89e3a01c1bbb3589ff0464fd5bc991426f55dc)) +* **AwsS3 Node:** Fix search only using first input parameters ([#10998](https://github.com/n8n-io/n8n/issues/10998)) ([846cfde](https://github.com/n8n-io/n8n/commit/846cfde8dcaf7bf80f0a4ca7d65fc2a7b61d0e23)) +* **Chat Trigger Node:** Fix Allowed Origins paramter ([#11011](https://github.com/n8n-io/n8n/issues/11011)) ([b5f4afe](https://github.com/n8n-io/n8n/commit/b5f4afe12ec77f527080a4b7f812e12f9f73f8df)) +* **core:** Fix ownerless project case in statistics service ([#11051](https://github.com/n8n-io/n8n/issues/11051)) ([bdaadf1](https://github.com/n8n-io/n8n/commit/bdaadf10e058e2c0b1141289189d6526c030a2ca)) +* **core:** Handle Redis disconnects gracefully ([#11007](https://github.com/n8n-io/n8n/issues/11007)) ([cd91648](https://github.com/n8n-io/n8n/commit/cd916480c2d2b55f2215c72309dc432340fc3f30)) +* **core:** Prevent backend from loading duplicate copies of nodes packages ([#10979](https://github.com/n8n-io/n8n/issues/10979)) ([4584f22](https://github.com/n8n-io/n8n/commit/4584f22a9b16883779d8555cda309fd8bd113f6c)) +* **core:** Upgrade @n8n/typeorm to address a rare mutex release issue ([#10993](https://github.com/n8n-io/n8n/issues/10993)) ([2af0fbf](https://github.com/n8n-io/n8n/commit/2af0fbf52f0b404697f5148f81ad0035c9ffb6b9)) +* **editor:** Allow resources to move between personal and team projects ([#10683](https://github.com/n8n-io/n8n/issues/10683)) ([136d491](https://github.com/n8n-io/n8n/commit/136d49132567558b7d27069c857c0e0bfee70ce2)) +* **editor:** Color scheme for a markdown code blocks in dark mode ([#11008](https://github.com/n8n-io/n8n/issues/11008)) ([b20d2eb](https://github.com/n8n-io/n8n/commit/b20d2eb403f71fe1dc21c92df118adcebef51ffe)) +* **editor:** Fix filter execution by "Queued" ([#10987](https://github.com/n8n-io/n8n/issues/10987)) ([819d20f](https://github.com/n8n-io/n8n/commit/819d20fa2eee314b88a7ce1c4db632afac514704)) +* **editor:** Fix performance issue in credentials list ([#10988](https://github.com/n8n-io/n8n/issues/10988)) ([7073ec6](https://github.com/n8n-io/n8n/commit/7073ec6fe5384cc8c50dcb242212999a1fbc9041)) +* **editor:** Fix schema view pill highlighting ([#10936](https://github.com/n8n-io/n8n/issues/10936)) ([1b973dc](https://github.com/n8n-io/n8n/commit/1b973dcd8dbce598e6ada490fd48fad52f7b4f3a)) +* **editor:** Fix workflow executions list page redirection ([#10981](https://github.com/n8n-io/n8n/issues/10981)) ([fe7d060](https://github.com/n8n-io/n8n/commit/fe7d0605681dc963f5e5d1607f9d40c5173e0f9f)) +* **editor:** Format action names properly when action is not defined ([#11030](https://github.com/n8n-io/n8n/issues/11030)) ([9c43fb3](https://github.com/n8n-io/n8n/commit/9c43fb301d1ccb82e42f46833e19587289803cd3)) +* **Elasticsearch Node:** Fix issue with self signed certificates not working ([#10954](https://github.com/n8n-io/n8n/issues/10954)) ([79622b5](https://github.com/n8n-io/n8n/commit/79622b5f267f2a4a53f3eb48e228939d6e3a9caa)) +* **Facebook Lead Ads Trigger Node:** Pagination fix in RLC ([#10956](https://github.com/n8n-io/n8n/issues/10956)) ([6322372](https://github.com/n8n-io/n8n/commit/632237261087ada0177b67922f9f48ca02ef1d9e)) +* **Github Document Loader Node:** Pass through apiUrl from credentials & fix log output ([#11049](https://github.com/n8n-io/n8n/issues/11049)) ([a7af981](https://github.com/n8n-io/n8n/commit/a7af98183c47a5e215869c8269729b0fb2f318b5)) +* **Google Sheets Node:** Updating on row_number using automatic matching ([#10940](https://github.com/n8n-io/n8n/issues/10940)) ([ed91495](https://github.com/n8n-io/n8n/commit/ed91495ebc1e09b89533ffef4b775eaa0139f365)) +* **HTTP Request Tool Node:** Remove default user agent header ([#10971](https://github.com/n8n-io/n8n/issues/10971)) ([5a99e93](https://github.com/n8n-io/n8n/commit/5a99e93f8d2c66d7dbcef382478badd63bc4a0b5)) +* **Postgres Node:** Falsy query parameters ignored ([#10960](https://github.com/n8n-io/n8n/issues/10960)) ([4a63cff](https://github.com/n8n-io/n8n/commit/4a63cff5ec722c810e3ff2bd7b0bb1e32f7f403b)) +* **Respond to Webhook Node:** Node does not work with Wait node ([#10992](https://github.com/n8n-io/n8n/issues/10992)) ([2df5a5b](https://github.com/n8n-io/n8n/commit/2df5a5b649f8ba3b747782d6d5045820aa74955d)) +* **RSS Feed Trigger Node:** Fix regression on missing timestamps ([#10991](https://github.com/n8n-io/n8n/issues/10991)) ([d2bc076](https://github.com/n8n-io/n8n/commit/d2bc0760e2b5c977fcc683f0a0281f099a9c538d)) +* **Supabase Node:** Fix issue with delete not always working ([#10952](https://github.com/n8n-io/n8n/issues/10952)) ([1944b46](https://github.com/n8n-io/n8n/commit/1944b46fd472bb59552b5fbf7783168a622a2bd2)) +* **Text Classifier Node:** Default system prompt template ([#11018](https://github.com/n8n-io/n8n/issues/11018)) ([77fec19](https://github.com/n8n-io/n8n/commit/77fec195d92e0fe23c60552a72e8c030cf7e5e5c)) +* **Todoist Node:** Fix listSearch filter bug in Todoist Node ([#10989](https://github.com/n8n-io/n8n/issues/10989)) ([c4b3272](https://github.com/n8n-io/n8n/commit/c4b327248d7aa1352e8d6acec5627ff406aea3d4)) +* **Todoist Node:** Make Section Name optional in Move Task operation ([#10732](https://github.com/n8n-io/n8n/issues/10732)) ([799006a](https://github.com/n8n-io/n8n/commit/799006a3cce6abe210469c839ae392d0c1aec486)) + + +### Features + +* Add more context to support chat ([#11014](https://github.com/n8n-io/n8n/issues/11014)) ([8a30f92](https://github.com/n8n-io/n8n/commit/8a30f92156d6a4fe73113bd3cdfb751b8c9ce4b4)) +* Add Sysdig API credentials for SecOps ([#7033](https://github.com/n8n-io/n8n/issues/7033)) ([a8d1a1e](https://github.com/n8n-io/n8n/commit/a8d1a1ea854fb2c69643b0a5738440b389121ca3)) +* **core:** Filter executions by project ID in internal API ([#10976](https://github.com/n8n-io/n8n/issues/10976)) ([06d749f](https://github.com/n8n-io/n8n/commit/06d749ffa7ced503141d8b07e22c47d971eb1623)) +* **core:** Implement Dynamic Parameters within regular nodes used as AI Tools ([#10862](https://github.com/n8n-io/n8n/issues/10862)) ([ef5b7cf](https://github.com/n8n-io/n8n/commit/ef5b7cf9b77b653111eb5b1d9de8116c9f6b9f92)) +* **editor:** Do not show error for remote options when credentials aren't specified ([#10944](https://github.com/n8n-io/n8n/issues/10944)) ([9fc3699](https://github.com/n8n-io/n8n/commit/9fc3699beb0c150909889ed17740a5cd9e0461c3)) +* **editor:** Enable drag and drop in code editors (Code/SQL/HTML) ([#10888](https://github.com/n8n-io/n8n/issues/10888)) ([af9e227](https://github.com/n8n-io/n8n/commit/af9e227ad4848995b9d82c72f814dbf9d1de506f)) +* **editor:** Overhaul document title management ([#10999](https://github.com/n8n-io/n8n/issues/10999)) ([bb28956](https://github.com/n8n-io/n8n/commit/bb2895689fb006897bc244271aca6f0bfa1839b9)) +* **editor:** Remove execution annotation feature flag ([#11020](https://github.com/n8n-io/n8n/issues/11020)) ([e7199db](https://github.com/n8n-io/n8n/commit/e7199dbfccdbdf1c4273f916e3006ca610c230e9)) +* **editor:** Support node-creator actions for vector store nodes ([#11032](https://github.com/n8n-io/n8n/issues/11032)) ([72b70d9](https://github.com/n8n-io/n8n/commit/72b70d9d98daeba654baf6785ff1ae234c73c977)) +* **Google BigQuery Node:** Return numeric values as integers ([#10943](https://github.com/n8n-io/n8n/issues/10943)) ([d7c1d24](https://github.com/n8n-io/n8n/commit/d7c1d24f74648740b2f425640909037ba06c5030)) +* **Invoice Ninja Node:** Add more query params to getAll requests ([#9238](https://github.com/n8n-io/n8n/issues/9238)) ([50b7238](https://github.com/n8n-io/n8n/commit/50b723836e70bbe405594f690b73057f9c33fbe4)) +* **Iterable Node:** Add support for EDC and USDC selection ([#10908](https://github.com/n8n-io/n8n/issues/10908)) ([0ca9c07](https://github.com/n8n-io/n8n/commit/0ca9c076ca51d313392e45c3b013f2e83aaea843)) +* **Question and Answer Chain Node:** Customize question and answer system prompt ([#10385](https://github.com/n8n-io/n8n/issues/10385)) ([08a27b3](https://github.com/n8n-io/n8n/commit/08a27b3148aac2282f64339ddc33ac7c90835d84)) + + + +# [1.61.0](https://github.com/n8n-io/n8n/compare/n8n@1.60.0...n8n@1.61.0) (2024-09-25) + + +### Bug Fixes + +* **core:** Add executionData to expressions in pagination code ([#10926](https://github.com/n8n-io/n8n/issues/10926)) ([eac103e](https://github.com/n8n-io/n8n/commit/eac103e367d59a532b9ba12db78a0dd10aee62fb)) +* **core:** Fix webhook binary data max size configuration ([#10897](https://github.com/n8n-io/n8n/issues/10897)) ([693fb7e](https://github.com/n8n-io/n8n/commit/693fb7e580b7e030c86977bff6d319bbee4fcd62)) +* **core:** Remove subworkflow license check ([#10893](https://github.com/n8n-io/n8n/issues/10893)) ([0290e38](https://github.com/n8n-io/n8n/commit/0290e38f990275074eb7e7ccd0b41f1ae0215dd2)) +* **editor:** Credentials scopes and n8n scopes mix up ([#10930](https://github.com/n8n-io/n8n/issues/10930)) ([e069608](https://github.com/n8n-io/n8n/commit/e0696080227aee7ccb50d51a82873e8a1ba4667d)) +* **editor:** Fix design system form component sizing ([#10961](https://github.com/n8n-io/n8n/issues/10961)) ([cf153ea](https://github.com/n8n-io/n8n/commit/cf153ea085165115ee523fbb1bd32080dde47eda)) +* **editor:** Fix modal overflow when AI is enabled in code node ([#10887](https://github.com/n8n-io/n8n/issues/10887)) ([f9f303f](https://github.com/n8n-io/n8n/commit/f9f303f562084db8c8956da267680b1f935aa2df)) +* **editor:** Fix source control push modal checkboxes ([#10910](https://github.com/n8n-io/n8n/issues/10910)) ([8db8817](https://github.com/n8n-io/n8n/commit/8db88178511749b19a5878816ef062092fd9f2be)) +* **editor:** Fix styling and typography in AI Assistant chat ([#10895](https://github.com/n8n-io/n8n/issues/10895)) ([57ff3cc](https://github.com/n8n-io/n8n/commit/57ff3cc27b9470bfbe2486c3c1831c57f5a4075f)) +* **editor:** Prevent clipboard xss injection ([#10894](https://github.com/n8n-io/n8n/issues/10894)) ([e20ab59](https://github.com/n8n-io/n8n/commit/e20ab59c1dcf9da19a30268ce19930bfa7e38992)) +* **editor:** Prevent node name input in NDV to expand unnecessarily ([#10922](https://github.com/n8n-io/n8n/issues/10922)) ([a2237d1](https://github.com/n8n-io/n8n/commit/a2237d128ff6a4d65cd30325b6b9d9b765ca7be6)) +* **editor:** Update gird size when opening credentials support chat ([#10882](https://github.com/n8n-io/n8n/issues/10882)) ([b86fd80](https://github.com/n8n-io/n8n/commit/b86fd80fc9fe06011367ca04a75e4b52533db1fe)) +* **editor:** Use `:focus-visible` instead for `:focus` for buttons ([#10921](https://github.com/n8n-io/n8n/issues/10921)) ([bf28d09](https://github.com/n8n-io/n8n/commit/bf28d0965c46620a106c87037bafd2cf936f1050)) +* **editor:** Use correct output for connected nodes in schema view ([#10928](https://github.com/n8n-io/n8n/issues/10928)) ([ad60d49](https://github.com/n8n-io/n8n/commit/ad60d49b4251138a7c69cb5e9f00c3ef875486e0)) +* Enable Assistant on other credential views ([#10931](https://github.com/n8n-io/n8n/issues/10931)) ([557db9c](https://github.com/n8n-io/n8n/commit/557db9c170a89447ec9cc14aa1af51e5fd11dd92)) +* Ensure user id for early track events ([#10885](https://github.com/n8n-io/n8n/issues/10885)) ([23c09ea](https://github.com/n8n-io/n8n/commit/23c09eae4223545c717270a5cd305d2e57e1ad5b)) +* **Google Sheets Node:** Insert data if sheet is empty instead of error ([#10942](https://github.com/n8n-io/n8n/issues/10942)) ([c75990e](https://github.com/n8n-io/n8n/commit/c75990e0632c581384542610a886ef89621a9403)) +* Hide assistant button when showing Click to connect ([#10932](https://github.com/n8n-io/n8n/issues/10932)) ([d74cff2](https://github.com/n8n-io/n8n/commit/d74cff20301f285588f93207f29660d25fdbc8da)) +* **HTTP Request Node:** Do not modify request object when sanitizing message for UI ([#10923](https://github.com/n8n-io/n8n/issues/10923)) ([8cc10cc](https://github.com/n8n-io/n8n/commit/8cc10cc2c1869b9abcafd157e41be65ce2b6f499)) +* **MQTT Node:** Close connection if connection attempt fails ([#10873](https://github.com/n8n-io/n8n/issues/10873)) ([ee7147c](https://github.com/n8n-io/n8n/commit/ee7147c6b3b053ac8fc317319ab257204e599f16)) +* **MySQL Node:** Fix "Maximum call stack size exceeded" error when handling a large number of rows ([#10965](https://github.com/n8n-io/n8n/issues/10965)) ([62159bd](https://github.com/n8n-io/n8n/commit/62159bd71c9a0303b597a68113e0ac50473ee8d4)) +* **Notion Node:** Allow UUID v8 in notion id checks ([#10938](https://github.com/n8n-io/n8n/issues/10938)) ([46beda0](https://github.com/n8n-io/n8n/commit/46beda05f6771c31bcf0b6a781976d8261079a66)) + + +### Features + +* **Brandfetch Node:** Update to use new API ([#10877](https://github.com/n8n-io/n8n/issues/10877)) ([08ba9a3](https://github.com/n8n-io/n8n/commit/08ba9a36a43b6c84f69bb04fa4d6419a7a4adddf)) +* **editor:** Setup Sentry integration ([#10945](https://github.com/n8n-io/n8n/issues/10945)) ([6de4dff](https://github.com/n8n-io/n8n/commit/6de4dfff87e4da888567081a9928d9682bdea11d)) +* **editor:** Show a notice before deleting annotated executions ([#10934](https://github.com/n8n-io/n8n/issues/10934)) ([dcc1c72](https://github.com/n8n-io/n8n/commit/dcc1c72fc4b56c3252183541b22da801804d4f79)) +* Page size 1 option ([#10957](https://github.com/n8n-io/n8n/issues/10957)) ([bdc0622](https://github.com/n8n-io/n8n/commit/bdc0622f59e98c9e6c542f5cb59a2dbd9008ba96)) +* **Slack Node:** Add option to hide workflow link on message update ([#10927](https://github.com/n8n-io/n8n/issues/10927)) ([422c946](https://github.com/n8n-io/n8n/commit/422c9463c8d931a728615a1fe5a10f05a96ecaa2)) + + +### Performance Improvements + +* **editor:** Use virtual scrolling in `RunDataJson.vue` ([#10838](https://github.com/n8n-io/n8n/issues/10838)) ([f5474ff](https://github.com/n8n-io/n8n/commit/f5474ff79198a2f5a145d0a9df1bb651ea677ec5)) + + + +# [1.60.0](https://github.com/n8n-io/n8n/compare/n8n@1.59.0...n8n@1.60.0) (2024-09-18) + + +### Bug Fixes + +* **Azure OpenAI Chat Model Node:** Add response format option ([#10851](https://github.com/n8n-io/n8n/issues/10851)) ([0b5299a](https://github.com/n8n-io/n8n/commit/0b5299a248fdd451ceabb98ff6a2b38e818d02f8)) +* **Contentful Node:** Add missing additional fields to entry > get ([#10830](https://github.com/n8n-io/n8n/issues/10830)) ([c43aef1](https://github.com/n8n-io/n8n/commit/c43aef1a266cc6ccf8f778c290f8cb8ba2ee28cf)) +* **core:** Prevent shutdown error in regular mode ([#10844](https://github.com/n8n-io/n8n/issues/10844)) ([acb4194](https://github.com/n8n-io/n8n/commit/acb4194fa1a1d0497dd1f48045f069e1db28c432)) +* **core:** Restore queue listeners for `webhook` process ([#10781](https://github.com/n8n-io/n8n/issues/10781)) ([86f4877](https://github.com/n8n-io/n8n/commit/86f4877bab978a1ec2f53df23b6c515507cd8f72)) +* **editor:** Add missing node parameter values to AI Assistant request ([#10788](https://github.com/n8n-io/n8n/issues/10788)) ([d65ade4](https://github.com/n8n-io/n8n/commit/d65ade4e92eed3cfc47854d493fac6885a1a852b)) +* **editor:** Address edge toolbar rendering glitches ([#10839](https://github.com/n8n-io/n8n/issues/10839)) ([e0c0dde](https://github.com/n8n-io/n8n/commit/e0c0ddee59e889f50dd5033d0a933bad60fb7e3a)) +* **editor:** Allow custom git repo urls in source control settings ([#10849](https://github.com/n8n-io/n8n/issues/10849)) ([a63a9b5](https://github.com/n8n-io/n8n/commit/a63a9b53f06d3a00e8e76c0ab9f2571604c01922)) +* **editor:** Fix completion on $input.item. in Code node ([#10800](https://github.com/n8n-io/n8n/issues/10800)) ([45dccf3](https://github.com/n8n-io/n8n/commit/45dccf3d0c8282987833962a8e3f3a77d256ea37)) +* **editor:** Make expression edit modal read-only in executions view ([#10806](https://github.com/n8n-io/n8n/issues/10806)) ([394ef88](https://github.com/n8n-io/n8n/commit/394ef888433b1d48593531ab9eea93a3c3ae6040)) +* **editor:** Make schema view search copy more clear ([#10807](https://github.com/n8n-io/n8n/issues/10807)) ([7f1c131](https://github.com/n8n-io/n8n/commit/7f1c131b72ad1b98b4a8c976b8a0ef5d963d5f1f)) +* **editor:** Minimap Show nodes outside viewport ([#10843](https://github.com/n8n-io/n8n/issues/10843)) ([9c95db8](https://github.com/n8n-io/n8n/commit/9c95db8282c9f3cef5568aa9793ca977d4d8a347)) +* **editor:** Prevent clipboard XSS injection ([#10805](https://github.com/n8n-io/n8n/issues/10805)) ([db846d3](https://github.com/n8n-io/n8n/commit/db846d3235a360b4b729312b6ffe0d75be08fd45)) +* **editor:** Render image binary-data using img tags ([#10829](https://github.com/n8n-io/n8n/issues/10829)) ([7c23101](https://github.com/n8n-io/n8n/commit/7c23101ab8c12b735a17deb35637f3f12c00aeb0)) +* **editor:** Replace v-html with custom directive to sanitize html ([#10804](https://github.com/n8n-io/n8n/issues/10804)) ([44e5fb9](https://github.com/n8n-io/n8n/commit/44e5fb9b06c794033204ef1744b54b3b87160082)) +* **editor:** Restore V1 keybinding, Space Key to toggle panning ([#10841](https://github.com/n8n-io/n8n/issues/10841)) ([5a1db6d](https://github.com/n8n-io/n8n/commit/5a1db6db1adad43887e839181719818474bc66b0)) +* Fix telemetry causing console error ([#10828](https://github.com/n8n-io/n8n/issues/10828)) ([3be31e2](https://github.com/n8n-io/n8n/commit/3be31e27edc6e71400bde23f992ba98b2365bcff)) +* **Google Vertex Chat Model Node:** Clean service account private key ([#10770](https://github.com/n8n-io/n8n/issues/10770)) ([e6d84db](https://github.com/n8n-io/n8n/commit/e6d84db89930afc16f4a08fae87d8af4a059e6d7)) +* **HTTP Request Tool Node:** Fix subsequent tool calls reusung the same options ([#10808](https://github.com/n8n-io/n8n/issues/10808)) ([d647ef4](https://github.com/n8n-io/n8n/commit/d647ef41acf672177ea5e8ce0e99d78c565e34b2)) +* **OpenAI Node, Basic LLM Chain Node, Tool Agent Node:** Better OpenAI API rate limit errors ([#10797](https://github.com/n8n-io/n8n/issues/10797)) ([ab83c4b](https://github.com/n8n-io/n8n/commit/ab83c4b4166d5ad5f4ca46a636f83c8802fe3ec0)) +* Prevent copying workflow when copying outside of canvas ([#10813](https://github.com/n8n-io/n8n/issues/10813)) ([22c1890](https://github.com/n8n-io/n8n/commit/22c1890139c89e74df67b9673a1d0c85d647eb9d)) +* **RSS Feed Trigger Node:** Handle empty items gracefully ([#10855](https://github.com/n8n-io/n8n/issues/10855)) ([c55df63](https://github.com/n8n-io/n8n/commit/c55df63abc234ace6ac8e54ed094d10797671264)) + + +### Features + +* **core:** Allow customizing max file size in form-data payloads for webhooks ([#10857](https://github.com/n8n-io/n8n/issues/10857)) ([a3335e0](https://github.com/n8n-io/n8n/commit/a3335e0ecd3796c874985d3c6fbbaabc35dc3490)) +* **core:** Introduce worker metrics ([#10850](https://github.com/n8n-io/n8n/issues/10850)) ([08ebe1e](https://github.com/n8n-io/n8n/commit/08ebe1e4807b3d7b4a4840887cbb30f547a5c89a)) +* **editor:** Add truncate directive ([#10842](https://github.com/n8n-io/n8n/issues/10842)) ([57836cc](https://github.com/n8n-io/n8n/commit/57836cc17a57c790d2ffb2463abb16a03321eb59)) +* **editor:** Show Collaboration pane only when there are multiple active users ([#10772](https://github.com/n8n-io/n8n/issues/10772)) ([a0af1d9](https://github.com/n8n-io/n8n/commit/a0af1d9a06c78d29f215dc010332ea7c8f28717d)) +* **Invoice Ninja Node:** Add actions for bank transactions ([#10389](https://github.com/n8n-io/n8n/issues/10389)) ([5a2c7e0](https://github.com/n8n-io/n8n/commit/5a2c7e00a0ca1a151a7fec56da5f99b086c25b1f)) +* **OpenAI Node:** Include O1 models in the models select ([#10801](https://github.com/n8n-io/n8n/issues/10801)) ([b2b1abc](https://github.com/n8n-io/n8n/commit/b2b1abc5319bdbf2bc855649ea27359b22aba009)) + + + +# [1.59.0](https://github.com/n8n-io/n8n/compare/n8n@1.58.0...n8n@1.59.0) (2024-09-11) + + +### Bug Fixes + +* **Chat Trigger Node:** Fix auth in "Embedded Chat" mode ([#10734](https://github.com/n8n-io/n8n/issues/10734)) ([96db501](https://github.com/n8n-io/n8n/commit/96db501a615ff7ec91bb66ea49532a2c6ca2a172)) +* **core:** Allow license:clear command to be used for licenses that failed renewal ([#10665](https://github.com/n8n-io/n8n/issues/10665)) ([a422c5a](https://github.com/n8n-io/n8n/commit/a422c5ac7b8f609eeab891230d9660f71bf225c5)) +* **core:** Update subworkflow execution status correctly ([#10764](https://github.com/n8n-io/n8n/issues/10764)) ([4f94319](https://github.com/n8n-io/n8n/commit/4f94319cd93885ebe830fa1f0e6b757de80f7356)) +* **editor:** Add arrow end to connection line ([#10704](https://github.com/n8n-io/n8n/issues/10704)) ([43713dc](https://github.com/n8n-io/n8n/commit/43713dcd89fcb98ea7e24d27127861fc4b0d7872)) +* **editor:** Add sticky note readonly state in new canvas ([#10678](https://github.com/n8n-io/n8n/issues/10678)) ([c5bc8e6](https://github.com/n8n-io/n8n/commit/c5bc8e6eb9eadadf44f763e5e5aac4b35d03cc31)) +* **editor:** Auto-focus expression input when switching from "fixed" mode ([#10686](https://github.com/n8n-io/n8n/issues/10686)) ([54ab2b1](https://github.com/n8n-io/n8n/commit/54ab2b14e41fe84a455c7e7d5c73d7347844d2fb)) +* **editor:** Don't render pinned icon for disabled nodes ([#10712](https://github.com/n8n-io/n8n/issues/10712)) ([879b837](https://github.com/n8n-io/n8n/commit/879b8375812106b3f6909b7de27858175ba5575d)) +* **editor:** Fix error rendering and indexing of LLM sub-node outputs ([#10688](https://github.com/n8n-io/n8n/issues/10688)) ([50459ba](https://github.com/n8n-io/n8n/commit/50459bacab517bacb97d2884fda69f8412c9960c)) +* **editor:** Fix xss issues in toast usages ([#10733](https://github.com/n8n-io/n8n/issues/10733)) ([6df6f5f](https://github.com/n8n-io/n8n/commit/6df6f5f8df9a8fc0899524a1b69859815eeb341f)) +* **editor:** Follow up fixes and improvements to viewer role ([#10684](https://github.com/n8n-io/n8n/issues/10684)) ([63548e6](https://github.com/n8n-io/n8n/commit/63548e6ead5c122732628b5feb1515f492d5e033)) +* **editor:** Increase connector snap radius ([#10757](https://github.com/n8n-io/n8n/issues/10757)) ([297b668](https://github.com/n8n-io/n8n/commit/297b668f32f9ecfc82c1205ea4e915408cab482e)) +* **editor:** Plus node button should not be visible on readonly mode ([#10692](https://github.com/n8n-io/n8n/issues/10692)) ([62cb189](https://github.com/n8n-io/n8n/commit/62cb189985035c447ad31c275337b3fb24089265)) +* **editor:** Prevent action's panel flickering while dragging a node ([#10739](https://github.com/n8n-io/n8n/issues/10739)) ([efa5573](https://github.com/n8n-io/n8n/commit/efa5573278a60d55d5b509aac48cc112c79334d2)) +* **editor:** Restrict when the collision avoidance algorithm is used ([#10755](https://github.com/n8n-io/n8n/issues/10755)) ([bf43d67](https://github.com/n8n-io/n8n/commit/bf43d673571b2fc18fe5d660171f0da165909dfc)) +* **editor:** Show docs link in credential modal when docs sidebar is hidden ([#10750](https://github.com/n8n-io/n8n/issues/10750)) ([87333cb](https://github.com/n8n-io/n8n/commit/87333cbefebe652256fa1d60ba7a4b946fdfe17d)) +* **Email Trigger (IMAP) Node:** Ensure connection close does not block deactivation ([#10689](https://github.com/n8n-io/n8n/issues/10689)) ([156eb72](https://github.com/n8n-io/n8n/commit/156eb72ebefa1d963ff46eff6652e2c947ef031b)) +* Fix the issue in Trigger Nodes where poll time was not loaded ([#10695](https://github.com/n8n-io/n8n/issues/10695)) ([1dea8f4](https://github.com/n8n-io/n8n/commit/1dea8f4c7da2a04434c274faf8e0a9a7a693f5a4)) +* **Gmail Trigger Node:** Change Gmail Trigger dedupe logic ([#10717](https://github.com/n8n-io/n8n/issues/10717)) ([9f3e03d](https://github.com/n8n-io/n8n/commit/9f3e03d728d8acda5ae4166c5837b00cb1311e96)) +* Google Contacts node warm up request, Google Calendar node events>getAll fields option ([#10700](https://github.com/n8n-io/n8n/issues/10700)) ([22c70d5](https://github.com/n8n-io/n8n/commit/22c70d50697023cf448a379d7778695abb718ce9)) +* **If Node:** Update copy for type conversion parameter ([#10769](https://github.com/n8n-io/n8n/issues/10769)) ([ee5fbc5](https://github.com/n8n-io/n8n/commit/ee5fbc543ce1d33a56cf118dbd048d6693a15875)) +* **n8n Form Trigger Node:** Do not rerun trigger when it has run data ([#10687](https://github.com/n8n-io/n8n/issues/10687)) ([3adbcab](https://github.com/n8n-io/n8n/commit/3adbcab27de34ea5a2c7a88b2ad0d80e3f6d4a0b)) +* **OpenAI Chat Model Node:** Prevent filtering of fine-tuned models in model selector ([#10662](https://github.com/n8n-io/n8n/issues/10662)) ([4e89912](https://github.com/n8n-io/n8n/commit/4e899125884bdd97c97446d90e89668688fe7573)) +* Prevent AI assistant session reset when workflow is saved ([#10707](https://github.com/n8n-io/n8n/issues/10707)) ([91d9be2](https://github.com/n8n-io/n8n/commit/91d9be20667c20599f64a24fa99386c78476d425)) +* Show a more user friendly error message if initial Db connection times out ([#10682](https://github.com/n8n-io/n8n/issues/10682)) ([4efcbc5](https://github.com/n8n-io/n8n/commit/4efcbc593685286837022e5600d81e67f3e0131c)) +* **Webflow Node:** Update scopes to include forms ([#10554](https://github.com/n8n-io/n8n/issues/10554)) ([d3861b3](https://github.com/n8n-io/n8n/commit/d3861b31ceef16f566c525c7651453a1b84ed2a4)) +* **YouTube Node:** Fix Date filters ([#10725](https://github.com/n8n-io/n8n/issues/10725)) ([21936c8](https://github.com/n8n-io/n8n/commit/21936c88a84b8c03a8d02391cb7112b0e4d9f1f9)) + + +### Features + +* **Code Tool Node:** Option to specify input schema ([#10693](https://github.com/n8n-io/n8n/issues/10693)) ([421aa71](https://github.com/n8n-io/n8n/commit/421aa712515d9beeae7c0201b173cb7324473f69)) +* **editor:** Add lint for $('Node').item in runOnceForAllItems mode ([#10743](https://github.com/n8n-io/n8n/issues/10743)) ([1b04be1](https://github.com/n8n-io/n8n/commit/1b04be1240ec29151e79162680907710c71c6488)) +* **editor:** Logs markdown block improvements ([#10681](https://github.com/n8n-io/n8n/issues/10681)) ([db6e832](https://github.com/n8n-io/n8n/commit/db6e8326c7119d90fa6a51f82099026f50587202)) +* Filter parameter: Improve loose type validation for booleans ([#10702](https://github.com/n8n-io/n8n/issues/10702)) ([e9b8d99](https://github.com/n8n-io/n8n/commit/e9b8d99084f0ea2063a1d691928025e534980b4e)) +* **Lemlist Node:** Add V2 to support more API operations ([#10615](https://github.com/n8n-io/n8n/issues/10615)) ([20b1cf2](https://github.com/n8n-io/n8n/commit/20b1cf2b7597c78e28f522945b8cbad2ee535cd7)) +* **OpenAI Node:** Add Max Tools Iteration parameter and prevent tool calling after execution is aborted ([#10735](https://github.com/n8n-io/n8n/issues/10735)) ([5c47a5f](https://github.com/n8n-io/n8n/commit/5c47a5f691d42dae84a9df8a32a5ea600d83f6dd)) + + +### Performance Improvements + +* **editor:** Fix WorkflowDetails excessive re-rendering ([#10767](https://github.com/n8n-io/n8n/issues/10767)) ([00013a2](https://github.com/n8n-io/n8n/commit/00013a2069fff5e5d9398c5921c90d34dc384299)) + + + +# [1.58.0](https://github.com/n8n-io/n8n/compare/n8n@1.57.0...n8n@1.58.0) (2024-09-05) + + +### Bug Fixes + +* **AI Agent Node:** Fix tools agent when using memory and Anthropic models ([#10513](https://github.com/n8n-io/n8n/issues/10513)) ([746e7b8](https://github.com/n8n-io/n8n/commit/746e7b89f7e9b99126fb69110773548dfe91b74f)) +* **API:** Update express-openapi-validator to resolve AIKIDO-2024-10229 ([#10612](https://github.com/n8n-io/n8n/issues/10612)) ([1dcb814](https://github.com/n8n-io/n8n/commit/1dcb814ced7cfbc80eddbb4bc03108341a9f27f5)) +* **core:** Declutter webhook insertion errors ([#10650](https://github.com/n8n-io/n8n/issues/10650)) ([36177b0](https://github.com/n8n-io/n8n/commit/36177b0943cf72bae3b0075453498dd1e41684d0)) +* **core:** Flush responses for ai streaming endpoints ([#10633](https://github.com/n8n-io/n8n/issues/10633)) ([6bb6a5c](https://github.com/n8n-io/n8n/commit/6bb6a5c6cd1da3503a1a2b35bcf4c685cd3f964f)) +* **core:** Tighten check for company size survey answer ([#10646](https://github.com/n8n-io/n8n/issues/10646)) ([e5aba60](https://github.com/n8n-io/n8n/commit/e5aba60afff93364d91f17c00ea18d38d9dbc970)) +* **editor:** Add confirmation toast when changing user role ([#10592](https://github.com/n8n-io/n8n/issues/10592)) ([95da4d4](https://github.com/n8n-io/n8n/commit/95da4d4797e800c04b2b17c23c941c785dd62393)) +* **editor:** Add pinned data only to manual executions in execution view ([#10605](https://github.com/n8n-io/n8n/issues/10605)) ([a12e9ed](https://github.com/n8n-io/n8n/commit/a12e9edac042957939c63f0a5c35572930632352)) +* **editor:** Add tooltips to workflow history button ([#10570](https://github.com/n8n-io/n8n/issues/10570)) ([4a125f5](https://github.com/n8n-io/n8n/commit/4a125f511c5537977652900b7712a2ad908140e7)) +* **editor:** Allow disabling SSO when config request fails ([#10635](https://github.com/n8n-io/n8n/issues/10635)) ([ce39933](https://github.com/n8n-io/n8n/commit/ce39933766fa18107f4082de0cba0b6702cbbbfa)) +* **editor:** Fix notification rendering HTML as text ([#10642](https://github.com/n8n-io/n8n/issues/10642)) ([5eba534](https://github.com/n8n-io/n8n/commit/5eba5343191665cd4639632ba303464176c279c4)) +* **editor:** Fix opening executions tab from a new, unsaved workflow ([#10652](https://github.com/n8n-io/n8n/issues/10652)) ([cd0891e](https://github.com/n8n-io/n8n/commit/cd0891e4f1cfdc90b2090958a39564ba99534627)) +* **Gmail Trigger Node:** Don't return date instances, but date strings instead ([#10582](https://github.com/n8n-io/n8n/issues/10582)) ([9e1dac0](https://github.com/n8n-io/n8n/commit/9e1dac04655a20c5c7b99552742312fd9237604b)) +* **HTTP Request Node:** Sanitize authorization headers ([#10607](https://github.com/n8n-io/n8n/issues/10607)) ([405c55a](https://github.com/n8n-io/n8n/commit/405c55a1f7cf34e7b6e46a86031ef9a41956ca78)) +* **Wait Node:** Append n8n attribution option ([#10585](https://github.com/n8n-io/n8n/issues/10585)) ([81f4322](https://github.com/n8n-io/n8n/commit/81f4322d456773281aec4b47447465bdffd311fe)) + + +### Features + +* **core:** Execution curation ([#10342](https://github.com/n8n-io/n8n/issues/10342)) ([022ddcb](https://github.com/n8n-io/n8n/commit/022ddcbef9f1ac1b89bcfd5f7759d67325b07392)) +* **core:** Implement wrapping of regular nodes as AI Tools ([#10641](https://github.com/n8n-io/n8n/issues/10641)) ([da44fe4](https://github.com/n8n-io/n8n/commit/da44fe4b8967055b7b1f849750e1fafa0ba67218)) +* **core:** Introduce DB health check ([#10661](https://github.com/n8n-io/n8n/issues/10661)) ([a8e80d0](https://github.com/n8n-io/n8n/commit/a8e80d0c4b7531fe32be1d4057656885359f42fc)) +* **core:** Make Postgres connection timeout configurable ([#10670](https://github.com/n8n-io/n8n/issues/10670)) ([8154031](https://github.com/n8n-io/n8n/commit/81540318b4c55f3a09c9776e23d2211abdbd36f7)) +* **core:** Switch to MJML for email templates ([#10518](https://github.com/n8n-io/n8n/issues/10518)) ([dbc10fe](https://github.com/n8n-io/n8n/commit/dbc10fe9f522f31eb06add6f3f6863ce24510547)) +* **editor:** Add A/B testing feature flag for credential docs modal ([#10664](https://github.com/n8n-io/n8n/issues/10664)) ([899b0a1](https://github.com/n8n-io/n8n/commit/899b0a19efc49c1c087f78bbb1a59d726a510965)) +* **editor:** Add AI Assistant support chat ([#10656](https://github.com/n8n-io/n8n/issues/10656)) ([3a80780](https://github.com/n8n-io/n8n/commit/3a8078068e5c0b01dfd34ff838fe1b30d604abc6)) +* **editor:** Implement new app layout ([#10548](https://github.com/n8n-io/n8n/issues/10548)) ([95a9cd2](https://github.com/n8n-io/n8n/commit/95a9cd2c739cf4f817eb8df6509a9112ac24a3b1)) +* **editor:** Make highlighted data pane floating ([#10638](https://github.com/n8n-io/n8n/issues/10638)) ([8b5c333](https://github.com/n8n-io/n8n/commit/8b5c333d3dca03ba51a5873b75451fbfafc5ae15)) +* More hints to nodes ([#10565](https://github.com/n8n-io/n8n/issues/10565)) ([66ddb4a](https://github.com/n8n-io/n8n/commit/66ddb4a6f367602c9aaad1bfb0cc6fac3facd15e)) +* **Postgres PGVector Store Node:** Add PGVector vector store node ([#10517](https://github.com/n8n-io/n8n/issues/10517)) ([650389d](https://github.com/n8n-io/n8n/commit/650389d90763a45c037e74a1a1193c3cbe103a16)) +* Reintroduce collaboration feature ([#10602](https://github.com/n8n-io/n8n/issues/10602)) ([2ea2bfe](https://github.com/n8n-io/n8n/commit/2ea2bfe762c02047e522f28dd97f197735b3fb46)) +* **Text Classifier Node:** Add output fixing parser ([#10667](https://github.com/n8n-io/n8n/issues/10667)) ([aa37c32](https://github.com/n8n-io/n8n/commit/aa37c32f266ffff93cd903888b1c15caa0468830)) + + + +# [1.57.0](https://github.com/n8n-io/n8n/compare/n8n@1.56.0...n8n@1.57.0) (2024-08-28) + + +### Bug Fixes + +* **AI Agent Node:** Allow AWS Bedrock Chat to be used with conversational agent ([#10489](https://github.com/n8n-io/n8n/issues/10489)) ([bdcc657](https://github.com/n8n-io/n8n/commit/bdcc657965af5f604aac1eaff7d937f69a08ce1c)) +* **core:** Make boolean config value parsing backward-compatible ([#10560](https://github.com/n8n-io/n8n/issues/10560)) ([70b410f](https://github.com/n8n-io/n8n/commit/70b410f4b00dd599fcd4249aa105098aa262da66)) +* **core:** Restore Redis cache key ([#10520](https://github.com/n8n-io/n8n/issues/10520)) ([873056a](https://github.com/n8n-io/n8n/commit/873056a92e52cc629d2873c960656d5f06d4728e)) +* **core:** Scheduler tasks should not trigger on follower instances ([#10507](https://github.com/n8n-io/n8n/issues/10507)) ([3428f28](https://github.com/n8n-io/n8n/commit/3428f28a732f79e067b3cb515cc59d835de246a6)) +* **core:** Stop explicit redis client disconnect on shutdown ([#10551](https://github.com/n8n-io/n8n/issues/10551)) ([f712812](https://github.com/n8n-io/n8n/commit/f71281221efb79d65d8d7610c292bc90cef13d7a)) +* **editor:** Ensure `Datatable` component renders `All` option ([#10525](https://github.com/n8n-io/n8n/issues/10525)) ([bc27beb](https://github.com/n8n-io/n8n/commit/bc27beb6629883003a8991d7e840ffaa066d41ac)) +* **editor:** Prevent Safari users from accessing the frontend over insecure contexts ([#10510](https://github.com/n8n-io/n8n/issues/10510)) ([a73b9a3](https://github.com/n8n-io/n8n/commit/a73b9a38d6c48e2f78593328e7d9933f2493dbb6)) +* **editor:** Scale output item selector input width with value ([#10555](https://github.com/n8n-io/n8n/issues/10555)) ([52c574d](https://github.com/n8n-io/n8n/commit/52c574d83f344f03b0e39984bbc3ac0402e50791)) +* **Google Sheets Trigger Node:** Show sheet name is too long error ([#10542](https://github.com/n8n-io/n8n/issues/10542)) ([4e15007](https://github.com/n8n-io/n8n/commit/4e1500757700ec984cdad8b9cfcd76ee00ae127e)) +* **Wait Node:** Prevent waiting until invalid date ([#10523](https://github.com/n8n-io/n8n/issues/10523)) ([c0e7620](https://github.com/n8n-io/n8n/commit/c0e7620036738f8d0b382d0d0610b981dcbc29e0)) + + +### Features + +* Add new credentials for the HTTP Request node ([#9833](https://github.com/n8n-io/n8n/issues/9833)) ([26f1af3](https://github.com/n8n-io/n8n/commit/26f1af397b2b25e3394fc2dae91a5c281bf33d66)) +* **AI Agent Node:** Add tutorial link to agent node ([#10493](https://github.com/n8n-io/n8n/issues/10493)) ([5c7cc36](https://github.com/n8n-io/n8n/commit/5c7cc36c23e58a47a1e71911e7303a1bd54f167e)) +* **core:** Expose queue metrics for Prometheus ([#10559](https://github.com/n8n-io/n8n/issues/10559)) ([008c510](https://github.com/n8n-io/n8n/commit/008c510b7623fefb8c60730c7eac54dd9bb2e3fc)) +* **editor:** Implement workflowSelector parameter type ([#10482](https://github.com/n8n-io/n8n/issues/10482)) ([84e54be](https://github.com/n8n-io/n8n/commit/84e54beac763f25399c9687f695f1e658e3ce434)) + + +### Performance Improvements + +* **core:** Make execution queries faster ([#9817](https://github.com/n8n-io/n8n/issues/9817)) ([dc7dc99](https://github.com/n8n-io/n8n/commit/dc7dc995d5e2ea8fbd0dcb54cfa8aa93ecb437c9)) + +### Other +* **Add user journey link to [n8n.io](https://n8n.io)** ([#10331](https://github.com/n8n-io/n8n/pull/10331)) + + +# [1.56.0](https://github.com/n8n-io/n8n/compare/n8n@1.55.0...n8n@1.56.0) (2024-08-21) + + +### Bug Fixes + +* Better errors in Switch, If and Filter nodes ([#10457](https://github.com/n8n-io/n8n/issues/10457)) ([aea82cb](https://github.com/n8n-io/n8n/commit/aea82cb74421d516919742127daf669808b57604)) +* **Calendly Trigger Node:** Fix issue with webhook url matching ([#10378](https://github.com/n8n-io/n8n/issues/10378)) ([09c3a8b](https://github.com/n8n-io/n8n/commit/09c3a8b36733a9634ef5948922d6aa7a19bbb592)) +* **core:** Fix payload property in `workflow-post-execute` event ([#10413](https://github.com/n8n-io/n8n/issues/10413)) ([d98e29e](https://github.com/n8n-io/n8n/commit/d98e29e3d53de87aec276260615fa60473a2692f)) +* **core:** Fix XSS validation and separate URL validation ([#10424](https://github.com/n8n-io/n8n/issues/10424)) ([91467ab](https://github.com/n8n-io/n8n/commit/91467ab325e4c71c20c522f3143246d270101626)) +* **core:** Replace `sanitize-html` with `xss` in XSS validator constraint ([#10479](https://github.com/n8n-io/n8n/issues/10479)) ([5dea51a](https://github.com/n8n-io/n8n/commit/5dea51aad7d9e7ffc676d16f4bbbdecce5876f0b)) +* **core:** Use class-validator with XSS check for survey answers ([#10490](https://github.com/n8n-io/n8n/issues/10490)) ([547a606](https://github.com/n8n-io/n8n/commit/547a60642ce9e54819d4e600c822d87dabd59b2e)) +* **core:** Use explicit types in configs to ensure valid decorator metadata ([#10433](https://github.com/n8n-io/n8n/issues/10433)) ([2043daa](https://github.com/n8n-io/n8n/commit/2043daa2570bc04b0b8d41f277901a8cc8a7b98f)) +* **editor:** Add workflow scopes when initializing workflow ([#10455](https://github.com/n8n-io/n8n/issues/10455)) ([b857c2c](https://github.com/n8n-io/n8n/commit/b857c2cda0a9e4386a540d5e1e741570d9453588)) +* **editor:** Buffer json chunks in stream response ([#10439](https://github.com/n8n-io/n8n/issues/10439)) ([37797f3](https://github.com/n8n-io/n8n/commit/37797f38d81b12d030ba85034baeb49192ea575c)) +* **editor:** Fix flaky mapping tests ([#10453](https://github.com/n8n-io/n8n/issues/10453)) ([fc6d413](https://github.com/n8n-io/n8n/commit/fc6d4138d58282f676b32f1a6011b1b6d0184bf2)) +* **editor:** Fix overflow in AI Assistant chat messages ([#10491](https://github.com/n8n-io/n8n/issues/10491)) ([4a6ca63](https://github.com/n8n-io/n8n/commit/4a6ca632100731f85875c639f2164bf1ef415009)) +* **editor:** Highlight matching type in filter component ([#10425](https://github.com/n8n-io/n8n/issues/10425)) ([6bca879](https://github.com/n8n-io/n8n/commit/6bca879d4ae30c7f9a35e8d6672de42cf93be727)) +* **editor:** Show item count in output panel schema view ([#10426](https://github.com/n8n-io/n8n/issues/10426)) ([4dee7cc](https://github.com/n8n-io/n8n/commit/4dee7cc36e5f7768d0b71095b194bf357c92e941)) +* **editor:** Truncate long data pill labels in schema view ([#10427](https://github.com/n8n-io/n8n/issues/10427)) ([1bf2f4f](https://github.com/n8n-io/n8n/commit/1bf2f4f6171d666391bb3a3a312468bc083446e3)) +* Filter component - improve errors ([#10456](https://github.com/n8n-io/n8n/issues/10456)) ([61ac0c7](https://github.com/n8n-io/n8n/commit/61ac0c77755210f570b887951fe6bbec1a323811)) +* **Google Sheets Node:** Better error when column to match on is empty ([#10442](https://github.com/n8n-io/n8n/issues/10442)) ([ce46bf5](https://github.com/n8n-io/n8n/commit/ce46bf516a86d9779f37dd75b0c680d26d88e15d)) +* **Google Sheets Node:** Update name and hint for useAppend option ([#10443](https://github.com/n8n-io/n8n/issues/10443)) ([c5a0c04](https://github.com/n8n-io/n8n/commit/c5a0c049eaf44419c690d151de42fb0c10bd406e)) +* **Google Sheets Node:** Update to returnAllMatches option ([#10440](https://github.com/n8n-io/n8n/issues/10440)) ([f7fb02e](https://github.com/n8n-io/n8n/commit/f7fb02e92a756781f8e35bbbfc25d71c12cb70af)) +* **Invoice Ninja Node:** Fix payment types ([#10462](https://github.com/n8n-io/n8n/issues/10462)) ([129245d](https://github.com/n8n-io/n8n/commit/129245da10be1d645f61e929e40b128bd7813f17)) +* **n8n Form Trigger Node:** Show basic authentication modal on wrong credentials ([#10423](https://github.com/n8n-io/n8n/issues/10423)) ([0dc3e99](https://github.com/n8n-io/n8n/commit/0dc3e99b26bec45e747d83f383cfe5169d89e6b7)) +* **OpenAI Node:** Throw node operations error in case of openAi client error ([#10448](https://github.com/n8n-io/n8n/issues/10448)) ([0d3ed46](https://github.com/n8n-io/n8n/commit/0d3ed461996bbad06015c455f133baab6506437f)) +* Project Viewer always seeing a connection error when testing credentials ([#10417](https://github.com/n8n-io/n8n/issues/10417)) ([613cdd2](https://github.com/n8n-io/n8n/commit/613cdd2ba2c0f224c4857a5fc3eea36dbd683049)) +* Remove unimplemented Postgres credentials options ([#10461](https://github.com/n8n-io/n8n/issues/10461)) ([17ac784](https://github.com/n8n-io/n8n/commit/17ac7844f29d819b91dfaf90b9fe386d98060c42)) +* Rename Assistant back ([#10481](https://github.com/n8n-io/n8n/issues/10481)) ([c410aed](https://github.com/n8n-io/n8n/commit/c410aed4c22182943dc80ede63acda00b7898e10)) +* Require mfa code to change email ([#10354](https://github.com/n8n-io/n8n/issues/10354)) ([39c8e50](https://github.com/n8n-io/n8n/commit/39c8e50ad0513649f5a8cef911b7d6cdd61c2372)) +* **Respond to Webhook Node:** Fix issue preventing the chat trigger from working ([#9886](https://github.com/n8n-io/n8n/issues/9886)) ([9d6ad88](https://github.com/n8n-io/n8n/commit/9d6ad88c14a88fd0dfcb4f9981e38d19cf5f3067)) +* Show input names when node has multiple inputs ([#10434](https://github.com/n8n-io/n8n/issues/10434)) ([973956c](https://github.com/n8n-io/n8n/commit/973956cc26c78c329ff6eb6934d4f0a24060c87c)) +* **Toggl Trigger Node:** Update API version ([#10207](https://github.com/n8n-io/n8n/issues/10207)) ([9bdb1d6](https://github.com/n8n-io/n8n/commit/9bdb1d6dca43fe491c5eb96f093b7eec4509eaff)) + + +### Features + +* **core:** Support bidirectional communication between specific mains and specific workers ([#10377](https://github.com/n8n-io/n8n/issues/10377)) ([d0fc9de](https://github.com/n8n-io/n8n/commit/d0fc9dee0e17211c1ed130b19286e9573c9ebfbd)) +* **Facebook Graph API Node:** Update node to support API v18 - v20 ([#10419](https://github.com/n8n-io/n8n/issues/10419)) ([e7ee10f](https://github.com/n8n-io/n8n/commit/e7ee10f243663d899d32e61bc6264b4df444e2af)) + + + +# [1.55.0](https://github.com/n8n-io/n8n/compare/n8n@1.54.0...n8n@1.55.0) (2024-08-14) + + +### Bug Fixes + +* Add better error handling for chat errors ([#10408](https://github.com/n8n-io/n8n/issues/10408)) ([f82b6e4](https://github.com/n8n-io/n8n/commit/f82b6e4ba9bf527b3a4c17872162d9ae124ead0d)) +* **AI Agent Node:** Fix issues with some tools not populating ([#10406](https://github.com/n8n-io/n8n/issues/10406)) ([51a1edd](https://github.com/n8n-io/n8n/commit/51a1eddbf00393f3881c340cf37cfcca59566c99)) +* **core:** Account for cancelling an execution with no workers available ([#10343](https://github.com/n8n-io/n8n/issues/10343)) ([b044e78](https://github.com/n8n-io/n8n/commit/b044e783e73a499dbd7532a5d489a782d3d021da)) +* **core:** Account for owner when filtering by project ID in `GET /workflows` in Public API ([#10379](https://github.com/n8n-io/n8n/issues/10379)) ([5ac65b3](https://github.com/n8n-io/n8n/commit/5ac65b36bcb1351c6233b951f064f60862f790a5)) +* **core:** Enforce shutdown timer and sequence on `SIGINT` for main ([#10346](https://github.com/n8n-io/n8n/issues/10346)) ([5255793](https://github.com/n8n-io/n8n/commit/5255793afee5653d8356b8e4d2e1009d5cf36164)) +* **core:** Filter out prototype and constructor lookups in expressions ([#10382](https://github.com/n8n-io/n8n/issues/10382)) ([8e7d29a](https://github.com/n8n-io/n8n/commit/8e7d29ad3c4872b1cc147dfcfe9a864ba916692f)) +* **core:** Fix duplicate Redis publisher ([#10392](https://github.com/n8n-io/n8n/issues/10392)) ([45813de](https://github.com/n8n-io/n8n/commit/45813debc963096f63cc0aabe82d9d9f853a39d7)) +* **core:** Fix worker shutdown errors when active executions ([#10353](https://github.com/n8n-io/n8n/issues/10353)) ([e071b73](https://github.com/n8n-io/n8n/commit/e071b73bab34edd4b3e6aef6497514acc504cdc6)) +* **core:** Prevent XSS in user update endpoints ([#10338](https://github.com/n8n-io/n8n/issues/10338)) ([7898498](https://github.com/n8n-io/n8n/commit/78984986a6b4add89df9743b94c113046f1d5ee8)) +* **core:** Prevent XSS via static cache dir ([#10339](https://github.com/n8n-io/n8n/issues/10339)) ([4f392b5](https://github.com/n8n-io/n8n/commit/4f392b5e3e0ee166e85a2e060b3ec7fcf145229b)) +* **core:** Rate limit MFA activation and verification endpoints ([#10330](https://github.com/n8n-io/n8n/issues/10330)) ([b6c47c0](https://github.com/n8n-io/n8n/commit/b6c47c0e3214878d42980d5c9535df52b3984b3c)) +* **editor:** Connect up new project viewer role to the FE ([#9913](https://github.com/n8n-io/n8n/issues/9913)) ([117e2d9](https://github.com/n8n-io/n8n/commit/117e2d968fcc535f32c583ac8f2dc8a84e8cd6bd)) +* **editor:** Enable credential sharing between all types of projects ([#10233](https://github.com/n8n-io/n8n/issues/10233)) ([1cf48cc](https://github.com/n8n-io/n8n/commit/1cf48cc3019c1cf27e2f3c9affd18426237e9064)) +* **editor:** Fix rendering of SVG icons in public chat on iOS ([#10381](https://github.com/n8n-io/n8n/issues/10381)) ([7ab3811](https://github.com/n8n-io/n8n/commit/7ab38114dbf3881afba39287a061446ec4bf0431)) +* **editor:** Fixing XSS vulnerability in toast messages ([#10329](https://github.com/n8n-io/n8n/issues/10329)) ([38bdd9f](https://github.com/n8n-io/n8n/commit/38bdd9f5d0d9ca06fab1a7e1a3e7a4a648a6a89a)) +* **editor:** Revert change that hid swagger docs in the ui ([#10350](https://github.com/n8n-io/n8n/issues/10350)) ([bae49d3](https://github.com/n8n-io/n8n/commit/bae49d3198d4bcc27e7996cd4f7be3132becc98e)) +* **n8n Form Trigger Node:** Fix issue preventing v1 node from working ([#10364](https://github.com/n8n-io/n8n/issues/10364)) ([9b647a9](https://github.com/n8n-io/n8n/commit/9b647a9837434e8b75e3ad754ff5136bb5ac760d)) +* Require mfa code for password change if its enabled ([#10341](https://github.com/n8n-io/n8n/issues/10341)) ([9d7caac](https://github.com/n8n-io/n8n/commit/9d7caacc699f10962783393925a980ec6f1ca975)) +* Require mfa code to disable mfa ([#10345](https://github.com/n8n-io/n8n/issues/10345)) ([3384f52](https://github.com/n8n-io/n8n/commit/3384f52a35b835ba1d8633dc94bab0ad6e7023b3)) + + +### Features + +* Add Ask assistant behind feature flag ([#9995](https://github.com/n8n-io/n8n/issues/9995)) ([5ed2a77](https://github.com/n8n-io/n8n/commit/5ed2a77740db1f02b27c571f4dfdfa206ebdb19c)) +* **AI Transform Node:** New node ([#10405](https://github.com/n8n-io/n8n/issues/10405)) ([4d222ac](https://github.com/n8n-io/n8n/commit/4d222ac19d943b69fd9f87abe5e5c5f5141eed8d)) +* **AI Transform Node:** New node ([#9990](https://github.com/n8n-io/n8n/issues/9990)) ([0de9d56](https://github.com/n8n-io/n8n/commit/0de9d56619ed1c055407353046b8a9ebe78da527)) +* **core:** Allow overriding npm registry for community packages ([#10325](https://github.com/n8n-io/n8n/issues/10325)) ([33a2703](https://github.com/n8n-io/n8n/commit/33a2703429d9eaa41f72d2e7d2da5be60b6c620f)) +* **editor:** Add schema view to expression modal ([#9976](https://github.com/n8n-io/n8n/issues/9976)) ([71b6c67](https://github.com/n8n-io/n8n/commit/71b6c671797024d7b516352fa9b7ecda101ce3b2)) +* **MySQL Node:** Return decimal types as numbers ([#10313](https://github.com/n8n-io/n8n/issues/10313)) ([f744d7c](https://github.com/n8n-io/n8n/commit/f744d7c100be68669d9a3efd0033dd371a3cfaf7)) +* **Okta Node:** Add Okta Node ([#10278](https://github.com/n8n-io/n8n/issues/10278)) ([5cac0f3](https://github.com/n8n-io/n8n/commit/5cac0f339d649cfe5857d33738210cbc1599370b)) + + + +# [1.54.0](https://github.com/n8n-io/n8n/compare/n8n@1.53.0...n8n@1.54.0) (2024-08-07) + + +### Bug Fixes + +* **core:** Ensure OAuth token data is not stubbed in source control ([#10302](https://github.com/n8n-io/n8n/issues/10302)) ([98115e9](https://github.com/n8n-io/n8n/commit/98115e95df8289a8ec400a570a7f256382f8e286)) +* **core:** Fix expressions in webhook nodes(Form, Webhook) to access previous node's data ([#10247](https://github.com/n8n-io/n8n/issues/10247)) ([88a1701](https://github.com/n8n-io/n8n/commit/88a170176a3447e7f847e9cf145aeb867b1c5fcf)) +* **core:** Fix user telemetry bugs ([#10293](https://github.com/n8n-io/n8n/issues/10293)) ([42a0b59](https://github.com/n8n-io/n8n/commit/42a0b594d6ea2527c55a2aa9976c904cf70ecf92)) +* **core:** Make execution and its data creation atomic ([#10276](https://github.com/n8n-io/n8n/issues/10276)) ([ae50bb9](https://github.com/n8n-io/n8n/commit/ae50bb95a8e5bf1cdbf9483da54b84094b82e260)) +* **core:** Make OAuth1/OAuth2 callback not require auth ([#10263](https://github.com/n8n-io/n8n/issues/10263)) ([a8e2774](https://github.com/n8n-io/n8n/commit/a8e2774f5382e202556b5506c7788265786aa973)) +* **core:** Revert transactions until we remove the legacy sqlite driver ([#10299](https://github.com/n8n-io/n8n/issues/10299)) ([1eba7c3](https://github.com/n8n-io/n8n/commit/1eba7c3c763ac5b6b28c1c6fc43fc8c215249292)) +* **core:** Surface enterprise trial error message ([#10267](https://github.com/n8n-io/n8n/issues/10267)) ([432ac1d](https://github.com/n8n-io/n8n/commit/432ac1da59e173ce4c0f2abbc416743d9953ba70)) +* **core:** Upgrade tournament to address some XSS vulnerabilities ([#10277](https://github.com/n8n-io/n8n/issues/10277)) ([43ae159](https://github.com/n8n-io/n8n/commit/43ae159ea40c574f8e41bdfd221ab2bf3268eee7)) +* **core:** VM2 sandbox should not throw on `new Promise` ([#10298](https://github.com/n8n-io/n8n/issues/10298)) ([7e95f9e](https://github.com/n8n-io/n8n/commit/7e95f9e2e40a99871f1b6abcdacb39ac5f857332)) +* **core:** Webhook and form baseUrl missing ([#10290](https://github.com/n8n-io/n8n/issues/10290)) ([8131d66](https://github.com/n8n-io/n8n/commit/8131d66f8ca1b1da00597a12859ee4372148a0c9)) +* **editor:** Enable moving resources only if team projects are available by the license ([#10271](https://github.com/n8n-io/n8n/issues/10271)) ([42ba884](https://github.com/n8n-io/n8n/commit/42ba8841c401126c77158a53dc8fcbb45dfce8fd)) +* **editor:** Fix execution retry button ([#10275](https://github.com/n8n-io/n8n/issues/10275)) ([55f2ffe](https://github.com/n8n-io/n8n/commit/55f2ffe256c91a028cee95c3bbb37a093a1c0f81)) +* **editor:** Update design system Avatar component to show initials also when only firstName or lastName is given ([#10308](https://github.com/n8n-io/n8n/issues/10308)) ([46bbf09](https://github.com/n8n-io/n8n/commit/46bbf09beacad12472d91786b91d845fe2afb26d)) +* **editor:** Update tags filter/editor to not show non existing tag as a selectable option ([#10297](https://github.com/n8n-io/n8n/issues/10297)) ([557a76e](https://github.com/n8n-io/n8n/commit/557a76ec2326de72fb7a8b46fc4353f8fd9b591d)) +* **Invoice Ninja Node:** Fix payment types ([#10196](https://github.com/n8n-io/n8n/issues/10196)) ([c5acbb7](https://github.com/n8n-io/n8n/commit/c5acbb7ec0d24ec9b30c221fa3b2fb615fb9ec7f)) +* Loop node no input data shown ([#10224](https://github.com/n8n-io/n8n/issues/10224)) ([c8ee852](https://github.com/n8n-io/n8n/commit/c8ee852159207be0cfe2c3e0ee8e7b29d838aa35)) + + +### Features + +* **core:** Allow filtering executions and users by project in Public API ([#10250](https://github.com/n8n-io/n8n/issues/10250)) ([7056e50](https://github.com/n8n-io/n8n/commit/7056e50b006bda665f64ce6234c5c1967891c415)) +* **core:** Allow transferring credentials in Public API ([#10259](https://github.com/n8n-io/n8n/issues/10259)) ([07d7b24](https://github.com/n8n-io/n8n/commit/07d7b247f02a9d7185beca7817deb779a3d665dd)) +* **core:** Show sub-node error on the logs pane. Open logs pane on sub-node error ([#10248](https://github.com/n8n-io/n8n/issues/10248)) ([57d1c9a](https://github.com/n8n-io/n8n/commit/57d1c9a99e97308f2f1b8ae05ac3861a835e8e5a)) +* **core:** Support community packages in scaling-mode ([#10228](https://github.com/n8n-io/n8n/issues/10228)) ([88086a4](https://github.com/n8n-io/n8n/commit/88086a41ff5b804b35aa9d9503dc2d48836fe4ec)) +* **core:** Support create, delete, edit role for users in Public API ([#10279](https://github.com/n8n-io/n8n/issues/10279)) ([84efbd9](https://github.com/n8n-io/n8n/commit/84efbd9b9c51f536b21a4f969ab607d277bef692)) +* **core:** Support create, read, update, delete projects in Public API ([#10269](https://github.com/n8n-io/n8n/issues/10269)) ([489ce10](https://github.com/n8n-io/n8n/commit/489ce100634c3af678fb300e9a39d273042542e6)) +* **editor:** Auto-add LLM chain for new LLM nodes on empty canvas ([#10245](https://github.com/n8n-io/n8n/issues/10245)) ([06419d9](https://github.com/n8n-io/n8n/commit/06419d9483ae916e79aace6d8c17e265b419b15d)) +* **Elasticsearch Node:** Add bulk operations for Elasticsearch ([#9940](https://github.com/n8n-io/n8n/issues/9940)) ([bf8f848](https://github.com/n8n-io/n8n/commit/bf8f848645dfd31527713a55bd1fc93865327017)) +* **Lemlist Trigger Node:** Update Trigger events ([#10311](https://github.com/n8n-io/n8n/issues/10311)) ([15f10ec](https://github.com/n8n-io/n8n/commit/15f10ec325cb5eda0f952bed3a5f171dd91bc639)) +* **MongoDB Node:** Add projection to query options on Find ([#9972](https://github.com/n8n-io/n8n/issues/9972)) ([0a84e0d](https://github.com/n8n-io/n8n/commit/0a84e0d8b047669f5cf023c21383d01c929c5b4f)) +* **Postgres Chat Memory, Redis Chat Memory, Xata:** Add support for context window length ([#10203](https://github.com/n8n-io/n8n/issues/10203)) ([e3edeaa](https://github.com/n8n-io/n8n/commit/e3edeaa03526f041d15d1099ea91869e38a0decc)) +* **Stripe Trigger Node:** Add Stripe webhook descriptions based on the workflow ID and name ([#9956](https://github.com/n8n-io/n8n/issues/9956)) ([3433465](https://github.com/n8n-io/n8n/commit/34334651e0e6874736a437a894176bed4590e5a7)) +* **Webflow Node:** Update to use the v2 API ([#9996](https://github.com/n8n-io/n8n/issues/9996)) ([6d8323f](https://github.com/n8n-io/n8n/commit/6d8323fadea8af04483eb1a873df0cf3ccc2a891)) + + + +# [1.53.0](https://github.com/n8n-io/n8n/compare/n8n@1.52.0...n8n@1.53.0) (2024-07-31) + + +### Bug Fixes + +* Better error message when calling data transformation functions on a null value ([#10210](https://github.com/n8n-io/n8n/issues/10210)) ([1718125](https://github.com/n8n-io/n8n/commit/1718125c6d8589cf24dc8d34f6808dd6f1802691)) +* **core:** Fix missing successful items on continueErrorOutput with multiple outputs ([#10218](https://github.com/n8n-io/n8n/issues/10218)) ([1a7713e](https://github.com/n8n-io/n8n/commit/1a7713ef263680da43f08b6c8a15aee7a0341493)) +* **core:** Flush instance stopped event immediately ([#10238](https://github.com/n8n-io/n8n/issues/10238)) ([d6770b5](https://github.com/n8n-io/n8n/commit/d6770b5fcaec6438d677b918aaeb1669ad7424c2)) +* **core:** Restore log event `n8n.workflow.failed` ([#10253](https://github.com/n8n-io/n8n/issues/10253)) ([3e96b29](https://github.com/n8n-io/n8n/commit/3e96b293329525c9d4b2fcef87b3803e458c8e7f)) +* **core:** Upgrade @n8n/vm2 to address CVE‑2023‑37466 ([#10265](https://github.com/n8n-io/n8n/issues/10265)) ([2a09a03](https://github.com/n8n-io/n8n/commit/2a09a036d2e916acff7ee50904f1d011a93758e1)) +* **editor:** Defer `User saved credentials` telemetry event for OAuth credentials ([#10215](https://github.com/n8n-io/n8n/issues/10215)) ([40a5226](https://github.com/n8n-io/n8n/commit/40a5226e24448a4428143e69d80ebc78238365a1)) +* **editor:** Fix custom API call notice ([#10227](https://github.com/n8n-io/n8n/issues/10227)) ([5b47c8b](https://github.com/n8n-io/n8n/commit/5b47c8b57b25528cd2d6f97bc6d98707d47f35bc)) +* **editor:** Fix issue with existing credential not opening in HTTP agent tool ([#10167](https://github.com/n8n-io/n8n/issues/10167)) ([906b4c3](https://github.com/n8n-io/n8n/commit/906b4c3c7b2919111cf23eaa12b3c4d507969179)) +* **editor:** Fix parameter input glitch when there was an error loading remote options ([#10209](https://github.com/n8n-io/n8n/issues/10209)) ([c0e3743](https://github.com/n8n-io/n8n/commit/c0e37439a87105a0e66c8ebced42c06dab30dc5e)) +* **editor:** Fix workflow execution list scrolling after filter change ([#10226](https://github.com/n8n-io/n8n/issues/10226)) ([7e64358](https://github.com/n8n-io/n8n/commit/7e643589c67adc0218216ec4b89a95f0edfedbee)) +* **Google BigQuery Node:** Send timeoutMs in query, pagination support ([#10205](https://github.com/n8n-io/n8n/issues/10205)) ([f5722e8](https://github.com/n8n-io/n8n/commit/f5722e8823ccd2bc2b5f43ba3c849797d5690a93)) +* **Google Sheets Node:** Add column names row if sheet is empty ([#10200](https://github.com/n8n-io/n8n/issues/10200)) ([82eba9f](https://github.com/n8n-io/n8n/commit/82eba9fc5ff49b8e2a9db93c10b253fb67a8c644)) +* **Google Sheets Node:** Do not insert row_number as a new column, do not checkForSchemaChanges in update operation ([#10201](https://github.com/n8n-io/n8n/issues/10201)) ([5136d10](https://github.com/n8n-io/n8n/commit/5136d10ca3492f92af67d4a1d4abc774419580cc)) +* **Google Sheets Node:** Fix Google Sheet URL regex ([#10195](https://github.com/n8n-io/n8n/issues/10195)) ([e6fd996](https://github.com/n8n-io/n8n/commit/e6fd996973d4f40facf0ebf1eea3cc26acd0603d)) +* **HTTP Request Node:** Resolve max pages expression ([#10192](https://github.com/n8n-io/n8n/issues/10192)) ([bfc8e1b](https://github.com/n8n-io/n8n/commit/bfc8e1b56f7714e1f52aae747d58d686b86e60f0)) +* **LinkedIn Node:** Fix issue with some characters cutting off posts early ([#10185](https://github.com/n8n-io/n8n/issues/10185)) ([361b5e7](https://github.com/n8n-io/n8n/commit/361b5e7c37ba49b68dcf5b8122621aad4d8d96e0)) +* **Postgres Node:** Expressions in query parameters for Postgres executeQuery operation ([#10217](https://github.com/n8n-io/n8n/issues/10217)) ([519fc4d](https://github.com/n8n-io/n8n/commit/519fc4d75325a80b84cc4dcacf52d6f4c02e3a44)) +* **Postgres Node:** Option to treat query parameters enclosed in single quotas as text ([#10214](https://github.com/n8n-io/n8n/issues/10214)) ([00ec253](https://github.com/n8n-io/n8n/commit/00ec2533374d3def465efee718592fc4001d5602)) +* **Read/Write Files from Disk Node:** Notice update in file selector, replace backslashes with forward slashes if windows path ([#10186](https://github.com/n8n-io/n8n/issues/10186)) ([3eac673](https://github.com/n8n-io/n8n/commit/3eac673b17986c5c74bd2adb5ad589ba0ca55319)) +* **Text Classifier Node:** Use proper documentation URL and respect continueOnFail ([#10216](https://github.com/n8n-io/n8n/issues/10216)) ([452f52c](https://github.com/n8n-io/n8n/commit/452f52c124017e002e86c547ba42b1633b14beed)) +* **Trello Node:** Use body for POST requests ([#10189](https://github.com/n8n-io/n8n/issues/10189)) ([7775d50](https://github.com/n8n-io/n8n/commit/7775d5059b7f69d9af22e7ad7d12c6cf9092a4e5)) +* **Wait Node:** Authentication fix ([#10236](https://github.com/n8n-io/n8n/issues/10236)) ([f87854f](https://github.com/n8n-io/n8n/commit/f87854f8db360b7b870583753fcfb4af95adab8c)) + + +### Features + +* **Calendly Trigger Node:** Add OAuth Credentials Support ([#10251](https://github.com/n8n-io/n8n/issues/10251)) ([326c983](https://github.com/n8n-io/n8n/commit/326c983915a2c382e32398358e7dcadd022c0b77)) +* **core:** Allow filtering workflows by project and transferring workflows in Public API ([#10231](https://github.com/n8n-io/n8n/issues/10231)) ([d719899](https://github.com/n8n-io/n8n/commit/d719899223907b20a17883a35e4ef637a3453532)) +* **editor:** Show new executions as `Queued` in the UI, until they actually start ([#10204](https://github.com/n8n-io/n8n/issues/10204)) ([44728d7](https://github.com/n8n-io/n8n/commit/44728d72423f5549dda09589f4a618ebd80899cb)) +* **HTTP Request Node:** Add option to disable lowercase headers ([#10154](https://github.com/n8n-io/n8n/issues/10154)) ([5aba69b](https://github.com/n8n-io/n8n/commit/5aba69bcf4d232d9860f3cd9fe57cb8839a2f96f)) +* **Information Extractor Node:** Add new simplified AI-node for information extraction ([#10149](https://github.com/n8n-io/n8n/issues/10149)) ([3d235b0](https://github.com/n8n-io/n8n/commit/3d235b0b2df756df35ac60e3dcd87ad183a07167)) +* Introduce Google Cloud Platform as external secrets provider ([#10146](https://github.com/n8n-io/n8n/issues/10146)) ([3ccb9df](https://github.com/n8n-io/n8n/commit/3ccb9df2f902e46f8cbb9c46c0727f29d752a773)) +* **n8n Form Trigger Node:** Improvements ([#10092](https://github.com/n8n-io/n8n/issues/10092)) ([711b667](https://github.com/n8n-io/n8n/commit/711b667ebefe55740e5eb39f1f0f24ceee10e7b0)) +* Recovery option for jsonParse helper ([#10182](https://github.com/n8n-io/n8n/issues/10182)) ([d165b33](https://github.com/n8n-io/n8n/commit/d165b33ceac4d24d0fc290bffe63b5f551204e38)) +* **Sentiment Analysis Node:** Implement Sentiment Analysis node ([#10184](https://github.com/n8n-io/n8n/issues/10184)) ([8ef0a0c](https://github.com/n8n-io/n8n/commit/8ef0a0c58ac2a84aad649ccbe72aa907d005cc44)) +* **Shopify Node:** Update Shopify API version ([#10155](https://github.com/n8n-io/n8n/issues/10155)) ([e2ee915](https://github.com/n8n-io/n8n/commit/e2ee91569a382bfbf787cf45204c72c821a860a0)) +* Support create, read, delete variables in Public API ([#10241](https://github.com/n8n-io/n8n/issues/10241)) ([af695eb](https://github.com/n8n-io/n8n/commit/af695ebf934526d926ea87fe87df61aa73d70979)) + + + +# [1.52.0](https://github.com/n8n-io/n8n/compare/n8n@1.51.0...n8n@1.52.0) (2024-07-24) + + +### Bug Fixes + +* **core:** Fix handling of common events for relays ([#10135](https://github.com/n8n-io/n8n/issues/10135)) ([d2a3a4a](https://github.com/n8n-io/n8n/commit/d2a3a4a080cdcc04f50fa33fd81d361efce3f709)) +* **core:** Fix SSH Tunnels when using private key ([#10148](https://github.com/n8n-io/n8n/issues/10148)) ([a96db34](https://github.com/n8n-io/n8n/commit/a96db344e54658787426d967dfa299c7a6dd14e7)) +* **core:** Metadata inserts using existing IDs and failing with postgres ([#10108](https://github.com/n8n-io/n8n/issues/10108)) ([4547a49](https://github.com/n8n-io/n8n/commit/4547a49db15a20f5f147e859b6c2c01f60f9565c)) +* **core:** Respect prefix for all Prometheus metrics ([#10130](https://github.com/n8n-io/n8n/issues/10130)) ([b1816db](https://github.com/n8n-io/n8n/commit/b1816db449ed451443f353b69166b7ca700ba51e)) +* **core:** Support branches containing slashes in source control ([#10109](https://github.com/n8n-io/n8n/issues/10109)) ([03a833d](https://github.com/n8n-io/n8n/commit/03a833db51a25dda6cf0d8494f06c6704f6f3c7f)) +* **core:** Support execution recovery when saving execution progress ([#10104](https://github.com/n8n-io/n8n/issues/10104)) ([d887c82](https://github.com/n8n-io/n8n/commit/d887c82d808a79babc726fc789cc014194ae2ac6)) +* **editor:** Allow `$secrets` to resolve on credentials ([#10093](https://github.com/n8n-io/n8n/issues/10093)) ([bf57f38](https://github.com/n8n-io/n8n/commit/bf57f38d1c417ba8b20144934c8e97a75c1f51cc)) +* **editor:** Fix saving and connecting on LDAP setup form ([#10163](https://github.com/n8n-io/n8n/issues/10163)) ([30784fb](https://github.com/n8n-io/n8n/commit/30784fb76cec790a782fae40973a956a8d81c0b2)) +* **editor:** Fix updating/uninstalling community nodes ([#10138](https://github.com/n8n-io/n8n/issues/10138)) ([de015ff](https://github.com/n8n-io/n8n/commit/de015ff2978a5ee3345449626025c6d0793b6f5a)) +* **editor:** Remove "move" action from workflow and credential on community plan ([#10057](https://github.com/n8n-io/n8n/issues/10057)) ([5a9a271](https://github.com/n8n-io/n8n/commit/5a9a2713b499cc7dcddb500a54e24bbf7145b504)) +* **editor:** UX Improvements to RBAC feature set ([#9683](https://github.com/n8n-io/n8n/issues/9683)) ([028a8a2](https://github.com/n8n-io/n8n/commit/028a8a2c754e4f6d6a5f0918a656eb4554eb869f)) +* **HelpScout Node:** Fix issue with thread types not working correctly ([#10084](https://github.com/n8n-io/n8n/issues/10084)) ([68d3beb](https://github.com/n8n-io/n8n/commit/68d3bebfeebea9054bbbaebac31c2e3fa34336bb)) +* **MQTT Node:** Node hangs forever on failed connection ([#10048](https://github.com/n8n-io/n8n/issues/10048)) ([76c2906](https://github.com/n8n-io/n8n/commit/76c290655de7d4e626725a05fd991a0858cca0d7)) +* **n8n Form Trigger Node:** Execution from canvas ([#10132](https://github.com/n8n-io/n8n/issues/10132)) ([b07c5e2](https://github.com/n8n-io/n8n/commit/b07c5e201165165c4e91ddd19b6fa79703ba2a9c)) +* **Notion Node:** Fix issue preventing some database page urls from working ([#10070](https://github.com/n8n-io/n8n/issues/10070)) ([7848c19](https://github.com/n8n-io/n8n/commit/7848c19f543d5f5f62b89cc5644639c6afdb8fa6)) +* **RabbitMQ Node:** Fix issue with arguments not being sent ([#9397](https://github.com/n8n-io/n8n/issues/9397)) ([1c666e6](https://github.com/n8n-io/n8n/commit/1c666e6e7c2be2e2d0dcc528870fddfa8b02318b)) + + +### Features + +* **editor:** Split Tools and Models into sub-sections ([#10159](https://github.com/n8n-io/n8n/issues/10159)) ([3846eb9](https://github.com/n8n-io/n8n/commit/3846eb967afd77dba6f037e8185ed94494454d5a)) +* Introduce Azure Key Vault as external secrets provider ([#10054](https://github.com/n8n-io/n8n/issues/10054)) ([1b6c2d3](https://github.com/n8n-io/n8n/commit/1b6c2d3a37a78ed07ada93be2a57e4b7f7149e58)) +* **Pinecone Vector Store Node, Supabase Vector Store Node:** Add update operation to vector store nodes ([#10060](https://github.com/n8n-io/n8n/issues/10060)) ([7e1eeb4](https://github.com/n8n-io/n8n/commit/7e1eeb4c31d3f25ec31baa7390b11a7e3280ce01)) +* **Send Email Node:** Smtp credential improvements ([#10147](https://github.com/n8n-io/n8n/issues/10147)) ([dc13ceb](https://github.com/n8n-io/n8n/commit/dc13ceb41649eab42ef073247f3b52c040826e98)) + + + +# [1.51.0](https://github.com/n8n-io/n8n/compare/n8n@1.50.0...n8n@1.51.0) (2024-07-17) + + +### Bug Fixes + +* **AMQP Sender Node:** Node hangs forever on disconnect ([#10026](https://github.com/n8n-io/n8n/issues/10026)) ([27410ab](https://github.com/n8n-io/n8n/commit/27410ab2af87573045f38e14e7e20bedd3b0365d)) +* **AMQP Trigger Node:** Manual execution updated error reduced wait time ([#10035](https://github.com/n8n-io/n8n/issues/10035)) ([f78f4ea](https://github.com/n8n-io/n8n/commit/f78f4ea3492560bc7056023fd0276990f3ac9b00)) +* **AWS Comprehend Node:** Add paired item support ([#10015](https://github.com/n8n-io/n8n/issues/10015)) ([470d496](https://github.com/n8n-io/n8n/commit/470d4966c67a3e4155d59e6fadab467b73134ec4)) +* **core:** Ensure executions cannot resume if already running ([#10014](https://github.com/n8n-io/n8n/issues/10014)) ([d651be4](https://github.com/n8n-io/n8n/commit/d651be4e01a869a6f7d70e691e0f5e244f59490e)) +* **core:** Redact `csrfSecret` when returning oauth credentials to the frontend ([#10075](https://github.com/n8n-io/n8n/issues/10075)) ([48f047e](https://github.com/n8n-io/n8n/commit/48f047ee2ecbfbd364151816df5fc21e09ca72a6)) +* **core:** Stopping an execution should reject any response promises ([#9992](https://github.com/n8n-io/n8n/issues/9992)) ([36b314d](https://github.com/n8n-io/n8n/commit/36b314d0311ef84f275efbc20997c6a77db81b31)) +* **editor:** Ensure all static assets are accessible from the server ([#10062](https://github.com/n8n-io/n8n/issues/10062)) ([3bde845](https://github.com/n8n-io/n8n/commit/3bde8453efa9a4d14404c63bdc061c87843d49d2)) +* **editor:** Handle disabled nodes in schema view ([#10052](https://github.com/n8n-io/n8n/issues/10052)) ([ab5688c](https://github.com/n8n-io/n8n/commit/ab5688c582c05afd7d3e0967eda0f5dc73d6d3ed)) +* **editor:** Make schema view use the correct output ([#10016](https://github.com/n8n-io/n8n/issues/10016)) ([c29664d](https://github.com/n8n-io/n8n/commit/c29664d68851ec33e4d810fa24aba72bb6cecc86)) +* **editor:** Provide autocomplete for nodes, even when intermediate node has not run ([#10036](https://github.com/n8n-io/n8n/issues/10036)) ([46d6edc](https://github.com/n8n-io/n8n/commit/46d6edc2a4edd49ae58c0c60977809554e07f4ee)) +* **editor:** Remove push event listeners when migrating away from the canvas ([#10063](https://github.com/n8n-io/n8n/issues/10063)) ([0d12f0a](https://github.com/n8n-io/n8n/commit/0d12f0a6b36aaaae5e1f9fab8ad73feeba9ec5ed)) +* **editor:** Use selected input item for autocomplete ([#10019](https://github.com/n8n-io/n8n/issues/10019)) ([1d2b403](https://github.com/n8n-io/n8n/commit/1d2b403644278fa6158272edc4295d4565554e37)) +* **Email Trigger (IMAP) Node:** Reconnect not working correctly ([#10064](https://github.com/n8n-io/n8n/issues/10064)) ([68d5d7e](https://github.com/n8n-io/n8n/commit/68d5d7e2e90ede5d021a12304dd665247dde5243)) +* Filter component - array contains comparison not correct when ignore case option set to true ([#10012](https://github.com/n8n-io/n8n/issues/10012)) ([4a3b97c](https://github.com/n8n-io/n8n/commit/4a3b97cede531adbf81274c1ec2ce4ee400cb48e)) +* **GitHub Node:** File Create operation prevent duplicated base64 encoding ([#10040](https://github.com/n8n-io/n8n/issues/10040)) ([9bcc926](https://github.com/n8n-io/n8n/commit/9bcc926a91d7afab0c2ef6eb57e818ef79e3a8f7)) +* **HTTP Request Node:** Respect the original encoding of the incoming response ([#9869](https://github.com/n8n-io/n8n/issues/9869)) ([2d19aef](https://github.com/n8n-io/n8n/commit/2d19aef54083d97e94e50a1ee58e8525bbf28548)) +* HTTP Request tool - allow hyphens in placeholders ([#10037](https://github.com/n8n-io/n8n/issues/10037)) ([8cd9370](https://github.com/n8n-io/n8n/commit/8cd93704bee116eceb0e3bd5fa849c4b314454ec)) +* HTTP Request tool - do not error on missing headers ([#10044](https://github.com/n8n-io/n8n/issues/10044)) ([04b62e0](https://github.com/n8n-io/n8n/commit/04b62e0398eafd923d5f27a3e1c71b925ddb8817)) +* **HubSpot Node:** Migrate from v2 owners api ([#10013](https://github.com/n8n-io/n8n/issues/10013)) ([56dd491](https://github.com/n8n-io/n8n/commit/56dd491bcaeab1d11d7874f190eaf20d2e315ca1)) +* Number input defaults to 0 not allowing to have arbitrary precision ([#10021](https://github.com/n8n-io/n8n/issues/10021)) ([e4e66ab](https://github.com/n8n-io/n8n/commit/e4e66ab7da5651fede8b3065419ffb393a2fd16d)) +* **OpenAI Chat Model Node:** Respect baseURL override for /models ([#10076](https://github.com/n8n-io/n8n/issues/10076)) ([e5dda57](https://github.com/n8n-io/n8n/commit/e5dda5731dfbb50f5aaf2b152f9c5bc89b1d80a6)) +* **Telegram Trigger Node:** Fix issue with videos not being downloaded ([#10007](https://github.com/n8n-io/n8n/issues/10007)) ([e84ab35](https://github.com/n8n-io/n8n/commit/e84ab35c4ab0ec47bdbd4343e58c62bbb70f3ec9)) +* **Webhook Node:** Binary property option name and description update ([#10043](https://github.com/n8n-io/n8n/issues/10043)) ([9302e33](https://github.com/n8n-io/n8n/commit/9302e33d558564bb5ba172eaeb8c300693b87286)) + + +### Features + +* **Asana Node:** Add support for project privacy settings ([#10027](https://github.com/n8n-io/n8n/issues/10027)) ([429481c](https://github.com/n8n-io/n8n/commit/429481c5c4b7f448739a561596873038185ba467)) +* Better error when calling expression function on input that is undefined or null ([#10009](https://github.com/n8n-io/n8n/issues/10009)) ([519e57b](https://github.com/n8n-io/n8n/commit/519e57bda5115149357fb2b1c2270e481ea09e38)) +* **editor:** Make expression autocomplete search case-insensitive ([#10017](https://github.com/n8n-io/n8n/issues/10017)) ([cde6fe9](https://github.com/n8n-io/n8n/commit/cde6fe90e5c8a9c5983e27f0d82599425fba915b)) +* **editor:** Tweak node creator search logic for AI sub-nodes ([#10025](https://github.com/n8n-io/n8n/issues/10025)) ([7db1656](https://github.com/n8n-io/n8n/commit/7db16561dc890849e2d5742bb73f9d5b8e79e37d)) +* **Google Vertex Chat Model Node:** Add support for Google Vertex AI Chat models ([#9970](https://github.com/n8n-io/n8n/issues/9970)) ([071130a](https://github.com/n8n-io/n8n/commit/071130a2dc0b450eb6ce6d39fe28cfeefd05633c)) +* **Postgres Chat Memory Node:** Implement Postgres Chat Memory node ([#10071](https://github.com/n8n-io/n8n/issues/10071)) ([9cbbb63](https://github.com/n8n-io/n8n/commit/9cbbb6335df0d36f66f22c18041d12f14dc59b32)) +* **Text Classifier Node:** Add Text Classifier Node ([#9997](https://github.com/n8n-io/n8n/issues/9997)) ([28ca7d6](https://github.com/n8n-io/n8n/commit/28ca7d6a2dd818c8795acda6ddf7329b8621d9de)) + + + +# [1.50.0](https://github.com/n8n-io/n8n/compare/n8n@1.49.0...n8n@1.50.0) (2024-07-10) + + +### Bug Fixes + +* **core:** Aborting manual trigger tests should call `closeFunction` ([#9980](https://github.com/n8n-io/n8n/issues/9980)) ([6107798](https://github.com/n8n-io/n8n/commit/61077985163037ed3c6a8e9e7476cd6c525ff5f2)) +* **core:** Allow owner and admin to edit nodes with credentials that haven't been shared with them explicitly ([#9922](https://github.com/n8n-io/n8n/issues/9922)) ([0f49598](https://github.com/n8n-io/n8n/commit/0f495986f89b60ec9bb86801f9779ee9aa87ccfb)) +* **core:** Clear active execution on cancellation in scaling mode ([#9979](https://github.com/n8n-io/n8n/issues/9979)) ([7e972c7](https://github.com/n8n-io/n8n/commit/7e972c78afaf950effec17d8eee16cbf86101d03)) +* **core:** Disconnect Redis after pausing queue during worker shutdown ([#9928](https://github.com/n8n-io/n8n/issues/9928)) ([c82579b](https://github.com/n8n-io/n8n/commit/c82579bf760cc4b5a2670b14e4e48fc37e2e2263)) +* **core:** Don't execute 'workflowExecuteBefore' hook on execution continuations ([#9905](https://github.com/n8n-io/n8n/issues/9905)) ([adb8315](https://github.com/n8n-io/n8n/commit/adb83155ca9478a548e6fe926735d5872de10fea)) +* **core:** Prevent multiple values in the execution metadata for the same key and executionId ([#9953](https://github.com/n8n-io/n8n/issues/9953)) ([2e6b03b](https://github.com/n8n-io/n8n/commit/2e6b03b2cb471aefa8104b7b80cf12e64f16e4fb)) +* **Google Sheets Node:** Append fails if cells have some default values added by data validation rules ([#9950](https://github.com/n8n-io/n8n/issues/9950)) ([d1821eb](https://github.com/n8n-io/n8n/commit/d1821eba9221eb243b62ad561193102b24dd05a5)) +* **Invoice Ninja Node:** Fix assigning an invoice to a payment ([#9590](https://github.com/n8n-io/n8n/issues/9590)) ([7a3c127](https://github.com/n8n-io/n8n/commit/7a3c127b2cbea01f9a21c8d517d1dc919bc8121f)) +* **Invoice Ninja Node:** Fix emailing and marking invoice as paid / sent ([#9589](https://github.com/n8n-io/n8n/issues/9589)) ([908ddd8](https://github.com/n8n-io/n8n/commit/908ddd8a24e8a858d9c1eddf2f727234e66a62f7)) + + +### Features + +* **Chat Trigger Node:** Add support for file uploads & harmonize public and development chat ([#9802](https://github.com/n8n-io/n8n/issues/9802)) ([df78315](https://github.com/n8n-io/n8n/commit/df783151b86e2db3e325d3b9d85f4abb71d3d246)) +* **Google Cloud Firestore Node:** Add support for service account and document creation with id ([#9713](https://github.com/n8n-io/n8n/issues/9713)) ([cb1bbf5](https://github.com/n8n-io/n8n/commit/cb1bbf5fd395ec4855ac21d851b180c8526b698a)) +* **Orbit Node:** Deprecate Orbit nicely ([#9962](https://github.com/n8n-io/n8n/issues/9962)) ([9577d9c](https://github.com/n8n-io/n8n/commit/9577d9c847b56d9907d2bbe9ec85127bb8f67cfa)) +* Qdrant Vector Store search filter ([#9900](https://github.com/n8n-io/n8n/issues/9900)) ([fbe4bca](https://github.com/n8n-io/n8n/commit/fbe4bca634e8e03c9455843e1a1f89706d1557d2)) +* **Splunk Node:** Overhaul ([#9813](https://github.com/n8n-io/n8n/issues/9813)) ([e5c3247](https://github.com/n8n-io/n8n/commit/e5c324753fb41752f9722d61c5d336d6e5c67cca)) +* **Telegram Node:** Add support to Keyboard Button Mini Apps ([#9511](https://github.com/n8n-io/n8n/issues/9511)) ([3a17943](https://github.com/n8n-io/n8n/commit/3a179439c7586189b8264131fd16da9d14f074b6)) + + + +# [1.49.0](https://github.com/n8n-io/n8n/compare/n8n@1.48.0...n8n@1.49.0) (2024-07-03) + + +### Bug Fixes + +* **core:** Add a WebCrypto Polyfill for older versions of Node.js 18 ([#9894](https://github.com/n8n-io/n8n/issues/9894)) ([59c8bf1](https://github.com/n8n-io/n8n/commit/59c8bf1c44057b3f798645a22ad16362401ebeed)) +* **core:** Don't allow using credentials that are not part of the same project ([#9916](https://github.com/n8n-io/n8n/issues/9916)) ([ab2a548](https://github.com/n8n-io/n8n/commit/ab2a5488560a814fc72c0c5cd71e5f62f05cd235)) +* **core:** Filter out certain executions from crash recovery ([#9904](https://github.com/n8n-io/n8n/issues/9904)) ([7044d1c](https://github.com/n8n-io/n8n/commit/7044d1ca2841b6d87ae929072bb94dda82909795)) +* **core:** Fix AddActivatedAtUserSetting migration on MariaDB ([#9910](https://github.com/n8n-io/n8n/issues/9910)) ([db29e84](https://github.com/n8n-io/n8n/commit/db29e84666b814fd4710dc3ade6e53304216fad5)) +* **core:** Fix execution cancellation in scaling mode ([#9841](https://github.com/n8n-io/n8n/issues/9841)) ([e613de2](https://github.com/n8n-io/n8n/commit/e613de28ca2db23746b586e0a0b33f1c1ee1abe5)) +* **core:** Fix worker logs relay ([#9919](https://github.com/n8n-io/n8n/issues/9919)) ([7c53433](https://github.com/n8n-io/n8n/commit/7c5343319144ce3524b14018eef77eace221b608)) +* **core:** Throw on adding execution without execution data ([#9903](https://github.com/n8n-io/n8n/issues/9903)) ([abb7458](https://github.com/n8n-io/n8n/commit/abb74587db88a56453b269826885df0d01766290)) +* **editor:** Don't try to load credentials on the demo route ([#9926](https://github.com/n8n-io/n8n/issues/9926)) ([b80df2a](https://github.com/n8n-io/n8n/commit/b80df2a47ebe4450862e200c9cf47f6e94012c91)) +* **editor:** Enable expression preview in SQL node when looking at executions ([#9733](https://github.com/n8n-io/n8n/issues/9733)) ([d9747d5](https://github.com/n8n-io/n8n/commit/d9747d5e9b42d7f379f6f4219b960893b7b153b3)) +* **editor:** Fix frontend project roles ([#9901](https://github.com/n8n-io/n8n/issues/9901)) ([f229577](https://github.com/n8n-io/n8n/commit/f2295772094ff936e210f52ebcbc938915d1c129)) +* **editor:** Fix new node credential creation via Resource Locator Component ([#9896](https://github.com/n8n-io/n8n/issues/9896)) ([55cbc90](https://github.com/n8n-io/n8n/commit/55cbc900a48c579b712dddfa74e133e1d9c11799)) +* **editor:** Fix performance issues related to expressions and pinned data ([#9882](https://github.com/n8n-io/n8n/issues/9882)) ([13d83f2](https://github.com/n8n-io/n8n/commit/13d83f2037d659fccc8889dd994ddd984467d987)) +* **editor:** Improve text wrapping in schema view ([#9888](https://github.com/n8n-io/n8n/issues/9888)) ([dc1c5fc](https://github.com/n8n-io/n8n/commit/dc1c5fce8af732c438d2f1698ee08f18d2358a6c)) +* **Execute Workflow Node:** Continue on fail behaviour not correctly implemented ([#9890](https://github.com/n8n-io/n8n/issues/9890)) ([16b1a09](https://github.com/n8n-io/n8n/commit/16b1a094b19e5f803a460b99c6062a1175bec153)) +* **LinkedIn Node:** Fix issue with legacy credential no longer working ([#9912](https://github.com/n8n-io/n8n/issues/9912)) ([873b7e5](https://github.com/n8n-io/n8n/commit/873b7e59dcea276c9f792570805a6de8ad4607a3)) + + +### Features + +* Add Zep Cloud Memory component ([#9657](https://github.com/n8n-io/n8n/issues/9657)) ([41c47a2](https://github.com/n8n-io/n8n/commit/41c47a28a9d4502287ca1bbbb4704f2763288a11)) +* **Copper Node:** Update credential to support HTTP Request node ([#9837](https://github.com/n8n-io/n8n/issues/9837)) ([e6ad5a7](https://github.com/n8n-io/n8n/commit/e6ad5a71935a5f82168bf300246ccb3535648b0b)) +* **editor:** Add docs sidebar to credential modal ([#9914](https://github.com/n8n-io/n8n/issues/9914)) ([b2f8ea7](https://github.com/n8n-io/n8n/commit/b2f8ea7918d7e10e91db0e04ef5b7ad40a5bdbb5)) +* **editor:** Remove Segment ([#9878](https://github.com/n8n-io/n8n/issues/9878)) ([10f7d4b](https://github.com/n8n-io/n8n/commit/10f7d4b5b92013407c9a4eb9edd619d385efe10f)) +* **Embeddings Cohere Node:** Add v3 Cohere models ([#9887](https://github.com/n8n-io/n8n/issues/9887)) ([403e19b](https://github.com/n8n-io/n8n/commit/403e19b3e316db81b62eb456b38e7325bf13529c)) +* **GitHub Node:** Add support for state reasons when editing an issue ([#9848](https://github.com/n8n-io/n8n/issues/9848)) ([61c20d1](https://github.com/n8n-io/n8n/commit/61c20d1ae3c65b04c767c5b704c4fc4efd356ccf)) +* Introduce debug info button ([#9895](https://github.com/n8n-io/n8n/issues/9895)) ([be9a247](https://github.com/n8n-io/n8n/commit/be9a247577ffc28559a23fea2db9b2c598dca036)) +* **Merge Node:** Overhaul, v3 ([#9528](https://github.com/n8n-io/n8n/issues/9528)) ([af69c80](https://github.com/n8n-io/n8n/commit/af69c80bf5a22f80979405041210dc77d2682c51)) +* **Vector Store Tool Node:** Add Vector Store Tool ([#9865](https://github.com/n8n-io/n8n/issues/9865)) ([df2bc84](https://github.com/n8n-io/n8n/commit/df2bc84d2b3830d31319c108f1b01256de95e774)) +* **Zammad Node:** Add reply_to and sender fields to article on ticket creation ([#9911](https://github.com/n8n-io/n8n/issues/9911)) ([957b2d6](https://github.com/n8n-io/n8n/commit/957b2d6108dccd9495291c4764816cc27e112e87)) + + + # [1.48.0](https://github.com/n8n-io/n8n/compare/n8n@1.47.0...n8n@1.48.0) (2024-06-27) diff --git a/README.md b/README.md index 145ecab8c6..d51ac596ca 100644 --- a/README.md +++ b/README.md @@ -95,8 +95,8 @@ development environment ready in minutes. ## License n8n is [fair-code](https://faircode.io) distributed under the -[**Sustainable Use License**](https://github.com/n8n-io/n8n/blob/master/packages/cli/LICENSE.md) and the -[**n8n Enterprise License**](https://github.com/n8n-io/n8n/blob/master/packages/cli/LICENSE_EE.md). +[**Sustainable Use License**](https://github.com/n8n-io/n8n/blob/master/LICENSE.md) and the +[**n8n Enterprise License**](https://github.com/n8n-io/n8n/blob/master/LICENSE_EE.md). Proprietary licenses are available for enterprise customers. [Get in touch](mailto:license@n8n.io) diff --git a/biome.jsonc b/biome.jsonc new file mode 100644 index 0000000000..d11acefc5a --- /dev/null +++ b/biome.jsonc @@ -0,0 +1,51 @@ +{ + "$schema": "./node_modules/@biomejs/biome/configuration_schema.json", + "vcs": { + "clientKind": "git", + "enabled": true, + "useIgnoreFile": true + }, + "files": { + "ignore": [ + "**/.turbo", + "**/coverage", + "**/dist", + "**/package.json", + "**/pnpm-lock.yaml", + "**/CHANGELOG.md" + ] + }, + "formatter": { + "enabled": true, + "formatWithErrors": false, + "indentStyle": "tab", + "indentWidth": 2, + "lineEnding": "lf", + "lineWidth": 100, + "attributePosition": "auto", + "ignore": [ + // Handled by prettier + "**/*.vue" + ] + }, + "organizeImports": { "enabled": false }, + "linter": { + "enabled": false + }, + "javascript": { + "parser": { + "unsafeParameterDecoratorsEnabled": true + }, + "formatter": { + "jsxQuoteStyle": "double", + "quoteProperties": "asNeeded", + "trailingCommas": "all", + "semicolons": "always", + "arrowParentheses": "always", + "bracketSpacing": true, + "bracketSameLine": false, + "quoteStyle": "single", + "attributePosition": "auto" + } + } +} diff --git a/cypress/biome.jsonc b/cypress/biome.jsonc new file mode 100644 index 0000000000..5a63363ac8 --- /dev/null +++ b/cypress/biome.jsonc @@ -0,0 +1,7 @@ +{ + "$schema": "../node_modules/@biomejs/biome/configuration_schema.json", + "extends": ["../biome.jsonc"], + "formatter": { + "ignore": ["fixtures/**"] + } +} diff --git a/cypress/composables/modals/chat-modal.ts b/cypress/composables/modals/chat-modal.ts index 31e139c93e..254d811a18 100644 --- a/cypress/composables/modals/chat-modal.ts +++ b/cypress/composables/modals/chat-modal.ts @@ -7,15 +7,15 @@ export function getManualChatModal() { } export function getManualChatInput() { - return cy.getByTestId('workflow-chat-input'); + return getManualChatModal().get('.chat-inputs textarea'); } export function getManualChatSendButton() { - return getManualChatModal().getByTestId('workflow-chat-send-button'); + return getManualChatModal().get('.chat-input-send-button'); } export function getManualChatMessages() { - return getManualChatModal().get('.messages .message'); + return getManualChatModal().get('.chat-messages-list .chat-message'); } export function getManualChatModalCloseButton() { diff --git a/cypress/composables/modals/save-changes-modal.ts b/cypress/composables/modals/save-changes-modal.ts new file mode 100644 index 0000000000..d44b09bd46 --- /dev/null +++ b/cypress/composables/modals/save-changes-modal.ts @@ -0,0 +1,3 @@ +export function getSaveChangesModal() { + return cy.get('.el-overlay').contains('Save changes before leaving?'); +} diff --git a/cypress/composables/ndv.ts b/cypress/composables/ndv.ts index c3fab73f8c..5b3690e6a6 100644 --- a/cypress/composables/ndv.ts +++ b/cypress/composables/ndv.ts @@ -59,7 +59,7 @@ export function setCredentialByName(name: string) { export function clickCreateNewCredential() { openCredentialSelect(); - getCreateNewCredentialOption().click(); + getCreateNewCredentialOption().click({ force: true }); } export function clickGetBackToCanvas() { diff --git a/cypress/composables/projects.ts b/cypress/composables/projects.ts index de5669ae11..da9c6fcc65 100644 --- a/cypress/composables/projects.ts +++ b/cypress/composables/projects.ts @@ -1,41 +1,43 @@ import { CredentialsModal, WorkflowPage } from '../pages'; +import { getVisibleSelect } from '../utils'; const workflowPage = new WorkflowPage(); const credentialsModal = new CredentialsModal(); export const getHomeButton = () => cy.getByTestId('project-home-menu-item'); export const getMenuItems = () => cy.getByTestId('project-menu-item'); -export const getAddProjectButton = () => cy.getByTestId('add-project-menu-item'); +export const getAddProjectButton = () => + cy.getByTestId('add-project-menu-item').should('contain', 'Add project').should('be.visible'); export const getProjectTabs = () => cy.getByTestId('project-tabs').find('a'); export const getProjectTabWorkflows = () => getProjectTabs().filter('a[href$="/workflows"]'); export const getProjectTabCredentials = () => getProjectTabs().filter('a[href$="/credentials"]'); export const getProjectTabSettings = () => getProjectTabs().filter('a[href$="/settings"]'); -export const getProjectSettingsNameInput = () => cy.getByTestId('project-settings-name-input'); +export const getProjectSettingsNameInput = () => + cy.getByTestId('project-settings-name-input').find('input'); export const getProjectSettingsSaveButton = () => cy.getByTestId('project-settings-save-button'); export const getProjectSettingsCancelButton = () => cy.getByTestId('project-settings-cancel-button'); export const getProjectSettingsDeleteButton = () => cy.getByTestId('project-settings-delete-button'); export const getProjectMembersSelect = () => cy.getByTestId('project-members-select'); -export const addProjectMember = (email: string) => { +export const addProjectMember = (email: string, role?: string) => { getProjectMembersSelect().click(); getProjectMembersSelect().get('.el-select-dropdown__item').contains(email.toLowerCase()).click(); + + if (role) { + cy.getByTestId(`user-list-item-${email}`) + .find('[data-test-id="projects-settings-user-role-select"]') + .click(); + getVisibleSelect().find('li').contains(role).click(); + } }; -export const getProjectNameInput = () => cy.get('#projectName'); export const getResourceMoveModal = () => cy.getByTestId('project-move-resource-modal'); -export const getResourceMoveConfirmModal = () => - cy.getByTestId('project-move-resource-confirm-modal'); export const getProjectMoveSelect = () => cy.getByTestId('project-move-resource-modal-select'); export function createProject(name: string) { - getAddProjectButton().should('be.visible').click(); + getAddProjectButton().click(); - getProjectNameInput() - .should('be.visible') - .should('be.focused') - .should('have.value', 'My project') - .clear() - .type(name); + getProjectSettingsNameInput().should('be.visible').clear().type(name); getProjectSettingsSaveButton().click(); } @@ -46,7 +48,7 @@ export function createWorkflow(fixtureKey: string, name: string) { workflowPage.actions.zoomToFit(); } -export function createCredential(name: string) { +export function createCredential(name: string, closeModal = true) { credentialsModal.getters.newCredentialModal().should('be.visible'); credentialsModal.getters.newCredentialTypeSelect().should('be.visible'); credentialsModal.getters.newCredentialTypeOption('Notion API').click(); @@ -54,13 +56,8 @@ export function createCredential(name: string) { credentialsModal.getters.connectionParameter('Internal Integration Secret').type('1234567890'); credentialsModal.actions.setName(name); credentialsModal.actions.save(); - credentialsModal.actions.close(); -} -export const actions = { - createProject: (name: string) => { - getAddProjectButton().click(); - getProjectSettingsNameInput().type(name); - getProjectSettingsSaveButton().click(); - }, -}; + if (closeModal) { + credentialsModal.actions.close(); + } +} diff --git a/cypress/composables/workflow.ts b/cypress/composables/workflow.ts index b3d6f20c28..394a35af18 100644 --- a/cypress/composables/workflow.ts +++ b/cypress/composables/workflow.ts @@ -1,5 +1,5 @@ -import { ROUTES } from '../constants'; import { getManualChatModal } from './modals/chat-modal'; +import { ROUTES } from '../constants'; /** * Types @@ -144,6 +144,12 @@ export function addToolNodeToParent(nodeName: string, parentNodeName: string) { export function addOutputParserNodeToParent(nodeName: string, parentNodeName: string) { addSupplementalNodeToParent(nodeName, 'ai_outputParser', parentNodeName); } +export function addVectorStoreNodeToParent(nodeName: string, parentNodeName: string) { + addSupplementalNodeToParent(nodeName, 'ai_vectorStore', parentNodeName); +} +export function addRetrieverNodeToParent(nodeName: string, parentNodeName: string) { + addSupplementalNodeToParent(nodeName, 'ai_retriever', parentNodeName); +} export function clickExecuteWorkflowButton() { getExecuteWorkflowButton().click(); diff --git a/cypress/constants.ts b/cypress/constants.ts index 7efd9b0470..cbbf838530 100644 --- a/cypress/constants.ts +++ b/cypress/constants.ts @@ -37,6 +37,7 @@ export const INSTANCE_MEMBERS = [ export const MANUAL_TRIGGER_NODE_NAME = 'Manual Trigger'; export const MANUAL_TRIGGER_NODE_DISPLAY_NAME = 'When clicking ‘Test workflow’'; export const MANUAL_CHAT_TRIGGER_NODE_NAME = 'Chat Trigger'; +export const CHAT_TRIGGER_NODE_DISPLAY_NAME = 'When chat message received'; export const SCHEDULE_TRIGGER_NODE_NAME = 'Schedule Trigger'; export const CODE_NODE_NAME = 'Code'; export const SET_NODE_NAME = 'Set'; @@ -53,11 +54,14 @@ export const AGENT_NODE_NAME = 'AI Agent'; export const BASIC_LLM_CHAIN_NODE_NAME = 'Basic LLM Chain'; export const AI_MEMORY_WINDOW_BUFFER_MEMORY_NODE_NAME = 'Window Buffer Memory'; export const AI_TOOL_CALCULATOR_NODE_NAME = 'Calculator'; -export const AI_TOOL_CODE_NODE_NAME = 'Custom Code Tool'; +export const AI_TOOL_CODE_NODE_NAME = 'Code Tool'; export const AI_TOOL_WIKIPEDIA_NODE_NAME = 'Wikipedia'; +export const AI_TOOL_HTTP_NODE_NAME = 'HTTP Request Tool'; export const AI_LANGUAGE_MODEL_OPENAI_CHAT_MODEL_NODE_NAME = 'OpenAI Chat Model'; +export const AI_MEMORY_POSTGRES_NODE_NAME = 'Postgres Chat Memory'; export const AI_OUTPUT_PARSER_AUTO_FIXING_NODE_NAME = 'Auto-fixing Output Parser'; export const WEBHOOK_NODE_NAME = 'Webhook'; +export const EXECUTE_WORKFLOW_NODE_NAME = 'Execute Workflow'; export const META_KEY = Cypress.platform === 'darwin' ? 'meta' : 'ctrl'; diff --git a/cypress/cypress.config.js b/cypress/cypress.config.js index c82f039994..63913af7f8 100644 --- a/cypress/cypress.config.js +++ b/cypress/cypress.config.js @@ -25,9 +25,4 @@ module.exports = defineConfig({ screenshotsFolder: 'screenshots', videosFolder: 'videos', }, - env: { - MAX_PINNED_DATA_SIZE: process.env.VUE_APP_MAX_PINNED_DATA_SIZE - ? parseInt(process.env.VUE_APP_MAX_PINNED_DATA_SIZE, 10) - : 16 * 1024, - }, }); diff --git a/cypress/e2e/1-workflows.cy.ts b/cypress/e2e/1-workflows.cy.ts index d01f046d75..a6683bbee4 100644 --- a/cypress/e2e/1-workflows.cy.ts +++ b/cypress/e2e/1-workflows.cy.ts @@ -1,5 +1,5 @@ -import { WorkflowsPage as WorkflowsPageClass } from '../pages/workflows'; import { WorkflowPage as WorkflowPageClass } from '../pages/workflow'; +import { WorkflowsPage as WorkflowsPageClass } from '../pages/workflows'; import { getUniqueWorkflowName } from '../utils/workflowUtils'; const WorkflowsPage = new WorkflowsPageClass(); @@ -73,4 +73,28 @@ describe('Workflows', () => { WorkflowsPage.getters.newWorkflowButtonCard().should('be.visible'); }); + + it('should respect tag querystring filter when listing workflows', () => { + WorkflowsPage.getters.newWorkflowButtonCard().click(); + + cy.createFixtureWorkflow('Test_workflow_2.json', getUniqueWorkflowName('My New Workflow')); + + cy.visit(WorkflowsPage.url); + + WorkflowsPage.getters.createWorkflowButton().click(); + + cy.createFixtureWorkflow('Test_workflow_1.json', 'Empty State Card Workflow'); + + cy.visit(WorkflowsPage.url); + + WorkflowsPage.getters.workflowFilterButton().click(); + + WorkflowsPage.getters.workflowTagsDropdown().click(); + + WorkflowsPage.getters.workflowTagItem('some-tag-1').click(); + + cy.reload(); + + WorkflowsPage.getters.workflowCards().should('have.length', 1); + }); }); diff --git a/cypress/e2e/10-settings-log-streaming.cy.ts b/cypress/e2e/10-settings-log-streaming.cy.ts index 9acec76f42..1954543ca0 100644 --- a/cypress/e2e/10-settings-log-streaming.cy.ts +++ b/cypress/e2e/10-settings-log-streaming.cy.ts @@ -1,6 +1,6 @@ import { SettingsLogStreamingPage } from '../pages'; -import { getVisibleModalOverlay } from '../utils/modal'; import { getVisibleDropdown } from '../utils'; +import { getVisibleModalOverlay } from '../utils/modal'; const settingsLogStreamingPage = new SettingsLogStreamingPage(); diff --git a/cypress/e2e/10-undo-redo.cy.ts b/cypress/e2e/10-undo-redo.cy.ts index 3227f68323..f54c2de9fa 100644 --- a/cypress/e2e/10-undo-redo.cy.ts +++ b/cypress/e2e/10-undo-redo.cy.ts @@ -4,9 +4,9 @@ import { SET_NODE_NAME, EDIT_FIELDS_SET_NODE_NAME, } from '../constants'; -import { WorkflowPage as WorkflowPageClass } from '../pages/workflow'; import { MessageBox as MessageBoxClass } from '../pages/modals/message-box'; import { NDV } from '../pages/ndv'; +import { WorkflowPage as WorkflowPageClass } from '../pages/workflow'; // Suite-specific constants const CODE_NODE_NEW_NAME = 'Something else'; @@ -20,24 +20,7 @@ describe('Undo/Redo', () => { WorkflowPage.actions.visit(); }); - it('should undo/redo adding nodes', () => { - WorkflowPage.actions.addNodeToCanvas(SCHEDULE_TRIGGER_NODE_NAME); - WorkflowPage.actions.hitUndo(); - WorkflowPage.getters.canvasNodes().should('have.have.length', 0); - WorkflowPage.actions.hitRedo(); - WorkflowPage.getters.canvasNodes().should('have.have.length', 1); - }); - - it('should undo/redo adding connected nodes', () => { - WorkflowPage.actions.addNodeToCanvas(SCHEDULE_TRIGGER_NODE_NAME); - WorkflowPage.actions.addNodeToCanvas(CODE_NODE_NAME); - WorkflowPage.actions.hitUndo(); - WorkflowPage.getters.canvasNodes().should('have.have.length', 1); - WorkflowPage.actions.hitRedo(); - WorkflowPage.getters.canvasNodes().should('have.have.length', 2); - WorkflowPage.getters.nodeConnections().should('have.length', 1); - }); - + // FIXME: Canvas V2: Fix redo connections it('should undo/redo adding node in the middle', () => { WorkflowPage.actions.addNodeToCanvas(SCHEDULE_TRIGGER_NODE_NAME); WorkflowPage.actions.addNodeToCanvas(CODE_NODE_NAME); @@ -132,6 +115,7 @@ describe('Undo/Redo', () => { WorkflowPage.getters.nodeConnections().should('have.length', 0); }); + // FIXME: Canvas V2: Fix moving of nodes via e2e tests it('should undo/redo moving nodes', () => { WorkflowPage.actions.addNodeToCanvas(SCHEDULE_TRIGGER_NODE_NAME); WorkflowPage.actions.addNodeToCanvas(CODE_NODE_NAME); @@ -164,18 +148,14 @@ describe('Undo/Redo', () => { it('should undo/redo deleting a connection using context menu', () => { WorkflowPage.actions.addNodeToCanvas(SCHEDULE_TRIGGER_NODE_NAME); WorkflowPage.actions.addNodeToCanvas(CODE_NODE_NAME); - WorkflowPage.getters.nodeConnections().realHover(); - cy.get('.connection-actions .delete') - .filter(':visible') - .should('be.visible') - .click({ force: true }); + WorkflowPage.actions.deleteNodeBetweenNodes(SCHEDULE_TRIGGER_NODE_NAME, CODE_NODE_NAME); WorkflowPage.getters.nodeConnections().should('have.length', 0); WorkflowPage.actions.hitUndo(); WorkflowPage.getters.nodeConnections().should('have.length', 1); WorkflowPage.actions.hitRedo(); WorkflowPage.getters.nodeConnections().should('have.length', 0); }); - + // FIXME: Canvas V2: Fix disconnecting by moving it('should undo/redo deleting a connection by moving it away', () => { WorkflowPage.actions.addNodeToCanvas(SCHEDULE_TRIGGER_NODE_NAME); WorkflowPage.actions.addNodeToCanvas(CODE_NODE_NAME); @@ -224,21 +204,7 @@ describe('Undo/Redo', () => { WorkflowPage.getters.disabledNodes().should('have.length', 2); }); - it('should undo/redo renaming node using NDV', () => { - WorkflowPage.actions.addNodeToCanvas(SCHEDULE_TRIGGER_NODE_NAME); - WorkflowPage.actions.addNodeToCanvas(CODE_NODE_NAME); - WorkflowPage.getters.canvasNodes().last().click(); - cy.get('body').type('{enter}'); - ndv.actions.rename(CODE_NODE_NEW_NAME); - cy.get('body').type('{esc}'); - WorkflowPage.actions.hitUndo(); - cy.get('body').type('{esc}'); - WorkflowPage.getters.canvasNodeByName(CODE_NODE_NAME).should('exist'); - WorkflowPage.actions.hitRedo(); - cy.get('body').type('{esc}'); - WorkflowPage.getters.canvasNodeByName(CODE_NODE_NEW_NAME).should('exist'); - }); - + // FIXME: Canvas V2: Fix undo renaming node it('should undo/redo renaming node using keyboard shortcut', () => { WorkflowPage.actions.addNodeToCanvas(SCHEDULE_TRIGGER_NODE_NAME); WorkflowPage.actions.addNodeToCanvas(CODE_NODE_NAME); @@ -277,6 +243,7 @@ describe('Undo/Redo', () => { }); }); + // FIXME: Canvas V2: Figure out why moving doesn't work from e2e it('should undo/redo multiple steps', () => { WorkflowPage.actions.addNodeToCanvas(SCHEDULE_TRIGGER_NODE_NAME); WorkflowPage.actions.addNodeToCanvas(CODE_NODE_NAME); diff --git a/cypress/e2e/11-inline-expression-editor.cy.ts b/cypress/e2e/11-inline-expression-editor.cy.ts index 143648ce1b..945c62821b 100644 --- a/cypress/e2e/11-inline-expression-editor.cy.ts +++ b/cypress/e2e/11-inline-expression-editor.cy.ts @@ -11,6 +11,21 @@ describe('Inline expression editor', () => { cy.on('uncaught:exception', (error) => error.name !== 'ExpressionError'); }); + describe('Basic UI functionality', () => { + it('should open and close inline expression preview', () => { + WorkflowPage.actions.zoomToFit(); + WorkflowPage.actions.openNode('Schedule'); + WorkflowPage.actions.openInlineExpressionEditor(); + WorkflowPage.getters.inlineExpressionEditorInput().clear(); + WorkflowPage.getters.inlineExpressionEditorInput().click().type('{{'); + WorkflowPage.getters.inlineExpressionEditorInput().type('123'); + WorkflowPage.getters.inlineExpressionEditorOutput().contains(/^123$/); + // click outside to close + ndv.getters.outputPanel().click(); + WorkflowPage.getters.inlineExpressionEditorOutput().should('not.exist'); + }); + }); + describe('Static data', () => { beforeEach(() => { WorkflowPage.actions.addNodeToCanvas('Hacker News'); diff --git a/cypress/e2e/12-canvas-actions.cy.ts b/cypress/e2e/12-canvas-actions.cy.ts index 9b05cb84d4..e9244a1d12 100644 --- a/cypress/e2e/12-canvas-actions.cy.ts +++ b/cypress/e2e/12-canvas-actions.cy.ts @@ -1,5 +1,3 @@ -import { WorkflowPage as WorkflowPageClass } from '../pages/workflow'; -import { successToast } from '../pages/notifications'; import { MANUAL_TRIGGER_NODE_NAME, MANUAL_TRIGGER_NODE_DISPLAY_NAME, @@ -9,6 +7,8 @@ import { IF_NODE_NAME, HTTP_REQUEST_NODE_NAME, } from './../constants'; +import { successToast } from '../pages/notifications'; +import { WorkflowPage as WorkflowPageClass } from '../pages/workflow'; const WorkflowPage = new WorkflowPageClass(); describe('Canvas Actions', () => { @@ -16,6 +16,7 @@ describe('Canvas Actions', () => { WorkflowPage.actions.visit(); }); + // FIXME: Canvas V2: Missing execute button if no nodes it('should render canvas', () => { WorkflowPage.getters.nodeViewRoot().should('be.visible'); WorkflowPage.getters.canvasPlusButton().should('be.visible'); @@ -25,10 +26,11 @@ describe('Canvas Actions', () => { WorkflowPage.getters.executeWorkflowButton().should('be.visible'); }); + // FIXME: Canvas V2: Fix changing of connection it('should connect and disconnect a simple node', () => { WorkflowPage.actions.addNodeToCanvas(EDIT_FIELDS_SET_NODE_NAME); WorkflowPage.getters.nodeViewBackground().click(600, 200, { force: true }); - cy.get('.jtk-connector').should('have.length', 1); + WorkflowPage.getters.nodeConnections().should('have.length', 1); WorkflowPage.getters.nodeViewBackground().click(600, 400, { force: true }); WorkflowPage.actions.addNodeToCanvas(EDIT_FIELDS_SET_NODE_NAME); @@ -40,16 +42,16 @@ describe('Canvas Actions', () => { ); WorkflowPage.getters - .canvasNodeInputEndpointByName(`${EDIT_FIELDS_SET_NODE_NAME}1`) - .should('have.class', 'jtk-endpoint-connected'); + .getConnectionBetweenNodes(MANUAL_TRIGGER_NODE_DISPLAY_NAME, `${EDIT_FIELDS_SET_NODE_NAME}1`) + .should('be.visible'); - cy.get('.jtk-connector').should('have.length', 1); + WorkflowPage.getters.nodeConnections().should('have.length', 1); // Disconnect Set1 cy.drag( WorkflowPage.getters.getEndpointSelector('input', `${EDIT_FIELDS_SET_NODE_NAME}1`), [-200, 100], ); - cy.get('.jtk-connector').should('have.length', 0); + WorkflowPage.getters.nodeConnections().should('have.length', 0); }); it('should add first step', () => { @@ -74,7 +76,7 @@ describe('Canvas Actions', () => { it('should add a connected node using plus endpoint', () => { WorkflowPage.actions.addNodeToCanvas(MANUAL_TRIGGER_NODE_NAME); - cy.get('.plus-endpoint').should('be.visible').click(); + WorkflowPage.getters.canvasNodePlusEndpointByName(MANUAL_TRIGGER_NODE_DISPLAY_NAME).click(); WorkflowPage.getters.nodeCreatorSearchBar().should('be.visible'); WorkflowPage.getters.nodeCreatorSearchBar().type(CODE_NODE_NAME); WorkflowPage.getters.nodeCreatorSearchBar().type('{enter}'); @@ -85,7 +87,7 @@ describe('Canvas Actions', () => { it('should add a connected node dragging from node creator', () => { WorkflowPage.actions.addNodeToCanvas(MANUAL_TRIGGER_NODE_NAME); - cy.get('.plus-endpoint').should('be.visible').click(); + WorkflowPage.getters.canvasNodePlusEndpointByName(MANUAL_TRIGGER_NODE_DISPLAY_NAME).click(); WorkflowPage.getters.nodeCreatorSearchBar().should('be.visible'); WorkflowPage.getters.nodeCreatorSearchBar().type(CODE_NODE_NAME); cy.drag(WorkflowPage.getters.nodeCreatorNodeItems().first(), [100, 100], { @@ -99,7 +101,7 @@ describe('Canvas Actions', () => { it('should open a category when trying to drag and drop it on the canvas', () => { WorkflowPage.actions.addNodeToCanvas(MANUAL_TRIGGER_NODE_NAME); - cy.get('.plus-endpoint').should('be.visible').click(); + WorkflowPage.getters.canvasNodePlusEndpointByName(MANUAL_TRIGGER_NODE_DISPLAY_NAME).click(); WorkflowPage.getters.nodeCreatorSearchBar().should('be.visible'); WorkflowPage.getters.nodeCreatorSearchBar().type(CODE_NODE_NAME); cy.drag(WorkflowPage.getters.nodeCreatorActionItems().first(), [100, 100], { @@ -114,7 +116,7 @@ describe('Canvas Actions', () => { it('should add disconnected node if nothing is selected', () => { WorkflowPage.actions.addNodeToCanvas(MANUAL_TRIGGER_NODE_NAME); // Deselect nodes - WorkflowPage.getters.nodeViewBackground().click({ force: true }); + WorkflowPage.getters.nodeView().click({ force: true }); WorkflowPage.actions.addNodeToCanvas(CODE_NODE_NAME); WorkflowPage.getters.canvasNodes().should('have.length', 2); WorkflowPage.getters.nodeConnections().should('have.length', 0); @@ -136,24 +138,35 @@ describe('Canvas Actions', () => { WorkflowPage.getters.nodeConnections().should('have.length', 3); WorkflowPage.getters.canvasNodeByName(EDIT_FIELDS_SET_NODE_NAME).then(($editFieldsNode) => { - const editFieldsNodeLeft = parseFloat($editFieldsNode.css('left')); + const editFieldsNodeLeft = WorkflowPage.getters.getNodeLeftPosition($editFieldsNode); WorkflowPage.getters.canvasNodeByName(HTTP_REQUEST_NODE_NAME).then(($httpNode) => { - const httpNodeLeft = parseFloat($httpNode.css('left')); + const httpNodeLeft = WorkflowPage.getters.getNodeLeftPosition($httpNode); expect(httpNodeLeft).to.be.lessThan(editFieldsNodeLeft); }); }); }); - it('should delete connections by pressing the delete button', () => { + it('should delete node by pressing keyboard backspace', () => { + WorkflowPage.actions.addNodeToCanvas(MANUAL_TRIGGER_NODE_NAME); + WorkflowPage.getters.canvasNodeByName(MANUAL_TRIGGER_NODE_DISPLAY_NAME).click(); + WorkflowPage.actions.addNodeToCanvas(CODE_NODE_NAME); + WorkflowPage.getters.canvasNodeByName(CODE_NODE_NAME).click(); + cy.get('body').type('{backspace}'); + WorkflowPage.getters.nodeConnections().should('have.length', 0); + }); + + it('should delete connections by clicking on the delete button', () => { WorkflowPage.actions.addNodeToCanvas(MANUAL_TRIGGER_NODE_NAME); WorkflowPage.getters.canvasNodeByName(MANUAL_TRIGGER_NODE_DISPLAY_NAME).click(); WorkflowPage.actions.addNodeToCanvas(CODE_NODE_NAME); WorkflowPage.getters.nodeConnections().first().realHover(); - cy.get('.connection-actions .delete').first().click({ force: true }); + WorkflowPage.actions.deleteNodeBetweenNodes(MANUAL_TRIGGER_NODE_DISPLAY_NAME, CODE_NODE_NAME); + WorkflowPage.getters.nodeConnections().should('have.length', 0); }); + // FIXME: Canvas V2: Fix disconnecting of connection by dragging it it('should delete a connection by moving it away from endpoint', () => { WorkflowPage.actions.addNodeToCanvas(MANUAL_TRIGGER_NODE_NAME); WorkflowPage.getters.canvasNodeByName(MANUAL_TRIGGER_NODE_DISPLAY_NAME).click(); @@ -207,10 +220,10 @@ describe('Canvas Actions', () => { WorkflowPage.actions.hitSelectAll(); WorkflowPage.actions.hitCopy(); - successToast().should('contain', 'Copied!'); + successToast().should('contain', 'Copied to clipboard'); WorkflowPage.actions.copyNode(CODE_NODE_NAME); - successToast().should('contain', 'Copied!'); + successToast().should('contain', 'Copied to clipboard'); }); it('should select/deselect all nodes', () => { @@ -222,17 +235,31 @@ describe('Canvas Actions', () => { WorkflowPage.getters.selectedNodes().should('have.length', 0); }); + // FIXME: Canvas V2: Selection via arrow keys is broken it('should select nodes using arrow keys', () => { WorkflowPage.actions.addNodeToCanvas(MANUAL_TRIGGER_NODE_NAME); WorkflowPage.getters.canvasNodeByName(MANUAL_TRIGGER_NODE_DISPLAY_NAME).click(); WorkflowPage.actions.addNodeToCanvas(CODE_NODE_NAME); cy.wait(500); cy.get('body').type('{leftArrow}'); - WorkflowPage.getters.canvasNodes().first().should('have.class', 'jtk-drag-selected'); + const selectedCanvasNodes = () => + cy.ifCanvasVersion( + () => WorkflowPage.getters.canvasNodes(), + () => WorkflowPage.getters.canvasNodes().parent(), + ); + + cy.ifCanvasVersion( + () => selectedCanvasNodes().first().should('have.class', 'jtk-drag-selected'), + () => selectedCanvasNodes().first().should('have.class', 'selected'), + ); cy.get('body').type('{rightArrow}'); - WorkflowPage.getters.canvasNodes().last().should('have.class', 'jtk-drag-selected'); + cy.ifCanvasVersion( + () => selectedCanvasNodes().last().should('have.class', 'jtk-drag-selected'), + () => selectedCanvasNodes().last().should('have.class', 'selected'), + ); }); + // FIXME: Canvas V2: Selection via shift and arrow keys is broken it('should select nodes using shift and arrow keys', () => { WorkflowPage.actions.addNodeToCanvas(MANUAL_TRIGGER_NODE_NAME); WorkflowPage.getters.canvasNodeByName(MANUAL_TRIGGER_NODE_DISPLAY_NAME).click(); @@ -242,6 +269,7 @@ describe('Canvas Actions', () => { WorkflowPage.getters.selectedNodes().should('have.length', 2); }); + // FIXME: Canvas V2: Fix select & deselect it('should not break lasso selection when dragging node action buttons', () => { WorkflowPage.actions.addNodeToCanvas(MANUAL_TRIGGER_NODE_NAME); WorkflowPage.getters @@ -253,6 +281,7 @@ describe('Canvas Actions', () => { WorkflowPage.actions.testLassoSelection([100, 100], [200, 200]); }); + // FIXME: Canvas V2: Fix select & deselect it('should not break lasso selection with multiple clicks on node action buttons', () => { WorkflowPage.actions.addNodeToCanvas(MANUAL_TRIGGER_NODE_NAME); WorkflowPage.actions.testLassoSelection([100, 100], [200, 200]); diff --git a/cypress/e2e/12-canvas.cy.ts b/cypress/e2e/12-canvas.cy.ts index 325e509e79..ecfb325de2 100644 --- a/cypress/e2e/12-canvas.cy.ts +++ b/cypress/e2e/12-canvas.cy.ts @@ -1,5 +1,3 @@ -import { WorkflowPage as WorkflowPageClass } from '../pages/workflow'; -import { NDV, WorkflowExecutionsTab } from '../pages'; import { MANUAL_TRIGGER_NODE_NAME, MANUAL_TRIGGER_NODE_DISPLAY_NAME, @@ -9,6 +7,9 @@ import { SWITCH_NODE_NAME, MERGE_NODE_NAME, } from './../constants'; +import { NDV, WorkflowExecutionsTab } from '../pages'; +import { WorkflowPage as WorkflowPageClass } from '../pages/workflow'; +import { isCanvasV2 } from '../utils/workflowUtils'; const WorkflowPage = new WorkflowPageClass(); const ExecutionsTab = new WorkflowExecutionsTab(); @@ -52,15 +53,15 @@ describe('Canvas Node Manipulation and Navigation', () => { cy.reload(); cy.waitForLoad(); // Make sure outputless switch was connected correctly - cy.get( - `[data-target-node="${SWITCH_NODE_NAME}1"][data-source-node="${EDIT_FIELDS_SET_NODE_NAME}3"]`, - ).should('be.visible'); + WorkflowPage.getters + .getConnectionBetweenNodes(`${EDIT_FIELDS_SET_NODE_NAME}3`, `${SWITCH_NODE_NAME}1`) + .should('exist'); // Make sure all connections are there after reload for (let i = 0; i < desiredOutputs; i++) { const setName = `${EDIT_FIELDS_SET_NODE_NAME}${i > 0 ? i : ''}`; WorkflowPage.getters - .canvasNodeInputEndpointByName(setName) - .should('have.class', 'jtk-endpoint-connected'); + .getConnectionBetweenNodes(`${SWITCH_NODE_NAME}`, setName) + .should('exist'); } }); @@ -69,9 +70,7 @@ describe('Canvas Node Manipulation and Navigation', () => { WorkflowPage.getters.canvasNodeByName(MANUAL_TRIGGER_NODE_DISPLAY_NAME).click(); for (let i = 0; i < 2; i++) { WorkflowPage.actions.addNodeToCanvas(EDIT_FIELDS_SET_NODE_NAME, true); - WorkflowPage.getters - .nodeViewBackground() - .click((i + 1) * 200, (i + 1) * 200, { force: true }); + WorkflowPage.getters.nodeView().click((i + 1) * 200, (i + 1) * 200, { force: true }); } WorkflowPage.actions.zoomToFit(); @@ -84,8 +83,6 @@ describe('Canvas Node Manipulation and Navigation', () => { WorkflowPage.getters.getEndpointSelector('input', `${EDIT_FIELDS_SET_NODE_NAME}1`), ); - cy.get('.rect-input-endpoint.jtk-endpoint-connected').should('have.length', 2); - // Connect Set1 and Set2 to merge cy.draganddrop( WorkflowPage.getters.getEndpointSelector('plus', EDIT_FIELDS_SET_NODE_NAME), @@ -95,20 +92,36 @@ describe('Canvas Node Manipulation and Navigation', () => { WorkflowPage.getters.getEndpointSelector('plus', `${EDIT_FIELDS_SET_NODE_NAME}1`), WorkflowPage.getters.getEndpointSelector('input', MERGE_NODE_NAME, 1), ); - - cy.get('.rect-input-endpoint.jtk-endpoint-connected').should('have.length', 4); + const checkConnections = () => { + WorkflowPage.getters + .getConnectionBetweenNodes( + MANUAL_TRIGGER_NODE_DISPLAY_NAME, + `${EDIT_FIELDS_SET_NODE_NAME}1`, + ) + .should('exist'); + WorkflowPage.getters + .getConnectionBetweenNodes(EDIT_FIELDS_SET_NODE_NAME, MERGE_NODE_NAME) + .should('exist'); + WorkflowPage.getters + .getConnectionBetweenNodes(`${EDIT_FIELDS_SET_NODE_NAME}1`, MERGE_NODE_NAME) + .should('exist'); + }; + checkConnections(); // Make sure all connections are there after save & reload WorkflowPage.actions.saveWorkflowOnButtonClick(); cy.reload(); cy.waitForLoad(); - - cy.get('.rect-input-endpoint.jtk-endpoint-connected').should('have.length', 4); + checkConnections(); + // cy.get('.rect-input-endpoint.jtk-endpoint-connected').should('have.length', 4); WorkflowPage.actions.executeWorkflow(); WorkflowPage.getters.stopExecutionButton().should('not.exist'); // If the merged set nodes are connected and executed correctly, there should be 2 items in the output of merge node - cy.get('[data-label="2 items"]').should('be.visible'); + cy.ifCanvasVersion( + () => cy.get('[data-label="2 items"]').should('be.visible'), + () => cy.getByTestId('canvas-node-output-handle').contains('2 items').should('be.visible'), + ); }); it('should add nodes and check execution success', () => { @@ -120,16 +133,42 @@ describe('Canvas Node Manipulation and Navigation', () => { WorkflowPage.actions.zoomToFit(); WorkflowPage.actions.executeWorkflow(); - cy.get('.jtk-connector.success').should('have.length', 3); - cy.get('.data-count').should('have.length', 4); - cy.get('.plus-draggable-endpoint').should('have.class', 'ep-success'); + cy.ifCanvasVersion( + () => cy.get('.jtk-connector.success').should('have.length', 3), + () => cy.get('[data-edge-status=success]').should('have.length', 3), + ); + cy.ifCanvasVersion( + () => cy.get('.data-count').should('have.length', 4), + () => cy.getByTestId('canvas-node-status-success').should('have.length', 4), + ); + + cy.ifCanvasVersion( + () => cy.get('.plus-draggable-endpoint').should('have.class', 'ep-success'), + () => cy.getByTestId('canvas-handle-plus').should('have.attr', 'data-plus-type', 'success'), + ); WorkflowPage.actions.addNodeToCanvas(CODE_NODE_NAME); WorkflowPage.actions.zoomToFit(); - cy.get('.plus-draggable-endpoint').filter(':visible').should('not.have.class', 'ep-success'); - cy.get('.jtk-connector.success').should('have.length', 3); - cy.get('.jtk-connector').should('have.length', 4); + cy.ifCanvasVersion( + () => + cy + .get('.plus-draggable-endpoint') + .filter(':visible') + .should('not.have.class', 'ep-success'), + () => + cy.getByTestId('canvas-handle-plus').should('not.have.attr', 'data-plus-type', 'success'), + ); + + cy.ifCanvasVersion( + () => cy.get('.jtk-connector.success').should('have.length', 3), + // The new version of the canvas correctly shows executed data being passed to the input of the next node + () => cy.get('[data-edge-status=success]').should('have.length', 4), + ); + cy.ifCanvasVersion( + () => cy.get('.data-count').should('have.length', 4), + () => cy.getByTestId('canvas-node-status-success').should('have.length', 4), + ); }); it('should delete node using context menu', () => { @@ -194,19 +233,29 @@ describe('Canvas Node Manipulation and Navigation', () => { WorkflowPage.getters.canvasNodes().should('have.length', 0); }); + // FIXME: Canvas V2: Figure out how to test moving of the node it('should move node', () => { WorkflowPage.actions.addNodeToCanvas(MANUAL_TRIGGER_NODE_NAME); WorkflowPage.getters.canvasNodeByName(MANUAL_TRIGGER_NODE_DISPLAY_NAME).click(); WorkflowPage.actions.addNodeToCanvas(CODE_NODE_NAME); + WorkflowPage.actions.zoomToFit(); WorkflowPage.getters .canvasNodes() .last() .then(($node) => { const { left, top } = $node.position(); - cy.drag('[data-test-id="canvas-node"].jtk-drag-selected', [50, 150], { - clickToFinish: true, - }); + + if (isCanvasV2()) { + cy.drag('.vue-flow__node', [300, 300], { + realMouse: true, + }); + } else { + cy.drag('[data-test-id="canvas-node"].jtk-drag-selected', [50, 150], { + clickToFinish: true, + }); + } + WorkflowPage.getters .canvasNodes() .last() @@ -218,91 +267,80 @@ describe('Canvas Node Manipulation and Navigation', () => { }); }); - it('should zoom in', () => { - WorkflowPage.getters.zoomInButton().should('be.visible').click(); - WorkflowPage.getters - .nodeView() - .should( - 'have.css', - 'transform', - `matrix(${ZOOM_IN_X1_FACTOR}, 0, 0, ${ZOOM_IN_X1_FACTOR}, 0, 0)`, + describe('Canvas Zoom Functionality', () => { + const getContainer = () => + cy.ifCanvasVersion( + () => WorkflowPage.getters.nodeView(), + () => WorkflowPage.getters.canvasViewport(), ); - WorkflowPage.getters.zoomInButton().click(); - WorkflowPage.getters - .nodeView() - .should( - 'have.css', - 'transform', - `matrix(${ZOOM_IN_X2_FACTOR}, 0, 0, ${ZOOM_IN_X2_FACTOR}, 0, 0)`, - ); - }); + const checkZoomLevel = (expectedFactor: number) => { + return getContainer().should(($nodeView) => { + const newTransform = $nodeView.css('transform'); + const newScale = parseFloat(newTransform.split(',')[0].slice(7)); - it('should zoom out', () => { - WorkflowPage.getters.zoomOutButton().should('be.visible').click(); - WorkflowPage.getters - .nodeView() - .should( - 'have.css', - 'transform', - `matrix(${ZOOM_OUT_X1_FACTOR}, 0, 0, ${ZOOM_OUT_X1_FACTOR}, 0, 0)`, - ); - WorkflowPage.getters.zoomOutButton().click(); - WorkflowPage.getters - .nodeView() - .should( - 'have.css', - 'transform', - `matrix(${ZOOM_OUT_X2_FACTOR}, 0, 0, ${ZOOM_OUT_X2_FACTOR}, 0, 0)`, - ); - }); + expect(newScale).to.be.closeTo(expectedFactor, 0.2); + }); + }; - it('should zoom using scroll or pinch gesture', () => { - WorkflowPage.actions.pinchToZoom(1, 'zoomIn'); - WorkflowPage.getters - .nodeView() - .should( - 'have.css', - 'transform', - `matrix(${PINCH_ZOOM_IN_FACTOR}, 0, 0, ${PINCH_ZOOM_IN_FACTOR}, 0, 0)`, + const zoomAndCheck = (action: 'zoomIn' | 'zoomOut', expectedFactor: number) => { + WorkflowPage.getters[`${action}Button`]().click(); + checkZoomLevel(expectedFactor); + }; + + it('should zoom in', () => { + WorkflowPage.getters.zoomInButton().should('be.visible'); + getContainer().then(($nodeView) => { + const initialTransform = $nodeView.css('transform'); + const initialScale = + initialTransform === 'none' ? 1 : parseFloat(initialTransform.split(',')[0].slice(7)); + + zoomAndCheck('zoomIn', initialScale * ZOOM_IN_X1_FACTOR); + zoomAndCheck('zoomIn', initialScale * ZOOM_IN_X2_FACTOR); + }); + }); + + it('should zoom out', () => { + zoomAndCheck('zoomOut', ZOOM_OUT_X1_FACTOR); + zoomAndCheck('zoomOut', ZOOM_OUT_X2_FACTOR); + }); + + it('should zoom using scroll or pinch gesture', () => { + WorkflowPage.actions.pinchToZoom(1, 'zoomIn'); + + // V2 Canvas is using the same zoom factor for both pinch and scroll + cy.ifCanvasVersion( + () => checkZoomLevel(PINCH_ZOOM_IN_FACTOR), + () => checkZoomLevel(ZOOM_IN_X1_FACTOR), ); - WorkflowPage.actions.pinchToZoom(1, 'zoomOut'); - // Zoom in 1x + Zoom out 1x should reset to default (=1) - WorkflowPage.getters.nodeView().should('have.css', 'transform', 'matrix(1, 0, 0, 1, 0, 0)'); + WorkflowPage.actions.pinchToZoom(1, 'zoomOut'); + checkZoomLevel(1); // Zoom in 1x + Zoom out 1x should reset to default (=1) - WorkflowPage.actions.pinchToZoom(1, 'zoomOut'); - WorkflowPage.getters - .nodeView() - .should( - 'have.css', - 'transform', - `matrix(${PINCH_ZOOM_OUT_FACTOR}, 0, 0, ${PINCH_ZOOM_OUT_FACTOR}, 0, 0)`, + WorkflowPage.actions.pinchToZoom(1, 'zoomOut'); + + cy.ifCanvasVersion( + () => checkZoomLevel(PINCH_ZOOM_OUT_FACTOR), + () => checkZoomLevel(ZOOM_OUT_X1_FACTOR), ); - }); + }); - it('should reset zoom', () => { - // Reset zoom should not appear until zoom level changed - WorkflowPage.getters.resetZoomButton().should('not.exist'); - WorkflowPage.getters.zoomInButton().click(); - WorkflowPage.getters.resetZoomButton().should('be.visible').click(); - WorkflowPage.getters - .nodeView() - .should( - 'have.css', - 'transform', - `matrix(${DEFAULT_ZOOM_FACTOR}, 0, 0, ${DEFAULT_ZOOM_FACTOR}, 0, 0)`, - ); - }); + it('should reset zoom', () => { + WorkflowPage.getters.resetZoomButton().should('not.exist'); + WorkflowPage.getters.zoomInButton().click(); + WorkflowPage.getters.resetZoomButton().should('be.visible').click(); + checkZoomLevel(DEFAULT_ZOOM_FACTOR); + }); - it('should zoom to fit', () => { - WorkflowPage.actions.addNodeToCanvas(MANUAL_TRIGGER_NODE_NAME); - WorkflowPage.actions.addNodeToCanvas(CODE_NODE_NAME); - WorkflowPage.actions.addNodeToCanvas(CODE_NODE_NAME); - WorkflowPage.actions.addNodeToCanvas(CODE_NODE_NAME); - // At this point last added node should be off-screen - WorkflowPage.getters.canvasNodes().last().should('not.be.visible'); - WorkflowPage.getters.zoomToFitButton().click(); - WorkflowPage.getters.canvasNodes().last().should('be.visible'); + it('should zoom to fit', () => { + WorkflowPage.actions.addNodeToCanvas(MANUAL_TRIGGER_NODE_NAME); + WorkflowPage.actions.addNodeToCanvas(CODE_NODE_NAME); + WorkflowPage.actions.addNodeToCanvas(CODE_NODE_NAME); + WorkflowPage.actions.addNodeToCanvas(CODE_NODE_NAME); + // At this point last added node should be off-screen + WorkflowPage.getters.canvasNodes().last().should('not.be.visible'); + WorkflowPage.getters.zoomToFitButton().click(); + WorkflowPage.getters.canvasNodes().last().should('be.visible'); + }); }); it('should disable node (context menu or shortcut)', () => { @@ -426,9 +464,9 @@ describe('Canvas Node Manipulation and Navigation', () => { cy.reload(); cy.waitForLoad(); WorkflowPage.getters.canvasNodes().should('have.length', 2); - cy.get('.rect-input-endpoint.jtk-endpoint-connected').should('have.length', 1); + WorkflowPage.getters.nodeConnections().should('have.length', 1); }); - + // FIXME: Canvas V2: Credentials should show issue on the first open it('should remove unknown credentials on pasting workflow', () => { cy.fixture('workflow-with-unknown-credentials.json').then((data) => { cy.get('body').paste(JSON.stringify(data)); @@ -441,6 +479,7 @@ describe('Canvas Node Manipulation and Navigation', () => { }); }); + // FIXME: Canvas V2: Unknown nodes should still render connection endpoints it('should render connections correctly if unkown nodes are present', () => { const unknownNodeName = 'Unknown node'; cy.createFixtureWorkflow('workflow-with-unknown-nodes.json', 'Unknown nodes'); diff --git a/cypress/e2e/13-pinning.cy.ts b/cypress/e2e/13-pinning.cy.ts index 468e73276a..4f48fa4529 100644 --- a/cypress/e2e/13-pinning.cy.ts +++ b/cypress/e2e/13-pinning.cy.ts @@ -1,3 +1,6 @@ +import { nanoid } from 'nanoid'; + +import { simpleWebhookCall, waitForWebhook } from './16-webhook-node.cy'; import { HTTP_REQUEST_NODE_NAME, MANUAL_TRIGGER_NODE_NAME, @@ -7,13 +10,19 @@ import { } from '../constants'; import { WorkflowPage, NDV } from '../pages'; import { errorToast } from '../pages/notifications'; +import { getVisiblePopper } from '../utils'; const workflowPage = new WorkflowPage(); const ndv = new NDV(); describe('Data pinning', () => { + const maxPinnedDataSize = 16384; + beforeEach(() => { workflowPage.actions.visit(); + cy.window().then((win) => { + win.maxPinnedDataSize = maxPinnedDataSize; + }); }); it('Should be able to pin node output', () => { @@ -139,7 +148,7 @@ describe('Data pinning', () => { ndv.actions.pastePinnedData([ { - test: '1'.repeat(Cypress.env('MAX_PINNED_DATA_SIZE') as number), + test: '1'.repeat(maxPinnedDataSize), }, ]); errorToast().should('contain', 'Workflow has reached the maximum allowed pinned data size'); @@ -207,6 +216,42 @@ describe('Data pinning', () => { }, ); }); + + it('should show pinned data tooltip', () => { + const { callEndpoint } = simpleWebhookCall({ + method: 'GET', + webhookPath: nanoid(), + executeNow: false, + }); + + ndv.actions.close(); + workflowPage.actions.executeWorkflow(); + cy.wait(waitForWebhook); + + // hide other visible popper on workflow execute button + workflowPage.getters.canvasNodes().eq(0).click(); + + callEndpoint((response) => { + expect(response.status).to.eq(200); + getVisiblePopper().should('have.length', 1); + getVisiblePopper() + .eq(0) + .should( + 'have.text', + 'You can pin this output instead of waiting for a test event. Open node to do so.', + ); + }); + }); + + it('should not show pinned data tooltip', () => { + cy.createFixtureWorkflow('Pinned_webhook_node.json', 'Test'); + workflowPage.actions.executeWorkflow(); + + // hide other visible popper on workflow execute button + workflowPage.getters.canvasNodes().eq(0).click(); + + getVisiblePopper().should('have.length', 0); + }); }); function setExpressionOnStringValueInSet(expression: string) { diff --git a/cypress/e2e/14-mapping.cy.ts b/cypress/e2e/14-mapping.cy.ts index 0579bba24d..3bbbd0b293 100644 --- a/cypress/e2e/14-mapping.cy.ts +++ b/cypress/e2e/14-mapping.cy.ts @@ -1,10 +1,10 @@ -import { WorkflowPage, NDV } from '../pages'; -import { getVisibleSelect } from '../utils'; import { MANUAL_TRIGGER_NODE_NAME, MANUAL_TRIGGER_NODE_DISPLAY_NAME, SCHEDULE_TRIGGER_NODE_NAME, } from './../constants'; +import { WorkflowPage, NDV } from '../pages'; +import { getVisibleSelect } from '../utils'; const workflowPage = new WorkflowPage(); const ndv = new NDV(); @@ -40,11 +40,13 @@ describe('Data mapping', () => { ndv.actions.mapDataFromHeader(1, 'value'); ndv.getters.inlineExpressionEditorInput().should('have.text', '{{ $json.timestamp }}'); + ndv.getters.inlineExpressionEditorInput().type('{esc}'); + ndv.getters.parameterExpressionPreview('value').should('include.text', '2024'); ndv.actions.mapDataFromHeader(2, 'value'); ndv.getters .inlineExpressionEditorInput() - .should('have.text', "{{ $json.timestamp }} {{ $json['Readable date'] }}"); + .should('have.text', "{{ $json['Readable date'] }}{{ $json.timestamp }}"); }); it('maps expressions from table json, and resolves value based on hover', () => { @@ -133,6 +135,7 @@ describe('Data mapping', () => { ndv.actions.mapToParameter('value'); ndv.getters.inlineExpressionEditorInput().should('have.text', '{{ $json.input[0].count }}'); + ndv.getters.inlineExpressionEditorInput().type('{esc}'); ndv.getters.parameterExpressionPreview('value').should('include.text', '0'); ndv.getters @@ -145,8 +148,9 @@ describe('Data mapping', () => { ndv.actions.mapToParameter('value'); ndv.getters .inlineExpressionEditorInput() - .should('have.text', '{{ $json.input[0].count }} {{ $json.input }}'); - ndv.actions.validateExpressionPreview('value', '0 [object Object]'); + .should('have.text', '{{ $json.input }}{{ $json.input[0].count }}'); + ndv.getters.inlineExpressionEditorInput().type('{esc}'); + ndv.actions.validateExpressionPreview('value', '[object Object]0'); }); it('maps expressions from schema view', () => { @@ -163,6 +167,7 @@ describe('Data mapping', () => { ndv.actions.mapToParameter('value'); ndv.getters.inlineExpressionEditorInput().should('have.text', '{{ $json.input[0].count }}'); + ndv.getters.inlineExpressionEditorInput().type('{esc}'); ndv.actions.validateExpressionPreview('value', '0'); ndv.getters.inputDataContainer().find('span').contains('input').realMouseDown(); @@ -170,8 +175,8 @@ describe('Data mapping', () => { ndv.actions.mapToParameter('value'); ndv.getters .inlineExpressionEditorInput() - .should('have.text', '{{ $json.input[0].count }} {{ $json.input }}'); - ndv.actions.validateExpressionPreview('value', '0 [object Object]'); + .should('have.text', '{{ $json.input }}{{ $json.input[0].count }}'); + ndv.actions.validateExpressionPreview('value', '[object Object]0'); }); it('maps expressions from previous nodes', () => { @@ -192,6 +197,7 @@ describe('Data mapping', () => { ndv.getters .inlineExpressionEditorInput() .should('have.text', `{{ $('${SCHEDULE_TRIGGER_NODE_NAME}').item.json.input[0].count }}`); + ndv.getters.inlineExpressionEditorInput().type('{esc}'); ndv.actions.switchInputMode('Table'); ndv.actions.selectInputNode(SCHEDULE_TRIGGER_NODE_NAME); @@ -200,17 +206,17 @@ describe('Data mapping', () => { .inlineExpressionEditorInput() .should( 'have.text', - `{{ $('${SCHEDULE_TRIGGER_NODE_NAME}').item.json.input[0].count }} {{ $('${SCHEDULE_TRIGGER_NODE_NAME}').item.json.input }}`, + `{{ $('${SCHEDULE_TRIGGER_NODE_NAME}').item.json.input }}{{ $('${SCHEDULE_TRIGGER_NODE_NAME}').item.json.input[0].count }}`, ); ndv.actions.selectInputNode('Set'); ndv.getters.executingLoader().should('not.exist'); ndv.getters.inputDataContainer().should('exist'); - ndv.actions.validateExpressionPreview('value', '0 [object Object]'); + ndv.actions.validateExpressionPreview('value', '[object Object]0'); ndv.getters.inputTbodyCell(2, 0).realHover(); - ndv.actions.validateExpressionPreview('value', '1 [object Object]'); + ndv.actions.validateExpressionPreview('value', '[object Object]1'); }); it('maps keys to path', () => { @@ -271,12 +277,12 @@ describe('Data mapping', () => { ndv.actions.typeIntoParameterInput('value', 'fun'); ndv.actions.clearParameterInput('value'); // keep focus on param - cy.wait(300); ndv.getters.inputDataContainer().should('exist').find('span').contains('count').realMouseDown(); ndv.actions.mapToParameter('value'); ndv.getters.inlineExpressionEditorInput().should('have.text', '{{ $json.input[0].count }}'); + ndv.getters.inlineExpressionEditorInput().type('{esc}'); ndv.actions.validateExpressionPreview('value', '0'); ndv.getters.inputDataContainer().find('span').contains('input').realMouseDown(); @@ -284,8 +290,8 @@ describe('Data mapping', () => { ndv.actions.mapToParameter('value'); ndv.getters .inlineExpressionEditorInput() - .should('have.text', '{{ $json.input[0].count }} {{ $json.input }}'); - ndv.actions.validateExpressionPreview('value', '0 [object Object]'); + .should('have.text', '{{ $json.input }}{{ $json.input[0].count }}'); + ndv.actions.validateExpressionPreview('value', '[object Object]0'); }); it('renders expression preview when a previous node is selected', () => { @@ -317,19 +323,12 @@ describe('Data mapping', () => { workflowPage.actions.zoomToFit(); workflowPage.actions.openNode('Set'); - ndv.actions.clearParameterInput('value'); - cy.get('body').type('{esc}'); - ndv.getters.parameterInput('includeOtherFields').find('input[type="checkbox"]').should('exist'); ndv.getters.parameterInput('includeOtherFields').find('input[type="text"]').should('not.exist'); - ndv.getters - .inputDataContainer() - .should('exist') - .find('span') - .contains('count') - .realMouseDown() - .realMouseMove(100, 100); - cy.wait(50); + const pill = ndv.getters.inputDataContainer().find('span').contains('count'); + pill.should('be.visible'); + pill.realMouseDown(); + pill.realMouseMove(100, 100); ndv.getters .parameterInput('includeOtherFields') @@ -340,13 +339,40 @@ describe('Data mapping', () => { .find('input[type="text"]') .should('exist') .invoke('css', 'border') - .then((border) => expect(border).to.include('dashed rgb(90, 76, 194)')); + .should('include', 'dashed rgb(90, 76, 194)'); ndv.getters .parameterInput('value') .find('input[type="text"]') .should('exist') .invoke('css', 'border') - .then((border) => expect(border).to.include('dashed rgb(90, 76, 194)')); + .should('include', 'dashed rgb(90, 76, 194)'); + }); + + it('maps expressions to a specific location in the editor', () => { + cy.fixture('Test_workflow_3.json').then((data) => { + cy.get('body').paste(JSON.stringify(data)); + }); + workflowPage.actions.zoomToFit(); + + workflowPage.actions.openNode('Set'); + ndv.actions.typeIntoParameterInput('value', '='); + ndv.getters.inlineExpressionEditorInput().find('.cm-content').paste('hello world\n\nnewline'); + ndv.getters.inlineExpressionEditorInput().type('{esc}'); + + ndv.getters.inputDataContainer().should('exist').find('span').contains('count').realMouseDown(); + ndv.actions.mapToParameter('value'); + ndv.getters + .inlineExpressionEditorInput() + .should('have.text', '{{ $json.input[0].count }}hello worldnewline'); + ndv.getters.inlineExpressionEditorInput().type('{esc}'); + ndv.actions.validateExpressionPreview('value', '0hello world\n\nnewline'); + + ndv.getters.inputDataContainer().find('span').contains('input').realMouseDown(); + ndv.actions.mapToParameter('value', 'center'); + + ndv.getters + .inlineExpressionEditorInput() + .should('have.text', '{{ $json.input[0].count }}hello world{{ $json.input }}newline'); }); }); diff --git a/cypress/e2e/15-scheduler-node.cy.ts b/cypress/e2e/15-scheduler-node.cy.ts index fecaef038a..65f0904543 100644 --- a/cypress/e2e/15-scheduler-node.cy.ts +++ b/cypress/e2e/15-scheduler-node.cy.ts @@ -1,9 +1,5 @@ -import { WorkflowPage, WorkflowsPage, NDV } from '../pages'; -import { BACKEND_BASE_URL } from '../constants'; -import { getVisibleSelect } from '../utils'; -import type { ExecutionResponse } from '../types'; +import { WorkflowPage, NDV } from '../pages'; -const workflowsPage = new WorkflowsPage(); const workflowPage = new WorkflowPage(); const ndv = new NDV(); @@ -19,53 +15,4 @@ describe('Schedule Trigger node', () => { ndv.getters.outputPanel().contains('timestamp'); ndv.getters.backToCanvas().click(); }); - - it('should execute once per second when activated', () => { - workflowPage.actions.renameWorkflow('Schedule Trigger Workflow'); - workflowPage.actions.addInitialNodeToCanvas('Schedule Trigger'); - workflowPage.actions.openNode('Schedule Trigger'); - - cy.getByTestId('parameter-input-field').click(); - getVisibleSelect().find('.option-headline').contains('Seconds').click(); - cy.getByTestId('parameter-input-secondsInterval').clear().type('1'); - - ndv.getters.backToCanvas().click(); - workflowPage.actions.saveWorkflowOnButtonClick(); - workflowPage.actions.activateWorkflow(); - workflowPage.getters.activatorSwitch().should('have.class', 'is-checked'); - - cy.url().then((url) => { - const workflowId = url.split('/').pop(); - - cy.wait(1200); - cy.request('GET', `${BACKEND_BASE_URL}/rest/executions`).then( - (response) => { - expect(response.status).to.eq(200); - expect(workflowId).to.not.be.undefined; - expect(response.body.data.results.length).to.be.greaterThan(0); - const matchingExecutions = response.body.data.results.filter( - (execution) => execution.workflowId === workflowId, - ); - expect(matchingExecutions).to.have.length(1); - - cy.wait(1200); - cy.request('GET', `${BACKEND_BASE_URL}/rest/executions`).then( - (response1) => { - expect(response1.status).to.eq(200); - expect(response1.body.data.results.length).to.be.greaterThan(0); - const matchingExecutions1 = response1.body.data.results.filter( - (execution: any) => execution.workflowId === workflowId, - ); - expect(matchingExecutions1).to.have.length(2); - - workflowPage.actions.activateWorkflow(); - workflowPage.getters.activatorSwitch().should('not.have.class', 'is-checked'); - cy.visit(workflowsPage.url); - workflowsPage.actions.deleteWorkFlow('Schedule Trigger Workflow'); - }, - ); - }, - ); - }); - }); }); diff --git a/cypress/e2e/16-form-trigger-node.cy.ts b/cypress/e2e/16-form-trigger-node.cy.ts index 0162479f7c..60fbd7c419 100644 --- a/cypress/e2e/16-form-trigger-node.cy.ts +++ b/cypress/e2e/16-form-trigger-node.cy.ts @@ -16,12 +16,14 @@ describe('n8n Form Trigger', () => { ndv.getters.parameterInput('formDescription').type('Test Form Description'); ndv.getters.parameterInput('fieldLabel').type('Test Field 1'); ndv.getters.backToCanvas().click(); - workflowPage.getters.nodeIssuesByName('n8n Form Trigger').should('not.exist'); + workflowPage.getters.nodeIssuesByName('On form submission').should('not.exist'); }); it('should fill up form fields', () => { - workflowPage.actions.addInitialNodeToCanvas('n8n Form Trigger'); - workflowPage.getters.canvasNodes().first().dblclick(); + workflowPage.actions.addInitialNodeToCanvas('n8n Form Trigger', { + isTrigger: true, + action: 'On new n8n Form event', + }); ndv.getters.parameterInput('formTitle').type('Test Form'); ndv.getters.parameterInput('formDescription').type('Test Form Description'); //fill up first field of type number @@ -96,6 +98,6 @@ describe('n8n Form Trigger', () => { .type('Your test form was successfully submitted'); ndv.getters.backToCanvas().click(); - workflowPage.getters.nodeIssuesByName('n8n Form Trigger').should('not.exist'); + workflowPage.getters.nodeIssuesByName('On form submission').should('not.exist'); }); }); diff --git a/cypress/e2e/16-webhook-node.cy.ts b/cypress/e2e/16-webhook-node.cy.ts index 791a704174..3d6c1049a2 100644 --- a/cypress/e2e/16-webhook-node.cy.ts +++ b/cypress/e2e/16-webhook-node.cy.ts @@ -1,14 +1,15 @@ import { nanoid } from 'nanoid'; + +import { BACKEND_BASE_URL, EDIT_FIELDS_SET_NODE_NAME } from '../constants'; import { WorkflowPage, NDV, CredentialsModal } from '../pages'; import { cowBase64 } from '../support/binaryTestFiles'; -import { BACKEND_BASE_URL, EDIT_FIELDS_SET_NODE_NAME } from '../constants'; import { getVisibleSelect } from '../utils'; const workflowPage = new WorkflowPage(); const ndv = new NDV(); const credentialsModal = new CredentialsModal(); -const waitForWebhook = 500; +export const waitForWebhook = 500; interface SimpleWebhookCallOptions { method: string; @@ -20,7 +21,7 @@ interface SimpleWebhookCallOptions { authentication?: string; } -const simpleWebhookCall = (options: SimpleWebhookCallOptions) => { +export const simpleWebhookCall = (options: SimpleWebhookCallOptions) => { const { authentication, method, @@ -64,15 +65,23 @@ const simpleWebhookCall = (options: SimpleWebhookCallOptions) => { getVisibleSelect().find('.option-headline').contains(responseData).click(); } + const callEndpoint = (cb: (response: Cypress.Response) => void) => { + cy.request(method, `${BACKEND_BASE_URL}/webhook-test/${webhookPath}`).then(cb); + }; + if (executeNow) { ndv.actions.execute(); cy.wait(waitForWebhook); - cy.request(method, `${BACKEND_BASE_URL}/webhook-test/${webhookPath}`).then((response) => { + callEndpoint((response) => { expect(response.status).to.eq(200); ndv.getters.outputPanel().contains('headers'); }); } + + return { + callEndpoint, + }; }; describe('Webhook Trigger node', () => { diff --git a/cypress/e2e/17-sharing.cy.ts b/cypress/e2e/17-sharing.cy.ts index 15c63eb6c2..51b4a674d3 100644 --- a/cypress/e2e/17-sharing.cy.ts +++ b/cypress/e2e/17-sharing.cy.ts @@ -1,3 +1,4 @@ +import * as projects from '../composables/projects'; import { INSTANCE_MEMBERS, INSTANCE_OWNER, INSTANCE_ADMIN, NOTION_NODE_NAME } from '../constants'; import { CredentialsModal, @@ -7,8 +8,7 @@ import { WorkflowSharingModal, WorkflowsPage, } from '../pages'; -import { getVisibleSelect } from '../utils'; -import * as projects from '../composables/projects'; +import { getVisibleDropdown, getVisiblePopper, getVisibleSelect } from '../utils'; /** * User U1 - Instance owner @@ -135,7 +135,11 @@ describe('Sharing', { disableAutoLogin: true }, () => { workflowsPage.getters.workflowCards().should('have.length', 2); workflowsPage.getters.workflowCard('Workflow W1').click(); workflowPage.actions.openNode('Notion'); - ndv.getters.credentialInput().should('have.value', 'Credential C1').should('be.disabled'); + ndv.getters + .credentialInput() + .find('input') + .should('have.value', 'Credential C1') + .should('be.enabled'); ndv.actions.close(); cy.waitForLoad(); @@ -176,7 +180,8 @@ describe('Sharing', { disableAutoLogin: true }, () => { ).should('be.visible'); credentialsModal.getters.usersSelect().click(); - cy.getByTestId('project-sharing-info') + getVisiblePopper() + .find('[data-test-id="project-sharing-info"]') .filter(':visible') .should('have.length', 3) .contains(INSTANCE_ADMIN.email) @@ -188,11 +193,81 @@ describe('Sharing', { disableAutoLogin: true }, () => { credentialsModal.actions.saveSharing(); credentialsModal.actions.close(); }); + + it('credentials should work between team and personal projects', () => { + cy.resetDatabase(); + cy.enableFeature('sharing'); + cy.enableFeature('advancedPermissions'); + cy.enableFeature('projectRole:admin'); + cy.enableFeature('projectRole:editor'); + cy.changeQuota('maxTeamProjects', -1); + + cy.signinAsOwner(); + cy.visit('/'); + + projects.createProject('Development'); + + projects.getHomeButton().click(); + workflowsPage.getters.newWorkflowButtonCard().click(); + projects.createWorkflow('Test_workflow_1.json', 'Test workflow'); + + projects.getHomeButton().click(); + projects.getProjectTabCredentials().click(); + credentialsPage.getters.emptyListCreateCredentialButton().click(); + projects.createCredential('Notion API'); + + credentialsPage.getters.credentialCard('Notion API').click(); + credentialsModal.actions.changeTab('Sharing'); + credentialsModal.getters.usersSelect().click(); + getVisibleSelect() + .find('li') + .should('have.length', 4) + .filter(':contains("Development")') + .should('have.length', 1) + .click(); + credentialsModal.getters.saveButton().click(); + credentialsModal.getters.saveButton().should('have.text', 'Saved'); + credentialsModal.actions.close(); + + projects.getProjectTabWorkflows().click(); + workflowsPage.getters.workflowCardActions('Test workflow').click(); + getVisibleDropdown().find('li').contains('Share').click(); + + workflowSharingModal.getters.usersSelect().filter(':visible').click(); + getVisibleSelect().find('li').should('have.length', 3).first().click(); + workflowSharingModal.getters.saveButton().click(); + + projects.getMenuItems().first().click(); + workflowsPage.getters.newWorkflowButtonCard().click(); + projects.createWorkflow('Test_workflow_1.json', 'Test workflow 2'); + workflowPage.actions.openShareModal(); + workflowSharingModal.getters.usersSelect().should('not.exist'); + + cy.get('body').type('{esc}'); + + projects.getMenuItems().first().click(); + projects.getProjectTabCredentials().click(); + credentialsPage.getters.createCredentialButton().click(); + projects.createCredential('Notion API 2', false); + credentialsModal.actions.changeTab('Sharing'); + credentialsModal.getters.usersSelect().click(); + getVisibleSelect().find('li').should('have.length', 4).first().click(); + credentialsModal.getters.saveButton().click(); + credentialsModal.getters.saveButton().should('have.text', 'Saved'); + credentialsModal.actions.close(); + + credentialsPage.getters + .credentialCards() + .should('have.length', 2) + .filter(':contains("Personal")') + .should('have.length', 1); + }); }); describe('Credential Usage in Cross Shared Workflows', () => { beforeEach(() => { cy.resetDatabase(); + cy.enableFeature('sharing'); cy.enableFeature('advancedPermissions'); cy.enableFeature('projectRole:admin'); cy.enableFeature('projectRole:editor'); @@ -203,23 +278,18 @@ describe('Credential Usage in Cross Shared Workflows', () => { }); it('should only show credentials from the same team project', () => { - cy.enableFeature('advancedPermissions'); - cy.enableFeature('projectRole:admin'); - cy.enableFeature('projectRole:editor'); - cy.changeQuota('maxTeamProjects', -1); - // Create a notion credential in the home project credentialsPage.getters.emptyListCreateCredentialButton().click(); credentialsModal.actions.createNewCredential('Notion API'); // Create a notion credential in one project - projects.actions.createProject('Development'); + projects.createProject('Development'); projects.getProjectTabCredentials().click(); credentialsPage.getters.emptyListCreateCredentialButton().click(); credentialsModal.actions.createNewCredential('Notion API'); // Create a notion credential in another project - projects.actions.createProject('Test'); + projects.createProject('Test'); projects.getProjectTabCredentials().click(); credentialsPage.getters.emptyListCreateCredentialButton().click(); credentialsModal.actions.createNewCredential('Notion API'); @@ -235,9 +305,6 @@ describe('Credential Usage in Cross Shared Workflows', () => { }); it('should only show credentials in their personal project for members', () => { - cy.enableFeature('sharing'); - cy.reload(); - // Create a notion credential as the owner credentialsPage.getters.emptyListCreateCredentialButton().click(); credentialsModal.actions.createNewCredential('Notion API'); @@ -267,8 +334,6 @@ describe('Credential Usage in Cross Shared Workflows', () => { it('should only show credentials in their personal project for members if the workflow was shared with them', () => { const workflowName = 'Test workflow'; - cy.enableFeature('sharing'); - cy.reload(); // Create a notion credential as the owner and a workflow that is shared // with member 0 @@ -299,7 +364,6 @@ describe('Credential Usage in Cross Shared Workflows', () => { it("should show all credentials from all personal projects the workflow's been shared into for the global owner", () => { const workflowName = 'Test workflow'; - cy.enableFeature('sharing'); // As member 1, create a new notion credential. This should not show up. cy.signinAsMember(1); @@ -344,8 +408,6 @@ describe('Credential Usage in Cross Shared Workflows', () => { }); it('should show all personal credentials if the global owner owns the workflow', () => { - cy.enableFeature('sharing'); - // As member 0, create a new notion credential. cy.signinAsMember(); cy.visit(credentialsPage.url); diff --git a/cypress/e2e/17-workflow-tags.cy.ts b/cypress/e2e/17-workflow-tags.cy.ts index cede363006..26ea7cbe2c 100644 --- a/cypress/e2e/17-workflow-tags.cy.ts +++ b/cypress/e2e/17-workflow-tags.cy.ts @@ -1,4 +1,5 @@ import { WorkflowPage } from '../pages'; +import { getVisibleSelect } from '../utils'; const wf = new WorkflowPage(); @@ -51,28 +52,6 @@ describe('Workflow tags', () => { wf.getters.tagPills().should('have.length', 0); // none attached }); - it('should update a tag via modal', () => { - wf.actions.openTagManagerModal(); - - const [first] = TEST_TAGS; - - cy.contains('Create a tag').click(); - cy.getByTestId('tags-table').find('input').type(first).type('{enter}'); - cy.getByTestId('tags-table').should('contain.text', first); - cy.getByTestId('edit-tag-button').eq(-1).click({ force: true }); - cy.wait(300); - cy.getByTestId('tags-table') - .find('.el-input--large') - .should('be.visible') - .type(' Updated') - .type('{enter}'); - cy.contains('Done').click(); - wf.getters.createTagButton().click(); - wf.getters.tagsInDropdown().should('have.length', 1); // one stored - wf.getters.tagsInDropdown().contains('Updated').should('exist'); - wf.getters.tagPills().should('have.length', 0); // none attached - }); - it('should detach a tag inline by clicking on X on tag pill', () => { wf.getters.createTagButton().click(); wf.actions.addTags(TEST_TAGS); @@ -86,10 +65,26 @@ describe('Workflow tags', () => { it('should detach a tag inline by clicking on dropdown list item', () => { wf.getters.createTagButton().click(); wf.actions.addTags(TEST_TAGS); - wf.getters.nthTagPill(1).click(); + wf.getters.workflowTagsContainer().click(); wf.getters.tagsInDropdown().filter('.selected').first().click(); cy.get('body').click(0, 0); wf.getters.workflowTags().click(); wf.getters.tagPills().should('have.length', TEST_TAGS.length - 1); }); + + it('should not show non existing tag as a selectable option', () => { + const NON_EXISTING_TAG = 'My Test Tag'; + + wf.getters.createTagButton().click(); + wf.actions.addTags(TEST_TAGS); + cy.get('body').click(0, 0); + wf.getters.workflowTags().click(); + wf.getters.workflowTagsInput().type(NON_EXISTING_TAG); + + getVisibleSelect() + .find('li') + .should('have.length', 2) + .filter(`:contains("${NON_EXISTING_TAG}")`) + .should('not.have.length'); + }); }); diff --git a/cypress/e2e/18-user-management.cy.ts b/cypress/e2e/18-user-management.cy.ts index b53b0fdf53..fe91a72935 100644 --- a/cypress/e2e/18-user-management.cy.ts +++ b/cypress/e2e/18-user-management.cy.ts @@ -1,8 +1,8 @@ import { INSTANCE_MEMBERS, INSTANCE_OWNER, INSTANCE_ADMIN } from '../constants'; import { MainSidebar, SettingsSidebar, SettingsUsersPage } from '../pages'; +import { errorToast, successToast } from '../pages/notifications'; import { PersonalSettingsPage } from '../pages/settings-personal'; import { getVisibleSelect } from '../utils'; -import { errorToast, successToast } from '../pages/notifications'; /** * User A - Instance owner diff --git a/cypress/e2e/1858-PAY-can-use-context-menu.ts b/cypress/e2e/1858-PAY-can-use-context-menu.ts new file mode 100644 index 0000000000..6727df4166 --- /dev/null +++ b/cypress/e2e/1858-PAY-can-use-context-menu.ts @@ -0,0 +1,21 @@ +import { WorkflowPage as WorkflowPageClass } from '../pages/workflow'; + +const WorkflowPage = new WorkflowPageClass(); + +describe('PAY-1858 context menu', () => { + it('can use context menu on saved workflow', () => { + WorkflowPage.actions.visit(); + cy.createFixtureWorkflow('Test_workflow_filter.json', 'test'); + + WorkflowPage.getters.canvasNodes().should('have.length', 5); + WorkflowPage.actions.deleteNodeFromContextMenu('Then'); + WorkflowPage.getters.canvasNodes().should('have.length', 4); + + WorkflowPage.actions.hitSaveWorkflow(); + + cy.reload(); + WorkflowPage.getters.canvasNodes().should('have.length', 4); + WorkflowPage.actions.deleteNodeFromContextMenu('Code'); + WorkflowPage.getters.canvasNodes().should('have.length', 3); + }); +}); diff --git a/cypress/e2e/19-execution.cy.ts b/cypress/e2e/19-execution.cy.ts index 804e81d4e6..5be2399253 100644 --- a/cypress/e2e/19-execution.cy.ts +++ b/cypress/e2e/19-execution.cy.ts @@ -1,6 +1,7 @@ -import { NDV, WorkflowExecutionsTab, WorkflowPage as WorkflowPageClass } from '../pages'; import { SCHEDULE_TRIGGER_NODE_NAME, EDIT_FIELDS_SET_NODE_NAME } from '../constants'; +import { NDV, WorkflowExecutionsTab, WorkflowPage as WorkflowPageClass } from '../pages'; import { clearNotifications, errorToast, successToast } from '../pages/notifications'; +import { isCanvasV2 } from '../utils/workflowUtils'; const workflowPage = new WorkflowPageClass(); const executionsTab = new WorkflowExecutionsTab(); @@ -117,15 +118,22 @@ describe('Execution', () => { .canvasNodeByName('Manual') .within(() => cy.get('.fa-check')) .should('exist'); - workflowPage.getters - .canvasNodeByName('Wait') - .within(() => cy.get('.fa-sync-alt').should('not.visible')); + + if (isCanvasV2()) { + workflowPage.getters + .canvasNodeByName('Wait') + .within(() => cy.get('.fa-sync-alt').should('not.exist')); + } else { + workflowPage.getters + .canvasNodeByName('Wait') + .within(() => cy.get('.fa-sync-alt').should('not.be.visible')); + } + workflowPage.getters .canvasNodeByName('Set') .within(() => cy.get('.fa-check').should('not.exist')); successToast().should('be.visible'); - clearNotifications(); // Clear execution data workflowPage.getters.clearExecutionDataButton().should('be.visible'); @@ -206,6 +214,7 @@ describe('Execution', () => { workflowPage.getters.clearExecutionDataButton().should('not.exist'); }); + // FIXME: Canvas V2: Webhook should show waiting state but it doesn't it('should test webhook workflow stop', () => { cy.createFixtureWorkflow('Webhook_wait_set.json'); @@ -267,15 +276,22 @@ describe('Execution', () => { .canvasNodeByName('Webhook') .within(() => cy.get('.fa-check')) .should('exist'); - workflowPage.getters - .canvasNodeByName('Wait') - .within(() => cy.get('.fa-sync-alt').should('not.visible')); + + if (isCanvasV2()) { + workflowPage.getters + .canvasNodeByName('Wait') + .within(() => cy.get('.fa-sync-alt').should('not.exist')); + } else { + workflowPage.getters + .canvasNodeByName('Wait') + .within(() => cy.get('.fa-sync-alt').should('not.be.visible')); + } + workflowPage.getters .canvasNodeByName('Set') .within(() => cy.get('.fa-check').should('not.exist')); successToast().should('be.visible'); - clearNotifications(); // Clear execution data workflowPage.getters.clearExecutionDataButton().should('be.visible'); @@ -296,6 +312,7 @@ describe('Execution', () => { }); }); + // FIXME: Canvas V2: Missing pinned states for `edge-label-wrapper` describe('connections should be colored differently for pinned data', () => { beforeEach(() => { cy.createFixtureWorkflow('Schedule_pinned.json'); @@ -504,7 +521,7 @@ describe('Execution', () => { workflowPage.getters.clearExecutionDataButton().should('be.visible'); - cy.intercept('POST', '/rest/workflows/**/run').as('workflowRun'); + cy.intercept('POST', '/rest/workflows/**/run?**').as('workflowRun'); workflowPage.getters .canvasNodeByName('do something with them') @@ -526,7 +543,7 @@ describe('Execution', () => { workflowPage.getters.zoomToFitButton().click(); - cy.intercept('POST', '/rest/workflows/**/run').as('workflowRun'); + cy.intercept('POST', '/rest/workflows/**/run?**').as('workflowRun'); workflowPage.getters .canvasNodeByName('If') @@ -548,7 +565,7 @@ describe('Execution', () => { workflowPage.getters.clearExecutionDataButton().should('be.visible'); - cy.intercept('POST', '/rest/workflows/**/run').as('workflowRun'); + cy.intercept('POST', '/rest/workflows/**/run?**').as('workflowRun'); workflowPage.getters .canvasNodeByName('NoOp2') @@ -577,7 +594,7 @@ describe('Execution', () => { it('should successfully execute partial executions with nodes attached to the second output', () => { cy.createFixtureWorkflow('Test_Workflow_pairedItem_incomplete_manual_bug.json'); - cy.intercept('POST', '/rest/workflows/**/run').as('workflowRun'); + cy.intercept('POST', '/rest/workflows/**/run?**').as('workflowRun'); workflowPage.getters.zoomToFitButton().click(); workflowPage.getters.executeWorkflowButton().click(); @@ -597,7 +614,7 @@ describe('Execution', () => { it('should execute workflow partially up to the node that has issues', () => { cy.createFixtureWorkflow('Test_workflow_partial_execution_with_missing_credentials.json'); - cy.intercept('POST', '/rest/workflows/**/run').as('workflowRun'); + cy.intercept('POST', '/rest/workflows/**/run?**').as('workflowRun'); workflowPage.getters.zoomToFitButton().click(); workflowPage.getters.executeWorkflowButton().click(); @@ -617,4 +634,45 @@ describe('Execution', () => { errorToast().should('contain', 'Problem in node ‘Telegram‘'); }); + + it('should not show pinned data in production execution', () => { + cy.createFixtureWorkflow('Execution-pinned-data-check.json'); + + workflowPage.getters.zoomToFitButton().click(); + cy.intercept('PATCH', '/rest/workflows/*').as('workflowActivate'); + workflowPage.getters.activatorSwitch().click(); + + cy.wait('@workflowActivate'); + cy.get('body').type('{esc}'); + workflowPage.actions.openNode('Webhook'); + + cy.contains('label', 'Production URL').should('be.visible').click(); + cy.grantBrowserPermissions('clipboardReadWrite', 'clipboardSanitizedWrite'); + cy.get('.webhook-url').click(); + ndv.getters.backToCanvas().click(); + + cy.readClipboard().then((url) => { + cy.request({ + method: 'GET', + url, + }).then((resp) => { + expect(resp.status).to.eq(200); + }); + }); + + cy.intercept('GET', '/rest/executions/*').as('getExecution'); + executionsTab.actions.switchToExecutionsTab(); + + cy.wait('@getExecution'); + executionsTab.getters + .workflowExecutionPreviewIframe() + .should('be.visible') + .its('0.contentDocument.body') + .should('not.be.empty') + + .then(cy.wrap) + .find('.connection-run-items-label') + .filter(':contains("5 items")') + .should('have.length', 2); + }); }); diff --git a/cypress/e2e/2-credentials.cy.ts b/cypress/e2e/2-credentials.cy.ts index c96a792218..8ce3bc4080 100644 --- a/cypress/e2e/2-credentials.cy.ts +++ b/cypress/e2e/2-credentials.cy.ts @@ -1,5 +1,8 @@ -import type { ICredentialType } from 'n8n-workflow'; +import { type ICredentialType } from 'n8n-workflow'; + import { + AGENT_NODE_NAME, + AI_TOOL_HTTP_NODE_NAME, GMAIL_NODE_NAME, HTTP_REQUEST_NODE_NAME, NEW_GOOGLE_ACCOUNT_NAME, @@ -12,7 +15,7 @@ import { TRELLO_NODE_NAME, } from '../constants'; import { CredentialsModal, CredentialsPage, NDV, WorkflowPage } from '../pages'; -import { successToast } from '../pages/notifications'; +import { errorToast, successToast } from '../pages/notifications'; import { getVisibleSelect } from '../utils'; const credentialsPage = new CredentialsPage(); @@ -110,13 +113,13 @@ describe('Credentials', () => { workflowPage.getters.nodeCredentialsSelect().should('have.length', 2); workflowPage.getters.nodeCredentialsSelect().first().click(); - getVisibleSelect().find('li').last().click(); + getVisibleSelect().find('li').contains('Create New Credential').click(); // This one should show auth type selector credentialsModal.getters.credentialAuthTypeRadioButtons().should('have.length', 2); cy.get('body').type('{esc}'); workflowPage.getters.nodeCredentialsSelect().last().click(); - getVisibleSelect().find('li').last().click(); + getVisibleSelect().find('li').contains('Create New Credential').click(); // This one should not show auth type selector credentialsModal.getters.credentialsAuthTypeSelector().should('not.exist'); }); @@ -201,6 +204,31 @@ describe('Credentials', () => { .should('have.value', NEW_CREDENTIAL_NAME2); }); + it('should edit credential for non-standard credential type', () => { + workflowPage.actions.visit(); + workflowPage.actions.addNodeToCanvas(AGENT_NODE_NAME); + workflowPage.actions.addNodeToCanvas(AI_TOOL_HTTP_NODE_NAME); + workflowPage.getters.canvasNodes().last().click(); + cy.get('body').type('{enter}'); + cy.getByTestId('parameter-input-authentication').click(); + cy.contains('Predefined Credential Type').click(); + cy.getByTestId('credential-select').click(); + cy.contains('Adalo API').click(); + workflowPage.getters.nodeCredentialsSelect().click(); + getVisibleSelect().find('li').last().click(); + credentialsModal.actions.fillCredentialsForm(); + workflowPage.getters.nodeCredentialsEditButton().click(); + credentialsModal.getters.credentialsEditModal().should('be.visible'); + credentialsModal.getters.name().click(); + credentialsModal.actions.renameCredential(NEW_CREDENTIAL_NAME); + credentialsModal.getters.saveButton().click(); + credentialsModal.getters.closeButton().click(); + workflowPage.getters + .nodeCredentialsSelect() + .find('input') + .should('have.value', NEW_CREDENTIAL_NAME); + }); + it('should setup generic authentication for HTTP node', () => { workflowPage.actions.visit(); workflowPage.actions.addNodeToCanvas(SCHEDULE_TRIGGER_NODE_NAME); @@ -250,4 +278,25 @@ describe('Credentials', () => { credentialsModal.getters.credentialAuthTypeRadioButtons().first().click(); nodeDetailsView.getters.copyInput().should('not.exist'); }); + + it('ADO-2583 should show notifications above credential modal overlay', () => { + // check error notifications because they are sticky + cy.intercept('POST', '/rest/credentials', { forceNetworkError: true }); + credentialsPage.getters.createCredentialButton().click(); + + credentialsModal.getters.newCredentialModal().should('be.visible'); + credentialsModal.getters.newCredentialTypeSelect().should('be.visible'); + credentialsModal.getters.newCredentialTypeOption('Notion API').click(); + + credentialsModal.getters.newCredentialTypeButton().click(); + credentialsModal.getters.connectionParameter('Internal Integration Secret').type('1234567890'); + + credentialsModal.actions.setName('My awesome Notion account'); + credentialsModal.getters.saveButton().click({ force: true }); + errorToast().should('have.length', 1); + errorToast().should('be.visible'); + + errorToast().should('have.css', 'z-index', '2100'); + cy.get('.el-overlay').should('have.css', 'z-index', '2001'); + }); }); diff --git a/cypress/e2e/20-workflow-executions.cy.ts b/cypress/e2e/20-workflow-executions.cy.ts index 2431289761..5788af171c 100644 --- a/cypress/e2e/20-workflow-executions.cy.ts +++ b/cypress/e2e/20-workflow-executions.cy.ts @@ -1,7 +1,8 @@ import type { RouteHandler } from 'cypress/types/net-stubbing'; + +import executionOutOfMemoryServerResponse from '../fixtures/responses/execution-out-of-memory-server-response.json'; import { WorkflowPage } from '../pages'; import { WorkflowExecutionsTab } from '../pages/workflow-executions-tab'; -import executionOutOfMemoryServerResponse from '../fixtures/responses/execution-out-of-memory-server-response.json'; import { getVisibleSelect } from '../utils'; const workflowPage = new WorkflowPage(); @@ -9,218 +10,281 @@ const executionsTab = new WorkflowExecutionsTab(); const executionsRefreshInterval = 4000; // Test suite for executions tab -describe('Current Workflow Executions', () => { - beforeEach(() => { - workflowPage.actions.visit(); - cy.createFixtureWorkflow('Test_workflow_4_executions_view.json', 'My test workflow'); - }); +describe('Workflow Executions', () => { + describe('when workflow is saved', () => { + beforeEach(() => { + workflowPage.actions.visit(); + cy.createFixtureWorkflow('Test_workflow_4_executions_view.json', 'My test workflow'); + }); - it('should render executions tab correctly', () => { - createMockExecutions(); - cy.intercept('GET', '/rest/executions?filter=*').as('getExecutions'); + it('should render executions tab correctly', () => { + createMockExecutions(); + cy.intercept('GET', '/rest/executions?filter=*').as('getExecutions'); - executionsTab.actions.switchToExecutionsTab(); + executionsTab.actions.switchToExecutionsTab(); - cy.wait(['@getExecutions']); + cy.wait(['@getExecutions']); - executionsTab.getters.executionsList().scrollTo(0, 500).wait(0); + executionsTab.getters.executionsList().scrollTo(0, 500).wait(0); - executionsTab.getters.executionListItems().should('have.length', 11); - executionsTab.getters.successfulExecutionListItems().should('have.length', 9); - executionsTab.getters.failedExecutionListItems().should('have.length', 2); - executionsTab.getters - .executionListItems() - .first() - .invoke('attr', 'class') - .should('match', /_active_/); - }); + executionsTab.getters.executionListItems().should('have.length', 11); + executionsTab.getters.successfulExecutionListItems().should('have.length', 9); + executionsTab.getters.failedExecutionListItems().should('have.length', 2); + executionsTab.getters + .executionListItems() + .first() + .invoke('attr', 'class') + .should('match', /_active_/); + }); - it('should not redirect back to execution tab when request is not done before leaving the page', () => { - cy.intercept('GET', '/rest/executions?filter=*'); - cy.intercept('GET', '/rest/executions/active?filter=*'); + it('should not redirect back to execution tab when request is not done before leaving the page', () => { + cy.intercept('GET', '/rest/executions?filter=*'); + cy.intercept('GET', '/rest/executions/active?filter=*'); - executionsTab.actions.switchToExecutionsTab(); - executionsTab.actions.switchToEditorTab(); - cy.wait(executionsRefreshInterval); - cy.url().should('not.include', '/executions'); - executionsTab.actions.switchToExecutionsTab(); - executionsTab.actions.switchToEditorTab(); - executionsTab.actions.switchToExecutionsTab(); - executionsTab.actions.switchToEditorTab(); - executionsTab.actions.switchToExecutionsTab(); - executionsTab.actions.switchToEditorTab(); - cy.wait(executionsRefreshInterval); - cy.url().should('not.include', '/executions'); - executionsTab.actions.switchToExecutionsTab(); - cy.wait(1000); - executionsTab.actions.switchToEditorTab(); - cy.wait(executionsRefreshInterval); - cy.url().should('not.include', '/executions'); - }); + executionsTab.actions.switchToExecutionsTab(); + executionsTab.actions.switchToEditorTab(); + cy.wait(executionsRefreshInterval); + cy.url().should('not.include', '/executions'); + executionsTab.actions.switchToExecutionsTab(); + executionsTab.actions.switchToEditorTab(); + executionsTab.actions.switchToExecutionsTab(); + executionsTab.actions.switchToEditorTab(); + executionsTab.actions.switchToExecutionsTab(); + executionsTab.actions.switchToEditorTab(); + cy.wait(executionsRefreshInterval); + cy.url().should('not.include', '/executions'); + executionsTab.actions.switchToExecutionsTab(); + cy.wait(1000); + executionsTab.actions.switchToEditorTab(); + cy.wait(executionsRefreshInterval); + cy.url().should('not.include', '/executions'); + }); - it('should not redirect back to execution tab when slow request is not done before leaving the page', () => { - const throttleResponse: RouteHandler = async (req) => { - return await new Promise((resolve) => { - setTimeout(() => resolve(req.continue()), 2000); + it('should not redirect back to execution tab when slow request is not done before leaving the page', () => { + const throttleResponse: RouteHandler = async (req) => { + return await new Promise((resolve) => { + setTimeout(() => resolve(req.continue()), 2000); + }); + }; + + cy.intercept('GET', '/rest/executions?filter=*', throttleResponse); + cy.intercept('GET', '/rest/executions/active?filter=*', throttleResponse); + + executionsTab.actions.switchToExecutionsTab(); + executionsTab.actions.switchToEditorTab(); + cy.wait(executionsRefreshInterval); + cy.url().should('not.include', '/executions'); + }); + + it('should error toast when server error message returned without stack trace', () => { + executionsTab.actions.createManualExecutions(1); + const message = 'Workflow did not finish, possible out-of-memory issue'; + cy.intercept('GET', '/rest/executions/*', { + statusCode: 200, + body: executionOutOfMemoryServerResponse, + }).as('getExecution'); + + executionsTab.actions.switchToExecutionsTab(); + cy.wait(['@getExecution']); + + executionsTab.getters + .workflowExecutionPreviewIframe() + .should('be.visible') + .its('0.contentDocument.body') // Access the body of the iframe document + .should('not.be.empty') // Ensure the body is not empty + + .then(cy.wrap) + .find('.el-notification:has(.el-notification--error)') + .should('be.visible') + .filter(`:contains("${message}")`) + .should('be.visible'); + }); + + it('should show workflow data in executions tab after hard reload and modify name and tags', () => { + executionsTab.actions.switchToExecutionsTab(); + checkMainHeaderELements(); + workflowPage.getters.saveButton().find('button').should('not.exist'); + workflowPage.getters.tagPills().should('have.length', 2); + + workflowPage.getters.workflowTags().click(); + getVisibleSelect().find('li:contains("Manage tags")').click(); + cy.get('button:contains("Add new")').click(); + cy.getByTestId('tags-table').find('input').type('nutag').type('{enter}'); + cy.get('button:contains("Done")').click(); + + cy.reload(); + checkMainHeaderELements(); + workflowPage.getters.saveButton().find('button').should('not.exist'); + workflowPage.getters.workflowTags().click(); + workflowPage.getters.tagsInDropdown().first().should('have.text', 'nutag').click(); + workflowPage.getters.tagPills().should('have.length', 3); + + let newWorkflowName = 'Renamed workflow'; + workflowPage.actions.renameWorkflow(newWorkflowName); + workflowPage.getters.isWorkflowSaved(); + workflowPage.getters + .workflowNameInputContainer() + .invoke('attr', 'title') + .should('eq', newWorkflowName); + + executionsTab.actions.switchToEditorTab(); + checkMainHeaderELements(); + workflowPage.getters.saveButton().find('button').should('not.exist'); + workflowPage.getters.tagPills().should('have.length', 3); + workflowPage.getters + .workflowNameInputContainer() + .invoke('attr', 'title') + .should('eq', newWorkflowName); + + executionsTab.actions.switchToExecutionsTab(); + checkMainHeaderELements(); + workflowPage.getters.saveButton().find('button').should('not.exist'); + workflowPage.getters.tagPills().should('have.length', 3); + workflowPage.getters + .workflowNameInputContainer() + .invoke('attr', 'title') + .should('eq', newWorkflowName); + + executionsTab.actions.switchToEditorTab(); + checkMainHeaderELements(); + workflowPage.getters.saveButton().find('button').should('not.exist'); + workflowPage.getters.tagPills().should('have.length', 3); + workflowPage.getters + .workflowNameInputContainer() + .invoke('attr', 'title') + .should('eq', newWorkflowName); + + newWorkflowName = 'New workflow'; + workflowPage.actions.renameWorkflow(newWorkflowName); + workflowPage.getters.isWorkflowSaved(); + workflowPage.getters + .workflowNameInputContainer() + .invoke('attr', 'title') + .should('eq', newWorkflowName); + workflowPage.getters.workflowTags().click(); + workflowPage.getters.tagsDropdown().find('.el-tag__close').first().click(); + cy.get('body').click(0, 0); + workflowPage.getters.saveButton().find('button').should('not.exist'); + workflowPage.getters.tagPills().should('have.length', 2); + + executionsTab.actions.switchToExecutionsTab(); + checkMainHeaderELements(); + workflowPage.getters.saveButton().find('button').should('not.exist'); + workflowPage.getters.tagPills().should('have.length', 2); + workflowPage.getters + .workflowNameInputContainer() + .invoke('attr', 'title') + .should('eq', newWorkflowName); + + executionsTab.actions.switchToEditorTab(); + checkMainHeaderELements(); + workflowPage.getters.saveButton().find('button').should('not.exist'); + workflowPage.getters.tagPills().should('have.length', 2); + workflowPage.getters + .workflowNameInputContainer() + .invoke('attr', 'title') + .should('eq', newWorkflowName); + }); + + it('should load items and auto scroll after filter change', () => { + createMockExecutions(); + createMockExecutions(); + cy.intercept('GET', '/rest/executions?filter=*').as('getExecutions'); + + executionsTab.actions.switchToExecutionsTab(); + + cy.wait(['@getExecutions']); + + executionsTab.getters.executionsList().scrollTo(0, 500).wait(0); + + executionsTab.getters.executionListItems().eq(10).click(); + + cy.getByTestId('executions-filter-button').click(); + cy.getByTestId('executions-filter-status-select').should('be.visible').click(); + getVisibleSelect().find('li:contains("Error")').click(); + + executionsTab.getters.executionListItems().should('have.length', 5); + executionsTab.getters.successfulExecutionListItems().should('have.length', 1); + executionsTab.getters.failedExecutionListItems().should('have.length', 4); + + cy.getByTestId('executions-filter-button').click(); + cy.getByTestId('executions-filter-status-select').should('be.visible').click(); + getVisibleSelect().find('li:contains("Success")').click(); + + // check if the list is scrolled + executionsTab.getters.executionListItems().eq(10).should('be.visible'); + executionsTab.getters.executionsList().then(($el) => { + const { scrollTop, scrollHeight, clientHeight } = $el[0]; + expect(scrollTop).to.be.greaterThan(0); + expect(scrollTop + clientHeight).to.be.lessThan(scrollHeight); + + // scroll to the bottom + $el[0].scrollTo(0, scrollHeight); + executionsTab.getters.executionListItems().should('have.length', 18); + executionsTab.getters.successfulExecutionListItems().should('have.length', 18); + executionsTab.getters.failedExecutionListItems().should('have.length', 0); }); - }; - cy.intercept('GET', '/rest/executions?filter=*', throttleResponse); - cy.intercept('GET', '/rest/executions/active?filter=*', throttleResponse); + cy.getByTestId('executions-filter-button').click(); + cy.getByTestId('executions-filter-reset-button').should('be.visible').click(); + executionsTab.getters.executionListItems().eq(11).should('be.visible'); + }); - executionsTab.actions.switchToExecutionsTab(); - executionsTab.actions.switchToEditorTab(); - cy.wait(executionsRefreshInterval); - cy.url().should('not.include', '/executions'); + it('should redirect back to editor after seeing a couple of execution using browser back button', () => { + createMockExecutions(); + cy.intercept('GET', '/rest/executions?filter=*').as('getExecutions'); + + executionsTab.actions.switchToExecutionsTab(); + + cy.wait(['@getExecutions']); + executionsTab.getters.workflowExecutionPreviewIframe().should('exist'); + + executionsTab.getters.executionListItems().eq(2).click(); + executionsTab.getters.workflowExecutionPreviewIframe().should('exist'); + executionsTab.getters.executionListItems().eq(4).click(); + executionsTab.getters.workflowExecutionPreviewIframe().should('exist'); + executionsTab.getters.executionListItems().eq(6).click(); + executionsTab.getters.workflowExecutionPreviewIframe().should('exist'); + + cy.go('back'); + executionsTab.getters.workflowExecutionPreviewIframe().should('exist'); + cy.go('back'); + executionsTab.getters.workflowExecutionPreviewIframe().should('exist'); + cy.go('back'); + executionsTab.getters.workflowExecutionPreviewIframe().should('exist'); + cy.go('back'); + + cy.url().should('not.include', '/executions'); + cy.url().should('include', '/workflow/'); + workflowPage.getters.nodeViewRoot().should('be.visible'); + }); }); - it('should error toast when server error message returned without stack trace', () => { - executionsTab.actions.createManualExecutions(1); - const message = 'Workflow did not finish, possible out-of-memory issue'; - cy.intercept('GET', '/rest/executions/*', { - statusCode: 200, - body: executionOutOfMemoryServerResponse, - }).as('getExecution'); + describe('when new workflow is not saved', () => { + beforeEach(() => { + workflowPage.actions.visit(); + }); - executionsTab.actions.switchToExecutionsTab(); - cy.wait(['@getExecution']); + it('should open executions tab', () => { + executionsTab.actions.switchToExecutionsTab(); + executionsTab.getters.executionsSidebar().should('be.visible'); + executionsTab.getters.executionsEmptyList().should('be.visible'); + cy.getByTestId('workflow-execution-no-trigger-content').should('be.visible'); + cy.get('button:contains("Add first step")').should('be.visible').click(); - executionsTab.getters - .workflowExecutionPreviewIframe() - .should('be.visible') - .its('0.contentDocument.body') // Access the body of the iframe document - .should('not.be.empty') // Ensure the body is not empty + cy.getByTestId('node-creator-item-name') + .should('be.visible') + .filter(':contains("Trigger")') + .click(); + executionsTab.actions.switchToExecutionsTab(); + executionsTab.getters.executionsSidebar().should('be.visible'); + executionsTab.getters.executionsEmptyList().should('be.visible'); + cy.getByTestId('workflow-execution-no-content').should('be.visible'); - .then(cy.wrap) - .find('.el-notification:has(.el-notification--error)') - .should('be.visible') - .filter(`:contains("${message}")`) - .should('be.visible'); - }); - - it('should auto load more items if there is space and auto scroll', () => { - cy.viewport(1280, 960); - executionsTab.actions.createManualExecutions(24); - - cy.intercept('GET', '/rest/executions?filter=*').as('getExecutions'); - cy.intercept('GET', '/rest/executions/*').as('getExecution'); - executionsTab.actions.switchToExecutionsTab(); - - cy.wait(['@getExecutions']); - executionsTab.getters.executionListItems().its('length').should('be.gte', 10); - - cy.getByTestId('current-executions-list').scrollTo('bottom'); - cy.wait(['@getExecutions']); - executionsTab.getters.executionListItems().should('have.length', 24); - - executionsTab.getters.executionListItems().eq(14).click(); - cy.wait(['@getExecution']); - cy.reload(); - - cy.wait(['@getExecutions']); - executionsTab.getters.executionListItems().eq(14).should('not.be.visible'); - executionsTab.getters.executionListItems().should('have.length', 24); - executionsTab.getters.executionListItems().first().should('not.be.visible'); - cy.getByTestId('current-executions-list').scrollTo(0, 0); - executionsTab.getters.executionListItems().first().should('be.visible'); - executionsTab.getters.executionListItems().eq(14).should('not.be.visible'); - - executionsTab.actions.switchToEditorTab(); - executionsTab.actions.switchToExecutionsTab(); - - cy.wait(['@getExecutions']); - executionsTab.getters.executionListItems().eq(14).should('not.be.visible'); - executionsTab.getters.executionListItems().should('have.length', 24); - executionsTab.getters.executionListItems().first().should('not.be.visible'); - cy.getByTestId('current-executions-list').scrollTo(0, 0); - executionsTab.getters.executionListItems().first().should('be.visible'); - executionsTab.getters.executionListItems().eq(14).should('not.be.visible'); - }); - - it('should show workflow data in executions tab after hard reload and modify name and tags', () => { - executionsTab.actions.switchToExecutionsTab(); - checkMainHeaderELements(); - workflowPage.getters.saveButton().find('button').should('not.exist'); - workflowPage.getters.tagPills().should('have.length', 2); - - workflowPage.getters.workflowTags().click(); - getVisibleSelect().find('li:contains("Manage tags")').click(); - cy.get('button:contains("Add new")').click(); - cy.getByTestId('tags-table').find('input').type('nutag').type('{enter}'); - cy.get('button:contains("Done")').click(); - - cy.reload(); - checkMainHeaderELements(); - workflowPage.getters.saveButton().find('button').should('not.exist'); - workflowPage.getters.workflowTags().click(); - workflowPage.getters.tagsInDropdown().first().should('have.text', 'nutag').click(); - workflowPage.getters.tagPills().should('have.length', 3); - - let newWorkflowName = 'Renamed workflow'; - workflowPage.actions.renameWorkflow(newWorkflowName); - workflowPage.getters.isWorkflowSaved(); - workflowPage.getters - .workflowNameInputContainer() - .invoke('attr', 'title') - .should('eq', newWorkflowName); - - executionsTab.actions.switchToEditorTab(); - checkMainHeaderELements(); - workflowPage.getters.saveButton().find('button').should('not.exist'); - workflowPage.getters.tagPills().should('have.length', 3); - workflowPage.getters - .workflowNameInputContainer() - .invoke('attr', 'title') - .should('eq', newWorkflowName); - - executionsTab.actions.switchToExecutionsTab(); - checkMainHeaderELements(); - workflowPage.getters.saveButton().find('button').should('not.exist'); - workflowPage.getters.tagPills().should('have.length', 3); - workflowPage.getters - .workflowNameInputContainer() - .invoke('attr', 'title') - .should('eq', newWorkflowName); - - executionsTab.actions.switchToEditorTab(); - checkMainHeaderELements(); - workflowPage.getters.saveButton().find('button').should('not.exist'); - workflowPage.getters.tagPills().should('have.length', 3); - workflowPage.getters - .workflowNameInputContainer() - .invoke('attr', 'title') - .should('eq', newWorkflowName); - - newWorkflowName = 'New workflow'; - workflowPage.actions.renameWorkflow(newWorkflowName); - workflowPage.getters.isWorkflowSaved(); - workflowPage.getters - .workflowNameInputContainer() - .invoke('attr', 'title') - .should('eq', newWorkflowName); - workflowPage.getters.workflowTags().click(); - workflowPage.getters.tagsDropdown().find('.el-tag__close').first().click(); - cy.get('body').click(0, 0); - workflowPage.getters.saveButton().find('button').should('not.exist'); - workflowPage.getters.tagPills().should('have.length', 2); - - executionsTab.actions.switchToExecutionsTab(); - checkMainHeaderELements(); - workflowPage.getters.saveButton().find('button').should('not.exist'); - workflowPage.getters.tagPills().should('have.length', 2); - workflowPage.getters - .workflowNameInputContainer() - .invoke('attr', 'title') - .should('eq', newWorkflowName); - - executionsTab.actions.switchToEditorTab(); - checkMainHeaderELements(); - workflowPage.getters.saveButton().find('button').should('not.exist'); - workflowPage.getters.tagPills().should('have.length', 2); - workflowPage.getters - .workflowNameInputContainer() - .invoke('attr', 'title') - .should('eq', newWorkflowName); + workflowPage.getters.saveButton().find('button').should('be.enabled').click(); + workflowPage.getters.isWorkflowSaved(); + workflowPage.getters.nodeViewRoot().should('be.visible'); + }); }); }); @@ -228,9 +292,11 @@ const createMockExecutions = () => { executionsTab.actions.createManualExecutions(5); // Make some failed executions by enabling Code node with syntax error executionsTab.actions.toggleNodeEnabled('Error'); + workflowPage.getters.disabledNodes().should('have.length', 0); executionsTab.actions.createManualExecutions(2); // Then add some more successful ones executionsTab.actions.toggleNodeEnabled('Error'); + workflowPage.getters.disabledNodes().should('have.length', 1); executionsTab.actions.createManualExecutions(4); }; diff --git a/cypress/e2e/21-community-nodes.cy.ts b/cypress/e2e/21-community-nodes.cy.ts index b9d10b30f2..17f82ec573 100644 --- a/cypress/e2e/21-community-nodes.cy.ts +++ b/cypress/e2e/21-community-nodes.cy.ts @@ -1,10 +1,18 @@ import type { ICredentialType } from 'n8n-workflow'; -import { NodeCreator } from '../pages/features/node-creator'; -import CustomNodeFixture from '../fixtures/Custom_node.json'; -import { CredentialsModal, WorkflowPage } from '../pages'; -import CustomNodeWithN8nCredentialFixture from '../fixtures/Custom_node_n8n_credential.json'; -import CustomNodeWithCustomCredentialFixture from '../fixtures/Custom_node_custom_credential.json'; + import CustomCredential from '../fixtures/Custom_credential.json'; +import CustomNodeFixture from '../fixtures/Custom_node.json'; +import CustomNodeWithCustomCredentialFixture from '../fixtures/Custom_node_custom_credential.json'; +import CustomNodeWithN8nCredentialFixture from '../fixtures/Custom_node_n8n_credential.json'; +import { CredentialsModal, WorkflowPage } from '../pages'; +import { NodeCreator } from '../pages/features/node-creator'; +import { + confirmCommunityNodeUninstall, + confirmCommunityNodeUpdate, + getCommunityCards, + installFirstCommunityNode, + visitCommunityNodesSettings, +} from '../pages/settings-community-nodes'; import { getVisibleSelect } from '../utils'; const credentialsModal = new CredentialsModal(); @@ -14,7 +22,7 @@ const workflowPage = new WorkflowPage(); // We separate-out the custom nodes because they require injecting nodes and credentials // so the /nodes and /credentials endpoints are intercepted and non-cached. // We want to keep the other tests as fast as possible so we don't want to break the cache in those. -describe('Community Nodes', () => { +describe('Community and custom nodes in canvas', () => { beforeEach(() => { cy.intercept('/types/nodes.json', { middleware: true }, (req) => { req.headers['cache-control'] = 'no-cache, no-store'; @@ -95,3 +103,89 @@ describe('Community Nodes', () => { credentialsModal.getters.editCredentialModal().should('contain.text', 'Custom E2E Credential'); }); }); + +describe('Community nodes', () => { + const mockPackage = { + createdAt: '2024-07-22T19:08:06.505Z', + updatedAt: '2024-07-22T19:08:06.505Z', + packageName: 'n8n-nodes-chatwork', + installedVersion: '1.0.0', + authorName: null, + authorEmail: null, + installedNodes: [ + { + name: 'Chatwork', + type: 'n8n-nodes-chatwork.chatwork', + latestVersion: 1, + }, + ], + updateAvailable: '1.1.2', + }; + + it('can install, update and uninstall community nodes', () => { + cy.intercept( + { + hostname: 'api.npms.io', + pathname: '/v2/search', + query: { q: 'keywords:n8n-community-node-package' }, + }, + { body: {} }, + ); + cy.intercept( + { method: 'GET', pathname: '/rest/community-packages', times: 1 }, + { + body: { data: [] }, + }, + ).as('getEmptyPackages'); + visitCommunityNodesSettings(); + cy.wait('@getEmptyPackages'); + + // install a package + cy.intercept( + { method: 'POST', pathname: '/rest/community-packages', times: 1 }, + { + body: { data: mockPackage }, + }, + ).as('installPackage'); + cy.intercept( + { method: 'GET', pathname: '/rest/community-packages', times: 1 }, + { + body: { data: [mockPackage] }, + }, + ).as('getPackages'); + installFirstCommunityNode('n8n-nodes-chatwork@1.0.0'); + cy.wait('@installPackage'); + cy.wait('@getPackages'); + getCommunityCards().should('have.length', 1); + getCommunityCards().eq(0).should('include.text', 'v1.0.0'); + + // update the package + cy.intercept( + { method: 'PATCH', pathname: '/rest/community-packages' }, + { + body: { data: { ...mockPackage, installedVersion: '1.2.0', updateAvailable: undefined } }, + }, + ).as('updatePackage'); + getCommunityCards().eq(0).find('button').click(); + confirmCommunityNodeUpdate(); + cy.wait('@updatePackage'); + getCommunityCards().should('have.length', 1); + getCommunityCards().eq(0).should('not.include.text', 'v1.0.0'); + + // uninstall the package + cy.intercept( + { + method: 'DELETE', + pathname: '/rest/community-packages', + query: { name: 'n8n-nodes-chatwork' }, + }, + { statusCode: 204 }, + ).as('uninstallPackage'); + getCommunityCards().getByTestId('action-toggle').click(); + cy.getByTestId('action-uninstall').click(); + confirmCommunityNodeUninstall(); + cy.wait('@uninstallPackage'); + + cy.getByTestId('action-box').should('exist'); + }); +}); diff --git a/cypress/e2e/2106-ADO-pinned-data-execution-preview.cy.ts b/cypress/e2e/2106-ADO-pinned-data-execution-preview.cy.ts index 0870c2546c..e26a7acb82 100644 --- a/cypress/e2e/2106-ADO-pinned-data-execution-preview.cy.ts +++ b/cypress/e2e/2106-ADO-pinned-data-execution-preview.cy.ts @@ -1,5 +1,4 @@ import { WorkflowExecutionsTab, WorkflowPage as WorkflowPageClass } from '../pages'; -import { BACKEND_BASE_URL } from '../constants'; const workflowPage = new WorkflowPageClass(); const executionsTab = new WorkflowExecutionsTab(); @@ -17,33 +16,6 @@ describe('ADO-2106 connections should be colored correctly for pinned data in ex workflowPage.getters.getConnectionBetweenNodes('Webhook', 'Set').should('have.class', 'pinned'); }); - it('should not color connections for pinned data nodes for production executions', () => { - workflowPage.actions.activateWorkflow(); - - // Execute the workflow - cy.request('POST', `${BACKEND_BASE_URL}/webhook/23fc3930-b8f9-41d9-89db-b647291a2201`, { - here: 'is some data', - }).then((response) => { - expect(response.status).to.eq(200); - }); - - executionsTab.actions.switchToExecutionsTab(); - - executionsTab.getters.successfulExecutionListItems().should('have.length', 1); - - executionsTab.getters - .workflowExecutionPreviewIframe() - .should('be.visible') - .its('0.contentDocument.body') - .should('not.be.empty') - - .then(cy.wrap) - .find('.jtk-connector[data-source-node="Webhook"][data-target-node="Set"]') - .should('have.class', 'success') - .should('have.class', 'has-run') - .should('not.have.class', 'pinned'); - }); - it('should color connections for pinned data nodes for manual executions', () => { workflowPage.actions.executeWorkflow(); diff --git a/cypress/e2e/233-AI-switch-to-logs-on-error.cy.ts b/cypress/e2e/233-AI-switch-to-logs-on-error.cy.ts new file mode 100644 index 0000000000..eca3af81fb --- /dev/null +++ b/cypress/e2e/233-AI-switch-to-logs-on-error.cy.ts @@ -0,0 +1,280 @@ +import type { ExecutionError } from 'n8n-workflow/src'; + +import { + closeManualChatModal, + getManualChatMessages, + getManualChatModalLogs, + getManualChatModalLogsEntries, + sendManualChatMessage, +} from '../composables/modals/chat-modal'; +import { setCredentialValues } from '../composables/modals/credential-modal'; +import { + clickCreateNewCredential, + clickExecuteNode, + clickGetBackToCanvas, +} from '../composables/ndv'; +import { + addLanguageModelNodeToParent, + addMemoryNodeToParent, + addNodeToCanvas, + addToolNodeToParent, + navigateToNewWorkflowPage, + openNode, +} from '../composables/workflow'; +import { + AGENT_NODE_NAME, + AI_LANGUAGE_MODEL_OPENAI_CHAT_MODEL_NODE_NAME, + AI_MEMORY_POSTGRES_NODE_NAME, + AI_TOOL_CALCULATOR_NODE_NAME, + CHAT_TRIGGER_NODE_DISPLAY_NAME, + MANUAL_CHAT_TRIGGER_NODE_NAME, + MANUAL_TRIGGER_NODE_DISPLAY_NAME, + MANUAL_TRIGGER_NODE_NAME, +} from '../constants'; +import { NDV, WorkflowPage as WorkflowPageClass } from '../pages'; +import { createMockNodeExecutionData, getVisibleSelect, runMockWorkflowExecution } from '../utils'; + +const ndv = new NDV(); +const WorkflowPage = new WorkflowPageClass(); + +function createRunDataWithError(inputMessage: string) { + return [ + createMockNodeExecutionData(MANUAL_CHAT_TRIGGER_NODE_NAME, { + jsonData: { + main: { input: inputMessage }, + }, + }), + createMockNodeExecutionData(AI_MEMORY_POSTGRES_NODE_NAME, { + jsonData: { + ai_memory: { + json: { + action: 'loadMemoryVariables', + values: { + input: inputMessage, + system_message: 'You are a helpful assistant', + formatting_instructions: + 'IMPORTANT: Always call `format_final_response` to format your final response!', + }, + }, + }, + }, + inputOverride: { + ai_memory: [ + [ + { + json: { + action: 'loadMemoryVariables', + values: { + input: inputMessage, + system_message: 'You are a helpful assistant', + formatting_instructions: + 'IMPORTANT: Always call `format_final_response` to format your final response!', + }, + }, + }, + ], + ], + }, + error: { + message: 'Internal error', + timestamp: 1722591723244, + name: 'NodeOperationError', + description: 'Internal error', + context: {}, + cause: { + name: 'error', + severity: 'FATAL', + code: '3D000', + file: 'postinit.c', + line: '885', + routine: 'InitPostgres', + } as unknown as Error, + } as ExecutionError, + }), + createMockNodeExecutionData(AGENT_NODE_NAME, { + executionStatus: 'error', + error: { + level: 'error', + tags: { + packageName: 'workflow', + }, + context: {}, + functionality: 'configuration-node', + name: 'NodeOperationError', + timestamp: 1722591723244, + node: { + parameters: { + notice: '', + sessionIdType: 'fromInput', + tableName: 'n8n_chat_histories', + }, + id: '6b9141da-0135-4e9d-94d1-2d658cbf48b5', + name: 'Postgres Chat Memory', + type: '@n8n/n8n-nodes-langchain.memoryPostgresChat', + typeVersion: 1, + position: [1140, 500], + credentials: { + postgres: { + id: 'RkyZetVpGsSfEAhQ', + name: 'Postgres account', + }, + }, + }, + messages: ['database "chat11" does not exist'], + description: 'Internal error', + message: 'Internal error', + } as unknown as ExecutionError, + metadata: { + subRun: [ + { + node: 'Postgres Chat Memory', + runIndex: 0, + }, + ], + }, + }), + ]; +} + +function setupTestWorkflow(chatTrigger: boolean = false) { + // Setup test workflow with AI Agent, Postgres Memory Node (source of error), Calculator Tool, and OpenAI Chat Model + if (chatTrigger) { + addNodeToCanvas(MANUAL_CHAT_TRIGGER_NODE_NAME, true); + } else { + addNodeToCanvas(MANUAL_TRIGGER_NODE_NAME, true); + } + + addNodeToCanvas(AGENT_NODE_NAME, true); + + if (!chatTrigger) { + // Remove chat trigger + WorkflowPage.getters + .canvasNodeByName(CHAT_TRIGGER_NODE_DISPLAY_NAME) + .find('[data-test-id="delete-node-button"]') + .click({ force: true }); + + // Set manual trigger to output standard pinned data + openNode(MANUAL_TRIGGER_NODE_DISPLAY_NAME); + ndv.actions.editPinnedData(); + ndv.actions.savePinnedData(); + ndv.actions.close(); + } + + // Calculator is added just to make OpenAI Chat Model work (tools can not be empty with OpenAI model) + addToolNodeToParent(AI_TOOL_CALCULATOR_NODE_NAME, AGENT_NODE_NAME); + clickGetBackToCanvas(); + + addMemoryNodeToParent(AI_MEMORY_POSTGRES_NODE_NAME, AGENT_NODE_NAME); + + clickCreateNewCredential(); + setCredentialValues({ + password: 'testtesttest', + }); + + ndv.getters.parameterInput('sessionIdType').click(); + getVisibleSelect().contains('Define below').click(); + ndv.getters.parameterInput('sessionKey').type('asdasd'); + + clickGetBackToCanvas(); + + addLanguageModelNodeToParent( + AI_LANGUAGE_MODEL_OPENAI_CHAT_MODEL_NODE_NAME, + AGENT_NODE_NAME, + true, + ); + + clickCreateNewCredential(); + setCredentialValues({ + apiKey: 'sk_test_123', + }); + clickGetBackToCanvas(); + + WorkflowPage.actions.zoomToFit(); +} + +function checkMessages(inputMessage: string, outputMessage: string) { + const messages = getManualChatMessages(); + messages.should('have.length', 2); + messages.should('contain', inputMessage); + messages.should('contain', outputMessage); + + getManualChatModalLogs().should('exist'); + getManualChatModalLogsEntries() + .should('have.length', 1) + .should('contain', AI_MEMORY_POSTGRES_NODE_NAME); +} + +describe("AI-233 Make root node's logs pane active in case of an error in sub-nodes", () => { + beforeEach(() => { + navigateToNewWorkflowPage(); + }); + + it('should open logs tab by default when there was an error', () => { + setupTestWorkflow(true); + + openNode(AGENT_NODE_NAME); + + const inputMessage = 'Test the code tool'; + + clickExecuteNode(); + runMockWorkflowExecution({ + trigger: () => sendManualChatMessage(inputMessage), + runData: createRunDataWithError(inputMessage), + lastNodeExecuted: AGENT_NODE_NAME, + }); + + checkMessages(inputMessage, '[ERROR: Internal error]'); + closeManualChatModal(); + + // Open the AI Agent node to see the logs + openNode(AGENT_NODE_NAME); + + // Finally check that logs pane is opened by default + ndv.getters.outputDataContainer().should('be.visible'); + + ndv.getters.aiOutputModeToggle().should('be.visible'); + ndv.getters + .aiOutputModeToggle() + .find('[role="radio"]') + .should('have.length', 2) + .eq(1) + .should('have.attr', 'aria-checked', 'true'); + + ndv.getters + .outputPanel() + .findChildByTestId('node-error-message') + .should('be.visible') + .should('contain', 'Error in sub-node'); + }); + + it('should switch to logs tab on error, when NDV is already opened', () => { + setupTestWorkflow(false); + + openNode(AGENT_NODE_NAME); + + const inputMessage = 'Test the code tool'; + + runMockWorkflowExecution({ + trigger: () => clickExecuteNode(), + runData: createRunDataWithError(inputMessage), + lastNodeExecuted: AGENT_NODE_NAME, + }); + + // Check that logs pane is opened by default + ndv.getters.outputDataContainer().should('be.visible'); + + ndv.getters.aiOutputModeToggle().should('be.visible'); + ndv.getters + .aiOutputModeToggle() + .find('[role="radio"]') + .should('have.length', 2) + .eq(1) + .should('have.attr', 'aria-checked', 'true'); + + ndv.getters + .outputPanel() + .findChildByTestId('node-error-message') + .should('be.visible') + .should('contain', 'Error in sub-node'); + }); +}); diff --git a/cypress/e2e/2372-ado-prevent-clipping-params.cy.ts b/cypress/e2e/2372-ado-prevent-clipping-params.cy.ts new file mode 100644 index 0000000000..260c6e48c9 --- /dev/null +++ b/cypress/e2e/2372-ado-prevent-clipping-params.cy.ts @@ -0,0 +1,86 @@ +import { NDV, WorkflowPage } from '../pages'; + +const workflowPage = new WorkflowPage(); +const ndv = new NDV(); + +describe('ADO-2362 ADO-2350 NDV Prevent clipping long parameters and scrolling to expression', () => { + it('should show last parameters and open at scroll top of parameters', () => { + workflowPage.actions.visit(); + cy.createFixtureWorkflow('Test-workflow-with-long-parameters.json'); + workflowPage.actions.openNode('Schedule Trigger'); + + ndv.getters.inlineExpressionEditorInput().should('be.visible'); + + ndv.actions.close(); + + workflowPage.actions.openNode('Edit Fields1'); + + // first parameter should be visible + ndv.getters.inputLabel().eq(0).should('include.text', 'Mode'); + ndv.getters.inputLabel().eq(0).should('be.visible'); + + ndv.getters.inlineExpressionEditorInput().should('have.length', 2); + + // last parameter in view should be visible + ndv.getters.inlineExpressionEditorInput().eq(0).should('have.text', 'should be visible!'); + ndv.getters.inlineExpressionEditorInput().eq(0).should('be.visible'); + + // next parameter in view should not be visible + ndv.getters.inlineExpressionEditorInput().eq(1).should('have.text', 'not visible'); + ndv.getters.inlineExpressionEditorInput().eq(1).should('not.be.visible'); + + ndv.actions.close(); + workflowPage.actions.openNode('Schedule Trigger'); + + // first parameter (notice) should be visible + ndv.getters.nthParam(0).should('include.text', 'This workflow will run on the schedule '); + ndv.getters.inputLabel().eq(0).should('be.visible'); + + ndv.getters.inlineExpressionEditorInput().should('have.length', 2); + + // last parameter in view should be visible + ndv.getters.inlineExpressionEditorInput().eq(0).should('have.text', 'should be visible'); + ndv.getters.inlineExpressionEditorInput().eq(0).should('be.visible'); + + // next parameter in view should not be visible + ndv.getters.inlineExpressionEditorInput().eq(1).should('have.text', 'not visible'); + ndv.getters.inlineExpressionEditorInput().eq(1).should('not.be.visible'); + + ndv.actions.close(); + workflowPage.actions.openNode('Slack'); + + // first field (credentials) should be visible + ndv.getters.nodeCredentialsLabel().should('be.visible'); + + // last parameter in view should be visible + ndv.getters.inlineExpressionEditorInput().eq(0).should('have.text', 'should be visible'); + ndv.getters.inlineExpressionEditorInput().eq(0).should('be.visible'); + + // next parameter in view should not be visible + ndv.getters.inlineExpressionEditorInput().eq(1).should('have.text', 'not visible'); + ndv.getters.inlineExpressionEditorInput().eq(1).should('not.be.visible'); + }); + + it('NODE-1272 ensure expressions scrolled to top, not middle', () => { + workflowPage.actions.visit(); + cy.createFixtureWorkflow('Test-workflow-with-long-parameters.json'); + workflowPage.actions.openNode('With long expression'); + + ndv.getters.inlineExpressionEditorInput().eq(0).should('be.visible'); + // should be scrolled at top + ndv.getters + .inlineExpressionEditorInput() + .eq(0) + .find('.cm-line') + .eq(0) + .should('have.text', '1 visible!'); + ndv.getters.inlineExpressionEditorInput().eq(0).find('.cm-line').eq(0).should('be.visible'); + ndv.getters + .inlineExpressionEditorInput() + .eq(0) + .find('.cm-line') + .eq(6) + .should('have.text', '7 not visible!'); + ndv.getters.inlineExpressionEditorInput().eq(0).find('.cm-line').eq(6).should('not.be.visible'); + }); +}); diff --git a/cypress/e2e/24-ndv-paired-item.cy.ts b/cypress/e2e/24-ndv-paired-item.cy.ts index 5dad8cc174..1261a0fcd1 100644 --- a/cypress/e2e/24-ndv-paired-item.cy.ts +++ b/cypress/e2e/24-ndv-paired-item.cy.ts @@ -162,64 +162,6 @@ describe('NDV', () => { ndv.getters.inputTableRow(3).invoke('attr', 'data-test-id').should('equal', 'hovering-item'); }); - it('resolves expression with default item when input node is not parent, while still pairing items', () => { - cy.fixture('Test_workflow_5.json').then((data) => { - cy.get('body').paste(JSON.stringify(data)); - }); - workflowPage.actions.zoomToFit(); - workflowPage.actions.executeWorkflow(); - workflowPage.actions.openNode('Set2'); - - ndv.getters.inputPanel().contains('6 items').should('exist'); - ndv.getters - .outputRunSelector() - .find('input') - .should('exist') - .should('have.value', '2 of 2 (6 items)'); - - ndv.actions.switchInputMode('Table'); - ndv.actions.switchOutputMode('Table'); - - ndv.getters.backToCanvas().realHover(); // reset to default hover - ndv.getters.inputTableRow(1).should('have.text', '1111'); - - ndv.getters.inputTableRow(1).invoke('attr', 'data-test-id').should('equal', 'hovering-item'); - ndv.getters.inputTableRow(1).realHover(); - cy.wait(100); - ndv.getters.outputHoveringItem().should('not.exist'); - ndv.getters.parameterExpressionPreview('value').should('include.text', '1111'); - - ndv.actions.selectInputNode('Code1'); - ndv.getters.inputTableRow(1).realHover(); - ndv.getters.inputTableRow(1).should('have.text', '1000'); - - ndv.getters.inputTableRow(1).invoke('attr', 'data-test-id').should('equal', 'hovering-item'); - ndv.getters.outputTableRow(1).should('have.text', '1000'); - ndv.getters.parameterExpressionPreview('value').should('include.text', '1000'); - - ndv.actions.selectInputNode('Code'); - - ndv.getters.inputTableRow(1).realHover(); - cy.wait(100); - ndv.getters.inputTableRow(1).should('have.text', '6666'); - - ndv.getters.inputTableRow(1).invoke('attr', 'data-test-id').should('equal', 'hovering-item'); - - ndv.getters.outputHoveringItem().should('not.exist'); - ndv.getters.parameterExpressionPreview('value').should('include.text', '1000'); - - ndv.actions.selectInputNode('When clicking'); - - ndv.getters.inputTableRow(1).realHover(); - ndv.getters - .inputTableRow(1) - .should('have.text', "This is an item, but it's empty.") - .realHover(); - - ndv.getters.outputHoveringItem().should('have.length', 6); - ndv.getters.parameterExpressionPreview('value').should('include.text', '1000'); - }); - it('can pair items between input and output across branches and runs', () => { cy.fixture('Test_workflow_5.json').then((data) => { cy.get('body').paste(JSON.stringify(data)); @@ -285,7 +227,7 @@ describe('NDV', () => { workflowPage.actions.zoomToFit(); - /* prettier-ignore */ + // biome-ignore format: const PINNED_DATA = [ { "id": "abc", @@ -321,7 +263,6 @@ describe('NDV', () => { ] } ]; - /* prettier-ignore */ workflowPage.actions.openNode('Get thread details1'); ndv.actions.pastePinnedData(PINNED_DATA); ndv.actions.close(); diff --git a/cypress/e2e/25-stickies.cy.ts b/cypress/e2e/25-stickies.cy.ts index 597050c9f2..14c176f17b 100644 --- a/cypress/e2e/25-stickies.cy.ts +++ b/cypress/e2e/25-stickies.cy.ts @@ -1,7 +1,5 @@ -import type { Interception } from 'cypress/types/net-stubbing'; import { META_KEY } from '../constants'; import { WorkflowPage as WorkflowPageClass } from '../pages/workflow'; -import { getPopper } from '../utils'; const workflowPage = new WorkflowPageClass(); @@ -82,32 +80,6 @@ describe('Canvas Actions', () => { workflowPage.getters.stickies().should('have.length', 0); }); - it('change sticky color', () => { - workflowPage.actions.addSticky(); - - workflowPage.getters.stickies().should('have.length', 1); - - workflowPage.actions.toggleColorPalette(); - - getPopper().should('be.visible'); - - workflowPage.actions.pickColor(); - - workflowPage.actions.toggleColorPalette(); - - getPopper().should('not.be.visible'); - - workflowPage.actions.saveWorkflowOnButtonClick(); - - cy.wait('@createWorkflow').then((interception: Interception) => { - const { request } = interception; - const color = request.body?.nodes[0]?.parameters?.color; - expect(color).to.equal(2); - }); - - workflowPage.getters.stickies().should('have.length', 1); - }); - it('edits sticky and updates content as markdown', () => { workflowPage.actions.addSticky(); diff --git a/cypress/e2e/26-resource-locator.cy.ts b/cypress/e2e/26-resource-locator.cy.ts index 5c8eef714a..124e322c2b 100644 --- a/cypress/e2e/26-resource-locator.cy.ts +++ b/cypress/e2e/26-resource-locator.cy.ts @@ -37,6 +37,16 @@ describe('Resource Locator', () => { ndv.getters.resourceLocatorErrorMessage().should('contain', NO_CREDENTIALS_MESSAGE); }); + it('should show create credentials modal when clicking "add your credential"', () => { + workflowPage.actions.addInitialNodeToCanvas('Manual'); + workflowPage.actions.addNodeToCanvas('Google Sheets', true, true, 'Update row in sheet'); + ndv.getters.resourceLocator('documentId').should('be.visible'); + ndv.getters.resourceLocatorInput('documentId').click(); + ndv.getters.resourceLocatorErrorMessage().should('contain', NO_CREDENTIALS_MESSAGE); + ndv.getters.resourceLocatorAddCredentials().click(); + credentialsModal.getters.credentialsEditModal().should('be.visible'); + }); + it('should show appropriate error when credentials are not valid', () => { workflowPage.actions.addInitialNodeToCanvas('Manual'); workflowPage.actions.addNodeToCanvas('Google Sheets', true, true, 'Update row in sheet'); @@ -55,7 +65,7 @@ describe('Resource Locator', () => { }); it('should show appropriate errors when search filter is required', () => { - workflowPage.actions.addNodeToCanvas('Github', true, true, 'On Pull Request'); + workflowPage.actions.addNodeToCanvas('Github', true, true, 'On pull request'); ndv.getters.resourceLocator('owner').should('be.visible'); ndv.getters.resourceLocatorInput('owner').click(); ndv.getters.resourceLocatorErrorMessage().should('contain', NO_CREDENTIALS_MESSAGE); diff --git a/cypress/e2e/27-cloud.cy.ts b/cypress/e2e/27-cloud.cy.ts index dd0d3b06ba..e9b814597d 100644 --- a/cypress/e2e/27-cloud.cy.ts +++ b/cypress/e2e/27-cloud.cy.ts @@ -1,3 +1,4 @@ +import planData from '../fixtures/Plan_data_opt_in_trial.json'; import { BannerStack, MainSidebar, @@ -5,7 +6,6 @@ import { visitPublicApiPage, getPublicApiUpgradeCTA, } from '../pages'; -import planData from '../fixtures/Plan_data_opt_in_trial.json'; const mainSidebar = new MainSidebar(); const bannerStack = new BannerStack(); diff --git a/cypress/e2e/27-two-factor-authentication.cy.ts b/cypress/e2e/27-two-factor-authentication.cy.ts index 21319dd79b..dc62a0c58c 100644 --- a/cypress/e2e/27-two-factor-authentication.cy.ts +++ b/cypress/e2e/27-two-factor-authentication.cy.ts @@ -1,9 +1,10 @@ import generateOTPToken from 'cypress-otp'; + +import { MainSidebar } from './../pages/sidebar/main-sidebar'; import { INSTANCE_OWNER, INSTANCE_ADMIN, BACKEND_BASE_URL } from '../constants'; import { SigninPage } from '../pages'; -import { PersonalSettingsPage } from '../pages/settings-personal'; import { MfaLoginPage } from '../pages/mfa-login'; -import { MainSidebar } from './../pages/sidebar/main-sidebar'; +import { PersonalSettingsPage } from '../pages/settings-personal'; const MFA_SECRET = 'KVKFKRCPNZQUYMLXOVYDSQKJKZDTSRLD'; diff --git a/cypress/e2e/28-debug.cy.ts b/cypress/e2e/28-debug.cy.ts index 5d2bd76cac..b5159951a7 100644 --- a/cypress/e2e/28-debug.cy.ts +++ b/cypress/e2e/28-debug.cy.ts @@ -18,7 +18,7 @@ describe('Debug', () => { it('should be able to debug executions', () => { cy.intercept('GET', '/rest/executions?filter=*').as('getExecutions'); cy.intercept('GET', '/rest/executions/*').as('getExecution'); - cy.intercept('POST', '/rest/workflows/**/run').as('postWorkflowRun'); + cy.intercept('POST', '/rest/workflows/**/run?**').as('postWorkflowRun'); cy.signinAsOwner(); @@ -117,7 +117,8 @@ describe('Debug', () => { workflowPage.getters.canvasNodes().last().find('.node-info-icon').should('be.empty'); workflowPage.getters.canvasNodes().first().dblclick(); - ndv.getters.pinDataButton().click(); + ndv.actions.unPinData(); + ndv.actions.close(); workflowPage.actions.saveWorkflowUsingKeyboardShortcut(); diff --git a/cypress/e2e/29-templates.cy.ts b/cypress/e2e/29-templates.cy.ts index 5cc6657416..5b52889c94 100644 --- a/cypress/e2e/29-templates.cy.ts +++ b/cypress/e2e/29-templates.cy.ts @@ -1,9 +1,9 @@ +import OnboardingWorkflow from '../fixtures/Onboarding_workflow.json'; +import WorkflowTemplate from '../fixtures/Workflow_template_write_http_query.json'; +import { MainSidebar } from '../pages/sidebar/main-sidebar'; import { TemplatesPage } from '../pages/templates'; import { WorkflowPage } from '../pages/workflow'; import { WorkflowsPage } from '../pages/workflows'; -import { MainSidebar } from '../pages/sidebar/main-sidebar'; -import OnboardingWorkflow from '../fixtures/Onboarding_workflow.json'; -import WorkflowTemplate from '../fixtures/Workflow_template_write_http_query.json'; const templatesPage = new TemplatesPage(); const workflowPage = new WorkflowPage(); diff --git a/cypress/e2e/30-editor-after-route-changes.cy.ts b/cypress/e2e/30-editor-after-route-changes.cy.ts index 26ba3024ad..f0381a32a2 100644 --- a/cypress/e2e/30-editor-after-route-changes.cy.ts +++ b/cypress/e2e/30-editor-after-route-changes.cy.ts @@ -128,11 +128,6 @@ describe('Editor actions should work', () => { createNewWorkflowAndActivate(); }); - it('after saving a new workflow', () => { - editWorkflowAndDeactivate(); - editWorkflowMoreAndActivate(); - }); - it('after switching between Editor and Executions', () => { cy.intercept('GET', '/rest/executions?filter=*').as('getExecutions'); @@ -147,7 +142,7 @@ describe('Editor actions should work', () => { it('after switching between Editor and Debug', () => { cy.intercept('GET', '/rest/executions?filter=*').as('getExecutions'); cy.intercept('GET', '/rest/executions/*').as('getExecution'); - cy.intercept('POST', '/rest/workflows/**/run').as('postWorkflowRun'); + cy.intercept('POST', '/rest/workflows/**/run?**').as('postWorkflowRun'); editWorkflowAndDeactivate(); workflowPage.actions.executeWorkflow(); diff --git a/cypress/e2e/30-langchain.cy.ts b/cypress/e2e/30-langchain.cy.ts index c1409a34f3..0deec76e9f 100644 --- a/cypress/e2e/30-langchain.cy.ts +++ b/cypress/e2e/30-langchain.cy.ts @@ -1,34 +1,3 @@ -import { createMockNodeExecutionData, runMockWorkflowExecution } from '../utils'; -import { - addLanguageModelNodeToParent, - addMemoryNodeToParent, - addNodeToCanvas, - addOutputParserNodeToParent, - addToolNodeToParent, - clickExecuteWorkflowButton, - clickManualChatButton, - disableNode, - getExecuteWorkflowButton, - navigateToNewWorkflowPage, - openNode, -} from '../composables/workflow'; -import { - clickCreateNewCredential, - clickExecuteNode, - clickGetBackToCanvas, - toggleParameterCheckboxInputByName, -} from '../composables/ndv'; -import { setCredentialValues } from '../composables/modals/credential-modal'; -import { - closeManualChatModal, - getManualChatDialog, - getManualChatMessages, - getManualChatModal, - getManualChatModalLogs, - getManualChatModalLogsEntries, - getManualChatModalLogsTree, - sendManualChatMessage, -} from '../composables/modals/chat-modal'; import { AGENT_NODE_NAME, MANUAL_CHAT_TRIGGER_NODE_NAME, @@ -41,7 +10,41 @@ import { AI_TOOL_WIKIPEDIA_NODE_NAME, BASIC_LLM_CHAIN_NODE_NAME, EDIT_FIELDS_SET_NODE_NAME, + CHAT_TRIGGER_NODE_DISPLAY_NAME, } from './../constants'; +import { + closeManualChatModal, + getManualChatDialog, + getManualChatMessages, + getManualChatModal, + getManualChatModalLogs, + getManualChatModalLogsEntries, + getManualChatModalLogsTree, + sendManualChatMessage, +} from '../composables/modals/chat-modal'; +import { setCredentialValues } from '../composables/modals/credential-modal'; +import { + clickCreateNewCredential, + clickExecuteNode, + clickGetBackToCanvas, + toggleParameterCheckboxInputByName, +} from '../composables/ndv'; +import { + addLanguageModelNodeToParent, + addMemoryNodeToParent, + addNodeToCanvas, + addOutputParserNodeToParent, + addToolNodeToParent, + clickExecuteWorkflowButton, + clickManualChatButton, + disableNode, + getExecuteWorkflowButton, + navigateToNewWorkflowPage, + getNodes, + openNode, + getConnectionBySourceAndTarget, +} from '../composables/workflow'; +import { createMockNodeExecutionData, runMockWorkflowExecution } from '../utils'; describe('Langchain Integration', () => { beforeEach(() => { @@ -331,4 +334,27 @@ describe('Langchain Integration', () => { closeManualChatModal(); }); + + it('should auto-add chat trigger and basic LLM chain when adding LLM node', () => { + addNodeToCanvas(AI_LANGUAGE_MODEL_OPENAI_CHAT_MODEL_NODE_NAME, true); + + getConnectionBySourceAndTarget( + CHAT_TRIGGER_NODE_DISPLAY_NAME, + BASIC_LLM_CHAIN_NODE_NAME, + ).should('exist'); + + getConnectionBySourceAndTarget( + AI_LANGUAGE_MODEL_OPENAI_CHAT_MODEL_NODE_NAME, + BASIC_LLM_CHAIN_NODE_NAME, + ).should('exist'); + getNodes().should('have.length', 3); + }); + + it('should not auto-add nodes if AI nodes are already present', () => { + addNodeToCanvas(AGENT_NODE_NAME, true); + + addNodeToCanvas(AI_LANGUAGE_MODEL_OPENAI_CHAT_MODEL_NODE_NAME, true); + getConnectionBySourceAndTarget(CHAT_TRIGGER_NODE_DISPLAY_NAME, AGENT_NODE_NAME).should('exist'); + getNodes().should('have.length', 3); + }); }); diff --git a/cypress/e2e/31-demo.cy.ts b/cypress/e2e/31-demo.cy.ts index d9397ace4e..32307361fd 100644 --- a/cypress/e2e/31-demo.cy.ts +++ b/cypress/e2e/31-demo.cy.ts @@ -1,23 +1,32 @@ import workflow from '../fixtures/Manual_wait_set.json'; -import { importWorkflow, vistDemoPage } from '../pages/demo'; +import { importWorkflow, visitDemoPage } from '../pages/demo'; +import { errorToast } from '../pages/notifications'; import { WorkflowPage } from '../pages/workflow'; const workflowPage = new WorkflowPage(); describe('Demo', () => { + beforeEach(() => { + cy.overrideSettings({ previewMode: true }); + cy.signout(); + }); + it('can import template', () => { - vistDemoPage(); + visitDemoPage(); + errorToast().should('not.exist'); importWorkflow(workflow); workflowPage.getters.canvasNodes().should('have.length', 3); }); it('can override theme to dark', () => { - vistDemoPage('dark'); + visitDemoPage('dark'); cy.get('body').should('have.attr', 'data-theme', 'dark'); + errorToast().should('not.exist'); }); it('can override theme to light', () => { - vistDemoPage('light'); + visitDemoPage('light'); cy.get('body').should('have.attr', 'data-theme', 'light'); + errorToast().should('not.exist'); }); }); diff --git a/cypress/e2e/33-settings-personal.cy.ts b/cypress/e2e/33-settings-personal.cy.ts index 73dc7476b8..6b5cc94687 100644 --- a/cypress/e2e/33-settings-personal.cy.ts +++ b/cypress/e2e/33-settings-personal.cy.ts @@ -35,13 +35,14 @@ describe('Personal Settings', () => { successToast().find('.el-notification__closeBtn').click(); }); }); + // eslint-disable-next-line n8n-local-rules/no-skipped-tests it('not allow malicious values for personal data', () => { cy.visit('/settings/personal'); INVALID_NAMES.forEach((name) => { cy.getByTestId('personal-data-form').find('input[name="firstName"]').clear().type(name); cy.getByTestId('personal-data-form').find('input[name="lastName"]').clear().type(name); cy.getByTestId('save-settings-button').click(); - errorToast().should('contain', 'Malicious firstName | Malicious lastName'); + errorToast().should('contain', 'Potentially malicious string'); errorToast().find('.el-notification__closeBtn').click(); }); }); diff --git a/cypress/e2e/34-template-credentials-setup.cy.ts b/cypress/e2e/34-template-credentials-setup.cy.ts index c5d9f2643f..815f4b1ceb 100644 --- a/cypress/e2e/34-template-credentials-setup.cy.ts +++ b/cypress/e2e/34-template-credentials-setup.cy.ts @@ -1,3 +1,8 @@ +import * as setupCredsModal from '../composables/modals/workflow-credential-setup-modal'; +import * as formStep from '../composables/setup-template-form-step'; +import { getSetupWorkflowCredentialsButton } from '../composables/setup-workflow-credentials-button'; +import TestTemplate1 from '../fixtures/Test_Template_1.json'; +import TestTemplate2 from '../fixtures/Test_Template_2.json'; import { clickUseWorkflowButtonByTitle, visitTemplateCollectionPage, @@ -5,11 +10,6 @@ import { } from '../pages/template-collection'; import * as templateCredentialsSetupPage from '../pages/template-credential-setup'; import { WorkflowPage } from '../pages/workflow'; -import * as formStep from '../composables/setup-template-form-step'; -import { getSetupWorkflowCredentialsButton } from '../composables/setup-workflow-credentials-button'; -import * as setupCredsModal from '../composables/modals/workflow-credential-setup-modal'; -import TestTemplate1 from '../fixtures/Test_Template_1.json'; -import TestTemplate2 from '../fixtures/Test_Template_2.json'; const workflowPage = new WorkflowPage(); diff --git a/cypress/e2e/36-versions.cy.ts b/cypress/e2e/36-versions.cy.ts index 1d4fc51808..d749ae4537 100644 --- a/cypress/e2e/36-versions.cy.ts +++ b/cypress/e2e/36-versions.cy.ts @@ -1,10 +1,10 @@ -import { WorkflowsPage } from '../pages/workflows'; import { closeVersionUpdatesPanel, getVersionCard, getVersionUpdatesPanelOpenButton, openVersionUpdatesPanel, } from '../composables/versions'; +import { WorkflowsPage } from '../pages/workflows'; const workflowsPage = new WorkflowsPage(); diff --git a/cypress/e2e/39-projects.cy.ts b/cypress/e2e/39-projects.cy.ts index 94a6384233..138f67838a 100644 --- a/cypress/e2e/39-projects.cy.ts +++ b/cypress/e2e/39-projects.cy.ts @@ -1,4 +1,6 @@ +import * as projects from '../composables/projects'; import { + INSTANCE_ADMIN, INSTANCE_MEMBERS, INSTANCE_OWNER, MANUAL_TRIGGER_NODE_NAME, @@ -11,9 +13,10 @@ import { CredentialsPage, WorkflowExecutionsTab, NDV, + MainSidebar, } from '../pages'; -import * as projects from '../composables/projects'; -import { getVisibleSelect } from '../utils'; +import { clearNotifications } from '../pages/notifications'; +import { getVisibleDropdown, getVisibleModalOverlay, getVisibleSelect } from '../utils'; const workflowsPage = new WorkflowsPage(); const workflowPage = new WorkflowPage(); @@ -21,6 +24,7 @@ const credentialsPage = new CredentialsPage(); const credentialsModal = new CredentialsModal(); const executionsTab = new WorkflowExecutionsTab(); const ndv = new NDV(); +const mainSidebar = new MainSidebar(); describe('Projects', { disableAutoLogin: true }, () => { before(() => { @@ -237,10 +241,30 @@ describe('Projects', { disableAutoLogin: true }, () => { cy.signinAsMember(1); cy.visit(workflowsPage.url); - projects.getAddProjectButton().should('not.exist'); + cy.getByTestId('add-project-menu-item').should('not.exist'); projects.getMenuItems().should('not.exist'); }); + it('should not show viewer role if not licensed', () => { + cy.signinAsOwner(); + cy.visit(workflowsPage.url); + + projects.getMenuItems().first().click(); + projects.getProjectTabSettings().click(); + + cy.get( + `[data-test-id="user-list-item-${INSTANCE_MEMBERS[0].email}"] [data-test-id="projects-settings-user-role-select"]`, + ).click(); + + cy.get('.el-select-dropdown__item.is-disabled') + .should('contain.text', 'Viewer') + .get('span:contains("Upgrade")') + .filter(':visible') + .click(); + + getVisibleModalOverlay().should('contain.text', 'Upgrade to unlock additional roles'); + }); + describe('when starting from scratch', () => { beforeEach(() => { cy.resetDatabase(); @@ -257,7 +281,7 @@ describe('Projects', { disableAutoLogin: true }, () => { // Create a project and add a credential to it cy.intercept('POST', '/rest/projects').as('projectCreate'); - projects.getAddProjectButton().should('contain', 'Add project').should('be.visible').click(); + projects.getAddProjectButton().click(); cy.wait('@projectCreate'); projects.getMenuItems().should('have.length', 1); projects.getMenuItems().first().click(); @@ -418,45 +442,55 @@ describe('Projects', { disableAutoLogin: true }, () => { }); it('should move resources between projects', () => { - cy.signin(INSTANCE_OWNER); + cy.signinAsOwner(); cy.visit(workflowsPage.url); // Create a workflow and a credential in the Home project workflowsPage.getters.workflowCards().should('not.have.length'); workflowsPage.getters.newWorkflowButtonCard().click(); projects.createWorkflow('Test_workflow_1.json', 'Workflow in Home project'); + clearNotifications(); projects.getHomeButton().click(); projects.getProjectTabCredentials().should('be.visible').click(); credentialsPage.getters.emptyListCreateCredentialButton().click(); projects.createCredential('Credential in Home project'); + clearNotifications(); + // Create a project and add a credential and a workflow to it projects.createProject('Project 1'); + clearNotifications(); projects.getProjectTabCredentials().click(); credentialsPage.getters.emptyListCreateCredentialButton().click(); projects.createCredential('Credential in Project 1'); + clearNotifications(); projects.getProjectTabWorkflows().click(); workflowsPage.getters.newWorkflowButtonCard().click(); projects.createWorkflow('Test_workflow_1.json', 'Workflow in Project 1'); + clearNotifications(); + // Create another project and add a credential and a workflow to it projects.createProject('Project 2'); + clearNotifications(); projects.getProjectTabCredentials().click(); credentialsPage.getters.emptyListCreateCredentialButton().click(); projects.createCredential('Credential in Project 2'); + clearNotifications(); projects.getProjectTabWorkflows().click(); workflowsPage.getters.newWorkflowButtonCard().click(); projects.createWorkflow('Test_workflow_1.json', 'Workflow in Project 2'); + clearNotifications(); - // Move the workflow owned by me from Home to Project 1 + // Move the workflow Personal from Home to Project 1 projects.getHomeButton().click(); workflowsPage.getters .workflowCards() .should('have.length', 3) - .filter(':contains("Owned by me")') + .filter(':contains("Personal")') .should('exist'); workflowsPage.getters.workflowCardActions('Workflow in Home project').click(); workflowsPage.getters.workflowMoveButton().click(); @@ -464,54 +498,96 @@ describe('Projects', { disableAutoLogin: true }, () => { projects .getResourceMoveModal() .should('be.visible') - .find('button:contains("Next")') + .find('button:contains("Move workflow")') .should('be.disabled'); projects.getProjectMoveSelect().click(); getVisibleSelect() .find('li') - .should('have.length', 2) - .first() - .should('contain.text', 'Project 1') - .click(); - projects.getResourceMoveModal().find('button:contains("Next")').click(); - - projects - .getResourceMoveConfirmModal() - .should('be.visible') - .find('button:contains("Confirm")') - .should('be.disabled'); - - projects - .getResourceMoveConfirmModal() - .find('input[type="checkbox"]') - .first() - .parents('label') - .click(); - projects - .getResourceMoveConfirmModal() - .find('button:contains("Confirm")') - .should('be.disabled'); - projects - .getResourceMoveConfirmModal() - .find('input[type="checkbox"]') - .last() - .parents('label') - .click(); - projects - .getResourceMoveConfirmModal() - .find('button:contains("Confirm")') - .should('not.be.disabled') + .should('have.length', 5) + .filter(':contains("Project 1")') .click(); + projects.getResourceMoveModal().find('button:contains("Move workflow")').click(); + clearNotifications(); workflowsPage.getters .workflowCards() .should('have.length', 3) - .filter(':contains("Owned by me")') + .filter(':contains("Personal")') .should('not.exist'); + // Move the workflow from Project 1 to Project 2 + projects.getMenuItems().first().click(); + workflowsPage.getters.workflowCards().should('have.length', 2); + workflowsPage.getters.workflowCardActions('Workflow in Home project').click(); + workflowsPage.getters.workflowMoveButton().click(); + + projects + .getResourceMoveModal() + .should('be.visible') + .find('button:contains("Move workflow")') + .should('be.disabled'); + projects.getProjectMoveSelect().click(); + getVisibleSelect() + .find('li') + .should('have.length', 5) + .filter(':contains("Project 2")') + .click(); + projects.getResourceMoveModal().find('button:contains("Move workflow")').click(); + + // Move the workflow from Project 2 to a member user + projects.getMenuItems().last().click(); + workflowsPage.getters.workflowCards().should('have.length', 2); + workflowsPage.getters.workflowCardActions('Workflow in Home project').click(); + workflowsPage.getters.workflowMoveButton().click(); + clearNotifications(); + + projects + .getResourceMoveModal() + .should('be.visible') + .find('button:contains("Move workflow")') + .should('be.disabled'); + projects.getProjectMoveSelect().click(); + getVisibleSelect() + .find('li') + .should('have.length', 5) + .filter(`:contains("${INSTANCE_MEMBERS[0].email}")`) + .click(); + + projects.getResourceMoveModal().find('button:contains("Move workflow")').click(); + workflowsPage.getters.workflowCards().should('have.length', 1); + + // Move the workflow from member user back to Home + projects.getHomeButton().click(); + workflowsPage.getters + .workflowCards() + .should('have.length', 3) + .filter(':has(.n8n-badge:contains("Project"))') + .should('have.length', 2); + workflowsPage.getters.workflowCardActions('Workflow in Home project').click(); + workflowsPage.getters.workflowMoveButton().click(); + + projects + .getResourceMoveModal() + .should('be.visible') + .find('button:contains("Move workflow")') + .should('be.disabled'); + projects.getProjectMoveSelect().click(); + getVisibleSelect() + .find('li') + .should('have.length', 5) + .filter(`:contains("${INSTANCE_OWNER.email}")`) + .click(); + + projects.getResourceMoveModal().find('button:contains("Move workflow")').click(); + clearNotifications(); + workflowsPage.getters + .workflowCards() + .should('have.length', 3) + .filter(':contains("Personal")') + .should('have.length', 1); + // Move the credential from Project 1 to Project 2 projects.getMenuItems().first().click(); - workflowsPage.getters.workflowCards().should('have.length', 2); projects.getProjectTabCredentials().click(); credentialsPage.getters.credentialCards().should('have.length', 1); credentialsPage.getters.credentialCardActions('Credential in Project 1').click(); @@ -520,48 +596,239 @@ describe('Projects', { disableAutoLogin: true }, () => { projects .getResourceMoveModal() .should('be.visible') - .find('button:contains("Next")') + .find('button:contains("Move credential")') .should('be.disabled'); projects.getProjectMoveSelect().click(); getVisibleSelect() .find('li') - .should('have.length', 1) - .first() - .should('contain.text', 'Project 2') - .click(); - projects.getResourceMoveModal().find('button:contains("Next")').click(); - - projects - .getResourceMoveConfirmModal() - .should('be.visible') - .find('button:contains("Confirm")') - .should('be.disabled'); - - projects - .getResourceMoveConfirmModal() - .find('input[type="checkbox"]') - .first() - .parents('label') - .click(); - projects - .getResourceMoveConfirmModal() - .find('button:contains("Confirm")') - .should('be.disabled'); - projects - .getResourceMoveConfirmModal() - .find('input[type="checkbox"]') - .last() - .parents('label') - .click(); - projects - .getResourceMoveConfirmModal() - .find('button:contains("Confirm")') - .should('not.be.disabled') + .should('have.length', 5) + .filter(':contains("Project 2")') .click(); + projects.getResourceMoveModal().find('button:contains("Move credential")').click(); + clearNotifications(); credentialsPage.getters.credentialCards().should('not.have.length'); + + // Move the credential from Project 2 to admin user projects.getMenuItems().last().click(); projects.getProjectTabCredentials().click(); credentialsPage.getters.credentialCards().should('have.length', 2); + + credentialsPage.getters.credentialCardActions('Credential in Project 1').click(); + credentialsPage.getters.credentialMoveButton().click(); + + projects + .getResourceMoveModal() + .should('be.visible') + .find('button:contains("Move credential")') + .should('be.disabled'); + projects.getProjectMoveSelect().click(); + getVisibleSelect() + .find('li') + .should('have.length', 5) + .filter(`:contains("${INSTANCE_ADMIN.email}")`) + .click(); + projects.getResourceMoveModal().find('button:contains("Move credential")').click(); + credentialsPage.getters.credentialCards().should('have.length', 1); + + // Move the credential from admin user back to instance owner + projects.getHomeButton().click(); + projects.getProjectTabCredentials().click(); + credentialsPage.getters.credentialCards().should('have.length', 3); + + credentialsPage.getters.credentialCardActions('Credential in Project 1').click(); + credentialsPage.getters.credentialMoveButton().click(); + + projects + .getResourceMoveModal() + .should('be.visible') + .find('button:contains("Move credential")') + .should('be.disabled'); + projects.getProjectMoveSelect().click(); + getVisibleSelect() + .find('li') + .should('have.length', 5) + .filter(`:contains("${INSTANCE_OWNER.email}")`) + .click(); + projects.getResourceMoveModal().find('button:contains("Move credential")').click(); + + clearNotifications(); + + credentialsPage.getters + .credentialCards() + .should('have.length', 3) + .filter(':contains("Personal")') + .should('have.length', 2); + + // Move the credential from admin user back to its original project (Project 1) + credentialsPage.getters.credentialCardActions('Credential in Project 1').click(); + credentialsPage.getters.credentialMoveButton().click(); + + projects + .getResourceMoveModal() + .should('be.visible') + .find('button:contains("Move credential")') + .should('be.disabled'); + projects.getProjectMoveSelect().click(); + getVisibleSelect() + .find('li') + .should('have.length', 5) + .filter(':contains("Project 1")') + .click(); + projects.getResourceMoveModal().find('button:contains("Move credential")').click(); + + projects.getMenuItems().first().click(); + projects.getProjectTabCredentials().click(); + credentialsPage.getters + .credentialCards() + .filter(':contains("Credential in Project 1")') + .should('have.length', 1); + }); + + it('should allow to change inaccessible credential when the workflow was moved to a team project', () => { + cy.signinAsOwner(); + cy.visit(workflowsPage.url); + + // Create a credential in the Home project + projects.getProjectTabCredentials().should('be.visible').click(); + credentialsPage.getters.emptyListCreateCredentialButton().click(); + projects.createCredential('Credential in Home project'); + + // Create a workflow in the Home project + projects.getHomeButton().click(); + workflowsPage.getters.workflowCards().should('not.have.length'); + workflowsPage.getters.newWorkflowButtonCard().click(); + workflowsPage.getters.workflowCards().should('not.have.length'); + + workflowsPage.getters.newWorkflowButtonCard().click(); + workflowPage.actions.addNodeToCanvas(MANUAL_TRIGGER_NODE_NAME); + workflowPage.actions.addNodeToCanvas(NOTION_NODE_NAME, true, true); + ndv.getters.backToCanvas().click(); + workflowPage.actions.saveWorkflowOnButtonClick(); + + // Create a project and add a user to it + projects.createProject('Project 1'); + projects.addProjectMember(INSTANCE_MEMBERS[0].email); + projects.getProjectSettingsSaveButton().click(); + + // Move the workflow from Home to Project 1 + projects.getHomeButton().click(); + workflowsPage.getters + .workflowCards() + .should('have.length', 1) + .filter(':contains("Personal")') + .should('exist'); + workflowsPage.getters.workflowCardActions('My workflow').click(); + workflowsPage.getters.workflowMoveButton().click(); + + projects + .getResourceMoveModal() + .should('be.visible') + .find('button:contains("Move workflow")') + .should('be.disabled'); + projects.getProjectMoveSelect().click(); + getVisibleSelect() + .find('li') + .should('have.length', 4) + .filter(':contains("Project 1")') + .click(); + projects.getResourceMoveModal().find('button:contains("Move workflow")').click(); + + workflowsPage.getters + .workflowCards() + .should('have.length', 1) + .filter(':contains("Personal")') + .should('not.exist'); + + //Log out with instance owner and log in with the member user + mainSidebar.actions.openUserMenu(); + cy.getByTestId('user-menu-item-logout').click(); + + cy.get('input[name="email"]').type(INSTANCE_MEMBERS[0].email); + cy.get('input[name="password"]').type(INSTANCE_MEMBERS[0].password); + cy.getByTestId('form-submit-button').click(); + + // Open the moved workflow + workflowsPage.getters.workflowCards().should('have.length', 1); + workflowsPage.getters.workflowCards().first().click(); + + // Check if the credential can be changed + workflowPage.getters.canvasNodeByName(NOTION_NODE_NAME).should('be.visible').dblclick(); + ndv.getters.credentialInput().find('input').should('be.enabled'); + }); + + it('should handle viewer role', () => { + cy.enableFeature('projectRole:viewer'); + cy.signinAsOwner(); + cy.visit(workflowsPage.url); + + projects.createProject('Development'); + projects.addProjectMember(INSTANCE_MEMBERS[0].email, 'Viewer'); + projects.getProjectSettingsSaveButton().click(); + + projects.getProjectTabWorkflows().click(); + workflowsPage.getters.newWorkflowButtonCard().click(); + projects.createWorkflow('Test_workflow_4_executions_view.json', 'WF with random error'); + executionsTab.actions.createManualExecutions(2); + executionsTab.actions.toggleNodeEnabled('Error'); + executionsTab.actions.createManualExecutions(2); + workflowPage.actions.saveWorkflowUsingKeyboardShortcut(); + + projects.getMenuItems().first().click(); + projects.getProjectTabCredentials().click(); + credentialsPage.getters.emptyListCreateCredentialButton().click(); + projects.createCredential('Notion API'); + + mainSidebar.actions.openUserMenu(); + cy.getByTestId('user-menu-item-logout').click(); + + cy.get('input[name="email"]').type(INSTANCE_MEMBERS[0].email); + cy.get('input[name="password"]').type(INSTANCE_MEMBERS[0].password); + cy.getByTestId('form-submit-button').click(); + + mainSidebar.getters.executions().click(); + cy.getByTestId('global-execution-list-item').first().find('td:last button').click(); + getVisibleDropdown() + .find('li') + .filter(':contains("Retry")') + .should('have.class', 'is-disabled'); + getVisibleDropdown() + .find('li') + .filter(':contains("Delete")') + .should('have.class', 'is-disabled'); + + projects.getMenuItems().first().click(); + cy.getByTestId('workflow-card-name').should('be.visible').first().click(); + workflowPage.getters.nodeViewRoot().should('be.visible'); + workflowPage.getters.executeWorkflowButton().should('not.exist'); + workflowPage.getters.nodeCreatorPlusButton().should('not.exist'); + workflowPage.getters.canvasNodes().should('have.length', 3).last().click(); + cy.get('body').type('{backspace}'); + workflowPage.getters.canvasNodes().should('have.length', 3).last().rightclick(); + getVisibleDropdown() + .find('li') + .should('be.visible') + .filter( + ':contains("Open"), :contains("Copy"), :contains("Select all"), :contains("Clear selection")', + ) + .should('not.have.class', 'is-disabled'); + cy.get('body').type('{esc}'); + + executionsTab.actions.switchToExecutionsTab(); + cy.getByTestId('retry-execution-button') + .should('be.visible') + .find('.is-disabled') + .should('exist'); + cy.get('button:contains("Debug")').should('be.disabled'); + cy.get('button[title="Retry execution"]').should('be.disabled'); + cy.get('button[title="Delete this execution"]').should('be.disabled'); + + projects.getMenuItems().first().click(); + projects.getProjectTabCredentials().click(); + credentialsPage.getters.credentialCards().filter(':contains("Notion")').click(); + cy.getByTestId('node-credentials-config-container') + .should('be.visible') + .find('input') + .should('not.have.length'); }); }); }); diff --git a/cypress/e2e/4-node-creator.cy.ts b/cypress/e2e/4-node-creator.cy.ts index bb47ef4765..a2cd5968d1 100644 --- a/cypress/e2e/4-node-creator.cy.ts +++ b/cypress/e2e/4-node-creator.cy.ts @@ -1,8 +1,14 @@ -import { NodeCreator } from '../pages/features/node-creator'; -import { WorkflowPage as WorkflowPageClass } from '../pages/workflow'; -import { NDV } from '../pages/ndv'; -import { getVisibleSelect } from '../utils'; +import { + addNodeToCanvas, + addRetrieverNodeToParent, + addVectorStoreNodeToParent, + getNodeCreatorItems, +} from '../composables/workflow'; import { IF_NODE_NAME } from '../constants'; +import { NodeCreator } from '../pages/features/node-creator'; +import { NDV } from '../pages/ndv'; +import { WorkflowPage as WorkflowPageClass } from '../pages/workflow'; +import { getVisibleSelect } from '../utils'; const nodeCreatorFeature = new NodeCreator(); const WorkflowPage = new WorkflowPageClass(); @@ -504,4 +510,38 @@ describe('Node Creator', () => { nodeCreatorFeature.getters.searchBar().find('input').clear().type('gith'); nodeCreatorFeature.getters.nodeItemName().first().should('have.text', 'GitHub'); }); + + it('should show vector stores actions', () => { + const actions = [ + 'Get ranked documents from vector store', + 'Add documents to vector store', + 'Retrieve documents for AI processing', + ]; + + nodeCreatorFeature.actions.openNodeCreator(); + + nodeCreatorFeature.getters.searchBar().find('input').clear().type('Vector Store'); + + getNodeCreatorItems().then((items) => { + const vectorStores = items.map((_i, el) => el.innerText); + + // Loop over all vector stores and check if they have the three actions + vectorStores.each((_i, vectorStore) => { + nodeCreatorFeature.getters.getCreatorItem(vectorStore).click(); + actions.forEach((action) => { + nodeCreatorFeature.getters.getCreatorItem(action).should('be.visible'); + }); + cy.realPress('ArrowLeft'); + }); + }); + }); + + it('should add node directly for sub-connection', () => { + addNodeToCanvas('Question and Answer Chain', true); + addRetrieverNodeToParent('Vector Store Retriever', 'Question and Answer Chain'); + cy.realPress('Escape'); + addVectorStoreNodeToParent('In-Memory Vector Store', 'Vector Store Retriever'); + cy.realPress('Escape'); + WorkflowPage.getters.canvasNodes().should('have.length', 4); + }); }); diff --git a/cypress/e2e/40-manual-partial-execution.cy.ts b/cypress/e2e/40-manual-partial-execution.cy.ts index 5fe31b56ad..2eb129475f 100644 --- a/cypress/e2e/40-manual-partial-execution.cy.ts +++ b/cypress/e2e/40-manual-partial-execution.cy.ts @@ -23,6 +23,7 @@ describe('Manual partial execution', () => { canvas.actions.openNode('Webhook1'); ndv.getters.nodeRunSuccessIndicator().should('exist'); + ndv.getters.nodeRunTooltipIndicator().should('exist'); ndv.getters.outputRunSelector().should('not.exist'); // single run }); }); diff --git a/cypress/e2e/44-routing.cy.ts b/cypress/e2e/44-routing.cy.ts new file mode 100644 index 0000000000..1d3a8746a9 --- /dev/null +++ b/cypress/e2e/44-routing.cy.ts @@ -0,0 +1,26 @@ +import { getSaveChangesModal } from '../composables/modals/save-changes-modal'; +import { EDIT_FIELDS_SET_NODE_NAME } from '../constants'; +import { WorkflowPage as WorkflowPageClass } from '../pages/workflow'; +import { WorkflowsPage as WorkflowsPageClass } from '../pages/workflows'; + +const WorkflowsPage = new WorkflowsPageClass(); +const WorkflowPage = new WorkflowPageClass(); + +describe('Workflows', () => { + beforeEach(() => { + cy.visit(WorkflowsPage.url); + }); + + it('should ask to save unsaved changes before leaving route', () => { + WorkflowsPage.getters.newWorkflowButtonCard().should('be.visible'); + WorkflowsPage.getters.newWorkflowButtonCard().click(); + + cy.createFixtureWorkflow('Test_workflow_1.json', 'Empty State Card Workflow'); + + WorkflowPage.actions.addNodeToCanvas(EDIT_FIELDS_SET_NODE_NAME); + + cy.getByTestId('project-home-menu-item').click(); + + getSaveChangesModal().should('be.visible'); + }); +}); diff --git a/cypress/e2e/45-ai-assistant.cy.ts b/cypress/e2e/45-ai-assistant.cy.ts new file mode 100644 index 0000000000..3b4f61f660 --- /dev/null +++ b/cypress/e2e/45-ai-assistant.cy.ts @@ -0,0 +1,528 @@ +import { type ICredentialType } from 'n8n-workflow'; + +import { clickCreateNewCredential, openCredentialSelect } from '../composables/ndv'; +import { GMAIL_NODE_NAME, SCHEDULE_TRIGGER_NODE_NAME } from '../constants'; +import { CredentialsModal, CredentialsPage, NDV, WorkflowPage } from '../pages'; +import { AIAssistant } from '../pages/features/ai-assistant'; +import { getVisibleSelect } from '../utils'; + +const wf = new WorkflowPage(); +const ndv = new NDV(); +const aiAssistant = new AIAssistant(); +const credentialsPage = new CredentialsPage(); +const credentialsModal = new CredentialsModal(); + +describe('AI Assistant::disabled', () => { + beforeEach(() => { + aiAssistant.actions.disableAssistant(); + wf.actions.visit(); + }); + + it('does not show assistant button if feature is disabled', () => { + aiAssistant.getters.askAssistantFloatingButton().should('not.exist'); + }); +}); + +describe('AI Assistant::enabled', () => { + beforeEach(() => { + aiAssistant.actions.enableAssistant(); + wf.actions.visit(); + }); + + after(() => { + aiAssistant.actions.disableAssistant(); + }); + + it('renders placeholder UI', () => { + aiAssistant.getters.askAssistantFloatingButton().should('be.visible'); + aiAssistant.getters.askAssistantFloatingButton().click(); + aiAssistant.getters.askAssistantChat().should('be.visible'); + aiAssistant.getters.placeholderMessage().should('be.visible'); + aiAssistant.getters.chatInput().should('be.visible'); + aiAssistant.getters.sendMessageButton().should('be.disabled'); + aiAssistant.getters.closeChatButton().should('be.visible'); + aiAssistant.getters.closeChatButton().click(); + aiAssistant.getters.askAssistantChat().should('not.be.visible'); + }); + + it('should resize assistant chat up', () => { + aiAssistant.getters.askAssistantFloatingButton().click(); + aiAssistant.getters.askAssistantSidebarResizer().should('be.visible'); + aiAssistant.getters.askAssistantChat().then((element) => { + const { width, left } = element[0].getBoundingClientRect(); + cy.drag(aiAssistant.getters.askAssistantSidebarResizer(), [left - 10, 0], { + abs: true, + clickToFinish: true, + }); + aiAssistant.getters.askAssistantChat().then((newElement) => { + const newWidth = newElement[0].getBoundingClientRect().width; + expect(newWidth).to.be.greaterThan(width); + }); + }); + }); + + it('should resize assistant chat down', () => { + aiAssistant.getters.askAssistantFloatingButton().click(); + aiAssistant.getters.askAssistantSidebarResizer().should('be.visible'); + aiAssistant.getters.askAssistantChat().then((element) => { + const { width, left } = element[0].getBoundingClientRect(); + cy.drag(aiAssistant.getters.askAssistantSidebarResizer(), [left + 10, 0], { + abs: true, + clickToFinish: true, + }); + aiAssistant.getters.askAssistantChat().then((newElement) => { + const newWidth = newElement[0].getBoundingClientRect().width; + expect(newWidth).to.be.lessThan(width); + }); + }); + }); + + it('should start chat session from node error view', () => { + cy.intercept('POST', '/rest/ai/chat', { + statusCode: 200, + fixture: 'aiAssistant/responses/simple_message_response.json', + }).as('chatRequest'); + cy.createFixtureWorkflow('aiAssistant/workflows/test_workflow.json'); + wf.actions.openNode('Stop and Error'); + ndv.getters.nodeExecuteButton().click(); + aiAssistant.getters.nodeErrorViewAssistantButton().click(); + cy.wait('@chatRequest'); + aiAssistant.getters.chatMessagesAll().should('have.length', 1); + aiAssistant.getters + .chatMessagesAll() + .eq(0) + .should('contain.text', 'Hey, this is an assistant message'); + aiAssistant.getters.nodeErrorViewAssistantButton().should('be.disabled'); + }); + + it('should render chat input correctly', () => { + cy.intercept('POST', '/rest/ai/chat', { + statusCode: 200, + fixture: 'aiAssistant/responses/simple_message_response.json', + }).as('chatRequest'); + cy.createFixtureWorkflow('aiAssistant/workflows/test_workflow.json'); + wf.actions.openNode('Stop and Error'); + ndv.getters.nodeExecuteButton().click(); + aiAssistant.getters.nodeErrorViewAssistantButton().click(); + cy.wait('@chatRequest'); + // Send button should be disabled when input is empty + aiAssistant.getters.sendMessageButton().should('be.disabled'); + aiAssistant.getters.chatInput().type('Yo '); + aiAssistant.getters.sendMessageButton().should('not.be.disabled'); + aiAssistant.getters.chatInput().then((element) => { + const { height } = element[0].getBoundingClientRect(); + // Shift + Enter should add a new line + aiAssistant.getters.chatInput().type('Hello{shift+enter}there'); + aiAssistant.getters.chatInput().then((newElement) => { + const newHeight = newElement[0].getBoundingClientRect().height; + // Chat input should grow as user adds new lines + expect(newHeight).to.be.greaterThan(height); + aiAssistant.getters.sendMessageButton().click(); + cy.wait('@chatRequest'); + // New lines should be rendered as
in the chat + aiAssistant.getters.chatMessagesUser().should('have.length', 1); + aiAssistant.getters.chatMessagesUser().eq(0).find('br').should('have.length', 1); + // Chat input should be cleared now + aiAssistant.getters.chatInput().should('have.value', ''); + }); + }); + }); + + it('should render and handle quick replies', () => { + cy.intercept('POST', '/rest/ai/chat', { + statusCode: 200, + fixture: 'aiAssistant/responses/quick_reply_message_response.json', + }).as('chatRequest'); + cy.createFixtureWorkflow('aiAssistant/workflows/test_workflow.json'); + wf.actions.openNode('Stop and Error'); + ndv.getters.nodeExecuteButton().click(); + aiAssistant.getters.nodeErrorViewAssistantButton().click(); + cy.wait('@chatRequest'); + aiAssistant.getters.quickReplyButtons().should('have.length', 2); + aiAssistant.getters.quickReplyButtons().eq(0).click(); + cy.wait('@chatRequest'); + aiAssistant.getters.chatMessagesUser().should('have.length', 1); + aiAssistant.getters.chatMessagesUser().eq(0).should('contain.text', "Sure, let's do it"); + }); + + it('should warn before starting a new session', () => { + cy.intercept('POST', '/rest/ai/chat', { + statusCode: 200, + fixture: 'aiAssistant/responses/simple_message_response.json', + }).as('chatRequest'); + cy.createFixtureWorkflow('aiAssistant/workflows/test_workflow.json'); + wf.actions.openNode('Edit Fields'); + ndv.getters.nodeExecuteButton().click(); + aiAssistant.getters.nodeErrorViewAssistantButton().click({ force: true }); + cy.wait('@chatRequest'); + aiAssistant.getters.closeChatButton().click(); + ndv.getters.backToCanvas().click(); + wf.actions.openNode('Stop and Error'); + ndv.getters.nodeExecuteButton().click(); + aiAssistant.getters.nodeErrorViewAssistantButton().click({ force: true }); + // Since we already have an active session, a warning should be shown + aiAssistant.getters.newAssistantSessionModal().should('be.visible'); + aiAssistant.getters + .newAssistantSessionModal() + .find('button') + .contains('Start new session') + .click(); + cy.wait('@chatRequest'); + // New session should start with initial assistant message + aiAssistant.getters.chatMessagesAll().should('have.length', 1); + }); + + it('should apply code diff to code node', () => { + cy.intercept('POST', '/rest/ai/chat', { + statusCode: 200, + fixture: 'aiAssistant/responses/code_diff_suggestion_response.json', + }).as('chatRequest'); + cy.intercept('POST', '/rest/ai/chat/apply-suggestion', { + statusCode: 200, + fixture: 'aiAssistant/responses/apply_code_diff_response.json', + }).as('applySuggestion'); + cy.createFixtureWorkflow('aiAssistant/workflows/test_workflow.json'); + wf.actions.openNode('Code'); + ndv.getters.nodeExecuteButton().click(); + aiAssistant.getters.nodeErrorViewAssistantButton().click({ force: true }); + cy.wait('@chatRequest'); + // Should have two assistant messages + aiAssistant.getters.chatMessagesAll().should('have.length', 2); + aiAssistant.getters.codeDiffs().should('have.length', 1); + aiAssistant.getters.applyCodeDiffButtons().should('have.length', 1); + aiAssistant.getters.applyCodeDiffButtons().first().click(); + cy.wait('@applySuggestion'); + aiAssistant.getters.applyCodeDiffButtons().should('have.length', 0); + aiAssistant.getters.undoReplaceCodeButtons().should('have.length', 1); + aiAssistant.getters.codeReplacedMessage().should('be.visible'); + ndv.getters + .parameterInput('jsCode') + .get('.cm-content') + .should('contain.text', 'item.json.myNewField = 1'); + // Clicking undo should revert the code back but not call the assistant + aiAssistant.getters.undoReplaceCodeButtons().first().click(); + aiAssistant.getters.applyCodeDiffButtons().should('have.length', 1); + aiAssistant.getters.codeReplacedMessage().should('not.exist'); + cy.get('@applySuggestion.all').then((interceptions) => { + expect(interceptions).to.have.length(1); + }); + ndv.getters + .parameterInput('jsCode') + .get('.cm-content') + .should('contain.text', 'item.json.myNewField = 1aaa'); + // Replacing the code again should also not call the assistant + cy.get('@applySuggestion.all').then((interceptions) => { + expect(interceptions).to.have.length(1); + }); + aiAssistant.getters.applyCodeDiffButtons().should('have.length', 1); + aiAssistant.getters.applyCodeDiffButtons().first().click(); + ndv.getters + .parameterInput('jsCode') + .get('.cm-content') + .should('contain.text', 'item.json.myNewField = 1'); + }); + + it('should end chat session when `end_session` event is received', () => { + cy.intercept('POST', '/rest/ai/chat', { + statusCode: 200, + fixture: 'aiAssistant/responses/end_session_response.json', + }).as('chatRequest'); + cy.createFixtureWorkflow('aiAssistant/workflows/test_workflow.json'); + wf.actions.openNode('Stop and Error'); + ndv.getters.nodeExecuteButton().click(); + aiAssistant.getters.nodeErrorViewAssistantButton().click(); + cy.wait('@chatRequest'); + aiAssistant.getters.chatMessagesSystem().should('have.length', 1); + aiAssistant.getters.chatMessagesSystem().first().should('contain.text', 'session has ended'); + }); + + it('should reset session after it ended and sidebar is closed', () => { + cy.intercept('POST', '/rest/ai/chat', (req) => { + req.reply((res) => { + if (['init-support-chat'].includes(req.body.payload.type)) { + res.send({ + statusCode: 200, + fixture: 'aiAssistant/responses/simple_message_response.json', + }); + } else { + res.send({ statusCode: 200, fixture: 'aiAssistant/responses/end_session_response.json' }); + } + }); + }).as('chatRequest'); + aiAssistant.actions.openChat(); + aiAssistant.actions.sendMessage('Hello'); + cy.wait('@chatRequest'); + aiAssistant.actions.closeChat(); + aiAssistant.actions.openChat(); + // After closing and reopening the chat, all messages should be still there + aiAssistant.getters.chatMessagesAll().should('have.length', 2); + // End the session + aiAssistant.actions.sendMessage('Thanks, bye'); + cy.wait('@chatRequest'); + aiAssistant.getters.chatMessagesSystem().should('have.length', 1); + aiAssistant.getters.chatMessagesSystem().first().should('contain.text', 'session has ended'); + aiAssistant.actions.closeChat(); + aiAssistant.actions.openChat(); + // Now, session should be reset + aiAssistant.getters.placeholderMessage().should('be.visible'); + }); + + it('Should not reset assistant session when workflow is saved', () => { + cy.intercept('POST', '/rest/ai/chat', { + statusCode: 200, + fixture: 'aiAssistant/responses/simple_message_response.json', + }).as('chatRequest'); + wf.actions.addInitialNodeToCanvas(SCHEDULE_TRIGGER_NODE_NAME); + aiAssistant.actions.openChat(); + aiAssistant.actions.sendMessage('Hello'); + wf.actions.openNode(SCHEDULE_TRIGGER_NODE_NAME); + ndv.getters.nodeExecuteButton().click(); + wf.getters.isWorkflowSaved(); + aiAssistant.getters.placeholderMessage().should('not.exist'); + }); +}); + +describe('AI Assistant Credential Help', () => { + beforeEach(() => { + aiAssistant.actions.enableAssistant(); + wf.actions.visit(); + }); + + after(() => { + aiAssistant.actions.disableAssistant(); + }); + + it('should start credential help from node credential', () => { + cy.intercept('POST', '/rest/ai/chat', { + statusCode: 200, + fixture: 'aiAssistant/responses/simple_message_response.json', + }).as('chatRequest'); + wf.actions.addNodeToCanvas(SCHEDULE_TRIGGER_NODE_NAME); + wf.actions.addNodeToCanvas(GMAIL_NODE_NAME); + wf.actions.openNode('Gmail'); + openCredentialSelect(); + clickCreateNewCredential(); + aiAssistant.getters.credentialEditAssistantButton().find('button').should('be.visible'); + aiAssistant.getters.credentialEditAssistantButton().find('button').click(); + cy.wait('@chatRequest'); + aiAssistant.getters.chatMessagesUser().should('have.length', 1); + aiAssistant.getters + .chatMessagesUser() + .eq(0) + .should('contain.text', 'How do I set up the credentials for Gmail OAuth2 API?'); + + aiAssistant.getters + .chatMessagesAssistant() + .eq(0) + .should('contain.text', 'Hey, this is an assistant message'); + aiAssistant.getters.credentialEditAssistantButton().find('button').should('be.disabled'); + }); + + it('should start credential help from credential list', () => { + cy.intercept('POST', '/rest/ai/chat', { + statusCode: 200, + fixture: 'aiAssistant/responses/simple_message_response.json', + }).as('chatRequest'); + + cy.visit(credentialsPage.url); + credentialsPage.getters.emptyListCreateCredentialButton().click(); + + credentialsModal.getters.newCredentialModal().should('be.visible'); + credentialsModal.getters.newCredentialTypeSelect().should('be.visible'); + credentialsModal.getters.newCredentialTypeOption('Notion API').click(); + + credentialsModal.getters.newCredentialTypeButton().click(); + + aiAssistant.getters.credentialEditAssistantButton().find('button').should('be.visible'); + aiAssistant.getters.credentialEditAssistantButton().find('button').click(); + cy.wait('@chatRequest'); + aiAssistant.getters.chatMessagesUser().should('have.length', 1); + aiAssistant.getters + .chatMessagesUser() + .eq(0) + .should('contain.text', 'How do I set up the credentials for Notion API?'); + + aiAssistant.getters + .chatMessagesAssistant() + .eq(0) + .should('contain.text', 'Hey, this is an assistant message'); + aiAssistant.getters.credentialEditAssistantButton().find('button').should('be.disabled'); + }); + + it('should not show assistant button when click to connect', () => { + cy.intercept('/types/credentials.json', { middleware: true }, (req) => { + req.headers['cache-control'] = 'no-cache, no-store'; + + req.on('response', (res) => { + const credentials: ICredentialType[] = res.body || []; + + const index = credentials.findIndex((c) => c.name === 'slackOAuth2Api'); + + credentials[index] = { + ...credentials[index], + __overwrittenProperties: ['clientId', 'clientSecret'], + }; + }); + }); + + wf.actions.visit(true); + wf.actions.addNodeToCanvas('Manual'); + wf.actions.addNodeToCanvas('Slack', true, true, 'Get a channel'); + wf.getters.nodeCredentialsSelect().should('exist'); + wf.getters.nodeCredentialsSelect().click(); + getVisibleSelect().find('li').last().click(); + credentialsModal.getters.credentialAuthTypeRadioButtons().first().click(); + ndv.getters.copyInput().should('not.exist'); + credentialsModal.getters.oauthConnectButton().should('have.length', 1); + credentialsModal.getters.credentialInputs().should('have.length', 0); + aiAssistant.getters.credentialEditAssistantButton().should('not.exist'); + + credentialsModal.getters.credentialAuthTypeRadioButtons().eq(1).click(); + credentialsModal.getters.credentialInputs().should('have.length', 1); + aiAssistant.getters.credentialEditAssistantButton().should('exist'); + }); + + it('should not show assistant button when click to connect with some fields', () => { + cy.intercept('/types/credentials.json', { middleware: true }, (req) => { + req.headers['cache-control'] = 'no-cache, no-store'; + + req.on('response', (res) => { + const credentials: ICredentialType[] = res.body || []; + + const index = credentials.findIndex((c) => c.name === 'microsoftOutlookOAuth2Api'); + + credentials[index] = { + ...credentials[index], + __overwrittenProperties: ['authUrl', 'accessTokenUrl', 'clientId', 'clientSecret'], + }; + }); + }); + + wf.actions.visit(true); + wf.actions.addNodeToCanvas('Manual'); + wf.actions.addNodeToCanvas('Microsoft Outlook', true, true, 'Get a calendar'); + wf.getters.nodeCredentialsSelect().should('exist'); + wf.getters.nodeCredentialsSelect().click(); + getVisibleSelect().find('li').last().click(); + ndv.getters.copyInput().should('not.exist'); + credentialsModal.getters.oauthConnectButton().should('have.length', 1); + credentialsModal.getters.credentialInputs().should('have.length', 1); + aiAssistant.getters.credentialEditAssistantButton().should('not.exist'); + }); +}); + +describe('General help', () => { + beforeEach(() => { + aiAssistant.actions.enableAssistant(); + wf.actions.visit(); + }); + + it('assistant returns code snippet', () => { + cy.intercept('POST', '/rest/ai/chat', { + statusCode: 200, + fixture: 'aiAssistant/responses/code_snippet_response.json', + }).as('chatRequest'); + + aiAssistant.getters.askAssistantFloatingButton().should('be.visible'); + aiAssistant.getters.askAssistantFloatingButton().click(); + aiAssistant.getters.askAssistantChat().should('be.visible'); + aiAssistant.getters.placeholderMessage().should('be.visible'); + aiAssistant.getters.chatInput().should('be.visible'); + + aiAssistant.getters.chatInput().type('Show me an expression'); + aiAssistant.getters.sendMessageButton().click(); + + aiAssistant.getters.chatMessagesAll().should('have.length', 3); + aiAssistant.getters.chatMessagesUser().eq(0).should('contain.text', 'Show me an expression'); + + aiAssistant.getters + .chatMessagesAssistant() + .eq(0) + .should('contain.text', 'To use expressions in n8n, follow these steps:'); + + aiAssistant.getters + .chatMessagesAssistant() + .eq(0) + .should( + 'include.html', + `
[
+  {
+    "headers": {
+      "host": "n8n.instance.address",
+      ...
+    },
+    "params": {},
+    "query": {},
+    "body": {
+      "name": "Jim",
+      "age": 30,
+      "city": "New York"
+    }
+  }
+]
+
`, + ); + aiAssistant.getters.codeSnippet().should('have.text', '{{$json.body.city}}'); + }); + + it('should send current context to support chat', () => { + cy.createFixtureWorkflow('aiAssistant/workflows/simple_http_request_workflow.json'); + cy.intercept('POST', '/rest/ai/chat', { + statusCode: 200, + fixture: 'aiAssistant/responses/simple_message_response.json', + }).as('chatRequest'); + + aiAssistant.getters.askAssistantFloatingButton().click(); + aiAssistant.actions.sendMessage('What is wrong with this workflow?'); + + cy.wait('@chatRequest').then((interception) => { + const { body } = interception.request; + // Body should contain the current workflow context + expect(body.payload).to.have.property('context'); + expect(body.payload.context).to.have.property('currentView'); + expect(body.payload.context.currentView.name).to.equal('NodeViewExisting'); + expect(body.payload.context).to.have.property('currentWorkflow'); + }); + }); + + it('should not send workflow context if nothing changed', () => { + cy.createFixtureWorkflow('aiAssistant/workflows/simple_http_request_workflow.json'); + cy.intercept('POST', '/rest/ai/chat', { + statusCode: 200, + fixture: 'aiAssistant/responses/simple_message_response.json', + }).as('chatRequest'); + + aiAssistant.getters.askAssistantFloatingButton().click(); + aiAssistant.actions.sendMessage('What is wrong with this workflow?'); + cy.wait('@chatRequest'); + + // Send another message without changing workflow or executing any node + aiAssistant.actions.sendMessage('And now?'); + + cy.wait('@chatRequest').then((interception) => { + const { body } = interception.request; + // Workflow context should be empty + expect(body.payload).to.have.property('context'); + expect(body.payload.context).not.to.have.property('currentWorkflow'); + }); + + // Update http request node url + wf.actions.openNode('HTTP Request'); + ndv.actions.typeIntoParameterInput('url', 'https://example.com'); + ndv.actions.close(); + // Also execute the workflow + wf.actions.executeWorkflow(); + + // Send another message + aiAssistant.actions.sendMessage('What about now?'); + cy.wait('@chatRequest').then((interception) => { + const { body } = interception.request; + // Both workflow and execution context should be sent + expect(body.payload).to.have.property('context'); + expect(body.payload.context).to.have.property('currentWorkflow'); + expect(body.payload.context.currentWorkflow).not.to.be.empty; + expect(body.payload.context).to.have.property('executionData'); + expect(body.payload.context.executionData).not.to.be.empty; + }); + }); +}); diff --git a/cypress/e2e/45-workflow-selector-parameter.cy.ts b/cypress/e2e/45-workflow-selector-parameter.cy.ts new file mode 100644 index 0000000000..a6dc23e6c2 --- /dev/null +++ b/cypress/e2e/45-workflow-selector-parameter.cy.ts @@ -0,0 +1,82 @@ +import { EXECUTE_WORKFLOW_NODE_NAME } from '../constants'; +import { WorkflowPage as WorkflowPageClass, NDV } from '../pages'; +import { getVisiblePopper } from '../utils'; + +const workflowPage = new WorkflowPageClass(); +const ndv = new NDV(); + +describe('Workflow Selector Parameter', () => { + beforeEach(() => { + cy.resetDatabase(); + cy.signinAsOwner(); + ['Get_Weather', 'Search_DB'].forEach((workflowName) => { + workflowPage.actions.visit(); + cy.createFixtureWorkflow(`Test_Subworkflow_${workflowName}.json`, workflowName); + workflowPage.actions.saveWorkflowOnButtonClick(); + }); + workflowPage.actions.visit(); + workflowPage.actions.addInitialNodeToCanvas(EXECUTE_WORKFLOW_NODE_NAME, { + keepNdvOpen: true, + action: 'Call Another Workflow', + }); + }); + it('should render sub-workflows list', () => { + ndv.getters.resourceLocator('workflowId').should('be.visible'); + ndv.getters.resourceLocatorInput('workflowId').click(); + + getVisiblePopper() + .should('have.length', 1) + .findChildByTestId('rlc-item') + .should('have.length', 2); + }); + + it('should show required parameter warning', () => { + ndv.getters.resourceLocator('workflowId').should('be.visible'); + ndv.getters.resourceLocatorInput('workflowId').click(); + ndv.getters.parameterInputIssues('workflowId').should('exist'); + }); + + it('should filter sub-workflows list', () => { + ndv.getters.resourceLocator('workflowId').should('be.visible'); + ndv.getters.resourceLocatorInput('workflowId').click(); + ndv.getters.resourceLocatorSearch('workflowId').type('Weather'); + + getVisiblePopper() + .should('have.length', 1) + .findChildByTestId('rlc-item') + .should('have.length', 1) + .click(); + + ndv.getters + .resourceLocatorInput('workflowId') + .find('input') + .should('have.value', 'Get_Weather'); + }); + + it('should render sub-workflow links correctly', () => { + ndv.getters.resourceLocator('workflowId').should('be.visible'); + ndv.getters.resourceLocatorInput('workflowId').click(); + + getVisiblePopper().findChildByTestId('rlc-item').first().click(); + + ndv.getters.resourceLocatorInput('workflowId').find('a').should('exist'); + cy.getByTestId('radio-button-expression').eq(1).click(); + ndv.getters.resourceLocatorInput('workflowId').find('a').should('not.exist'); + }); + + it('should switch to ID mode on expression', () => { + ndv.getters.resourceLocator('workflowId').should('be.visible'); + ndv.getters.resourceLocatorInput('workflowId').click(); + + getVisiblePopper().findChildByTestId('rlc-item').first().click(); + ndv.getters + .resourceLocatorModeSelector('workflowId') + .find('input') + .should('have.value', 'From list'); + cy.getByTestId('radio-button-expression').eq(1).click(); + ndv.getters + .resourceLocatorModeSelector('workflowId') + .find('input') + .should('have.value', 'By ID'); + }); +}); diff --git a/cypress/e2e/46-n8n.io-iframe.cy.ts b/cypress/e2e/46-n8n.io-iframe.cy.ts new file mode 100644 index 0000000000..8d31fb251e --- /dev/null +++ b/cypress/e2e/46-n8n.io-iframe.cy.ts @@ -0,0 +1,35 @@ +import { WorkflowsPage } from '../pages'; + +const workflowsPage = new WorkflowsPage(); + +describe('n8n.io iframe', () => { + describe('when telemetry is disabled', () => { + it('should not load the iframe when visiting /home/workflows', () => { + cy.overrideSettings({ telemetry: { enabled: false } }); + + cy.visit(workflowsPage.url); + + cy.get('iframe').should('not.exist'); + }); + }); + + describe('when telemetry is enabled', () => { + it('should load the iframe when visiting /home/workflows', () => { + const testInstanceId = 'test-instance-id'; + + cy.overrideSettings({ telemetry: { enabled: true }, instanceId: testInstanceId }); + + const testUserId = Cypress.env('currentUserId'); + + const iframeUrl = `https://n8n.io/self-install?instanceId=${testInstanceId}&userId=${testUserId}`; + + cy.intercept(iframeUrl, (req) => req.reply(200)).as('iframeRequest'); + + cy.visit(workflowsPage.url); + + cy.get('iframe').should('exist').and('have.attr', 'src', iframeUrl); + + cy.wait('@iframeRequest').its('response.statusCode').should('eq', 200); + }); + }); +}); diff --git a/cypress/e2e/5-ndv.cy.ts b/cypress/e2e/5-ndv.cy.ts index 671b8287b3..f2ccccb6ab 100644 --- a/cypress/e2e/5-ndv.cy.ts +++ b/cypress/e2e/5-ndv.cy.ts @@ -1,10 +1,8 @@ -import { getVisibleSelect } from '../utils'; +import { setCredentialValues } from '../composables/modals/credential-modal'; +import { clickCreateNewCredential } from '../composables/ndv'; import { MANUAL_TRIGGER_NODE_DISPLAY_NAME, NOTION_NODE_NAME } from '../constants'; import { NDV, WorkflowPage } from '../pages'; import { NodeCreator } from '../pages/features/node-creator'; -import { clickCreateNewCredential } from '../composables/ndv'; -import { setCredentialValues } from '../composables/modals/credential-modal'; -import { successToast } from '../pages/notifications'; const workflowPage = new WorkflowPage(); const ndv = new NDV(); @@ -134,6 +132,11 @@ describe('NDV', () => { 'contains.text', "An expression here won't work because it uses .item and n8n can't figure out the matching item.", ); + ndv.getters.nodeRunErrorIndicator().should('be.visible'); + ndv.getters.nodeRunTooltipIndicator().should('be.visible'); + // The error details should be hidden behind a tooltip + ndv.getters.nodeRunTooltipIndicator().should('not.contain', 'Start Time'); + ndv.getters.nodeRunTooltipIndicator().should('not.contain', 'Execution Time'); }); it('should save workflow using keyboard shortcut from NDV', () => { @@ -201,7 +204,7 @@ describe('NDV', () => { .contains(key) .should('be.visible'); }); - getObjectValueItem().find('label').click(); + getObjectValueItem().find('label').click({ force: true }); expandedObjectProps.forEach((key) => { ndv.getters .outputPanel() @@ -339,38 +342,6 @@ describe('NDV', () => { }); }); - it('should not retrieve remote options when required params throw errors', () => { - workflowPage.actions.addInitialNodeToCanvas('E2e Test', { action: 'Remote Options' }); - - ndv.getters.parameterInput('remoteOptions').click(); - getVisibleSelect().find('.el-select-dropdown__item').should('have.length', 3); - - ndv.actions.setInvalidExpression({ fieldName: 'fieldId' }); - - ndv.getters.inputPanel().click(); // remove focus from input, hide expression preview - - ndv.getters.parameterInput('remoteOptions').click(); - - ndv.getters.parameterInputIssues('remoteOptions').realHover({ scrollBehavior: false }); - // Remote options dropdown should not be visible - ndv.getters.parameterInput('remoteOptions').find('.el-select').should('not.exist'); - }); - - it('should retrieve remote options when non-required params throw errors', () => { - workflowPage.actions.addInitialNodeToCanvas('E2e Test', { action: 'Remote Options' }); - - ndv.getters.parameterInput('remoteOptions').click(); - getVisibleSelect().find('.el-select-dropdown__item').should('have.length', 3); - ndv.getters.parameterInput('remoteOptions').click(); - - ndv.actions.setInvalidExpression({ fieldName: 'otherField' }); - - ndv.getters.nodeParameters().click(); // remove focus from input, hide expression preview - - ndv.getters.parameterInput('remoteOptions').click(); - getVisibleSelect().find('.el-select-dropdown__item').should('have.length', 3); - }); - it('should flag issues as soon as params are set', () => { workflowPage.actions.addInitialNodeToCanvas('Webhook'); workflowPage.getters.canvasNodes().first().dblclick(); @@ -616,7 +587,13 @@ describe('NDV', () => { ndv.getters.outputTableRow(1).find('mark').should('have.text', ' { ndv.getters.outputDisplayMode().find('label').eq(2).click({ force: true }); ndv.getters .outputDataContainer() - .findChildByTestId('run-data-schema-item') - .find('> span') + .findChildByTestId('run-data-schema-item-value') .should('include.text', ''); }); @@ -642,8 +618,10 @@ describe('NDV', () => { // Should not show run info before execution ndv.getters.nodeRunSuccessIndicator().should('not.exist'); ndv.getters.nodeRunErrorIndicator().should('not.exist'); + ndv.getters.nodeRunTooltipIndicator().should('not.exist'); ndv.getters.nodeExecuteButton().click(); ndv.getters.nodeRunSuccessIndicator().should('exist'); + ndv.getters.nodeRunTooltipIndicator().should('exist'); }); it('should properly show node execution indicator for multiple nodes', () => { @@ -655,6 +633,7 @@ describe('NDV', () => { // Manual tigger node should show success indicator workflowPage.actions.openNode('When clicking ‘Test workflow’'); ndv.getters.nodeRunSuccessIndicator().should('exist'); + ndv.getters.nodeRunTooltipIndicator().should('exist'); // Code node should show error ndv.getters.backToCanvas().click(); workflowPage.actions.openNode('Code'); @@ -699,6 +678,23 @@ describe('NDV', () => { ndv.getters.parameterInput('operation').find('input').should('have.value', 'Delete'); }); + it('Should show a notice when remote options cannot be fetched because of missing credentials', () => { + cy.intercept('POST', '/rest/dynamic-node-parameters/options', { statusCode: 403 }).as( + 'parameterOptions', + ); + + workflowPage.actions.addInitialNodeToCanvas(NOTION_NODE_NAME, { + keepNdvOpen: true, + action: 'Update a database page', + }); + + ndv.actions.addItemToFixedCollection('propertiesUi'); + ndv.getters + .parameterInput('key') + .find('input') + .should('have.value', 'Set up credential to see options'); + }); + it('Should show error state when remote options cannot be fetched', () => { cy.intercept('POST', '/rest/dynamic-node-parameters/options', { statusCode: 500 }).as( 'parameterOptions', @@ -709,6 +705,11 @@ describe('NDV', () => { action: 'Update a database page', }); + clickCreateNewCredential(); + setCredentialValues({ + apiKey: 'sk_test_123', + }); + ndv.actions.addItemToFixedCollection('propertiesUi'); ndv.getters .parameterInput('key') @@ -739,23 +740,6 @@ describe('NDV', () => { }); }); - it('Stop listening for trigger event from NDV', () => { - cy.intercept('POST', '/rest/workflows/**/run').as('workflowRun'); - workflowPage.actions.addInitialNodeToCanvas('Local File Trigger', { - keepNdvOpen: true, - action: 'On Changes To A Specific File', - isTrigger: true, - }); - ndv.getters.triggerPanelExecuteButton().should('exist'); - ndv.getters.triggerPanelExecuteButton().realClick(); - ndv.getters.triggerPanelExecuteButton().should('contain', 'Stop Listening'); - ndv.getters.triggerPanelExecuteButton().realClick(); - cy.wait('@workflowRun').then(() => { - ndv.getters.triggerPanelExecuteButton().should('contain', 'Test step'); - successToast().should('exist'); - }); - }); - it('should allow selecting item for expressions', () => { workflowPage.actions.visit(); @@ -782,4 +766,33 @@ describe('NDV', () => { ndv.actions.expressionSelectItem(1); ndv.getters.inlineExpressionEditorOutput().should('have.text', '1'); }); + + it('should show data from the correct output in schema view', () => { + cy.createFixtureWorkflow('Test_workflow_multiple_outputs.json'); + workflowPage.actions.zoomToFit(); + + workflowPage.actions.executeWorkflow(); + workflowPage.actions.openNode('Only Item 1'); + ndv.getters.inputPanel().should('be.visible'); + ndv.getters + .inputPanel() + .find('[data-test-id=run-data-schema-item]') + .should('contain.text', 'onlyOnItem1'); + ndv.actions.close(); + + workflowPage.actions.openNode('Only Item 2'); + ndv.getters.inputPanel().should('be.visible'); + ndv.getters + .inputPanel() + .find('[data-test-id=run-data-schema-item]') + .should('contain.text', 'onlyOnItem2'); + ndv.actions.close(); + + workflowPage.actions.openNode('Only Item 3'); + ndv.getters.inputPanel().should('be.visible'); + ndv.getters + .inputPanel() + .find('[data-test-id=run-data-schema-item]') + .should('contain.text', 'onlyOnItem3'); + }); }); diff --git a/cypress/e2e/6-code-node.cy.ts b/cypress/e2e/6-code-node.cy.ts index 74e775453b..5bc7d05ee2 100644 --- a/cypress/e2e/6-code-node.cy.ts +++ b/cypress/e2e/6-code-node.cy.ts @@ -1,7 +1,8 @@ import { nanoid } from 'nanoid'; -import { WorkflowPage as WorkflowPageClass } from '../pages/workflow'; + import { NDV } from '../pages/ndv'; import { successToast } from '../pages/notifications'; +import { WorkflowPage as WorkflowPageClass } from '../pages/workflow'; const WorkflowPage = new WorkflowPageClass(); const ndv = new NDV(); @@ -38,31 +39,64 @@ describe('Code node', () => { successToast().contains('Node executed successfully'); }); + + it('should show lint errors in `runOnceForAllItems` mode', () => { + const getParameter = () => ndv.getters.parameterInput('jsCode').should('be.visible'); + const getEditor = () => getParameter().find('.cm-content').should('exist'); + + getEditor() + .type('{selectall}') + .paste(`$input.itemMatching() +$input.item +$('When clicking ‘Test workflow’').item +$input.first(1) + +for (const item of $input.all()) { + item.foo +} + +return +`); + getParameter().get('.cm-lint-marker-error').should('have.length', 6); + getParameter().contains('itemMatching').realHover(); + cy.get('.cm-tooltip-lint').should( + 'have.text', + '`.itemMatching()` expects an item index to be passed in as its argument.', + ); + }); + + it('should show lint errors in `runOnceForEachItem` mode', () => { + const getParameter = () => ndv.getters.parameterInput('jsCode').should('be.visible'); + const getEditor = () => getParameter().find('.cm-content').should('exist'); + + ndv.getters.parameterInput('mode').click(); + ndv.actions.selectOptionInParameterDropdown('mode', 'Run Once for Each Item'); + getEditor() + .type('{selectall}') + .paste(`$input.itemMatching() +$input.all() +$input.first() +$input.item() + +return [] +`); + + getParameter().get('.cm-lint-marker-error').should('have.length', 5); + getParameter().contains('all').realHover(); + cy.get('.cm-tooltip-lint').should( + 'have.text', + "Method `$input.all()` is only available in the 'Run Once for All Items' mode.", + ); + }); }); describe('Ask AI', () => { - it('tab should display based on experiment', () => { - WorkflowPage.actions.visit(); - cy.window().then((win) => { - win.featureFlags.override('011_ask_AI', 'control'); - WorkflowPage.actions.addInitialNodeToCanvas('Manual'); - WorkflowPage.actions.addNodeToCanvas('Code'); - WorkflowPage.actions.openNode('Code'); - - cy.getByTestId('code-node-tab-ai').should('not.exist'); - - ndv.actions.close(); - win.featureFlags.override('011_ask_AI', undefined); - WorkflowPage.actions.openNode('Code'); - cy.getByTestId('code-node-tab-ai').should('not.exist'); - }); - }); - describe('Enabled', () => { beforeEach(() => { + cy.enableFeature('askAi'); WorkflowPage.actions.visit(); - cy.window().then((win) => { - win.featureFlags.override('011_ask_AI', 'gpt3'); + + cy.window().then(() => { WorkflowPage.actions.addInitialNodeToCanvas('Manual'); WorkflowPage.actions.addNodeToCanvas('Code', true, true); }); @@ -107,7 +141,7 @@ describe('Code node', () => { cy.getByTestId('ask-ai-prompt-input').type(prompt); - cy.intercept('POST', '/rest/ask-ai', { + cy.intercept('POST', '/rest/ai/ask-ai', { statusCode: 200, body: { data: { @@ -119,9 +153,7 @@ describe('Code node', () => { cy.getByTestId('ask-ai-cta').click(); const askAiReq = cy.wait('@ask-ai'); - askAiReq - .its('request.body') - .should('have.keys', ['question', 'model', 'context', 'n8nVersion']); + askAiReq.its('request.body').should('have.keys', ['question', 'context', 'forNode']); askAiReq.its('context').should('have.keys', ['schema', 'ndvPushRef', 'pushRef']); @@ -130,22 +162,22 @@ describe('Code node', () => { cy.get('#tab-code').should('have.class', 'is-active'); }); - it('should show error based on status code', () => { - const prompt = nanoid(20); - cy.get('#tab-ask-ai').click(); - ndv.actions.executePrevious(); + const handledCodes = [ + { code: 400, message: 'Code generation failed due to an unknown reason' }, + { code: 413, message: 'Your workflow data is too large for AI to process' }, + { code: 429, message: "We've hit our rate limit with our AI partner" }, + { code: 500, message: 'Code generation failed due to an unknown reason' }, + ]; - cy.getByTestId('ask-ai-prompt-input').type(prompt); + handledCodes.forEach(({ code, message }) => { + it(`should show error based on status code ${code}`, () => { + const prompt = nanoid(20); + cy.get('#tab-ask-ai').click(); + ndv.actions.executePrevious(); - const handledCodes = [ - { code: 400, message: 'Code generation failed due to an unknown reason' }, - { code: 413, message: 'Your workflow data is too large for AI to process' }, - { code: 429, message: "We've hit our rate limit with our AI partner" }, - { code: 500, message: 'Code generation failed due to an unknown reason' }, - ]; + cy.getByTestId('ask-ai-prompt-input').type(prompt); - handledCodes.forEach(({ code, message }) => { - cy.intercept('POST', '/rest/ask-ai', { + cy.intercept('POST', '/rest/ai/ask-ai', { statusCode: code, status: code, }).as('ask-ai'); diff --git a/cypress/e2e/7-workflow-actions.cy.ts b/cypress/e2e/7-workflow-actions.cy.ts index 7c7c3be554..8571b174d9 100644 --- a/cypress/e2e/7-workflow-actions.cy.ts +++ b/cypress/e2e/7-workflow-actions.cy.ts @@ -5,11 +5,11 @@ import { EDIT_FIELDS_SET_NODE_NAME, NOTION_NODE_NAME, } from '../constants'; +import { WorkflowExecutionsTab } from '../pages'; +import { errorToast, successToast } from '../pages/notifications'; import { WorkflowPage as WorkflowPageClass } from '../pages/workflow'; import { WorkflowsPage as WorkflowsPageClass } from '../pages/workflows'; import { getVisibleSelect } from '../utils'; -import { WorkflowExecutionsTab } from '../pages'; -import { errorToast, successToast } from '../pages/notifications'; const NEW_WORKFLOW_NAME = 'Something else'; const DUPLICATE_WORKFLOW_NAME = 'Duplicated workflow'; diff --git a/cypress/fixtures/Execution-pinned-data-check.json b/cypress/fixtures/Execution-pinned-data-check.json new file mode 100644 index 0000000000..20041af117 --- /dev/null +++ b/cypress/fixtures/Execution-pinned-data-check.json @@ -0,0 +1,133 @@ +{ + "name": "PAY-1707", + "nodes": [ + { + "parameters": { + "options": {} + }, + "id": "eaa428a8-eb9d-478a-b997-aed6ed298507", + "name": "Edit Fields", + "type": "n8n-nodes-base.set", + "typeVersion": 3.4, + "position": [ + 920, + 380 + ] + }, + { + "parameters": { + "options": {} + }, + "id": "6b285c91-e7ea-4943-8ba3-59ce01a35d20", + "name": "Edit Fields1", + "type": "n8n-nodes-base.set", + "typeVersion": 3.4, + "position": [ + 920, + 540 + ] + }, + { + "parameters": { + "jsCode": "return Array.from({length: 5}, _ => ({}))" + }, + "id": "70e682aa-dfef-4db7-a158-971ec7976d49", + "name": "Code", + "type": "n8n-nodes-base.code", + "typeVersion": 2, + "position": [ + 700, + 380 + ] + }, + { + "parameters": { + "jsCode": "return Array.from({length: 5}, _ => ({}))" + }, + "id": "d5ee979e-9f53-4e62-8eb2-cdb92be8ea6e", + "name": "Code1", + "type": "n8n-nodes-base.code", + "typeVersion": 2, + "position": [ + 700, + 540 + ] + }, + { + "parameters": { + "path": "dd660366-ca4a-4736-8b1f-454560e87bfb", + "options": {} + }, + "id": "20c33c8a-ab2f-4dd4-990f-6390feeb840c", + "name": "Webhook", + "type": "n8n-nodes-base.webhook", + "typeVersion": 2, + "position": [ + 480, + 440 + ], + "webhookId": "dd660366-ca4a-4736-8b1f-454560e87bfb" + } + ], + "pinData": { + "Code1": [ + { + "json": {} + }, + { + "json": {} + } + ] + }, + "connections": { + "Code1": { + "main": [ + [ + { + "node": "Edit Fields1", + "type": "main", + "index": 0 + } + ] + ] + }, + "Code": { + "main": [ + [ + { + "node": "Edit Fields", + "type": "main", + "index": 0 + } + ] + ] + }, + "Webhook": { + "main": [ + [ + { + "node": "Code", + "type": "main", + "index": 0 + }, + { + "node": "Code1", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "active": true, + "settings": { + "executionOrder": "v1" + }, + "versionId": "01e6693e-54f3-432d-9b1f-922ef92b4ab6", + "meta": { + "templateCredsSetupCompleted": true, + "instanceId": "8a47b83b4479b11330fdf21ccc96d4a8117035a968612e452b4c87bfd09c16c7" + }, + "id": "hU0gp19G29ehWktc", + "tags": [] +} \ No newline at end of file diff --git a/cypress/fixtures/Pinned_webhook_node.json b/cypress/fixtures/Pinned_webhook_node.json new file mode 100644 index 0000000000..eb98b17351 --- /dev/null +++ b/cypress/fixtures/Pinned_webhook_node.json @@ -0,0 +1,39 @@ +{ + "nodes": [ + { + "parameters": { + "path": "FwrbSiaua2Xmvn6-Z-7CQ", + "options": {} + }, + "id": "8fcc7e5f-2cef-4938-9564-eea504c20aa0", + "name": "Webhook", + "type": "n8n-nodes-base.webhook", + "typeVersion": 2, + "position": [ + 360, + 220 + ], + "webhookId": "9c778f2a-e882-46ed-a0e4-c8e2f76ccd65" + } + ], + "connections": {}, + "pinData": { + "Webhook": [ + { + "headers": { + "connection": "keep-alive", + "user-agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0.0.0 Safari/537.36", + "accept": "*/*", + "cookie": "n8n-auth=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjNiM2FhOTE5LWRhZDgtNDE5MS1hZWZiLTlhZDIwZTZkMjJjNiIsImhhc2giOiJ1ZVAxR1F3U2paIiwiaWF0IjoxNzI4OTE1NTQyLCJleHAiOjE3Mjk1MjAzNDJ9.fV02gpUnSiUoMxHwfB0npBjcjct7Mv9vGfj-jRTT3-I", + "host": "localhost:5678", + "accept-encoding": "gzip, deflate" + }, + "params": {}, + "query": {}, + "body": {}, + "webhookUrl": "http://localhost:5678/webhook-test/FwrbSiaua2Xmvn6-Z-7CQ", + "executionMode": "test" + } + ] + } +} diff --git a/cypress/fixtures/Test-workflow-with-long-parameters.json b/cypress/fixtures/Test-workflow-with-long-parameters.json new file mode 100644 index 0000000000..d4d052f6f0 --- /dev/null +++ b/cypress/fixtures/Test-workflow-with-long-parameters.json @@ -0,0 +1,150 @@ +{ + "meta": { + "instanceId": "777c68374367604fdf2a0bcfe9b1b574575ddea61aa8268e4bf034434bd7c894" + }, + "nodes": [ + { + "parameters": { + "assignments": { + "assignments": [ + { + "id": "0effebfc-fa8c-4d41-8a37-6d5695dfc9ee", + "name": "test", + "value": "test", + "type": "string" + }, + { + "id": "beb8723f-6333-4186-ab88-41d4e2338866", + "name": "test", + "value": "test", + "type": "string" + }, + { + "id": "85095836-4e94-442f-9270-e1a89008c129", + "name": "test", + "value": "test", + "type": "string" + }, + { + "id": "b6163f8a-bca6-4364-8b38-182df37c55cd", + "name": "=should be visible!", + "value": "=not visible", + "type": "string" + } + ] + }, + "options": {} + }, + "id": "950fcdc1-9e92-410f-8377-d4240e9bf6ff", + "name": "Edit Fields1", + "type": "n8n-nodes-base.set", + "typeVersion": 3.4, + "position": [ + 680, + 460 + ] + }, + { + "parameters": { + "messageType": "block", + "blocksUi": "blocks", + "text": "=should be visible", + "otherOptions": { + "sendAsUser": "=not visible" + } + }, + "id": "dcf7410d-0f8e-4cdb-9819-ae275558bdaa", + "name": "Slack", + "type": "n8n-nodes-base.slack", + "typeVersion": 2.2, + "position": [ + 900, + 460 + ], + "webhookId": "002b502e-31e5-4fdb-ac43-a56cfde8f82a" + }, + { + "parameters": { + "rule": { + "interval": [ + {}, + { + "field": "=should be visible" + }, + { + "field": "=not visible" + } + ] + } + }, + "id": "4c948a3f-19d4-4b08-a8be-f7d2964a21f4", + "name": "Schedule Trigger", + "type": "n8n-nodes-base.scheduleTrigger", + "typeVersion": 1.2, + "position": [ + 460, + 460 + ] + }, + { + "parameters": { + "assignments": { + "assignments": [ + { + "id": "5dcaab37-1146-49c6-97a3-3b2f73483270", + "name": "object", + "value": "=1 visible!\n2 {\n3 \"str\": \"two\",\n4 \"str_date\": \"{{ $now }}\",\n5 \"str_int\": \"1\",\n6 \"str_float\": \"1.234\",\n7 not visible!\n \"str_bool\": \"true\",\n \"str_email\": \"david@thedavid.com\",\n \"str_with_email\":\"My email is david@n8n.io\",\n \"str_json_single\":\"{'one':'two'}\",\n \"str_json_double\":\"{\\\"one\\\":\\\"two\\\"}\",\n \"bool\": true,\n \"list\": [1, 2, 3],\n \"decimal\": 1.234,\n \"timestamp1\": 1708695471,\n \"timestamp2\": 1708695471000,\n \"timestamp3\": 1708695471000000,\n \"num_one\": 1\n}", + "type": "object" + } + ] + }, + "includeOtherFields": true, + "options": {} + }, + "id": "a41dfb0d-38aa-42d2-b3e2-1854090bd319", + "name": "With long expression", + "type": "n8n-nodes-base.set", + "typeVersion": 3.3, + "position": [ + 1100, + 460 + ] + } + ], + "connections": { + "Edit Fields1": { + "main": [ + [ + { + "node": "Slack", + "type": "main", + "index": 0 + } + ] + ] + }, + "Slack": { + "main": [ + [ + { + "node": "With long expression", + "type": "main", + "index": 0 + } + ] + ] + }, + "Schedule Trigger": { + "main": [ + [ + { + "node": "Edit Fields1", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "pinData": {} +} diff --git a/cypress/fixtures/Test_Subworkflow_Get_Weather.json b/cypress/fixtures/Test_Subworkflow_Get_Weather.json new file mode 100644 index 0000000000..3829aca879 --- /dev/null +++ b/cypress/fixtures/Test_Subworkflow_Get_Weather.json @@ -0,0 +1,53 @@ +{ + "name": "Get Weather", + "nodes": [ + { + "parameters": {}, + "id": "82eed1ba-179b-4f8f-8a85-b45f0d4e5857", + "name": "Execute Workflow Trigger", + "type": "n8n-nodes-base.executeWorkflowTrigger", + "typeVersion": 1, + "position": [ + 560, + 340 + ] + }, + { + "parameters": { + "assignments": { + "assignments": [ + { + "id": "6ad8dc55-20f3-45af-a724-c7ecac90d338", + "name": "response", + "value": "Weather is sunny", + "type": "string" + } + ] + }, + "options": {} + }, + "id": "8f3e00f6-fc92-4aba-817b-93d206158bda", + "name": "Edit Fields", + "type": "n8n-nodes-base.set", + "typeVersion": 3.4, + "position": [ + 780, + 340 + ] + } + ], + "pinData": {}, + "connections": { + "Execute Workflow Trigger": { + "main": [ + [ + { + "node": "Edit Fields", + "type": "main", + "index": 0 + } + ] + ] + } + } +} diff --git a/cypress/fixtures/Test_Subworkflow_Search_DB.json b/cypress/fixtures/Test_Subworkflow_Search_DB.json new file mode 100644 index 0000000000..990aee120d --- /dev/null +++ b/cypress/fixtures/Test_Subworkflow_Search_DB.json @@ -0,0 +1,64 @@ +{ + "name": "Search DB", + "nodes": [ + { + "parameters": {}, + "id": "64465f9b-63de-43f9-8d90-b5b2eb7a2dc7", + "name": "Execute Workflow Trigger", + "type": "n8n-nodes-base.executeWorkflowTrigger", + "typeVersion": 1, + "position": [ + 640, + 380 + ] + }, + { + "parameters": { + "assignments": { + "assignments": [ + { + "id": "6ad8dc55-20f3-45af-a724-c7ecac90d338", + "name": "response", + "value": "10 results found", + "type": "string" + } + ] + }, + "options": {} + }, + "id": "b580fd2b-00c8-4a52-8acb-024f204c0947", + "name": "Edit Fields", + "type": "n8n-nodes-base.set", + "typeVersion": 3.4, + "position": [ + 860, + 380 + ] + } + ], + "pinData": {}, + "connections": { + "Execute Workflow Trigger": { + "main": [ + [ + { + "node": "Edit Fields", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "active": false, + "settings": { + "executionOrder": "v1" + }, + "versionId": "6026f7a4-f5dc-4c27-9f83-3a02fc6e33ae", + "meta": { + "templateCredsSetupCompleted": true, + "instanceId": "27cc9b56542ad45b38725555722c50a1c3fee1670bbb67980558314ee08517c4" + }, + "id": "BFFhCdBZmNSkx4qf", + "tags": [] +} \ No newline at end of file diff --git a/cypress/fixtures/Test_workflow_multiple_outputs.json b/cypress/fixtures/Test_workflow_multiple_outputs.json new file mode 100644 index 0000000000..b80ff5dd33 --- /dev/null +++ b/cypress/fixtures/Test_workflow_multiple_outputs.json @@ -0,0 +1,223 @@ +{ + "name": "Multiple outputs", + "nodes": [ + { + "parameters": {}, + "id": "64b27674-3da6-46ce-9008-e173182efa48", + "name": "When clicking ‘Test workflow’", + "type": "n8n-nodes-base.manualTrigger", + "position": [ + 16, + -32 + ], + "typeVersion": 1 + }, + { + "parameters": { + "rules": { + "values": [ + { + "conditions": { + "options": { + "caseSensitive": true, + "leftValue": "", + "typeValidation": "strict" + }, + "conditions": [ + { + "leftValue": "={{ $json.code }}", + "rightValue": 1, + "operator": { + "type": "number", + "operation": "equals" + } + } + ], + "combinator": "and" + }, + "renameOutput": true, + "outputKey": "Item1" + }, + { + "conditions": { + "options": { + "caseSensitive": true, + "leftValue": "", + "typeValidation": "strict" + }, + "conditions": [ + { + "id": "a659050f-0867-471d-8914-d499b6ad7b31", + "leftValue": "={{ $json.code }}", + "rightValue": 2, + "operator": { + "type": "number", + "operation": "equals" + } + } + ], + "combinator": "and" + }, + "renameOutput": true, + "outputKey": "Item2" + }, + { + "conditions": { + "options": { + "caseSensitive": true, + "leftValue": "", + "typeValidation": "strict" + }, + "conditions": [ + { + "id": "109fc001-53af-48f1-b79c-5e9afc8b94bd", + "leftValue": "={{ $json.code }}", + "rightValue": 3, + "operator": { + "type": "number", + "operation": "equals" + } + } + ], + "combinator": "and" + }, + "renameOutput": true, + "outputKey": "Item3" + } + ] + }, + "options": {} + }, + "type": "n8n-nodes-base.switch", + "position": [ + 192, + -32 + ], + "id": "3863cc7a-8f45-46fc-a60c-36aad5b12877", + "name": "Switch", + "typeVersion": 3 + }, + { + "parameters": { + "assignments": { + "assignments": [ + { + "id": "f71bac89-8852-41b2-98dd-cb689f011dcb", + "name": "", + "value": "", + "type": "string" + } + ] + }, + "options": {} + }, + "type": "n8n-nodes-base.set", + "position": [ + 480, + -192 + ], + "id": "85940094-4656-4cdf-a871-1b3b46421de3", + "name": "Only Item 1", + "typeVersion": 3.4 + }, + { + "parameters": { + "options": {} + }, + "type": "n8n-nodes-base.set", + "position": [ + 480, + -32 + ], + "id": "a7f4e2b5-8cc9-4881-aa06-38601988740e", + "name": "Only Item 2", + "typeVersion": 3.4 + }, + { + "parameters": { + "options": {} + }, + "type": "n8n-nodes-base.set", + "position": [ + 480, + 128 + ], + "id": "7e44ad56-415a-4991-a70e-fea86c430031", + "name": "Only Item 3", + "typeVersion": 3.4 + } + ], + "pinData": { + "When clicking ‘Test workflow’": [ + { + "json": { + "name": "First item", + "onlyOnItem1": true, + "code": 1 + } + }, + { + "json": { + "name": "Second item", + "onlyOnItem2": true, + "code": 2 + } + }, + { + "json": { + "name": "Third item", + "onlyOnItem3": true, + "code": 3 + } + } + ] + }, + "connections": { + "When clicking ‘Test workflow’": { + "main": [ + [ + { + "node": "Switch", + "type": "main", + "index": 0 + } + ] + ] + }, + "Switch": { + "main": [ + [ + { + "node": "Only Item 1", + "type": "main", + "index": 0 + } + ], + [ + { + "node": "Only Item 2", + "type": "main", + "index": 0 + } + ], + [ + { + "node": "Only Item 3", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "active": false, + "settings": { + "executionOrder": "v1" + }, + "versionId": "1e2a7b45-7730-42d6-989e-f3fa80de303e", + "meta": { + "instanceId": "27cc9b56542ad45b38725555722c50a1c3fee1670bbb67980558314ee08517c4" + }, + "id": "V2ld4YU11fsHgr1z", + "tags": [] +} diff --git a/cypress/fixtures/aiAssistant/responses/apply_code_diff_response.json b/cypress/fixtures/aiAssistant/responses/apply_code_diff_response.json new file mode 100644 index 0000000000..8d7ada0b40 --- /dev/null +++ b/cypress/fixtures/aiAssistant/responses/apply_code_diff_response.json @@ -0,0 +1,8 @@ +{ + "data": { + "sessionId": "f9130bd7-c078-4862-a38a-369b27b0ff20-e96eb9f7-d581-4684-b6a9-fd3dfe9fe1fb-emTezIGat7bQsDdtIlbti", + "parameters": { + "jsCode": "// Loop over input items and add a new field called 'myNewField' to the JSON of each one\nfor (const item of $input.all()) {\n item.json.myNewField = 1;\n}\n\nreturn $input.all();" + } + } +} diff --git a/cypress/fixtures/aiAssistant/responses/code_diff_suggestion_response.json b/cypress/fixtures/aiAssistant/responses/code_diff_suggestion_response.json new file mode 100644 index 0000000000..8ee5d647fd --- /dev/null +++ b/cypress/fixtures/aiAssistant/responses/code_diff_suggestion_response.json @@ -0,0 +1,23 @@ +{ + "sessionId": "1", + "messages": [ + { + "role": "assistant", + "type": "message", + "text": "Hi there! Here is my top solution to fix the error in your **Code** node 👇" + }, + { + "type": "code-diff", + "description": "Fix the syntax error by changing '1asd' to a valid value. In this case, it seems like '1' was intended.", + "suggestionId": "1", + "codeDiff": "@@ -2,2 +2,2 @@\n item.json.myNewField = 1asd;\n+ item.json.myNewField = 1;\n", + "role": "assistant", + "quickReplies": [ + { + "text": "Give me another solution", + "type": "new-suggestion" + } + ] + } + ] +} diff --git a/cypress/fixtures/aiAssistant/responses/code_snippet_response.json b/cypress/fixtures/aiAssistant/responses/code_snippet_response.json new file mode 100644 index 0000000000..b05f212de1 --- /dev/null +++ b/cypress/fixtures/aiAssistant/responses/code_snippet_response.json @@ -0,0 +1,28 @@ +{ + "sessionId": "f1d19ed5-0d55-4bad-b49a-f0c56bd6f76f-705b5dbf-12d4-4805-87a3-1e5b3c716d29-W1JgVNrpfitpSNF9rAjB4", + "messages": [ + { + "role": "assistant", + "type": "message", + "text": "To use expressions in n8n, follow these steps:\n\n1. Hover over the parameter where you want to use an expression.\n2. Select **Expressions** in the **Fixed/Expression** toggle.\n3. Write your expression in the parameter, or select **Open expression editor** to open the expressions editor. You can browse the available data in the **Variable selector**. All expressions have the format `{{ your expression here }}`.\n\n### Example: Get data from webhook body\n\nIf your webhook data looks like this:\n\n```json\n[\n {\n \"headers\": {\n \"host\": \"n8n.instance.address\",\n ...\n },\n \"params\": {},\n \"query\": {},\n \"body\": {\n \"name\": \"Jim\",\n \"age\": 30,\n \"city\": \"New York\"\n }\n }\n]\n```\n\nYou can use the following expression to get the value of `city`:\n\n```js\n{{$json.body.city}}\n```\n\nThis expression accesses the incoming JSON-formatted data using n8n's custom `$json` variable and finds the value of `city` (in this example, \"New York\").", + "codeSnippet": "{{$json.body.city}}" + }, + { + "role": "assistant", + "type": "message", + "text": "Did this answer solve your question?", + "quickReplies": [ + { + "text": "Yes, thanks", + "type": "all-good", + "isFeedback": true + }, + { + "text": "No, I am still stuck", + "type": "still-stuck", + "isFeedback": true + } + ] + } + ] +} diff --git a/cypress/fixtures/aiAssistant/responses/end_session_response.json b/cypress/fixtures/aiAssistant/responses/end_session_response.json new file mode 100644 index 0000000000..9478c3adb3 --- /dev/null +++ b/cypress/fixtures/aiAssistant/responses/end_session_response.json @@ -0,0 +1,16 @@ +{ + "sessionId": "1", + "messages": [ + { + "role": "assistant", + "type": "message", + "title": "Glad to Help", + "text": "I'm glad I could help. If you have any more questions or need further assistance with your n8n workflows, feel free to ask!" + }, + { + "role": "assistant", + "type": "event", + "eventName": "end-session" + } + ] +} diff --git a/cypress/fixtures/aiAssistant/responses/node_execution_error_response.json b/cypress/fixtures/aiAssistant/responses/node_execution_error_response.json new file mode 100644 index 0000000000..5fabc17034 --- /dev/null +++ b/cypress/fixtures/aiAssistant/responses/node_execution_error_response.json @@ -0,0 +1,20 @@ +{ + "sessionId": "1", + "messages": [ + { + "role": "assistant", + "type": "message", + "text": "It seems like my suggestion did not work. Do you want me to come up with a different suggestion? You can also provide more context via the chat.", + "quickReplies": [ + { + "text": "Yes", + "type": "new-suggestion" + }, + { + "text": "No, I don't think you can help", + "type": "event:end-session" + } + ] + } + ] +} diff --git a/cypress/fixtures/aiAssistant/responses/quick_reply_message_response.json b/cypress/fixtures/aiAssistant/responses/quick_reply_message_response.json new file mode 100644 index 0000000000..a3c1b958c4 --- /dev/null +++ b/cypress/fixtures/aiAssistant/responses/quick_reply_message_response.json @@ -0,0 +1,20 @@ +{ + "sessionId": "1", + "messages": [ + { + "role": "assistant", + "type": "message", + "text": "Hey, this is an assistant message", + "quickReplies": [ + { + "text": "Sure, let's do it", + "type": "yes" + }, + { + "text": "Nah, doesn't sound good", + "type": "no" + } + ] + } + ] +} diff --git a/cypress/fixtures/aiAssistant/responses/simple_message_response.json b/cypress/fixtures/aiAssistant/responses/simple_message_response.json new file mode 100644 index 0000000000..11299b91f9 --- /dev/null +++ b/cypress/fixtures/aiAssistant/responses/simple_message_response.json @@ -0,0 +1,10 @@ +{ + "sessionId": "1", + "messages": [ + { + "role": "assistant", + "type": "message", + "text": "Hey, this is an assistant message" + } + ] +} diff --git a/cypress/fixtures/aiAssistant/workflows/simple_http_request_workflow.json b/cypress/fixtures/aiAssistant/workflows/simple_http_request_workflow.json new file mode 100644 index 0000000000..28a0ee5359 --- /dev/null +++ b/cypress/fixtures/aiAssistant/workflows/simple_http_request_workflow.json @@ -0,0 +1,35 @@ +{ + "nodes": [ + { + "parameters": {}, + "id": "298d3dc9-5e99-4b3f-919e-05fdcdfbe2d0", + "name": "When clicking ‘Test workflow’", + "type": "n8n-nodes-base.manualTrigger", + "typeVersion": 1, + "position": [360, 220] + }, + { + "parameters": { + "options": {} + }, + "id": "65c32346-e939-4ec7-88a9-1f9184e2258d", + "name": "HTTP Request", + "type": "n8n-nodes-base.httpRequest", + "typeVersion": 4.2, + "position": [580, 220] + } + ], + "connections": { + "When clicking ‘Test workflow’": { + "main": [ + [ + { + "node": "HTTP Request", + "type": "main", + "index": 0 + } + ] + ] + } + } +} diff --git a/cypress/fixtures/aiAssistant/workflows/test_workflow.json b/cypress/fixtures/aiAssistant/workflows/test_workflow.json new file mode 100644 index 0000000000..da930ea489 --- /dev/null +++ b/cypress/fixtures/aiAssistant/workflows/test_workflow.json @@ -0,0 +1,88 @@ +{ + "nodes": [ + { + "parameters": {}, + "id": "ebfced75-2ce1-4c41-a971-6c3b83522c4d", + "name": "When clicking ‘Test workflow’", + "type": "n8n-nodes-base.manualTrigger", + "typeVersion": 1, + "position": [ + 360, + 220 + ] + }, + { + "parameters": { + "errorMessage": "This is an error message" + }, + "id": "f2e60459-401a-49d5-acfc-7b2b31cfdcf7", + "name": "Stop and Error", + "type": "n8n-nodes-base.stopAndError", + "typeVersion": 1, + "position": [ + 1020, + 220 + ] + }, + { + "parameters": { + "jsCode": "// Loop over input items and add a new field called 'myNewField' to the JSON of each one\nfor (const item of $input.all()) {\n item.json.myNewField = 1aaa;\n}\n\nreturn $input.all();" + }, + "id": "b54d4db9-b257-41a8-862f-26d293115bad", + "name": "Code", + "type": "n8n-nodes-base.code", + "typeVersion": 2, + "position": [ + 840, + 320 + ] + }, + { + "parameters": { + "assignments": { + "assignments": [ + { + "id": "053ada73-f7db-4e6a-8cc8-85756cc6ca4e", + "name": "age", + "value": "={{ 32sad }}", + "type": "number" + } + ] + }, + "options": {} + }, + "id": "5fd89612-a871-4679-b7b0-d659e09c6a0e", + "name": "Edit Fields", + "type": "n8n-nodes-base.set", + "typeVersion": 3.4, + "position": [ + 600, + 100 + ] + } + ], + "connections": { + "When clicking ‘Test workflow’": { + "main": [ + [ + { + "node": "Stop and Error", + "type": "main", + "index": 0 + }, + { + "node": "Code", + "type": "main", + "index": 0 + }, + { + "node": "Edit Fields", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "pinData": {} +} diff --git a/cypress/package.json b/cypress/package.json index 7740b5483f..02e2a74c03 100644 --- a/cypress/package.json +++ b/cypress/package.json @@ -7,25 +7,27 @@ "test:e2e:ui": "scripts/run-e2e.js ui", "test:e2e:dev": "scripts/run-e2e.js dev", "test:e2e:all": "scripts/run-e2e.js all", - "format": "prettier --write . --ignore-path ../.prettierignore", + "format": "biome format --write .", + "format:check": "biome ci .", "lint": "eslint . --quiet", "lintfix": "eslint . --fix", "develop": "cd ..; pnpm dev", "start": "cd ..; pnpm start" }, "devDependencies": { - "@types/lodash": "^4.14.195", - "eslint-plugin-cypress": "^3.3.0", + "@n8n/api-types": "workspace:*", + "@types/lodash": "catalog:", + "eslint-plugin-cypress": "^3.5.0", "n8n-workflow": "workspace:*" }, "dependencies": { "@ngneat/falso": "^7.2.0", - "@sinonjs/fake-timers": "^11.2.2", - "cypress": "^13.11.0", + "@sinonjs/fake-timers": "^13.0.2", + "cypress": "^13.14.2", "cypress-otp": "^1.0.3", - "cypress-real-events": "^1.12.0", - "lodash": "4.17.21", - "nanoid": "3.3.6", - "start-server-and-test": "^2.0.3" + "cypress-real-events": "^1.13.0", + "lodash": "catalog:", + "nanoid": "catalog:", + "start-server-and-test": "^2.0.8" } } diff --git a/cypress/pages/demo.ts b/cypress/pages/demo.ts index 691066ce05..7e67b79254 100644 --- a/cypress/pages/demo.ts +++ b/cypress/pages/demo.ts @@ -2,7 +2,7 @@ * Actions */ -export function vistDemoPage(theme?: 'dark' | 'light') { +export function visitDemoPage(theme?: 'dark' | 'light') { const query = theme ? `?theme=${theme}` : ''; cy.visit('/workflows/demo' + query); cy.waitForLoad(); diff --git a/cypress/pages/features/ai-assistant.ts b/cypress/pages/features/ai-assistant.ts new file mode 100644 index 0000000000..6ff48851f3 --- /dev/null +++ b/cypress/pages/features/ai-assistant.ts @@ -0,0 +1,63 @@ +import { overrideFeatureFlag } from '../../composables/featureFlags'; +import { BasePage } from '../base'; + +const AI_ASSISTANT_FEATURE = { + name: 'aiAssistant', + experimentName: '021_ai_debug_helper', + enabledFor: 'variant', + disabledFor: 'control', +}; + +export class AIAssistant extends BasePage { + url = '/workflows/new'; + + getters = { + askAssistantFloatingButton: () => cy.getByTestId('ask-assistant-floating-button'), + askAssistantSidebar: () => cy.getByTestId('ask-assistant-sidebar'), + askAssistantSidebarResizer: () => + this.getters.askAssistantSidebar().find('[class^=_resizer][data-dir=left]').first(), + askAssistantChat: () => cy.getByTestId('ask-assistant-chat'), + placeholderMessage: () => cy.getByTestId('placeholder-message'), + closeChatButton: () => cy.getByTestId('close-chat-button'), + chatInputWrapper: () => cy.getByTestId('chat-input-wrapper'), + chatInput: () => cy.getByTestId('chat-input'), + sendMessageButton: () => cy.getByTestId('send-message-button'), + chatMessagesAll: () => cy.get('[data-test-id^=chat-message]'), + chatMessagesAssistant: () => cy.getByTestId('chat-message-assistant'), + chatMessagesUser: () => cy.getByTestId('chat-message-user'), + chatMessagesSystem: () => cy.getByTestId('chat-message-system'), + quickReplies: () => cy.getByTestId('quick-replies'), + quickReplyButtons: () => this.getters.quickReplies().find('button'), + newAssistantSessionModal: () => cy.getByTestId('new-assistant-session-modal'), + codeDiffs: () => cy.getByTestId('code-diff-suggestion'), + applyCodeDiffButtons: () => cy.getByTestId('replace-code-button'), + undoReplaceCodeButtons: () => cy.getByTestId('undo-replace-button'), + codeReplacedMessage: () => cy.getByTestId('code-replaced-message'), + nodeErrorViewAssistantButton: () => + cy.getByTestId('node-error-view-ask-assistant-button').find('button').first(), + credentialEditAssistantButton: () => cy.getByTestId('credential-edit-ask-assistant-button'), + codeSnippet: () => cy.getByTestId('assistant-code-snippet-content'), + }; + + actions = { + enableAssistant: () => { + overrideFeatureFlag(AI_ASSISTANT_FEATURE.experimentName, AI_ASSISTANT_FEATURE.enabledFor); + cy.enableFeature(AI_ASSISTANT_FEATURE.name); + }, + disableAssistant: () => { + overrideFeatureFlag(AI_ASSISTANT_FEATURE.experimentName, AI_ASSISTANT_FEATURE.disabledFor); + cy.disableFeature(AI_ASSISTANT_FEATURE.name); + }, + sendMessage: (message: string) => { + this.getters.chatInput().type(message).type('{enter}'); + }, + closeChat: () => { + this.getters.closeChatButton().click(); + this.getters.askAssistantChat().should('not.be.visible'); + }, + openChat: () => { + this.getters.askAssistantFloatingButton().click(); + this.getters.askAssistantChat().should('be.visible'); + }, + }; +} diff --git a/cypress/pages/mfa-login.ts b/cypress/pages/mfa-login.ts index ae4d916ba9..66fc197e3f 100644 --- a/cypress/pages/mfa-login.ts +++ b/cypress/pages/mfa-login.ts @@ -1,7 +1,7 @@ -import { N8N_AUTH_COOKIE } from '../constants'; import { BasePage } from './base'; import { SigninPage } from './signin'; import { WorkflowsPage } from './workflows'; +import { N8N_AUTH_COOKIE } from '../constants'; export class MfaLoginPage extends BasePage { url = '/mfa'; diff --git a/cypress/pages/modals/credentials-modal.ts b/cypress/pages/modals/credentials-modal.ts index f14f6be0b7..cd3ded63f8 100644 --- a/cypress/pages/modals/credentials-modal.ts +++ b/cypress/pages/modals/credentials-modal.ts @@ -1,5 +1,5 @@ -import { BasePage } from '../base'; import { getVisibleSelect } from '../../utils'; +import { BasePage } from '../base'; export class CredentialsModal extends BasePage { getters = { diff --git a/cypress/pages/ndv.ts b/cypress/pages/ndv.ts index 99f44d1a8b..4504552e26 100644 --- a/cypress/pages/ndv.ts +++ b/cypress/pages/ndv.ts @@ -1,5 +1,5 @@ -import { getVisiblePopper, getVisibleSelect } from '../utils'; import { BasePage } from './base'; +import { getVisiblePopper, getVisibleSelect } from '../utils'; export class NDV extends BasePage { getters = { @@ -20,10 +20,12 @@ export class NDV extends BasePage { outputDataContainer: () => this.getters.outputPanel().findChildByTestId('ndv-data-container'), outputDisplayMode: () => this.getters.outputPanel().findChildByTestId('ndv-run-data-display-mode').first(), - pinDataButton: () => cy.getByTestId('ndv-pin-data'), + pinDataButton: () => this.getters.outputPanel().findChildByTestId('ndv-pin-data'), + unpinDataLink: () => this.getters.outputPanel().findChildByTestId('ndv-unpin-data'), editPinnedDataButton: () => cy.getByTestId('ndv-edit-pinned-data'), pinnedDataEditor: () => this.getters.outputPanel().find('.cm-editor .cm-scroller .cm-content'), runDataPaneHeader: () => cy.getByTestId('run-data-pane-header'), + aiOutputModeToggle: () => cy.getByTestId('ai-output-mode-select'), nodeOutputHint: () => cy.getByTestId('ndv-output-run-node-hint'), savePinnedDataButton: () => this.getters.runDataPaneHeader().find('button').filter(':visible').contains('Save'), @@ -62,6 +64,7 @@ export class NDV extends BasePage { nodeRenameInput: () => cy.getByTestId('node-rename-input'), executePrevious: () => cy.getByTestId('execute-previous-node'), httpRequestNotice: () => cy.getByTestId('node-parameters-http-notice'), + nodeCredentialsLabel: () => cy.getByTestId('credentials-label'), nthParam: (n: number) => cy.getByTestId('node-parameters').find('.parameter-item').eq(n), inputRunSelector: () => this.getters.inputPanel().findChildByTestId('run-selector'), inputLinkRun: () => this.getters.inputPanel().findChildByTestId('link-run'), @@ -77,6 +80,7 @@ export class NDV extends BasePage { resourceLocatorDropdown: (paramName: string) => this.getters.resourceLocator(paramName).find('[data-test-id="resource-locator-dropdown"]'), resourceLocatorErrorMessage: () => cy.getByTestId('rlc-error-container'), + resourceLocatorAddCredentials: () => this.getters.resourceLocatorErrorMessage().find('a'), resourceLocatorModeSelector: (paramName: string) => this.getters.resourceLocator(paramName).find('[data-test-id="rlc-mode-selector"]'), resourceLocatorSearch: (paramName: string) => @@ -128,20 +132,26 @@ export class NDV extends BasePage { codeEditorFullscreenButton: () => cy.getByTestId('code-editor-fullscreen-button'), codeEditorDialog: () => cy.getByTestId('code-editor-fullscreen'), codeEditorFullscreen: () => this.getters.codeEditorDialog().find('.cm-content'), - nodeRunSuccessIndicator: () => cy.getByTestId('node-run-info-success'), - nodeRunErrorIndicator: () => cy.getByTestId('node-run-info-danger'), + nodeRunTooltipIndicator: () => cy.getByTestId('node-run-info'), + nodeRunSuccessIndicator: () => cy.getByTestId('node-run-status-success'), + nodeRunErrorIndicator: () => cy.getByTestId('node-run-status-danger'), nodeRunErrorMessage: () => cy.getByTestId('node-error-message'), nodeRunErrorDescription: () => cy.getByTestId('node-error-description'), fixedCollectionParameter: (paramName: string) => cy.getByTestId(`fixed-collection-${paramName}`), schemaViewNode: () => cy.getByTestId('run-data-schema-node'), schemaViewNodeName: () => cy.getByTestId('run-data-schema-node-name'), + expressionExpanders: () => cy.getByTestId('expander'), + expressionModalOutput: () => cy.getByTestId('expression-modal-output'), }; actions = { pinData: () => { this.getters.pinDataButton().click({ force: true }); }, + unPinData: () => { + this.getters.unpinDataLink().click({ force: true }); + }, editPinnedData: () => { this.getters.editPinnedDataButton().click(); }, @@ -152,7 +162,7 @@ export class NDV extends BasePage { this.getters.nodeExecuteButton().first().click(); }, close: () => { - this.getters.backToCanvas().click(); + this.getters.backToCanvas().click({ force: true }); }, openInlineExpressionEditor: () => { cy.contains('Expression').invoke('show').click(); @@ -173,7 +183,7 @@ export class NDV extends BasePage { this.getters.editPinnedDataButton().click(); this.getters.pinnedDataEditor().click(); - this.getters.pinnedDataEditor().type('{selectall}{backspace}').paste(JSON.stringify(data)); + this.getters.pinnedDataEditor().invoke('text', '').paste(JSON.stringify(data)); this.actions.savePinnedData(); }, @@ -203,9 +213,9 @@ export class NDV extends BasePage { const droppable = `[data-test-id="parameter-input-${parameterName}"]`; cy.draganddrop(draggable, droppable); }, - mapToParameter: (parameterName: string) => { + mapToParameter: (parameterName: string, position?: 'top' | 'center' | 'bottom') => { const droppable = `[data-test-id="parameter-input-${parameterName}"]`; - cy.draganddrop('', droppable); + cy.draganddrop('', droppable, { position }); }, switchInputMode: (type: 'Schema' | 'Table' | 'JSON' | 'Binary') => { this.getters.inputDisplayMode().find('label').contains(type).click({ force: true }); diff --git a/cypress/pages/settings-community-nodes.ts b/cypress/pages/settings-community-nodes.ts new file mode 100644 index 0000000000..454dc95e21 --- /dev/null +++ b/cypress/pages/settings-community-nodes.ts @@ -0,0 +1,22 @@ +export const getCommunityCards = () => { + return cy.getByTestId('community-package-card'); +}; + +export const visitCommunityNodesSettings = () => { + cy.visit('/settings/community-nodes'); +}; + +export const installFirstCommunityNode = (nodeName: string) => { + cy.getByTestId('action-box').find('button').click(); + cy.getByTestId('communityPackageInstall-modal').find('input').eq(0).type(nodeName); + cy.getByTestId('user-agreement-checkbox').click(); + cy.getByTestId('install-community-package-button').click(); +}; + +export const confirmCommunityNodeUpdate = () => { + cy.getByTestId('communityPackageManageConfirm-modal').find('button').eq(1).click(); +}; + +export const confirmCommunityNodeUninstall = () => { + cy.getByTestId('communityPackageManageConfirm-modal').find('button').eq(1).click(); +}; diff --git a/cypress/pages/settings-log-streaming.ts b/cypress/pages/settings-log-streaming.ts index cc1ea1250d..9063b8dc41 100644 --- a/cypress/pages/settings-log-streaming.ts +++ b/cypress/pages/settings-log-streaming.ts @@ -1,5 +1,5 @@ -import { getVisibleSelect } from '../utils'; import { BasePage } from './base'; +import { getVisibleSelect } from '../utils'; export class SettingsLogStreamingPage extends BasePage { url = '/settings/log-streaming'; diff --git a/cypress/pages/settings-personal.ts b/cypress/pages/settings-personal.ts index 9872fbc668..4574f95691 100644 --- a/cypress/pages/settings-personal.ts +++ b/cypress/pages/settings-personal.ts @@ -1,7 +1,8 @@ import generateOTPToken from 'cypress-otp'; + +import { BasePage } from './base'; import { ChangePasswordModal } from './modals/change-password-modal'; import { MfaSetupModal } from './modals/mfa-setup-modal'; -import { BasePage } from './base'; const changePasswordModal = new ChangePasswordModal(); const mfaSetupModal = new MfaSetupModal(); diff --git a/cypress/pages/settings-users.ts b/cypress/pages/settings-users.ts index d188896225..1eaebc911a 100644 --- a/cypress/pages/settings-users.ts +++ b/cypress/pages/settings-users.ts @@ -1,8 +1,8 @@ -import { SettingsSidebar } from './sidebar/settings-sidebar'; +import { BasePage } from './base'; import { MainSidebar } from './sidebar/main-sidebar'; +import { SettingsSidebar } from './sidebar/settings-sidebar'; import { WorkflowPage } from './workflow'; import { WorkflowsPage } from './workflows'; -import { BasePage } from './base'; const workflowPage = new WorkflowPage(); const workflowsPage = new WorkflowsPage(); diff --git a/cypress/pages/signin.ts b/cypress/pages/signin.ts index 22d0fd163a..a97fe4888e 100644 --- a/cypress/pages/signin.ts +++ b/cypress/pages/signin.ts @@ -1,6 +1,6 @@ -import { N8N_AUTH_COOKIE } from '../constants'; import { BasePage } from './base'; import { WorkflowsPage } from './workflows'; +import { N8N_AUTH_COOKIE } from '../constants'; export class SigninPage extends BasePage { url = '/signin'; diff --git a/cypress/pages/template-credential-setup.ts b/cypress/pages/template-credential-setup.ts index 3fa4d20671..06c1baab8e 100644 --- a/cypress/pages/template-credential-setup.ts +++ b/cypress/pages/template-credential-setup.ts @@ -1,6 +1,6 @@ -import * as formStep from '../composables/setup-template-form-step'; -import { overrideFeatureFlag } from '../composables/featureFlags'; import { CredentialsModal, MessageBox } from './modals'; +import { overrideFeatureFlag } from '../composables/featureFlags'; +import * as formStep from '../composables/setup-template-form-step'; const credentialsModal = new CredentialsModal(); const messageBox = new MessageBox(); diff --git a/cypress/pages/variables.ts b/cypress/pages/variables.ts index c74624686e..6ac9a939b2 100644 --- a/cypress/pages/variables.ts +++ b/cypress/pages/variables.ts @@ -1,4 +1,5 @@ import { BasePage } from './base'; + import Chainable = Cypress.Chainable; export class VariablesPage extends BasePage { diff --git a/cypress/pages/workflow-executions-tab.ts b/cypress/pages/workflow-executions-tab.ts index 27285d28b8..5e8c36c055 100644 --- a/cypress/pages/workflow-executions-tab.ts +++ b/cypress/pages/workflow-executions-tab.ts @@ -7,6 +7,7 @@ export class WorkflowExecutionsTab extends BasePage { getters = { executionsTabButton: () => cy.getByTestId('radio-button-executions'), executionsSidebar: () => cy.getByTestId('executions-sidebar'), + executionsEmptyList: () => cy.getByTestId('execution-list-empty'), autoRefreshCheckBox: () => cy.getByTestId('auto-refresh-checkbox'), executionsList: () => cy.getByTestId('current-executions-list'), executionListItems: () => this.getters.executionsList().find('div.execution-card'), @@ -34,7 +35,7 @@ export class WorkflowExecutionsTab extends BasePage { }, createManualExecutions: (count: number) => { for (let i = 0; i < count; i++) { - cy.intercept('POST', '/rest/workflows/**/run').as('workflowExecution'); + cy.intercept('POST', '/rest/workflows/**/run?**').as('workflowExecution'); workflowPage.actions.executeWorkflow(); cy.wait('@workflowExecution'); } diff --git a/cypress/pages/workflow.ts b/cypress/pages/workflow.ts index 0c2a269607..cd1e7d9462 100644 --- a/cypress/pages/workflow.ts +++ b/cypress/pages/workflow.ts @@ -1,8 +1,8 @@ -import { META_KEY } from '../constants'; -import { getVisibleSelect } from '../utils'; -import { getUniqueWorkflowName } from '../utils/workflowUtils'; import { BasePage } from './base'; import { NodeCreator } from './features/node-creator'; +import { META_KEY } from '../constants'; +import { getVisibleSelect } from '../utils'; +import { getUniqueWorkflowName, isCanvasV2 } from '../utils/workflowUtils'; const nodeCreator = new NodeCreator(); export class WorkflowPage extends BasePage { @@ -27,7 +27,11 @@ export class WorkflowPage extends BasePage { nodeCreatorSearchBar: () => cy.getByTestId('node-creator-search-bar'), nodeCreatorPlusButton: () => cy.getByTestId('node-creator-plus-button'), canvasPlusButton: () => cy.getByTestId('canvas-plus-button'), - canvasNodes: () => cy.getByTestId('canvas-node'), + canvasNodes: () => + cy.ifCanvasVersion( + () => cy.getByTestId('canvas-node'), + () => cy.getByTestId('canvas-node').not('[data-node-type="n8n-nodes-internal.addNodes"]'), + ), canvasNodeByName: (nodeName: string) => this.getters.canvasNodes().filter(`:contains(${nodeName})`), nodeIssuesByName: (nodeName: string) => @@ -37,6 +41,17 @@ export class WorkflowPage extends BasePage { .should('have.length.greaterThan', 0) .findChildByTestId('node-issues'), getEndpointSelector: (type: 'input' | 'output' | 'plus', nodeName: string, index = 0) => { + if (isCanvasV2()) { + if (type === 'input') { + return `[data-test-id="canvas-node-input-handle"][data-node-name="${nodeName}"][data-handle-index="${index}"]`; + } + if (type === 'output') { + return `[data-test-id="canvas-node-output-handle"][data-node-name="${nodeName}"][data-handle-index="${index}"]`; + } + if (type === 'plus') { + return `[data-test-id="canvas-node-output-handle"][data-node-name="${nodeName}"][data-handle-index="${index}"] [data-test-id="canvas-handle-plus"] .clickable`; + } + } return `[data-endpoint-name='${nodeName}'][data-endpoint-type='${type}'][data-input-index='${index}']`; }, canvasNodeInputEndpointByName: (nodeName: string, index = 0) => { @@ -46,7 +61,15 @@ export class WorkflowPage extends BasePage { return cy.get(this.getters.getEndpointSelector('output', nodeName, index)); }, canvasNodePlusEndpointByName: (nodeName: string, index = 0) => { - return cy.get(this.getters.getEndpointSelector('plus', nodeName, index)); + return cy.ifCanvasVersion( + () => cy.get(this.getters.getEndpointSelector('plus', nodeName, index)), + () => + cy + .get( + `[data-test-id="canvas-node-output-handle"][data-node-name="${nodeName}"] [data-test-id="canvas-handle-plus"] .clickable`, + ) + .eq(index), + ); }, activatorSwitch: () => cy.getByTestId('workflow-activate-switch'), workflowMenu: () => cy.getByTestId('workflow-menu'), @@ -56,13 +79,29 @@ export class WorkflowPage extends BasePage { expressionModalInput: () => cy.getByTestId('expression-modal-input').find('[role=textbox]'), expressionModalOutput: () => cy.getByTestId('expression-modal-output'), - nodeViewRoot: () => cy.getByTestId('node-view-root'), + nodeViewRoot: () => + cy.ifCanvasVersion( + () => cy.getByTestId('node-view-root'), + () => this.getters.nodeView(), + ), copyPasteInput: () => cy.getByTestId('hidden-copy-paste'), - nodeConnections: () => cy.get('.jtk-connector'), + nodeConnections: () => + cy.ifCanvasVersion( + () => cy.get('.jtk-connector'), + () => cy.getByTestId('edge-label-wrapper'), + ), zoomToFitButton: () => cy.getByTestId('zoom-to-fit'), nodeEndpoints: () => cy.get('.jtk-endpoint-connected'), - disabledNodes: () => cy.get('.node-box.disabled'), - selectedNodes: () => this.getters.canvasNodes().filter('.jtk-drag-selected'), + disabledNodes: () => + cy.ifCanvasVersion( + () => cy.get('.node-box.disabled'), + () => cy.get('[data-test-id="canvas-trigger-node"][class*="disabled"]'), + ), + selectedNodes: () => + cy.ifCanvasVersion( + () => this.getters.canvasNodes().filter('.jtk-drag-selected'), + () => this.getters.canvasNodes().parent().filter('.selected'), + ), // Workflow menu items workflowMenuItemDuplicate: () => cy.getByTestId('workflow-menu-item-duplicate'), workflowMenuItemDownload: () => cy.getByTestId('workflow-menu-item-download'), @@ -92,8 +131,21 @@ export class WorkflowPage extends BasePage { shareButton: () => cy.getByTestId('workflow-share-button'), duplicateWorkflowModal: () => cy.getByTestId('duplicate-modal'), - nodeViewBackground: () => cy.getByTestId('node-view-background'), - nodeView: () => cy.getByTestId('node-view'), + nodeViewBackground: () => + cy.ifCanvasVersion( + () => cy.getByTestId('node-view-background'), + () => cy.getByTestId('canvas'), + ), + nodeView: () => + cy.ifCanvasVersion( + () => cy.getByTestId('node-view'), + () => cy.get('[data-test-id="canvas-wrapper"]'), + ), + canvasViewport: () => + cy.ifCanvasVersion( + () => cy.getByTestId('node-view'), + () => cy.get('.vue-flow__transformationpane.vue-flow__container'), + ), inlineExpressionEditorInput: () => cy.getByTestId('inline-expression-editor-input').find('[role=textbox]'), inlineExpressionEditorOutput: () => cy.getByTestId('inline-expression-editor-output'), @@ -115,12 +167,26 @@ export class WorkflowPage extends BasePage { ndvParameters: () => cy.getByTestId('parameter-item'), nodeCredentialsLabel: () => cy.getByTestId('credentials-label'), getConnectionBetweenNodes: (sourceNodeName: string, targetNodeName: string) => - cy.get( - `.jtk-connector[data-source-node="${sourceNodeName}"][data-target-node="${targetNodeName}"]`, + cy.ifCanvasVersion( + () => + cy.get( + `.jtk-connector[data-source-node="${sourceNodeName}"][data-target-node="${targetNodeName}"]`, + ), + () => + cy.get( + `[data-test-id="edge-label-wrapper"][data-source-node-name="${sourceNodeName}"][data-target-node-name="${targetNodeName}"]`, + ), ), getConnectionActionsBetweenNodes: (sourceNodeName: string, targetNodeName: string) => - cy.get( - `.connection-actions[data-source-node="${sourceNodeName}"][data-target-node="${targetNodeName}"]`, + cy.ifCanvasVersion( + () => + cy.get( + `.connection-actions[data-source-node="${sourceNodeName}"][data-target-node="${targetNodeName}"]`, + ), + () => + cy.get( + `[data-test-id="edge-label-wrapper"][data-source-node-name="${sourceNodeName}"][data-target-node-name="${targetNodeName}"] [data-test-id="canvas-edge-toolbar"]`, + ), ), addStickyButton: () => cy.getByTestId('add-sticky-button'), stickies: () => cy.getByTestId('sticky'), @@ -128,6 +194,18 @@ export class WorkflowPage extends BasePage { workflowHistoryButton: () => cy.getByTestId('workflow-history-button'), colors: () => cy.getByTestId('color'), contextMenuAction: (action: string) => cy.getByTestId(`context-menu-item-${action}`), + getNodeLeftPosition: (element: JQuery) => { + if (isCanvasV2()) { + return parseFloat(element.parent().css('transform').split(',')[4]); + } + return parseFloat(element.css('left')); + }, + getNodeTopPosition: (element: JQuery) => { + if (isCanvasV2()) { + return parseFloat(element.parent().css('transform').split(',')[5]); + } + return parseFloat(element.css('top')); + }, }; actions = { @@ -332,7 +410,7 @@ export class WorkflowPage extends BasePage { pinchToZoom: (steps: number, mode: 'zoomIn' | 'zoomOut' = 'zoomIn') => { cy.window().then((win) => { // Pinch-to-zoom simulates a 'wheel' event with ctrlKey: true (same as zooming by scrolling) - this.getters.nodeViewBackground().trigger('wheel', { + this.getters.nodeView().trigger('wheel', { force: true, bubbles: true, ctrlKey: true, @@ -391,9 +469,12 @@ export class WorkflowPage extends BasePage { action?: string, ) => { this.getters.getConnectionBetweenNodes(sourceNodeName, targetNodeName).first().realHover(); - this.getters - .getConnectionActionsBetweenNodes(sourceNodeName, targetNodeName) - .find('.add') + const connectionsBetweenNodes = () => + this.getters.getConnectionActionsBetweenNodes(sourceNodeName, targetNodeName); + cy.ifCanvasVersion( + () => connectionsBetweenNodes().find('.add'), + () => connectionsBetweenNodes().get('[data-test-id="add-connection-button"]'), + ) .first() .click({ force: true }); @@ -401,9 +482,12 @@ export class WorkflowPage extends BasePage { }, deleteNodeBetweenNodes: (sourceNodeName: string, targetNodeName: string) => { this.getters.getConnectionBetweenNodes(sourceNodeName, targetNodeName).first().realHover(); - this.getters - .getConnectionActionsBetweenNodes(sourceNodeName, targetNodeName) - .find('.delete') + const connectionsBetweenNodes = () => + this.getters.getConnectionActionsBetweenNodes(sourceNodeName, targetNodeName); + cy.ifCanvasVersion( + () => connectionsBetweenNodes().find('.delete'), + () => connectionsBetweenNodes().get('[data-test-id="delete-connection-button"]'), + ) .first() .click({ force: true }); }, diff --git a/cypress/scripts/run-e2e.js b/cypress/scripts/run-e2e.js index 05ddae1a9f..8096a70caf 100755 --- a/cypress/scripts/run-e2e.js +++ b/cypress/scripts/run-e2e.js @@ -13,7 +13,6 @@ function runTests(options) { process.env.N8N_USER_FOLDER = userFolder; process.env.E2E_TESTS = 'true'; process.env.NODE_OPTIONS = '--dns-result-order=ipv4first'; - process.env.VUE_APP_MAX_PINNED_DATA_SIZE = `${16 * 1024}`; if (options.customEnv) { Object.keys(options.customEnv).forEach((key) => { diff --git a/cypress/support/commands.ts b/cypress/support/commands.ts index a7fa994289..6cad68b34f 100644 --- a/cypress/support/commands.ts +++ b/cypress/support/commands.ts @@ -1,7 +1,7 @@ import 'cypress-real-events'; +import type { FrontendSettings } from '@n8n/api-types'; import FakeTimers from '@sinonjs/fake-timers'; -import type { IN8nUISettings } from 'n8n-workflow'; -import { WorkflowPage } from '../pages'; + import { BACKEND_BASE_URL, INSTANCE_ADMIN, @@ -9,7 +9,8 @@ import { INSTANCE_OWNER, N8N_AUTH_COOKIE, } from '../constants'; -import { getUniqueWorkflowName } from '../utils/workflowUtils'; +import { WorkflowPage } from '../pages'; +import { getUniqueWorkflowName, isCanvasV2 } from '../utils/workflowUtils'; Cypress.Commands.add('setAppDate', (targetDate: number | Date) => { cy.window().then((win) => { @@ -25,6 +26,10 @@ Cypress.Commands.add('getByTestId', (selector, ...args) => { return cy.get(`[data-test-id="${selector}"]`, ...args); }); +Cypress.Commands.add('ifCanvasVersion', (getterV1, getterV2) => { + return isCanvasV2() ? getterV2() : getterV1(); +}); + Cypress.Commands.add( 'createFixtureWorkflow', (fixtureKey: string, workflowName = getUniqueWorkflowName()) => { @@ -59,14 +64,22 @@ Cypress.Commands.add('waitForLoad', (waitForIntercepts = true) => { Cypress.Commands.add('signin', ({ email, password }) => { void Cypress.session.clearAllSavedSessions(); - cy.session([email, password], () => - cy.request({ - method: 'POST', - url: `${BACKEND_BASE_URL}/rest/login`, - body: { email, password }, - failOnStatusCode: false, - }), - ); + cy.session([email, password], () => { + return cy + .request({ + method: 'POST', + url: `${BACKEND_BASE_URL}/rest/login`, + body: { email, password }, + failOnStatusCode: false, + }) + .then((response) => { + Cypress.env('currentUserId', response.body.data.id); + + cy.window().then((win) => { + win.localStorage.setItem('NodeView.switcher.discovered', 'true'); // @TODO Remove this once the switcher is removed + }); + }); + }); }); Cypress.Commands.add('signinAsOwner', () => cy.signin(INSTANCE_OWNER)); @@ -82,8 +95,8 @@ Cypress.Commands.add('signout', () => { cy.getCookie(N8N_AUTH_COOKIE).should('not.exist'); }); -export let settings: Partial; -Cypress.Commands.add('overrideSettings', (value: Partial) => { +export let settings: Partial; +Cypress.Commands.add('overrideSettings', (value: Partial) => { settings = value; }); @@ -175,7 +188,7 @@ Cypress.Commands.add('drag', (selector, pos, options) => { }); }); -Cypress.Commands.add('draganddrop', (draggableSelector, droppableSelector) => { +Cypress.Commands.add('draganddrop', (draggableSelector, droppableSelector, options) => { if (draggableSelector) { cy.get(draggableSelector).should('exist'); } @@ -197,7 +210,7 @@ Cypress.Commands.add('draganddrop', (draggableSelector, droppableSelector) => { cy.get(droppableSelector).realMouseMove(0, 0); cy.get(droppableSelector).realMouseMove(pageX, pageY); cy.get(droppableSelector).realHover(); - cy.get(droppableSelector).realMouseUp(); + cy.get(droppableSelector).realMouseUp({ position: options?.position ?? 'top' }); if (draggableSelector) { cy.get(draggableSelector).realMouseUp(); } diff --git a/cypress/support/e2e.ts b/cypress/support/e2e.ts index 3968a09b5b..4261cb4b63 100644 --- a/cypress/support/e2e.ts +++ b/cypress/support/e2e.ts @@ -1,5 +1,6 @@ import cloneDeep from 'lodash/cloneDeep'; import merge from 'lodash/merge'; + import { settings } from './commands'; before(() => { @@ -17,6 +18,13 @@ beforeEach(() => { cy.window().then((win): void => { win.localStorage.setItem('N8N_THEME', 'light'); + win.localStorage.setItem('N8N_AUTOCOMPLETE_ONBOARDED', 'true'); + win.localStorage.setItem('N8N_MAPPING_ONBOARDED', 'true'); + + const nodeViewVersion = Cypress.env('NODE_VIEW_VERSION'); + if (nodeViewVersion) { + win.localStorage.setItem('NodeView.version', nodeViewVersion); + } }); cy.intercept('GET', '/rest/settings', (req) => { diff --git a/cypress/support/index.ts b/cypress/support/index.ts index cb0f42bdce..2fd1faeb22 100644 --- a/cypress/support/index.ts +++ b/cypress/support/index.ts @@ -1,7 +1,7 @@ // Load type definitions that come with Cypress module /// -import type { IN8nUISettings } from 'n8n-workflow'; +import type { FrontendSettings } from '@n8n/api-types'; Cypress.Keyboard.defaults({ keystrokeDelay: 0, @@ -12,6 +12,10 @@ interface SigninPayload { password: string; } +interface DragAndDropOptions { + position: 'top' | 'center' | 'bottom'; +} + declare global { namespace Cypress { interface SuiteConfigOverrides { @@ -24,6 +28,7 @@ declare global { selector: string, ...args: Array | undefined> ): Chainable>; + ifCanvasVersion(getterV1: () => T1, getterV2: () => T2): T1 | T2; findChildByTestId(childTestId: string): Chainable>; /** * Creates a workflow from the given fixture and optionally renames it. @@ -41,7 +46,7 @@ declare global { */ signinAsMember(index?: number): void; signout(): void; - overrideSettings(value: Partial): void; + overrideSettings(value: Partial): void; enableFeature(feature: string): void; disableFeature(feature: string): void; enableQueueMode(): void; @@ -56,7 +61,11 @@ declare global { target: [number, number], options?: { abs?: boolean; index?: number; realMouse?: boolean; clickToFinish?: boolean }, ): void; - draganddrop(draggableSelector: string, droppableSelector: string): void; + draganddrop( + draggableSelector: string, + droppableSelector: string, + options?: Partial, + ): void; push(type: string, data: unknown): void; shouldNotHaveConsoleErrors(): void; window(): Chainable< @@ -64,6 +73,7 @@ declare global { innerWidth: number; innerHeight: number; preventNodeViewBeforeUnload?: boolean; + maxPinnedDataSize?: number; featureFlags: { override: (feature: string, value: unknown) => void; }; diff --git a/cypress/utils/executions.ts b/cypress/utils/executions.ts index e42e2152d6..0b4814fdc9 100644 --- a/cypress/utils/executions.ts +++ b/cypress/utils/executions.ts @@ -1,5 +1,6 @@ -import { nanoid } from 'nanoid'; import type { IDataObject, IPinData, ITaskData, ITaskDataConnections } from 'n8n-workflow'; +import { nanoid } from 'nanoid'; + import { clickExecuteWorkflowButton } from '../composables/workflow'; export function createMockNodeExecutionData( @@ -88,7 +89,7 @@ export function runMockWorkflowExecution({ }) { const executionId = nanoid(8); - cy.intercept('POST', '/rest/workflows/**/run', { + cy.intercept('POST', '/rest/workflows/**/run?**', { statusCode: 201, body: { data: { diff --git a/cypress/utils/popper.ts b/cypress/utils/popper.ts index 5743c70f3e..43ef2997cf 100644 --- a/cypress/utils/popper.ts +++ b/cypress/utils/popper.ts @@ -3,7 +3,7 @@ export function getPopper() { } export function getVisiblePopper() { - return getPopper().filter(':visible'); + return getPopper().filter('[aria-hidden="false"]'); } export function getVisibleSelect() { diff --git a/cypress/utils/workflowUtils.ts b/cypress/utils/workflowUtils.ts index 5001dbe1b6..0c91a097bd 100644 --- a/cypress/utils/workflowUtils.ts +++ b/cypress/utils/workflowUtils.ts @@ -3,3 +3,7 @@ import { nanoid } from 'nanoid'; export function getUniqueWorkflowName(workflowNamePrefix?: string) { return workflowNamePrefix ? `${workflowNamePrefix} ${nanoid(12)}` : nanoid(12); } + +export function isCanvasV2() { + return Cypress.env('NODE_VIEW_VERSION') === 2; +} diff --git a/docker/images/n8n-custom/Dockerfile b/docker/images/n8n-custom/Dockerfile index 9103742cd4..78eedaa2c3 100644 --- a/docker/images/n8n-custom/Dockerfile +++ b/docker/images/n8n-custom/Dockerfile @@ -1,24 +1,24 @@ ARG NODE_VERSION=20 # 1. Create an image to build n8n -FROM --platform=linux/amd64 n8nio/base:${NODE_VERSION} as builder +FROM --platform=linux/amd64 n8nio/base:${NODE_VERSION} AS builder # Build the application from source WORKDIR /src COPY . /src -RUN --mount=type=cache,id=pnpm-store,target=/root/.local/share/pnpm/store --mount=type=cache,id=pnpm-metadata,target=/root/.cache/pnpm/metadata pnpm install --frozen-lockfile +RUN --mount=type=cache,id=pnpm-store,target=/root/.local/share/pnpm/store --mount=type=cache,id=pnpm-metadata,target=/root/.cache/pnpm/metadata DOCKER_BUILD=true pnpm install --frozen-lockfile RUN pnpm build # Delete all dev dependencies RUN jq 'del(.pnpm.patchedDependencies)' package.json > package.json.tmp; mv package.json.tmp package.json -RUN node scripts/trim-fe-packageJson.js +RUN node .github/scripts/trim-fe-packageJson.js # Delete any source code, source-mapping, or typings RUN find . -type f -name "*.ts" -o -name "*.js.map" -o -name "*.vue" -o -name "tsconfig.json" -o -name "*.tsbuildinfo" | xargs rm -rf # Deploy the `n8n` package into /compiled RUN mkdir /compiled -RUN NODE_ENV=production pnpm --filter=n8n --prod --no-optional deploy /compiled +RUN NODE_ENV=production DOCKER_BUILD=true pnpm --filter=n8n --prod --no-optional deploy /compiled # 2. Start with a new clean image with just the code that is needed to run n8n FROM n8nio/base:${NODE_VERSION} @@ -31,6 +31,30 @@ WORKDIR /home/node COPY --from=builder /compiled /usr/local/lib/node_modules/n8n COPY docker/images/n8n/docker-entrypoint.sh / +# Setup the Task Runner Launcher +ARG TARGETPLATFORM +ARG LAUNCHER_VERSION=0.1.1 +ENV N8N_RUNNERS_MODE=internal_launcher \ + N8N_RUNNERS_LAUNCHER_PATH=/usr/local/bin/task-runner-launcher +COPY docker/images/n8n/n8n-task-runners.json /etc/n8n-task-runners.json +# First, download, verify, then extract the launcher binary +# Second, chmod with 4555 to allow the use of setuid +# Third, create a new user and group to execute the Task Runners under +RUN \ + if [[ "$TARGETPLATFORM" = "linux/amd64" ]]; then export ARCH_NAME="x86_64"; \ + elif [[ "$TARGETPLATFORM" = "linux/arm64" ]]; then export ARCH_NAME="aarch64"; fi; \ + mkdir /launcher-temp && \ + cd /launcher-temp && \ + wget https://github.com/n8n-io/task-runner-launcher/releases/download/${LAUNCHER_VERSION}/task-runner-launcher-$ARCH_NAME-unknown-linux-musl.zip && \ + wget https://github.com/n8n-io/task-runner-launcher/releases/download/${LAUNCHER_VERSION}/task-runner-launcher-$ARCH_NAME-unknown-linux-musl.sha256 && \ + sha256sum -c task-runner-launcher-$ARCH_NAME-unknown-linux-musl.sha256 && \ + unzip -d $(dirname ${N8N_RUNNERS_LAUNCHER_PATH}) task-runner-launcher-$ARCH_NAME-unknown-linux-musl.zip task-runner-launcher && \ + cd - && \ + rm -r /launcher-temp && \ + chmod 4555 ${N8N_RUNNERS_LAUNCHER_PATH} && \ + addgroup -g 2000 task-runner && \ + adduser -D -u 2000 -g "Task Runner User" -G task-runner task-runner + RUN \ cd /usr/local/lib/node_modules/n8n && \ npm rebuild sqlite3 && \ diff --git a/docker/images/n8n/Dockerfile b/docker/images/n8n/Dockerfile index 2da1bc1f47..8a94d0c9ec 100644 --- a/docker/images/n8n/Dockerfile +++ b/docker/images/n8n/Dockerfile @@ -22,6 +22,30 @@ RUN set -eux; \ find /usr/local/lib/node_modules/n8n -type f -name "*.ts" -o -name "*.js.map" -o -name "*.vue" | xargs rm -f && \ rm -rf /root/.npm +# Setup the Task Runner Launcher +ARG TARGETPLATFORM +ARG LAUNCHER_VERSION=0.1.1 +ENV N8N_RUNNERS_MODE=internal_launcher \ + N8N_RUNNERS_LAUNCHER_PATH=/usr/local/bin/task-runner-launcher +COPY n8n-task-runners.json /etc/n8n-task-runners.json +# First, download, verify, then extract the launcher binary +# Second, chmod with 4555 to allow the use of setuid +# Third, create a new user and group to execute the Task Runners under +RUN \ + if [[ "$TARGETPLATFORM" = "linux/amd64" ]]; then export ARCH_NAME="x86_64"; \ + elif [[ "$TARGETPLATFORM" = "linux/arm64" ]]; then export ARCH_NAME="aarch64"; fi; \ + mkdir /launcher-temp && \ + cd /launcher-temp && \ + wget https://github.com/n8n-io/task-runner-launcher/releases/download/${LAUNCHER_VERSION}/task-runner-launcher-$ARCH_NAME-unknown-linux-musl.zip && \ + wget https://github.com/n8n-io/task-runner-launcher/releases/download/${LAUNCHER_VERSION}/task-runner-launcher-$ARCH_NAME-unknown-linux-musl.sha256 && \ + sha256sum -c task-runner-launcher-$ARCH_NAME-unknown-linux-musl.sha256 && \ + unzip -d $(dirname ${N8N_RUNNERS_LAUNCHER_PATH}) task-runner-launcher-$ARCH_NAME-unknown-linux-musl.zip task-runner-launcher && \ + cd - && \ + rm -r /launcher-temp && \ + chmod 4555 ${N8N_RUNNERS_LAUNCHER_PATH} && \ + addgroup -g 2000 task-runner && \ + adduser -D -u 2000 -g "Task Runner User" -G task-runner task-runner + COPY docker-entrypoint.sh / RUN \ diff --git a/docker/images/n8n/README.md b/docker/images/n8n/README.md index d654596150..f7b45f9467 100644 --- a/docker/images/n8n/README.md +++ b/docker/images/n8n/README.md @@ -230,6 +230,4 @@ Before you upgrade to the latest version make sure to check here if there are an ## License -n8n is [fair-code](https://faircode.io) distributed under the [**Sustainable Use License**](https://github.com/n8n-io/n8n/blob/master/packages/cli/LICENSE.md). - -Additional information about the license can be found in the [docs](https://docs.n8n.io/reference/license/). +You can find the license information [here](https://github.com/n8n-io/n8n/blob/master/README.md#license) diff --git a/docker/images/n8n/n8n-task-runners.json b/docker/images/n8n/n8n-task-runners.json new file mode 100644 index 0000000000..56a48b2d09 --- /dev/null +++ b/docker/images/n8n/n8n-task-runners.json @@ -0,0 +1,20 @@ +{ + "task-runners": [ + { + "runner-type": "javascript", + "workdir": "/home/task-runner", + "command": "/usr/local/bin/node", + "args": ["/usr/local/lib/node_modules/n8n/node_modules/@n8n/task-runner/dist/start.js"], + "allowed-env": [ + "PATH", + "N8N_RUNNERS_GRANT_TOKEN", + "N8N_RUNNERS_N8N_URI", + "N8N_RUNNERS_MAX_PAYLOAD", + "NODE_FUNCTION_ALLOW_BUILTIN", + "NODE_FUNCTION_ALLOW_EXTERNAL" + ], + "uid": 2000, + "gid": 2000 + } + ] +} diff --git a/lefthook.yml b/lefthook.yml new file mode 100644 index 0000000000..aa17417824 --- /dev/null +++ b/lefthook.yml @@ -0,0 +1,16 @@ +pre-commit: + commands: + biome_check: + glob: 'packages/**/*.{js,ts,json}' + run: ./node_modules/.bin/biome check --write --no-errors-on-unmatched --files-ignore-unknown=true --colors=off {staged_files} + stage_fixed: true + skip: + - merge + - rebase + prettier_check: + glob: 'packages/**/*.{vue,yml,md,css,scss}' + run: ./node_modules/.bin/prettier --write --ignore-unknown --no-error-on-unmatched-pattern {staged_files} + stage_fixed: true + skip: + - merge + - rebase diff --git a/n8n.code-workspace b/n8n.code-workspace deleted file mode 100644 index 9d32d7aa04..0000000000 --- a/n8n.code-workspace +++ /dev/null @@ -1,7 +0,0 @@ -{ - "folders": [ - { - "path": ".", - }, - ], -} diff --git a/package.json b/package.json index 563cf6227b..09c576a8c3 100644 --- a/package.json +++ b/package.json @@ -1,51 +1,56 @@ { "name": "n8n-monorepo", - "version": "1.48.0", + "version": "1.65.0", "private": true, - "homepage": "https://n8n.io", "engines": { - "node": ">=18.10", - "pnpm": ">=9.1" + "node": ">=20.15", + "pnpm": ">=9.5" }, - "packageManager": "pnpm@9.1.4", + "packageManager": "pnpm@9.6.0", "scripts": { + "prepare": "node scripts/prepare.mjs", "preinstall": "node scripts/block-npm-install.js", "build": "turbo run build", - "build:backend": "pnpm --filter=!@n8n/chat --filter=!@n8n/codemirror-lang --filter=!n8n-design-system --filter=!n8n-editor-ui build", - "build:frontend": "pnpm --filter=@n8n/chat --filter=@n8n/codemirror-lang --filter=n8n-design-system --filter=n8n-editor-ui build", - "typecheck": "pnpm --filter=!@n8n/storybook --filter=!n8n-core --filter=!n8n-workflow --filter=!n8n typecheck", - "dev": "turbo run dev --parallel --filter=!n8n-design-system --filter=!@n8n/chat", - "dev:ai": "turbo run dev --parallel --filter=@n8n/nodes-langchain --filter=n8n --filter=n8n-core", + "build:backend": "turbo run build:backend", + "build:frontend": "turbo run build:frontend", + "build:nodes": "turbo run build:nodes", + "typecheck": "turbo typecheck", + "dev": "turbo run dev --parallel --env-mode=loose --filter=!n8n-design-system --filter=!@n8n/chat --filter=!@n8n/task-runner", + "dev:ai": "turbo run dev --parallel --env-mode=loose --filter=@n8n/nodes-langchain --filter=n8n --filter=n8n-core", "clean": "turbo run clean --parallel", + "reset": "node scripts/ensure-zx.mjs && zx scripts/reset.mjs", "format": "turbo run format && node scripts/format.mjs", + "format:check": "turbo run format:check", "lint": "turbo run lint", "lintfix": "turbo run lintfix", - "lint:backend": "pnpm --filter=!@n8n/chat --filter=!@n8n/codemirror-lang --filter=!n8n-design-system --filter=!n8n-editor-ui --filter=!n8n-nodes-base --filter=!@n8n/n8n-nodes-langchain lint", - "lint:nodes": "pnpm --filter=n8n-nodes-base --filter=@n8n/n8n-nodes-langchain lint", - "lint:frontend": "pnpm --filter=@n8n/chat --filter=@n8n/codemirror-lang --filter=n8n-design-system --filter=n8n-editor-ui lint", + "lint:backend": "turbo run lint:backend", + "lint:nodes": "turbo run lint:nodes", + "lint:frontend": "turbo run lint:frontend", "optimize-svg": "find ./packages -name '*.svg' ! -name 'pipedrive.svg' -print0 | xargs -0 -P16 -L20 npx svgo", "start": "run-script-os", "start:default": "cd packages/cli/bin && ./n8n", "start:tunnel": "./packages/cli/bin/n8n start --tunnel", "start:windows": "cd packages/cli/bin && n8n", "test": "turbo run test", - "test:backend": "pnpm --filter=!@n8n/chat --filter=!@n8n/codemirror-lang --filter=!n8n-design-system --filter=!n8n-editor-ui --filter=!n8n-nodes-base --filter=!@n8n/n8n-nodes-langchain test", - "test:nodes": "pnpm --filter=n8n-nodes-base --filter=@n8n/n8n-nodes-langchain test", - "test:frontend": "pnpm --filter=@n8n/chat --filter=@n8n/codemirror-lang --filter=n8n-design-system --filter=n8n-editor-ui test", + "test:backend": "turbo run test:backend --concurrency=1", + "test:frontend": "turbo run test:frontend --concurrency=1", + "test:nodes": "turbo run test:nodes --concurrency=1", "watch": "turbo run watch --parallel", "webhook": "./packages/cli/bin/n8n webhook", "worker": "./packages/cli/bin/n8n worker" }, "devDependencies": { + "@biomejs/biome": "^1.9.0", "@n8n_io/eslint-config": "workspace:*", "@types/jest": "^29.5.3", + "@types/node": "*", "@types/supertest": "^6.0.2", - "@vitest/coverage-v8": "^1.6.0", "jest": "^29.6.2", "jest-environment-jsdom": "^29.6.2", "jest-expect-message": "^1.1.3", "jest-mock": "^29.6.2", "jest-mock-extended": "^3.0.4", + "lefthook": "^1.7.15", "nock": "^13.3.2", "nodemon": "^3.0.1", "p-limit": "^3.1.0", @@ -53,14 +58,11 @@ "run-script-os": "^1.0.7", "supertest": "^7.0.0", "ts-jest": "^29.1.1", - "tsc-alias": "^1.8.7", - "tsc-watch": "^6.0.4", - "turbo": "1.13.3", + "tsc-alias": "^1.8.10", + "tsc-watch": "^6.2.0", + "turbo": "2.1.2", "typescript": "*", - "vite": "^5.2.12", - "vitest": "^1.6.0", - "vitest-mock-extended": "^1.3.1", - "vue-tsc": "^2.0.19" + "zx": "^8.1.4" }, "pnpm": { "onlyBuiltDependencies": [ @@ -68,26 +70,26 @@ ], "overrides": { "@types/node": "^18.16.16", - "axios": "1.6.7", - "chokidar": "3.5.2", - "esbuild": "^0.20.2", + "chokidar": "^4.0.1", + "esbuild": "^0.24.0", "formidable": "3.5.1", - "prettier": "^3.2.5", "pug": "^3.0.3", "semver": "^7.5.4", "tslib": "^2.6.2", "tsconfig-paths": "^4.2.0", - "typescript": "^5.5.2", + "typescript": "^5.6.2", + "vue-tsc": "^2.1.6", "ws": ">=8.17.1" }, "patchedDependencies": { "typedi@0.10.0": "patches/typedi@0.10.0.patch", - "@sentry/cli@2.17.0": "patches/@sentry__cli@2.17.0.patch", + "@sentry/cli@2.36.2": "patches/@sentry__cli@2.36.2.patch", "pkce-challenge@3.0.0": "patches/pkce-challenge@3.0.0.patch", "pyodide@0.23.4": "patches/pyodide@0.23.4.patch", "@types/express-serve-static-core@4.17.43": "patches/@types__express-serve-static-core@4.17.43.patch", "@types/ws@8.5.4": "patches/@types__ws@8.5.4.patch", - "@types/uuencode@0.0.3": "patches/@types__uuencode@0.0.3.patch" + "@types/uuencode@0.0.3": "patches/@types__uuencode@0.0.3.patch", + "@langchain/core@0.3.3": "patches/@langchain__core@0.3.3.patch" } } } diff --git a/packages/@n8n/api-types/.eslintrc.js b/packages/@n8n/api-types/.eslintrc.js new file mode 100644 index 0000000000..1c42fddcdc --- /dev/null +++ b/packages/@n8n/api-types/.eslintrc.js @@ -0,0 +1,7 @@ +const sharedOptions = require('@n8n_io/eslint-config/shared'); + +/** @type {import('@types/eslint').ESLint.ConfigData} */ +module.exports = { + extends: ['@n8n_io/eslint-config/base'], + ...sharedOptions(__dirname), +}; diff --git a/packages/@n8n/api-types/README.md b/packages/@n8n/api-types/README.md new file mode 100644 index 0000000000..818f3f7756 --- /dev/null +++ b/packages/@n8n/api-types/README.md @@ -0,0 +1,3 @@ +## @n8n/api-types + +This package contains types and schema definitions for the n8n internal API, so that these can be shared between the backend and the frontend code. diff --git a/packages/@n8n/api-types/jest.config.js b/packages/@n8n/api-types/jest.config.js new file mode 100644 index 0000000000..d6c48554a7 --- /dev/null +++ b/packages/@n8n/api-types/jest.config.js @@ -0,0 +1,2 @@ +/** @type {import('jest').Config} */ +module.exports = require('../../../jest.config'); diff --git a/packages/@n8n/api-types/package.json b/packages/@n8n/api-types/package.json new file mode 100644 index 0000000000..0c4440eb6b --- /dev/null +++ b/packages/@n8n/api-types/package.json @@ -0,0 +1,31 @@ +{ + "name": "@n8n/api-types", + "version": "0.5.0", + "scripts": { + "clean": "rimraf dist .turbo", + "dev": "pnpm watch", + "typecheck": "tsc --noEmit", + "build": "tsc -p tsconfig.build.json", + "format": "biome format --write .", + "format:check": "biome ci .", + "lint": "eslint .", + "lintfix": "eslint . --fix", + "watch": "tsc -p tsconfig.build.json --watch", + "test": "jest", + "test:dev": "jest --watch" + }, + "main": "dist/index.js", + "module": "src/index.ts", + "types": "dist/index.d.ts", + "files": [ + "dist/**/*" + ], + "devDependencies": { + "n8n-workflow": "workspace:*" + }, + "dependencies": { + "xss": "catalog:", + "zod": "catalog:", + "zod-class": "0.0.15" + } +} diff --git a/packages/@n8n/api-types/src/datetime.ts b/packages/@n8n/api-types/src/datetime.ts new file mode 100644 index 0000000000..5175b3931d --- /dev/null +++ b/packages/@n8n/api-types/src/datetime.ts @@ -0,0 +1,2 @@ +/** Date time in the ISO 8601 format, e.g. 2024-10-31T00:00:00.123Z */ +export type Iso8601DateTimeString = string; diff --git a/packages/@n8n/api-types/src/dto/index.ts b/packages/@n8n/api-types/src/dto/index.ts new file mode 100644 index 0000000000..41a55f050a --- /dev/null +++ b/packages/@n8n/api-types/src/dto/index.ts @@ -0,0 +1,5 @@ +export { PasswordUpdateRequestDto } from './user/password-update-request.dto'; +export { RoleChangeRequestDto } from './user/role-change-request.dto'; +export { SettingsUpdateRequestDto } from './user/settings-update-request.dto'; +export { UserUpdateRequestDto } from './user/user-update-request.dto'; +export { CommunityRegisteredRequestDto } from './license/community-registered-request.dto'; diff --git a/packages/@n8n/api-types/src/dto/license/__tests__/community-registered-request.dto.test.ts b/packages/@n8n/api-types/src/dto/license/__tests__/community-registered-request.dto.test.ts new file mode 100644 index 0000000000..84e583e63b --- /dev/null +++ b/packages/@n8n/api-types/src/dto/license/__tests__/community-registered-request.dto.test.ts @@ -0,0 +1,27 @@ +import { CommunityRegisteredRequestDto } from '../community-registered-request.dto'; + +describe('CommunityRegisteredRequestDto', () => { + it('should fail validation for missing email', () => { + const invalidRequest = {}; + + const result = CommunityRegisteredRequestDto.safeParse(invalidRequest); + + expect(result.success).toBe(false); + expect(result.error?.issues[0]).toEqual( + expect.objectContaining({ message: 'Required', path: ['email'] }), + ); + }); + + it('should fail validation for an invalid email', () => { + const invalidRequest = { + email: 'invalid-email', + }; + + const result = CommunityRegisteredRequestDto.safeParse(invalidRequest); + + expect(result.success).toBe(false); + expect(result.error?.issues[0]).toEqual( + expect.objectContaining({ message: 'Invalid email', path: ['email'] }), + ); + }); +}); diff --git a/packages/@n8n/api-types/src/dto/license/community-registered-request.dto.ts b/packages/@n8n/api-types/src/dto/license/community-registered-request.dto.ts new file mode 100644 index 0000000000..9763787767 --- /dev/null +++ b/packages/@n8n/api-types/src/dto/license/community-registered-request.dto.ts @@ -0,0 +1,4 @@ +import { z } from 'zod'; +import { Z } from 'zod-class'; + +export class CommunityRegisteredRequestDto extends Z.class({ email: z.string().email() }) {} diff --git a/packages/@n8n/api-types/src/dto/user/__tests__/password-update-request.dto.test.ts b/packages/@n8n/api-types/src/dto/user/__tests__/password-update-request.dto.test.ts new file mode 100644 index 0000000000..608f0f4bbd --- /dev/null +++ b/packages/@n8n/api-types/src/dto/user/__tests__/password-update-request.dto.test.ts @@ -0,0 +1,50 @@ +import { PasswordUpdateRequestDto } from '../password-update-request.dto'; + +describe('PasswordUpdateRequestDto', () => { + it('should fail validation with missing currentPassword', () => { + const data = { + newPassword: 'newPassword123', + mfaCode: '123456', + }; + + const result = PasswordUpdateRequestDto.safeParse(data); + + expect(result.success).toBe(false); + expect(result.error?.issues[0].path[0]).toBe('currentPassword'); + }); + + it('should fail validation with missing newPassword', () => { + const data = { + currentPassword: 'oldPassword123', + mfaCode: '123456', + }; + + const result = PasswordUpdateRequestDto.safeParse(data); + + expect(result.success).toBe(false); + expect(result.error?.issues[0].path[0]).toBe('newPassword'); + }); + + it('should pass validation with missing mfaCode', () => { + const data = { + currentPassword: 'oldPassword123', + newPassword: 'newPassword123', + }; + + const result = PasswordUpdateRequestDto.safeParse(data); + + expect(result.success).toBe(true); + }); + + it('should pass validation with valid data', () => { + const data = { + currentPassword: 'oldPassword123', + newPassword: 'newPassword123', + mfaCode: '123456', + }; + + const result = PasswordUpdateRequestDto.safeParse(data); + + expect(result.success).toBe(true); + }); +}); diff --git a/packages/@n8n/api-types/src/dto/user/__tests__/role-change-request.dto.test.ts b/packages/@n8n/api-types/src/dto/user/__tests__/role-change-request.dto.test.ts new file mode 100644 index 0000000000..87ed9799d1 --- /dev/null +++ b/packages/@n8n/api-types/src/dto/user/__tests__/role-change-request.dto.test.ts @@ -0,0 +1,37 @@ +import { RoleChangeRequestDto } from '../role-change-request.dto'; + +describe('RoleChangeRequestDto', () => { + it('should fail validation with missing newRoleName', () => { + const data = {}; + + const result = RoleChangeRequestDto.safeParse(data); + + expect(result.success).toBe(false); + expect(result.error?.issues[0].path[0]).toBe('newRoleName'); + expect(result.error?.issues[0].message).toBe('New role is required'); + }); + + it('should fail validation with invalid newRoleName', () => { + const data = { + newRoleName: 'invalidRole', + }; + + const result = RoleChangeRequestDto.safeParse(data); + + expect(result.success).toBe(false); + expect(result.error?.issues[0].path[0]).toBe('newRoleName'); + expect(result.error?.issues[0].message).toBe( + "Invalid enum value. Expected 'global:admin' | 'global:member', received 'invalidRole'", + ); + }); + + it('should pass validation with valid data', () => { + const data = { + newRoleName: 'global:admin', + }; + + const result = RoleChangeRequestDto.safeParse(data); + + expect(result.success).toBe(true); + }); +}); diff --git a/packages/@n8n/api-types/src/dto/user/__tests__/settings-update-request.dto.test.ts b/packages/@n8n/api-types/src/dto/user/__tests__/settings-update-request.dto.test.ts new file mode 100644 index 0000000000..f31038c070 --- /dev/null +++ b/packages/@n8n/api-types/src/dto/user/__tests__/settings-update-request.dto.test.ts @@ -0,0 +1,68 @@ +import { SettingsUpdateRequestDto } from '../settings-update-request.dto'; + +describe('SettingsUpdateRequestDto', () => { + it('should pass validation with missing userActivated', () => { + const data = { + allowSSOManualLogin: false, + }; + + const result = SettingsUpdateRequestDto.safeParse(data); + + expect(result.success).toBe(true); + }); + + it('should pass validation with missing allowSSOManualLogin', () => { + const data = { + userActivated: true, + }; + + const result = SettingsUpdateRequestDto.safeParse(data); + + expect(result.success).toBe(true); + }); + + it('should pass validation with missing userActivated and allowSSOManualLogin', () => { + const data = {}; + + const result = SettingsUpdateRequestDto.safeParse(data); + + expect(result.success).toBe(true); + }); + + it('should fail validation with invalid userActivated', () => { + const data = { + userActivated: 'invalid', + allowSSOManualLogin: false, + }; + + const result = SettingsUpdateRequestDto.safeParse(data); + + expect(result.success).toBe(false); + expect(result.error?.issues[0].path[0]).toBe('userActivated'); + expect(result.error?.issues[0].message).toBe('Expected boolean, received string'); + }); + + it('should fail validation with invalid allowSSOManualLogin', () => { + const data = { + userActivated: true, + allowSSOManualLogin: 'invalid', + }; + + const result = SettingsUpdateRequestDto.safeParse(data); + + expect(result.success).toBe(false); + expect(result.error?.issues[0].path[0]).toBe('allowSSOManualLogin'); + expect(result.error?.issues[0].message).toBe('Expected boolean, received string'); + }); + + it('should pass validation with valid data', () => { + const data = { + userActivated: true, + allowSSOManualLogin: false, + }; + + const result = SettingsUpdateRequestDto.safeParse(data); + + expect(result.success).toBe(true); + }); +}); diff --git a/packages/@n8n/api-types/src/dto/user/__tests__/user-update-request.dto.test.ts b/packages/@n8n/api-types/src/dto/user/__tests__/user-update-request.dto.test.ts new file mode 100644 index 0000000000..0869c4a0f1 --- /dev/null +++ b/packages/@n8n/api-types/src/dto/user/__tests__/user-update-request.dto.test.ts @@ -0,0 +1,86 @@ +import { UserUpdateRequestDto } from '../user-update-request.dto'; + +describe('UserUpdateRequestDto', () => { + it('should fail validation for an invalid email', () => { + const invalidRequest = { + email: 'invalid-email', + firstName: 'John', + lastName: 'Doe', + mfaCode: '123456', + }; + + const result = UserUpdateRequestDto.safeParse(invalidRequest); + + expect(result.success).toBe(false); + expect(result.error?.issues[0].path).toEqual(['email']); + }); + + it('should fail validation for a firstName with potential XSS attack', () => { + const invalidRequest = { + email: 'test@example.com', + firstName: '', + lastName: 'Doe', + mfaCode: '123456', + }; + + const result = UserUpdateRequestDto.safeParse(invalidRequest); + + expect(result.success).toBe(false); + expect(result.error?.issues[0].path).toEqual(['firstName']); + }); + + it('should fail validation for a firstName with a URL', () => { + const invalidRequest = { + email: 'test@example.com', + firstName: 'test http://malicious.com', + lastName: 'Doe', + mfaCode: '123456', + }; + + const result = UserUpdateRequestDto.safeParse(invalidRequest); + + expect(result.success).toBe(false); + expect(result.error?.issues[0].path).toEqual(['firstName']); + }); + + it('should fail validation for a lastName with potential XSS attack', () => { + const invalidRequest = { + email: 'test@example.com', + firstName: 'John', + lastName: '', + mfaCode: '123456', + }; + + const result = UserUpdateRequestDto.safeParse(invalidRequest); + + expect(result.success).toBe(false); + expect(result.error?.issues[0].path).toEqual(['lastName']); + }); + + it('should fail validation for a lastName with a URL', () => { + const invalidRequest = { + email: 'test@example.com', + firstName: 'John', + lastName: 'testing http://malicious.com', + mfaCode: '123456', + }; + + const result = UserUpdateRequestDto.safeParse(invalidRequest); + + expect(result.success).toBe(false); + expect(result.error?.issues[0].path).toEqual(['lastName']); + }); + + it('should validate a valid user update request', () => { + const validRequest = { + email: 'test@example.com', + firstName: 'John', + lastName: 'Doe', + mfaCode: '123456', + }; + + const result = UserUpdateRequestDto.safeParse(validRequest); + + expect(result.success).toBe(true); + }); +}); diff --git a/packages/@n8n/api-types/src/dto/user/password-update-request.dto.ts b/packages/@n8n/api-types/src/dto/user/password-update-request.dto.ts new file mode 100644 index 0000000000..1e1f02b0a3 --- /dev/null +++ b/packages/@n8n/api-types/src/dto/user/password-update-request.dto.ts @@ -0,0 +1,8 @@ +import { z } from 'zod'; +import { Z } from 'zod-class'; + +export class PasswordUpdateRequestDto extends Z.class({ + currentPassword: z.string(), + newPassword: z.string(), + mfaCode: z.string().optional(), +}) {} diff --git a/packages/@n8n/api-types/src/dto/user/role-change-request.dto.ts b/packages/@n8n/api-types/src/dto/user/role-change-request.dto.ts new file mode 100644 index 0000000000..4ddae2cd58 --- /dev/null +++ b/packages/@n8n/api-types/src/dto/user/role-change-request.dto.ts @@ -0,0 +1,8 @@ +import { z } from 'zod'; +import { Z } from 'zod-class'; + +export class RoleChangeRequestDto extends Z.class({ + newRoleName: z.enum(['global:admin', 'global:member'], { + required_error: 'New role is required', + }), +}) {} diff --git a/packages/@n8n/api-types/src/dto/user/settings-update-request.dto.ts b/packages/@n8n/api-types/src/dto/user/settings-update-request.dto.ts new file mode 100644 index 0000000000..f4c0eb0af3 --- /dev/null +++ b/packages/@n8n/api-types/src/dto/user/settings-update-request.dto.ts @@ -0,0 +1,7 @@ +import { z } from 'zod'; +import { Z } from 'zod-class'; + +export class SettingsUpdateRequestDto extends Z.class({ + userActivated: z.boolean().optional(), + allowSSOManualLogin: z.boolean().optional(), +}) {} diff --git a/packages/@n8n/api-types/src/dto/user/user-update-request.dto.ts b/packages/@n8n/api-types/src/dto/user/user-update-request.dto.ts new file mode 100644 index 0000000000..ad70071d81 --- /dev/null +++ b/packages/@n8n/api-types/src/dto/user/user-update-request.dto.ts @@ -0,0 +1,31 @@ +import xss from 'xss'; +import { z } from 'zod'; +import { Z } from 'zod-class'; + +const xssCheck = (value: string) => + value === + xss(value, { + whiteList: {}, // no tags are allowed + }); + +const URL_REGEX = /^(https?:\/\/|www\.)|(\.[\p{L}\d-]+)/iu; +const urlCheck = (value: string) => !URL_REGEX.test(value); + +const nameSchema = () => + z + .string() + .min(1) + .max(32) + .refine(xssCheck, { + message: 'Potentially malicious string', + }) + .refine(urlCheck, { + message: 'Potentially malicious string', + }); + +export class UserUpdateRequestDto extends Z.class({ + email: z.string().email(), + firstName: nameSchema().optional(), + lastName: nameSchema().optional(), + mfaCode: z.string().optional(), +}) {} diff --git a/packages/@n8n/api-types/src/frontend-settings.ts b/packages/@n8n/api-types/src/frontend-settings.ts new file mode 100644 index 0000000000..5084344aeb --- /dev/null +++ b/packages/@n8n/api-types/src/frontend-settings.ts @@ -0,0 +1,172 @@ +import type { ExpressionEvaluatorType, LogLevel, WorkflowSettings } from 'n8n-workflow'; + +export interface IVersionNotificationSettings { + enabled: boolean; + endpoint: string; + infoUrl: string; +} + +export interface ITelemetryClientConfig { + url: string; + key: string; +} + +export interface ITelemetrySettings { + enabled: boolean; + config?: ITelemetryClientConfig; +} + +export type AuthenticationMethod = 'email' | 'ldap' | 'saml'; + +export interface IUserManagementSettings { + quota: number; + showSetupOnFirstLoad?: boolean; + smtpSetup: boolean; + authenticationMethod: AuthenticationMethod; +} + +export interface FrontendSettings { + isDocker?: boolean; + databaseType: 'sqlite' | 'mariadb' | 'mysqldb' | 'postgresdb'; + endpointForm: string; + endpointFormTest: string; + endpointFormWaiting: string; + endpointWebhook: string; + endpointWebhookTest: string; + endpointWebhookWaiting: string; + saveDataErrorExecution: WorkflowSettings.SaveDataExecution; + saveDataSuccessExecution: WorkflowSettings.SaveDataExecution; + saveManualExecutions: boolean; + saveExecutionProgress: boolean; + executionTimeout: number; + maxExecutionTimeout: number; + workflowCallerPolicyDefaultOption: WorkflowSettings.CallerPolicy; + oauthCallbackUrls: { + oauth1: string; + oauth2: string; + }; + timezone: string; + urlBaseWebhook: string; + urlBaseEditor: string; + versionCli: string; + nodeJsVersion: string; + concurrency: number; + authCookie: { + secure: boolean; + }; + binaryDataMode: 'default' | 'filesystem' | 's3'; + releaseChannel: 'stable' | 'beta' | 'nightly' | 'dev'; + n8nMetadata?: { + userId?: string; + [key: string]: string | number | undefined; + }; + versionNotifications: IVersionNotificationSettings; + instanceId: string; + telemetry: ITelemetrySettings; + posthog: { + enabled: boolean; + apiHost: string; + apiKey: string; + autocapture: boolean; + disableSessionRecording: boolean; + debug: boolean; + }; + personalizationSurveyEnabled: boolean; + defaultLocale: string; + userManagement: IUserManagementSettings; + sso: { + saml: { + loginLabel: string; + loginEnabled: boolean; + }; + ldap: { + loginLabel: string; + loginEnabled: boolean; + }; + }; + publicApi: { + enabled: boolean; + latestVersion: number; + path: string; + swaggerUi: { + enabled: boolean; + }; + }; + workflowTagsDisabled: boolean; + logLevel: LogLevel; + hiringBannerEnabled: boolean; + previewMode: boolean; + templates: { + enabled: boolean; + host: string; + }; + missingPackages?: boolean; + executionMode: 'regular' | 'queue'; + pushBackend: 'sse' | 'websocket'; + communityNodesEnabled: boolean; + aiAssistant: { + enabled: boolean; + }; + askAi: { + enabled: boolean; + }; + deployment: { + type: string; + }; + allowedModules: { + builtIn?: string[]; + external?: string[]; + }; + enterprise: { + sharing: boolean; + ldap: boolean; + saml: boolean; + logStreaming: boolean; + advancedExecutionFilters: boolean; + variables: boolean; + sourceControl: boolean; + auditLogs: boolean; + externalSecrets: boolean; + showNonProdBanner: boolean; + debugInEditor: boolean; + binaryDataS3: boolean; + workflowHistory: boolean; + workerView: boolean; + advancedPermissions: boolean; + projects: { + team: { + limit: number; + }; + }; + }; + hideUsagePage: boolean; + license: { + planName?: string; + consumerId: string; + environment: 'development' | 'production' | 'staging'; + }; + variables: { + limit: number; + }; + expressions: { + evaluator: ExpressionEvaluatorType; + }; + mfa: { + enabled: boolean; + }; + banners: { + dismissed: string[]; + }; + workflowHistory: { + pruneTime: number; + licensePruneTime: number; + }; + pruning: { + isEnabled: boolean; + maxAge: number; + maxCount: number; + }; + security: { + blockFileAccessToN8nFiles: boolean; + }; +} diff --git a/packages/@n8n/api-types/src/index.ts b/packages/@n8n/api-types/src/index.ts new file mode 100644 index 0000000000..d0067f7fff --- /dev/null +++ b/packages/@n8n/api-types/src/index.ts @@ -0,0 +1,9 @@ +export type * from './datetime'; +export * from './dto'; +export type * from './push'; +export type * from './scaling'; +export type * from './frontend-settings'; +export type * from './user'; + +export type { Collaborator } from './push/collaboration'; +export type { SendWorkerStatusMessage } from './push/worker'; diff --git a/packages/@n8n/api-types/src/push/collaboration.ts b/packages/@n8n/api-types/src/push/collaboration.ts new file mode 100644 index 0000000000..f2ec6fcc6c --- /dev/null +++ b/packages/@n8n/api-types/src/push/collaboration.ts @@ -0,0 +1,17 @@ +import type { Iso8601DateTimeString } from '../datetime'; +import type { MinimalUser } from '../user'; + +export type Collaborator = { + user: MinimalUser; + lastSeen: Iso8601DateTimeString; +}; + +type CollaboratorsChanged = { + type: 'collaboratorsChanged'; + data: { + workflowId: string; + collaborators: Collaborator[]; + }; +}; + +export type CollaborationPushMessage = CollaboratorsChanged; diff --git a/packages/@n8n/api-types/src/push/debug.ts b/packages/@n8n/api-types/src/push/debug.ts new file mode 100644 index 0000000000..99c8dc447f --- /dev/null +++ b/packages/@n8n/api-types/src/push/debug.ts @@ -0,0 +1,9 @@ +type SendConsoleMessage = { + type: 'sendConsoleMessage'; + data: { + source: string; + messages: unknown[]; + }; +}; + +export type DebugPushMessage = SendConsoleMessage; diff --git a/packages/@n8n/api-types/src/push/execution.ts b/packages/@n8n/api-types/src/push/execution.ts new file mode 100644 index 0000000000..78c0b34a36 --- /dev/null +++ b/packages/@n8n/api-types/src/push/execution.ts @@ -0,0 +1,53 @@ +import type { IRun, ITaskData, WorkflowExecuteMode } from 'n8n-workflow'; + +type ExecutionStarted = { + type: 'executionStarted'; + data: { + executionId: string; + mode: WorkflowExecuteMode; + startedAt: Date; + workflowId: string; + workflowName?: string; + retryOf?: string; + }; +}; + +type ExecutionFinished = { + type: 'executionFinished'; + data: { + executionId: string; + data: IRun; + retryOf?: string; + }; +}; + +type ExecutionRecovered = { + type: 'executionRecovered'; + data: { + executionId: string; + }; +}; + +type NodeExecuteBefore = { + type: 'nodeExecuteBefore'; + data: { + executionId: string; + nodeName: string; + }; +}; + +type NodeExecuteAfter = { + type: 'nodeExecuteAfter'; + data: { + executionId: string; + nodeName: string; + data: ITaskData; + }; +}; + +export type ExecutionPushMessage = + | ExecutionStarted + | ExecutionFinished + | ExecutionRecovered + | NodeExecuteBefore + | NodeExecuteAfter; diff --git a/packages/@n8n/api-types/src/push/hot-reload.ts b/packages/@n8n/api-types/src/push/hot-reload.ts new file mode 100644 index 0000000000..e8f9eba316 --- /dev/null +++ b/packages/@n8n/api-types/src/push/hot-reload.ts @@ -0,0 +1,21 @@ +type NodeTypeData = { + name: string; + version: number; +}; + +type ReloadNodeType = { + type: 'reloadNodeType'; + data: NodeTypeData; +}; + +type RemoveNodeType = { + type: 'removeNodeType'; + data: NodeTypeData; +}; + +type NodeDescriptionUpdated = { + type: 'nodeDescriptionUpdated'; + data: {}; +}; + +export type HotReloadPushMessage = ReloadNodeType | RemoveNodeType | NodeDescriptionUpdated; diff --git a/packages/@n8n/api-types/src/push/index.ts b/packages/@n8n/api-types/src/push/index.ts new file mode 100644 index 0000000000..b97a179141 --- /dev/null +++ b/packages/@n8n/api-types/src/push/index.ts @@ -0,0 +1,20 @@ +import type { CollaborationPushMessage } from './collaboration'; +import type { DebugPushMessage } from './debug'; +import type { ExecutionPushMessage } from './execution'; +import type { HotReloadPushMessage } from './hot-reload'; +import type { WebhookPushMessage } from './webhook'; +import type { WorkerPushMessage } from './worker'; +import type { WorkflowPushMessage } from './workflow'; + +export type PushMessage = + | ExecutionPushMessage + | WorkflowPushMessage + | HotReloadPushMessage + | WebhookPushMessage + | WorkerPushMessage + | CollaborationPushMessage + | DebugPushMessage; + +export type PushType = PushMessage['type']; + +export type PushPayload = Extract['data']; diff --git a/packages/@n8n/api-types/src/push/webhook.ts b/packages/@n8n/api-types/src/push/webhook.ts new file mode 100644 index 0000000000..31e2d9919f --- /dev/null +++ b/packages/@n8n/api-types/src/push/webhook.ts @@ -0,0 +1,17 @@ +type TestWebhookDeleted = { + type: 'testWebhookDeleted'; + data: { + executionId?: string; + workflowId: string; + }; +}; + +type TestWebhookReceived = { + type: 'testWebhookReceived'; + data: { + executionId: string; + workflowId: string; + }; +}; + +export type WebhookPushMessage = TestWebhookDeleted | TestWebhookReceived; diff --git a/packages/@n8n/api-types/src/push/worker.ts b/packages/@n8n/api-types/src/push/worker.ts new file mode 100644 index 0000000000..84676e6543 --- /dev/null +++ b/packages/@n8n/api-types/src/push/worker.ts @@ -0,0 +1,11 @@ +import type { WorkerStatus } from '../scaling'; + +export type SendWorkerStatusMessage = { + type: 'sendWorkerStatusMessage'; + data: { + workerId: string; + status: WorkerStatus; + }; +}; + +export type WorkerPushMessage = SendWorkerStatusMessage; diff --git a/packages/@n8n/api-types/src/push/workflow.ts b/packages/@n8n/api-types/src/push/workflow.ts new file mode 100644 index 0000000000..0dcf9ad78d --- /dev/null +++ b/packages/@n8n/api-types/src/push/workflow.ts @@ -0,0 +1,26 @@ +type WorkflowActivated = { + type: 'workflowActivated'; + data: { + workflowId: string; + }; +}; + +type WorkflowFailedToActivate = { + type: 'workflowFailedToActivate'; + data: { + workflowId: string; + errorMessage: string; + }; +}; + +type WorkflowDeactivated = { + type: 'workflowDeactivated'; + data: { + workflowId: string; + }; +}; + +export type WorkflowPushMessage = + | WorkflowActivated + | WorkflowFailedToActivate + | WorkflowDeactivated; diff --git a/packages/@n8n/api-types/src/scaling.ts b/packages/@n8n/api-types/src/scaling.ts new file mode 100644 index 0000000000..f0c3627e84 --- /dev/null +++ b/packages/@n8n/api-types/src/scaling.ts @@ -0,0 +1,30 @@ +import type { ExecutionStatus, WorkflowExecuteMode } from 'n8n-workflow'; + +export type RunningJobSummary = { + executionId: string; + workflowId: string; + workflowName: string; + mode: WorkflowExecuteMode; + startedAt: Date; + retryOf: string; + status: ExecutionStatus; +}; + +export type WorkerStatus = { + senderId: string; + runningJobsSummary: RunningJobSummary[]; + freeMem: number; + totalMem: number; + uptime: number; + loadAvg: number[]; + cpus: string; + arch: string; + platform: NodeJS.Platform; + hostname: string; + interfaces: Array<{ + family: 'IPv4' | 'IPv6'; + address: string; + internal: boolean; + }>; + version: string; +}; diff --git a/packages/@n8n/api-types/src/user.ts b/packages/@n8n/api-types/src/user.ts new file mode 100644 index 0000000000..0002ba1ac9 --- /dev/null +++ b/packages/@n8n/api-types/src/user.ts @@ -0,0 +1,6 @@ +export type MinimalUser = { + id: string; + email: string; + firstName: string; + lastName: string; +}; diff --git a/packages/@n8n/api-types/tsconfig.build.json b/packages/@n8n/api-types/tsconfig.build.json new file mode 100644 index 0000000000..057847e09d --- /dev/null +++ b/packages/@n8n/api-types/tsconfig.build.json @@ -0,0 +1,11 @@ +{ + "extends": ["./tsconfig.json", "../../../tsconfig.build.json"], + "compilerOptions": { + "composite": true, + "rootDir": "src", + "outDir": "dist", + "tsBuildInfoFile": "dist/build.tsbuildinfo" + }, + "include": ["src/**/*.ts"], + "exclude": ["test/**", "src/**/__tests__/**"] +} diff --git a/packages/@n8n/api-types/tsconfig.json b/packages/@n8n/api-types/tsconfig.json new file mode 100644 index 0000000000..9c32bd67a1 --- /dev/null +++ b/packages/@n8n/api-types/tsconfig.json @@ -0,0 +1,10 @@ +{ + "extends": "../../../tsconfig.json", + "compilerOptions": { + "rootDir": ".", + "types": ["node", "jest"], + "baseUrl": "src", + "tsBuildInfoFile": "dist/typecheck.tsbuildinfo" + }, + "include": ["src/**/*.ts", "test/**/*.ts"] +} diff --git a/packages/@n8n/benchmark/.eslintrc.js b/packages/@n8n/benchmark/.eslintrc.js new file mode 100644 index 0000000000..4d740c55b3 --- /dev/null +++ b/packages/@n8n/benchmark/.eslintrc.js @@ -0,0 +1,31 @@ +const sharedOptions = require('@n8n_io/eslint-config/shared'); + +/** + * @type {import('@types/eslint').ESLint.ConfigData} + */ +module.exports = { + extends: ['@n8n_io/eslint-config/node'], + + ...sharedOptions(__dirname), + + parserOptions: { + project: './tsconfig.json', + }, + + ignorePatterns: ['scenarios/**'], + + rules: { + 'unicorn/filename-case': ['error', { case: 'kebabCase' }], + 'n8n-local-rules/no-plain-errors': 'off', + complexity: 'error', + }, + + overrides: [ + { + files: ['./src/commands/*.ts'], + rules: { + 'import/no-default-export': 'off', + }, + }, + ], +}; diff --git a/packages/@n8n/benchmark/.gitignore b/packages/@n8n/benchmark/.gitignore new file mode 100644 index 0000000000..ee04166857 --- /dev/null +++ b/packages/@n8n/benchmark/.gitignore @@ -0,0 +1,4 @@ +**/.terraform/* +**/*.tfstate* +**/*.tfvars +privatekey.pem diff --git a/packages/@n8n/benchmark/Dockerfile b/packages/@n8n/benchmark/Dockerfile new file mode 100644 index 0000000000..9525a9a4c2 --- /dev/null +++ b/packages/@n8n/benchmark/Dockerfile @@ -0,0 +1,63 @@ +# syntax=docker/dockerfile:1 +FROM node:20.16.0 AS base + +# Install required dependencies +RUN apt-get update && apt-get install -y gnupg2 curl + +# Add k6 GPG key and repository +RUN mkdir -p /etc/apt/keyrings && \ + curl -sS https://dl.k6.io/key.gpg | gpg --dearmor --yes -o /etc/apt/keyrings/k6.gpg && \ + chmod a+x /etc/apt/keyrings/k6.gpg && \ + echo "deb [signed-by=/etc/apt/keyrings/k6.gpg] https://dl.k6.io/deb stable main" | tee /etc/apt/sources.list.d/k6.list + +# Update and install k6 +RUN apt-get update && \ + apt-get install -y k6 tini && \ + apt-get clean && \ + rm -rf /var/lib/apt/lists/* + +ENV PNPM_HOME="/pnpm" +ENV PATH="$PNPM_HOME:$PATH" +RUN corepack enable + +# +# Builder +FROM base AS builder + +WORKDIR /app + +COPY --chown=node:node ./pnpm-lock.yaml /app/pnpm-lock.yaml +COPY --chown=node:node ./pnpm-workspace.yaml /app/pnpm-workspace.yaml +COPY --chown=node:node ./package.json /app/package.json +COPY --chown=node:node ./packages/@n8n/benchmark/package.json /app/packages/@n8n/benchmark/package.json +COPY --chown=node:node ./patches /app/patches +COPY --chown=node:node ./scripts /app/scripts + +ENV DOCKER_BUILD=true +RUN pnpm install --frozen-lockfile + +# TS config files +COPY --chown=node:node ./tsconfig.json /app/tsconfig.json +COPY --chown=node:node ./tsconfig.build.json /app/tsconfig.build.json +COPY --chown=node:node ./tsconfig.backend.json /app/tsconfig.backend.json +COPY --chown=node:node ./packages/@n8n/benchmark/tsconfig.json /app/packages/@n8n/benchmark/tsconfig.json +COPY --chown=node:node ./packages/@n8n/benchmark/tsconfig.build.json /app/packages/@n8n/benchmark/tsconfig.build.json + +# Source files +COPY --chown=node:node ./packages/@n8n/benchmark/src /app/packages/@n8n/benchmark/src +COPY --chown=node:node ./packages/@n8n/benchmark/bin /app/packages/@n8n/benchmark/bin +COPY --chown=node:node ./packages/@n8n/benchmark/scenarios /app/packages/@n8n/benchmark/scenarios + +WORKDIR /app/packages/@n8n/benchmark +RUN pnpm build + +# +# Runner +FROM base AS runner + +COPY --from=builder /app /app + +WORKDIR /app/packages/@n8n/benchmark +USER node + +ENTRYPOINT [ "/app/packages/@n8n/benchmark/bin/n8n-benchmark" ] diff --git a/packages/@n8n/benchmark/README.md b/packages/@n8n/benchmark/README.md new file mode 100644 index 0000000000..af8726d0ea --- /dev/null +++ b/packages/@n8n/benchmark/README.md @@ -0,0 +1,115 @@ +# n8n benchmarking tool + +Tool for executing benchmarks against an n8n instance. + +## Directory structure + +```text +packages/@n8n/benchmark +├── scenarios Benchmark scenarios +├── src Source code for the n8n-benchmark cli +├── Dockerfile Dockerfile for the n8n-benchmark cli +├── scripts Orchestration scripts +``` + +## Benchmarking an existing n8n instance + +The easiest way to run the existing benchmark scenarios is to use the benchmark docker image: + +```sh +docker pull ghcr.io/n8n-io/n8n-benchmark:latest +# Print the help to list all available flags +docker run ghcr.io/n8n-io/n8n-benchmark:latest run --help +# Run all available benchmark scenarios for 1 minute with 5 concurrent requests +docker run ghcr.io/n8n-io/n8n-benchmark:latest run \ + --n8nBaseUrl=https://instance.url \ + --n8nUserEmail=InstanceOwner@email.com \ + --n8nUserPassword=InstanceOwnerPassword \ + --vus=5 \ + --duration=1m \ + --scenarioFilter SingleWebhook +``` + +### Using custom scenarios with the Docker image + +It is also possible to create your own [benchmark scenarios](#benchmark-scenarios) and load them using the `--testScenariosPath` flag: + +```sh +# Assuming your scenarios are located in `./scenarios`, mount them into `/scenarios` in the container +docker run -v ./scenarios:/scenarios ghcr.io/n8n-io/n8n-benchmark:latest run \ + --n8nBaseUrl=https://instance.url \ + --n8nUserEmail=InstanceOwner@email.com \ + --n8nUserPassword=InstanceOwnerPassword \ + --vus=5 \ + --duration=1m \ + --testScenariosPath=/scenarios +``` + +## Running the entire benchmark suite + +The benchmark suite consists of [benchmark scenarios](#benchmark-scenarios) and different [n8n setups](#n8n-setups). + +### locally + +```sh +pnpm benchmark-locally +``` + +### In the cloud + +```sh +pnpm benchmark-in-cloud +``` + +## Running the `n8n-benchmark` cli + +The `n8n-benchmark` cli is a node.js program that runs one or more scenarios against a single n8n instance. + +### Locally with Docker + +Build the Docker image: + +```sh +# Must be run in the repository root +# k6 doesn't have an arm64 build available for linux, we need to build against amd64 +docker build --platform linux/amd64 -t n8n-benchmark -f packages/@n8n/benchmark/Dockerfile . +``` + +Run the image + +```sh +docker run \ + -e N8N_USER_EMAIL=user@n8n.io \ + -e N8N_USER_PASSWORD=password \ + # For macos, n8n running outside docker + -e N8N_BASE_URL=http://host.docker.internal:5678 \ + n8n-benchmark +``` + +### Locally without Docker + +Requirements: + +- [k6](https://grafana.com/docs/k6/latest/set-up/install-k6/) +- Node.js v20 or higher + +```sh +pnpm build + +# Run tests against http://localhost:5678 with specified email and password +N8N_USER_EMAIL=user@n8n.io N8N_USER_PASSWORD=password ./bin/n8n-benchmark run +``` + +## Benchmark scenarios + +A benchmark scenario defines one or multiple steps to execute and measure. It consists of: + +- Manifest file which describes and configures the scenario +- Any test data that is imported before the scenario is run +- A [`k6`](https://grafana.com/docs/k6/latest/using-k6/http-requests/) script which executes the steps and receives `API_BASE_URL` environment variable in runtime. + +Available scenarios are located in [`./scenarios`](./scenarios/). + +## n8n setups + +A n8n setup defines a single n8n runtime configuration using Docker compose. Different n8n setups are located in [`./scripts/n8nSetups`](./scripts/n8nSetups). diff --git a/packages/@n8n/benchmark/bin/n8n-benchmark b/packages/@n8n/benchmark/bin/n8n-benchmark new file mode 100755 index 0000000000..c7f0996f09 --- /dev/null +++ b/packages/@n8n/benchmark/bin/n8n-benchmark @@ -0,0 +1,13 @@ +#!/usr/bin/env node + +// Check if version should be displayed +const versionFlags = ['-v', '-V', '--version']; +if (versionFlags.includes(process.argv.slice(-1)[0])) { + console.log(require('../package').version); + process.exit(0); +} + +(async () => { + const oclif = require('@oclif/core'); + await oclif.execute({ dir: __dirname }); +})(); diff --git a/packages/@n8n/benchmark/biome.jsonc b/packages/@n8n/benchmark/biome.jsonc new file mode 100644 index 0000000000..3db16975c6 --- /dev/null +++ b/packages/@n8n/benchmark/biome.jsonc @@ -0,0 +1,7 @@ +{ + "$schema": "../node_modules/@biomejs/biome/configuration_schema.json", + "extends": ["../../../biome.jsonc"], + "files": { + "ignore": ["scripts/mock-api/**"] + } +} diff --git a/packages/@n8n/benchmark/infra/.terraform.lock.hcl b/packages/@n8n/benchmark/infra/.terraform.lock.hcl new file mode 100644 index 0000000000..3012516861 --- /dev/null +++ b/packages/@n8n/benchmark/infra/.terraform.lock.hcl @@ -0,0 +1,60 @@ +# This file is maintained automatically by "terraform init". +# Manual edits may be lost in future updates. + +provider "registry.terraform.io/hashicorp/azurerm" { + version = "3.115.0" + constraints = "~> 3.115.0" + hashes = [ + "h1:O7C3Xb+MSOc9C/eAJ5C/CiJ4vuvUsYxxIzr9ZurmHNI=", + "zh:0ea93abd53cb872691bad6d5625bda88b5d9619ea813c208b36e0ee236308589", + "zh:26703cb9c2c38bc43e97bc83af03559d065750856ea85834b71fbcb2ef9d935c", + "zh:316255a3391c49fe9bd7c5b6aa53b56dd490e1083d19b722e7b8f956a2dfe004", + "zh:431637ae90c592126fb1ec813fee6390604275438a0d5e15904c65b0a6a0f826", + "zh:4cee0fa2e84f89853723c0bc72b7debf8ea2ffffc7ae34ff28d8a69269d3a879", + "zh:64a3a3c78ea877515365ed336bd0f3abbe71db7c99b3d2837915fbca168d429c", + "zh:7380d7b503b5a87fd71a31360c3eeab504f78e4f314824e3ceda724d9dc74cf0", + "zh:974213e05708037a6d2d8c58cc84981819138f44fe40e344034eb80e16ca6012", + "zh:9a91614de0476074e9c62bbf08d3bb9c64adbd1d3a4a2b5a3e8e41d9d6d5672f", + "zh:a438471c85b8788ab21bdef4cd5ca391a46cbae33bd0262668a80f5e6c4610e1", + "zh:bf823f2c941b336a1208f015466212b1a8fdf6da28abacf59bea708377709d9e", + "zh:f569b65999264a9416862bca5cd2a6177d94ccb0424f3a4ef424428912b9cb3c", + ] +} + +provider "registry.terraform.io/hashicorp/random" { + version = "3.6.2" + hashes = [ + "h1:VavG5unYCa3SYISMKF9pzc3718M0bhPlcbUZZGl7wuo=", + "zh:0ef01a4f81147b32c1bea3429974d4d104bbc4be2ba3cfa667031a8183ef88ec", + "zh:1bcd2d8161e89e39886119965ef0f37fcce2da9c1aca34263dd3002ba05fcb53", + "zh:37c75d15e9514556a5f4ed02e1548aaa95c0ecd6ff9af1119ac905144c70c114", + "zh:4210550a767226976bc7e57d988b9ce48f4411fa8a60cd74a6b246baf7589dad", + "zh:562007382520cd4baa7320f35e1370ffe84e46ed4e2071fdc7e4b1a9b1f8ae9b", + "zh:5efb9da90f665e43f22c2e13e0ce48e86cae2d960aaf1abf721b497f32025916", + "zh:6f71257a6b1218d02a573fc9bff0657410404fb2ef23bc66ae8cd968f98d5ff6", + "zh:78d5eefdd9e494defcb3c68d282b8f96630502cac21d1ea161f53cfe9bb483b3", + "zh:9647e18f221380a85f2f0ab387c68fdafd58af6193a932417299cdcae4710150", + "zh:bb6297ce412c3c2fa9fec726114e5e0508dd2638cad6a0cb433194930c97a544", + "zh:f83e925ed73ff8a5ef6e3608ad9225baa5376446349572c2449c0c0b3cf184b7", + "zh:fbef0781cb64de76b1df1ca11078aecba7800d82fd4a956302734999cfd9a4af", + ] +} + +provider "registry.terraform.io/hashicorp/tls" { + version = "4.0.5" + hashes = [ + "h1:zeG5RmggBZW/8JWIVrdaeSJa0OG62uFX5HY1eE8SjzY=", + "zh:01cfb11cb74654c003f6d4e32bbef8f5969ee2856394a96d127da4949c65153e", + "zh:0472ea1574026aa1e8ca82bb6df2c40cd0478e9336b7a8a64e652119a2fa4f32", + "zh:1a8ddba2b1550c5d02003ea5d6cdda2eef6870ece86c5619f33edd699c9dc14b", + "zh:1e3bb505c000adb12cdf60af5b08f0ed68bc3955b0d4d4a126db5ca4d429eb4a", + "zh:6636401b2463c25e03e68a6b786acf91a311c78444b1dc4f97c539f9f78de22a", + "zh:76858f9d8b460e7b2a338c477671d07286b0d287fd2d2e3214030ae8f61dd56e", + "zh:a13b69fb43cb8746793b3069c4d897bb18f454290b496f19d03c3387d1c9a2dc", + "zh:a90ca81bb9bb509063b736842250ecff0f886a91baae8de65c8430168001dad9", + "zh:c4de401395936e41234f1956ebadbd2ed9f414e6908f27d578614aaa529870d4", + "zh:c657e121af8fde19964482997f0de2d5173217274f6997e16389e7707ed8ece8", + "zh:d68b07a67fbd604c38ec9733069fbf23441436fecf554de6c75c032f82e1ef19", + "zh:f569b65999264a9416862bca5cd2a6177d94ccb0424f3a4ef424428912b9cb3c", + ] +} diff --git a/packages/@n8n/benchmark/infra/benchmark-env.tf b/packages/@n8n/benchmark/infra/benchmark-env.tf new file mode 100644 index 0000000000..f6c124151a --- /dev/null +++ b/packages/@n8n/benchmark/infra/benchmark-env.tf @@ -0,0 +1,54 @@ + +data "azurerm_resource_group" "main" { + name = var.resource_group_name +} + +# Random prefix for the resources +resource "random_string" "prefix" { + length = 8 + special = false +} + +# SSH key pair +resource "tls_private_key" "ssh_key" { + algorithm = "RSA" + rsa_bits = 4096 +} + +# Dedicated Host Group & Hosts + +resource "azurerm_dedicated_host_group" "main" { + name = "${random_string.prefix.result}-hostgroup" + location = var.location + resource_group_name = data.azurerm_resource_group.main.name + platform_fault_domain_count = 1 + automatic_placement_enabled = false + zone = 1 + + tags = local.common_tags +} + +resource "azurerm_dedicated_host" "hosts" { + name = "${random_string.prefix.result}-host" + location = var.location + dedicated_host_group_id = azurerm_dedicated_host_group.main.id + sku_name = var.host_size_family + platform_fault_domain = 0 + + tags = local.common_tags +} + +# VM + +module "test_vm" { + source = "./modules/benchmark-vm" + + location = var.location + resource_group_name = data.azurerm_resource_group.main.name + prefix = random_string.prefix.result + dedicated_host_id = azurerm_dedicated_host.hosts.id + ssh_public_key = tls_private_key.ssh_key.public_key_openssh + vm_size = var.vm_size + + tags = local.common_tags +} diff --git a/packages/@n8n/benchmark/infra/modules/benchmark-vm/output.tf b/packages/@n8n/benchmark/infra/modules/benchmark-vm/output.tf new file mode 100644 index 0000000000..ec3daeba10 --- /dev/null +++ b/packages/@n8n/benchmark/infra/modules/benchmark-vm/output.tf @@ -0,0 +1,11 @@ +output "vm_name" { + value = azurerm_linux_virtual_machine.main.name +} + +output "ip" { + value = azurerm_public_ip.main.ip_address +} + +output "ssh_username" { + value = azurerm_linux_virtual_machine.main.admin_username +} diff --git a/packages/@n8n/benchmark/infra/modules/benchmark-vm/vars.tf b/packages/@n8n/benchmark/infra/modules/benchmark-vm/vars.tf new file mode 100644 index 0000000000..69e6cd3572 --- /dev/null +++ b/packages/@n8n/benchmark/infra/modules/benchmark-vm/vars.tf @@ -0,0 +1,29 @@ +variable "location" { + description = "Region to deploy resources" + default = "East US" +} + +variable "resource_group_name" { + description = "Name of the resource group" +} + +variable "prefix" { + description = "Prefix to append to resources" +} + +variable "dedicated_host_id" { + description = "Dedicated Host ID" +} + +variable "ssh_public_key" { + description = "SSH Public Key" +} + +variable "vm_size" { + description = "VM Size" +} + +variable "tags" { + description = "Tags to apply to all resources created by this module" + type = map(string) +} diff --git a/packages/@n8n/benchmark/infra/modules/benchmark-vm/vm.tf b/packages/@n8n/benchmark/infra/modules/benchmark-vm/vm.tf new file mode 100644 index 0000000000..2aa9b4e06e --- /dev/null +++ b/packages/@n8n/benchmark/infra/modules/benchmark-vm/vm.tf @@ -0,0 +1,126 @@ +# Network + +resource "azurerm_virtual_network" "main" { + name = "${var.prefix}-vnet" + location = var.location + resource_group_name = var.resource_group_name + address_space = ["10.0.0.0/16"] + + tags = var.tags +} + +resource "azurerm_subnet" "main" { + name = "${var.prefix}-subnet" + resource_group_name = var.resource_group_name + virtual_network_name = azurerm_virtual_network.main.name + address_prefixes = ["10.0.0.0/24"] +} + +resource "azurerm_network_security_group" "ssh" { + name = "${var.prefix}-nsg" + location = var.location + resource_group_name = var.resource_group_name + + security_rule { + name = "AllowSSH" + priority = 1001 + direction = "Inbound" + access = "Allow" + protocol = "Tcp" + source_port_range = "*" + destination_port_range = "22" + source_address_prefix = "*" + destination_address_prefix = "*" + } + + tags = var.tags +} + +resource "azurerm_public_ip" "main" { + name = "${var.prefix}-pip" + location = var.location + resource_group_name = var.resource_group_name + allocation_method = "Static" + sku = "Standard" + + tags = var.tags +} + +resource "azurerm_network_interface" "main" { + name = "${var.prefix}-nic" + location = var.location + resource_group_name = var.resource_group_name + + ip_configuration { + name = "${var.prefix}-ipconfig" + subnet_id = azurerm_subnet.main.id + private_ip_address_allocation = "Dynamic" + public_ip_address_id = azurerm_public_ip.main.id + } + + tags = var.tags +} + +resource "azurerm_network_interface_security_group_association" "ssh" { + network_interface_id = azurerm_network_interface.main.id + network_security_group_id = azurerm_network_security_group.ssh.id +} + +# Disk + +resource "azurerm_managed_disk" "data" { + name = "${var.prefix}-disk" + location = var.location + resource_group_name = var.resource_group_name + storage_account_type = "PremiumV2_LRS" + create_option = "Empty" + disk_size_gb = "16" + zone = 1 + + tags = var.tags +} + +resource "azurerm_virtual_machine_data_disk_attachment" "data" { + managed_disk_id = azurerm_managed_disk.data.id + virtual_machine_id = azurerm_linux_virtual_machine.main.id + lun = "1" + caching = "None" +} + +# VM + +resource "azurerm_linux_virtual_machine" "main" { + name = "${var.prefix}-vm" + location = var.location + resource_group_name = var.resource_group_name + network_interface_ids = [azurerm_network_interface.main.id] + dedicated_host_id = var.dedicated_host_id + zone = 1 + + size = var.vm_size + + admin_username = "benchmark" + + admin_ssh_key { + username = "benchmark" + public_key = var.ssh_public_key + } + + os_disk { + caching = "ReadWrite" + storage_account_type = "Premium_LRS" + } + + source_image_reference { + publisher = "Canonical" + offer = "0001-com-ubuntu-server-jammy" + sku = "22_04-lts-gen2" + version = "latest" + } + + identity { + type = "SystemAssigned" + } + + tags = var.tags +} diff --git a/packages/@n8n/benchmark/infra/output.tf b/packages/@n8n/benchmark/infra/output.tf new file mode 100644 index 0000000000..2ba9be4bb7 --- /dev/null +++ b/packages/@n8n/benchmark/infra/output.tf @@ -0,0 +1,16 @@ +output "vm_name" { + value = module.test_vm.vm_name +} + +output "ip" { + value = module.test_vm.ip +} + +output "ssh_username" { + value = module.test_vm.ssh_username +} + +output "ssh_private_key" { + value = tls_private_key.ssh_key.private_key_pem + sensitive = true +} diff --git a/packages/@n8n/benchmark/infra/providers.tf b/packages/@n8n/benchmark/infra/providers.tf new file mode 100644 index 0000000000..1ce880f5cd --- /dev/null +++ b/packages/@n8n/benchmark/infra/providers.tf @@ -0,0 +1,23 @@ + +terraform { + required_providers { + azurerm = { + source = "hashicorp/azurerm" + version = "~> 3.115.0" + } + + random = { + source = "hashicorp/random" + } + } + + required_version = "~> 1.8.5" +} + +provider "azurerm" { + features {} + + skip_provider_registration = true +} + +provider "random" {} diff --git a/packages/@n8n/benchmark/infra/vars.tf b/packages/@n8n/benchmark/infra/vars.tf new file mode 100644 index 0000000000..4159b647e8 --- /dev/null +++ b/packages/@n8n/benchmark/infra/vars.tf @@ -0,0 +1,34 @@ +variable "location" { + description = "Region to deploy resources" + default = "East US" +} + +variable "resource_group_name" { + description = "Name of the resource group" + default = "n8n-benchmarking" +} + +variable "host_size_family" { + description = "Size Family for the Host Group" + default = "DCSv2-Type1" +} + +variable "vm_size" { + description = "VM Size" + # 8 vCPUs, 32 GiB memory + default = "Standard_DC8_v2" +} + +variable "number_of_vms" { + description = "Number of VMs to create" + default = 1 +} + +locals { + common_tags = { + Id = "N8nBenchmark" + Terraform = "true" + Owner = "Catalysts" + CreatedAt = timestamp() + } +} diff --git a/packages/@n8n/benchmark/package.json b/packages/@n8n/benchmark/package.json new file mode 100644 index 0000000000..abb8514c3d --- /dev/null +++ b/packages/@n8n/benchmark/package.json @@ -0,0 +1,54 @@ +{ + "name": "@n8n/n8n-benchmark", + "version": "1.8.0", + "description": "Cli for running benchmark tests for n8n", + "main": "dist/index", + "scripts": { + "build": "tsc -p tsconfig.build.json && tsc-alias -p tsconfig.build.json", + "format": "biome format --write .", + "format:check": "biome ci .", + "lint": "eslint .", + "lintfix": "eslint . --fix", + "start": "./bin/n8n-benchmark", + "test": "echo \"Error: no test specified\" && exit 1", + "typecheck": "tsc --noEmit", + "benchmark": "zx scripts/run.mjs", + "benchmark-in-cloud": "pnpm benchmark --env cloud", + "benchmark-locally": "pnpm benchmark --env local", + "provision-cloud-env": "zx scripts/provision-cloud-env.mjs", + "destroy-cloud-env": "zx scripts/destroy-cloud-env.mjs", + "watch": "tsc-watch -p tsconfig.build.json --onCompilationComplete \"tsc-alias -p tsconfig.build.json\"" + }, + "engines": { + "node": ">=20.10" + }, + "keywords": [ + "automate", + "automation", + "IaaS", + "iPaaS", + "n8n", + "workflow", + "benchmark", + "performance" + ], + "dependencies": { + "@oclif/core": "4.0.7", + "axios": "catalog:", + "dotenv": "8.6.0", + "nanoid": "catalog:", + "zx": "^8.1.4" + }, + "devDependencies": { + "@types/convict": "^6.1.1", + "@types/k6": "^0.52.0" + }, + "bin": { + "n8n-benchmark": "./bin/n8n-benchmark" + }, + "oclif": { + "bin": "n8n-benchmark", + "commands": "./dist/commands", + "topicSeparator": " " + } +} diff --git a/packages/@n8n/benchmark/scenarios/binary-data/binary-data.json b/packages/@n8n/benchmark/scenarios/binary-data/binary-data.json new file mode 100644 index 0000000000..a74b1c2d38 --- /dev/null +++ b/packages/@n8n/benchmark/scenarios/binary-data/binary-data.json @@ -0,0 +1,67 @@ +{ + "createdAt": "2024-09-03T11:51:56.540Z", + "updatedAt": "2024-09-03T12:22:21.000Z", + "name": "Binary Data", + "active": true, + "nodes": [ + { + "parameters": { + "httpMethod": "POST", + "path": "binary-files-benchmark", + "responseMode": "responseNode", + "options": {} + }, + "type": "n8n-nodes-base.webhook", + "typeVersion": 2, + "position": [0, 0], + "id": "bfe19f12-3655-440f-be5c-8d71665c6353", + "name": "Webhook", + "webhookId": "109d7b13-93ad-42b0-a9ce-ca49e1817b35" + }, + { + "parameters": { "respondWith": "binary", "options": {} }, + "type": "n8n-nodes-base.respondToWebhook", + "typeVersion": 1.1, + "position": [740, 0], + "id": "cd957c9b-6b7a-4423-aac3-6df4d8bb571e", + "name": "Respond to Webhook" + }, + { + "parameters": { + "operation": "write", + "fileName": "=file-{{ Date.now() }}-{{ Math.random() }}.js", + "dataPropertyName": "file", + "options": {} + }, + "type": "n8n-nodes-base.readWriteFile", + "typeVersion": 1, + "position": [260, 0], + "id": "f2ce4709-7697-4bc6-8eca-6c222485297a", + "name": "Write File to Disk" + }, + { + "parameters": { "fileSelector": "={{ $json.fileName }}", "options": {} }, + "type": "n8n-nodes-base.readWriteFile", + "typeVersion": 1, + "position": [500, 0], + "id": "198e8a6c-81a3-4b34-b099-501961a02006", + "name": "Read File from Disk" + } + ], + "connections": { + "Webhook": { "main": [[{ "node": "Write File to Disk", "type": "main", "index": 0 }]] }, + "Write File to Disk": { + "main": [[{ "node": "Read File from Disk", "type": "main", "index": 0 }]] + }, + "Read File from Disk": { + "main": [[{ "node": "Respond to Webhook", "type": "main", "index": 0 }]] + } + }, + "settings": { "executionOrder": "v1" }, + "staticData": null, + "meta": null, + "pinData": {}, + "versionId": "8dd197c0-d1ea-43c3-9f88-9d11e7b081a0", + "triggerCount": 1, + "tags": [] +} diff --git a/packages/@n8n/benchmark/scenarios/binary-data/binary-data.manifest.json b/packages/@n8n/benchmark/scenarios/binary-data/binary-data.manifest.json new file mode 100644 index 0000000000..e22eac8923 --- /dev/null +++ b/packages/@n8n/benchmark/scenarios/binary-data/binary-data.manifest.json @@ -0,0 +1,7 @@ +{ + "$schema": "../scenario.schema.json", + "name": "BinaryData", + "description": "Send a binary file to a webhook, write it to FS, read it from FS and receive it back", + "scenarioData": { "workflowFiles": ["binary-data.json"] }, + "scriptPath": "binary-data.script.js" +} diff --git a/packages/@n8n/benchmark/scenarios/binary-data/binary-data.script.js b/packages/@n8n/benchmark/scenarios/binary-data/binary-data.script.js new file mode 100644 index 0000000000..28edfdf9ec --- /dev/null +++ b/packages/@n8n/benchmark/scenarios/binary-data/binary-data.script.js @@ -0,0 +1,29 @@ +import http from 'k6/http'; +import { check } from 'k6'; + +const apiBaseUrl = __ENV.API_BASE_URL; + +// This creates a 2MB file (16 * 128 * 1024 = 2 * 1024 * 1024 = 2MB) +const file = Array.from({ length: 128 * 1024 }, () => Math.random().toString().slice(2)).join(''); +const filename = 'test.bin'; + +export default function () { + const data = { + filename, + file: http.file(file, filename, 'application/javascript'), + }; + + const res = http.post(`${apiBaseUrl}/webhook/binary-files-benchmark`, data); + + if (res.status !== 200) { + console.error( + `Invalid response. Received status ${res.status}. Body: ${JSON.stringify(res.body)}`, + ); + } + + check(res, { + 'is status 200': (r) => r.status === 200, + 'has correct content type': (r) => + r.headers['Content-Type'] === 'application/javascript; charset=utf-8', + }); +} diff --git a/packages/@n8n/benchmark/scenarios/http-node/http-node.json b/packages/@n8n/benchmark/scenarios/http-node/http-node.json new file mode 100644 index 0000000000..eb064c30d4 --- /dev/null +++ b/packages/@n8n/benchmark/scenarios/http-node/http-node.json @@ -0,0 +1,213 @@ +{ + "createdAt": "2024-09-04T07:18:29.011Z", + "updatedAt": "2024-09-04T07:27:58.000Z", + "id": "rUXzWNGsUDUmgaFS", + "name": "HTTP Request", + "active": false, + "nodes": [ + { + "parameters": { + "httpMethod": "POST", + "path": "benchmark-http-node", + "responseMode": "responseNode", + "options": {} + }, + "type": "n8n-nodes-base.webhook", + "typeVersion": 2, + "position": [-60, 20], + "id": "f11378b4-5f28-4a6c-9332-5878342cd3cf", + "name": "Webhook", + "webhookId": "c40014cc-4d64-4fcf-8c13-9e94b6792756" + }, + { + "parameters": { + "respondWith": "allIncomingItems", + "options": {} + }, + "type": "n8n-nodes-base.respondToWebhook", + "typeVersion": 1.1, + "position": [1060, 20], + "id": "f42552c7-9c6e-4616-b9d5-ac79445ef4ed", + "name": "Respond to Webhook" + }, + { + "parameters": { + "url": "http://mockapi:8080/users/clair.bahringer/received_events/public", + "options": { + "response": { + "response": { + "fullResponse": true + } + } + } + }, + "type": "n8n-nodes-base.httpRequest", + "typeVersion": 4.2, + "position": [300, -180], + "id": "20de816e-0fbe-4e28-bc53-f508a2dda117", + "name": "Mock public received events" + }, + { + "parameters": { + "url": "http://mockapi:8080/repos/udke6pujoywnagxkcvab2riw23khzn2tibo2vincws32qexb50ey7h97d42vnzyol0rxypgsg4pomsf7sgnmdaihstljw8edcijrwmy7mfi76yif19c4/47i31dh737el215j62ts2f2782nw3ss26rul3s8jw13u3vu0xm349a5hyay5asmwnlnf7nx8p9h4g62so6s1cis7xv9puj5j98t4m980sbe2455fn1obccjl/events", + "options": { + "response": { + "response": { + "fullResponse": true + } + } + } + }, + "type": "n8n-nodes-base.httpRequest", + "typeVersion": 4.2, + "position": [300, 20], + "id": "083e02b3-a257-49a8-8f7d-42222cb9194c", + "name": "Mock repository events" + }, + { + "parameters": { + "url": "http://mockapi:8080/orgs/g02pp066qoyithcjevhd6m1wfii3c4x51k39n9apybljhx69/events", + "options": { + "response": { + "response": { + "fullResponse": true + } + } + } + }, + "type": "n8n-nodes-base.httpRequest", + "typeVersion": 4.2, + "position": [300, 220], + "id": "f4c3b5d2-0257-4883-a585-ade4c3a1082c", + "name": "Mock organization events" + }, + { + "parameters": { + "numberInputs": 3 + }, + "type": "n8n-nodes-base.merge", + "typeVersion": 3, + "position": [600, 20], + "id": "273985b7-b0ae-4cde-bbe9-7b3e4b29fe61", + "name": "Merge" + }, + { + "parameters": { + "assignments": { + "assignments": [ + { + "id": "89608adb-f487-416f-a7d8-3ebb1f7b50e5", + "name": "statusCode", + "value": "={{ $json.statusCode }}", + "type": "number" + } + ] + }, + "options": {} + }, + "id": "231275a7-44e7-47bb-8ccf-fe62dc48356b", + "name": "Select statusCode", + "type": "n8n-nodes-base.set", + "typeVersion": 3.4, + "position": [820, 20] + } + ], + "connections": { + "Webhook": { + "main": [ + [ + { + "node": "Mock public received events", + "type": "main", + "index": 0 + }, + { + "node": "Mock repository events", + "type": "main", + "index": 0 + }, + { + "node": "Mock organization events", + "type": "main", + "index": 0 + } + ] + ] + }, + "Mock public received events": { + "main": [ + [ + { + "node": "Merge", + "type": "main", + "index": 0 + } + ] + ] + }, + "Mock repository events": { + "main": [ + [ + { + "node": "Merge", + "type": "main", + "index": 1 + } + ] + ] + }, + "Mock organization events": { + "main": [ + [ + { + "node": "Merge", + "type": "main", + "index": 2 + } + ] + ] + }, + "Merge": { + "main": [ + [ + { + "node": "Select statusCode", + "type": "main", + "index": 0 + } + ] + ] + }, + "Select statusCode": { + "main": [ + [ + { + "node": "Respond to Webhook", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": { "executionOrder": "v1" }, + "staticData": null, + "meta": null, + "pinData": { + "Webhook": [ + { + "json": { + "headers": { "host": "localhost:5678", "user-agent": "curl/8.6.0", "accept": "*/*" }, + "params": {}, + "query": {}, + "body": {}, + "webhookUrl": "http://localhost:5678/webhook-test/benchmark-http-node", + "executionMode": "test" + } + } + ] + }, + "versionId": "9fa91e54-e73a-4a34-b781-d64f2b02f333", + "triggerCount": 0, + "tags": [] +} diff --git a/packages/@n8n/benchmark/scenarios/http-node/http-node.manifest.json b/packages/@n8n/benchmark/scenarios/http-node/http-node.manifest.json new file mode 100644 index 0000000000..787569e63e --- /dev/null +++ b/packages/@n8n/benchmark/scenarios/http-node/http-node.manifest.json @@ -0,0 +1,7 @@ +{ + "$schema": "../scenario.schema.json", + "name": "HttpNode", + "description": "Webhook -> 3x HTTP request to a mock API -> Merge -> Respond to Webhook. Requires a mock API running at http://mockapi:8080", + "scenarioData": { "workflowFiles": ["http-node.json"] }, + "scriptPath": "http-node.script.js" +} diff --git a/packages/@n8n/benchmark/scenarios/http-node/http-node.script.js b/packages/@n8n/benchmark/scenarios/http-node/http-node.script.js new file mode 100644 index 0000000000..4ecee9d1bd --- /dev/null +++ b/packages/@n8n/benchmark/scenarios/http-node/http-node.script.js @@ -0,0 +1,30 @@ +import http from 'k6/http'; +import { check } from 'k6'; + +const apiBaseUrl = __ENV.API_BASE_URL; + +export default function () { + const res = http.post(`${apiBaseUrl}/webhook/benchmark-http-node`); + + if (res.status !== 200) { + console.error( + `Invalid response. Received status ${res.status}. Body: ${JSON.stringify(res.body)}`, + ); + } + + check(res, { + 'is status 200': (r) => r.status === 200, + 'http requests were OK': (r) => { + if (r.status !== 200) return false; + + try { + // Response body is an array of the request status codes made with HttpNodes + const body = JSON.parse(r.body); + return Array.isArray(body) ? body.every((request) => request.statusCode === 200) : false; + } catch (error) { + console.error('Error parsing response body: ', error); + return false; + } + }, + }); +} diff --git a/packages/@n8n/benchmark/scenarios/js-code-node/js-code-node.json b/packages/@n8n/benchmark/scenarios/js-code-node/js-code-node.json new file mode 100644 index 0000000000..d6f30ac5ea --- /dev/null +++ b/packages/@n8n/benchmark/scenarios/js-code-node/js-code-node.json @@ -0,0 +1,96 @@ +{ + "createdAt": "2024-08-06T12:19:51.268Z", + "updatedAt": "2024-08-06T12:20:45.000Z", + "name": "JS Code Node", + "active": true, + "nodes": [ + { + "parameters": { + "respondWith": "allIncomingItems", + "options": {} + }, + "type": "n8n-nodes-base.respondToWebhook", + "typeVersion": 1.1, + "position": [1280, 460], + "id": "0067e317-09b8-478a-8c50-e19b4c9e294c", + "name": "Respond to Webhook" + }, + { + "parameters": { + "mode": "runOnceForEachItem", + "jsCode": "// Add new field\n$input.item.json.age = 10 + Math.floor(Math.random() * 30);\n// Mutate existing field\n$input.item.json.password = $input.item.json.password.split('').map(() => '*').join(\"\")\n// Remove field\ndelete $input.item.json.lastname\n// New object field\nconst emailParts = $input.item.json.email.split(\"@\")\n$input.item.json.emailData = {\n user: emailParts[0],\n domain: emailParts[1]\n}\n\nreturn $input.item;" + }, + "type": "n8n-nodes-base.code", + "typeVersion": 2, + "position": [1040, 460], + "id": "56d751c0-0d30-43c3-89fa-bebf3a9d436f", + "name": "OnceForEachItemJSCode" + }, + { + "parameters": { + "httpMethod": "POST", + "path": "code-node-benchmark", + "responseMode": "responseNode", + "options": {} + }, + "type": "n8n-nodes-base.webhook", + "typeVersion": 2, + "position": [580, 460], + "id": "417d749d-156c-4ffe-86ea-336f702dc5da", + "name": "Webhook", + "webhookId": "34ca1895-ccf4-4a4a-8bb8-a042f5edb567" + }, + { + "parameters": { + "jsCode": "const digits = '0123456789';\nconst uppercaseLetters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';\nconst lowercaseLetters = uppercaseLetters.toLowerCase();\nconst alphabet = [digits, uppercaseLetters, lowercaseLetters].join('').split('')\n\nconst randomInt = (min, max) => Math.floor(Math.random() * (max - min + 1)) + min;\nconst randomItem = (arr) => arr.at(randomInt(0, arr.length - 1))\nconst randomString = (len) => Array.from({ length: len }).map(() => randomItem(alphabet)).join('')\n\nconst randomUid = () => [8,4,4,4,8].map(len => randomString(len)).join(\"-\")\nconst randomEmail = () => `${randomString(8)}@${randomString(10)}.com`\n\nconst randomPerson = () => ({\n uid: randomUid(),\n email: randomEmail(),\n firstname: randomString(5),\n lastname: randomString(12),\n password: randomString(10)\n})\n\nreturn Array.from({ length: 100 }).map(() => ({\n json: randomPerson()\n}))" + }, + "id": "c30db155-73ca-48b9-8860-c3fe7a0926fb", + "name": "Code", + "type": "n8n-nodes-base.code", + "typeVersion": 2, + "position": [820, 460] + } + ], + "connections": { + "OnceForEachItemJSCode": { + "main": [ + [ + { + "node": "Respond to Webhook", + "type": "main", + "index": 0 + } + ] + ] + }, + "Webhook": { + "main": [ + [ + { + "node": "Code", + "type": "main", + "index": 0 + } + ] + ] + }, + "Code": { + "main": [ + [ + { + "node": "OnceForEachItemJSCode", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": { "executionOrder": "v1" }, + "staticData": null, + "meta": { "templateCredsSetupCompleted": true, "responseMode": "lastNode", "options": {} }, + "pinData": {}, + "versionId": "840a38a1-ba37-433d-9f20-de73f5131a2b", + "triggerCount": 1, + "tags": [] +} diff --git a/packages/@n8n/benchmark/scenarios/js-code-node/js-code-node.manifest.json b/packages/@n8n/benchmark/scenarios/js-code-node/js-code-node.manifest.json new file mode 100644 index 0000000000..8b0165baf7 --- /dev/null +++ b/packages/@n8n/benchmark/scenarios/js-code-node/js-code-node.manifest.json @@ -0,0 +1,7 @@ +{ + "$schema": "../scenario.schema.json", + "name": "CodeNodeJs", + "description": "A JS Code Node that first generates 100 items and then runs once for each item and adds, modifies and removes properties. The data returned with RespondToWebhook Node.", + "scenarioData": { "workflowFiles": ["js-code-node.json"] }, + "scriptPath": "js-code-node.script.js" +} diff --git a/packages/@n8n/benchmark/scenarios/js-code-node/js-code-node.script.js b/packages/@n8n/benchmark/scenarios/js-code-node/js-code-node.script.js new file mode 100644 index 0000000000..b2fd8eb315 --- /dev/null +++ b/packages/@n8n/benchmark/scenarios/js-code-node/js-code-node.script.js @@ -0,0 +1,29 @@ +import http from 'k6/http'; +import { check } from 'k6'; + +const apiBaseUrl = __ENV.API_BASE_URL; + +export default function () { + const res = http.post(`${apiBaseUrl}/webhook/code-node-benchmark`, {}); + + if (res.status !== 200) { + console.error( + `Invalid response. Received status ${res.status}. Body: ${JSON.stringify(res.body)}`, + ); + } + + check(res, { + 'is status 200': (r) => r.status === 200, + 'has items in response': (r) => { + if (r.status !== 200) return false; + + try { + const body = JSON.parse(r.body); + return Array.isArray(body) ? body.length === 100 : false; + } catch (error) { + console.error('Error parsing response body: ', error); + return false; + } + }, + }); +} diff --git a/packages/@n8n/benchmark/scenarios/scenario.schema.json b/packages/@n8n/benchmark/scenarios/scenario.schema.json new file mode 100644 index 0000000000..661fc054b6 --- /dev/null +++ b/packages/@n8n/benchmark/scenarios/scenario.schema.json @@ -0,0 +1,42 @@ +{ + "definitions": { + "ScenarioData": { + "type": "object", + "properties": { + "workflowFiles": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "required": [], + "additionalProperties": false + } + }, + "type": "object", + "properties": { + "$schema": { + "type": "string", + "description": "The JSON schema to validate this file" + }, + "name": { + "type": "string", + "description": "The name of the scenario" + }, + "description": { + "type": "string", + "description": "A longer description of the scenario" + }, + "scriptPath": { + "type": "string", + "description": "Relative path to the k6 test script" + }, + "scenarioData": { + "$ref": "#/definitions/ScenarioData", + "description": "Data to import before running the scenario" + } + }, + "required": ["name", "description", "scriptPath", "scenarioData"], + "additionalProperties": false +} diff --git a/packages/@n8n/benchmark/scenarios/set-node-expressions/set-node-expressions.json b/packages/@n8n/benchmark/scenarios/set-node-expressions/set-node-expressions.json new file mode 100644 index 0000000000..fabb15a5a7 --- /dev/null +++ b/packages/@n8n/benchmark/scenarios/set-node-expressions/set-node-expressions.json @@ -0,0 +1,91 @@ +{ + "createdAt": "2024-09-03T11:30:26.333Z", + "updatedAt": "2024-09-03T11:42:52.000Z", + "name": "Set Node Expressions", + "active": false, + "nodes": [ + { + "parameters": { + "httpMethod": "POST", + "path": "set-expressions-benchmark", + "responseMode": "responseNode", + "options": {} + }, + "type": "n8n-nodes-base.webhook", + "typeVersion": 2, + "position": [40, 0], + "id": "5babc228-2b89-48cb-8337-28416e867874", + "name": "Webhook", + "webhookId": "f6f1750d-b734-496f-afe8-26e8e393ca87" + }, + { + "parameters": { "respondWith": "allIncomingItems", "options": {} }, + "type": "n8n-nodes-base.respondToWebhook", + "typeVersion": 1.1, + "position": [640, 0], + "id": "4146a3fb-403c-4cfc-9d38-8af4d16a8440", + "name": "Respond to Webhook" + }, + { + "parameters": { + "assignments": { + "assignments": [ + { + "id": "48c46098-f411-41f7-8f0a-1da372340a4e", + "name": "oneToOneCopy", + "value": "={{ $json.headers.host }}", + "type": "string" + }, + { + "id": "5d90808b-1c1a-4065-ac51-6d61bd03e564", + "name": "={{ $json.headers['user-agent'].slice(0, 4) }}", + "value": "Set key with expression", + "type": "string" + }, + { + "id": "8a74ac24-1f43-43ba-969d-87bfd2f401ce", + "name": "Multiple variables", + "value": "={{ $json.executionMode + ' ' + $json.webhookUrl }}", + "type": "string" + }, + { + "id": "93eba201-79d9-4305-a246-f9c8ec50ebab", + "name": "Static value", + "value": 42, + "type": "number" + }, + { + "id": "0470a712-c795-44ab-9dcc-05a3f67698bb", + "name": "Object", + "value": "={{ $json.headers }}", + "type": "object" + }, + { + "id": "eb671167-da14-4b55-8eea-31ab7bedae10", + "name": "Array", + "value": "={{ Object.values($json.headers) }}", + "type": "array" + } + ] + }, + "options": {} + }, + "type": "n8n-nodes-base.set", + "typeVersion": 3.4, + "position": [360, 0], + "id": "0cb5e82d-f61e-4d91-8fa9-365e382a4d75", + "name": "Edit Fields" + } + ], + "connections": { + "Webhook": { "main": [[{ "node": "Edit Fields", "type": "main", "index": 0 }]] }, + "Edit Fields": { "main": [[{ "node": "Respond to Webhook", "type": "main", "index": 0 }]] } + }, + "settings": { "executionOrder": "v1" }, + "staticData": null, + "meta": null, + "pinData": {}, + "versionId": "04fd543e-3923-4092-8c2b-2b4262ccbb38", + "triggerCount": 0, + "tags": [] +} diff --git a/packages/@n8n/benchmark/scenarios/set-node-expressions/set-node-expressions.manifest.json b/packages/@n8n/benchmark/scenarios/set-node-expressions/set-node-expressions.manifest.json new file mode 100644 index 0000000000..0d37b09b96 --- /dev/null +++ b/packages/@n8n/benchmark/scenarios/set-node-expressions/set-node-expressions.manifest.json @@ -0,0 +1,7 @@ +{ + "$schema": "../scenario.schema.json", + "name": "SetNodeExpressions", + "description": "Expressions in a Set node", + "scenarioData": { "workflowFiles": ["set-node-expressions.json"] }, + "scriptPath": "set-node-expressions.script.js" +} diff --git a/packages/@n8n/benchmark/scenarios/set-node-expressions/set-node-expressions.script.js b/packages/@n8n/benchmark/scenarios/set-node-expressions/set-node-expressions.script.js new file mode 100644 index 0000000000..9564fcc53c --- /dev/null +++ b/packages/@n8n/benchmark/scenarios/set-node-expressions/set-node-expressions.script.js @@ -0,0 +1,18 @@ +import http from 'k6/http'; +import { check } from 'k6'; + +const apiBaseUrl = __ENV.API_BASE_URL; + +export default function () { + const res = http.post(`${apiBaseUrl}/webhook/set-expressions-benchmark`, {}); + + if (res.status !== 200) { + console.error( + `Invalid response. Received status ${res.status}. Body: ${JSON.stringify(res.body)}`, + ); + } + + check(res, { + 'is status 200': (r) => r.status === 200, + }); +} diff --git a/packages/@n8n/benchmark/scenarios/single-webhook/single-webhook.json b/packages/@n8n/benchmark/scenarios/single-webhook/single-webhook.json new file mode 100644 index 0000000000..cba1aa5832 --- /dev/null +++ b/packages/@n8n/benchmark/scenarios/single-webhook/single-webhook.json @@ -0,0 +1,25 @@ +{ + "createdAt": "2024-08-06T12:19:51.268Z", + "updatedAt": "2024-08-06T12:20:45.000Z", + "name": "Single Webhook", + "active": true, + "nodes": [ + { + "parameters": { "path": "single-webhook", "options": {} }, + "id": "7587ab0e-cc15-424f-83c0-c887a0eb97fb", + "name": "Webhook", + "type": "n8n-nodes-base.webhook", + "typeVersion": 2, + "position": [760, 400], + "webhookId": "fa563fc2-c73f-4631-99a1-39c16f1f858f" + } + ], + "connections": {}, + "settings": { "executionOrder": "v1" }, + "staticData": null, + "meta": { "templateCredsSetupCompleted": true, "responseMode": "lastNode", "options": {} }, + "pinData": {}, + "versionId": "840a38a1-ba37-433d-9f20-de73f5131a2b", + "triggerCount": 1, + "tags": [] +} diff --git a/packages/@n8n/benchmark/scenarios/single-webhook/single-webhook.manifest.json b/packages/@n8n/benchmark/scenarios/single-webhook/single-webhook.manifest.json new file mode 100644 index 0000000000..2113c73ec9 --- /dev/null +++ b/packages/@n8n/benchmark/scenarios/single-webhook/single-webhook.manifest.json @@ -0,0 +1,7 @@ +{ + "$schema": "../scenario.schema.json", + "name": "SingleWebhook", + "description": "A single webhook trigger that responds with a 200 status code", + "scenarioData": { "workflowFiles": ["single-webhook.json"] }, + "scriptPath": "single-webhook.script.js" +} diff --git a/packages/@n8n/benchmark/scenarios/single-webhook/single-webhook.script.js b/packages/@n8n/benchmark/scenarios/single-webhook/single-webhook.script.js new file mode 100644 index 0000000000..41facc8aeb --- /dev/null +++ b/packages/@n8n/benchmark/scenarios/single-webhook/single-webhook.script.js @@ -0,0 +1,18 @@ +import http from 'k6/http'; +import { check } from 'k6'; + +const apiBaseUrl = __ENV.API_BASE_URL; + +export default function () { + const res = http.get(`${apiBaseUrl}/webhook/single-webhook`); + + if (res.status !== 200) { + console.error( + `Invalid response. Received status ${res.status}. Body: ${JSON.stringify(res.body)}`, + ); + } + + check(res, { + 'is status 200': (r) => r.status === 200, + }); +} diff --git a/packages/@n8n/benchmark/scripts/bootstrap.sh b/packages/@n8n/benchmark/scripts/bootstrap.sh new file mode 100644 index 0000000000..02858094c8 --- /dev/null +++ b/packages/@n8n/benchmark/scripts/bootstrap.sh @@ -0,0 +1,63 @@ +#!/bin/bash +# +# Script to initialize the benchmark environment on a VM +# + +set -euo pipefail; + +CURRENT_USER=$(whoami) + +# Mount the data disk +# First wait for the disk to become available +WAIT_TIME=0 +MAX_WAIT_TIME=60 + +while [ ! -e /dev/sdc ]; do + if [ $WAIT_TIME -ge $MAX_WAIT_TIME ]; then + echo "Error: /dev/sdc did not become available within $MAX_WAIT_TIME seconds." + exit 1 + fi + + echo "Waiting for /dev/sdc to be available... ($WAIT_TIME/$MAX_WAIT_TIME)" + sleep 1 + WAIT_TIME=$((WAIT_TIME + 1)) +done + +# Then mount it +if [ -d "/n8n" ]; then + echo "Data disk already mounted. Clearing it..." + sudo rm -rf /n8n/* + sudo rm -rf /n8n/.[!.]* +else + sudo mkdir -p /n8n + sudo parted /dev/sdc --script mklabel gpt mkpart xfspart xfs 0% 100% + sudo mkfs.xfs /dev/sdc1 + sudo partprobe /dev/sdc1 + sudo mount /dev/sdc1 /n8n + sudo chown -R "$CURRENT_USER":"$CURRENT_USER" /n8n +fi + +### Remove unneeded dependencies +# TTY +sudo systemctl disable getty@tty1.service +sudo systemctl disable serial-getty@ttyS0.service +# Snap +sudo systemctl disable snapd.service +# Unattended upgrades +sudo systemctl disable unattended-upgrades.service +# Cron +sudo systemctl disable cron.service + +# Include nodejs v20 repository +curl -fsSL https://deb.nodesource.com/setup_20.x -o nodesource_setup.sh +sudo -E bash nodesource_setup.sh + +# Install docker, docker compose and nodejs +sudo DEBIAN_FRONTEND=noninteractive apt-get update -yq +sudo DEBIAN_FRONTEND=noninteractive apt-get install -yq docker.io docker-compose nodejs + +# Add the current user to the docker group +sudo usermod -aG docker "$CURRENT_USER" + +# Install zx +npm install zx diff --git a/packages/@n8n/benchmark/scripts/clients/docker-compose-client.mjs b/packages/@n8n/benchmark/scripts/clients/docker-compose-client.mjs new file mode 100644 index 0000000000..064893a572 --- /dev/null +++ b/packages/@n8n/benchmark/scripts/clients/docker-compose-client.mjs @@ -0,0 +1,45 @@ +import { which } from 'zx'; + +export class DockerComposeClient { + /** + * + * @param {{ $: Shell; verbose?: boolean }} opts + */ + constructor({ $ }) { + this.$$ = $; + } + + async $(...args) { + await this.resolveExecutableIfNeeded(); + + if (this.isCompose) { + return await this.$$`docker-compose ${args}`; + } else { + return await this.$$`docker compose ${args}`; + } + } + + async resolveExecutableIfNeeded() { + if (this.isResolved) { + return; + } + + // The VM deployment doesn't have `docker compose` available, + // so try to resolve the `docker-compose` first + const compose = await which('docker-compose', { nothrow: true }); + if (compose) { + this.isResolved = true; + this.isCompose = true; + return; + } + + const docker = await which('docker', { nothrow: true }); + if (docker) { + this.isResolved = true; + this.isCompose = false; + return; + } + + throw new Error('Could not resolve docker-compose or docker'); + } +} diff --git a/packages/@n8n/benchmark/scripts/clients/ssh-client.mjs b/packages/@n8n/benchmark/scripts/clients/ssh-client.mjs new file mode 100644 index 0000000000..9d9ab82900 --- /dev/null +++ b/packages/@n8n/benchmark/scripts/clients/ssh-client.mjs @@ -0,0 +1,37 @@ +// @ts-check +import { $ } from 'zx'; + +export class SshClient { + /** + * + * @param {{ privateKeyPath: string; ip: string; username: string; verbose?: boolean }} param0 + */ + constructor({ privateKeyPath, ip, username, verbose = false }) { + this.verbose = verbose; + this.privateKeyPath = privateKeyPath; + this.ip = ip; + this.username = username; + + this.$$ = $({ + verbose, + }); + } + + /** + * @param {string} command + * @param {{ verbose?: boolean }} [options] + */ + async ssh(command, options = {}) { + const $$ = options?.verbose ? $({ verbose: true }) : this.$$; + + const target = `${this.username}@${this.ip}`; + + await $$`ssh -i ${this.privateKeyPath} -o StrictHostKeyChecking=accept-new ${target} ${command}`; + } + + async scp(source, destination) { + const target = `${this.username}@${this.ip}:${destination}`; + await this + .$$`scp -i ${this.privateKeyPath} -o StrictHostKeyChecking=accept-new ${source} ${target}`; + } +} diff --git a/packages/@n8n/benchmark/scripts/clients/terraform-client.mjs b/packages/@n8n/benchmark/scripts/clients/terraform-client.mjs new file mode 100644 index 0000000000..522e35b6e9 --- /dev/null +++ b/packages/@n8n/benchmark/scripts/clients/terraform-client.mjs @@ -0,0 +1,71 @@ +// @ts-check + +import path from 'path'; +import { $, fs } from 'zx'; + +const paths = { + infraCodeDir: path.resolve('infra'), + terraformStateFile: path.join(path.resolve('infra'), 'terraform.tfstate'), +}; + +export class TerraformClient { + constructor({ isVerbose = false }) { + this.isVerbose = isVerbose; + this.$$ = $({ + cwd: paths.infraCodeDir, + verbose: isVerbose, + }); + } + + /** + * Provisions the environment + */ + async provisionEnvironment() { + console.log('Provisioning cloud environment...'); + + await this.$$`terraform init`; + await this.$$`terraform apply -input=false -auto-approve`; + } + + /** + * @typedef {Object} BenchmarkEnv + * @property {string} vmName + * @property {string} ip + * @property {string} sshUsername + * @property {string} sshPrivateKeyPath + * + * @returns {Promise} + */ + async getTerraformOutputs() { + const privateKeyName = await this.extractPrivateKey(); + + return { + ip: await this.getTerraformOutput('ip'), + sshUsername: await this.getTerraformOutput('ssh_username'), + sshPrivateKeyPath: path.join(paths.infraCodeDir, privateKeyName), + vmName: await this.getTerraformOutput('vm_name'), + }; + } + + hasTerraformState() { + return fs.existsSync(paths.terraformStateFile); + } + + async destroyEnvironment() { + console.log('Destroying cloud environment...'); + + await this.$$`terraform destroy -input=false -auto-approve`; + } + + async getTerraformOutput(key) { + const output = await this.$$`terraform output -raw ${key}`; + return output.stdout.trim(); + } + + async extractPrivateKey() { + await this.$$`terraform output -raw ssh_private_key > privatekey.pem`; + await this.$$`chmod 600 privatekey.pem`; + + return 'privatekey.pem'; + } +} diff --git a/packages/@n8n/benchmark/scripts/destroy-cloud-env.mjs b/packages/@n8n/benchmark/scripts/destroy-cloud-env.mjs new file mode 100644 index 0000000000..0968c51e92 --- /dev/null +++ b/packages/@n8n/benchmark/scripts/destroy-cloud-env.mjs @@ -0,0 +1,86 @@ +#!/usr/bin/env zx +/** + * Script that deletes all resources created by the benchmark environment. + * + * This scripts tries to delete resources created by Terraform. If Terraform + * state file is not found, it will try to delete resources using Azure CLI. + * The terraform state is not persisted, so we want to support both cases. + */ +// @ts-check +import { $, minimist } from 'zx'; +import { TerraformClient } from './clients/terraform-client.mjs'; + +const RESOURCE_GROUP_NAME = 'n8n-benchmarking'; + +const args = minimist(process.argv.slice(3), { + boolean: ['debug'], +}); + +const isVerbose = !!args.debug; + +async function main() { + const terraformClient = new TerraformClient({ isVerbose }); + + if (terraformClient.hasTerraformState()) { + await terraformClient.destroyEnvironment(); + } else { + await destroyUsingAz(); + } +} + +async function destroyUsingAz() { + const resourcesResult = + await $`az resource list --resource-group ${RESOURCE_GROUP_NAME} --query "[?tags.Id == 'N8nBenchmark'].{id:id, createdAt:tags.CreatedAt}" -o json`; + + const resources = JSON.parse(resourcesResult.stdout); + + const resourcesToDelete = resources.map((resource) => resource.id); + + if (resourcesToDelete.length === 0) { + console.log('No resources found in the resource group.'); + + return; + } + + await deleteResources(resourcesToDelete); +} + +async function deleteResources(resourceIds) { + // We don't know the order in which resource should be deleted. + // Here's a poor person's approach to try deletion until all complete + const MAX_ITERATIONS = 100; + let i = 0; + const toDelete = [...resourceIds]; + + console.log(`Deleting ${resourceIds.length} resources...`); + while (toDelete.length > 0) { + const resourceId = toDelete.shift(); + const deleted = await deleteById(resourceId); + if (!deleted) { + toDelete.push(resourceId); + } + + if (i++ > MAX_ITERATIONS) { + console.log( + `Max iterations reached. Exiting. Could not delete ${toDelete.length} resources.`, + ); + process.exit(1); + } + } +} + +async function deleteById(id) { + try { + await $`az resource delete --ids ${id}`; + return true; + } catch (error) { + return false; + } +} + +main().catch((error) => { + console.error('An error occurred destroying cloud env:'); + console.error(error); + + process.exit(1); +}); diff --git a/packages/@n8n/benchmark/scripts/mock-api/mappings/mockApiData.json b/packages/@n8n/benchmark/scripts/mock-api/mappings/mockApiData.json new file mode 100644 index 0000000000..2dc26060e3 --- /dev/null +++ b/packages/@n8n/benchmark/scripts/mock-api/mappings/mockApiData.json @@ -0,0 +1,92110 @@ +{ + "mappings": [ + { + "id": "ba05cae9-7566-458d-9c2e-190e8d1b9231", + "name": "Get the Zen of GitHub", + "request": { + "urlPath": "/zen", + "method": "GET" + }, + "response": { + "status": 200, + "body": "\"lnj1u7g9ntsevpqdnv8jpow0p7nio227yqb6qi85m1nb0szs8yyhbiwayjr41kex0bcqg8u0l7yfjy5gg2k8alz4a0lccb84uacl45o3isrvrjpdw1\"", + "headers": { + "Content-Type": "text/plain" + } + }, + "uuid": "ba05cae9-7566-458d-9c2e-190e8d1b9231", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.34094Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "meta/get-zen", + "schema": { + "type": "string" + } + } + } + }, + "insertionIndex": 0 + }, + { + "id": "2866c527-d5f1-4831-a64b-3f23fe20d72b", + "name": "Suspend a user - 204", + "request": { + "urlPath": "/users/shavonda.cronin/suspended", + "method": "PUT" + }, + "response": { + "status": 204 + }, + "uuid": "2866c527-d5f1-4831-a64b-3f23fe20d72b", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.340897Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "enterprise-admin/suspend-user" + } + } + }, + "insertionIndex": 1 + }, + { + "id": "64fbcd9d-09cc-4f60-9777-c8b08491a342", + "name": "Unsuspend a user - 204", + "request": { + "urlPath": "/users/tammera.kovacek/suspended", + "method": "DELETE" + }, + "response": { + "status": 204 + }, + "uuid": "64fbcd9d-09cc-4f60-9777-c8b08491a342", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.340859Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "enterprise-admin/unsuspend-user" + } + } + }, + "insertionIndex": 2 + }, + { + "id": "2ef23b44-bd56-43f1-a1da-eaad3a17dce3", + "name": "List repositories watched by a user - default", + "request": { + "urlPath": "/users/agustina.berge/subscriptions", + "method": "GET" + }, + "response": { + "status": 200, + "body": "[ {\n \"archive_url\" : \"https://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref}\",\n \"archived\" : false,\n \"assignees_url\" : \"https://api.github.com/repos/octocat/Hello-World/assignees{/user}\",\n \"blobs_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/blobs{/sha}\",\n \"branches_url\" : \"https://api.github.com/repos/octocat/Hello-World/branches{/branch}\",\n \"clone_url\" : \"https://github.com/octocat/Hello-World.git\",\n \"collaborators_url\" : \"https://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator}\",\n \"comments_url\" : \"https://api.github.com/repos/octocat/Hello-World/comments{/number}\",\n \"commits_url\" : \"https://api.github.com/repos/octocat/Hello-World/commits{/sha}\",\n \"compare_url\" : \"https://api.github.com/repos/octocat/Hello-World/compare/{base}...{head}\",\n \"contents_url\" : \"https://api.github.com/repos/octocat/Hello-World/contents/{+path}\",\n \"contributors_url\" : \"https://api.github.com/repos/octocat/Hello-World/contributors\",\n \"created_at\" : \"2011-01-26T19:01:12Z\",\n \"default_branch\" : \"master\",\n \"deployments_url\" : \"https://api.github.com/repos/octocat/Hello-World/deployments\",\n \"description\" : \"This your first repo!\",\n \"disabled\" : false,\n \"downloads_url\" : \"https://api.github.com/repos/octocat/Hello-World/downloads\",\n \"events_url\" : \"https://api.github.com/repos/octocat/Hello-World/events\",\n \"fork\" : false,\n \"forks_count\" : 9,\n \"forks_url\" : \"https://api.github.com/repos/octocat/Hello-World/forks\",\n \"full_name\" : \"octocat/Hello-World\",\n \"git_commits_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/commits{/sha}\",\n \"git_refs_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/refs{/sha}\",\n \"git_tags_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/tags{/sha}\",\n \"git_url\" : \"git:github.com/octocat/Hello-World.git\",\n \"has_downloads\" : true,\n \"has_issues\" : true,\n \"has_pages\" : false,\n \"has_projects\" : true,\n \"has_wiki\" : true,\n \"homepage\" : \"https://github.com\",\n \"hooks_url\" : \"https://api.github.com/repos/octocat/Hello-World/hooks\",\n \"html_url\" : \"https://github.com/octocat/Hello-World\",\n \"id\" : 1296269,\n \"is_template\" : false,\n \"issue_comment_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/comments{/number}\",\n \"issue_events_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/events{/number}\",\n \"issues_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues{/number}\",\n \"keys_url\" : \"https://api.github.com/repos/octocat/Hello-World/keys{/key_id}\",\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World/labels{/name}\",\n \"languages_url\" : \"https://api.github.com/repos/octocat/Hello-World/languages\",\n \"merges_url\" : \"https://api.github.com/repos/octocat/Hello-World/merges\",\n \"milestones_url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones{/number}\",\n \"mirror_url\" : \"git:git.example.com/octocat/Hello-World\",\n \"name\" : \"Hello-World\",\n \"node_id\" : \"MDEwOlJlcG9zaXRvcnkxMjk2MjY5\",\n \"notifications_url\" : \"https://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating}\",\n \"open_issues_count\" : 0,\n \"owner\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"permissions\" : {\n \"admin\" : false,\n \"pull\" : true,\n \"push\" : false\n },\n \"private\" : false,\n \"pulls_url\" : \"https://api.github.com/repos/octocat/Hello-World/pulls{/number}\",\n \"pushed_at\" : \"2011-01-26T19:06:43Z\",\n \"releases_url\" : \"https://api.github.com/repos/octocat/Hello-World/releases{/id}\",\n \"size\" : 108,\n \"ssh_url\" : \"git@github.com:octocat/Hello-World.git\",\n \"stargazers_count\" : 80,\n \"stargazers_url\" : \"https://api.github.com/repos/octocat/Hello-World/stargazers\",\n \"statuses_url\" : \"https://api.github.com/repos/octocat/Hello-World/statuses/{sha}\",\n \"subscribers_url\" : \"https://api.github.com/repos/octocat/Hello-World/subscribers\",\n \"subscription_url\" : \"https://api.github.com/repos/octocat/Hello-World/subscription\",\n \"svn_url\" : \"https://svn.github.com/octocat/Hello-World\",\n \"tags_url\" : \"https://api.github.com/repos/octocat/Hello-World/tags\",\n \"teams_url\" : \"https://api.github.com/repos/octocat/Hello-World/teams\",\n \"template_repository\" : {\n \"allow_merge_commit\" : true,\n \"allow_rebase_merge\" : true,\n \"allow_squash_merge\" : true,\n \"archive_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/{archive_format}{/ref}\",\n \"archived\" : false,\n \"assignees_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/assignees{/user}\",\n \"blobs_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/git/blobs{/sha}\",\n \"branches_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/branches{/branch}\",\n \"clone_url\" : \"https://github.com/octocat/Hello-World-Template.git\",\n \"collaborators_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/collaborators{/collaborator}\",\n \"comments_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/comments{/number}\",\n \"commits_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/commits{/sha}\",\n \"compare_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/compare/{base}...{head}\",\n \"contents_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/contents/{+path}\",\n \"contributors_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/contributors\",\n \"created_at\" : \"2011-01-26T19:01:12Z\",\n \"default_branch\" : \"master\",\n \"delete_branch_on_merge\" : true,\n \"deployments_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/deployments\",\n \"description\" : \"This your first repo!\",\n \"disabled\" : false,\n \"downloads_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/downloads\",\n \"events_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/events\",\n \"fork\" : false,\n \"forks\" : 9,\n \"forks_count\" : 9,\n \"forks_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/forks\",\n \"full_name\" : \"octocat/Hello-World-Template\",\n \"git_commits_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/git/commits{/sha}\",\n \"git_refs_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/git/refs{/sha}\",\n \"git_tags_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/git/tags{/sha}\",\n \"git_url\" : \"git:github.com/octocat/Hello-World-Template.git\",\n \"has_downloads\" : true,\n \"has_issues\" : true,\n \"has_pages\" : false,\n \"has_projects\" : true,\n \"has_wiki\" : true,\n \"homepage\" : \"https://github.com\",\n \"hooks_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/hooks\",\n \"html_url\" : \"https://github.com/octocat/Hello-World-Template\",\n \"id\" : 1296269,\n \"is_template\" : true,\n \"issue_comment_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/issues/comments{/number}\",\n \"issue_events_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/issues/events{/number}\",\n \"issues_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/issues{/number}\",\n \"keys_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/keys{/key_id}\",\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/labels{/name}\",\n \"languages_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/languages\",\n \"license\" : {\n \"html_url\" : \"https://api.github.com/licenses/mit\",\n \"key\" : \"mit\",\n \"name\" : \"MIT License\",\n \"node_id\" : \"MDc6TGljZW5zZW1pdA==\",\n \"spdx_id\" : \"MIT\",\n \"url\" : \"https://api.github.com/licenses/mit\"\n },\n \"merges_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/merges\",\n \"milestones_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/milestones{/number}\",\n \"mirror_url\" : \"git:git.example.com/octocat/Hello-World-Template\",\n \"name\" : \"Hello-World-Template\",\n \"network_count\" : 0,\n \"node_id\" : \"MDEwOlJlcG9zaXRvcnkxMjk2MjY5\",\n \"notifications_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/notifications{?since,all,participating}\",\n \"open_issues\" : 0,\n \"open_issues_count\" : 0,\n \"owner\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"permissions\" : {\n \"admin\" : false,\n \"pull\" : true,\n \"push\" : false\n },\n \"private\" : false,\n \"pulls_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/pulls{/number}\",\n \"pushed_at\" : \"2011-01-26T19:06:43Z\",\n \"releases_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/releases{/id}\",\n \"size\" : 108,\n \"ssh_url\" : \"git@github.com:octocat/Hello-World-Template.git\",\n \"stargazers_count\" : 80,\n \"stargazers_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/stargazers\",\n \"statuses_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/statuses/{sha}\",\n \"subscribers_count\" : 42,\n \"subscribers_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/subscribers\",\n \"subscription_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/subscription\",\n \"svn_url\" : \"https://svn.github.com/octocat/Hello-World-Template\",\n \"tags_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/tags\",\n \"teams_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/teams\",\n \"temp_clone_token\" : \"ABTLWHOULUVAXGTRYU7OC2876QJ2O\",\n \"topics\" : [ \"octocat\", \"atom\", \"electron\", \"api\" ],\n \"trees_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/git/trees{/sha}\",\n \"updated_at\" : \"2011-01-26T19:14:43Z\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World-Template\",\n \"visibility\" : \"public\",\n \"watchers\" : 80,\n \"watchers_count\" : 80\n },\n \"topics\" : [ \"octocat\", \"atom\", \"electron\", \"api\" ],\n \"trees_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/trees{/sha}\",\n \"updated_at\" : \"2011-01-26T19:14:43Z\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World\",\n \"visibility\" : \"public\",\n \"watchers_count\" : 80\n} ]", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "2ef23b44-bd56-43f1-a1da-eaad3a17dce3", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.34082Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "activity/list-repos-watched-by-user", + "schema": { + "items": { + "$ref": "#/components/schemas/minimal-repository" + }, + "type": "array" + } + } + } + }, + "insertionIndex": 3 + }, + { + "id": "cd2133a4-725f-4d10-acd2-0e7aab0308e5", + "name": "List repositories starred by a user - default-response", + "request": { + "urlPath": "/users/kim.leuschke/starred", + "method": "GET" + }, + "response": { + "status": 200, + "body": "[ {\n \"allow_merge_commit\" : true,\n \"allow_rebase_merge\" : true,\n \"allow_squash_merge\" : true,\n \"archive_url\" : \"https://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref}\",\n \"archived\" : false,\n \"assignees_url\" : \"https://api.github.com/repos/octocat/Hello-World/assignees{/user}\",\n \"blobs_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/blobs{/sha}\",\n \"branches_url\" : \"https://api.github.com/repos/octocat/Hello-World/branches{/branch}\",\n \"clone_url\" : \"https://github.com/octocat/Hello-World.git\",\n \"collaborators_url\" : \"https://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator}\",\n \"comments_url\" : \"https://api.github.com/repos/octocat/Hello-World/comments{/number}\",\n \"commits_url\" : \"https://api.github.com/repos/octocat/Hello-World/commits{/sha}\",\n \"compare_url\" : \"https://api.github.com/repos/octocat/Hello-World/compare/{base}...{head}\",\n \"contents_url\" : \"https://api.github.com/repos/octocat/Hello-World/contents/{+path}\",\n \"contributors_url\" : \"https://api.github.com/repos/octocat/Hello-World/contributors\",\n \"created_at\" : \"2011-01-26T19:01:12Z\",\n \"default_branch\" : \"master\",\n \"delete_branch_on_merge\" : true,\n \"deployments_url\" : \"https://api.github.com/repos/octocat/Hello-World/deployments\",\n \"description\" : \"This your first repo!\",\n \"disabled\" : false,\n \"downloads_url\" : \"https://api.github.com/repos/octocat/Hello-World/downloads\",\n \"events_url\" : \"https://api.github.com/repos/octocat/Hello-World/events\",\n \"fork\" : false,\n \"forks\" : 1,\n \"forks_count\" : 9,\n \"forks_url\" : \"https://api.github.com/repos/octocat/Hello-World/forks\",\n \"full_name\" : \"octocat/Hello-World\",\n \"git_commits_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/commits{/sha}\",\n \"git_refs_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/refs{/sha}\",\n \"git_tags_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/tags{/sha}\",\n \"git_url\" : \"git:github.com/octocat/Hello-World.git\",\n \"has_downloads\" : true,\n \"has_issues\" : true,\n \"has_pages\" : false,\n \"has_projects\" : true,\n \"has_wiki\" : true,\n \"homepage\" : \"https://github.com\",\n \"hooks_url\" : \"https://api.github.com/repos/octocat/Hello-World/hooks\",\n \"html_url\" : \"https://github.com/octocat/Hello-World\",\n \"id\" : 1296269,\n \"is_template\" : true,\n \"issue_comment_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/comments{/number}\",\n \"issue_events_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/events{/number}\",\n \"issues_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues{/number}\",\n \"keys_url\" : \"https://api.github.com/repos/octocat/Hello-World/keys{/key_id}\",\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World/labels{/name}\",\n \"languages_url\" : \"https://api.github.com/repos/octocat/Hello-World/languages\",\n \"license\" : {\n \"html_url\" : \"https://github.com/licenses/mit\",\n \"key\" : \"mit\",\n \"name\" : \"MIT License\",\n \"node_id\" : \"MDc6TGljZW5zZW1pdA==\",\n \"spdx_id\" : \"MIT\",\n \"url\" : \"https://api.github.com/licenses/mit\"\n },\n \"merges_url\" : \"https://api.github.com/repos/octocat/Hello-World/merges\",\n \"milestones_url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones{/number}\",\n \"mirror_url\" : \"git:git.example.com/octocat/Hello-World\",\n \"name\" : \"Hello-World\",\n \"network_count\" : 0,\n \"node_id\" : \"MDEwOlJlcG9zaXRvcnkxMjk2MjY5\",\n \"notifications_url\" : \"https://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating}\",\n \"open_issues\" : 1,\n \"open_issues_count\" : 0,\n \"owner\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"permissions\" : {\n \"admin\" : false,\n \"pull\" : true,\n \"push\" : false\n },\n \"private\" : false,\n \"pulls_url\" : \"https://api.github.com/repos/octocat/Hello-World/pulls{/number}\",\n \"pushed_at\" : \"2011-01-26T19:06:43Z\",\n \"releases_url\" : \"https://api.github.com/repos/octocat/Hello-World/releases{/id}\",\n \"size\" : 108,\n \"ssh_url\" : \"git@github.com:octocat/Hello-World.git\",\n \"stargazers_count\" : 80,\n \"stargazers_url\" : \"https://api.github.com/repos/octocat/Hello-World/stargazers\",\n \"statuses_url\" : \"https://api.github.com/repos/octocat/Hello-World/statuses/{sha}\",\n \"subscribers_count\" : 42,\n \"subscribers_url\" : \"https://api.github.com/repos/octocat/Hello-World/subscribers\",\n \"subscription_url\" : \"https://api.github.com/repos/octocat/Hello-World/subscription\",\n \"svn_url\" : \"https://svn.github.com/octocat/Hello-World\",\n \"tags_url\" : \"https://api.github.com/repos/octocat/Hello-World/tags\",\n \"teams_url\" : \"https://api.github.com/repos/octocat/Hello-World/teams\",\n \"temp_clone_token\" : \"ABTLWHOULUVAXGTRYU7OC2876QJ2O\",\n \"topics\" : [ \"octocat\", \"atom\", \"electron\", \"api\" ],\n \"trees_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/trees{/sha}\",\n \"updated_at\" : \"2011-01-26T19:14:43Z\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World\",\n \"visibility\" : \"public\",\n \"watchers\" : 1,\n \"watchers_count\" : 80\n} ]", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "cd2133a4-725f-4d10-acd2-0e7aab0308e5", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.340743Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "activity/list-repos-starred-by-user", + "schema": { + "anyOf": [ + { + "items": { + "$ref": "#/components/schemas/starred-repository" + }, + "type": "array" + }, + { + "items": { + "$ref": "#/components/schemas/repository" + }, + "type": "array" + } + ] + } + } + } + }, + "insertionIndex": 4 + }, + { + "id": "72f7e804-cc2e-4722-bb5c-40621cc8de59", + "name": "Promote a user to be a site administrator - 204", + "request": { + "urlPath": "/users/winford.collier/site_admin", + "method": "PUT" + }, + "response": { + "status": 204 + }, + "uuid": "72f7e804-cc2e-4722-bb5c-40621cc8de59", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.34065Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "enterprise-admin/promote-user-to-be-site-administrator" + } + } + }, + "insertionIndex": 5 + }, + { + "id": "49cf6ffe-d5ce-4dfc-acf2-057f5817a4d0", + "name": "Demote a site administrator - 204", + "request": { + "urlPath": "/users/man.hayes/site_admin", + "method": "DELETE" + }, + "response": { + "status": 204 + }, + "uuid": "49cf6ffe-d5ce-4dfc-acf2-057f5817a4d0", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.340609Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "enterprise-admin/demote-site-administrator" + } + } + }, + "insertionIndex": 6 + }, + { + "id": "a919cdc8-8779-47ea-8d24-de68f9529b4e", + "name": "List repositories for a user - default", + "request": { + "urlPath": "/users/china.ledner/repos", + "method": "GET" + }, + "response": { + "status": 200, + "body": "[ {\n \"archive_url\" : \"https://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref}\",\n \"archived\" : false,\n \"assignees_url\" : \"https://api.github.com/repos/octocat/Hello-World/assignees{/user}\",\n \"blobs_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/blobs{/sha}\",\n \"branches_url\" : \"https://api.github.com/repos/octocat/Hello-World/branches{/branch}\",\n \"clone_url\" : \"https://github.com/octocat/Hello-World.git\",\n \"collaborators_url\" : \"https://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator}\",\n \"comments_url\" : \"https://api.github.com/repos/octocat/Hello-World/comments{/number}\",\n \"commits_url\" : \"https://api.github.com/repos/octocat/Hello-World/commits{/sha}\",\n \"compare_url\" : \"https://api.github.com/repos/octocat/Hello-World/compare/{base}...{head}\",\n \"contents_url\" : \"https://api.github.com/repos/octocat/Hello-World/contents/{+path}\",\n \"contributors_url\" : \"https://api.github.com/repos/octocat/Hello-World/contributors\",\n \"created_at\" : \"2011-01-26T19:01:12Z\",\n \"default_branch\" : \"master\",\n \"deployments_url\" : \"https://api.github.com/repos/octocat/Hello-World/deployments\",\n \"description\" : \"This your first repo!\",\n \"disabled\" : false,\n \"downloads_url\" : \"https://api.github.com/repos/octocat/Hello-World/downloads\",\n \"events_url\" : \"https://api.github.com/repos/octocat/Hello-World/events\",\n \"fork\" : false,\n \"forks_count\" : 9,\n \"forks_url\" : \"https://api.github.com/repos/octocat/Hello-World/forks\",\n \"full_name\" : \"octocat/Hello-World\",\n \"git_commits_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/commits{/sha}\",\n \"git_refs_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/refs{/sha}\",\n \"git_tags_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/tags{/sha}\",\n \"git_url\" : \"git:github.com/octocat/Hello-World.git\",\n \"has_downloads\" : true,\n \"has_issues\" : true,\n \"has_pages\" : false,\n \"has_projects\" : true,\n \"has_wiki\" : true,\n \"homepage\" : \"https://github.com\",\n \"hooks_url\" : \"https://api.github.com/repos/octocat/Hello-World/hooks\",\n \"html_url\" : \"https://github.com/octocat/Hello-World\",\n \"id\" : 1296269,\n \"is_template\" : false,\n \"issue_comment_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/comments{/number}\",\n \"issue_events_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/events{/number}\",\n \"issues_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues{/number}\",\n \"keys_url\" : \"https://api.github.com/repos/octocat/Hello-World/keys{/key_id}\",\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World/labels{/name}\",\n \"languages_url\" : \"https://api.github.com/repos/octocat/Hello-World/languages\",\n \"merges_url\" : \"https://api.github.com/repos/octocat/Hello-World/merges\",\n \"milestones_url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones{/number}\",\n \"mirror_url\" : \"git:git.example.com/octocat/Hello-World\",\n \"name\" : \"Hello-World\",\n \"node_id\" : \"MDEwOlJlcG9zaXRvcnkxMjk2MjY5\",\n \"notifications_url\" : \"https://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating}\",\n \"open_issues_count\" : 0,\n \"owner\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"permissions\" : {\n \"admin\" : false,\n \"pull\" : true,\n \"push\" : false\n },\n \"private\" : false,\n \"pulls_url\" : \"https://api.github.com/repos/octocat/Hello-World/pulls{/number}\",\n \"pushed_at\" : \"2011-01-26T19:06:43Z\",\n \"releases_url\" : \"https://api.github.com/repos/octocat/Hello-World/releases{/id}\",\n \"size\" : 108,\n \"ssh_url\" : \"git@github.com:octocat/Hello-World.git\",\n \"stargazers_count\" : 80,\n \"stargazers_url\" : \"https://api.github.com/repos/octocat/Hello-World/stargazers\",\n \"statuses_url\" : \"https://api.github.com/repos/octocat/Hello-World/statuses/{sha}\",\n \"subscribers_url\" : \"https://api.github.com/repos/octocat/Hello-World/subscribers\",\n \"subscription_url\" : \"https://api.github.com/repos/octocat/Hello-World/subscription\",\n \"svn_url\" : \"https://svn.github.com/octocat/Hello-World\",\n \"tags_url\" : \"https://api.github.com/repos/octocat/Hello-World/tags\",\n \"teams_url\" : \"https://api.github.com/repos/octocat/Hello-World/teams\",\n \"template_repository\" : {\n \"allow_merge_commit\" : true,\n \"allow_rebase_merge\" : true,\n \"allow_squash_merge\" : true,\n \"archive_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/{archive_format}{/ref}\",\n \"archived\" : false,\n \"assignees_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/assignees{/user}\",\n \"blobs_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/git/blobs{/sha}\",\n \"branches_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/branches{/branch}\",\n \"clone_url\" : \"https://github.com/octocat/Hello-World-Template.git\",\n \"collaborators_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/collaborators{/collaborator}\",\n \"comments_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/comments{/number}\",\n \"commits_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/commits{/sha}\",\n \"compare_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/compare/{base}...{head}\",\n \"contents_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/contents/{+path}\",\n \"contributors_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/contributors\",\n \"created_at\" : \"2011-01-26T19:01:12Z\",\n \"default_branch\" : \"master\",\n \"delete_branch_on_merge\" : true,\n \"deployments_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/deployments\",\n \"description\" : \"This your first repo!\",\n \"disabled\" : false,\n \"downloads_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/downloads\",\n \"events_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/events\",\n \"fork\" : false,\n \"forks\" : 9,\n \"forks_count\" : 9,\n \"forks_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/forks\",\n \"full_name\" : \"octocat/Hello-World-Template\",\n \"git_commits_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/git/commits{/sha}\",\n \"git_refs_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/git/refs{/sha}\",\n \"git_tags_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/git/tags{/sha}\",\n \"git_url\" : \"git:github.com/octocat/Hello-World-Template.git\",\n \"has_downloads\" : true,\n \"has_issues\" : true,\n \"has_pages\" : false,\n \"has_projects\" : true,\n \"has_wiki\" : true,\n \"homepage\" : \"https://github.com\",\n \"hooks_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/hooks\",\n \"html_url\" : \"https://github.com/octocat/Hello-World-Template\",\n \"id\" : 1296269,\n \"is_template\" : true,\n \"issue_comment_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/issues/comments{/number}\",\n \"issue_events_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/issues/events{/number}\",\n \"issues_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/issues{/number}\",\n \"keys_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/keys{/key_id}\",\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/labels{/name}\",\n \"languages_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/languages\",\n \"license\" : {\n \"html_url\" : \"https://api.github.com/licenses/mit\",\n \"key\" : \"mit\",\n \"name\" : \"MIT License\",\n \"node_id\" : \"MDc6TGljZW5zZW1pdA==\",\n \"spdx_id\" : \"MIT\",\n \"url\" : \"https://api.github.com/licenses/mit\"\n },\n \"merges_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/merges\",\n \"milestones_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/milestones{/number}\",\n \"mirror_url\" : \"git:git.example.com/octocat/Hello-World-Template\",\n \"name\" : \"Hello-World-Template\",\n \"network_count\" : 0,\n \"node_id\" : \"MDEwOlJlcG9zaXRvcnkxMjk2MjY5\",\n \"notifications_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/notifications{?since,all,participating}\",\n \"open_issues\" : 0,\n \"open_issues_count\" : 0,\n \"owner\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"permissions\" : {\n \"admin\" : false,\n \"pull\" : true,\n \"push\" : false\n },\n \"private\" : false,\n \"pulls_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/pulls{/number}\",\n \"pushed_at\" : \"2011-01-26T19:06:43Z\",\n \"releases_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/releases{/id}\",\n \"size\" : 108,\n \"ssh_url\" : \"git@github.com:octocat/Hello-World-Template.git\",\n \"stargazers_count\" : 80,\n \"stargazers_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/stargazers\",\n \"statuses_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/statuses/{sha}\",\n \"subscribers_count\" : 42,\n \"subscribers_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/subscribers\",\n \"subscription_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/subscription\",\n \"svn_url\" : \"https://svn.github.com/octocat/Hello-World-Template\",\n \"tags_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/tags\",\n \"teams_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/teams\",\n \"temp_clone_token\" : \"ABTLWHOULUVAXGTRYU7OC2876QJ2O\",\n \"topics\" : [ \"octocat\", \"atom\", \"electron\", \"api\" ],\n \"trees_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/git/trees{/sha}\",\n \"updated_at\" : \"2011-01-26T19:14:43Z\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World-Template\",\n \"visibility\" : \"public\",\n \"watchers\" : 80,\n \"watchers_count\" : 80\n },\n \"topics\" : [ \"octocat\", \"atom\", \"electron\", \"api\" ],\n \"trees_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/trees{/sha}\",\n \"updated_at\" : \"2011-01-26T19:14:43Z\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World\",\n \"visibility\" : \"public\",\n \"watchers_count\" : 80\n} ]", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "a919cdc8-8779-47ea-8d24-de68f9529b4e", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.340565Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/list-for-user", + "schema": { + "items": { + "$ref": "#/components/schemas/minimal-repository" + }, + "type": "array" + } + } + } + }, + "insertionIndex": 7 + }, + { + "id": "ef331356-0bd3-480f-b2d6-fcd719f71902", + "name": "List public events received by a user", + "request": { + "urlPath": "/users/clair.bahringer/received_events/public", + "method": "GET" + }, + "response": { + "status": 200, + "body": "[ {\n \"actor\" : {\n \"display_login\" : \"3vv9in8smo7vb6dfi2e0xmrqepcs4lwqop6rczql2vxtg2ts75dx6ymm95sh7ikyqjyq2omohmbyek1c0eywultxppqlmd5368tfcplt7y7w5bdbsxauc6hwu6oyn0cgolx\",\n \"avatar_url\" : \"https://s3.amazonaws.com/uifaces/faces/twitter/adityasutomo/128.jpg\",\n \"id\" : 8584996813463196877,\n \"login\" : \"kzzjwnpdwslz9pzf7npyqmnnact8swn2kl1xy6owwiivpty2xt77mn3df6rfv7ekt8zx8a9my2biuz1laqesz86fcdc0mqapksl4pgli38sxbsz8vevqqoajac\",\n \"gravatar_id\" : \"4kag\",\n \"url\" : \"https://web.example.mocklab.io/089152\"\n },\n \"public\" : true,\n \"org\" : {\n \"display_login\" : \"n9i8snsmdlti6xzolzn6g4ut87pqkb1u0esn18t6m16dz4lpxjouhce0n7cvhn5vkjqdfhtpz10wgdm0eazf2fmdk9dyiehvwgbic269kvi0ezqv8mb2n4ace7hrskhm2ljjq8tch68okjlm4l5t7wqtv4b7eer0omjjpvz3j1\",\n \"avatar_url\" : \"https://s3.amazonaws.com/uifaces/faces/twitter/heykenneth/128.jpg\",\n \"id\" : 2803841394619410843,\n \"login\" : \"772jynsb4nqr5fo9exqfqqnsptcixfzjpe7hmycaaa887b9ao4b93i7fjvzq3j55ou1cb5qpe41kcs9n979nct\",\n \"gravatar_id\" : \"ho4o\",\n \"url\" : \"https://web.example.mocklab.io/249164\"\n },\n \"payload\" : {\n \"pages\" : [ {\n \"summary\" : \"Optio autem magni aperiam molestias. Cupiditate perferendis debitis sunt exercitationem aut. Veritatis beatae aliquid. Aut quo id aliquam autem sed et qui.\",\n \"html_url\" : \"https://web.example.mocklab.io/175874\",\n \"page_name\" : \"Elliott Ortiz\",\n \"action\" : \"d0vf1bx9ebss1rjdmostjkfhwl\",\n \"title\" : \"Fugiat sunt aut est error illum.\",\n \"sha\" : \"5vihzul1p16pp8xebrvi7kjtv1ubygb3qlvn3imd2mys59jgg5979un75ye547\"\n }, {\n \"summary\" : \"Consequatur recusandae tenetur esse. Quibusdam officia et ratione necessitatibus. Veniam sed ipsum. Dolore qui reiciendis rerum. Vel quos recusandae ipsam.\",\n \"html_url\" : \"https://web.example.mocklab.io/337742\",\n \"page_name\" : \"Wilton Zulauf\",\n \"action\" : \"nizr9eio22wpa5t7wq59bjvzv5qwmetsyrp0vm801l1e0ajc92te79wr3noychc26zjdyr66rgomos1ci436elbrsko8yni0w8tgxf6l087nx7vmvki0q3xj2s33k5x7dk0nw40egpsr84578lgmxg9asra1t\",\n \"title\" : \"Officia omnis enim.\",\n \"sha\" : \"me4oy5dy7trfshqehhbryy21g9d\"\n }, {\n \"summary\" : \"Repellendus sunt ullam debitis. Est dolor non qui officiis quo pariatur. Culpa expedita et eos consectetur cumque sint facilis. Repellat ut ut ipsam sunt. Qui culpa dignissimos ex fugiat animi enim.\",\n \"html_url\" : \"https://web.example.mocklab.io/551209\",\n \"page_name\" : \"Roseanne Grant\",\n \"action\" : \"hi6\",\n \"title\" : \"Excepturi suscipit quo voluptatem.\",\n \"sha\" : \"acb0a7rkb4gxovsaaajl1fhs406omuxuw3eqnm0qcywfxazjs8wriclj04ohi673yq1ihqk4loghuc2tb02takjlkq43yfsjk888clluks9weh209dqr4xv5jzfm2x47mp5frhxk4bafvxjl8wngdysj4ejq5c3xoyq3ffh\"\n } ],\n \"issue\" : {\n \"body_html\" : \"qg6d6d8d54irduynkgein12twmavwuzh9iq\",\n \"body_text\" : \"2vcaikdeowmrd1go54f0fo3ewtsmqlluuoty3e8ft0hvr6txlgfn3gea7shzunpsi7ahbvv440\",\n \"assignees\" : [ {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Lance Veum\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"3o5g0wnkw27wuvkbmk3aw9emf2fy7a1ycsczvvmdexlbbsheyyydf3za8hqm9ww2bgpfjolcu1uuioe10xpueh91p3marjpk2jcep87dkdvn0vvrmdatkzwtm748u7bcbm62ctgtpubwhdtdng2iax3q3i7uawwspp3lex4bgw778jyh3koto3gfh70qmn7e0v\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n }, {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Julissa Kulas\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"jsa6hdmjlh1hh6iqd4d0rk4c3dw72k3llo8c38uufqo7zixhvs8f2n81cpvyc8tslvc9l3au1un5oyqsao7e83vzbf3n7mugvpbjju42eny5xbprk9b9ox4drfx55v4qjjs4youcqzg5d556b3mlrw8ww1o\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n }, {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Amberly Larson\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"q2heby9oq8aoftf9m6esel6xwdwgvwlva4yghmovm7q84eqb7v6xfyh0u0d4q7ylvxthf2nab2e5qfj66xi06pz6ckxozoobdpvjotxvfijwskjfgcjxbx1q2z3mfnrc8zlsxnsfcc7jamqe93m9h22og37vl0z5otqyhk9cfj\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n }, {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Jeanmarie Shields\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"gleab74yio6sgqe6mnds0k6bvub32li0hxli3c0okq85xvquktf3d2blzol0e8wz91jxfvnvjhns0b3w0k\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n }, {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Dr. Annalee Adams\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"3142m3gdowpe0f8eliuqcnmuvgmc61va4aqw0vljujs1byieqsg66nwmxliqov8oi2cib4dqf7n755ks3gv1r27e659klo3ffqf67xcvugsi7ep5oi5eiy695c82id87hatnqm5p5epwrce80xd335u85dy4q5q7puosrch\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n }, {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Mr. Caryn Ankunding\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"kvy9fn3jyhpb1h0r20df5tp7wchtv8eq6igkugbo6cmpq8rij4gzrv03opbzgxgbvvdj4zdwbeex4t6kl48imzrsawidreodjng72iy3vnxqecsftgkgnmbme5nahz2iqxmwze6xkoo15wrzhhcg114\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n } ],\n \"created_at\" : \"2011-04-22T13:33:48Z\",\n \"body\" : \"I'm having a problem with this.\",\n \"repository\" : {\n \"allow_forking\" : true,\n \"anonymous_access_enabled\" : false,\n \"is_template\" : true,\n \"stargazers_count\" : 80,\n \"pushed_at\" : \"2011-01-26T19:06:43Z\",\n \"language\" : \"e8a7j011kssmbtzhbngzrt8752jkn3pkgi2uemm08t9rnfe\",\n \"subscription_url\" : \"http://api.github.com/repos/octocat/Hello-World/subscription\",\n \"branches_url\" : \"http://api.github.com/repos/octocat/Hello-World/branches{/branch}\",\n \"allow_rebase_merge\" : true,\n \"issue_comment_url\" : \"http://api.github.com/repos/octocat/Hello-World/issues/comments{/number}\",\n \"labels_url\" : \"http://api.github.com/repos/octocat/Hello-World/labels{/name}\",\n \"permissions\" : {\n \"pull\" : true,\n \"maintain\" : true,\n \"admin\" : true,\n \"triage\" : true,\n \"push\" : false\n },\n \"subscribers_url\" : \"http://api.github.com/repos/octocat/Hello-World/subscribers\",\n \"releases_url\" : \"http://api.github.com/repos/octocat/Hello-World/releases{/id}\",\n \"svn_url\" : \"https://svn.github.com/octocat/Hello-World\",\n \"subscribers_count\" : 1066039335475275340,\n \"id\" : 42,\n \"master_branch\" : \"cszifuc8hjrtslu\",\n \"forks\" : 8766208231983431683,\n \"allow_merge_commit\" : true,\n \"archive_url\" : \"http://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref}\",\n \"git_refs_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/refs{/sha}\",\n \"forks_url\" : \"http://api.github.com/repos/octocat/Hello-World/forks\",\n \"visibility\" : \"jakcywrp1fjhbljl65cpwaohs19rw95y5druk80c9t4fdd9tu9vga61k8xr5d1pfv8l2kd6hyr5z2qs00gqiqxprw4w40hdkific0rdjdsed8\",\n \"statuses_url\" : \"http://api.github.com/repos/octocat/Hello-World/statuses/{sha}\",\n \"network_count\" : 5946062096375866856,\n \"ssh_url\" : \"git@github.com:octocat/Hello-World.git\",\n \"license\" : {\n \"html_url\" : \"https://web.example.mocklab.io/632448\",\n \"name\" : \"MIT License\",\n \"spdx_id\" : \"MIT\",\n \"key\" : \"mit\",\n \"url\" : \"https://api.github.com/licenses/mit\",\n \"node_id\" : \"MDc6TGljZW5zZW1pdA==\"\n },\n \"full_name\" : \"octocat/Hello-World\",\n \"size\" : 108,\n \"template_repository\" : {\n \"anonymous_access_enabled\" : false,\n \"is_template\" : false,\n \"stargazers_count\" : 153510686650163777,\n \"pushed_at\" : \"ac5d0crw82y136ymwcpbd9ym9vijruhsmbdidbz7uprd2ak13\",\n \"language\" : \"1a2luctqf4ehl1cvn6lveckql2q62s04yyj7gaet82lwv9uhwh6xxiqi7mofcwxwm59nvdyb8v6ffk0tdd2xspl82dminv1cty0oj8xqnz939jypidobu0xp603wtzrymhrgnurpt3h8xi97fl1y6te389f0o27kp3739udk36bcbk\",\n \"subscription_url\" : \"https://web.example.mocklab.io/164727\",\n \"branches_url\" : \"https://web.example.mocklab.io/594242\",\n \"allow_rebase_merge\" : true,\n \"issue_comment_url\" : \"https://web.example.mocklab.io/504012\",\n \"labels_url\" : \"https://web.example.mocklab.io/916001\",\n \"permissions\" : { },\n \"subscribers_url\" : \"https://web.example.mocklab.io/243989\",\n \"releases_url\" : \"https://web.example.mocklab.io/769608\",\n \"svn_url\" : \"https://web.example.mocklab.io/332881\",\n \"subscribers_count\" : 191133626546957400,\n \"id\" : 1693708046427162025,\n \"allow_merge_commit\" : true,\n \"archive_url\" : \"https://web.example.mocklab.io/710007\",\n \"git_refs_url\" : \"https://web.example.mocklab.io/969980\",\n \"forks_url\" : \"https://web.example.mocklab.io/948583\",\n \"visibility\" : \"8evktxjmorywtnlzst9sitwf1861914130824z7fmb0inprjl2ix16jhspne0w7ajhabf53w381vldkftheepd0sb70dph194qdftzqj1yzw3xvzkh25unbhid1\",\n \"statuses_url\" : \"https://web.example.mocklab.io/613731\",\n \"network_count\" : 2088533309734054304,\n \"ssh_url\" : \"https://web.example.mocklab.io/076484\",\n \"full_name\" : \"Mrs. Delphia Jerde\",\n \"size\" : 8816345174825882153,\n \"languages_url\" : \"https://web.example.mocklab.io/511861\",\n \"clone_url\" : \"https://web.example.mocklab.io/487221\",\n \"collaborators_url\" : \"https://web.example.mocklab.io/022156\",\n \"html_url\" : \"https://web.example.mocklab.io/198128\",\n \"name\" : \"Genia Gutkowski\",\n \"pulls_url\" : \"https://web.example.mocklab.io/430780\",\n \"default_branch\" : \"csynuuoedub6bm093731t5b282q6ex5rvjy9j7ovamocjuyn8cakeu1yp6zl01vhbbohtgcfkun9\",\n \"hooks_url\" : \"https://web.example.mocklab.io/659367\",\n \"trees_url\" : \"https://web.example.mocklab.io/717325\",\n \"tags_url\" : \"https://web.example.mocklab.io/913363\",\n \"contributors_url\" : \"https://web.example.mocklab.io/563854\",\n \"private\" : false,\n \"has_downloads\" : true,\n \"notifications_url\" : \"https://web.example.mocklab.io/248541\",\n \"open_issues_count\" : 7451781034670758518,\n \"created_at\" : \"5lxqhw6liib2h4xa4jog6rucgy2t4wk5umczqcssv19ftngkv7p4z6pwj5qku\",\n \"description\" : \"Quibusdam animi repellendus. Inventore quia aut sed delectus illum sunt sunt. Amet neque voluptatem excepturi harum in. Doloribus et sapiente quaerat distinctio qui non unde. Aspernatur voluptatem rei\",\n \"deployments_url\" : \"https://web.example.mocklab.io/288261\",\n \"keys_url\" : \"https://web.example.mocklab.io/079668\",\n \"has_projects\" : true,\n \"archived\" : true,\n \"has_wiki\" : false,\n \"updated_at\" : \"2023-01-18T06:42:59.292662Z\",\n \"comments_url\" : \"https://web.example.mocklab.io/506521\",\n \"stargazers_url\" : \"https://web.example.mocklab.io/299167\",\n \"disabled\" : true,\n \"delete_branch_on_merge\" : false,\n \"git_url\" : \"https://web.example.mocklab.io/226546\",\n \"has_pages\" : false,\n \"owner\" : { },\n \"allow_squash_merge\" : true,\n \"commits_url\" : \"https://web.example.mocklab.io/418611\",\n \"compare_url\" : \"https://web.example.mocklab.io/775176\",\n \"git_commits_url\" : \"https://web.example.mocklab.io/701541\",\n \"topics\" : [ \"9hip5b6aftoqzndey1afz1d568qxivfifihh36nj8mkpcf\", \"o9oa925ngpok67t072k6c60o7zkc98qy73ozc1i7klijpnh24qy6jgom2zl34zhwz96j8r1v22vbepk98pw15g0dc3fa4shhvma3yh83xxrzqjypabr0vpxmqfaissnhpjsq87gmy3agg5c2j8xag8ax7k6f16m0z9495s82hngggw94\" ],\n \"blobs_url\" : \"https://web.example.mocklab.io/890136\",\n \"git_tags_url\" : \"https://web.example.mocklab.io/925188\",\n \"merges_url\" : \"https://web.example.mocklab.io/993719\",\n \"downloads_url\" : \"https://web.example.mocklab.io/025183\",\n \"has_issues\" : false,\n \"url\" : \"https://web.example.mocklab.io/589938\",\n \"contents_url\" : \"https://web.example.mocklab.io/250268\",\n \"mirror_url\" : \"https://web.example.mocklab.io/973225\",\n \"milestones_url\" : \"https://web.example.mocklab.io/535914\",\n \"teams_url\" : \"https://web.example.mocklab.io/494156\",\n \"fork\" : false,\n \"issues_url\" : \"https://web.example.mocklab.io/742773\",\n \"events_url\" : \"https://web.example.mocklab.io/291153\",\n \"issue_events_url\" : \"https://web.example.mocklab.io/614248\",\n \"assignees_url\" : \"https://web.example.mocklab.io/861460\",\n \"watchers_count\" : 7397574245116778133,\n \"forks_count\" : 2648593755380334830,\n \"homepage\" : \"0vlr068gd0c8akd7v\",\n \"node_id\" : \"w25u\"\n },\n \"languages_url\" : \"http://api.github.com/repos/octocat/Hello-World/languages\",\n \"clone_url\" : \"https://github.com/octocat/Hello-World.git\",\n \"collaborators_url\" : \"http://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator}\",\n \"html_url\" : \"https://github.com/octocat/Hello-World\",\n \"name\" : \"Team Environment\",\n \"pulls_url\" : \"http://api.github.com/repos/octocat/Hello-World/pulls{/number}\",\n \"default_branch\" : \"master\",\n \"hooks_url\" : \"http://api.github.com/repos/octocat/Hello-World/hooks\",\n \"trees_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/trees{/sha}\",\n \"tags_url\" : \"http://api.github.com/repos/octocat/Hello-World/tags\",\n \"contributors_url\" : \"http://api.github.com/repos/octocat/Hello-World/contributors\",\n \"private\" : false,\n \"has_downloads\" : true,\n \"notifications_url\" : \"http://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating}\",\n \"open_issues_count\" : 0,\n \"created_at\" : \"2011-01-26T19:01:12Z\",\n \"description\" : \"This your first repo!\",\n \"watchers\" : 2730653043330262549,\n \"deployments_url\" : \"http://api.github.com/repos/octocat/Hello-World/deployments\",\n \"keys_url\" : \"http://api.github.com/repos/octocat/Hello-World/keys{/key_id}\",\n \"has_projects\" : true,\n \"archived\" : false,\n \"has_wiki\" : true,\n \"updated_at\" : \"2011-01-26T19:14:43Z\",\n \"comments_url\" : \"http://api.github.com/repos/octocat/Hello-World/comments{/number}\",\n \"stargazers_url\" : \"http://api.github.com/repos/octocat/Hello-World/stargazers\",\n \"disabled\" : true,\n \"delete_branch_on_merge\" : false,\n \"git_url\" : \"git:github.com/octocat/Hello-World.git\",\n \"has_pages\" : false,\n \"owner\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Chauncey Champlin\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"rn3srq5u77eel3wpkdxyo83e7ls5ulfr43c2s3yd12xu22yigzrl50n1jfuzmbrgj0z3m6s5m7yvlg1c7bo6d66yfc885lnxndg84eixeeqp9nq7m2x42s0pwh3v3fi0\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"allow_squash_merge\" : true,\n \"commits_url\" : \"http://api.github.com/repos/octocat/Hello-World/commits{/sha}\",\n \"compare_url\" : \"http://api.github.com/repos/octocat/Hello-World/compare/{base}...{head}\",\n \"git_commits_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/commits{/sha}\",\n \"topics\" : [ \"lxvs42ima8u05jea7p668rc7gvvvdkvrtm9poidraq278ezommdewskieualu16g01eaetalmfej2leoqvcl8hehl6z007l8aa6sx609xzl59z\" ],\n \"blobs_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/blobs{/sha}\",\n \"git_tags_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/tags{/sha}\",\n \"merges_url\" : \"http://api.github.com/repos/octocat/Hello-World/merges\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:42Z\\\"\",\n \"downloads_url\" : \"http://api.github.com/repos/octocat/Hello-World/downloads\",\n \"has_issues\" : true,\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World\",\n \"contents_url\" : \"http://api.github.com/repos/octocat/Hello-World/contents/{+path}\",\n \"mirror_url\" : \"git:git.example.com/octocat/Hello-World\",\n \"milestones_url\" : \"http://api.github.com/repos/octocat/Hello-World/milestones{/number}\",\n \"teams_url\" : \"http://api.github.com/repos/octocat/Hello-World/teams\",\n \"fork\" : true,\n \"issues_url\" : \"http://api.github.com/repos/octocat/Hello-World/issues{/number}\",\n \"events_url\" : \"http://api.github.com/repos/octocat/Hello-World/events\",\n \"issue_events_url\" : \"http://api.github.com/repos/octocat/Hello-World/issues/events{/number}\",\n \"organization\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Abigail Wuckert\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"40mr8x396vobz1ksqfc5v8qfm7dhzcwztlxxns\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"assignees_url\" : \"http://api.github.com/repos/octocat/Hello-World/assignees{/user}\",\n \"open_issues\" : 1833485620346971446,\n \"watchers_count\" : 80,\n \"forks_count\" : 9,\n \"homepage\" : \"https://github.com\",\n \"node_id\" : \"MDEwOlJlcG9zaXRvcnkxMjk2MjY5\"\n },\n \"title\" : \"Found a bug\",\n \"author_association\" : \"OWNER\",\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347/labels{/name}\",\n \"number\" : 1347,\n \"performed_via_github_app\" : {\n \"owner\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Ms. Dino Padberg\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"pq4fcjrjjl1qzemkjm4p0f87xndz6ofbtu23ygyqmqhpfvr2fy6zebh2xkv49bappzk32xrt1tthe70loclewb26o8m7t45joou77g9scwl40gr2291exl70o7gpuxxrb82pui2qvkyxcupaprfc\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"installations_count\" : 5,\n \"created_at\" : \"2017-07-08T16:18:44-04:00\",\n \"description\" : \"The description of the app.\",\n \"client_id\" : \"\\\"Iv1.25b5d1e65ffc4022\\\"\",\n \"external_url\" : \"https://example.com\",\n \"updated_at\" : \"2017-07-08T16:18:44-04:00\",\n \"permissions\" : {\n \"deployments\" : \"write\",\n \"issues\" : \"read\"\n },\n \"html_url\" : \"https://github.com/apps/super-ci\",\n \"name\" : \"Probot Owners\",\n \"pem\" : \"\\\"-----BEGIN RSA PRIVATE KEY-----\\\\nMIIEogIBAAKCAQEArYxrNYD/iT5CZVpRJu4rBKmmze3PVmT/gCo2ATUvDvZTPTey\\\\nxcGJ3vvrJXazKk06pN05TN29o98jrYz4cengG3YGsXPNEpKsIrEl8NhbnxapEnM9\\\\nJCMRe0P5JcPsfZlX6hmiT7136GRWiGOUba2X9+HKh8QJVLG5rM007TBER9/z9mWm\\\\nrJuNh+m5l320oBQY/Qq3A7wzdEfZw8qm/mIN0FCeoXH1L6B8xXWaAYBwhTEh6SSn\\\\nZHlO1Xu1JWDmAvBCi0RO5aRSKM8q9QEkvvHP4yweAtK3N8+aAbZ7ovaDhyGz8r6r\\\\nzhU1b8Uo0Z2ysf503WqzQgIajr7Fry7/kUwpgQIDAQABAoIBADwJp80Ko1xHPZDy\\\\nfcCKBDfIuPvkmSW6KumbsLMaQv1aGdHDwwTGv3t0ixSay8CGlxMRtRDyZPib6SvQ\\\\n6OH/lpfpbMdW2ErkksgtoIKBVrDilfrcAvrNZu7NxRNbhCSvN8q0s4ICecjbbVQh\\\\nnueSdlA6vGXbW58BHMq68uRbHkP+k+mM9U0mDJ1HMch67wlg5GbayVRt63H7R2+r\\\\nVxcna7B80J/lCEjIYZznawgiTvp3MSanTglqAYi+m1EcSsP14bJIB9vgaxS79kTu\\\\noiSo93leJbBvuGo8QEiUqTwMw4tDksmkLsoqNKQ1q9P7LZ9DGcujtPy4EZsamSJT\\\\ny8OJt0ECgYEA2lxOxJsQk2kI325JgKFjo92mQeUObIvPfSNWUIZQDTjniOI6Gv63\\\\nGLWVFrZcvQBWjMEQraJA9xjPbblV8PtfO87MiJGLWCHFxmPz2dzoedN+2Coxom8m\\\\nV95CLz8QUShuao6u/RYcvUaZEoYs5bHcTmy5sBK80JyEmafJPtCQVxMCgYEAy3ar\\\\nZr3yv4xRPEPMat4rseswmuMooSaK3SKub19WFI5IAtB/e7qR1Rj9JhOGcZz+OQrl\\\\nT78O2OFYlgOIkJPvRMrPpK5V9lslc7tz1FSh3BZMRGq5jSyD7ETSOQ0c8T2O/s7v\\\\nbeEPbVbDe4mwvM24XByH0GnWveVxaDl51ABD65sCgYB3ZAspUkOA5egVCh8kNpnd\\\\nSd6SnuQBE3ySRlT2WEnCwP9Ph6oPgn+oAfiPX4xbRqkL8q/k0BdHQ4h+zNwhk7+h\\\\nWtPYRAP1Xxnc/F+jGjb+DVaIaKGU18MWPg7f+FI6nampl3Q0KvfxwX0GdNhtio8T\\\\nTj1E+SnFwh56SRQuxSh2gwKBgHKjlIO5NtNSflsUYFM+hyQiPiqnHzddfhSG+/3o\\\\nm5nNaSmczJesUYreH5San7/YEy2UxAugvP7aSY2MxB+iGsiJ9WD2kZzTUlDZJ7RV\\\\nUzWsoqBR+eZfVJ2FUWWvy8TpSG6trh4dFxImNtKejCR1TREpSiTV3Zb1dmahK9GV\\\\nrK9NAoGAbBxRLoC01xfxCTgt5BDiBcFVh4fp5yYKwavJPLzHSpuDOrrI9jDn1oKN\\\\nonq5sDU1i391zfQvdrbX4Ova48BN+B7p63FocP/MK5tyyBoT8zQEk2+vWDOw7H/Z\\\\nu5dTCPxTIsoIwUw1I+7yIxqJzLPFgR2gVBwY1ra/8iAqCj+zeBw=\\\\n-----END RSA PRIVATE KEY-----\\\\n\\\"\",\n \"webhook_secret\" : \"\\\"6fba8f2fc8a7e8f2cca5577eddd82ca7586b3b6b\\\"\",\n \"client_secret\" : \"\\\"1d4b2097ac622ba702d19de498f005747a8b21d3\\\"\",\n \"id\" : 37,\n \"events\" : [ \"label\", \"deployment\" ],\n \"slug\" : \"probot-owners\",\n \"node_id\" : \"MDExOkludGVncmF0aW9uMQ==\"\n },\n \"updated_at\" : \"2011-04-22T13:33:48Z\",\n \"comments_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347/comments\",\n \"active_lock_reason\" : \"too heated\",\n \"id\" : 1,\n \"repository_url\" : \"https://api.github.com/repos/octocat/Hello-World\",\n \"state\" : \"open\",\n \"locked\" : true,\n \"timeline_url\" : \"https://web.example.mocklab.io/167734\",\n \"pull_request\" : {\n \"patch_url\" : \"https://web.example.mocklab.io/148923\",\n \"html_url\" : \"https://web.example.mocklab.io/347879\",\n \"merged_at\" : \"2022-05-19T19:51:08.294Z\",\n \"diff_url\" : \"https://web.example.mocklab.io/236475\",\n \"url\" : \"https://web.example.mocklab.io/155081\"\n },\n \"closed_at\" : \"2023-10-03T16:41:10.294Z\",\n \"comments\" : 0,\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347\",\n \"labels\" : [ {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n }, {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n }, {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n }, {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n }, {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n } ],\n \"milestone\" : {\n \"creator\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Ok Baumbach\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"solp1dvjd4klg3ngoazy58fhla5343fwd53zw0jq2u5ujv1kjmhzpg6uyhh1ddl8oepsih6f0f6nft9q74ktirwrpm52o9rpeyrszofad5pkifu04ue5w\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"closed_at\" : \"2013-02-12T13:22:01Z\",\n \"created_at\" : \"2011-04-10T20:09:31Z\",\n \"description\" : \"Tracking milestone for version 1.0\",\n \"closed_issues\" : 8,\n \"title\" : \"v1.0\",\n \"due_on\" : \"2012-10-09T23:39:01Z\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones/1\",\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones/1/labels\",\n \"number\" : 42,\n \"updated_at\" : \"2014-03-03T18:58:10Z\",\n \"html_url\" : \"https://github.com/octocat/Hello-World/milestones/v1.0\",\n \"id\" : 1002604,\n \"state\" : \"open\",\n \"open_issues\" : 4,\n \"node_id\" : \"MDk6TWlsZXN0b25lMTAwMjYwNA==\"\n },\n \"events_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347/events\",\n \"html_url\" : \"https://github.com/octocat/Hello-World/issues/1347\",\n \"assignee\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Dan Altenwerth\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"x3387ih1f2pxjql9hzptdvc1yp1wjrrtmze3fhtnu944qam31u1g9pr999h26osjqqznz20ieo65a081j61mnig3ro4s5eksnt0h8kj5jre2c6jlvsnc8jq4h5lobsegbnowudunln1lru2u5ziq79yq1h0ghnff\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"user\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"wilton.predovic\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"9apvkvckix9gq4x1gegx6mkxsgwbu3crzjp22kon1pow895txfxsi9r0knfb0ft8o98vltfcqd0ykct8iax34h77\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"node_id\" : \"MDU6SXNzdWUx\"\n },\n \"action\" : \"8y1n519374n6u595x7vwxjixb5zbjxohd06c0c5b6p1d0wp6eehn7\",\n \"comment\" : {\n \"issue_url\" : \"https://web.example.mocklab.io/097226\",\n \"body_html\" : \"i3vciprnorf23uxnftjczs0ghd8zkyb6ubuhk5r9rd5i4z1dlngojpcr4dd0vyyimg52n52y7pfvxe41oviebhdk2hpau95d1tkmhiu4rdtg839hch6tb4mrlf7jicqnb1mtov0pzq0atlu5dyitapy7fo3a6uo00ubj550ev9bomgyr7\",\n \"body_text\" : \"ubo6hhhais2dksu0iz5b1d2bjg9pr3ezb9fpthl2jl21hobnkwvoas0b176uf0en2v2x40z72qp8nar3mnhxgc664x41w20oggskry71md7q9xedp4j24k9vo2ekrxe8tmf0cyl3glzcz2c0kfdw4d0ja9i8w6yo8zgbtw\",\n \"created_at\" : \"2011-04-14T16:00:49Z\",\n \"body\" : \"What version of Safari were you using when you observed this bug?\",\n \"url\" : \"https://api.github.com/repositories/42/issues/comments/1\",\n \"author_association\" : \"OWNER\",\n \"performed_via_github_app\" : {\n \"owner\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Refugio Wyman\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"7gt24wjilpnopxocm75nbfxk8oi95486kvjheg\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"installations_count\" : 5,\n \"created_at\" : \"2017-07-08T16:18:44-04:00\",\n \"description\" : \"The description of the app.\",\n \"client_id\" : \"\\\"Iv1.25b5d1e65ffc4022\\\"\",\n \"external_url\" : \"https://example.com\",\n \"updated_at\" : \"2017-07-08T16:18:44-04:00\",\n \"permissions\" : {\n \"deployments\" : \"write\",\n \"issues\" : \"read\"\n },\n \"html_url\" : \"https://github.com/apps/super-ci\",\n \"name\" : \"Probot Owners\",\n \"pem\" : \"\\\"-----BEGIN RSA PRIVATE KEY-----\\\\nMIIEogIBAAKCAQEArYxrNYD/iT5CZVpRJu4rBKmmze3PVmT/gCo2ATUvDvZTPTey\\\\nxcGJ3vvrJXazKk06pN05TN29o98jrYz4cengG3YGsXPNEpKsIrEl8NhbnxapEnM9\\\\nJCMRe0P5JcPsfZlX6hmiT7136GRWiGOUba2X9+HKh8QJVLG5rM007TBER9/z9mWm\\\\nrJuNh+m5l320oBQY/Qq3A7wzdEfZw8qm/mIN0FCeoXH1L6B8xXWaAYBwhTEh6SSn\\\\nZHlO1Xu1JWDmAvBCi0RO5aRSKM8q9QEkvvHP4yweAtK3N8+aAbZ7ovaDhyGz8r6r\\\\nzhU1b8Uo0Z2ysf503WqzQgIajr7Fry7/kUwpgQIDAQABAoIBADwJp80Ko1xHPZDy\\\\nfcCKBDfIuPvkmSW6KumbsLMaQv1aGdHDwwTGv3t0ixSay8CGlxMRtRDyZPib6SvQ\\\\n6OH/lpfpbMdW2ErkksgtoIKBVrDilfrcAvrNZu7NxRNbhCSvN8q0s4ICecjbbVQh\\\\nnueSdlA6vGXbW58BHMq68uRbHkP+k+mM9U0mDJ1HMch67wlg5GbayVRt63H7R2+r\\\\nVxcna7B80J/lCEjIYZznawgiTvp3MSanTglqAYi+m1EcSsP14bJIB9vgaxS79kTu\\\\noiSo93leJbBvuGo8QEiUqTwMw4tDksmkLsoqNKQ1q9P7LZ9DGcujtPy4EZsamSJT\\\\ny8OJt0ECgYEA2lxOxJsQk2kI325JgKFjo92mQeUObIvPfSNWUIZQDTjniOI6Gv63\\\\nGLWVFrZcvQBWjMEQraJA9xjPbblV8PtfO87MiJGLWCHFxmPz2dzoedN+2Coxom8m\\\\nV95CLz8QUShuao6u/RYcvUaZEoYs5bHcTmy5sBK80JyEmafJPtCQVxMCgYEAy3ar\\\\nZr3yv4xRPEPMat4rseswmuMooSaK3SKub19WFI5IAtB/e7qR1Rj9JhOGcZz+OQrl\\\\nT78O2OFYlgOIkJPvRMrPpK5V9lslc7tz1FSh3BZMRGq5jSyD7ETSOQ0c8T2O/s7v\\\\nbeEPbVbDe4mwvM24XByH0GnWveVxaDl51ABD65sCgYB3ZAspUkOA5egVCh8kNpnd\\\\nSd6SnuQBE3ySRlT2WEnCwP9Ph6oPgn+oAfiPX4xbRqkL8q/k0BdHQ4h+zNwhk7+h\\\\nWtPYRAP1Xxnc/F+jGjb+DVaIaKGU18MWPg7f+FI6nampl3Q0KvfxwX0GdNhtio8T\\\\nTj1E+SnFwh56SRQuxSh2gwKBgHKjlIO5NtNSflsUYFM+hyQiPiqnHzddfhSG+/3o\\\\nm5nNaSmczJesUYreH5San7/YEy2UxAugvP7aSY2MxB+iGsiJ9WD2kZzTUlDZJ7RV\\\\nUzWsoqBR+eZfVJ2FUWWvy8TpSG6trh4dFxImNtKejCR1TREpSiTV3Zb1dmahK9GV\\\\nrK9NAoGAbBxRLoC01xfxCTgt5BDiBcFVh4fp5yYKwavJPLzHSpuDOrrI9jDn1oKN\\\\nonq5sDU1i391zfQvdrbX4Ova48BN+B7p63FocP/MK5tyyBoT8zQEk2+vWDOw7H/Z\\\\nu5dTCPxTIsoIwUw1I+7yIxqJzLPFgR2gVBwY1ra/8iAqCj+zeBw=\\\\n-----END RSA PRIVATE KEY-----\\\\n\\\"\",\n \"webhook_secret\" : \"\\\"6fba8f2fc8a7e8f2cca5577eddd82ca7586b3b6b\\\"\",\n \"client_secret\" : \"\\\"1d4b2097ac622ba702d19de498f005747a8b21d3\\\"\",\n \"id\" : 37,\n \"events\" : [ \"label\", \"deployment\" ],\n \"slug\" : \"probot-owners\",\n \"node_id\" : \"MDExOkludGVncmF0aW9uMQ==\"\n },\n \"updated_at\" : \"2011-04-14T16:00:49Z\",\n \"html_url\" : \"https://web.example.mocklab.io/168878\",\n \"reactions\" : {\n \"confused\" : 4734857146204897762,\n \"-1\" : 2506694728881153929,\n \"+1\" : 2303331368357129468,\n \"total_count\" : 5208159728685934060,\n \"rocket\" : 877496724111902934,\n \"hooray\" : 2241283576018481821,\n \"eyes\" : 2092313653265260361,\n \"heart\" : 320773052769215485,\n \"laugh\" : 8208058921758144154,\n \"url\" : \"https://web.example.mocklab.io/291602\"\n },\n \"id\" : 42,\n \"user\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"nickie.kunde\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"byd1imc7nvwacf5q3dkf2jnnpaiu5se0lk0sfl7qoejh9od7rjhnafuaatq4z1a9j7srm74yaj46l8yqxggyqaac3\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"node_id\" : \"fdn1\"\n }\n },\n \"repo\" : {\n \"name\" : \"Mrs. Wilson Bayer\",\n \"id\" : 7179515399985291738,\n \"url\" : \"https://web.example.mocklab.io/458890\"\n },\n \"created_at\" : \"2022-12-23T20:52:06.295Z\",\n \"id\" : \"37o2\",\n \"type\" : \"wnd\"\n}, {\n \"actor\" : {\n \"display_login\" : \"vyqtnx70t4xbpyjwg1o126d5dzwq16mmsigfptais9a5gpr9210ipr9cgspcshf13vb1yjlk289no6hnm3olvq8fal0ce9wsns1rkh8n7rje5htfr0ki28p7ydbn4oslxttwnkoqid9qgi6s3go9\",\n \"avatar_url\" : \"https://s3.amazonaws.com/uifaces/faces/twitter/Karimmove/128.jpg\",\n \"id\" : 7885163418535046661,\n \"login\" : \"qsxlydqarmdy40w5jjhfi6is6w87sqx08p8awywahr0tp6qahoe35mq6vks954cnonoyurym38aojd2ofkmp3is6pkx2p2q6ea77w26zeczk2zj09qv939phocnut4rjpdrbiitgp1bhv229ebwi1iohsfe5bewsp1xvp21tyriyt0ifnmxmtz\",\n \"gravatar_id\" : \"lmgu\",\n \"url\" : \"https://web.example.mocklab.io/245458\"\n },\n \"public\" : true,\n \"org\" : {\n \"display_login\" : \"xf3wyutdgn4egm3yfckzb1od76bz8arovl5rzqbwom53uv7kwdxyglasz3g27a0wdfqi9irc9vzhqt7gilfe4u6vyca7o3wd2up0f172u17vmf3i39mbt8vtb53f5r52uysths2yse858ifzczxt\",\n \"avatar_url\" : \"https://s3.amazonaws.com/uifaces/faces/twitter/derienzo777/128.jpg\",\n \"id\" : 6903998248448444252,\n \"login\" : \"dm5mtg7bimp5ofuxqyleosbjtprcr8r9nn3zf3ehecx0\",\n \"gravatar_id\" : \"50zl\",\n \"url\" : \"https://web.example.mocklab.io/383571\"\n },\n \"payload\" : {\n \"pages\" : [ {\n \"summary\" : \"Est alias repellendus temporibus voluptate sed enim. Vel eum corporis rerum. Dolorem quo eos aperiam. Quos saepe et. Dignissimos consequatur unde.\",\n \"html_url\" : \"https://web.example.mocklab.io/181874\",\n \"page_name\" : \"Ms. Floyd O'Kon\",\n \"action\" : \"xm5zuej4wxl7kqd9eonie8qonb0vej994dpnpwl5t5vrt3fprqej0xf6i9t6a1stc0sp6asucmdvhouvnrgokoqgxvq822sy9rpu4ic9cddbj1bjyfct5nkllc27rkfb7c9x09t5fuuybapi8huwpjp58ly\",\n \"title\" : \"Odio nisi nihil.\",\n \"sha\" : \"ovd33eutmtbcy5g7tia72lqdluo1lbyah0b8ljneijxdl4cq4bzieooc6xo1wqpdgq9rgl2d1lwe9rzcg3yis3adn5mnip91ha6oqhw39krltt6byaemwm0at1b6m6zziqi0po4xx225vlzqklwjqo2lzeji6v1w2473bsu1m2f\"\n }, {\n \"summary\" : \"Iste autem assumenda rerum atque. Dolor nam quasi pariatur nobis. Qui quo accusamus repudiandae. Qui sunt et. Optio eius commodi nulla corrupti voluptas nihil ducimus.\",\n \"html_url\" : \"https://web.example.mocklab.io/253072\",\n \"page_name\" : \"Aleen Russel I\",\n \"action\" : \"jyp5632cboh1ypbbairat0gxsau0zvo52ukcii4qj1aef8rbogoz07deein4knuog8w8km9afh4iq0\",\n \"title\" : \"Quia quas quos harum non saepe.\",\n \"sha\" : \"ya9c48\"\n } ],\n \"issue\" : {\n \"body_html\" : \"sn1une7k2nqntv8k63qmyssnu8ts3bozmrvofa5c5575o66izc5n14f3rktu3ueh82rpeeek582se7iumis7whc12ep0c1cgh\",\n \"body_text\" : \"ulla\",\n \"assignees\" : [ {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Diedra Kshlerin\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"3dwrkz4noftf6f9un5dluyil0j8edil7v6pay8xma6k\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n }, {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Keira Yost III\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"12eh578ib3v7cbwwj7ffg57jgnbsnc5o6fmskb1xpbcumm18cj31a0pazt04x\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n }, {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Alfredo Schaefer MD\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"ofusu5y3jnrsyxbmbu4tdxqn21c276bd0awyedppudyv9rqpqz5c3yayo7usivkdvy820sbjccgxd41m6ql76om07ct732ej9yucy5mu6khyldjwurapj1zhk7hb6qlydt5dqo5tbp9a11w0z\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n }, {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Talitha Kuphal\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"9lquuaf1cal2prpn6s9mrle3x9mu7365zvf91bqxqi69f2d6azm5qceqfpgitanqyo7teyr0boecjbdkx0xqm0a9ks7mg7nbqt50hjg1iud9dkhu430p5owdii0skhwqgiin13rgwtoizst3a3r90frx8but8ssv6mpe\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n }, {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Mel Ward IV\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"utw77abgo5u5w8jxzoo0qedg29285xdfie0t3sm8o3hamsrz2nlndtrtpxpfaaj9qwviugwvvrw76gbkcxk3yjgadyeolguewszeeizksexgmu6p7rxjlqqp53u98fa5vkqg5qlpsrmwcyd64krkm0hptxldtb858iwg8nsheqngu2qvp4b90mfum23ae\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n }, {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Maile Kutch\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"uoixzoyqu3hrdkagds0vosod4xws5vxa7h5lf7e50js2ekyuh6lbwss\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n } ],\n \"created_at\" : \"2011-04-22T13:33:48Z\",\n \"body\" : \"I'm having a problem with this.\",\n \"repository\" : {\n \"allow_forking\" : false,\n \"anonymous_access_enabled\" : true,\n \"is_template\" : true,\n \"stargazers_count\" : 80,\n \"pushed_at\" : \"2011-01-26T19:06:43Z\",\n \"language\" : \"esmax0fyb03ra6k6pbzueuz445boka3feblat7ixb5jt\",\n \"subscription_url\" : \"http://api.github.com/repos/octocat/Hello-World/subscription\",\n \"branches_url\" : \"http://api.github.com/repos/octocat/Hello-World/branches{/branch}\",\n \"allow_rebase_merge\" : true,\n \"issue_comment_url\" : \"http://api.github.com/repos/octocat/Hello-World/issues/comments{/number}\",\n \"labels_url\" : \"http://api.github.com/repos/octocat/Hello-World/labels{/name}\",\n \"permissions\" : {\n \"pull\" : true,\n \"maintain\" : true,\n \"admin\" : false,\n \"triage\" : false,\n \"push\" : true\n },\n \"subscribers_url\" : \"http://api.github.com/repos/octocat/Hello-World/subscribers\",\n \"releases_url\" : \"http://api.github.com/repos/octocat/Hello-World/releases{/id}\",\n \"svn_url\" : \"https://svn.github.com/octocat/Hello-World\",\n \"subscribers_count\" : 753365844715409168,\n \"id\" : 42,\n \"master_branch\" : \"fl43uyb1672\",\n \"forks\" : 3878239324802934447,\n \"allow_merge_commit\" : true,\n \"archive_url\" : \"http://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref}\",\n \"git_refs_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/refs{/sha}\",\n \"forks_url\" : \"http://api.github.com/repos/octocat/Hello-World/forks\",\n \"visibility\" : \"opz0z5ypmmacueyzcectbgm85frx79k3d1yhhaoikt6v3fa47borwn6a1lxk8jeouw5l15vqqrgy46jg7hn\",\n \"statuses_url\" : \"http://api.github.com/repos/octocat/Hello-World/statuses/{sha}\",\n \"network_count\" : 4713242827477474746,\n \"ssh_url\" : \"git@github.com:octocat/Hello-World.git\",\n \"license\" : {\n \"html_url\" : \"https://web.example.mocklab.io/364501\",\n \"name\" : \"MIT License\",\n \"spdx_id\" : \"MIT\",\n \"key\" : \"mit\",\n \"url\" : \"https://api.github.com/licenses/mit\",\n \"node_id\" : \"MDc6TGljZW5zZW1pdA==\"\n },\n \"full_name\" : \"octocat/Hello-World\",\n \"size\" : 108,\n \"template_repository\" : {\n \"anonymous_access_enabled\" : false,\n \"is_template\" : true,\n \"stargazers_count\" : 1695112823509395067,\n \"pushed_at\" : \"om1c2sgsyqk99lly\",\n \"language\" : \"8kmyxork0x4z05vq9tuvftwqdkmoi27vq7azbipsl47rt0ff9df20jdl0a5wqw3ivhpp9ahr93hyius5vq0ozoioqy2l9i5vnqagjeo4p52dk5kbunmgo0852bg1b0hmusxbbfyxdnajaz49qgsryri\",\n \"subscription_url\" : \"https://web.example.mocklab.io/590634\",\n \"branches_url\" : \"https://web.example.mocklab.io/325642\",\n \"allow_rebase_merge\" : false,\n \"issue_comment_url\" : \"https://web.example.mocklab.io/681249\",\n \"labels_url\" : \"https://web.example.mocklab.io/132937\",\n \"permissions\" : { },\n \"subscribers_url\" : \"https://web.example.mocklab.io/700343\",\n \"releases_url\" : \"https://web.example.mocklab.io/824151\",\n \"svn_url\" : \"https://web.example.mocklab.io/310973\",\n \"subscribers_count\" : 1401352414555098732,\n \"id\" : 4827432832796350138,\n \"allow_merge_commit\" : false,\n \"archive_url\" : \"https://web.example.mocklab.io/389164\",\n \"git_refs_url\" : \"https://web.example.mocklab.io/017384\",\n \"forks_url\" : \"https://web.example.mocklab.io/817437\",\n \"visibility\" : \"hmoy8dh84d4yuwhx2n2mwnwt3ysnvars19ys6mygswz71ihsqnks5vdd8iaqpxf0b40jqffnn2q6o36rjazkelkxe2fuxiy3b09at7k2alaby1zf0z70gw\",\n \"statuses_url\" : \"https://web.example.mocklab.io/216445\",\n \"network_count\" : 6685395556704444847,\n \"ssh_url\" : \"https://web.example.mocklab.io/854430\",\n \"full_name\" : \"Mr. August Wunsch\",\n \"size\" : 9209090710223955154,\n \"languages_url\" : \"https://web.example.mocklab.io/553826\",\n \"clone_url\" : \"https://web.example.mocklab.io/325431\",\n \"collaborators_url\" : \"https://web.example.mocklab.io/676619\",\n \"html_url\" : \"https://web.example.mocklab.io/934033\",\n \"name\" : \"Anjanette Fritsch\",\n \"pulls_url\" : \"https://web.example.mocklab.io/767501\",\n \"default_branch\" : \"von0yvz7u10sfsm8w6ylwm0sq6rqsz8mkzf509eop4sn31j4ubnyx1kn8rulpvwkln6q8fk1fgwj58b86md007ow8ngydm5dg2c292re599i1diqv01rsfoaafk97dzgr2mqg5k7ksymdy0ww7m8nigaytrup7eq\",\n \"hooks_url\" : \"https://web.example.mocklab.io/323536\",\n \"trees_url\" : \"https://web.example.mocklab.io/180898\",\n \"tags_url\" : \"https://web.example.mocklab.io/871866\",\n \"contributors_url\" : \"https://web.example.mocklab.io/658245\",\n \"private\" : false,\n \"has_downloads\" : true,\n \"notifications_url\" : \"https://web.example.mocklab.io/286787\",\n \"open_issues_count\" : 6808621660411559117,\n \"created_at\" : \"t0yzai0p0i67vq011mo8l2rjdncvnz2qwsjgkdzh7qfa9dc6iespt70ui15x34ok4h0m722r76ppyxy6qov349jnz2t956ezt2qcsnf568hv18hoxgp5cly8h6tz6bclf7s8neshb\",\n \"description\" : \"Rerum cupiditate omnis quam rerum. Sunt odit pariatur. Fugiat consequatur consequuntur exercitationem totam voluptas mollitia.\",\n \"deployments_url\" : \"https://web.example.mocklab.io/727713\",\n \"keys_url\" : \"https://web.example.mocklab.io/882096\",\n \"has_projects\" : true,\n \"archived\" : true,\n \"has_wiki\" : true,\n \"updated_at\" : \"2023-01-14T08:13:59.299403Z\",\n \"comments_url\" : \"https://web.example.mocklab.io/960230\",\n \"stargazers_url\" : \"https://web.example.mocklab.io/752653\",\n \"disabled\" : false,\n \"delete_branch_on_merge\" : false,\n \"git_url\" : \"https://web.example.mocklab.io/076059\",\n \"has_pages\" : true,\n \"owner\" : { },\n \"allow_squash_merge\" : false,\n \"commits_url\" : \"https://web.example.mocklab.io/919651\",\n \"compare_url\" : \"https://web.example.mocklab.io/893346\",\n \"git_commits_url\" : \"https://web.example.mocklab.io/037220\",\n \"topics\" : [ \"rxcjipjfa23ym5i39kawhjdg31wdz1p9th48ruahvy1ix\", \"9k1nq53\", \"jes9hhj0ddv9r56af59xytmv1qsdoov03us444zpir5x33hi7vtrqb52vq42cw4rfadieiefreoj643gp4on3148460lxxe5fwnl7s8axope26639vt6wi9hpyrosvm78f5p6l02ln3lhk1pvy8b\", \"q23nsyrg7ar3uedgah7uwcjza2q6uidvo4qg8dusjbxm484nkib3jgmqyhpouohofvbjykorxdf3sj93ls3sd2vnzguha8ekfbrzdy4boyz2mmvftwjozqvmjz74zogj7c4\", \"z9pi1j8292sktjdsqyeq0leau019s9b1v8nqgn0d97xnxevfrye2f0dspyi8n3qo9x9\", \"gmkgan5e3s0b1f6h501q3umig1pa8bkgz4zy7r4ht2j4d171nook24c2d84dfxo71nfkebun2bo5n43wq4mr7bmarwkirqdjdw96kny6aaw3e8mmczk4g402askypmyhbus496r8hkypo13snx1f13iy2k1koksvvmc9wi20jcqhlf38xb5cv\" ],\n \"blobs_url\" : \"https://web.example.mocklab.io/508829\",\n \"git_tags_url\" : \"https://web.example.mocklab.io/316343\",\n \"merges_url\" : \"https://web.example.mocklab.io/177449\",\n \"downloads_url\" : \"https://web.example.mocklab.io/547924\",\n \"has_issues\" : true,\n \"url\" : \"https://web.example.mocklab.io/929622\",\n \"contents_url\" : \"https://web.example.mocklab.io/741695\",\n \"mirror_url\" : \"https://web.example.mocklab.io/489408\",\n \"milestones_url\" : \"https://web.example.mocklab.io/096092\",\n \"teams_url\" : \"https://web.example.mocklab.io/084691\",\n \"fork\" : true,\n \"issues_url\" : \"https://web.example.mocklab.io/479867\",\n \"events_url\" : \"https://web.example.mocklab.io/902990\",\n \"issue_events_url\" : \"https://web.example.mocklab.io/844337\",\n \"assignees_url\" : \"https://web.example.mocklab.io/797524\",\n \"watchers_count\" : 6146859761863663578,\n \"forks_count\" : 2066100640945408822,\n \"homepage\" : \"2blieij5rufcnz1qf6c7hf1vfh08olt6k3tzfrs6akfoe76x6jop30oppmcxd0xse21d8p1sri3zq6djsxlotxws9qe36knhsdo0\",\n \"node_id\" : \"o7tk\"\n },\n \"languages_url\" : \"http://api.github.com/repos/octocat/Hello-World/languages\",\n \"clone_url\" : \"https://github.com/octocat/Hello-World.git\",\n \"collaborators_url\" : \"http://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator}\",\n \"html_url\" : \"https://github.com/octocat/Hello-World\",\n \"name\" : \"Team Environment\",\n \"pulls_url\" : \"http://api.github.com/repos/octocat/Hello-World/pulls{/number}\",\n \"default_branch\" : \"master\",\n \"hooks_url\" : \"http://api.github.com/repos/octocat/Hello-World/hooks\",\n \"trees_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/trees{/sha}\",\n \"tags_url\" : \"http://api.github.com/repos/octocat/Hello-World/tags\",\n \"contributors_url\" : \"http://api.github.com/repos/octocat/Hello-World/contributors\",\n \"private\" : false,\n \"has_downloads\" : true,\n \"notifications_url\" : \"http://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating}\",\n \"open_issues_count\" : 0,\n \"created_at\" : \"2011-01-26T19:01:12Z\",\n \"description\" : \"This your first repo!\",\n \"watchers\" : 255336378305381570,\n \"deployments_url\" : \"http://api.github.com/repos/octocat/Hello-World/deployments\",\n \"keys_url\" : \"http://api.github.com/repos/octocat/Hello-World/keys{/key_id}\",\n \"has_projects\" : true,\n \"archived\" : true,\n \"has_wiki\" : true,\n \"updated_at\" : \"2011-01-26T19:14:43Z\",\n \"comments_url\" : \"http://api.github.com/repos/octocat/Hello-World/comments{/number}\",\n \"stargazers_url\" : \"http://api.github.com/repos/octocat/Hello-World/stargazers\",\n \"disabled\" : false,\n \"delete_branch_on_merge\" : false,\n \"git_url\" : \"git:github.com/octocat/Hello-World.git\",\n \"has_pages\" : false,\n \"owner\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Verdell Jacobi III\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"bscixuse611bvm7kivbn9vd0iw9gkwp0xcbwjmvlmv7vzb973qnp4zb2qypj62lhyipww3kjicbegxccm4uchpoe3uhyfxl6j2cyakqiy7czu4mymiqukurlfu0rna1bjzs6j9pe\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"allow_squash_merge\" : true,\n \"commits_url\" : \"http://api.github.com/repos/octocat/Hello-World/commits{/sha}\",\n \"compare_url\" : \"http://api.github.com/repos/octocat/Hello-World/compare/{base}...{head}\",\n \"git_commits_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/commits{/sha}\",\n \"topics\" : [ \"f3n68btpunudh9xoy8ownhdzzvy3vah3qmka2ux2wsyqxl70gwdl1n8vf2cmywmkyemqlnov96g7n27e9sp9xf9un9wz3muw5iayctd1xm2qiehu52qij7pn7b9owpi053k5yrd20gjpuj06emql86cr5laf07lei0olh3ad5fipzrw42tjy6cwx7ylcg\", \"f778vyflr9w6yz2sct7a5knq\", \"3p8m47pbayvg3pw0fvkwd7vy62srbyzenluumwfuf6ax1hfh93elnq7yi28m05mgiax8qf1srg6yaz61f9jye9smgap2tgnrc3tpkaasjrw904j0qjbrvb2nzy2irkww51abzkbnvwlcivkn2jy8s07x45bcpbu\", \"rk303lixqf\", \"2kydrqsybcc0p3tkra7pgfa414lka41gmx1rbv2zwe3a4tydnybmh335boh\", \"h60woyjf9x89ytyhw1v5oic19utvphlrc5n301r4jm8jvfsycvbru1q4sob2wpxh2f14htsa7yps227ljdchkryyfb36d0\" ],\n \"blobs_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/blobs{/sha}\",\n \"git_tags_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/tags{/sha}\",\n \"merges_url\" : \"http://api.github.com/repos/octocat/Hello-World/merges\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:42Z\\\"\",\n \"downloads_url\" : \"http://api.github.com/repos/octocat/Hello-World/downloads\",\n \"has_issues\" : true,\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World\",\n \"contents_url\" : \"http://api.github.com/repos/octocat/Hello-World/contents/{+path}\",\n \"mirror_url\" : \"git:git.example.com/octocat/Hello-World\",\n \"milestones_url\" : \"http://api.github.com/repos/octocat/Hello-World/milestones{/number}\",\n \"teams_url\" : \"http://api.github.com/repos/octocat/Hello-World/teams\",\n \"fork\" : false,\n \"issues_url\" : \"http://api.github.com/repos/octocat/Hello-World/issues{/number}\",\n \"events_url\" : \"http://api.github.com/repos/octocat/Hello-World/events\",\n \"issue_events_url\" : \"http://api.github.com/repos/octocat/Hello-World/issues/events{/number}\",\n \"organization\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Stephanie Stamm Sr.\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"tzkej9l5dy9jjyuxmm13zfx9pniagtop073xrtbgjk18gh1raln50ad4zojkrtmdtizmyg3g0c08ho7a5m2jeqiqgn9fzvx0oitak5ico5qz2ud2\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"assignees_url\" : \"http://api.github.com/repos/octocat/Hello-World/assignees{/user}\",\n \"open_issues\" : 1077739400541998939,\n \"watchers_count\" : 80,\n \"forks_count\" : 9,\n \"homepage\" : \"https://github.com\",\n \"node_id\" : \"MDEwOlJlcG9zaXRvcnkxMjk2MjY5\"\n },\n \"title\" : \"Found a bug\",\n \"author_association\" : \"OWNER\",\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347/labels{/name}\",\n \"number\" : 1347,\n \"performed_via_github_app\" : {\n \"owner\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Kieth Bednar\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"yohybhesdr8yfg1ib89znsfi3sz2n5ou80d138p09bvw1oo7ojw502w09b09gjkq6p9w91deapzwb26qvgaxlvqpuisu0a6p30xnawx4k9dx9qlrdcak7c19i04j5\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"installations_count\" : 5,\n \"created_at\" : \"2017-07-08T16:18:44-04:00\",\n \"description\" : \"The description of the app.\",\n \"client_id\" : \"\\\"Iv1.25b5d1e65ffc4022\\\"\",\n \"external_url\" : \"https://example.com\",\n \"updated_at\" : \"2017-07-08T16:18:44-04:00\",\n \"permissions\" : {\n \"deployments\" : \"write\",\n \"issues\" : \"read\"\n },\n \"html_url\" : \"https://github.com/apps/super-ci\",\n \"name\" : \"Probot Owners\",\n \"pem\" : \"\\\"-----BEGIN RSA PRIVATE KEY-----\\\\nMIIEogIBAAKCAQEArYxrNYD/iT5CZVpRJu4rBKmmze3PVmT/gCo2ATUvDvZTPTey\\\\nxcGJ3vvrJXazKk06pN05TN29o98jrYz4cengG3YGsXPNEpKsIrEl8NhbnxapEnM9\\\\nJCMRe0P5JcPsfZlX6hmiT7136GRWiGOUba2X9+HKh8QJVLG5rM007TBER9/z9mWm\\\\nrJuNh+m5l320oBQY/Qq3A7wzdEfZw8qm/mIN0FCeoXH1L6B8xXWaAYBwhTEh6SSn\\\\nZHlO1Xu1JWDmAvBCi0RO5aRSKM8q9QEkvvHP4yweAtK3N8+aAbZ7ovaDhyGz8r6r\\\\nzhU1b8Uo0Z2ysf503WqzQgIajr7Fry7/kUwpgQIDAQABAoIBADwJp80Ko1xHPZDy\\\\nfcCKBDfIuPvkmSW6KumbsLMaQv1aGdHDwwTGv3t0ixSay8CGlxMRtRDyZPib6SvQ\\\\n6OH/lpfpbMdW2ErkksgtoIKBVrDilfrcAvrNZu7NxRNbhCSvN8q0s4ICecjbbVQh\\\\nnueSdlA6vGXbW58BHMq68uRbHkP+k+mM9U0mDJ1HMch67wlg5GbayVRt63H7R2+r\\\\nVxcna7B80J/lCEjIYZznawgiTvp3MSanTglqAYi+m1EcSsP14bJIB9vgaxS79kTu\\\\noiSo93leJbBvuGo8QEiUqTwMw4tDksmkLsoqNKQ1q9P7LZ9DGcujtPy4EZsamSJT\\\\ny8OJt0ECgYEA2lxOxJsQk2kI325JgKFjo92mQeUObIvPfSNWUIZQDTjniOI6Gv63\\\\nGLWVFrZcvQBWjMEQraJA9xjPbblV8PtfO87MiJGLWCHFxmPz2dzoedN+2Coxom8m\\\\nV95CLz8QUShuao6u/RYcvUaZEoYs5bHcTmy5sBK80JyEmafJPtCQVxMCgYEAy3ar\\\\nZr3yv4xRPEPMat4rseswmuMooSaK3SKub19WFI5IAtB/e7qR1Rj9JhOGcZz+OQrl\\\\nT78O2OFYlgOIkJPvRMrPpK5V9lslc7tz1FSh3BZMRGq5jSyD7ETSOQ0c8T2O/s7v\\\\nbeEPbVbDe4mwvM24XByH0GnWveVxaDl51ABD65sCgYB3ZAspUkOA5egVCh8kNpnd\\\\nSd6SnuQBE3ySRlT2WEnCwP9Ph6oPgn+oAfiPX4xbRqkL8q/k0BdHQ4h+zNwhk7+h\\\\nWtPYRAP1Xxnc/F+jGjb+DVaIaKGU18MWPg7f+FI6nampl3Q0KvfxwX0GdNhtio8T\\\\nTj1E+SnFwh56SRQuxSh2gwKBgHKjlIO5NtNSflsUYFM+hyQiPiqnHzddfhSG+/3o\\\\nm5nNaSmczJesUYreH5San7/YEy2UxAugvP7aSY2MxB+iGsiJ9WD2kZzTUlDZJ7RV\\\\nUzWsoqBR+eZfVJ2FUWWvy8TpSG6trh4dFxImNtKejCR1TREpSiTV3Zb1dmahK9GV\\\\nrK9NAoGAbBxRLoC01xfxCTgt5BDiBcFVh4fp5yYKwavJPLzHSpuDOrrI9jDn1oKN\\\\nonq5sDU1i391zfQvdrbX4Ova48BN+B7p63FocP/MK5tyyBoT8zQEk2+vWDOw7H/Z\\\\nu5dTCPxTIsoIwUw1I+7yIxqJzLPFgR2gVBwY1ra/8iAqCj+zeBw=\\\\n-----END RSA PRIVATE KEY-----\\\\n\\\"\",\n \"webhook_secret\" : \"\\\"6fba8f2fc8a7e8f2cca5577eddd82ca7586b3b6b\\\"\",\n \"client_secret\" : \"\\\"1d4b2097ac622ba702d19de498f005747a8b21d3\\\"\",\n \"id\" : 37,\n \"events\" : [ \"label\", \"deployment\" ],\n \"slug\" : \"probot-owners\",\n \"node_id\" : \"MDExOkludGVncmF0aW9uMQ==\"\n },\n \"updated_at\" : \"2011-04-22T13:33:48Z\",\n \"comments_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347/comments\",\n \"active_lock_reason\" : \"too heated\",\n \"id\" : 1,\n \"repository_url\" : \"https://api.github.com/repos/octocat/Hello-World\",\n \"state\" : \"open\",\n \"locked\" : true,\n \"timeline_url\" : \"https://web.example.mocklab.io/875521\",\n \"pull_request\" : {\n \"patch_url\" : \"https://web.example.mocklab.io/908631\",\n \"html_url\" : \"https://web.example.mocklab.io/062623\",\n \"merged_at\" : \"2023-06-04T18:38:27.301Z\",\n \"diff_url\" : \"https://web.example.mocklab.io/585620\",\n \"url\" : \"https://web.example.mocklab.io/070938\"\n },\n \"closed_at\" : \"2023-12-23T18:54:15.301Z\",\n \"comments\" : 0,\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347\",\n \"labels\" : [ {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n } ],\n \"milestone\" : {\n \"creator\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Yolonda Ortiz DDS\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"gqsepe2vj\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"closed_at\" : \"2013-02-12T13:22:01Z\",\n \"created_at\" : \"2011-04-10T20:09:31Z\",\n \"description\" : \"Tracking milestone for version 1.0\",\n \"closed_issues\" : 8,\n \"title\" : \"v1.0\",\n \"due_on\" : \"2012-10-09T23:39:01Z\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones/1\",\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones/1/labels\",\n \"number\" : 42,\n \"updated_at\" : \"2014-03-03T18:58:10Z\",\n \"html_url\" : \"https://github.com/octocat/Hello-World/milestones/v1.0\",\n \"id\" : 1002604,\n \"state\" : \"open\",\n \"open_issues\" : 4,\n \"node_id\" : \"MDk6TWlsZXN0b25lMTAwMjYwNA==\"\n },\n \"events_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347/events\",\n \"html_url\" : \"https://github.com/octocat/Hello-World/issues/1347\",\n \"assignee\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Ashlee VonRueden\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"u3mmdjxgr4ul0k4b98l9pwletwk5de63zrerzat1qh8plmsj6d7mdl7e\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"user\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"calvin.hudson\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"kk1u8caykai5p16ja3crxep2q5vuxq9182jpnxdxhgqagev58680xnbosy7xpo\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"node_id\" : \"MDU6SXNzdWUx\"\n },\n \"action\" : \"dtiyi4sj2eygiz3jxo0bfi0j22hp3z2pes8msr8ka7f4mnlhfgrn7lo9t2kbhy47n6mazjkskrk1cdr6ocl06zyc725kvcd68hkn3nw3viq3gdffz\",\n \"comment\" : {\n \"issue_url\" : \"https://web.example.mocklab.io/077883\",\n \"body_html\" : \"orck2lmghtd37smoh2a5zwpausue1c7f61tgpa80f6hhxbijhhs4y7ox0to2vrg7l6wfaluzgwll98ipwiakmjh4dgfeqgr51fbixa6wk2tpsdinjw1r1ej4jircyu18vgfdhtqgt0ou1hm4d490wul41b6duxw0lwvw4ztp94yg5415m2hiya59g615z1ueqs4fc\",\n \"body_text\" : \"msde764gr5wyorp5ptoecml1rfkes2plm6vd8vsqyy5l7k8cs7jn76rdwnutjzv2duf54ou2gzppa47889ivtumrcth8czbpf8uavqnyu38v6p1k159hj8uqugpismhbb\",\n \"created_at\" : \"2011-04-14T16:00:49Z\",\n \"body\" : \"What version of Safari were you using when you observed this bug?\",\n \"url\" : \"https://api.github.com/repositories/42/issues/comments/1\",\n \"author_association\" : \"OWNER\",\n \"performed_via_github_app\" : {\n \"owner\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Min Howe V\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"b3gpfvil34lkz9f3i0ck20vqzasdj9qhbcd6qgw3e0srslpq6qzgxhdhu92555om8pidenvqz86x9i9m9zook4q6ycvecb3cirgvgyzji64jnqvxvvr5ecmndqgmjb195lewbc8pndg\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"installations_count\" : 5,\n \"created_at\" : \"2017-07-08T16:18:44-04:00\",\n \"description\" : \"The description of the app.\",\n \"client_id\" : \"\\\"Iv1.25b5d1e65ffc4022\\\"\",\n \"external_url\" : \"https://example.com\",\n \"updated_at\" : \"2017-07-08T16:18:44-04:00\",\n \"permissions\" : {\n \"deployments\" : \"write\",\n \"issues\" : \"read\"\n },\n \"html_url\" : \"https://github.com/apps/super-ci\",\n \"name\" : \"Probot Owners\",\n \"pem\" : \"\\\"-----BEGIN RSA PRIVATE KEY-----\\\\nMIIEogIBAAKCAQEArYxrNYD/iT5CZVpRJu4rBKmmze3PVmT/gCo2ATUvDvZTPTey\\\\nxcGJ3vvrJXazKk06pN05TN29o98jrYz4cengG3YGsXPNEpKsIrEl8NhbnxapEnM9\\\\nJCMRe0P5JcPsfZlX6hmiT7136GRWiGOUba2X9+HKh8QJVLG5rM007TBER9/z9mWm\\\\nrJuNh+m5l320oBQY/Qq3A7wzdEfZw8qm/mIN0FCeoXH1L6B8xXWaAYBwhTEh6SSn\\\\nZHlO1Xu1JWDmAvBCi0RO5aRSKM8q9QEkvvHP4yweAtK3N8+aAbZ7ovaDhyGz8r6r\\\\nzhU1b8Uo0Z2ysf503WqzQgIajr7Fry7/kUwpgQIDAQABAoIBADwJp80Ko1xHPZDy\\\\nfcCKBDfIuPvkmSW6KumbsLMaQv1aGdHDwwTGv3t0ixSay8CGlxMRtRDyZPib6SvQ\\\\n6OH/lpfpbMdW2ErkksgtoIKBVrDilfrcAvrNZu7NxRNbhCSvN8q0s4ICecjbbVQh\\\\nnueSdlA6vGXbW58BHMq68uRbHkP+k+mM9U0mDJ1HMch67wlg5GbayVRt63H7R2+r\\\\nVxcna7B80J/lCEjIYZznawgiTvp3MSanTglqAYi+m1EcSsP14bJIB9vgaxS79kTu\\\\noiSo93leJbBvuGo8QEiUqTwMw4tDksmkLsoqNKQ1q9P7LZ9DGcujtPy4EZsamSJT\\\\ny8OJt0ECgYEA2lxOxJsQk2kI325JgKFjo92mQeUObIvPfSNWUIZQDTjniOI6Gv63\\\\nGLWVFrZcvQBWjMEQraJA9xjPbblV8PtfO87MiJGLWCHFxmPz2dzoedN+2Coxom8m\\\\nV95CLz8QUShuao6u/RYcvUaZEoYs5bHcTmy5sBK80JyEmafJPtCQVxMCgYEAy3ar\\\\nZr3yv4xRPEPMat4rseswmuMooSaK3SKub19WFI5IAtB/e7qR1Rj9JhOGcZz+OQrl\\\\nT78O2OFYlgOIkJPvRMrPpK5V9lslc7tz1FSh3BZMRGq5jSyD7ETSOQ0c8T2O/s7v\\\\nbeEPbVbDe4mwvM24XByH0GnWveVxaDl51ABD65sCgYB3ZAspUkOA5egVCh8kNpnd\\\\nSd6SnuQBE3ySRlT2WEnCwP9Ph6oPgn+oAfiPX4xbRqkL8q/k0BdHQ4h+zNwhk7+h\\\\nWtPYRAP1Xxnc/F+jGjb+DVaIaKGU18MWPg7f+FI6nampl3Q0KvfxwX0GdNhtio8T\\\\nTj1E+SnFwh56SRQuxSh2gwKBgHKjlIO5NtNSflsUYFM+hyQiPiqnHzddfhSG+/3o\\\\nm5nNaSmczJesUYreH5San7/YEy2UxAugvP7aSY2MxB+iGsiJ9WD2kZzTUlDZJ7RV\\\\nUzWsoqBR+eZfVJ2FUWWvy8TpSG6trh4dFxImNtKejCR1TREpSiTV3Zb1dmahK9GV\\\\nrK9NAoGAbBxRLoC01xfxCTgt5BDiBcFVh4fp5yYKwavJPLzHSpuDOrrI9jDn1oKN\\\\nonq5sDU1i391zfQvdrbX4Ova48BN+B7p63FocP/MK5tyyBoT8zQEk2+vWDOw7H/Z\\\\nu5dTCPxTIsoIwUw1I+7yIxqJzLPFgR2gVBwY1ra/8iAqCj+zeBw=\\\\n-----END RSA PRIVATE KEY-----\\\\n\\\"\",\n \"webhook_secret\" : \"\\\"6fba8f2fc8a7e8f2cca5577eddd82ca7586b3b6b\\\"\",\n \"client_secret\" : \"\\\"1d4b2097ac622ba702d19de498f005747a8b21d3\\\"\",\n \"id\" : 37,\n \"events\" : [ \"label\", \"deployment\" ],\n \"slug\" : \"probot-owners\",\n \"node_id\" : \"MDExOkludGVncmF0aW9uMQ==\"\n },\n \"updated_at\" : \"2011-04-14T16:00:49Z\",\n \"html_url\" : \"https://web.example.mocklab.io/491901\",\n \"reactions\" : {\n \"confused\" : 6466867504186700246,\n \"-1\" : 6726243368042931868,\n \"+1\" : 5510084404137451107,\n \"total_count\" : 2505971194101335540,\n \"rocket\" : 5581577468469177944,\n \"hooray\" : 7882240881089996849,\n \"eyes\" : 1247571094695840995,\n \"heart\" : 5315821330771011102,\n \"laugh\" : 4350835635980069765,\n \"url\" : \"https://web.example.mocklab.io/927550\"\n },\n \"id\" : 42,\n \"user\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"dante.kuhn\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"k1lolx89g9pixwplj4a3k8dmfp05a99lg7hked64zjyrey46xhkhs9fofk188wkedlipeon4wn8m760tq99mcafapei38j9bu8c7xg6w6pk2vpr5cdx0qmbbnlu1yus0j0a8eh5y95tj3ia38r6izp9q5n\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"node_id\" : \"5i7p\"\n }\n },\n \"repo\" : {\n \"name\" : \"Jamie Terry\",\n \"id\" : 5576234912561711328,\n \"url\" : \"https://web.example.mocklab.io/659538\"\n },\n \"created_at\" : \"2022-09-11T10:31:45.302Z\",\n \"id\" : \"x9us\",\n \"type\" : \"alh\"\n}, {\n \"actor\" : {\n \"display_login\" : \"v82kcpfaboa7d5v6aahsj3\",\n \"avatar_url\" : \"https://s3.amazonaws.com/uifaces/faces/twitter/brunodesign1206/128.jpg\",\n \"id\" : 6642286193288408289,\n \"login\" : \"t825q447fqetcl8ktgjiia9ud1qtkm3c37tpyeyscypy8ro35fnk9g3zyuxshpabdscuxtr599ptnkzn6yuggdzyejc2opzqm68zqlqbsybwzjf9hwkftu8stw24ltqg0dg0y7typki9qp61vx3z2a5pz63hv9zuf1gpxfa2e13r0qmaz9h2jubtwn493z5olh9v\",\n \"gravatar_id\" : \"31m9\",\n \"url\" : \"https://web.example.mocklab.io/854653\"\n },\n \"public\" : false,\n \"org\" : {\n \"display_login\" : \"z6io3z3q5olkzz1k8vh7hdxfc9klp4crctx38v92iju9ph76ydk3ilcnji9qcxf0d3y5ihi04e9mu2wmb44glcsvywn4rirl2gte8353owbygcshec3tb336k49kebsmvjplrqao\",\n \"avatar_url\" : \"https://s3.amazonaws.com/uifaces/faces/twitter/bowbrick/128.jpg\",\n \"id\" : 6883926218564751138,\n \"login\" : \"et25e85e792k0l33n8ecnaq21tprpreuoy3lf4g3bj9b35nxx0rnl9gl493enbsendwhmqh1pqvgzgrt16tt3nrzq9kpkibjqopp0220ovpadamn3r2hyhbk3ldfav03d47xtvyg4axp8q23g8ib927snkp4awrjka1y4qttisv6acpgzn\",\n \"gravatar_id\" : \"agqy\",\n \"url\" : \"https://web.example.mocklab.io/355251\"\n },\n \"payload\" : {\n \"pages\" : [ {\n \"summary\" : \"Consequatur velit ea repellat ipsam enim impedit. Ullam eveniet voluptas mollitia ut deleniti et. Modi qui enim sunt ipsam ex tenetur esse. Distinctio ipsa quam doloremque dicta architecto qui labore.\",\n \"html_url\" : \"https://web.example.mocklab.io/060044\",\n \"page_name\" : \"Elmer Cassin\",\n \"action\" : \"sk3wmfp7lldgh7mdb06yulwg1dbsyn6eu0ktwoohdlxkew7lw1tvwn\",\n \"title\" : \"Aliquid nemo architecto tenetur.\",\n \"sha\" : \"cpe8sm4kvaf8rgj7rtgmwevqhu27acr57jtnq8uony511eg0fhabdykmg41rcy1otjaym4rs79mccvkwgp1ukikcpkf\"\n }, {\n \"summary\" : \"Maxime alias tempora qui qui quasi. Consectetur quis non. Aliquam nihil possimus enim.\",\n \"html_url\" : \"https://web.example.mocklab.io/180507\",\n \"page_name\" : \"Melvin Gleason\",\n \"action\" : \"vf2m3hggzewzt9rwaiigr6sa5mc5rbwy1vamzf8ecs7jlboui56ubgllx24g\",\n \"title\" : \"Quas reiciendis sit iure ratione optio accusantium.\",\n \"sha\" : \"wvacdcxqa4x3379wxjd0lrwoqlw1r0je1bm4pw\"\n }, {\n \"summary\" : \"Et adipisci adipisci veniam id numquam soluta. Cum ipsam porro odit eveniet quia. Alias temporibus rerum ex aut et reiciendis sunt. In enim commodi eum quos eos id est.\",\n \"html_url\" : \"https://web.example.mocklab.io/816863\",\n \"page_name\" : \"Sharmaine Schuppe\",\n \"action\" : \"ff62z3zn0fq5z\",\n \"title\" : \"Dolorum velit facilis magni quia.\",\n \"sha\" : \"7oni9mzk7g1p76xla4vzetek68u04a5ar0z1y2sguq38o72pz9hd9ej1o40a1p5wpgb3ty77896azude4dc98id7830ezk5t31qh1m4yetllp6kj\"\n }, {\n \"summary\" : \"Unde ut enim est. Eligendi libero esse ratione. Iusto quaerat est omnis exercitationem ad et eum. Dolores molestiae tempora velit. Corrupti sunt labore nihil et in doloremque quos.\",\n \"html_url\" : \"https://web.example.mocklab.io/161364\",\n \"page_name\" : \"Ji Hettinger\",\n \"action\" : \"a7f5owvcfprj9\",\n \"title\" : \"Atque nisi porro enim.\",\n \"sha\" : \"k463rxtd5f9z02tlu\"\n }, {\n \"summary\" : \"Quia quod dolor. Qui qui recusandae nulla placeat et praesentium illum. Neque occaecati delectus iste optio iste porro. Inventore laboriosam exercitationem possimus ex qui est laborum.\",\n \"html_url\" : \"https://web.example.mocklab.io/458337\",\n \"page_name\" : \"Rosalee Mayert\",\n \"action\" : \"d1bhjvzr1jhzu7wwbypia4j9vkc2d4r67c6infq5jy1u8jcez9jy0qbei3jor028rg0mzove003h3\",\n \"title\" : \"Sunt saepe deleniti est ut qui quasi.\",\n \"sha\" : \"qwz2yjwk2se1cuffxa131fyynrjlufft0yg1sv8kbdwfzcvf4mnbgkhpe8dn8wqil5f76u4q9b4wo23p85t02y6jr16ewoczxh2k4wn2nglfaho3639i96cdfqc0o74ht2bc6yx79ua50gx6p491rvondzbcznyklkfc087is2\"\n } ],\n \"issue\" : {\n \"body_html\" : \"audsm4gqv8d6ixlaxs707dgqnbx0cuiozwsa3htergon7tcadwhwrshxx0yi03a2ygx9ukzu981bze1j4lewifdy\",\n \"body_text\" : \"gm480tjbz3qpugms561dhmff1hx6r6jmpa9etaq0f9uhnppysbpfczu1126nbjwi3ixwi4hvg18skbnkh62bry4v0m0wm4mide4pdu2x6hbhyf65toccz1dpyp7y2\",\n \"assignees\" : [ {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Chung Harber\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"0j9y2n07mmff\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n }, {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Alex Hyatt\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"m3xx68jx8zn7pulr5v0c4b8cqg8zpx08d30zntvv3qehz4jeadvsytpij62jb8ywb9bm8haci0b4k9qmkws5r4zbppf\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n } ],\n \"created_at\" : \"2011-04-22T13:33:48Z\",\n \"body\" : \"I'm having a problem with this.\",\n \"repository\" : {\n \"allow_forking\" : true,\n \"anonymous_access_enabled\" : true,\n \"is_template\" : true,\n \"stargazers_count\" : 80,\n \"pushed_at\" : \"2011-01-26T19:06:43Z\",\n \"language\" : \"zhndu2qh92b3detki4n81fu9l1hvm1v9lvafvbf\",\n \"subscription_url\" : \"http://api.github.com/repos/octocat/Hello-World/subscription\",\n \"branches_url\" : \"http://api.github.com/repos/octocat/Hello-World/branches{/branch}\",\n \"allow_rebase_merge\" : true,\n \"issue_comment_url\" : \"http://api.github.com/repos/octocat/Hello-World/issues/comments{/number}\",\n \"labels_url\" : \"http://api.github.com/repos/octocat/Hello-World/labels{/name}\",\n \"permissions\" : {\n \"pull\" : true,\n \"maintain\" : false,\n \"admin\" : false,\n \"triage\" : false,\n \"push\" : false\n },\n \"subscribers_url\" : \"http://api.github.com/repos/octocat/Hello-World/subscribers\",\n \"releases_url\" : \"http://api.github.com/repos/octocat/Hello-World/releases{/id}\",\n \"svn_url\" : \"https://svn.github.com/octocat/Hello-World\",\n \"subscribers_count\" : 8487957855176740314,\n \"id\" : 42,\n \"master_branch\" : \"3wfd3a203ye8y9f59q6fdrayxwa0gzbrd1utxtqaijsxcnk4sz9qujiah\",\n \"forks\" : 4494908485846427448,\n \"allow_merge_commit\" : true,\n \"archive_url\" : \"http://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref}\",\n \"git_refs_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/refs{/sha}\",\n \"forks_url\" : \"http://api.github.com/repos/octocat/Hello-World/forks\",\n \"visibility\" : \"edxrrrxol7sz83zt1tgta8focv6fvl0g69s69o73rdflq18fbeyv8u5p4shdtzh296afvhasuj4ust0y966ornr9yzk110fj7mqu92r0dzexkdtfppteduvn3x\",\n \"statuses_url\" : \"http://api.github.com/repos/octocat/Hello-World/statuses/{sha}\",\n \"network_count\" : 7545789289635074893,\n \"ssh_url\" : \"git@github.com:octocat/Hello-World.git\",\n \"license\" : {\n \"html_url\" : \"https://web.example.mocklab.io/098752\",\n \"name\" : \"MIT License\",\n \"spdx_id\" : \"MIT\",\n \"key\" : \"mit\",\n \"url\" : \"https://api.github.com/licenses/mit\",\n \"node_id\" : \"MDc6TGljZW5zZW1pdA==\"\n },\n \"full_name\" : \"octocat/Hello-World\",\n \"size\" : 108,\n \"template_repository\" : {\n \"anonymous_access_enabled\" : false,\n \"is_template\" : true,\n \"stargazers_count\" : 1480971380632210749,\n \"pushed_at\" : \"mqvl3h9xo63dlbmzgrocsypgh2rhzoujzr2e0kx7w3ucu9g08b1bljmwsy4l5elzeplwrzpx3yt5q4\",\n \"language\" : \"t7vue8shrjlin6k4rf1ikmzbcozxwaitiuvteyv2bt9xc4emly61kdpt96ciy7k75nktwacbqrrq39v\",\n \"subscription_url\" : \"https://web.example.mocklab.io/477913\",\n \"branches_url\" : \"https://web.example.mocklab.io/131061\",\n \"allow_rebase_merge\" : false,\n \"issue_comment_url\" : \"https://web.example.mocklab.io/187929\",\n \"labels_url\" : \"https://web.example.mocklab.io/690183\",\n \"permissions\" : { },\n \"subscribers_url\" : \"https://web.example.mocklab.io/924476\",\n \"releases_url\" : \"https://web.example.mocklab.io/601137\",\n \"svn_url\" : \"https://web.example.mocklab.io/856525\",\n \"subscribers_count\" : 1683618298882954922,\n \"id\" : 7369440951330592695,\n \"allow_merge_commit\" : true,\n \"archive_url\" : \"https://web.example.mocklab.io/685344\",\n \"git_refs_url\" : \"https://web.example.mocklab.io/489755\",\n \"forks_url\" : \"https://web.example.mocklab.io/927292\",\n \"visibility\" : \"hxh18swafalrq4hn6mc1vdd1rscvh9o07kq20vlgdqeufwof6ou4qc2m3rqkv9cvntf8u0a0ftejiakiocnzg74j\",\n \"statuses_url\" : \"https://web.example.mocklab.io/050095\",\n \"network_count\" : 294493705505078394,\n \"ssh_url\" : \"https://web.example.mocklab.io/846686\",\n \"full_name\" : \"Cory Heaney\",\n \"size\" : 6878436516898636094,\n \"languages_url\" : \"https://web.example.mocklab.io/003290\",\n \"clone_url\" : \"https://web.example.mocklab.io/535403\",\n \"collaborators_url\" : \"https://web.example.mocklab.io/662764\",\n \"html_url\" : \"https://web.example.mocklab.io/492657\",\n \"name\" : \"Kim Pfannerstill DVM\",\n \"pulls_url\" : \"https://web.example.mocklab.io/258878\",\n \"default_branch\" : \"kmz9kqbt4m6br7wsqh87tqh3g98wsp476wj18dnxy9xmhcldckw5r20gxhy157qoxgsu8yqwqkvzavi8p6giuio1iatv0y76lm6dbu1ndtzyha06dlevvz71fc7hb6o9uyysu4gx29xkot43gvh61kr90b7fokjw9hw9917xl0yo8n02fmi\",\n \"hooks_url\" : \"https://web.example.mocklab.io/378365\",\n \"trees_url\" : \"https://web.example.mocklab.io/475766\",\n \"tags_url\" : \"https://web.example.mocklab.io/139100\",\n \"contributors_url\" : \"https://web.example.mocklab.io/638103\",\n \"private\" : true,\n \"has_downloads\" : true,\n \"notifications_url\" : \"https://web.example.mocklab.io/460996\",\n \"open_issues_count\" : 875368214822864096,\n \"created_at\" : \"zy7ulrc62fhqyqnf760hctwe5bsgd2ww4o9rtr2ndxw4i9mj3evgxvm9fd05r6gjw75\",\n \"description\" : \"Occaecati magnam a culpa saepe perferendis. Dolorum repellendus provident et distinctio iste. Facere officiis optio ullam odio laboriosam saepe amet.\",\n \"deployments_url\" : \"https://web.example.mocklab.io/865490\",\n \"keys_url\" : \"https://web.example.mocklab.io/030470\",\n \"has_projects\" : false,\n \"archived\" : false,\n \"has_wiki\" : false,\n \"updated_at\" : \"2023-01-31T07:31:59.306452Z\",\n \"comments_url\" : \"https://web.example.mocklab.io/289681\",\n \"stargazers_url\" : \"https://web.example.mocklab.io/295769\",\n \"disabled\" : false,\n \"delete_branch_on_merge\" : true,\n \"git_url\" : \"https://web.example.mocklab.io/648844\",\n \"has_pages\" : true,\n \"owner\" : { },\n \"allow_squash_merge\" : false,\n \"commits_url\" : \"https://web.example.mocklab.io/510103\",\n \"compare_url\" : \"https://web.example.mocklab.io/709308\",\n \"git_commits_url\" : \"https://web.example.mocklab.io/533618\",\n \"topics\" : [ \"h0ypl6\", \"i5qenyldj2chffktkah0ldiny50tln0fu49t6vejgbqltx9l6y3e0g5acbjxdk2dviue6vcv43rdgkhcw31su3rxb7rpxysgfbxi7r3v73zslje86lrq3k0dsxlo07hp5fb0gzrdy0rqoz1j1xm5enbq1t0zjvrk9e4c2676c8izogenrdh\", \"x9oyzqf8cmwto9mftqkwo3th3hg48mbr9msai8rnd6vsdufhzdt8g\", \"s72yq4mb2dbbojbd6j56\", \"7bljz4c21cqunz8ta4je1nkn21s17unvqj506pbr8nc41jqajxdzriy0b3srl7qns91jsvvmk97rkyolnqoujd1yeb7jl5139rmv18sj3szyncpo9tarfzwzz19y078h9oilm6x\" ],\n \"blobs_url\" : \"https://web.example.mocklab.io/095456\",\n \"git_tags_url\" : \"https://web.example.mocklab.io/299058\",\n \"merges_url\" : \"https://web.example.mocklab.io/123368\",\n \"downloads_url\" : \"https://web.example.mocklab.io/867376\",\n \"has_issues\" : false,\n \"url\" : \"https://web.example.mocklab.io/311880\",\n \"contents_url\" : \"https://web.example.mocklab.io/276406\",\n \"mirror_url\" : \"https://web.example.mocklab.io/356789\",\n \"milestones_url\" : \"https://web.example.mocklab.io/323906\",\n \"teams_url\" : \"https://web.example.mocklab.io/462171\",\n \"fork\" : false,\n \"issues_url\" : \"https://web.example.mocklab.io/759231\",\n \"events_url\" : \"https://web.example.mocklab.io/894475\",\n \"issue_events_url\" : \"https://web.example.mocklab.io/720540\",\n \"assignees_url\" : \"https://web.example.mocklab.io/665037\",\n \"watchers_count\" : 4096093487285856234,\n \"forks_count\" : 2221175883219330180,\n \"homepage\" : \"yj4upts34n6hfr1m3p1fdpqxos8ccqfkcpiynd3jni41jrla0\",\n \"node_id\" : \"4h43\"\n },\n \"languages_url\" : \"http://api.github.com/repos/octocat/Hello-World/languages\",\n \"clone_url\" : \"https://github.com/octocat/Hello-World.git\",\n \"collaborators_url\" : \"http://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator}\",\n \"html_url\" : \"https://github.com/octocat/Hello-World\",\n \"name\" : \"Team Environment\",\n \"pulls_url\" : \"http://api.github.com/repos/octocat/Hello-World/pulls{/number}\",\n \"default_branch\" : \"master\",\n \"hooks_url\" : \"http://api.github.com/repos/octocat/Hello-World/hooks\",\n \"trees_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/trees{/sha}\",\n \"tags_url\" : \"http://api.github.com/repos/octocat/Hello-World/tags\",\n \"contributors_url\" : \"http://api.github.com/repos/octocat/Hello-World/contributors\",\n \"private\" : true,\n \"has_downloads\" : true,\n \"notifications_url\" : \"http://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating}\",\n \"open_issues_count\" : 0,\n \"created_at\" : \"2011-01-26T19:01:12Z\",\n \"description\" : \"This your first repo!\",\n \"watchers\" : 4420939880410641755,\n \"deployments_url\" : \"http://api.github.com/repos/octocat/Hello-World/deployments\",\n \"keys_url\" : \"http://api.github.com/repos/octocat/Hello-World/keys{/key_id}\",\n \"has_projects\" : true,\n \"archived\" : false,\n \"has_wiki\" : true,\n \"updated_at\" : \"2011-01-26T19:14:43Z\",\n \"comments_url\" : \"http://api.github.com/repos/octocat/Hello-World/comments{/number}\",\n \"stargazers_url\" : \"http://api.github.com/repos/octocat/Hello-World/stargazers\",\n \"disabled\" : true,\n \"delete_branch_on_merge\" : false,\n \"git_url\" : \"git:github.com/octocat/Hello-World.git\",\n \"has_pages\" : true,\n \"owner\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Dr. Chester Gleason\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"sd7hx2sqyswyv0hbkc15x6hokvzg2wwhjv5bun\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"allow_squash_merge\" : true,\n \"commits_url\" : \"http://api.github.com/repos/octocat/Hello-World/commits{/sha}\",\n \"compare_url\" : \"http://api.github.com/repos/octocat/Hello-World/compare/{base}...{head}\",\n \"git_commits_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/commits{/sha}\",\n \"topics\" : [ \"0izsj310tqkw935yuco86v09vbbvpkfjhsvtefytefnr41oixf94dvuhg2hi3znrun5l3o7m8206de6aavpghjzz5q07ebz\", \"78rl0865if7tid6qtnll550j1q114makzkzk9fz19wsbwdvnkkxrl3375ohnnjzhyn8n12dmoc\", \"awxrn231wg8hto6z4uiljrxgr2whbyo9rhni8vktxodwq7og8u3dgn9rqqjuwmkqrihsms8s6czbjk5zx1uexu1gf4w5lh8in7i5f9x0betrtuherpypij9bhi8m7jo11s6u9\", \"1pv27wvgsjqubzfulkju8fo0yox3mp56fphzivc8br2pn78n2w0iscdby8rtibd93enu40mn4pzs5e17e37a59er9pr11zmfgok4qmjh4tkajrw7h\", \"uak8pivsyvloakxkfcf1blhyy7p1w3ueyhht6bdl6oiiinnz62cpamv2x2e15wt7loudvxf\", \"my6nyod4skxpynjfn5jiau9r9z342edoplcyjbzt40k7lysetuzkqprbfy7x55zmbkv4vz69ghistbdlslqbtgyri43rk5wecpb00wonw5xst3z30sopk90wjp7ak9048usuuz5wjmnric6d5dewiabyqzbq9pfvn9ju9r2fvlfde0\", \"29mevcsp6dlatypxtb0k1sjp0h0c3q4y74p1s30oi91dh8mm4cfyccvyob811z14qi1yhx005eq5thcisrk5o493krzwkod70bkjtnl357stegolxnmlln\" ],\n \"blobs_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/blobs{/sha}\",\n \"git_tags_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/tags{/sha}\",\n \"merges_url\" : \"http://api.github.com/repos/octocat/Hello-World/merges\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:42Z\\\"\",\n \"downloads_url\" : \"http://api.github.com/repos/octocat/Hello-World/downloads\",\n \"has_issues\" : true,\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World\",\n \"contents_url\" : \"http://api.github.com/repos/octocat/Hello-World/contents/{+path}\",\n \"mirror_url\" : \"git:git.example.com/octocat/Hello-World\",\n \"milestones_url\" : \"http://api.github.com/repos/octocat/Hello-World/milestones{/number}\",\n \"teams_url\" : \"http://api.github.com/repos/octocat/Hello-World/teams\",\n \"fork\" : true,\n \"issues_url\" : \"http://api.github.com/repos/octocat/Hello-World/issues{/number}\",\n \"events_url\" : \"http://api.github.com/repos/octocat/Hello-World/events\",\n \"issue_events_url\" : \"http://api.github.com/repos/octocat/Hello-World/issues/events{/number}\",\n \"organization\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Faith Schroeder\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"pfnwbi34yw8b11ap8brb21onhffx0rceg6cyqafmlghl9ru83rg6jlm9t42j5dzlrk26q6jtgfl8r9yhn04zp26iofbwe5q0pxtxla8lfbnc8l8s17k62twud985kor4ru3mdpc2rgcvwt3wc7wwrig1ch1pnusngelycsx8jgj27aiz083h\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"assignees_url\" : \"http://api.github.com/repos/octocat/Hello-World/assignees{/user}\",\n \"open_issues\" : 5909358200060526767,\n \"watchers_count\" : 80,\n \"forks_count\" : 9,\n \"homepage\" : \"https://github.com\",\n \"node_id\" : \"MDEwOlJlcG9zaXRvcnkxMjk2MjY5\"\n },\n \"title\" : \"Found a bug\",\n \"author_association\" : \"OWNER\",\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347/labels{/name}\",\n \"number\" : 1347,\n \"performed_via_github_app\" : {\n \"owner\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Mr. Carey Langosh\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"jc80rre0qphw3a551h0gyzt57ahrh7awblgp8thqkn70zjd5uxx6byekjrvsztrlpcn8dy9jo7q842dsqz\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"installations_count\" : 5,\n \"created_at\" : \"2017-07-08T16:18:44-04:00\",\n \"description\" : \"The description of the app.\",\n \"client_id\" : \"\\\"Iv1.25b5d1e65ffc4022\\\"\",\n \"external_url\" : \"https://example.com\",\n \"updated_at\" : \"2017-07-08T16:18:44-04:00\",\n \"permissions\" : {\n \"deployments\" : \"write\",\n \"issues\" : \"read\"\n },\n \"html_url\" : \"https://github.com/apps/super-ci\",\n \"name\" : \"Probot Owners\",\n \"pem\" : \"\\\"-----BEGIN RSA PRIVATE KEY-----\\\\nMIIEogIBAAKCAQEArYxrNYD/iT5CZVpRJu4rBKmmze3PVmT/gCo2ATUvDvZTPTey\\\\nxcGJ3vvrJXazKk06pN05TN29o98jrYz4cengG3YGsXPNEpKsIrEl8NhbnxapEnM9\\\\nJCMRe0P5JcPsfZlX6hmiT7136GRWiGOUba2X9+HKh8QJVLG5rM007TBER9/z9mWm\\\\nrJuNh+m5l320oBQY/Qq3A7wzdEfZw8qm/mIN0FCeoXH1L6B8xXWaAYBwhTEh6SSn\\\\nZHlO1Xu1JWDmAvBCi0RO5aRSKM8q9QEkvvHP4yweAtK3N8+aAbZ7ovaDhyGz8r6r\\\\nzhU1b8Uo0Z2ysf503WqzQgIajr7Fry7/kUwpgQIDAQABAoIBADwJp80Ko1xHPZDy\\\\nfcCKBDfIuPvkmSW6KumbsLMaQv1aGdHDwwTGv3t0ixSay8CGlxMRtRDyZPib6SvQ\\\\n6OH/lpfpbMdW2ErkksgtoIKBVrDilfrcAvrNZu7NxRNbhCSvN8q0s4ICecjbbVQh\\\\nnueSdlA6vGXbW58BHMq68uRbHkP+k+mM9U0mDJ1HMch67wlg5GbayVRt63H7R2+r\\\\nVxcna7B80J/lCEjIYZznawgiTvp3MSanTglqAYi+m1EcSsP14bJIB9vgaxS79kTu\\\\noiSo93leJbBvuGo8QEiUqTwMw4tDksmkLsoqNKQ1q9P7LZ9DGcujtPy4EZsamSJT\\\\ny8OJt0ECgYEA2lxOxJsQk2kI325JgKFjo92mQeUObIvPfSNWUIZQDTjniOI6Gv63\\\\nGLWVFrZcvQBWjMEQraJA9xjPbblV8PtfO87MiJGLWCHFxmPz2dzoedN+2Coxom8m\\\\nV95CLz8QUShuao6u/RYcvUaZEoYs5bHcTmy5sBK80JyEmafJPtCQVxMCgYEAy3ar\\\\nZr3yv4xRPEPMat4rseswmuMooSaK3SKub19WFI5IAtB/e7qR1Rj9JhOGcZz+OQrl\\\\nT78O2OFYlgOIkJPvRMrPpK5V9lslc7tz1FSh3BZMRGq5jSyD7ETSOQ0c8T2O/s7v\\\\nbeEPbVbDe4mwvM24XByH0GnWveVxaDl51ABD65sCgYB3ZAspUkOA5egVCh8kNpnd\\\\nSd6SnuQBE3ySRlT2WEnCwP9Ph6oPgn+oAfiPX4xbRqkL8q/k0BdHQ4h+zNwhk7+h\\\\nWtPYRAP1Xxnc/F+jGjb+DVaIaKGU18MWPg7f+FI6nampl3Q0KvfxwX0GdNhtio8T\\\\nTj1E+SnFwh56SRQuxSh2gwKBgHKjlIO5NtNSflsUYFM+hyQiPiqnHzddfhSG+/3o\\\\nm5nNaSmczJesUYreH5San7/YEy2UxAugvP7aSY2MxB+iGsiJ9WD2kZzTUlDZJ7RV\\\\nUzWsoqBR+eZfVJ2FUWWvy8TpSG6trh4dFxImNtKejCR1TREpSiTV3Zb1dmahK9GV\\\\nrK9NAoGAbBxRLoC01xfxCTgt5BDiBcFVh4fp5yYKwavJPLzHSpuDOrrI9jDn1oKN\\\\nonq5sDU1i391zfQvdrbX4Ova48BN+B7p63FocP/MK5tyyBoT8zQEk2+vWDOw7H/Z\\\\nu5dTCPxTIsoIwUw1I+7yIxqJzLPFgR2gVBwY1ra/8iAqCj+zeBw=\\\\n-----END RSA PRIVATE KEY-----\\\\n\\\"\",\n \"webhook_secret\" : \"\\\"6fba8f2fc8a7e8f2cca5577eddd82ca7586b3b6b\\\"\",\n \"client_secret\" : \"\\\"1d4b2097ac622ba702d19de498f005747a8b21d3\\\"\",\n \"id\" : 37,\n \"events\" : [ \"label\", \"deployment\" ],\n \"slug\" : \"probot-owners\",\n \"node_id\" : \"MDExOkludGVncmF0aW9uMQ==\"\n },\n \"updated_at\" : \"2011-04-22T13:33:48Z\",\n \"comments_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347/comments\",\n \"active_lock_reason\" : \"too heated\",\n \"id\" : 1,\n \"repository_url\" : \"https://api.github.com/repos/octocat/Hello-World\",\n \"state\" : \"open\",\n \"locked\" : true,\n \"timeline_url\" : \"https://web.example.mocklab.io/432672\",\n \"pull_request\" : {\n \"patch_url\" : \"https://web.example.mocklab.io/528215\",\n \"html_url\" : \"https://web.example.mocklab.io/070718\",\n \"merged_at\" : \"2022-08-08T00:04:24.308Z\",\n \"diff_url\" : \"https://web.example.mocklab.io/935177\",\n \"url\" : \"https://web.example.mocklab.io/847376\"\n },\n \"closed_at\" : \"2024-01-24T10:27:29.308Z\",\n \"comments\" : 0,\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347\",\n \"labels\" : [ {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n }, {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n }, {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n }, {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n }, {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n }, {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n }, {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n } ],\n \"milestone\" : {\n \"creator\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Russell Hermiston\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"qubed4yw3vvg5bxmq48dcv2po7dd3ztff7ayegmb2upisg776vh3d3948ow2dej9eougkb44rtx6h66na7j2su3kliwb28\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"closed_at\" : \"2013-02-12T13:22:01Z\",\n \"created_at\" : \"2011-04-10T20:09:31Z\",\n \"description\" : \"Tracking milestone for version 1.0\",\n \"closed_issues\" : 8,\n \"title\" : \"v1.0\",\n \"due_on\" : \"2012-10-09T23:39:01Z\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones/1\",\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones/1/labels\",\n \"number\" : 42,\n \"updated_at\" : \"2014-03-03T18:58:10Z\",\n \"html_url\" : \"https://github.com/octocat/Hello-World/milestones/v1.0\",\n \"id\" : 1002604,\n \"state\" : \"open\",\n \"open_issues\" : 4,\n \"node_id\" : \"MDk6TWlsZXN0b25lMTAwMjYwNA==\"\n },\n \"events_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347/events\",\n \"html_url\" : \"https://github.com/octocat/Hello-World/issues/1347\",\n \"assignee\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Dr. Valencia Reynolds\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"pf3auinrm847m9vlg5l5exml6fwjgtr42x5u8jvmjvycltss4bkfoydf797cicns69lemth09tg20n1nhdy3rysimtc5v2q3hn4noozp2r87osimzcpmg516vipyntujr7ch8knh4w0gxavli3xnubisihtmp4ga8yf\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"user\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"loria.brown\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"0clm6k136pypabu4ep6h55b\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"node_id\" : \"MDU6SXNzdWUx\"\n },\n \"action\" : \"9ee15o1j94udrrgjmr760oqenkk2uxi37nqu376wmogtpi6tuia3nyozgyzqnryi9thdw2lk41tbfi2\",\n \"comment\" : {\n \"issue_url\" : \"https://web.example.mocklab.io/992537\",\n \"body_html\" : \"e1mcxn44fk30j1m8bwymigu1wrgn8xf4vn97z\",\n \"body_text\" : \"p1ue5vjjk8qx08xfspm0t2el00fq94uxsjvt9kqfemcede3cfwzmkri9c4vkzjoe\",\n \"created_at\" : \"2011-04-14T16:00:49Z\",\n \"body\" : \"What version of Safari were you using when you observed this bug?\",\n \"url\" : \"https://api.github.com/repositories/42/issues/comments/1\",\n \"author_association\" : \"OWNER\",\n \"performed_via_github_app\" : {\n \"owner\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Mr. George Reynolds\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"szxrkdy661k02tyx6319tmro7pxx4po8p6v91l0x5lgv8z1citnboi6ps8w6i0nl0zqez7l00wj7zt43umcwqrrzqgjl01z8aym2u42fryvbsyfce8n6b94kxu1bm4yvewq6y792lsw7nffmvru9u7fuvpf8o00x1gbubq41ilkshg3dppe2p37rt\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"installations_count\" : 5,\n \"created_at\" : \"2017-07-08T16:18:44-04:00\",\n \"description\" : \"The description of the app.\",\n \"client_id\" : \"\\\"Iv1.25b5d1e65ffc4022\\\"\",\n \"external_url\" : \"https://example.com\",\n \"updated_at\" : \"2017-07-08T16:18:44-04:00\",\n \"permissions\" : {\n \"deployments\" : \"write\",\n \"issues\" : \"read\"\n },\n \"html_url\" : \"https://github.com/apps/super-ci\",\n \"name\" : \"Probot Owners\",\n \"pem\" : \"\\\"-----BEGIN RSA PRIVATE KEY-----\\\\nMIIEogIBAAKCAQEArYxrNYD/iT5CZVpRJu4rBKmmze3PVmT/gCo2ATUvDvZTPTey\\\\nxcGJ3vvrJXazKk06pN05TN29o98jrYz4cengG3YGsXPNEpKsIrEl8NhbnxapEnM9\\\\nJCMRe0P5JcPsfZlX6hmiT7136GRWiGOUba2X9+HKh8QJVLG5rM007TBER9/z9mWm\\\\nrJuNh+m5l320oBQY/Qq3A7wzdEfZw8qm/mIN0FCeoXH1L6B8xXWaAYBwhTEh6SSn\\\\nZHlO1Xu1JWDmAvBCi0RO5aRSKM8q9QEkvvHP4yweAtK3N8+aAbZ7ovaDhyGz8r6r\\\\nzhU1b8Uo0Z2ysf503WqzQgIajr7Fry7/kUwpgQIDAQABAoIBADwJp80Ko1xHPZDy\\\\nfcCKBDfIuPvkmSW6KumbsLMaQv1aGdHDwwTGv3t0ixSay8CGlxMRtRDyZPib6SvQ\\\\n6OH/lpfpbMdW2ErkksgtoIKBVrDilfrcAvrNZu7NxRNbhCSvN8q0s4ICecjbbVQh\\\\nnueSdlA6vGXbW58BHMq68uRbHkP+k+mM9U0mDJ1HMch67wlg5GbayVRt63H7R2+r\\\\nVxcna7B80J/lCEjIYZznawgiTvp3MSanTglqAYi+m1EcSsP14bJIB9vgaxS79kTu\\\\noiSo93leJbBvuGo8QEiUqTwMw4tDksmkLsoqNKQ1q9P7LZ9DGcujtPy4EZsamSJT\\\\ny8OJt0ECgYEA2lxOxJsQk2kI325JgKFjo92mQeUObIvPfSNWUIZQDTjniOI6Gv63\\\\nGLWVFrZcvQBWjMEQraJA9xjPbblV8PtfO87MiJGLWCHFxmPz2dzoedN+2Coxom8m\\\\nV95CLz8QUShuao6u/RYcvUaZEoYs5bHcTmy5sBK80JyEmafJPtCQVxMCgYEAy3ar\\\\nZr3yv4xRPEPMat4rseswmuMooSaK3SKub19WFI5IAtB/e7qR1Rj9JhOGcZz+OQrl\\\\nT78O2OFYlgOIkJPvRMrPpK5V9lslc7tz1FSh3BZMRGq5jSyD7ETSOQ0c8T2O/s7v\\\\nbeEPbVbDe4mwvM24XByH0GnWveVxaDl51ABD65sCgYB3ZAspUkOA5egVCh8kNpnd\\\\nSd6SnuQBE3ySRlT2WEnCwP9Ph6oPgn+oAfiPX4xbRqkL8q/k0BdHQ4h+zNwhk7+h\\\\nWtPYRAP1Xxnc/F+jGjb+DVaIaKGU18MWPg7f+FI6nampl3Q0KvfxwX0GdNhtio8T\\\\nTj1E+SnFwh56SRQuxSh2gwKBgHKjlIO5NtNSflsUYFM+hyQiPiqnHzddfhSG+/3o\\\\nm5nNaSmczJesUYreH5San7/YEy2UxAugvP7aSY2MxB+iGsiJ9WD2kZzTUlDZJ7RV\\\\nUzWsoqBR+eZfVJ2FUWWvy8TpSG6trh4dFxImNtKejCR1TREpSiTV3Zb1dmahK9GV\\\\nrK9NAoGAbBxRLoC01xfxCTgt5BDiBcFVh4fp5yYKwavJPLzHSpuDOrrI9jDn1oKN\\\\nonq5sDU1i391zfQvdrbX4Ova48BN+B7p63FocP/MK5tyyBoT8zQEk2+vWDOw7H/Z\\\\nu5dTCPxTIsoIwUw1I+7yIxqJzLPFgR2gVBwY1ra/8iAqCj+zeBw=\\\\n-----END RSA PRIVATE KEY-----\\\\n\\\"\",\n \"webhook_secret\" : \"\\\"6fba8f2fc8a7e8f2cca5577eddd82ca7586b3b6b\\\"\",\n \"client_secret\" : \"\\\"1d4b2097ac622ba702d19de498f005747a8b21d3\\\"\",\n \"id\" : 37,\n \"events\" : [ \"label\", \"deployment\" ],\n \"slug\" : \"probot-owners\",\n \"node_id\" : \"MDExOkludGVncmF0aW9uMQ==\"\n },\n \"updated_at\" : \"2011-04-14T16:00:49Z\",\n \"html_url\" : \"https://web.example.mocklab.io/129587\",\n \"reactions\" : {\n \"confused\" : 4409948581067095452,\n \"-1\" : 7837610386911450590,\n \"+1\" : 7125869580902726944,\n \"total_count\" : 4789208548615833016,\n \"rocket\" : 3029191351647024546,\n \"hooray\" : 6465352944715371912,\n \"eyes\" : 2811984172258508155,\n \"heart\" : 852664186346106002,\n \"laugh\" : 3506460742843621588,\n \"url\" : \"https://web.example.mocklab.io/167399\"\n },\n \"id\" : 42,\n \"user\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"pearlie.parker\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"2nuvfue56zvxe5no0hg3bfxg87uhs72p10zkqrxund0bkvwi\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"node_id\" : \"0737\"\n }\n },\n \"repo\" : {\n \"name\" : \"Camellia Marquardt\",\n \"id\" : 8191315887225459643,\n \"url\" : \"https://web.example.mocklab.io/052163\"\n },\n \"created_at\" : \"2023-04-26T01:29:24.309Z\",\n \"id\" : \"gjq2\",\n \"type\" : \"nh495an3kw1uz1qmcvfsam5dy0llk5nzgzaz7uuz0hxfjb0z5m5njmrsdki24l52wbm1okw2rq85nz2hedkpdi5oiek3e68znewgk2gc3fq\"\n}, {\n \"actor\" : {\n \"display_login\" : \"lwtj1ah4yhbt04cxsotf1frr1m3pkiclroydfub0tfycnq9c8atcwj8hvchs3nfrmt5lzn4kiusdvul7jk8chx9ls30\",\n \"avatar_url\" : \"https://s3.amazonaws.com/uifaces/faces/twitter/derienzo777/128.jpg\",\n \"id\" : 1175148386289242696,\n \"login\" : \"id5ctvth2k2v3qdpgfu2penc2ql088p4ic6as7118s1ajhb8m9fpijdht6e\",\n \"gravatar_id\" : \"2y25\",\n \"url\" : \"https://web.example.mocklab.io/763970\"\n },\n \"public\" : false,\n \"org\" : {\n \"display_login\" : \"0wmicjb9l5w66nq2osav461q264xzm3l9htc30d4oxc094f4wpmtzbvoeazj19oiabw7jjw57b3rvl31x1wqtkx9k7f57p8joa93g3x3hb61jtdgntqeexex4k27lyp163t73m3yo\",\n \"avatar_url\" : \"https://s3.amazonaws.com/uifaces/faces/twitter/ruzinav/128.jpg\",\n \"id\" : 1598843182056388548,\n \"login\" : \"1p3kdnljatuxbntt9xfnpg6dpilbukzfqh42cvynpd72o9xhd\",\n \"gravatar_id\" : \"pg42\",\n \"url\" : \"https://web.example.mocklab.io/479491\"\n },\n \"payload\" : {\n \"pages\" : [ {\n \"summary\" : \"Iusto facilis voluptas qui quod omnis a. Praesentium non velit velit rerum nam. Consectetur aut ea velit.\",\n \"html_url\" : \"https://web.example.mocklab.io/348994\",\n \"page_name\" : \"Josefine O'Reilly\",\n \"action\" : \"gz06kt5y7iazrtp0d52igbpr4yfnp9q4x53pil1v18ovf33ee6\",\n \"title\" : \"Sed alias in neque excepturi consequatur ut.\",\n \"sha\" : \"dwuvrkggk5z6mxjs9czlqs9q3noqt4oir3pi2rsvs16o6zjsq84ie0i7ptcyk47ettxpwxfwdu4y26f05eg7s6wqju\"\n }, {\n \"summary\" : \"Culpa dignissimos ut numquam ex. Et eum sequi voluptatibus ab quisquam. Qui dolores voluptatem aperiam harum. Provident facere voluptatibus.\",\n \"html_url\" : \"https://web.example.mocklab.io/293390\",\n \"page_name\" : \"Kristle Lang\",\n \"action\" : \"8iadeei60e4ho40emlfjb3e2qapb9sjp1m7cf04vbp74njxtq9gk4t7nwoeigu8ulrz4wvxjablg046ky6mo9xgwhc7su8el30wto7pfh5n5wj7ckjtil9z789qiaqz6t6kignn6oigp9dgfvkj3a4azg7ig9v9hy72j3198vr1ybwlzjq62cm7wrf41r4hzaivey81l\",\n \"title\" : \"Voluptatum cum sed qui nulla vitae dolore vel.\",\n \"sha\" : \"g8hvovoea3x203bev331lize7zshv9jmu2s3h4icmuigazqbrjurkd3dh84853rtl9ni894t6kleez2p0o72rdo\"\n }, {\n \"summary\" : \"Veritatis dolorem ut accusamus. Pariatur aliquid ullam. Autem vero maxime at quasi. Vel nihil praesentium ducimus autem.\",\n \"html_url\" : \"https://web.example.mocklab.io/377374\",\n \"page_name\" : \"Mr. Vaughn Morissette\",\n \"action\" : \"o5w973xdrsqvu3oz9b69qxb6tihq2t4ww1j9sqheeb4xtx8vqf1et2wagzoq3je9eibfjxsamnllls38lm9ycwewvc43skoms4eii42jcad0ogeuk8cl2o5haxt1hj06sw7iju2wwv45x0w1lqcsndgrsi7e7xmh8460y41suauggh2gxarygwbvuki4dudmwyr8d\",\n \"title\" : \"Earum adipisci exercitationem et asperiores sed suscipit.\",\n \"sha\" : \"765arogcefdav8cwn8cs9fdeou7x4fp5uk41ms25s54srb47rtuqt6ptxcmnjqavwi6n4496xw5bovq0rlw1b50hb663yx67joqlje8fxa1mq66iav62kjd4hcjn9oazz7zymwoozgwudu6hpsod2foh\"\n }, {\n \"summary\" : \"Quae nobis autem ducimus distinctio voluptas deserunt est. Est unde fugit itaque omnis dolor. Neque natus delectus voluptatem reprehenderit temporibus blanditiis. Et qui possimus.\",\n \"html_url\" : \"https://web.example.mocklab.io/898540\",\n \"page_name\" : \"Kristopher Schumm DDS\",\n \"action\" : \"e017btsvhwed6pp5d4mnkaggqcn0y9o8drp207ki7i5satsl7tc9nsvqe43muhiasjdrjm7ka5i6wnck2hh\",\n \"title\" : \"Eum optio quidem quod consequatur nemo odio expedita.\",\n \"sha\" : \"j369hz7gk5w7p426j45l5plojfjugv9pu0g6ww1bu26z2p8wc8e1j6ebw0nfwmfnyv\"\n }, {\n \"summary\" : \"Mollitia magni dolores culpa facere perferendis. Tempora consequatur id vel. Suscipit ut quisquam cumque odio. Labore laudantium hic aut fuga. Sit cum dolore sapiente dignissimos quisquam minus.\",\n \"html_url\" : \"https://web.example.mocklab.io/051977\",\n \"page_name\" : \"Dusty Wolf\",\n \"action\" : \"2vc992t9wldt6vhhhxe2uvn77j7x2123y8i8ekplir50\",\n \"title\" : \"Molestiae praesentium et quaerat nisi id aliquam autem.\",\n \"sha\" : \"4s90cjijsbd10h694qunvics1wjjax8ci23sz1pkxhfp5ygdwfur42n522m7bo3opo9t9\"\n }, {\n \"summary\" : \"Non modi nulla nihil distinctio modi. Aut perspiciatis architecto alias quis nemo officia. Fugit ut eius iure. Officiis nemo et consequatur dolorum corporis et.\",\n \"html_url\" : \"https://web.example.mocklab.io/829452\",\n \"page_name\" : \"Leigha Kunze\",\n \"action\" : \"if46at9blcb32wnoibnkqop2948zw56bvsh4cuehi8bwssk0ck5y724r8x7qlkmszxquau\",\n \"title\" : \"Error provident neque voluptas ea asperiores et.\",\n \"sha\" : \"omy3lp8bvrdxvaona916uozznqmucrmllrf9yuupn2gncijpp5phbdaypamj16fpj2d6o3z4loyljp6lrdlte0dofb62maxuqt8pmq9u8m3rr3w8zuhy9v4p43bs3ewg0lp0ie6kc8x89e\"\n }, {\n \"summary\" : \"Autem eum suscipit ea velit tenetur. Inventore consectetur sit sunt dolor non optio totam. Quae et incidunt velit enim tempore. Rerum ut alias delectus. Quam natus ad enim consequuntur possimus ut.\",\n \"html_url\" : \"https://web.example.mocklab.io/947759\",\n \"page_name\" : \"Joel Runolfsson\",\n \"action\" : \"8agefhw1slvadzyxx8pd4yavnr7903a67m9okvzpsv12zpsldukja6z0tn4c4qlu504249pwoh7o6lqiy1kolcgqo0qu2024h09mnd6y12bcd3vvgc4juee9yae8fjp153xm3h27puvl5zwc2bltha49uij6vh24w032p3dn5yqo1g16en5th6cv3\",\n \"title\" : \"Quisquam quia non qui est qui.\",\n \"sha\" : \"stg7hn2icph2h6de0ycgubu1i3r5dxaxf1kf11uj0307012kelds453ee259m\"\n } ],\n \"issue\" : {\n \"body_html\" : \"pexh027xr59ll4eewmb54ms0t7jk0qn510oyq4a92o83h9cpd612wgoltwrr3qrmxrqdwnzb886wlb8f9g7bg\",\n \"body_text\" : \"3rx8l8i0057wdg24hvr6h7bgxtgpm90j571bqwewdh9718h0r0j3uf4i9bxbwdfytqxfzl5iuelgmhgb9foj9qlgackketitepd452yl9shfp8ulr7wfafr2k4uyvo86alurrf6ejzqc6ocd5y2xqa2vfi4j4y3en3yydd1dk6x\",\n \"assignees\" : [ {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Voncile Mraz\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"x0w2y5pcbgyf0n0vhc9b4scud2f2mdecp8nljsetgmtxh728el1gej480882s2q2b\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n }, {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Lindsey Hansen\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"58k1f58qqbh0wi7oxqh51wp68i1mk2tzm1qg\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n }, {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Tommie Buckridge I\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"9yp\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n }, {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Jesse Ullrich\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"calru716ofukdndh6pzpllzd063qeh5sc652e0su5qfpoj5s3as48xj4ngq6xbsaghtrlirra0dusjniiofqtc64bps17p\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n }, {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Ronni Klein\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"wseexywjiw0kt4555xidevtyrr80k8ga29h2rmk2k9hbd5j13jeploegeg1yvwb0d0r219jo4h1ksawtk364kr7040sg\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n }, {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Stanley Heidenreich\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"p9ypt7cuowbi7y3u6ojp1zdmlua0zi5tton9ml57bx1cvvg79dx96zk9bmh8gccfe3ju89d68ub\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n }, {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Filomena Hansen V\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"07nvilh44d3rha2q23xf767e8y25411403vvl0fl4w16rd3ytphxsfj\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n }, {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Dr. Melvin Hamill\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"lzby3z4klayqu8uwx4d4l8w4r7zayihsfsix4batu1ihbby3b2qtg3bctlxxsn6za7il03vwtzdwvz2kdbr4y9ir4ww2r3988occnrlxk354318dss2wudsn82gi8i4246r6gz9ci14lr7h5ic2yl2fn5dr0rg7d6lbp3jyhz\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n } ],\n \"created_at\" : \"2011-04-22T13:33:48Z\",\n \"body\" : \"I'm having a problem with this.\",\n \"repository\" : {\n \"allow_forking\" : false,\n \"anonymous_access_enabled\" : true,\n \"is_template\" : true,\n \"stargazers_count\" : 80,\n \"pushed_at\" : \"2011-01-26T19:06:43Z\",\n \"language\" : \"6b6y4goyuad29vlvqa716fe1jgz2zrdo55cqmw82y0qb99l2dc73sn3bg0j7jqe4yds26kz05cipva5l9yb58s0ye5vq94p6aeg5xff04fn3advbp0pef7gxm3z8xhg9fdev3nkipwjinlokw4740dsg6dotilvt6t56vrc\",\n \"subscription_url\" : \"http://api.github.com/repos/octocat/Hello-World/subscription\",\n \"branches_url\" : \"http://api.github.com/repos/octocat/Hello-World/branches{/branch}\",\n \"allow_rebase_merge\" : true,\n \"issue_comment_url\" : \"http://api.github.com/repos/octocat/Hello-World/issues/comments{/number}\",\n \"labels_url\" : \"http://api.github.com/repos/octocat/Hello-World/labels{/name}\",\n \"permissions\" : {\n \"pull\" : false,\n \"maintain\" : true,\n \"admin\" : false,\n \"triage\" : false,\n \"push\" : false\n },\n \"subscribers_url\" : \"http://api.github.com/repos/octocat/Hello-World/subscribers\",\n \"releases_url\" : \"http://api.github.com/repos/octocat/Hello-World/releases{/id}\",\n \"svn_url\" : \"https://svn.github.com/octocat/Hello-World\",\n \"subscribers_count\" : 5123636719182369538,\n \"id\" : 42,\n \"master_branch\" : \"85rfmokavwtv6l929pzr3854kk\",\n \"forks\" : 4278050886411236862,\n \"allow_merge_commit\" : true,\n \"archive_url\" : \"http://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref}\",\n \"git_refs_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/refs{/sha}\",\n \"forks_url\" : \"http://api.github.com/repos/octocat/Hello-World/forks\",\n \"visibility\" : \"0v7qedtve7dnx\",\n \"statuses_url\" : \"http://api.github.com/repos/octocat/Hello-World/statuses/{sha}\",\n \"network_count\" : 3558899486834185566,\n \"ssh_url\" : \"git@github.com:octocat/Hello-World.git\",\n \"license\" : {\n \"html_url\" : \"https://web.example.mocklab.io/328631\",\n \"name\" : \"MIT License\",\n \"spdx_id\" : \"MIT\",\n \"key\" : \"mit\",\n \"url\" : \"https://api.github.com/licenses/mit\",\n \"node_id\" : \"MDc6TGljZW5zZW1pdA==\"\n },\n \"full_name\" : \"octocat/Hello-World\",\n \"size\" : 108,\n \"template_repository\" : {\n \"anonymous_access_enabled\" : false,\n \"is_template\" : true,\n \"stargazers_count\" : 7592168598902494594,\n \"pushed_at\" : \"bfhis10f08bfk9txzvg8dwt8cwzpnm2xretsmji6kurmurm3r5612y4l5g1pwb271f5s7unyjwk8ffsagr5qnikpzh4uq\",\n \"language\" : \"o7whmz47efu11czikzud7clgdj9lpy07r4bg1tkynimp31sw1olckngd2fdvlp4ijt2e05ws55b1l5y9jl5j5dy3wqonu6gafktsi34nel8yvbdtlcw84vv9x3tdqronerpynu6kzd\",\n \"subscription_url\" : \"https://web.example.mocklab.io/689028\",\n \"branches_url\" : \"https://web.example.mocklab.io/764693\",\n \"allow_rebase_merge\" : true,\n \"issue_comment_url\" : \"https://web.example.mocklab.io/343803\",\n \"labels_url\" : \"https://web.example.mocklab.io/254491\",\n \"permissions\" : { },\n \"subscribers_url\" : \"https://web.example.mocklab.io/711372\",\n \"releases_url\" : \"https://web.example.mocklab.io/984913\",\n \"svn_url\" : \"https://web.example.mocklab.io/701472\",\n \"subscribers_count\" : 6348433613548781796,\n \"id\" : 7874077488253264975,\n \"allow_merge_commit\" : false,\n \"archive_url\" : \"https://web.example.mocklab.io/009400\",\n \"git_refs_url\" : \"https://web.example.mocklab.io/584854\",\n \"forks_url\" : \"https://web.example.mocklab.io/995432\",\n \"visibility\" : \"3jnaz7f8hcgmg9g186kaalq5c3k43t603bhgv68j0i9tlzd9vt8xbo5rlq6w2ncp6bllwemy5udrwfafzj6dnmczh3myehfgpjxxc7r45bim6kh5pn92662dvc1mz7jyqzxtlc16dgc9v7e3f865uddtzouh4gkefr0jz9h4irm0ab7nn8wltq46pyhu6d6u\",\n \"statuses_url\" : \"https://web.example.mocklab.io/899754\",\n \"network_count\" : 8500886662753657402,\n \"ssh_url\" : \"https://web.example.mocklab.io/795991\",\n \"full_name\" : \"Horacio Boyle\",\n \"size\" : 6592375048932664573,\n \"languages_url\" : \"https://web.example.mocklab.io/330817\",\n \"clone_url\" : \"https://web.example.mocklab.io/522914\",\n \"collaborators_url\" : \"https://web.example.mocklab.io/923069\",\n \"html_url\" : \"https://web.example.mocklab.io/864283\",\n \"name\" : \"Anh Hyatt V\",\n \"pulls_url\" : \"https://web.example.mocklab.io/636258\",\n \"default_branch\" : \"qisu03dhx6fcogh2dy4hg5cdd5ospm44nkttq58d4h59keuf1indivhdvp0cuf87sf7bzs0hrnc1ould3yt5rr5vgyn1vivmgcay8y1p7ccomyf9j5ixhldvcrinu1788zlsclgurfymckeu38txdhz2\",\n \"hooks_url\" : \"https://web.example.mocklab.io/037740\",\n \"trees_url\" : \"https://web.example.mocklab.io/046896\",\n \"tags_url\" : \"https://web.example.mocklab.io/341342\",\n \"contributors_url\" : \"https://web.example.mocklab.io/874328\",\n \"private\" : false,\n \"has_downloads\" : false,\n \"notifications_url\" : \"https://web.example.mocklab.io/244043\",\n \"open_issues_count\" : 7342514701896030790,\n \"created_at\" : \"25yydhacyrtpq28lmr7mt7fcua6jommhodf94etir72exgcqxiqnd2q7aukmmax0ypqki34w0fhcfeutqa9qtyahdfyolczks7jwt32nlvnrsxduhg8vwow3ursm0lsgdp106vh8r0k804tu13bb\",\n \"description\" : \"Eius odio quisquam ullam. Facilis et harum eos rerum ut maxime. Laudantium enim illo voluptate vel accusantium placeat. Facere dolorem omnis iste. Eaque consectetur voluptas voluptas.\",\n \"deployments_url\" : \"https://web.example.mocklab.io/496058\",\n \"keys_url\" : \"https://web.example.mocklab.io/168100\",\n \"has_projects\" : false,\n \"archived\" : true,\n \"has_wiki\" : false,\n \"updated_at\" : \"2022-07-19T06:33:59.314524Z\",\n \"comments_url\" : \"https://web.example.mocklab.io/575866\",\n \"stargazers_url\" : \"https://web.example.mocklab.io/209907\",\n \"disabled\" : false,\n \"delete_branch_on_merge\" : true,\n \"git_url\" : \"https://web.example.mocklab.io/084770\",\n \"has_pages\" : true,\n \"owner\" : { },\n \"allow_squash_merge\" : true,\n \"commits_url\" : \"https://web.example.mocklab.io/072813\",\n \"compare_url\" : \"https://web.example.mocklab.io/738673\",\n \"git_commits_url\" : \"https://web.example.mocklab.io/924152\",\n \"topics\" : [ \"801arph596uihc1qujrs8voowbd6mvi9mn908nibxe8bfm9vpe2u5227fgyczs5sy3qki1nrod4vgex8875tmd6awxqzphw4a83qepryzpyan9j4d8jn2bodq6r4bnhts1r6b3nzfrjgtytjyjkqpor1j6op1pp05jvk2debib\", \"e18ww1pmuqxkjgwzwc2yam9qdhuvk4nz7qcuafj1xfnjaxcih4dfz96xh0251q5y5m8g81iwljtqdeujtpaf6q0yayk7431hccuqge63rrozlrrak608i8dhj5kwe2\", \"gs15uynedr68510am6utgvyqlgqhok82nl24te89tdoavc1zkblvaxl6dtwwlgfghc09e7nt2y\", \"r2f4994qciyex63pjiytg15vafmi8b6hfvuvjkfnf9um89i5nlj8pk7t5herob2v15hc8hx3pjzicz0in7pkk0hc7o1e4ckywg00e8dum89x006m2khsdbs4jnbavuqc8l36f5jctywfijb6khftgmbl6ivo0t\", \"4iffa6hzwsrjd7l5no89f9ov6fxtlfkwzh2e5t58x4mm4vqkrz8m5c5k0npv5ohztthla57e0ajfqxg5lprgweucs47735ga07xgr\" ],\n \"blobs_url\" : \"https://web.example.mocklab.io/001955\",\n \"git_tags_url\" : \"https://web.example.mocklab.io/694902\",\n \"merges_url\" : \"https://web.example.mocklab.io/869880\",\n \"downloads_url\" : \"https://web.example.mocklab.io/860061\",\n \"has_issues\" : true,\n \"url\" : \"https://web.example.mocklab.io/610623\",\n \"contents_url\" : \"https://web.example.mocklab.io/312646\",\n \"mirror_url\" : \"https://web.example.mocklab.io/765197\",\n \"milestones_url\" : \"https://web.example.mocklab.io/117712\",\n \"teams_url\" : \"https://web.example.mocklab.io/410522\",\n \"fork\" : false,\n \"issues_url\" : \"https://web.example.mocklab.io/584444\",\n \"events_url\" : \"https://web.example.mocklab.io/227320\",\n \"issue_events_url\" : \"https://web.example.mocklab.io/752326\",\n \"assignees_url\" : \"https://web.example.mocklab.io/935686\",\n \"watchers_count\" : 7908284071957932199,\n \"forks_count\" : 3212941479236379508,\n \"homepage\" : \"skenn9a9hcfcaie2q18f381lqo73h4cgcbx127lgnquk8cz4zf13enzaruj66knqzda8\",\n \"node_id\" : \"7yi8\"\n },\n \"languages_url\" : \"http://api.github.com/repos/octocat/Hello-World/languages\",\n \"clone_url\" : \"https://github.com/octocat/Hello-World.git\",\n \"collaborators_url\" : \"http://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator}\",\n \"html_url\" : \"https://github.com/octocat/Hello-World\",\n \"name\" : \"Team Environment\",\n \"pulls_url\" : \"http://api.github.com/repos/octocat/Hello-World/pulls{/number}\",\n \"default_branch\" : \"master\",\n \"hooks_url\" : \"http://api.github.com/repos/octocat/Hello-World/hooks\",\n \"trees_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/trees{/sha}\",\n \"tags_url\" : \"http://api.github.com/repos/octocat/Hello-World/tags\",\n \"contributors_url\" : \"http://api.github.com/repos/octocat/Hello-World/contributors\",\n \"private\" : true,\n \"has_downloads\" : true,\n \"notifications_url\" : \"http://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating}\",\n \"open_issues_count\" : 0,\n \"created_at\" : \"2011-01-26T19:01:12Z\",\n \"description\" : \"This your first repo!\",\n \"watchers\" : 5524171142497517235,\n \"deployments_url\" : \"http://api.github.com/repos/octocat/Hello-World/deployments\",\n \"keys_url\" : \"http://api.github.com/repos/octocat/Hello-World/keys{/key_id}\",\n \"has_projects\" : true,\n \"archived\" : false,\n \"has_wiki\" : true,\n \"updated_at\" : \"2011-01-26T19:14:43Z\",\n \"comments_url\" : \"http://api.github.com/repos/octocat/Hello-World/comments{/number}\",\n \"stargazers_url\" : \"http://api.github.com/repos/octocat/Hello-World/stargazers\",\n \"disabled\" : false,\n \"delete_branch_on_merge\" : false,\n \"git_url\" : \"git:github.com/octocat/Hello-World.git\",\n \"has_pages\" : true,\n \"owner\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Oma Wuckert\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"9xst9lisklrtd5gaztlbrbta3bagruy30nlm3704hhctydc7etj1oxaj2hi9i7jmgj2q1f1bsiw5won599zsb33l609w0xtc2s2o2g3mpiicqqpjzltmwd8xafa5tgl32nikgscnd50j6eelpn8m7f296umrgjpsv22fdprcwerdq\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"allow_squash_merge\" : true,\n \"commits_url\" : \"http://api.github.com/repos/octocat/Hello-World/commits{/sha}\",\n \"compare_url\" : \"http://api.github.com/repos/octocat/Hello-World/compare/{base}...{head}\",\n \"git_commits_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/commits{/sha}\",\n \"topics\" : [ \"jjrj2nqbx55i3qj9rsfk259i65ukz029jeifflzewpnu8wv4wplyrrzrdfpy9itq19lsk8z3rmxotzup0zirmfmswnc87ju5gcxuaeqtsbcbg72t8g1ywqlo0jp6\", \"pmdk610kh3nv1xyifteqs0hpk0vvl927ul8e3098eise0kglu34ewprljsen8d4zk2t97pw9pte7zifcdtctg2snvn9bbmeqwaeuoyc57oib9q1c3k3v0uguw7b7sbhspxwzk6tsnzgxp1y5okx00lgn\", \"didn8osrf29vnab8kjtzkzxnhr9a7nebm4muwjpz89wfep7\", \"944h2rmcr2zzq7mu51na9q4mjr7lvtz41z5uwbwiyjctuqomk4k3bq2a6yc0xvi9sqa245259xbguc4dgjqcrj1tazpqse0jp3fuw19ak27jyweqxcbv87wlle93etieuoc6jqcpbwj2q7kvqadwa6xhpfru7gndlwi\" ],\n \"blobs_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/blobs{/sha}\",\n \"git_tags_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/tags{/sha}\",\n \"merges_url\" : \"http://api.github.com/repos/octocat/Hello-World/merges\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:42Z\\\"\",\n \"downloads_url\" : \"http://api.github.com/repos/octocat/Hello-World/downloads\",\n \"has_issues\" : true,\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World\",\n \"contents_url\" : \"http://api.github.com/repos/octocat/Hello-World/contents/{+path}\",\n \"mirror_url\" : \"git:git.example.com/octocat/Hello-World\",\n \"milestones_url\" : \"http://api.github.com/repos/octocat/Hello-World/milestones{/number}\",\n \"teams_url\" : \"http://api.github.com/repos/octocat/Hello-World/teams\",\n \"fork\" : true,\n \"issues_url\" : \"http://api.github.com/repos/octocat/Hello-World/issues{/number}\",\n \"events_url\" : \"http://api.github.com/repos/octocat/Hello-World/events\",\n \"issue_events_url\" : \"http://api.github.com/repos/octocat/Hello-World/issues/events{/number}\",\n \"organization\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Shawnda Erdman PhD\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"ptd8zuouc2znt2dirr4mmyrtk0wjsek9uf04912v0yza2vhrc8kntjt53066l6y9tcarfvh7bbpwcw7jeq\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"assignees_url\" : \"http://api.github.com/repos/octocat/Hello-World/assignees{/user}\",\n \"open_issues\" : 8667769412449016136,\n \"watchers_count\" : 80,\n \"forks_count\" : 9,\n \"homepage\" : \"https://github.com\",\n \"node_id\" : \"MDEwOlJlcG9zaXRvcnkxMjk2MjY5\"\n },\n \"title\" : \"Found a bug\",\n \"author_association\" : \"OWNER\",\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347/labels{/name}\",\n \"number\" : 1347,\n \"performed_via_github_app\" : {\n \"owner\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Bruce Swift\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"mlh09onv3mvazd4rqggaz61hku5uqyap5somaxcrhypruex5x21g7giks15zrhm81lek656316ggv4ppv4knpv3ihqcj7ur\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"installations_count\" : 5,\n \"created_at\" : \"2017-07-08T16:18:44-04:00\",\n \"description\" : \"The description of the app.\",\n \"client_id\" : \"\\\"Iv1.25b5d1e65ffc4022\\\"\",\n \"external_url\" : \"https://example.com\",\n \"updated_at\" : \"2017-07-08T16:18:44-04:00\",\n \"permissions\" : {\n \"deployments\" : \"write\",\n \"issues\" : \"read\"\n },\n \"html_url\" : \"https://github.com/apps/super-ci\",\n \"name\" : \"Probot Owners\",\n \"pem\" : \"\\\"-----BEGIN RSA PRIVATE KEY-----\\\\nMIIEogIBAAKCAQEArYxrNYD/iT5CZVpRJu4rBKmmze3PVmT/gCo2ATUvDvZTPTey\\\\nxcGJ3vvrJXazKk06pN05TN29o98jrYz4cengG3YGsXPNEpKsIrEl8NhbnxapEnM9\\\\nJCMRe0P5JcPsfZlX6hmiT7136GRWiGOUba2X9+HKh8QJVLG5rM007TBER9/z9mWm\\\\nrJuNh+m5l320oBQY/Qq3A7wzdEfZw8qm/mIN0FCeoXH1L6B8xXWaAYBwhTEh6SSn\\\\nZHlO1Xu1JWDmAvBCi0RO5aRSKM8q9QEkvvHP4yweAtK3N8+aAbZ7ovaDhyGz8r6r\\\\nzhU1b8Uo0Z2ysf503WqzQgIajr7Fry7/kUwpgQIDAQABAoIBADwJp80Ko1xHPZDy\\\\nfcCKBDfIuPvkmSW6KumbsLMaQv1aGdHDwwTGv3t0ixSay8CGlxMRtRDyZPib6SvQ\\\\n6OH/lpfpbMdW2ErkksgtoIKBVrDilfrcAvrNZu7NxRNbhCSvN8q0s4ICecjbbVQh\\\\nnueSdlA6vGXbW58BHMq68uRbHkP+k+mM9U0mDJ1HMch67wlg5GbayVRt63H7R2+r\\\\nVxcna7B80J/lCEjIYZznawgiTvp3MSanTglqAYi+m1EcSsP14bJIB9vgaxS79kTu\\\\noiSo93leJbBvuGo8QEiUqTwMw4tDksmkLsoqNKQ1q9P7LZ9DGcujtPy4EZsamSJT\\\\ny8OJt0ECgYEA2lxOxJsQk2kI325JgKFjo92mQeUObIvPfSNWUIZQDTjniOI6Gv63\\\\nGLWVFrZcvQBWjMEQraJA9xjPbblV8PtfO87MiJGLWCHFxmPz2dzoedN+2Coxom8m\\\\nV95CLz8QUShuao6u/RYcvUaZEoYs5bHcTmy5sBK80JyEmafJPtCQVxMCgYEAy3ar\\\\nZr3yv4xRPEPMat4rseswmuMooSaK3SKub19WFI5IAtB/e7qR1Rj9JhOGcZz+OQrl\\\\nT78O2OFYlgOIkJPvRMrPpK5V9lslc7tz1FSh3BZMRGq5jSyD7ETSOQ0c8T2O/s7v\\\\nbeEPbVbDe4mwvM24XByH0GnWveVxaDl51ABD65sCgYB3ZAspUkOA5egVCh8kNpnd\\\\nSd6SnuQBE3ySRlT2WEnCwP9Ph6oPgn+oAfiPX4xbRqkL8q/k0BdHQ4h+zNwhk7+h\\\\nWtPYRAP1Xxnc/F+jGjb+DVaIaKGU18MWPg7f+FI6nampl3Q0KvfxwX0GdNhtio8T\\\\nTj1E+SnFwh56SRQuxSh2gwKBgHKjlIO5NtNSflsUYFM+hyQiPiqnHzddfhSG+/3o\\\\nm5nNaSmczJesUYreH5San7/YEy2UxAugvP7aSY2MxB+iGsiJ9WD2kZzTUlDZJ7RV\\\\nUzWsoqBR+eZfVJ2FUWWvy8TpSG6trh4dFxImNtKejCR1TREpSiTV3Zb1dmahK9GV\\\\nrK9NAoGAbBxRLoC01xfxCTgt5BDiBcFVh4fp5yYKwavJPLzHSpuDOrrI9jDn1oKN\\\\nonq5sDU1i391zfQvdrbX4Ova48BN+B7p63FocP/MK5tyyBoT8zQEk2+vWDOw7H/Z\\\\nu5dTCPxTIsoIwUw1I+7yIxqJzLPFgR2gVBwY1ra/8iAqCj+zeBw=\\\\n-----END RSA PRIVATE KEY-----\\\\n\\\"\",\n \"webhook_secret\" : \"\\\"6fba8f2fc8a7e8f2cca5577eddd82ca7586b3b6b\\\"\",\n \"client_secret\" : \"\\\"1d4b2097ac622ba702d19de498f005747a8b21d3\\\"\",\n \"id\" : 37,\n \"events\" : [ \"label\", \"deployment\" ],\n \"slug\" : \"probot-owners\",\n \"node_id\" : \"MDExOkludGVncmF0aW9uMQ==\"\n },\n \"updated_at\" : \"2011-04-22T13:33:48Z\",\n \"comments_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347/comments\",\n \"active_lock_reason\" : \"too heated\",\n \"id\" : 1,\n \"repository_url\" : \"https://api.github.com/repos/octocat/Hello-World\",\n \"state\" : \"open\",\n \"locked\" : true,\n \"timeline_url\" : \"https://web.example.mocklab.io/749476\",\n \"pull_request\" : {\n \"patch_url\" : \"https://web.example.mocklab.io/449551\",\n \"html_url\" : \"https://web.example.mocklab.io/913657\",\n \"merged_at\" : \"2023-10-18T05:36:10.316Z\",\n \"diff_url\" : \"https://web.example.mocklab.io/436460\",\n \"url\" : \"https://web.example.mocklab.io/186545\"\n },\n \"closed_at\" : \"2022-11-18T15:07:07.316Z\",\n \"comments\" : 0,\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347\",\n \"labels\" : [ {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n }, {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n }, {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n }, {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n }, {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n }, {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n } ],\n \"milestone\" : {\n \"creator\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Dwayne O'Reilly\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"jv2ny47k8qwn3p5syatyxuyllkccrc9ginswqwnxhh0hi41j5nwq6qi204iumw7guhn72es3l8ma\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"closed_at\" : \"2013-02-12T13:22:01Z\",\n \"created_at\" : \"2011-04-10T20:09:31Z\",\n \"description\" : \"Tracking milestone for version 1.0\",\n \"closed_issues\" : 8,\n \"title\" : \"v1.0\",\n \"due_on\" : \"2012-10-09T23:39:01Z\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones/1\",\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones/1/labels\",\n \"number\" : 42,\n \"updated_at\" : \"2014-03-03T18:58:10Z\",\n \"html_url\" : \"https://github.com/octocat/Hello-World/milestones/v1.0\",\n \"id\" : 1002604,\n \"state\" : \"open\",\n \"open_issues\" : 4,\n \"node_id\" : \"MDk6TWlsZXN0b25lMTAwMjYwNA==\"\n },\n \"events_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347/events\",\n \"html_url\" : \"https://github.com/octocat/Hello-World/issues/1347\",\n \"assignee\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Josh Lind II\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"zqu13\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"user\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"rafael.sporer\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"9syqvwjmpl5su0q38xry627slghqwscsksnp0qidi24539alerkfthjx34fdeas8pig4y80gbztqya59zivx2qczzuom7u1wo7zjk017neklji1idha13eys4tpu1k1vq16h0mdqa9k76ia8gsu3ysl7rxm5afyte\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"node_id\" : \"MDU6SXNzdWUx\"\n },\n \"action\" : \"h15dnyx6sss13bm51m8qznqlbvtu3tpz4touy59qx\",\n \"comment\" : {\n \"issue_url\" : \"https://web.example.mocklab.io/596545\",\n \"body_html\" : \"0ip2u4mp2dq3oiinoajeew3y78i3f3hrmk8r7falv12x7r5l5szc2iboepre3fp370s66tj9ho97eblnkakmi02jrzykh0i9tpjhjt50cyfl46zat8x6erzzw6dbdmyeqljujj3zzq13i16l8yrqm6jdc1lkuamp4ua2e862wq9ojzrt9ko4f\",\n \"body_text\" : \"ci5feueo27f0yvx18fzqatjdjrhqy9lpbz\",\n \"created_at\" : \"2011-04-14T16:00:49Z\",\n \"body\" : \"What version of Safari were you using when you observed this bug?\",\n \"url\" : \"https://api.github.com/repositories/42/issues/comments/1\",\n \"author_association\" : \"OWNER\",\n \"performed_via_github_app\" : {\n \"owner\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Cornell Wilderman\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"e29wm56j04zrnus7jv80npmpsqdziuf11h0p47yuqcxrdzx8830f2didthtcubiuq1yot159fmw1ssnyqpyqu59zozw932hu\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"installations_count\" : 5,\n \"created_at\" : \"2017-07-08T16:18:44-04:00\",\n \"description\" : \"The description of the app.\",\n \"client_id\" : \"\\\"Iv1.25b5d1e65ffc4022\\\"\",\n \"external_url\" : \"https://example.com\",\n \"updated_at\" : \"2017-07-08T16:18:44-04:00\",\n \"permissions\" : {\n \"deployments\" : \"write\",\n \"issues\" : \"read\"\n },\n \"html_url\" : \"https://github.com/apps/super-ci\",\n \"name\" : \"Probot Owners\",\n \"pem\" : \"\\\"-----BEGIN RSA PRIVATE KEY-----\\\\nMIIEogIBAAKCAQEArYxrNYD/iT5CZVpRJu4rBKmmze3PVmT/gCo2ATUvDvZTPTey\\\\nxcGJ3vvrJXazKk06pN05TN29o98jrYz4cengG3YGsXPNEpKsIrEl8NhbnxapEnM9\\\\nJCMRe0P5JcPsfZlX6hmiT7136GRWiGOUba2X9+HKh8QJVLG5rM007TBER9/z9mWm\\\\nrJuNh+m5l320oBQY/Qq3A7wzdEfZw8qm/mIN0FCeoXH1L6B8xXWaAYBwhTEh6SSn\\\\nZHlO1Xu1JWDmAvBCi0RO5aRSKM8q9QEkvvHP4yweAtK3N8+aAbZ7ovaDhyGz8r6r\\\\nzhU1b8Uo0Z2ysf503WqzQgIajr7Fry7/kUwpgQIDAQABAoIBADwJp80Ko1xHPZDy\\\\nfcCKBDfIuPvkmSW6KumbsLMaQv1aGdHDwwTGv3t0ixSay8CGlxMRtRDyZPib6SvQ\\\\n6OH/lpfpbMdW2ErkksgtoIKBVrDilfrcAvrNZu7NxRNbhCSvN8q0s4ICecjbbVQh\\\\nnueSdlA6vGXbW58BHMq68uRbHkP+k+mM9U0mDJ1HMch67wlg5GbayVRt63H7R2+r\\\\nVxcna7B80J/lCEjIYZznawgiTvp3MSanTglqAYi+m1EcSsP14bJIB9vgaxS79kTu\\\\noiSo93leJbBvuGo8QEiUqTwMw4tDksmkLsoqNKQ1q9P7LZ9DGcujtPy4EZsamSJT\\\\ny8OJt0ECgYEA2lxOxJsQk2kI325JgKFjo92mQeUObIvPfSNWUIZQDTjniOI6Gv63\\\\nGLWVFrZcvQBWjMEQraJA9xjPbblV8PtfO87MiJGLWCHFxmPz2dzoedN+2Coxom8m\\\\nV95CLz8QUShuao6u/RYcvUaZEoYs5bHcTmy5sBK80JyEmafJPtCQVxMCgYEAy3ar\\\\nZr3yv4xRPEPMat4rseswmuMooSaK3SKub19WFI5IAtB/e7qR1Rj9JhOGcZz+OQrl\\\\nT78O2OFYlgOIkJPvRMrPpK5V9lslc7tz1FSh3BZMRGq5jSyD7ETSOQ0c8T2O/s7v\\\\nbeEPbVbDe4mwvM24XByH0GnWveVxaDl51ABD65sCgYB3ZAspUkOA5egVCh8kNpnd\\\\nSd6SnuQBE3ySRlT2WEnCwP9Ph6oPgn+oAfiPX4xbRqkL8q/k0BdHQ4h+zNwhk7+h\\\\nWtPYRAP1Xxnc/F+jGjb+DVaIaKGU18MWPg7f+FI6nampl3Q0KvfxwX0GdNhtio8T\\\\nTj1E+SnFwh56SRQuxSh2gwKBgHKjlIO5NtNSflsUYFM+hyQiPiqnHzddfhSG+/3o\\\\nm5nNaSmczJesUYreH5San7/YEy2UxAugvP7aSY2MxB+iGsiJ9WD2kZzTUlDZJ7RV\\\\nUzWsoqBR+eZfVJ2FUWWvy8TpSG6trh4dFxImNtKejCR1TREpSiTV3Zb1dmahK9GV\\\\nrK9NAoGAbBxRLoC01xfxCTgt5BDiBcFVh4fp5yYKwavJPLzHSpuDOrrI9jDn1oKN\\\\nonq5sDU1i391zfQvdrbX4Ova48BN+B7p63FocP/MK5tyyBoT8zQEk2+vWDOw7H/Z\\\\nu5dTCPxTIsoIwUw1I+7yIxqJzLPFgR2gVBwY1ra/8iAqCj+zeBw=\\\\n-----END RSA PRIVATE KEY-----\\\\n\\\"\",\n \"webhook_secret\" : \"\\\"6fba8f2fc8a7e8f2cca5577eddd82ca7586b3b6b\\\"\",\n \"client_secret\" : \"\\\"1d4b2097ac622ba702d19de498f005747a8b21d3\\\"\",\n \"id\" : 37,\n \"events\" : [ \"label\", \"deployment\" ],\n \"slug\" : \"probot-owners\",\n \"node_id\" : \"MDExOkludGVncmF0aW9uMQ==\"\n },\n \"updated_at\" : \"2011-04-14T16:00:49Z\",\n \"html_url\" : \"https://web.example.mocklab.io/859488\",\n \"reactions\" : {\n \"confused\" : 5768603573091411783,\n \"-1\" : 1055964784382178115,\n \"+1\" : 2124974593632240467,\n \"total_count\" : 6326288206709034142,\n \"rocket\" : 588087485990555930,\n \"hooray\" : 5103772064367011300,\n \"eyes\" : 3421280899705215153,\n \"heart\" : 1312423182031142191,\n \"laugh\" : 8537481952545560968,\n \"url\" : \"https://web.example.mocklab.io/715640\"\n },\n \"id\" : 42,\n \"user\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"ardell.pfannerstill\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"efpqkruci83gzur72ohbs8pqy8wp3gf6ogxugtrzk8e4ob44id87s7othk9nydy3olsxtsuxl9pxaa5hwggy33kpjnb36b1uk2br04v0n3dqsbh7foulnnrrqtxez3\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"node_id\" : \"2c1x\"\n }\n },\n \"repo\" : {\n \"name\" : \"Laticia Considine\",\n \"id\" : 4491520477243405127,\n \"url\" : \"https://web.example.mocklab.io/923168\"\n },\n \"created_at\" : \"2023-08-01T22:54:00.317Z\",\n \"id\" : \"1zl3\",\n \"type\" : \"3z11qst9zcsltpb9kyr4d88iee78udu17kw3hdn045814bpmd1f0didngo5nnq47yyl9tiz1m8px4wk6723t86uhe95t79h51g5ioango9xld6v\"\n}, {\n \"actor\" : {\n \"display_login\" : \"kpu5uxwu2ybgq4mc4rs2b8461r0gr2072z7utkxj00qi4hsm25grmmqwg0m3d5vssr739u6mg487b7mn53tw3qixtotkqbt1icmf8gyfkue5ri86mfn\",\n \"avatar_url\" : \"https://s3.amazonaws.com/uifaces/faces/twitter/itolmach/128.jpg\",\n \"id\" : 6662124485496069315,\n \"login\" : \"kxw5p3hssbejvlqhxof55foo7swphmxdvw6qcd2c7v9i3qpobebxatcs3zo0yp2sw15i80e8itml5a92p67l7e6k2m07mj9v8y23use9tqmn1o9gcd\",\n \"gravatar_id\" : \"o3wd\",\n \"url\" : \"https://web.example.mocklab.io/633166\"\n },\n \"public\" : false,\n \"org\" : {\n \"display_login\" : \"p4vhbh72lr43c3ijq0uwpnxoa1e2kzxwybsdn60xxaww6aa080eobxm5apsd2n3zbl4qtxg2y08sn86n0x0nyku302cwehqcbalh5gztflyf7mpiauobhfzdhlgswoe1np1uc\",\n \"avatar_url\" : \"https://s3.amazonaws.com/uifaces/faces/twitter/vinciarts/128.jpg\",\n \"id\" : 3070505856162624830,\n \"login\" : \"t1lvmcetzqc035vi70td902so1z1vnunkegfx307d8cgafzlbhmj16lss2h8nb7cqgwb76gurlew8qunrtqyabnoczwiwed51vpfnw2w8zut96c0rsqzrtyoewn6fb04zk8aub60rw96u3t1sbs2p50l1yqur0rbui4tnizqy0qwn9wtk16an31\",\n \"gravatar_id\" : \"9210\",\n \"url\" : \"https://web.example.mocklab.io/859402\"\n },\n \"payload\" : {\n \"pages\" : [ {\n \"summary\" : \"Nostrum quaerat consectetur pariatur ut rem quia quo. Aliquid vel libero ea. Tenetur eos mollitia ut vel. Et excepturi possimus. Delectus ipsum eligendi aliquid dignissimos illo.\",\n \"html_url\" : \"https://web.example.mocklab.io/416472\",\n \"page_name\" : \"Mee Crona MD\",\n \"action\" : \"myoz8kc54s4zmlut44euo2msbe374rmch39m4k9d5qzz0c287o3nrwscsybaio4wij6nyr2u6q5ikliq77h00v2327dccvi4lz988b6wi9k6umj2ne37h2k1to4u7yclj9wugtqj2ieve94cwlq\",\n \"title\" : \"Corrupti voluptatem officia repudiandae fuga temporibus.\",\n \"sha\" : \"w9owvmi4mu428ou90w8slj6h2n7o0r8spx1fqsjy6odbq45iajtfuo4m1xbzrcio0r05z5au56dvrp9fzaf763owd0cahi3j6x\"\n }, {\n \"summary\" : \"Est id sequi dicta amet autem. Necessitatibus sint sed illo dolore alias. Non sunt neque est qui. Ullam nihil non expedita.\",\n \"html_url\" : \"https://web.example.mocklab.io/033441\",\n \"page_name\" : \"Mrs. Georgie Abbott\",\n \"action\" : \"sq65py2v5lch1dvs2gnrqeh5rza3if50l0236mvy929w5kyu8mz7wad1d9fs1j6i0rg6u0rzrqhdeq361kfmwrrxc0f2oxfho\",\n \"title\" : \"Quod nemo perferendis et facere ut porro ut.\",\n \"sha\" : \"e3dyo6c60joe1w6u17nkj9usk4inckdtm7lrrji0hlrf1rqufp1u61yszv388h8pu47lkrazrkwuiq5s3rokp3vyt9myc5t53bske01dr64wu74imfb6bfsek8ddljzztvqk1cqrh7s4\"\n }, {\n \"summary\" : \"Suscipit eligendi ut. Ab id ut sit ut accusantium accusantium. Voluptatem unde beatae aut enim. At laboriosam repellendus aut.\",\n \"html_url\" : \"https://web.example.mocklab.io/707690\",\n \"page_name\" : \"Luetta Douglas\",\n \"action\" : \"l06d5vqq5pwnrbpjbhim3lasy9xwcbfx41b5b93e079t6ern6vf4akzg09lh3rzql111oigjm9silq121hwtvv9km9dyo6pf2yujxp8r7y5l5c9ffjg55gt05fp3ku3ad2r7ejl0951iiuevsh8kdsfrcm9l2vktp8yvqnxf94gq7g3e\",\n \"title\" : \"In maiores et eos officia ullam.\",\n \"sha\" : \"bhj0lfeks4i2c8xaaq86ebdqem4x7r6yxqwap7oou1ubq08ia4kxhrzdvjz51ubiqevzbpr60apjgffn7gb0xox6uiz2ki8aszw91e10tdbqy5ln95e3p67qrgwgq48eeb7ae1522kjpcbufzlpnj8m8pyt7ebktyznha3\"\n }, {\n \"summary\" : \"Et et et provident. Quo nostrum magnam. Deserunt quam exercitationem repudiandae ea. Id voluptas repellendus excepturi.\",\n \"html_url\" : \"https://web.example.mocklab.io/596425\",\n \"page_name\" : \"August Murazik\",\n \"action\" : \"enbgph5jote06kiv742u034qraexnuad2d7cdz73i3g0muuoxsyzxf5d7st9lolwe7\",\n \"title\" : \"In nesciunt nam.\",\n \"sha\" : \"a7xnqpfy2qegqouzh5n3u9u4yxam7r1z32xp3mlifadw9apbi47v0nfwqe49drdwd3if46a0jxvbcx8iiba6ha1oegbw2c1hhppfdtr7hbzgvydbu65k7hm8eeuw673ox2dhpasotvdvcg2ggef6i5tk329o0sgnj1u3hymonvu\"\n }, {\n \"summary\" : \"Eius atque odio corporis ut et rerum qui. Rem nam facere itaque aut. Asperiores iste aspernatur quia eos blanditiis. Et earum ipsam et aspernatur.\",\n \"html_url\" : \"https://web.example.mocklab.io/996814\",\n \"page_name\" : \"Tarsha Herman\",\n \"action\" : \"u2zdgy7ohxg0m1ngd06xl03x9ynsaml7r5zgob42z0xqknfneppgjdgyaszgcwseei4cdxaccfe4z29vc76r473s8slk6xm2\",\n \"title\" : \"Autem quas quisquam.\",\n \"sha\" : \"en9q8cxfseagk775rlbu0z84r5woynvm85fcbktmgj5ahliofm7o25u5b9wqtgi47\"\n }, {\n \"summary\" : \"Velit numquam repellat qui. Quod ab explicabo qui maxime a sint quis. Aperiam qui quis. Consectetur qui modi. Totam pariatur et omnis aut commodi.\",\n \"html_url\" : \"https://web.example.mocklab.io/362026\",\n \"page_name\" : \"Miss Assunta McLaughlin\",\n \"action\" : \"8s7odhg1rj70g4pw5scf576o1cwkqg6azl8rybfa8i1d9mwumb6e37edd3frtfu9v6r3drdm0t33t2mkj783oo79u0cs0mkil396u525rl4pwy89qdqyyc1ab7a\",\n \"title\" : \"Cumque blanditiis sint nisi tempora minima.\",\n \"sha\" : \"c6sm7g38wdimchs867er8zszsm9x2ty\"\n } ],\n \"issue\" : {\n \"body_html\" : \"ee847e9t07y0ni7oxisi6jzc6rs9unjztvb9n837raart21m6g30cyp9byode7\",\n \"body_text\" : \"7u9c60q71w0udiy8aicfdufkirb9gudagtmvkk7ugtpobwp78g44ykcanaqflioyx2dnku54gyn9liher22syy8i0e96rakp1mkwypoa8gnbtltic13nbkn73lr9m2grp2wiuhl32l9kofyad67lcwqalau0uf07k0tqcbi8y296ygeoijivg54y4go\",\n \"assignees\" : [ {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Ninfa Conn\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"yxfi8j93u5ycnvgepmqun5k1s7u3pn5ll2cz1oaetupf2e3wvolbcipmnkg2c2l4y3m9tu1248o52ul05w0ot3axj0k9hfuqrbue0f2m3exb9sq1sayxj1s75af2kpp4lkw5qn179yg8973l7a4viju4gggfdc4ynw36j8q5e333ksmi\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n } ],\n \"created_at\" : \"2011-04-22T13:33:48Z\",\n \"body\" : \"I'm having a problem with this.\",\n \"repository\" : {\n \"allow_forking\" : false,\n \"anonymous_access_enabled\" : false,\n \"is_template\" : true,\n \"stargazers_count\" : 80,\n \"pushed_at\" : \"2011-01-26T19:06:43Z\",\n \"language\" : \"d8km6qgkmq7ts47ucja6e1lgtbdl6s6bvqd18jeq1mfcuyhkws9k2caus7hpg0p6jxb0ix3han9hhiuq4sed4afjdalg506qsrc4dbq\",\n \"subscription_url\" : \"http://api.github.com/repos/octocat/Hello-World/subscription\",\n \"branches_url\" : \"http://api.github.com/repos/octocat/Hello-World/branches{/branch}\",\n \"allow_rebase_merge\" : true,\n \"issue_comment_url\" : \"http://api.github.com/repos/octocat/Hello-World/issues/comments{/number}\",\n \"labels_url\" : \"http://api.github.com/repos/octocat/Hello-World/labels{/name}\",\n \"permissions\" : {\n \"pull\" : true,\n \"maintain\" : false,\n \"admin\" : false,\n \"triage\" : false,\n \"push\" : true\n },\n \"subscribers_url\" : \"http://api.github.com/repos/octocat/Hello-World/subscribers\",\n \"releases_url\" : \"http://api.github.com/repos/octocat/Hello-World/releases{/id}\",\n \"svn_url\" : \"https://svn.github.com/octocat/Hello-World\",\n \"subscribers_count\" : 2086449956866493525,\n \"id\" : 42,\n \"master_branch\" : \"amw72y4vrmgcwy4o7rup8lzfckza5w0de2zvri5n5fgrkxjxbrsf64hxf4uqfxkvfrcnmmghmafr4m4aaq1f0660rop\",\n \"forks\" : 829892790014452256,\n \"allow_merge_commit\" : true,\n \"archive_url\" : \"http://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref}\",\n \"git_refs_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/refs{/sha}\",\n \"forks_url\" : \"http://api.github.com/repos/octocat/Hello-World/forks\",\n \"visibility\" : \"158bum8e2lgewzd1g6tnc8wqwhbfr3j290zox6e0wfc7t2gpoigyemzhuvjk6repyjmyio6hbmxej5ytm5pzex89z8eho5n22a6nisncbm4aa7a46t2ic8ym7kq15hfxy9kp34lnwj53yto8\",\n \"statuses_url\" : \"http://api.github.com/repos/octocat/Hello-World/statuses/{sha}\",\n \"network_count\" : 7034132157484303768,\n \"ssh_url\" : \"git@github.com:octocat/Hello-World.git\",\n \"license\" : {\n \"html_url\" : \"https://web.example.mocklab.io/534882\",\n \"name\" : \"MIT License\",\n \"spdx_id\" : \"MIT\",\n \"key\" : \"mit\",\n \"url\" : \"https://api.github.com/licenses/mit\",\n \"node_id\" : \"MDc6TGljZW5zZW1pdA==\"\n },\n \"full_name\" : \"octocat/Hello-World\",\n \"size\" : 108,\n \"template_repository\" : {\n \"anonymous_access_enabled\" : true,\n \"is_template\" : true,\n \"stargazers_count\" : 63145372588112637,\n \"pushed_at\" : \"mtp3w9q7a6l5lof0gli9sfzg57d897rtvvsgthczve4371b0o3glz5j2mffvm1qyx8xc3ikkdbm9r5a3grhup6c7j495anaj2nbfe0avs72rsi8k57lsi6go2s8omxv1g8zp5refpyx9b21odjxr5d851wgh5r93zpsupjg8jpqmwwxmzko3305oonc8pe9\",\n \"language\" : \"2egcaihg42ppf9wy7y0hxztkjzyveoak9zwv7xwpqytp7o1eyvil1s4a19sx24isl4z405j2966vw2f32sg04phne55shh238oqmy7q35rncmzpq5gkum2bpq3vg\",\n \"subscription_url\" : \"https://web.example.mocklab.io/651204\",\n \"branches_url\" : \"https://web.example.mocklab.io/598738\",\n \"allow_rebase_merge\" : true,\n \"issue_comment_url\" : \"https://web.example.mocklab.io/052376\",\n \"labels_url\" : \"https://web.example.mocklab.io/999845\",\n \"permissions\" : { },\n \"subscribers_url\" : \"https://web.example.mocklab.io/898163\",\n \"releases_url\" : \"https://web.example.mocklab.io/414453\",\n \"svn_url\" : \"https://web.example.mocklab.io/677364\",\n \"subscribers_count\" : 2976665890513659275,\n \"id\" : 5324098922638876223,\n \"allow_merge_commit\" : false,\n \"archive_url\" : \"https://web.example.mocklab.io/289651\",\n \"git_refs_url\" : \"https://web.example.mocklab.io/312527\",\n \"forks_url\" : \"https://web.example.mocklab.io/263181\",\n \"visibility\" : \"necqv4bmyumfnpz290id86umnsbfnndz1n6ygrnb8orb3dm15imzv6gqwflalwb936ob0rjgitjhg40lb2frs161l63oxqvrepqb6i96ubzd01qinuf5xr6f5pjqbc9\",\n \"statuses_url\" : \"https://web.example.mocklab.io/726276\",\n \"network_count\" : 6620887673197139050,\n \"ssh_url\" : \"https://web.example.mocklab.io/424229\",\n \"full_name\" : \"Ms. Paul Murphy\",\n \"size\" : 177441388947361420,\n \"languages_url\" : \"https://web.example.mocklab.io/781778\",\n \"clone_url\" : \"https://web.example.mocklab.io/735731\",\n \"collaborators_url\" : \"https://web.example.mocklab.io/946076\",\n \"html_url\" : \"https://web.example.mocklab.io/242781\",\n \"name\" : \"Carmelia Kemmer\",\n \"pulls_url\" : \"https://web.example.mocklab.io/726812\",\n \"default_branch\" : \"5v98teogsb9rrox8oqnaltt2lqtydkjhpkwny4584oum196wf9je074igvkolnfvkjjpzbntrfgsjaxl8gyy\",\n \"hooks_url\" : \"https://web.example.mocklab.io/204262\",\n \"trees_url\" : \"https://web.example.mocklab.io/374244\",\n \"tags_url\" : \"https://web.example.mocklab.io/402310\",\n \"contributors_url\" : \"https://web.example.mocklab.io/982074\",\n \"private\" : true,\n \"has_downloads\" : false,\n \"notifications_url\" : \"https://web.example.mocklab.io/351707\",\n \"open_issues_count\" : 5209263214914345904,\n \"created_at\" : \"avpe7348cc8umlpmjugu0x9bx1jtzb2pps2si09azkbg\",\n \"description\" : \"Maiores nobis aperiam dolor quibusdam sunt consequatur. Et maiores et fugit mollitia. Et ab aliquam corrupti. Aut maxime vel minima at. Voluptatem consectetur tenetur.\",\n \"deployments_url\" : \"https://web.example.mocklab.io/891636\",\n \"keys_url\" : \"https://web.example.mocklab.io/195791\",\n \"has_projects\" : true,\n \"archived\" : true,\n \"has_wiki\" : false,\n \"updated_at\" : \"2022-05-21T06:17:59.321655Z\",\n \"comments_url\" : \"https://web.example.mocklab.io/743114\",\n \"stargazers_url\" : \"https://web.example.mocklab.io/508305\",\n \"disabled\" : true,\n \"delete_branch_on_merge\" : false,\n \"git_url\" : \"https://web.example.mocklab.io/243083\",\n \"has_pages\" : true,\n \"owner\" : { },\n \"allow_squash_merge\" : false,\n \"commits_url\" : \"https://web.example.mocklab.io/005967\",\n \"compare_url\" : \"https://web.example.mocklab.io/610038\",\n \"git_commits_url\" : \"https://web.example.mocklab.io/932398\",\n \"topics\" : [ \"tqtjzovr3zy2wguk\", \"41wi3i5yu3wyhn89useao2t037xvqxu8qy21qg3s5wwq7uc0dideo26d10inege0v36cm3h4tf4zv5gaprc07gp5khhxu5jtch9xx42lyvvnc1wrnzon0vhcyee9pknfgg3ucuasuu78ul1bzupnr76frf17neptgo4ake9x4a691e6dg4qgc90euod0smqwc9c\", \"zda2eqlb3r1il6j6lib6bu3boc1lk83it5yvyafomz7zcn13rqa6uoo0zh46psj3ha4k64weh2vpcg3g12r04ryg7zmmmq8fvua4r1x83g0ovclnojrrxvq1suksvmkpsx\", \"oqh7ybltit3tmsipkmq2no1tx0w1d14qj4c9a8dyyk10iu57is684nbq2rm8gpkl9qjf51flxxh8rpgwbz5w3oyjwhnrb4r0w7yjxrwhnexvd9zfhkmsxvmkbu0ye33w94momh3jcvqvh7hd3uh7lhqs7m7uwpwhx2t5\", \"zccpp94h0iz9jhpuw9k2uf5xhnackmr2uiouyz9b2dt0on2teo5qrtmzffy05rh8178m5rvv5a972ckmsmhbs4t5566bv99ie2w8x6h0ux5dftl2o6u8ls4jnx1edaiozowmfotjydofn2fzc46adl93tjbob0jy\", \"0kbjctuus0w946n2wczc1e1rbty2n1gnytxxbovh6sgjinm1q2zixrbx0r3xcczpd9vpt0wfilmokl54velpy3zg8orqsmw1clqoewo507h66olvnkm904sx8vf1qn744h7pzffa45bf14le5yiu0v2vwtb1mctp5o062ntupoqovu2y1rxnx42a4avbczd8\", \"kwcvkaitdu7sbxalefeafs9ncfansqfxlppjnoepacmcj2yjsz2wmco4h9udf9x55td73nmtv7o16k\" ],\n \"blobs_url\" : \"https://web.example.mocklab.io/355303\",\n \"git_tags_url\" : \"https://web.example.mocklab.io/232050\",\n \"merges_url\" : \"https://web.example.mocklab.io/459834\",\n \"downloads_url\" : \"https://web.example.mocklab.io/123627\",\n \"has_issues\" : false,\n \"url\" : \"https://web.example.mocklab.io/229087\",\n \"contents_url\" : \"https://web.example.mocklab.io/138672\",\n \"mirror_url\" : \"https://web.example.mocklab.io/807289\",\n \"milestones_url\" : \"https://web.example.mocklab.io/492721\",\n \"teams_url\" : \"https://web.example.mocklab.io/309507\",\n \"fork\" : true,\n \"issues_url\" : \"https://web.example.mocklab.io/989296\",\n \"events_url\" : \"https://web.example.mocklab.io/620823\",\n \"issue_events_url\" : \"https://web.example.mocklab.io/316416\",\n \"assignees_url\" : \"https://web.example.mocklab.io/831518\",\n \"watchers_count\" : 7650349551520010836,\n \"forks_count\" : 7483434085210992268,\n \"homepage\" : \"qvnyq15aukzpcjiz399vz\",\n \"node_id\" : \"hcw0\"\n },\n \"languages_url\" : \"http://api.github.com/repos/octocat/Hello-World/languages\",\n \"clone_url\" : \"https://github.com/octocat/Hello-World.git\",\n \"collaborators_url\" : \"http://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator}\",\n \"html_url\" : \"https://github.com/octocat/Hello-World\",\n \"name\" : \"Team Environment\",\n \"pulls_url\" : \"http://api.github.com/repos/octocat/Hello-World/pulls{/number}\",\n \"default_branch\" : \"master\",\n \"hooks_url\" : \"http://api.github.com/repos/octocat/Hello-World/hooks\",\n \"trees_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/trees{/sha}\",\n \"tags_url\" : \"http://api.github.com/repos/octocat/Hello-World/tags\",\n \"contributors_url\" : \"http://api.github.com/repos/octocat/Hello-World/contributors\",\n \"private\" : true,\n \"has_downloads\" : true,\n \"notifications_url\" : \"http://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating}\",\n \"open_issues_count\" : 0,\n \"created_at\" : \"2011-01-26T19:01:12Z\",\n \"description\" : \"This your first repo!\",\n \"watchers\" : 1923414250679034952,\n \"deployments_url\" : \"http://api.github.com/repos/octocat/Hello-World/deployments\",\n \"keys_url\" : \"http://api.github.com/repos/octocat/Hello-World/keys{/key_id}\",\n \"has_projects\" : true,\n \"archived\" : false,\n \"has_wiki\" : true,\n \"updated_at\" : \"2011-01-26T19:14:43Z\",\n \"comments_url\" : \"http://api.github.com/repos/octocat/Hello-World/comments{/number}\",\n \"stargazers_url\" : \"http://api.github.com/repos/octocat/Hello-World/stargazers\",\n \"disabled\" : true,\n \"delete_branch_on_merge\" : false,\n \"git_url\" : \"git:github.com/octocat/Hello-World.git\",\n \"has_pages\" : false,\n \"owner\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Kevin Boyer\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"tp2u0z68rnxvfmqjtpmc8pcf6cfvkd5edd1o6ct4nka568s3ydh6nef219ryjbeqbxqs3i06uguuers0yp18d5416\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"allow_squash_merge\" : true,\n \"commits_url\" : \"http://api.github.com/repos/octocat/Hello-World/commits{/sha}\",\n \"compare_url\" : \"http://api.github.com/repos/octocat/Hello-World/compare/{base}...{head}\",\n \"git_commits_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/commits{/sha}\",\n \"topics\" : [ \"gkxe2xc8wwvn8wat9qu7706ut2u5n4r5j451ka00hibeoxjcqgtwjtjlgktk1od12osxj5c468uuxc9nkyh5q3fn5c2kvgz49i2v6lc85n2q4qknxe3dnogvizdcgtb3spcfe8s\", \"5llst94fd331bbw8tzl09mmskt1h3lgz99utk1c5kjp1mu6td9hjogch7e45gxr2pzzncxp64jprk7se3zkg27h2hshpgcpimicohliti9xd868ffygvi9r03bxj43r83gkazi3j9y2xyy18z0i8y9gbcjkxt14cxj5gyrgvxmgq53r4c5\", \"ks58c\" ],\n \"blobs_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/blobs{/sha}\",\n \"git_tags_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/tags{/sha}\",\n \"merges_url\" : \"http://api.github.com/repos/octocat/Hello-World/merges\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:42Z\\\"\",\n \"downloads_url\" : \"http://api.github.com/repos/octocat/Hello-World/downloads\",\n \"has_issues\" : true,\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World\",\n \"contents_url\" : \"http://api.github.com/repos/octocat/Hello-World/contents/{+path}\",\n \"mirror_url\" : \"git:git.example.com/octocat/Hello-World\",\n \"milestones_url\" : \"http://api.github.com/repos/octocat/Hello-World/milestones{/number}\",\n \"teams_url\" : \"http://api.github.com/repos/octocat/Hello-World/teams\",\n \"fork\" : false,\n \"issues_url\" : \"http://api.github.com/repos/octocat/Hello-World/issues{/number}\",\n \"events_url\" : \"http://api.github.com/repos/octocat/Hello-World/events\",\n \"issue_events_url\" : \"http://api.github.com/repos/octocat/Hello-World/issues/events{/number}\",\n \"organization\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Max MacGyver\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"a0egq3qtwbnvhgxps4a35kfl0vbgt90lmxkvwret4pxpms60lofprcsde9zhwzvh4yuqme8em4w3w5qsgpi16qxgxptmlbwgyxyo08w8e2eqq9w3rfu8qql5nb2lexdal2evg592boxrhmhq0a6s8uw9dbog8x34tv9mxa08fawd4fls4ptvksk7zs8e9w\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"assignees_url\" : \"http://api.github.com/repos/octocat/Hello-World/assignees{/user}\",\n \"open_issues\" : 2407052870641637175,\n \"watchers_count\" : 80,\n \"forks_count\" : 9,\n \"homepage\" : \"https://github.com\",\n \"node_id\" : \"MDEwOlJlcG9zaXRvcnkxMjk2MjY5\"\n },\n \"title\" : \"Found a bug\",\n \"author_association\" : \"OWNER\",\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347/labels{/name}\",\n \"number\" : 1347,\n \"performed_via_github_app\" : {\n \"owner\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Iva Legros\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"mio15mm3u77b2540afokdijg0ghxkdrkncndbm35gbbtvmkbw7i7pwijzy9hu2se38s6tijly7mlbozezk3ie8l7xgdy3uzjxuojngyyo\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"installations_count\" : 5,\n \"created_at\" : \"2017-07-08T16:18:44-04:00\",\n \"description\" : \"The description of the app.\",\n \"client_id\" : \"\\\"Iv1.25b5d1e65ffc4022\\\"\",\n \"external_url\" : \"https://example.com\",\n \"updated_at\" : \"2017-07-08T16:18:44-04:00\",\n \"permissions\" : {\n \"deployments\" : \"write\",\n \"issues\" : \"read\"\n },\n \"html_url\" : \"https://github.com/apps/super-ci\",\n \"name\" : \"Probot Owners\",\n \"pem\" : \"\\\"-----BEGIN RSA PRIVATE KEY-----\\\\nMIIEogIBAAKCAQEArYxrNYD/iT5CZVpRJu4rBKmmze3PVmT/gCo2ATUvDvZTPTey\\\\nxcGJ3vvrJXazKk06pN05TN29o98jrYz4cengG3YGsXPNEpKsIrEl8NhbnxapEnM9\\\\nJCMRe0P5JcPsfZlX6hmiT7136GRWiGOUba2X9+HKh8QJVLG5rM007TBER9/z9mWm\\\\nrJuNh+m5l320oBQY/Qq3A7wzdEfZw8qm/mIN0FCeoXH1L6B8xXWaAYBwhTEh6SSn\\\\nZHlO1Xu1JWDmAvBCi0RO5aRSKM8q9QEkvvHP4yweAtK3N8+aAbZ7ovaDhyGz8r6r\\\\nzhU1b8Uo0Z2ysf503WqzQgIajr7Fry7/kUwpgQIDAQABAoIBADwJp80Ko1xHPZDy\\\\nfcCKBDfIuPvkmSW6KumbsLMaQv1aGdHDwwTGv3t0ixSay8CGlxMRtRDyZPib6SvQ\\\\n6OH/lpfpbMdW2ErkksgtoIKBVrDilfrcAvrNZu7NxRNbhCSvN8q0s4ICecjbbVQh\\\\nnueSdlA6vGXbW58BHMq68uRbHkP+k+mM9U0mDJ1HMch67wlg5GbayVRt63H7R2+r\\\\nVxcna7B80J/lCEjIYZznawgiTvp3MSanTglqAYi+m1EcSsP14bJIB9vgaxS79kTu\\\\noiSo93leJbBvuGo8QEiUqTwMw4tDksmkLsoqNKQ1q9P7LZ9DGcujtPy4EZsamSJT\\\\ny8OJt0ECgYEA2lxOxJsQk2kI325JgKFjo92mQeUObIvPfSNWUIZQDTjniOI6Gv63\\\\nGLWVFrZcvQBWjMEQraJA9xjPbblV8PtfO87MiJGLWCHFxmPz2dzoedN+2Coxom8m\\\\nV95CLz8QUShuao6u/RYcvUaZEoYs5bHcTmy5sBK80JyEmafJPtCQVxMCgYEAy3ar\\\\nZr3yv4xRPEPMat4rseswmuMooSaK3SKub19WFI5IAtB/e7qR1Rj9JhOGcZz+OQrl\\\\nT78O2OFYlgOIkJPvRMrPpK5V9lslc7tz1FSh3BZMRGq5jSyD7ETSOQ0c8T2O/s7v\\\\nbeEPbVbDe4mwvM24XByH0GnWveVxaDl51ABD65sCgYB3ZAspUkOA5egVCh8kNpnd\\\\nSd6SnuQBE3ySRlT2WEnCwP9Ph6oPgn+oAfiPX4xbRqkL8q/k0BdHQ4h+zNwhk7+h\\\\nWtPYRAP1Xxnc/F+jGjb+DVaIaKGU18MWPg7f+FI6nampl3Q0KvfxwX0GdNhtio8T\\\\nTj1E+SnFwh56SRQuxSh2gwKBgHKjlIO5NtNSflsUYFM+hyQiPiqnHzddfhSG+/3o\\\\nm5nNaSmczJesUYreH5San7/YEy2UxAugvP7aSY2MxB+iGsiJ9WD2kZzTUlDZJ7RV\\\\nUzWsoqBR+eZfVJ2FUWWvy8TpSG6trh4dFxImNtKejCR1TREpSiTV3Zb1dmahK9GV\\\\nrK9NAoGAbBxRLoC01xfxCTgt5BDiBcFVh4fp5yYKwavJPLzHSpuDOrrI9jDn1oKN\\\\nonq5sDU1i391zfQvdrbX4Ova48BN+B7p63FocP/MK5tyyBoT8zQEk2+vWDOw7H/Z\\\\nu5dTCPxTIsoIwUw1I+7yIxqJzLPFgR2gVBwY1ra/8iAqCj+zeBw=\\\\n-----END RSA PRIVATE KEY-----\\\\n\\\"\",\n \"webhook_secret\" : \"\\\"6fba8f2fc8a7e8f2cca5577eddd82ca7586b3b6b\\\"\",\n \"client_secret\" : \"\\\"1d4b2097ac622ba702d19de498f005747a8b21d3\\\"\",\n \"id\" : 37,\n \"events\" : [ \"label\", \"deployment\" ],\n \"slug\" : \"probot-owners\",\n \"node_id\" : \"MDExOkludGVncmF0aW9uMQ==\"\n },\n \"updated_at\" : \"2011-04-22T13:33:48Z\",\n \"comments_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347/comments\",\n \"active_lock_reason\" : \"too heated\",\n \"id\" : 1,\n \"repository_url\" : \"https://api.github.com/repos/octocat/Hello-World\",\n \"state\" : \"open\",\n \"locked\" : true,\n \"timeline_url\" : \"https://web.example.mocklab.io/660611\",\n \"pull_request\" : {\n \"patch_url\" : \"https://web.example.mocklab.io/427558\",\n \"html_url\" : \"https://web.example.mocklab.io/298268\",\n \"merged_at\" : \"2023-03-02T23:28:24.323Z\",\n \"diff_url\" : \"https://web.example.mocklab.io/896775\",\n \"url\" : \"https://web.example.mocklab.io/355849\"\n },\n \"closed_at\" : \"2023-12-15T14:11:26.324Z\",\n \"comments\" : 0,\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347\",\n \"labels\" : [ {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n } ],\n \"milestone\" : {\n \"creator\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Zina Erdman\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"ao5mqif7rv3xbif3r342jc73qxlcwbxnv1ywnr54jdnu5dmyq\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"closed_at\" : \"2013-02-12T13:22:01Z\",\n \"created_at\" : \"2011-04-10T20:09:31Z\",\n \"description\" : \"Tracking milestone for version 1.0\",\n \"closed_issues\" : 8,\n \"title\" : \"v1.0\",\n \"due_on\" : \"2012-10-09T23:39:01Z\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones/1\",\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones/1/labels\",\n \"number\" : 42,\n \"updated_at\" : \"2014-03-03T18:58:10Z\",\n \"html_url\" : \"https://github.com/octocat/Hello-World/milestones/v1.0\",\n \"id\" : 1002604,\n \"state\" : \"open\",\n \"open_issues\" : 4,\n \"node_id\" : \"MDk6TWlsZXN0b25lMTAwMjYwNA==\"\n },\n \"events_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347/events\",\n \"html_url\" : \"https://github.com/octocat/Hello-World/issues/1347\",\n \"assignee\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Chris Altenwerth\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"pdlty2dsvwvxjeokwrvqn\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"user\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"mauricio.adams\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"ktds6c398rsjvf21pmu8u5lu8flpzyp8jq7t3c2je6c4z10wpk59db1y6cxiwer1lgw6p971gd42ape4qtqz4zc7mb3p2yhxyt9yl2ib2m9cbeysxk4\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"node_id\" : \"MDU6SXNzdWUx\"\n },\n \"action\" : \"ebd4mhnaaz2g47caob99nyeygns1g7vxf3y3jvlv1a\",\n \"comment\" : {\n \"issue_url\" : \"https://web.example.mocklab.io/044445\",\n \"body_html\" : \"ahh5qc81lpjbrp34bdif026cvanxyvpxz9oc32hbyqylhy9uw1d4iuz2uldqwltfhjdp3oyqpav9odgugyogi6hzi4v3sg0nnrbmocz3uirnr5k57r3g7z\",\n \"body_text\" : \"e35rd1kf5ev98k03o3epal1mh1ubsarc9t1hcbjtipbphjznegk780p427z4n225s5f8us83mk\",\n \"created_at\" : \"2011-04-14T16:00:49Z\",\n \"body\" : \"What version of Safari were you using when you observed this bug?\",\n \"url\" : \"https://api.github.com/repositories/42/issues/comments/1\",\n \"author_association\" : \"OWNER\",\n \"performed_via_github_app\" : {\n \"owner\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Mohammad Wyman\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"waagxj1fgv0040i28psyxnc4h00jjcwnbggv9ku9m6cj8lxwwxebx89ouhywsh704j2vaicd4uhroz0ov6enj37sxlc5dt2xjhw4are68mcauv2view678pfg34ay903z67ewhq4js37ark99ncwq3we4w0gxj\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"installations_count\" : 5,\n \"created_at\" : \"2017-07-08T16:18:44-04:00\",\n \"description\" : \"The description of the app.\",\n \"client_id\" : \"\\\"Iv1.25b5d1e65ffc4022\\\"\",\n \"external_url\" : \"https://example.com\",\n \"updated_at\" : \"2017-07-08T16:18:44-04:00\",\n \"permissions\" : {\n \"deployments\" : \"write\",\n \"issues\" : \"read\"\n },\n \"html_url\" : \"https://github.com/apps/super-ci\",\n \"name\" : \"Probot Owners\",\n \"pem\" : \"\\\"-----BEGIN RSA PRIVATE KEY-----\\\\nMIIEogIBAAKCAQEArYxrNYD/iT5CZVpRJu4rBKmmze3PVmT/gCo2ATUvDvZTPTey\\\\nxcGJ3vvrJXazKk06pN05TN29o98jrYz4cengG3YGsXPNEpKsIrEl8NhbnxapEnM9\\\\nJCMRe0P5JcPsfZlX6hmiT7136GRWiGOUba2X9+HKh8QJVLG5rM007TBER9/z9mWm\\\\nrJuNh+m5l320oBQY/Qq3A7wzdEfZw8qm/mIN0FCeoXH1L6B8xXWaAYBwhTEh6SSn\\\\nZHlO1Xu1JWDmAvBCi0RO5aRSKM8q9QEkvvHP4yweAtK3N8+aAbZ7ovaDhyGz8r6r\\\\nzhU1b8Uo0Z2ysf503WqzQgIajr7Fry7/kUwpgQIDAQABAoIBADwJp80Ko1xHPZDy\\\\nfcCKBDfIuPvkmSW6KumbsLMaQv1aGdHDwwTGv3t0ixSay8CGlxMRtRDyZPib6SvQ\\\\n6OH/lpfpbMdW2ErkksgtoIKBVrDilfrcAvrNZu7NxRNbhCSvN8q0s4ICecjbbVQh\\\\nnueSdlA6vGXbW58BHMq68uRbHkP+k+mM9U0mDJ1HMch67wlg5GbayVRt63H7R2+r\\\\nVxcna7B80J/lCEjIYZznawgiTvp3MSanTglqAYi+m1EcSsP14bJIB9vgaxS79kTu\\\\noiSo93leJbBvuGo8QEiUqTwMw4tDksmkLsoqNKQ1q9P7LZ9DGcujtPy4EZsamSJT\\\\ny8OJt0ECgYEA2lxOxJsQk2kI325JgKFjo92mQeUObIvPfSNWUIZQDTjniOI6Gv63\\\\nGLWVFrZcvQBWjMEQraJA9xjPbblV8PtfO87MiJGLWCHFxmPz2dzoedN+2Coxom8m\\\\nV95CLz8QUShuao6u/RYcvUaZEoYs5bHcTmy5sBK80JyEmafJPtCQVxMCgYEAy3ar\\\\nZr3yv4xRPEPMat4rseswmuMooSaK3SKub19WFI5IAtB/e7qR1Rj9JhOGcZz+OQrl\\\\nT78O2OFYlgOIkJPvRMrPpK5V9lslc7tz1FSh3BZMRGq5jSyD7ETSOQ0c8T2O/s7v\\\\nbeEPbVbDe4mwvM24XByH0GnWveVxaDl51ABD65sCgYB3ZAspUkOA5egVCh8kNpnd\\\\nSd6SnuQBE3ySRlT2WEnCwP9Ph6oPgn+oAfiPX4xbRqkL8q/k0BdHQ4h+zNwhk7+h\\\\nWtPYRAP1Xxnc/F+jGjb+DVaIaKGU18MWPg7f+FI6nampl3Q0KvfxwX0GdNhtio8T\\\\nTj1E+SnFwh56SRQuxSh2gwKBgHKjlIO5NtNSflsUYFM+hyQiPiqnHzddfhSG+/3o\\\\nm5nNaSmczJesUYreH5San7/YEy2UxAugvP7aSY2MxB+iGsiJ9WD2kZzTUlDZJ7RV\\\\nUzWsoqBR+eZfVJ2FUWWvy8TpSG6trh4dFxImNtKejCR1TREpSiTV3Zb1dmahK9GV\\\\nrK9NAoGAbBxRLoC01xfxCTgt5BDiBcFVh4fp5yYKwavJPLzHSpuDOrrI9jDn1oKN\\\\nonq5sDU1i391zfQvdrbX4Ova48BN+B7p63FocP/MK5tyyBoT8zQEk2+vWDOw7H/Z\\\\nu5dTCPxTIsoIwUw1I+7yIxqJzLPFgR2gVBwY1ra/8iAqCj+zeBw=\\\\n-----END RSA PRIVATE KEY-----\\\\n\\\"\",\n \"webhook_secret\" : \"\\\"6fba8f2fc8a7e8f2cca5577eddd82ca7586b3b6b\\\"\",\n \"client_secret\" : \"\\\"1d4b2097ac622ba702d19de498f005747a8b21d3\\\"\",\n \"id\" : 37,\n \"events\" : [ \"label\", \"deployment\" ],\n \"slug\" : \"probot-owners\",\n \"node_id\" : \"MDExOkludGVncmF0aW9uMQ==\"\n },\n \"updated_at\" : \"2011-04-14T16:00:49Z\",\n \"html_url\" : \"https://web.example.mocklab.io/252711\",\n \"reactions\" : {\n \"confused\" : 5404899343936521170,\n \"-1\" : 1408697740007477400,\n \"+1\" : 3678862092966770235,\n \"total_count\" : 840416123613769533,\n \"rocket\" : 664757234297565786,\n \"hooray\" : 7865361049370917700,\n \"eyes\" : 6398363962839004122,\n \"heart\" : 1474202258964506876,\n \"laugh\" : 6933086312431898218,\n \"url\" : \"https://web.example.mocklab.io/437312\"\n },\n \"id\" : 42,\n \"user\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"domonique.mclaughlin\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"l9ihzt0cyny9ps1zow8y1h1gxqxen5tv9oi3batsshwy77t2nvlqo2pj6ol7y193ox0ua41wyuq1qf\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"node_id\" : \"55nb\"\n }\n },\n \"repo\" : {\n \"name\" : \"Jonathon Kris\",\n \"id\" : 6493496963382210595,\n \"url\" : \"https://web.example.mocklab.io/694587\"\n },\n \"created_at\" : \"2023-05-28T19:23:11.325Z\",\n \"id\" : \"5x4e\",\n \"type\" : \"s0ni3yvcd6uo8zm817ewb9pc62yy2jozk5me7dwivra0zsdc6bjee9quc3753pyrribl2frdnany33j2ha3l9c576difmfmb\"\n}, {\n \"actor\" : {\n \"display_login\" : \"4qsjti08lxk19jy24jx3jh2ryl4hi6lhqixbmfr8nnqn1hvo2zkwolp92n3kz8141vxaybmg170443q6mnk20\",\n \"avatar_url\" : \"https://s3.amazonaws.com/uifaces/faces/twitter/markolschesky/128.jpg\",\n \"id\" : 1900581150936228514,\n \"login\" : \"02n7pucycr6734cb8s6e3mgbo5emnpxszs2d5sxtqq\",\n \"gravatar_id\" : \"33fl\",\n \"url\" : \"https://web.example.mocklab.io/738175\"\n },\n \"public\" : true,\n \"org\" : {\n \"display_login\" : \"o43wnah9x30qgagrzafyxk58ko07hm195gdz4osga1j4nj6xlsxxxcsq323g6tcl81jb8cjifkv8tdyfr8032u1xi3sgu2d7ab1b7srvydz63r6i9spfrds2j04w3h1nt56pwvikh3jyg1ntzyf\",\n \"avatar_url\" : \"https://s3.amazonaws.com/uifaces/faces/twitter/g3d/128.jpg\",\n \"id\" : 5302726841456372678,\n \"login\" : \"dqmnpxzrurdx0hl65le5q5btwe5jla6btx86wfo227qai91ki6gijv8h0yrl5cvl24zurxyovwcl5tffc55xutpq09glcog5637prt2t1b91lhgpne5evodbpcx9iddf7b41rkvckzka7pf8\",\n \"gravatar_id\" : \"jvs2\",\n \"url\" : \"https://web.example.mocklab.io/835157\"\n },\n \"payload\" : {\n \"pages\" : [ {\n \"summary\" : \"Voluptates animi itaque id ducimus quasi itaque. Unde quia adipisci modi. Maiores et optio similique animi error earum voluptates.\",\n \"html_url\" : \"https://web.example.mocklab.io/245069\",\n \"page_name\" : \"Kristy Koss\",\n \"action\" : \"77tzcaemttuhkivixbxeua6nvf3l9aqmybvqo0tcvad3tgn\",\n \"title\" : \"A earum id excepturi quam.\",\n \"sha\" : \"dsrdbu23flwpxhg2c0yqx6f4v6pzlbvc91gwgyz8z4kdpttruyottmdyhas3bf9hwokkwernczvj4hsl68ebdb5meh4n1xa2uz11augah6g23rwm8sz752gu9m0bc2irvt8qd6hnbpx3steoj50qtc0pipdq0z1s8eozq1fw9tg9ssklfsx7hiviq\"\n } ],\n \"issue\" : {\n \"body_html\" : \"s7h1q0by463s1ga32j5g8dmyv0v0b484zxvg547glv1de8etv7lt75pxnyk2hlw6\",\n \"body_text\" : \"4on7z59\",\n \"assignees\" : [ {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Prince Macejkovic\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"ld81tmqdcdklhxeugfvelqhfrka80milagsun17lmyhzddzegywpklwc94iiap59ankt0ald0drrdkxnsbr472hrcvjdpqvzk47ofza8916xxc48tbrp0ww306kje5wrc49xlrs62f1l9kspl25a931k2cz1lrp66q8y6fqo9bxi00irbjdd38tvsvg7m7gcv4x8m1f1\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n }, {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Myrl Wiegand\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"o04x534j1nl3aiqlghx6msc5zlvrpf35a3rzbqefadz8sepbno71yrt7r1x7e1crw3hszkdkpky9humupt7pua0xqpbs8gq1r25b02xfbxfx8yg8y169a2tpqkos6u77vy4hv2maus\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n }, {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Marget Funk\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"9ekpt9e8c0fr2oevmll9xg6qxzbxlmdjt7ihef85d5uszcagehp1t78yhig1g4w5d7ahmhklg5x1qle6dheu6o2gsgqk6ooinxp1y9xfpg9c4mn7ynht51kp4rfvybluhyoodpkhk0of33ckjd8b1wlhzo689wnu5q5obk9rcv8sv5rjq0xi7l6z2b3pm\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n }, {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Mrs. Mickey Gerhold\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"iv1uzpi5cgdr09nhkfkzvxdf9j6a623am7jvcg0homayinyilg7fofikci35zfog19obii96wvw2rd6ce8x08x3apifycfv8mh7z1awnv4ou9yx0c95ffdi67swqlscbucuettj05fhblc9kj6w45ta0vf3lhjniclahmn1s7ic8nh11xoiuax3osznimbp3p\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n }, {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Estell Kuphal V\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"4j3fkn3uouj70c0v7nhmw80ms9e5n2r5a6sez1x1ow983heh020hx5hq6ueoo5hxxmulrvczqdgmcvei21155tyuccdymzics9zcsp3zlt85z7yvbkzzs3\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n }, {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Raymundo Spinka\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"n37fi\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n }, {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Jordan Schaden\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"rdzii8a1t3bar9z9qmiemmwmb5nyli4d2e3vbkqc4kz9uhanw4dj6v5rimikwp4rsv21b7dvvmdk21z\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n }, {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Filiberto McKenzie V\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"18w5yzyqp3dgq7rfb1rtf7q8m3t3uuz9nudntyjwqbrjnsar7yfuc6nle9f4mnpngv20j75sjb1yltt7twlhxdq9hdrffk7yn0qd1l7qww5d3sa2vwig48sthzn0zagdevzlupmmg81t15hf65ci07pubr10tohyz2\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n } ],\n \"created_at\" : \"2011-04-22T13:33:48Z\",\n \"body\" : \"I'm having a problem with this.\",\n \"repository\" : {\n \"allow_forking\" : false,\n \"anonymous_access_enabled\" : true,\n \"is_template\" : true,\n \"stargazers_count\" : 80,\n \"pushed_at\" : \"2011-01-26T19:06:43Z\",\n \"language\" : \"rev1irv16nxv04sap\",\n \"subscription_url\" : \"http://api.github.com/repos/octocat/Hello-World/subscription\",\n \"branches_url\" : \"http://api.github.com/repos/octocat/Hello-World/branches{/branch}\",\n \"allow_rebase_merge\" : true,\n \"issue_comment_url\" : \"http://api.github.com/repos/octocat/Hello-World/issues/comments{/number}\",\n \"labels_url\" : \"http://api.github.com/repos/octocat/Hello-World/labels{/name}\",\n \"permissions\" : {\n \"pull\" : true,\n \"maintain\" : true,\n \"admin\" : true,\n \"triage\" : true,\n \"push\" : true\n },\n \"subscribers_url\" : \"http://api.github.com/repos/octocat/Hello-World/subscribers\",\n \"releases_url\" : \"http://api.github.com/repos/octocat/Hello-World/releases{/id}\",\n \"svn_url\" : \"https://svn.github.com/octocat/Hello-World\",\n \"subscribers_count\" : 4685189878055166020,\n \"id\" : 42,\n \"master_branch\" : \"1xa37q3t8j7rkjsai9x0xhswgltkedjxmtrquhcbb3qtdkrfh5br598bcwsvb9ffcpwuxjnr5zlhgntuoedpxbo89j1lw79p0oao1eekeo6rke48zhku6s623k6o15c87gke2\",\n \"forks\" : 6434873724155778296,\n \"allow_merge_commit\" : true,\n \"archive_url\" : \"http://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref}\",\n \"git_refs_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/refs{/sha}\",\n \"forks_url\" : \"http://api.github.com/repos/octocat/Hello-World/forks\",\n \"visibility\" : \"m6rderw6tg6ydgke17spkjenluj0wprin9t3iaei5tphn5it8qqq9e3qwtu5kltiygw5d6bgxay9y01bdd69vcztuicsuprb813eko6tc83ph7u4qq9d7jtz9ea2zisd66te2no3g251gc5wssprkspqlvyat4pc12om70sbfcp2j7xb\",\n \"statuses_url\" : \"http://api.github.com/repos/octocat/Hello-World/statuses/{sha}\",\n \"network_count\" : 7619016617532169033,\n \"ssh_url\" : \"git@github.com:octocat/Hello-World.git\",\n \"license\" : {\n \"html_url\" : \"https://web.example.mocklab.io/676928\",\n \"name\" : \"MIT License\",\n \"spdx_id\" : \"MIT\",\n \"key\" : \"mit\",\n \"url\" : \"https://api.github.com/licenses/mit\",\n \"node_id\" : \"MDc6TGljZW5zZW1pdA==\"\n },\n \"full_name\" : \"octocat/Hello-World\",\n \"size\" : 108,\n \"template_repository\" : {\n \"anonymous_access_enabled\" : false,\n \"is_template\" : false,\n \"stargazers_count\" : 105017365919450367,\n \"pushed_at\" : \"a5fxas6vw9bhh2ojebnt54gtdhz3\",\n \"language\" : \"6i5kz11qspvj5kmbd6zkl93uo1modsf5d1c2xt2x0zyb\",\n \"subscription_url\" : \"https://web.example.mocklab.io/724100\",\n \"branches_url\" : \"https://web.example.mocklab.io/676740\",\n \"allow_rebase_merge\" : true,\n \"issue_comment_url\" : \"https://web.example.mocklab.io/672691\",\n \"labels_url\" : \"https://web.example.mocklab.io/214690\",\n \"permissions\" : { },\n \"subscribers_url\" : \"https://web.example.mocklab.io/676407\",\n \"releases_url\" : \"https://web.example.mocklab.io/104742\",\n \"svn_url\" : \"https://web.example.mocklab.io/466075\",\n \"subscribers_count\" : 4494671088358064825,\n \"id\" : 4059098734739879444,\n \"allow_merge_commit\" : false,\n \"archive_url\" : \"https://web.example.mocklab.io/806673\",\n \"git_refs_url\" : \"https://web.example.mocklab.io/733478\",\n \"forks_url\" : \"https://web.example.mocklab.io/196789\",\n \"visibility\" : \"i07gkcrqu3amkym084e4ava74t3o8rw12jhplmqyh8okrc44m1dzv79n8xzcl3ktvb1yqgdjbv4m34cxkdvw6uehkvhzdvk8qzivscdff78ahthwxjd2fotx6ens57w73cq895hgecuy8tv7yrvqmdnos0ug4si9h9s077et4f7z\",\n \"statuses_url\" : \"https://web.example.mocklab.io/782515\",\n \"network_count\" : 2228037340400432222,\n \"ssh_url\" : \"https://web.example.mocklab.io/288166\",\n \"full_name\" : \"Francisco Walker\",\n \"size\" : 898466610727259561,\n \"languages_url\" : \"https://web.example.mocklab.io/023569\",\n \"clone_url\" : \"https://web.example.mocklab.io/918794\",\n \"collaborators_url\" : \"https://web.example.mocklab.io/953698\",\n \"html_url\" : \"https://web.example.mocklab.io/107464\",\n \"name\" : \"Sherwood Nolan\",\n \"pulls_url\" : \"https://web.example.mocklab.io/007729\",\n \"default_branch\" : \"ybz0uk64ljb6mw75duuuy2vcwjp8llglk3bp6jazpsr1zv4ak3bfrj967y9k6ex6nygdp7qmkqmssb5jk90maawqmgqfcanhypib36y881225s6g42odxj534sbn5dsif0lcl9wltww17qga2n7hyizu2rjoc7k1g64wi1a203snox68njwqbj29b0scl41mpjpfxc\",\n \"hooks_url\" : \"https://web.example.mocklab.io/506196\",\n \"trees_url\" : \"https://web.example.mocklab.io/734588\",\n \"tags_url\" : \"https://web.example.mocklab.io/758484\",\n \"contributors_url\" : \"https://web.example.mocklab.io/604928\",\n \"private\" : true,\n \"has_downloads\" : true,\n \"notifications_url\" : \"https://web.example.mocklab.io/271878\",\n \"open_issues_count\" : 8386493852244350285,\n \"created_at\" : \"6w0qk899a2mot2j7y8bnbtp1a0e7pgjjev4luhyuevyrgvk5xg77n8m6nvogqwd8gau7fzckog0vpi27fr81mq69j10cjnwtr5e1simqo0y7jrxmocwh8krz9u5ef79hst8ziv04wkulayyj5gt6bs\",\n \"description\" : \"Cupiditate enim ut voluptas hic qui quibusdam fugit. Nihil in odit dolorem veniam. Cum dolor sed non perferendis. Quia voluptatem et non. Laboriosam in autem.\",\n \"deployments_url\" : \"https://web.example.mocklab.io/332766\",\n \"keys_url\" : \"https://web.example.mocklab.io/380175\",\n \"has_projects\" : false,\n \"archived\" : true,\n \"has_wiki\" : false,\n \"updated_at\" : \"2022-04-29T05:27:59.328745Z\",\n \"comments_url\" : \"https://web.example.mocklab.io/958220\",\n \"stargazers_url\" : \"https://web.example.mocklab.io/716986\",\n \"disabled\" : true,\n \"delete_branch_on_merge\" : true,\n \"git_url\" : \"https://web.example.mocklab.io/779937\",\n \"has_pages\" : true,\n \"owner\" : { },\n \"allow_squash_merge\" : false,\n \"commits_url\" : \"https://web.example.mocklab.io/444112\",\n \"compare_url\" : \"https://web.example.mocklab.io/946855\",\n \"git_commits_url\" : \"https://web.example.mocklab.io/674196\",\n \"topics\" : [ \"vgagt69awt6z4xqzzm416thkx1gu9jeh7bcui0h3t14wbujv0yx2pby2ddh9jbxfnh1ucz1p0b5pke5sszbir1ud0s8cws7ccmd0qg97wkngy9fmee7a3b\", \"w5zko5nt7ztlx402gugwv5dop8ja856hlt2omtcy0lroin2ni9vhj1a8tp0y1vzl5j2edxqyfndhl6inh9quphqxh5f278367hxjg895yl6mqd8nr1yjn0p6z3nw83omn2fq4udecj22kal36n2liozl\", \"3uli326yvlce56hwq243zdtftp3\", \"nhr2lerbpnl2pgik\", \"jlt6atz4zu2kw9em6f04omoj30m86wcco4fekn7az3ykr79a5cy7a6y1miz2sy6021ym5hd7bj8x9qri8hj9gf8cbtonjndsv7r6t7o1ua1znno93p4o6ni7sw5b93c71rwtrpa93zwy9wnf650hh4w6r4mxryxuuz8k0ntw42ddm25xxg3zxotxq48m\" ],\n \"blobs_url\" : \"https://web.example.mocklab.io/805018\",\n \"git_tags_url\" : \"https://web.example.mocklab.io/804647\",\n \"merges_url\" : \"https://web.example.mocklab.io/597137\",\n \"downloads_url\" : \"https://web.example.mocklab.io/810343\",\n \"has_issues\" : false,\n \"url\" : \"https://web.example.mocklab.io/514298\",\n \"contents_url\" : \"https://web.example.mocklab.io/377785\",\n \"mirror_url\" : \"https://web.example.mocklab.io/989549\",\n \"milestones_url\" : \"https://web.example.mocklab.io/118533\",\n \"teams_url\" : \"https://web.example.mocklab.io/685144\",\n \"fork\" : true,\n \"issues_url\" : \"https://web.example.mocklab.io/116795\",\n \"events_url\" : \"https://web.example.mocklab.io/426712\",\n \"issue_events_url\" : \"https://web.example.mocklab.io/654740\",\n \"assignees_url\" : \"https://web.example.mocklab.io/279678\",\n \"watchers_count\" : 7008141855897755438,\n \"forks_count\" : 7896146790398902013,\n \"homepage\" : \"n98xljeynfhwsieozuglf576t66zbs5sk57kwzbkrim5e979lrznvmk5o21yhs3ujj71mhdldchnc7ghevmbljn4avste2twbrljoiafq1u8sdbfeocjow4759wxxed3choy62fw09q7rri5dklzpuzmk91wmac7a11egzth5s8tsk65ztid4hnksdpczdb4qsz0dk\",\n \"node_id\" : \"yub3\"\n },\n \"languages_url\" : \"http://api.github.com/repos/octocat/Hello-World/languages\",\n \"clone_url\" : \"https://github.com/octocat/Hello-World.git\",\n \"collaborators_url\" : \"http://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator}\",\n \"html_url\" : \"https://github.com/octocat/Hello-World\",\n \"name\" : \"Team Environment\",\n \"pulls_url\" : \"http://api.github.com/repos/octocat/Hello-World/pulls{/number}\",\n \"default_branch\" : \"master\",\n \"hooks_url\" : \"http://api.github.com/repos/octocat/Hello-World/hooks\",\n \"trees_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/trees{/sha}\",\n \"tags_url\" : \"http://api.github.com/repos/octocat/Hello-World/tags\",\n \"contributors_url\" : \"http://api.github.com/repos/octocat/Hello-World/contributors\",\n \"private\" : false,\n \"has_downloads\" : true,\n \"notifications_url\" : \"http://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating}\",\n \"open_issues_count\" : 0,\n \"created_at\" : \"2011-01-26T19:01:12Z\",\n \"description\" : \"This your first repo!\",\n \"watchers\" : 650569404023480481,\n \"deployments_url\" : \"http://api.github.com/repos/octocat/Hello-World/deployments\",\n \"keys_url\" : \"http://api.github.com/repos/octocat/Hello-World/keys{/key_id}\",\n \"has_projects\" : true,\n \"archived\" : true,\n \"has_wiki\" : true,\n \"updated_at\" : \"2011-01-26T19:14:43Z\",\n \"comments_url\" : \"http://api.github.com/repos/octocat/Hello-World/comments{/number}\",\n \"stargazers_url\" : \"http://api.github.com/repos/octocat/Hello-World/stargazers\",\n \"disabled\" : true,\n \"delete_branch_on_merge\" : false,\n \"git_url\" : \"git:github.com/octocat/Hello-World.git\",\n \"has_pages\" : false,\n \"owner\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Willis Mills\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"xyls8dbo9wk9ym6e30h2cfcwggaowpq451cwfaj0bfwvrwd9aevj30bbbsb8sv6jr3drz4ioc7j67czale519bu9se62opb1t2y25e2nugrpt5g3e0ilfphscn8v5q47mpr8w1\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"allow_squash_merge\" : true,\n \"commits_url\" : \"http://api.github.com/repos/octocat/Hello-World/commits{/sha}\",\n \"compare_url\" : \"http://api.github.com/repos/octocat/Hello-World/compare/{base}...{head}\",\n \"git_commits_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/commits{/sha}\",\n \"topics\" : [ \"pb3474170bhgr20wrgqnii98us71s037nvrjntmj4chcn6ckvci1cnt0uo119xdw63llxbahp5f5in0geh2co\", \"nuah5aql93idshyy3mgebcjojpq94iqtgcpcmk5fvxkqin7p7zfc1i68do4c37wx4dcqbr07a6s1coffw0o0xsvpdphm99lt6sccvoctkwgjqn4vdbv5at7l6w96pniz4b7luy5\", \"y3hz1nawup6er60yqlgfaa3nivk\" ],\n \"blobs_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/blobs{/sha}\",\n \"git_tags_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/tags{/sha}\",\n \"merges_url\" : \"http://api.github.com/repos/octocat/Hello-World/merges\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:42Z\\\"\",\n \"downloads_url\" : \"http://api.github.com/repos/octocat/Hello-World/downloads\",\n \"has_issues\" : true,\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World\",\n \"contents_url\" : \"http://api.github.com/repos/octocat/Hello-World/contents/{+path}\",\n \"mirror_url\" : \"git:git.example.com/octocat/Hello-World\",\n \"milestones_url\" : \"http://api.github.com/repos/octocat/Hello-World/milestones{/number}\",\n \"teams_url\" : \"http://api.github.com/repos/octocat/Hello-World/teams\",\n \"fork\" : true,\n \"issues_url\" : \"http://api.github.com/repos/octocat/Hello-World/issues{/number}\",\n \"events_url\" : \"http://api.github.com/repos/octocat/Hello-World/events\",\n \"issue_events_url\" : \"http://api.github.com/repos/octocat/Hello-World/issues/events{/number}\",\n \"organization\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Ms. Anibal Zieme\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"78zgptxfqbexjhs8u9ui2uqdmbnac6o98t4zbbrufpu64budm9dw2viqrwozjwn9jx3j8g5auuwged1hpisydkri9qk0h7wiybrj8rrs3y0x1i5kre631uzavda1hgwg7nga0hx7\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"assignees_url\" : \"http://api.github.com/repos/octocat/Hello-World/assignees{/user}\",\n \"open_issues\" : 7363670066532025521,\n \"watchers_count\" : 80,\n \"forks_count\" : 9,\n \"homepage\" : \"https://github.com\",\n \"node_id\" : \"MDEwOlJlcG9zaXRvcnkxMjk2MjY5\"\n },\n \"title\" : \"Found a bug\",\n \"author_association\" : \"OWNER\",\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347/labels{/name}\",\n \"number\" : 1347,\n \"performed_via_github_app\" : {\n \"owner\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Clair Volkman\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"xrew0xalcs8w7l7j32ooei292eh0uh979pxohfb514cqrjnco82f2et\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"installations_count\" : 5,\n \"created_at\" : \"2017-07-08T16:18:44-04:00\",\n \"description\" : \"The description of the app.\",\n \"client_id\" : \"\\\"Iv1.25b5d1e65ffc4022\\\"\",\n \"external_url\" : \"https://example.com\",\n \"updated_at\" : \"2017-07-08T16:18:44-04:00\",\n \"permissions\" : {\n \"deployments\" : \"write\",\n \"issues\" : \"read\"\n },\n \"html_url\" : \"https://github.com/apps/super-ci\",\n \"name\" : \"Probot Owners\",\n \"pem\" : \"\\\"-----BEGIN RSA PRIVATE KEY-----\\\\nMIIEogIBAAKCAQEArYxrNYD/iT5CZVpRJu4rBKmmze3PVmT/gCo2ATUvDvZTPTey\\\\nxcGJ3vvrJXazKk06pN05TN29o98jrYz4cengG3YGsXPNEpKsIrEl8NhbnxapEnM9\\\\nJCMRe0P5JcPsfZlX6hmiT7136GRWiGOUba2X9+HKh8QJVLG5rM007TBER9/z9mWm\\\\nrJuNh+m5l320oBQY/Qq3A7wzdEfZw8qm/mIN0FCeoXH1L6B8xXWaAYBwhTEh6SSn\\\\nZHlO1Xu1JWDmAvBCi0RO5aRSKM8q9QEkvvHP4yweAtK3N8+aAbZ7ovaDhyGz8r6r\\\\nzhU1b8Uo0Z2ysf503WqzQgIajr7Fry7/kUwpgQIDAQABAoIBADwJp80Ko1xHPZDy\\\\nfcCKBDfIuPvkmSW6KumbsLMaQv1aGdHDwwTGv3t0ixSay8CGlxMRtRDyZPib6SvQ\\\\n6OH/lpfpbMdW2ErkksgtoIKBVrDilfrcAvrNZu7NxRNbhCSvN8q0s4ICecjbbVQh\\\\nnueSdlA6vGXbW58BHMq68uRbHkP+k+mM9U0mDJ1HMch67wlg5GbayVRt63H7R2+r\\\\nVxcna7B80J/lCEjIYZznawgiTvp3MSanTglqAYi+m1EcSsP14bJIB9vgaxS79kTu\\\\noiSo93leJbBvuGo8QEiUqTwMw4tDksmkLsoqNKQ1q9P7LZ9DGcujtPy4EZsamSJT\\\\ny8OJt0ECgYEA2lxOxJsQk2kI325JgKFjo92mQeUObIvPfSNWUIZQDTjniOI6Gv63\\\\nGLWVFrZcvQBWjMEQraJA9xjPbblV8PtfO87MiJGLWCHFxmPz2dzoedN+2Coxom8m\\\\nV95CLz8QUShuao6u/RYcvUaZEoYs5bHcTmy5sBK80JyEmafJPtCQVxMCgYEAy3ar\\\\nZr3yv4xRPEPMat4rseswmuMooSaK3SKub19WFI5IAtB/e7qR1Rj9JhOGcZz+OQrl\\\\nT78O2OFYlgOIkJPvRMrPpK5V9lslc7tz1FSh3BZMRGq5jSyD7ETSOQ0c8T2O/s7v\\\\nbeEPbVbDe4mwvM24XByH0GnWveVxaDl51ABD65sCgYB3ZAspUkOA5egVCh8kNpnd\\\\nSd6SnuQBE3ySRlT2WEnCwP9Ph6oPgn+oAfiPX4xbRqkL8q/k0BdHQ4h+zNwhk7+h\\\\nWtPYRAP1Xxnc/F+jGjb+DVaIaKGU18MWPg7f+FI6nampl3Q0KvfxwX0GdNhtio8T\\\\nTj1E+SnFwh56SRQuxSh2gwKBgHKjlIO5NtNSflsUYFM+hyQiPiqnHzddfhSG+/3o\\\\nm5nNaSmczJesUYreH5San7/YEy2UxAugvP7aSY2MxB+iGsiJ9WD2kZzTUlDZJ7RV\\\\nUzWsoqBR+eZfVJ2FUWWvy8TpSG6trh4dFxImNtKejCR1TREpSiTV3Zb1dmahK9GV\\\\nrK9NAoGAbBxRLoC01xfxCTgt5BDiBcFVh4fp5yYKwavJPLzHSpuDOrrI9jDn1oKN\\\\nonq5sDU1i391zfQvdrbX4Ova48BN+B7p63FocP/MK5tyyBoT8zQEk2+vWDOw7H/Z\\\\nu5dTCPxTIsoIwUw1I+7yIxqJzLPFgR2gVBwY1ra/8iAqCj+zeBw=\\\\n-----END RSA PRIVATE KEY-----\\\\n\\\"\",\n \"webhook_secret\" : \"\\\"6fba8f2fc8a7e8f2cca5577eddd82ca7586b3b6b\\\"\",\n \"client_secret\" : \"\\\"1d4b2097ac622ba702d19de498f005747a8b21d3\\\"\",\n \"id\" : 37,\n \"events\" : [ \"label\", \"deployment\" ],\n \"slug\" : \"probot-owners\",\n \"node_id\" : \"MDExOkludGVncmF0aW9uMQ==\"\n },\n \"updated_at\" : \"2011-04-22T13:33:48Z\",\n \"comments_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347/comments\",\n \"active_lock_reason\" : \"too heated\",\n \"id\" : 1,\n \"repository_url\" : \"https://api.github.com/repos/octocat/Hello-World\",\n \"state\" : \"open\",\n \"locked\" : true,\n \"timeline_url\" : \"https://web.example.mocklab.io/825991\",\n \"pull_request\" : {\n \"patch_url\" : \"https://web.example.mocklab.io/327640\",\n \"html_url\" : \"https://web.example.mocklab.io/743483\",\n \"merged_at\" : \"2023-11-04T05:52:20.33Z\",\n \"diff_url\" : \"https://web.example.mocklab.io/316254\",\n \"url\" : \"https://web.example.mocklab.io/833595\"\n },\n \"closed_at\" : \"2022-04-29T07:16:12.331Z\",\n \"comments\" : 0,\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347\",\n \"labels\" : [ {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n } ],\n \"milestone\" : {\n \"creator\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Dominique Trantow\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"8x2kn93z6zhte3xikf\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"closed_at\" : \"2013-02-12T13:22:01Z\",\n \"created_at\" : \"2011-04-10T20:09:31Z\",\n \"description\" : \"Tracking milestone for version 1.0\",\n \"closed_issues\" : 8,\n \"title\" : \"v1.0\",\n \"due_on\" : \"2012-10-09T23:39:01Z\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones/1\",\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones/1/labels\",\n \"number\" : 42,\n \"updated_at\" : \"2014-03-03T18:58:10Z\",\n \"html_url\" : \"https://github.com/octocat/Hello-World/milestones/v1.0\",\n \"id\" : 1002604,\n \"state\" : \"open\",\n \"open_issues\" : 4,\n \"node_id\" : \"MDk6TWlsZXN0b25lMTAwMjYwNA==\"\n },\n \"events_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347/events\",\n \"html_url\" : \"https://github.com/octocat/Hello-World/issues/1347\",\n \"assignee\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Freeman Sauer\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"97snqvx0zrnvf9z6bsq7kin6i210blbx6olxkggtjiteaj4jfvsc63zjvtzydjzzvfdoot6sn51w8xcvtz479cnhbkxk4qsfw1y9fda537e8173y9kif8j\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"user\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"loma.bednar\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"q3x2goa5yd6wffg9j7zu59e0l405j3sjmrmt01urrw6a166l1ox8983otye8i7380ed39kd7nk9w6c3d77ropwhlpgorpcszfqzm1uw1\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"node_id\" : \"MDU6SXNzdWUx\"\n },\n \"action\" : \"z364zzkxrgwyfs0sbryhe76uhyun0fln7sp364g7ntzjgkmxauc1v0mdpb7j4v8wm5v0vyukjzs\",\n \"comment\" : {\n \"issue_url\" : \"https://web.example.mocklab.io/505541\",\n \"body_html\" : \"249\",\n \"body_text\" : \"28y5nqbjktll6rphp0d01oa9t75qc9mgc17rw9jvb929nx2ttpkpegdzaht913127md86v8ljpp3u74\",\n \"created_at\" : \"2011-04-14T16:00:49Z\",\n \"body\" : \"What version of Safari were you using when you observed this bug?\",\n \"url\" : \"https://api.github.com/repositories/42/issues/comments/1\",\n \"author_association\" : \"OWNER\",\n \"performed_via_github_app\" : {\n \"owner\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Stephaine Keebler MD\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"gkd0xurwlt2mt3cx5c0xhktvc4yx7p7tbzm9f1bz09t6q1rhge4gthsar8nn5fbe84xna6ha8xhoqjtz5mkbwzi4086mrqzngi0umkgrf\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"installations_count\" : 5,\n \"created_at\" : \"2017-07-08T16:18:44-04:00\",\n \"description\" : \"The description of the app.\",\n \"client_id\" : \"\\\"Iv1.25b5d1e65ffc4022\\\"\",\n \"external_url\" : \"https://example.com\",\n \"updated_at\" : \"2017-07-08T16:18:44-04:00\",\n \"permissions\" : {\n \"deployments\" : \"write\",\n \"issues\" : \"read\"\n },\n \"html_url\" : \"https://github.com/apps/super-ci\",\n \"name\" : \"Probot Owners\",\n \"pem\" : \"\\\"-----BEGIN RSA PRIVATE KEY-----\\\\nMIIEogIBAAKCAQEArYxrNYD/iT5CZVpRJu4rBKmmze3PVmT/gCo2ATUvDvZTPTey\\\\nxcGJ3vvrJXazKk06pN05TN29o98jrYz4cengG3YGsXPNEpKsIrEl8NhbnxapEnM9\\\\nJCMRe0P5JcPsfZlX6hmiT7136GRWiGOUba2X9+HKh8QJVLG5rM007TBER9/z9mWm\\\\nrJuNh+m5l320oBQY/Qq3A7wzdEfZw8qm/mIN0FCeoXH1L6B8xXWaAYBwhTEh6SSn\\\\nZHlO1Xu1JWDmAvBCi0RO5aRSKM8q9QEkvvHP4yweAtK3N8+aAbZ7ovaDhyGz8r6r\\\\nzhU1b8Uo0Z2ysf503WqzQgIajr7Fry7/kUwpgQIDAQABAoIBADwJp80Ko1xHPZDy\\\\nfcCKBDfIuPvkmSW6KumbsLMaQv1aGdHDwwTGv3t0ixSay8CGlxMRtRDyZPib6SvQ\\\\n6OH/lpfpbMdW2ErkksgtoIKBVrDilfrcAvrNZu7NxRNbhCSvN8q0s4ICecjbbVQh\\\\nnueSdlA6vGXbW58BHMq68uRbHkP+k+mM9U0mDJ1HMch67wlg5GbayVRt63H7R2+r\\\\nVxcna7B80J/lCEjIYZznawgiTvp3MSanTglqAYi+m1EcSsP14bJIB9vgaxS79kTu\\\\noiSo93leJbBvuGo8QEiUqTwMw4tDksmkLsoqNKQ1q9P7LZ9DGcujtPy4EZsamSJT\\\\ny8OJt0ECgYEA2lxOxJsQk2kI325JgKFjo92mQeUObIvPfSNWUIZQDTjniOI6Gv63\\\\nGLWVFrZcvQBWjMEQraJA9xjPbblV8PtfO87MiJGLWCHFxmPz2dzoedN+2Coxom8m\\\\nV95CLz8QUShuao6u/RYcvUaZEoYs5bHcTmy5sBK80JyEmafJPtCQVxMCgYEAy3ar\\\\nZr3yv4xRPEPMat4rseswmuMooSaK3SKub19WFI5IAtB/e7qR1Rj9JhOGcZz+OQrl\\\\nT78O2OFYlgOIkJPvRMrPpK5V9lslc7tz1FSh3BZMRGq5jSyD7ETSOQ0c8T2O/s7v\\\\nbeEPbVbDe4mwvM24XByH0GnWveVxaDl51ABD65sCgYB3ZAspUkOA5egVCh8kNpnd\\\\nSd6SnuQBE3ySRlT2WEnCwP9Ph6oPgn+oAfiPX4xbRqkL8q/k0BdHQ4h+zNwhk7+h\\\\nWtPYRAP1Xxnc/F+jGjb+DVaIaKGU18MWPg7f+FI6nampl3Q0KvfxwX0GdNhtio8T\\\\nTj1E+SnFwh56SRQuxSh2gwKBgHKjlIO5NtNSflsUYFM+hyQiPiqnHzddfhSG+/3o\\\\nm5nNaSmczJesUYreH5San7/YEy2UxAugvP7aSY2MxB+iGsiJ9WD2kZzTUlDZJ7RV\\\\nUzWsoqBR+eZfVJ2FUWWvy8TpSG6trh4dFxImNtKejCR1TREpSiTV3Zb1dmahK9GV\\\\nrK9NAoGAbBxRLoC01xfxCTgt5BDiBcFVh4fp5yYKwavJPLzHSpuDOrrI9jDn1oKN\\\\nonq5sDU1i391zfQvdrbX4Ova48BN+B7p63FocP/MK5tyyBoT8zQEk2+vWDOw7H/Z\\\\nu5dTCPxTIsoIwUw1I+7yIxqJzLPFgR2gVBwY1ra/8iAqCj+zeBw=\\\\n-----END RSA PRIVATE KEY-----\\\\n\\\"\",\n \"webhook_secret\" : \"\\\"6fba8f2fc8a7e8f2cca5577eddd82ca7586b3b6b\\\"\",\n \"client_secret\" : \"\\\"1d4b2097ac622ba702d19de498f005747a8b21d3\\\"\",\n \"id\" : 37,\n \"events\" : [ \"label\", \"deployment\" ],\n \"slug\" : \"probot-owners\",\n \"node_id\" : \"MDExOkludGVncmF0aW9uMQ==\"\n },\n \"updated_at\" : \"2011-04-14T16:00:49Z\",\n \"html_url\" : \"https://web.example.mocklab.io/536482\",\n \"reactions\" : {\n \"confused\" : 780027698755279482,\n \"-1\" : 770888281957955788,\n \"+1\" : 5351765388287150257,\n \"total_count\" : 8451083430800486019,\n \"rocket\" : 1246158038866685996,\n \"hooray\" : 3982589406703442341,\n \"eyes\" : 8251021552549758958,\n \"heart\" : 1325282919527576987,\n \"laugh\" : 4118664019401194620,\n \"url\" : \"https://web.example.mocklab.io/950391\"\n },\n \"id\" : 42,\n \"user\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"genaro.heidenreich\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"e6h5zlkc593umhb4cxqeqth298lgx5flqtgvkde78zl23b6ygnm9ccuov6b9e3xv9\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"node_id\" : \"9t48\"\n }\n },\n \"repo\" : {\n \"name\" : \"Kali VonRueden\",\n \"id\" : 254919950595051977,\n \"url\" : \"https://web.example.mocklab.io/346629\"\n },\n \"created_at\" : \"2022-10-15T15:34:50.332Z\",\n \"id\" : \"79p0\",\n \"type\" : \"fnb638w0w84fb12hn6skk1fmgic0346uij7y39g8b9cmcux4s0vl7mfe9ksrn7tj8n9bieh4vkowhrp0o8vgvrxvkdu9yoij5hkyrpl4ptlc6smo9jwqjudhzqe7mnj4nv9l7s5er7i92m0d35zfwiup0q1tgkr9s9rd\"\n}, {\n \"actor\" : {\n \"display_login\" : \"1db0zunfp1j58u0gqo4jxwgjo0u4h8360c6z92hul8m0y73yqz23vgz11dv8trvuxpzhlv97w53pdm4kt6n06ip2vjd2jijekqab4n3imwiq3e8otgo3m\",\n \"avatar_url\" : \"https://s3.amazonaws.com/uifaces/faces/twitter/osmanince/128.jpg\",\n \"id\" : 8380709112106718900,\n \"login\" : \"gfke53r4qscbeb9pwf2ndzqefj7om3aaakhlztvd1vaeodovj4woh7d3kbyre2o2ie925xljgrq7hnv2yn21tcg7i3xs3z8yu3exxruafn20fgs82cw7yxjqqh15y59hrkhytol1c0o75hyeej1416ffr360c575769pffm5mb02vkmjj7a\",\n \"gravatar_id\" : \"bfz1\",\n \"url\" : \"https://web.example.mocklab.io/917702\"\n },\n \"public\" : true,\n \"org\" : {\n \"display_login\" : \"61epq1oraizku4be6hf0yerpwp2f7nx6movrbfvaa48fmk3ugv8rnlnpofuvpfdn5rx7dupnm8np4fweq441rt98liqkk6vmniw18aoauxcmh89x1rnnz34lkwui4uoewfgpx4\",\n \"avatar_url\" : \"https://s3.amazonaws.com/uifaces/faces/twitter/josevnclch/128.jpg\",\n \"id\" : 7472513525839845620,\n \"login\" : \"7198obay2wq1bw1yrihuhgjb74ocee9lqd\",\n \"gravatar_id\" : \"6883\",\n \"url\" : \"https://web.example.mocklab.io/489196\"\n },\n \"payload\" : {\n \"pages\" : [ {\n \"summary\" : \"Quis omnis praesentium veniam. Aut omnis id. Eveniet maiores enim sit itaque similique numquam.\",\n \"html_url\" : \"https://web.example.mocklab.io/034695\",\n \"page_name\" : \"Dick Anderson Sr.\",\n \"action\" : \"j6y12zfck6r12jyzm52ql8izcx9r1a04eri5gn9get5xogtfvh\",\n \"title\" : \"Velit delectus culpa sint.\",\n \"sha\" : \"w3re2mys5foq1k6o694z9v4vp75rk3mk38w1q92e5gvn3bzh8jvkehzwi0i2tbud63u36upebiodz5r4oxa766zkh75ztb6ndeeb3ddbi2ke94p6rgcudmivgrr1efoi0icrckcem3v3c2zyg86zupdqmhviefjd8mv1z\"\n }, {\n \"summary\" : \"Rerum suscipit ullam qui ipsum quaerat aliquam aut. Et voluptas dolorum. Nam repudiandae numquam et.\",\n \"html_url\" : \"https://web.example.mocklab.io/789672\",\n \"page_name\" : \"Genaro Kirlin\",\n \"action\" : \"stcn2uzh3qon30lm4ydh0ajlxoc161amqlfqnxx8x54ka0mllbzbnq46jb\",\n \"title\" : \"Omnis est exercitationem.\",\n \"sha\" : \"ebmq3jizibwg1w7v71xlb802exn0y8t3lfw856zv9srre7ww1g0xwspswvo8pkfymhuwdaq148v5pksqirzdtk6kzf01ukdnxzdgo7mkoh5\"\n } ],\n \"issue\" : {\n \"body_html\" : \"sltgt5m0wzq02dicynpv5jrctaibk3go1ztxil2i1kszu435wuq1olo6r6pizbr5\",\n \"body_text\" : \"atgzyfsylzt1wli7rknjmjz7kh37bfo0gp1x59dr8rkx4ecaoin3c5bm88vyr5titd18h41qfq\",\n \"assignees\" : [ {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Sima Gutmann I\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"35zdqrshv3osyp6k8t5uuk8903det4z2xu26mclz4d0q9p8nr4pus5bv8owjvldo8l8a5yfh1afz7x07hg5v9u06raxyqwjue1o23fljf229kwufcftagkw7idigmcpasgdgvycce8jf061v6uulidnmzwpr4ejktoapxrf12qow0zxtls\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n }, {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Cleo Schuppe\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"scwd7vhxwlra2y3vy8mtyn\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n }, {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Laurette Denesik\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"qc8ux83hig3x24m03x01eix21nk9hlrwehku0b38bhbhfwrmxrd9tzlscwxyce6zv63mxsh5que9bw4r2keepcvikyjez4ebursawirxfwg9q69brisxkxak0471qkxxpjwetvs7jyev8oub7pb77jh388gbvstwave23q7fx9g64l7m63yemdaq1rzcoiws9nf13sea\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n }, {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Mitchell Jacobson\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"dxzn7clmmwpgh59sdx91cscaj0n8mxpw4e1hx2k112z4l4xms4hj4n4x5la1s1b6lptry8h1ark6qf3dvofi3wbna8rwdwbk235tql42kpmggad245iji72vfdafw2btco0fu6wr9iz0pe\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n }, {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Ervin Langworth\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"okit2pe6i3k5qkx6o299sz3hh6eh476420a1k8v04ol8d6xxfdn66w30v7wrvfwy33f9ffzeu9d9fgfv4tl2w6lqn938u6yc4lripynxkrov\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n }, {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Jewell Osinski\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"981d1n77c7l0mfm3\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n } ],\n \"created_at\" : \"2011-04-22T13:33:48Z\",\n \"body\" : \"I'm having a problem with this.\",\n \"repository\" : {\n \"allow_forking\" : true,\n \"anonymous_access_enabled\" : true,\n \"is_template\" : true,\n \"stargazers_count\" : 80,\n \"pushed_at\" : \"2011-01-26T19:06:43Z\",\n \"language\" : \"f5i8jy605jhhd9auqcvvp\",\n \"subscription_url\" : \"http://api.github.com/repos/octocat/Hello-World/subscription\",\n \"branches_url\" : \"http://api.github.com/repos/octocat/Hello-World/branches{/branch}\",\n \"allow_rebase_merge\" : true,\n \"issue_comment_url\" : \"http://api.github.com/repos/octocat/Hello-World/issues/comments{/number}\",\n \"labels_url\" : \"http://api.github.com/repos/octocat/Hello-World/labels{/name}\",\n \"permissions\" : {\n \"pull\" : false,\n \"maintain\" : false,\n \"admin\" : true,\n \"triage\" : true,\n \"push\" : false\n },\n \"subscribers_url\" : \"http://api.github.com/repos/octocat/Hello-World/subscribers\",\n \"releases_url\" : \"http://api.github.com/repos/octocat/Hello-World/releases{/id}\",\n \"svn_url\" : \"https://svn.github.com/octocat/Hello-World\",\n \"subscribers_count\" : 7240334371832186987,\n \"id\" : 42,\n \"master_branch\" : \"63my0jtettbtrfln9o4jcn1afh73bxejbioxbo3qjz607qg2m47y71nu2nkg4k2kxw2g79i3vzpb5xy\",\n \"forks\" : 3117665125651154264,\n \"allow_merge_commit\" : true,\n \"archive_url\" : \"http://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref}\",\n \"git_refs_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/refs{/sha}\",\n \"forks_url\" : \"http://api.github.com/repos/octocat/Hello-World/forks\",\n \"visibility\" : \"f8tdwxbijbikroql1yjxir6w495bgp4r2lgn1s2gtblml96dbrx9sugou2kvwxgtga2ndchgcnlt\",\n \"statuses_url\" : \"http://api.github.com/repos/octocat/Hello-World/statuses/{sha}\",\n \"network_count\" : 4270479747318815186,\n \"ssh_url\" : \"git@github.com:octocat/Hello-World.git\",\n \"license\" : {\n \"html_url\" : \"https://web.example.mocklab.io/284027\",\n \"name\" : \"MIT License\",\n \"spdx_id\" : \"MIT\",\n \"key\" : \"mit\",\n \"url\" : \"https://api.github.com/licenses/mit\",\n \"node_id\" : \"MDc6TGljZW5zZW1pdA==\"\n },\n \"full_name\" : \"octocat/Hello-World\",\n \"size\" : 108,\n \"template_repository\" : {\n \"anonymous_access_enabled\" : false,\n \"is_template\" : false,\n \"stargazers_count\" : 6328800172574953881,\n \"pushed_at\" : \"gpg1o7gjz5nwj9s8tfcconji4d773pcpnhdwc3vd0u7xlge0xc61qxcilzri90fz64l78y7vmufrjnbpdid442phub4c9lit3qhzrs9vjq8u6n3g78utwrlmjks1o9760ibqxygfu2sed\",\n \"language\" : \"wugkg45993d6gzxjs7aqz37ch8t6mzyfn5dqo9jshie0hkpr4xgrdjn32hbqgy298fovs32kwfihdghcbd9cfm4l85imgxbn31s93xst7cwidgxr\",\n \"subscription_url\" : \"https://web.example.mocklab.io/918698\",\n \"branches_url\" : \"https://web.example.mocklab.io/805895\",\n \"allow_rebase_merge\" : false,\n \"issue_comment_url\" : \"https://web.example.mocklab.io/520751\",\n \"labels_url\" : \"https://web.example.mocklab.io/314849\",\n \"permissions\" : { },\n \"subscribers_url\" : \"https://web.example.mocklab.io/653347\",\n \"releases_url\" : \"https://web.example.mocklab.io/050279\",\n \"svn_url\" : \"https://web.example.mocklab.io/992090\",\n \"subscribers_count\" : 8079443976692066580,\n \"id\" : 7752723162616213229,\n \"allow_merge_commit\" : true,\n \"archive_url\" : \"https://web.example.mocklab.io/881956\",\n \"git_refs_url\" : \"https://web.example.mocklab.io/240105\",\n \"forks_url\" : \"https://web.example.mocklab.io/962933\",\n \"visibility\" : \"c8stuc43ukj3sstczh94tav5n6d3wjz2tmhapfpib0iqp4dyzxa1invrqp55ouc\",\n \"statuses_url\" : \"https://web.example.mocklab.io/273432\",\n \"network_count\" : 1079620823035386380,\n \"ssh_url\" : \"https://web.example.mocklab.io/700108\",\n \"full_name\" : \"Thanh Heller MD\",\n \"size\" : 2376334182167632654,\n \"languages_url\" : \"https://web.example.mocklab.io/742144\",\n \"clone_url\" : \"https://web.example.mocklab.io/520705\",\n \"collaborators_url\" : \"https://web.example.mocklab.io/172449\",\n \"html_url\" : \"https://web.example.mocklab.io/353446\",\n \"name\" : \"Joel Wuckert\",\n \"pulls_url\" : \"https://web.example.mocklab.io/450506\",\n \"default_branch\" : \"zik99dgkslklko3dhczvq4tikax8prq1kf8nxr72mdfwdzxe7x6vb9s33l7f34h0vdhdzxjirrxr6fejk13341jcvr\",\n \"hooks_url\" : \"https://web.example.mocklab.io/890162\",\n \"trees_url\" : \"https://web.example.mocklab.io/880325\",\n \"tags_url\" : \"https://web.example.mocklab.io/023309\",\n \"contributors_url\" : \"https://web.example.mocklab.io/918836\",\n \"private\" : true,\n \"has_downloads\" : true,\n \"notifications_url\" : \"https://web.example.mocklab.io/413000\",\n \"open_issues_count\" : 7358324119711638768,\n \"created_at\" : \"bq1ypr2zv10ef0i5oonh0n6z6cisxfs0nmrvl4ngwhm3opgel2914kp2s070utrg6kjvvjdzftzc5d8nc8n29eebchpzcg1chj8mwt37en05l09l0568e\",\n \"description\" : \"Vero adipisci sint nihil quo dolorem rerum deleniti. Dolorum consectetur accusamus. Atque nulla magnam corrupti at. Quia et eos. Maxime ut aliquid dolor vitae.\",\n \"deployments_url\" : \"https://web.example.mocklab.io/514860\",\n \"keys_url\" : \"https://web.example.mocklab.io/443555\",\n \"has_projects\" : true,\n \"archived\" : false,\n \"has_wiki\" : true,\n \"updated_at\" : \"2023-02-04T09:14:59.335898Z\",\n \"comments_url\" : \"https://web.example.mocklab.io/806087\",\n \"stargazers_url\" : \"https://web.example.mocklab.io/562297\",\n \"disabled\" : false,\n \"delete_branch_on_merge\" : false,\n \"git_url\" : \"https://web.example.mocklab.io/004693\",\n \"has_pages\" : true,\n \"owner\" : { },\n \"allow_squash_merge\" : false,\n \"commits_url\" : \"https://web.example.mocklab.io/173018\",\n \"compare_url\" : \"https://web.example.mocklab.io/319049\",\n \"git_commits_url\" : \"https://web.example.mocklab.io/716062\",\n \"topics\" : [ \"88tfvorm4axohensu9hlfhqkcd3jyyc7bxy9fukjjy7mecczr22ml6imvp4wpp3w7f029sjvwv4zsku3rxbv1avyuk1zaaoscsw6z9zbypj82honx\", \"cgliiy6b0gd850q773uxhbrkec4jh896kpnp2kc4bbtl2yh2frn18a5y6pvk1\", \"1fkfrrnjf091xv1gisy1i4uryn3c9xuzuarqfueakht614iduxl8nl3cpam1kxlvaiqytb7ptwrxxsvdclqu4y1nzq7iyx9uffmi6hrhgd2ltqs5s4phty8l45gywm0m0xu79pii4v6m8u1wfiv48q4l8c5l538tcoy4ri8cl4gxzuy9j3bcaxlxfk98jtmkmoblgl\", \"h9ijbn2249357ack0cx5bsd68r4sektif7xdsuvsfjlwdr16quqogrei434f5v357vh2n22vtzdvyh9e9ga4ux829gtkig6ol0ubta3lqdvbj00eztenho9vfpacs5mdha9nddqtyik8gja42xdjkgq8ebfegoqfre\", \"c4rriv8rhfbgzc7hllw7u38xlt33qo342s4mgae4j92mpob9gav41dtwwtxvwwv20fd5tka1bkg6n49vnwmue4p9mf9f4mglbhd8618ro67y2hub8r3ys0x9ga417rmzni476\", \"huyfiptlnfftmu0oblqoyzh31qa74hdb61dgp6mneybeyjayheuzyh0cj4qfgsbqmp3beq801hnfm8yph27o2jdvd7mml4ui7zz6yoa55qacqkoxyn75iqer1r8\" ],\n \"blobs_url\" : \"https://web.example.mocklab.io/983623\",\n \"git_tags_url\" : \"https://web.example.mocklab.io/793116\",\n \"merges_url\" : \"https://web.example.mocklab.io/029447\",\n \"downloads_url\" : \"https://web.example.mocklab.io/016978\",\n \"has_issues\" : false,\n \"url\" : \"https://web.example.mocklab.io/417518\",\n \"contents_url\" : \"https://web.example.mocklab.io/162032\",\n \"mirror_url\" : \"https://web.example.mocklab.io/837582\",\n \"milestones_url\" : \"https://web.example.mocklab.io/300954\",\n \"teams_url\" : \"https://web.example.mocklab.io/574971\",\n \"fork\" : false,\n \"issues_url\" : \"https://web.example.mocklab.io/882400\",\n \"events_url\" : \"https://web.example.mocklab.io/956612\",\n \"issue_events_url\" : \"https://web.example.mocklab.io/985478\",\n \"assignees_url\" : \"https://web.example.mocklab.io/963006\",\n \"watchers_count\" : 9018340078227603945,\n \"forks_count\" : 7429221239014893135,\n \"homepage\" : \"l1z8m8wv7ahiajh4ts2hlw4cc2ika6sstnqgwnqsk3p0zb\",\n \"node_id\" : \"96w8\"\n },\n \"languages_url\" : \"http://api.github.com/repos/octocat/Hello-World/languages\",\n \"clone_url\" : \"https://github.com/octocat/Hello-World.git\",\n \"collaborators_url\" : \"http://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator}\",\n \"html_url\" : \"https://github.com/octocat/Hello-World\",\n \"name\" : \"Team Environment\",\n \"pulls_url\" : \"http://api.github.com/repos/octocat/Hello-World/pulls{/number}\",\n \"default_branch\" : \"master\",\n \"hooks_url\" : \"http://api.github.com/repos/octocat/Hello-World/hooks\",\n \"trees_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/trees{/sha}\",\n \"tags_url\" : \"http://api.github.com/repos/octocat/Hello-World/tags\",\n \"contributors_url\" : \"http://api.github.com/repos/octocat/Hello-World/contributors\",\n \"private\" : true,\n \"has_downloads\" : true,\n \"notifications_url\" : \"http://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating}\",\n \"open_issues_count\" : 0,\n \"created_at\" : \"2011-01-26T19:01:12Z\",\n \"description\" : \"This your first repo!\",\n \"watchers\" : 8478804812078666017,\n \"deployments_url\" : \"http://api.github.com/repos/octocat/Hello-World/deployments\",\n \"keys_url\" : \"http://api.github.com/repos/octocat/Hello-World/keys{/key_id}\",\n \"has_projects\" : true,\n \"archived\" : false,\n \"has_wiki\" : true,\n \"updated_at\" : \"2011-01-26T19:14:43Z\",\n \"comments_url\" : \"http://api.github.com/repos/octocat/Hello-World/comments{/number}\",\n \"stargazers_url\" : \"http://api.github.com/repos/octocat/Hello-World/stargazers\",\n \"disabled\" : true,\n \"delete_branch_on_merge\" : false,\n \"git_url\" : \"git:github.com/octocat/Hello-World.git\",\n \"has_pages\" : true,\n \"owner\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Kourtney Brakus\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"ns6qkkv8qb1vhhd1xxxjx3cc\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"allow_squash_merge\" : true,\n \"commits_url\" : \"http://api.github.com/repos/octocat/Hello-World/commits{/sha}\",\n \"compare_url\" : \"http://api.github.com/repos/octocat/Hello-World/compare/{base}...{head}\",\n \"git_commits_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/commits{/sha}\",\n \"topics\" : [ \"1bh2jbzk89daj6rzwa590ponnqdpzsrphro63if8lt1qse38t9kx6o468m46hs9doidc4stm2h5lfegxuw86zkjlh8ewma3b5oo4hnzwtpk08ncmntore5a6wjscv2po0h2jnhac4mrp6012lndok9frs5c1wivxt9no2uur2ep62mly36228dbth9t\", \"ciavhmostz0djjwnevdxytg266zel8lumhdoqbw7g85732pa43k5suarufx3ed4c54h5xxpnqmw4v6g6i9a1iavufey5xfgpelekz4z\", \"1zp4pm17vxliuxenwdrwwm3g5vnn9ml87m747gzdptlv2ql3zv0mu2x877bmv1yfp0febyap8ibloo1q4yows3t4bx4k77d2ihp8ox4pvqk9timyefonynji56uib3cdq28242z3mokyluc1h83tkkowyhk0sz3geao1pkutl125kqv5ygyqarywi6nhex47tlbpluml\", \"uqql3prtkluwcsx10vylyp1vltcwajybc29u9rlhq3yp2fmas5q2mk39yp0ds0eiqu34dgolnmonrb6kxh7crh9w\", \"6717uoudbu1kp1hznqkl2uypq99zvsqai9xtr859f\", \"2n8gh7zo5slowr9tdh088k6qpi0qrjqolglyjqbi3z6vu3a1ivaw1b7t0hqzb0nt1r2hgzyuvjpzk6wv9wv2a25qypyk8qmhtrg07yne06\", \"cw0b4\" ],\n \"blobs_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/blobs{/sha}\",\n \"git_tags_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/tags{/sha}\",\n \"merges_url\" : \"http://api.github.com/repos/octocat/Hello-World/merges\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:42Z\\\"\",\n \"downloads_url\" : \"http://api.github.com/repos/octocat/Hello-World/downloads\",\n \"has_issues\" : true,\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World\",\n \"contents_url\" : \"http://api.github.com/repos/octocat/Hello-World/contents/{+path}\",\n \"mirror_url\" : \"git:git.example.com/octocat/Hello-World\",\n \"milestones_url\" : \"http://api.github.com/repos/octocat/Hello-World/milestones{/number}\",\n \"teams_url\" : \"http://api.github.com/repos/octocat/Hello-World/teams\",\n \"fork\" : false,\n \"issues_url\" : \"http://api.github.com/repos/octocat/Hello-World/issues{/number}\",\n \"events_url\" : \"http://api.github.com/repos/octocat/Hello-World/events\",\n \"issue_events_url\" : \"http://api.github.com/repos/octocat/Hello-World/issues/events{/number}\",\n \"organization\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Valeri Balistreri\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"cgns5dyemseuqedixldcw1yx917rhbxgtio8sjhnb014cibe9dlm5e9atcb15cgrao5s4cm2dxywf9ru0noy0foolrzzg7jpbfjpz38cbmpd0keyczrtaaqjf5u\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"assignees_url\" : \"http://api.github.com/repos/octocat/Hello-World/assignees{/user}\",\n \"open_issues\" : 1125809408140245638,\n \"watchers_count\" : 80,\n \"forks_count\" : 9,\n \"homepage\" : \"https://github.com\",\n \"node_id\" : \"MDEwOlJlcG9zaXRvcnkxMjk2MjY5\"\n },\n \"title\" : \"Found a bug\",\n \"author_association\" : \"OWNER\",\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347/labels{/name}\",\n \"number\" : 1347,\n \"performed_via_github_app\" : {\n \"owner\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Alla Koch\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"34ri4cpo9l3qr4h65fg4mk1s2fjtdg3f6cdztf383aaykc9vbn69m1wsce7k8rkyxikskthsf9sln185g3wt9r813awbc6r5td2o9vsgcvt9oafwrir8nmd45myeffb1x5y4u5qg4mthjc2gapxf\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"installations_count\" : 5,\n \"created_at\" : \"2017-07-08T16:18:44-04:00\",\n \"description\" : \"The description of the app.\",\n \"client_id\" : \"\\\"Iv1.25b5d1e65ffc4022\\\"\",\n \"external_url\" : \"https://example.com\",\n \"updated_at\" : \"2017-07-08T16:18:44-04:00\",\n \"permissions\" : {\n \"deployments\" : \"write\",\n \"issues\" : \"read\"\n },\n \"html_url\" : \"https://github.com/apps/super-ci\",\n \"name\" : \"Probot Owners\",\n \"pem\" : \"\\\"-----BEGIN RSA PRIVATE KEY-----\\\\nMIIEogIBAAKCAQEArYxrNYD/iT5CZVpRJu4rBKmmze3PVmT/gCo2ATUvDvZTPTey\\\\nxcGJ3vvrJXazKk06pN05TN29o98jrYz4cengG3YGsXPNEpKsIrEl8NhbnxapEnM9\\\\nJCMRe0P5JcPsfZlX6hmiT7136GRWiGOUba2X9+HKh8QJVLG5rM007TBER9/z9mWm\\\\nrJuNh+m5l320oBQY/Qq3A7wzdEfZw8qm/mIN0FCeoXH1L6B8xXWaAYBwhTEh6SSn\\\\nZHlO1Xu1JWDmAvBCi0RO5aRSKM8q9QEkvvHP4yweAtK3N8+aAbZ7ovaDhyGz8r6r\\\\nzhU1b8Uo0Z2ysf503WqzQgIajr7Fry7/kUwpgQIDAQABAoIBADwJp80Ko1xHPZDy\\\\nfcCKBDfIuPvkmSW6KumbsLMaQv1aGdHDwwTGv3t0ixSay8CGlxMRtRDyZPib6SvQ\\\\n6OH/lpfpbMdW2ErkksgtoIKBVrDilfrcAvrNZu7NxRNbhCSvN8q0s4ICecjbbVQh\\\\nnueSdlA6vGXbW58BHMq68uRbHkP+k+mM9U0mDJ1HMch67wlg5GbayVRt63H7R2+r\\\\nVxcna7B80J/lCEjIYZznawgiTvp3MSanTglqAYi+m1EcSsP14bJIB9vgaxS79kTu\\\\noiSo93leJbBvuGo8QEiUqTwMw4tDksmkLsoqNKQ1q9P7LZ9DGcujtPy4EZsamSJT\\\\ny8OJt0ECgYEA2lxOxJsQk2kI325JgKFjo92mQeUObIvPfSNWUIZQDTjniOI6Gv63\\\\nGLWVFrZcvQBWjMEQraJA9xjPbblV8PtfO87MiJGLWCHFxmPz2dzoedN+2Coxom8m\\\\nV95CLz8QUShuao6u/RYcvUaZEoYs5bHcTmy5sBK80JyEmafJPtCQVxMCgYEAy3ar\\\\nZr3yv4xRPEPMat4rseswmuMooSaK3SKub19WFI5IAtB/e7qR1Rj9JhOGcZz+OQrl\\\\nT78O2OFYlgOIkJPvRMrPpK5V9lslc7tz1FSh3BZMRGq5jSyD7ETSOQ0c8T2O/s7v\\\\nbeEPbVbDe4mwvM24XByH0GnWveVxaDl51ABD65sCgYB3ZAspUkOA5egVCh8kNpnd\\\\nSd6SnuQBE3ySRlT2WEnCwP9Ph6oPgn+oAfiPX4xbRqkL8q/k0BdHQ4h+zNwhk7+h\\\\nWtPYRAP1Xxnc/F+jGjb+DVaIaKGU18MWPg7f+FI6nampl3Q0KvfxwX0GdNhtio8T\\\\nTj1E+SnFwh56SRQuxSh2gwKBgHKjlIO5NtNSflsUYFM+hyQiPiqnHzddfhSG+/3o\\\\nm5nNaSmczJesUYreH5San7/YEy2UxAugvP7aSY2MxB+iGsiJ9WD2kZzTUlDZJ7RV\\\\nUzWsoqBR+eZfVJ2FUWWvy8TpSG6trh4dFxImNtKejCR1TREpSiTV3Zb1dmahK9GV\\\\nrK9NAoGAbBxRLoC01xfxCTgt5BDiBcFVh4fp5yYKwavJPLzHSpuDOrrI9jDn1oKN\\\\nonq5sDU1i391zfQvdrbX4Ova48BN+B7p63FocP/MK5tyyBoT8zQEk2+vWDOw7H/Z\\\\nu5dTCPxTIsoIwUw1I+7yIxqJzLPFgR2gVBwY1ra/8iAqCj+zeBw=\\\\n-----END RSA PRIVATE KEY-----\\\\n\\\"\",\n \"webhook_secret\" : \"\\\"6fba8f2fc8a7e8f2cca5577eddd82ca7586b3b6b\\\"\",\n \"client_secret\" : \"\\\"1d4b2097ac622ba702d19de498f005747a8b21d3\\\"\",\n \"id\" : 37,\n \"events\" : [ \"label\", \"deployment\" ],\n \"slug\" : \"probot-owners\",\n \"node_id\" : \"MDExOkludGVncmF0aW9uMQ==\"\n },\n \"updated_at\" : \"2011-04-22T13:33:48Z\",\n \"comments_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347/comments\",\n \"active_lock_reason\" : \"too heated\",\n \"id\" : 1,\n \"repository_url\" : \"https://api.github.com/repos/octocat/Hello-World\",\n \"state\" : \"open\",\n \"locked\" : true,\n \"timeline_url\" : \"https://web.example.mocklab.io/951922\",\n \"pull_request\" : {\n \"patch_url\" : \"https://web.example.mocklab.io/734753\",\n \"html_url\" : \"https://web.example.mocklab.io/871601\",\n \"merged_at\" : \"2022-06-14T21:52:56.338Z\",\n \"diff_url\" : \"https://web.example.mocklab.io/901161\",\n \"url\" : \"https://web.example.mocklab.io/868415\"\n },\n \"closed_at\" : \"2023-10-14T20:26:11.338Z\",\n \"comments\" : 0,\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347\",\n \"labels\" : [ {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n } ],\n \"milestone\" : {\n \"creator\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Sharilyn Kovacek\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"0m5wjqcu4hneqofssugcipvcx6wlxvigv0mnk9qut8mn3ih6f1q6emgaigx4slroisvcrte4neq4hjfw3kts\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"closed_at\" : \"2013-02-12T13:22:01Z\",\n \"created_at\" : \"2011-04-10T20:09:31Z\",\n \"description\" : \"Tracking milestone for version 1.0\",\n \"closed_issues\" : 8,\n \"title\" : \"v1.0\",\n \"due_on\" : \"2012-10-09T23:39:01Z\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones/1\",\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones/1/labels\",\n \"number\" : 42,\n \"updated_at\" : \"2014-03-03T18:58:10Z\",\n \"html_url\" : \"https://github.com/octocat/Hello-World/milestones/v1.0\",\n \"id\" : 1002604,\n \"state\" : \"open\",\n \"open_issues\" : 4,\n \"node_id\" : \"MDk6TWlsZXN0b25lMTAwMjYwNA==\"\n },\n \"events_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347/events\",\n \"html_url\" : \"https://github.com/octocat/Hello-World/issues/1347\",\n \"assignee\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Rebeca Quitzon\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"fvho0t6050rnh89azmw1wfx1zz4h3fv1w2q6wf6q8wlzo2rfv9pso\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"user\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"morgan.ryan\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"4e5m43cziyx055vvk2b0ttj1dpwgf35u48vuxj5f6nxmkziyhspqf3bt6cpibbjmnjz0ag5fxq4jmc0tvv8l7x0zornmafa60hl4x8k8jtey5d2rlhafjw9sbwabm5rmcvcy4bsu9pqdgxiyz5g65vqctslph5xd29hrqw\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"node_id\" : \"MDU6SXNzdWUx\"\n },\n \"action\" : \"zl45ccevwv9xcs13v14t7yzhsaewutz1dijrp8dswf8bqpsc8r8itifhtj1qqj1o251a8u6brqbyu412lghrlei83od0f9z7156ez1cna3xskrs7757vxi064y7\",\n \"comment\" : {\n \"issue_url\" : \"https://web.example.mocklab.io/974359\",\n \"body_html\" : \"fplfc7jbv1p7d7d1hhiil22h5fhxd1v64hwt3x273szzcg29jc5sy0xt3d2\",\n \"body_text\" : \"0chhh5p2kmdf6cqdgo2ats8cla07gwa3yjg4dbn7evjau6a14hmyb7w6asy44queazlow0i7ba7bytes9plyf4s8wy8ldbqmspvzdm35v49gq8s3h9z5rfjbr5vokvrws422pza52h96dxwcd0phzgm5noi2gltracjlvdqvg4f5niwxmjtb8j1csr9umj3v\",\n \"created_at\" : \"2011-04-14T16:00:49Z\",\n \"body\" : \"What version of Safari were you using when you observed this bug?\",\n \"url\" : \"https://api.github.com/repositories/42/issues/comments/1\",\n \"author_association\" : \"OWNER\",\n \"performed_via_github_app\" : {\n \"owner\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Stefan Goldner\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"ei6a4g2cn3q84iox4w52naa8ilr2tulu1y6tdjw6gw6ov9b396lchilpvxfp0mwonzcwd42yl32gpz79r8q4jtjbi9nbvcr0aj4u3j0awappz4hkj1v5id86ta1u02lqkg\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"installations_count\" : 5,\n \"created_at\" : \"2017-07-08T16:18:44-04:00\",\n \"description\" : \"The description of the app.\",\n \"client_id\" : \"\\\"Iv1.25b5d1e65ffc4022\\\"\",\n \"external_url\" : \"https://example.com\",\n \"updated_at\" : \"2017-07-08T16:18:44-04:00\",\n \"permissions\" : {\n \"deployments\" : \"write\",\n \"issues\" : \"read\"\n },\n \"html_url\" : \"https://github.com/apps/super-ci\",\n \"name\" : \"Probot Owners\",\n \"pem\" : \"\\\"-----BEGIN RSA PRIVATE KEY-----\\\\nMIIEogIBAAKCAQEArYxrNYD/iT5CZVpRJu4rBKmmze3PVmT/gCo2ATUvDvZTPTey\\\\nxcGJ3vvrJXazKk06pN05TN29o98jrYz4cengG3YGsXPNEpKsIrEl8NhbnxapEnM9\\\\nJCMRe0P5JcPsfZlX6hmiT7136GRWiGOUba2X9+HKh8QJVLG5rM007TBER9/z9mWm\\\\nrJuNh+m5l320oBQY/Qq3A7wzdEfZw8qm/mIN0FCeoXH1L6B8xXWaAYBwhTEh6SSn\\\\nZHlO1Xu1JWDmAvBCi0RO5aRSKM8q9QEkvvHP4yweAtK3N8+aAbZ7ovaDhyGz8r6r\\\\nzhU1b8Uo0Z2ysf503WqzQgIajr7Fry7/kUwpgQIDAQABAoIBADwJp80Ko1xHPZDy\\\\nfcCKBDfIuPvkmSW6KumbsLMaQv1aGdHDwwTGv3t0ixSay8CGlxMRtRDyZPib6SvQ\\\\n6OH/lpfpbMdW2ErkksgtoIKBVrDilfrcAvrNZu7NxRNbhCSvN8q0s4ICecjbbVQh\\\\nnueSdlA6vGXbW58BHMq68uRbHkP+k+mM9U0mDJ1HMch67wlg5GbayVRt63H7R2+r\\\\nVxcna7B80J/lCEjIYZznawgiTvp3MSanTglqAYi+m1EcSsP14bJIB9vgaxS79kTu\\\\noiSo93leJbBvuGo8QEiUqTwMw4tDksmkLsoqNKQ1q9P7LZ9DGcujtPy4EZsamSJT\\\\ny8OJt0ECgYEA2lxOxJsQk2kI325JgKFjo92mQeUObIvPfSNWUIZQDTjniOI6Gv63\\\\nGLWVFrZcvQBWjMEQraJA9xjPbblV8PtfO87MiJGLWCHFxmPz2dzoedN+2Coxom8m\\\\nV95CLz8QUShuao6u/RYcvUaZEoYs5bHcTmy5sBK80JyEmafJPtCQVxMCgYEAy3ar\\\\nZr3yv4xRPEPMat4rseswmuMooSaK3SKub19WFI5IAtB/e7qR1Rj9JhOGcZz+OQrl\\\\nT78O2OFYlgOIkJPvRMrPpK5V9lslc7tz1FSh3BZMRGq5jSyD7ETSOQ0c8T2O/s7v\\\\nbeEPbVbDe4mwvM24XByH0GnWveVxaDl51ABD65sCgYB3ZAspUkOA5egVCh8kNpnd\\\\nSd6SnuQBE3ySRlT2WEnCwP9Ph6oPgn+oAfiPX4xbRqkL8q/k0BdHQ4h+zNwhk7+h\\\\nWtPYRAP1Xxnc/F+jGjb+DVaIaKGU18MWPg7f+FI6nampl3Q0KvfxwX0GdNhtio8T\\\\nTj1E+SnFwh56SRQuxSh2gwKBgHKjlIO5NtNSflsUYFM+hyQiPiqnHzddfhSG+/3o\\\\nm5nNaSmczJesUYreH5San7/YEy2UxAugvP7aSY2MxB+iGsiJ9WD2kZzTUlDZJ7RV\\\\nUzWsoqBR+eZfVJ2FUWWvy8TpSG6trh4dFxImNtKejCR1TREpSiTV3Zb1dmahK9GV\\\\nrK9NAoGAbBxRLoC01xfxCTgt5BDiBcFVh4fp5yYKwavJPLzHSpuDOrrI9jDn1oKN\\\\nonq5sDU1i391zfQvdrbX4Ova48BN+B7p63FocP/MK5tyyBoT8zQEk2+vWDOw7H/Z\\\\nu5dTCPxTIsoIwUw1I+7yIxqJzLPFgR2gVBwY1ra/8iAqCj+zeBw=\\\\n-----END RSA PRIVATE KEY-----\\\\n\\\"\",\n \"webhook_secret\" : \"\\\"6fba8f2fc8a7e8f2cca5577eddd82ca7586b3b6b\\\"\",\n \"client_secret\" : \"\\\"1d4b2097ac622ba702d19de498f005747a8b21d3\\\"\",\n \"id\" : 37,\n \"events\" : [ \"label\", \"deployment\" ],\n \"slug\" : \"probot-owners\",\n \"node_id\" : \"MDExOkludGVncmF0aW9uMQ==\"\n },\n \"updated_at\" : \"2011-04-14T16:00:49Z\",\n \"html_url\" : \"https://web.example.mocklab.io/737342\",\n \"reactions\" : {\n \"confused\" : 4674873815093720511,\n \"-1\" : 4799172716107248819,\n \"+1\" : 6000063034162780613,\n \"total_count\" : 6449578435644638927,\n \"rocket\" : 9006284077971148792,\n \"hooray\" : 7005065253769952286,\n \"eyes\" : 3826203080592963169,\n \"heart\" : 7447001273215801820,\n \"laugh\" : 5928852335438412753,\n \"url\" : \"https://web.example.mocklab.io/710100\"\n },\n \"id\" : 42,\n \"user\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"bart.bahringer\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"e9rmaheeospgck45tm8rt5yhrjbg89vbo2vp1kb9ujog9b4zl5wsjzjq\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"node_id\" : \"vxgv\"\n }\n },\n \"repo\" : {\n \"name\" : \"Pablo Reichel\",\n \"id\" : 9049016446532639849,\n \"url\" : \"https://web.example.mocklab.io/573633\"\n },\n \"created_at\" : \"2022-09-23T22:52:54.339Z\",\n \"id\" : \"3jgu\",\n \"type\" : \"ektctaix9zmvtsd5qol\"\n} ]", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "ef331356-0bd3-480f-b2d6-fcd719f71902", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.340436Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "activity/list-received-public-events-for-user", + "schema": { + "items": { + "$ref": "#/components/schemas/event" + }, + "type": "array" + } + } + } + }, + "insertionIndex": 8 + }, + { + "id": "61d59d6b-d0d4-44c5-976a-f8819fd9bd7b", + "name": "List events received by the authenticated user", + "request": { + "urlPath": "/users/darren.okon/received_events", + "method": "GET" + }, + "response": { + "status": 200, + "body": "[ {\n \"actor\" : {\n \"display_login\" : \"cgk488zlowwh9lf9e8jxnqqt1x5yqapitgyo345k5sh7q9nqt20\",\n \"avatar_url\" : \"https://s3.amazonaws.com/uifaces/faces/twitter/gregsqueeb/128.jpg\",\n \"id\" : 6359377495934476915,\n \"login\" : \"8d66vx5hrs2cm2uxky5l104dsw7zppua8mvu\",\n \"gravatar_id\" : \"bb1d\",\n \"url\" : \"https://web.example.mocklab.io/125302\"\n },\n \"public\" : false,\n \"org\" : {\n \"display_login\" : \"km2sfi6uwh55vdxn48b0xsgto8awrlfusmkx1i1d25bz2iwit8f2fnjmzuix68aqv8ghd52irba9wku\",\n \"avatar_url\" : \"https://s3.amazonaws.com/uifaces/faces/twitter/bluefx_/128.jpg\",\n \"id\" : 3386622087472987050,\n \"login\" : \"ft7i09if13s3do07paa3zvi6l382x7iloodxjh3div6ok3ub1hpfn4slo9fnh9ywbkz44ozaloc3vaxn53aafa0yca9pn25j1sw4wf4zjjnj1lq0dn01opaga32qu1br0mtem08jp766vwztxqci9ia3948zompmmbx0wx9qrh2q50hj2g6a4rhsix6\",\n \"gravatar_id\" : \"o3ks\",\n \"url\" : \"https://web.example.mocklab.io/922198\"\n },\n \"payload\" : {\n \"pages\" : [ {\n \"summary\" : \"Esse et rerum maxime et cupiditate. Voluptas deleniti dolor voluptas. Temporibus autem ipsam voluptatibus.\",\n \"html_url\" : \"https://web.example.mocklab.io/904190\",\n \"page_name\" : \"Mrs. Octavio Greenholt\",\n \"action\" : \"bn58g9l15tbbagb0slkx4ciixk0usyga0kbbetj6olj7il5pm23d7ktulnw6hlfswe6ur\",\n \"title\" : \"Enim aut ipsum at quod consequatur eaque.\",\n \"sha\" : \"jfqvgdlbetc59099f9mih786197w0r1l9pdkxh8rm1mcq200u3ycks89a062cp15w0mraryr8ogl25hsykqkmetiynn8teuhk06ruy26k0owocf8yoex32pl6y8eatoktx34ugsa1fzmt4ju5c5gs7bqmx\"\n }, {\n \"summary\" : \"Numquam omnis est non nostrum quis veniam. Officiis id dolor error nisi ut illum. Totam eaque veniam totam porro minus quis autem. Sapiente aut occaecati maxime omnis ab.\",\n \"html_url\" : \"https://web.example.mocklab.io/918923\",\n \"page_name\" : \"Estela Swaniawski\",\n \"action\" : \"emlixbtea3ubcmfpu8k\",\n \"title\" : \"Cumque ut consequuntur ullam dolorem.\",\n \"sha\" : \"wmdi51xstn6o54uebytubptmfxojl1sr7d1l5ze0049imdhmbl3lz952xz8986ckxy69y0l4u8u1aajw8dwxm31z5iv500uft5jzo34jgzx\"\n }, {\n \"summary\" : \"Consequatur exercitationem culpa. Ab harum ut hic explicabo quisquam temporibus. Tempore laborum eum non.\",\n \"html_url\" : \"https://web.example.mocklab.io/671706\",\n \"page_name\" : \"Scotty Cremin\",\n \"action\" : \"44u131aq37xmeasq2bvr3j6pziodx3ftnw8sf2ol6os0tq1fc2vxwwdd71rrjygjt2f1ib8uhrzdnby0rtxulqk5iq8h20mz73lo2vbmxf81crv4pldjygch4dpjzka8p73cpick6l\",\n \"title\" : \"Quia beatae numquam.\",\n \"sha\" : \"gngqti1pl6jjzdeir60dp4lf4ipv87lzklc2cj9\"\n } ],\n \"issue\" : {\n \"body_html\" : \"e5oiwnn5zcjckrryn7w2qvemuk2q3nmzzu26rvxb30z3zvy1ampmi4g5qmwq28yf5krf2lcjkpzk29yogzvuwvpbyfze7c3cg1vy7rgp6orsq1tdwn1didui8c42xx16ukxf7il\",\n \"body_text\" : \"jtwhfo0wu639ngx54eng9pbxlwbye5g4vkp3zqpswwi5uw8nrturozgvp223ao1nqh0xaf3488j9gzp5f168fw7ihtva0ca618phnn1okf\",\n \"assignees\" : [ {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Lon Metz\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"6bpnartxsbk15ftogy5m682o5s6ugonhqpv7w0oz8rr5hu5ct662jk5xynhayis8mpjgurywfms7h52im65dmgjmbq1n2qn3bn0a3pcek4sfjb50pm5gbdzm5ba0xs5wee628iy67p6ath0s8fza9is3y9ahnbrlakyrsps40t2nzq4zy7enh8cfcorn4k\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n }, {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Meghann Barton\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"hidx0bf8vsqgltc9nc75dpawbnjpotrl0o62iyrvsewvzo4zoqmulbecu7u7sunaf08fkiblq6jbb7xp3gbtwc81ttd7wqy5ga41kq0u2u61wszy9ulhuwk6f7erotxephlmlu91skubczv\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n }, {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Mrs. Morgan Corwin\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"mck7j3fbzia7elzr7l8v6cd7cipvkv5s45dqyuodzjr\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n }, {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Iesha Hyatt\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"1hoz91yd8i0b9okq1y5yuddwsiccqxjojdtwjepaybk6n5ya9pg7f46ril40e5xjywsjg1fdxerz15ad4rojisgicae08nr3aw5utmm5z4ouw1v622ebm0g9bf3wdugv06njui0ffuvcgx86wl8m8\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n }, {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Murray Pfannerstill\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"mhps7l0mfvka3hn9wcvc56vbjt2tnxpip8h44zvhp32iml3xsiq55y4uo3h8i1qybx9ki3gaa4bcig1apff133d9jumq5lmeb0f1x9qn4p4k1nlue8wg0ot3bh0speciqo46iudf80dh6kc0wc2xlspkl9kakwhr0l\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n }, {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Miss Dan Bahringer\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"9cn87hm46bgxe0qxdrbdjuqppeij9rratbp7lk4jerzwo1vnc8n3w90h2afjzz8rdbc43df8twb7chwnnclxdapkvxztrdkffka4z6n61fopwl49w2pkqr95wkn4jhggxshbdpolcj7exhuqdqn\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n } ],\n \"created_at\" : \"2011-04-22T13:33:48Z\",\n \"body\" : \"I'm having a problem with this.\",\n \"repository\" : {\n \"allow_forking\" : false,\n \"anonymous_access_enabled\" : true,\n \"is_template\" : true,\n \"stargazers_count\" : 80,\n \"pushed_at\" : \"2011-01-26T19:06:43Z\",\n \"language\" : \"0pr32e779rbvy1avvne6\",\n \"subscription_url\" : \"http://api.github.com/repos/octocat/Hello-World/subscription\",\n \"branches_url\" : \"http://api.github.com/repos/octocat/Hello-World/branches{/branch}\",\n \"allow_rebase_merge\" : true,\n \"issue_comment_url\" : \"http://api.github.com/repos/octocat/Hello-World/issues/comments{/number}\",\n \"labels_url\" : \"http://api.github.com/repos/octocat/Hello-World/labels{/name}\",\n \"permissions\" : {\n \"pull\" : false,\n \"maintain\" : false,\n \"admin\" : false,\n \"triage\" : true,\n \"push\" : true\n },\n \"subscribers_url\" : \"http://api.github.com/repos/octocat/Hello-World/subscribers\",\n \"releases_url\" : \"http://api.github.com/repos/octocat/Hello-World/releases{/id}\",\n \"svn_url\" : \"https://svn.github.com/octocat/Hello-World\",\n \"subscribers_count\" : 3794956270242104652,\n \"id\" : 42,\n \"master_branch\" : \"aiivdswlzn7rlokhh0t8o5fj405bo7o4thc9q9\",\n \"forks\" : 3600380355998541962,\n \"allow_merge_commit\" : true,\n \"archive_url\" : \"http://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref}\",\n \"git_refs_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/refs{/sha}\",\n \"forks_url\" : \"http://api.github.com/repos/octocat/Hello-World/forks\",\n \"visibility\" : \"3yq2lj6xlt1vr3u37lg8hor0lhrs4mu3063gva\",\n \"statuses_url\" : \"http://api.github.com/repos/octocat/Hello-World/statuses/{sha}\",\n \"network_count\" : 1580022651290733078,\n \"ssh_url\" : \"git@github.com:octocat/Hello-World.git\",\n \"license\" : {\n \"html_url\" : \"https://web.example.mocklab.io/306628\",\n \"name\" : \"MIT License\",\n \"spdx_id\" : \"MIT\",\n \"key\" : \"mit\",\n \"url\" : \"https://api.github.com/licenses/mit\",\n \"node_id\" : \"MDc6TGljZW5zZW1pdA==\"\n },\n \"full_name\" : \"octocat/Hello-World\",\n \"size\" : 108,\n \"template_repository\" : {\n \"anonymous_access_enabled\" : false,\n \"is_template\" : false,\n \"stargazers_count\" : 842252715530916685,\n \"pushed_at\" : \"11hl8pu5rirja38ffiohgxte64qp14fvb2uzkuigguso3bn410lexncjw8vxo30z3e8pftzbbfio8y4xvqoqifptuqwhb3iacc6wf0ua1zv6br0r4eyuf7y1lt4d4f1kvqhxpqmcyj5y1z6p9uzww7a3cvg2pf7szedv6wvyxc0kjp60l3n6khi\",\n \"language\" : \"gjds0u7jiic94kzwne28t49nsjvegyr7af5istbzhr96e2p2yhcmsieeb81do79nwcuxo2oe6gseg2pzhberdwqdjuevmx753wi9jiwi9wmxo7ly2dbcobgzudpufwnn0iuzy5ogizqpczygzjwf8ynua4fujq\",\n \"subscription_url\" : \"https://web.example.mocklab.io/694373\",\n \"branches_url\" : \"https://web.example.mocklab.io/911596\",\n \"allow_rebase_merge\" : true,\n \"issue_comment_url\" : \"https://web.example.mocklab.io/571789\",\n \"labels_url\" : \"https://web.example.mocklab.io/297789\",\n \"permissions\" : { },\n \"subscribers_url\" : \"https://web.example.mocklab.io/590464\",\n \"releases_url\" : \"https://web.example.mocklab.io/152762\",\n \"svn_url\" : \"https://web.example.mocklab.io/187719\",\n \"subscribers_count\" : 1101012861193951692,\n \"id\" : 4151061757531590919,\n \"allow_merge_commit\" : true,\n \"archive_url\" : \"https://web.example.mocklab.io/944722\",\n \"git_refs_url\" : \"https://web.example.mocklab.io/435788\",\n \"forks_url\" : \"https://web.example.mocklab.io/306799\",\n \"visibility\" : \"u6xni16w10h7on2ig2gmf64cwyy74iv45kaelhoqgifsb8u4pmbjgf4l540gejd0959j532c4phfw1sf0mo5c7hwecvjjwb7gqwmaaot2k3p74unt8i5a7kupf298rfxkrzqns6bwb2mmutg8w62f7hxvgm1gmq\",\n \"statuses_url\" : \"https://web.example.mocklab.io/355770\",\n \"network_count\" : 1951927798078247186,\n \"ssh_url\" : \"https://web.example.mocklab.io/013719\",\n \"full_name\" : \"Harold Heaney MD\",\n \"size\" : 7475702431989450469,\n \"languages_url\" : \"https://web.example.mocklab.io/514876\",\n \"clone_url\" : \"https://web.example.mocklab.io/855137\",\n \"collaborators_url\" : \"https://web.example.mocklab.io/232160\",\n \"html_url\" : \"https://web.example.mocklab.io/276909\",\n \"name\" : \"Rochell Dibbert\",\n \"pulls_url\" : \"https://web.example.mocklab.io/362546\",\n \"default_branch\" : \"5mpgrhruxb87rfzg21a1fu8asb6ictlhm9af7ii2qcp5axjfrfvnpp4efn8zg5f0s3iu1nru5guzsbd8ki8710z06ot0a23rfgm47jak\",\n \"hooks_url\" : \"https://web.example.mocklab.io/576287\",\n \"trees_url\" : \"https://web.example.mocklab.io/474211\",\n \"tags_url\" : \"https://web.example.mocklab.io/260172\",\n \"contributors_url\" : \"https://web.example.mocklab.io/005770\",\n \"private\" : false,\n \"has_downloads\" : false,\n \"notifications_url\" : \"https://web.example.mocklab.io/879452\",\n \"open_issues_count\" : 9055822282360021714,\n \"created_at\" : \"xsdznw7seaymv3idvgayinel7p1lk1lqdrohzcaecdd7yn6ozp133dt84exf6w3npagz2h5kgdp6t17w0w2bpzknb7pgyznjmfci0z2g4r2y7mne\",\n \"description\" : \"Debitis ipsa omnis quisquam autem. Qui iusto illum illo. Rerum quam sunt dolorum deleniti. Qui rem magni. Expedita quis excepturi.\",\n \"deployments_url\" : \"https://web.example.mocklab.io/345940\",\n \"keys_url\" : \"https://web.example.mocklab.io/926269\",\n \"has_projects\" : false,\n \"archived\" : true,\n \"has_wiki\" : false,\n \"updated_at\" : \"2023-03-10T06:53:59.285221Z\",\n \"comments_url\" : \"https://web.example.mocklab.io/210894\",\n \"stargazers_url\" : \"https://web.example.mocklab.io/814722\",\n \"disabled\" : true,\n \"delete_branch_on_merge\" : false,\n \"git_url\" : \"https://web.example.mocklab.io/937395\",\n \"has_pages\" : true,\n \"owner\" : { },\n \"allow_squash_merge\" : true,\n \"commits_url\" : \"https://web.example.mocklab.io/205521\",\n \"compare_url\" : \"https://web.example.mocklab.io/055908\",\n \"git_commits_url\" : \"https://web.example.mocklab.io/395503\",\n \"topics\" : [ \"gxczur3nh06lpec5ng73ewdbf5fte0gkk1ratz6l7wzpeylb40out5usf0efzzff0mzdtha2faqb52osj2g3nav6i16hsxcjvu8\", \"72mw8xuuzzeb66x7scx483rfsiew7fzqvh3axo7qb308k2v91egwcjnwol8pwm4vpnmwkak5h57xpi5f4u4dzf5ye2kci3wyj67m1ab7u3oj5gus7gspawbgfmhaccpnf7fgrkh\", \"khjicr4p84u5rs81m5aoy51f6fuvo4uonuehsixtxcznq3tqn8gvznmvci9ivvqmrk4imaneg6wclrxleqjyk1afl4l1zedpfehcvauutgkvoua0oaqtmptnih2xqsxgwls4vvu778dpzu2u0cqfldw3yt6e6fid9vy9q10remwxio8mfcjg565r1ojbg9i2maz\", \"kzdqefn25mwwyzqdrvjz1yxbxtcmz1h2x1pkdex8bzq12t4vylpbie3prry59kis28ljea26nb9ryatiqno9cxf9xkww5fd6clqq69d2vo6bqh23hrbenbf0hidmurpjp27el8w6hv8sqrkmu3n9q55qp8dv4ksln98dexxjgh82lbtbl5na6\", \"tirsexuacbi6ormlkrnjmplwl3bxdrrajmaoj27ivtuhhit1wsb0o9mi8zzb9hjcy2pojaj7zk3me4z6nux8rjxe3d1b4lg5qvmkmpcctmzjjfc5ltjpjmh19slvdg56bgnolw\", \"yc6zzfele2m0hk4x50gmkap6vvkny02m4uy5mah5z8u7em67nb4l9xr9489s8lk87rnl8q222m4hya\", \"gq8osezv4yw6jsvbj1dyzkogervwrkeecjaioolo75sqcv6xeq22yqet20elre4g08a8i0771dvcoc97pwighw0vrvzc4k5nqwkvq2nlh5yivt8dzg4czvsqzepbi4jbq4idoqb5ze\" ],\n \"blobs_url\" : \"https://web.example.mocklab.io/774100\",\n \"git_tags_url\" : \"https://web.example.mocklab.io/774063\",\n \"merges_url\" : \"https://web.example.mocklab.io/896695\",\n \"downloads_url\" : \"https://web.example.mocklab.io/044518\",\n \"has_issues\" : false,\n \"url\" : \"https://web.example.mocklab.io/687380\",\n \"contents_url\" : \"https://web.example.mocklab.io/499371\",\n \"mirror_url\" : \"https://web.example.mocklab.io/535640\",\n \"milestones_url\" : \"https://web.example.mocklab.io/532473\",\n \"teams_url\" : \"https://web.example.mocklab.io/866560\",\n \"fork\" : false,\n \"issues_url\" : \"https://web.example.mocklab.io/004536\",\n \"events_url\" : \"https://web.example.mocklab.io/758554\",\n \"issue_events_url\" : \"https://web.example.mocklab.io/878172\",\n \"assignees_url\" : \"https://web.example.mocklab.io/899617\",\n \"watchers_count\" : 8603628621888636464,\n \"forks_count\" : 5830992962188094680,\n \"homepage\" : \"s0kbrx9j5hfgskp5ccchbdkx11o1qh1zjm56c64rvs8hhbry\",\n \"node_id\" : \"h7sq\"\n },\n \"languages_url\" : \"http://api.github.com/repos/octocat/Hello-World/languages\",\n \"clone_url\" : \"https://github.com/octocat/Hello-World.git\",\n \"collaborators_url\" : \"http://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator}\",\n \"html_url\" : \"https://github.com/octocat/Hello-World\",\n \"name\" : \"Team Environment\",\n \"pulls_url\" : \"http://api.github.com/repos/octocat/Hello-World/pulls{/number}\",\n \"default_branch\" : \"master\",\n \"hooks_url\" : \"http://api.github.com/repos/octocat/Hello-World/hooks\",\n \"trees_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/trees{/sha}\",\n \"tags_url\" : \"http://api.github.com/repos/octocat/Hello-World/tags\",\n \"contributors_url\" : \"http://api.github.com/repos/octocat/Hello-World/contributors\",\n \"private\" : false,\n \"has_downloads\" : true,\n \"notifications_url\" : \"http://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating}\",\n \"open_issues_count\" : 0,\n \"created_at\" : \"2011-01-26T19:01:12Z\",\n \"description\" : \"This your first repo!\",\n \"watchers\" : 7978138080252965354,\n \"deployments_url\" : \"http://api.github.com/repos/octocat/Hello-World/deployments\",\n \"keys_url\" : \"http://api.github.com/repos/octocat/Hello-World/keys{/key_id}\",\n \"has_projects\" : true,\n \"archived\" : false,\n \"has_wiki\" : true,\n \"updated_at\" : \"2011-01-26T19:14:43Z\",\n \"comments_url\" : \"http://api.github.com/repos/octocat/Hello-World/comments{/number}\",\n \"stargazers_url\" : \"http://api.github.com/repos/octocat/Hello-World/stargazers\",\n \"disabled\" : true,\n \"delete_branch_on_merge\" : false,\n \"git_url\" : \"git:github.com/octocat/Hello-World.git\",\n \"has_pages\" : true,\n \"owner\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Cristal Hansen V\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"y2h8vis1bsmdun7spuar0rk7sqg985go7ws30yneuyzovxy0z93cpeu0mluw7i8sfotw65lwc4e85axdhb\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"allow_squash_merge\" : true,\n \"commits_url\" : \"http://api.github.com/repos/octocat/Hello-World/commits{/sha}\",\n \"compare_url\" : \"http://api.github.com/repos/octocat/Hello-World/compare/{base}...{head}\",\n \"git_commits_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/commits{/sha}\",\n \"topics\" : [ \"sl31zi71ofsht44gdwlao81i18c0u0dcyto332de79u9d7z8853trm8rpi0w5cn7bowc6fjp10m1xxwfczve\" ],\n \"blobs_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/blobs{/sha}\",\n \"git_tags_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/tags{/sha}\",\n \"merges_url\" : \"http://api.github.com/repos/octocat/Hello-World/merges\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:42Z\\\"\",\n \"downloads_url\" : \"http://api.github.com/repos/octocat/Hello-World/downloads\",\n \"has_issues\" : true,\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World\",\n \"contents_url\" : \"http://api.github.com/repos/octocat/Hello-World/contents/{+path}\",\n \"mirror_url\" : \"git:git.example.com/octocat/Hello-World\",\n \"milestones_url\" : \"http://api.github.com/repos/octocat/Hello-World/milestones{/number}\",\n \"teams_url\" : \"http://api.github.com/repos/octocat/Hello-World/teams\",\n \"fork\" : true,\n \"issues_url\" : \"http://api.github.com/repos/octocat/Hello-World/issues{/number}\",\n \"events_url\" : \"http://api.github.com/repos/octocat/Hello-World/events\",\n \"issue_events_url\" : \"http://api.github.com/repos/octocat/Hello-World/issues/events{/number}\",\n \"organization\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Jewel Koss MD\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"mlgir5dk2rh31g9okbfy7f8jwhqb6ycxmz4riiytkdvq4dlfzw3u74tbxsgpmacshl0mrn\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"assignees_url\" : \"http://api.github.com/repos/octocat/Hello-World/assignees{/user}\",\n \"open_issues\" : 6095985517058637023,\n \"watchers_count\" : 80,\n \"forks_count\" : 9,\n \"homepage\" : \"https://github.com\",\n \"node_id\" : \"MDEwOlJlcG9zaXRvcnkxMjk2MjY5\"\n },\n \"title\" : \"Found a bug\",\n \"author_association\" : \"OWNER\",\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347/labels{/name}\",\n \"number\" : 1347,\n \"performed_via_github_app\" : {\n \"owner\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Vesta Simonis\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"z4sdqjln2zxa5en0mixpms7zimmugwtnpsntmtsgsa9pb5rb1u8ktjyxvhdd3wg53tfw1ccc2u3cddxf405w5zr1svntd6tkadfx0bqnjnvj3nqfhzys3h9dtz1n9o8qig9ltekapndyt5ks0glppq4r\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"installations_count\" : 5,\n \"created_at\" : \"2017-07-08T16:18:44-04:00\",\n \"description\" : \"The description of the app.\",\n \"client_id\" : \"\\\"Iv1.25b5d1e65ffc4022\\\"\",\n \"external_url\" : \"https://example.com\",\n \"updated_at\" : \"2017-07-08T16:18:44-04:00\",\n \"permissions\" : {\n \"deployments\" : \"write\",\n \"issues\" : \"read\"\n },\n \"html_url\" : \"https://github.com/apps/super-ci\",\n \"name\" : \"Probot Owners\",\n \"pem\" : \"\\\"-----BEGIN RSA PRIVATE KEY-----\\\\nMIIEogIBAAKCAQEArYxrNYD/iT5CZVpRJu4rBKmmze3PVmT/gCo2ATUvDvZTPTey\\\\nxcGJ3vvrJXazKk06pN05TN29o98jrYz4cengG3YGsXPNEpKsIrEl8NhbnxapEnM9\\\\nJCMRe0P5JcPsfZlX6hmiT7136GRWiGOUba2X9+HKh8QJVLG5rM007TBER9/z9mWm\\\\nrJuNh+m5l320oBQY/Qq3A7wzdEfZw8qm/mIN0FCeoXH1L6B8xXWaAYBwhTEh6SSn\\\\nZHlO1Xu1JWDmAvBCi0RO5aRSKM8q9QEkvvHP4yweAtK3N8+aAbZ7ovaDhyGz8r6r\\\\nzhU1b8Uo0Z2ysf503WqzQgIajr7Fry7/kUwpgQIDAQABAoIBADwJp80Ko1xHPZDy\\\\nfcCKBDfIuPvkmSW6KumbsLMaQv1aGdHDwwTGv3t0ixSay8CGlxMRtRDyZPib6SvQ\\\\n6OH/lpfpbMdW2ErkksgtoIKBVrDilfrcAvrNZu7NxRNbhCSvN8q0s4ICecjbbVQh\\\\nnueSdlA6vGXbW58BHMq68uRbHkP+k+mM9U0mDJ1HMch67wlg5GbayVRt63H7R2+r\\\\nVxcna7B80J/lCEjIYZznawgiTvp3MSanTglqAYi+m1EcSsP14bJIB9vgaxS79kTu\\\\noiSo93leJbBvuGo8QEiUqTwMw4tDksmkLsoqNKQ1q9P7LZ9DGcujtPy4EZsamSJT\\\\ny8OJt0ECgYEA2lxOxJsQk2kI325JgKFjo92mQeUObIvPfSNWUIZQDTjniOI6Gv63\\\\nGLWVFrZcvQBWjMEQraJA9xjPbblV8PtfO87MiJGLWCHFxmPz2dzoedN+2Coxom8m\\\\nV95CLz8QUShuao6u/RYcvUaZEoYs5bHcTmy5sBK80JyEmafJPtCQVxMCgYEAy3ar\\\\nZr3yv4xRPEPMat4rseswmuMooSaK3SKub19WFI5IAtB/e7qR1Rj9JhOGcZz+OQrl\\\\nT78O2OFYlgOIkJPvRMrPpK5V9lslc7tz1FSh3BZMRGq5jSyD7ETSOQ0c8T2O/s7v\\\\nbeEPbVbDe4mwvM24XByH0GnWveVxaDl51ABD65sCgYB3ZAspUkOA5egVCh8kNpnd\\\\nSd6SnuQBE3ySRlT2WEnCwP9Ph6oPgn+oAfiPX4xbRqkL8q/k0BdHQ4h+zNwhk7+h\\\\nWtPYRAP1Xxnc/F+jGjb+DVaIaKGU18MWPg7f+FI6nampl3Q0KvfxwX0GdNhtio8T\\\\nTj1E+SnFwh56SRQuxSh2gwKBgHKjlIO5NtNSflsUYFM+hyQiPiqnHzddfhSG+/3o\\\\nm5nNaSmczJesUYreH5San7/YEy2UxAugvP7aSY2MxB+iGsiJ9WD2kZzTUlDZJ7RV\\\\nUzWsoqBR+eZfVJ2FUWWvy8TpSG6trh4dFxImNtKejCR1TREpSiTV3Zb1dmahK9GV\\\\nrK9NAoGAbBxRLoC01xfxCTgt5BDiBcFVh4fp5yYKwavJPLzHSpuDOrrI9jDn1oKN\\\\nonq5sDU1i391zfQvdrbX4Ova48BN+B7p63FocP/MK5tyyBoT8zQEk2+vWDOw7H/Z\\\\nu5dTCPxTIsoIwUw1I+7yIxqJzLPFgR2gVBwY1ra/8iAqCj+zeBw=\\\\n-----END RSA PRIVATE KEY-----\\\\n\\\"\",\n \"webhook_secret\" : \"\\\"6fba8f2fc8a7e8f2cca5577eddd82ca7586b3b6b\\\"\",\n \"client_secret\" : \"\\\"1d4b2097ac622ba702d19de498f005747a8b21d3\\\"\",\n \"id\" : 37,\n \"events\" : [ \"label\", \"deployment\" ],\n \"slug\" : \"probot-owners\",\n \"node_id\" : \"MDExOkludGVncmF0aW9uMQ==\"\n },\n \"updated_at\" : \"2011-04-22T13:33:48Z\",\n \"comments_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347/comments\",\n \"active_lock_reason\" : \"too heated\",\n \"id\" : 1,\n \"repository_url\" : \"https://api.github.com/repos/octocat/Hello-World\",\n \"state\" : \"open\",\n \"locked\" : true,\n \"timeline_url\" : \"https://web.example.mocklab.io/690617\",\n \"pull_request\" : {\n \"patch_url\" : \"https://web.example.mocklab.io/568817\",\n \"html_url\" : \"https://web.example.mocklab.io/613391\",\n \"merged_at\" : \"2023-05-15T04:20:49.287Z\",\n \"diff_url\" : \"https://web.example.mocklab.io/923665\",\n \"url\" : \"https://web.example.mocklab.io/115297\"\n },\n \"closed_at\" : \"2023-09-27T16:40:00.287Z\",\n \"comments\" : 0,\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347\",\n \"labels\" : [ {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n }, {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n }, {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n }, {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n } ],\n \"milestone\" : {\n \"creator\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Elton Gleichner\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"di4w5uarylzd9y1ej23py0071ko70vg8bjhr4b2xrj7h1eyd17sbs61ol8lch\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"closed_at\" : \"2013-02-12T13:22:01Z\",\n \"created_at\" : \"2011-04-10T20:09:31Z\",\n \"description\" : \"Tracking milestone for version 1.0\",\n \"closed_issues\" : 8,\n \"title\" : \"v1.0\",\n \"due_on\" : \"2012-10-09T23:39:01Z\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones/1\",\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones/1/labels\",\n \"number\" : 42,\n \"updated_at\" : \"2014-03-03T18:58:10Z\",\n \"html_url\" : \"https://github.com/octocat/Hello-World/milestones/v1.0\",\n \"id\" : 1002604,\n \"state\" : \"open\",\n \"open_issues\" : 4,\n \"node_id\" : \"MDk6TWlsZXN0b25lMTAwMjYwNA==\"\n },\n \"events_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347/events\",\n \"html_url\" : \"https://github.com/octocat/Hello-World/issues/1347\",\n \"assignee\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Hedy Frami\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"2s45ej7e379o5320yq4z7fjh4315wbdlbdsat35dqgyd5yhpbxplz2q1rgvm2k16hjuv12p0myqr2qynmywe2u4fpcgfnzdh6c0ckzad78f341fwj5b1f2p96aevz7ya3yku0v\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"user\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"cleveland.jones\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"n5477y7z34f4hwom4yth7ynmirm227hqmi42uqdl0w023yubg0trdk56gmft9hr3c65w5usrenevf89oh6s5lsqsyl0t6ecflm6bgvgmgwm3nciskr17oy7htd\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"node_id\" : \"MDU6SXNzdWUx\"\n },\n \"action\" : \"v7mw06za7b4xfevims9heedhwph74x4ebuh0t6ysfp3gopjh03v1u42xrhodk6aqwhozcgmzcsb639sapblyd3h01ke9oq4u6locw\",\n \"comment\" : {\n \"issue_url\" : \"https://web.example.mocklab.io/397339\",\n \"body_html\" : \"lws6h1q8nkv\",\n \"body_text\" : \"zf2attp68yeamns77\",\n \"created_at\" : \"2011-04-14T16:00:49Z\",\n \"body\" : \"What version of Safari were you using when you observed this bug?\",\n \"url\" : \"https://api.github.com/repositories/42/issues/comments/1\",\n \"author_association\" : \"OWNER\",\n \"performed_via_github_app\" : {\n \"owner\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Mose Gulgowski\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"n9cyn9cdxuv7ztwzy6e2ilcau0lo2ykqqnez45l4rzt5v4ylcbpcqr0fky192n3od0r3lq2wiwwyobu99ilyh8qq173bxcweolzvrpqcauuqqpumc5ubvmekpv7trjk40xr6dy7oioq4ilzwondkn3sfvce\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"installations_count\" : 5,\n \"created_at\" : \"2017-07-08T16:18:44-04:00\",\n \"description\" : \"The description of the app.\",\n \"client_id\" : \"\\\"Iv1.25b5d1e65ffc4022\\\"\",\n \"external_url\" : \"https://example.com\",\n \"updated_at\" : \"2017-07-08T16:18:44-04:00\",\n \"permissions\" : {\n \"deployments\" : \"write\",\n \"issues\" : \"read\"\n },\n \"html_url\" : \"https://github.com/apps/super-ci\",\n \"name\" : \"Probot Owners\",\n \"pem\" : \"\\\"-----BEGIN RSA PRIVATE KEY-----\\\\nMIIEogIBAAKCAQEArYxrNYD/iT5CZVpRJu4rBKmmze3PVmT/gCo2ATUvDvZTPTey\\\\nxcGJ3vvrJXazKk06pN05TN29o98jrYz4cengG3YGsXPNEpKsIrEl8NhbnxapEnM9\\\\nJCMRe0P5JcPsfZlX6hmiT7136GRWiGOUba2X9+HKh8QJVLG5rM007TBER9/z9mWm\\\\nrJuNh+m5l320oBQY/Qq3A7wzdEfZw8qm/mIN0FCeoXH1L6B8xXWaAYBwhTEh6SSn\\\\nZHlO1Xu1JWDmAvBCi0RO5aRSKM8q9QEkvvHP4yweAtK3N8+aAbZ7ovaDhyGz8r6r\\\\nzhU1b8Uo0Z2ysf503WqzQgIajr7Fry7/kUwpgQIDAQABAoIBADwJp80Ko1xHPZDy\\\\nfcCKBDfIuPvkmSW6KumbsLMaQv1aGdHDwwTGv3t0ixSay8CGlxMRtRDyZPib6SvQ\\\\n6OH/lpfpbMdW2ErkksgtoIKBVrDilfrcAvrNZu7NxRNbhCSvN8q0s4ICecjbbVQh\\\\nnueSdlA6vGXbW58BHMq68uRbHkP+k+mM9U0mDJ1HMch67wlg5GbayVRt63H7R2+r\\\\nVxcna7B80J/lCEjIYZznawgiTvp3MSanTglqAYi+m1EcSsP14bJIB9vgaxS79kTu\\\\noiSo93leJbBvuGo8QEiUqTwMw4tDksmkLsoqNKQ1q9P7LZ9DGcujtPy4EZsamSJT\\\\ny8OJt0ECgYEA2lxOxJsQk2kI325JgKFjo92mQeUObIvPfSNWUIZQDTjniOI6Gv63\\\\nGLWVFrZcvQBWjMEQraJA9xjPbblV8PtfO87MiJGLWCHFxmPz2dzoedN+2Coxom8m\\\\nV95CLz8QUShuao6u/RYcvUaZEoYs5bHcTmy5sBK80JyEmafJPtCQVxMCgYEAy3ar\\\\nZr3yv4xRPEPMat4rseswmuMooSaK3SKub19WFI5IAtB/e7qR1Rj9JhOGcZz+OQrl\\\\nT78O2OFYlgOIkJPvRMrPpK5V9lslc7tz1FSh3BZMRGq5jSyD7ETSOQ0c8T2O/s7v\\\\nbeEPbVbDe4mwvM24XByH0GnWveVxaDl51ABD65sCgYB3ZAspUkOA5egVCh8kNpnd\\\\nSd6SnuQBE3ySRlT2WEnCwP9Ph6oPgn+oAfiPX4xbRqkL8q/k0BdHQ4h+zNwhk7+h\\\\nWtPYRAP1Xxnc/F+jGjb+DVaIaKGU18MWPg7f+FI6nampl3Q0KvfxwX0GdNhtio8T\\\\nTj1E+SnFwh56SRQuxSh2gwKBgHKjlIO5NtNSflsUYFM+hyQiPiqnHzddfhSG+/3o\\\\nm5nNaSmczJesUYreH5San7/YEy2UxAugvP7aSY2MxB+iGsiJ9WD2kZzTUlDZJ7RV\\\\nUzWsoqBR+eZfVJ2FUWWvy8TpSG6trh4dFxImNtKejCR1TREpSiTV3Zb1dmahK9GV\\\\nrK9NAoGAbBxRLoC01xfxCTgt5BDiBcFVh4fp5yYKwavJPLzHSpuDOrrI9jDn1oKN\\\\nonq5sDU1i391zfQvdrbX4Ova48BN+B7p63FocP/MK5tyyBoT8zQEk2+vWDOw7H/Z\\\\nu5dTCPxTIsoIwUw1I+7yIxqJzLPFgR2gVBwY1ra/8iAqCj+zeBw=\\\\n-----END RSA PRIVATE KEY-----\\\\n\\\"\",\n \"webhook_secret\" : \"\\\"6fba8f2fc8a7e8f2cca5577eddd82ca7586b3b6b\\\"\",\n \"client_secret\" : \"\\\"1d4b2097ac622ba702d19de498f005747a8b21d3\\\"\",\n \"id\" : 37,\n \"events\" : [ \"label\", \"deployment\" ],\n \"slug\" : \"probot-owners\",\n \"node_id\" : \"MDExOkludGVncmF0aW9uMQ==\"\n },\n \"updated_at\" : \"2011-04-14T16:00:49Z\",\n \"html_url\" : \"https://web.example.mocklab.io/735115\",\n \"reactions\" : {\n \"confused\" : 5160630751087492983,\n \"-1\" : 7087913275107953128,\n \"+1\" : 7643770862471612986,\n \"total_count\" : 5169325487384872124,\n \"rocket\" : 7607005849081311024,\n \"hooray\" : 5322960231664987488,\n \"eyes\" : 6510690164362196132,\n \"heart\" : 5530992414349856565,\n \"laugh\" : 2656344350627223883,\n \"url\" : \"https://web.example.mocklab.io/214755\"\n },\n \"id\" : 42,\n \"user\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"susy.stamm\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"9vf2dmg3zaje2qrqqdugbyv7nufiojwxcnznphwydqsrz1vstfo5fl2n8845jjd9kdvaia7n6s29ujq335zqxc1sqmg65ssmekv7awz0d05px7opdnwxkv06cpv4jpfqp5ivah6kzew2532v3nbseuskm047vkgg1aliez7b7b4lm9b1\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"node_id\" : \"1t87\"\n }\n },\n \"repo\" : {\n \"name\" : \"Jeffrey Rath\",\n \"id\" : 5538250869549428428,\n \"url\" : \"https://web.example.mocklab.io/543621\"\n },\n \"created_at\" : \"2022-09-22T15:26:04.288Z\",\n \"id\" : \"e8w1\",\n \"type\" : \"666a94uue5bygtb1t3cx294zrs6b9h94jsion9xvy1urnggxehryrhopv2tp3cgy5v82wtgmfitja22746fpjz9ey4dpw712l3i2yt5zoun0alk1oaft4y0fz23vs3ta24ye85eyyj2xkcip6x8qnjosmnbfseb39ilxi3aageomy40rxqawk5\"\n} ]", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "61d59d6b-d0d4-44c5-976a-f8819fd9bd7b", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.289136Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "activity/list-received-events-for-user", + "schema": { + "items": { + "$ref": "#/components/schemas/event" + }, + "type": "array" + } + } + } + }, + "insertionIndex": 9 + }, + { + "id": "58db7aed-eb23-4f2f-aca7-55b1c726497f", + "name": "List user projects", + "request": { + "urlPath": "/users/coralee.von/projects", + "method": "GET" + }, + "response": { + "status": 422, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/714965\",\n \"message\" : \"Qui ea consequatur qui. Vel ipsum velit. Aperiam deserunt qui omnis laboriosam aperiam. Delectus aut aut et ut quia suscipit. Quaerat esse et corrupti et dicta omnis dolorem.\",\n \"errors\" : [ {\n \"code\" : \"2f3pnmj38zmuk7xeco5yhvm9euf0bi9m645kr5qenob4lkbyyqua3fs3xhi7dcomuhnqo7vnvgt4p042phet18ytzkoys48qirp18w2rg0ggw8w1acn9ra07khhylmq5h4u2mwct9kou31ob946wu6vujgkj6i5sg0gpm7dhnv8bx9r0pt34w\",\n \"field\" : \"h9fm8ub8rypwq0\",\n \"resource\" : \"b6pxu6ahotrzo0d13ujpue9jnqgfum2aoicglx4lvc748qd2l0hzrugl7yvqgpsnowazkwwgeuvfyj13dbng15k31fs99sbmbpi72ccvgor7399h9r6ogfojhynv1n07y0gfkpq9vpd16txyu3til42c36i176n63a90t7ziixv4gcgc\",\n \"index\" : 7889030240979381163,\n \"message\" : \"Ex quo et eos qui velit. Consequatur dolorem mollitia esse est maiores odio. Est ab quam optio placeat qui. Qui rerum asperiores repellat. Dolore vitae provident.\",\n \"value\" : { }\n }, {\n \"code\" : \"yj0fpwfo6ze4wucq5997wjf3jaihzsfhp7yjxccy6bsyw32baie888odumkdwl9kmdf9fstgdvu3fl1q7uspdo226mkwnt94s1fy0oecz29fqpcz8bbyeyqh74y4q28no7etqhmkf8gfouryhwg04rz0ojqt0d6ej4g34vlue1en5ifnet\",\n \"field\" : \"zzx97t9wclpx27ybzw40005anykicco0m1o56g5l7wa10m4ov04iyf6qenclsrq4c442lsr05f9zfjfonltrvsf19yjrwph8fm4ckbgg6wui\",\n \"resource\" : \"m3qguztr0\",\n \"index\" : 178456327302643911,\n \"message\" : \"Esse qui voluptas. Qui ut dolores dolor adipisci qui sunt. Et voluptates nobis enim sapiente consectetur doloribus.\",\n \"value\" : { }\n }, {\n \"code\" : \"h4y3rpg033k4rr5u7jwkdpq9bdae1g7mlarh17w1u2wgk2ovvn5wxxy8m8myw57rxc5r\",\n \"field\" : \"2telbgnnfh4\",\n \"resource\" : \"kynmd8t418dkm77ud648rt7ltddllxw3qzm48p5kgxjjx53mfzer6xcbxpmw6dxkpi39o2jeqsgy88t8po60u3ga6x0h8cfhrmlmcjiumhv2f77y7kvqm7b8g15xcp9szjgrybj4e9s718fb9keqb9jjeafjiqskgyh3ukucxwz4f1qv8f98gdam23tddt0i4ei7ps7\",\n \"index\" : 6200648263210915836,\n \"message\" : \"Consectetur natus doloribus fuga voluptatibus est nulla. Aut illum et. Quaerat est temporibus harum cumque. Sint ab aut et aliquid. Est omnis vero ut.\",\n \"value\" : { }\n }, {\n \"code\" : \"3xegihjqz02hlg6v71g3fmvi648oqzeq3cpnlxa1v\",\n \"field\" : \"amdydrpx62t2rn86uj0z4rba4kwgjn7n510lz1yulzgjcdqxa1i2hmpexst2p3sqqcrch2mzi0sqd8rexpiawqjtveg7a5lhsldw9nftpog2bvyladnp040ikap3yaskqpenpe1jex4y52cxnahaxn\",\n \"resource\" : \"r5xo3sjb2vacfheio2v8ylrgqew7jcb5x522qeh37uw3gwaqdlxbtgjy106s1cpvgu3n1nsnz0qa11eefe9yhrbcmu3mydkmolfyw992lk69j6ye3zze8ib\",\n \"index\" : 5760606575817027753,\n \"message\" : \"Natus ad et qui iure. Hic ducimus consequatur omnis. Tempora et tenetur culpa similique consequatur. Assumenda deleniti magnam laborum quos et dolores.\",\n \"value\" : { }\n }, {\n \"code\" : \"bs2r8qxrzwvft1zldv4m031uozokldinyckqjfmfbm0zxxmd4v6i3o5xofv9ok4o96rl91zyr69hpwgpbfweq47hdt71yncsv6a574i0nud458rakwrrwfpfhwllbemxrpu654sa72552apqtqaoy1v1e9f4d1llj61nupwbfh8g8fb2cwdrfqj16bjjvb\",\n \"field\" : \"ao4wkpd6yiyquf7ek6pkhghe0znrg5wi6zth0ta38he6hv57grpc2vlg8gebvpr92f7pv76k0204c24e9noefdrpbqs3a09tzcgyk6l6stn2yzi7tyq\",\n \"resource\" : \"f8ipgyefoj8ziiszko06692ub9vsschp0oj9edmev8drjtjvrymhpygtfzl1rlfvsnyk3vwyppd5gw1kmzjw9ca31cc7s7iwjt\",\n \"index\" : 751233414446019805,\n \"message\" : \"Voluptatem occaecati aut qui voluptatem. Ut et qui. Unde consequuntur omnis non nam mollitia. Quasi dolorem velit unde laudantium adipisci.\",\n \"value\" : { }\n }, {\n \"code\" : \"ee7g4vwvjpw54uz2y2o0cpe9qr08cbm7qvpf479lbsvyexhbya6n0iu9x3rmccw0xfnaixalejnfoi8qxsl86q961mtnqipnn25l0k8naqf0qmkx2yjppduuwz62a12akd7zp1mq1y1mdtumotrwudyy42ab8w2qbaa8qzx\",\n \"field\" : \"4q1r60rfb7507\",\n \"resource\" : \"kknm5jk3shlf4qu6cj4u8vc\",\n \"index\" : 1312133526238093112,\n \"message\" : \"Sit beatae dolore sit. Sequi qui esse et et explicabo. Qui iure facilis ut eos.\",\n \"value\" : { }\n } ]\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "58db7aed-eb23-4f2f-aca7-55b1c726497f", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.28153Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "projects/list-for-user", + "schema": { + "description": "Validation Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "errors": { + "items": { + "properties": { + "code": { + "type": "string" + }, + "field": { + "type": "string" + }, + "index": { + "type": "integer" + }, + "message": { + "type": "string" + }, + "resource": { + "type": "string" + }, + "value": { + "oneOf": [ + { + "nullable": true, + "type": "string" + }, + { + "nullable": true, + "type": "integer" + }, + { + "items": { + "type": "string" + }, + "nullable": true, + "type": "array" + } + ] + } + }, + "required": ["code"], + "type": "object" + }, + "type": "array" + }, + "message": { + "type": "string" + } + }, + "required": ["message", "documentation_url"], + "title": "Validation Error", + "type": "object" + } + } + } + }, + "insertionIndex": 10 + }, + { + "id": "f26c8ea2-82b8-4e28-b8b4-95102eb4eb4b", + "name": "List user projects", + "request": { + "urlPath": "/users/deeanna.greenfelder/projects", + "method": "GET" + }, + "response": { + "status": 415, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/445036\",\n \"message\" : \"Animi illum soluta ad tempore. Dignissimos cupiditate corporis quia consequatur harum. Blanditiis natus est dolore inventore qui et veritatis. Ut officia dolores rem eius.\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "f26c8ea2-82b8-4e28-b8b4-95102eb4eb4b", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.280838Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "projects/list-for-user", + "schema": { + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": ["message", "documentation_url"], + "type": "object" + } + } + } + }, + "insertionIndex": 11 + }, + { + "id": "c9423a7a-1841-4139-a103-5d85b6d25c32", + "name": "List user projects - default", + "request": { + "urlPath": "/users/porsha.block/projects", + "method": "GET" + }, + "response": { + "status": 200, + "body": "[ {\n \"body\" : \"A board to manage my personal projects.\",\n \"columns_url\" : \"https://api.github.com/projects/1002603/columns\",\n \"created_at\" : \"2011-04-10T20:09:31Z\",\n \"creator\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"html_url\" : \"https://github.com/users/octocat/projects/1\",\n \"id\" : 1002603,\n \"name\" : \"My Projects\",\n \"node_id\" : \"MDc6UHJvamVjdDEwMDI2MDM=\",\n \"number\" : 1,\n \"owner_url\" : \"https://api.github.com/users/octocat\",\n \"state\" : \"open\",\n \"updated_at\" : \"2014-03-03T18:58:10Z\",\n \"url\" : \"https://api.github.com/projects/1002603\"\n} ]", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "c9423a7a-1841-4139-a103-5d85b6d25c32", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.280669Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "projects/list-for-user", + "schema": { + "items": { + "$ref": "#/components/schemas/project" + }, + "type": "array" + } + } + } + }, + "insertionIndex": 12 + }, + { + "id": "f304b465-a90d-48c9-bb46-1b9bf2e31a82", + "name": "List organizations for a user - default", + "request": { + "urlPath": "/users/ayako.kovacek/orgs", + "method": "GET" + }, + "response": { + "status": 200, + "body": "[ {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"description\" : \"A great organization\",\n \"events_url\" : \"https://api.github.com/orgs/github/events\",\n \"hooks_url\" : \"https://api.github.com/orgs/github/hooks\",\n \"id\" : 1,\n \"issues_url\" : \"https://api.github.com/orgs/github/issues\",\n \"login\" : \"github\",\n \"members_url\" : \"https://api.github.com/orgs/github/members{/member}\",\n \"node_id\" : \"MDEyOk9yZ2FuaXphdGlvbjE=\",\n \"public_members_url\" : \"https://api.github.com/orgs/github/public_members{/member}\",\n \"repos_url\" : \"https://api.github.com/orgs/github/repos\",\n \"url\" : \"https://api.github.com/orgs/github\"\n} ]", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "f304b465-a90d-48c9-bb46-1b9bf2e31a82", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.280603Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "orgs/list-for-user", + "schema": { + "items": { + "$ref": "#/components/schemas/organization-simple" + }, + "type": "array" + } + } + } + }, + "insertionIndex": 13 + }, + { + "id": "e1e98408-fdf2-49c4-80a3-8d7773829791", + "name": "List public keys for a user - default", + "request": { + "urlPath": "/users/herb.romaguera/keys", + "method": "GET" + }, + "response": { + "status": 200, + "body": "[ {\n \"id\" : 1,\n \"key\" : \"ssh-rsa AAA...\"\n} ]", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "e1e98408-fdf2-49c4-80a3-8d7773829791", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.28055Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "users/list-public-keys-for-user", + "schema": { + "items": { + "$ref": "#/components/schemas/key-simple" + }, + "type": "array" + } + } + } + }, + "insertionIndex": 14 + }, + { + "id": "646e8a29-b02b-46a0-8a3c-794d4d6fc35a", + "name": "Get a user installation for the authenticated app - default", + "request": { + "urlPath": "/users/reed.brakus/installation", + "method": "GET" + }, + "response": { + "status": 200, + "body": "{\n \"access_tokens_url\" : \"https://api.github.com/installations/1/access_tokens\",\n \"account\" : {\n \"avatar_url\" : \"https://github.com/images/error/hubot_happy.gif\",\n \"events_url\" : \"https://api.github.com/orgs/github/events\",\n \"followers_url\" : \"https://api.github.com/users/github/followers\",\n \"following_url\" : \"https://api.github.com/users/github/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/github/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/github\",\n \"id\" : 1,\n \"login\" : \"github\",\n \"node_id\" : \"MDEyOk9yZ2FuaXphdGlvbjE=\",\n \"organizations_url\" : \"https://api.github.com/users/github/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/github/received_events\",\n \"repos_url\" : \"https://api.github.com/orgs/github/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/github/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/github/subscriptions\",\n \"type\" : \"Organization\",\n \"url\" : \"https://api.github.com/orgs/github\"\n },\n \"app_id\" : 1,\n \"app_slug\" : \"github-actions\",\n \"created_at\" : \"2018-02-09T20:51:14Z\",\n \"events\" : [ \"push\", \"pull_request\" ],\n \"html_url\" : \"https://github.com/organizations/github/settings/installations/1\",\n \"id\" : 1,\n \"permissions\" : {\n \"checks\" : \"write\",\n \"contents\" : \"read\",\n \"metadata\" : \"read\"\n },\n \"repositories_url\" : \"https://api.github.com/installation/repositories\",\n \"repository_selection\" : \"all\",\n \"single_file_name\" : \"config.yml\",\n \"target_id\" : 1,\n \"target_type\" : \"Organization\",\n \"updated_at\" : \"2018-02-09T20:51:14Z\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "646e8a29-b02b-46a0-8a3c-794d4d6fc35a", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.280485Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "apps/get-user-installation", + "schema": { + "description": "Installation", + "properties": { + "access_tokens_url": { + "example": "https://api.github.com/installations/1/access_tokens", + "format": "uri", + "type": "string" + }, + "account": { + "anyOf": [ + { + "$ref": "#/components/schemas/simple-user" + }, + { + "$ref": "#/components/schemas/enterprise" + } + ], + "nullable": true + }, + "app_id": { + "example": 1, + "type": "integer" + }, + "app_slug": { + "example": "github-actions", + "type": "string" + }, + "contact_email": { + "example": "\"test_13f1e99741e3e004@d7e1eb0bc0a1ba12.com\"", + "nullable": true, + "type": "string" + }, + "created_at": { + "format": "date-time", + "type": "string" + }, + "events": { + "items": { + "type": "string" + }, + "type": "array" + }, + "html_url": { + "example": "https://github.com/organizations/github/settings/installations/1", + "format": "uri", + "type": "string" + }, + "id": { + "description": "The ID of the installation.", + "example": 1, + "type": "integer" + }, + "permissions": { + "example": { + "deployments": "write", + "issues": "read" + }, + "properties": { + "checks": { + "type": "string" + }, + "contents": { + "type": "string" + }, + "deployments": { + "type": "string" + }, + "issues": { + "example": "\"read\"", + "type": "string" + }, + "metadata": { + "type": "string" + }, + "organization_administration": { + "example": "\"read\"", + "type": "string" + }, + "pull_requests": { + "type": "string" + }, + "statuses": { + "type": "string" + } + }, + "type": "object" + }, + "repositories_url": { + "example": "https://api.github.com/installation/repositories", + "format": "uri", + "type": "string" + }, + "repository_selection": { + "description": "Describe whether all repositories have been selected or there's a selection involved", + "enum": ["all", "selected"], + "type": "string" + }, + "single_file_name": { + "example": "config.yaml", + "nullable": true, + "type": "string" + }, + "suspended_at": { + "format": "date-time", + "nullable": true, + "type": "string" + }, + "suspended_by": { + "$ref": "#/components/schemas/nullable-simple-user" + }, + "target_id": { + "description": "The ID of the user or organization this token is being scoped to.", + "type": "integer" + }, + "target_type": { + "example": "Organization", + "type": "string" + }, + "updated_at": { + "format": "date-time", + "type": "string" + } + }, + "required": [ + "id", + "app_id", + "app_slug", + "target_id", + "target_type", + "single_file_name", + "repository_selection", + "access_tokens_url", + "html_url", + "repositories_url", + "events", + "account", + "permissions", + "created_at", + "updated_at" + ], + "title": "Installation", + "type": "object" + } + } + } + }, + "insertionIndex": 15 + }, + { + "id": "453a27dc-9fdb-413b-8ebf-e260964d03c1", + "name": "Get contextual information for a user", + "request": { + "urlPath": "/users/clara.douglas/hovercard", + "method": "GET" + }, + "response": { + "status": 422, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/120247\",\n \"message\" : \"Maiores non quas et unde. Iure tempora autem et perspiciatis et placeat. Quod asperiores molestiae dolor ad officiis. Qui distinctio voluptatem reiciendis aut quas voluptatem.\",\n \"errors\" : [ {\n \"code\" : \"0ryur6cj2lovldfkmc1wgexuyg0oob\",\n \"field\" : \"b8emh8u5zuvxjvkhh7of6y8n7proqtuz1srf7g9m5w5jivmpk5a1vnmxcmdv7uac553m52yqy5no22\",\n \"resource\" : \"ewljd3jtwhr3ctun0po4zsmmeg80bcrkiz7hl23yn9unylij5fo5d16fkm1s8s8dag297jsv5hjlvkcmypzwsqq9uk6trypddl66zdnnxc1t3spzbdhnub9py5ftmv6nscrk59zogjqcuwk8bpp15fva184uuh7gev8fxaojlm80x5d2ybwyzuwl5d5vfv9o18q\",\n \"index\" : 1494664042483123008,\n \"message\" : \"Et voluptates enim vel delectus quia dolore qui. Dolor explicabo voluptatem aut quia ipsa enim nam. Quis distinctio qui. Quia excepturi quia.\",\n \"value\" : { }\n } ]\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "453a27dc-9fdb-413b-8ebf-e260964d03c1", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.28023Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "users/get-context-for-user", + "schema": { + "description": "Validation Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "errors": { + "items": { + "properties": { + "code": { + "type": "string" + }, + "field": { + "type": "string" + }, + "index": { + "type": "integer" + }, + "message": { + "type": "string" + }, + "resource": { + "type": "string" + }, + "value": { + "oneOf": [ + { + "nullable": true, + "type": "string" + }, + { + "nullable": true, + "type": "integer" + }, + { + "items": { + "type": "string" + }, + "nullable": true, + "type": "array" + } + ] + } + }, + "required": ["code"], + "type": "object" + }, + "type": "array" + }, + "message": { + "type": "string" + } + }, + "required": ["message", "documentation_url"], + "title": "Validation Error", + "type": "object" + } + } + } + }, + "insertionIndex": 16 + }, + { + "id": "e93e3a9a-30d8-4817-921e-73c9c2260950", + "name": "Get contextual information for a user", + "request": { + "urlPath": "/users/minh.zieme/hovercard", + "method": "GET" + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/953757\",\n \"message\" : \"Hic modi esse aliquid et enim voluptate rerum. Sit aut et harum et ut tempore. Cumque et asperiores qui praesentium cumque harum. Iste asperiores illo. Molestiae facere sequi molestias.\",\n \"url\" : \"https://web.example.mocklab.io/891137\",\n \"status\" : \"ftl9nwo7rto9t6jcksnhs8ogcs36ah4e50m2xkzoqjzt3janntnbvxb5gcf7y6ay2\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "e93e3a9a-30d8-4817-921e-73c9c2260950", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.279903Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "users/get-context-for-user", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 17 + }, + { + "id": "646b9caa-9547-4876-8746-29b4140a7659", + "name": "Get contextual information for a user - default", + "request": { + "urlPath": "/users/mica.hermann/hovercard", + "method": "GET" + }, + "response": { + "status": 200, + "body": "{\n \"contexts\" : [ {\n \"message\" : \"Owns this repository\",\n \"octicon\" : \"repo\"\n } ]\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "646b9caa-9547-4876-8746-29b4140a7659", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.279653Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "users/get-context-for-user", + "schema": { + "description": "Hovercard", + "properties": { + "contexts": { + "items": { + "properties": { + "message": { + "type": "string" + }, + "octicon": { + "type": "string" + } + }, + "required": ["message", "octicon"], + "type": "object" + }, + "type": "array" + } + }, + "required": ["contexts"], + "title": "Hovercard", + "type": "object" + } + } + } + }, + "insertionIndex": 18 + }, + { + "id": "caf04b74-abe3-45e9-9209-c18873b06513", + "name": "List GPG keys for a user - default", + "request": { + "urlPath": "/users/johnette.kohler/gpg_keys", + "method": "GET" + }, + "response": { + "status": 200, + "body": "[ {\n \"can_certify\" : true,\n \"can_encrypt_comms\" : false,\n \"can_encrypt_storage\" : false,\n \"can_sign\" : true,\n \"created_at\" : \"2016-03-24T11:31:04-06:00\",\n \"emails\" : [ {\n \"email\" : \"mastahyeti@users.noreply.github.com\",\n \"verified\" : true\n } ],\n \"expires_at\" : \"2016-03-24T11:31:04-07:00\",\n \"id\" : 3,\n \"key_id\" : \"3262EFF25BA0D270\",\n \"primary_key_id\" : 2,\n \"public_key\" : \"xsBNBFayYZ...\",\n \"raw_key\" : \"string\",\n \"subkeys\" : [ {\n \"can_certify\" : false,\n \"can_encrypt_comms\" : true,\n \"can_encrypt_storage\" : true,\n \"can_sign\" : false,\n \"created_at\" : \"2016-03-24T11:31:04-06:00\",\n \"emails\" : [ ],\n \"expires_at\" : \"2016-03-24T11:31:04-07:00\",\n \"id\" : 4,\n \"key_id\" : \"4A595D4C72EE49C7\",\n \"primary_key_id\" : 3,\n \"public_key\" : \"zsBNBFayYZ...\",\n \"subkeys\" : [ ]\n } ]\n} ]", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "caf04b74-abe3-45e9-9209-c18873b06513", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.27957Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "users/list-gpg-keys-for-user", + "schema": { + "items": { + "$ref": "#/components/schemas/gpg-key" + }, + "type": "array" + } + } + } + }, + "insertionIndex": 19 + }, + { + "id": "35ea909c-56be-41a3-9a43-272608930f69", + "name": "List gists for a user", + "request": { + "urlPath": "/users/anabel.wuckert/gists", + "method": "GET" + }, + "response": { + "status": 422, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/687146\",\n \"message\" : \"Et praesentium sunt dicta deserunt. Quaerat quidem maiores nostrum. Sint voluptatem voluptatem magnam optio. Et asperiores ut fugiat ut eius. In quas porro a cupiditate et quidem.\",\n \"errors\" : [ {\n \"code\" : \"dhl6op93ahi8pqtz8\",\n \"field\" : \"ra3fd3tnb57fiyjrm45bx8edgklo0ni2ukyv5jr91j4xej9f\",\n \"resource\" : \"4egizu9vgjogrv0nsgi3n4dpwyb2diaiu5vpc2q7ql0y0biwls4489jary4zhnxkbz1ya6vuvk8fjjbxiybiocg44c6yh78wt0ta49xsb324o3i53ktg61tz9gm5klrdyh3v800hblwk7dqxhbxfz34j7e8jb6251s03cy555givnapt2vc97a6jnma9d2\",\n \"index\" : 2508615010171918914,\n \"message\" : \"Sit qui ut velit tempora sed. Hic ipsa ex consequatur voluptatum ut. Et aspernatur in minima est. Dolore alias eius ullam rerum et. Officiis dolorem fugit culpa nobis quo.\",\n \"value\" : { }\n }, {\n \"code\" : \"pmes6uhr4rqikevp85to5nqcrz0pg94y7xdhds4nfpvo816g345uox56jc0v5qs6s9se3vw5i6u74ybma3dzt94plycoork7a7pz7h2tb5srzrzwdhgxq7n3jjknx25yqa7b2gyvcfkneymczau5729m3itmz5f2l7izfi\",\n \"field\" : \"0nitlu16tyiw9dbl1jw5gka7pw4m2ai645jhlsb\",\n \"resource\" : \"81caehyd1p1zfzqq5l552s8drldyu8i7dc47\",\n \"index\" : 8999939174530511490,\n \"message\" : \"Sequi in voluptate explicabo nemo vel sed. Beatae quos delectus beatae. Autem tempora ullam cum nulla quae. Veniam dignissimos neque cum dignissimos quibusdam.\",\n \"value\" : { }\n } ]\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "35ea909c-56be-41a3-9a43-272608930f69", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.279505Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "gists/list-for-user", + "schema": { + "description": "Validation Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "errors": { + "items": { + "properties": { + "code": { + "type": "string" + }, + "field": { + "type": "string" + }, + "index": { + "type": "integer" + }, + "message": { + "type": "string" + }, + "resource": { + "type": "string" + }, + "value": { + "oneOf": [ + { + "nullable": true, + "type": "string" + }, + { + "nullable": true, + "type": "integer" + }, + { + "items": { + "type": "string" + }, + "nullable": true, + "type": "array" + } + ] + } + }, + "required": ["code"], + "type": "object" + }, + "type": "array" + }, + "message": { + "type": "string" + } + }, + "required": ["message", "documentation_url"], + "title": "Validation Error", + "type": "object" + } + } + } + }, + "insertionIndex": 20 + }, + { + "id": "713486e6-5b99-4aed-8fb2-132950c8eb99", + "name": "List gists for a user - default", + "request": { + "urlPath": "/users/kasey.stiedemann/gists", + "method": "GET" + }, + "response": { + "status": 200, + "body": "[ {\n \"comments\" : 0,\n \"comments_url\" : \"https://api.github.com/gists/aa5a315d61ae9438b18d/comments/\",\n \"commits_url\" : \"https://api.github.com/gists/aa5a315d61ae9438b18d/commits\",\n \"created_at\" : \"2010-04-14T02:15:15Z\",\n \"description\" : \"Hello World Examples\",\n \"files\" : {\n \"hello_world.rb\" : {\n \"filename\" : \"hello_world.rb\",\n \"language\" : \"Ruby\",\n \"raw_url\" : \"https://gist.githubusercontent.com/octocat/6cad326836d38bd3a7ae/raw/db9c55113504e46fa076e7df3a04ce592e2e86d8/hello_world.rb\",\n \"size\" : 167,\n \"type\" : \"application/x-ruby\"\n }\n },\n \"forks_url\" : \"https://api.github.com/gists/aa5a315d61ae9438b18d/forks\",\n \"git_pull_url\" : \"https://gist.github.com/aa5a315d61ae9438b18d.git\",\n \"git_push_url\" : \"https://gist.github.com/aa5a315d61ae9438b18d.git\",\n \"html_url\" : \"https://gist.github.com/aa5a315d61ae9438b18d\",\n \"id\" : \"aa5a315d61ae9438b18d\",\n \"node_id\" : \"MDQ6R2lzdGFhNWEzMTVkNjFhZTk0MzhiMThk\",\n \"owner\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"public\" : true,\n \"truncated\" : false,\n \"updated_at\" : \"2011-06-20T11:34:15Z\",\n \"url\" : \"https://api.github.com/gists/aa5a315d61ae9438b18d\"\n} ]", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "713486e6-5b99-4aed-8fb2-132950c8eb99", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.279035Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "gists/list-for-user", + "schema": { + "items": { + "$ref": "#/components/schemas/base-gist" + }, + "type": "array" + } + } + } + }, + "insertionIndex": 21 + }, + { + "id": "4d3fb579-3608-4674-a704-5ff644e8999d", + "name": "Check if a user follows another user - 404", + "request": { + "urlPath": "/users/noble.pfeffer/following/nshmiafftx13tf99z6mod9ydffmjpuoxyrpzqij5dwyujp8gowz2h9y3x7g1ff4rxdrviahpy32s6meizzrhzomhftyxw8hx9u32rg4p8xhr3o2j9qv48m", + "method": "GET" + }, + "response": { + "status": 404 + }, + "uuid": "4d3fb579-3608-4674-a704-5ff644e8999d", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.27897Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "users/check-following-for-user" + } + } + }, + "insertionIndex": 22 + }, + { + "id": "b3cde8c1-0cdd-455a-b07d-fd6de44f0e69", + "name": "Check if a user follows another user - 204", + "request": { + "urlPath": "/users/sammie.dicki/following/mq63qu95yyk17g78184fpvdalvhu1yus9m54a2d36wv18bwa", + "method": "GET" + }, + "response": { + "status": 204 + }, + "uuid": "b3cde8c1-0cdd-455a-b07d-fd6de44f0e69", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.278918Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "users/check-following-for-user" + } + } + }, + "insertionIndex": 23 + }, + { + "id": "fc1479ad-8ac4-4f80-86ab-cbd3b0e108fb", + "name": "List the people a user follows - default", + "request": { + "urlPath": "/users/angle.huels/following", + "method": "GET" + }, + "response": { + "status": 200, + "body": "[ {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n} ]", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "fc1479ad-8ac4-4f80-86ab-cbd3b0e108fb", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.278854Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "users/list-following-for-user", + "schema": { + "items": { + "$ref": "#/components/schemas/simple-user" + }, + "type": "array" + } + } + } + }, + "insertionIndex": 24 + }, + { + "id": "710245da-75f4-4aac-902d-57b830f82642", + "name": "List followers of a user - default", + "request": { + "urlPath": "/users/sheldon.murray/followers", + "method": "GET" + }, + "response": { + "status": 200, + "body": "[ {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n} ]", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "710245da-75f4-4aac-902d-57b830f82642", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.278788Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "users/list-followers-for-user", + "schema": { + "items": { + "$ref": "#/components/schemas/simple-user" + }, + "type": "array" + } + } + } + }, + "insertionIndex": 25 + }, + { + "id": "54e43772-9d7a-498f-b156-9912738fdb0d", + "name": "List public events for a user", + "request": { + "urlPath": "/users/hosea.hilll/events/public", + "method": "GET" + }, + "response": { + "status": 200, + "body": "[ {\n \"actor\" : {\n \"display_login\" : \"vbc55u0tkd09sg7if6diw2aovnood6gvpyeverpv5co7jy8r9qs2k6y2gm2v06slzpu6uwghmjkur50cb7uty235260cyihtv1dai6fuj573ov4drcu3d81tyj0uei48bseqed0ek3hatynmcmxnqhjm1elf\",\n \"avatar_url\" : \"https://s3.amazonaws.com/uifaces/faces/twitter/thaisselenator_/128.jpg\",\n \"id\" : 8913770975132088020,\n \"login\" : \"6ppmpgxsnp0xuu7htdomlxlwt3o9mg1ihu0webptuxaw7ckkmiqdzoslmrw9f67wbruaxmfi06kzbb44e8ey3panc6ascnm2kxg2tq0ncoze273sq1jk4lln1cut9o6ede1qbqaszzitoqpxro2vsjwho150w1etc86u2za4inupkd1\",\n \"gravatar_id\" : \"58gg\",\n \"url\" : \"https://web.example.mocklab.io/709944\"\n },\n \"public\" : true,\n \"org\" : {\n \"display_login\" : \"x3egyh3wdjtn6f3otlj7\",\n \"avatar_url\" : \"https://s3.amazonaws.com/uifaces/faces/twitter/joki4/128.jpg\",\n \"id\" : 8944394262172330177,\n \"login\" : \"1dwf5njh16tf2rtvauo7khn8rbaac2vxy6p44nanqlk02330i117y7suffewrqnxhk3rmzbfaf18dwkrdrdsh6tgs8pgg5hir8yrm75libw6syzypthf0vyvrpdopbrrexvixr1p8i5s6xh0l7gvk3iqieh6d0a23wht7y\",\n \"gravatar_id\" : \"303l\",\n \"url\" : \"https://web.example.mocklab.io/331584\"\n },\n \"payload\" : {\n \"pages\" : [ {\n \"summary\" : \"Tempore recusandae consectetur dolore sapiente numquam totam velit. Aut cum excepturi cumque et et nihil est. Laudantium qui alias qui cupiditate nemo.\",\n \"html_url\" : \"https://web.example.mocklab.io/706654\",\n \"page_name\" : \"Adelle Moen\",\n \"action\" : \"fmtyc91u2xj2uu1q1jrru1wd335mfsjsjjh3juc2ammki7aju56htvpun40jobjp90tu4lstwnvwp7eo68kqw8914637afok9fm2flhltc6vz8kae0xyr0su2qi010siilvj3znwsgaz09dpt511f4zwsl1\",\n \"title\" : \"Id fuga iste omnis autem ut.\",\n \"sha\" : \"nmn21fx0ya3izjq7j8iyh06krgec931vh5en40h6xy235nb0z8kba29oeprqswjmz2olcbkxxh3yyn8ro3cx4x010jvh5o7f51qu7ednagkx67bfvv2h9pw69z7wyegeaj9cwsdsfuymik3d8416et5ywdx01d21fsrsjdj2dotzx89bqyjno7dchselt3m6w\"\n }, {\n \"summary\" : \"Dolorem et necessitatibus incidunt adipisci et. Vero voluptates expedita. Modi aliquid non.\",\n \"html_url\" : \"https://web.example.mocklab.io/677849\",\n \"page_name\" : \"Miss Archie Leuschke\",\n \"action\" : \"goix19tccks6whcfd1p8t25fglk7k\",\n \"title\" : \"Maiores explicabo commodi similique.\",\n \"sha\" : \"lxt3kucct4bm4nvl96rhesqk3p3fu8lxm06vvmk26tozfgfsdd6lvu9me2k0ynu81fcr6un8fia9oii1ddvbir47h1kuwu9zaumh9z0t7056emmocffxb55zifnfm368h88ch0wjh\"\n } ],\n \"issue\" : {\n \"body_html\" : \"wduzb5m326u117t9b9i50srbhd491q6iinifwv8nyq416e4pxayicm63brv462a8fwb5he4gb66oweymvc2jnvku\",\n \"body_text\" : \"3xkyd7jmk2di78k4rtrzsigqupqr13e4qv20\",\n \"assignees\" : [ {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Soila O'Keefe I\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"gc1mwvvxmws0vo2jvbcqei91ceo\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n }, {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Donya Wehner\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"45z9qpuwqo9x7pyx0a2wxfnszooxtxin0fdeuyqxm6hjomh3hjlqabzsj54vamvtmnee2q3py7gvygnaqspta5ql8ow7n2lxe250uaxkdpn3ymis7ewv18zbe2mwnsvzd1e0cqjy8bdn8xzagatiuc4dl1uvjtwiauuiisrydhr5vw20d2hxy23l6qanjgafkfovpz\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n } ],\n \"created_at\" : \"2011-04-22T13:33:48Z\",\n \"body\" : \"I'm having a problem with this.\",\n \"repository\" : {\n \"allow_forking\" : false,\n \"anonymous_access_enabled\" : true,\n \"is_template\" : true,\n \"stargazers_count\" : 80,\n \"pushed_at\" : \"2011-01-26T19:06:43Z\",\n \"language\" : \"enzaxq0bdffxsy1buf04u2w0bx0t532o6zuccdm716q83y7o67h17pw2elr08n9gbcqx8e4tgmjcf8mfl1mca4qjmnw2m4zv2d0m8nbeuk41wkzzpv2d4lu6maafzlw9zb8joea0u4s6bjalsuz7s1xwgkoe8mo7ql2sd5iux9a0y3mfjcvfup63phw9n\",\n \"subscription_url\" : \"http://api.github.com/repos/octocat/Hello-World/subscription\",\n \"branches_url\" : \"http://api.github.com/repos/octocat/Hello-World/branches{/branch}\",\n \"allow_rebase_merge\" : true,\n \"issue_comment_url\" : \"http://api.github.com/repos/octocat/Hello-World/issues/comments{/number}\",\n \"labels_url\" : \"http://api.github.com/repos/octocat/Hello-World/labels{/name}\",\n \"permissions\" : {\n \"pull\" : false,\n \"maintain\" : true,\n \"admin\" : false,\n \"triage\" : false,\n \"push\" : true\n },\n \"subscribers_url\" : \"http://api.github.com/repos/octocat/Hello-World/subscribers\",\n \"releases_url\" : \"http://api.github.com/repos/octocat/Hello-World/releases{/id}\",\n \"svn_url\" : \"https://svn.github.com/octocat/Hello-World\",\n \"subscribers_count\" : 3635744336029774505,\n \"id\" : 42,\n \"master_branch\" : \"577kfqkx5fkqavt4jnncr6e0t2e7zomwimi974eysfk5o1ptfytqjc2g5bsowrv9hu4ps7l3qd1pgaw6ovptnliifmkra2dw4qyszymjhzuxwoq0haqem8li3ob1csreixo3fqmwganlanzfo3pg5dd89a4xr6zvrd81x2rg7rhd\",\n \"forks\" : 7873849884420640598,\n \"allow_merge_commit\" : true,\n \"archive_url\" : \"http://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref}\",\n \"git_refs_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/refs{/sha}\",\n \"forks_url\" : \"http://api.github.com/repos/octocat/Hello-World/forks\",\n \"visibility\" : \"wkh3rghsljqxqjtdr6rfjp5epw6e3shn37ieguo7plj2iqjzccdp4n5gkhifb5vgapqn31f6tm7bili9vxgsqd00mcz1rv085bl84zq4eypd5bnwznjko8l6ruxyq6xfo49c8bzmsx3awtyvl4uxfe1\",\n \"statuses_url\" : \"http://api.github.com/repos/octocat/Hello-World/statuses/{sha}\",\n \"network_count\" : 7670581653274980145,\n \"ssh_url\" : \"git@github.com:octocat/Hello-World.git\",\n \"license\" : {\n \"html_url\" : \"https://web.example.mocklab.io/669798\",\n \"name\" : \"MIT License\",\n \"spdx_id\" : \"MIT\",\n \"key\" : \"mit\",\n \"url\" : \"https://api.github.com/licenses/mit\",\n \"node_id\" : \"MDc6TGljZW5zZW1pdA==\"\n },\n \"full_name\" : \"octocat/Hello-World\",\n \"size\" : 108,\n \"template_repository\" : {\n \"anonymous_access_enabled\" : false,\n \"is_template\" : true,\n \"stargazers_count\" : 1504346719686322004,\n \"pushed_at\" : \"vpn8krzcrxskyt7pmq6len3ia1eejzek43s1z958y1avm2pa3exnmiepkyo7me0tq8nwyfqncxpm2grc7f32g37peiq1w940p5u3rsylv2qxnop1exkxrugzfskqo6mpdaasgyeaobisc44nbtol28bd8t60r27s1umw80ij29fac\",\n \"language\" : \"fm0\",\n \"subscription_url\" : \"https://web.example.mocklab.io/333917\",\n \"branches_url\" : \"https://web.example.mocklab.io/076303\",\n \"allow_rebase_merge\" : true,\n \"issue_comment_url\" : \"https://web.example.mocklab.io/081053\",\n \"labels_url\" : \"https://web.example.mocklab.io/335982\",\n \"permissions\" : { },\n \"subscribers_url\" : \"https://web.example.mocklab.io/815088\",\n \"releases_url\" : \"https://web.example.mocklab.io/093553\",\n \"svn_url\" : \"https://web.example.mocklab.io/323148\",\n \"subscribers_count\" : 3063587360239234947,\n \"id\" : 4101812628718115420,\n \"allow_merge_commit\" : false,\n \"archive_url\" : \"https://web.example.mocklab.io/899188\",\n \"git_refs_url\" : \"https://web.example.mocklab.io/595582\",\n \"forks_url\" : \"https://web.example.mocklab.io/197270\",\n \"visibility\" : \"k6i2e0m70h6wz334yq9c23g0evfhry\",\n \"statuses_url\" : \"https://web.example.mocklab.io/316477\",\n \"network_count\" : 2822071407841966267,\n \"ssh_url\" : \"https://web.example.mocklab.io/386998\",\n \"full_name\" : \"Thaddeus Bahringer\",\n \"size\" : 5759688694017483355,\n \"languages_url\" : \"https://web.example.mocklab.io/334840\",\n \"clone_url\" : \"https://web.example.mocklab.io/157281\",\n \"collaborators_url\" : \"https://web.example.mocklab.io/641100\",\n \"html_url\" : \"https://web.example.mocklab.io/568649\",\n \"name\" : \"Ozie Schimmel\",\n \"pulls_url\" : \"https://web.example.mocklab.io/643684\",\n \"default_branch\" : \"vcb9zg9qs70igwqrw82svtqqfz4a1fprb5t9ay23l0vu0ykucbcerewokg3buvsdyfv29vw7rejnx0tgw8c2ew0a80ymrs7di52eorsl259y7lw3j4rhba5er7dq0ynvtrbvcl\",\n \"hooks_url\" : \"https://web.example.mocklab.io/295437\",\n \"trees_url\" : \"https://web.example.mocklab.io/472646\",\n \"tags_url\" : \"https://web.example.mocklab.io/209599\",\n \"contributors_url\" : \"https://web.example.mocklab.io/949580\",\n \"private\" : true,\n \"has_downloads\" : true,\n \"notifications_url\" : \"https://web.example.mocklab.io/123292\",\n \"open_issues_count\" : 2108418091249030916,\n \"created_at\" : \"frcdgh53jq3bn30hs21b90po5f757hxw8r41naam383qx3bqmfbc1pqezszzunxdw6hg131frhmxfwl1cfsja8obx6atctu019bf9tyixcrlwjq8ej8nj0hx5vy5qt\",\n \"description\" : \"Illo corrupti error nam vitae commodi at distinctio. Ea officia mollitia in ut. Et qui explicabo quo.\",\n \"deployments_url\" : \"https://web.example.mocklab.io/408361\",\n \"keys_url\" : \"https://web.example.mocklab.io/304943\",\n \"has_projects\" : true,\n \"archived\" : false,\n \"has_wiki\" : false,\n \"updated_at\" : \"2022-08-21T06:28:59.231843Z\",\n \"comments_url\" : \"https://web.example.mocklab.io/856128\",\n \"stargazers_url\" : \"https://web.example.mocklab.io/443762\",\n \"disabled\" : true,\n \"delete_branch_on_merge\" : true,\n \"git_url\" : \"https://web.example.mocklab.io/439435\",\n \"has_pages\" : true,\n \"owner\" : { },\n \"allow_squash_merge\" : false,\n \"commits_url\" : \"https://web.example.mocklab.io/529856\",\n \"compare_url\" : \"https://web.example.mocklab.io/696408\",\n \"git_commits_url\" : \"https://web.example.mocklab.io/793232\",\n \"topics\" : [ \"v56mk3h5wx0416302tdhl6wxu2x7ajpzucrkpu18plsve2rrg94zmqrc1wh5sj50j9m3np8b\", \"rtup4cbw2j7rh80gr41ohmo8a8j9e6ton3gv92egx26wt7tgm9z8alow6n0vdxncrt5t0xekze6t7091nhhw45tuw4v8\", \"ur5t8pa5bhgd0xxmbpkb41eshvaz0v4ov1sn4hvbcyzawezluj2u6lpt42hjz6cslz381pg7rhfr2sifkrb14xmck9n1yewckm74hz3zz1w\" ],\n \"blobs_url\" : \"https://web.example.mocklab.io/410650\",\n \"git_tags_url\" : \"https://web.example.mocklab.io/366947\",\n \"merges_url\" : \"https://web.example.mocklab.io/933355\",\n \"downloads_url\" : \"https://web.example.mocklab.io/896311\",\n \"has_issues\" : false,\n \"url\" : \"https://web.example.mocklab.io/187808\",\n \"contents_url\" : \"https://web.example.mocklab.io/621140\",\n \"mirror_url\" : \"https://web.example.mocklab.io/115450\",\n \"milestones_url\" : \"https://web.example.mocklab.io/925029\",\n \"teams_url\" : \"https://web.example.mocklab.io/007527\",\n \"fork\" : false,\n \"issues_url\" : \"https://web.example.mocklab.io/725924\",\n \"events_url\" : \"https://web.example.mocklab.io/405247\",\n \"issue_events_url\" : \"https://web.example.mocklab.io/341718\",\n \"assignees_url\" : \"https://web.example.mocklab.io/882569\",\n \"watchers_count\" : 8506080791838624769,\n \"forks_count\" : 6130590800350840342,\n \"homepage\" : \"vxf1olw0cs0wkjnf4lgua8qrpfix1dk79il2bvysmamm2n2uu19imi4637co0wrjm\",\n \"node_id\" : \"bxa9\"\n },\n \"languages_url\" : \"http://api.github.com/repos/octocat/Hello-World/languages\",\n \"clone_url\" : \"https://github.com/octocat/Hello-World.git\",\n \"collaborators_url\" : \"http://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator}\",\n \"html_url\" : \"https://github.com/octocat/Hello-World\",\n \"name\" : \"Team Environment\",\n \"pulls_url\" : \"http://api.github.com/repos/octocat/Hello-World/pulls{/number}\",\n \"default_branch\" : \"master\",\n \"hooks_url\" : \"http://api.github.com/repos/octocat/Hello-World/hooks\",\n \"trees_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/trees{/sha}\",\n \"tags_url\" : \"http://api.github.com/repos/octocat/Hello-World/tags\",\n \"contributors_url\" : \"http://api.github.com/repos/octocat/Hello-World/contributors\",\n \"private\" : false,\n \"has_downloads\" : true,\n \"notifications_url\" : \"http://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating}\",\n \"open_issues_count\" : 0,\n \"created_at\" : \"2011-01-26T19:01:12Z\",\n \"description\" : \"This your first repo!\",\n \"watchers\" : 5569847166300202729,\n \"deployments_url\" : \"http://api.github.com/repos/octocat/Hello-World/deployments\",\n \"keys_url\" : \"http://api.github.com/repos/octocat/Hello-World/keys{/key_id}\",\n \"has_projects\" : true,\n \"archived\" : true,\n \"has_wiki\" : true,\n \"updated_at\" : \"2011-01-26T19:14:43Z\",\n \"comments_url\" : \"http://api.github.com/repos/octocat/Hello-World/comments{/number}\",\n \"stargazers_url\" : \"http://api.github.com/repos/octocat/Hello-World/stargazers\",\n \"disabled\" : false,\n \"delete_branch_on_merge\" : false,\n \"git_url\" : \"git:github.com/octocat/Hello-World.git\",\n \"has_pages\" : true,\n \"owner\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Teodoro Block\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"v9uoseaf5sbwkty6dwcxecu8v258cipzafahgki9qvurp4xnjhzhmugaoszsd0mjgdctpiy0wjx678puihuawtbob1fbdfl6poxcxcmle671fw9jjhy8ktra9apvg1vb3117yc4kon143d9ohrrj2f57h3dejuy0ragsfd6ts90r0e5jxkx873oc\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"allow_squash_merge\" : true,\n \"commits_url\" : \"http://api.github.com/repos/octocat/Hello-World/commits{/sha}\",\n \"compare_url\" : \"http://api.github.com/repos/octocat/Hello-World/compare/{base}...{head}\",\n \"git_commits_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/commits{/sha}\",\n \"topics\" : [ \"x9z3qfhh9w3tbi4hopi1vh8qlo6p850u4xkgxg0yks3pk71th7m28zcljolv85uqd9niqol4i9mvhjxnve9vfegfbvdnvfevx5k7n2djo3k9mv5zu3o9bc4r05l4werb78m67zniyeti3a\" ],\n \"blobs_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/blobs{/sha}\",\n \"git_tags_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/tags{/sha}\",\n \"merges_url\" : \"http://api.github.com/repos/octocat/Hello-World/merges\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:42Z\\\"\",\n \"downloads_url\" : \"http://api.github.com/repos/octocat/Hello-World/downloads\",\n \"has_issues\" : true,\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World\",\n \"contents_url\" : \"http://api.github.com/repos/octocat/Hello-World/contents/{+path}\",\n \"mirror_url\" : \"git:git.example.com/octocat/Hello-World\",\n \"milestones_url\" : \"http://api.github.com/repos/octocat/Hello-World/milestones{/number}\",\n \"teams_url\" : \"http://api.github.com/repos/octocat/Hello-World/teams\",\n \"fork\" : false,\n \"issues_url\" : \"http://api.github.com/repos/octocat/Hello-World/issues{/number}\",\n \"events_url\" : \"http://api.github.com/repos/octocat/Hello-World/events\",\n \"issue_events_url\" : \"http://api.github.com/repos/octocat/Hello-World/issues/events{/number}\",\n \"organization\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Lynnette Hettinger\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"yf2ti37381oqdf1w9z2tselmvb7z67ttfc7ukao2lyaimfhkxnbnpmkjy7ntzkhoug0ejcdhayt3caeix8i30b4ai4apwe7ps6\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"assignees_url\" : \"http://api.github.com/repos/octocat/Hello-World/assignees{/user}\",\n \"open_issues\" : 7906158417924767236,\n \"watchers_count\" : 80,\n \"forks_count\" : 9,\n \"homepage\" : \"https://github.com\",\n \"node_id\" : \"MDEwOlJlcG9zaXRvcnkxMjk2MjY5\"\n },\n \"title\" : \"Found a bug\",\n \"author_association\" : \"OWNER\",\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347/labels{/name}\",\n \"number\" : 1347,\n \"performed_via_github_app\" : {\n \"owner\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Jonathon Goodwin\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"aqyxlkunell0yz580tud9qy31n60y9rg1blbmnrwd1fvbw2zmy4s6p9f9rhwnzpzfk4w57dxseelzwiitdolnm8mc6c3jog1oiit135\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"installations_count\" : 5,\n \"created_at\" : \"2017-07-08T16:18:44-04:00\",\n \"description\" : \"The description of the app.\",\n \"client_id\" : \"\\\"Iv1.25b5d1e65ffc4022\\\"\",\n \"external_url\" : \"https://example.com\",\n \"updated_at\" : \"2017-07-08T16:18:44-04:00\",\n \"permissions\" : {\n \"deployments\" : \"write\",\n \"issues\" : \"read\"\n },\n \"html_url\" : \"https://github.com/apps/super-ci\",\n \"name\" : \"Probot Owners\",\n \"pem\" : \"\\\"-----BEGIN RSA PRIVATE KEY-----\\\\nMIIEogIBAAKCAQEArYxrNYD/iT5CZVpRJu4rBKmmze3PVmT/gCo2ATUvDvZTPTey\\\\nxcGJ3vvrJXazKk06pN05TN29o98jrYz4cengG3YGsXPNEpKsIrEl8NhbnxapEnM9\\\\nJCMRe0P5JcPsfZlX6hmiT7136GRWiGOUba2X9+HKh8QJVLG5rM007TBER9/z9mWm\\\\nrJuNh+m5l320oBQY/Qq3A7wzdEfZw8qm/mIN0FCeoXH1L6B8xXWaAYBwhTEh6SSn\\\\nZHlO1Xu1JWDmAvBCi0RO5aRSKM8q9QEkvvHP4yweAtK3N8+aAbZ7ovaDhyGz8r6r\\\\nzhU1b8Uo0Z2ysf503WqzQgIajr7Fry7/kUwpgQIDAQABAoIBADwJp80Ko1xHPZDy\\\\nfcCKBDfIuPvkmSW6KumbsLMaQv1aGdHDwwTGv3t0ixSay8CGlxMRtRDyZPib6SvQ\\\\n6OH/lpfpbMdW2ErkksgtoIKBVrDilfrcAvrNZu7NxRNbhCSvN8q0s4ICecjbbVQh\\\\nnueSdlA6vGXbW58BHMq68uRbHkP+k+mM9U0mDJ1HMch67wlg5GbayVRt63H7R2+r\\\\nVxcna7B80J/lCEjIYZznawgiTvp3MSanTglqAYi+m1EcSsP14bJIB9vgaxS79kTu\\\\noiSo93leJbBvuGo8QEiUqTwMw4tDksmkLsoqNKQ1q9P7LZ9DGcujtPy4EZsamSJT\\\\ny8OJt0ECgYEA2lxOxJsQk2kI325JgKFjo92mQeUObIvPfSNWUIZQDTjniOI6Gv63\\\\nGLWVFrZcvQBWjMEQraJA9xjPbblV8PtfO87MiJGLWCHFxmPz2dzoedN+2Coxom8m\\\\nV95CLz8QUShuao6u/RYcvUaZEoYs5bHcTmy5sBK80JyEmafJPtCQVxMCgYEAy3ar\\\\nZr3yv4xRPEPMat4rseswmuMooSaK3SKub19WFI5IAtB/e7qR1Rj9JhOGcZz+OQrl\\\\nT78O2OFYlgOIkJPvRMrPpK5V9lslc7tz1FSh3BZMRGq5jSyD7ETSOQ0c8T2O/s7v\\\\nbeEPbVbDe4mwvM24XByH0GnWveVxaDl51ABD65sCgYB3ZAspUkOA5egVCh8kNpnd\\\\nSd6SnuQBE3ySRlT2WEnCwP9Ph6oPgn+oAfiPX4xbRqkL8q/k0BdHQ4h+zNwhk7+h\\\\nWtPYRAP1Xxnc/F+jGjb+DVaIaKGU18MWPg7f+FI6nampl3Q0KvfxwX0GdNhtio8T\\\\nTj1E+SnFwh56SRQuxSh2gwKBgHKjlIO5NtNSflsUYFM+hyQiPiqnHzddfhSG+/3o\\\\nm5nNaSmczJesUYreH5San7/YEy2UxAugvP7aSY2MxB+iGsiJ9WD2kZzTUlDZJ7RV\\\\nUzWsoqBR+eZfVJ2FUWWvy8TpSG6trh4dFxImNtKejCR1TREpSiTV3Zb1dmahK9GV\\\\nrK9NAoGAbBxRLoC01xfxCTgt5BDiBcFVh4fp5yYKwavJPLzHSpuDOrrI9jDn1oKN\\\\nonq5sDU1i391zfQvdrbX4Ova48BN+B7p63FocP/MK5tyyBoT8zQEk2+vWDOw7H/Z\\\\nu5dTCPxTIsoIwUw1I+7yIxqJzLPFgR2gVBwY1ra/8iAqCj+zeBw=\\\\n-----END RSA PRIVATE KEY-----\\\\n\\\"\",\n \"webhook_secret\" : \"\\\"6fba8f2fc8a7e8f2cca5577eddd82ca7586b3b6b\\\"\",\n \"client_secret\" : \"\\\"1d4b2097ac622ba702d19de498f005747a8b21d3\\\"\",\n \"id\" : 37,\n \"events\" : [ \"label\", \"deployment\" ],\n \"slug\" : \"probot-owners\",\n \"node_id\" : \"MDExOkludGVncmF0aW9uMQ==\"\n },\n \"updated_at\" : \"2011-04-22T13:33:48Z\",\n \"comments_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347/comments\",\n \"active_lock_reason\" : \"too heated\",\n \"id\" : 1,\n \"repository_url\" : \"https://api.github.com/repos/octocat/Hello-World\",\n \"state\" : \"open\",\n \"locked\" : true,\n \"timeline_url\" : \"https://web.example.mocklab.io/324368\",\n \"pull_request\" : {\n \"patch_url\" : \"https://web.example.mocklab.io/995402\",\n \"html_url\" : \"https://web.example.mocklab.io/995530\",\n \"merged_at\" : \"2022-06-29T04:58:28.233Z\",\n \"diff_url\" : \"https://web.example.mocklab.io/516389\",\n \"url\" : \"https://web.example.mocklab.io/707765\"\n },\n \"closed_at\" : \"2023-12-23T08:54:41.234Z\",\n \"comments\" : 0,\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347\",\n \"labels\" : [ {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n }, {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n } ],\n \"milestone\" : {\n \"creator\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Mrs. Rudolph Goldner\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"hvchc2irfjk0qe008k8qqb69tquo8yym18yd767ypwyerseza72p\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"closed_at\" : \"2013-02-12T13:22:01Z\",\n \"created_at\" : \"2011-04-10T20:09:31Z\",\n \"description\" : \"Tracking milestone for version 1.0\",\n \"closed_issues\" : 8,\n \"title\" : \"v1.0\",\n \"due_on\" : \"2012-10-09T23:39:01Z\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones/1\",\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones/1/labels\",\n \"number\" : 42,\n \"updated_at\" : \"2014-03-03T18:58:10Z\",\n \"html_url\" : \"https://github.com/octocat/Hello-World/milestones/v1.0\",\n \"id\" : 1002604,\n \"state\" : \"open\",\n \"open_issues\" : 4,\n \"node_id\" : \"MDk6TWlsZXN0b25lMTAwMjYwNA==\"\n },\n \"events_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347/events\",\n \"html_url\" : \"https://github.com/octocat/Hello-World/issues/1347\",\n \"assignee\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Miss Eddie Hilll\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"5ht32zaz8blykznx9a7fkkv8dhxl9hzgokg503r81zinlrkcwyg8cv6uad5fx9z30ucvo995kvik0pkxaf9bj1xwzqa0kuwrwrirkcao8fg1xpr4999m5l9tj1ay7uir92imcgxwp2digc1u8fpiqykxmxk7ub9c\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"user\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"christia.legros\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"oh6lq5x72m3mqxragdlv1h9f70eyh1vk55pdl1xqf1w28fd8tiezujvmyhrnn55eathrc6tcetb5zno38tl4nvqp1xt6v8qmk09gem4luiwl137ed54yyl6enzey5\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"node_id\" : \"MDU6SXNzdWUx\"\n },\n \"action\" : \"0sgk2qc8lewznos6l6ikkywd6roxl59vve2hmx7tgh8crnyj2dht\",\n \"comment\" : {\n \"issue_url\" : \"https://web.example.mocklab.io/999096\",\n \"body_html\" : \"hcrutk5wwn3aelbc3vsxazuzsaplo023vx8kympnf6x95t6jssuyw34znf5kdzbpkugcic5q7zj2dcfftvthv4j5r0j4ok8a84zo9d57hpekks43jt6rn648194npbrq17yde1hdnt5p7svr12chzpgs7l7av5ewp31\",\n \"body_text\" : \"7qdygc19kmo\",\n \"created_at\" : \"2011-04-14T16:00:49Z\",\n \"body\" : \"What version of Safari were you using when you observed this bug?\",\n \"url\" : \"https://api.github.com/repositories/42/issues/comments/1\",\n \"author_association\" : \"OWNER\",\n \"performed_via_github_app\" : {\n \"owner\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Dr. Ray Dach\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"nh37uoeb48rabxp6ctlfmn1qcdjry8im7ebf3z29g3jyjb4ib0p89vniagu8es94xhout0uc4adho542q433za20tcsvelvhu6td0ftq81\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"installations_count\" : 5,\n \"created_at\" : \"2017-07-08T16:18:44-04:00\",\n \"description\" : \"The description of the app.\",\n \"client_id\" : \"\\\"Iv1.25b5d1e65ffc4022\\\"\",\n \"external_url\" : \"https://example.com\",\n \"updated_at\" : \"2017-07-08T16:18:44-04:00\",\n \"permissions\" : {\n \"deployments\" : \"write\",\n \"issues\" : \"read\"\n },\n \"html_url\" : \"https://github.com/apps/super-ci\",\n \"name\" : \"Probot Owners\",\n \"pem\" : \"\\\"-----BEGIN RSA PRIVATE KEY-----\\\\nMIIEogIBAAKCAQEArYxrNYD/iT5CZVpRJu4rBKmmze3PVmT/gCo2ATUvDvZTPTey\\\\nxcGJ3vvrJXazKk06pN05TN29o98jrYz4cengG3YGsXPNEpKsIrEl8NhbnxapEnM9\\\\nJCMRe0P5JcPsfZlX6hmiT7136GRWiGOUba2X9+HKh8QJVLG5rM007TBER9/z9mWm\\\\nrJuNh+m5l320oBQY/Qq3A7wzdEfZw8qm/mIN0FCeoXH1L6B8xXWaAYBwhTEh6SSn\\\\nZHlO1Xu1JWDmAvBCi0RO5aRSKM8q9QEkvvHP4yweAtK3N8+aAbZ7ovaDhyGz8r6r\\\\nzhU1b8Uo0Z2ysf503WqzQgIajr7Fry7/kUwpgQIDAQABAoIBADwJp80Ko1xHPZDy\\\\nfcCKBDfIuPvkmSW6KumbsLMaQv1aGdHDwwTGv3t0ixSay8CGlxMRtRDyZPib6SvQ\\\\n6OH/lpfpbMdW2ErkksgtoIKBVrDilfrcAvrNZu7NxRNbhCSvN8q0s4ICecjbbVQh\\\\nnueSdlA6vGXbW58BHMq68uRbHkP+k+mM9U0mDJ1HMch67wlg5GbayVRt63H7R2+r\\\\nVxcna7B80J/lCEjIYZznawgiTvp3MSanTglqAYi+m1EcSsP14bJIB9vgaxS79kTu\\\\noiSo93leJbBvuGo8QEiUqTwMw4tDksmkLsoqNKQ1q9P7LZ9DGcujtPy4EZsamSJT\\\\ny8OJt0ECgYEA2lxOxJsQk2kI325JgKFjo92mQeUObIvPfSNWUIZQDTjniOI6Gv63\\\\nGLWVFrZcvQBWjMEQraJA9xjPbblV8PtfO87MiJGLWCHFxmPz2dzoedN+2Coxom8m\\\\nV95CLz8QUShuao6u/RYcvUaZEoYs5bHcTmy5sBK80JyEmafJPtCQVxMCgYEAy3ar\\\\nZr3yv4xRPEPMat4rseswmuMooSaK3SKub19WFI5IAtB/e7qR1Rj9JhOGcZz+OQrl\\\\nT78O2OFYlgOIkJPvRMrPpK5V9lslc7tz1FSh3BZMRGq5jSyD7ETSOQ0c8T2O/s7v\\\\nbeEPbVbDe4mwvM24XByH0GnWveVxaDl51ABD65sCgYB3ZAspUkOA5egVCh8kNpnd\\\\nSd6SnuQBE3ySRlT2WEnCwP9Ph6oPgn+oAfiPX4xbRqkL8q/k0BdHQ4h+zNwhk7+h\\\\nWtPYRAP1Xxnc/F+jGjb+DVaIaKGU18MWPg7f+FI6nampl3Q0KvfxwX0GdNhtio8T\\\\nTj1E+SnFwh56SRQuxSh2gwKBgHKjlIO5NtNSflsUYFM+hyQiPiqnHzddfhSG+/3o\\\\nm5nNaSmczJesUYreH5San7/YEy2UxAugvP7aSY2MxB+iGsiJ9WD2kZzTUlDZJ7RV\\\\nUzWsoqBR+eZfVJ2FUWWvy8TpSG6trh4dFxImNtKejCR1TREpSiTV3Zb1dmahK9GV\\\\nrK9NAoGAbBxRLoC01xfxCTgt5BDiBcFVh4fp5yYKwavJPLzHSpuDOrrI9jDn1oKN\\\\nonq5sDU1i391zfQvdrbX4Ova48BN+B7p63FocP/MK5tyyBoT8zQEk2+vWDOw7H/Z\\\\nu5dTCPxTIsoIwUw1I+7yIxqJzLPFgR2gVBwY1ra/8iAqCj+zeBw=\\\\n-----END RSA PRIVATE KEY-----\\\\n\\\"\",\n \"webhook_secret\" : \"\\\"6fba8f2fc8a7e8f2cca5577eddd82ca7586b3b6b\\\"\",\n \"client_secret\" : \"\\\"1d4b2097ac622ba702d19de498f005747a8b21d3\\\"\",\n \"id\" : 37,\n \"events\" : [ \"label\", \"deployment\" ],\n \"slug\" : \"probot-owners\",\n \"node_id\" : \"MDExOkludGVncmF0aW9uMQ==\"\n },\n \"updated_at\" : \"2011-04-14T16:00:49Z\",\n \"html_url\" : \"https://web.example.mocklab.io/581206\",\n \"reactions\" : {\n \"confused\" : 5159660067744030591,\n \"-1\" : 1220677149354247182,\n \"+1\" : 3159523273813788264,\n \"total_count\" : 224067908211548270,\n \"rocket\" : 4071195270465044687,\n \"hooray\" : 7314521006302500337,\n \"eyes\" : 8915037737560365159,\n \"heart\" : 4667734306243618874,\n \"laugh\" : 7825497473594176913,\n \"url\" : \"https://web.example.mocklab.io/550251\"\n },\n \"id\" : 42,\n \"user\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"mohammad.runolfsdottir\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"q1eqdbpmbkoaeo75tsd6y4bpl6hj9lin8dmnueoubl2fzk3c857i\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"node_id\" : \"f1gw\"\n }\n },\n \"repo\" : {\n \"name\" : \"Guadalupe Moore\",\n \"id\" : 525149099121805941,\n \"url\" : \"https://web.example.mocklab.io/554548\"\n },\n \"created_at\" : \"2022-08-10T19:40:52.235Z\",\n \"id\" : \"52de\",\n \"type\" : \"68km4w4v6b681i103466bg0mzfiswwgygx67wa95l6cwjuopu2whdnp8kvm6d80tr81qkzjo2r0npdfu7sm4cuc1pnjx1fw4sda94q8dggafk7glfarqlq9nehod4ee85lsybkd0d7b2f1tzfgf3grcs\"\n}, {\n \"actor\" : {\n \"display_login\" : \"v935eyehwokxacual7vekg6c9r77ip3h8e05jbjqwa83ez9dwxqc9tdagnp1kccwztc6eyhr3i9jf2h5ghtprwmesze83to1gs8sf92rhrr1zqrlk3b0mopran569wjhcjciwb8if6htfu51wdxb2g261qv9w5dberbxc4x9gyvvapcq1ha8i\",\n \"avatar_url\" : \"https://s3.amazonaws.com/uifaces/faces/twitter/bradenhamm/128.jpg\",\n \"id\" : 5810042174617539717,\n \"login\" : \"2o09gtw4hmzk97gb5r0x3op16ywniekyrg9utjlajd6sc4ttoj30nbv0h5zda5stw9ag8cxmuezxesmtg6g53eypmoubvkf3qfkhq18tf5lrcrurv4bkg85x3003znvxzimv7h9epmovuwyr1hdyl5y7\",\n \"gravatar_id\" : \"gz63\",\n \"url\" : \"https://web.example.mocklab.io/101561\"\n },\n \"public\" : false,\n \"org\" : {\n \"display_login\" : \"x8rsvkn0pxu6a8avjy67iuywtg6x4d6o63xhyqozi97xpun96suc9nstevnttazp15x85ap7536ehr99h6a5ps96s21cltkvx\",\n \"avatar_url\" : \"https://s3.amazonaws.com/uifaces/faces/twitter/herrhaase/128.jpg\",\n \"id\" : 6737993725685017488,\n \"login\" : \"uy40ug3k8b0ohb25gyzp99ll0t1u\",\n \"gravatar_id\" : \"6836\",\n \"url\" : \"https://web.example.mocklab.io/851856\"\n },\n \"payload\" : {\n \"pages\" : [ {\n \"summary\" : \"Pariatur aut rem. Sed consequatur similique. Sunt aut ducimus accusantium. Consequatur dolores quo a consectetur nostrum dignissimos. Rerum eos laudantium cum voluptatum tempora ducimus eum.\",\n \"html_url\" : \"https://web.example.mocklab.io/761906\",\n \"page_name\" : \"Josephina Koepp\",\n \"action\" : \"r6eh1wxld1ws413bz85tvli59kaw4jji4r4nvjo3zxyb7crmejq9681kv983hrv0wh2ulyozmm6zi79lcgbko377883pgyc5oath0nmim94s3uiw82\",\n \"title\" : \"Ea omnis voluptatem praesentium magni et et aut.\",\n \"sha\" : \"l7vvsdzz34brbj5b04ajp\"\n } ],\n \"issue\" : {\n \"body_html\" : \"mvl0zct33h0tl1rnonycc1yn9tl8ca4y1rrxw4opl6qrjudva6vgh93pekvg\",\n \"body_text\" : \"3s3v3owot34ead8h49i2ql9mwo9hp7i8lweeiif4vdws65mprbniyors0jjib6xgfd9gkf1511vhc5t7k88qlgree2y9w0ph0j6\",\n \"assignees\" : [ {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Wendell Olson\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"b3p6kh7auhdoaz7wmke3d80sy6zlnqjb284fuj41pcz798i0qlzrf606hux89ugv8v80tkdcsmf7fhtgeznxs71ns\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n }, {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Leonardo Gibson\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"dd3ypvp8s4sfgz3bz3hxm4pzctsxygq3iq21zrwa1yq80v9riq30z95qc2peujt4w38ql62j1cop1uft2m1kh7606i4rdculmfb59f7a0jkgetvtq1j3s9mg5dvq9qfx68cuord94\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n } ],\n \"created_at\" : \"2011-04-22T13:33:48Z\",\n \"body\" : \"I'm having a problem with this.\",\n \"repository\" : {\n \"allow_forking\" : false,\n \"anonymous_access_enabled\" : true,\n \"is_template\" : true,\n \"stargazers_count\" : 80,\n \"pushed_at\" : \"2011-01-26T19:06:43Z\",\n \"language\" : \"pmjt3yflz6s76j1zsboikjghmp9dkomxp1x4rauo1uqs4zajb43lhq9onf58samf8ynh21bvuxxv3cy8v5et3vyx2ldgrnulf5yzxd8jsz59z2zvoam88ito8g414biawlq8c1nri0g7fdrkz2yjaw8q4n6\",\n \"subscription_url\" : \"http://api.github.com/repos/octocat/Hello-World/subscription\",\n \"branches_url\" : \"http://api.github.com/repos/octocat/Hello-World/branches{/branch}\",\n \"allow_rebase_merge\" : true,\n \"issue_comment_url\" : \"http://api.github.com/repos/octocat/Hello-World/issues/comments{/number}\",\n \"labels_url\" : \"http://api.github.com/repos/octocat/Hello-World/labels{/name}\",\n \"permissions\" : {\n \"pull\" : false,\n \"maintain\" : false,\n \"admin\" : true,\n \"triage\" : false,\n \"push\" : true\n },\n \"subscribers_url\" : \"http://api.github.com/repos/octocat/Hello-World/subscribers\",\n \"releases_url\" : \"http://api.github.com/repos/octocat/Hello-World/releases{/id}\",\n \"svn_url\" : \"https://svn.github.com/octocat/Hello-World\",\n \"subscribers_count\" : 7954448460903917784,\n \"id\" : 42,\n \"master_branch\" : \"7zmvpb0on2rjmyv5grpxi7ev69lrufjfpt0ppucaz3nwofb645c9p2382ukq6ehls8l7giiscewyen6tvmq79skgobjcblumv0rxy8jv2fy53y817mdzd2yzehq9t8kryh6wmj72t5ih\",\n \"forks\" : 3653729604204624378,\n \"allow_merge_commit\" : true,\n \"archive_url\" : \"http://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref}\",\n \"git_refs_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/refs{/sha}\",\n \"forks_url\" : \"http://api.github.com/repos/octocat/Hello-World/forks\",\n \"visibility\" : \"q5e0u\",\n \"statuses_url\" : \"http://api.github.com/repos/octocat/Hello-World/statuses/{sha}\",\n \"network_count\" : 4735816623096541353,\n \"ssh_url\" : \"git@github.com:octocat/Hello-World.git\",\n \"license\" : {\n \"html_url\" : \"https://web.example.mocklab.io/628263\",\n \"name\" : \"MIT License\",\n \"spdx_id\" : \"MIT\",\n \"key\" : \"mit\",\n \"url\" : \"https://api.github.com/licenses/mit\",\n \"node_id\" : \"MDc6TGljZW5zZW1pdA==\"\n },\n \"full_name\" : \"octocat/Hello-World\",\n \"size\" : 108,\n \"template_repository\" : {\n \"anonymous_access_enabled\" : true,\n \"is_template\" : true,\n \"stargazers_count\" : 3339922428422053817,\n \"pushed_at\" : \"serhs6lq0gxcucpntovtlx2nooo7z444bt6n74dzw9pfovh5w2xvl3faapxyhv3g3\",\n \"language\" : \"225isbrkioosp89g4\",\n \"subscription_url\" : \"https://web.example.mocklab.io/304310\",\n \"branches_url\" : \"https://web.example.mocklab.io/438340\",\n \"allow_rebase_merge\" : true,\n \"issue_comment_url\" : \"https://web.example.mocklab.io/502229\",\n \"labels_url\" : \"https://web.example.mocklab.io/304287\",\n \"permissions\" : { },\n \"subscribers_url\" : \"https://web.example.mocklab.io/202924\",\n \"releases_url\" : \"https://web.example.mocklab.io/321358\",\n \"svn_url\" : \"https://web.example.mocklab.io/392250\",\n \"subscribers_count\" : 2387842744771267965,\n \"id\" : 6936276811529221176,\n \"allow_merge_commit\" : false,\n \"archive_url\" : \"https://web.example.mocklab.io/526714\",\n \"git_refs_url\" : \"https://web.example.mocklab.io/079217\",\n \"forks_url\" : \"https://web.example.mocklab.io/167212\",\n \"visibility\" : \"dl4eo5hxnj6ljzyv5gwmkwyjej26luaiut18dk3lbrjmgtpphg7nq49oya4jjzgnm6yc02tov191tfyn9f\",\n \"statuses_url\" : \"https://web.example.mocklab.io/119290\",\n \"network_count\" : 5653233286309146312,\n \"ssh_url\" : \"https://web.example.mocklab.io/847744\",\n \"full_name\" : \"Denisha Harvey\",\n \"size\" : 3351428935645354677,\n \"languages_url\" : \"https://web.example.mocklab.io/203934\",\n \"clone_url\" : \"https://web.example.mocklab.io/866002\",\n \"collaborators_url\" : \"https://web.example.mocklab.io/110175\",\n \"html_url\" : \"https://web.example.mocklab.io/426984\",\n \"name\" : \"Sunshine Hagenes DDS\",\n \"pulls_url\" : \"https://web.example.mocklab.io/752016\",\n \"default_branch\" : \"sphjthp170qbdzyiwn4e90i3adohcxwukncgyj4igaew4ghzvht2qtto2d7zgopf4mpsrti0tdql1apn42v3osntx9wkn50kvq1v46z52fpqmkwiey2i5kda\",\n \"hooks_url\" : \"https://web.example.mocklab.io/353706\",\n \"trees_url\" : \"https://web.example.mocklab.io/723431\",\n \"tags_url\" : \"https://web.example.mocklab.io/371734\",\n \"contributors_url\" : \"https://web.example.mocklab.io/300496\",\n \"private\" : false,\n \"has_downloads\" : false,\n \"notifications_url\" : \"https://web.example.mocklab.io/163886\",\n \"open_issues_count\" : 6048560302003867708,\n \"created_at\" : \"9opqw19xh5luzipenq4ucfhdle\",\n \"description\" : \"Rerum saepe sit. Ut minus voluptatem libero sit. Soluta possimus consequatur.\",\n \"deployments_url\" : \"https://web.example.mocklab.io/079968\",\n \"keys_url\" : \"https://web.example.mocklab.io/138680\",\n \"has_projects\" : false,\n \"archived\" : true,\n \"has_wiki\" : true,\n \"updated_at\" : \"2023-03-08T08:00:59.238197Z\",\n \"comments_url\" : \"https://web.example.mocklab.io/073563\",\n \"stargazers_url\" : \"https://web.example.mocklab.io/442901\",\n \"disabled\" : true,\n \"delete_branch_on_merge\" : false,\n \"git_url\" : \"https://web.example.mocklab.io/156994\",\n \"has_pages\" : true,\n \"owner\" : { },\n \"allow_squash_merge\" : true,\n \"commits_url\" : \"https://web.example.mocklab.io/810763\",\n \"compare_url\" : \"https://web.example.mocklab.io/755567\",\n \"git_commits_url\" : \"https://web.example.mocklab.io/639853\",\n \"topics\" : [ \"pc6mkzneag623dd4qslsyv24c1lmevmq3878bwuwffbyyaqtifks214jk0jgky4pl02vpokq37egckos7kgjidg17xlvr96x7b3zw5j1lngk8735a12l6vjvchggrhntblhotdie7g95w7nxuddxxvzjz776bhf98qps8x9n1h0rfsg6n5f7p82m14fa1oz0fv6\", \"f1al8p13y9lk71yig2qxd4v3pan60x7jreh4d3hz\", \"afwzga665pnzmz5vbzj9zp7uqa755w05ugebia4jscv2r2ngx2mw4ny0x76w3llga2yma3kz8dqavxsifvasbkpc2fjea5aic33tfx23juntuzz53yzy7fzm1a79941fa1mbuzmrf0babpa8sbug2p5lrcxnyv4er25029w7bbc6zur9y221110qitizfmdg3o7g\", \"9597jksb7kdgaf24qae70oph1w8lqew0njw0k86xmafr\", \"qtxijqvgwg92wfqwnsk728lw07nn2yeqa2m98npsqx6b4jgesmi65cfllybalsssrtbtuvcuhhpafwncd7fj3n3y4\", \"ex9mk5t2lggtrsyj4gi5t4y7vk8rmzd138fqkoco2ju8y6hjoyyriimpyb21cw3qnaxgfmikbrcmkkva617h71isnb734cekjrinnw1qlmk6yxxlm8qz\", \"jgmnmi7hzzneerm73j2w0d2gzlg194p7hojrhgxw74r6r4lrdtfnjc7tecr9a4d9v21rej2chmprsxn9x6u1r88ebrdoctewho3n1096j60toj11bro9jrz5siaus3em0c134qnzrpx40w0vzfgj19iu0wvnhhk\", \"3ydhzbdisqb4vw1xpvfl4kt4skwmu573vtogs9rvevbe9y3rbrpovinqvrmlrrcqv7dhtrvm9hbqupcobibzy6wsg\" ],\n \"blobs_url\" : \"https://web.example.mocklab.io/266499\",\n \"git_tags_url\" : \"https://web.example.mocklab.io/791781\",\n \"merges_url\" : \"https://web.example.mocklab.io/645218\",\n \"downloads_url\" : \"https://web.example.mocklab.io/920061\",\n \"has_issues\" : false,\n \"url\" : \"https://web.example.mocklab.io/982530\",\n \"contents_url\" : \"https://web.example.mocklab.io/276959\",\n \"mirror_url\" : \"https://web.example.mocklab.io/881297\",\n \"milestones_url\" : \"https://web.example.mocklab.io/227611\",\n \"teams_url\" : \"https://web.example.mocklab.io/715585\",\n \"fork\" : true,\n \"issues_url\" : \"https://web.example.mocklab.io/588062\",\n \"events_url\" : \"https://web.example.mocklab.io/518767\",\n \"issue_events_url\" : \"https://web.example.mocklab.io/620135\",\n \"assignees_url\" : \"https://web.example.mocklab.io/380496\",\n \"watchers_count\" : 5051591068319922523,\n \"forks_count\" : 2460822802395857798,\n \"homepage\" : \"76b4guyxdprtgvdj5lwospsgdzqk4w99xtim0xcmbw2d05p3605g9pgfewikyqj420pl7kanw9yg8wlj0dv3b7e7g1y59e821kcd85sc43u0gffz513l5id83msm244xa9qmtuyzzjbq8xywz79toarbkq8691qs5is34ekq610yncu1dhk5gzqbua7aqvspz\",\n \"node_id\" : \"hv47\"\n },\n \"languages_url\" : \"http://api.github.com/repos/octocat/Hello-World/languages\",\n \"clone_url\" : \"https://github.com/octocat/Hello-World.git\",\n \"collaborators_url\" : \"http://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator}\",\n \"html_url\" : \"https://github.com/octocat/Hello-World\",\n \"name\" : \"Team Environment\",\n \"pulls_url\" : \"http://api.github.com/repos/octocat/Hello-World/pulls{/number}\",\n \"default_branch\" : \"master\",\n \"hooks_url\" : \"http://api.github.com/repos/octocat/Hello-World/hooks\",\n \"trees_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/trees{/sha}\",\n \"tags_url\" : \"http://api.github.com/repos/octocat/Hello-World/tags\",\n \"contributors_url\" : \"http://api.github.com/repos/octocat/Hello-World/contributors\",\n \"private\" : true,\n \"has_downloads\" : true,\n \"notifications_url\" : \"http://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating}\",\n \"open_issues_count\" : 0,\n \"created_at\" : \"2011-01-26T19:01:12Z\",\n \"description\" : \"This your first repo!\",\n \"watchers\" : 9021345508775998749,\n \"deployments_url\" : \"http://api.github.com/repos/octocat/Hello-World/deployments\",\n \"keys_url\" : \"http://api.github.com/repos/octocat/Hello-World/keys{/key_id}\",\n \"has_projects\" : true,\n \"archived\" : true,\n \"has_wiki\" : true,\n \"updated_at\" : \"2011-01-26T19:14:43Z\",\n \"comments_url\" : \"http://api.github.com/repos/octocat/Hello-World/comments{/number}\",\n \"stargazers_url\" : \"http://api.github.com/repos/octocat/Hello-World/stargazers\",\n \"disabled\" : true,\n \"delete_branch_on_merge\" : false,\n \"git_url\" : \"git:github.com/octocat/Hello-World.git\",\n \"has_pages\" : false,\n \"owner\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Chi Kunde\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"k2yl26dt0h8dcr4dqu8mjjkkaxnhwprbgd4m831nvbwh491xk83948nbqbaxi01cscj1xl4001yx0dyuk9wdevb7\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"allow_squash_merge\" : true,\n \"commits_url\" : \"http://api.github.com/repos/octocat/Hello-World/commits{/sha}\",\n \"compare_url\" : \"http://api.github.com/repos/octocat/Hello-World/compare/{base}...{head}\",\n \"git_commits_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/commits{/sha}\",\n \"topics\" : [ \"cahe7ynspa1thfvwac\", \"vrot1cntufcqlq8pbii0emi1kao93f2hpcaju48r5r8kk2h7w0lfwjhsqc934vqea3oxaq2o04c777wltoudrov5iixhr502dxhs0w8d2j1divnkvy0eerirszw6btp4uxtg581pw060xsf2ksk6izfaysdwtvidq52l6kjs4\", \"0kc6nbvvtam5u0xqcy8j46epn80degq0xhscsavvhu2ughoh2\", \"vn7mm8tmyvix22h1opzxoydjtvl99lpe9jua62naaqhq3rb9z7h7yzpbsq20jpjqd5g6arevql9kevk7axjn2do6uddfwaffogxbklnxiako8arramnnae701cq52zy0dk4q36coh5gq3bseyz81p75ihhh80me5e6n9bl0tk73qs\", \"eycuf9fhilp42dpinjuq4mrbwm1eqhrmdpdozom4ayoox55cq3rghplvtb11icmb5cra99fmkr0y48oe0dyld76due4j74d0bt9mlit0xp7rdhwqe3h5apiwbb6qd85by2hnv2wq4ijdppnusfeomyxlh19dc09\" ],\n \"blobs_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/blobs{/sha}\",\n \"git_tags_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/tags{/sha}\",\n \"merges_url\" : \"http://api.github.com/repos/octocat/Hello-World/merges\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:42Z\\\"\",\n \"downloads_url\" : \"http://api.github.com/repos/octocat/Hello-World/downloads\",\n \"has_issues\" : true,\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World\",\n \"contents_url\" : \"http://api.github.com/repos/octocat/Hello-World/contents/{+path}\",\n \"mirror_url\" : \"git:git.example.com/octocat/Hello-World\",\n \"milestones_url\" : \"http://api.github.com/repos/octocat/Hello-World/milestones{/number}\",\n \"teams_url\" : \"http://api.github.com/repos/octocat/Hello-World/teams\",\n \"fork\" : true,\n \"issues_url\" : \"http://api.github.com/repos/octocat/Hello-World/issues{/number}\",\n \"events_url\" : \"http://api.github.com/repos/octocat/Hello-World/events\",\n \"issue_events_url\" : \"http://api.github.com/repos/octocat/Hello-World/issues/events{/number}\",\n \"organization\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Jonell Schuster\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"5jyhzhfm92x5q2m6y7dfu4v5fih9nza9t5mb9gdxncnop5ewo0bosznfn25ynfc8lbbdjtxvjf7g61d1js4ns8fqjh6iqbcl5pxrtuykvr5ykserkm41up71d06ycmocwgwech5col1trzqsj2famr2uxxu9au8pz\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"assignees_url\" : \"http://api.github.com/repos/octocat/Hello-World/assignees{/user}\",\n \"open_issues\" : 1191728586329452759,\n \"watchers_count\" : 80,\n \"forks_count\" : 9,\n \"homepage\" : \"https://github.com\",\n \"node_id\" : \"MDEwOlJlcG9zaXRvcnkxMjk2MjY5\"\n },\n \"title\" : \"Found a bug\",\n \"author_association\" : \"OWNER\",\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347/labels{/name}\",\n \"number\" : 1347,\n \"performed_via_github_app\" : {\n \"owner\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Xavier Ullrich\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"xuvdy319kd7fzpx1l89kljfkhld0p41yh25wtfx2nsr8d08pabvegvhlxb417ocag48m619boye5zdkh919p\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"installations_count\" : 5,\n \"created_at\" : \"2017-07-08T16:18:44-04:00\",\n \"description\" : \"The description of the app.\",\n \"client_id\" : \"\\\"Iv1.25b5d1e65ffc4022\\\"\",\n \"external_url\" : \"https://example.com\",\n \"updated_at\" : \"2017-07-08T16:18:44-04:00\",\n \"permissions\" : {\n \"deployments\" : \"write\",\n \"issues\" : \"read\"\n },\n \"html_url\" : \"https://github.com/apps/super-ci\",\n \"name\" : \"Probot Owners\",\n \"pem\" : \"\\\"-----BEGIN RSA PRIVATE KEY-----\\\\nMIIEogIBAAKCAQEArYxrNYD/iT5CZVpRJu4rBKmmze3PVmT/gCo2ATUvDvZTPTey\\\\nxcGJ3vvrJXazKk06pN05TN29o98jrYz4cengG3YGsXPNEpKsIrEl8NhbnxapEnM9\\\\nJCMRe0P5JcPsfZlX6hmiT7136GRWiGOUba2X9+HKh8QJVLG5rM007TBER9/z9mWm\\\\nrJuNh+m5l320oBQY/Qq3A7wzdEfZw8qm/mIN0FCeoXH1L6B8xXWaAYBwhTEh6SSn\\\\nZHlO1Xu1JWDmAvBCi0RO5aRSKM8q9QEkvvHP4yweAtK3N8+aAbZ7ovaDhyGz8r6r\\\\nzhU1b8Uo0Z2ysf503WqzQgIajr7Fry7/kUwpgQIDAQABAoIBADwJp80Ko1xHPZDy\\\\nfcCKBDfIuPvkmSW6KumbsLMaQv1aGdHDwwTGv3t0ixSay8CGlxMRtRDyZPib6SvQ\\\\n6OH/lpfpbMdW2ErkksgtoIKBVrDilfrcAvrNZu7NxRNbhCSvN8q0s4ICecjbbVQh\\\\nnueSdlA6vGXbW58BHMq68uRbHkP+k+mM9U0mDJ1HMch67wlg5GbayVRt63H7R2+r\\\\nVxcna7B80J/lCEjIYZznawgiTvp3MSanTglqAYi+m1EcSsP14bJIB9vgaxS79kTu\\\\noiSo93leJbBvuGo8QEiUqTwMw4tDksmkLsoqNKQ1q9P7LZ9DGcujtPy4EZsamSJT\\\\ny8OJt0ECgYEA2lxOxJsQk2kI325JgKFjo92mQeUObIvPfSNWUIZQDTjniOI6Gv63\\\\nGLWVFrZcvQBWjMEQraJA9xjPbblV8PtfO87MiJGLWCHFxmPz2dzoedN+2Coxom8m\\\\nV95CLz8QUShuao6u/RYcvUaZEoYs5bHcTmy5sBK80JyEmafJPtCQVxMCgYEAy3ar\\\\nZr3yv4xRPEPMat4rseswmuMooSaK3SKub19WFI5IAtB/e7qR1Rj9JhOGcZz+OQrl\\\\nT78O2OFYlgOIkJPvRMrPpK5V9lslc7tz1FSh3BZMRGq5jSyD7ETSOQ0c8T2O/s7v\\\\nbeEPbVbDe4mwvM24XByH0GnWveVxaDl51ABD65sCgYB3ZAspUkOA5egVCh8kNpnd\\\\nSd6SnuQBE3ySRlT2WEnCwP9Ph6oPgn+oAfiPX4xbRqkL8q/k0BdHQ4h+zNwhk7+h\\\\nWtPYRAP1Xxnc/F+jGjb+DVaIaKGU18MWPg7f+FI6nampl3Q0KvfxwX0GdNhtio8T\\\\nTj1E+SnFwh56SRQuxSh2gwKBgHKjlIO5NtNSflsUYFM+hyQiPiqnHzddfhSG+/3o\\\\nm5nNaSmczJesUYreH5San7/YEy2UxAugvP7aSY2MxB+iGsiJ9WD2kZzTUlDZJ7RV\\\\nUzWsoqBR+eZfVJ2FUWWvy8TpSG6trh4dFxImNtKejCR1TREpSiTV3Zb1dmahK9GV\\\\nrK9NAoGAbBxRLoC01xfxCTgt5BDiBcFVh4fp5yYKwavJPLzHSpuDOrrI9jDn1oKN\\\\nonq5sDU1i391zfQvdrbX4Ova48BN+B7p63FocP/MK5tyyBoT8zQEk2+vWDOw7H/Z\\\\nu5dTCPxTIsoIwUw1I+7yIxqJzLPFgR2gVBwY1ra/8iAqCj+zeBw=\\\\n-----END RSA PRIVATE KEY-----\\\\n\\\"\",\n \"webhook_secret\" : \"\\\"6fba8f2fc8a7e8f2cca5577eddd82ca7586b3b6b\\\"\",\n \"client_secret\" : \"\\\"1d4b2097ac622ba702d19de498f005747a8b21d3\\\"\",\n \"id\" : 37,\n \"events\" : [ \"label\", \"deployment\" ],\n \"slug\" : \"probot-owners\",\n \"node_id\" : \"MDExOkludGVncmF0aW9uMQ==\"\n },\n \"updated_at\" : \"2011-04-22T13:33:48Z\",\n \"comments_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347/comments\",\n \"active_lock_reason\" : \"too heated\",\n \"id\" : 1,\n \"repository_url\" : \"https://api.github.com/repos/octocat/Hello-World\",\n \"state\" : \"open\",\n \"locked\" : true,\n \"timeline_url\" : \"https://web.example.mocklab.io/462748\",\n \"pull_request\" : {\n \"patch_url\" : \"https://web.example.mocklab.io/082261\",\n \"html_url\" : \"https://web.example.mocklab.io/525640\",\n \"merged_at\" : \"2022-12-23T22:57:33.24Z\",\n \"diff_url\" : \"https://web.example.mocklab.io/668940\",\n \"url\" : \"https://web.example.mocklab.io/343832\"\n },\n \"closed_at\" : \"2023-02-07T03:46:25.24Z\",\n \"comments\" : 0,\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347\",\n \"labels\" : [ {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n }, {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n }, {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n }, {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n }, {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n }, {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n }, {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n } ],\n \"milestone\" : {\n \"creator\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Athena Swift\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"lnfo3rctr9tjgu9mv4u1ijf48nh5fqo1wpnk8il75ykaz04157u5nwj65woz8cjap6b1sqq2in7oh8w3eanml3hrfxkz9rd8otqxhie2\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"closed_at\" : \"2013-02-12T13:22:01Z\",\n \"created_at\" : \"2011-04-10T20:09:31Z\",\n \"description\" : \"Tracking milestone for version 1.0\",\n \"closed_issues\" : 8,\n \"title\" : \"v1.0\",\n \"due_on\" : \"2012-10-09T23:39:01Z\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones/1\",\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones/1/labels\",\n \"number\" : 42,\n \"updated_at\" : \"2014-03-03T18:58:10Z\",\n \"html_url\" : \"https://github.com/octocat/Hello-World/milestones/v1.0\",\n \"id\" : 1002604,\n \"state\" : \"open\",\n \"open_issues\" : 4,\n \"node_id\" : \"MDk6TWlsZXN0b25lMTAwMjYwNA==\"\n },\n \"events_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347/events\",\n \"html_url\" : \"https://github.com/octocat/Hello-World/issues/1347\",\n \"assignee\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Lamar Hermann DDS\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"0zt7s06whfhgq741f6i9jrj6d0segwfigutzfa4rlm2ewy3xdlh1wz2lez4kay1ipnwqby464kcx309py89kjgpo4wa8fh8fgx7gfg3v9o\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"user\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"gale.koelpin\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"8ah6a0jmhyjta287m8nixqkbxro6rzyhjdaylj7wj0qj3m4cfb8pshzbv0oo979ob0\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"node_id\" : \"MDU6SXNzdWUx\"\n },\n \"action\" : \"zo3walr2hfrhb2427idromf512p22zdcid4dpsh8ubml37qip13pkzscqp3v0iy4vb7xxnuflqz1saufifkhpejodzhndty85xg6xswqbu46q2zi7uh7p9hvkq5axx1bm0n21un24b7gl1ei41nqen98z7p3p4kxc74uuxaewy1y6q64\",\n \"comment\" : {\n \"issue_url\" : \"https://web.example.mocklab.io/939797\",\n \"body_html\" : \"deaquhg24vk7e4lstorjnn5qpwnagn37vs36kofusiu8dv8y7byz3gmdolptnoq0f9t8xzzhvah6obgws3sgzagy7hi248kgax01aapgranfo3p9495ilr479qc5na85zxg9epf5xzukvhiku8xl3ddyzvy9ogzh\",\n \"body_text\" : \"w5xty9z8npj0guh012yeanxzl2oid5dybcsbiro7h921c6dfj994ppre43i6rd9\",\n \"created_at\" : \"2011-04-14T16:00:49Z\",\n \"body\" : \"What version of Safari were you using when you observed this bug?\",\n \"url\" : \"https://api.github.com/repositories/42/issues/comments/1\",\n \"author_association\" : \"OWNER\",\n \"performed_via_github_app\" : {\n \"owner\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Felicidad Krajcik\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"v6deykj1tepe35xmvgonm15s9q6nofqed7dau6kg7mg7gev7v5cka\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"installations_count\" : 5,\n \"created_at\" : \"2017-07-08T16:18:44-04:00\",\n \"description\" : \"The description of the app.\",\n \"client_id\" : \"\\\"Iv1.25b5d1e65ffc4022\\\"\",\n \"external_url\" : \"https://example.com\",\n \"updated_at\" : \"2017-07-08T16:18:44-04:00\",\n \"permissions\" : {\n \"deployments\" : \"write\",\n \"issues\" : \"read\"\n },\n \"html_url\" : \"https://github.com/apps/super-ci\",\n \"name\" : \"Probot Owners\",\n \"pem\" : \"\\\"-----BEGIN RSA PRIVATE KEY-----\\\\nMIIEogIBAAKCAQEArYxrNYD/iT5CZVpRJu4rBKmmze3PVmT/gCo2ATUvDvZTPTey\\\\nxcGJ3vvrJXazKk06pN05TN29o98jrYz4cengG3YGsXPNEpKsIrEl8NhbnxapEnM9\\\\nJCMRe0P5JcPsfZlX6hmiT7136GRWiGOUba2X9+HKh8QJVLG5rM007TBER9/z9mWm\\\\nrJuNh+m5l320oBQY/Qq3A7wzdEfZw8qm/mIN0FCeoXH1L6B8xXWaAYBwhTEh6SSn\\\\nZHlO1Xu1JWDmAvBCi0RO5aRSKM8q9QEkvvHP4yweAtK3N8+aAbZ7ovaDhyGz8r6r\\\\nzhU1b8Uo0Z2ysf503WqzQgIajr7Fry7/kUwpgQIDAQABAoIBADwJp80Ko1xHPZDy\\\\nfcCKBDfIuPvkmSW6KumbsLMaQv1aGdHDwwTGv3t0ixSay8CGlxMRtRDyZPib6SvQ\\\\n6OH/lpfpbMdW2ErkksgtoIKBVrDilfrcAvrNZu7NxRNbhCSvN8q0s4ICecjbbVQh\\\\nnueSdlA6vGXbW58BHMq68uRbHkP+k+mM9U0mDJ1HMch67wlg5GbayVRt63H7R2+r\\\\nVxcna7B80J/lCEjIYZznawgiTvp3MSanTglqAYi+m1EcSsP14bJIB9vgaxS79kTu\\\\noiSo93leJbBvuGo8QEiUqTwMw4tDksmkLsoqNKQ1q9P7LZ9DGcujtPy4EZsamSJT\\\\ny8OJt0ECgYEA2lxOxJsQk2kI325JgKFjo92mQeUObIvPfSNWUIZQDTjniOI6Gv63\\\\nGLWVFrZcvQBWjMEQraJA9xjPbblV8PtfO87MiJGLWCHFxmPz2dzoedN+2Coxom8m\\\\nV95CLz8QUShuao6u/RYcvUaZEoYs5bHcTmy5sBK80JyEmafJPtCQVxMCgYEAy3ar\\\\nZr3yv4xRPEPMat4rseswmuMooSaK3SKub19WFI5IAtB/e7qR1Rj9JhOGcZz+OQrl\\\\nT78O2OFYlgOIkJPvRMrPpK5V9lslc7tz1FSh3BZMRGq5jSyD7ETSOQ0c8T2O/s7v\\\\nbeEPbVbDe4mwvM24XByH0GnWveVxaDl51ABD65sCgYB3ZAspUkOA5egVCh8kNpnd\\\\nSd6SnuQBE3ySRlT2WEnCwP9Ph6oPgn+oAfiPX4xbRqkL8q/k0BdHQ4h+zNwhk7+h\\\\nWtPYRAP1Xxnc/F+jGjb+DVaIaKGU18MWPg7f+FI6nampl3Q0KvfxwX0GdNhtio8T\\\\nTj1E+SnFwh56SRQuxSh2gwKBgHKjlIO5NtNSflsUYFM+hyQiPiqnHzddfhSG+/3o\\\\nm5nNaSmczJesUYreH5San7/YEy2UxAugvP7aSY2MxB+iGsiJ9WD2kZzTUlDZJ7RV\\\\nUzWsoqBR+eZfVJ2FUWWvy8TpSG6trh4dFxImNtKejCR1TREpSiTV3Zb1dmahK9GV\\\\nrK9NAoGAbBxRLoC01xfxCTgt5BDiBcFVh4fp5yYKwavJPLzHSpuDOrrI9jDn1oKN\\\\nonq5sDU1i391zfQvdrbX4Ova48BN+B7p63FocP/MK5tyyBoT8zQEk2+vWDOw7H/Z\\\\nu5dTCPxTIsoIwUw1I+7yIxqJzLPFgR2gVBwY1ra/8iAqCj+zeBw=\\\\n-----END RSA PRIVATE KEY-----\\\\n\\\"\",\n \"webhook_secret\" : \"\\\"6fba8f2fc8a7e8f2cca5577eddd82ca7586b3b6b\\\"\",\n \"client_secret\" : \"\\\"1d4b2097ac622ba702d19de498f005747a8b21d3\\\"\",\n \"id\" : 37,\n \"events\" : [ \"label\", \"deployment\" ],\n \"slug\" : \"probot-owners\",\n \"node_id\" : \"MDExOkludGVncmF0aW9uMQ==\"\n },\n \"updated_at\" : \"2011-04-14T16:00:49Z\",\n \"html_url\" : \"https://web.example.mocklab.io/737140\",\n \"reactions\" : {\n \"confused\" : 5163154444682749836,\n \"-1\" : 2032107119393692737,\n \"+1\" : 8009377013760138805,\n \"total_count\" : 7789635001266951525,\n \"rocket\" : 2370595916521697371,\n \"hooray\" : 2850226145736188542,\n \"eyes\" : 1425171742309203808,\n \"heart\" : 2728103952638401479,\n \"laugh\" : 6906024851782237841,\n \"url\" : \"https://web.example.mocklab.io/186284\"\n },\n \"id\" : 42,\n \"user\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"jean.simonis\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"7s320c2a8apbqcrtwxca3j6r24pevhjhqbbcjidbjpjri3qvw0bvvbhjxchujrmayzn5dyi3o26r4xh49ikwpzp4iwcb7aa9vtu5sn1akuyzyu72ok7m8z92ag1uppnuq4hqur2omwiump83zpk\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"node_id\" : \"6y56\"\n }\n },\n \"repo\" : {\n \"name\" : \"Hermine Boyle\",\n \"id\" : 2066658344231788068,\n \"url\" : \"https://web.example.mocklab.io/343124\"\n },\n \"created_at\" : \"2022-07-25T16:50:02.241Z\",\n \"id\" : \"nqu5\",\n \"type\" : \"8s92ze6pxq0ifk2ne8euscuvi5e87gwcd5el2kv927p9wg6lnfwscejct1v9o8cz6krjj5678znett9i5nl6z0lorun0emdnm98iui3nn7yypmszprvszznlzxaz0fv92d9j7hzaqy2aje3mqondq\"\n}, {\n \"actor\" : {\n \"display_login\" : \"tnmbr6kiud3ief1k3phg3dzbfz12z5jh3mx2fscidahvu9qsjvm24ywjwvm5f78ugkxrpx3otvsxqgs7y5h3clt8sqnxjjr1kw8a1t00i0rbp2oi1gqops2lqtvd952c\",\n \"avatar_url\" : \"https://s3.amazonaws.com/uifaces/faces/twitter/wiljanslofstra/128.jpg\",\n \"id\" : 7429039522401402486,\n \"login\" : \"fwricjnjgp67ialow8b4sgjq90i5cmabhp67j35cs4f7gmwoymkclj4h56avo2vok22ovtyr6eqvw45mrd8h1cxck51f0vy53l03f08rwk07dpyupdc3n15ifeiso4h6y6fxtkxl414vhj5pm2sbhimsh9r4w5abl64ij1zz9e\",\n \"gravatar_id\" : \"5j0o\",\n \"url\" : \"https://web.example.mocklab.io/965599\"\n },\n \"public\" : true,\n \"org\" : {\n \"display_login\" : \"hsnns9iz3fo11kt6iqal3pj2cetow3qzgm42mqn34pipaku5htv6uvkvrtiepslucjna35hpverj8b4yvws7z8bnzswd962atiywtmehddicq6a24\",\n \"avatar_url\" : \"https://s3.amazonaws.com/uifaces/faces/twitter/betraydan/128.jpg\",\n \"id\" : 4119490729193940562,\n \"login\" : \"carr3o56bq598uo935dal91rxacoe4gbnxk9e7ueopuriv3oj491e0p7zrk\",\n \"gravatar_id\" : \"cuji\",\n \"url\" : \"https://web.example.mocklab.io/250092\"\n },\n \"payload\" : {\n \"pages\" : [ {\n \"summary\" : \"Officiis illo distinctio rerum. Asperiores dicta ea atque. Voluptates eius ullam asperiores hic pariatur quis. Omnis repellat exercitationem ea nisi. Delectus quis adipisci qui odio et saepe voluptate\",\n \"html_url\" : \"https://web.example.mocklab.io/826407\",\n \"page_name\" : \"Miss Vickie Simonis\",\n \"action\" : \"cte730ythslfdy47j2eb4dy12zwng27b2c6hpcc6yczk636ge3j4gq97u1tg6e0ffb964shav9lyy2vv\",\n \"title\" : \"Quaerat alias quae possimus nihil sed vitae.\",\n \"sha\" : \"bya8wzjs39wx0xq6gozmqtjk2cfamtwikhgtq8gz19to5mxfglu0q9ffkd73oku985mohhvbgbwujcmx9qx1zrpt0eyqqer3zrp9nuynahp6e8xw7mlzb4jxqt9qn3phmet0osvc\"\n }, {\n \"summary\" : \"Quidem explicabo ut tenetur adipisci molestiae. Ut suscipit blanditiis quas rem illo labore consectetur. Qui quis consequatur omnis consequatur aut.\",\n \"html_url\" : \"https://web.example.mocklab.io/419449\",\n \"page_name\" : \"Miss Luther Kuhic\",\n \"action\" : \"qodax8m4fz348d4hwda0i7kasla2bgt6ndmg1gnwtrfpq97htbp7d0y9phdipn26gt104i322l2pcsafm31q554qklp05r0ejlh31jcs4jcsza4mw8ch\",\n \"title\" : \"Necessitatibus aut quos aut assumenda.\",\n \"sha\" : \"rmhmylzypyrf99zws0locnyfcz5hshil8aazbaoctcv3mdswmmfwjt1k5xbp9akxwn6bwazhmaanzsrs5cplxofq4n72b80rcevm60xdl\"\n }, {\n \"summary\" : \"Repellendus et deleniti. Sint nihil ut impedit ratione. Veritatis facilis provident tempora ut cupiditate aspernatur. Aut eius iure ipsum. Voluptatem totam sed dolor quo dolores ut.\",\n \"html_url\" : \"https://web.example.mocklab.io/926660\",\n \"page_name\" : \"Yaeko Langosh\",\n \"action\" : \"5wl9v2u3s7mgclc1czwkuq003hdqk0xs9z6yh5crcip1ouat7lbpycs0mdjylf9980k0ogzjozqso8qt0r9aslri8pc6l1m2frv9es88o0pipowb9wubjzlzca1fcn6yk8mbkn51czx\",\n \"title\" : \"Voluptatibus omnis velit consequatur nobis.\",\n \"sha\" : \"srerbx2nps5082gxkv2uip2jewhq3cn1lmefeao0l678d0ytztixcy6139xlqq\"\n } ],\n \"issue\" : {\n \"body_html\" : \"49bt5jfl5ygdmujjcpzwp9jj14in07njwxdi7satam92txa2oxcviwml4ctpgl9xsqm3vmid40eqvo73t5hi7vbkuu9mateh0ewum73x4e7rlyaw55mn4e3xvwy4gmzskfd18ikgouq02jzdak31uyir779thd8hgygurj9bd14lnsdg5r97p643uj476w45si13xbg\",\n \"body_text\" : \"qgh7dox8hk1tk168pq\",\n \"assignees\" : [ {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Miss Felipe Wolff\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"56s5h8yhc4y3ak2mabajmd7hp17sm1qp9df2kj6havu8f7cpli64dviurp07jdn14s1sfce6hi2omx6ueec0ugoasvngxycj7m\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n } ],\n \"created_at\" : \"2011-04-22T13:33:48Z\",\n \"body\" : \"I'm having a problem with this.\",\n \"repository\" : {\n \"allow_forking\" : true,\n \"anonymous_access_enabled\" : false,\n \"is_template\" : true,\n \"stargazers_count\" : 80,\n \"pushed_at\" : \"2011-01-26T19:06:43Z\",\n \"language\" : \"ohq8smlr\",\n \"subscription_url\" : \"http://api.github.com/repos/octocat/Hello-World/subscription\",\n \"branches_url\" : \"http://api.github.com/repos/octocat/Hello-World/branches{/branch}\",\n \"allow_rebase_merge\" : true,\n \"issue_comment_url\" : \"http://api.github.com/repos/octocat/Hello-World/issues/comments{/number}\",\n \"labels_url\" : \"http://api.github.com/repos/octocat/Hello-World/labels{/name}\",\n \"permissions\" : {\n \"pull\" : false,\n \"maintain\" : false,\n \"admin\" : true,\n \"triage\" : false,\n \"push\" : true\n },\n \"subscribers_url\" : \"http://api.github.com/repos/octocat/Hello-World/subscribers\",\n \"releases_url\" : \"http://api.github.com/repos/octocat/Hello-World/releases{/id}\",\n \"svn_url\" : \"https://svn.github.com/octocat/Hello-World\",\n \"subscribers_count\" : 5220145807986172973,\n \"id\" : 42,\n \"master_branch\" : \"n0yldawhmdbj14hmg264y77hp3z96q6vkfuw27uyodm9mn98lknwzx8byz6o4m3vqgh2ber9lohvfxhy5leleyq9vij5ebmguvoetbbs829wau8n5dzm6zg99unsihagb2bcmhktp5q9hl2pkx1rlga\",\n \"forks\" : 8747880398733064439,\n \"allow_merge_commit\" : true,\n \"archive_url\" : \"http://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref}\",\n \"git_refs_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/refs{/sha}\",\n \"forks_url\" : \"http://api.github.com/repos/octocat/Hello-World/forks\",\n \"visibility\" : \"lsncr6gjvuufdkmhqfkwjt78mcegk94jehziiwrquu5dwcbot3iswm7q8dkqmrivck8uywokk5ip6vrb0z3o5hmpyvh5ps9y0yiatx6p0whjrdteisj3m0c2dczfpn7n2nhwan5iymiwzolbkael8ntl06oua967tfxr57tbzx4qqr\",\n \"statuses_url\" : \"http://api.github.com/repos/octocat/Hello-World/statuses/{sha}\",\n \"network_count\" : 7672213665219108621,\n \"ssh_url\" : \"git@github.com:octocat/Hello-World.git\",\n \"license\" : {\n \"html_url\" : \"https://web.example.mocklab.io/771537\",\n \"name\" : \"MIT License\",\n \"spdx_id\" : \"MIT\",\n \"key\" : \"mit\",\n \"url\" : \"https://api.github.com/licenses/mit\",\n \"node_id\" : \"MDc6TGljZW5zZW1pdA==\"\n },\n \"full_name\" : \"octocat/Hello-World\",\n \"size\" : 108,\n \"template_repository\" : {\n \"anonymous_access_enabled\" : false,\n \"is_template\" : false,\n \"stargazers_count\" : 6539849634727079964,\n \"pushed_at\" : \"dlg0qslcjz0f9d71ofdevr8mzf7saz5u8c826dv4ngz70rsb8h4ldvg3vzcmm4i0q6z039mmbd9dizqflfof3bn2w9y072r7v51nimv86kox2jzq2o8377a1ayuen0lfqllmx65shpzicy7f0gqvfbhzfwcckgbyoj5i20omstx90vli71tp6f2sh3s6hp6i4ykso3\",\n \"language\" : \"yc9ve65j7ckppogjz1yp72gt59t1e1bupe3vr5l8wl6h24k3hk5xs9w5wfatmettgebklianxhnjiv5uwms80okwg2wmzz31kwnp8cxf2r82vh9v80lp4v766pdurm2wgn5sd5p5e8i031820hy66z93elcxfex8qnu3moe7icb3dhhwl2w1\",\n \"subscription_url\" : \"https://web.example.mocklab.io/019877\",\n \"branches_url\" : \"https://web.example.mocklab.io/751941\",\n \"allow_rebase_merge\" : false,\n \"issue_comment_url\" : \"https://web.example.mocklab.io/241492\",\n \"labels_url\" : \"https://web.example.mocklab.io/232386\",\n \"permissions\" : { },\n \"subscribers_url\" : \"https://web.example.mocklab.io/966645\",\n \"releases_url\" : \"https://web.example.mocklab.io/392518\",\n \"svn_url\" : \"https://web.example.mocklab.io/626257\",\n \"subscribers_count\" : 6065120495663776060,\n \"id\" : 8996273576763406415,\n \"allow_merge_commit\" : true,\n \"archive_url\" : \"https://web.example.mocklab.io/776058\",\n \"git_refs_url\" : \"https://web.example.mocklab.io/111195\",\n \"forks_url\" : \"https://web.example.mocklab.io/000684\",\n \"visibility\" : \"pdntlt23rxgwr4cjk1279c3hrii10128u4gghzltzmm5ys4woaiqueah30kztw2tu2hboy15zywl5r1fd1lips\",\n \"statuses_url\" : \"https://web.example.mocklab.io/728584\",\n \"network_count\" : 5531849956821282620,\n \"ssh_url\" : \"https://web.example.mocklab.io/139305\",\n \"full_name\" : \"Monte Connelly\",\n \"size\" : 3473349040866023365,\n \"languages_url\" : \"https://web.example.mocklab.io/352505\",\n \"clone_url\" : \"https://web.example.mocklab.io/805553\",\n \"collaborators_url\" : \"https://web.example.mocklab.io/113043\",\n \"html_url\" : \"https://web.example.mocklab.io/983172\",\n \"name\" : \"Mrs. Tambra Bashirian\",\n \"pulls_url\" : \"https://web.example.mocklab.io/333875\",\n \"default_branch\" : \"060uj7bug938eb5i3ckbh23son500lzsql1k8h3ljyt389yg7w7g0yz8rzaa0x7fcrzszg1rzlbqxxbysa713g3i0iuz8t415d343fcmuty55myh1il8ydn6zk8qgoiu434blflk6utho0s14j9xk1j8pdxzyz9ajez5lr56208spp5q07humv6vgd02fh9kewaz\",\n \"hooks_url\" : \"https://web.example.mocklab.io/918693\",\n \"trees_url\" : \"https://web.example.mocklab.io/654706\",\n \"tags_url\" : \"https://web.example.mocklab.io/058129\",\n \"contributors_url\" : \"https://web.example.mocklab.io/396250\",\n \"private\" : false,\n \"has_downloads\" : false,\n \"notifications_url\" : \"https://web.example.mocklab.io/960526\",\n \"open_issues_count\" : 2520861986828484839,\n \"created_at\" : \"b8q3yud5tytdl94uircvungaj4r1gm5nstubxg8gxixlke649ka9qvkc7wd06hecns5xnva27w5gnhz6o1rronozstpxoycwvck9145ogwmfzfvbb6x2n3ogq6bqgfj1tqq0crzk3ao9d4qt85lyta0xvflyztfo454xqc2zdnaa7cdqu86m4tsj5klbxv9\",\n \"description\" : \"Error modi fugit optio qui nisi. Iure provident rem voluptas voluptas cum et quia. Voluptatem qui eos autem explicabo sed ea voluptatem. Cupiditate maiores qui commodi. Necessitatibus quia amet volupt\",\n \"deployments_url\" : \"https://web.example.mocklab.io/823045\",\n \"keys_url\" : \"https://web.example.mocklab.io/980972\",\n \"has_projects\" : true,\n \"archived\" : true,\n \"has_wiki\" : true,\n \"updated_at\" : \"2022-06-17T09:19:59.245176Z\",\n \"comments_url\" : \"https://web.example.mocklab.io/142164\",\n \"stargazers_url\" : \"https://web.example.mocklab.io/916366\",\n \"disabled\" : false,\n \"delete_branch_on_merge\" : false,\n \"git_url\" : \"https://web.example.mocklab.io/730331\",\n \"has_pages\" : true,\n \"owner\" : { },\n \"allow_squash_merge\" : false,\n \"commits_url\" : \"https://web.example.mocklab.io/700633\",\n \"compare_url\" : \"https://web.example.mocklab.io/332051\",\n \"git_commits_url\" : \"https://web.example.mocklab.io/859873\",\n \"topics\" : [ \"ljaofli0nwsqrapqeo4qk3hzv9zjy8fv2rz9fsf69fvdm41c9oz9nhumldepeujycs0irkiadk0i8kuwejgycohzjkhi3lhgxq2gxeda9jhx2f2a5hr1hqlbvcvbal5qjtom6dz6bsp4fgj6i2hjarh5nr5yjhr0wlaodarwarqhoonftet\", \"la1y0rq4xctfsltwuko48mno6zdynxb30qhtwniao\", \"8dv47ogah6a8v7lw23sxeom2zr1vfh046htkpg23q994u3431cb3uzh0vyhjsbgzdhtw38ybjlz6mnmmhws3csjjihtz8itjg69x66n2dn6tfbilqexapcw3gytz4jiyeer3lma4kx86uel4qyp3z2xo5rdquis6sfa\" ],\n \"blobs_url\" : \"https://web.example.mocklab.io/190386\",\n \"git_tags_url\" : \"https://web.example.mocklab.io/777911\",\n \"merges_url\" : \"https://web.example.mocklab.io/297268\",\n \"downloads_url\" : \"https://web.example.mocklab.io/958782\",\n \"has_issues\" : true,\n \"url\" : \"https://web.example.mocklab.io/833310\",\n \"contents_url\" : \"https://web.example.mocklab.io/808388\",\n \"mirror_url\" : \"https://web.example.mocklab.io/761837\",\n \"milestones_url\" : \"https://web.example.mocklab.io/383147\",\n \"teams_url\" : \"https://web.example.mocklab.io/903651\",\n \"fork\" : false,\n \"issues_url\" : \"https://web.example.mocklab.io/475321\",\n \"events_url\" : \"https://web.example.mocklab.io/175649\",\n \"issue_events_url\" : \"https://web.example.mocklab.io/408086\",\n \"assignees_url\" : \"https://web.example.mocklab.io/886902\",\n \"watchers_count\" : 1182064253288271031,\n \"forks_count\" : 9220375161975328858,\n \"homepage\" : \"pnqb2oj8wus3zl6n894gvvfqx2a7ozyd9qrpnu7dtrptmyjz61lwmlp3dma1ibdj14shh1sbccfyvi9g6yr14z9v41atj0b0m1pezbol0xwx11ga4typcx6sma7hnmw8iio66aozp\",\n \"node_id\" : \"q8yj\"\n },\n \"languages_url\" : \"http://api.github.com/repos/octocat/Hello-World/languages\",\n \"clone_url\" : \"https://github.com/octocat/Hello-World.git\",\n \"collaborators_url\" : \"http://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator}\",\n \"html_url\" : \"https://github.com/octocat/Hello-World\",\n \"name\" : \"Team Environment\",\n \"pulls_url\" : \"http://api.github.com/repos/octocat/Hello-World/pulls{/number}\",\n \"default_branch\" : \"master\",\n \"hooks_url\" : \"http://api.github.com/repos/octocat/Hello-World/hooks\",\n \"trees_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/trees{/sha}\",\n \"tags_url\" : \"http://api.github.com/repos/octocat/Hello-World/tags\",\n \"contributors_url\" : \"http://api.github.com/repos/octocat/Hello-World/contributors\",\n \"private\" : true,\n \"has_downloads\" : true,\n \"notifications_url\" : \"http://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating}\",\n \"open_issues_count\" : 0,\n \"created_at\" : \"2011-01-26T19:01:12Z\",\n \"description\" : \"This your first repo!\",\n \"watchers\" : 2090251137810494611,\n \"deployments_url\" : \"http://api.github.com/repos/octocat/Hello-World/deployments\",\n \"keys_url\" : \"http://api.github.com/repos/octocat/Hello-World/keys{/key_id}\",\n \"has_projects\" : true,\n \"archived\" : true,\n \"has_wiki\" : true,\n \"updated_at\" : \"2011-01-26T19:14:43Z\",\n \"comments_url\" : \"http://api.github.com/repos/octocat/Hello-World/comments{/number}\",\n \"stargazers_url\" : \"http://api.github.com/repos/octocat/Hello-World/stargazers\",\n \"disabled\" : false,\n \"delete_branch_on_merge\" : false,\n \"git_url\" : \"git:github.com/octocat/Hello-World.git\",\n \"has_pages\" : false,\n \"owner\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Merilyn Hintz Sr.\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"jltpnyrme0f7q15w90ardtv18buzzc0jwcytz15pp2cw94krhyc7tmsezelii0bygq9rsxexmlpjmy0f72vj4zr5i06utclgpc8mh7\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"allow_squash_merge\" : true,\n \"commits_url\" : \"http://api.github.com/repos/octocat/Hello-World/commits{/sha}\",\n \"compare_url\" : \"http://api.github.com/repos/octocat/Hello-World/compare/{base}...{head}\",\n \"git_commits_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/commits{/sha}\",\n \"topics\" : [ \"mcihkdgvuy810h4q875id93wf13ijiopcvl988y1amq0ql2fkhc7lirneq7nnwxsmq6sdshim0y3lbsk46ngga1akiosnm2oiebcspvtj0g43j7cxmphn68io6o3o9oupayb8kovnl8l4insw4i2xk1n1ih\", \"duu59o6zu7n0x6o8ygsc7z66v1uwk2qsuw81sfx045z6auad1mpzwslq5zcyxtwdsjt0ejlsr1v0cdgjszfuyxk3wukhlgbzkn2tt6orujkx73602graye3lz1vao5vs5tatg6khesi6yr2x7s5u4miki90sl6l7jc3rrcfq93srjy17wntntjawag0fm8bobd\", \"3b6rtwi8pplc744g63yu3z2mwac7op96l0a4064434grjt6kpsswlp1ebjrxvqqzyeriedd9jqc0c4omfc8t0ed55bpe2gmrw5o3q92r8atvk5aayjn8j3ybmv6a0nrzm55t1vwmyksms5crjd0avn4gic76zqy7gavv73q5t04vwcxm3uclsrvb2wct09v26kxx00\", \"wqe5s5svxogjrw6xrq389t46sxvtvxlqdczy4vzx0jjfiyxdw9207l9v4zd2pf3kroxxpz3hlx16j6n0o810cxeezu70maexyb9jj36ab69dug8e6b71kknph3e580ug807gqxj4yrn3794lqs1fbipo2ytb5br23kuwekqsic0qxrz441z\", \"sr88ea7pnn3x1nr2ttwb51254a4rpgo25it665h40a8gmdzcvxp0\", \"71500j83hzab62lhgxgjnn\", \"hsoe7hpe5dzxryj8yfn1w2pcmkh5cxfpflyw7r0whdyzc2h7kifyfhg24jqzejbwv8jhakwyexyuxmd76r9dbljee4i4mrwff2zbws6pqtuiij8h6ghygytlw3bp9qetgv6kika5cong0slcdutpftj264zk7n0jfrsur7bd77rue55930z7op564utqzp3o22uk0lf\", \"e6vai2xvrdairv5rr0feej83qf3vqjjrtczcxn4uggwptbrhshzdk35s63tyix7262jt6ngyv47zhzbphcxl18klaojlfsfxb40wt9hrdtoa8eokgihdulnkxjnfw1zt1itudbay4wdjp5vdzvsuqw0fdefeyre8tt2jmfox5cwxc5c4o9druzswdpq388a\" ],\n \"blobs_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/blobs{/sha}\",\n \"git_tags_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/tags{/sha}\",\n \"merges_url\" : \"http://api.github.com/repos/octocat/Hello-World/merges\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:42Z\\\"\",\n \"downloads_url\" : \"http://api.github.com/repos/octocat/Hello-World/downloads\",\n \"has_issues\" : true,\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World\",\n \"contents_url\" : \"http://api.github.com/repos/octocat/Hello-World/contents/{+path}\",\n \"mirror_url\" : \"git:git.example.com/octocat/Hello-World\",\n \"milestones_url\" : \"http://api.github.com/repos/octocat/Hello-World/milestones{/number}\",\n \"teams_url\" : \"http://api.github.com/repos/octocat/Hello-World/teams\",\n \"fork\" : false,\n \"issues_url\" : \"http://api.github.com/repos/octocat/Hello-World/issues{/number}\",\n \"events_url\" : \"http://api.github.com/repos/octocat/Hello-World/events\",\n \"issue_events_url\" : \"http://api.github.com/repos/octocat/Hello-World/issues/events{/number}\",\n \"organization\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Brigid Cassin\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"ygf6m07cv23ipm7w2gkauen24xn2o5z0cutom5ylv\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"assignees_url\" : \"http://api.github.com/repos/octocat/Hello-World/assignees{/user}\",\n \"open_issues\" : 100044061795091677,\n \"watchers_count\" : 80,\n \"forks_count\" : 9,\n \"homepage\" : \"https://github.com\",\n \"node_id\" : \"MDEwOlJlcG9zaXRvcnkxMjk2MjY5\"\n },\n \"title\" : \"Found a bug\",\n \"author_association\" : \"OWNER\",\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347/labels{/name}\",\n \"number\" : 1347,\n \"performed_via_github_app\" : {\n \"owner\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Sebastian Fay\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"f0yysh2271hly287iiy\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"installations_count\" : 5,\n \"created_at\" : \"2017-07-08T16:18:44-04:00\",\n \"description\" : \"The description of the app.\",\n \"client_id\" : \"\\\"Iv1.25b5d1e65ffc4022\\\"\",\n \"external_url\" : \"https://example.com\",\n \"updated_at\" : \"2017-07-08T16:18:44-04:00\",\n \"permissions\" : {\n \"deployments\" : \"write\",\n \"issues\" : \"read\"\n },\n \"html_url\" : \"https://github.com/apps/super-ci\",\n \"name\" : \"Probot Owners\",\n \"pem\" : \"\\\"-----BEGIN RSA PRIVATE KEY-----\\\\nMIIEogIBAAKCAQEArYxrNYD/iT5CZVpRJu4rBKmmze3PVmT/gCo2ATUvDvZTPTey\\\\nxcGJ3vvrJXazKk06pN05TN29o98jrYz4cengG3YGsXPNEpKsIrEl8NhbnxapEnM9\\\\nJCMRe0P5JcPsfZlX6hmiT7136GRWiGOUba2X9+HKh8QJVLG5rM007TBER9/z9mWm\\\\nrJuNh+m5l320oBQY/Qq3A7wzdEfZw8qm/mIN0FCeoXH1L6B8xXWaAYBwhTEh6SSn\\\\nZHlO1Xu1JWDmAvBCi0RO5aRSKM8q9QEkvvHP4yweAtK3N8+aAbZ7ovaDhyGz8r6r\\\\nzhU1b8Uo0Z2ysf503WqzQgIajr7Fry7/kUwpgQIDAQABAoIBADwJp80Ko1xHPZDy\\\\nfcCKBDfIuPvkmSW6KumbsLMaQv1aGdHDwwTGv3t0ixSay8CGlxMRtRDyZPib6SvQ\\\\n6OH/lpfpbMdW2ErkksgtoIKBVrDilfrcAvrNZu7NxRNbhCSvN8q0s4ICecjbbVQh\\\\nnueSdlA6vGXbW58BHMq68uRbHkP+k+mM9U0mDJ1HMch67wlg5GbayVRt63H7R2+r\\\\nVxcna7B80J/lCEjIYZznawgiTvp3MSanTglqAYi+m1EcSsP14bJIB9vgaxS79kTu\\\\noiSo93leJbBvuGo8QEiUqTwMw4tDksmkLsoqNKQ1q9P7LZ9DGcujtPy4EZsamSJT\\\\ny8OJt0ECgYEA2lxOxJsQk2kI325JgKFjo92mQeUObIvPfSNWUIZQDTjniOI6Gv63\\\\nGLWVFrZcvQBWjMEQraJA9xjPbblV8PtfO87MiJGLWCHFxmPz2dzoedN+2Coxom8m\\\\nV95CLz8QUShuao6u/RYcvUaZEoYs5bHcTmy5sBK80JyEmafJPtCQVxMCgYEAy3ar\\\\nZr3yv4xRPEPMat4rseswmuMooSaK3SKub19WFI5IAtB/e7qR1Rj9JhOGcZz+OQrl\\\\nT78O2OFYlgOIkJPvRMrPpK5V9lslc7tz1FSh3BZMRGq5jSyD7ETSOQ0c8T2O/s7v\\\\nbeEPbVbDe4mwvM24XByH0GnWveVxaDl51ABD65sCgYB3ZAspUkOA5egVCh8kNpnd\\\\nSd6SnuQBE3ySRlT2WEnCwP9Ph6oPgn+oAfiPX4xbRqkL8q/k0BdHQ4h+zNwhk7+h\\\\nWtPYRAP1Xxnc/F+jGjb+DVaIaKGU18MWPg7f+FI6nampl3Q0KvfxwX0GdNhtio8T\\\\nTj1E+SnFwh56SRQuxSh2gwKBgHKjlIO5NtNSflsUYFM+hyQiPiqnHzddfhSG+/3o\\\\nm5nNaSmczJesUYreH5San7/YEy2UxAugvP7aSY2MxB+iGsiJ9WD2kZzTUlDZJ7RV\\\\nUzWsoqBR+eZfVJ2FUWWvy8TpSG6trh4dFxImNtKejCR1TREpSiTV3Zb1dmahK9GV\\\\nrK9NAoGAbBxRLoC01xfxCTgt5BDiBcFVh4fp5yYKwavJPLzHSpuDOrrI9jDn1oKN\\\\nonq5sDU1i391zfQvdrbX4Ova48BN+B7p63FocP/MK5tyyBoT8zQEk2+vWDOw7H/Z\\\\nu5dTCPxTIsoIwUw1I+7yIxqJzLPFgR2gVBwY1ra/8iAqCj+zeBw=\\\\n-----END RSA PRIVATE KEY-----\\\\n\\\"\",\n \"webhook_secret\" : \"\\\"6fba8f2fc8a7e8f2cca5577eddd82ca7586b3b6b\\\"\",\n \"client_secret\" : \"\\\"1d4b2097ac622ba702d19de498f005747a8b21d3\\\"\",\n \"id\" : 37,\n \"events\" : [ \"label\", \"deployment\" ],\n \"slug\" : \"probot-owners\",\n \"node_id\" : \"MDExOkludGVncmF0aW9uMQ==\"\n },\n \"updated_at\" : \"2011-04-22T13:33:48Z\",\n \"comments_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347/comments\",\n \"active_lock_reason\" : \"too heated\",\n \"id\" : 1,\n \"repository_url\" : \"https://api.github.com/repos/octocat/Hello-World\",\n \"state\" : \"open\",\n \"locked\" : true,\n \"timeline_url\" : \"https://web.example.mocklab.io/940886\",\n \"pull_request\" : {\n \"patch_url\" : \"https://web.example.mocklab.io/983740\",\n \"html_url\" : \"https://web.example.mocklab.io/390331\",\n \"merged_at\" : \"2023-12-16T13:37:18.247Z\",\n \"diff_url\" : \"https://web.example.mocklab.io/400199\",\n \"url\" : \"https://web.example.mocklab.io/754210\"\n },\n \"closed_at\" : \"2023-07-14T12:18:48.247Z\",\n \"comments\" : 0,\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347\",\n \"labels\" : [ {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n }, {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n }, {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n }, {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n }, {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n } ],\n \"milestone\" : {\n \"creator\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Lino Jacobi I\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"5nk4o3xmumpdlb0420kj5q1lb3f7qt5q0km91vz3ybvx3tzjtjb2yvvmg\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"closed_at\" : \"2013-02-12T13:22:01Z\",\n \"created_at\" : \"2011-04-10T20:09:31Z\",\n \"description\" : \"Tracking milestone for version 1.0\",\n \"closed_issues\" : 8,\n \"title\" : \"v1.0\",\n \"due_on\" : \"2012-10-09T23:39:01Z\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones/1\",\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones/1/labels\",\n \"number\" : 42,\n \"updated_at\" : \"2014-03-03T18:58:10Z\",\n \"html_url\" : \"https://github.com/octocat/Hello-World/milestones/v1.0\",\n \"id\" : 1002604,\n \"state\" : \"open\",\n \"open_issues\" : 4,\n \"node_id\" : \"MDk6TWlsZXN0b25lMTAwMjYwNA==\"\n },\n \"events_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347/events\",\n \"html_url\" : \"https://github.com/octocat/Hello-World/issues/1347\",\n \"assignee\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Miss Anjelica Walker\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"sk7n6mn1pk4pnb3bfv0077f4g0lg7isqlrgppwug51jbihw1uos19icwoaoo9nkvjed675m59o3hdrsqpk4nvn8wxg36589xoks3zmnp0aukrr3agsz4u2w8jy3\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"user\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"deidra.morissette\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"oc196ko1tok9w0sy52bmx2c8qvj8s98xd18fa\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"node_id\" : \"MDU6SXNzdWUx\"\n },\n \"action\" : \"i81yfiwr4kbqa30eic\",\n \"comment\" : {\n \"issue_url\" : \"https://web.example.mocklab.io/839926\",\n \"body_html\" : \"bd6k48w363jo3ipvrhl1au86akwzcyjwi27efuynscl\",\n \"body_text\" : \"ozxrhs10qwgkgga8csvwo4nfrtxlgway34pb\",\n \"created_at\" : \"2011-04-14T16:00:49Z\",\n \"body\" : \"What version of Safari were you using when you observed this bug?\",\n \"url\" : \"https://api.github.com/repositories/42/issues/comments/1\",\n \"author_association\" : \"OWNER\",\n \"performed_via_github_app\" : {\n \"owner\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Elmer Tremblay\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"qy79dl5bsqsho08vhov6rpifs6dgrrr\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"installations_count\" : 5,\n \"created_at\" : \"2017-07-08T16:18:44-04:00\",\n \"description\" : \"The description of the app.\",\n \"client_id\" : \"\\\"Iv1.25b5d1e65ffc4022\\\"\",\n \"external_url\" : \"https://example.com\",\n \"updated_at\" : \"2017-07-08T16:18:44-04:00\",\n \"permissions\" : {\n \"deployments\" : \"write\",\n \"issues\" : \"read\"\n },\n \"html_url\" : \"https://github.com/apps/super-ci\",\n \"name\" : \"Probot Owners\",\n \"pem\" : \"\\\"-----BEGIN RSA PRIVATE KEY-----\\\\nMIIEogIBAAKCAQEArYxrNYD/iT5CZVpRJu4rBKmmze3PVmT/gCo2ATUvDvZTPTey\\\\nxcGJ3vvrJXazKk06pN05TN29o98jrYz4cengG3YGsXPNEpKsIrEl8NhbnxapEnM9\\\\nJCMRe0P5JcPsfZlX6hmiT7136GRWiGOUba2X9+HKh8QJVLG5rM007TBER9/z9mWm\\\\nrJuNh+m5l320oBQY/Qq3A7wzdEfZw8qm/mIN0FCeoXH1L6B8xXWaAYBwhTEh6SSn\\\\nZHlO1Xu1JWDmAvBCi0RO5aRSKM8q9QEkvvHP4yweAtK3N8+aAbZ7ovaDhyGz8r6r\\\\nzhU1b8Uo0Z2ysf503WqzQgIajr7Fry7/kUwpgQIDAQABAoIBADwJp80Ko1xHPZDy\\\\nfcCKBDfIuPvkmSW6KumbsLMaQv1aGdHDwwTGv3t0ixSay8CGlxMRtRDyZPib6SvQ\\\\n6OH/lpfpbMdW2ErkksgtoIKBVrDilfrcAvrNZu7NxRNbhCSvN8q0s4ICecjbbVQh\\\\nnueSdlA6vGXbW58BHMq68uRbHkP+k+mM9U0mDJ1HMch67wlg5GbayVRt63H7R2+r\\\\nVxcna7B80J/lCEjIYZznawgiTvp3MSanTglqAYi+m1EcSsP14bJIB9vgaxS79kTu\\\\noiSo93leJbBvuGo8QEiUqTwMw4tDksmkLsoqNKQ1q9P7LZ9DGcujtPy4EZsamSJT\\\\ny8OJt0ECgYEA2lxOxJsQk2kI325JgKFjo92mQeUObIvPfSNWUIZQDTjniOI6Gv63\\\\nGLWVFrZcvQBWjMEQraJA9xjPbblV8PtfO87MiJGLWCHFxmPz2dzoedN+2Coxom8m\\\\nV95CLz8QUShuao6u/RYcvUaZEoYs5bHcTmy5sBK80JyEmafJPtCQVxMCgYEAy3ar\\\\nZr3yv4xRPEPMat4rseswmuMooSaK3SKub19WFI5IAtB/e7qR1Rj9JhOGcZz+OQrl\\\\nT78O2OFYlgOIkJPvRMrPpK5V9lslc7tz1FSh3BZMRGq5jSyD7ETSOQ0c8T2O/s7v\\\\nbeEPbVbDe4mwvM24XByH0GnWveVxaDl51ABD65sCgYB3ZAspUkOA5egVCh8kNpnd\\\\nSd6SnuQBE3ySRlT2WEnCwP9Ph6oPgn+oAfiPX4xbRqkL8q/k0BdHQ4h+zNwhk7+h\\\\nWtPYRAP1Xxnc/F+jGjb+DVaIaKGU18MWPg7f+FI6nampl3Q0KvfxwX0GdNhtio8T\\\\nTj1E+SnFwh56SRQuxSh2gwKBgHKjlIO5NtNSflsUYFM+hyQiPiqnHzddfhSG+/3o\\\\nm5nNaSmczJesUYreH5San7/YEy2UxAugvP7aSY2MxB+iGsiJ9WD2kZzTUlDZJ7RV\\\\nUzWsoqBR+eZfVJ2FUWWvy8TpSG6trh4dFxImNtKejCR1TREpSiTV3Zb1dmahK9GV\\\\nrK9NAoGAbBxRLoC01xfxCTgt5BDiBcFVh4fp5yYKwavJPLzHSpuDOrrI9jDn1oKN\\\\nonq5sDU1i391zfQvdrbX4Ova48BN+B7p63FocP/MK5tyyBoT8zQEk2+vWDOw7H/Z\\\\nu5dTCPxTIsoIwUw1I+7yIxqJzLPFgR2gVBwY1ra/8iAqCj+zeBw=\\\\n-----END RSA PRIVATE KEY-----\\\\n\\\"\",\n \"webhook_secret\" : \"\\\"6fba8f2fc8a7e8f2cca5577eddd82ca7586b3b6b\\\"\",\n \"client_secret\" : \"\\\"1d4b2097ac622ba702d19de498f005747a8b21d3\\\"\",\n \"id\" : 37,\n \"events\" : [ \"label\", \"deployment\" ],\n \"slug\" : \"probot-owners\",\n \"node_id\" : \"MDExOkludGVncmF0aW9uMQ==\"\n },\n \"updated_at\" : \"2011-04-14T16:00:49Z\",\n \"html_url\" : \"https://web.example.mocklab.io/616184\",\n \"reactions\" : {\n \"confused\" : 3863894076602896785,\n \"-1\" : 6537399672025924976,\n \"+1\" : 1153010603223479205,\n \"total_count\" : 3310661676775484109,\n \"rocket\" : 271127636152059076,\n \"hooray\" : 622369069927319883,\n \"eyes\" : 3483596350700568359,\n \"heart\" : 4879299420244260505,\n \"laugh\" : 9136446385639875482,\n \"url\" : \"https://web.example.mocklab.io/211671\"\n },\n \"id\" : 42,\n \"user\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"drew.price\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"ghjktutxmefo9bbicboqr4vd2o4k79l36dhw64vqp7yu5y9595wkr1t93hqyqgs4mbsp5kfnyjfi77qths7ayc7jp9\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"node_id\" : \"8iyp\"\n }\n },\n \"repo\" : {\n \"name\" : \"Buster Botsford Jr.\",\n \"id\" : 4446557705050953724,\n \"url\" : \"https://web.example.mocklab.io/173521\"\n },\n \"created_at\" : \"2023-11-21T09:40:13.248Z\",\n \"id\" : \"7d2m\",\n \"type\" : \"aqyp0vzwayp7g9imal3c7uymiw343o1q35dz0isqn0rpbu17fxob4bgnakljyzgagr5gnpsf6nffq3k4mekqm10h2mf1mwtpzgm39ccnrq4l9e8uo17iiuo8tn1wlxwuy94diz3utdz6guojppxka87sfmzkuxaheqr2jy24h1trba0l1judzdamiwgv\"\n}, {\n \"actor\" : {\n \"display_login\" : \"oucaw56ka8fgguekf6f89udw2yespqyybsanqxu9laz9m736j7269o1t5y7j9nk2frbeuxg6a22he4b9pkuby7qfdvlf5m8pkzu2s0pv1c0ekfj9dolfhjocw0kg285blwv8i3ws1xtewy6u9zcrk126n9slzlgccaajudmx8j1tbp9orawj5986tytqdg08rlbk38et\",\n \"avatar_url\" : \"https://s3.amazonaws.com/uifaces/faces/twitter/peachananr/128.jpg\",\n \"id\" : 5031063456529514411,\n \"login\" : \"3d9nfml9a6j21ej8wxbixv3xvom56hlpnkvudt1nwu1rct20mhfn3hlcqtvb97t74v5pu43l0dbgc41h7mspc1oadwa5vfu4u0eb6pysvxgus7\",\n \"gravatar_id\" : \"qms7\",\n \"url\" : \"https://web.example.mocklab.io/824668\"\n },\n \"public\" : true,\n \"org\" : {\n \"display_login\" : \"b8d7hnuw324ixadndfd7k6uc7ktwghsmu42qe7k5qlescptq5f4qot1o36gf12v4h3tuaehxor2hoat80ub8awisnhz3w5aud05nvfma44x1s0rsv152ugs8o12b7yjeryju7r3pyw\",\n \"avatar_url\" : \"https://s3.amazonaws.com/uifaces/faces/twitter/stevedesigner/128.jpg\",\n \"id\" : 303931751545700355,\n \"login\" : \"vb2m4ljptnhkus4ef6p2bq20esuhbhh8wdxidf7icr9iwce\",\n \"gravatar_id\" : \"uwa1\",\n \"url\" : \"https://web.example.mocklab.io/142199\"\n },\n \"payload\" : {\n \"pages\" : [ {\n \"summary\" : \"Sit consequatur placeat. Voluptas ducimus ea aut. Voluptatem et sed quae fugiat. Ipsum quasi voluptas corrupti aut.\",\n \"html_url\" : \"https://web.example.mocklab.io/358548\",\n \"page_name\" : \"Cory Bashirian MD\",\n \"action\" : \"odtp8r17u3qr82zu7wubr2idpi0ok06yfqve2c8lpn8ey5816a2cuhrywht0\",\n \"title\" : \"Aut est consequatur.\",\n \"sha\" : \"b96q2gyzpt1\"\n }, {\n \"summary\" : \"Tempore officia soluta unde quia quo et deserunt. Veniam mollitia occaecati. Molestiae aut minima fuga est et et. A est maiores aut. Voluptatibus corporis distinctio cum.\",\n \"html_url\" : \"https://web.example.mocklab.io/838592\",\n \"page_name\" : \"Miss Gilbert Weimann\",\n \"action\" : \"f19emux66b207llt0reg6p7xps8vsrdakz69fcg9w3wjnoqbbt88zuhif194slj33ie8mhhcwiy6kbi3iczv24vlyvkvr7e87h1um9wkqxo3xzc9wvbfrsoi0r2lfydbvzot4ksg60qg\",\n \"title\" : \"Quas corporis consequuntur vel sit accusamus.\",\n \"sha\" : \"e3z8n3vxg5ssvv1a8064luwa1autkeb86735xx1j45wvpmm\"\n }, {\n \"summary\" : \"Omnis sit perferendis dolore voluptas accusamus dolorem. Suscipit molestias soluta sint. Ut recusandae repellendus quasi facere enim qui nemo. Mollitia ut tempore consequatur quidem.\",\n \"html_url\" : \"https://web.example.mocklab.io/869758\",\n \"page_name\" : \"Shantell Ebert\",\n \"action\" : \"dnge283m4ouiz3teh7botinljitwmj51nprseaybe7berz9az9quu0ooi56ffxwl6cbfhumkjq5sipb\",\n \"title\" : \"Magni aut deserunt et quae.\",\n \"sha\" : \"um696p300o7zizg8rz5sdw2cyptc7kh0iv9ey4zmtni1yxtt41ni04opfxv60c7w93zas75ifheptg1m7\"\n }, {\n \"summary\" : \"Voluptate tempora ipsum et nobis. Non a provident quaerat. Eius sit qui soluta. Quidem blanditiis magni et ullam rem aut.\",\n \"html_url\" : \"https://web.example.mocklab.io/629660\",\n \"page_name\" : \"Pamula Larson\",\n \"action\" : \"e81dmj61uh918xtqi0rm4z79rnu2bp9ekktwvqo3zwtxydlpsmotkngupu\",\n \"title\" : \"Ut itaque voluptas rerum omnis consequuntur.\",\n \"sha\" : \"pk19jent76ed371wy0dnbm85wl6ym2aiydn145mdc1981a2bvzebfsikmto07inrswcin\"\n }, {\n \"summary\" : \"Similique blanditiis voluptatem voluptatem corporis. Tenetur aspernatur molestiae sed tempora. Ut odit maiores dignissimos.\",\n \"html_url\" : \"https://web.example.mocklab.io/626307\",\n \"page_name\" : \"Mr. Lester Funk\",\n \"action\" : \"403rk0dp2by976ekgw11dpb1x0c8xxr5aumo6sc3nymik8zb56aj2oekv0qozunv3tnfbzc5w1qgph603zo17r7ecx9lnhen4p3qmxoved9ycl6hwgqppvbo1i5wcctuxggzrksoy5v885g2bt85jruxwluuehf3uwrs3qq86bkuy8gg766bmsfaa\",\n \"title\" : \"Nihil in adipisci sed autem.\",\n \"sha\" : \"8pn41cukl33ml73oxdk\"\n } ],\n \"issue\" : {\n \"body_html\" : \"ve33c0idf77tvpaizw23qz1m4utio\",\n \"body_text\" : \"v0q0udbx5hjnwndznqr4dlj0fobgz45bayp9g4ojc4eig36kbmdchihmcp8gx9yc76c543zytmdahnjv9f02bk\",\n \"assignees\" : [ {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Ms. Demetrius Ullrich\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"klku1vocy0tygf56g02ltut3nv4k48vxdoytqm48vbvdr6psz2o2\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n }, {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Eun Kulas\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"m0n1s1xw7rv0dbnfak1csvffppn9nsvbuk37xhol6\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n }, {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Felton Deckow\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"5qum4yfjdavp7cmi15z2y4qhi5v7azhvmzk1w98nww67jmm3aq72jjgz7ups3jhel5frr4stb9vx2po0zivslfay53y99mjddcoxp7ttdsrk5dxwseqzj2socl1v6hlqstazhqbzuhh\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n }, {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Louisa Donnelly\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"lglttg790k3ufo5ozceak\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n }, {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Denny Schultz\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"1sp06nlzi4sj1pa3iwgsmfzk38cznbtuv6l3b023gp8rpqrhdcqad0qq2edc5y8x39tcdx3wxasx44lp7x\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n }, {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Renda Schuppe\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"2huhdbl96m7pn1byeqa1s29acn92vytppeeyhjrwl867tefc319619r1cfy9080s07g1kny06jtcjdqlnisrf4tgfzg0zhvj0l1iagij0bgvh6v8s1b82g53l10t5nb4dz9rvignwxyh69mvgfosuk5qnnuto4eyi5n3no\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n } ],\n \"created_at\" : \"2011-04-22T13:33:48Z\",\n \"body\" : \"I'm having a problem with this.\",\n \"repository\" : {\n \"allow_forking\" : true,\n \"anonymous_access_enabled\" : true,\n \"is_template\" : true,\n \"stargazers_count\" : 80,\n \"pushed_at\" : \"2011-01-26T19:06:43Z\",\n \"language\" : \"ac97e0d35vic7slpcpsivw80a7dc3dr2qzecqgy3i94eg4kmwzvjchrhp22xu1w3wwllpomnrihb9h4bylvluhan5a9avlz1ysurfk11ceyxfw3g9vnfa8h7sc42rxcmrye51eb3lmu8e6y6oa3zrmejwfpyld\",\n \"subscription_url\" : \"http://api.github.com/repos/octocat/Hello-World/subscription\",\n \"branches_url\" : \"http://api.github.com/repos/octocat/Hello-World/branches{/branch}\",\n \"allow_rebase_merge\" : true,\n \"issue_comment_url\" : \"http://api.github.com/repos/octocat/Hello-World/issues/comments{/number}\",\n \"labels_url\" : \"http://api.github.com/repos/octocat/Hello-World/labels{/name}\",\n \"permissions\" : {\n \"pull\" : true,\n \"maintain\" : true,\n \"admin\" : false,\n \"triage\" : true,\n \"push\" : true\n },\n \"subscribers_url\" : \"http://api.github.com/repos/octocat/Hello-World/subscribers\",\n \"releases_url\" : \"http://api.github.com/repos/octocat/Hello-World/releases{/id}\",\n \"svn_url\" : \"https://svn.github.com/octocat/Hello-World\",\n \"subscribers_count\" : 1478931623140728882,\n \"id\" : 42,\n \"master_branch\" : \"f7at2wrdtd9awthynw45ql5gwng735b9qonzzopmizje693b7nbw570n40xs9j8iq8p\",\n \"forks\" : 4800963505777616724,\n \"allow_merge_commit\" : true,\n \"archive_url\" : \"http://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref}\",\n \"git_refs_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/refs{/sha}\",\n \"forks_url\" : \"http://api.github.com/repos/octocat/Hello-World/forks\",\n \"visibility\" : \"ntx8yikjtfyocjdkfwztklj\",\n \"statuses_url\" : \"http://api.github.com/repos/octocat/Hello-World/statuses/{sha}\",\n \"network_count\" : 6175476731867279219,\n \"ssh_url\" : \"git@github.com:octocat/Hello-World.git\",\n \"license\" : {\n \"html_url\" : \"https://web.example.mocklab.io/177020\",\n \"name\" : \"MIT License\",\n \"spdx_id\" : \"MIT\",\n \"key\" : \"mit\",\n \"url\" : \"https://api.github.com/licenses/mit\",\n \"node_id\" : \"MDc6TGljZW5zZW1pdA==\"\n },\n \"full_name\" : \"octocat/Hello-World\",\n \"size\" : 108,\n \"template_repository\" : {\n \"anonymous_access_enabled\" : false,\n \"is_template\" : false,\n \"stargazers_count\" : 5281149301319068148,\n \"pushed_at\" : \"cazbs5kpy9szfbj7gohc2arga91r7e\",\n \"language\" : \"k0ddi89kxthqk5np2znnqprye4688mvi2ud\",\n \"subscription_url\" : \"https://web.example.mocklab.io/069919\",\n \"branches_url\" : \"https://web.example.mocklab.io/284957\",\n \"allow_rebase_merge\" : true,\n \"issue_comment_url\" : \"https://web.example.mocklab.io/953809\",\n \"labels_url\" : \"https://web.example.mocklab.io/233483\",\n \"permissions\" : { },\n \"subscribers_url\" : \"https://web.example.mocklab.io/188063\",\n \"releases_url\" : \"https://web.example.mocklab.io/508547\",\n \"svn_url\" : \"https://web.example.mocklab.io/772340\",\n \"subscribers_count\" : 4922392743823852090,\n \"id\" : 6036633078207412389,\n \"allow_merge_commit\" : true,\n \"archive_url\" : \"https://web.example.mocklab.io/458726\",\n \"git_refs_url\" : \"https://web.example.mocklab.io/357364\",\n \"forks_url\" : \"https://web.example.mocklab.io/131890\",\n \"visibility\" : \"ir7du7bak5x65ddq3jyrfr9g0c5sb8qb86fdfrmboxi6kacmw1b1xc29zf41cgb30xiteqta6nw5vrs3lel23excb1apmjz1zgxrsopaw33le45ojh\",\n \"statuses_url\" : \"https://web.example.mocklab.io/596593\",\n \"network_count\" : 452831203576762258,\n \"ssh_url\" : \"https://web.example.mocklab.io/377325\",\n \"full_name\" : \"Rudolf Rutherford\",\n \"size\" : 5629355571967708422,\n \"languages_url\" : \"https://web.example.mocklab.io/567406\",\n \"clone_url\" : \"https://web.example.mocklab.io/742412\",\n \"collaborators_url\" : \"https://web.example.mocklab.io/958049\",\n \"html_url\" : \"https://web.example.mocklab.io/729318\",\n \"name\" : \"Rogelio Mante\",\n \"pulls_url\" : \"https://web.example.mocklab.io/635759\",\n \"default_branch\" : \"dyaiiz2j04hjar8jsnveony0tb8fv67hqhd59l0hm66pufnbkn32jvbbww46xg5ukbbzp3awodibmd3lqivogi3rkjesxqxt1rreg39orqhuoppstb703ope97sd1dqki7os4o8\",\n \"hooks_url\" : \"https://web.example.mocklab.io/677256\",\n \"trees_url\" : \"https://web.example.mocklab.io/264868\",\n \"tags_url\" : \"https://web.example.mocklab.io/627277\",\n \"contributors_url\" : \"https://web.example.mocklab.io/312796\",\n \"private\" : false,\n \"has_downloads\" : false,\n \"notifications_url\" : \"https://web.example.mocklab.io/345179\",\n \"open_issues_count\" : 24039378141263828,\n \"created_at\" : \"uocv325ah3qb8hvpei29igonylanmf2b1duyne52kem3p2xr994rvir8r3okavivcv1166gu8z7dlxw3p30cdrb\",\n \"description\" : \"Quidem voluptate ut nemo iste laboriosam. Nemo maiores et consequatur. Repudiandae distinctio expedita harum libero. Sed assumenda omnis.\",\n \"deployments_url\" : \"https://web.example.mocklab.io/795694\",\n \"keys_url\" : \"https://web.example.mocklab.io/563937\",\n \"has_projects\" : true,\n \"archived\" : false,\n \"has_wiki\" : false,\n \"updated_at\" : \"2023-03-04T06:52:59.252761Z\",\n \"comments_url\" : \"https://web.example.mocklab.io/086533\",\n \"stargazers_url\" : \"https://web.example.mocklab.io/615549\",\n \"disabled\" : false,\n \"delete_branch_on_merge\" : false,\n \"git_url\" : \"https://web.example.mocklab.io/021891\",\n \"has_pages\" : true,\n \"owner\" : { },\n \"allow_squash_merge\" : true,\n \"commits_url\" : \"https://web.example.mocklab.io/248349\",\n \"compare_url\" : \"https://web.example.mocklab.io/523153\",\n \"git_commits_url\" : \"https://web.example.mocklab.io/855079\",\n \"topics\" : [ \"rhif8i4m3k8pkvqgsmcwngf4ll404guwe1ubs0rzno0aqffg5f3odmqpafp9q4613txc83fq8qvq90ufhzn\", \"svrh4tpuylr2sxx8qlxcetll9c4vezlpa3zzvxzydky0jr2reu2uqyvfxw754\", \"1f73zkpzw8ycgv09n3lrcvp38u94zh1y23nvqro1p9dhfeveu67zro6fh587cvs11tggtbrs0s6xngfx915an6gnrh8x0e\", \"izepk3xv7z0te1d98wcl7uukogbz7gqfnngs65hoowzix43kgiik5m5ar4159zylorz0fgoxic0s37yh2vyptmkvhgitl2oy1l2sihtzdqe450ckrfhldt97zcv16m0j2g6h87yl5le9m32leymv\", \"1wi7qbihmfcwg4u57a\", \"e04y9jskzi1jyo5ybz7a27n5iidget7zvi4rhuacl6v1pq8k0qn74dj1y8uzd\", \"luosn8caq0dlg8npphyfn1ykgrnrfp8f0rshgg7c07jsnxmtwx5y7x0anspvpljtoveu4m1817p1d45z67grz1m9rz4pkh3hhwgr12h7hn6a\" ],\n \"blobs_url\" : \"https://web.example.mocklab.io/796857\",\n \"git_tags_url\" : \"https://web.example.mocklab.io/641384\",\n \"merges_url\" : \"https://web.example.mocklab.io/611800\",\n \"downloads_url\" : \"https://web.example.mocklab.io/784934\",\n \"has_issues\" : false,\n \"url\" : \"https://web.example.mocklab.io/189147\",\n \"contents_url\" : \"https://web.example.mocklab.io/958519\",\n \"mirror_url\" : \"https://web.example.mocklab.io/564259\",\n \"milestones_url\" : \"https://web.example.mocklab.io/314701\",\n \"teams_url\" : \"https://web.example.mocklab.io/811756\",\n \"fork\" : true,\n \"issues_url\" : \"https://web.example.mocklab.io/643634\",\n \"events_url\" : \"https://web.example.mocklab.io/776202\",\n \"issue_events_url\" : \"https://web.example.mocklab.io/394438\",\n \"assignees_url\" : \"https://web.example.mocklab.io/432309\",\n \"watchers_count\" : 7299049290369191490,\n \"forks_count\" : 5863302409471342702,\n \"homepage\" : \"bn9b0js4t1j0isl60yregjs4ihlxrgp63rex1tkggjk12jpgfqbrdjbngfwxdtrsj6nzanxwkduqja7cmitmkkrx9lhpew3ux0nd7g4wnuw5d6wtfzr0jailiy8fpxjsrllnn98103ps2ykcj4zf0qd4bh5pztkxutzh6tq72gn5d2zkfnspj6bts1ld\",\n \"node_id\" : \"1uu3\"\n },\n \"languages_url\" : \"http://api.github.com/repos/octocat/Hello-World/languages\",\n \"clone_url\" : \"https://github.com/octocat/Hello-World.git\",\n \"collaborators_url\" : \"http://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator}\",\n \"html_url\" : \"https://github.com/octocat/Hello-World\",\n \"name\" : \"Team Environment\",\n \"pulls_url\" : \"http://api.github.com/repos/octocat/Hello-World/pulls{/number}\",\n \"default_branch\" : \"master\",\n \"hooks_url\" : \"http://api.github.com/repos/octocat/Hello-World/hooks\",\n \"trees_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/trees{/sha}\",\n \"tags_url\" : \"http://api.github.com/repos/octocat/Hello-World/tags\",\n \"contributors_url\" : \"http://api.github.com/repos/octocat/Hello-World/contributors\",\n \"private\" : false,\n \"has_downloads\" : true,\n \"notifications_url\" : \"http://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating}\",\n \"open_issues_count\" : 0,\n \"created_at\" : \"2011-01-26T19:01:12Z\",\n \"description\" : \"This your first repo!\",\n \"watchers\" : 8834608477093754961,\n \"deployments_url\" : \"http://api.github.com/repos/octocat/Hello-World/deployments\",\n \"keys_url\" : \"http://api.github.com/repos/octocat/Hello-World/keys{/key_id}\",\n \"has_projects\" : true,\n \"archived\" : true,\n \"has_wiki\" : true,\n \"updated_at\" : \"2011-01-26T19:14:43Z\",\n \"comments_url\" : \"http://api.github.com/repos/octocat/Hello-World/comments{/number}\",\n \"stargazers_url\" : \"http://api.github.com/repos/octocat/Hello-World/stargazers\",\n \"disabled\" : false,\n \"delete_branch_on_merge\" : false,\n \"git_url\" : \"git:github.com/octocat/Hello-World.git\",\n \"has_pages\" : true,\n \"owner\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Jenae Strosin MD\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"n8gsy1yn54mzpxreyuzmxp7vj4zigvwtf51exsw5ur1krmxauhxtx4fq13axjyel8ijezkjvhmibh4mse8hvh32yng1p4e7ls9uuuaj8zyp1p5p62gj7glp9yexxpah30368s5gokp90hdnl8x9jcu2xyvrlomn33t2bvhjtr08tfn3gf0hzs67mu1a94q\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"allow_squash_merge\" : true,\n \"commits_url\" : \"http://api.github.com/repos/octocat/Hello-World/commits{/sha}\",\n \"compare_url\" : \"http://api.github.com/repos/octocat/Hello-World/compare/{base}...{head}\",\n \"git_commits_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/commits{/sha}\",\n \"topics\" : [ \"8aavzfkusr7q018gaoieqzuuxba6dtck\", \"2rm2hlp7t2clcxvw9s0565esp\", \"ri4fkgr8v4nqtwlxckvlin85xas0eehe81vlfzvbffjp3x2e2ovvmo3zgy1i3dqgs6fn8wvaapd8stu9xjf6wrw0o0xb5n28b57shdpisexkns2lkbhqdqhvpmtnmi4ks3sdvsn5q3ug34fyo8ak5aoosm\" ],\n \"blobs_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/blobs{/sha}\",\n \"git_tags_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/tags{/sha}\",\n \"merges_url\" : \"http://api.github.com/repos/octocat/Hello-World/merges\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:42Z\\\"\",\n \"downloads_url\" : \"http://api.github.com/repos/octocat/Hello-World/downloads\",\n \"has_issues\" : true,\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World\",\n \"contents_url\" : \"http://api.github.com/repos/octocat/Hello-World/contents/{+path}\",\n \"mirror_url\" : \"git:git.example.com/octocat/Hello-World\",\n \"milestones_url\" : \"http://api.github.com/repos/octocat/Hello-World/milestones{/number}\",\n \"teams_url\" : \"http://api.github.com/repos/octocat/Hello-World/teams\",\n \"fork\" : true,\n \"issues_url\" : \"http://api.github.com/repos/octocat/Hello-World/issues{/number}\",\n \"events_url\" : \"http://api.github.com/repos/octocat/Hello-World/events\",\n \"issue_events_url\" : \"http://api.github.com/repos/octocat/Hello-World/issues/events{/number}\",\n \"organization\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Mr. Domenic Jones\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"sikhj9ipha93nppkiwsqa0z8149k26nh0p8wnhxxlzkep0fvduwyuq\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"assignees_url\" : \"http://api.github.com/repos/octocat/Hello-World/assignees{/user}\",\n \"open_issues\" : 3909128998342539303,\n \"watchers_count\" : 80,\n \"forks_count\" : 9,\n \"homepage\" : \"https://github.com\",\n \"node_id\" : \"MDEwOlJlcG9zaXRvcnkxMjk2MjY5\"\n },\n \"title\" : \"Found a bug\",\n \"author_association\" : \"OWNER\",\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347/labels{/name}\",\n \"number\" : 1347,\n \"performed_via_github_app\" : {\n \"owner\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Alonzo O'Keefe III\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"rjzwj2hqqxievkmx0hxatio6gvlmcgli65k6cm2ynnp749e1ied8fydg37g5o\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"installations_count\" : 5,\n \"created_at\" : \"2017-07-08T16:18:44-04:00\",\n \"description\" : \"The description of the app.\",\n \"client_id\" : \"\\\"Iv1.25b5d1e65ffc4022\\\"\",\n \"external_url\" : \"https://example.com\",\n \"updated_at\" : \"2017-07-08T16:18:44-04:00\",\n \"permissions\" : {\n \"deployments\" : \"write\",\n \"issues\" : \"read\"\n },\n \"html_url\" : \"https://github.com/apps/super-ci\",\n \"name\" : \"Probot Owners\",\n \"pem\" : \"\\\"-----BEGIN RSA PRIVATE KEY-----\\\\nMIIEogIBAAKCAQEArYxrNYD/iT5CZVpRJu4rBKmmze3PVmT/gCo2ATUvDvZTPTey\\\\nxcGJ3vvrJXazKk06pN05TN29o98jrYz4cengG3YGsXPNEpKsIrEl8NhbnxapEnM9\\\\nJCMRe0P5JcPsfZlX6hmiT7136GRWiGOUba2X9+HKh8QJVLG5rM007TBER9/z9mWm\\\\nrJuNh+m5l320oBQY/Qq3A7wzdEfZw8qm/mIN0FCeoXH1L6B8xXWaAYBwhTEh6SSn\\\\nZHlO1Xu1JWDmAvBCi0RO5aRSKM8q9QEkvvHP4yweAtK3N8+aAbZ7ovaDhyGz8r6r\\\\nzhU1b8Uo0Z2ysf503WqzQgIajr7Fry7/kUwpgQIDAQABAoIBADwJp80Ko1xHPZDy\\\\nfcCKBDfIuPvkmSW6KumbsLMaQv1aGdHDwwTGv3t0ixSay8CGlxMRtRDyZPib6SvQ\\\\n6OH/lpfpbMdW2ErkksgtoIKBVrDilfrcAvrNZu7NxRNbhCSvN8q0s4ICecjbbVQh\\\\nnueSdlA6vGXbW58BHMq68uRbHkP+k+mM9U0mDJ1HMch67wlg5GbayVRt63H7R2+r\\\\nVxcna7B80J/lCEjIYZznawgiTvp3MSanTglqAYi+m1EcSsP14bJIB9vgaxS79kTu\\\\noiSo93leJbBvuGo8QEiUqTwMw4tDksmkLsoqNKQ1q9P7LZ9DGcujtPy4EZsamSJT\\\\ny8OJt0ECgYEA2lxOxJsQk2kI325JgKFjo92mQeUObIvPfSNWUIZQDTjniOI6Gv63\\\\nGLWVFrZcvQBWjMEQraJA9xjPbblV8PtfO87MiJGLWCHFxmPz2dzoedN+2Coxom8m\\\\nV95CLz8QUShuao6u/RYcvUaZEoYs5bHcTmy5sBK80JyEmafJPtCQVxMCgYEAy3ar\\\\nZr3yv4xRPEPMat4rseswmuMooSaK3SKub19WFI5IAtB/e7qR1Rj9JhOGcZz+OQrl\\\\nT78O2OFYlgOIkJPvRMrPpK5V9lslc7tz1FSh3BZMRGq5jSyD7ETSOQ0c8T2O/s7v\\\\nbeEPbVbDe4mwvM24XByH0GnWveVxaDl51ABD65sCgYB3ZAspUkOA5egVCh8kNpnd\\\\nSd6SnuQBE3ySRlT2WEnCwP9Ph6oPgn+oAfiPX4xbRqkL8q/k0BdHQ4h+zNwhk7+h\\\\nWtPYRAP1Xxnc/F+jGjb+DVaIaKGU18MWPg7f+FI6nampl3Q0KvfxwX0GdNhtio8T\\\\nTj1E+SnFwh56SRQuxSh2gwKBgHKjlIO5NtNSflsUYFM+hyQiPiqnHzddfhSG+/3o\\\\nm5nNaSmczJesUYreH5San7/YEy2UxAugvP7aSY2MxB+iGsiJ9WD2kZzTUlDZJ7RV\\\\nUzWsoqBR+eZfVJ2FUWWvy8TpSG6trh4dFxImNtKejCR1TREpSiTV3Zb1dmahK9GV\\\\nrK9NAoGAbBxRLoC01xfxCTgt5BDiBcFVh4fp5yYKwavJPLzHSpuDOrrI9jDn1oKN\\\\nonq5sDU1i391zfQvdrbX4Ova48BN+B7p63FocP/MK5tyyBoT8zQEk2+vWDOw7H/Z\\\\nu5dTCPxTIsoIwUw1I+7yIxqJzLPFgR2gVBwY1ra/8iAqCj+zeBw=\\\\n-----END RSA PRIVATE KEY-----\\\\n\\\"\",\n \"webhook_secret\" : \"\\\"6fba8f2fc8a7e8f2cca5577eddd82ca7586b3b6b\\\"\",\n \"client_secret\" : \"\\\"1d4b2097ac622ba702d19de498f005747a8b21d3\\\"\",\n \"id\" : 37,\n \"events\" : [ \"label\", \"deployment\" ],\n \"slug\" : \"probot-owners\",\n \"node_id\" : \"MDExOkludGVncmF0aW9uMQ==\"\n },\n \"updated_at\" : \"2011-04-22T13:33:48Z\",\n \"comments_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347/comments\",\n \"active_lock_reason\" : \"too heated\",\n \"id\" : 1,\n \"repository_url\" : \"https://api.github.com/repos/octocat/Hello-World\",\n \"state\" : \"open\",\n \"locked\" : true,\n \"timeline_url\" : \"https://web.example.mocklab.io/196310\",\n \"pull_request\" : {\n \"patch_url\" : \"https://web.example.mocklab.io/297305\",\n \"html_url\" : \"https://web.example.mocklab.io/649038\",\n \"merged_at\" : \"2023-10-27T07:46:29.254Z\",\n \"diff_url\" : \"https://web.example.mocklab.io/350429\",\n \"url\" : \"https://web.example.mocklab.io/220430\"\n },\n \"closed_at\" : \"2023-03-17T10:10:57.255Z\",\n \"comments\" : 0,\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347\",\n \"labels\" : [ {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n } ],\n \"milestone\" : {\n \"creator\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Napoleon Fadel\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"kh9ltcxj34zjcostgcx5tz3ottduiovruzq\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"closed_at\" : \"2013-02-12T13:22:01Z\",\n \"created_at\" : \"2011-04-10T20:09:31Z\",\n \"description\" : \"Tracking milestone for version 1.0\",\n \"closed_issues\" : 8,\n \"title\" : \"v1.0\",\n \"due_on\" : \"2012-10-09T23:39:01Z\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones/1\",\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones/1/labels\",\n \"number\" : 42,\n \"updated_at\" : \"2014-03-03T18:58:10Z\",\n \"html_url\" : \"https://github.com/octocat/Hello-World/milestones/v1.0\",\n \"id\" : 1002604,\n \"state\" : \"open\",\n \"open_issues\" : 4,\n \"node_id\" : \"MDk6TWlsZXN0b25lMTAwMjYwNA==\"\n },\n \"events_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347/events\",\n \"html_url\" : \"https://github.com/octocat/Hello-World/issues/1347\",\n \"assignee\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Azucena Torp\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"o8lqsolvkbpvmlzs\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"user\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"lincoln.padberg\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"omofpn9vdjni4md3a8afqi7iqgxn4ggu8tpfzze3wxbahdoo50uxtkgp2i0m6hufmbpd4ts11dtd0eyyfn44euxkattiaouym1p62ch3lfrckb30tqv39sixuwdkuvqs21h1rtsr7kqb4ague7gj2l4u\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"node_id\" : \"MDU6SXNzdWUx\"\n },\n \"action\" : \"cehpfujddmsff9k94j0b0rikhq1qrinn45kt9679i44717xyusqcdfzl24o9l71sxxxfm0y4r3jzcs8ctjjcw4ctscou5dz0mg0zqda9cewempjg4009jehv0ggc35jto0w1pl1ao7holtxpf2xubkzwpaebre8c27e5gea44k49nky8g3x302o8070n51vg2\",\n \"comment\" : {\n \"issue_url\" : \"https://web.example.mocklab.io/048885\",\n \"body_html\" : \"9nzhe6vjbuuv3p6r6sn01my0vxybrev5dtun7ffvw1ctwmgkvlkr0wda61ltifof895ro3zwimy853xkxsh61jycjgu5fisa7dm7mvqv80ryst0jpinrzk094rxvsza6tae2ru\",\n \"body_text\" : \"evz48k9iby8ltxpw\",\n \"created_at\" : \"2011-04-14T16:00:49Z\",\n \"body\" : \"What version of Safari were you using when you observed this bug?\",\n \"url\" : \"https://api.github.com/repositories/42/issues/comments/1\",\n \"author_association\" : \"OWNER\",\n \"performed_via_github_app\" : {\n \"owner\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Catarina Stanton\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"6etazrg65hykk0ov9uevzp5r89mbfptt974njh9s2m6ayb3zpyno448ww463mjvs8kgoh28k14d5mhoofpnqqcb6i2t38bpcr2pxm1wo0ci67nllnquf7c61vc959h8u5bv7gzi78c1kttj95pkzrx443ckw1c4u\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"installations_count\" : 5,\n \"created_at\" : \"2017-07-08T16:18:44-04:00\",\n \"description\" : \"The description of the app.\",\n \"client_id\" : \"\\\"Iv1.25b5d1e65ffc4022\\\"\",\n \"external_url\" : \"https://example.com\",\n \"updated_at\" : \"2017-07-08T16:18:44-04:00\",\n \"permissions\" : {\n \"deployments\" : \"write\",\n \"issues\" : \"read\"\n },\n \"html_url\" : \"https://github.com/apps/super-ci\",\n \"name\" : \"Probot Owners\",\n \"pem\" : \"\\\"-----BEGIN RSA PRIVATE KEY-----\\\\nMIIEogIBAAKCAQEArYxrNYD/iT5CZVpRJu4rBKmmze3PVmT/gCo2ATUvDvZTPTey\\\\nxcGJ3vvrJXazKk06pN05TN29o98jrYz4cengG3YGsXPNEpKsIrEl8NhbnxapEnM9\\\\nJCMRe0P5JcPsfZlX6hmiT7136GRWiGOUba2X9+HKh8QJVLG5rM007TBER9/z9mWm\\\\nrJuNh+m5l320oBQY/Qq3A7wzdEfZw8qm/mIN0FCeoXH1L6B8xXWaAYBwhTEh6SSn\\\\nZHlO1Xu1JWDmAvBCi0RO5aRSKM8q9QEkvvHP4yweAtK3N8+aAbZ7ovaDhyGz8r6r\\\\nzhU1b8Uo0Z2ysf503WqzQgIajr7Fry7/kUwpgQIDAQABAoIBADwJp80Ko1xHPZDy\\\\nfcCKBDfIuPvkmSW6KumbsLMaQv1aGdHDwwTGv3t0ixSay8CGlxMRtRDyZPib6SvQ\\\\n6OH/lpfpbMdW2ErkksgtoIKBVrDilfrcAvrNZu7NxRNbhCSvN8q0s4ICecjbbVQh\\\\nnueSdlA6vGXbW58BHMq68uRbHkP+k+mM9U0mDJ1HMch67wlg5GbayVRt63H7R2+r\\\\nVxcna7B80J/lCEjIYZznawgiTvp3MSanTglqAYi+m1EcSsP14bJIB9vgaxS79kTu\\\\noiSo93leJbBvuGo8QEiUqTwMw4tDksmkLsoqNKQ1q9P7LZ9DGcujtPy4EZsamSJT\\\\ny8OJt0ECgYEA2lxOxJsQk2kI325JgKFjo92mQeUObIvPfSNWUIZQDTjniOI6Gv63\\\\nGLWVFrZcvQBWjMEQraJA9xjPbblV8PtfO87MiJGLWCHFxmPz2dzoedN+2Coxom8m\\\\nV95CLz8QUShuao6u/RYcvUaZEoYs5bHcTmy5sBK80JyEmafJPtCQVxMCgYEAy3ar\\\\nZr3yv4xRPEPMat4rseswmuMooSaK3SKub19WFI5IAtB/e7qR1Rj9JhOGcZz+OQrl\\\\nT78O2OFYlgOIkJPvRMrPpK5V9lslc7tz1FSh3BZMRGq5jSyD7ETSOQ0c8T2O/s7v\\\\nbeEPbVbDe4mwvM24XByH0GnWveVxaDl51ABD65sCgYB3ZAspUkOA5egVCh8kNpnd\\\\nSd6SnuQBE3ySRlT2WEnCwP9Ph6oPgn+oAfiPX4xbRqkL8q/k0BdHQ4h+zNwhk7+h\\\\nWtPYRAP1Xxnc/F+jGjb+DVaIaKGU18MWPg7f+FI6nampl3Q0KvfxwX0GdNhtio8T\\\\nTj1E+SnFwh56SRQuxSh2gwKBgHKjlIO5NtNSflsUYFM+hyQiPiqnHzddfhSG+/3o\\\\nm5nNaSmczJesUYreH5San7/YEy2UxAugvP7aSY2MxB+iGsiJ9WD2kZzTUlDZJ7RV\\\\nUzWsoqBR+eZfVJ2FUWWvy8TpSG6trh4dFxImNtKejCR1TREpSiTV3Zb1dmahK9GV\\\\nrK9NAoGAbBxRLoC01xfxCTgt5BDiBcFVh4fp5yYKwavJPLzHSpuDOrrI9jDn1oKN\\\\nonq5sDU1i391zfQvdrbX4Ova48BN+B7p63FocP/MK5tyyBoT8zQEk2+vWDOw7H/Z\\\\nu5dTCPxTIsoIwUw1I+7yIxqJzLPFgR2gVBwY1ra/8iAqCj+zeBw=\\\\n-----END RSA PRIVATE KEY-----\\\\n\\\"\",\n \"webhook_secret\" : \"\\\"6fba8f2fc8a7e8f2cca5577eddd82ca7586b3b6b\\\"\",\n \"client_secret\" : \"\\\"1d4b2097ac622ba702d19de498f005747a8b21d3\\\"\",\n \"id\" : 37,\n \"events\" : [ \"label\", \"deployment\" ],\n \"slug\" : \"probot-owners\",\n \"node_id\" : \"MDExOkludGVncmF0aW9uMQ==\"\n },\n \"updated_at\" : \"2011-04-14T16:00:49Z\",\n \"html_url\" : \"https://web.example.mocklab.io/187394\",\n \"reactions\" : {\n \"confused\" : 8699938728385031876,\n \"-1\" : 4534090003804046128,\n \"+1\" : 1702075840221761975,\n \"total_count\" : 4833294858737094416,\n \"rocket\" : 6793891566411387082,\n \"hooray\" : 8435790678141522279,\n \"eyes\" : 4649004130263585307,\n \"heart\" : 4050557758886546213,\n \"laugh\" : 3405806621874470866,\n \"url\" : \"https://web.example.mocklab.io/535039\"\n },\n \"id\" : 42,\n \"user\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"luetta.becker\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"d5plixx53f34fingip9pvysktl3w6mjguks8c1t3bkrao9uzbdepa6gs11dth7uxcecrd\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"node_id\" : \"n6c4\"\n }\n },\n \"repo\" : {\n \"name\" : \"Sidney Murphy\",\n \"id\" : 2129521717917791705,\n \"url\" : \"https://web.example.mocklab.io/299841\"\n },\n \"created_at\" : \"2023-06-14T09:29:32.256Z\",\n \"id\" : \"w7p2\",\n \"type\" : \"8zig8w6t1rn3d639yt3o6bgtw9qyz49zbe5xgsfzb7md8x4m6bolje2cka72tsj0dvubs660aujkwqsnv1qxifcgud1d43bq675t7k0cwp3tpkd02goj6zbqmh1pzi\"\n}, {\n \"actor\" : {\n \"display_login\" : \"ppufsgu1g4ns9textqtxml1sxxuxkf32fdyz32xlo2a5lbv48m2pv188t2nd2om0a9pgzdtqm2dtj94s1tn1vzklyy0pplugyftf4bkeuo2fzg9awio8vys1273ybngff23jf8ie7hv\",\n \"avatar_url\" : \"https://s3.amazonaws.com/uifaces/faces/twitter/craigrcoles/128.jpg\",\n \"id\" : 4143848732634559651,\n \"login\" : \"6m0ajr8uf92cc3b26ndp8gh3vfvvz0cnz34s418rmwqx3gdlwmop9vnq10pi0gp1ic8s6col7on769izd6tt4f9hrgmp0kzrv8chkvydctt0w4n3yftoeakf7fa8ojg2i4w3yfvuf\",\n \"gravatar_id\" : \"offa\",\n \"url\" : \"https://web.example.mocklab.io/933916\"\n },\n \"public\" : true,\n \"org\" : {\n \"display_login\" : \"aehqhf0exkjheaz61ytp60l9zq2dc7g1jzuyzp1pkg2cfze6kgw6hwpcetl0e5zcd21dlk6d7jk876asj2tvxy3ux5xp26k2tcbpgbhddq7iymqs6oelxry6enj6ma0lcolpmqhntvakhgje8u5n6vmyvlgacf73s2p2yr05c0di34h6atc1\",\n \"avatar_url\" : \"https://s3.amazonaws.com/uifaces/faces/twitter/robturlinckx/128.jpg\",\n \"id\" : 8629464302777641690,\n \"login\" : \"k7qwkb4mgvnrkczcicx5m67qqxbd6edg6e\",\n \"gravatar_id\" : \"6wvu\",\n \"url\" : \"https://web.example.mocklab.io/057368\"\n },\n \"payload\" : {\n \"pages\" : [ {\n \"summary\" : \"Minus reiciendis optio. Provident et commodi. Minus iusto dolor. Iusto dolor inventore. Sunt odio nemo aut accusantium expedita odio.\",\n \"html_url\" : \"https://web.example.mocklab.io/772094\",\n \"page_name\" : \"Shari Jast\",\n \"action\" : \"1cxd0qr60qyvf612nqu30jn4w1427nn5c5h8x2tq7git5ialrg594i9vdfbqhtcmli4fh1jpp0u07mw\",\n \"title\" : \"Laudantium quae autem omnis corporis eaque.\",\n \"sha\" : \"8fetmhqf744zeh\"\n }, {\n \"summary\" : \"Tempora eligendi ea. Occaecati sequi deleniti et quis ex numquam ut. Deleniti est eligendi occaecati non. Quae ipsa natus molestiae tempore voluptas sunt. Amet maxime voluptatem beatae adipisci ea.\",\n \"html_url\" : \"https://web.example.mocklab.io/147271\",\n \"page_name\" : \"Mrs. Rigoberto Kemmer\",\n \"action\" : \"o3hyx3uz338dr4u27ab6lea68w2ovqczekjc6sqgxocukwl5fy1rfws52rlojqshsjutiojwcjg2tzykkt0x1mw7v46awonnpool82wb0tuqopw03tqs8xfl\",\n \"title\" : \"Quas aut voluptas culpa voluptatem velit corporis dolorem.\",\n \"sha\" : \"r7bruynv4kpkf2z0a5x7h22o7qm6lzsh7lso5sueg034n8gu5rd24qqo8g6173h9ptcrl19rn1ckoi7hsu9iub6cr86dk53n6wu8aupv9ehez073v3e6f9clauwbmtsbx2b0v3jqfepw37qliknvyt5e6\"\n }, {\n \"summary\" : \"Est sequi ipsum. Provident qui autem fugiat incidunt commodi. Ullam eos sapiente qui.\",\n \"html_url\" : \"https://web.example.mocklab.io/459287\",\n \"page_name\" : \"Latia Pacocha\",\n \"action\" : \"puqp056sigs9ear4h5ky9mplk1w8v2n\",\n \"title\" : \"Aut est ex eos vel est totam repudiandae.\",\n \"sha\" : \"tkba1rgkpzmb4a6dhsaru1usgqo3ghoymochdclmbki375mv0iemg98769qby3iogkku9xkuq6np19kr66idy0heof2hqxpcv9yobrk5ftbnresz68jjq6w5x0knfg3oahboc\"\n }, {\n \"summary\" : \"Fugit consequatur vel similique laboriosam dignissimos laborum dolores. Qui nam repellendus. Quae sint rerum beatae magnam exercitationem ipsam odio. Aut sit explicabo necessitatibus eos vero est dolo\",\n \"html_url\" : \"https://web.example.mocklab.io/564934\",\n \"page_name\" : \"Demetrius Hermiston\",\n \"action\" : \"1188s6uvyuejn7sdil0l9dsub38rzi2tjg2dj05ekntwi9wsq5rsku571pjmlp7y\",\n \"title\" : \"Sapiente nam impedit.\",\n \"sha\" : \"wui9k0h8x7d3fd0jjf908lmxxm0j448hoqrbs6cpzudwher1wt8x9qo01yc9znqbgrlrivefrwxbmlenoi7h0p6p6mlbytqvhte4d0e4tz0xosc3jr6s3ll0uinph633\"\n }, {\n \"summary\" : \"A aut doloremque omnis omnis. Quia eos est asperiores in laudantium earum. Adipisci ut blanditiis distinctio vitae et.\",\n \"html_url\" : \"https://web.example.mocklab.io/516662\",\n \"page_name\" : \"Dorsey Johnston\",\n \"action\" : \"xhoojelcp5o5jf26gwaze72kqeuqqq58hz0z1cnvgjf2xcmunxiowe1z0yfotey0b1ynhadwumudjeur6t43o2yg82u5ihnyonxfo27dgvuqsbcktjotgw66xh03d26\",\n \"title\" : \"Odit reiciendis eum rerum.\",\n \"sha\" : \"puueyxsufiqqcfa37b70fqffpza7s01t7wsq\"\n }, {\n \"summary\" : \"Illum nulla modi explicabo. Ab hic doloribus blanditiis tempora illo quod alias. Eveniet et aliquam. Sed omnis nemo dignissimos placeat rerum rem repellendus. Et qui ducimus sit corporis eius vel.\",\n \"html_url\" : \"https://web.example.mocklab.io/397706\",\n \"page_name\" : \"Niesha O'Conner\",\n \"action\" : \"i759hlvm7om7aklarbgro99bcrvlairfjioiommnlmw2pfo5qljf4zm76k37geuu57xmyl280zoxjecp3ibb89l5z21gs000zmcc63ysc2k8t8h2j3i5lrfdesbytj28lipasz7\",\n \"title\" : \"Reiciendis autem magni quia aperiam non nostrum ipsum.\",\n \"sha\" : \"pz7er8mhql511a3u7bskakqpwz\"\n }, {\n \"summary\" : \"Natus vel cumque suscipit animi accusamus. Illo quia excepturi et quisquam ut perferendis modi. Sit porro modi. Eos deleniti distinctio sint veritatis illo. Nobis quibusdam harum qui.\",\n \"html_url\" : \"https://web.example.mocklab.io/715992\",\n \"page_name\" : \"Jeanna Kuvalis DVM\",\n \"action\" : \"m3v3t8ctd63dbqkuddpzrs7w7gwfq8wvj2lo6kpzj9ib2z8lzunswb9uqwk4hxtd8zobcwseq7r1zjna4sdi7pavxlkckpznlrl9qyhiylbz9hxmb\",\n \"title\" : \"Nemo beatae recusandae totam doloremque eos in.\",\n \"sha\" : \"pzwjbb1oubcfnu61vhhd9wycd8tqibl33oqqi8hdhe65tc9i5qfftpt96sj1xb3kfqtafwjbci6rr68eptlwphwdc82tynjzy3i58ikmyip7xrmrdmyx\"\n }, {\n \"summary\" : \"Qui beatae architecto soluta perferendis nihil incidunt. Sit deserunt ratione. Amet cumque incidunt amet. Voluptas quod sunt iusto perferendis. Voluptas voluptatibus nobis.\",\n \"html_url\" : \"https://web.example.mocklab.io/563361\",\n \"page_name\" : \"Cathern Ward\",\n \"action\" : \"7cwl2383eerhwv39s30e1efyljxjqlf982ob30bc2da5mewd59vwievwl94x8xy06h61tk1rb7pmpcyzvq\",\n \"title\" : \"Deleniti quis eius cum quaerat tempora.\",\n \"sha\" : \"48vq9cu4c29c57lf9vvnwra5myi87tcc9zoy3eitjoeic2w9z7nbkmxo2hwmzesx102bbbdkg9furhymuqmntmskst12h1ioxf3ixzyuxm5lc1oz0j6i9j4p985i0pp0plsvpehuqewzl8drejp9mdw907cz385x06pe70jglu0o97q37xd8j84iu8aop5j87l5\"\n } ],\n \"issue\" : {\n \"body_html\" : \"5xxx00x922fipk124v31fwoat8kcvdi7hbamz2oseqtmlyqgb1r0asoeemw3hhbzzr21bnj9lvaamgxjiwzwwlsypms76f1lsy064gflr4ropyltxpcg5jebwoi18na1nk9ex55gdoj65tkb4ih983v0k8dg42b\",\n \"body_text\" : \"1lvzqs0ss4h11f892m2me2a8pc9dmammyfo6ufmjz0za65rh8wq9s40vdih3y1szvgzeieuc0xdnbxc4txak3hyjbfzacvpd5mpg9uif2ffxvbrqdl3e2tiiy3eawur83fubeeg4hnx70r8f2uxz3jqu3v36yj80xmd8ncfny8azk4ng7e34g55\",\n \"assignees\" : [ {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Lorri Schiller\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"2z9gkom2jljqffykcbmfotd8bn9s6cylzzzmwulm1gtacnk7s05st4cyfzj1t823rdsf1bwksia16\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n }, {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Brandon Schroeder\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"1nu0beh7jquyuyii724k4el4s6is5fnvgkpysfnmofvohwknvlzinb32k6ui01f4a7yx2tng\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n }, {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Dawne Batz\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"g6l5pc9flg7ahcdhu6awt33cu26tlqmjmfisu5btwqqci3fvtr7g3xaw6j917o08megl6whs5gbg19sdytvm86hqe7kmtupsjwiq7lhh1ypaj9zon8esiz31z87aokavhxa5qenfb0pqpb4400z8on1ikjdf9vs8xx6t3u9ow17sdwcwwtfkte1ca\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n }, {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Ms. Song Ryan\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"nqj0a31am6nrk3wpod5xonicbj6vcw74e\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n }, {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Olivia Mitchell\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"8fhnzjrenxkeemipy227onrlf8r0zh311gt4jyb3e81rauwvy53ez1gscqgcq8bwyfkqkp939yr0pi88v5ppohcqrm5yeq1kednesqxdl0ajoq4wrqqv4m9ltj4woek15dlo2j0tqqm15e0so7w10f38a6xe2zts5scweblsnr7hm63amw4vpm\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n }, {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Lyle Veum Jr.\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"wo7lr2uyxvgds54zaecb42s2o80d3xwvm9moppe1olxto4ry4iai93cp0tqch4p7hqe49sc4ialwm36dxaxc5helwbi7j1jegcstmr1f6tddqj8xks32wxnw0wyf2gq0lws8walu7qvk83yena2nrjys7yfv53b5mx68ssf5ul\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n }, {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Leatrice Sauer\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"kdpd8usepwig7sm29eheq3yfuo0ru6fhnz1z3xwzz2ss44z8pjp479y0cizmv1k1gfdrgzswfq\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n }, {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Michale Stamm Sr.\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"7nl55u892\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n } ],\n \"created_at\" : \"2011-04-22T13:33:48Z\",\n \"body\" : \"I'm having a problem with this.\",\n \"repository\" : {\n \"allow_forking\" : false,\n \"anonymous_access_enabled\" : true,\n \"is_template\" : true,\n \"stargazers_count\" : 80,\n \"pushed_at\" : \"2011-01-26T19:06:43Z\",\n \"language\" : \"e8sut63t40rohar0s3usj7662y43vuq43pt8fcgk345fk7bn1jmpw2swn6wdwtpvplcystn3n8oa4gpcxkydr7dp48y3zh83wsbt5ywylo23c5vv0eg6fd2o9vykdss9715zlueax4dhkj73xcbuksju1s1nkyx3s6m5l\",\n \"subscription_url\" : \"http://api.github.com/repos/octocat/Hello-World/subscription\",\n \"branches_url\" : \"http://api.github.com/repos/octocat/Hello-World/branches{/branch}\",\n \"allow_rebase_merge\" : true,\n \"issue_comment_url\" : \"http://api.github.com/repos/octocat/Hello-World/issues/comments{/number}\",\n \"labels_url\" : \"http://api.github.com/repos/octocat/Hello-World/labels{/name}\",\n \"permissions\" : {\n \"pull\" : true,\n \"maintain\" : false,\n \"admin\" : false,\n \"triage\" : true,\n \"push\" : true\n },\n \"subscribers_url\" : \"http://api.github.com/repos/octocat/Hello-World/subscribers\",\n \"releases_url\" : \"http://api.github.com/repos/octocat/Hello-World/releases{/id}\",\n \"svn_url\" : \"https://svn.github.com/octocat/Hello-World\",\n \"subscribers_count\" : 7971637426691969162,\n \"id\" : 42,\n \"master_branch\" : \"1gdbdz58oadlm7e75vsdycbvf2s0bapgwi342qqkmzrcuv9mok7zmq39xwop3ffbf7osfrj8\",\n \"forks\" : 7235475465088222713,\n \"allow_merge_commit\" : true,\n \"archive_url\" : \"http://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref}\",\n \"git_refs_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/refs{/sha}\",\n \"forks_url\" : \"http://api.github.com/repos/octocat/Hello-World/forks\",\n \"visibility\" : \"loucjz9iuki09xsmio99cz1mig2ffhrihocij12phhbxb61jxtottop762a1h2hlns697mpdqhkyxwlmazkrv7prhed3t9bl1qy0ibyyopxs4y7uq2d3bucagoubjjrroypioagv1\",\n \"statuses_url\" : \"http://api.github.com/repos/octocat/Hello-World/statuses/{sha}\",\n \"network_count\" : 1111303078727025438,\n \"ssh_url\" : \"git@github.com:octocat/Hello-World.git\",\n \"license\" : {\n \"html_url\" : \"https://web.example.mocklab.io/605819\",\n \"name\" : \"MIT License\",\n \"spdx_id\" : \"MIT\",\n \"key\" : \"mit\",\n \"url\" : \"https://api.github.com/licenses/mit\",\n \"node_id\" : \"MDc6TGljZW5zZW1pdA==\"\n },\n \"full_name\" : \"octocat/Hello-World\",\n \"size\" : 108,\n \"template_repository\" : {\n \"anonymous_access_enabled\" : true,\n \"is_template\" : false,\n \"stargazers_count\" : 4943677062240239649,\n \"pushed_at\" : \"00ztqiyrw1ykkucigdu0yu8z\",\n \"language\" : \"4gs354t2jlt0krac460fl2nbsbns4dqt5zlcynvioqnewchqwuur7191us966gc2pcw157ik48qiqpr2hpk608u862\",\n \"subscription_url\" : \"https://web.example.mocklab.io/046738\",\n \"branches_url\" : \"https://web.example.mocklab.io/059148\",\n \"allow_rebase_merge\" : true,\n \"issue_comment_url\" : \"https://web.example.mocklab.io/309717\",\n \"labels_url\" : \"https://web.example.mocklab.io/261074\",\n \"permissions\" : { },\n \"subscribers_url\" : \"https://web.example.mocklab.io/591105\",\n \"releases_url\" : \"https://web.example.mocklab.io/519140\",\n \"svn_url\" : \"https://web.example.mocklab.io/187617\",\n \"subscribers_count\" : 789919874418137363,\n \"id\" : 167099645618851503,\n \"allow_merge_commit\" : true,\n \"archive_url\" : \"https://web.example.mocklab.io/454243\",\n \"git_refs_url\" : \"https://web.example.mocklab.io/335477\",\n \"forks_url\" : \"https://web.example.mocklab.io/468735\",\n \"visibility\" : \"kikja7t9izijajn75jypl4bhuoq3cqvq3gkvat1gd8ht\",\n \"statuses_url\" : \"https://web.example.mocklab.io/513459\",\n \"network_count\" : 148665545274774190,\n \"ssh_url\" : \"https://web.example.mocklab.io/965879\",\n \"full_name\" : \"Rickey Steuber V\",\n \"size\" : 3891045432755533437,\n \"languages_url\" : \"https://web.example.mocklab.io/949437\",\n \"clone_url\" : \"https://web.example.mocklab.io/818083\",\n \"collaborators_url\" : \"https://web.example.mocklab.io/973801\",\n \"html_url\" : \"https://web.example.mocklab.io/833857\",\n \"name\" : \"Sherise Runolfsdottir\",\n \"pulls_url\" : \"https://web.example.mocklab.io/911343\",\n \"default_branch\" : \"t93o24\",\n \"hooks_url\" : \"https://web.example.mocklab.io/601799\",\n \"trees_url\" : \"https://web.example.mocklab.io/589778\",\n \"tags_url\" : \"https://web.example.mocklab.io/980973\",\n \"contributors_url\" : \"https://web.example.mocklab.io/504947\",\n \"private\" : true,\n \"has_downloads\" : false,\n \"notifications_url\" : \"https://web.example.mocklab.io/013477\",\n \"open_issues_count\" : 5457040830890949142,\n \"created_at\" : \"7mff650cooky1cwlnmw1j9nnac7uvw7wnnqfkrp20mopherknz49uoisu8zkunb8oe2krztzep27g\",\n \"description\" : \"Provident delectus mollitia natus quia. Ea delectus magnam commodi dicta voluptatem maxime. Aut esse velit aut. Est et quos. Odit ratione amet aspernatur nobis nostrum id.\",\n \"deployments_url\" : \"https://web.example.mocklab.io/953777\",\n \"keys_url\" : \"https://web.example.mocklab.io/060449\",\n \"has_projects\" : true,\n \"archived\" : true,\n \"has_wiki\" : true,\n \"updated_at\" : \"2022-06-14T07:32:59.260924Z\",\n \"comments_url\" : \"https://web.example.mocklab.io/699361\",\n \"stargazers_url\" : \"https://web.example.mocklab.io/923000\",\n \"disabled\" : false,\n \"delete_branch_on_merge\" : false,\n \"git_url\" : \"https://web.example.mocklab.io/736877\",\n \"has_pages\" : false,\n \"owner\" : { },\n \"allow_squash_merge\" : true,\n \"commits_url\" : \"https://web.example.mocklab.io/379466\",\n \"compare_url\" : \"https://web.example.mocklab.io/107821\",\n \"git_commits_url\" : \"https://web.example.mocklab.io/021707\",\n \"topics\" : [ \"n375ax1a7jcegrk1ztyswsmifhwvo97m1ydu23wj45v0s7lr1\", \"nfi5hgpocxrvxvc6cr2c77l87tm149rn476rqn73ltb69hvpmri2l1ggbpoxruawo066h40oqatjoeasdel4ytdbl\", \"0ic4j07sh6ywn87m5c12qxdq0x1yxwhuvpxpr64n3dz0qyj82l93e407ash4j1uook1o6fofttnqg3aw87lhunyjeehgnswrvna5xrbk7q18bo8\", \"8bcez0mbf4y8y11zs9or13hqloypa1ikah604fy3o0\", \"lqgjvt12oanzxjvt67fepu8jsdwl7m7ye3vzq5nobl98nqfka3rfxxo9yodxyruc2dl8p\" ],\n \"blobs_url\" : \"https://web.example.mocklab.io/022847\",\n \"git_tags_url\" : \"https://web.example.mocklab.io/611885\",\n \"merges_url\" : \"https://web.example.mocklab.io/757460\",\n \"downloads_url\" : \"https://web.example.mocklab.io/562661\",\n \"has_issues\" : false,\n \"url\" : \"https://web.example.mocklab.io/526429\",\n \"contents_url\" : \"https://web.example.mocklab.io/875992\",\n \"mirror_url\" : \"https://web.example.mocklab.io/650430\",\n \"milestones_url\" : \"https://web.example.mocklab.io/894631\",\n \"teams_url\" : \"https://web.example.mocklab.io/810842\",\n \"fork\" : false,\n \"issues_url\" : \"https://web.example.mocklab.io/993397\",\n \"events_url\" : \"https://web.example.mocklab.io/990242\",\n \"issue_events_url\" : \"https://web.example.mocklab.io/844721\",\n \"assignees_url\" : \"https://web.example.mocklab.io/684782\",\n \"watchers_count\" : 7963121865855260591,\n \"forks_count\" : 9015209224755418418,\n \"homepage\" : \"2z1x6t0xgzgf34xlk2pyfsv4x6kw1ji7fdlwvo8ueki8txrgvpd6ohr4fmloovqlt333cw17rj7fbwqwlj64ed677p72j6pf\",\n \"node_id\" : \"c5jh\"\n },\n \"languages_url\" : \"http://api.github.com/repos/octocat/Hello-World/languages\",\n \"clone_url\" : \"https://github.com/octocat/Hello-World.git\",\n \"collaborators_url\" : \"http://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator}\",\n \"html_url\" : \"https://github.com/octocat/Hello-World\",\n \"name\" : \"Team Environment\",\n \"pulls_url\" : \"http://api.github.com/repos/octocat/Hello-World/pulls{/number}\",\n \"default_branch\" : \"master\",\n \"hooks_url\" : \"http://api.github.com/repos/octocat/Hello-World/hooks\",\n \"trees_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/trees{/sha}\",\n \"tags_url\" : \"http://api.github.com/repos/octocat/Hello-World/tags\",\n \"contributors_url\" : \"http://api.github.com/repos/octocat/Hello-World/contributors\",\n \"private\" : true,\n \"has_downloads\" : true,\n \"notifications_url\" : \"http://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating}\",\n \"open_issues_count\" : 0,\n \"created_at\" : \"2011-01-26T19:01:12Z\",\n \"description\" : \"This your first repo!\",\n \"watchers\" : 5024963200189415998,\n \"deployments_url\" : \"http://api.github.com/repos/octocat/Hello-World/deployments\",\n \"keys_url\" : \"http://api.github.com/repos/octocat/Hello-World/keys{/key_id}\",\n \"has_projects\" : true,\n \"archived\" : false,\n \"has_wiki\" : true,\n \"updated_at\" : \"2011-01-26T19:14:43Z\",\n \"comments_url\" : \"http://api.github.com/repos/octocat/Hello-World/comments{/number}\",\n \"stargazers_url\" : \"http://api.github.com/repos/octocat/Hello-World/stargazers\",\n \"disabled\" : true,\n \"delete_branch_on_merge\" : false,\n \"git_url\" : \"git:github.com/octocat/Hello-World.git\",\n \"has_pages\" : false,\n \"owner\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Harvey Stamm\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"cxg6l56pv0byd537iku9ojzlz0sr0u5nkyhcq3v8kdlxwffyg8endkjsm1olu9em2bywod6fxszlena2c74z50r8faigo7cn08mknrvqvgm2mokqg438hbejiia678z0otxf17i5wspu1nkseezqtwuv0gt6jqvj4egdwan8aulbaogul7xy0fxh\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"allow_squash_merge\" : true,\n \"commits_url\" : \"http://api.github.com/repos/octocat/Hello-World/commits{/sha}\",\n \"compare_url\" : \"http://api.github.com/repos/octocat/Hello-World/compare/{base}...{head}\",\n \"git_commits_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/commits{/sha}\",\n \"topics\" : [ \"q383guytz96ndo8orclarbu58q8aijli0q8jc8bj44q802hwlpioup10iudwsojeb0zlyv4ll61w2metu3sgd59zhf4o3g0rcvueeuso0zdwgkblsa84whq4p\" ],\n \"blobs_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/blobs{/sha}\",\n \"git_tags_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/tags{/sha}\",\n \"merges_url\" : \"http://api.github.com/repos/octocat/Hello-World/merges\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:42Z\\\"\",\n \"downloads_url\" : \"http://api.github.com/repos/octocat/Hello-World/downloads\",\n \"has_issues\" : true,\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World\",\n \"contents_url\" : \"http://api.github.com/repos/octocat/Hello-World/contents/{+path}\",\n \"mirror_url\" : \"git:git.example.com/octocat/Hello-World\",\n \"milestones_url\" : \"http://api.github.com/repos/octocat/Hello-World/milestones{/number}\",\n \"teams_url\" : \"http://api.github.com/repos/octocat/Hello-World/teams\",\n \"fork\" : true,\n \"issues_url\" : \"http://api.github.com/repos/octocat/Hello-World/issues{/number}\",\n \"events_url\" : \"http://api.github.com/repos/octocat/Hello-World/events\",\n \"issue_events_url\" : \"http://api.github.com/repos/octocat/Hello-World/issues/events{/number}\",\n \"organization\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Brandy Mante\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"bkz9jhf5q7j6zms6mgz17cd07m5jllnml4tjatre0xx5md6zrxq9a3k5gnwzwn4h5auu82r36qn6umopoa50xq82vtlmmcbm9n5d2zxmgmcl3cdurjxpazp959w5upzpb2ipzxhxiy\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"assignees_url\" : \"http://api.github.com/repos/octocat/Hello-World/assignees{/user}\",\n \"open_issues\" : 4079803647494392412,\n \"watchers_count\" : 80,\n \"forks_count\" : 9,\n \"homepage\" : \"https://github.com\",\n \"node_id\" : \"MDEwOlJlcG9zaXRvcnkxMjk2MjY5\"\n },\n \"title\" : \"Found a bug\",\n \"author_association\" : \"OWNER\",\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347/labels{/name}\",\n \"number\" : 1347,\n \"performed_via_github_app\" : {\n \"owner\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Bernarda Franecki\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"7niq3924rsws36eba2o\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"installations_count\" : 5,\n \"created_at\" : \"2017-07-08T16:18:44-04:00\",\n \"description\" : \"The description of the app.\",\n \"client_id\" : \"\\\"Iv1.25b5d1e65ffc4022\\\"\",\n \"external_url\" : \"https://example.com\",\n \"updated_at\" : \"2017-07-08T16:18:44-04:00\",\n \"permissions\" : {\n \"deployments\" : \"write\",\n \"issues\" : \"read\"\n },\n \"html_url\" : \"https://github.com/apps/super-ci\",\n \"name\" : \"Probot Owners\",\n \"pem\" : \"\\\"-----BEGIN RSA PRIVATE KEY-----\\\\nMIIEogIBAAKCAQEArYxrNYD/iT5CZVpRJu4rBKmmze3PVmT/gCo2ATUvDvZTPTey\\\\nxcGJ3vvrJXazKk06pN05TN29o98jrYz4cengG3YGsXPNEpKsIrEl8NhbnxapEnM9\\\\nJCMRe0P5JcPsfZlX6hmiT7136GRWiGOUba2X9+HKh8QJVLG5rM007TBER9/z9mWm\\\\nrJuNh+m5l320oBQY/Qq3A7wzdEfZw8qm/mIN0FCeoXH1L6B8xXWaAYBwhTEh6SSn\\\\nZHlO1Xu1JWDmAvBCi0RO5aRSKM8q9QEkvvHP4yweAtK3N8+aAbZ7ovaDhyGz8r6r\\\\nzhU1b8Uo0Z2ysf503WqzQgIajr7Fry7/kUwpgQIDAQABAoIBADwJp80Ko1xHPZDy\\\\nfcCKBDfIuPvkmSW6KumbsLMaQv1aGdHDwwTGv3t0ixSay8CGlxMRtRDyZPib6SvQ\\\\n6OH/lpfpbMdW2ErkksgtoIKBVrDilfrcAvrNZu7NxRNbhCSvN8q0s4ICecjbbVQh\\\\nnueSdlA6vGXbW58BHMq68uRbHkP+k+mM9U0mDJ1HMch67wlg5GbayVRt63H7R2+r\\\\nVxcna7B80J/lCEjIYZznawgiTvp3MSanTglqAYi+m1EcSsP14bJIB9vgaxS79kTu\\\\noiSo93leJbBvuGo8QEiUqTwMw4tDksmkLsoqNKQ1q9P7LZ9DGcujtPy4EZsamSJT\\\\ny8OJt0ECgYEA2lxOxJsQk2kI325JgKFjo92mQeUObIvPfSNWUIZQDTjniOI6Gv63\\\\nGLWVFrZcvQBWjMEQraJA9xjPbblV8PtfO87MiJGLWCHFxmPz2dzoedN+2Coxom8m\\\\nV95CLz8QUShuao6u/RYcvUaZEoYs5bHcTmy5sBK80JyEmafJPtCQVxMCgYEAy3ar\\\\nZr3yv4xRPEPMat4rseswmuMooSaK3SKub19WFI5IAtB/e7qR1Rj9JhOGcZz+OQrl\\\\nT78O2OFYlgOIkJPvRMrPpK5V9lslc7tz1FSh3BZMRGq5jSyD7ETSOQ0c8T2O/s7v\\\\nbeEPbVbDe4mwvM24XByH0GnWveVxaDl51ABD65sCgYB3ZAspUkOA5egVCh8kNpnd\\\\nSd6SnuQBE3ySRlT2WEnCwP9Ph6oPgn+oAfiPX4xbRqkL8q/k0BdHQ4h+zNwhk7+h\\\\nWtPYRAP1Xxnc/F+jGjb+DVaIaKGU18MWPg7f+FI6nampl3Q0KvfxwX0GdNhtio8T\\\\nTj1E+SnFwh56SRQuxSh2gwKBgHKjlIO5NtNSflsUYFM+hyQiPiqnHzddfhSG+/3o\\\\nm5nNaSmczJesUYreH5San7/YEy2UxAugvP7aSY2MxB+iGsiJ9WD2kZzTUlDZJ7RV\\\\nUzWsoqBR+eZfVJ2FUWWvy8TpSG6trh4dFxImNtKejCR1TREpSiTV3Zb1dmahK9GV\\\\nrK9NAoGAbBxRLoC01xfxCTgt5BDiBcFVh4fp5yYKwavJPLzHSpuDOrrI9jDn1oKN\\\\nonq5sDU1i391zfQvdrbX4Ova48BN+B7p63FocP/MK5tyyBoT8zQEk2+vWDOw7H/Z\\\\nu5dTCPxTIsoIwUw1I+7yIxqJzLPFgR2gVBwY1ra/8iAqCj+zeBw=\\\\n-----END RSA PRIVATE KEY-----\\\\n\\\"\",\n \"webhook_secret\" : \"\\\"6fba8f2fc8a7e8f2cca5577eddd82ca7586b3b6b\\\"\",\n \"client_secret\" : \"\\\"1d4b2097ac622ba702d19de498f005747a8b21d3\\\"\",\n \"id\" : 37,\n \"events\" : [ \"label\", \"deployment\" ],\n \"slug\" : \"probot-owners\",\n \"node_id\" : \"MDExOkludGVncmF0aW9uMQ==\"\n },\n \"updated_at\" : \"2011-04-22T13:33:48Z\",\n \"comments_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347/comments\",\n \"active_lock_reason\" : \"too heated\",\n \"id\" : 1,\n \"repository_url\" : \"https://api.github.com/repos/octocat/Hello-World\",\n \"state\" : \"open\",\n \"locked\" : true,\n \"timeline_url\" : \"https://web.example.mocklab.io/683611\",\n \"pull_request\" : {\n \"patch_url\" : \"https://web.example.mocklab.io/039351\",\n \"html_url\" : \"https://web.example.mocklab.io/896237\",\n \"merged_at\" : \"2023-08-26T07:06:14.263Z\",\n \"diff_url\" : \"https://web.example.mocklab.io/314727\",\n \"url\" : \"https://web.example.mocklab.io/692297\"\n },\n \"closed_at\" : \"2023-05-25T18:34:33.263Z\",\n \"comments\" : 0,\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347\",\n \"labels\" : [ {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n }, {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n }, {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n }, {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n }, {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n }, {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n }, {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n } ],\n \"milestone\" : {\n \"creator\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Julius Lemke\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"nzozov22h5hccjeg28l\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"closed_at\" : \"2013-02-12T13:22:01Z\",\n \"created_at\" : \"2011-04-10T20:09:31Z\",\n \"description\" : \"Tracking milestone for version 1.0\",\n \"closed_issues\" : 8,\n \"title\" : \"v1.0\",\n \"due_on\" : \"2012-10-09T23:39:01Z\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones/1\",\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones/1/labels\",\n \"number\" : 42,\n \"updated_at\" : \"2014-03-03T18:58:10Z\",\n \"html_url\" : \"https://github.com/octocat/Hello-World/milestones/v1.0\",\n \"id\" : 1002604,\n \"state\" : \"open\",\n \"open_issues\" : 4,\n \"node_id\" : \"MDk6TWlsZXN0b25lMTAwMjYwNA==\"\n },\n \"events_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347/events\",\n \"html_url\" : \"https://github.com/octocat/Hello-World/issues/1347\",\n \"assignee\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Carol Walsh\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"is9fl0xiqf4vbhmemy9jljehy\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"user\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"colleen.thiel\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"gnj4kdonxdsl6bl3eljkzzqhutux7l23gi29op6fdudm7v7e99lku4nh124gig79mqa9383ywpovzjv0r1numbve5shhgr88q33p07926vx9ihqt69thio0jj3f974ygs1pc0yx5bvw7lb0qkr9qvyok59hjb09x4dt02\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"node_id\" : \"MDU6SXNzdWUx\"\n },\n \"action\" : \"ml5fl3u35cut84sqvnwlpvoi3h1yo5nzdtsw2o64bdkh5cihprcgb9agp0dybl8ynye3dc38hby320qtr6hrlsy8ojbj3zf7yk3rf0gkewdbu0eld4gg8195s10rlf6jozkngyxcyhgh3l0x\",\n \"comment\" : {\n \"issue_url\" : \"https://web.example.mocklab.io/429866\",\n \"body_html\" : \"gcu82pl0i251eat0oqw4ds6uwdckqi44lcdzmgfug0qxevlz9xays0tgx0m4p9gjrq46xmfg03vmcslbt0dfc5r45kfjemc9hnx68fkryt1sxur5bgamuc1jmdedtdtfp7it6bzfmom3okwk1dg3avuoi\",\n \"body_text\" : \"4wd5arcsi8px8uyv7a12pa303dpukxm4rtduh17vlzbx202dz46diizzk9oa6w5hgpxcy1rjgb2dk0p67redt3eamqjkhnjzpo14f3byird5i4gq5bbj13o1ue944rdysy1sbu7qp4\",\n \"created_at\" : \"2011-04-14T16:00:49Z\",\n \"body\" : \"What version of Safari were you using when you observed this bug?\",\n \"url\" : \"https://api.github.com/repositories/42/issues/comments/1\",\n \"author_association\" : \"OWNER\",\n \"performed_via_github_app\" : {\n \"owner\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Dr. Max Mayert\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"r38\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"installations_count\" : 5,\n \"created_at\" : \"2017-07-08T16:18:44-04:00\",\n \"description\" : \"The description of the app.\",\n \"client_id\" : \"\\\"Iv1.25b5d1e65ffc4022\\\"\",\n \"external_url\" : \"https://example.com\",\n \"updated_at\" : \"2017-07-08T16:18:44-04:00\",\n \"permissions\" : {\n \"deployments\" : \"write\",\n \"issues\" : \"read\"\n },\n \"html_url\" : \"https://github.com/apps/super-ci\",\n \"name\" : \"Probot Owners\",\n \"pem\" : \"\\\"-----BEGIN RSA PRIVATE KEY-----\\\\nMIIEogIBAAKCAQEArYxrNYD/iT5CZVpRJu4rBKmmze3PVmT/gCo2ATUvDvZTPTey\\\\nxcGJ3vvrJXazKk06pN05TN29o98jrYz4cengG3YGsXPNEpKsIrEl8NhbnxapEnM9\\\\nJCMRe0P5JcPsfZlX6hmiT7136GRWiGOUba2X9+HKh8QJVLG5rM007TBER9/z9mWm\\\\nrJuNh+m5l320oBQY/Qq3A7wzdEfZw8qm/mIN0FCeoXH1L6B8xXWaAYBwhTEh6SSn\\\\nZHlO1Xu1JWDmAvBCi0RO5aRSKM8q9QEkvvHP4yweAtK3N8+aAbZ7ovaDhyGz8r6r\\\\nzhU1b8Uo0Z2ysf503WqzQgIajr7Fry7/kUwpgQIDAQABAoIBADwJp80Ko1xHPZDy\\\\nfcCKBDfIuPvkmSW6KumbsLMaQv1aGdHDwwTGv3t0ixSay8CGlxMRtRDyZPib6SvQ\\\\n6OH/lpfpbMdW2ErkksgtoIKBVrDilfrcAvrNZu7NxRNbhCSvN8q0s4ICecjbbVQh\\\\nnueSdlA6vGXbW58BHMq68uRbHkP+k+mM9U0mDJ1HMch67wlg5GbayVRt63H7R2+r\\\\nVxcna7B80J/lCEjIYZznawgiTvp3MSanTglqAYi+m1EcSsP14bJIB9vgaxS79kTu\\\\noiSo93leJbBvuGo8QEiUqTwMw4tDksmkLsoqNKQ1q9P7LZ9DGcujtPy4EZsamSJT\\\\ny8OJt0ECgYEA2lxOxJsQk2kI325JgKFjo92mQeUObIvPfSNWUIZQDTjniOI6Gv63\\\\nGLWVFrZcvQBWjMEQraJA9xjPbblV8PtfO87MiJGLWCHFxmPz2dzoedN+2Coxom8m\\\\nV95CLz8QUShuao6u/RYcvUaZEoYs5bHcTmy5sBK80JyEmafJPtCQVxMCgYEAy3ar\\\\nZr3yv4xRPEPMat4rseswmuMooSaK3SKub19WFI5IAtB/e7qR1Rj9JhOGcZz+OQrl\\\\nT78O2OFYlgOIkJPvRMrPpK5V9lslc7tz1FSh3BZMRGq5jSyD7ETSOQ0c8T2O/s7v\\\\nbeEPbVbDe4mwvM24XByH0GnWveVxaDl51ABD65sCgYB3ZAspUkOA5egVCh8kNpnd\\\\nSd6SnuQBE3ySRlT2WEnCwP9Ph6oPgn+oAfiPX4xbRqkL8q/k0BdHQ4h+zNwhk7+h\\\\nWtPYRAP1Xxnc/F+jGjb+DVaIaKGU18MWPg7f+FI6nampl3Q0KvfxwX0GdNhtio8T\\\\nTj1E+SnFwh56SRQuxSh2gwKBgHKjlIO5NtNSflsUYFM+hyQiPiqnHzddfhSG+/3o\\\\nm5nNaSmczJesUYreH5San7/YEy2UxAugvP7aSY2MxB+iGsiJ9WD2kZzTUlDZJ7RV\\\\nUzWsoqBR+eZfVJ2FUWWvy8TpSG6trh4dFxImNtKejCR1TREpSiTV3Zb1dmahK9GV\\\\nrK9NAoGAbBxRLoC01xfxCTgt5BDiBcFVh4fp5yYKwavJPLzHSpuDOrrI9jDn1oKN\\\\nonq5sDU1i391zfQvdrbX4Ova48BN+B7p63FocP/MK5tyyBoT8zQEk2+vWDOw7H/Z\\\\nu5dTCPxTIsoIwUw1I+7yIxqJzLPFgR2gVBwY1ra/8iAqCj+zeBw=\\\\n-----END RSA PRIVATE KEY-----\\\\n\\\"\",\n \"webhook_secret\" : \"\\\"6fba8f2fc8a7e8f2cca5577eddd82ca7586b3b6b\\\"\",\n \"client_secret\" : \"\\\"1d4b2097ac622ba702d19de498f005747a8b21d3\\\"\",\n \"id\" : 37,\n \"events\" : [ \"label\", \"deployment\" ],\n \"slug\" : \"probot-owners\",\n \"node_id\" : \"MDExOkludGVncmF0aW9uMQ==\"\n },\n \"updated_at\" : \"2011-04-14T16:00:49Z\",\n \"html_url\" : \"https://web.example.mocklab.io/269615\",\n \"reactions\" : {\n \"confused\" : 2812723275256583312,\n \"-1\" : 4924508997591730101,\n \"+1\" : 619244377738311779,\n \"total_count\" : 5771952380079359090,\n \"rocket\" : 132013307981684682,\n \"hooray\" : 7262273789626711922,\n \"eyes\" : 3374220163578815207,\n \"heart\" : 997654583919847027,\n \"laugh\" : 6251593195707103891,\n \"url\" : \"https://web.example.mocklab.io/054804\"\n },\n \"id\" : 42,\n \"user\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"madelaine.dibbert\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"u2rkt0rpbehl0uuui17j2q40im9k9a87hwxyqfkx17fzgachxu696bp948xp167y8uah\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"node_id\" : \"oy6l\"\n }\n },\n \"repo\" : {\n \"name\" : \"Mr. Adelia Anderson\",\n \"id\" : 2771577760912381598,\n \"url\" : \"https://web.example.mocklab.io/385303\"\n },\n \"created_at\" : \"2024-01-14T10:05:40.264Z\",\n \"id\" : \"5cl7\",\n \"type\" : \"1639phiez3vdwzkx32u9o4mxda7xkfcyf3jimqfeeunbwt3fwpsyz52xs5hiqf\"\n}, {\n \"actor\" : {\n \"display_login\" : \"bgpdpwyh4zviv7y3\",\n \"avatar_url\" : \"https://s3.amazonaws.com/uifaces/faces/twitter/denisepires/128.jpg\",\n \"id\" : 340377596079027318,\n \"login\" : \"rqo8bbczbfnh7ukkjrwhbeo8kdsmtfmu1ijguxx8f\",\n \"gravatar_id\" : \"h78l\",\n \"url\" : \"https://web.example.mocklab.io/520219\"\n },\n \"public\" : true,\n \"org\" : {\n \"display_login\" : \"uo6z0mwwb1k6e4e2f4uoptgkjc4q2pfy2uoodvd\",\n \"avatar_url\" : \"https://s3.amazonaws.com/uifaces/faces/twitter/amandabuzard/128.jpg\",\n \"id\" : 8826233724515600396,\n \"login\" : \"65qpxh2dujz6\",\n \"gravatar_id\" : \"571s\",\n \"url\" : \"https://web.example.mocklab.io/665483\"\n },\n \"payload\" : {\n \"pages\" : [ {\n \"summary\" : \"Quasi quia sapiente porro est iusto sed. Voluptatem dolores dolorem explicabo. Voluptatum voluptatem ea est. Ea aut corrupti eaque ea totam et sint.\",\n \"html_url\" : \"https://web.example.mocklab.io/105344\",\n \"page_name\" : \"Evan Renner\",\n \"action\" : \"e2r92ikie1fbj7sybix58yoh7h9a42jkjgxi9zr1d3798q3z4gd9ajfudgkocg8d2wkrcgy7zw0rw5j1uzzn88ma0sw8o9e1vezvobn1w8i6qkm7kmlz0y345myukj4k7fb31u8n1sr5hiazfxogvldgv5df4mza\",\n \"title\" : \"Quasi at facilis incidunt quis enim enim dolores.\",\n \"sha\" : \"orn3flj1leu1uktg5pribuhawgz9i4zoz1e9stdz0x15xz7okncu06go92qxk6sdum5s7gu30b1t4x94cw6iuuw3hpsx0u3os2shk7d5w9mfuomqqjqqj3oqzid7lgnz2078rwfqla8sjzu41hdxhqotcx5xf4tc4smhko31njj0vuexel9gfph90d\"\n }, {\n \"summary\" : \"Sint doloremque adipisci illo. Ut quidem et quibusdam. Ut et mollitia nisi reprehenderit.\",\n \"html_url\" : \"https://web.example.mocklab.io/540005\",\n \"page_name\" : \"Loria Borer MD\",\n \"action\" : \"swbzzq3fd1fu9nupsjsd41rc\",\n \"title\" : \"Sunt possimus est voluptatem et ad sunt.\",\n \"sha\" : \"7ad4wbuid5b0hrjp5naadnl3exc5m3f0zgy2ec2sprsrju9r3xu69dvp0q5df57obt2xdga6e1nxvkt3\"\n } ],\n \"issue\" : {\n \"body_html\" : \"vwd00iyph0zl22zf77tu6cqhqj9mlahxh9v5zrin84g2h5qor83z5idui76j2q3d1gvavf3jbe15zyrfo5ebvk1ak9ks8ad5f0y5gklz1oitubjl1iitcyf58vhteo0lw6cw6kxu3nff8uelvubmcwpbtmz9l3z6\",\n \"body_text\" : \"fx0vo8xojwukopnq0z09o8yxn0cxmpqg2l5fuba3gwmcjiqhcyltxkjj2rl274of3fyroi9af32yz0g2eun2smg0lvltu2vi41qv5olxj6x1rqpkniqypkwzgqy08amxqppfut2dawx0odswnjmvns5\",\n \"assignees\" : [ {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Aracelis Hartmann\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"2jsb0n41okj4nf2cjsm3m353b696ty1r0na41b54uv0b0t25jexmk731hcph591d296nhxaem1025izzsc8fvochabmxnx84s4sesm84a2\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n }, {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Vina Marquardt\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"z21fjn1h36ximy9j6966nixike2rt02dyvu2kz1263gv4io7jhspktmm4ipc0r2kvrbexp89bo\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n } ],\n \"created_at\" : \"2011-04-22T13:33:48Z\",\n \"body\" : \"I'm having a problem with this.\",\n \"repository\" : {\n \"allow_forking\" : true,\n \"anonymous_access_enabled\" : true,\n \"is_template\" : true,\n \"stargazers_count\" : 80,\n \"pushed_at\" : \"2011-01-26T19:06:43Z\",\n \"language\" : \"44iry3uu1qeii5lk5szhrnvuo1tlx8rjiot0qygf7nkbq6agcipozd5llryz1b3mttzq3gyso2wf7n7cfjbiid7d993a1otgcbiap\",\n \"subscription_url\" : \"http://api.github.com/repos/octocat/Hello-World/subscription\",\n \"branches_url\" : \"http://api.github.com/repos/octocat/Hello-World/branches{/branch}\",\n \"allow_rebase_merge\" : true,\n \"issue_comment_url\" : \"http://api.github.com/repos/octocat/Hello-World/issues/comments{/number}\",\n \"labels_url\" : \"http://api.github.com/repos/octocat/Hello-World/labels{/name}\",\n \"permissions\" : {\n \"pull\" : false,\n \"maintain\" : true,\n \"admin\" : true,\n \"triage\" : true,\n \"push\" : true\n },\n \"subscribers_url\" : \"http://api.github.com/repos/octocat/Hello-World/subscribers\",\n \"releases_url\" : \"http://api.github.com/repos/octocat/Hello-World/releases{/id}\",\n \"svn_url\" : \"https://svn.github.com/octocat/Hello-World\",\n \"subscribers_count\" : 2102735000607475456,\n \"id\" : 42,\n \"master_branch\" : \"ao4jsj0x0wytpcv2gjvhmwh6h6b67feyf8jqao\",\n \"forks\" : 8042050965351827127,\n \"allow_merge_commit\" : true,\n \"archive_url\" : \"http://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref}\",\n \"git_refs_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/refs{/sha}\",\n \"forks_url\" : \"http://api.github.com/repos/octocat/Hello-World/forks\",\n \"visibility\" : \"ww3efk3zjlaak0jxtcgcx595z90qlf8w73jwrlo490jpxng2pcuwot0madjg5nrx5tka2wxamw4\",\n \"statuses_url\" : \"http://api.github.com/repos/octocat/Hello-World/statuses/{sha}\",\n \"network_count\" : 5840908106372904670,\n \"ssh_url\" : \"git@github.com:octocat/Hello-World.git\",\n \"license\" : {\n \"html_url\" : \"https://web.example.mocklab.io/033543\",\n \"name\" : \"MIT License\",\n \"spdx_id\" : \"MIT\",\n \"key\" : \"mit\",\n \"url\" : \"https://api.github.com/licenses/mit\",\n \"node_id\" : \"MDc6TGljZW5zZW1pdA==\"\n },\n \"full_name\" : \"octocat/Hello-World\",\n \"size\" : 108,\n \"template_repository\" : {\n \"anonymous_access_enabled\" : true,\n \"is_template\" : true,\n \"stargazers_count\" : 1626852102656633342,\n \"pushed_at\" : \"fsdlopjgdfdbto1n79tpqmcq9mic755047lq7zo7lukoij1pkhmx74skp8yp3nlfpdcsdn9mppearda2aejajx283sne3pzxlihja7ospzfm1wyg5ndrjdvx6h5u4zfoosomnohtatvs42e610jexsqnc4\",\n \"language\" : \"s8psf11r1pmsn5oibgi6kb47l\",\n \"subscription_url\" : \"https://web.example.mocklab.io/434498\",\n \"branches_url\" : \"https://web.example.mocklab.io/367638\",\n \"allow_rebase_merge\" : true,\n \"issue_comment_url\" : \"https://web.example.mocklab.io/444909\",\n \"labels_url\" : \"https://web.example.mocklab.io/658284\",\n \"permissions\" : { },\n \"subscribers_url\" : \"https://web.example.mocklab.io/513436\",\n \"releases_url\" : \"https://web.example.mocklab.io/869606\",\n \"svn_url\" : \"https://web.example.mocklab.io/997386\",\n \"subscribers_count\" : 782823274721129859,\n \"id\" : 361117378477936416,\n \"allow_merge_commit\" : true,\n \"archive_url\" : \"https://web.example.mocklab.io/429721\",\n \"git_refs_url\" : \"https://web.example.mocklab.io/023446\",\n \"forks_url\" : \"https://web.example.mocklab.io/862088\",\n \"visibility\" : \"5i6232vqm1rpg6vq2icmwodzmlstdwi47rnsaso1gsd1szr99t35knd0hpr5rgantdf4we99yhuulrkamueou0bpbcg3crhbir6827434kcyf4xxgfptayhqvka38fpjqjsf5krbvhdfa668g22v4yx2ajfdnrs1uv85r0ttf094fogtphjq0vuyvqhtd8lvmh\",\n \"statuses_url\" : \"https://web.example.mocklab.io/284933\",\n \"network_count\" : 4072108253458948889,\n \"ssh_url\" : \"https://web.example.mocklab.io/424249\",\n \"full_name\" : \"Marlin Reynolds\",\n \"size\" : 7039366114083592102,\n \"languages_url\" : \"https://web.example.mocklab.io/485893\",\n \"clone_url\" : \"https://web.example.mocklab.io/053896\",\n \"collaborators_url\" : \"https://web.example.mocklab.io/256247\",\n \"html_url\" : \"https://web.example.mocklab.io/282330\",\n \"name\" : \"Sydney Waelchi\",\n \"pulls_url\" : \"https://web.example.mocklab.io/375512\",\n \"default_branch\" : \"c66bkh9prklpqvvmuv7ne3zz5w6srl4aat35k9mj73ac6u31bptwtqki9rpm5vqm68x1bhzw1rwrui0b6lxhagma1psik9bkuqwo19fs4w59yytuoqwjzjxfhxikai5crr46uxa05lfkms\",\n \"hooks_url\" : \"https://web.example.mocklab.io/204579\",\n \"trees_url\" : \"https://web.example.mocklab.io/616343\",\n \"tags_url\" : \"https://web.example.mocklab.io/589672\",\n \"contributors_url\" : \"https://web.example.mocklab.io/210172\",\n \"private\" : false,\n \"has_downloads\" : false,\n \"notifications_url\" : \"https://web.example.mocklab.io/312517\",\n \"open_issues_count\" : 3180075651106963613,\n \"created_at\" : \"9a9g5q1dcmc09xle44kvnv82nn6pzzmm5uullc8lu6lu3pkernj3lg69no7pubz14j81ym2nd3nnjy7pu0xzu568dx4z9zam5tnv4ms0754j2af57njnyhj89n56snwdq4z\",\n \"description\" : \"Dignissimos laborum sit. Non eligendi excepturi. Harum voluptatibus non necessitatibus aut vel. Aspernatur quo unde distinctio aut neque eligendi. Tempora quo eum consequatur.\",\n \"deployments_url\" : \"https://web.example.mocklab.io/830338\",\n \"keys_url\" : \"https://web.example.mocklab.io/213146\",\n \"has_projects\" : true,\n \"archived\" : true,\n \"has_wiki\" : false,\n \"updated_at\" : \"2023-01-24T07:24:59.267472Z\",\n \"comments_url\" : \"https://web.example.mocklab.io/719063\",\n \"stargazers_url\" : \"https://web.example.mocklab.io/298842\",\n \"disabled\" : true,\n \"delete_branch_on_merge\" : false,\n \"git_url\" : \"https://web.example.mocklab.io/165082\",\n \"has_pages\" : true,\n \"owner\" : { },\n \"allow_squash_merge\" : false,\n \"commits_url\" : \"https://web.example.mocklab.io/943898\",\n \"compare_url\" : \"https://web.example.mocklab.io/812072\",\n \"git_commits_url\" : \"https://web.example.mocklab.io/509095\",\n \"topics\" : [ \"qbh7pgwk6sxid70hzksqecfaakk6mqo3af78f41ambw2aswf411b5w6gbg7aeneb224k12a9yz7kdgkvbgvib8v375kb94vndtchctnn7gbkuzejo0j60s9u2ybosyeuhrvgn2c2t9jo4d0lwhztbrpadc9imkw054ikbe845mjmzurg1nh\", \"1bp5av48er7vcik13dqt2gka4hx6b0ykaetoqzstx4tlyphg99xy08x3disif2x9fk4t25ci495bhwm8u2l0sc41kxcryx220da43srnhno3ih954lup3wpy3ic4x5ed13\", \"x0lvvsw5e6flkzld95lj3brh1fu6j49fmog44wqrzs\", \"7aegrfkxzq63k\", \"5uz1mjim6lnflqyj8sv1lct75yy1s1pwwpvut330dw9sv39slx5jrivnoiwtxx2udx4ubu3jslec0us8cnf2qn1mkk2aki88psjhoct3qaem5dq134496d3wm5dwxcbtkev\", \"aqk8t59xqzu5zemzy0r1yg9hfzjo4w3vxgp8u4kt38p8e49zv6l37ghd0lyts7l7p36wukt5dvpk9sjs3fa30et3l701r612xr391em2doa1wftf8v52pg6cg4ydq96dp81ayltspndcelf70v677mgge6b4ommx2jf7\", \"5hcdnixmqy1yxvu70jq2y8sfh0x72i8qbwez4i0pu77fcua0wfcipt92613xo1elqms\" ],\n \"blobs_url\" : \"https://web.example.mocklab.io/201220\",\n \"git_tags_url\" : \"https://web.example.mocklab.io/025377\",\n \"merges_url\" : \"https://web.example.mocklab.io/516696\",\n \"downloads_url\" : \"https://web.example.mocklab.io/896225\",\n \"has_issues\" : false,\n \"url\" : \"https://web.example.mocklab.io/655652\",\n \"contents_url\" : \"https://web.example.mocklab.io/542350\",\n \"mirror_url\" : \"https://web.example.mocklab.io/710631\",\n \"milestones_url\" : \"https://web.example.mocklab.io/167897\",\n \"teams_url\" : \"https://web.example.mocklab.io/321451\",\n \"fork\" : false,\n \"issues_url\" : \"https://web.example.mocklab.io/234770\",\n \"events_url\" : \"https://web.example.mocklab.io/085066\",\n \"issue_events_url\" : \"https://web.example.mocklab.io/151331\",\n \"assignees_url\" : \"https://web.example.mocklab.io/904419\",\n \"watchers_count\" : 1397133951889391864,\n \"forks_count\" : 8078871315811036910,\n \"homepage\" : \"soo1sgo459c2ymbbgfeewd8aucoe09dfrj8cku74rkzlj7g8arhug11awuu4fraeslzapp8x519vgy2fnv9awrw9agag7o1m7lx2poyjxx410z8g\",\n \"node_id\" : \"ozp2\"\n },\n \"languages_url\" : \"http://api.github.com/repos/octocat/Hello-World/languages\",\n \"clone_url\" : \"https://github.com/octocat/Hello-World.git\",\n \"collaborators_url\" : \"http://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator}\",\n \"html_url\" : \"https://github.com/octocat/Hello-World\",\n \"name\" : \"Team Environment\",\n \"pulls_url\" : \"http://api.github.com/repos/octocat/Hello-World/pulls{/number}\",\n \"default_branch\" : \"master\",\n \"hooks_url\" : \"http://api.github.com/repos/octocat/Hello-World/hooks\",\n \"trees_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/trees{/sha}\",\n \"tags_url\" : \"http://api.github.com/repos/octocat/Hello-World/tags\",\n \"contributors_url\" : \"http://api.github.com/repos/octocat/Hello-World/contributors\",\n \"private\" : true,\n \"has_downloads\" : true,\n \"notifications_url\" : \"http://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating}\",\n \"open_issues_count\" : 0,\n \"created_at\" : \"2011-01-26T19:01:12Z\",\n \"description\" : \"This your first repo!\",\n \"watchers\" : 8392005680131352362,\n \"deployments_url\" : \"http://api.github.com/repos/octocat/Hello-World/deployments\",\n \"keys_url\" : \"http://api.github.com/repos/octocat/Hello-World/keys{/key_id}\",\n \"has_projects\" : true,\n \"archived\" : false,\n \"has_wiki\" : true,\n \"updated_at\" : \"2011-01-26T19:14:43Z\",\n \"comments_url\" : \"http://api.github.com/repos/octocat/Hello-World/comments{/number}\",\n \"stargazers_url\" : \"http://api.github.com/repos/octocat/Hello-World/stargazers\",\n \"disabled\" : true,\n \"delete_branch_on_merge\" : false,\n \"git_url\" : \"git:github.com/octocat/Hello-World.git\",\n \"has_pages\" : false,\n \"owner\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Leonida Hammes DVM\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"q81qjhalxyygudktgwgmb2zuuelhtd434tr9uh53aokxqhjh2t4nssi7lafltfmzb5hg1h2cgrgbr\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"allow_squash_merge\" : true,\n \"commits_url\" : \"http://api.github.com/repos/octocat/Hello-World/commits{/sha}\",\n \"compare_url\" : \"http://api.github.com/repos/octocat/Hello-World/compare/{base}...{head}\",\n \"git_commits_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/commits{/sha}\",\n \"topics\" : [ \"k4pdud18\", \"qcie1q05mekb5qy98etglp8rinpa6wgyvickvetkkki2ekhb3daix9df0woq629pt0d71zmh40nzizi09rbsikpi6\", \"0ukbt840c5omtpnocnzlyptk1kjn1qxygx4gfp3wgn8ijx20oacqz3fev36571jjrsp2u14ichlvexz5fvdlzxrysi4zkahji03bwji0ugtze0jxvq1jq5wirv6sx50x472qbkp4g1rvkb6l1fs76h8f5s45497wjbd0n4jv77r\", \"qjohqkdrj4dmw9h40msd7jek79sc1spgbdu86z9a2mnie7giezlu9rxwn1icrdymij34ftobwsdrjh6d7qv9afy4bzx6xs6ly060ulij0wjd\", \"4zh5u8m4h6wpdr0nvxi4cqs6c5pi9zs45qbuxk62id6nemycgahriv45dyn73hojtyddag4w010xaneyrhag7bkbl377\", \"3rgxewf3c46dscdayjx4euvqn9afpu25se31w7bw2jw0546y5sxnl3kdk380jcl6yioc95y7e75ok8bwwjo\", \"tgfeis27rna4nwrl7s1fva1t14ae5mnh9mxx\" ],\n \"blobs_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/blobs{/sha}\",\n \"git_tags_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/tags{/sha}\",\n \"merges_url\" : \"http://api.github.com/repos/octocat/Hello-World/merges\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:42Z\\\"\",\n \"downloads_url\" : \"http://api.github.com/repos/octocat/Hello-World/downloads\",\n \"has_issues\" : true,\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World\",\n \"contents_url\" : \"http://api.github.com/repos/octocat/Hello-World/contents/{+path}\",\n \"mirror_url\" : \"git:git.example.com/octocat/Hello-World\",\n \"milestones_url\" : \"http://api.github.com/repos/octocat/Hello-World/milestones{/number}\",\n \"teams_url\" : \"http://api.github.com/repos/octocat/Hello-World/teams\",\n \"fork\" : true,\n \"issues_url\" : \"http://api.github.com/repos/octocat/Hello-World/issues{/number}\",\n \"events_url\" : \"http://api.github.com/repos/octocat/Hello-World/events\",\n \"issue_events_url\" : \"http://api.github.com/repos/octocat/Hello-World/issues/events{/number}\",\n \"organization\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Linnie Dooley\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"69jjaca26vyiuteveb0ujwbghne9tbmv6dm6ka25gq9kzajlya42vdj5il48bceogko8u0u66gj12gbzqacb90u719o80vxrsmkch6wmazplrqsguf53u1fqovthpx1w\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"assignees_url\" : \"http://api.github.com/repos/octocat/Hello-World/assignees{/user}\",\n \"open_issues\" : 8933334633453196279,\n \"watchers_count\" : 80,\n \"forks_count\" : 9,\n \"homepage\" : \"https://github.com\",\n \"node_id\" : \"MDEwOlJlcG9zaXRvcnkxMjk2MjY5\"\n },\n \"title\" : \"Found a bug\",\n \"author_association\" : \"OWNER\",\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347/labels{/name}\",\n \"number\" : 1347,\n \"performed_via_github_app\" : {\n \"owner\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Clarine Heidenreich\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"uhr2stl2aj6dfuir6a43fmrvqy2z\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"installations_count\" : 5,\n \"created_at\" : \"2017-07-08T16:18:44-04:00\",\n \"description\" : \"The description of the app.\",\n \"client_id\" : \"\\\"Iv1.25b5d1e65ffc4022\\\"\",\n \"external_url\" : \"https://example.com\",\n \"updated_at\" : \"2017-07-08T16:18:44-04:00\",\n \"permissions\" : {\n \"deployments\" : \"write\",\n \"issues\" : \"read\"\n },\n \"html_url\" : \"https://github.com/apps/super-ci\",\n \"name\" : \"Probot Owners\",\n \"pem\" : \"\\\"-----BEGIN RSA PRIVATE KEY-----\\\\nMIIEogIBAAKCAQEArYxrNYD/iT5CZVpRJu4rBKmmze3PVmT/gCo2ATUvDvZTPTey\\\\nxcGJ3vvrJXazKk06pN05TN29o98jrYz4cengG3YGsXPNEpKsIrEl8NhbnxapEnM9\\\\nJCMRe0P5JcPsfZlX6hmiT7136GRWiGOUba2X9+HKh8QJVLG5rM007TBER9/z9mWm\\\\nrJuNh+m5l320oBQY/Qq3A7wzdEfZw8qm/mIN0FCeoXH1L6B8xXWaAYBwhTEh6SSn\\\\nZHlO1Xu1JWDmAvBCi0RO5aRSKM8q9QEkvvHP4yweAtK3N8+aAbZ7ovaDhyGz8r6r\\\\nzhU1b8Uo0Z2ysf503WqzQgIajr7Fry7/kUwpgQIDAQABAoIBADwJp80Ko1xHPZDy\\\\nfcCKBDfIuPvkmSW6KumbsLMaQv1aGdHDwwTGv3t0ixSay8CGlxMRtRDyZPib6SvQ\\\\n6OH/lpfpbMdW2ErkksgtoIKBVrDilfrcAvrNZu7NxRNbhCSvN8q0s4ICecjbbVQh\\\\nnueSdlA6vGXbW58BHMq68uRbHkP+k+mM9U0mDJ1HMch67wlg5GbayVRt63H7R2+r\\\\nVxcna7B80J/lCEjIYZznawgiTvp3MSanTglqAYi+m1EcSsP14bJIB9vgaxS79kTu\\\\noiSo93leJbBvuGo8QEiUqTwMw4tDksmkLsoqNKQ1q9P7LZ9DGcujtPy4EZsamSJT\\\\ny8OJt0ECgYEA2lxOxJsQk2kI325JgKFjo92mQeUObIvPfSNWUIZQDTjniOI6Gv63\\\\nGLWVFrZcvQBWjMEQraJA9xjPbblV8PtfO87MiJGLWCHFxmPz2dzoedN+2Coxom8m\\\\nV95CLz8QUShuao6u/RYcvUaZEoYs5bHcTmy5sBK80JyEmafJPtCQVxMCgYEAy3ar\\\\nZr3yv4xRPEPMat4rseswmuMooSaK3SKub19WFI5IAtB/e7qR1Rj9JhOGcZz+OQrl\\\\nT78O2OFYlgOIkJPvRMrPpK5V9lslc7tz1FSh3BZMRGq5jSyD7ETSOQ0c8T2O/s7v\\\\nbeEPbVbDe4mwvM24XByH0GnWveVxaDl51ABD65sCgYB3ZAspUkOA5egVCh8kNpnd\\\\nSd6SnuQBE3ySRlT2WEnCwP9Ph6oPgn+oAfiPX4xbRqkL8q/k0BdHQ4h+zNwhk7+h\\\\nWtPYRAP1Xxnc/F+jGjb+DVaIaKGU18MWPg7f+FI6nampl3Q0KvfxwX0GdNhtio8T\\\\nTj1E+SnFwh56SRQuxSh2gwKBgHKjlIO5NtNSflsUYFM+hyQiPiqnHzddfhSG+/3o\\\\nm5nNaSmczJesUYreH5San7/YEy2UxAugvP7aSY2MxB+iGsiJ9WD2kZzTUlDZJ7RV\\\\nUzWsoqBR+eZfVJ2FUWWvy8TpSG6trh4dFxImNtKejCR1TREpSiTV3Zb1dmahK9GV\\\\nrK9NAoGAbBxRLoC01xfxCTgt5BDiBcFVh4fp5yYKwavJPLzHSpuDOrrI9jDn1oKN\\\\nonq5sDU1i391zfQvdrbX4Ova48BN+B7p63FocP/MK5tyyBoT8zQEk2+vWDOw7H/Z\\\\nu5dTCPxTIsoIwUw1I+7yIxqJzLPFgR2gVBwY1ra/8iAqCj+zeBw=\\\\n-----END RSA PRIVATE KEY-----\\\\n\\\"\",\n \"webhook_secret\" : \"\\\"6fba8f2fc8a7e8f2cca5577eddd82ca7586b3b6b\\\"\",\n \"client_secret\" : \"\\\"1d4b2097ac622ba702d19de498f005747a8b21d3\\\"\",\n \"id\" : 37,\n \"events\" : [ \"label\", \"deployment\" ],\n \"slug\" : \"probot-owners\",\n \"node_id\" : \"MDExOkludGVncmF0aW9uMQ==\"\n },\n \"updated_at\" : \"2011-04-22T13:33:48Z\",\n \"comments_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347/comments\",\n \"active_lock_reason\" : \"too heated\",\n \"id\" : 1,\n \"repository_url\" : \"https://api.github.com/repos/octocat/Hello-World\",\n \"state\" : \"open\",\n \"locked\" : true,\n \"timeline_url\" : \"https://web.example.mocklab.io/262818\",\n \"pull_request\" : {\n \"patch_url\" : \"https://web.example.mocklab.io/413201\",\n \"html_url\" : \"https://web.example.mocklab.io/054931\",\n \"merged_at\" : \"2023-11-26T12:45:31.269Z\",\n \"diff_url\" : \"https://web.example.mocklab.io/550616\",\n \"url\" : \"https://web.example.mocklab.io/497490\"\n },\n \"closed_at\" : \"2022-10-10T13:30:57.269Z\",\n \"comments\" : 0,\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347\",\n \"labels\" : [ {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n }, {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n }, {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n }, {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n }, {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n }, {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n }, {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n }, {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n } ],\n \"milestone\" : {\n \"creator\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Avis Bauch\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"31a7ebu4n2pnz2hhxc71908ai047ew7o8lc2y1yytgbbtn5tqn1h9wu3kzmvhd0uevag64nzxyechxpthx4vbnqt633q81dhwq4fcrgz26hikxfkwnq8x053wo2krtthv4i2zn6pd52x8havg5xianqa9uw2u4swrzjm6v3\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"closed_at\" : \"2013-02-12T13:22:01Z\",\n \"created_at\" : \"2011-04-10T20:09:31Z\",\n \"description\" : \"Tracking milestone for version 1.0\",\n \"closed_issues\" : 8,\n \"title\" : \"v1.0\",\n \"due_on\" : \"2012-10-09T23:39:01Z\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones/1\",\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones/1/labels\",\n \"number\" : 42,\n \"updated_at\" : \"2014-03-03T18:58:10Z\",\n \"html_url\" : \"https://github.com/octocat/Hello-World/milestones/v1.0\",\n \"id\" : 1002604,\n \"state\" : \"open\",\n \"open_issues\" : 4,\n \"node_id\" : \"MDk6TWlsZXN0b25lMTAwMjYwNA==\"\n },\n \"events_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347/events\",\n \"html_url\" : \"https://github.com/octocat/Hello-World/issues/1347\",\n \"assignee\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Dori Emmerich\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"zivit9t047ft1jmqnwxc7k9zqvtgyei8b989rquya4czc832xce4u6vci8yj76decjx1ppmwlxu38wdi59kwzovrt3pqs3rzkh6efvmipr7z77kpjo7kwl09r0eqkhsb1a5lya24mkhoitz8ag48ufjlonybkvv6xy0m\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"user\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"charlena.cormier\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"f84o0i4goedq3ceqy544crts7bx5jzimyhh6a3e1kfcct73smzz0e0e9x97xuvyst601x739kjrhpzbntobs0xst2brw5bndtoxee4uh7pkp43vwvwr35tenfef0o5ypxc4tw7k94\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"node_id\" : \"MDU6SXNzdWUx\"\n },\n \"action\" : \"o2bozr13k7gq4z4mte1pwdah77p44khlq4afc20jebbykypymdxmkm0gyxn\",\n \"comment\" : {\n \"issue_url\" : \"https://web.example.mocklab.io/671044\",\n \"body_html\" : \"49jtpx9acuvg1fbu2k8nqqliu9wdq8r50j6c8pxesivaajgx0a31s9p3alvzztqmtlampx8qlrlwqdx4h49gq7pm5cx774fwe6vei1v9rt\",\n \"body_text\" : \"94tgs9oieycdwnld3rniz8wykvrgfh7kjcdp27m6im3id2iaczg2t6058pvpcngr7ekbc6yde8kw24eg6wdvkj1oipgyztlkzm12titfzex4oryupp7ohnvdpjmy5f9fe5glmr\",\n \"created_at\" : \"2011-04-14T16:00:49Z\",\n \"body\" : \"What version of Safari were you using when you observed this bug?\",\n \"url\" : \"https://api.github.com/repositories/42/issues/comments/1\",\n \"author_association\" : \"OWNER\",\n \"performed_via_github_app\" : {\n \"owner\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Kay Considine\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"10ermw1p8afrjl801burtqauyez1u88glte59aghjz2xneuxq9hwhsrob6exvc55wpykh1kxt43p652qigr1slze71haxspgz8fjsd9omh274z4d2o4tvub3x1svg\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"installations_count\" : 5,\n \"created_at\" : \"2017-07-08T16:18:44-04:00\",\n \"description\" : \"The description of the app.\",\n \"client_id\" : \"\\\"Iv1.25b5d1e65ffc4022\\\"\",\n \"external_url\" : \"https://example.com\",\n \"updated_at\" : \"2017-07-08T16:18:44-04:00\",\n \"permissions\" : {\n \"deployments\" : \"write\",\n \"issues\" : \"read\"\n },\n \"html_url\" : \"https://github.com/apps/super-ci\",\n \"name\" : \"Probot Owners\",\n \"pem\" : \"\\\"-----BEGIN RSA PRIVATE KEY-----\\\\nMIIEogIBAAKCAQEArYxrNYD/iT5CZVpRJu4rBKmmze3PVmT/gCo2ATUvDvZTPTey\\\\nxcGJ3vvrJXazKk06pN05TN29o98jrYz4cengG3YGsXPNEpKsIrEl8NhbnxapEnM9\\\\nJCMRe0P5JcPsfZlX6hmiT7136GRWiGOUba2X9+HKh8QJVLG5rM007TBER9/z9mWm\\\\nrJuNh+m5l320oBQY/Qq3A7wzdEfZw8qm/mIN0FCeoXH1L6B8xXWaAYBwhTEh6SSn\\\\nZHlO1Xu1JWDmAvBCi0RO5aRSKM8q9QEkvvHP4yweAtK3N8+aAbZ7ovaDhyGz8r6r\\\\nzhU1b8Uo0Z2ysf503WqzQgIajr7Fry7/kUwpgQIDAQABAoIBADwJp80Ko1xHPZDy\\\\nfcCKBDfIuPvkmSW6KumbsLMaQv1aGdHDwwTGv3t0ixSay8CGlxMRtRDyZPib6SvQ\\\\n6OH/lpfpbMdW2ErkksgtoIKBVrDilfrcAvrNZu7NxRNbhCSvN8q0s4ICecjbbVQh\\\\nnueSdlA6vGXbW58BHMq68uRbHkP+k+mM9U0mDJ1HMch67wlg5GbayVRt63H7R2+r\\\\nVxcna7B80J/lCEjIYZznawgiTvp3MSanTglqAYi+m1EcSsP14bJIB9vgaxS79kTu\\\\noiSo93leJbBvuGo8QEiUqTwMw4tDksmkLsoqNKQ1q9P7LZ9DGcujtPy4EZsamSJT\\\\ny8OJt0ECgYEA2lxOxJsQk2kI325JgKFjo92mQeUObIvPfSNWUIZQDTjniOI6Gv63\\\\nGLWVFrZcvQBWjMEQraJA9xjPbblV8PtfO87MiJGLWCHFxmPz2dzoedN+2Coxom8m\\\\nV95CLz8QUShuao6u/RYcvUaZEoYs5bHcTmy5sBK80JyEmafJPtCQVxMCgYEAy3ar\\\\nZr3yv4xRPEPMat4rseswmuMooSaK3SKub19WFI5IAtB/e7qR1Rj9JhOGcZz+OQrl\\\\nT78O2OFYlgOIkJPvRMrPpK5V9lslc7tz1FSh3BZMRGq5jSyD7ETSOQ0c8T2O/s7v\\\\nbeEPbVbDe4mwvM24XByH0GnWveVxaDl51ABD65sCgYB3ZAspUkOA5egVCh8kNpnd\\\\nSd6SnuQBE3ySRlT2WEnCwP9Ph6oPgn+oAfiPX4xbRqkL8q/k0BdHQ4h+zNwhk7+h\\\\nWtPYRAP1Xxnc/F+jGjb+DVaIaKGU18MWPg7f+FI6nampl3Q0KvfxwX0GdNhtio8T\\\\nTj1E+SnFwh56SRQuxSh2gwKBgHKjlIO5NtNSflsUYFM+hyQiPiqnHzddfhSG+/3o\\\\nm5nNaSmczJesUYreH5San7/YEy2UxAugvP7aSY2MxB+iGsiJ9WD2kZzTUlDZJ7RV\\\\nUzWsoqBR+eZfVJ2FUWWvy8TpSG6trh4dFxImNtKejCR1TREpSiTV3Zb1dmahK9GV\\\\nrK9NAoGAbBxRLoC01xfxCTgt5BDiBcFVh4fp5yYKwavJPLzHSpuDOrrI9jDn1oKN\\\\nonq5sDU1i391zfQvdrbX4Ova48BN+B7p63FocP/MK5tyyBoT8zQEk2+vWDOw7H/Z\\\\nu5dTCPxTIsoIwUw1I+7yIxqJzLPFgR2gVBwY1ra/8iAqCj+zeBw=\\\\n-----END RSA PRIVATE KEY-----\\\\n\\\"\",\n \"webhook_secret\" : \"\\\"6fba8f2fc8a7e8f2cca5577eddd82ca7586b3b6b\\\"\",\n \"client_secret\" : \"\\\"1d4b2097ac622ba702d19de498f005747a8b21d3\\\"\",\n \"id\" : 37,\n \"events\" : [ \"label\", \"deployment\" ],\n \"slug\" : \"probot-owners\",\n \"node_id\" : \"MDExOkludGVncmF0aW9uMQ==\"\n },\n \"updated_at\" : \"2011-04-14T16:00:49Z\",\n \"html_url\" : \"https://web.example.mocklab.io/147045\",\n \"reactions\" : {\n \"confused\" : 8642247520620027399,\n \"-1\" : 4994563316973675741,\n \"+1\" : 4088728225763380511,\n \"total_count\" : 87859459056807930,\n \"rocket\" : 7032893132805411935,\n \"hooray\" : 493993543849225432,\n \"eyes\" : 6088721284366422431,\n \"heart\" : 2329934474177515952,\n \"laugh\" : 4171489290731529971,\n \"url\" : \"https://web.example.mocklab.io/546112\"\n },\n \"id\" : 42,\n \"user\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"armand.legros\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"pfbuwt3fno9g4xxdw4ldxyuavvp0pbfnj9svm79yfp9d0m4h10gghh4keym8qws2vzr6hvg80r4df4g4feussr4umwf9surmvae\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"node_id\" : \"t0v8\"\n }\n },\n \"repo\" : {\n \"name\" : \"Dannie Hintz III\",\n \"id\" : 7910700846269214621,\n \"url\" : \"https://web.example.mocklab.io/366142\"\n },\n \"created_at\" : \"2022-07-18T04:15:48.27Z\",\n \"id\" : \"497y\",\n \"type\" : \"k8d4zcf7c6nfxgo7atubht0wxbvn2ywi9t8keaakvibykjjeof9unwfzvu475hei9gkudwzxjwtkzbjzcgu87qtf6drzzc5cckwy86c7nlko8t5ksoy3ier3goz1r1o6n21saczxs1wo5nq0axddukjksxariibwpuvccjiz037ujrc0edyrn8bg\"\n}, {\n \"actor\" : {\n \"display_login\" : \"s7k6h3v7861auz8vx5a2cdozq23utmflj740tayo4zao9beww0bfo3t4bgtdqjgd5i65vojm3kpl4v47sofc523g25nmwt6lo5y4gk25zmjxypo4pbw58wde2qyvkhuo7wow8is8\",\n \"avatar_url\" : \"https://s3.amazonaws.com/uifaces/faces/twitter/VinThomas/128.jpg\",\n \"id\" : 2566757298963331530,\n \"login\" : \"m3t195mr64s9jy36dqzk3dpse0bb1oojr47v31nbprj7drzu0d3v3529tjx96oac6g2j4e9zzn5\",\n \"gravatar_id\" : \"ov00\",\n \"url\" : \"https://web.example.mocklab.io/222740\"\n },\n \"public\" : true,\n \"org\" : {\n \"display_login\" : \"8xuml28ezvjf8gvm169fg54zf4b60kghhoueew885w5691hc8bilft94h7fdvxjxnmab4wel\",\n \"avatar_url\" : \"https://s3.amazonaws.com/uifaces/faces/twitter/hai_ninh_nguyen/128.jpg\",\n \"id\" : 5110976799529645411,\n \"login\" : \"7pcljmrop0x3dtdusvsvlfo7qod377x45\",\n \"gravatar_id\" : \"7bvp\",\n \"url\" : \"https://web.example.mocklab.io/582551\"\n },\n \"payload\" : {\n \"pages\" : [ {\n \"summary\" : \"Sapiente quasi earum pariatur. Sed harum iste ducimus. Est eaque est consequatur exercitationem quibusdam. Ut nobis est reiciendis aliquam et omnis eaque.\",\n \"html_url\" : \"https://web.example.mocklab.io/885931\",\n \"page_name\" : \"Berniece Douglas\",\n \"action\" : \"lwtup9wxtq2on89\",\n \"title\" : \"Sint et ex.\",\n \"sha\" : \"vjdtj4xrs3wvyrw8r0xw2prx8xxqnt49cvabllq4o40589q06ni3dfxe682bmdjj5ic8hwxxy2izkxcqjv3na7re81jak6wqv7gk9829cvfsyzo3n7z8ab8xc75or3laiv2rep99cw3qi3bqlvje1iiwg7jfhkvtwehckb\"\n } ],\n \"issue\" : {\n \"body_html\" : \"41dodwom01f6r5cwrpcn1kmbtldd9cheqq92r0aie2029ssgq6km4yyzij05u\",\n \"body_text\" : \"s4iaq4f4x5o2aa8027zl950j0bfpwshzyi9zry41dw4ebmze67vwql5zlkr6nnq229ucwhp6vzkmd8e6aee80gca6wjv0p24rp9hppr\",\n \"assignees\" : [ {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Cyril Roberts\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"2k71btbh8tq5zyfvs5ptkoe5mh3wtthfbmhqo2zusi9ji8db86dbwcu89kzlx0jrkgfl1yfv4opvz5npit2kf4z8o1ay80z6ppth6zadmupudlqbv9sdsz6z258zi9itax5bwnhiw4xcx4iyyzcdo7qsa37ukzzy75dvb4ggkrl0eq2nai99u39vm0ldy5k3800s2\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n } ],\n \"created_at\" : \"2011-04-22T13:33:48Z\",\n \"body\" : \"I'm having a problem with this.\",\n \"repository\" : {\n \"allow_forking\" : false,\n \"anonymous_access_enabled\" : true,\n \"is_template\" : true,\n \"stargazers_count\" : 80,\n \"pushed_at\" : \"2011-01-26T19:06:43Z\",\n \"language\" : \"b1y6ymbr25k9ga\",\n \"subscription_url\" : \"http://api.github.com/repos/octocat/Hello-World/subscription\",\n \"branches_url\" : \"http://api.github.com/repos/octocat/Hello-World/branches{/branch}\",\n \"allow_rebase_merge\" : true,\n \"issue_comment_url\" : \"http://api.github.com/repos/octocat/Hello-World/issues/comments{/number}\",\n \"labels_url\" : \"http://api.github.com/repos/octocat/Hello-World/labels{/name}\",\n \"permissions\" : {\n \"pull\" : false,\n \"maintain\" : true,\n \"admin\" : false,\n \"triage\" : false,\n \"push\" : false\n },\n \"subscribers_url\" : \"http://api.github.com/repos/octocat/Hello-World/subscribers\",\n \"releases_url\" : \"http://api.github.com/repos/octocat/Hello-World/releases{/id}\",\n \"svn_url\" : \"https://svn.github.com/octocat/Hello-World\",\n \"subscribers_count\" : 1165163900068356088,\n \"id\" : 42,\n \"master_branch\" : \"vf3g0c5j6w8bl7d2ewvc2436ytisump3zxgpu0bags5vx2q2m8ge682rk16mr39a3dmlxhwe5kgs\",\n \"forks\" : 8650218627609516399,\n \"allow_merge_commit\" : true,\n \"archive_url\" : \"http://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref}\",\n \"git_refs_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/refs{/sha}\",\n \"forks_url\" : \"http://api.github.com/repos/octocat/Hello-World/forks\",\n \"visibility\" : \"aumqhdfvxh6xcnoxg7aovfo5cjaf1ie5kuf3wtrixqp73rdw5llmymcp1gdb32n6q0w0gkpnt3xzuke3cz9plzd9muw8ywl4fclozatja4yh7om\",\n \"statuses_url\" : \"http://api.github.com/repos/octocat/Hello-World/statuses/{sha}\",\n \"network_count\" : 6600528549449905196,\n \"ssh_url\" : \"git@github.com:octocat/Hello-World.git\",\n \"license\" : {\n \"html_url\" : \"https://web.example.mocklab.io/291127\",\n \"name\" : \"MIT License\",\n \"spdx_id\" : \"MIT\",\n \"key\" : \"mit\",\n \"url\" : \"https://api.github.com/licenses/mit\",\n \"node_id\" : \"MDc6TGljZW5zZW1pdA==\"\n },\n \"full_name\" : \"octocat/Hello-World\",\n \"size\" : 108,\n \"template_repository\" : {\n \"anonymous_access_enabled\" : true,\n \"is_template\" : false,\n \"stargazers_count\" : 1884002274388502741,\n \"pushed_at\" : \"hn3o10e2hu2wqizhm90n4hzo6jj7s8p8lu5qy25cr58034d5wpb0rbxymir1zcv07kbsku4tnwfeeg0u594g1s1ietmen41aoogmrdbk1dz8z5xqka7prwgyexcyuvude99owmmmk5gb277mqxv1felj9uo6yyeelpabpaibk4x477ntjxdfm2s4k03xu4598uay7z\",\n \"language\" : \"1el9z3unq6ttpatq4ecfqznv6dfqvu5insfb21ji815xkn59i7zcoc371m5ge85uhh1ydtbw84abpu6ahisaphosmt2s53w4nqmaokv7pwotg9jv7uqrc94drjx8o75ytbyd4of9mkhsn7myi3p7qqxfj7ah609vnahddq6k9lr357x\",\n \"subscription_url\" : \"https://web.example.mocklab.io/649036\",\n \"branches_url\" : \"https://web.example.mocklab.io/586472\",\n \"allow_rebase_merge\" : true,\n \"issue_comment_url\" : \"https://web.example.mocklab.io/591952\",\n \"labels_url\" : \"https://web.example.mocklab.io/681281\",\n \"permissions\" : { },\n \"subscribers_url\" : \"https://web.example.mocklab.io/144523\",\n \"releases_url\" : \"https://web.example.mocklab.io/885445\",\n \"svn_url\" : \"https://web.example.mocklab.io/443635\",\n \"subscribers_count\" : 1128959299195268840,\n \"id\" : 1671538419319788225,\n \"allow_merge_commit\" : true,\n \"archive_url\" : \"https://web.example.mocklab.io/531470\",\n \"git_refs_url\" : \"https://web.example.mocklab.io/390269\",\n \"forks_url\" : \"https://web.example.mocklab.io/628887\",\n \"visibility\" : \"e4x21cp3h6agf0hw75z3p1m6zlgrufdo8j0bntvzde0qkinushx77nty4fsk5ron81yemlptczi7q1bbdusfvq8fm20vvhucnxz01hleer78lcdp2s7f2z6d10vjx\",\n \"statuses_url\" : \"https://web.example.mocklab.io/244326\",\n \"network_count\" : 4625308034536007635,\n \"ssh_url\" : \"https://web.example.mocklab.io/677497\",\n \"full_name\" : \"Francesco Boyle IV\",\n \"size\" : 7139621798333153807,\n \"languages_url\" : \"https://web.example.mocklab.io/187672\",\n \"clone_url\" : \"https://web.example.mocklab.io/252380\",\n \"collaborators_url\" : \"https://web.example.mocklab.io/367832\",\n \"html_url\" : \"https://web.example.mocklab.io/809787\",\n \"name\" : \"Jospeh Rohan\",\n \"pulls_url\" : \"https://web.example.mocklab.io/602127\",\n \"default_branch\" : \"lhd9hwnk8t6tsin3y1ado9aw27eezb5d6cd4mwxgcbikr4mnrihe3dvncriwbq9hmwrkdqfcov1i20t08qj3yknjnvb2wtwzmgejd091sc5iyng02k8c8bgntvwap0ticamfa0220wvitklv5a4p25akk7xanfaf5wbe\",\n \"hooks_url\" : \"https://web.example.mocklab.io/120566\",\n \"trees_url\" : \"https://web.example.mocklab.io/458087\",\n \"tags_url\" : \"https://web.example.mocklab.io/853927\",\n \"contributors_url\" : \"https://web.example.mocklab.io/842853\",\n \"private\" : false,\n \"has_downloads\" : true,\n \"notifications_url\" : \"https://web.example.mocklab.io/632610\",\n \"open_issues_count\" : 5982009506134611879,\n \"created_at\" : \"x888yzdmqf1xkph3t1wh\",\n \"description\" : \"Tempore quo iste repellat id. Dolores ipsum et nulla et at deserunt aut. Dicta omnis modi dolor quis sint deserunt. Eius atque dolor.\",\n \"deployments_url\" : \"https://web.example.mocklab.io/288807\",\n \"keys_url\" : \"https://web.example.mocklab.io/024845\",\n \"has_projects\" : false,\n \"archived\" : false,\n \"has_wiki\" : true,\n \"updated_at\" : \"2022-05-10T06:14:59.273779Z\",\n \"comments_url\" : \"https://web.example.mocklab.io/284639\",\n \"stargazers_url\" : \"https://web.example.mocklab.io/329317\",\n \"disabled\" : false,\n \"delete_branch_on_merge\" : false,\n \"git_url\" : \"https://web.example.mocklab.io/408343\",\n \"has_pages\" : false,\n \"owner\" : { },\n \"allow_squash_merge\" : true,\n \"commits_url\" : \"https://web.example.mocklab.io/522218\",\n \"compare_url\" : \"https://web.example.mocklab.io/131487\",\n \"git_commits_url\" : \"https://web.example.mocklab.io/002227\",\n \"topics\" : [ \"7p1pd4by7qwl\", \"pqj5dw7sl6418t2mudw8wvhnu0cx3fdz6s5pp0yzehnkvu2u63usatxaap8j84vyjrxqi8vyclhyw49054580sxfb6mmukinpjrc8jbdogmmjqo63p3ig5ixr3k4w6abkcvo8b5ohke8l9blskqkgnnmnljbmfoasnd6ptin1zih5\", \"gqq2jl32w130vfo0l1ezv6t\", \"pqd7jtgkk1433bldbi5g6qqyszwy00vamwv0xbtpn5s4wg5888n3awqmi8ri9e5hwn3mjm2nd9b5as\", \"z4qj5\", \"kn9l6dsia8yhsrhvbci0a3vm2v6coa7vwp0o6pa7p4i1dk5uv7820sc2y2hhf8bu0heerpbz20c8fnl6huqdc1pdh4kkulsddcdqo7mns4tgf8kdhabknt24c7st0r19y99ayai5\", \"s2ne36d0sfnmi5sb2vbqrpt4\", \"wtcl6spsepgrll8tvkrzq9rp8mhpckgskcsm7k5hyl0rxdo1ve9oihrhm6ia61z8u2uwriau4yrcl17e7hxnkbu1hotxi9u0sr4h3o9do2bj21c91xmoqmdurfbfsevvkyd3qdpv1h7\" ],\n \"blobs_url\" : \"https://web.example.mocklab.io/320692\",\n \"git_tags_url\" : \"https://web.example.mocklab.io/004432\",\n \"merges_url\" : \"https://web.example.mocklab.io/420502\",\n \"downloads_url\" : \"https://web.example.mocklab.io/772836\",\n \"has_issues\" : true,\n \"url\" : \"https://web.example.mocklab.io/719845\",\n \"contents_url\" : \"https://web.example.mocklab.io/677392\",\n \"mirror_url\" : \"https://web.example.mocklab.io/328816\",\n \"milestones_url\" : \"https://web.example.mocklab.io/821016\",\n \"teams_url\" : \"https://web.example.mocklab.io/759363\",\n \"fork\" : true,\n \"issues_url\" : \"https://web.example.mocklab.io/975804\",\n \"events_url\" : \"https://web.example.mocklab.io/368260\",\n \"issue_events_url\" : \"https://web.example.mocklab.io/361970\",\n \"assignees_url\" : \"https://web.example.mocklab.io/181560\",\n \"watchers_count\" : 7237088351537922624,\n \"forks_count\" : 7882497161458162622,\n \"homepage\" : \"77xyxa2zqjqardxobiv3jbrm9tra7fsxu7vclekxwg0yl9ngu1c8tvd82\",\n \"node_id\" : \"sx93\"\n },\n \"languages_url\" : \"http://api.github.com/repos/octocat/Hello-World/languages\",\n \"clone_url\" : \"https://github.com/octocat/Hello-World.git\",\n \"collaborators_url\" : \"http://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator}\",\n \"html_url\" : \"https://github.com/octocat/Hello-World\",\n \"name\" : \"Team Environment\",\n \"pulls_url\" : \"http://api.github.com/repos/octocat/Hello-World/pulls{/number}\",\n \"default_branch\" : \"master\",\n \"hooks_url\" : \"http://api.github.com/repos/octocat/Hello-World/hooks\",\n \"trees_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/trees{/sha}\",\n \"tags_url\" : \"http://api.github.com/repos/octocat/Hello-World/tags\",\n \"contributors_url\" : \"http://api.github.com/repos/octocat/Hello-World/contributors\",\n \"private\" : false,\n \"has_downloads\" : true,\n \"notifications_url\" : \"http://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating}\",\n \"open_issues_count\" : 0,\n \"created_at\" : \"2011-01-26T19:01:12Z\",\n \"description\" : \"This your first repo!\",\n \"watchers\" : 8090356853338521147,\n \"deployments_url\" : \"http://api.github.com/repos/octocat/Hello-World/deployments\",\n \"keys_url\" : \"http://api.github.com/repos/octocat/Hello-World/keys{/key_id}\",\n \"has_projects\" : true,\n \"archived\" : false,\n \"has_wiki\" : true,\n \"updated_at\" : \"2011-01-26T19:14:43Z\",\n \"comments_url\" : \"http://api.github.com/repos/octocat/Hello-World/comments{/number}\",\n \"stargazers_url\" : \"http://api.github.com/repos/octocat/Hello-World/stargazers\",\n \"disabled\" : true,\n \"delete_branch_on_merge\" : false,\n \"git_url\" : \"git:github.com/octocat/Hello-World.git\",\n \"has_pages\" : true,\n \"owner\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Isaiah Nicolas\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"ge98ryvpqqkindr5mt4wn4ugkws4igay6sr9acvjmugnh0yj59oo0vxfsa049qkey7xxzes82nhji176w71tp5905j2yxbvd6ta4lorpv1ekmfc6xvn8dhoi2wz7ur2b5gbn\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"allow_squash_merge\" : true,\n \"commits_url\" : \"http://api.github.com/repos/octocat/Hello-World/commits{/sha}\",\n \"compare_url\" : \"http://api.github.com/repos/octocat/Hello-World/compare/{base}...{head}\",\n \"git_commits_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/commits{/sha}\",\n \"topics\" : [ \"b090o40sbi6kxuabjhes3xgk9ugkhg53xsjow2wl3h7yxzghaz7rkadv1y9ixihj1a4dy1gow619qu4znie3k8pbsu1z5mhgc55ft9tuyzva6t9p6o22qirkvfcbees7hzy0xdpq2azv868esap7gdnhlytjqlzctbjdil6uc8bu0x3vlwhatbqbb9dm60pu\", \"nzwa3nlmijvzt3ystybuu4cwx6wj8vp6e1bj1iqv2j6hj0vjhibg3pmu3dd8yh4obnjc9fgabfyquw9cpj6ssbgnfndjvnr27c2gty2z7jv4h2t1ixnl784wpyslaadie1xvkexanb0z5rnk\", \"t57jresc3bvdyrlk55k4r39t6jn02ltjwag4h3lyhbw25y7svysmarw2dn9bnp0jlndotg4gg08wb7n8lo6qkunxradx98b\", \"73qikcicwivnbgsrnr064j040fwtskiutkhf5v263fw8aedpyh65lfcsgbi7aa353fsd6uf1ukr4edgpruk8v13eb0sy0vw7bf4df1hk1qsb2llyxyznzy9bbqxl44qo35174gcrgs6s3eskomldtdaqykhqvj39e5m7o7gvo8exph90ca2kxiqbknpst2hpx2r9w3dr\", \"yqiqkkkgii3m7zao9xru3nof1yit4yf55zrw8gp16bb0ojoczxepyjyp3nos\", \"pdyccsi7qxscwwqt6d5f4f4lm7e4ukdgp3me9vunefg9n4pqo2pdnk9msksildcs736abeqjl72bw08133bxw17u6devtxpur2uzpb0z47lpbo48a0nzx37j3s3j89ske3srxrmz72drrjvl9iv2wuc2k111jgdkny2qlmjrh10iea7ah4xbmiusjax\" ],\n \"blobs_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/blobs{/sha}\",\n \"git_tags_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/tags{/sha}\",\n \"merges_url\" : \"http://api.github.com/repos/octocat/Hello-World/merges\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:42Z\\\"\",\n \"downloads_url\" : \"http://api.github.com/repos/octocat/Hello-World/downloads\",\n \"has_issues\" : true,\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World\",\n \"contents_url\" : \"http://api.github.com/repos/octocat/Hello-World/contents/{+path}\",\n \"mirror_url\" : \"git:git.example.com/octocat/Hello-World\",\n \"milestones_url\" : \"http://api.github.com/repos/octocat/Hello-World/milestones{/number}\",\n \"teams_url\" : \"http://api.github.com/repos/octocat/Hello-World/teams\",\n \"fork\" : false,\n \"issues_url\" : \"http://api.github.com/repos/octocat/Hello-World/issues{/number}\",\n \"events_url\" : \"http://api.github.com/repos/octocat/Hello-World/events\",\n \"issue_events_url\" : \"http://api.github.com/repos/octocat/Hello-World/issues/events{/number}\",\n \"organization\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Fernando Sipes\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"izcczy4nre9aqj4pfjaw303qey5584e6cj38pqtkle8fw61jb798uhy0fz73l5kd9sjy5z5jzg17tfw0nab54miim792unolhq3yy1lct4w6cyfdcoklm3v04f7i4c00s9eodwhpqtekxvf5ix0mn6enbvxbt69vy\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"assignees_url\" : \"http://api.github.com/repos/octocat/Hello-World/assignees{/user}\",\n \"open_issues\" : 8397496604993432452,\n \"watchers_count\" : 80,\n \"forks_count\" : 9,\n \"homepage\" : \"https://github.com\",\n \"node_id\" : \"MDEwOlJlcG9zaXRvcnkxMjk2MjY5\"\n },\n \"title\" : \"Found a bug\",\n \"author_association\" : \"OWNER\",\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347/labels{/name}\",\n \"number\" : 1347,\n \"performed_via_github_app\" : {\n \"owner\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Iva Weimann\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"1pqlch0m7la6o7k8uktrnpm2k9j1ni2icet5dt4rzub55aehcs79e8uy4j0df99ka633ald\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"installations_count\" : 5,\n \"created_at\" : \"2017-07-08T16:18:44-04:00\",\n \"description\" : \"The description of the app.\",\n \"client_id\" : \"\\\"Iv1.25b5d1e65ffc4022\\\"\",\n \"external_url\" : \"https://example.com\",\n \"updated_at\" : \"2017-07-08T16:18:44-04:00\",\n \"permissions\" : {\n \"deployments\" : \"write\",\n \"issues\" : \"read\"\n },\n \"html_url\" : \"https://github.com/apps/super-ci\",\n \"name\" : \"Probot Owners\",\n \"pem\" : \"\\\"-----BEGIN RSA PRIVATE KEY-----\\\\nMIIEogIBAAKCAQEArYxrNYD/iT5CZVpRJu4rBKmmze3PVmT/gCo2ATUvDvZTPTey\\\\nxcGJ3vvrJXazKk06pN05TN29o98jrYz4cengG3YGsXPNEpKsIrEl8NhbnxapEnM9\\\\nJCMRe0P5JcPsfZlX6hmiT7136GRWiGOUba2X9+HKh8QJVLG5rM007TBER9/z9mWm\\\\nrJuNh+m5l320oBQY/Qq3A7wzdEfZw8qm/mIN0FCeoXH1L6B8xXWaAYBwhTEh6SSn\\\\nZHlO1Xu1JWDmAvBCi0RO5aRSKM8q9QEkvvHP4yweAtK3N8+aAbZ7ovaDhyGz8r6r\\\\nzhU1b8Uo0Z2ysf503WqzQgIajr7Fry7/kUwpgQIDAQABAoIBADwJp80Ko1xHPZDy\\\\nfcCKBDfIuPvkmSW6KumbsLMaQv1aGdHDwwTGv3t0ixSay8CGlxMRtRDyZPib6SvQ\\\\n6OH/lpfpbMdW2ErkksgtoIKBVrDilfrcAvrNZu7NxRNbhCSvN8q0s4ICecjbbVQh\\\\nnueSdlA6vGXbW58BHMq68uRbHkP+k+mM9U0mDJ1HMch67wlg5GbayVRt63H7R2+r\\\\nVxcna7B80J/lCEjIYZznawgiTvp3MSanTglqAYi+m1EcSsP14bJIB9vgaxS79kTu\\\\noiSo93leJbBvuGo8QEiUqTwMw4tDksmkLsoqNKQ1q9P7LZ9DGcujtPy4EZsamSJT\\\\ny8OJt0ECgYEA2lxOxJsQk2kI325JgKFjo92mQeUObIvPfSNWUIZQDTjniOI6Gv63\\\\nGLWVFrZcvQBWjMEQraJA9xjPbblV8PtfO87MiJGLWCHFxmPz2dzoedN+2Coxom8m\\\\nV95CLz8QUShuao6u/RYcvUaZEoYs5bHcTmy5sBK80JyEmafJPtCQVxMCgYEAy3ar\\\\nZr3yv4xRPEPMat4rseswmuMooSaK3SKub19WFI5IAtB/e7qR1Rj9JhOGcZz+OQrl\\\\nT78O2OFYlgOIkJPvRMrPpK5V9lslc7tz1FSh3BZMRGq5jSyD7ETSOQ0c8T2O/s7v\\\\nbeEPbVbDe4mwvM24XByH0GnWveVxaDl51ABD65sCgYB3ZAspUkOA5egVCh8kNpnd\\\\nSd6SnuQBE3ySRlT2WEnCwP9Ph6oPgn+oAfiPX4xbRqkL8q/k0BdHQ4h+zNwhk7+h\\\\nWtPYRAP1Xxnc/F+jGjb+DVaIaKGU18MWPg7f+FI6nampl3Q0KvfxwX0GdNhtio8T\\\\nTj1E+SnFwh56SRQuxSh2gwKBgHKjlIO5NtNSflsUYFM+hyQiPiqnHzddfhSG+/3o\\\\nm5nNaSmczJesUYreH5San7/YEy2UxAugvP7aSY2MxB+iGsiJ9WD2kZzTUlDZJ7RV\\\\nUzWsoqBR+eZfVJ2FUWWvy8TpSG6trh4dFxImNtKejCR1TREpSiTV3Zb1dmahK9GV\\\\nrK9NAoGAbBxRLoC01xfxCTgt5BDiBcFVh4fp5yYKwavJPLzHSpuDOrrI9jDn1oKN\\\\nonq5sDU1i391zfQvdrbX4Ova48BN+B7p63FocP/MK5tyyBoT8zQEk2+vWDOw7H/Z\\\\nu5dTCPxTIsoIwUw1I+7yIxqJzLPFgR2gVBwY1ra/8iAqCj+zeBw=\\\\n-----END RSA PRIVATE KEY-----\\\\n\\\"\",\n \"webhook_secret\" : \"\\\"6fba8f2fc8a7e8f2cca5577eddd82ca7586b3b6b\\\"\",\n \"client_secret\" : \"\\\"1d4b2097ac622ba702d19de498f005747a8b21d3\\\"\",\n \"id\" : 37,\n \"events\" : [ \"label\", \"deployment\" ],\n \"slug\" : \"probot-owners\",\n \"node_id\" : \"MDExOkludGVncmF0aW9uMQ==\"\n },\n \"updated_at\" : \"2011-04-22T13:33:48Z\",\n \"comments_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347/comments\",\n \"active_lock_reason\" : \"too heated\",\n \"id\" : 1,\n \"repository_url\" : \"https://api.github.com/repos/octocat/Hello-World\",\n \"state\" : \"open\",\n \"locked\" : true,\n \"timeline_url\" : \"https://web.example.mocklab.io/584077\",\n \"pull_request\" : {\n \"patch_url\" : \"https://web.example.mocklab.io/589663\",\n \"html_url\" : \"https://web.example.mocklab.io/527671\",\n \"merged_at\" : \"2023-07-06T15:04:38.276Z\",\n \"diff_url\" : \"https://web.example.mocklab.io/831781\",\n \"url\" : \"https://web.example.mocklab.io/945906\"\n },\n \"closed_at\" : \"2023-07-04T04:29:33.276Z\",\n \"comments\" : 0,\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347\",\n \"labels\" : [ {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n }, {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n }, {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n }, {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n }, {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n }, {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n } ],\n \"milestone\" : {\n \"creator\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Lucius McKenzie\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"zjoew147rr86lxkbilencue9xkecemem7xuxffngi0odm7xqpcnefjgzr0qujwbz2df6kfdr9cdzien7fjaaqm3vfls1vuqcuov\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"closed_at\" : \"2013-02-12T13:22:01Z\",\n \"created_at\" : \"2011-04-10T20:09:31Z\",\n \"description\" : \"Tracking milestone for version 1.0\",\n \"closed_issues\" : 8,\n \"title\" : \"v1.0\",\n \"due_on\" : \"2012-10-09T23:39:01Z\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones/1\",\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones/1/labels\",\n \"number\" : 42,\n \"updated_at\" : \"2014-03-03T18:58:10Z\",\n \"html_url\" : \"https://github.com/octocat/Hello-World/milestones/v1.0\",\n \"id\" : 1002604,\n \"state\" : \"open\",\n \"open_issues\" : 4,\n \"node_id\" : \"MDk6TWlsZXN0b25lMTAwMjYwNA==\"\n },\n \"events_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347/events\",\n \"html_url\" : \"https://github.com/octocat/Hello-World/issues/1347\",\n \"assignee\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Joette Rath\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"d7ywonzilz\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"user\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"tyler.ledner\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"z2uo0tuzbvfo7e75fxssvtj5amit0kd8gfxzgto3lmsum707c8q6tociz8haw87f7lf\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"node_id\" : \"MDU6SXNzdWUx\"\n },\n \"action\" : \"hfd0b1ofugg5ot4lzoxi6zo2pc8utg5apnbc49sek4rl9h3afp6wosoxqhthx0exuual5w4rpqhh6kzuuyfelt5t3y3pofy49aqrytvqww4a068dt7w2zfk09125uf57k1r7uhzbxtvl2gtv60geuyyjutd124jwx1mwebzhg1nf5iwr\",\n \"comment\" : {\n \"issue_url\" : \"https://web.example.mocklab.io/790399\",\n \"body_html\" : \"tftnk39ld7js1bchqpnjeux7xvs505f96f04lw1e6lt9vou12iq8u87t5ia8h2tglf5ytouh7h4o49sc5rl77r1ujt06kxvwyl7mrolzu4batkce5k4joh\",\n \"body_text\" : \"mb7f1rigu43gekp4hhu3vgho05w1ccom7zs3q4vknzi9z9qr40bmrjlsgo8nlxjzmp7f2l7mnocy03lt8pwg7z4190kwz1j2rs73oqfeajn38qvmfysygm8e7sdfz88edcwqk769kxa2oizqufjvl2f6egyhkuuv\",\n \"created_at\" : \"2011-04-14T16:00:49Z\",\n \"body\" : \"What version of Safari were you using when you observed this bug?\",\n \"url\" : \"https://api.github.com/repositories/42/issues/comments/1\",\n \"author_association\" : \"OWNER\",\n \"performed_via_github_app\" : {\n \"owner\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Cristopher Renner\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"ao1coa0oh3dvtzxuj90eai4s6i3wssasohvcgweblpwkrcm8j526sbk9s6escymnrtpv5h93zctcw8pt5fd8mwvxmhlxxupevmzkww1060ek2d2jbo3y3npw8rz5nb41bop096qa4yykcth0ov7c0epzy9wphfrtl6027k75kdub8dhfw\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"installations_count\" : 5,\n \"created_at\" : \"2017-07-08T16:18:44-04:00\",\n \"description\" : \"The description of the app.\",\n \"client_id\" : \"\\\"Iv1.25b5d1e65ffc4022\\\"\",\n \"external_url\" : \"https://example.com\",\n \"updated_at\" : \"2017-07-08T16:18:44-04:00\",\n \"permissions\" : {\n \"deployments\" : \"write\",\n \"issues\" : \"read\"\n },\n \"html_url\" : \"https://github.com/apps/super-ci\",\n \"name\" : \"Probot Owners\",\n \"pem\" : \"\\\"-----BEGIN RSA PRIVATE KEY-----\\\\nMIIEogIBAAKCAQEArYxrNYD/iT5CZVpRJu4rBKmmze3PVmT/gCo2ATUvDvZTPTey\\\\nxcGJ3vvrJXazKk06pN05TN29o98jrYz4cengG3YGsXPNEpKsIrEl8NhbnxapEnM9\\\\nJCMRe0P5JcPsfZlX6hmiT7136GRWiGOUba2X9+HKh8QJVLG5rM007TBER9/z9mWm\\\\nrJuNh+m5l320oBQY/Qq3A7wzdEfZw8qm/mIN0FCeoXH1L6B8xXWaAYBwhTEh6SSn\\\\nZHlO1Xu1JWDmAvBCi0RO5aRSKM8q9QEkvvHP4yweAtK3N8+aAbZ7ovaDhyGz8r6r\\\\nzhU1b8Uo0Z2ysf503WqzQgIajr7Fry7/kUwpgQIDAQABAoIBADwJp80Ko1xHPZDy\\\\nfcCKBDfIuPvkmSW6KumbsLMaQv1aGdHDwwTGv3t0ixSay8CGlxMRtRDyZPib6SvQ\\\\n6OH/lpfpbMdW2ErkksgtoIKBVrDilfrcAvrNZu7NxRNbhCSvN8q0s4ICecjbbVQh\\\\nnueSdlA6vGXbW58BHMq68uRbHkP+k+mM9U0mDJ1HMch67wlg5GbayVRt63H7R2+r\\\\nVxcna7B80J/lCEjIYZznawgiTvp3MSanTglqAYi+m1EcSsP14bJIB9vgaxS79kTu\\\\noiSo93leJbBvuGo8QEiUqTwMw4tDksmkLsoqNKQ1q9P7LZ9DGcujtPy4EZsamSJT\\\\ny8OJt0ECgYEA2lxOxJsQk2kI325JgKFjo92mQeUObIvPfSNWUIZQDTjniOI6Gv63\\\\nGLWVFrZcvQBWjMEQraJA9xjPbblV8PtfO87MiJGLWCHFxmPz2dzoedN+2Coxom8m\\\\nV95CLz8QUShuao6u/RYcvUaZEoYs5bHcTmy5sBK80JyEmafJPtCQVxMCgYEAy3ar\\\\nZr3yv4xRPEPMat4rseswmuMooSaK3SKub19WFI5IAtB/e7qR1Rj9JhOGcZz+OQrl\\\\nT78O2OFYlgOIkJPvRMrPpK5V9lslc7tz1FSh3BZMRGq5jSyD7ETSOQ0c8T2O/s7v\\\\nbeEPbVbDe4mwvM24XByH0GnWveVxaDl51ABD65sCgYB3ZAspUkOA5egVCh8kNpnd\\\\nSd6SnuQBE3ySRlT2WEnCwP9Ph6oPgn+oAfiPX4xbRqkL8q/k0BdHQ4h+zNwhk7+h\\\\nWtPYRAP1Xxnc/F+jGjb+DVaIaKGU18MWPg7f+FI6nampl3Q0KvfxwX0GdNhtio8T\\\\nTj1E+SnFwh56SRQuxSh2gwKBgHKjlIO5NtNSflsUYFM+hyQiPiqnHzddfhSG+/3o\\\\nm5nNaSmczJesUYreH5San7/YEy2UxAugvP7aSY2MxB+iGsiJ9WD2kZzTUlDZJ7RV\\\\nUzWsoqBR+eZfVJ2FUWWvy8TpSG6trh4dFxImNtKejCR1TREpSiTV3Zb1dmahK9GV\\\\nrK9NAoGAbBxRLoC01xfxCTgt5BDiBcFVh4fp5yYKwavJPLzHSpuDOrrI9jDn1oKN\\\\nonq5sDU1i391zfQvdrbX4Ova48BN+B7p63FocP/MK5tyyBoT8zQEk2+vWDOw7H/Z\\\\nu5dTCPxTIsoIwUw1I+7yIxqJzLPFgR2gVBwY1ra/8iAqCj+zeBw=\\\\n-----END RSA PRIVATE KEY-----\\\\n\\\"\",\n \"webhook_secret\" : \"\\\"6fba8f2fc8a7e8f2cca5577eddd82ca7586b3b6b\\\"\",\n \"client_secret\" : \"\\\"1d4b2097ac622ba702d19de498f005747a8b21d3\\\"\",\n \"id\" : 37,\n \"events\" : [ \"label\", \"deployment\" ],\n \"slug\" : \"probot-owners\",\n \"node_id\" : \"MDExOkludGVncmF0aW9uMQ==\"\n },\n \"updated_at\" : \"2011-04-14T16:00:49Z\",\n \"html_url\" : \"https://web.example.mocklab.io/242011\",\n \"reactions\" : {\n \"confused\" : 1358662427173815428,\n \"-1\" : 7505318163941039432,\n \"+1\" : 6100365130075385039,\n \"total_count\" : 7968025967716734073,\n \"rocket\" : 5585750291254846983,\n \"hooray\" : 1196394104619280727,\n \"eyes\" : 6610922748138390890,\n \"heart\" : 9221875217014788774,\n \"laugh\" : 3796760489678561219,\n \"url\" : \"https://web.example.mocklab.io/991227\"\n },\n \"id\" : 42,\n \"user\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"wilson.haley\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"t7jodvuvzw8msg16zspeohe6sp21c5pmuasjx03r0zmiupmg7yg3von5gmf6tvy1tjmfzrums3a5sp2qmserib\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"node_id\" : \"hlh1\"\n }\n },\n \"repo\" : {\n \"name\" : \"Ericka McKenzie\",\n \"id\" : 455683674266142872,\n \"url\" : \"https://web.example.mocklab.io/962023\"\n },\n \"created_at\" : \"2023-01-03T22:19:45.277Z\",\n \"id\" : \"0hjt\",\n \"type\" : \"k5ibn33w55tnlr21xx4tv90xazgjox4m6mo865f3pydvd56k64mr2t9rbskas7uzose0az21v1x4adv6ur1fbfwmnvq9s5wp2sbxziqt7kiu6u10hpet8r5trn7k0m4gu6li89acg18p4k962fdugytxuzrlt7c2dt27z0vaq6z930mk1q9l7fv6hgl9l6c0y3nd3\"\n} ]", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "54e43772-9d7a-498f-b156-9912738fdb0d", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.278678Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "activity/list-public-events-for-user", + "schema": { + "items": { + "$ref": "#/components/schemas/event" + }, + "type": "array" + } + } + } + }, + "insertionIndex": 26 + }, + { + "id": "561dc02e-bb46-49e0-bdce-bd01b991a5ab", + "name": "List organization events for the authenticated user", + "request": { + "urlPath": "/users/boyce.kshlerin/events/orgs/ja9e2y1g5h0m2rgx5viu8w4r0tbz7wj5va29hl7", + "method": "GET" + }, + "response": { + "status": 200, + "body": "[ {\n \"actor\" : {\n \"display_login\" : \"i8icikj53o9cu2es6avvx5z1uxodap4rucbhzqolfyibpol5biajy74txo9kzrhplq5x9cpm7bwjxqpz0300ypxwi0ddkyc9qaktk8kzqf8rjrxe\",\n \"avatar_url\" : \"https://s3.amazonaws.com/uifaces/faces/twitter/gonzalorobaina/128.jpg\",\n \"id\" : 8576873288399959956,\n \"login\" : \"tgxxel8s3kydxzf9fpimsuin9gnskf7dmtohyyz5bqsjorjjkn6xdz11i7argbny5a7cg9osumulaggbt3xxl2cqvxxckgrjtvyy3v6s6kuuu0v61aqh0lh2czzvhgm45ox\",\n \"gravatar_id\" : \"l0my\",\n \"url\" : \"https://web.example.mocklab.io/571124\"\n },\n \"public\" : true,\n \"org\" : {\n \"display_login\" : \"dxnzqankgy1m1r67em\",\n \"avatar_url\" : \"https://s3.amazonaws.com/uifaces/faces/twitter/lososina/128.jpg\",\n \"id\" : 3935367113865940365,\n \"login\" : \"7qnlxtizxbzoumayo5zfmb90ggld8av8q6pz7xsfiolja857pjy8johdwpgib4gsi75g717aaz6w28a3e9o6o4wysvfb4l\",\n \"gravatar_id\" : \"99td\",\n \"url\" : \"https://web.example.mocklab.io/186343\"\n },\n \"payload\" : {\n \"pages\" : [ {\n \"summary\" : \"Voluptas omnis repellat nemo ullam in quis. Expedita quae impedit veritatis ea. Qui porro repudiandae placeat placeat maiores dolores. Officia unde quidem sunt recusandae facere autem.\",\n \"html_url\" : \"https://web.example.mocklab.io/545064\",\n \"page_name\" : \"Reed Kautzer\",\n \"action\" : \"gi091epitdrjjq59oh0qf\",\n \"title\" : \"Rem tempore quasi.\",\n \"sha\" : \"20gy7vvcpp5boux9h5ijy1mgk1hc64ckkrk8ce7ltvyltz6gipgqd5nf828a\"\n }, {\n \"summary\" : \"Dolore architecto consequatur ut beatae. Et molestias at cum et. Atque ea temporibus in voluptas rem expedita.\",\n \"html_url\" : \"https://web.example.mocklab.io/235202\",\n \"page_name\" : \"Ranae Parker Jr.\",\n \"action\" : \"xnmf60my2mmgy62xiuq959nvzuaks1q7hgjl7nz1tf4o0cpkphmw213iqk8k603r6z3u69eo9r3h8ot34k79yzwlg7hn1enyf7jndw01rf74ye62hn7460\",\n \"title\" : \"Omnis non nobis error.\",\n \"sha\" : \"a4ksdl10gupihf15a8dq1nhe40nicoluixenid0i4qont71i66cqlm1wd0w7k1rao28520bqje4sm\"\n }, {\n \"summary\" : \"Accusamus tempora minima sit commodi et expedita sed. Ipsum voluptatibus in expedita. Quas ut eos ipsam qui et. Cupiditate occaecati amet ullam rerum. Alias sint in perspiciatis quis ex exercitationem\",\n \"html_url\" : \"https://web.example.mocklab.io/249629\",\n \"page_name\" : \"Gay Osinski\",\n \"action\" : \"kr9icxll0vsgid2hvo4amgkijclyuecek1vwedccam7p0uoc09vz93m95p91yop0n7rwbfawmi4exudx5ktvt6w6dxlwz78pgg1ncgh8zjkyb5yrzxscfheenfipqssezmdnjjzhqpbtx4m3xtytlxo1qlwffm9alc7a99zyav5znil902gektrmaaiz\",\n \"title\" : \"Reiciendis excepturi natus.\",\n \"sha\" : \"8d8dudrxlt3toy2awpo0blu8dx9lfr4h000pmxsi93qgx9yh5e4r9uo0gpuz7jkv3kecywlytv82dzn0w2hj7ghx3ydvctwxqi3iv1bqnvd9gka5pfi41atk44q13rsl2q1v7tudx5t77xj1j7nbokr0s7nhv3fjxg2r2np7899y5\"\n } ],\n \"issue\" : {\n \"body_html\" : \"0xami6tsxrzi\",\n \"body_text\" : \"lvje0ifoahtl416b4kz21n5n7wizhfhotl48117ppbylamf9jyi5rry11tkvchoy7gt22ba53bneb011emaw6cthk1ts947rzz5xlwuptl0uxndlhendmj225y1s72sf2c4d2hmgexj3ml1l4k6hz69gv\",\n \"assignees\" : [ {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Mallory Cummerata\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"4nmuy5otza491vbs3u34t7dw8xmucoplcm\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n }, {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Joe Homenick\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"oiavh6xp2263amaubbeggg5het88yzec8uq8e3bt5pyy20di1mxjxle6c9r4633064sa1d40q710vb6z7rfdikgh1hfga12f8y4ylejklfnkvmkxf7are52qzm8hnu\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n } ],\n \"created_at\" : \"2011-04-22T13:33:48Z\",\n \"body\" : \"I'm having a problem with this.\",\n \"repository\" : {\n \"allow_forking\" : false,\n \"anonymous_access_enabled\" : true,\n \"is_template\" : true,\n \"stargazers_count\" : 80,\n \"pushed_at\" : \"2011-01-26T19:06:43Z\",\n \"language\" : \"13py8gl49wwdepwrzqzn7z9q0scajwm4nxdb6pc3tn35ctkflixmnsljoc0jtywwegx2lbmf7pxoie1wzasa7w7uuh2507c03mt0nqwcszbafpuv8iwek7mpg86tck0cim3o71u1hv28rh8oej9zsgf7bvw6hl13b44yttfsvvcpuzzrbvz817xz\",\n \"subscription_url\" : \"http://api.github.com/repos/octocat/Hello-World/subscription\",\n \"branches_url\" : \"http://api.github.com/repos/octocat/Hello-World/branches{/branch}\",\n \"allow_rebase_merge\" : true,\n \"issue_comment_url\" : \"http://api.github.com/repos/octocat/Hello-World/issues/comments{/number}\",\n \"labels_url\" : \"http://api.github.com/repos/octocat/Hello-World/labels{/name}\",\n \"permissions\" : {\n \"pull\" : false,\n \"maintain\" : false,\n \"admin\" : true,\n \"triage\" : false,\n \"push\" : false\n },\n \"subscribers_url\" : \"http://api.github.com/repos/octocat/Hello-World/subscribers\",\n \"releases_url\" : \"http://api.github.com/repos/octocat/Hello-World/releases{/id}\",\n \"svn_url\" : \"https://svn.github.com/octocat/Hello-World\",\n \"subscribers_count\" : 6059715888955949472,\n \"id\" : 42,\n \"master_branch\" : \"qs4xhfqrx751a309pz6iguapmw93s6vmjmmg\",\n \"forks\" : 2991995541944717309,\n \"allow_merge_commit\" : true,\n \"archive_url\" : \"http://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref}\",\n \"git_refs_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/refs{/sha}\",\n \"forks_url\" : \"http://api.github.com/repos/octocat/Hello-World/forks\",\n \"visibility\" : \"js3zw0odlc7copgh6tppowdvmxp86p34w8j26xjej5mas81j3iepw1zpf8r8t98wqdakn0odvgl8ams8r411bqkfoghp6yz5eztkwlrwbdtmwjfabg\",\n \"statuses_url\" : \"http://api.github.com/repos/octocat/Hello-World/statuses/{sha}\",\n \"network_count\" : 2355719793635752211,\n \"ssh_url\" : \"git@github.com:octocat/Hello-World.git\",\n \"license\" : {\n \"html_url\" : \"https://web.example.mocklab.io/621532\",\n \"name\" : \"MIT License\",\n \"spdx_id\" : \"MIT\",\n \"key\" : \"mit\",\n \"url\" : \"https://api.github.com/licenses/mit\",\n \"node_id\" : \"MDc6TGljZW5zZW1pdA==\"\n },\n \"full_name\" : \"octocat/Hello-World\",\n \"size\" : 108,\n \"template_repository\" : {\n \"anonymous_access_enabled\" : false,\n \"is_template\" : false,\n \"stargazers_count\" : 5039663499744288371,\n \"pushed_at\" : \"kg77unbai6wszwxydsr27mg9u1sp41erf4o0zws\",\n \"language\" : \"084zvpl9gf9xuloo66lcc1qms2ggj838t3iv5f5tunjy6hecdnlnfv23hc7\",\n \"subscription_url\" : \"https://web.example.mocklab.io/814971\",\n \"branches_url\" : \"https://web.example.mocklab.io/006425\",\n \"allow_rebase_merge\" : false,\n \"issue_comment_url\" : \"https://web.example.mocklab.io/947844\",\n \"labels_url\" : \"https://web.example.mocklab.io/279306\",\n \"permissions\" : { },\n \"subscribers_url\" : \"https://web.example.mocklab.io/224607\",\n \"releases_url\" : \"https://web.example.mocklab.io/752556\",\n \"svn_url\" : \"https://web.example.mocklab.io/275007\",\n \"subscribers_count\" : 3181060300408454669,\n \"id\" : 1223422375808835015,\n \"allow_merge_commit\" : false,\n \"archive_url\" : \"https://web.example.mocklab.io/744626\",\n \"git_refs_url\" : \"https://web.example.mocklab.io/998422\",\n \"forks_url\" : \"https://web.example.mocklab.io/867391\",\n \"visibility\" : \"1lrtg1vircwjcdcyic5lgn11zfvpcal70zrmpbcwtn6ukrkyj5fx8npbs8uwjda5whlk8x59fmdvqjvnb0s7cylmauagecgyxhfsua83u\",\n \"statuses_url\" : \"https://web.example.mocklab.io/233090\",\n \"network_count\" : 4968457249881449260,\n \"ssh_url\" : \"https://web.example.mocklab.io/856941\",\n \"full_name\" : \"Rory Howe\",\n \"size\" : 4653035783854636706,\n \"languages_url\" : \"https://web.example.mocklab.io/775893\",\n \"clone_url\" : \"https://web.example.mocklab.io/415839\",\n \"collaborators_url\" : \"https://web.example.mocklab.io/556425\",\n \"html_url\" : \"https://web.example.mocklab.io/325233\",\n \"name\" : \"Brandon Bayer\",\n \"pulls_url\" : \"https://web.example.mocklab.io/631761\",\n \"default_branch\" : \"uh958t0px4gql1dgbunelhzeedv9bzj5uf27feutq7rha1jcohsj3blgsza14zyttkfcqvp2jd8ngvoiqon88o2o1mamj6ahwyxmlcdjgmj0ud752ut4ui2vo2xj1xlkaiji0hqw5\",\n \"hooks_url\" : \"https://web.example.mocklab.io/002691\",\n \"trees_url\" : \"https://web.example.mocklab.io/013702\",\n \"tags_url\" : \"https://web.example.mocklab.io/957188\",\n \"contributors_url\" : \"https://web.example.mocklab.io/336127\",\n \"private\" : false,\n \"has_downloads\" : true,\n \"notifications_url\" : \"https://web.example.mocklab.io/926597\",\n \"open_issues_count\" : 4948946770666447846,\n \"created_at\" : \"pvzr4hz7l5zfbrujvv0cf9tx7pqunmldkfnhyknmaf1n6fkmuj9dyjm5q3c4t126jabqqalgke0d8ul52qtthq3tgflvwm4k64yjk4bnvjvy1yer8zeh03dyp8134qoj0\",\n \"description\" : \"Aut aliquam quibusdam eos. Delectus laudantium nesciunt. Sapiente quibusdam iusto.\",\n \"deployments_url\" : \"https://web.example.mocklab.io/177394\",\n \"keys_url\" : \"https://web.example.mocklab.io/033234\",\n \"has_projects\" : false,\n \"archived\" : false,\n \"has_wiki\" : true,\n \"updated_at\" : \"2022-09-03T08:00:59.217757Z\",\n \"comments_url\" : \"https://web.example.mocklab.io/401136\",\n \"stargazers_url\" : \"https://web.example.mocklab.io/305971\",\n \"disabled\" : true,\n \"delete_branch_on_merge\" : true,\n \"git_url\" : \"https://web.example.mocklab.io/340728\",\n \"has_pages\" : true,\n \"owner\" : { },\n \"allow_squash_merge\" : true,\n \"commits_url\" : \"https://web.example.mocklab.io/109062\",\n \"compare_url\" : \"https://web.example.mocklab.io/801411\",\n \"git_commits_url\" : \"https://web.example.mocklab.io/689114\",\n \"topics\" : [ \"jnug\", \"h40acft24cgtfhr6civii9yaify7m6vd7s1vv3dtgfatuwouo0vg7l2iy8ewhiymxxw1mnzfd8tre6ntlcjcsbpl9t0myapwsmi9gkx28tmcpd3cmz85bkwt4138duwcnnmn4vxbs8csxua5g4l52ga5fwv\", \"ntih1vz2l1tp5h8wne4joxiy5dhgyhhx6a1v0ru8r1wodbrrej2t8cgmn57xr2qtm9wj8f3\", \"83vj420fu4239mg989g7xrtzwibzigv11br98sv3ok513rb00xj7soj3cj7b5wxq9o5nnlamnvozso8j65xn01tin89hp6mxyodopwecrgado0isvp8hkn8mdbcwfeeb3130ptzyr86rwvywxsfklsnnh2cqdu3s3s8unlow5vv5zy8l8ke8yfs2\", \"r10lr1ge9a188fwwfmmqo1524n2lyo92d25ui74ltkcbdwjgbawsfvm5pqervfi1s29um23kp1lebq26tnd7oko7i2uvgekgzdxkuqgaf99pgjtvi0q3tddoa0a9odbjmr4y7fv02xj72quepn6cogv9l835hcbzyrzflekc2xwat\" ],\n \"blobs_url\" : \"https://web.example.mocklab.io/929733\",\n \"git_tags_url\" : \"https://web.example.mocklab.io/877486\",\n \"merges_url\" : \"https://web.example.mocklab.io/278671\",\n \"downloads_url\" : \"https://web.example.mocklab.io/480694\",\n \"has_issues\" : false,\n \"url\" : \"https://web.example.mocklab.io/587659\",\n \"contents_url\" : \"https://web.example.mocklab.io/327883\",\n \"mirror_url\" : \"https://web.example.mocklab.io/584714\",\n \"milestones_url\" : \"https://web.example.mocklab.io/456295\",\n \"teams_url\" : \"https://web.example.mocklab.io/946986\",\n \"fork\" : false,\n \"issues_url\" : \"https://web.example.mocklab.io/825621\",\n \"events_url\" : \"https://web.example.mocklab.io/558565\",\n \"issue_events_url\" : \"https://web.example.mocklab.io/038282\",\n \"assignees_url\" : \"https://web.example.mocklab.io/922404\",\n \"watchers_count\" : 3494570890260980803,\n \"forks_count\" : 2764503409154339258,\n \"homepage\" : \"qm0tz9g9whmxb2sf8ip3e8qbhajm7m3887i49o79uzvzc0lk71z8v2y5qa6nqo4\",\n \"node_id\" : \"96j0\"\n },\n \"languages_url\" : \"http://api.github.com/repos/octocat/Hello-World/languages\",\n \"clone_url\" : \"https://github.com/octocat/Hello-World.git\",\n \"collaborators_url\" : \"http://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator}\",\n \"html_url\" : \"https://github.com/octocat/Hello-World\",\n \"name\" : \"Team Environment\",\n \"pulls_url\" : \"http://api.github.com/repos/octocat/Hello-World/pulls{/number}\",\n \"default_branch\" : \"master\",\n \"hooks_url\" : \"http://api.github.com/repos/octocat/Hello-World/hooks\",\n \"trees_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/trees{/sha}\",\n \"tags_url\" : \"http://api.github.com/repos/octocat/Hello-World/tags\",\n \"contributors_url\" : \"http://api.github.com/repos/octocat/Hello-World/contributors\",\n \"private\" : false,\n \"has_downloads\" : true,\n \"notifications_url\" : \"http://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating}\",\n \"open_issues_count\" : 0,\n \"created_at\" : \"2011-01-26T19:01:12Z\",\n \"description\" : \"This your first repo!\",\n \"watchers\" : 1110189246638746782,\n \"deployments_url\" : \"http://api.github.com/repos/octocat/Hello-World/deployments\",\n \"keys_url\" : \"http://api.github.com/repos/octocat/Hello-World/keys{/key_id}\",\n \"has_projects\" : true,\n \"archived\" : false,\n \"has_wiki\" : true,\n \"updated_at\" : \"2011-01-26T19:14:43Z\",\n \"comments_url\" : \"http://api.github.com/repos/octocat/Hello-World/comments{/number}\",\n \"stargazers_url\" : \"http://api.github.com/repos/octocat/Hello-World/stargazers\",\n \"disabled\" : true,\n \"delete_branch_on_merge\" : false,\n \"git_url\" : \"git:github.com/octocat/Hello-World.git\",\n \"has_pages\" : true,\n \"owner\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Ruby Gerhold\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"t39c88sd9ujy6jg67c0fgs1md0xw5tt\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"allow_squash_merge\" : true,\n \"commits_url\" : \"http://api.github.com/repos/octocat/Hello-World/commits{/sha}\",\n \"compare_url\" : \"http://api.github.com/repos/octocat/Hello-World/compare/{base}...{head}\",\n \"git_commits_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/commits{/sha}\",\n \"topics\" : [ \"hj6oxa2blniwsql5rfvcmg4r8tfpqq12xzbpdzf6bvuvgkxk82p6v7a92cv2xuj087p708hr9317nquxj7gwo7pppy1bhgca3\", \"u7dkaf8ixzkfxlibay221wqkzgwnhp9acklak4zk73tujeshkp0tqufnbjp32kw9z3lytw3pb1353fmvmb8w1vx8wmhxlb43o7dqv922peakk2uxj9d8\", \"i36e5up3ro74nvyxg3niapt2p5348ni69yxu4ryhpcyeea0\", \"d9u958de30bq3hnzh2ts1pexey2\", \"ovww0rizooq52rok58feihesqtk0mv9rgy\" ],\n \"blobs_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/blobs{/sha}\",\n \"git_tags_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/tags{/sha}\",\n \"merges_url\" : \"http://api.github.com/repos/octocat/Hello-World/merges\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:42Z\\\"\",\n \"downloads_url\" : \"http://api.github.com/repos/octocat/Hello-World/downloads\",\n \"has_issues\" : true,\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World\",\n \"contents_url\" : \"http://api.github.com/repos/octocat/Hello-World/contents/{+path}\",\n \"mirror_url\" : \"git:git.example.com/octocat/Hello-World\",\n \"milestones_url\" : \"http://api.github.com/repos/octocat/Hello-World/milestones{/number}\",\n \"teams_url\" : \"http://api.github.com/repos/octocat/Hello-World/teams\",\n \"fork\" : true,\n \"issues_url\" : \"http://api.github.com/repos/octocat/Hello-World/issues{/number}\",\n \"events_url\" : \"http://api.github.com/repos/octocat/Hello-World/events\",\n \"issue_events_url\" : \"http://api.github.com/repos/octocat/Hello-World/issues/events{/number}\",\n \"organization\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Xuan VonRueden\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"ii3b2u477q2bcgwp3jc5wyz22hx8vpldtct707qark7fevc4lhqd0dys9ar90box0lo3t0x9tl0t54r533d7vcwd39clmes0t15vlsnx9i1c90ds3l96ui1xt13kwcxf2wxolb6h77rkt92w7lj438a3r8wqfhmh89lcopyuag8l9ix6\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"assignees_url\" : \"http://api.github.com/repos/octocat/Hello-World/assignees{/user}\",\n \"open_issues\" : 2142695402634093140,\n \"watchers_count\" : 80,\n \"forks_count\" : 9,\n \"homepage\" : \"https://github.com\",\n \"node_id\" : \"MDEwOlJlcG9zaXRvcnkxMjk2MjY5\"\n },\n \"title\" : \"Found a bug\",\n \"author_association\" : \"OWNER\",\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347/labels{/name}\",\n \"number\" : 1347,\n \"performed_via_github_app\" : {\n \"owner\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Sheldon Bauch\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"z3bhsb6ug2wdvxenq6z3cubfvo0pjoxc5w6c9ebnpsm10u7dftq73m8n\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"installations_count\" : 5,\n \"created_at\" : \"2017-07-08T16:18:44-04:00\",\n \"description\" : \"The description of the app.\",\n \"client_id\" : \"\\\"Iv1.25b5d1e65ffc4022\\\"\",\n \"external_url\" : \"https://example.com\",\n \"updated_at\" : \"2017-07-08T16:18:44-04:00\",\n \"permissions\" : {\n \"deployments\" : \"write\",\n \"issues\" : \"read\"\n },\n \"html_url\" : \"https://github.com/apps/super-ci\",\n \"name\" : \"Probot Owners\",\n \"pem\" : \"\\\"-----BEGIN RSA PRIVATE KEY-----\\\\nMIIEogIBAAKCAQEArYxrNYD/iT5CZVpRJu4rBKmmze3PVmT/gCo2ATUvDvZTPTey\\\\nxcGJ3vvrJXazKk06pN05TN29o98jrYz4cengG3YGsXPNEpKsIrEl8NhbnxapEnM9\\\\nJCMRe0P5JcPsfZlX6hmiT7136GRWiGOUba2X9+HKh8QJVLG5rM007TBER9/z9mWm\\\\nrJuNh+m5l320oBQY/Qq3A7wzdEfZw8qm/mIN0FCeoXH1L6B8xXWaAYBwhTEh6SSn\\\\nZHlO1Xu1JWDmAvBCi0RO5aRSKM8q9QEkvvHP4yweAtK3N8+aAbZ7ovaDhyGz8r6r\\\\nzhU1b8Uo0Z2ysf503WqzQgIajr7Fry7/kUwpgQIDAQABAoIBADwJp80Ko1xHPZDy\\\\nfcCKBDfIuPvkmSW6KumbsLMaQv1aGdHDwwTGv3t0ixSay8CGlxMRtRDyZPib6SvQ\\\\n6OH/lpfpbMdW2ErkksgtoIKBVrDilfrcAvrNZu7NxRNbhCSvN8q0s4ICecjbbVQh\\\\nnueSdlA6vGXbW58BHMq68uRbHkP+k+mM9U0mDJ1HMch67wlg5GbayVRt63H7R2+r\\\\nVxcna7B80J/lCEjIYZznawgiTvp3MSanTglqAYi+m1EcSsP14bJIB9vgaxS79kTu\\\\noiSo93leJbBvuGo8QEiUqTwMw4tDksmkLsoqNKQ1q9P7LZ9DGcujtPy4EZsamSJT\\\\ny8OJt0ECgYEA2lxOxJsQk2kI325JgKFjo92mQeUObIvPfSNWUIZQDTjniOI6Gv63\\\\nGLWVFrZcvQBWjMEQraJA9xjPbblV8PtfO87MiJGLWCHFxmPz2dzoedN+2Coxom8m\\\\nV95CLz8QUShuao6u/RYcvUaZEoYs5bHcTmy5sBK80JyEmafJPtCQVxMCgYEAy3ar\\\\nZr3yv4xRPEPMat4rseswmuMooSaK3SKub19WFI5IAtB/e7qR1Rj9JhOGcZz+OQrl\\\\nT78O2OFYlgOIkJPvRMrPpK5V9lslc7tz1FSh3BZMRGq5jSyD7ETSOQ0c8T2O/s7v\\\\nbeEPbVbDe4mwvM24XByH0GnWveVxaDl51ABD65sCgYB3ZAspUkOA5egVCh8kNpnd\\\\nSd6SnuQBE3ySRlT2WEnCwP9Ph6oPgn+oAfiPX4xbRqkL8q/k0BdHQ4h+zNwhk7+h\\\\nWtPYRAP1Xxnc/F+jGjb+DVaIaKGU18MWPg7f+FI6nampl3Q0KvfxwX0GdNhtio8T\\\\nTj1E+SnFwh56SRQuxSh2gwKBgHKjlIO5NtNSflsUYFM+hyQiPiqnHzddfhSG+/3o\\\\nm5nNaSmczJesUYreH5San7/YEy2UxAugvP7aSY2MxB+iGsiJ9WD2kZzTUlDZJ7RV\\\\nUzWsoqBR+eZfVJ2FUWWvy8TpSG6trh4dFxImNtKejCR1TREpSiTV3Zb1dmahK9GV\\\\nrK9NAoGAbBxRLoC01xfxCTgt5BDiBcFVh4fp5yYKwavJPLzHSpuDOrrI9jDn1oKN\\\\nonq5sDU1i391zfQvdrbX4Ova48BN+B7p63FocP/MK5tyyBoT8zQEk2+vWDOw7H/Z\\\\nu5dTCPxTIsoIwUw1I+7yIxqJzLPFgR2gVBwY1ra/8iAqCj+zeBw=\\\\n-----END RSA PRIVATE KEY-----\\\\n\\\"\",\n \"webhook_secret\" : \"\\\"6fba8f2fc8a7e8f2cca5577eddd82ca7586b3b6b\\\"\",\n \"client_secret\" : \"\\\"1d4b2097ac622ba702d19de498f005747a8b21d3\\\"\",\n \"id\" : 37,\n \"events\" : [ \"label\", \"deployment\" ],\n \"slug\" : \"probot-owners\",\n \"node_id\" : \"MDExOkludGVncmF0aW9uMQ==\"\n },\n \"updated_at\" : \"2011-04-22T13:33:48Z\",\n \"comments_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347/comments\",\n \"active_lock_reason\" : \"too heated\",\n \"id\" : 1,\n \"repository_url\" : \"https://api.github.com/repos/octocat/Hello-World\",\n \"state\" : \"open\",\n \"locked\" : true,\n \"timeline_url\" : \"https://web.example.mocklab.io/133094\",\n \"pull_request\" : {\n \"patch_url\" : \"https://web.example.mocklab.io/322891\",\n \"html_url\" : \"https://web.example.mocklab.io/182821\",\n \"merged_at\" : \"2022-05-01T16:53:27.219Z\",\n \"diff_url\" : \"https://web.example.mocklab.io/227696\",\n \"url\" : \"https://web.example.mocklab.io/241265\"\n },\n \"closed_at\" : \"2023-01-23T20:30:02.22Z\",\n \"comments\" : 0,\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347\",\n \"labels\" : [ {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n }, {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n } ],\n \"milestone\" : {\n \"creator\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Tamika Flatley\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"vn436bmb7h34zyxazwp\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"closed_at\" : \"2013-02-12T13:22:01Z\",\n \"created_at\" : \"2011-04-10T20:09:31Z\",\n \"description\" : \"Tracking milestone for version 1.0\",\n \"closed_issues\" : 8,\n \"title\" : \"v1.0\",\n \"due_on\" : \"2012-10-09T23:39:01Z\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones/1\",\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones/1/labels\",\n \"number\" : 42,\n \"updated_at\" : \"2014-03-03T18:58:10Z\",\n \"html_url\" : \"https://github.com/octocat/Hello-World/milestones/v1.0\",\n \"id\" : 1002604,\n \"state\" : \"open\",\n \"open_issues\" : 4,\n \"node_id\" : \"MDk6TWlsZXN0b25lMTAwMjYwNA==\"\n },\n \"events_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347/events\",\n \"html_url\" : \"https://github.com/octocat/Hello-World/issues/1347\",\n \"assignee\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Brice Bayer\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"5loowpl8m2xozljafjrc303k12lqfx2ozno6lhkxdw2zvme21elegrphfpeku5q0jvgc3fevbasqhvxnn4d9c6g8vqvh4cdnte96\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"user\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"kennith.macejkovic\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"wkvo8x2iut9ovvnzjl0gbug3gr5md0pbzu9v1zjmguuzx4zo7o6uwgnt38nb0tskzu8ec6eilgh3fgq2hne069mp2zx5t1f01yfyqndq453ijiadw868wuo6msfiquq3tcf05da6hq6z7np0md0kafpk2js8dz90i20vnhtti0q2l675js0fgr5533p\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"node_id\" : \"MDU6SXNzdWUx\"\n },\n \"action\" : \"z981fijf6dhma7x0av3k0u0zp84zplsdo92t1\",\n \"comment\" : {\n \"issue_url\" : \"https://web.example.mocklab.io/480820\",\n \"body_html\" : \"gbmo4g36f7sei45d7n2u1vtmjcz0fm8rnysdqyem5lt1a1y776omt8zmzs4k5k4btl0h4n0m30c46lqi\",\n \"body_text\" : \"7dk0ia7quck788yu3t5w1pvbp2ethcyi6bosyrdhso8ou9w90h\",\n \"created_at\" : \"2011-04-14T16:00:49Z\",\n \"body\" : \"What version of Safari were you using when you observed this bug?\",\n \"url\" : \"https://api.github.com/repositories/42/issues/comments/1\",\n \"author_association\" : \"OWNER\",\n \"performed_via_github_app\" : {\n \"owner\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Dr. Blaine Padberg\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"1m114qevyoiwh3rdcg4dq1zl6c8h7f8f7vccgj6tq7aw2mf1tyi0yvcxprv0bharzctdjvxwpvt3jdjvd\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"installations_count\" : 5,\n \"created_at\" : \"2017-07-08T16:18:44-04:00\",\n \"description\" : \"The description of the app.\",\n \"client_id\" : \"\\\"Iv1.25b5d1e65ffc4022\\\"\",\n \"external_url\" : \"https://example.com\",\n \"updated_at\" : \"2017-07-08T16:18:44-04:00\",\n \"permissions\" : {\n \"deployments\" : \"write\",\n \"issues\" : \"read\"\n },\n \"html_url\" : \"https://github.com/apps/super-ci\",\n \"name\" : \"Probot Owners\",\n \"pem\" : \"\\\"-----BEGIN RSA PRIVATE KEY-----\\\\nMIIEogIBAAKCAQEArYxrNYD/iT5CZVpRJu4rBKmmze3PVmT/gCo2ATUvDvZTPTey\\\\nxcGJ3vvrJXazKk06pN05TN29o98jrYz4cengG3YGsXPNEpKsIrEl8NhbnxapEnM9\\\\nJCMRe0P5JcPsfZlX6hmiT7136GRWiGOUba2X9+HKh8QJVLG5rM007TBER9/z9mWm\\\\nrJuNh+m5l320oBQY/Qq3A7wzdEfZw8qm/mIN0FCeoXH1L6B8xXWaAYBwhTEh6SSn\\\\nZHlO1Xu1JWDmAvBCi0RO5aRSKM8q9QEkvvHP4yweAtK3N8+aAbZ7ovaDhyGz8r6r\\\\nzhU1b8Uo0Z2ysf503WqzQgIajr7Fry7/kUwpgQIDAQABAoIBADwJp80Ko1xHPZDy\\\\nfcCKBDfIuPvkmSW6KumbsLMaQv1aGdHDwwTGv3t0ixSay8CGlxMRtRDyZPib6SvQ\\\\n6OH/lpfpbMdW2ErkksgtoIKBVrDilfrcAvrNZu7NxRNbhCSvN8q0s4ICecjbbVQh\\\\nnueSdlA6vGXbW58BHMq68uRbHkP+k+mM9U0mDJ1HMch67wlg5GbayVRt63H7R2+r\\\\nVxcna7B80J/lCEjIYZznawgiTvp3MSanTglqAYi+m1EcSsP14bJIB9vgaxS79kTu\\\\noiSo93leJbBvuGo8QEiUqTwMw4tDksmkLsoqNKQ1q9P7LZ9DGcujtPy4EZsamSJT\\\\ny8OJt0ECgYEA2lxOxJsQk2kI325JgKFjo92mQeUObIvPfSNWUIZQDTjniOI6Gv63\\\\nGLWVFrZcvQBWjMEQraJA9xjPbblV8PtfO87MiJGLWCHFxmPz2dzoedN+2Coxom8m\\\\nV95CLz8QUShuao6u/RYcvUaZEoYs5bHcTmy5sBK80JyEmafJPtCQVxMCgYEAy3ar\\\\nZr3yv4xRPEPMat4rseswmuMooSaK3SKub19WFI5IAtB/e7qR1Rj9JhOGcZz+OQrl\\\\nT78O2OFYlgOIkJPvRMrPpK5V9lslc7tz1FSh3BZMRGq5jSyD7ETSOQ0c8T2O/s7v\\\\nbeEPbVbDe4mwvM24XByH0GnWveVxaDl51ABD65sCgYB3ZAspUkOA5egVCh8kNpnd\\\\nSd6SnuQBE3ySRlT2WEnCwP9Ph6oPgn+oAfiPX4xbRqkL8q/k0BdHQ4h+zNwhk7+h\\\\nWtPYRAP1Xxnc/F+jGjb+DVaIaKGU18MWPg7f+FI6nampl3Q0KvfxwX0GdNhtio8T\\\\nTj1E+SnFwh56SRQuxSh2gwKBgHKjlIO5NtNSflsUYFM+hyQiPiqnHzddfhSG+/3o\\\\nm5nNaSmczJesUYreH5San7/YEy2UxAugvP7aSY2MxB+iGsiJ9WD2kZzTUlDZJ7RV\\\\nUzWsoqBR+eZfVJ2FUWWvy8TpSG6trh4dFxImNtKejCR1TREpSiTV3Zb1dmahK9GV\\\\nrK9NAoGAbBxRLoC01xfxCTgt5BDiBcFVh4fp5yYKwavJPLzHSpuDOrrI9jDn1oKN\\\\nonq5sDU1i391zfQvdrbX4Ova48BN+B7p63FocP/MK5tyyBoT8zQEk2+vWDOw7H/Z\\\\nu5dTCPxTIsoIwUw1I+7yIxqJzLPFgR2gVBwY1ra/8iAqCj+zeBw=\\\\n-----END RSA PRIVATE KEY-----\\\\n\\\"\",\n \"webhook_secret\" : \"\\\"6fba8f2fc8a7e8f2cca5577eddd82ca7586b3b6b\\\"\",\n \"client_secret\" : \"\\\"1d4b2097ac622ba702d19de498f005747a8b21d3\\\"\",\n \"id\" : 37,\n \"events\" : [ \"label\", \"deployment\" ],\n \"slug\" : \"probot-owners\",\n \"node_id\" : \"MDExOkludGVncmF0aW9uMQ==\"\n },\n \"updated_at\" : \"2011-04-14T16:00:49Z\",\n \"html_url\" : \"https://web.example.mocklab.io/212688\",\n \"reactions\" : {\n \"confused\" : 1770250788186483182,\n \"-1\" : 166940558019118262,\n \"+1\" : 2950928319967217053,\n \"total_count\" : 7308115457310671822,\n \"rocket\" : 6746676576877882582,\n \"hooray\" : 2701280863088100776,\n \"eyes\" : 8764938728181454609,\n \"heart\" : 137196015373954798,\n \"laugh\" : 3022832137507793376,\n \"url\" : \"https://web.example.mocklab.io/755360\"\n },\n \"id\" : 42,\n \"user\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"merlin.green\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"zz7kjh4wh0j59rcmh8eokxsm29jgtvzlx5cy2w1iu84ve0u3lde1kpl2uqg54vxbmn9\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"node_id\" : \"k270\"\n }\n },\n \"repo\" : {\n \"name\" : \"Joey Green III\",\n \"id\" : 243082174562580850,\n \"url\" : \"https://web.example.mocklab.io/430012\"\n },\n \"created_at\" : \"2023-06-15T05:58:32.221Z\",\n \"id\" : \"jon7\",\n \"type\" : \"khvdvpdujfahzpav3mls9ngt0y2pa2d9hvvbb146i9y9jo95vdqh0ea5yrcvpzvfsvvs4pnwryk69gsr1o90tkfi\"\n}, {\n \"actor\" : {\n \"display_login\" : \"t976hkpyw2oc8cpsimwg50ains49amlsvtl5o5tvd7bttuvo65cbkqwpyq2wgwehwtoxh5zjyc9fczvrfbb5u1aavf16lqrdqyollrqm5u97oovvqjdpi8gs7sn8d7lyrmdii1nnwm3kx5kj3teng8pje3y5t1s5p6gfqkp0rm\",\n \"avatar_url\" : \"https://s3.amazonaws.com/uifaces/faces/twitter/s4f1/128.jpg\",\n \"id\" : 5325692904648890028,\n \"login\" : \"3ganuuei9lkghngf2ftlelc5sawvmtjy90e8q3mlzwv80znk3cwa3f41l4ejulemeahrdc2mfixse8ba4h8wo8tbe3yw3lzdcj3x6m27qv8onjn31myfeosgc04e6hbkol4l20\",\n \"gravatar_id\" : \"gu0w\",\n \"url\" : \"https://web.example.mocklab.io/798776\"\n },\n \"public\" : true,\n \"org\" : {\n \"display_login\" : \"now4izq3j38ufrbed2tt7somybx2mt6u4f8en33td2subsonh2jg820kbelpcr\",\n \"avatar_url\" : \"https://s3.amazonaws.com/uifaces/faces/twitter/hanna_smi/128.jpg\",\n \"id\" : 3883535132901899675,\n \"login\" : \"ikxo7p365dtcec2on1tr9mub2cn22lw822snmyf1nut8guwtiaeec1ifofhwojyepgjnieocmv1ijvbgvhop11slewpnyr3f9o95mb43vx1e4zb07prbpdgyarnmj4nzxhu9zacqo3yqb5sm0qzdkw5da9ny0hdbhsb6o7g1j53bnj98fttn98wmsyur587dg7\",\n \"gravatar_id\" : \"dmg6\",\n \"url\" : \"https://web.example.mocklab.io/063652\"\n },\n \"payload\" : {\n \"pages\" : [ {\n \"summary\" : \"Animi quibusdam tempora aut hic et molestiae quidem. Dolorum corrupti tempore id aspernatur iure laborum. Ut recusandae qui ex ab voluptates magni hic. Ut sit voluptatem fugiat.\",\n \"html_url\" : \"https://web.example.mocklab.io/461449\",\n \"page_name\" : \"Ernesto Watsica\",\n \"action\" : \"vj8cbryhitqqev29v3blf9hmpkoycrnt12eqpj8v1w38t7ar0iovu0rq45dx4ywhpl9kuciz4c8yv58ohxoy6sfjogd77hc1xi76fqxo7j7gmno0s2qiwv53yxgz3doy3v1q2bc85zr3m21cn8\",\n \"title\" : \"Odit architecto voluptas dolor non.\",\n \"sha\" : \"cbfem58ycuhxqx3hz5c0ixsysbf7f6nmqueq8sdjguj8v0dnhqh5t82uzdg99v3u42996feo8l71sll6073ib98dxqon3o01ak55830upbxhbior1sdia0ka297yrv1ceod0mmbklrsoulc1681zfdjq08nlaq\"\n }, {\n \"summary\" : \"Rerum quibusdam dolorum ducimus. Consequatur tempore modi. Impedit dignissimos repellendus sint ad minima. Consequatur fuga necessitatibus.\",\n \"html_url\" : \"https://web.example.mocklab.io/419556\",\n \"page_name\" : \"Debera Kassulke\",\n \"action\" : \"zobi3rsvd460864fxnlor6eajd5cifk631b1di01zipe\",\n \"title\" : \"Alias hic non asperiores quod architecto facere.\",\n \"sha\" : \"bockxtxcgzfgrtqv6fut8v5exls9b4o5fyaq6wqmu7xkz3qpu1tud8kqp91dldgbktue2ocbw0frnqsfgqone4h7rk\"\n }, {\n \"summary\" : \"Et eaque qui ea unde quia. Saepe esse nemo beatae possimus. Repellendus eligendi officia incidunt at. Rerum corporis cum maxime maiores. Vel praesentium eum molestias omnis.\",\n \"html_url\" : \"https://web.example.mocklab.io/284573\",\n \"page_name\" : \"Miss Jack Hauck\",\n \"action\" : \"m98gnuvy5kr6es7jke4wvyapnh\",\n \"title\" : \"Recusandae placeat repellendus voluptas totam vel pariatur.\",\n \"sha\" : \"81270iv48ybgfijbgk8mx72tdyl84c78al0ipx6xzigt0npgf3tkh5\"\n } ],\n \"issue\" : {\n \"body_html\" : \"3syl3ukvlmte6m6uib6qwjx0ps\",\n \"body_text\" : \"hgayb985jibw2e48c06m8z35dnjto7njzs11vs2pwtk5epjdcxk88iuuhkh\",\n \"assignees\" : [ {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Napoleon Hoppe MD\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"886m83x6v6m6voc5\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n }, {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Sonny Crooks Jr.\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"au3xzqhni5hcng\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n }, {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Clayton Heidenreich\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"5a79rt22t413egk80hrokl2rfklcgb7yriygmo5bq2yrs91yq910iaye6fgu3ivz8bk6bl9vsrqs1w4ddhbdrsf1kmb53b\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n }, {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Delbert Towne\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"qx86lwy70ok1my964920y465mgwayqrrlnivvx4yydpoefww14i\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n }, {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Cedrick Labadie\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"20yma9oqcpnf2tp4e3qso7xnogsi5bskhjsjt0ashrc76i6341yq60oscv73stpoyt3ob9iih5ft8mdh9o8o0xqvl9ifb8r6weqjifk74i71dwutx89wthkci4pwr28kcaunraicp05vq\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n }, {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Keenan Balistreri\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"97x2j1fto2p0qk3s3pj9r5i4wm1ujyyf2k8mkcod2jkz4i2zzofxykmnjq5c2pb09er5rws037ado3ysju60h6k6getjp9mbggn2b5hp88eeffaa9ap3fswaimqn8h1s1cdc585h9z8aoc7y3teepdp6j5uwcpxahsgdr0ozmckxb8hrqv3matwjxt7as6h5kx40\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n } ],\n \"created_at\" : \"2011-04-22T13:33:48Z\",\n \"body\" : \"I'm having a problem with this.\",\n \"repository\" : {\n \"allow_forking\" : true,\n \"anonymous_access_enabled\" : false,\n \"is_template\" : true,\n \"stargazers_count\" : 80,\n \"pushed_at\" : \"2011-01-26T19:06:43Z\",\n \"language\" : \"7sf6mik3fyp8nuxwwj2ndyc9ys7i3af1pfeb3vh7chtd69twfdo9crgevtevl4ywh58rhlt6r9wmkgs7x1qdr8xbk4amc33d6v8k1isb4py9\",\n \"subscription_url\" : \"http://api.github.com/repos/octocat/Hello-World/subscription\",\n \"branches_url\" : \"http://api.github.com/repos/octocat/Hello-World/branches{/branch}\",\n \"allow_rebase_merge\" : true,\n \"issue_comment_url\" : \"http://api.github.com/repos/octocat/Hello-World/issues/comments{/number}\",\n \"labels_url\" : \"http://api.github.com/repos/octocat/Hello-World/labels{/name}\",\n \"permissions\" : {\n \"pull\" : true,\n \"maintain\" : false,\n \"admin\" : false,\n \"triage\" : false,\n \"push\" : false\n },\n \"subscribers_url\" : \"http://api.github.com/repos/octocat/Hello-World/subscribers\",\n \"releases_url\" : \"http://api.github.com/repos/octocat/Hello-World/releases{/id}\",\n \"svn_url\" : \"https://svn.github.com/octocat/Hello-World\",\n \"subscribers_count\" : 1317577733220906471,\n \"id\" : 42,\n \"master_branch\" : \"2bq7xqk0wvy1ztvl66k5cdiqvlht2wrfzmftbc127b005mnxq15mcmzz7ac2ocm\",\n \"forks\" : 2227090370381592458,\n \"allow_merge_commit\" : true,\n \"archive_url\" : \"http://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref}\",\n \"git_refs_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/refs{/sha}\",\n \"forks_url\" : \"http://api.github.com/repos/octocat/Hello-World/forks\",\n \"visibility\" : \"7pwk57juvc3f3vavih7tp2eah7lrh0msvcrl\",\n \"statuses_url\" : \"http://api.github.com/repos/octocat/Hello-World/statuses/{sha}\",\n \"network_count\" : 5124508649972746597,\n \"ssh_url\" : \"git@github.com:octocat/Hello-World.git\",\n \"license\" : {\n \"html_url\" : \"https://web.example.mocklab.io/283231\",\n \"name\" : \"MIT License\",\n \"spdx_id\" : \"MIT\",\n \"key\" : \"mit\",\n \"url\" : \"https://api.github.com/licenses/mit\",\n \"node_id\" : \"MDc6TGljZW5zZW1pdA==\"\n },\n \"full_name\" : \"octocat/Hello-World\",\n \"size\" : 108,\n \"template_repository\" : {\n \"anonymous_access_enabled\" : true,\n \"is_template\" : false,\n \"stargazers_count\" : 6490561232927572078,\n \"pushed_at\" : \"qxy2q9ukzgf76g243cd8rn7077skxqzlmdu8gxy71zty184gyfuh2mkc7kyeupcah86s0n1wfl4w3o6nyjuh9p90p4rldyf0cm92v42o6z398w3d8\",\n \"language\" : \"rt5k9jjzaj9zdrluniy8vqskn\",\n \"subscription_url\" : \"https://web.example.mocklab.io/247735\",\n \"branches_url\" : \"https://web.example.mocklab.io/017873\",\n \"allow_rebase_merge\" : true,\n \"issue_comment_url\" : \"https://web.example.mocklab.io/230516\",\n \"labels_url\" : \"https://web.example.mocklab.io/894565\",\n \"permissions\" : { },\n \"subscribers_url\" : \"https://web.example.mocklab.io/044588\",\n \"releases_url\" : \"https://web.example.mocklab.io/830462\",\n \"svn_url\" : \"https://web.example.mocklab.io/948455\",\n \"subscribers_count\" : 8367203652051264784,\n \"id\" : 1792518985196794395,\n \"allow_merge_commit\" : true,\n \"archive_url\" : \"https://web.example.mocklab.io/823092\",\n \"git_refs_url\" : \"https://web.example.mocklab.io/590196\",\n \"forks_url\" : \"https://web.example.mocklab.io/432644\",\n \"visibility\" : \"62k90qtlz25a89usf54e0wau0an0f82mu19fayuqcchw0avrqbs5k1p8u4mnz22j1b6x1yar5u82ybfmudbi340sevdpguc2f20ak06cdzcxqknzqz5xwbhbz33qwkstm4an118xor2pkooci2l1kfnza01xk0eyoht8yxiyn6l5f05b39ofw7\",\n \"statuses_url\" : \"https://web.example.mocklab.io/996330\",\n \"network_count\" : 5345701921025256780,\n \"ssh_url\" : \"https://web.example.mocklab.io/088479\",\n \"full_name\" : \"Edgar Renner\",\n \"size\" : 5609142614014229368,\n \"languages_url\" : \"https://web.example.mocklab.io/617818\",\n \"clone_url\" : \"https://web.example.mocklab.io/752949\",\n \"collaborators_url\" : \"https://web.example.mocklab.io/089380\",\n \"html_url\" : \"https://web.example.mocklab.io/870408\",\n \"name\" : \"Dr. Emanuel Steuber\",\n \"pulls_url\" : \"https://web.example.mocklab.io/136219\",\n \"default_branch\" : \"s38s5wkd2dtep8td5uswmd7jgfqjrd4c9zxttcnzxmylwk1b9cv5gw4wygaohzjx5gfkyk7cgp5r5dw7blofk90fevgjt06p5ehxmsgezn53u79cliwwmxbxd67escx44vc7y0e9uwyzb7nzpvv51f99ytsr5ws721j8yw0cmspt63w7zjs2mn5jtiq8a6w9sk\",\n \"hooks_url\" : \"https://web.example.mocklab.io/955287\",\n \"trees_url\" : \"https://web.example.mocklab.io/874717\",\n \"tags_url\" : \"https://web.example.mocklab.io/867034\",\n \"contributors_url\" : \"https://web.example.mocklab.io/283562\",\n \"private\" : true,\n \"has_downloads\" : true,\n \"notifications_url\" : \"https://web.example.mocklab.io/787733\",\n \"open_issues_count\" : 7602018497379840567,\n \"created_at\" : \"dekinps1tdaf3soeinyjtqmpjfsm8poyro1en5\",\n \"description\" : \"Itaque eius eveniet ut illo. Possimus omnis ex qui magnam veritatis perspiciatis. Illo eum quibusdam autem ea. Blanditiis exercitationem laudantium occaecati exercitationem magnam enim quia. Molestiae\",\n \"deployments_url\" : \"https://web.example.mocklab.io/567270\",\n \"keys_url\" : \"https://web.example.mocklab.io/827520\",\n \"has_projects\" : false,\n \"archived\" : true,\n \"has_wiki\" : true,\n \"updated_at\" : \"2022-12-31T08:04:59.224897Z\",\n \"comments_url\" : \"https://web.example.mocklab.io/982539\",\n \"stargazers_url\" : \"https://web.example.mocklab.io/010419\",\n \"disabled\" : false,\n \"delete_branch_on_merge\" : false,\n \"git_url\" : \"https://web.example.mocklab.io/896153\",\n \"has_pages\" : false,\n \"owner\" : { },\n \"allow_squash_merge\" : false,\n \"commits_url\" : \"https://web.example.mocklab.io/112709\",\n \"compare_url\" : \"https://web.example.mocklab.io/755773\",\n \"git_commits_url\" : \"https://web.example.mocklab.io/012838\",\n \"topics\" : [ \"78t1uz76cvgorkbw72mok83q17rcpznceo0qbtsagnzz488bg3qcvt8a8qlpsqgyxqmopue8mazcfev4un4vdon3mdc2ckwhguo1twkg9fgaomymk4r\", \"xkjig0u29udkhe6vmw4xl2ddnbe0ke3dzyn1hipbnwrp67gt77hgeb52khxrqongsvndc6jn7zcfqkbvrozlgf2u0a2\", \"cowb2fu0rp0aqr1dgjn3p17is72h9624rnj266obm1p7r16e2hvq4746n9t591b1ai96ej5yjxvex6cn3g98q571idr1hp6wpcn76yemlmudo5meti8mvvv7gc76xmxzcts7vgb64g059ki2iss89gda1dds0bq17pxk9j3ljlr1nqunkwydzqt34o2u\", \"ia4wz900lw5hljleacxycy39h84i1h\" ],\n \"blobs_url\" : \"https://web.example.mocklab.io/874342\",\n \"git_tags_url\" : \"https://web.example.mocklab.io/074753\",\n \"merges_url\" : \"https://web.example.mocklab.io/973515\",\n \"downloads_url\" : \"https://web.example.mocklab.io/211516\",\n \"has_issues\" : false,\n \"url\" : \"https://web.example.mocklab.io/829182\",\n \"contents_url\" : \"https://web.example.mocklab.io/175786\",\n \"mirror_url\" : \"https://web.example.mocklab.io/664600\",\n \"milestones_url\" : \"https://web.example.mocklab.io/956551\",\n \"teams_url\" : \"https://web.example.mocklab.io/969976\",\n \"fork\" : true,\n \"issues_url\" : \"https://web.example.mocklab.io/493503\",\n \"events_url\" : \"https://web.example.mocklab.io/608779\",\n \"issue_events_url\" : \"https://web.example.mocklab.io/926568\",\n \"assignees_url\" : \"https://web.example.mocklab.io/912600\",\n \"watchers_count\" : 3971683788757226686,\n \"forks_count\" : 3235742349460639719,\n \"homepage\" : \"u7289masnyb8p5lqcaqiy5ukl74uh4df4cfiouhtg8qeblzbycvihhe8eqqa14ynwis17in\",\n \"node_id\" : \"rvu2\"\n },\n \"languages_url\" : \"http://api.github.com/repos/octocat/Hello-World/languages\",\n \"clone_url\" : \"https://github.com/octocat/Hello-World.git\",\n \"collaborators_url\" : \"http://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator}\",\n \"html_url\" : \"https://github.com/octocat/Hello-World\",\n \"name\" : \"Team Environment\",\n \"pulls_url\" : \"http://api.github.com/repos/octocat/Hello-World/pulls{/number}\",\n \"default_branch\" : \"master\",\n \"hooks_url\" : \"http://api.github.com/repos/octocat/Hello-World/hooks\",\n \"trees_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/trees{/sha}\",\n \"tags_url\" : \"http://api.github.com/repos/octocat/Hello-World/tags\",\n \"contributors_url\" : \"http://api.github.com/repos/octocat/Hello-World/contributors\",\n \"private\" : true,\n \"has_downloads\" : true,\n \"notifications_url\" : \"http://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating}\",\n \"open_issues_count\" : 0,\n \"created_at\" : \"2011-01-26T19:01:12Z\",\n \"description\" : \"This your first repo!\",\n \"watchers\" : 8120320120112444381,\n \"deployments_url\" : \"http://api.github.com/repos/octocat/Hello-World/deployments\",\n \"keys_url\" : \"http://api.github.com/repos/octocat/Hello-World/keys{/key_id}\",\n \"has_projects\" : true,\n \"archived\" : true,\n \"has_wiki\" : true,\n \"updated_at\" : \"2011-01-26T19:14:43Z\",\n \"comments_url\" : \"http://api.github.com/repos/octocat/Hello-World/comments{/number}\",\n \"stargazers_url\" : \"http://api.github.com/repos/octocat/Hello-World/stargazers\",\n \"disabled\" : false,\n \"delete_branch_on_merge\" : false,\n \"git_url\" : \"git:github.com/octocat/Hello-World.git\",\n \"has_pages\" : true,\n \"owner\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Lance Jacobi\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"oekqum9mup4vqy8xr211wcsbmunka9tmj39fnw1ltdo86vdrdhrebdluz0hqniedaccki2ypydq41xv\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"allow_squash_merge\" : true,\n \"commits_url\" : \"http://api.github.com/repos/octocat/Hello-World/commits{/sha}\",\n \"compare_url\" : \"http://api.github.com/repos/octocat/Hello-World/compare/{base}...{head}\",\n \"git_commits_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/commits{/sha}\",\n \"topics\" : [ \"nlnksy5fhliba40140qcfi6nd6eseow5sgneyyq8kj14m3r3zclna7tr3vs9sf752tmib2613cz1676nxr1xdzjeuo3rjqwdex0kmql3cc55x52g37qc1itguz9a78g93ihhbs8q7fg5gxe3hbk8xn5xrvdbgiapvdt0vqi2ut6o1untfb781en9c1v9\", \"l60beadh53qc2y1bz622p703w45af\", \"yjpppcve6oxo4ayu7x5w903fmyutb\", \"cd80jgdo1dj0yhn2i4c8xxlhzigezb7s5mrqdhcykhntxi9xxf\", \"0ytds71w729c55fzf7l5i832fadsruxe1638e793xy6qsvq0gtsp4zbjxdrsaa4jbcc5kx17krmih06yn9lr09wmm13tlquntfovfxozkt746tkxonyy7nfsigayb37vi5vfragntmkim0h23mts4tjwe2mdkt\", \"p34xaz1kaolm4cbko0balio3eb7e6v6hxyic7p5iru0hiqgc0pi6sb5dbdnpuizc9iub4ura5eddhz0vp0vxlo507bnfpry4g5qqu\", \"pkbbp59ng5mre89f95w0czlgr73vtxtkld76yrexe7bpuiwolm0xmxc1bx6bgkxlhf3x25xi1e5z9b6iltszwd7452b5saeto82z7ohw3yzhz8ftzmv61f69qu31kkkc\" ],\n \"blobs_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/blobs{/sha}\",\n \"git_tags_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/tags{/sha}\",\n \"merges_url\" : \"http://api.github.com/repos/octocat/Hello-World/merges\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:42Z\\\"\",\n \"downloads_url\" : \"http://api.github.com/repos/octocat/Hello-World/downloads\",\n \"has_issues\" : true,\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World\",\n \"contents_url\" : \"http://api.github.com/repos/octocat/Hello-World/contents/{+path}\",\n \"mirror_url\" : \"git:git.example.com/octocat/Hello-World\",\n \"milestones_url\" : \"http://api.github.com/repos/octocat/Hello-World/milestones{/number}\",\n \"teams_url\" : \"http://api.github.com/repos/octocat/Hello-World/teams\",\n \"fork\" : true,\n \"issues_url\" : \"http://api.github.com/repos/octocat/Hello-World/issues{/number}\",\n \"events_url\" : \"http://api.github.com/repos/octocat/Hello-World/events\",\n \"issue_events_url\" : \"http://api.github.com/repos/octocat/Hello-World/issues/events{/number}\",\n \"organization\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Dr. Jefferson Koepp\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"ncjus7vkockxb06pn95xkw8yxefq58egfi8rlidi9r77n1jjn4i7zu2tttoojyndgfyv6sg8qbxr0hi19tmf8839gbsvc2dlo910kx9o74hp2msz5dx6jowa54wo8nfy0rdeygn3qqz\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"assignees_url\" : \"http://api.github.com/repos/octocat/Hello-World/assignees{/user}\",\n \"open_issues\" : 8620460913237905457,\n \"watchers_count\" : 80,\n \"forks_count\" : 9,\n \"homepage\" : \"https://github.com\",\n \"node_id\" : \"MDEwOlJlcG9zaXRvcnkxMjk2MjY5\"\n },\n \"title\" : \"Found a bug\",\n \"author_association\" : \"OWNER\",\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347/labels{/name}\",\n \"number\" : 1347,\n \"performed_via_github_app\" : {\n \"owner\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Colin Hartmann III\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"wbozjiqtumjuz05y55zcpu36xttcr8ilns8\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"installations_count\" : 5,\n \"created_at\" : \"2017-07-08T16:18:44-04:00\",\n \"description\" : \"The description of the app.\",\n \"client_id\" : \"\\\"Iv1.25b5d1e65ffc4022\\\"\",\n \"external_url\" : \"https://example.com\",\n \"updated_at\" : \"2017-07-08T16:18:44-04:00\",\n \"permissions\" : {\n \"deployments\" : \"write\",\n \"issues\" : \"read\"\n },\n \"html_url\" : \"https://github.com/apps/super-ci\",\n \"name\" : \"Probot Owners\",\n \"pem\" : \"\\\"-----BEGIN RSA PRIVATE KEY-----\\\\nMIIEogIBAAKCAQEArYxrNYD/iT5CZVpRJu4rBKmmze3PVmT/gCo2ATUvDvZTPTey\\\\nxcGJ3vvrJXazKk06pN05TN29o98jrYz4cengG3YGsXPNEpKsIrEl8NhbnxapEnM9\\\\nJCMRe0P5JcPsfZlX6hmiT7136GRWiGOUba2X9+HKh8QJVLG5rM007TBER9/z9mWm\\\\nrJuNh+m5l320oBQY/Qq3A7wzdEfZw8qm/mIN0FCeoXH1L6B8xXWaAYBwhTEh6SSn\\\\nZHlO1Xu1JWDmAvBCi0RO5aRSKM8q9QEkvvHP4yweAtK3N8+aAbZ7ovaDhyGz8r6r\\\\nzhU1b8Uo0Z2ysf503WqzQgIajr7Fry7/kUwpgQIDAQABAoIBADwJp80Ko1xHPZDy\\\\nfcCKBDfIuPvkmSW6KumbsLMaQv1aGdHDwwTGv3t0ixSay8CGlxMRtRDyZPib6SvQ\\\\n6OH/lpfpbMdW2ErkksgtoIKBVrDilfrcAvrNZu7NxRNbhCSvN8q0s4ICecjbbVQh\\\\nnueSdlA6vGXbW58BHMq68uRbHkP+k+mM9U0mDJ1HMch67wlg5GbayVRt63H7R2+r\\\\nVxcna7B80J/lCEjIYZznawgiTvp3MSanTglqAYi+m1EcSsP14bJIB9vgaxS79kTu\\\\noiSo93leJbBvuGo8QEiUqTwMw4tDksmkLsoqNKQ1q9P7LZ9DGcujtPy4EZsamSJT\\\\ny8OJt0ECgYEA2lxOxJsQk2kI325JgKFjo92mQeUObIvPfSNWUIZQDTjniOI6Gv63\\\\nGLWVFrZcvQBWjMEQraJA9xjPbblV8PtfO87MiJGLWCHFxmPz2dzoedN+2Coxom8m\\\\nV95CLz8QUShuao6u/RYcvUaZEoYs5bHcTmy5sBK80JyEmafJPtCQVxMCgYEAy3ar\\\\nZr3yv4xRPEPMat4rseswmuMooSaK3SKub19WFI5IAtB/e7qR1Rj9JhOGcZz+OQrl\\\\nT78O2OFYlgOIkJPvRMrPpK5V9lslc7tz1FSh3BZMRGq5jSyD7ETSOQ0c8T2O/s7v\\\\nbeEPbVbDe4mwvM24XByH0GnWveVxaDl51ABD65sCgYB3ZAspUkOA5egVCh8kNpnd\\\\nSd6SnuQBE3ySRlT2WEnCwP9Ph6oPgn+oAfiPX4xbRqkL8q/k0BdHQ4h+zNwhk7+h\\\\nWtPYRAP1Xxnc/F+jGjb+DVaIaKGU18MWPg7f+FI6nampl3Q0KvfxwX0GdNhtio8T\\\\nTj1E+SnFwh56SRQuxSh2gwKBgHKjlIO5NtNSflsUYFM+hyQiPiqnHzddfhSG+/3o\\\\nm5nNaSmczJesUYreH5San7/YEy2UxAugvP7aSY2MxB+iGsiJ9WD2kZzTUlDZJ7RV\\\\nUzWsoqBR+eZfVJ2FUWWvy8TpSG6trh4dFxImNtKejCR1TREpSiTV3Zb1dmahK9GV\\\\nrK9NAoGAbBxRLoC01xfxCTgt5BDiBcFVh4fp5yYKwavJPLzHSpuDOrrI9jDn1oKN\\\\nonq5sDU1i391zfQvdrbX4Ova48BN+B7p63FocP/MK5tyyBoT8zQEk2+vWDOw7H/Z\\\\nu5dTCPxTIsoIwUw1I+7yIxqJzLPFgR2gVBwY1ra/8iAqCj+zeBw=\\\\n-----END RSA PRIVATE KEY-----\\\\n\\\"\",\n \"webhook_secret\" : \"\\\"6fba8f2fc8a7e8f2cca5577eddd82ca7586b3b6b\\\"\",\n \"client_secret\" : \"\\\"1d4b2097ac622ba702d19de498f005747a8b21d3\\\"\",\n \"id\" : 37,\n \"events\" : [ \"label\", \"deployment\" ],\n \"slug\" : \"probot-owners\",\n \"node_id\" : \"MDExOkludGVncmF0aW9uMQ==\"\n },\n \"updated_at\" : \"2011-04-22T13:33:48Z\",\n \"comments_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347/comments\",\n \"active_lock_reason\" : \"too heated\",\n \"id\" : 1,\n \"repository_url\" : \"https://api.github.com/repos/octocat/Hello-World\",\n \"state\" : \"open\",\n \"locked\" : true,\n \"timeline_url\" : \"https://web.example.mocklab.io/652063\",\n \"pull_request\" : {\n \"patch_url\" : \"https://web.example.mocklab.io/119642\",\n \"html_url\" : \"https://web.example.mocklab.io/377535\",\n \"merged_at\" : \"2023-03-28T01:57:58.227Z\",\n \"diff_url\" : \"https://web.example.mocklab.io/472948\",\n \"url\" : \"https://web.example.mocklab.io/472979\"\n },\n \"closed_at\" : \"2022-11-19T12:26:44.227Z\",\n \"comments\" : 0,\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347\",\n \"labels\" : [ {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n }, {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n }, {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n } ],\n \"milestone\" : {\n \"creator\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Cyrus Gaylord\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"suaz1pto3knm2i8h6y5q4n0e2i7ri5f23t367ateb31a71k6xe0533fsmndieehnny4litchmdozqzk0sphdn7jcaw746243jxuouoz3p31gohcb4itqf5tedfxdabm6sf4unxw9josp328bdefye\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"closed_at\" : \"2013-02-12T13:22:01Z\",\n \"created_at\" : \"2011-04-10T20:09:31Z\",\n \"description\" : \"Tracking milestone for version 1.0\",\n \"closed_issues\" : 8,\n \"title\" : \"v1.0\",\n \"due_on\" : \"2012-10-09T23:39:01Z\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones/1\",\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones/1/labels\",\n \"number\" : 42,\n \"updated_at\" : \"2014-03-03T18:58:10Z\",\n \"html_url\" : \"https://github.com/octocat/Hello-World/milestones/v1.0\",\n \"id\" : 1002604,\n \"state\" : \"open\",\n \"open_issues\" : 4,\n \"node_id\" : \"MDk6TWlsZXN0b25lMTAwMjYwNA==\"\n },\n \"events_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347/events\",\n \"html_url\" : \"https://github.com/octocat/Hello-World/issues/1347\",\n \"assignee\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Lenore Walsh\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"j8alcxtje9ifm7stuhgdpcafqomqjvu1y32mjkfjws506j3358th0xi9e30udtqq9fklx4itbxnfmthgq5ikb117hps6kbukx791y5edkexee8ckxo0aag7ecnhrxlinsfpjiij3ehmilue3uab0zl9sn880db2rtzcq\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"user\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"dewayne.bernhard\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"26cc62bvprjkkc29dzx96xhrgvafk1jn27r0kn23673vsc2txk\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"node_id\" : \"MDU6SXNzdWUx\"\n },\n \"action\" : \"fmf5vxk1b31jfgjyr1xksm998isyph8obnn03u2gleqbqtfp\",\n \"comment\" : {\n \"issue_url\" : \"https://web.example.mocklab.io/380445\",\n \"body_html\" : \"s3vsgb5lgpcaxgcqjym3ir4vr42p0sqgietv8a7t9dkkm819t4juy680w26k5uhakt9i4ppzeulto5ujox8ug6ltv08x1exhpp08s7ej42xzvi0fh9yn3vnp92gt8l94iu2td8\",\n \"body_text\" : \"5a54hr1mlk2pz9oks548hn9rjb5mvtkyg1b4uxnqf0p7mk3ils82x00voljgxgfb776pt5znooum4pv29zjc4wltpt838caml9ygqacv80hg9saicbh44b6wcqlpko64oxz7isebm0d\",\n \"created_at\" : \"2011-04-14T16:00:49Z\",\n \"body\" : \"What version of Safari were you using when you observed this bug?\",\n \"url\" : \"https://api.github.com/repositories/42/issues/comments/1\",\n \"author_association\" : \"OWNER\",\n \"performed_via_github_app\" : {\n \"owner\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Hyun Wunsch\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"qrh3vpf8g4rmrvmdt1v2psiqhgjuv9asbp6sojncg9hmyezjn2wldapa1g0h7kxjsvkbk\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"installations_count\" : 5,\n \"created_at\" : \"2017-07-08T16:18:44-04:00\",\n \"description\" : \"The description of the app.\",\n \"client_id\" : \"\\\"Iv1.25b5d1e65ffc4022\\\"\",\n \"external_url\" : \"https://example.com\",\n \"updated_at\" : \"2017-07-08T16:18:44-04:00\",\n \"permissions\" : {\n \"deployments\" : \"write\",\n \"issues\" : \"read\"\n },\n \"html_url\" : \"https://github.com/apps/super-ci\",\n \"name\" : \"Probot Owners\",\n \"pem\" : \"\\\"-----BEGIN RSA PRIVATE KEY-----\\\\nMIIEogIBAAKCAQEArYxrNYD/iT5CZVpRJu4rBKmmze3PVmT/gCo2ATUvDvZTPTey\\\\nxcGJ3vvrJXazKk06pN05TN29o98jrYz4cengG3YGsXPNEpKsIrEl8NhbnxapEnM9\\\\nJCMRe0P5JcPsfZlX6hmiT7136GRWiGOUba2X9+HKh8QJVLG5rM007TBER9/z9mWm\\\\nrJuNh+m5l320oBQY/Qq3A7wzdEfZw8qm/mIN0FCeoXH1L6B8xXWaAYBwhTEh6SSn\\\\nZHlO1Xu1JWDmAvBCi0RO5aRSKM8q9QEkvvHP4yweAtK3N8+aAbZ7ovaDhyGz8r6r\\\\nzhU1b8Uo0Z2ysf503WqzQgIajr7Fry7/kUwpgQIDAQABAoIBADwJp80Ko1xHPZDy\\\\nfcCKBDfIuPvkmSW6KumbsLMaQv1aGdHDwwTGv3t0ixSay8CGlxMRtRDyZPib6SvQ\\\\n6OH/lpfpbMdW2ErkksgtoIKBVrDilfrcAvrNZu7NxRNbhCSvN8q0s4ICecjbbVQh\\\\nnueSdlA6vGXbW58BHMq68uRbHkP+k+mM9U0mDJ1HMch67wlg5GbayVRt63H7R2+r\\\\nVxcna7B80J/lCEjIYZznawgiTvp3MSanTglqAYi+m1EcSsP14bJIB9vgaxS79kTu\\\\noiSo93leJbBvuGo8QEiUqTwMw4tDksmkLsoqNKQ1q9P7LZ9DGcujtPy4EZsamSJT\\\\ny8OJt0ECgYEA2lxOxJsQk2kI325JgKFjo92mQeUObIvPfSNWUIZQDTjniOI6Gv63\\\\nGLWVFrZcvQBWjMEQraJA9xjPbblV8PtfO87MiJGLWCHFxmPz2dzoedN+2Coxom8m\\\\nV95CLz8QUShuao6u/RYcvUaZEoYs5bHcTmy5sBK80JyEmafJPtCQVxMCgYEAy3ar\\\\nZr3yv4xRPEPMat4rseswmuMooSaK3SKub19WFI5IAtB/e7qR1Rj9JhOGcZz+OQrl\\\\nT78O2OFYlgOIkJPvRMrPpK5V9lslc7tz1FSh3BZMRGq5jSyD7ETSOQ0c8T2O/s7v\\\\nbeEPbVbDe4mwvM24XByH0GnWveVxaDl51ABD65sCgYB3ZAspUkOA5egVCh8kNpnd\\\\nSd6SnuQBE3ySRlT2WEnCwP9Ph6oPgn+oAfiPX4xbRqkL8q/k0BdHQ4h+zNwhk7+h\\\\nWtPYRAP1Xxnc/F+jGjb+DVaIaKGU18MWPg7f+FI6nampl3Q0KvfxwX0GdNhtio8T\\\\nTj1E+SnFwh56SRQuxSh2gwKBgHKjlIO5NtNSflsUYFM+hyQiPiqnHzddfhSG+/3o\\\\nm5nNaSmczJesUYreH5San7/YEy2UxAugvP7aSY2MxB+iGsiJ9WD2kZzTUlDZJ7RV\\\\nUzWsoqBR+eZfVJ2FUWWvy8TpSG6trh4dFxImNtKejCR1TREpSiTV3Zb1dmahK9GV\\\\nrK9NAoGAbBxRLoC01xfxCTgt5BDiBcFVh4fp5yYKwavJPLzHSpuDOrrI9jDn1oKN\\\\nonq5sDU1i391zfQvdrbX4Ova48BN+B7p63FocP/MK5tyyBoT8zQEk2+vWDOw7H/Z\\\\nu5dTCPxTIsoIwUw1I+7yIxqJzLPFgR2gVBwY1ra/8iAqCj+zeBw=\\\\n-----END RSA PRIVATE KEY-----\\\\n\\\"\",\n \"webhook_secret\" : \"\\\"6fba8f2fc8a7e8f2cca5577eddd82ca7586b3b6b\\\"\",\n \"client_secret\" : \"\\\"1d4b2097ac622ba702d19de498f005747a8b21d3\\\"\",\n \"id\" : 37,\n \"events\" : [ \"label\", \"deployment\" ],\n \"slug\" : \"probot-owners\",\n \"node_id\" : \"MDExOkludGVncmF0aW9uMQ==\"\n },\n \"updated_at\" : \"2011-04-14T16:00:49Z\",\n \"html_url\" : \"https://web.example.mocklab.io/060910\",\n \"reactions\" : {\n \"confused\" : 8856513104791264255,\n \"-1\" : 934589458206064946,\n \"+1\" : 1030955567004066938,\n \"total_count\" : 3305089231199746330,\n \"rocket\" : 107497179340498800,\n \"hooray\" : 6161438377153027535,\n \"eyes\" : 8836751382624032785,\n \"heart\" : 7438684343726007906,\n \"laugh\" : 6006019397535516965,\n \"url\" : \"https://web.example.mocklab.io/282674\"\n },\n \"id\" : 42,\n \"user\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"riley.champlin\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"n3mznk\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"node_id\" : \"r784\"\n }\n },\n \"repo\" : {\n \"name\" : \"Will Kovacek Jr.\",\n \"id\" : 4995973614666604442,\n \"url\" : \"https://web.example.mocklab.io/144222\"\n },\n \"created_at\" : \"2022-07-11T23:01:25.228Z\",\n \"id\" : \"v6ju\",\n \"type\" : \"yb7rh4c36jprsdjo5lx7vddpim643spvqcpzn9wcgdk331xt6tsmxefxb7gviqjgt\"\n} ]", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "561dc02e-bb46-49e0-bdce-bd01b991a5ab", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.228813Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "activity/list-org-events-for-authenticated-user", + "schema": { + "items": { + "$ref": "#/components/schemas/event" + }, + "type": "array" + } + } + } + }, + "insertionIndex": 27 + }, + { + "id": "c87b5f80-f4b1-498b-abed-a7226045e3a1", + "name": "List events for the authenticated user", + "request": { + "urlPath": "/users/lashawna.kunde/events", + "method": "GET" + }, + "response": { + "status": 200, + "body": "[ {\n \"actor\" : {\n \"display_login\" : \"30i8wz6qyz1pkl284ofk3s8ezhhy46u71sxeshv3dskgb6t9iowrdy38o8jhe9kossale1y7c5bn92wakdqh3xcbhtfmhmx6poe3hw5uw257i976xwh1dod6ugcqo4jyfckdr4e3r\",\n \"avatar_url\" : \"https://s3.amazonaws.com/uifaces/faces/twitter/dhilipsiva/128.jpg\",\n \"id\" : 3564587319597566592,\n \"login\" : \"a7rwffenqfazbo1k83nfw2o7gu663ltsc0rcrvoupwb0dil9bsbog2mv58c7tiacushmgwbb91y6x2pwtknmj1jqdkqrjzhfoboceu01u5ooadb5dmiwxo1w4ipoxkwfj85d9h3wc95puestf01w59zdbtkbnxdcykjcg59h01s6nkhr4770dx\",\n \"gravatar_id\" : \"h81v\",\n \"url\" : \"https://web.example.mocklab.io/658585\"\n },\n \"public\" : false,\n \"org\" : {\n \"display_login\" : \"b3gp1vpad1cy8cjb2g\",\n \"avatar_url\" : \"https://s3.amazonaws.com/uifaces/faces/twitter/themikenagle/128.jpg\",\n \"id\" : 2927262625440201681,\n \"login\" : \"m81f3n7px1mbp5isc3wbiv7n7ycxl9odtvgcn0gpl49ntdmw2qim50nrwb2tsnrs16aw2vww8vwd7nx749863akd6jq9jj8gq02lmc7lls2ogktymvn0enua7tgonj3agmpt76p8kccgsdcgqabwgx9xthrlgx0ecjqu34m2\",\n \"gravatar_id\" : \"7v5x\",\n \"url\" : \"https://web.example.mocklab.io/535756\"\n },\n \"payload\" : {\n \"pages\" : [ {\n \"summary\" : \"Eius ab non non et. Et porro dolores officia. Sint commodi quo minima error eveniet. Rerum enim tenetur et animi.\",\n \"html_url\" : \"https://web.example.mocklab.io/482204\",\n \"page_name\" : \"Mr. Lahoma Auer\",\n \"action\" : \"oc7ikgxhgg7rm2jc4kckj9s2gul2g52ry\",\n \"title\" : \"Assumenda veritatis velit maiores.\",\n \"sha\" : \"z4pjsf4np96rtf8qivo82ewa9nai93xu92a86ies147mngmq32zycjqvvt200kkhqaq4\"\n }, {\n \"summary\" : \"Et eaque ea assumenda et impedit. Consequatur et omnis. Eos ab numquam facere. Et vitae animi enim officiis illo atque.\",\n \"html_url\" : \"https://web.example.mocklab.io/183028\",\n \"page_name\" : \"Racheal Kuvalis V\",\n \"action\" : \"aodx9ch5np50e25dqsd0g64w8fv6gxoj3i0hr2ujovnk017psakjlqvxvlsddqfrddtikls4qq8z7179nuxtrp5qyyr1n7icgr1mosjjivpw28ucylt6qf6gkfrx7ch6by0abpgk34yj14b2i9zn1n25xjl5h9dheyt\",\n \"title\" : \"Fugit fugit impedit qui.\",\n \"sha\" : \"0u3k1vr9ijkhcmhnctfs160yur0uby886b65t53vovs5hznphr9ztpatpdh1m87ce2rffa0440rowpnvdy6ic97g8\"\n }, {\n \"summary\" : \"Distinctio nisi aut minima dolor aut. In et aut excepturi maiores inventore architecto ipsa. Ipsa aut consequuntur praesentium officiis enim repellat nulla. Sint est ullam quas unde.\",\n \"html_url\" : \"https://web.example.mocklab.io/825446\",\n \"page_name\" : \"Lenore Ortiz Jr.\",\n \"action\" : \"lcl995v5w2ebjqn9na559ite420zunkmw4p8dgqj72t1jtc27ntptlpqyshwk51yqcmvrjceu45q11au7jjpwpl15m15iz8b18rso3g3vmiobq3p3k4wicug1eoebx85j\",\n \"title\" : \"Ea cupiditate labore ea voluptas tenetur.\",\n \"sha\" : \"axdvcqo8a6qlm2r2ssrivfpujhi47t51bi3n4gefph7rvnt71wiqcb08ank4mevd54jhdibtuabz15xapg825or4h18pt2b7kjd0736w92b52rmas0r16rziwno6podxgk68qofqd7huueiv92iol3v6rta49lotspsynlsdvbbxfmtolo9\"\n }, {\n \"summary\" : \"Quidem quam similique. Aliquam molestias porro est et. Porro ut labore praesentium nihil consequatur minus. Sit recusandae ex iste eius veritatis aut.\",\n \"html_url\" : \"https://web.example.mocklab.io/438997\",\n \"page_name\" : \"Fransisca Volkman\",\n \"action\" : \"7ozzz4i2imchb12x5tcaxwzsafglrm5c4wdcvscfu95lt67jhen4s0g0y1i116hwlu6cix8a28d202g1fercp3xlr9uhmmwuo6e21zkxhu5\",\n \"title\" : \"Quam eius nihil dolorum aliquam et omnis et.\",\n \"sha\" : \"lf6hitv\"\n }, {\n \"summary\" : \"Provident molestiae ratione labore nihil aspernatur quaerat autem. Ipsum quae aut. Atque voluptatem qui iusto. A dolore sequi minima.\",\n \"html_url\" : \"https://web.example.mocklab.io/090142\",\n \"page_name\" : \"Hedwig DuBuque DVM\",\n \"action\" : \"jqnia2zy74kzr6vdtjdrlee6uz2374ucw8e7dgcqzqy2rj9r5wg6dmo4abe7zhrug64sj66e369sq5tqxku4yf97vbg7idn3hderzzzli30jsj6tyzp5vkvbpj5qe2a92xrvqb08d23k7hzpe1lcp30thy0iwhnvsh03g\",\n \"title\" : \"Magni tempore culpa est in.\",\n \"sha\" : \"vy6la65sc6yl18tb3z4r9hx9dht6cojps256sl1o8pjrg53hoffrmzc\"\n } ],\n \"issue\" : {\n \"body_html\" : \"76ma47yl\",\n \"body_text\" : \"6zgnhr9qlihvy7najhtcktajq7d7mldtq8h2lyj56tgvp6i0q83v74iy044cmwdfhgoaf99ifhf5nifom3k0dsfgh\",\n \"assignees\" : [ {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Dr. Valentin Buckridge\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"o1x2gxmk2nit2n7eh0dhy26kf8n5ju4pi70t98qpw4qk295g8mh83\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n }, {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Willy Wiza\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"1o1dysq9dgqapo8wreng7hun8l5u58mumxun0gphdn5bksf8c7cjq2eaoksftkcsjtoyog8928xexhglovyl72dbn0hktbto6apcsg7vlge10fq02jjtn4y0ft6n0et1s6q6d8f39z36lrh8qm1n2\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n }, {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Mr. William Stokes\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"dbawkuvof94i6mr0tlc3l3wb731463sjfqylnxl9pge0hcliqjpvr0ua24xp9eud94lita37hhhd2ovh5\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n }, {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Dortha O'Hara\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"okregp95whi81llsr3tpgdr7xg6l30rgjzk65rhqwixpuxrncpcoduuh8t8ykidnn\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n } ],\n \"created_at\" : \"2011-04-22T13:33:48Z\",\n \"body\" : \"I'm having a problem with this.\",\n \"repository\" : {\n \"allow_forking\" : true,\n \"anonymous_access_enabled\" : false,\n \"is_template\" : true,\n \"stargazers_count\" : 80,\n \"pushed_at\" : \"2011-01-26T19:06:43Z\",\n \"language\" : \"0hsovhsom2wi2i95xyi55pi3zv4g6lf8zwsceygapg3g1dntj4jkg7rq4g1bacqkxyftce4neo6tcx9hxpd9lm2i3oo6c6hywud08tk7juq3jpt1rgx5eecc30\",\n \"subscription_url\" : \"http://api.github.com/repos/octocat/Hello-World/subscription\",\n \"branches_url\" : \"http://api.github.com/repos/octocat/Hello-World/branches{/branch}\",\n \"allow_rebase_merge\" : true,\n \"issue_comment_url\" : \"http://api.github.com/repos/octocat/Hello-World/issues/comments{/number}\",\n \"labels_url\" : \"http://api.github.com/repos/octocat/Hello-World/labels{/name}\",\n \"permissions\" : {\n \"pull\" : false,\n \"maintain\" : false,\n \"admin\" : true,\n \"triage\" : false,\n \"push\" : false\n },\n \"subscribers_url\" : \"http://api.github.com/repos/octocat/Hello-World/subscribers\",\n \"releases_url\" : \"http://api.github.com/repos/octocat/Hello-World/releases{/id}\",\n \"svn_url\" : \"https://svn.github.com/octocat/Hello-World\",\n \"subscribers_count\" : 8565371170635569359,\n \"id\" : 42,\n \"master_branch\" : \"hac7xaphjkgdpfdzdbky04fur0di9pdvjgyz771ua4tvs7sfzcuuwnbmf322ft99tv60mf32vadv6gmj754tovk4zi9z5c3xof3nror36bwdlh8x6dnxvwdoaxhgvhtd4\",\n \"forks\" : 3600215956293360261,\n \"allow_merge_commit\" : true,\n \"archive_url\" : \"http://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref}\",\n \"git_refs_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/refs{/sha}\",\n \"forks_url\" : \"http://api.github.com/repos/octocat/Hello-World/forks\",\n \"visibility\" : \"8mpbj2n9rsf2hh1collupvj8c1y8g22rox9ntwpj4v0osjmftgsuo76of5q9p11xvzzkmb7cxl5gkw3f3z3d1mr0gu4d1npatwgqzf3tz25a4eo2yy2mfgodfonubivlqbz4k8acsrs\",\n \"statuses_url\" : \"http://api.github.com/repos/octocat/Hello-World/statuses/{sha}\",\n \"network_count\" : 4474282582665123157,\n \"ssh_url\" : \"git@github.com:octocat/Hello-World.git\",\n \"license\" : {\n \"html_url\" : \"https://web.example.mocklab.io/108358\",\n \"name\" : \"MIT License\",\n \"spdx_id\" : \"MIT\",\n \"key\" : \"mit\",\n \"url\" : \"https://api.github.com/licenses/mit\",\n \"node_id\" : \"MDc6TGljZW5zZW1pdA==\"\n },\n \"full_name\" : \"octocat/Hello-World\",\n \"size\" : 108,\n \"template_repository\" : {\n \"anonymous_access_enabled\" : true,\n \"is_template\" : true,\n \"stargazers_count\" : 8265714059327709926,\n \"pushed_at\" : \"i50l4wkv8w8l2xg7pt9tl5ysfeabbgqbwb20gankq57tlup8fock0treingzd6lvsogde6vfkuo\",\n \"language\" : \"9ys2qh1t5hj0us2e8igy1g2m0dh5qdqn7n6vh24jro1g0s9xcqjb0l77w5qodvgbtn59k58kv442oj2o9cazgz8hktemf86xfgwrwnao3ki2i9e68xcdcuwbyge4oukh1hl6cz6at2qbo459t3dp1tojzme5h5wvuabl\",\n \"subscription_url\" : \"https://web.example.mocklab.io/878280\",\n \"branches_url\" : \"https://web.example.mocklab.io/268393\",\n \"allow_rebase_merge\" : true,\n \"issue_comment_url\" : \"https://web.example.mocklab.io/226376\",\n \"labels_url\" : \"https://web.example.mocklab.io/232743\",\n \"permissions\" : { },\n \"subscribers_url\" : \"https://web.example.mocklab.io/388026\",\n \"releases_url\" : \"https://web.example.mocklab.io/419417\",\n \"svn_url\" : \"https://web.example.mocklab.io/232211\",\n \"subscribers_count\" : 836393593819936919,\n \"id\" : 3481703410607440385,\n \"allow_merge_commit\" : true,\n \"archive_url\" : \"https://web.example.mocklab.io/686496\",\n \"git_refs_url\" : \"https://web.example.mocklab.io/416656\",\n \"forks_url\" : \"https://web.example.mocklab.io/466555\",\n \"visibility\" : \"omkrd14kz46fc55dgdswu3zxmk67v7x25nzw33vbim8k2wh03pfuox3dsw4wxhufiabwmzwsjgctelct85t51uerpefewexdwox7yvjueyf540usbyz0dni5a1zmag0bul88jl0hdg8yb17qdk5983131unv4xg5881do4jym106sc7q1mmqhm1w9s3jevpwvm\",\n \"statuses_url\" : \"https://web.example.mocklab.io/122241\",\n \"network_count\" : 4194025876840876943,\n \"ssh_url\" : \"https://web.example.mocklab.io/973061\",\n \"full_name\" : \"Ela Rogahn\",\n \"size\" : 6245799845424816689,\n \"languages_url\" : \"https://web.example.mocklab.io/013363\",\n \"clone_url\" : \"https://web.example.mocklab.io/217383\",\n \"collaborators_url\" : \"https://web.example.mocklab.io/626875\",\n \"html_url\" : \"https://web.example.mocklab.io/647310\",\n \"name\" : \"Mr. Ismael Rath\",\n \"pulls_url\" : \"https://web.example.mocklab.io/252012\",\n \"default_branch\" : \"svd7ugbix2de1zw7bot8gih6yuqmrep8bsw14k0o257t9p\",\n \"hooks_url\" : \"https://web.example.mocklab.io/491961\",\n \"trees_url\" : \"https://web.example.mocklab.io/755056\",\n \"tags_url\" : \"https://web.example.mocklab.io/265920\",\n \"contributors_url\" : \"https://web.example.mocklab.io/280519\",\n \"private\" : true,\n \"has_downloads\" : true,\n \"notifications_url\" : \"https://web.example.mocklab.io/408864\",\n \"open_issues_count\" : 5405974269070522949,\n \"created_at\" : \"bkydrqplu5k69d8c5qq61gqsjov4pz8rclv4cr3e6ndxxhjb4jgv3t16aot37u52n7jt3y4jd2epusnbo80kxkyeasedqr9gsmfn\",\n \"description\" : \"Similique ipsam deserunt. Molestias earum nihil ut sunt iure rem. Totam molestiae sequi in reprehenderit. Ut libero necessitatibus ad recusandae.\",\n \"deployments_url\" : \"https://web.example.mocklab.io/464208\",\n \"keys_url\" : \"https://web.example.mocklab.io/323777\",\n \"has_projects\" : true,\n \"archived\" : false,\n \"has_wiki\" : true,\n \"updated_at\" : \"2022-08-18T08:55:59.172408Z\",\n \"comments_url\" : \"https://web.example.mocklab.io/436963\",\n \"stargazers_url\" : \"https://web.example.mocklab.io/568909\",\n \"disabled\" : true,\n \"delete_branch_on_merge\" : true,\n \"git_url\" : \"https://web.example.mocklab.io/115348\",\n \"has_pages\" : true,\n \"owner\" : { },\n \"allow_squash_merge\" : true,\n \"commits_url\" : \"https://web.example.mocklab.io/933384\",\n \"compare_url\" : \"https://web.example.mocklab.io/834459\",\n \"git_commits_url\" : \"https://web.example.mocklab.io/493806\",\n \"topics\" : [ \"yp424noj7lgioqymxa3badlw3hfhci6xhlimp3r29gu0f8wg9chw9izub0aflw0932a1iu1fkorjnuv2f5k2iwqjdbir1wk59ogb0wb5zio60wt6ml79pczcuhliw2fqj7uoxq7ijj9lan85vo05y9ol689a6ib4r7e43v3jolioh\" ],\n \"blobs_url\" : \"https://web.example.mocklab.io/019841\",\n \"git_tags_url\" : \"https://web.example.mocklab.io/975668\",\n \"merges_url\" : \"https://web.example.mocklab.io/479957\",\n \"downloads_url\" : \"https://web.example.mocklab.io/448098\",\n \"has_issues\" : true,\n \"url\" : \"https://web.example.mocklab.io/605615\",\n \"contents_url\" : \"https://web.example.mocklab.io/008055\",\n \"mirror_url\" : \"https://web.example.mocklab.io/188577\",\n \"milestones_url\" : \"https://web.example.mocklab.io/930050\",\n \"teams_url\" : \"https://web.example.mocklab.io/427129\",\n \"fork\" : false,\n \"issues_url\" : \"https://web.example.mocklab.io/328716\",\n \"events_url\" : \"https://web.example.mocklab.io/413248\",\n \"issue_events_url\" : \"https://web.example.mocklab.io/716938\",\n \"assignees_url\" : \"https://web.example.mocklab.io/169488\",\n \"watchers_count\" : 1251145940894879774,\n \"forks_count\" : 3365021500041727870,\n \"homepage\" : \"k9729\",\n \"node_id\" : \"0s7i\"\n },\n \"languages_url\" : \"http://api.github.com/repos/octocat/Hello-World/languages\",\n \"clone_url\" : \"https://github.com/octocat/Hello-World.git\",\n \"collaborators_url\" : \"http://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator}\",\n \"html_url\" : \"https://github.com/octocat/Hello-World\",\n \"name\" : \"Team Environment\",\n \"pulls_url\" : \"http://api.github.com/repos/octocat/Hello-World/pulls{/number}\",\n \"default_branch\" : \"master\",\n \"hooks_url\" : \"http://api.github.com/repos/octocat/Hello-World/hooks\",\n \"trees_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/trees{/sha}\",\n \"tags_url\" : \"http://api.github.com/repos/octocat/Hello-World/tags\",\n \"contributors_url\" : \"http://api.github.com/repos/octocat/Hello-World/contributors\",\n \"private\" : true,\n \"has_downloads\" : true,\n \"notifications_url\" : \"http://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating}\",\n \"open_issues_count\" : 0,\n \"created_at\" : \"2011-01-26T19:01:12Z\",\n \"description\" : \"This your first repo!\",\n \"watchers\" : 9195052897477463311,\n \"deployments_url\" : \"http://api.github.com/repos/octocat/Hello-World/deployments\",\n \"keys_url\" : \"http://api.github.com/repos/octocat/Hello-World/keys{/key_id}\",\n \"has_projects\" : true,\n \"archived\" : false,\n \"has_wiki\" : true,\n \"updated_at\" : \"2011-01-26T19:14:43Z\",\n \"comments_url\" : \"http://api.github.com/repos/octocat/Hello-World/comments{/number}\",\n \"stargazers_url\" : \"http://api.github.com/repos/octocat/Hello-World/stargazers\",\n \"disabled\" : true,\n \"delete_branch_on_merge\" : false,\n \"git_url\" : \"git:github.com/octocat/Hello-World.git\",\n \"has_pages\" : false,\n \"owner\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Mrs. Warren Spinka\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"l8lzirv7tploib7s52r8q5yvyu9d8xqdvdbau6bzt31hmchq3lxn7u5lrofxkdrejfm55mub5wu7v48e8jxoc71pkd4lelhjumpk3dgs2rxmvqz4zgcznk9cvfhl16175mpgv4s2d4syz7hookyw1\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"allow_squash_merge\" : true,\n \"commits_url\" : \"http://api.github.com/repos/octocat/Hello-World/commits{/sha}\",\n \"compare_url\" : \"http://api.github.com/repos/octocat/Hello-World/compare/{base}...{head}\",\n \"git_commits_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/commits{/sha}\",\n \"topics\" : [ \"k0quw76whfp3at66fnk1w4t7sgfb0fiupupzdhjvjjik9setmtsjq73nletdpdoljon0dqz6b9nrkevkhe2lkrv97kaufuta449rbass7s4sbd18d9epn0t86i6bck96r3b29xodvxuryg1p82a0nell6ozd5dsgp8omh3hilkt344ld8rxzoqk34twulr74\", \"zjo5cbvycf1zuskkq0ph5jyeipfwbr5zql8bj7oyhlk\", \"b6ho88pnmy5dvrmq8h0ec60zoi9sl9myjusqktybdeiuvb6tlw07hbfpa2s1yad3itkkzkssewa5dtba9qlmw0wl8m6am28jl2yqzbq1b7540t5jdye36jgjsd2plbfjrurfrfsy6r24oos29ob6p\", \"mfg1ux2hqj2y52p9cqtq0d4t7p9g343gjxe54671jqwtetynw7dsv8m\" ],\n \"blobs_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/blobs{/sha}\",\n \"git_tags_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/tags{/sha}\",\n \"merges_url\" : \"http://api.github.com/repos/octocat/Hello-World/merges\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:42Z\\\"\",\n \"downloads_url\" : \"http://api.github.com/repos/octocat/Hello-World/downloads\",\n \"has_issues\" : true,\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World\",\n \"contents_url\" : \"http://api.github.com/repos/octocat/Hello-World/contents/{+path}\",\n \"mirror_url\" : \"git:git.example.com/octocat/Hello-World\",\n \"milestones_url\" : \"http://api.github.com/repos/octocat/Hello-World/milestones{/number}\",\n \"teams_url\" : \"http://api.github.com/repos/octocat/Hello-World/teams\",\n \"fork\" : false,\n \"issues_url\" : \"http://api.github.com/repos/octocat/Hello-World/issues{/number}\",\n \"events_url\" : \"http://api.github.com/repos/octocat/Hello-World/events\",\n \"issue_events_url\" : \"http://api.github.com/repos/octocat/Hello-World/issues/events{/number}\",\n \"organization\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Mrs. Odilia Gutmann\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"79gbtbi74u6meqbk1x1ctydy99dr1gfuiqctymelw3zzwzt50ri5eixwpm8m4852unsx1o61et9k1k036nq27f7imeeqnffxsw0sdq4hucopcpm8z6owj55mjers33d4q95qmyrzcl0mdeh3ovg2rkh6vprwf93g5zqehw2u4jmmt3yxbbj5ew8horzx42k4qefhu26u\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"assignees_url\" : \"http://api.github.com/repos/octocat/Hello-World/assignees{/user}\",\n \"open_issues\" : 420329786771373471,\n \"watchers_count\" : 80,\n \"forks_count\" : 9,\n \"homepage\" : \"https://github.com\",\n \"node_id\" : \"MDEwOlJlcG9zaXRvcnkxMjk2MjY5\"\n },\n \"title\" : \"Found a bug\",\n \"author_association\" : \"OWNER\",\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347/labels{/name}\",\n \"number\" : 1347,\n \"performed_via_github_app\" : {\n \"owner\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Marcellus Conroy III\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"1zpjdd7i6w9h6h77ejhach2ftfueb1lwaev9gc0g72h9mrpr0lf3835d73em9p\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"installations_count\" : 5,\n \"created_at\" : \"2017-07-08T16:18:44-04:00\",\n \"description\" : \"The description of the app.\",\n \"client_id\" : \"\\\"Iv1.25b5d1e65ffc4022\\\"\",\n \"external_url\" : \"https://example.com\",\n \"updated_at\" : \"2017-07-08T16:18:44-04:00\",\n \"permissions\" : {\n \"deployments\" : \"write\",\n \"issues\" : \"read\"\n },\n \"html_url\" : \"https://github.com/apps/super-ci\",\n \"name\" : \"Probot Owners\",\n \"pem\" : \"\\\"-----BEGIN RSA PRIVATE KEY-----\\\\nMIIEogIBAAKCAQEArYxrNYD/iT5CZVpRJu4rBKmmze3PVmT/gCo2ATUvDvZTPTey\\\\nxcGJ3vvrJXazKk06pN05TN29o98jrYz4cengG3YGsXPNEpKsIrEl8NhbnxapEnM9\\\\nJCMRe0P5JcPsfZlX6hmiT7136GRWiGOUba2X9+HKh8QJVLG5rM007TBER9/z9mWm\\\\nrJuNh+m5l320oBQY/Qq3A7wzdEfZw8qm/mIN0FCeoXH1L6B8xXWaAYBwhTEh6SSn\\\\nZHlO1Xu1JWDmAvBCi0RO5aRSKM8q9QEkvvHP4yweAtK3N8+aAbZ7ovaDhyGz8r6r\\\\nzhU1b8Uo0Z2ysf503WqzQgIajr7Fry7/kUwpgQIDAQABAoIBADwJp80Ko1xHPZDy\\\\nfcCKBDfIuPvkmSW6KumbsLMaQv1aGdHDwwTGv3t0ixSay8CGlxMRtRDyZPib6SvQ\\\\n6OH/lpfpbMdW2ErkksgtoIKBVrDilfrcAvrNZu7NxRNbhCSvN8q0s4ICecjbbVQh\\\\nnueSdlA6vGXbW58BHMq68uRbHkP+k+mM9U0mDJ1HMch67wlg5GbayVRt63H7R2+r\\\\nVxcna7B80J/lCEjIYZznawgiTvp3MSanTglqAYi+m1EcSsP14bJIB9vgaxS79kTu\\\\noiSo93leJbBvuGo8QEiUqTwMw4tDksmkLsoqNKQ1q9P7LZ9DGcujtPy4EZsamSJT\\\\ny8OJt0ECgYEA2lxOxJsQk2kI325JgKFjo92mQeUObIvPfSNWUIZQDTjniOI6Gv63\\\\nGLWVFrZcvQBWjMEQraJA9xjPbblV8PtfO87MiJGLWCHFxmPz2dzoedN+2Coxom8m\\\\nV95CLz8QUShuao6u/RYcvUaZEoYs5bHcTmy5sBK80JyEmafJPtCQVxMCgYEAy3ar\\\\nZr3yv4xRPEPMat4rseswmuMooSaK3SKub19WFI5IAtB/e7qR1Rj9JhOGcZz+OQrl\\\\nT78O2OFYlgOIkJPvRMrPpK5V9lslc7tz1FSh3BZMRGq5jSyD7ETSOQ0c8T2O/s7v\\\\nbeEPbVbDe4mwvM24XByH0GnWveVxaDl51ABD65sCgYB3ZAspUkOA5egVCh8kNpnd\\\\nSd6SnuQBE3ySRlT2WEnCwP9Ph6oPgn+oAfiPX4xbRqkL8q/k0BdHQ4h+zNwhk7+h\\\\nWtPYRAP1Xxnc/F+jGjb+DVaIaKGU18MWPg7f+FI6nampl3Q0KvfxwX0GdNhtio8T\\\\nTj1E+SnFwh56SRQuxSh2gwKBgHKjlIO5NtNSflsUYFM+hyQiPiqnHzddfhSG+/3o\\\\nm5nNaSmczJesUYreH5San7/YEy2UxAugvP7aSY2MxB+iGsiJ9WD2kZzTUlDZJ7RV\\\\nUzWsoqBR+eZfVJ2FUWWvy8TpSG6trh4dFxImNtKejCR1TREpSiTV3Zb1dmahK9GV\\\\nrK9NAoGAbBxRLoC01xfxCTgt5BDiBcFVh4fp5yYKwavJPLzHSpuDOrrI9jDn1oKN\\\\nonq5sDU1i391zfQvdrbX4Ova48BN+B7p63FocP/MK5tyyBoT8zQEk2+vWDOw7H/Z\\\\nu5dTCPxTIsoIwUw1I+7yIxqJzLPFgR2gVBwY1ra/8iAqCj+zeBw=\\\\n-----END RSA PRIVATE KEY-----\\\\n\\\"\",\n \"webhook_secret\" : \"\\\"6fba8f2fc8a7e8f2cca5577eddd82ca7586b3b6b\\\"\",\n \"client_secret\" : \"\\\"1d4b2097ac622ba702d19de498f005747a8b21d3\\\"\",\n \"id\" : 37,\n \"events\" : [ \"label\", \"deployment\" ],\n \"slug\" : \"probot-owners\",\n \"node_id\" : \"MDExOkludGVncmF0aW9uMQ==\"\n },\n \"updated_at\" : \"2011-04-22T13:33:48Z\",\n \"comments_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347/comments\",\n \"active_lock_reason\" : \"too heated\",\n \"id\" : 1,\n \"repository_url\" : \"https://api.github.com/repos/octocat/Hello-World\",\n \"state\" : \"open\",\n \"locked\" : true,\n \"timeline_url\" : \"https://web.example.mocklab.io/739695\",\n \"pull_request\" : {\n \"patch_url\" : \"https://web.example.mocklab.io/807218\",\n \"html_url\" : \"https://web.example.mocklab.io/943258\",\n \"merged_at\" : \"2022-06-13T08:50:42.174Z\",\n \"diff_url\" : \"https://web.example.mocklab.io/771420\",\n \"url\" : \"https://web.example.mocklab.io/490884\"\n },\n \"closed_at\" : \"2022-12-22T11:02:35.174Z\",\n \"comments\" : 0,\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347\",\n \"labels\" : [ {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n }, {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n }, {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n }, {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n } ],\n \"milestone\" : {\n \"creator\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Palmer Kshlerin DDS\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"f7slzfb65h9imfd2agw3b9mchn1od4tgl5k5y0xa1nizstrbkcny89vw9dirqsffggrtfnuqfal2tgmxqbbsqietryay5ucdqj5aj6jd5joii7ibxc151rj768x56\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"closed_at\" : \"2013-02-12T13:22:01Z\",\n \"created_at\" : \"2011-04-10T20:09:31Z\",\n \"description\" : \"Tracking milestone for version 1.0\",\n \"closed_issues\" : 8,\n \"title\" : \"v1.0\",\n \"due_on\" : \"2012-10-09T23:39:01Z\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones/1\",\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones/1/labels\",\n \"number\" : 42,\n \"updated_at\" : \"2014-03-03T18:58:10Z\",\n \"html_url\" : \"https://github.com/octocat/Hello-World/milestones/v1.0\",\n \"id\" : 1002604,\n \"state\" : \"open\",\n \"open_issues\" : 4,\n \"node_id\" : \"MDk6TWlsZXN0b25lMTAwMjYwNA==\"\n },\n \"events_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347/events\",\n \"html_url\" : \"https://github.com/octocat/Hello-World/issues/1347\",\n \"assignee\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Jaime Auer\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"f3z95z2wiq48q5c1xwdeq192m7vc0shxiz0yd\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"user\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"clemmie.rolfson\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"6jzupbttv9\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"node_id\" : \"MDU6SXNzdWUx\"\n },\n \"action\" : \"1tb9qx9mcgznoo9wroj5h2ggtcobe4qn5ouvb\",\n \"comment\" : {\n \"issue_url\" : \"https://web.example.mocklab.io/360901\",\n \"body_html\" : \"gujs56xhywttlkmb3va6iwxxjp1gyvu68w8ovm63ptrm2wkk7kk64uw0eckj7g8n1y4udbipdaxl4bnf1roisoumo96\",\n \"body_text\" : \"lwugfnjhnuhtactiois856d8r60ldi2q9m5\",\n \"created_at\" : \"2011-04-14T16:00:49Z\",\n \"body\" : \"What version of Safari were you using when you observed this bug?\",\n \"url\" : \"https://api.github.com/repositories/42/issues/comments/1\",\n \"author_association\" : \"OWNER\",\n \"performed_via_github_app\" : {\n \"owner\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Felton Bode\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"eiucpf2iy6bkj63lpmu1b1p9d4tt9jcey0f628blf6h7eaoc5f1v0er853j8gibkeiy701vdoxrd\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"installations_count\" : 5,\n \"created_at\" : \"2017-07-08T16:18:44-04:00\",\n \"description\" : \"The description of the app.\",\n \"client_id\" : \"\\\"Iv1.25b5d1e65ffc4022\\\"\",\n \"external_url\" : \"https://example.com\",\n \"updated_at\" : \"2017-07-08T16:18:44-04:00\",\n \"permissions\" : {\n \"deployments\" : \"write\",\n \"issues\" : \"read\"\n },\n \"html_url\" : \"https://github.com/apps/super-ci\",\n \"name\" : \"Probot Owners\",\n \"pem\" : \"\\\"-----BEGIN RSA PRIVATE KEY-----\\\\nMIIEogIBAAKCAQEArYxrNYD/iT5CZVpRJu4rBKmmze3PVmT/gCo2ATUvDvZTPTey\\\\nxcGJ3vvrJXazKk06pN05TN29o98jrYz4cengG3YGsXPNEpKsIrEl8NhbnxapEnM9\\\\nJCMRe0P5JcPsfZlX6hmiT7136GRWiGOUba2X9+HKh8QJVLG5rM007TBER9/z9mWm\\\\nrJuNh+m5l320oBQY/Qq3A7wzdEfZw8qm/mIN0FCeoXH1L6B8xXWaAYBwhTEh6SSn\\\\nZHlO1Xu1JWDmAvBCi0RO5aRSKM8q9QEkvvHP4yweAtK3N8+aAbZ7ovaDhyGz8r6r\\\\nzhU1b8Uo0Z2ysf503WqzQgIajr7Fry7/kUwpgQIDAQABAoIBADwJp80Ko1xHPZDy\\\\nfcCKBDfIuPvkmSW6KumbsLMaQv1aGdHDwwTGv3t0ixSay8CGlxMRtRDyZPib6SvQ\\\\n6OH/lpfpbMdW2ErkksgtoIKBVrDilfrcAvrNZu7NxRNbhCSvN8q0s4ICecjbbVQh\\\\nnueSdlA6vGXbW58BHMq68uRbHkP+k+mM9U0mDJ1HMch67wlg5GbayVRt63H7R2+r\\\\nVxcna7B80J/lCEjIYZznawgiTvp3MSanTglqAYi+m1EcSsP14bJIB9vgaxS79kTu\\\\noiSo93leJbBvuGo8QEiUqTwMw4tDksmkLsoqNKQ1q9P7LZ9DGcujtPy4EZsamSJT\\\\ny8OJt0ECgYEA2lxOxJsQk2kI325JgKFjo92mQeUObIvPfSNWUIZQDTjniOI6Gv63\\\\nGLWVFrZcvQBWjMEQraJA9xjPbblV8PtfO87MiJGLWCHFxmPz2dzoedN+2Coxom8m\\\\nV95CLz8QUShuao6u/RYcvUaZEoYs5bHcTmy5sBK80JyEmafJPtCQVxMCgYEAy3ar\\\\nZr3yv4xRPEPMat4rseswmuMooSaK3SKub19WFI5IAtB/e7qR1Rj9JhOGcZz+OQrl\\\\nT78O2OFYlgOIkJPvRMrPpK5V9lslc7tz1FSh3BZMRGq5jSyD7ETSOQ0c8T2O/s7v\\\\nbeEPbVbDe4mwvM24XByH0GnWveVxaDl51ABD65sCgYB3ZAspUkOA5egVCh8kNpnd\\\\nSd6SnuQBE3ySRlT2WEnCwP9Ph6oPgn+oAfiPX4xbRqkL8q/k0BdHQ4h+zNwhk7+h\\\\nWtPYRAP1Xxnc/F+jGjb+DVaIaKGU18MWPg7f+FI6nampl3Q0KvfxwX0GdNhtio8T\\\\nTj1E+SnFwh56SRQuxSh2gwKBgHKjlIO5NtNSflsUYFM+hyQiPiqnHzddfhSG+/3o\\\\nm5nNaSmczJesUYreH5San7/YEy2UxAugvP7aSY2MxB+iGsiJ9WD2kZzTUlDZJ7RV\\\\nUzWsoqBR+eZfVJ2FUWWvy8TpSG6trh4dFxImNtKejCR1TREpSiTV3Zb1dmahK9GV\\\\nrK9NAoGAbBxRLoC01xfxCTgt5BDiBcFVh4fp5yYKwavJPLzHSpuDOrrI9jDn1oKN\\\\nonq5sDU1i391zfQvdrbX4Ova48BN+B7p63FocP/MK5tyyBoT8zQEk2+vWDOw7H/Z\\\\nu5dTCPxTIsoIwUw1I+7yIxqJzLPFgR2gVBwY1ra/8iAqCj+zeBw=\\\\n-----END RSA PRIVATE KEY-----\\\\n\\\"\",\n \"webhook_secret\" : \"\\\"6fba8f2fc8a7e8f2cca5577eddd82ca7586b3b6b\\\"\",\n \"client_secret\" : \"\\\"1d4b2097ac622ba702d19de498f005747a8b21d3\\\"\",\n \"id\" : 37,\n \"events\" : [ \"label\", \"deployment\" ],\n \"slug\" : \"probot-owners\",\n \"node_id\" : \"MDExOkludGVncmF0aW9uMQ==\"\n },\n \"updated_at\" : \"2011-04-14T16:00:49Z\",\n \"html_url\" : \"https://web.example.mocklab.io/152850\",\n \"reactions\" : {\n \"confused\" : 3503165991681670624,\n \"-1\" : 5073663636521311913,\n \"+1\" : 7317787990494584785,\n \"total_count\" : 5480658306304797112,\n \"rocket\" : 1454050171291544175,\n \"hooray\" : 6486519413189554259,\n \"eyes\" : 4251604627424457749,\n \"heart\" : 23791498913825303,\n \"laugh\" : 1439889312828176720,\n \"url\" : \"https://web.example.mocklab.io/522946\"\n },\n \"id\" : 42,\n \"user\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"levi.abshire\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"nx21xns6lf6uuqifw0z3sghtoek7x4755cl8hjm24rka724glynqih9ig63cafu8yukkar2x687ss0dpm1icften5po8qpnnc4ou345pblw8obawrjftyjcz7ylptupr9qf0xcfujgyipfexoq6q7n3baa9e0b9r3037nlv12j8rrdaxtzrxz2\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"node_id\" : \"mgnv\"\n }\n },\n \"repo\" : {\n \"name\" : \"Joseph Daugherty II\",\n \"id\" : 8106711643525671034,\n \"url\" : \"https://web.example.mocklab.io/394941\"\n },\n \"created_at\" : \"2023-01-17T21:09:01.176Z\",\n \"id\" : \"4149\",\n \"type\" : \"61pagwhxhze8h4ieu6b871w0y1mpbrbu60rggjr2j298b510ojldhlb9g59fsckixgfqqm694o11s3m5v7b9gzr3up98bkusdm3o61za1gw7lthxq74ansy1xuc0761kjxuxqf1iwm5559osl\"\n}, {\n \"actor\" : {\n \"display_login\" : \"xwir87h9lf4kax4yf67l1n4kpwn5vn2b01h8jebzfmq13fpd5b6ahg2dm345tuy8p00rwf5909444omuy9t88ool3boq8cl9fdec336g8vmo3m\",\n \"avatar_url\" : \"https://s3.amazonaws.com/uifaces/faces/twitter/Shriiiiimp/128.jpg\",\n \"id\" : 5752696606986696024,\n \"login\" : \"z1qoj5ewjh5eay7r10rygdwyz4r7bgvqh3akv8icpk0pkvwk7zjoy1nzgw1cw6d38zndvh1b1jme1uhvgdbplpng9tcijtehkd5wylk2go2tctv544pmqe2oe3awy9n4dt9zhbv8xokjr8be3e8pc3ekb2quvrejc47448icsb1bnevtq1ddgxtohj\",\n \"gravatar_id\" : \"319m\",\n \"url\" : \"https://web.example.mocklab.io/128175\"\n },\n \"public\" : true,\n \"org\" : {\n \"display_login\" : \"utbi47qazonckn45l9q9bewlddpbbb79xdukrzdtap0pwt3vxgz4f7v3ve7zuf8w4gfqki9e537xvocy704a2d8bll1qqm1cua1x3dkzdtht6si4uupz9m4b0m3lobp0fkdp3ckmpvizjodbf95es8ptyi7ouwg841\",\n \"avatar_url\" : \"https://s3.amazonaws.com/uifaces/faces/twitter/deviljho_/128.jpg\",\n \"id\" : 6696481270709449980,\n \"login\" : \"yqp4b3c7a5sjn0tqe8mzo4kfw\",\n \"gravatar_id\" : \"c309\",\n \"url\" : \"https://web.example.mocklab.io/161157\"\n },\n \"payload\" : {\n \"pages\" : [ {\n \"summary\" : \"Aut libero repudiandae vel voluptatem enim recusandae omnis. Culpa voluptas occaecati dolores nihil officiis. Molestiae sit ex dolor. Voluptatem rerum modi nihil eum ut voluptas.\",\n \"html_url\" : \"https://web.example.mocklab.io/114654\",\n \"page_name\" : \"Al Reynolds\",\n \"action\" : \"zqr53auxnn8jaq6xkgii2kpyzsn1e4mmltdsqp8ko4ii2d6agvn8zuj0gy\",\n \"title\" : \"Sint aliquid deserunt.\",\n \"sha\" : \"ivfzdmyi9ddc8wbjm8k2amlmxtryw8rnvv7lvouddh2g223fthdwsnng0xq3n7w0qa6gq\"\n }, {\n \"summary\" : \"Dolore ab unde. Totam iste id facere id rem debitis. Et qui et quia reiciendis. Vel nemo voluptatem nam doloribus velit quisquam doloribus.\",\n \"html_url\" : \"https://web.example.mocklab.io/771608\",\n \"page_name\" : \"Miss Ned Kling\",\n \"action\" : \"x10imhbno42j7ou24jizlqkmlo8arys087rivr0f6dyk3iak82ltz9xqpbjyntbipkfwv0505uln37w0ipnzv1f2h3ei9lkujrhmf4qzzyil0sibkdtsshgdukmear0e94kibavkw11hqo1hlouw76uwve6et7z2l6s8yj0nybrfk0tu5\",\n \"title\" : \"Quis doloribus est placeat quia voluptatem omnis ullam.\",\n \"sha\" : \"vk5k51xj8pvbugv7r1llwowyfgd3rfix7qy9ic3u48s7ojtalgs7cm6nl4b42lbyavqsluexpq875h9uqzo90cq5b9ifn7311xzrfy9k4yn3eyb20ag5xjqd7aitp4zz\"\n }, {\n \"summary\" : \"Voluptatem ut beatae consequatur quibusdam tempora delectus quibusdam. Laborum magni et et rerum laudantium. Delectus qui natus error dolorum inventore. Non dolores voluptate fuga et veritatis vero po\",\n \"html_url\" : \"https://web.example.mocklab.io/583718\",\n \"page_name\" : \"Emmett Hyatt\",\n \"action\" : \"9yk0zgt3zkmc6gzaj0m22kicue4a7u975fum461qd7halsxqhzmwrhkqtkn9fdf2mulup7hz\",\n \"title\" : \"Corporis maxime et.\",\n \"sha\" : \"hony6ixtz4yfrm1ymuvk3psviuv5d7kc639eiz36d9ysxn3fxdjv7zwlz55f4gjg0insgf022o6j6ph11q088ttgqgdo4ze7\"\n }, {\n \"summary\" : \"Voluptas sed pariatur optio dolore non. Harum ab ipsum quia. Soluta harum consectetur.\",\n \"html_url\" : \"https://web.example.mocklab.io/063732\",\n \"page_name\" : \"Kasey Becker\",\n \"action\" : \"skd55swsufx5d3p23e4nwafnp3s2yq1ti90qn6x7dyae233vrd5mmayrb24olcfu5f1kjjfeiiaivbxl2nn4715a899uwsqqtqocn8cpsg9khka4ftki8h1ygc39fqr9laxt1o4nd5nxy2vgbhqs\",\n \"title\" : \"Eligendi maxime voluptatem atque similique quam.\",\n \"sha\" : \"hq4c\"\n }, {\n \"summary\" : \"Possimus illo corporis quia laborum temporibus. Et praesentium officia aspernatur reprehenderit voluptate voluptas. Doloribus odio sit ipsa expedita. Consequatur qui est eveniet. Blanditiis est qui it\",\n \"html_url\" : \"https://web.example.mocklab.io/227024\",\n \"page_name\" : \"Vance Emard IV\",\n \"action\" : \"9dux77f4wx5vet1dr0spvceq9u81fw45ol2tznziu8795vc119rqufi1pl7wmx96qspcx6o\",\n \"title\" : \"Consequatur corporis veniam.\",\n \"sha\" : \"yx1faq5de1hxnd5391hfl\"\n } ],\n \"issue\" : {\n \"body_html\" : \"0mx4pclgxpokubdvvpr60m24lkzchoseoe4b1znm6vz4b99cihj8aism39zm462dway6nqvdajx2u7hjh8ger4bi4e8dkz9kh8lftshr\",\n \"body_text\" : \"gcucc321zku400ybvkoizxtlljr5v2n975g1b216z762m72fg2u70jiaugqz64b6pdwvox34fzhhmendf9c6xbsyivapxlqqqo9pjvyk7vzmpq1dw2d8yx5lkpr6xl03zfg0nma4czv4c3x8erjk8hsogtcm78asrww7ew5ll7\",\n \"assignees\" : [ {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Fermin Huel Sr.\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"wvyywet286l857phlrps1guw17sfia7qun2yw394a1pttz25\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n }, {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Caitlyn Stark\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"fame02wg1c9sr306nrym70zwmj4bon6i6tsizwptwvpoivonhw6zbshdzno961dq60j8qeyusv\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n }, {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Christopher Tremblay\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"h4e1d97hii756k8rmm918y46ic1pwcgia3d3x9f1sbihf00ym681wmul3gyc5ijnykjalnwcl396guhub6g0lm\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n }, {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Faye Orn\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"x614t6pjxf34k64sgpr38d3wp8dsjcwwhdwceuriewz5jqq0h4zmefsj831hshde4de3l3fazx14fhipy9yd8tllw4ncssao98looouzzk66fcucccylgoyiil5nt8pdx7qfda3gbvyw\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n }, {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Wilbur Tremblay\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"ogz5vlm6l92g2lssddmgpnxx2ul5cahijvz5e0kfpztqp31fn9rge7kh\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n } ],\n \"created_at\" : \"2011-04-22T13:33:48Z\",\n \"body\" : \"I'm having a problem with this.\",\n \"repository\" : {\n \"allow_forking\" : true,\n \"anonymous_access_enabled\" : false,\n \"is_template\" : true,\n \"stargazers_count\" : 80,\n \"pushed_at\" : \"2011-01-26T19:06:43Z\",\n \"language\" : \"r1cgqjyywq7uzhkghygtk1hgicon7v51rxyd6jl9mzl6tfnf8w6mbga2meh86035uppbh3lw9d9oxpixsrwuv5todz6f1gdkocdui6o59e1rggj8qzls27is6bgb5v60yngdxp4ewcjgbzd61xldtslsmk7yzxy4g9ws9ww5pa\",\n \"subscription_url\" : \"http://api.github.com/repos/octocat/Hello-World/subscription\",\n \"branches_url\" : \"http://api.github.com/repos/octocat/Hello-World/branches{/branch}\",\n \"allow_rebase_merge\" : true,\n \"issue_comment_url\" : \"http://api.github.com/repos/octocat/Hello-World/issues/comments{/number}\",\n \"labels_url\" : \"http://api.github.com/repos/octocat/Hello-World/labels{/name}\",\n \"permissions\" : {\n \"pull\" : true,\n \"maintain\" : true,\n \"admin\" : false,\n \"triage\" : false,\n \"push\" : false\n },\n \"subscribers_url\" : \"http://api.github.com/repos/octocat/Hello-World/subscribers\",\n \"releases_url\" : \"http://api.github.com/repos/octocat/Hello-World/releases{/id}\",\n \"svn_url\" : \"https://svn.github.com/octocat/Hello-World\",\n \"subscribers_count\" : 7355035161555699811,\n \"id\" : 42,\n \"master_branch\" : \"ve73bm5d25t7pdvnflvl216bs2fb6f\",\n \"forks\" : 9124912319492811129,\n \"allow_merge_commit\" : true,\n \"archive_url\" : \"http://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref}\",\n \"git_refs_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/refs{/sha}\",\n \"forks_url\" : \"http://api.github.com/repos/octocat/Hello-World/forks\",\n \"visibility\" : \"z96pm\",\n \"statuses_url\" : \"http://api.github.com/repos/octocat/Hello-World/statuses/{sha}\",\n \"network_count\" : 2979736226544489399,\n \"ssh_url\" : \"git@github.com:octocat/Hello-World.git\",\n \"license\" : {\n \"html_url\" : \"https://web.example.mocklab.io/605626\",\n \"name\" : \"MIT License\",\n \"spdx_id\" : \"MIT\",\n \"key\" : \"mit\",\n \"url\" : \"https://api.github.com/licenses/mit\",\n \"node_id\" : \"MDc6TGljZW5zZW1pdA==\"\n },\n \"full_name\" : \"octocat/Hello-World\",\n \"size\" : 108,\n \"template_repository\" : {\n \"anonymous_access_enabled\" : false,\n \"is_template\" : true,\n \"stargazers_count\" : 9143565653843839793,\n \"pushed_at\" : \"j2u505owu3lujkp01s6zomnoh3jdokrmq8epwsr7kwalhfcom4194xscl8qoqhx1amcmlnoyz3t21r68yycjbdqfpqeohskz22k1clfpssr9jv4d4028ifgjpcc84z5g\",\n \"language\" : \"zffiqeoyoz3wgu3hsyenyyuv8vvwghxmd0kxpnyjkketygnmpirr6fnv2snj0nf7ytxrypi4sf57efjw3wu993vi94ady96qmq2td40t4io5dxaeuplcoxkungvovi9oezqu96w1du0bfv7tjrzsq\",\n \"subscription_url\" : \"https://web.example.mocklab.io/079481\",\n \"branches_url\" : \"https://web.example.mocklab.io/898952\",\n \"allow_rebase_merge\" : false,\n \"issue_comment_url\" : \"https://web.example.mocklab.io/015242\",\n \"labels_url\" : \"https://web.example.mocklab.io/515989\",\n \"permissions\" : { },\n \"subscribers_url\" : \"https://web.example.mocklab.io/422492\",\n \"releases_url\" : \"https://web.example.mocklab.io/984132\",\n \"svn_url\" : \"https://web.example.mocklab.io/929551\",\n \"subscribers_count\" : 7055258214815605581,\n \"id\" : 1076063140467870874,\n \"allow_merge_commit\" : false,\n \"archive_url\" : \"https://web.example.mocklab.io/542880\",\n \"git_refs_url\" : \"https://web.example.mocklab.io/006866\",\n \"forks_url\" : \"https://web.example.mocklab.io/019950\",\n \"visibility\" : \"ermeikxbh5xhf8f15141ndjv9vu7nw5q2xez3ffin3zoysbf7qmrspf1ljfgivk5mjn951z4zu3czvyxq67m06zcoi3wpovnedt4wdck7ehalj7enkr4ufff2p8c\",\n \"statuses_url\" : \"https://web.example.mocklab.io/790720\",\n \"network_count\" : 6617098503057805460,\n \"ssh_url\" : \"https://web.example.mocklab.io/795643\",\n \"full_name\" : \"Marty Upton\",\n \"size\" : 803365780530245382,\n \"languages_url\" : \"https://web.example.mocklab.io/730929\",\n \"clone_url\" : \"https://web.example.mocklab.io/301738\",\n \"collaborators_url\" : \"https://web.example.mocklab.io/452294\",\n \"html_url\" : \"https://web.example.mocklab.io/152274\",\n \"name\" : \"Nery Howell\",\n \"pulls_url\" : \"https://web.example.mocklab.io/985610\",\n \"default_branch\" : \"x1u5k7qh6pfykhrnxdkj6jbkfafwipokl6mgrx8nxzdtqypmly6dszozy6ozmakoy5n2worx8fpfmdy4048hwy464dlhzcyxjvir5nt9ls4doqaxxrmpr3ko107wz2xi5vrrfw9in0erw15rwau2d0cuputmj\",\n \"hooks_url\" : \"https://web.example.mocklab.io/720508\",\n \"trees_url\" : \"https://web.example.mocklab.io/513671\",\n \"tags_url\" : \"https://web.example.mocklab.io/070318\",\n \"contributors_url\" : \"https://web.example.mocklab.io/162549\",\n \"private\" : true,\n \"has_downloads\" : true,\n \"notifications_url\" : \"https://web.example.mocklab.io/373904\",\n \"open_issues_count\" : 2601792988673487619,\n \"created_at\" : \"5tpgskci85z3kltb5kml423kisvbbobbk5pr4ym6uzhqu2a8zx1l4dxgr5gt59ryie4xtl0nwko8ihc795xh8g07tz4pt7r65yq1t8qdw9yuzll0edvidd1wknqe7fsxdkrbwkfjnh5rew0nfq1za9z9c8ekl8lx44bwkx7jsrzj\",\n \"description\" : \"Quam voluptatem laborum. Non incidunt temporibus porro molestias voluptates vitae iure. Et occaecati adipisci quibusdam qui molestiae. A quis beatae. Pariatur qui quasi voluptatem qui.\",\n \"deployments_url\" : \"https://web.example.mocklab.io/873097\",\n \"keys_url\" : \"https://web.example.mocklab.io/770356\",\n \"has_projects\" : true,\n \"archived\" : false,\n \"has_wiki\" : true,\n \"updated_at\" : \"2022-05-03T06:48:59.180056Z\",\n \"comments_url\" : \"https://web.example.mocklab.io/761458\",\n \"stargazers_url\" : \"https://web.example.mocklab.io/588748\",\n \"disabled\" : false,\n \"delete_branch_on_merge\" : false,\n \"git_url\" : \"https://web.example.mocklab.io/911033\",\n \"has_pages\" : false,\n \"owner\" : { },\n \"allow_squash_merge\" : false,\n \"commits_url\" : \"https://web.example.mocklab.io/839866\",\n \"compare_url\" : \"https://web.example.mocklab.io/091779\",\n \"git_commits_url\" : \"https://web.example.mocklab.io/849077\",\n \"topics\" : [ \"a3157vlx37m3e4ohmpms6x1zdgwwary6eixogokk6t8497k56wbqo\" ],\n \"blobs_url\" : \"https://web.example.mocklab.io/964104\",\n \"git_tags_url\" : \"https://web.example.mocklab.io/647377\",\n \"merges_url\" : \"https://web.example.mocklab.io/627261\",\n \"downloads_url\" : \"https://web.example.mocklab.io/556205\",\n \"has_issues\" : false,\n \"url\" : \"https://web.example.mocklab.io/147995\",\n \"contents_url\" : \"https://web.example.mocklab.io/620326\",\n \"mirror_url\" : \"https://web.example.mocklab.io/707369\",\n \"milestones_url\" : \"https://web.example.mocklab.io/619184\",\n \"teams_url\" : \"https://web.example.mocklab.io/527021\",\n \"fork\" : false,\n \"issues_url\" : \"https://web.example.mocklab.io/291729\",\n \"events_url\" : \"https://web.example.mocklab.io/662549\",\n \"issue_events_url\" : \"https://web.example.mocklab.io/278485\",\n \"assignees_url\" : \"https://web.example.mocklab.io/859876\",\n \"watchers_count\" : 9125316301561220860,\n \"forks_count\" : 7688656388276016220,\n \"homepage\" : \"dr6gfccnzxk23vn7gzygjf38r9ojmesaqghwpxpo4cxo1at7ttx35kqiystwc7leodd1x7bsp4w4tatka5ryoxha9tm83puocwtqvb7krj0as6gdutjsepnvkkm93ns95nat3gto9q6zqn9n677xh8s69lv6klyl0w\",\n \"node_id\" : \"df44\"\n },\n \"languages_url\" : \"http://api.github.com/repos/octocat/Hello-World/languages\",\n \"clone_url\" : \"https://github.com/octocat/Hello-World.git\",\n \"collaborators_url\" : \"http://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator}\",\n \"html_url\" : \"https://github.com/octocat/Hello-World\",\n \"name\" : \"Team Environment\",\n \"pulls_url\" : \"http://api.github.com/repos/octocat/Hello-World/pulls{/number}\",\n \"default_branch\" : \"master\",\n \"hooks_url\" : \"http://api.github.com/repos/octocat/Hello-World/hooks\",\n \"trees_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/trees{/sha}\",\n \"tags_url\" : \"http://api.github.com/repos/octocat/Hello-World/tags\",\n \"contributors_url\" : \"http://api.github.com/repos/octocat/Hello-World/contributors\",\n \"private\" : true,\n \"has_downloads\" : true,\n \"notifications_url\" : \"http://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating}\",\n \"open_issues_count\" : 0,\n \"created_at\" : \"2011-01-26T19:01:12Z\",\n \"description\" : \"This your first repo!\",\n \"watchers\" : 1404383649465965637,\n \"deployments_url\" : \"http://api.github.com/repos/octocat/Hello-World/deployments\",\n \"keys_url\" : \"http://api.github.com/repos/octocat/Hello-World/keys{/key_id}\",\n \"has_projects\" : true,\n \"archived\" : true,\n \"has_wiki\" : true,\n \"updated_at\" : \"2011-01-26T19:14:43Z\",\n \"comments_url\" : \"http://api.github.com/repos/octocat/Hello-World/comments{/number}\",\n \"stargazers_url\" : \"http://api.github.com/repos/octocat/Hello-World/stargazers\",\n \"disabled\" : true,\n \"delete_branch_on_merge\" : false,\n \"git_url\" : \"git:github.com/octocat/Hello-World.git\",\n \"has_pages\" : true,\n \"owner\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Keila Blanda\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"afy2zhymtl21k8jkv9b3t1pl8qfeofg76lcl1hr4zz3najdi1i3gl49b1xeodmjkwz2xx7d20wpsbkayv5pkuahmqe5bv2vb0bparu40k1uifohdt43fev17\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"allow_squash_merge\" : true,\n \"commits_url\" : \"http://api.github.com/repos/octocat/Hello-World/commits{/sha}\",\n \"compare_url\" : \"http://api.github.com/repos/octocat/Hello-World/compare/{base}...{head}\",\n \"git_commits_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/commits{/sha}\",\n \"topics\" : [ \"qg3ydon8lwilgxjqde3crayku93ntonclkrxdbyvvjsrbba1418frdd3l1jmpq6fit3ous17fskwx66v31z6zqme3vz3tud9rzrlqlylq5t5t897o5lauk7vitqdyo3be5vsyovfixb58jt9ludule245z8kffdulbwq0r57shqpdpylkbz7o9s0gfpm1x0h2\", \"ew8wnkaf3342qqppgq4h4f3fru8kzptn74nlf5ov0pmbnvsedygakz\", \"rx2o4wpdndluta97aog2q5h7g4ut85h4mm3tf2hz852gg9bdboejhe071utty8a6oezf76hu6h4o4ad0\" ],\n \"blobs_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/blobs{/sha}\",\n \"git_tags_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/tags{/sha}\",\n \"merges_url\" : \"http://api.github.com/repos/octocat/Hello-World/merges\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:42Z\\\"\",\n \"downloads_url\" : \"http://api.github.com/repos/octocat/Hello-World/downloads\",\n \"has_issues\" : true,\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World\",\n \"contents_url\" : \"http://api.github.com/repos/octocat/Hello-World/contents/{+path}\",\n \"mirror_url\" : \"git:git.example.com/octocat/Hello-World\",\n \"milestones_url\" : \"http://api.github.com/repos/octocat/Hello-World/milestones{/number}\",\n \"teams_url\" : \"http://api.github.com/repos/octocat/Hello-World/teams\",\n \"fork\" : false,\n \"issues_url\" : \"http://api.github.com/repos/octocat/Hello-World/issues{/number}\",\n \"events_url\" : \"http://api.github.com/repos/octocat/Hello-World/events\",\n \"issue_events_url\" : \"http://api.github.com/repos/octocat/Hello-World/issues/events{/number}\",\n \"organization\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Theodora Schowalter\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"s89yfiu0pqijt0tb2xynllvunmgf673yctuwq1kqvwvfd7gsdiq6mlovg3davz957oe08kq9ntc28tbvowet6wfw5dfa1rqx3\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"assignees_url\" : \"http://api.github.com/repos/octocat/Hello-World/assignees{/user}\",\n \"open_issues\" : 6922214309797336903,\n \"watchers_count\" : 80,\n \"forks_count\" : 9,\n \"homepage\" : \"https://github.com\",\n \"node_id\" : \"MDEwOlJlcG9zaXRvcnkxMjk2MjY5\"\n },\n \"title\" : \"Found a bug\",\n \"author_association\" : \"OWNER\",\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347/labels{/name}\",\n \"number\" : 1347,\n \"performed_via_github_app\" : {\n \"owner\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Dr. Mika Homenick\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"johxz3modex57inhv4o0g2u54ki9a5r55bxhjslks57d3pgvb8zmsqkve8jqr2sywunqc5zcpb43ht92e813oh76n99rw26bkvnkbdr3c7c8i6m\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"installations_count\" : 5,\n \"created_at\" : \"2017-07-08T16:18:44-04:00\",\n \"description\" : \"The description of the app.\",\n \"client_id\" : \"\\\"Iv1.25b5d1e65ffc4022\\\"\",\n \"external_url\" : \"https://example.com\",\n \"updated_at\" : \"2017-07-08T16:18:44-04:00\",\n \"permissions\" : {\n \"deployments\" : \"write\",\n \"issues\" : \"read\"\n },\n \"html_url\" : \"https://github.com/apps/super-ci\",\n \"name\" : \"Probot Owners\",\n \"pem\" : \"\\\"-----BEGIN RSA PRIVATE KEY-----\\\\nMIIEogIBAAKCAQEArYxrNYD/iT5CZVpRJu4rBKmmze3PVmT/gCo2ATUvDvZTPTey\\\\nxcGJ3vvrJXazKk06pN05TN29o98jrYz4cengG3YGsXPNEpKsIrEl8NhbnxapEnM9\\\\nJCMRe0P5JcPsfZlX6hmiT7136GRWiGOUba2X9+HKh8QJVLG5rM007TBER9/z9mWm\\\\nrJuNh+m5l320oBQY/Qq3A7wzdEfZw8qm/mIN0FCeoXH1L6B8xXWaAYBwhTEh6SSn\\\\nZHlO1Xu1JWDmAvBCi0RO5aRSKM8q9QEkvvHP4yweAtK3N8+aAbZ7ovaDhyGz8r6r\\\\nzhU1b8Uo0Z2ysf503WqzQgIajr7Fry7/kUwpgQIDAQABAoIBADwJp80Ko1xHPZDy\\\\nfcCKBDfIuPvkmSW6KumbsLMaQv1aGdHDwwTGv3t0ixSay8CGlxMRtRDyZPib6SvQ\\\\n6OH/lpfpbMdW2ErkksgtoIKBVrDilfrcAvrNZu7NxRNbhCSvN8q0s4ICecjbbVQh\\\\nnueSdlA6vGXbW58BHMq68uRbHkP+k+mM9U0mDJ1HMch67wlg5GbayVRt63H7R2+r\\\\nVxcna7B80J/lCEjIYZznawgiTvp3MSanTglqAYi+m1EcSsP14bJIB9vgaxS79kTu\\\\noiSo93leJbBvuGo8QEiUqTwMw4tDksmkLsoqNKQ1q9P7LZ9DGcujtPy4EZsamSJT\\\\ny8OJt0ECgYEA2lxOxJsQk2kI325JgKFjo92mQeUObIvPfSNWUIZQDTjniOI6Gv63\\\\nGLWVFrZcvQBWjMEQraJA9xjPbblV8PtfO87MiJGLWCHFxmPz2dzoedN+2Coxom8m\\\\nV95CLz8QUShuao6u/RYcvUaZEoYs5bHcTmy5sBK80JyEmafJPtCQVxMCgYEAy3ar\\\\nZr3yv4xRPEPMat4rseswmuMooSaK3SKub19WFI5IAtB/e7qR1Rj9JhOGcZz+OQrl\\\\nT78O2OFYlgOIkJPvRMrPpK5V9lslc7tz1FSh3BZMRGq5jSyD7ETSOQ0c8T2O/s7v\\\\nbeEPbVbDe4mwvM24XByH0GnWveVxaDl51ABD65sCgYB3ZAspUkOA5egVCh8kNpnd\\\\nSd6SnuQBE3ySRlT2WEnCwP9Ph6oPgn+oAfiPX4xbRqkL8q/k0BdHQ4h+zNwhk7+h\\\\nWtPYRAP1Xxnc/F+jGjb+DVaIaKGU18MWPg7f+FI6nampl3Q0KvfxwX0GdNhtio8T\\\\nTj1E+SnFwh56SRQuxSh2gwKBgHKjlIO5NtNSflsUYFM+hyQiPiqnHzddfhSG+/3o\\\\nm5nNaSmczJesUYreH5San7/YEy2UxAugvP7aSY2MxB+iGsiJ9WD2kZzTUlDZJ7RV\\\\nUzWsoqBR+eZfVJ2FUWWvy8TpSG6trh4dFxImNtKejCR1TREpSiTV3Zb1dmahK9GV\\\\nrK9NAoGAbBxRLoC01xfxCTgt5BDiBcFVh4fp5yYKwavJPLzHSpuDOrrI9jDn1oKN\\\\nonq5sDU1i391zfQvdrbX4Ova48BN+B7p63FocP/MK5tyyBoT8zQEk2+vWDOw7H/Z\\\\nu5dTCPxTIsoIwUw1I+7yIxqJzLPFgR2gVBwY1ra/8iAqCj+zeBw=\\\\n-----END RSA PRIVATE KEY-----\\\\n\\\"\",\n \"webhook_secret\" : \"\\\"6fba8f2fc8a7e8f2cca5577eddd82ca7586b3b6b\\\"\",\n \"client_secret\" : \"\\\"1d4b2097ac622ba702d19de498f005747a8b21d3\\\"\",\n \"id\" : 37,\n \"events\" : [ \"label\", \"deployment\" ],\n \"slug\" : \"probot-owners\",\n \"node_id\" : \"MDExOkludGVncmF0aW9uMQ==\"\n },\n \"updated_at\" : \"2011-04-22T13:33:48Z\",\n \"comments_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347/comments\",\n \"active_lock_reason\" : \"too heated\",\n \"id\" : 1,\n \"repository_url\" : \"https://api.github.com/repos/octocat/Hello-World\",\n \"state\" : \"open\",\n \"locked\" : true,\n \"timeline_url\" : \"https://web.example.mocklab.io/054257\",\n \"pull_request\" : {\n \"patch_url\" : \"https://web.example.mocklab.io/440070\",\n \"html_url\" : \"https://web.example.mocklab.io/331052\",\n \"merged_at\" : \"2023-05-19T11:19:34.182Z\",\n \"diff_url\" : \"https://web.example.mocklab.io/865027\",\n \"url\" : \"https://web.example.mocklab.io/496719\"\n },\n \"closed_at\" : \"2023-05-17T17:22:20.182Z\",\n \"comments\" : 0,\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347\",\n \"labels\" : [ {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n }, {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n }, {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n }, {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n }, {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n }, {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n }, {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n } ],\n \"milestone\" : {\n \"creator\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Sherwood Torp\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"9h01bb0o8qflo1e265eurv9zxios39ocmyzu3cfe0fvc526v50bcfrz6vbjwp0r248wggg1bmhp2ib9mfyh739mnhoakgxcvu3bnfs25xenaw5kebfv0t5aa3lj1j5e6qsdgispqy9vklkm620pprqp30r4eq8llyt468s3sl2yh0zcwojniwcu22wvzmtreb8di67\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"closed_at\" : \"2013-02-12T13:22:01Z\",\n \"created_at\" : \"2011-04-10T20:09:31Z\",\n \"description\" : \"Tracking milestone for version 1.0\",\n \"closed_issues\" : 8,\n \"title\" : \"v1.0\",\n \"due_on\" : \"2012-10-09T23:39:01Z\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones/1\",\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones/1/labels\",\n \"number\" : 42,\n \"updated_at\" : \"2014-03-03T18:58:10Z\",\n \"html_url\" : \"https://github.com/octocat/Hello-World/milestones/v1.0\",\n \"id\" : 1002604,\n \"state\" : \"open\",\n \"open_issues\" : 4,\n \"node_id\" : \"MDk6TWlsZXN0b25lMTAwMjYwNA==\"\n },\n \"events_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347/events\",\n \"html_url\" : \"https://github.com/octocat/Hello-World/issues/1347\",\n \"assignee\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Dr. Shelby VonRueden\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"6ka4ffadzxwmchjb33bs7acmzqp90awnp01es1ohusjlqz2nuxfjz0pbpnxlcdjchtva4hh075svcgjahq0txb3te97jedof7z51hn0umc5dgw0qffj9t1g0w38e8ypofzy2ludroeunxrs5tfw57nu4f5n3ks0zzzn\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"user\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"tanika.gibson\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"yso422wqmz62576upoz4y8o8mip6ioh\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"node_id\" : \"MDU6SXNzdWUx\"\n },\n \"action\" : \"445n959rhf7uhkkn3pqxf9c0ig6ofovkb3tvhl4obhbno2s3nbfd10jsvdlrfa570d7xtwf7ciuoxlurjq4atoowt0hjxegskqfxaysyw445fsmjnexfz2clcxm10xqn5a237k5yv9uwvbzqr7voh18r8gx0m3kkli802ezayjnvw0757e9lt22\",\n \"comment\" : {\n \"issue_url\" : \"https://web.example.mocklab.io/235379\",\n \"body_html\" : \"azkhf8steh45uk9imevcj3iwbfzjkh6g5mwiledv1wcpknv57humwvtg08ibxtq8le\",\n \"body_text\" : \"tx16mpfqoigm5wrzs6iqvy6s2gloxfj0xp7mu2usxpm\",\n \"created_at\" : \"2011-04-14T16:00:49Z\",\n \"body\" : \"What version of Safari were you using when you observed this bug?\",\n \"url\" : \"https://api.github.com/repositories/42/issues/comments/1\",\n \"author_association\" : \"OWNER\",\n \"performed_via_github_app\" : {\n \"owner\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Santiago Barton V\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"6ij\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"installations_count\" : 5,\n \"created_at\" : \"2017-07-08T16:18:44-04:00\",\n \"description\" : \"The description of the app.\",\n \"client_id\" : \"\\\"Iv1.25b5d1e65ffc4022\\\"\",\n \"external_url\" : \"https://example.com\",\n \"updated_at\" : \"2017-07-08T16:18:44-04:00\",\n \"permissions\" : {\n \"deployments\" : \"write\",\n \"issues\" : \"read\"\n },\n \"html_url\" : \"https://github.com/apps/super-ci\",\n \"name\" : \"Probot Owners\",\n \"pem\" : \"\\\"-----BEGIN RSA PRIVATE KEY-----\\\\nMIIEogIBAAKCAQEArYxrNYD/iT5CZVpRJu4rBKmmze3PVmT/gCo2ATUvDvZTPTey\\\\nxcGJ3vvrJXazKk06pN05TN29o98jrYz4cengG3YGsXPNEpKsIrEl8NhbnxapEnM9\\\\nJCMRe0P5JcPsfZlX6hmiT7136GRWiGOUba2X9+HKh8QJVLG5rM007TBER9/z9mWm\\\\nrJuNh+m5l320oBQY/Qq3A7wzdEfZw8qm/mIN0FCeoXH1L6B8xXWaAYBwhTEh6SSn\\\\nZHlO1Xu1JWDmAvBCi0RO5aRSKM8q9QEkvvHP4yweAtK3N8+aAbZ7ovaDhyGz8r6r\\\\nzhU1b8Uo0Z2ysf503WqzQgIajr7Fry7/kUwpgQIDAQABAoIBADwJp80Ko1xHPZDy\\\\nfcCKBDfIuPvkmSW6KumbsLMaQv1aGdHDwwTGv3t0ixSay8CGlxMRtRDyZPib6SvQ\\\\n6OH/lpfpbMdW2ErkksgtoIKBVrDilfrcAvrNZu7NxRNbhCSvN8q0s4ICecjbbVQh\\\\nnueSdlA6vGXbW58BHMq68uRbHkP+k+mM9U0mDJ1HMch67wlg5GbayVRt63H7R2+r\\\\nVxcna7B80J/lCEjIYZznawgiTvp3MSanTglqAYi+m1EcSsP14bJIB9vgaxS79kTu\\\\noiSo93leJbBvuGo8QEiUqTwMw4tDksmkLsoqNKQ1q9P7LZ9DGcujtPy4EZsamSJT\\\\ny8OJt0ECgYEA2lxOxJsQk2kI325JgKFjo92mQeUObIvPfSNWUIZQDTjniOI6Gv63\\\\nGLWVFrZcvQBWjMEQraJA9xjPbblV8PtfO87MiJGLWCHFxmPz2dzoedN+2Coxom8m\\\\nV95CLz8QUShuao6u/RYcvUaZEoYs5bHcTmy5sBK80JyEmafJPtCQVxMCgYEAy3ar\\\\nZr3yv4xRPEPMat4rseswmuMooSaK3SKub19WFI5IAtB/e7qR1Rj9JhOGcZz+OQrl\\\\nT78O2OFYlgOIkJPvRMrPpK5V9lslc7tz1FSh3BZMRGq5jSyD7ETSOQ0c8T2O/s7v\\\\nbeEPbVbDe4mwvM24XByH0GnWveVxaDl51ABD65sCgYB3ZAspUkOA5egVCh8kNpnd\\\\nSd6SnuQBE3ySRlT2WEnCwP9Ph6oPgn+oAfiPX4xbRqkL8q/k0BdHQ4h+zNwhk7+h\\\\nWtPYRAP1Xxnc/F+jGjb+DVaIaKGU18MWPg7f+FI6nampl3Q0KvfxwX0GdNhtio8T\\\\nTj1E+SnFwh56SRQuxSh2gwKBgHKjlIO5NtNSflsUYFM+hyQiPiqnHzddfhSG+/3o\\\\nm5nNaSmczJesUYreH5San7/YEy2UxAugvP7aSY2MxB+iGsiJ9WD2kZzTUlDZJ7RV\\\\nUzWsoqBR+eZfVJ2FUWWvy8TpSG6trh4dFxImNtKejCR1TREpSiTV3Zb1dmahK9GV\\\\nrK9NAoGAbBxRLoC01xfxCTgt5BDiBcFVh4fp5yYKwavJPLzHSpuDOrrI9jDn1oKN\\\\nonq5sDU1i391zfQvdrbX4Ova48BN+B7p63FocP/MK5tyyBoT8zQEk2+vWDOw7H/Z\\\\nu5dTCPxTIsoIwUw1I+7yIxqJzLPFgR2gVBwY1ra/8iAqCj+zeBw=\\\\n-----END RSA PRIVATE KEY-----\\\\n\\\"\",\n \"webhook_secret\" : \"\\\"6fba8f2fc8a7e8f2cca5577eddd82ca7586b3b6b\\\"\",\n \"client_secret\" : \"\\\"1d4b2097ac622ba702d19de498f005747a8b21d3\\\"\",\n \"id\" : 37,\n \"events\" : [ \"label\", \"deployment\" ],\n \"slug\" : \"probot-owners\",\n \"node_id\" : \"MDExOkludGVncmF0aW9uMQ==\"\n },\n \"updated_at\" : \"2011-04-14T16:00:49Z\",\n \"html_url\" : \"https://web.example.mocklab.io/022631\",\n \"reactions\" : {\n \"confused\" : 6146231169152640986,\n \"-1\" : 6539377396931091272,\n \"+1\" : 4646253331266753615,\n \"total_count\" : 2127165272094587878,\n \"rocket\" : 4593932382505742859,\n \"hooray\" : 2589387995610855394,\n \"eyes\" : 6085275910138991536,\n \"heart\" : 7102356720585882659,\n \"laugh\" : 7095988800669063817,\n \"url\" : \"https://web.example.mocklab.io/049242\"\n },\n \"id\" : 42,\n \"user\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"noella.kerluke\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"si1kf6auswewwbadqltz8vt3i2qeaqgizd610p4gqwlkaxyp2okj66oqbayv89gc5xpedqq1nivq9xzyy9v9fs6fhaw61b360paiezwnjotwufig2tux5amy3pislyqmdq0nv\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"node_id\" : \"3jr8\"\n }\n },\n \"repo\" : {\n \"name\" : \"Keri Halvorson\",\n \"id\" : 4278201906191783333,\n \"url\" : \"https://web.example.mocklab.io/481861\"\n },\n \"created_at\" : \"2023-09-22T10:01:36.183Z\",\n \"id\" : \"l4el\",\n \"type\" : \"05ly0tvbxpz8ynn37h0dpsk05b6ur4wqk598phl7v6qjly865664c3oefd9banen1ko1igsk7ee35q1xa085cz0zy9qvkkl77a7zum1qdqdkt2fz5zok1lfewilmsgle5bpkmwkw9ulm6m5t8al50g787qnd2pd5oyie9hhuvilavrput6nogwpo9je6rq\"\n}, {\n \"actor\" : {\n \"display_login\" : \"o543u6kftqac9q0sh9bsnz0jar9meeflvezw77dej2gvpnhzrhg4wxtqg3ljvjwa283s6bip6rsh7cwp124tl4h02u5d8p187ezraqxrktpohlwshaa7e4398d8gaq5e9t8gchw9j9ji\",\n \"avatar_url\" : \"https://s3.amazonaws.com/uifaces/faces/twitter/constantx/128.jpg\",\n \"id\" : 7148552047911359565,\n \"login\" : \"0aoh4k9apx0jpjhb7jqpmwc53zig3pjina3sqiaa0lejgnrcqvhyorkfzmp17hxb9jr90jvrvs2tclayjvm37ccoi1b69xb8yx7cxp6wytjnhs42qyjpv3qr0istdk94iy80\",\n \"gravatar_id\" : \"2111\",\n \"url\" : \"https://web.example.mocklab.io/087830\"\n },\n \"public\" : true,\n \"org\" : {\n \"display_login\" : \"d2mpjpryqdsx4guzlm74twpcmvc6ns177pwkrm60ixssbvoo6lp34c2\",\n \"avatar_url\" : \"https://s3.amazonaws.com/uifaces/faces/twitter/_ragzor/128.jpg\",\n \"id\" : 7578320775481582065,\n \"login\" : \"wgvpc\",\n \"gravatar_id\" : \"smfv\",\n \"url\" : \"https://web.example.mocklab.io/482436\"\n },\n \"payload\" : {\n \"pages\" : [ {\n \"summary\" : \"Sunt sed adipisci laudantium. Animi est ut dolor. Nisi esse est animi sint rem numquam.\",\n \"html_url\" : \"https://web.example.mocklab.io/270569\",\n \"page_name\" : \"Dr. Alexia Jones\",\n \"action\" : \"cgeynampvndxzjrujfs3yklemvxtykou4h40mv9xo8v\",\n \"title\" : \"Eligendi laudantium quia aliquid velit laudantium veritatis.\",\n \"sha\" : \"jlfjtd7g8yjyfnwrslt8cq2omxani0uqoh3x5vqquiulpintyxv3hnhspcjiklxowfp\"\n }, {\n \"summary\" : \"Natus sed a tenetur sunt quas vel ducimus. Quae quidem alias. Vel possimus culpa dolore ab. Nisi maxime occaecati. Asperiores quisquam minima distinctio aperiam velit et provident.\",\n \"html_url\" : \"https://web.example.mocklab.io/686157\",\n \"page_name\" : \"Coy Wisozk\",\n \"action\" : \"f1s1a0tiabyxer5154rlc66741ml13b6qdsa0qufrukt43311iv3r0dp9bxok9v9n9xdpdw7t0gbg0z10ou3ehbkjzra73w7p3v13qbbaqe4o4xu63kv9egupcxd8yls00ytww\",\n \"title\" : \"Perferendis provident amet et eum.\",\n \"sha\" : \"e4zjk2e586621\"\n } ],\n \"issue\" : {\n \"body_html\" : \"bteti75h7em9ofxfumtl3fwj7quo\",\n \"body_text\" : \"wi0y4z0558xxepgmwcbnpmxmxt2mexalcm0csw5vvu79umyxetixlby84hcv1nydkmurvvw7qy0gp953u1pijnbblqhtiwumlvbk52j\",\n \"assignees\" : [ {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Cary Dickens\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"vvuxvv61adpv5hlsdgx3cq8vdmf3y7ovucsglsuhsc23dyk9wms12gzbrhmk\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n }, {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Miss Felecia Stokes\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"c4xpi0ch5f34xvhdd46ee538ndqfxtvfjygzf1ld10fjl3j9lzvtag59rl9ygn8qtq3sj4uocgxj6nac23q9r0e2qoz8zlb69yjo2hfoj5ow3dfq887z63tavkk83w3bp2y4lv1ymmoxw6uvqaea5hn35norq0qdz82g7rrvsg5e5d2zdqnn6bz0tk7kvcc8\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n }, {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Raymon Gorczany\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"xylseg88u1y969hgxqixlwpfl0at33onafzukk2i3ooyqxebr7q67vacmkcphuatyeiv7aobounufr62ddtxgypgo5tvv6yycrmk7whl4r4ruqv2s36hoz5drcqgpwom5iakwkkf7s2hoow0k9uez0ukr07sy0xiw8z06fgh6w6g\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n } ],\n \"created_at\" : \"2011-04-22T13:33:48Z\",\n \"body\" : \"I'm having a problem with this.\",\n \"repository\" : {\n \"allow_forking\" : false,\n \"anonymous_access_enabled\" : true,\n \"is_template\" : true,\n \"stargazers_count\" : 80,\n \"pushed_at\" : \"2011-01-26T19:06:43Z\",\n \"language\" : \"k1jnr1heivt2ywkttwkbv59qzmxg6zgdk2q0aswgdenkmkxj17cmvspgzoel9n1gxxx2zfebc15sds2ojfj977e\",\n \"subscription_url\" : \"http://api.github.com/repos/octocat/Hello-World/subscription\",\n \"branches_url\" : \"http://api.github.com/repos/octocat/Hello-World/branches{/branch}\",\n \"allow_rebase_merge\" : true,\n \"issue_comment_url\" : \"http://api.github.com/repos/octocat/Hello-World/issues/comments{/number}\",\n \"labels_url\" : \"http://api.github.com/repos/octocat/Hello-World/labels{/name}\",\n \"permissions\" : {\n \"pull\" : true,\n \"maintain\" : true,\n \"admin\" : true,\n \"triage\" : false,\n \"push\" : true\n },\n \"subscribers_url\" : \"http://api.github.com/repos/octocat/Hello-World/subscribers\",\n \"releases_url\" : \"http://api.github.com/repos/octocat/Hello-World/releases{/id}\",\n \"svn_url\" : \"https://svn.github.com/octocat/Hello-World\",\n \"subscribers_count\" : 2549793211901420383,\n \"id\" : 42,\n \"master_branch\" : \"ojgzx0l4bor7tqz5c2v18dyvz5irbpk1grzaeot1omvtzdnk4zxlaqrnfge1p3rv4nnn7fsm0swiiqvzmmly6tpuiiuadv5052sw63aqpzo7kz4bzz4ruqtxaya8f25sala7lfcq8yxnb9xjahe1c1yx5pu071gp4npdru208uwgyp6rwkvorv9zkzi\",\n \"forks\" : 6070436800465154543,\n \"allow_merge_commit\" : true,\n \"archive_url\" : \"http://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref}\",\n \"git_refs_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/refs{/sha}\",\n \"forks_url\" : \"http://api.github.com/repos/octocat/Hello-World/forks\",\n \"visibility\" : \"dvx5kodbh6xduijlmm6ajaj9as3wja3535hy172jw05fb69sesd75n7lrpah1icjbcow0mbwh165zc0eau1wfy9sajgg5ys04luq1abqmpuy\",\n \"statuses_url\" : \"http://api.github.com/repos/octocat/Hello-World/statuses/{sha}\",\n \"network_count\" : 316649129167008754,\n \"ssh_url\" : \"git@github.com:octocat/Hello-World.git\",\n \"license\" : {\n \"html_url\" : \"https://web.example.mocklab.io/232909\",\n \"name\" : \"MIT License\",\n \"spdx_id\" : \"MIT\",\n \"key\" : \"mit\",\n \"url\" : \"https://api.github.com/licenses/mit\",\n \"node_id\" : \"MDc6TGljZW5zZW1pdA==\"\n },\n \"full_name\" : \"octocat/Hello-World\",\n \"size\" : 108,\n \"template_repository\" : {\n \"anonymous_access_enabled\" : false,\n \"is_template\" : true,\n \"stargazers_count\" : 1896672016614710238,\n \"pushed_at\" : \"aixez7c0cr4kxvdva5hs7ccpp1v4o6idvdjouub2z60gl0qm96fbmd4yk6dip95wx4mp99no3qytdeczfdlwv4h24jo720fvpcvv9awmno27nb4we3\",\n \"language\" : \"2hkt2uufsh5ebpy660wa9nwqrqsbaw31pyum2xhys72rm1zmarj7vcubhgu44svj31gxu9krxv2pji0dcp8e2euk2yurpeyhl0ogbvm52s325q5r33\",\n \"subscription_url\" : \"https://web.example.mocklab.io/275670\",\n \"branches_url\" : \"https://web.example.mocklab.io/581302\",\n \"allow_rebase_merge\" : false,\n \"issue_comment_url\" : \"https://web.example.mocklab.io/083429\",\n \"labels_url\" : \"https://web.example.mocklab.io/909264\",\n \"permissions\" : { },\n \"subscribers_url\" : \"https://web.example.mocklab.io/215913\",\n \"releases_url\" : \"https://web.example.mocklab.io/545215\",\n \"svn_url\" : \"https://web.example.mocklab.io/700617\",\n \"subscribers_count\" : 8345570485759343301,\n \"id\" : 5217810800838828207,\n \"allow_merge_commit\" : false,\n \"archive_url\" : \"https://web.example.mocklab.io/630742\",\n \"git_refs_url\" : \"https://web.example.mocklab.io/391451\",\n \"forks_url\" : \"https://web.example.mocklab.io/086588\",\n \"visibility\" : \"reyuf8vo3umkywngx5v12em0epb\",\n \"statuses_url\" : \"https://web.example.mocklab.io/103482\",\n \"network_count\" : 6427230517540355815,\n \"ssh_url\" : \"https://web.example.mocklab.io/777740\",\n \"full_name\" : \"Awilda Wilkinson MD\",\n \"size\" : 2234112276808555322,\n \"languages_url\" : \"https://web.example.mocklab.io/627821\",\n \"clone_url\" : \"https://web.example.mocklab.io/930853\",\n \"collaborators_url\" : \"https://web.example.mocklab.io/861466\",\n \"html_url\" : \"https://web.example.mocklab.io/896388\",\n \"name\" : \"Dr. Jacinto Wisozk\",\n \"pulls_url\" : \"https://web.example.mocklab.io/215494\",\n \"default_branch\" : \"xpni843jqwemm9u24pts0xtj7rysf5k6\",\n \"hooks_url\" : \"https://web.example.mocklab.io/738877\",\n \"trees_url\" : \"https://web.example.mocklab.io/978447\",\n \"tags_url\" : \"https://web.example.mocklab.io/109667\",\n \"contributors_url\" : \"https://web.example.mocklab.io/350326\",\n \"private\" : false,\n \"has_downloads\" : false,\n \"notifications_url\" : \"https://web.example.mocklab.io/285839\",\n \"open_issues_count\" : 3750973888361273488,\n \"created_at\" : \"b7b3xaq68kupavurxshv78smtr3mojygg6m73jucfjrhodfur5x0nn7n5uu6pw3pptr6a0wkq3sif\",\n \"description\" : \"Repellendus et quasi a aut et magni autem. Repellendus aut quibusdam et. Ratione ut quibusdam. Optio vel nobis id in aut nisi.\",\n \"deployments_url\" : \"https://web.example.mocklab.io/960152\",\n \"keys_url\" : \"https://web.example.mocklab.io/297803\",\n \"has_projects\" : true,\n \"archived\" : true,\n \"has_wiki\" : false,\n \"updated_at\" : \"2022-06-12T07:31:59.1871Z\",\n \"comments_url\" : \"https://web.example.mocklab.io/285076\",\n \"stargazers_url\" : \"https://web.example.mocklab.io/314811\",\n \"disabled\" : false,\n \"delete_branch_on_merge\" : false,\n \"git_url\" : \"https://web.example.mocklab.io/933980\",\n \"has_pages\" : true,\n \"owner\" : { },\n \"allow_squash_merge\" : true,\n \"commits_url\" : \"https://web.example.mocklab.io/742601\",\n \"compare_url\" : \"https://web.example.mocklab.io/266276\",\n \"git_commits_url\" : \"https://web.example.mocklab.io/457645\",\n \"topics\" : [ \"yv401pceb9xt431qzyvdtb5kjdq8fp6hmoksm8o3zkigw4rblcwqjtw8fmvhjyd4b7nfy7ixirrc99cehea1qp6d40\" ],\n \"blobs_url\" : \"https://web.example.mocklab.io/455959\",\n \"git_tags_url\" : \"https://web.example.mocklab.io/104599\",\n \"merges_url\" : \"https://web.example.mocklab.io/041842\",\n \"downloads_url\" : \"https://web.example.mocklab.io/888820\",\n \"has_issues\" : true,\n \"url\" : \"https://web.example.mocklab.io/625486\",\n \"contents_url\" : \"https://web.example.mocklab.io/444689\",\n \"mirror_url\" : \"https://web.example.mocklab.io/695542\",\n \"milestones_url\" : \"https://web.example.mocklab.io/197185\",\n \"teams_url\" : \"https://web.example.mocklab.io/723175\",\n \"fork\" : false,\n \"issues_url\" : \"https://web.example.mocklab.io/685524\",\n \"events_url\" : \"https://web.example.mocklab.io/948527\",\n \"issue_events_url\" : \"https://web.example.mocklab.io/755047\",\n \"assignees_url\" : \"https://web.example.mocklab.io/995461\",\n \"watchers_count\" : 9204045851945690631,\n \"forks_count\" : 6138484170591018007,\n \"homepage\" : \"ngyxoxxa9qomsvhys496eh0\",\n \"node_id\" : \"1k94\"\n },\n \"languages_url\" : \"http://api.github.com/repos/octocat/Hello-World/languages\",\n \"clone_url\" : \"https://github.com/octocat/Hello-World.git\",\n \"collaborators_url\" : \"http://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator}\",\n \"html_url\" : \"https://github.com/octocat/Hello-World\",\n \"name\" : \"Team Environment\",\n \"pulls_url\" : \"http://api.github.com/repos/octocat/Hello-World/pulls{/number}\",\n \"default_branch\" : \"master\",\n \"hooks_url\" : \"http://api.github.com/repos/octocat/Hello-World/hooks\",\n \"trees_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/trees{/sha}\",\n \"tags_url\" : \"http://api.github.com/repos/octocat/Hello-World/tags\",\n \"contributors_url\" : \"http://api.github.com/repos/octocat/Hello-World/contributors\",\n \"private\" : false,\n \"has_downloads\" : true,\n \"notifications_url\" : \"http://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating}\",\n \"open_issues_count\" : 0,\n \"created_at\" : \"2011-01-26T19:01:12Z\",\n \"description\" : \"This your first repo!\",\n \"watchers\" : 1584553708533519448,\n \"deployments_url\" : \"http://api.github.com/repos/octocat/Hello-World/deployments\",\n \"keys_url\" : \"http://api.github.com/repos/octocat/Hello-World/keys{/key_id}\",\n \"has_projects\" : true,\n \"archived\" : true,\n \"has_wiki\" : true,\n \"updated_at\" : \"2011-01-26T19:14:43Z\",\n \"comments_url\" : \"http://api.github.com/repos/octocat/Hello-World/comments{/number}\",\n \"stargazers_url\" : \"http://api.github.com/repos/octocat/Hello-World/stargazers\",\n \"disabled\" : true,\n \"delete_branch_on_merge\" : false,\n \"git_url\" : \"git:github.com/octocat/Hello-World.git\",\n \"has_pages\" : true,\n \"owner\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Chan Lind\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"xofygo1o7qrhmo7uwlygth\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"allow_squash_merge\" : true,\n \"commits_url\" : \"http://api.github.com/repos/octocat/Hello-World/commits{/sha}\",\n \"compare_url\" : \"http://api.github.com/repos/octocat/Hello-World/compare/{base}...{head}\",\n \"git_commits_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/commits{/sha}\",\n \"topics\" : [ \"6z2xi4fwc5nybiwlnow6hp7fcmfr926jzbljyk1aja2k8g1a8jsztmq1bz1eibuzatbojvhen0vdaevhp82pssnjf4p78uzr6eq8tkxzuw03kjn3pjfbnebkekpyy3nrb4tyxd6pbp3\", \"ufpd9dpgvii3kgtr2i8jrb\", \"9tt0fhthxq9tbofagqqy138c9f6po3qegid6s1f6g1nw6o26ragx17qb1kfoeeg1c2orc6hf91h4c09lhg8uxotlkjif8vtlun5ox6a5shqe0q0fa0fotgd9s9b4swoukv8lgweyqangnscd3xk509ugxet0s39d8qmith1eycsfxt\", \"4v24uu7u4ud2q8wiez0m55p75u1k1z09n479nql4wn\", \"fh88ita3lrbj69r79irilbds7dsjk8edm9l5ycf6l98nlea6p79oe1thq95xzg2a2ctawqq620u5cr0a59cdsc8c2r9r476numw8ew7m0y040cgwwconv93uxzms0nb3w7yhw5xvtkys5tno5gmwsz2jwcyweu9rubw6xlds8e91yvg9dsonijsiv8\", \"i5fq22svss6fh54bjkavnjrdyxls83hjeyu97ktk1o72uo3oa4e0s4xfh0v25echpu5815x8w3qgu2e9b4ds9aw98tj9ua8p40wqex463ydd29w5he9srmzfpzug0olifxza55duj8t4w3ekl7sw0evuc6\", \"fb6m4fbbjfdghuwkxodh0pnw92hs2bbtdguemblhm46iwri00rhf21yt8w0wgotw5y7epj5k9d0ytqhm6srgqydgw6i8lh0frfkc0jhdv7rj3qfv17ow9edoc5vkudenjchzbve0bmbbz7kj78fii86qqc34ioxf0dz33038axhd\" ],\n \"blobs_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/blobs{/sha}\",\n \"git_tags_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/tags{/sha}\",\n \"merges_url\" : \"http://api.github.com/repos/octocat/Hello-World/merges\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:42Z\\\"\",\n \"downloads_url\" : \"http://api.github.com/repos/octocat/Hello-World/downloads\",\n \"has_issues\" : true,\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World\",\n \"contents_url\" : \"http://api.github.com/repos/octocat/Hello-World/contents/{+path}\",\n \"mirror_url\" : \"git:git.example.com/octocat/Hello-World\",\n \"milestones_url\" : \"http://api.github.com/repos/octocat/Hello-World/milestones{/number}\",\n \"teams_url\" : \"http://api.github.com/repos/octocat/Hello-World/teams\",\n \"fork\" : false,\n \"issues_url\" : \"http://api.github.com/repos/octocat/Hello-World/issues{/number}\",\n \"events_url\" : \"http://api.github.com/repos/octocat/Hello-World/events\",\n \"issue_events_url\" : \"http://api.github.com/repos/octocat/Hello-World/issues/events{/number}\",\n \"organization\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Kaley Hackett I\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"086kkveohio1815debcik21y51kffcfb4g72swanosxyhk58n1aiigpnmkzfv3y7n8ir1g6lg877on2qmpl\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"assignees_url\" : \"http://api.github.com/repos/octocat/Hello-World/assignees{/user}\",\n \"open_issues\" : 2434686387529366693,\n \"watchers_count\" : 80,\n \"forks_count\" : 9,\n \"homepage\" : \"https://github.com\",\n \"node_id\" : \"MDEwOlJlcG9zaXRvcnkxMjk2MjY5\"\n },\n \"title\" : \"Found a bug\",\n \"author_association\" : \"OWNER\",\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347/labels{/name}\",\n \"number\" : 1347,\n \"performed_via_github_app\" : {\n \"owner\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Jonathon Muller\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"9zch7qc7fdzbdz7d3puzjeav6wkyjw8hv1jocy5982pfxkkz71nx3ey884yt7eye3c36n2dhc92qgo1ptwffiwc5j3pxpoj97koab8t80io4oi3eji2uhe3zlnxymij991y8drtulp58k62bzfhcuj8hhpg8wl\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"installations_count\" : 5,\n \"created_at\" : \"2017-07-08T16:18:44-04:00\",\n \"description\" : \"The description of the app.\",\n \"client_id\" : \"\\\"Iv1.25b5d1e65ffc4022\\\"\",\n \"external_url\" : \"https://example.com\",\n \"updated_at\" : \"2017-07-08T16:18:44-04:00\",\n \"permissions\" : {\n \"deployments\" : \"write\",\n \"issues\" : \"read\"\n },\n \"html_url\" : \"https://github.com/apps/super-ci\",\n \"name\" : \"Probot Owners\",\n \"pem\" : \"\\\"-----BEGIN RSA PRIVATE KEY-----\\\\nMIIEogIBAAKCAQEArYxrNYD/iT5CZVpRJu4rBKmmze3PVmT/gCo2ATUvDvZTPTey\\\\nxcGJ3vvrJXazKk06pN05TN29o98jrYz4cengG3YGsXPNEpKsIrEl8NhbnxapEnM9\\\\nJCMRe0P5JcPsfZlX6hmiT7136GRWiGOUba2X9+HKh8QJVLG5rM007TBER9/z9mWm\\\\nrJuNh+m5l320oBQY/Qq3A7wzdEfZw8qm/mIN0FCeoXH1L6B8xXWaAYBwhTEh6SSn\\\\nZHlO1Xu1JWDmAvBCi0RO5aRSKM8q9QEkvvHP4yweAtK3N8+aAbZ7ovaDhyGz8r6r\\\\nzhU1b8Uo0Z2ysf503WqzQgIajr7Fry7/kUwpgQIDAQABAoIBADwJp80Ko1xHPZDy\\\\nfcCKBDfIuPvkmSW6KumbsLMaQv1aGdHDwwTGv3t0ixSay8CGlxMRtRDyZPib6SvQ\\\\n6OH/lpfpbMdW2ErkksgtoIKBVrDilfrcAvrNZu7NxRNbhCSvN8q0s4ICecjbbVQh\\\\nnueSdlA6vGXbW58BHMq68uRbHkP+k+mM9U0mDJ1HMch67wlg5GbayVRt63H7R2+r\\\\nVxcna7B80J/lCEjIYZznawgiTvp3MSanTglqAYi+m1EcSsP14bJIB9vgaxS79kTu\\\\noiSo93leJbBvuGo8QEiUqTwMw4tDksmkLsoqNKQ1q9P7LZ9DGcujtPy4EZsamSJT\\\\ny8OJt0ECgYEA2lxOxJsQk2kI325JgKFjo92mQeUObIvPfSNWUIZQDTjniOI6Gv63\\\\nGLWVFrZcvQBWjMEQraJA9xjPbblV8PtfO87MiJGLWCHFxmPz2dzoedN+2Coxom8m\\\\nV95CLz8QUShuao6u/RYcvUaZEoYs5bHcTmy5sBK80JyEmafJPtCQVxMCgYEAy3ar\\\\nZr3yv4xRPEPMat4rseswmuMooSaK3SKub19WFI5IAtB/e7qR1Rj9JhOGcZz+OQrl\\\\nT78O2OFYlgOIkJPvRMrPpK5V9lslc7tz1FSh3BZMRGq5jSyD7ETSOQ0c8T2O/s7v\\\\nbeEPbVbDe4mwvM24XByH0GnWveVxaDl51ABD65sCgYB3ZAspUkOA5egVCh8kNpnd\\\\nSd6SnuQBE3ySRlT2WEnCwP9Ph6oPgn+oAfiPX4xbRqkL8q/k0BdHQ4h+zNwhk7+h\\\\nWtPYRAP1Xxnc/F+jGjb+DVaIaKGU18MWPg7f+FI6nampl3Q0KvfxwX0GdNhtio8T\\\\nTj1E+SnFwh56SRQuxSh2gwKBgHKjlIO5NtNSflsUYFM+hyQiPiqnHzddfhSG+/3o\\\\nm5nNaSmczJesUYreH5San7/YEy2UxAugvP7aSY2MxB+iGsiJ9WD2kZzTUlDZJ7RV\\\\nUzWsoqBR+eZfVJ2FUWWvy8TpSG6trh4dFxImNtKejCR1TREpSiTV3Zb1dmahK9GV\\\\nrK9NAoGAbBxRLoC01xfxCTgt5BDiBcFVh4fp5yYKwavJPLzHSpuDOrrI9jDn1oKN\\\\nonq5sDU1i391zfQvdrbX4Ova48BN+B7p63FocP/MK5tyyBoT8zQEk2+vWDOw7H/Z\\\\nu5dTCPxTIsoIwUw1I+7yIxqJzLPFgR2gVBwY1ra/8iAqCj+zeBw=\\\\n-----END RSA PRIVATE KEY-----\\\\n\\\"\",\n \"webhook_secret\" : \"\\\"6fba8f2fc8a7e8f2cca5577eddd82ca7586b3b6b\\\"\",\n \"client_secret\" : \"\\\"1d4b2097ac622ba702d19de498f005747a8b21d3\\\"\",\n \"id\" : 37,\n \"events\" : [ \"label\", \"deployment\" ],\n \"slug\" : \"probot-owners\",\n \"node_id\" : \"MDExOkludGVncmF0aW9uMQ==\"\n },\n \"updated_at\" : \"2011-04-22T13:33:48Z\",\n \"comments_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347/comments\",\n \"active_lock_reason\" : \"too heated\",\n \"id\" : 1,\n \"repository_url\" : \"https://api.github.com/repos/octocat/Hello-World\",\n \"state\" : \"open\",\n \"locked\" : true,\n \"timeline_url\" : \"https://web.example.mocklab.io/704525\",\n \"pull_request\" : {\n \"patch_url\" : \"https://web.example.mocklab.io/207820\",\n \"html_url\" : \"https://web.example.mocklab.io/508117\",\n \"merged_at\" : \"2024-01-05T21:24:58.189Z\",\n \"diff_url\" : \"https://web.example.mocklab.io/702008\",\n \"url\" : \"https://web.example.mocklab.io/509300\"\n },\n \"closed_at\" : \"2022-07-13T15:52:36.189Z\",\n \"comments\" : 0,\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347\",\n \"labels\" : [ {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n }, {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n }, {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n }, {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n }, {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n }, {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n }, {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n }, {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n } ],\n \"milestone\" : {\n \"creator\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Mr. Bo Torp\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"rvl9pe1x2jhnovtvegca7x5w1xbrv0r4ju1f8fmitsgft3zsnp9sft6kri2s9rbrlvb3vgjmz97vhvr0nklz2jd9qoi7fpvxp8n\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"closed_at\" : \"2013-02-12T13:22:01Z\",\n \"created_at\" : \"2011-04-10T20:09:31Z\",\n \"description\" : \"Tracking milestone for version 1.0\",\n \"closed_issues\" : 8,\n \"title\" : \"v1.0\",\n \"due_on\" : \"2012-10-09T23:39:01Z\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones/1\",\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones/1/labels\",\n \"number\" : 42,\n \"updated_at\" : \"2014-03-03T18:58:10Z\",\n \"html_url\" : \"https://github.com/octocat/Hello-World/milestones/v1.0\",\n \"id\" : 1002604,\n \"state\" : \"open\",\n \"open_issues\" : 4,\n \"node_id\" : \"MDk6TWlsZXN0b25lMTAwMjYwNA==\"\n },\n \"events_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347/events\",\n \"html_url\" : \"https://github.com/octocat/Hello-World/issues/1347\",\n \"assignee\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Georgianna Bergnaum MD\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"n2ncoa0izxxy94gt7x3gd8wtbu83vwrt6qfhudtnqy5i8xsp3f7msc8fvg2r0h3y1i1tn4x592gegatv1v05x6tyiykh\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"user\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"basil.monahan\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"gc0xhdhwz0fo0kyurvtz3360ct23pyzhlc0s1z71bd5ma9eqtvf5dxer32923o0j41hf1u6re7qysgkjyi52dbsozidvceoplaly27tpgriu8hbub3vwrfxkjzu3s8vib4ekr00bvdlfptzlsi4zgagqcusinhmqw2lm4\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"node_id\" : \"MDU6SXNzdWUx\"\n },\n \"action\" : \"ps7fcjkqp4q3y9yxalmi6wmvdab8g0ey7ttbnyyfsa084cxcvwuqu2e\",\n \"comment\" : {\n \"issue_url\" : \"https://web.example.mocklab.io/578508\",\n \"body_html\" : \"u3khofnfu56ln398v6j29163u007xkb08que145xvsccwbhx3tyx3reia2zao41skpgj2p3jzsaxm3i5o2f3ufjnfuhehuq3\",\n \"body_text\" : \"3lypukr5ygi94pimynwvksx9wh3n52gztn4s8lozt7gt89d7\",\n \"created_at\" : \"2011-04-14T16:00:49Z\",\n \"body\" : \"What version of Safari were you using when you observed this bug?\",\n \"url\" : \"https://api.github.com/repositories/42/issues/comments/1\",\n \"author_association\" : \"OWNER\",\n \"performed_via_github_app\" : {\n \"owner\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Annice Wuckert\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"4n7mbp5yp2n888wia5jgvnh2ypatamdvnhi05mu9zv61dfdw8i0oqbv2vqyd6xtiy1qo6qt8ntv9h75lfmnwtppbe40dnq2ms3hdwincj1dr8zwq9o48lbrko8a72qxc181wt88bkyz4bb3akm7zcyi1piy5pflzn04dwmeotme8kjq5hkz2w3a7kp6g\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"installations_count\" : 5,\n \"created_at\" : \"2017-07-08T16:18:44-04:00\",\n \"description\" : \"The description of the app.\",\n \"client_id\" : \"\\\"Iv1.25b5d1e65ffc4022\\\"\",\n \"external_url\" : \"https://example.com\",\n \"updated_at\" : \"2017-07-08T16:18:44-04:00\",\n \"permissions\" : {\n \"deployments\" : \"write\",\n \"issues\" : \"read\"\n },\n \"html_url\" : \"https://github.com/apps/super-ci\",\n \"name\" : \"Probot Owners\",\n \"pem\" : \"\\\"-----BEGIN RSA PRIVATE KEY-----\\\\nMIIEogIBAAKCAQEArYxrNYD/iT5CZVpRJu4rBKmmze3PVmT/gCo2ATUvDvZTPTey\\\\nxcGJ3vvrJXazKk06pN05TN29o98jrYz4cengG3YGsXPNEpKsIrEl8NhbnxapEnM9\\\\nJCMRe0P5JcPsfZlX6hmiT7136GRWiGOUba2X9+HKh8QJVLG5rM007TBER9/z9mWm\\\\nrJuNh+m5l320oBQY/Qq3A7wzdEfZw8qm/mIN0FCeoXH1L6B8xXWaAYBwhTEh6SSn\\\\nZHlO1Xu1JWDmAvBCi0RO5aRSKM8q9QEkvvHP4yweAtK3N8+aAbZ7ovaDhyGz8r6r\\\\nzhU1b8Uo0Z2ysf503WqzQgIajr7Fry7/kUwpgQIDAQABAoIBADwJp80Ko1xHPZDy\\\\nfcCKBDfIuPvkmSW6KumbsLMaQv1aGdHDwwTGv3t0ixSay8CGlxMRtRDyZPib6SvQ\\\\n6OH/lpfpbMdW2ErkksgtoIKBVrDilfrcAvrNZu7NxRNbhCSvN8q0s4ICecjbbVQh\\\\nnueSdlA6vGXbW58BHMq68uRbHkP+k+mM9U0mDJ1HMch67wlg5GbayVRt63H7R2+r\\\\nVxcna7B80J/lCEjIYZznawgiTvp3MSanTglqAYi+m1EcSsP14bJIB9vgaxS79kTu\\\\noiSo93leJbBvuGo8QEiUqTwMw4tDksmkLsoqNKQ1q9P7LZ9DGcujtPy4EZsamSJT\\\\ny8OJt0ECgYEA2lxOxJsQk2kI325JgKFjo92mQeUObIvPfSNWUIZQDTjniOI6Gv63\\\\nGLWVFrZcvQBWjMEQraJA9xjPbblV8PtfO87MiJGLWCHFxmPz2dzoedN+2Coxom8m\\\\nV95CLz8QUShuao6u/RYcvUaZEoYs5bHcTmy5sBK80JyEmafJPtCQVxMCgYEAy3ar\\\\nZr3yv4xRPEPMat4rseswmuMooSaK3SKub19WFI5IAtB/e7qR1Rj9JhOGcZz+OQrl\\\\nT78O2OFYlgOIkJPvRMrPpK5V9lslc7tz1FSh3BZMRGq5jSyD7ETSOQ0c8T2O/s7v\\\\nbeEPbVbDe4mwvM24XByH0GnWveVxaDl51ABD65sCgYB3ZAspUkOA5egVCh8kNpnd\\\\nSd6SnuQBE3ySRlT2WEnCwP9Ph6oPgn+oAfiPX4xbRqkL8q/k0BdHQ4h+zNwhk7+h\\\\nWtPYRAP1Xxnc/F+jGjb+DVaIaKGU18MWPg7f+FI6nampl3Q0KvfxwX0GdNhtio8T\\\\nTj1E+SnFwh56SRQuxSh2gwKBgHKjlIO5NtNSflsUYFM+hyQiPiqnHzddfhSG+/3o\\\\nm5nNaSmczJesUYreH5San7/YEy2UxAugvP7aSY2MxB+iGsiJ9WD2kZzTUlDZJ7RV\\\\nUzWsoqBR+eZfVJ2FUWWvy8TpSG6trh4dFxImNtKejCR1TREpSiTV3Zb1dmahK9GV\\\\nrK9NAoGAbBxRLoC01xfxCTgt5BDiBcFVh4fp5yYKwavJPLzHSpuDOrrI9jDn1oKN\\\\nonq5sDU1i391zfQvdrbX4Ova48BN+B7p63FocP/MK5tyyBoT8zQEk2+vWDOw7H/Z\\\\nu5dTCPxTIsoIwUw1I+7yIxqJzLPFgR2gVBwY1ra/8iAqCj+zeBw=\\\\n-----END RSA PRIVATE KEY-----\\\\n\\\"\",\n \"webhook_secret\" : \"\\\"6fba8f2fc8a7e8f2cca5577eddd82ca7586b3b6b\\\"\",\n \"client_secret\" : \"\\\"1d4b2097ac622ba702d19de498f005747a8b21d3\\\"\",\n \"id\" : 37,\n \"events\" : [ \"label\", \"deployment\" ],\n \"slug\" : \"probot-owners\",\n \"node_id\" : \"MDExOkludGVncmF0aW9uMQ==\"\n },\n \"updated_at\" : \"2011-04-14T16:00:49Z\",\n \"html_url\" : \"https://web.example.mocklab.io/312326\",\n \"reactions\" : {\n \"confused\" : 1158430130265285296,\n \"-1\" : 3519828607377321317,\n \"+1\" : 128347438691443867,\n \"total_count\" : 3418100648006891267,\n \"rocket\" : 424878196774712726,\n \"hooray\" : 3710192969417190541,\n \"eyes\" : 4020006367955946408,\n \"heart\" : 2372904043401129323,\n \"laugh\" : 4595202526413666602,\n \"url\" : \"https://web.example.mocklab.io/291500\"\n },\n \"id\" : 42,\n \"user\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"josphine.lesch\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"pyxezer7fydcetlsdyy5ychgoav7f0as5oloh09tjd\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"node_id\" : \"wnlu\"\n }\n },\n \"repo\" : {\n \"name\" : \"Lizzette Reilly\",\n \"id\" : 1033909093362332868,\n \"url\" : \"https://web.example.mocklab.io/037122\"\n },\n \"created_at\" : \"2023-06-20T23:30:09.19Z\",\n \"id\" : \"1v88\",\n \"type\" : \"k1o6zjrzmzru85zuo2smjngkhomdkfrkqfcbbrn0qjg1g3t4375ey36z2h9x8o\"\n}, {\n \"actor\" : {\n \"display_login\" : \"3va9pectjjr91vv77k9zl1jwczw\",\n \"avatar_url\" : \"https://s3.amazonaws.com/uifaces/faces/twitter/benjamin_knight/128.jpg\",\n \"id\" : 4135764946995468843,\n \"login\" : \"ytii5ochv9yfn\",\n \"gravatar_id\" : \"u82v\",\n \"url\" : \"https://web.example.mocklab.io/597120\"\n },\n \"public\" : false,\n \"org\" : {\n \"display_login\" : \"s1h2l4hlv4mr08hqnpwpuldtoz146tyk7r6zaqgy9pgxstz4zc5k0gsad1i9qwnkgbgmvmshu95qw6b2xaan8313\",\n \"avatar_url\" : \"https://s3.amazonaws.com/uifaces/faces/twitter/michaelmartinho/128.jpg\",\n \"id\" : 1318464364295669413,\n \"login\" : \"k566icx7940oxl610hgbsn4sacupbwyist51ayn7vnmclp060va58klzd3o3a9coepw4y3cis0s6txvjl7n342oztikp84p16yzcw7i0xif5c1fgedlf1194fdnoiidcgflipr7m0mf3blsebj8qze07d70y7ih9dqnk119vjnfmyazgsbd\",\n \"gravatar_id\" : \"24d7\",\n \"url\" : \"https://web.example.mocklab.io/420770\"\n },\n \"payload\" : {\n \"pages\" : [ {\n \"summary\" : \"Nulla quasi recusandae. Non error est perferendis. Non inventore qui ratione nihil laborum sit.\",\n \"html_url\" : \"https://web.example.mocklab.io/770138\",\n \"page_name\" : \"Mr. Adria Brekke\",\n \"action\" : \"ltibz4ych5btbgq99s4ydg6119agz1rsuuz4ktszdfvzklim\",\n \"title\" : \"Minima perspiciatis quod.\",\n \"sha\" : \"ohxq2j25j7ayf2am2oidnzaub0e1j7j4v9gitlody7xgsjaoely0oz6fai9it7eoldrlm7hoy71l3m6fuc00t5x502a9v6rjplwg0q43ihwf5rc38ynlaysavq2f5p4c1l6lwp8emzddil58flnwetzowt0bpweh5l2umxvl6jdg9ptd\"\n }, {\n \"summary\" : \"Beatae dolores quaerat soluta. Voluptas nam quia. Consequuntur iste doloremque vel laborum nostrum culpa.\",\n \"html_url\" : \"https://web.example.mocklab.io/566812\",\n \"page_name\" : \"Mrs. Gudrun King\",\n \"action\" : \"pbxal1w8c73xb5xoq3mrxoo96m1usj8w7lox76ar0qvwz1l2uwpmp4jqp4qhb9u46b\",\n \"title\" : \"Eligendi sed est consequatur facilis.\",\n \"sha\" : \"8lh1f6xmldo8g64cep4ex2595vtr8hz9943hqg32319tylgegudlkntz5cp0nqmnq88359ny67cz7m392miiyhaixp9ubvr04tm6j266fkjp6jul2lb7racn4uj8mptsf87itvvpmbd9ntpmlsk\"\n }, {\n \"summary\" : \"Aliquam quisquam dolore et sunt eum rerum. Ipsam mollitia dolorem. Ad fugiat magnam unde vitae id. Aut qui adipisci.\",\n \"html_url\" : \"https://web.example.mocklab.io/073184\",\n \"page_name\" : \"Grant Fadel\",\n \"action\" : \"aj32st7qugbhmuoysmuyn615\",\n \"title\" : \"Odit non voluptates.\",\n \"sha\" : \"zxclbknrlsi1fggvollgh99axnt0t5ddgylinnb4psv7fsf0r9geuedxsfjgkva8mqoeufc6d5jr2hnvjm7zb5vzipdgcw2gyldse6h9i2po0ykop4e605046u8shopzu8r604al679jx5euggto1w6kh9kfry0at2zwcbvio45rl8h\"\n }, {\n \"summary\" : \"Molestias enim voluptas enim quod voluptatem dignissimos. Minus est velit consequatur sequi voluptas. Nemo vero fugit rerum.\",\n \"html_url\" : \"https://web.example.mocklab.io/878071\",\n \"page_name\" : \"Dick Parker\",\n \"action\" : \"ghbgktt0x8qoh61c8rr3m8ssx8ehdgj7bxs5mp0rpncs9prrnbhvvxwyv2gcwc2dyu0p3xfhziduu8amvmzzdljwdjvfs9cpxjixnt8sx7n7nqgsfmfu4reyi8faq12i9c34eb9uh9kqcph8wpvcfpswa82va958p2nkf9omro4w\",\n \"title\" : \"Maxime praesentium voluptatem.\",\n \"sha\" : \"m3hxyvawrabn490narzpit0afz49sd6l8frnnb88p\"\n }, {\n \"summary\" : \"Itaque officia provident. Eveniet ullam expedita. Necessitatibus dolor impedit est dignissimos in.\",\n \"html_url\" : \"https://web.example.mocklab.io/208968\",\n \"page_name\" : \"Tuan Quigley III\",\n \"action\" : \"4wtocl9jn7navobm8x53dc2tyalw4ctu0ws7dq9psk0eqk2w14g39kouadqz29e5040d0625z7m2g\",\n \"title\" : \"Qui amet id vitae maiores culpa.\",\n \"sha\" : \"o15wijhvze8r8zlwxtjpokan4hyldk88vyjr05czu6f8ionkue8ii\"\n }, {\n \"summary\" : \"Dicta odit aut dolores sed. Omnis illum quia quo. Sed nihil libero consequatur. Numquam delectus fugiat adipisci labore. Ut exercitationem ipsum distinctio dolorum officiis.\",\n \"html_url\" : \"https://web.example.mocklab.io/740228\",\n \"page_name\" : \"Effie Crist\",\n \"action\" : \"ckwa5dm06w6vwpe4k1d7yv5pqu7\",\n \"title\" : \"Sunt blanditiis quia eveniet nostrum.\",\n \"sha\" : \"fhoqj5gspl2loi1w2upwlt0xkjfm7h8q3mldx1um0d5zzkbt1lgj1doyyhkb8uolt13tjm5kj0hcrgqn5w95m\"\n }, {\n \"summary\" : \"Amet consequatur dolore. Enim numquam nesciunt et alias. Ea illum exercitationem dolorum laboriosam et. Nemo aut voluptatibus nesciunt asperiores.\",\n \"html_url\" : \"https://web.example.mocklab.io/529713\",\n \"page_name\" : \"Pandora Aufderhar\",\n \"action\" : \"uz6d2n05mqbfovz63pjztptcg4n\",\n \"title\" : \"Expedita quod sed aliquam dolores qui placeat et.\",\n \"sha\" : \"qk8gjh5d87x9zg62th0ng01zmoqxq7dvusec48ei3fj8xojpmtnc00h\"\n }, {\n \"summary\" : \"Eius minima voluptatem modi minus officiis sint nam. Qui quis dolores hic et sit. Officia voluptatibus eos natus cupiditate et iure voluptatem. Id hic quis. Sint at et non quo numquam molestiae dolore\",\n \"html_url\" : \"https://web.example.mocklab.io/153600\",\n \"page_name\" : \"Florance Cruickshank\",\n \"action\" : \"ska71837ybfbvhucg519rcehq38asalyjc1zzofqwhb32nuxmebq49jy78f6anfv9jadp2aqlnuzccmfo5sa2282d136u59o9zxxhv6atrrubstb72x3pgtp5knkcl10ky97ky1bmn8odcfcfp2wpdzmrjtv4emcpdz428qxtxrlg8ok32e520cxtkf728139pnmjg\",\n \"title\" : \"Ut et aliquam aliquam.\",\n \"sha\" : \"rxfyzbx0nyjix54ecptfv92o791gx6lnywgvgc5etigxxv4m1y0yjgbp4u5445e96ed6nfz4b54mjnvbh9d9jb3w6pdz7cfavqnx5bmpipd1x5gt18tymuulo6wvcfp535e2cxuig\"\n } ],\n \"issue\" : {\n \"body_html\" : \"9psdkazjpfpg7m4qfs0jwe4jql6xzgxx91g9lyka1vzaoa3gzd1ph8f2cvyzbt26fsoxib9nwixxx4zq5c9c2ao6fw4zqx61wb0si7v9ktxki0heroi0l\",\n \"body_text\" : \"qdczgvmyqm85xgxnywxlsto68wp7iz155pu0ryrm6nyarl9jigoh44fax\",\n \"assignees\" : [ {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Harriette Nienow DDS\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"f1l8830t0ju7m2qgfiprbjp68mazv7qvnwbxkuim5g3tjio6utt4ps6b5w72wxhixkpk0170g65l83ifkuy1\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n }, {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Claire Blanda\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"wjrrjsrl5wytcl68f46n5dij3iyscvenv35v9r8jq3y1k35ribavb1biq9w9hbo3721jr522pqu7bkrb\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n }, {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Rogelio Huels II\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"u8vhaf4qfzdsyhic1yn4o364phgvk\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n } ],\n \"created_at\" : \"2011-04-22T13:33:48Z\",\n \"body\" : \"I'm having a problem with this.\",\n \"repository\" : {\n \"allow_forking\" : true,\n \"anonymous_access_enabled\" : true,\n \"is_template\" : true,\n \"stargazers_count\" : 80,\n \"pushed_at\" : \"2011-01-26T19:06:43Z\",\n \"language\" : \"7er1yapfb6sz6yqekek05d8dvsfwsaxm1wtjza09767ikdc3coivc4kkeaffunpzhv3kp9wrpj45h8r2nl2z6c4r4k3r3l559vuc0vo35y3vxfg32o8zgx2d31ttm5x6qbdyhg2w7u69fy7m7e10xvbm61nkcccspjsj8ssabw7brpo3reky2mje9d4dcw\",\n \"subscription_url\" : \"http://api.github.com/repos/octocat/Hello-World/subscription\",\n \"branches_url\" : \"http://api.github.com/repos/octocat/Hello-World/branches{/branch}\",\n \"allow_rebase_merge\" : true,\n \"issue_comment_url\" : \"http://api.github.com/repos/octocat/Hello-World/issues/comments{/number}\",\n \"labels_url\" : \"http://api.github.com/repos/octocat/Hello-World/labels{/name}\",\n \"permissions\" : {\n \"pull\" : true,\n \"maintain\" : true,\n \"admin\" : false,\n \"triage\" : false,\n \"push\" : false\n },\n \"subscribers_url\" : \"http://api.github.com/repos/octocat/Hello-World/subscribers\",\n \"releases_url\" : \"http://api.github.com/repos/octocat/Hello-World/releases{/id}\",\n \"svn_url\" : \"https://svn.github.com/octocat/Hello-World\",\n \"subscribers_count\" : 8607256311872516863,\n \"id\" : 42,\n \"master_branch\" : \"883l2vvwbmrpgu99qucyo4ff8kmmoc4upg2um65drmf0ahny38q9spe3o0uaq0t8b5oezy7hhh0p9a3z\",\n \"forks\" : 2111301966996499963,\n \"allow_merge_commit\" : true,\n \"archive_url\" : \"http://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref}\",\n \"git_refs_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/refs{/sha}\",\n \"forks_url\" : \"http://api.github.com/repos/octocat/Hello-World/forks\",\n \"visibility\" : \"j14y5avbqapssiteevx6mj22oe6atoytqcerwswzhgnymhyqlehuipxvq8dozcwj7wxni71vbn45xyd043og8fqn8qg9kctx9sm7h8fokg4wd6933ncnt7q5k7l0og1r9pdfptl4znfdqvqcl2j5bnzucgbnb8cfauqrkcsxpjsy1alqrrbk0p0k18lsq7\",\n \"statuses_url\" : \"http://api.github.com/repos/octocat/Hello-World/statuses/{sha}\",\n \"network_count\" : 1909659524615875787,\n \"ssh_url\" : \"git@github.com:octocat/Hello-World.git\",\n \"license\" : {\n \"html_url\" : \"https://web.example.mocklab.io/754947\",\n \"name\" : \"MIT License\",\n \"spdx_id\" : \"MIT\",\n \"key\" : \"mit\",\n \"url\" : \"https://api.github.com/licenses/mit\",\n \"node_id\" : \"MDc6TGljZW5zZW1pdA==\"\n },\n \"full_name\" : \"octocat/Hello-World\",\n \"size\" : 108,\n \"template_repository\" : {\n \"anonymous_access_enabled\" : true,\n \"is_template\" : true,\n \"stargazers_count\" : 6324534266166637312,\n \"pushed_at\" : \"i9xm808sz\",\n \"language\" : \"vb2\",\n \"subscription_url\" : \"https://web.example.mocklab.io/717563\",\n \"branches_url\" : \"https://web.example.mocklab.io/162224\",\n \"allow_rebase_merge\" : true,\n \"issue_comment_url\" : \"https://web.example.mocklab.io/642345\",\n \"labels_url\" : \"https://web.example.mocklab.io/433301\",\n \"permissions\" : { },\n \"subscribers_url\" : \"https://web.example.mocklab.io/647816\",\n \"releases_url\" : \"https://web.example.mocklab.io/472122\",\n \"svn_url\" : \"https://web.example.mocklab.io/925282\",\n \"subscribers_count\" : 6756485130477331197,\n \"id\" : 3586229187622164588,\n \"allow_merge_commit\" : false,\n \"archive_url\" : \"https://web.example.mocklab.io/830833\",\n \"git_refs_url\" : \"https://web.example.mocklab.io/344415\",\n \"forks_url\" : \"https://web.example.mocklab.io/156444\",\n \"visibility\" : \"eak6fuu367f1adq2g1h4hdgzmv1v14fu7yf4k0nz4qovtaba4dnd8mu7708u4fe1kr51gy8prso8drtd202nihdb76uka4s90hpmsuf0a37za5nr6ipvq9abuw53748q4kdtprqpp8z5s7y7rvpngi0yj2e9bea78w7v97\",\n \"statuses_url\" : \"https://web.example.mocklab.io/016633\",\n \"network_count\" : 7960774384943989009,\n \"ssh_url\" : \"https://web.example.mocklab.io/467964\",\n \"full_name\" : \"Tarsha Fritsch\",\n \"size\" : 3843371369197511410,\n \"languages_url\" : \"https://web.example.mocklab.io/337324\",\n \"clone_url\" : \"https://web.example.mocklab.io/357256\",\n \"collaborators_url\" : \"https://web.example.mocklab.io/142690\",\n \"html_url\" : \"https://web.example.mocklab.io/857175\",\n \"name\" : \"Akilah Satterfield\",\n \"pulls_url\" : \"https://web.example.mocklab.io/330849\",\n \"default_branch\" : \"d17u60sircz66u3b7lwqawupubd3g0kwdhzfdi2vtcjl41b0e0awyqmtizrw9zdslxp3y1984hrt5m6dv2u41iinknjrum3of8nmt4ywy8w58gsftxnkkx1z5pe1ssxml09tt8x9d3a9m39qceaevz1tzi7p7ydrew1rscj1swklfk1qgt6htf5pvnmrjziefkq1n\",\n \"hooks_url\" : \"https://web.example.mocklab.io/407343\",\n \"trees_url\" : \"https://web.example.mocklab.io/627456\",\n \"tags_url\" : \"https://web.example.mocklab.io/065819\",\n \"contributors_url\" : \"https://web.example.mocklab.io/685833\",\n \"private\" : true,\n \"has_downloads\" : true,\n \"notifications_url\" : \"https://web.example.mocklab.io/012415\",\n \"open_issues_count\" : 4653539334911389735,\n \"created_at\" : \"0l68gok3omnh7gs1h8pscq7h8i8gd7y8ow4zemzgsbh8w6mmx\",\n \"description\" : \"Fugiat perferendis numquam quis ut ea maiores. Cum et consequatur fugiat deleniti nesciunt saepe dicta. Totam sit odit ratione omnis. Iusto esse repudiandae pariatur eaque quo magnam. Voluptas dolorem\",\n \"deployments_url\" : \"https://web.example.mocklab.io/916878\",\n \"keys_url\" : \"https://web.example.mocklab.io/277220\",\n \"has_projects\" : true,\n \"archived\" : true,\n \"has_wiki\" : true,\n \"updated_at\" : \"2023-03-16T08:06:59.195095Z\",\n \"comments_url\" : \"https://web.example.mocklab.io/359777\",\n \"stargazers_url\" : \"https://web.example.mocklab.io/377413\",\n \"disabled\" : false,\n \"delete_branch_on_merge\" : true,\n \"git_url\" : \"https://web.example.mocklab.io/307754\",\n \"has_pages\" : true,\n \"owner\" : { },\n \"allow_squash_merge\" : false,\n \"commits_url\" : \"https://web.example.mocklab.io/138326\",\n \"compare_url\" : \"https://web.example.mocklab.io/490807\",\n \"git_commits_url\" : \"https://web.example.mocklab.io/102755\",\n \"topics\" : [ \"gnc4vq0ighaizg\", \"lsy15q97revx7qsky1t9ba7wb26gmutqeqga0p196p1s\", \"tcjvm3jmlx1vc4176hwxb4hodsltaz84vzucjmf61nn62l80xpqam5grpgdtx63cwwpy9tt46sizzzqtd5erxrbysgrhhv924407mselvxikwon1nxcf46yx2j9yii3xwmyp1txw6lfvbi0wju0sfeatuyukdrrxgn5g65md5xpgez0ms\" ],\n \"blobs_url\" : \"https://web.example.mocklab.io/438025\",\n \"git_tags_url\" : \"https://web.example.mocklab.io/060214\",\n \"merges_url\" : \"https://web.example.mocklab.io/215648\",\n \"downloads_url\" : \"https://web.example.mocklab.io/812620\",\n \"has_issues\" : true,\n \"url\" : \"https://web.example.mocklab.io/712010\",\n \"contents_url\" : \"https://web.example.mocklab.io/479456\",\n \"mirror_url\" : \"https://web.example.mocklab.io/166481\",\n \"milestones_url\" : \"https://web.example.mocklab.io/423990\",\n \"teams_url\" : \"https://web.example.mocklab.io/414518\",\n \"fork\" : false,\n \"issues_url\" : \"https://web.example.mocklab.io/881328\",\n \"events_url\" : \"https://web.example.mocklab.io/834545\",\n \"issue_events_url\" : \"https://web.example.mocklab.io/200727\",\n \"assignees_url\" : \"https://web.example.mocklab.io/613295\",\n \"watchers_count\" : 2368266866945115200,\n \"forks_count\" : 4555728269258550856,\n \"homepage\" : \"3626zj93nmlodq2\",\n \"node_id\" : \"mwz7\"\n },\n \"languages_url\" : \"http://api.github.com/repos/octocat/Hello-World/languages\",\n \"clone_url\" : \"https://github.com/octocat/Hello-World.git\",\n \"collaborators_url\" : \"http://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator}\",\n \"html_url\" : \"https://github.com/octocat/Hello-World\",\n \"name\" : \"Team Environment\",\n \"pulls_url\" : \"http://api.github.com/repos/octocat/Hello-World/pulls{/number}\",\n \"default_branch\" : \"master\",\n \"hooks_url\" : \"http://api.github.com/repos/octocat/Hello-World/hooks\",\n \"trees_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/trees{/sha}\",\n \"tags_url\" : \"http://api.github.com/repos/octocat/Hello-World/tags\",\n \"contributors_url\" : \"http://api.github.com/repos/octocat/Hello-World/contributors\",\n \"private\" : true,\n \"has_downloads\" : true,\n \"notifications_url\" : \"http://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating}\",\n \"open_issues_count\" : 0,\n \"created_at\" : \"2011-01-26T19:01:12Z\",\n \"description\" : \"This your first repo!\",\n \"watchers\" : 6784061122348281877,\n \"deployments_url\" : \"http://api.github.com/repos/octocat/Hello-World/deployments\",\n \"keys_url\" : \"http://api.github.com/repos/octocat/Hello-World/keys{/key_id}\",\n \"has_projects\" : true,\n \"archived\" : false,\n \"has_wiki\" : true,\n \"updated_at\" : \"2011-01-26T19:14:43Z\",\n \"comments_url\" : \"http://api.github.com/repos/octocat/Hello-World/comments{/number}\",\n \"stargazers_url\" : \"http://api.github.com/repos/octocat/Hello-World/stargazers\",\n \"disabled\" : false,\n \"delete_branch_on_merge\" : false,\n \"git_url\" : \"git:github.com/octocat/Hello-World.git\",\n \"has_pages\" : true,\n \"owner\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Lea MacGyver\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"w2l7qso46di66nwl4rug3wzb3pi9lkngkcv1ultpn113fnz1vj2x203zeaqkzlb7z3yu9exprizae1msnet15owkekil52a0lrugktck4pup9ye7jkryqz79shu28zk2t8vs9xst1d0y1t\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"allow_squash_merge\" : true,\n \"commits_url\" : \"http://api.github.com/repos/octocat/Hello-World/commits{/sha}\",\n \"compare_url\" : \"http://api.github.com/repos/octocat/Hello-World/compare/{base}...{head}\",\n \"git_commits_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/commits{/sha}\",\n \"topics\" : [ \"lhksq64gn6n0ih3qj8c1qn39116oi7rkorwd73quvv3sxs2c43pqy61y4m7viv8fo8vrh7enp9aueuxw88v5vid8f6hwysu7myx4xcuzl3gkufw8k3tin6ay28ld72fkcjx6ncx0\", \"1key9niphgor82fm1h1hl105hrm1v1acxtglfiwnvfczcg9j3ynlx70tl8eoat6emzy3nc42zvlm3a434mqppurtxplhy\", \"58599rjnz\", \"1mvmt61kynvnta4vhsskcnkol34ad7ythccl4rfjai3ypz6qz9rzp1tffid21z9tiol1c3g3xho42qb5hrc1cau993siolpiy1nmsc3s0pb0sdox7vn2mskbk4rujfnzwec05y93lujys21whtc9vxzt4fpz1onxjeajeb10pgkyl19qjdko5021hcu7v8xn4mkr\", \"n4s2uaqis5fq5wflrwodgoes3ftuz3u9vlfl8p13tz606ag79fhvxyj8sohht4fv7v7kabn24t0tvz2shdqdt9x3mmmk2qbxtrwlkce7ttsoh8lkyot2u0xrgmqo6eq78ljbtfhu\" ],\n \"blobs_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/blobs{/sha}\",\n \"git_tags_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/tags{/sha}\",\n \"merges_url\" : \"http://api.github.com/repos/octocat/Hello-World/merges\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:42Z\\\"\",\n \"downloads_url\" : \"http://api.github.com/repos/octocat/Hello-World/downloads\",\n \"has_issues\" : true,\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World\",\n \"contents_url\" : \"http://api.github.com/repos/octocat/Hello-World/contents/{+path}\",\n \"mirror_url\" : \"git:git.example.com/octocat/Hello-World\",\n \"milestones_url\" : \"http://api.github.com/repos/octocat/Hello-World/milestones{/number}\",\n \"teams_url\" : \"http://api.github.com/repos/octocat/Hello-World/teams\",\n \"fork\" : false,\n \"issues_url\" : \"http://api.github.com/repos/octocat/Hello-World/issues{/number}\",\n \"events_url\" : \"http://api.github.com/repos/octocat/Hello-World/events\",\n \"issue_events_url\" : \"http://api.github.com/repos/octocat/Hello-World/issues/events{/number}\",\n \"organization\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Mr. Arturo Hansen\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"utgql23u6l5bym6ouf3zkfhilrt6eg7av884odr9nw6o3vjs1qalctedz70b28n9x7ruvj9o6xowtb31fgq32rucpe6lu0o7xtlqti1q4w3s01u5pa8eawf58yq815i3mnwccrszp\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"assignees_url\" : \"http://api.github.com/repos/octocat/Hello-World/assignees{/user}\",\n \"open_issues\" : 7472012485443883140,\n \"watchers_count\" : 80,\n \"forks_count\" : 9,\n \"homepage\" : \"https://github.com\",\n \"node_id\" : \"MDEwOlJlcG9zaXRvcnkxMjk2MjY5\"\n },\n \"title\" : \"Found a bug\",\n \"author_association\" : \"OWNER\",\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347/labels{/name}\",\n \"number\" : 1347,\n \"performed_via_github_app\" : {\n \"owner\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Jackie O'Connell\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"pmk3s9kv5rxk79fygq1l2tawvgbwgizfrd20clyrf2bqvc683wbn2vtx170na8hpg4kj6qni9afc16msjd8xusieoag0te7h4woohhwbecx8alykcawiqlc8d8h144bzil1365xmo8qnh7vgqgjs5hdu17qns7xqo7nh4\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"installations_count\" : 5,\n \"created_at\" : \"2017-07-08T16:18:44-04:00\",\n \"description\" : \"The description of the app.\",\n \"client_id\" : \"\\\"Iv1.25b5d1e65ffc4022\\\"\",\n \"external_url\" : \"https://example.com\",\n \"updated_at\" : \"2017-07-08T16:18:44-04:00\",\n \"permissions\" : {\n \"deployments\" : \"write\",\n \"issues\" : \"read\"\n },\n \"html_url\" : \"https://github.com/apps/super-ci\",\n \"name\" : \"Probot Owners\",\n \"pem\" : \"\\\"-----BEGIN RSA PRIVATE KEY-----\\\\nMIIEogIBAAKCAQEArYxrNYD/iT5CZVpRJu4rBKmmze3PVmT/gCo2ATUvDvZTPTey\\\\nxcGJ3vvrJXazKk06pN05TN29o98jrYz4cengG3YGsXPNEpKsIrEl8NhbnxapEnM9\\\\nJCMRe0P5JcPsfZlX6hmiT7136GRWiGOUba2X9+HKh8QJVLG5rM007TBER9/z9mWm\\\\nrJuNh+m5l320oBQY/Qq3A7wzdEfZw8qm/mIN0FCeoXH1L6B8xXWaAYBwhTEh6SSn\\\\nZHlO1Xu1JWDmAvBCi0RO5aRSKM8q9QEkvvHP4yweAtK3N8+aAbZ7ovaDhyGz8r6r\\\\nzhU1b8Uo0Z2ysf503WqzQgIajr7Fry7/kUwpgQIDAQABAoIBADwJp80Ko1xHPZDy\\\\nfcCKBDfIuPvkmSW6KumbsLMaQv1aGdHDwwTGv3t0ixSay8CGlxMRtRDyZPib6SvQ\\\\n6OH/lpfpbMdW2ErkksgtoIKBVrDilfrcAvrNZu7NxRNbhCSvN8q0s4ICecjbbVQh\\\\nnueSdlA6vGXbW58BHMq68uRbHkP+k+mM9U0mDJ1HMch67wlg5GbayVRt63H7R2+r\\\\nVxcna7B80J/lCEjIYZznawgiTvp3MSanTglqAYi+m1EcSsP14bJIB9vgaxS79kTu\\\\noiSo93leJbBvuGo8QEiUqTwMw4tDksmkLsoqNKQ1q9P7LZ9DGcujtPy4EZsamSJT\\\\ny8OJt0ECgYEA2lxOxJsQk2kI325JgKFjo92mQeUObIvPfSNWUIZQDTjniOI6Gv63\\\\nGLWVFrZcvQBWjMEQraJA9xjPbblV8PtfO87MiJGLWCHFxmPz2dzoedN+2Coxom8m\\\\nV95CLz8QUShuao6u/RYcvUaZEoYs5bHcTmy5sBK80JyEmafJPtCQVxMCgYEAy3ar\\\\nZr3yv4xRPEPMat4rseswmuMooSaK3SKub19WFI5IAtB/e7qR1Rj9JhOGcZz+OQrl\\\\nT78O2OFYlgOIkJPvRMrPpK5V9lslc7tz1FSh3BZMRGq5jSyD7ETSOQ0c8T2O/s7v\\\\nbeEPbVbDe4mwvM24XByH0GnWveVxaDl51ABD65sCgYB3ZAspUkOA5egVCh8kNpnd\\\\nSd6SnuQBE3ySRlT2WEnCwP9Ph6oPgn+oAfiPX4xbRqkL8q/k0BdHQ4h+zNwhk7+h\\\\nWtPYRAP1Xxnc/F+jGjb+DVaIaKGU18MWPg7f+FI6nampl3Q0KvfxwX0GdNhtio8T\\\\nTj1E+SnFwh56SRQuxSh2gwKBgHKjlIO5NtNSflsUYFM+hyQiPiqnHzddfhSG+/3o\\\\nm5nNaSmczJesUYreH5San7/YEy2UxAugvP7aSY2MxB+iGsiJ9WD2kZzTUlDZJ7RV\\\\nUzWsoqBR+eZfVJ2FUWWvy8TpSG6trh4dFxImNtKejCR1TREpSiTV3Zb1dmahK9GV\\\\nrK9NAoGAbBxRLoC01xfxCTgt5BDiBcFVh4fp5yYKwavJPLzHSpuDOrrI9jDn1oKN\\\\nonq5sDU1i391zfQvdrbX4Ova48BN+B7p63FocP/MK5tyyBoT8zQEk2+vWDOw7H/Z\\\\nu5dTCPxTIsoIwUw1I+7yIxqJzLPFgR2gVBwY1ra/8iAqCj+zeBw=\\\\n-----END RSA PRIVATE KEY-----\\\\n\\\"\",\n \"webhook_secret\" : \"\\\"6fba8f2fc8a7e8f2cca5577eddd82ca7586b3b6b\\\"\",\n \"client_secret\" : \"\\\"1d4b2097ac622ba702d19de498f005747a8b21d3\\\"\",\n \"id\" : 37,\n \"events\" : [ \"label\", \"deployment\" ],\n \"slug\" : \"probot-owners\",\n \"node_id\" : \"MDExOkludGVncmF0aW9uMQ==\"\n },\n \"updated_at\" : \"2011-04-22T13:33:48Z\",\n \"comments_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347/comments\",\n \"active_lock_reason\" : \"too heated\",\n \"id\" : 1,\n \"repository_url\" : \"https://api.github.com/repos/octocat/Hello-World\",\n \"state\" : \"open\",\n \"locked\" : true,\n \"timeline_url\" : \"https://web.example.mocklab.io/756806\",\n \"pull_request\" : {\n \"patch_url\" : \"https://web.example.mocklab.io/382386\",\n \"html_url\" : \"https://web.example.mocklab.io/831332\",\n \"merged_at\" : \"2022-12-30T10:48:30.197Z\",\n \"diff_url\" : \"https://web.example.mocklab.io/840366\",\n \"url\" : \"https://web.example.mocklab.io/074172\"\n },\n \"closed_at\" : \"2022-09-17T05:36:51.197Z\",\n \"comments\" : 0,\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347\",\n \"labels\" : [ {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n }, {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n }, {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n } ],\n \"milestone\" : {\n \"creator\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Wilton Hills\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"fka6rkt24c7g1tf0h8l0es8hmtd0c28s5gumn62xg0pekrhdce9ancf6nyd55oedecsya8xe4q3nkxv8d6nh2hsjfqiohoh7g6atm5lhk6dl1g62zhppjj3oxixiknka4s27\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"closed_at\" : \"2013-02-12T13:22:01Z\",\n \"created_at\" : \"2011-04-10T20:09:31Z\",\n \"description\" : \"Tracking milestone for version 1.0\",\n \"closed_issues\" : 8,\n \"title\" : \"v1.0\",\n \"due_on\" : \"2012-10-09T23:39:01Z\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones/1\",\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones/1/labels\",\n \"number\" : 42,\n \"updated_at\" : \"2014-03-03T18:58:10Z\",\n \"html_url\" : \"https://github.com/octocat/Hello-World/milestones/v1.0\",\n \"id\" : 1002604,\n \"state\" : \"open\",\n \"open_issues\" : 4,\n \"node_id\" : \"MDk6TWlsZXN0b25lMTAwMjYwNA==\"\n },\n \"events_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347/events\",\n \"html_url\" : \"https://github.com/octocat/Hello-World/issues/1347\",\n \"assignee\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Avelina Pouros Jr.\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"zjsmqloo9hro8saqrn5bo4e5v75abxlu2xi2v9rrwg8uui4mtfkr1u4mzbgbqo76ta8fpy5x9u13u333e6hjtcbwqlgtsl4d0moz02r0yaarzzmtw5b\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"user\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"zandra.johns\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"3yu2mc4fhtj3kq1bgkp1bwwxdzxfwew0he0wqtfxkpblcu2mqkqu9znzwnqpn45j9udtpu7jalb0ljqeg8khuzufi4y6bg9yxolrfnifecb87kdc4l36vhgusvwne2nwmlso1m1mjr7e4tajv3nmeoj76vfa079ykdvaad7ebzzwbaewlmpjak\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"node_id\" : \"MDU6SXNzdWUx\"\n },\n \"action\" : \"lxfgrgyn30149jl28kdo90k64uaowc0tyaxj6arja3na\",\n \"comment\" : {\n \"issue_url\" : \"https://web.example.mocklab.io/125705\",\n \"body_html\" : \"it26thk3e\",\n \"body_text\" : \"3u00v0d0ujfxs4i00yadv9mnmoksy4km416ctnsf45ps0mib4sfagq28e3bhjtu6hlfnq0peru3fa7bue35ky0w5prsotgspx2elu328mu8vkw612tizwad16g9tc39qa6b23w7xbd3aezr5k3oba8w1jpwgtcqumnbyksl20uayrq2ajkmkd\",\n \"created_at\" : \"2011-04-14T16:00:49Z\",\n \"body\" : \"What version of Safari were you using when you observed this bug?\",\n \"url\" : \"https://api.github.com/repositories/42/issues/comments/1\",\n \"author_association\" : \"OWNER\",\n \"performed_via_github_app\" : {\n \"owner\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Earnest McDermott\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"3aafuumjcsqs1wbcvgdv7jwd91y8h7d4ntfkqthgxbt2mbaupyrshgnwi4kivulyunmffrc8mvb6am6o25pimwo9w9fi9vl6gc8poslauqpyqmb2cdn8xgprrocjqr6j7cohvpucpuy91fno26mn7b0tvhyd3\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"installations_count\" : 5,\n \"created_at\" : \"2017-07-08T16:18:44-04:00\",\n \"description\" : \"The description of the app.\",\n \"client_id\" : \"\\\"Iv1.25b5d1e65ffc4022\\\"\",\n \"external_url\" : \"https://example.com\",\n \"updated_at\" : \"2017-07-08T16:18:44-04:00\",\n \"permissions\" : {\n \"deployments\" : \"write\",\n \"issues\" : \"read\"\n },\n \"html_url\" : \"https://github.com/apps/super-ci\",\n \"name\" : \"Probot Owners\",\n \"pem\" : \"\\\"-----BEGIN RSA PRIVATE KEY-----\\\\nMIIEogIBAAKCAQEArYxrNYD/iT5CZVpRJu4rBKmmze3PVmT/gCo2ATUvDvZTPTey\\\\nxcGJ3vvrJXazKk06pN05TN29o98jrYz4cengG3YGsXPNEpKsIrEl8NhbnxapEnM9\\\\nJCMRe0P5JcPsfZlX6hmiT7136GRWiGOUba2X9+HKh8QJVLG5rM007TBER9/z9mWm\\\\nrJuNh+m5l320oBQY/Qq3A7wzdEfZw8qm/mIN0FCeoXH1L6B8xXWaAYBwhTEh6SSn\\\\nZHlO1Xu1JWDmAvBCi0RO5aRSKM8q9QEkvvHP4yweAtK3N8+aAbZ7ovaDhyGz8r6r\\\\nzhU1b8Uo0Z2ysf503WqzQgIajr7Fry7/kUwpgQIDAQABAoIBADwJp80Ko1xHPZDy\\\\nfcCKBDfIuPvkmSW6KumbsLMaQv1aGdHDwwTGv3t0ixSay8CGlxMRtRDyZPib6SvQ\\\\n6OH/lpfpbMdW2ErkksgtoIKBVrDilfrcAvrNZu7NxRNbhCSvN8q0s4ICecjbbVQh\\\\nnueSdlA6vGXbW58BHMq68uRbHkP+k+mM9U0mDJ1HMch67wlg5GbayVRt63H7R2+r\\\\nVxcna7B80J/lCEjIYZznawgiTvp3MSanTglqAYi+m1EcSsP14bJIB9vgaxS79kTu\\\\noiSo93leJbBvuGo8QEiUqTwMw4tDksmkLsoqNKQ1q9P7LZ9DGcujtPy4EZsamSJT\\\\ny8OJt0ECgYEA2lxOxJsQk2kI325JgKFjo92mQeUObIvPfSNWUIZQDTjniOI6Gv63\\\\nGLWVFrZcvQBWjMEQraJA9xjPbblV8PtfO87MiJGLWCHFxmPz2dzoedN+2Coxom8m\\\\nV95CLz8QUShuao6u/RYcvUaZEoYs5bHcTmy5sBK80JyEmafJPtCQVxMCgYEAy3ar\\\\nZr3yv4xRPEPMat4rseswmuMooSaK3SKub19WFI5IAtB/e7qR1Rj9JhOGcZz+OQrl\\\\nT78O2OFYlgOIkJPvRMrPpK5V9lslc7tz1FSh3BZMRGq5jSyD7ETSOQ0c8T2O/s7v\\\\nbeEPbVbDe4mwvM24XByH0GnWveVxaDl51ABD65sCgYB3ZAspUkOA5egVCh8kNpnd\\\\nSd6SnuQBE3ySRlT2WEnCwP9Ph6oPgn+oAfiPX4xbRqkL8q/k0BdHQ4h+zNwhk7+h\\\\nWtPYRAP1Xxnc/F+jGjb+DVaIaKGU18MWPg7f+FI6nampl3Q0KvfxwX0GdNhtio8T\\\\nTj1E+SnFwh56SRQuxSh2gwKBgHKjlIO5NtNSflsUYFM+hyQiPiqnHzddfhSG+/3o\\\\nm5nNaSmczJesUYreH5San7/YEy2UxAugvP7aSY2MxB+iGsiJ9WD2kZzTUlDZJ7RV\\\\nUzWsoqBR+eZfVJ2FUWWvy8TpSG6trh4dFxImNtKejCR1TREpSiTV3Zb1dmahK9GV\\\\nrK9NAoGAbBxRLoC01xfxCTgt5BDiBcFVh4fp5yYKwavJPLzHSpuDOrrI9jDn1oKN\\\\nonq5sDU1i391zfQvdrbX4Ova48BN+B7p63FocP/MK5tyyBoT8zQEk2+vWDOw7H/Z\\\\nu5dTCPxTIsoIwUw1I+7yIxqJzLPFgR2gVBwY1ra/8iAqCj+zeBw=\\\\n-----END RSA PRIVATE KEY-----\\\\n\\\"\",\n \"webhook_secret\" : \"\\\"6fba8f2fc8a7e8f2cca5577eddd82ca7586b3b6b\\\"\",\n \"client_secret\" : \"\\\"1d4b2097ac622ba702d19de498f005747a8b21d3\\\"\",\n \"id\" : 37,\n \"events\" : [ \"label\", \"deployment\" ],\n \"slug\" : \"probot-owners\",\n \"node_id\" : \"MDExOkludGVncmF0aW9uMQ==\"\n },\n \"updated_at\" : \"2011-04-14T16:00:49Z\",\n \"html_url\" : \"https://web.example.mocklab.io/837110\",\n \"reactions\" : {\n \"confused\" : 4860319640429448374,\n \"-1\" : 3156062944319561207,\n \"+1\" : 2264887577043629866,\n \"total_count\" : 4315805329915638851,\n \"rocket\" : 2592766375611167060,\n \"hooray\" : 1352453388640830527,\n \"eyes\" : 5937801808451856896,\n \"heart\" : 2018080914540096538,\n \"laugh\" : 7002628205106772066,\n \"url\" : \"https://web.example.mocklab.io/012458\"\n },\n \"id\" : 42,\n \"user\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"agnes.howell\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"dlbmldu3lyvwyjrntm79dsrldmix6pkteqckrf35zq9zhfbq2izymf1gyqa7fjf886bq4\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"node_id\" : \"xbtz\"\n }\n },\n \"repo\" : {\n \"name\" : \"Elmira Lockman\",\n \"id\" : 4076733672070234892,\n \"url\" : \"https://web.example.mocklab.io/169781\"\n },\n \"created_at\" : \"2022-08-01T05:23:27.198Z\",\n \"id\" : \"027n\",\n \"type\" : \"cxtog\"\n}, {\n \"actor\" : {\n \"display_login\" : \"awjxcsisyejf52pwre7ek7n5pwmj1uk6krmgb84iypd6k\",\n \"avatar_url\" : \"https://s3.amazonaws.com/uifaces/faces/twitter/isaacfifth/128.jpg\",\n \"id\" : 3102262801390443045,\n \"login\" : \"87zwf0rvrdy6nutvu7ui5oms9mzjitq2\",\n \"gravatar_id\" : \"1z0e\",\n \"url\" : \"https://web.example.mocklab.io/912429\"\n },\n \"public\" : true,\n \"org\" : {\n \"display_login\" : \"i9656zcprved6dm31foeo1jzx6y3zhd9b1hk1bemll8t09enhgsxupfso9rf64clnkuw2b0wcn5a5tuhbe7ykegc6zkeqii\",\n \"avatar_url\" : \"https://s3.amazonaws.com/uifaces/faces/twitter/millinet/128.jpg\",\n \"id\" : 4688244592995249431,\n \"login\" : \"whu2nk3d64m9sh5gy9kcsix4gg3qslmbfesgsde0ql5zkj05hawekp8yk5i0ujiow9z29gkbe5yi1xnwl76ozabv8lhtg2d\",\n \"gravatar_id\" : \"6mh2\",\n \"url\" : \"https://web.example.mocklab.io/309991\"\n },\n \"payload\" : {\n \"pages\" : [ {\n \"summary\" : \"Neque tenetur a eos quasi. Iste ut esse eveniet odio. Veniam similique sunt sed vel ea. Quisquam aut saepe deserunt.\",\n \"html_url\" : \"https://web.example.mocklab.io/728874\",\n \"page_name\" : \"Sterling Mertz\",\n \"action\" : \"u8ih7krou08ndd5s93b3e9t4gwgc658c1uindoattrmxpey2\",\n \"title\" : \"Sed quae ipsum impedit voluptates ea et.\",\n \"sha\" : \"08q59a1bmm5s13lk1779k5uk585ligvluxt84v41gac9xvav4xhj7pxqfdwitfecfdl2wb7whdsi0zjov88uhx43u3eus8fuas90hd8b27258n1tfm3nuz\"\n }, {\n \"summary\" : \"Non doloribus perferendis eaque eligendi. Inventore atque itaque aut dignissimos qui voluptatibus nihil. Non eius laboriosam et sed culpa error. Vero voluptatibus officia autem aut.\",\n \"html_url\" : \"https://web.example.mocklab.io/604155\",\n \"page_name\" : \"Stephani Morar\",\n \"action\" : \"fvjl0z8fjocbyjjmr4vegjp9t3as5nm9kdef2w21h62mqsi\",\n \"title\" : \"Animi nemo omnis debitis et et.\",\n \"sha\" : \"2t19cdcv2e2c1zcwb96xixt8if3ujwoaog2h565s9jeq4bt9qkpuubn1xhr3cp5jivwtdlletvviyuabw1udu4ewvz2jinfobkux4dhwew5iln3rnyybo4z7chdt6d0pithxlfzc44dgjjst1ewjeo4cgb3o7ryp\"\n }, {\n \"summary\" : \"Blanditiis velit dignissimos consectetur. Similique pariatur tempora ipsum delectus voluptas. Qui et natus.\",\n \"html_url\" : \"https://web.example.mocklab.io/935389\",\n \"page_name\" : \"Sandie Bode\",\n \"action\" : \"hw761km8xsdn8qz75f4rn8umx5ey3y1u1jjo6ireudwi8prm011ap82lvmuqnrvacafoapqu62hcu9rwvxpjhiu3q50mnwanowv4\",\n \"title\" : \"Fugit error iure aperiam.\",\n \"sha\" : \"rt1vgpfhqr2w2mpbjdnxpxtd7lyadpiimsonhgr0jbk77iev23vx6on5mko2j75oi1nhzgpuqdft4ujk131itv2ed7405xp4w7tuwzt8neqbrtj1ngho66l0tbnrtdqu7i7htvnky96pau2x03a6d90vhbpgklgewacbfl4zhzqmay5el1155f7s2r1mnuj\"\n }, {\n \"summary\" : \"Omnis eum maiores enim fugiat dolores. Inventore expedita tempore. Autem nemo quas eligendi. Incidunt nemo accusamus id.\",\n \"html_url\" : \"https://web.example.mocklab.io/011710\",\n \"page_name\" : \"Mr. Jules Kihn\",\n \"action\" : \"d09j8pwqitealt5fjzzhsae52p3k9hjdi10yi1un0vpzvfsjn849zk7us2to4vhwp8t4zujxh8k3liq6euf5m5yyig5ep9pf2dpsigckhcrze3qm9g2aaxi8k3shnjcd19xijfsvgb9u2u184uibhnne4\",\n \"title\" : \"Quos et officiis laborum hic fugiat.\",\n \"sha\" : \"a8ihc2gr3u3eeuev1easyyja2xpgnbetthx4fip1km192co6ruytn0u9yeu9oydnf2b49gg4fsfu5fl1rdjdmpd5la9zzeofqboexecl3jktdg426xot95jxftytcxovqh3lw9k99bt80vuj75adl8r5hb4srk45xypdv8euw\"\n }, {\n \"summary\" : \"Maiores voluptas debitis ipsa mollitia voluptatem id. Totam sed omnis quia. Quidem est quia ut dolorem. Vel sunt quas. Nobis eum dolorem expedita et impedit.\",\n \"html_url\" : \"https://web.example.mocklab.io/775132\",\n \"page_name\" : \"Fermin Swaniawski\",\n \"action\" : \"51v5801fjyv0bvsuwykb97i77snhnry1wb38onw1u4glumiq2bjsgo8t9hff8fdjxcgdebffgr71b43rbhs5zwe003udjj0gwke3mlwx1mcuzwat0841xc3pzfdfawo4krxit8mz0oie\",\n \"title\" : \"Sed repellendus et culpa assumenda illo.\",\n \"sha\" : \"gpw3q2vdssucqxr8dr5eu501n2an1daz2hkuifvs4qzi532ynrg39fg6tffx5ze4i28fd4kws\"\n }, {\n \"summary\" : \"Perferendis quae voluptas veniam quo. Vero consequatur magnam similique. Eaque distinctio quo et ut nulla cum. Est eum ea natus.\",\n \"html_url\" : \"https://web.example.mocklab.io/748534\",\n \"page_name\" : \"Leatha VonRueden\",\n \"action\" : \"v1091lw\",\n \"title\" : \"Quasi qui minima et.\",\n \"sha\" : \"15zalct9srv5zoo5qy51hfsqw2o4tokq9oyj4x40ithf3377j5pqq8ck32kd0vomb08go16j2gb7dj1qer9ybktx1ug6yddpppj4ekiq4m4a1oea0pd12hqj3burhqon3op40k5x4qj74573g5usdv4jp3hhklgsvkgaon64pc\"\n }, {\n \"summary\" : \"Hic suscipit eum et dolorem explicabo. Assumenda ut id voluptatem debitis. Quibusdam ut cumque. Voluptatem porro molestiae et.\",\n \"html_url\" : \"https://web.example.mocklab.io/381875\",\n \"page_name\" : \"Mrs. Jan Kihn\",\n \"action\" : \"385ea7sm5ssmt8hyx7rgopc6g0zl1x3izpecsgkpq1ht982lueap1s4nl6p5akne66ratd5xfmz9gnq8h6m7qtnasokqwq4p9bo2vbo49dyd\",\n \"title\" : \"Ea aut nihil.\",\n \"sha\" : \"6ud4epidk\"\n } ],\n \"issue\" : {\n \"body_html\" : \"asqvmma6knohgxiy58sxk4lp5\",\n \"body_text\" : \"ex57gztp2ru7\",\n \"assignees\" : [ {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Johnie Maggio\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"2va9gu29t6y6y2wa1uvalmfqid7pliu2n9ld0wwdvwo3a0obf6rz2eh9mrfyvcq9vso80613u0toe7cw6dg9ebfj0y0wkwn8enhugjmzxu6dom8b72i0cxfl1ky503fomg0ckbqo56cif9k1ajdgn5ofxmbvfkp5w53ot3df9ctrrxt9uy8ehaqkfdl8gbpqrzcrx28\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n }, {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Magan Lindgren\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"gz1mn311id2vb69vnmun687ctcaxlv81075fg6qigm1e7fbum9e36gm6bu7i4k4neliv44oyepjebt\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n }, {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Mckinley Hansen\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"0sbw6tf5n2a9fyzm4iflygr4c92uxubru5rht5thyyneapb799zw37q1jarf7f7svnhqwjl7303\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n }, {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Miss Jeanette Morissette\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"8ookayqrkamfldctcfcs4cf56qi1mq85xk1pue92oei35v3vfytc8p4j298wpm3vhr8llpw5q0gikhy5jk7dqrkvy80xp\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n }, {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Maryanne Harvey Jr.\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"yyy7fcosbic1msj0pxy1x3iq27coxvk5cpvsfvasc70q4a3xhcmn5o7idv7o82wd7p\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n }, {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Katy O'Connell\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"shbneb42dng6hiezoswqh8jrzbruhfzhmlrj5rn0fodeex0w2acprmhgudb8d0d76yf0odu1gwefrpfxlb5gna6zqbypnvegw06xl712\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n }, {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Buck Graham\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"y664q2w2pawybp5ra4alkwnlty56tg4zdy7axkim9cn15csubxye7vc2j0u4h5rfbpqetx2e9d6z4n14125j4fzxedrfw4rpay31\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n } ],\n \"created_at\" : \"2011-04-22T13:33:48Z\",\n \"body\" : \"I'm having a problem with this.\",\n \"repository\" : {\n \"allow_forking\" : true,\n \"anonymous_access_enabled\" : true,\n \"is_template\" : true,\n \"stargazers_count\" : 80,\n \"pushed_at\" : \"2011-01-26T19:06:43Z\",\n \"language\" : \"6isxo48v66tj886roh2zzquecdbkehgfv2pd6p60dfj1ozfftdlf9o7fhw0oj7vh\",\n \"subscription_url\" : \"http://api.github.com/repos/octocat/Hello-World/subscription\",\n \"branches_url\" : \"http://api.github.com/repos/octocat/Hello-World/branches{/branch}\",\n \"allow_rebase_merge\" : true,\n \"issue_comment_url\" : \"http://api.github.com/repos/octocat/Hello-World/issues/comments{/number}\",\n \"labels_url\" : \"http://api.github.com/repos/octocat/Hello-World/labels{/name}\",\n \"permissions\" : {\n \"pull\" : false,\n \"maintain\" : true,\n \"admin\" : false,\n \"triage\" : true,\n \"push\" : false\n },\n \"subscribers_url\" : \"http://api.github.com/repos/octocat/Hello-World/subscribers\",\n \"releases_url\" : \"http://api.github.com/repos/octocat/Hello-World/releases{/id}\",\n \"svn_url\" : \"https://svn.github.com/octocat/Hello-World\",\n \"subscribers_count\" : 3833312411411424847,\n \"id\" : 42,\n \"master_branch\" : \"lrhjx83kxzjjhj9z3d38nqgq0bn9rmnm4yv6hyf\",\n \"forks\" : 6538342217788992098,\n \"allow_merge_commit\" : true,\n \"archive_url\" : \"http://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref}\",\n \"git_refs_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/refs{/sha}\",\n \"forks_url\" : \"http://api.github.com/repos/octocat/Hello-World/forks\",\n \"visibility\" : \"xdppj4wk4uvv2z9e3dn989rvu0ply3pj56y1xxfgginjftmh67yxinzmcqluif6t0msz6uhi1i430tjwvqsbjrtutupepjhqp1j9qrecfv4z1a5gbjh5ka4b2hpjd26tqc3h68nic1pa27brah\",\n \"statuses_url\" : \"http://api.github.com/repos/octocat/Hello-World/statuses/{sha}\",\n \"network_count\" : 7856736941102606749,\n \"ssh_url\" : \"git@github.com:octocat/Hello-World.git\",\n \"license\" : {\n \"html_url\" : \"https://web.example.mocklab.io/947045\",\n \"name\" : \"MIT License\",\n \"spdx_id\" : \"MIT\",\n \"key\" : \"mit\",\n \"url\" : \"https://api.github.com/licenses/mit\",\n \"node_id\" : \"MDc6TGljZW5zZW1pdA==\"\n },\n \"full_name\" : \"octocat/Hello-World\",\n \"size\" : 108,\n \"template_repository\" : {\n \"anonymous_access_enabled\" : true,\n \"is_template\" : false,\n \"stargazers_count\" : 2351491559047650509,\n \"pushed_at\" : \"43zwspql9cb5o08pgoeradh5jamm5onmvvypgv3nnls3y7cupozrb0kuaxtqcqhwy9ymtb9whrveiu1vnbj2t4now7o1mqk0kenf7bqswz37ro93746z2smyths0jzfi\",\n \"language\" : \"2ml75z3x684bwkbv60l11jpthneamdd8ofipoggw0c9jjmx4yxqjy34ullregwmu388a5ce98tf8lsxjlwpvzwebl7n3b9mn7yyhf35jewjo92ixftnvbqbcycnv6dumcjojz103m00z885gcsef316beoqkpqx8ie2bk1gnsuue95ea0q8wr9shjc4\",\n \"subscription_url\" : \"https://web.example.mocklab.io/644353\",\n \"branches_url\" : \"https://web.example.mocklab.io/773920\",\n \"allow_rebase_merge\" : true,\n \"issue_comment_url\" : \"https://web.example.mocklab.io/862082\",\n \"labels_url\" : \"https://web.example.mocklab.io/270637\",\n \"permissions\" : { },\n \"subscribers_url\" : \"https://web.example.mocklab.io/035789\",\n \"releases_url\" : \"https://web.example.mocklab.io/990899\",\n \"svn_url\" : \"https://web.example.mocklab.io/451030\",\n \"subscribers_count\" : 6895126077411588800,\n \"id\" : 2822784061568047960,\n \"allow_merge_commit\" : false,\n \"archive_url\" : \"https://web.example.mocklab.io/333206\",\n \"git_refs_url\" : \"https://web.example.mocklab.io/848034\",\n \"forks_url\" : \"https://web.example.mocklab.io/799367\",\n \"visibility\" : \"2ftb\",\n \"statuses_url\" : \"https://web.example.mocklab.io/742480\",\n \"network_count\" : 4014868053206451897,\n \"ssh_url\" : \"https://web.example.mocklab.io/053381\",\n \"full_name\" : \"Ms. Simon Mueller\",\n \"size\" : 9044663919143298866,\n \"languages_url\" : \"https://web.example.mocklab.io/729690\",\n \"clone_url\" : \"https://web.example.mocklab.io/746103\",\n \"collaborators_url\" : \"https://web.example.mocklab.io/229023\",\n \"html_url\" : \"https://web.example.mocklab.io/223734\",\n \"name\" : \"Kent Lynch\",\n \"pulls_url\" : \"https://web.example.mocklab.io/489372\",\n \"default_branch\" : \"pyjcq6c3\",\n \"hooks_url\" : \"https://web.example.mocklab.io/356584\",\n \"trees_url\" : \"https://web.example.mocklab.io/708311\",\n \"tags_url\" : \"https://web.example.mocklab.io/180980\",\n \"contributors_url\" : \"https://web.example.mocklab.io/072339\",\n \"private\" : true,\n \"has_downloads\" : true,\n \"notifications_url\" : \"https://web.example.mocklab.io/842176\",\n \"open_issues_count\" : 207459823147742086,\n \"created_at\" : \"e1dydtvcrhiicqou8gtnyejpbxg44vii1j5dzfp5w0w08yg3802d78a08pnz75b0xekqopjfo7x1vnsnn8sjd\",\n \"description\" : \"Rem iste nemo quasi culpa et suscipit quos. Qui reprehenderit voluptates sapiente dolor non culpa. Maxime necessitatibus officia. Vel quidem suscipit architecto culpa.\",\n \"deployments_url\" : \"https://web.example.mocklab.io/838415\",\n \"keys_url\" : \"https://web.example.mocklab.io/021957\",\n \"has_projects\" : true,\n \"archived\" : false,\n \"has_wiki\" : false,\n \"updated_at\" : \"2022-09-09T07:39:59.203123Z\",\n \"comments_url\" : \"https://web.example.mocklab.io/170840\",\n \"stargazers_url\" : \"https://web.example.mocklab.io/484747\",\n \"disabled\" : true,\n \"delete_branch_on_merge\" : true,\n \"git_url\" : \"https://web.example.mocklab.io/544585\",\n \"has_pages\" : true,\n \"owner\" : { },\n \"allow_squash_merge\" : false,\n \"commits_url\" : \"https://web.example.mocklab.io/484619\",\n \"compare_url\" : \"https://web.example.mocklab.io/631489\",\n \"git_commits_url\" : \"https://web.example.mocklab.io/697878\",\n \"topics\" : [ \"9dnm5iv52eg5ja9z5dkt5rbsz3bctulcjdx1pva9odisus4kghsym8wpkqq7os9iil0jhx5kx9vdnbxpm382hk7w641iqmkkset494hp5vzywdj0f7\" ],\n \"blobs_url\" : \"https://web.example.mocklab.io/215032\",\n \"git_tags_url\" : \"https://web.example.mocklab.io/087960\",\n \"merges_url\" : \"https://web.example.mocklab.io/342855\",\n \"downloads_url\" : \"https://web.example.mocklab.io/317304\",\n \"has_issues\" : true,\n \"url\" : \"https://web.example.mocklab.io/292011\",\n \"contents_url\" : \"https://web.example.mocklab.io/726664\",\n \"mirror_url\" : \"https://web.example.mocklab.io/301997\",\n \"milestones_url\" : \"https://web.example.mocklab.io/135605\",\n \"teams_url\" : \"https://web.example.mocklab.io/360659\",\n \"fork\" : false,\n \"issues_url\" : \"https://web.example.mocklab.io/313372\",\n \"events_url\" : \"https://web.example.mocklab.io/451234\",\n \"issue_events_url\" : \"https://web.example.mocklab.io/670550\",\n \"assignees_url\" : \"https://web.example.mocklab.io/833695\",\n \"watchers_count\" : 3893686178620142710,\n \"forks_count\" : 5384558827200015040,\n \"homepage\" : \"j0otlnb2g12nsxdgphbke7mcyiki89or0fwr90h1eoifwe601j74mts9gufoeie886drvjrq4v684fc6m2pukiw\",\n \"node_id\" : \"45bt\"\n },\n \"languages_url\" : \"http://api.github.com/repos/octocat/Hello-World/languages\",\n \"clone_url\" : \"https://github.com/octocat/Hello-World.git\",\n \"collaborators_url\" : \"http://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator}\",\n \"html_url\" : \"https://github.com/octocat/Hello-World\",\n \"name\" : \"Team Environment\",\n \"pulls_url\" : \"http://api.github.com/repos/octocat/Hello-World/pulls{/number}\",\n \"default_branch\" : \"master\",\n \"hooks_url\" : \"http://api.github.com/repos/octocat/Hello-World/hooks\",\n \"trees_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/trees{/sha}\",\n \"tags_url\" : \"http://api.github.com/repos/octocat/Hello-World/tags\",\n \"contributors_url\" : \"http://api.github.com/repos/octocat/Hello-World/contributors\",\n \"private\" : true,\n \"has_downloads\" : true,\n \"notifications_url\" : \"http://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating}\",\n \"open_issues_count\" : 0,\n \"created_at\" : \"2011-01-26T19:01:12Z\",\n \"description\" : \"This your first repo!\",\n \"watchers\" : 8257845974940463226,\n \"deployments_url\" : \"http://api.github.com/repos/octocat/Hello-World/deployments\",\n \"keys_url\" : \"http://api.github.com/repos/octocat/Hello-World/keys{/key_id}\",\n \"has_projects\" : true,\n \"archived\" : true,\n \"has_wiki\" : true,\n \"updated_at\" : \"2011-01-26T19:14:43Z\",\n \"comments_url\" : \"http://api.github.com/repos/octocat/Hello-World/comments{/number}\",\n \"stargazers_url\" : \"http://api.github.com/repos/octocat/Hello-World/stargazers\",\n \"disabled\" : true,\n \"delete_branch_on_merge\" : false,\n \"git_url\" : \"git:github.com/octocat/Hello-World.git\",\n \"has_pages\" : true,\n \"owner\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Ema Goyette\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"a4mxsqv8mljtehfwl52ktv4kq4hbrtukcrxld292yqe79z\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"allow_squash_merge\" : true,\n \"commits_url\" : \"http://api.github.com/repos/octocat/Hello-World/commits{/sha}\",\n \"compare_url\" : \"http://api.github.com/repos/octocat/Hello-World/compare/{base}...{head}\",\n \"git_commits_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/commits{/sha}\",\n \"topics\" : [ \"nwksxztbwsuv3xiptsnkuqqyeto7vslhekz75gg8wjpp6nh0fia48gv4bnp323zebarm6k3mbly4q04kxo31lb1ldefadnsybi3jw3xf5e1gslvxr38wlyoslfor0m25lw85vx20zn\", \"7cb1dj1pwv99viutuyzrazi1mnhgiw2s89qa6u3b7l3qejx18kgorxuo3ki81efbw11yjz7n2rmqlrpcbc6rx3hztwxnudf3y489ge71lpv8dhqergao8g75y6ks60b\", \"9269egdyvapjk4iel7bvceu3lvb1svdhgek7anitxxdp96tmzwjec\", \"mka5ua9uyr5c3qo1nvrbfa7z4ncem4yh2bxvlofpgbm5b1bo61lvufjdvbl4qfspn0gepjaz16nctl8vxquxs1u09px5zhd7ovzsmb9bmnawhn6xpboii3ezsv3dr753pr6z4jpymbtd36x31ds4qa6bh\", \"ip41be2gf1528p267zldhvrwd9bansd195u9jr6qmqnkli96wucbfuzy3bgb4yl0hh4ywxe5bn7jyuf0\", \"pmwwpt76jp7p9ufwx1juiomihu0tzgmny\", \"v1unxelujri5w83kvosznsigp7v08e70lt8rpxiog8pusobqvdr2cr4p\", \"f3wwunb99xkuqb15tkvs124z6l0bg6ziftycv5pp\" ],\n \"blobs_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/blobs{/sha}\",\n \"git_tags_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/tags{/sha}\",\n \"merges_url\" : \"http://api.github.com/repos/octocat/Hello-World/merges\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:42Z\\\"\",\n \"downloads_url\" : \"http://api.github.com/repos/octocat/Hello-World/downloads\",\n \"has_issues\" : true,\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World\",\n \"contents_url\" : \"http://api.github.com/repos/octocat/Hello-World/contents/{+path}\",\n \"mirror_url\" : \"git:git.example.com/octocat/Hello-World\",\n \"milestones_url\" : \"http://api.github.com/repos/octocat/Hello-World/milestones{/number}\",\n \"teams_url\" : \"http://api.github.com/repos/octocat/Hello-World/teams\",\n \"fork\" : false,\n \"issues_url\" : \"http://api.github.com/repos/octocat/Hello-World/issues{/number}\",\n \"events_url\" : \"http://api.github.com/repos/octocat/Hello-World/events\",\n \"issue_events_url\" : \"http://api.github.com/repos/octocat/Hello-World/issues/events{/number}\",\n \"organization\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Miss Lili Haag\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"sphswfarolca1lg9tjbkvvvnk8p7egol8a2a7bw2mnhis8vuw5ur7cqnagsrrqiqd4cghry046fkv388ak7u4uclxct3m3nxqbcv91gu1bto6e2qtrl7qug8d7lve2rb0uxstbv76ukxp1lwsw0v0ixsbe0cg7m7kq9l3b18yazxgp\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"assignees_url\" : \"http://api.github.com/repos/octocat/Hello-World/assignees{/user}\",\n \"open_issues\" : 6675197736191948917,\n \"watchers_count\" : 80,\n \"forks_count\" : 9,\n \"homepage\" : \"https://github.com\",\n \"node_id\" : \"MDEwOlJlcG9zaXRvcnkxMjk2MjY5\"\n },\n \"title\" : \"Found a bug\",\n \"author_association\" : \"OWNER\",\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347/labels{/name}\",\n \"number\" : 1347,\n \"performed_via_github_app\" : {\n \"owner\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Anitra Kautzer\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"hc6faszfukuhff6utakpifz32v26sxxf8ywl1pngz15ydx59g0228avehrl0ev9jyyqav3o90shu09qq9y63obufyzf338857kh8igv72yjts9ho0817mmkedgpe3dw7o7tg0eits3yy1nebn2e0xjhgfeffqp79\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"installations_count\" : 5,\n \"created_at\" : \"2017-07-08T16:18:44-04:00\",\n \"description\" : \"The description of the app.\",\n \"client_id\" : \"\\\"Iv1.25b5d1e65ffc4022\\\"\",\n \"external_url\" : \"https://example.com\",\n \"updated_at\" : \"2017-07-08T16:18:44-04:00\",\n \"permissions\" : {\n \"deployments\" : \"write\",\n \"issues\" : \"read\"\n },\n \"html_url\" : \"https://github.com/apps/super-ci\",\n \"name\" : \"Probot Owners\",\n \"pem\" : \"\\\"-----BEGIN RSA PRIVATE KEY-----\\\\nMIIEogIBAAKCAQEArYxrNYD/iT5CZVpRJu4rBKmmze3PVmT/gCo2ATUvDvZTPTey\\\\nxcGJ3vvrJXazKk06pN05TN29o98jrYz4cengG3YGsXPNEpKsIrEl8NhbnxapEnM9\\\\nJCMRe0P5JcPsfZlX6hmiT7136GRWiGOUba2X9+HKh8QJVLG5rM007TBER9/z9mWm\\\\nrJuNh+m5l320oBQY/Qq3A7wzdEfZw8qm/mIN0FCeoXH1L6B8xXWaAYBwhTEh6SSn\\\\nZHlO1Xu1JWDmAvBCi0RO5aRSKM8q9QEkvvHP4yweAtK3N8+aAbZ7ovaDhyGz8r6r\\\\nzhU1b8Uo0Z2ysf503WqzQgIajr7Fry7/kUwpgQIDAQABAoIBADwJp80Ko1xHPZDy\\\\nfcCKBDfIuPvkmSW6KumbsLMaQv1aGdHDwwTGv3t0ixSay8CGlxMRtRDyZPib6SvQ\\\\n6OH/lpfpbMdW2ErkksgtoIKBVrDilfrcAvrNZu7NxRNbhCSvN8q0s4ICecjbbVQh\\\\nnueSdlA6vGXbW58BHMq68uRbHkP+k+mM9U0mDJ1HMch67wlg5GbayVRt63H7R2+r\\\\nVxcna7B80J/lCEjIYZznawgiTvp3MSanTglqAYi+m1EcSsP14bJIB9vgaxS79kTu\\\\noiSo93leJbBvuGo8QEiUqTwMw4tDksmkLsoqNKQ1q9P7LZ9DGcujtPy4EZsamSJT\\\\ny8OJt0ECgYEA2lxOxJsQk2kI325JgKFjo92mQeUObIvPfSNWUIZQDTjniOI6Gv63\\\\nGLWVFrZcvQBWjMEQraJA9xjPbblV8PtfO87MiJGLWCHFxmPz2dzoedN+2Coxom8m\\\\nV95CLz8QUShuao6u/RYcvUaZEoYs5bHcTmy5sBK80JyEmafJPtCQVxMCgYEAy3ar\\\\nZr3yv4xRPEPMat4rseswmuMooSaK3SKub19WFI5IAtB/e7qR1Rj9JhOGcZz+OQrl\\\\nT78O2OFYlgOIkJPvRMrPpK5V9lslc7tz1FSh3BZMRGq5jSyD7ETSOQ0c8T2O/s7v\\\\nbeEPbVbDe4mwvM24XByH0GnWveVxaDl51ABD65sCgYB3ZAspUkOA5egVCh8kNpnd\\\\nSd6SnuQBE3ySRlT2WEnCwP9Ph6oPgn+oAfiPX4xbRqkL8q/k0BdHQ4h+zNwhk7+h\\\\nWtPYRAP1Xxnc/F+jGjb+DVaIaKGU18MWPg7f+FI6nampl3Q0KvfxwX0GdNhtio8T\\\\nTj1E+SnFwh56SRQuxSh2gwKBgHKjlIO5NtNSflsUYFM+hyQiPiqnHzddfhSG+/3o\\\\nm5nNaSmczJesUYreH5San7/YEy2UxAugvP7aSY2MxB+iGsiJ9WD2kZzTUlDZJ7RV\\\\nUzWsoqBR+eZfVJ2FUWWvy8TpSG6trh4dFxImNtKejCR1TREpSiTV3Zb1dmahK9GV\\\\nrK9NAoGAbBxRLoC01xfxCTgt5BDiBcFVh4fp5yYKwavJPLzHSpuDOrrI9jDn1oKN\\\\nonq5sDU1i391zfQvdrbX4Ova48BN+B7p63FocP/MK5tyyBoT8zQEk2+vWDOw7H/Z\\\\nu5dTCPxTIsoIwUw1I+7yIxqJzLPFgR2gVBwY1ra/8iAqCj+zeBw=\\\\n-----END RSA PRIVATE KEY-----\\\\n\\\"\",\n \"webhook_secret\" : \"\\\"6fba8f2fc8a7e8f2cca5577eddd82ca7586b3b6b\\\"\",\n \"client_secret\" : \"\\\"1d4b2097ac622ba702d19de498f005747a8b21d3\\\"\",\n \"id\" : 37,\n \"events\" : [ \"label\", \"deployment\" ],\n \"slug\" : \"probot-owners\",\n \"node_id\" : \"MDExOkludGVncmF0aW9uMQ==\"\n },\n \"updated_at\" : \"2011-04-22T13:33:48Z\",\n \"comments_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347/comments\",\n \"active_lock_reason\" : \"too heated\",\n \"id\" : 1,\n \"repository_url\" : \"https://api.github.com/repos/octocat/Hello-World\",\n \"state\" : \"open\",\n \"locked\" : true,\n \"timeline_url\" : \"https://web.example.mocklab.io/040822\",\n \"pull_request\" : {\n \"patch_url\" : \"https://web.example.mocklab.io/035247\",\n \"html_url\" : \"https://web.example.mocklab.io/415427\",\n \"merged_at\" : \"2023-12-05T02:31:20.205Z\",\n \"diff_url\" : \"https://web.example.mocklab.io/653772\",\n \"url\" : \"https://web.example.mocklab.io/297328\"\n },\n \"closed_at\" : \"2022-08-27T06:13:04.205Z\",\n \"comments\" : 0,\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347\",\n \"labels\" : [ {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n }, {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n }, {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n }, {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n }, {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n }, {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n } ],\n \"milestone\" : {\n \"creator\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Ms. Jerome Bechtelar\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"l9598l9c7whtclvle266fnqd0xgqjcbiy3ql3zz48jdtxnnf4b0lw8onb6ds6cgz46u4a0q02ltivjdca5canfx1y1p9ltjtiyr0ryleqt2kk8sxyuauu174o4gho02ipp3x9\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"closed_at\" : \"2013-02-12T13:22:01Z\",\n \"created_at\" : \"2011-04-10T20:09:31Z\",\n \"description\" : \"Tracking milestone for version 1.0\",\n \"closed_issues\" : 8,\n \"title\" : \"v1.0\",\n \"due_on\" : \"2012-10-09T23:39:01Z\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones/1\",\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones/1/labels\",\n \"number\" : 42,\n \"updated_at\" : \"2014-03-03T18:58:10Z\",\n \"html_url\" : \"https://github.com/octocat/Hello-World/milestones/v1.0\",\n \"id\" : 1002604,\n \"state\" : \"open\",\n \"open_issues\" : 4,\n \"node_id\" : \"MDk6TWlsZXN0b25lMTAwMjYwNA==\"\n },\n \"events_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347/events\",\n \"html_url\" : \"https://github.com/octocat/Hello-World/issues/1347\",\n \"assignee\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Lavada Osinski\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"wsw41115vrg0ks594a6zy14nhfy19h0oko01pzbshp65j3oi3bceewonkm6lqe7u6fm7qcmtbesurns6ypbxs1b7wb3rmqd3jdb4c9elnw2udou7hon0mr\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"user\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"harvey.reichert\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"u7m15c7lj4vgaeda5ts8js0nojwz3jodcgn7kks4pcfu4jw173763pqe9l42g73bno2z2jxq59ls6p3r77dpxsqpp2\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"node_id\" : \"MDU6SXNzdWUx\"\n },\n \"action\" : \"s65oskbtif1by9p3zh6qyxc9uiu1ufkraijfg0rdfccxri88cy8tkw6a91ccbwbo8mnn5bvrt9txq80kjtuam11pil\",\n \"comment\" : {\n \"issue_url\" : \"https://web.example.mocklab.io/513097\",\n \"body_html\" : \"j2qpe8qlvucu8miem27a83rjngvvrmr4ww68gewbsectrbpka4nmqlfr0fkf2ep38ps72ogfa5nze2813schxyoxu8y33ht9jk0f3g0vr0h69f6jobhah57kf156ut7w4hzr0liqoyvieq513vu7n46ga5e940jtlxfoce3ph4owa37rn43tm1huud8g1khhdzi6\",\n \"body_text\" : \"jo6pbm21a6ye8gzg7r914arqqjehp0ug9d42mlhei9nolfrc1t4a58ov0c97oeu475v4jov4e1y766k64sd52sag3bpg3g9x1t8yde3ra4wgtqv24kjb7ujfptta73jld7n56xe7zg8mjzmo\",\n \"created_at\" : \"2011-04-14T16:00:49Z\",\n \"body\" : \"What version of Safari were you using when you observed this bug?\",\n \"url\" : \"https://api.github.com/repositories/42/issues/comments/1\",\n \"author_association\" : \"OWNER\",\n \"performed_via_github_app\" : {\n \"owner\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Mrs. Margareta Denesik\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"qoadmyb0dlk1mmuqpqmeb5nia2hlmrsygkeeb1ibcliygs4m7m16je6pwlxehjdyfrleb8ruu5gsnjwv7ulk1wei5uv6jtq6i9obnr1mh8b39hfafjzsno163x7lkdc5vupz60yj6nhvs0li5pm6c8z8k1lnegyjh2ywoxj48io9s0q87\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"installations_count\" : 5,\n \"created_at\" : \"2017-07-08T16:18:44-04:00\",\n \"description\" : \"The description of the app.\",\n \"client_id\" : \"\\\"Iv1.25b5d1e65ffc4022\\\"\",\n \"external_url\" : \"https://example.com\",\n \"updated_at\" : \"2017-07-08T16:18:44-04:00\",\n \"permissions\" : {\n \"deployments\" : \"write\",\n \"issues\" : \"read\"\n },\n \"html_url\" : \"https://github.com/apps/super-ci\",\n \"name\" : \"Probot Owners\",\n \"pem\" : \"\\\"-----BEGIN RSA PRIVATE KEY-----\\\\nMIIEogIBAAKCAQEArYxrNYD/iT5CZVpRJu4rBKmmze3PVmT/gCo2ATUvDvZTPTey\\\\nxcGJ3vvrJXazKk06pN05TN29o98jrYz4cengG3YGsXPNEpKsIrEl8NhbnxapEnM9\\\\nJCMRe0P5JcPsfZlX6hmiT7136GRWiGOUba2X9+HKh8QJVLG5rM007TBER9/z9mWm\\\\nrJuNh+m5l320oBQY/Qq3A7wzdEfZw8qm/mIN0FCeoXH1L6B8xXWaAYBwhTEh6SSn\\\\nZHlO1Xu1JWDmAvBCi0RO5aRSKM8q9QEkvvHP4yweAtK3N8+aAbZ7ovaDhyGz8r6r\\\\nzhU1b8Uo0Z2ysf503WqzQgIajr7Fry7/kUwpgQIDAQABAoIBADwJp80Ko1xHPZDy\\\\nfcCKBDfIuPvkmSW6KumbsLMaQv1aGdHDwwTGv3t0ixSay8CGlxMRtRDyZPib6SvQ\\\\n6OH/lpfpbMdW2ErkksgtoIKBVrDilfrcAvrNZu7NxRNbhCSvN8q0s4ICecjbbVQh\\\\nnueSdlA6vGXbW58BHMq68uRbHkP+k+mM9U0mDJ1HMch67wlg5GbayVRt63H7R2+r\\\\nVxcna7B80J/lCEjIYZznawgiTvp3MSanTglqAYi+m1EcSsP14bJIB9vgaxS79kTu\\\\noiSo93leJbBvuGo8QEiUqTwMw4tDksmkLsoqNKQ1q9P7LZ9DGcujtPy4EZsamSJT\\\\ny8OJt0ECgYEA2lxOxJsQk2kI325JgKFjo92mQeUObIvPfSNWUIZQDTjniOI6Gv63\\\\nGLWVFrZcvQBWjMEQraJA9xjPbblV8PtfO87MiJGLWCHFxmPz2dzoedN+2Coxom8m\\\\nV95CLz8QUShuao6u/RYcvUaZEoYs5bHcTmy5sBK80JyEmafJPtCQVxMCgYEAy3ar\\\\nZr3yv4xRPEPMat4rseswmuMooSaK3SKub19WFI5IAtB/e7qR1Rj9JhOGcZz+OQrl\\\\nT78O2OFYlgOIkJPvRMrPpK5V9lslc7tz1FSh3BZMRGq5jSyD7ETSOQ0c8T2O/s7v\\\\nbeEPbVbDe4mwvM24XByH0GnWveVxaDl51ABD65sCgYB3ZAspUkOA5egVCh8kNpnd\\\\nSd6SnuQBE3ySRlT2WEnCwP9Ph6oPgn+oAfiPX4xbRqkL8q/k0BdHQ4h+zNwhk7+h\\\\nWtPYRAP1Xxnc/F+jGjb+DVaIaKGU18MWPg7f+FI6nampl3Q0KvfxwX0GdNhtio8T\\\\nTj1E+SnFwh56SRQuxSh2gwKBgHKjlIO5NtNSflsUYFM+hyQiPiqnHzddfhSG+/3o\\\\nm5nNaSmczJesUYreH5San7/YEy2UxAugvP7aSY2MxB+iGsiJ9WD2kZzTUlDZJ7RV\\\\nUzWsoqBR+eZfVJ2FUWWvy8TpSG6trh4dFxImNtKejCR1TREpSiTV3Zb1dmahK9GV\\\\nrK9NAoGAbBxRLoC01xfxCTgt5BDiBcFVh4fp5yYKwavJPLzHSpuDOrrI9jDn1oKN\\\\nonq5sDU1i391zfQvdrbX4Ova48BN+B7p63FocP/MK5tyyBoT8zQEk2+vWDOw7H/Z\\\\nu5dTCPxTIsoIwUw1I+7yIxqJzLPFgR2gVBwY1ra/8iAqCj+zeBw=\\\\n-----END RSA PRIVATE KEY-----\\\\n\\\"\",\n \"webhook_secret\" : \"\\\"6fba8f2fc8a7e8f2cca5577eddd82ca7586b3b6b\\\"\",\n \"client_secret\" : \"\\\"1d4b2097ac622ba702d19de498f005747a8b21d3\\\"\",\n \"id\" : 37,\n \"events\" : [ \"label\", \"deployment\" ],\n \"slug\" : \"probot-owners\",\n \"node_id\" : \"MDExOkludGVncmF0aW9uMQ==\"\n },\n \"updated_at\" : \"2011-04-14T16:00:49Z\",\n \"html_url\" : \"https://web.example.mocklab.io/025050\",\n \"reactions\" : {\n \"confused\" : 9120276769791850119,\n \"-1\" : 1808190376265832317,\n \"+1\" : 1602173622705529080,\n \"total_count\" : 1220724369530166298,\n \"rocket\" : 4759306526644866345,\n \"hooray\" : 744114942654762870,\n \"eyes\" : 6076000149393558761,\n \"heart\" : 1501286664138266517,\n \"laugh\" : 5719735761940489030,\n \"url\" : \"https://web.example.mocklab.io/914174\"\n },\n \"id\" : 42,\n \"user\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"nicholas.sporer\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"jobkwdb91d7cid9b4fjfkkaky1tryrpdrcbk86o3lrxtgrjr0zap7mu7uhvtfw28405cni8wayngwskmb85chcbavcm2wdskq4in3bzmrmg474x5q7w9gqw23iaxygtiqnhz5akc\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"node_id\" : \"jg6h\"\n }\n },\n \"repo\" : {\n \"name\" : \"Cathern Jacobs\",\n \"id\" : 7045094937511340494,\n \"url\" : \"https://web.example.mocklab.io/093684\"\n },\n \"created_at\" : \"2022-08-05T07:58:57.206Z\",\n \"id\" : \"0sky\",\n \"type\" : \"s62b11135\"\n}, {\n \"actor\" : {\n \"display_login\" : \"j0a58fdzlv1c1vcjhtl1ssf8t2bg03uclkw3ccmx6ppx\",\n \"avatar_url\" : \"https://s3.amazonaws.com/uifaces/faces/twitter/ivanfilipovbg/128.jpg\",\n \"id\" : 5705508808981340455,\n \"login\" : \"46df2ukelw7xubryb22and6rprk5kcc1uv76bv1wn4qe99zrn4mttzl3t2lexao7dhxf8z042h\",\n \"gravatar_id\" : \"7zeo\",\n \"url\" : \"https://web.example.mocklab.io/024623\"\n },\n \"public\" : true,\n \"org\" : {\n \"display_login\" : \"u55z08hdu9p9t008b6vwedvfm431hmf7fv1dagl85hgeiqptcv9mjh1zr1ur0cxdiq5t796iemsvw6dh1yo1adz8tngiao8dunt75termipb290ui11c3h1m7qp4bk5nb1cpzywvk8uee3jupgcoikg9egsufhazy5nog08usskln8p\",\n \"avatar_url\" : \"https://s3.amazonaws.com/uifaces/faces/twitter/karthipanraj/128.jpg\",\n \"id\" : 8178077098758613089,\n \"login\" : \"ay1xfs6fdmtk8hlb2aafdn68de0v2lq22c91dgzdf4jz3awep3tq88fw6mq8m161ppotz2whc2uja52jd523h475xg7zxx9h3qk0wlya9xab9\",\n \"gravatar_id\" : \"4m9q\",\n \"url\" : \"https://web.example.mocklab.io/167609\"\n },\n \"payload\" : {\n \"pages\" : [ {\n \"summary\" : \"Tenetur dolor et consequuntur. Voluptatibus dolor sapiente minus. Omnis rem voluptas corrupti dignissimos vitae vel sit. Ut sapiente fuga.\",\n \"html_url\" : \"https://web.example.mocklab.io/920524\",\n \"page_name\" : \"Bobbie Volkman\",\n \"action\" : \"m8n41uhcpgbnzyc3seiks2v4yoxdqvhen81vkjidtsomz2ftq4kz07bnm43frigwtnjrxtlqv4vgedigq685zn5z\",\n \"title\" : \"Sint et eum voluptate repellendus ullam.\",\n \"sha\" : \"ke3xsz95q4gx0ugs6wxijb3vsey1rqvi0wdrhef15bru45h4dhehte0r0dy4elp64qzs0pj5vea33el5a59yavokmr9glsc128gxp4tl2ja48903j254ji1giorrx3wikjk9jc\"\n }, {\n \"summary\" : \"Aut molestias tempore facere. Qui rerum eos accusantium aut. Voluptatem enim praesentium sed in.\",\n \"html_url\" : \"https://web.example.mocklab.io/401200\",\n \"page_name\" : \"Ambrose Beahan\",\n \"action\" : \"69hei3cgqd8nlqt\",\n \"title\" : \"Et aut ut consectetur et rerum.\",\n \"sha\" : \"ivowpijpjk6d11sjm5odkieo6rg4n\"\n } ],\n \"issue\" : {\n \"body_html\" : \"vvnr96b8xwk9v0u3hol4wb6m4ya8eksmdswk417i1a\",\n \"body_text\" : \"63a1mqwd2umegwpl4trdjll2vjmhb5avrip8lb45gmqhi25t9vzvrtseq1qdv4d53561k26pyjkbtbjrcrfscxbwv6oq1cgv5w1gt8n2bld8g3d6uemeblix6uuk921h5zuhhwy8wwhkzzej2ulsqymly4k3kp37chdp9\",\n \"assignees\" : [ {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Pattie Wyman\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"il5h8emqhhl2rulaz7\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n }, {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Shera Koch DDS\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"t3oqx75iww1duaq04cq4admon7uyv2h678jo0d6yy7y28stj6zc439855k91tblpch8noh3corg8ldeci9y6rqexsu24cm10f95q1wnwe3p0bh6fpaufivv8pssy3x18gmk2bsv0cpe2c9s8mzqz0bsf0qpx2d64poyfbyhy99fiurogvg3qdw414tbryebos43tvi\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n }, {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Thaddeus Jast\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"rml334nrcqbvs56hvjnuiat86us1womyqcrncvwvoaq1nib1ul38qzgygymu0kb1hyo133zy1nxm2258b5inq7zxmx7sjk0uthspdfmu4hjh5vnb6nr8zxdsb0suz0mf142em8fwg5pboeewcckeou1jbd091v4d1jnsyi54ia30qn7ccqq27m9tbqt\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n }, {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Cecelia Abshire\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"y0opzq66ilw37kxbte7ppipzz9pw8z3o54ag40ch993xawrlfsvu273f85wx6ibqnj5pmwx70pqqsd8h745srdrz7ipfawuahwb8r4jucwjup9wlwf194bukh4h2acp3bvxc57\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n }, {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Ms. Hiram Gorczany\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"jwns2rs0brs3778sd16ayx2ughu6xxxqkyyymc7sjee4sjlq0rabrru07qq4n8oojdg6x0v8lmh3kbv804kmxixijegpramoolaav3qn0c8ww0i3jvj0f26r461msqrjj57nzex9h4kac4263p3irss8bixnv0nwtmke\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n }, {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Krystin Block\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"86b\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n }, {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Harley Wisoky\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"arsgx6b08px067ih6fgofqn27v67o5mztgyhro5ozw5zfbh8212sx0zfo638nnklpd5qz0tzifffbxjzc9zs0rfq16viaj2e7gc59266v2ii76nzit6ymcyybhjv6ypa3ehgtgsgm1on1x1vwekodpl4lhm9\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n }, {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Ingrid Heller DVM\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"1ctnt8vomyodbw8st498qndr9lwd1qur86oai1yof26y9ldtzsmi8r9kgpdsefjl2rzg2pxkwaoxzqq9nix06s6iiyltpx5dku6b0s5h7pvkb8ulxfaqt6c86staoy9x2r584e0c5kjhn\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n } ],\n \"created_at\" : \"2011-04-22T13:33:48Z\",\n \"body\" : \"I'm having a problem with this.\",\n \"repository\" : {\n \"allow_forking\" : false,\n \"anonymous_access_enabled\" : false,\n \"is_template\" : true,\n \"stargazers_count\" : 80,\n \"pushed_at\" : \"2011-01-26T19:06:43Z\",\n \"language\" : \"cpndd267mk52zd8hdfyxpveho72emdso3cm2koqmpe993ipi1ywxg8t0wffabzwddviam0w6j5tsb29ieuv2xtjipy5wbu6ota40mzo3wdutz107zsdue2en0wgyoq5w4or464b45yz2rondplbrd8qic1omc81jdb5ax4omi7j1z25qfjljhihgis43d4qdliwyi2j\",\n \"subscription_url\" : \"http://api.github.com/repos/octocat/Hello-World/subscription\",\n \"branches_url\" : \"http://api.github.com/repos/octocat/Hello-World/branches{/branch}\",\n \"allow_rebase_merge\" : true,\n \"issue_comment_url\" : \"http://api.github.com/repos/octocat/Hello-World/issues/comments{/number}\",\n \"labels_url\" : \"http://api.github.com/repos/octocat/Hello-World/labels{/name}\",\n \"permissions\" : {\n \"pull\" : false,\n \"maintain\" : true,\n \"admin\" : true,\n \"triage\" : false,\n \"push\" : false\n },\n \"subscribers_url\" : \"http://api.github.com/repos/octocat/Hello-World/subscribers\",\n \"releases_url\" : \"http://api.github.com/repos/octocat/Hello-World/releases{/id}\",\n \"svn_url\" : \"https://svn.github.com/octocat/Hello-World\",\n \"subscribers_count\" : 7289873624110991669,\n \"id\" : 42,\n \"master_branch\" : \"ol8zer8sgsi9ei6jpwxer0kn3rq8yia0e2kt0krjqvm32j\",\n \"forks\" : 252141239215127410,\n \"allow_merge_commit\" : true,\n \"archive_url\" : \"http://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref}\",\n \"git_refs_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/refs{/sha}\",\n \"forks_url\" : \"http://api.github.com/repos/octocat/Hello-World/forks\",\n \"visibility\" : \"twfoggqvr7uh7hmxph0e0rl78uit6ogwioz03vf2z10mrqcotc30t7zcd3alvj619rf7vdsq6irk8zrgp39rpzj4zly764e2boofsivigukro8h66bmn8d7lj0hfe6kxfjtlml25i5zepps8bbl5a\",\n \"statuses_url\" : \"http://api.github.com/repos/octocat/Hello-World/statuses/{sha}\",\n \"network_count\" : 2501691074629606379,\n \"ssh_url\" : \"git@github.com:octocat/Hello-World.git\",\n \"license\" : {\n \"html_url\" : \"https://web.example.mocklab.io/468642\",\n \"name\" : \"MIT License\",\n \"spdx_id\" : \"MIT\",\n \"key\" : \"mit\",\n \"url\" : \"https://api.github.com/licenses/mit\",\n \"node_id\" : \"MDc6TGljZW5zZW1pdA==\"\n },\n \"full_name\" : \"octocat/Hello-World\",\n \"size\" : 108,\n \"template_repository\" : {\n \"anonymous_access_enabled\" : false,\n \"is_template\" : true,\n \"stargazers_count\" : 6497041010017540136,\n \"pushed_at\" : \"o28y1xsdboblmhsu\",\n \"language\" : \"e67mt8etdnvohnom4a5j5dca774eoxtwmocr6x9mlqbf0nhgvc8gausxsablm90016hso32g83j39do\",\n \"subscription_url\" : \"https://web.example.mocklab.io/078375\",\n \"branches_url\" : \"https://web.example.mocklab.io/869815\",\n \"allow_rebase_merge\" : true,\n \"issue_comment_url\" : \"https://web.example.mocklab.io/254620\",\n \"labels_url\" : \"https://web.example.mocklab.io/156728\",\n \"permissions\" : { },\n \"subscribers_url\" : \"https://web.example.mocklab.io/454172\",\n \"releases_url\" : \"https://web.example.mocklab.io/925357\",\n \"svn_url\" : \"https://web.example.mocklab.io/728843\",\n \"subscribers_count\" : 6831472068563493857,\n \"id\" : 7221425457883810756,\n \"allow_merge_commit\" : true,\n \"archive_url\" : \"https://web.example.mocklab.io/993483\",\n \"git_refs_url\" : \"https://web.example.mocklab.io/616794\",\n \"forks_url\" : \"https://web.example.mocklab.io/263382\",\n \"visibility\" : \"0re1v1kg4rpe5vsj69p1fuo\",\n \"statuses_url\" : \"https://web.example.mocklab.io/985517\",\n \"network_count\" : 4090773719121887741,\n \"ssh_url\" : \"https://web.example.mocklab.io/753694\",\n \"full_name\" : \"Ms. Irwin Kozey\",\n \"size\" : 7409055734782010634,\n \"languages_url\" : \"https://web.example.mocklab.io/570109\",\n \"clone_url\" : \"https://web.example.mocklab.io/360737\",\n \"collaborators_url\" : \"https://web.example.mocklab.io/216687\",\n \"html_url\" : \"https://web.example.mocklab.io/041380\",\n \"name\" : \"Graig Klocko\",\n \"pulls_url\" : \"https://web.example.mocklab.io/383426\",\n \"default_branch\" : \"9p0ukbrm2r8y49k79h93n12uycxjb7krrq64p8dm2ogb0ruhiz3bn5w5dlaojw5un3\",\n \"hooks_url\" : \"https://web.example.mocklab.io/380897\",\n \"trees_url\" : \"https://web.example.mocklab.io/610095\",\n \"tags_url\" : \"https://web.example.mocklab.io/405129\",\n \"contributors_url\" : \"https://web.example.mocklab.io/730775\",\n \"private\" : false,\n \"has_downloads\" : true,\n \"notifications_url\" : \"https://web.example.mocklab.io/272592\",\n \"open_issues_count\" : 3392330483434184496,\n \"created_at\" : \"v04n9ggrjovhmodrh0bfk9zt5s6acpqkggcq9p0ezm4adyfl08iwzjva35\",\n \"description\" : \"Et qui qui consequatur quis. Rerum minima et doloremque eum blanditiis eius quis. Blanditiis recusandae pariatur quidem. Vel sequi harum. Nesciunt aut accusamus eum quisquam mollitia.\",\n \"deployments_url\" : \"https://web.example.mocklab.io/038952\",\n \"keys_url\" : \"https://web.example.mocklab.io/749810\",\n \"has_projects\" : false,\n \"archived\" : true,\n \"has_wiki\" : false,\n \"updated_at\" : \"2022-11-30T07:57:59.210173Z\",\n \"comments_url\" : \"https://web.example.mocklab.io/968116\",\n \"stargazers_url\" : \"https://web.example.mocklab.io/730001\",\n \"disabled\" : true,\n \"delete_branch_on_merge\" : true,\n \"git_url\" : \"https://web.example.mocklab.io/379711\",\n \"has_pages\" : false,\n \"owner\" : { },\n \"allow_squash_merge\" : false,\n \"commits_url\" : \"https://web.example.mocklab.io/337713\",\n \"compare_url\" : \"https://web.example.mocklab.io/630710\",\n \"git_commits_url\" : \"https://web.example.mocklab.io/132774\",\n \"topics\" : [ \"q37rxopwzybiidk3xmqte8scstn3uz1fa7en2qqlx3frjqyzvn0pmvbflj8ovakuz1\", \"5pia1p1q1vgvi40xk4opp4ll7lsl170ii127rdwu7v396rfpv9r8gljvrwvc9b8ynqylip4ia6mdfsxnnptn8ph354tjw14mceied9sjcsg4phse94upqfie95j2uigmzvvojpi9vhiy87mn0c\", \"ust78dm0gx3m2ldrx5o2ihwhgo0e12bw64sri4r8xmzn0wn241bkfkw30c04fghsuu2zbwzy1jpm7glloifsm7dm6iu105db46dogm6vqzfz\" ],\n \"blobs_url\" : \"https://web.example.mocklab.io/521417\",\n \"git_tags_url\" : \"https://web.example.mocklab.io/478959\",\n \"merges_url\" : \"https://web.example.mocklab.io/301564\",\n \"downloads_url\" : \"https://web.example.mocklab.io/767341\",\n \"has_issues\" : true,\n \"url\" : \"https://web.example.mocklab.io/217758\",\n \"contents_url\" : \"https://web.example.mocklab.io/232267\",\n \"mirror_url\" : \"https://web.example.mocklab.io/952922\",\n \"milestones_url\" : \"https://web.example.mocklab.io/597856\",\n \"teams_url\" : \"https://web.example.mocklab.io/945009\",\n \"fork\" : false,\n \"issues_url\" : \"https://web.example.mocklab.io/481852\",\n \"events_url\" : \"https://web.example.mocklab.io/918830\",\n \"issue_events_url\" : \"https://web.example.mocklab.io/796834\",\n \"assignees_url\" : \"https://web.example.mocklab.io/571679\",\n \"watchers_count\" : 7333979561532271007,\n \"forks_count\" : 2527366407144131677,\n \"homepage\" : \"n7qsgph7gclnvlkvs6jl36lt\",\n \"node_id\" : \"6010\"\n },\n \"languages_url\" : \"http://api.github.com/repos/octocat/Hello-World/languages\",\n \"clone_url\" : \"https://github.com/octocat/Hello-World.git\",\n \"collaborators_url\" : \"http://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator}\",\n \"html_url\" : \"https://github.com/octocat/Hello-World\",\n \"name\" : \"Team Environment\",\n \"pulls_url\" : \"http://api.github.com/repos/octocat/Hello-World/pulls{/number}\",\n \"default_branch\" : \"master\",\n \"hooks_url\" : \"http://api.github.com/repos/octocat/Hello-World/hooks\",\n \"trees_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/trees{/sha}\",\n \"tags_url\" : \"http://api.github.com/repos/octocat/Hello-World/tags\",\n \"contributors_url\" : \"http://api.github.com/repos/octocat/Hello-World/contributors\",\n \"private\" : true,\n \"has_downloads\" : true,\n \"notifications_url\" : \"http://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating}\",\n \"open_issues_count\" : 0,\n \"created_at\" : \"2011-01-26T19:01:12Z\",\n \"description\" : \"This your first repo!\",\n \"watchers\" : 6353864657417044428,\n \"deployments_url\" : \"http://api.github.com/repos/octocat/Hello-World/deployments\",\n \"keys_url\" : \"http://api.github.com/repos/octocat/Hello-World/keys{/key_id}\",\n \"has_projects\" : true,\n \"archived\" : false,\n \"has_wiki\" : true,\n \"updated_at\" : \"2011-01-26T19:14:43Z\",\n \"comments_url\" : \"http://api.github.com/repos/octocat/Hello-World/comments{/number}\",\n \"stargazers_url\" : \"http://api.github.com/repos/octocat/Hello-World/stargazers\",\n \"disabled\" : false,\n \"delete_branch_on_merge\" : false,\n \"git_url\" : \"git:github.com/octocat/Hello-World.git\",\n \"has_pages\" : true,\n \"owner\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"An Feest\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"ffcnznriyyds9qwbx98mdnz4phhhz3gi7ujnew0cbr69jw937tdrshua37403zdbk88w6tmgr7b\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"allow_squash_merge\" : true,\n \"commits_url\" : \"http://api.github.com/repos/octocat/Hello-World/commits{/sha}\",\n \"compare_url\" : \"http://api.github.com/repos/octocat/Hello-World/compare/{base}...{head}\",\n \"git_commits_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/commits{/sha}\",\n \"topics\" : [ \"ing5d38gp4tvkuc9fj67ol5stt4te42ciyfalsnhzxwoxor8uxqp0rhjt8znwu8exu5oyf8rxdf7f1gyusbpuk4dumf876idnoijgvbiagu8vt8ayu170pu3kem5mjsz77a2fuanf1tie\", \"6mclanhmtj2zseakfaakaf5ti9pdsi39tzhwro8t4rur5c\" ],\n \"blobs_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/blobs{/sha}\",\n \"git_tags_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/tags{/sha}\",\n \"merges_url\" : \"http://api.github.com/repos/octocat/Hello-World/merges\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:42Z\\\"\",\n \"downloads_url\" : \"http://api.github.com/repos/octocat/Hello-World/downloads\",\n \"has_issues\" : true,\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World\",\n \"contents_url\" : \"http://api.github.com/repos/octocat/Hello-World/contents/{+path}\",\n \"mirror_url\" : \"git:git.example.com/octocat/Hello-World\",\n \"milestones_url\" : \"http://api.github.com/repos/octocat/Hello-World/milestones{/number}\",\n \"teams_url\" : \"http://api.github.com/repos/octocat/Hello-World/teams\",\n \"fork\" : true,\n \"issues_url\" : \"http://api.github.com/repos/octocat/Hello-World/issues{/number}\",\n \"events_url\" : \"http://api.github.com/repos/octocat/Hello-World/events\",\n \"issue_events_url\" : \"http://api.github.com/repos/octocat/Hello-World/issues/events{/number}\",\n \"organization\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Hobert Simonis\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"ibd6fe4y9en2876mqg42p5lvf1xaftg9hm242ijoxqzkifc8u3s7evngg82pbmdxehockn8u9g69p6pfe8t0nt0fftkll58oi9cju7sc06k9c560falpp8eawxr319gfwsl8i6dz3154qne2o75qwjlnec\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"assignees_url\" : \"http://api.github.com/repos/octocat/Hello-World/assignees{/user}\",\n \"open_issues\" : 5972275208523306174,\n \"watchers_count\" : 80,\n \"forks_count\" : 9,\n \"homepage\" : \"https://github.com\",\n \"node_id\" : \"MDEwOlJlcG9zaXRvcnkxMjk2MjY5\"\n },\n \"title\" : \"Found a bug\",\n \"author_association\" : \"OWNER\",\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347/labels{/name}\",\n \"number\" : 1347,\n \"performed_via_github_app\" : {\n \"owner\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Mrs. Harlan Wiza\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"2673xas6fkaghomp26cvbnxqv811cr376yi12nsxr2t49xrxxxq1abrvpi94p581bu2ncwhk52ssbouupz377z8658vux7tauaxgqz34anp55yhwofg4i13zh617bhtr63aljewoiq9qx1aob2pvfvtfufkzlfwfghsetbn49qtdmrpo9b\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"installations_count\" : 5,\n \"created_at\" : \"2017-07-08T16:18:44-04:00\",\n \"description\" : \"The description of the app.\",\n \"client_id\" : \"\\\"Iv1.25b5d1e65ffc4022\\\"\",\n \"external_url\" : \"https://example.com\",\n \"updated_at\" : \"2017-07-08T16:18:44-04:00\",\n \"permissions\" : {\n \"deployments\" : \"write\",\n \"issues\" : \"read\"\n },\n \"html_url\" : \"https://github.com/apps/super-ci\",\n \"name\" : \"Probot Owners\",\n \"pem\" : \"\\\"-----BEGIN RSA PRIVATE KEY-----\\\\nMIIEogIBAAKCAQEArYxrNYD/iT5CZVpRJu4rBKmmze3PVmT/gCo2ATUvDvZTPTey\\\\nxcGJ3vvrJXazKk06pN05TN29o98jrYz4cengG3YGsXPNEpKsIrEl8NhbnxapEnM9\\\\nJCMRe0P5JcPsfZlX6hmiT7136GRWiGOUba2X9+HKh8QJVLG5rM007TBER9/z9mWm\\\\nrJuNh+m5l320oBQY/Qq3A7wzdEfZw8qm/mIN0FCeoXH1L6B8xXWaAYBwhTEh6SSn\\\\nZHlO1Xu1JWDmAvBCi0RO5aRSKM8q9QEkvvHP4yweAtK3N8+aAbZ7ovaDhyGz8r6r\\\\nzhU1b8Uo0Z2ysf503WqzQgIajr7Fry7/kUwpgQIDAQABAoIBADwJp80Ko1xHPZDy\\\\nfcCKBDfIuPvkmSW6KumbsLMaQv1aGdHDwwTGv3t0ixSay8CGlxMRtRDyZPib6SvQ\\\\n6OH/lpfpbMdW2ErkksgtoIKBVrDilfrcAvrNZu7NxRNbhCSvN8q0s4ICecjbbVQh\\\\nnueSdlA6vGXbW58BHMq68uRbHkP+k+mM9U0mDJ1HMch67wlg5GbayVRt63H7R2+r\\\\nVxcna7B80J/lCEjIYZznawgiTvp3MSanTglqAYi+m1EcSsP14bJIB9vgaxS79kTu\\\\noiSo93leJbBvuGo8QEiUqTwMw4tDksmkLsoqNKQ1q9P7LZ9DGcujtPy4EZsamSJT\\\\ny8OJt0ECgYEA2lxOxJsQk2kI325JgKFjo92mQeUObIvPfSNWUIZQDTjniOI6Gv63\\\\nGLWVFrZcvQBWjMEQraJA9xjPbblV8PtfO87MiJGLWCHFxmPz2dzoedN+2Coxom8m\\\\nV95CLz8QUShuao6u/RYcvUaZEoYs5bHcTmy5sBK80JyEmafJPtCQVxMCgYEAy3ar\\\\nZr3yv4xRPEPMat4rseswmuMooSaK3SKub19WFI5IAtB/e7qR1Rj9JhOGcZz+OQrl\\\\nT78O2OFYlgOIkJPvRMrPpK5V9lslc7tz1FSh3BZMRGq5jSyD7ETSOQ0c8T2O/s7v\\\\nbeEPbVbDe4mwvM24XByH0GnWveVxaDl51ABD65sCgYB3ZAspUkOA5egVCh8kNpnd\\\\nSd6SnuQBE3ySRlT2WEnCwP9Ph6oPgn+oAfiPX4xbRqkL8q/k0BdHQ4h+zNwhk7+h\\\\nWtPYRAP1Xxnc/F+jGjb+DVaIaKGU18MWPg7f+FI6nampl3Q0KvfxwX0GdNhtio8T\\\\nTj1E+SnFwh56SRQuxSh2gwKBgHKjlIO5NtNSflsUYFM+hyQiPiqnHzddfhSG+/3o\\\\nm5nNaSmczJesUYreH5San7/YEy2UxAugvP7aSY2MxB+iGsiJ9WD2kZzTUlDZJ7RV\\\\nUzWsoqBR+eZfVJ2FUWWvy8TpSG6trh4dFxImNtKejCR1TREpSiTV3Zb1dmahK9GV\\\\nrK9NAoGAbBxRLoC01xfxCTgt5BDiBcFVh4fp5yYKwavJPLzHSpuDOrrI9jDn1oKN\\\\nonq5sDU1i391zfQvdrbX4Ova48BN+B7p63FocP/MK5tyyBoT8zQEk2+vWDOw7H/Z\\\\nu5dTCPxTIsoIwUw1I+7yIxqJzLPFgR2gVBwY1ra/8iAqCj+zeBw=\\\\n-----END RSA PRIVATE KEY-----\\\\n\\\"\",\n \"webhook_secret\" : \"\\\"6fba8f2fc8a7e8f2cca5577eddd82ca7586b3b6b\\\"\",\n \"client_secret\" : \"\\\"1d4b2097ac622ba702d19de498f005747a8b21d3\\\"\",\n \"id\" : 37,\n \"events\" : [ \"label\", \"deployment\" ],\n \"slug\" : \"probot-owners\",\n \"node_id\" : \"MDExOkludGVncmF0aW9uMQ==\"\n },\n \"updated_at\" : \"2011-04-22T13:33:48Z\",\n \"comments_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347/comments\",\n \"active_lock_reason\" : \"too heated\",\n \"id\" : 1,\n \"repository_url\" : \"https://api.github.com/repos/octocat/Hello-World\",\n \"state\" : \"open\",\n \"locked\" : true,\n \"timeline_url\" : \"https://web.example.mocklab.io/312066\",\n \"pull_request\" : {\n \"patch_url\" : \"https://web.example.mocklab.io/568541\",\n \"html_url\" : \"https://web.example.mocklab.io/353663\",\n \"merged_at\" : \"2023-01-04T04:44:36.212Z\",\n \"diff_url\" : \"https://web.example.mocklab.io/107218\",\n \"url\" : \"https://web.example.mocklab.io/693422\"\n },\n \"closed_at\" : \"2022-04-04T14:45:18.212Z\",\n \"comments\" : 0,\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347\",\n \"labels\" : [ {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n }, {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n }, {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n } ],\n \"milestone\" : {\n \"creator\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Ferdinand Feeney\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"whx797ou9uwjwc1uhd554efygr9tuxzt1vbg7dx182sxensyydx0ygxe1ztmzjkpq32u2fd7odq1gia1cq\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"closed_at\" : \"2013-02-12T13:22:01Z\",\n \"created_at\" : \"2011-04-10T20:09:31Z\",\n \"description\" : \"Tracking milestone for version 1.0\",\n \"closed_issues\" : 8,\n \"title\" : \"v1.0\",\n \"due_on\" : \"2012-10-09T23:39:01Z\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones/1\",\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones/1/labels\",\n \"number\" : 42,\n \"updated_at\" : \"2014-03-03T18:58:10Z\",\n \"html_url\" : \"https://github.com/octocat/Hello-World/milestones/v1.0\",\n \"id\" : 1002604,\n \"state\" : \"open\",\n \"open_issues\" : 4,\n \"node_id\" : \"MDk6TWlsZXN0b25lMTAwMjYwNA==\"\n },\n \"events_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347/events\",\n \"html_url\" : \"https://github.com/octocat/Hello-World/issues/1347\",\n \"assignee\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Bruno Kutch\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"66utsxg21x1nyx9r1lv5wq1ek1xctybk3z6wy91onfyeu61wgycuq3gpd6s4azhd6kxcedq5\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"user\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"claud.tremblay\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"4ny437va8\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"node_id\" : \"MDU6SXNzdWUx\"\n },\n \"action\" : \"kjctzmk70nzd1ae\",\n \"comment\" : {\n \"issue_url\" : \"https://web.example.mocklab.io/522418\",\n \"body_html\" : \"lzu2hp2dvxwo7hcw5c9ahgabe1oj8pc6s2g0mornm1f4ou4mbtymtoc0zle0b5\",\n \"body_text\" : \"g291u86802u1czqjdxb8ietbogig3zwttcbc73sucqn2kutwu6b2aib97v5xkjdanlbrvg7h7e9t4laj6s9icn5mmjmx4u\",\n \"created_at\" : \"2011-04-14T16:00:49Z\",\n \"body\" : \"What version of Safari were you using when you observed this bug?\",\n \"url\" : \"https://api.github.com/repositories/42/issues/comments/1\",\n \"author_association\" : \"OWNER\",\n \"performed_via_github_app\" : {\n \"owner\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Terry Kunde PhD\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"red\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"installations_count\" : 5,\n \"created_at\" : \"2017-07-08T16:18:44-04:00\",\n \"description\" : \"The description of the app.\",\n \"client_id\" : \"\\\"Iv1.25b5d1e65ffc4022\\\"\",\n \"external_url\" : \"https://example.com\",\n \"updated_at\" : \"2017-07-08T16:18:44-04:00\",\n \"permissions\" : {\n \"deployments\" : \"write\",\n \"issues\" : \"read\"\n },\n \"html_url\" : \"https://github.com/apps/super-ci\",\n \"name\" : \"Probot Owners\",\n \"pem\" : \"\\\"-----BEGIN RSA PRIVATE KEY-----\\\\nMIIEogIBAAKCAQEArYxrNYD/iT5CZVpRJu4rBKmmze3PVmT/gCo2ATUvDvZTPTey\\\\nxcGJ3vvrJXazKk06pN05TN29o98jrYz4cengG3YGsXPNEpKsIrEl8NhbnxapEnM9\\\\nJCMRe0P5JcPsfZlX6hmiT7136GRWiGOUba2X9+HKh8QJVLG5rM007TBER9/z9mWm\\\\nrJuNh+m5l320oBQY/Qq3A7wzdEfZw8qm/mIN0FCeoXH1L6B8xXWaAYBwhTEh6SSn\\\\nZHlO1Xu1JWDmAvBCi0RO5aRSKM8q9QEkvvHP4yweAtK3N8+aAbZ7ovaDhyGz8r6r\\\\nzhU1b8Uo0Z2ysf503WqzQgIajr7Fry7/kUwpgQIDAQABAoIBADwJp80Ko1xHPZDy\\\\nfcCKBDfIuPvkmSW6KumbsLMaQv1aGdHDwwTGv3t0ixSay8CGlxMRtRDyZPib6SvQ\\\\n6OH/lpfpbMdW2ErkksgtoIKBVrDilfrcAvrNZu7NxRNbhCSvN8q0s4ICecjbbVQh\\\\nnueSdlA6vGXbW58BHMq68uRbHkP+k+mM9U0mDJ1HMch67wlg5GbayVRt63H7R2+r\\\\nVxcna7B80J/lCEjIYZznawgiTvp3MSanTglqAYi+m1EcSsP14bJIB9vgaxS79kTu\\\\noiSo93leJbBvuGo8QEiUqTwMw4tDksmkLsoqNKQ1q9P7LZ9DGcujtPy4EZsamSJT\\\\ny8OJt0ECgYEA2lxOxJsQk2kI325JgKFjo92mQeUObIvPfSNWUIZQDTjniOI6Gv63\\\\nGLWVFrZcvQBWjMEQraJA9xjPbblV8PtfO87MiJGLWCHFxmPz2dzoedN+2Coxom8m\\\\nV95CLz8QUShuao6u/RYcvUaZEoYs5bHcTmy5sBK80JyEmafJPtCQVxMCgYEAy3ar\\\\nZr3yv4xRPEPMat4rseswmuMooSaK3SKub19WFI5IAtB/e7qR1Rj9JhOGcZz+OQrl\\\\nT78O2OFYlgOIkJPvRMrPpK5V9lslc7tz1FSh3BZMRGq5jSyD7ETSOQ0c8T2O/s7v\\\\nbeEPbVbDe4mwvM24XByH0GnWveVxaDl51ABD65sCgYB3ZAspUkOA5egVCh8kNpnd\\\\nSd6SnuQBE3ySRlT2WEnCwP9Ph6oPgn+oAfiPX4xbRqkL8q/k0BdHQ4h+zNwhk7+h\\\\nWtPYRAP1Xxnc/F+jGjb+DVaIaKGU18MWPg7f+FI6nampl3Q0KvfxwX0GdNhtio8T\\\\nTj1E+SnFwh56SRQuxSh2gwKBgHKjlIO5NtNSflsUYFM+hyQiPiqnHzddfhSG+/3o\\\\nm5nNaSmczJesUYreH5San7/YEy2UxAugvP7aSY2MxB+iGsiJ9WD2kZzTUlDZJ7RV\\\\nUzWsoqBR+eZfVJ2FUWWvy8TpSG6trh4dFxImNtKejCR1TREpSiTV3Zb1dmahK9GV\\\\nrK9NAoGAbBxRLoC01xfxCTgt5BDiBcFVh4fp5yYKwavJPLzHSpuDOrrI9jDn1oKN\\\\nonq5sDU1i391zfQvdrbX4Ova48BN+B7p63FocP/MK5tyyBoT8zQEk2+vWDOw7H/Z\\\\nu5dTCPxTIsoIwUw1I+7yIxqJzLPFgR2gVBwY1ra/8iAqCj+zeBw=\\\\n-----END RSA PRIVATE KEY-----\\\\n\\\"\",\n \"webhook_secret\" : \"\\\"6fba8f2fc8a7e8f2cca5577eddd82ca7586b3b6b\\\"\",\n \"client_secret\" : \"\\\"1d4b2097ac622ba702d19de498f005747a8b21d3\\\"\",\n \"id\" : 37,\n \"events\" : [ \"label\", \"deployment\" ],\n \"slug\" : \"probot-owners\",\n \"node_id\" : \"MDExOkludGVncmF0aW9uMQ==\"\n },\n \"updated_at\" : \"2011-04-14T16:00:49Z\",\n \"html_url\" : \"https://web.example.mocklab.io/118277\",\n \"reactions\" : {\n \"confused\" : 291613764766074981,\n \"-1\" : 8189646937811035969,\n \"+1\" : 7745431003864527771,\n \"total_count\" : 6576873755584986434,\n \"rocket\" : 168275688191300849,\n \"hooray\" : 4296729743446230466,\n \"eyes\" : 7623753740460841142,\n \"heart\" : 3192228623388801422,\n \"laugh\" : 7906342190955813253,\n \"url\" : \"https://web.example.mocklab.io/852631\"\n },\n \"id\" : 42,\n \"user\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"cole.mante\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"a3i9b481w7ydtusl6dqch80zzrqazdrskudgurra5lndmn1nvuk0eazlixk020foiwb6fdzrvxbqf60a7hidscdk0lw4ep7qwn3bndkjup66rhh5kpcvqzey0hg23n28po8n9rd6uvtnzvgljo6a5xdgcue6eyd\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"node_id\" : \"qskb\"\n }\n },\n \"repo\" : {\n \"name\" : \"Mrs. Nathaniel Predovic\",\n \"id\" : 4684267745703648284,\n \"url\" : \"https://web.example.mocklab.io/773794\"\n },\n \"created_at\" : \"2023-01-16T22:01:27.213Z\",\n \"id\" : \"9d2z\",\n \"type\" : \"ratqeps6dzcd1bjnesmf5tmc5zxc6d0fkc2suk23jp1jfgr76ggk2qwd7l0wc5d1enuyom5dypf9exh8i2cayz2a\"\n} ]", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "c87b5f80-f4b1-498b-abed-a7226045e3a1", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.214478Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "activity/list-events-for-authenticated-user", + "schema": { + "items": { + "$ref": "#/components/schemas/event" + }, + "type": "array" + } + } + } + }, + "insertionIndex": 28 + }, + { + "id": "b21c60f4-9c3b-4364-af6f-6dc1d2187af8", + "name": "Get a user", + "request": { + "urlPath": "/users/rupert.ullrich", + "method": "GET" + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/084410\",\n \"message\" : \"Qui id aut et. Magni fugiat nihil culpa. Quasi soluta sed et ex exercitationem officia error. Sit aliquid iusto ea provident. Vel quibusdam autem consequatur quia perspiciatis itaque velit.\",\n \"url\" : \"https://web.example.mocklab.io/377537\",\n \"status\" : \"cyi04qr7dud6qzabk4nnpdvtc9ilv513wucouhpp1lscdqgx4yioesjgbetzgg7vyw63spp2o27stb1isoe99zwcmginswzo52j4ujrfoe7xyrdcnktzb1hap6yhj1knya0fzn42f74\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "b21c60f4-9c3b-4364-af6f-6dc1d2187af8", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.168556Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "users/get-by-username", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 29 + }, + { + "id": "4f5d4de0-e846-4acb-9372-0cb538b95bb1", + "name": "Get a user", + "request": { + "urlPath": "/users/ian.kuhlman", + "method": "GET" + }, + "response": { + "status": 202, + "body": "{ }", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "4f5d4de0-e846-4acb-9372-0cb538b95bb1", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.168333Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "users/get-by-username", + "schema": { + "type": "object" + } + } + } + }, + "insertionIndex": 30 + }, + { + "id": "a35a5d78-955b-4677-8b24-f40d9d448dd0", + "name": "Get a user - response-with-git-hub-plan-information", + "request": { + "urlPath": "/users/sidney.little", + "method": "GET" + }, + "response": { + "status": 200, + "body": "{\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"bio\" : \"There once was...\",\n \"blog\" : \"https://github.com/blog\",\n \"company\" : \"GitHub\",\n \"created_at\" : \"2008-01-14T04:33:35Z\",\n \"email\" : \"octocat@github.com\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers\" : 20,\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following\" : 0,\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"hireable\" : false,\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"location\" : \"San Francisco\",\n \"login\" : \"octocat\",\n \"name\" : \"monalisa octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"plan\" : {\n \"collaborators\" : 0,\n \"name\" : \"pro\",\n \"private_repos\" : 9999,\n \"space\" : 976562499\n },\n \"public_gists\" : 1,\n \"public_repos\" : 2,\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"twitter_username\" : \"monatheoctocat\",\n \"type\" : \"User\",\n \"updated_at\" : \"2008-01-14T04:33:35Z\",\n \"url\" : \"https://api.github.com/users/octocat\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "a35a5d78-955b-4677-8b24-f40d9d448dd0", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.168279Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "users/get-by-username", + "schema": { + "oneOf": [ + { + "$ref": "#/components/schemas/private-user" + }, + { + "$ref": "#/components/schemas/public-user" + } + ] + } + } + } + }, + "insertionIndex": 31 + }, + { + "id": "858aa16c-54e2-4be6-bfbb-8a7f85d826a9", + "name": "Get a user - default-response", + "request": { + "urlPath": "/users/melonie.wuckert", + "method": "GET" + }, + "response": { + "status": 200, + "body": "{\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"bio\" : \"There once was...\",\n \"blog\" : \"https://github.com/blog\",\n \"company\" : \"GitHub\",\n \"created_at\" : \"2008-01-14T04:33:35Z\",\n \"email\" : \"octocat@github.com\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers\" : 20,\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following\" : 0,\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"hireable\" : false,\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"location\" : \"San Francisco\",\n \"login\" : \"octocat\",\n \"name\" : \"monalisa octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"public_gists\" : 1,\n \"public_repos\" : 2,\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"twitter_username\" : \"monatheoctocat\",\n \"type\" : \"User\",\n \"updated_at\" : \"2008-01-14T04:33:35Z\",\n \"url\" : \"https://api.github.com/users/octocat\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "858aa16c-54e2-4be6-bfbb-8a7f85d826a9", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.16823Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "users/get-by-username", + "schema": { + "oneOf": [ + { + "$ref": "#/components/schemas/private-user" + }, + { + "$ref": "#/components/schemas/public-user" + } + ] + } + } + } + }, + "insertionIndex": 32 + }, + { + "id": "69a7a72e-e5eb-4661-8d49-5a19b0329c78", + "name": "List users - 304", + "request": { + "urlPath": "/users", + "method": "GET" + }, + "response": { + "status": 304 + }, + "uuid": "69a7a72e-e5eb-4661-8d49-5a19b0329c78", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.168151Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "users/list" + } + } + }, + "insertionIndex": 33 + }, + { + "id": "61fa4bb9-7665-46b0-9d85-074370ae3be3", + "name": "List users (application/json) - default", + "request": { + "urlPath": "/users", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 200, + "body": "[ {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n} ]", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "61fa4bb9-7665-46b0-9d85-074370ae3be3", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.168129Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "users/list", + "schema": { + "items": { + "$ref": "#/components/schemas/simple-user" + }, + "type": "array" + } + } + } + }, + "insertionIndex": 34 + }, + { + "id": "d8e195a7-ff73-4d8d-86ca-2273896bc730", + "name": "List teams for the authenticated user (application/json)", + "request": { + "urlPath": "/user/teams", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/139207\",\n \"message\" : \"Aut cumque nulla ut aperiam provident. Ea molestiae consequuntur qui reiciendis. Debitis accusamus quo quia dolorum. Modi incidunt inventore. Ducimus ut est recusandae quia ipsa blanditiis.\",\n \"url\" : \"https://web.example.mocklab.io/365086\",\n \"status\" : \"2yxcq4svzb5pudl5quu74pgb0sgnteevem1tg63pwqfoljacv9s3btci775wak4mxc8uxpkr60b8\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "d8e195a7-ff73-4d8d-86ca-2273896bc730", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.168089Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "teams/list-for-authenticated-user", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 35 + }, + { + "id": "540b9183-9fee-40a9-a9c7-66b38a4d6478", + "name": "List teams for the authenticated user (application/json)", + "request": { + "urlPath": "/user/teams", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 403, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/650393\",\n \"message\" : \"Ullam aut aut repellat. Aperiam quia porro laudantium temporibus laudantium sit. Rerum tempore reiciendis. Repudiandae maiores aut sint distinctio. Odio delectus rerum qui.\",\n \"url\" : \"https://web.example.mocklab.io/167451\",\n \"status\" : \"5h0s04biwr4oil8vodzk4etoad0fg69vdmgxxorpbggjpdu5yop5gaqhlqva319pam2rpbi9axm9dsgplog6tcvoplylb9i3ub2010n15s3n0n1nkiak7p12is6yin8thr8vbru63oz8fl2ejupd7w7ziajz7zkjy84c8tg8wc9zjvu7js3\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "540b9183-9fee-40a9-a9c7-66b38a4d6478", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.167885Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "teams/list-for-authenticated-user", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 36 + }, + { + "id": "bd3f0185-2aa2-42c2-be57-fda85e7dd9e3", + "name": "List teams for the authenticated user - 304", + "request": { + "urlPath": "/user/teams", + "method": "GET" + }, + "response": { + "status": 304 + }, + "uuid": "bd3f0185-2aa2-42c2-be57-fda85e7dd9e3", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.167685Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "teams/list-for-authenticated-user" + } + } + }, + "insertionIndex": 37 + }, + { + "id": "49584ccc-7f88-4ff0-8f78-60b62c318c24", + "name": "List teams for the authenticated user (application/json) - default", + "request": { + "urlPath": "/user/teams", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 200, + "body": "[ {\n \"created_at\" : \"2017-07-14T16:53:42Z\",\n \"description\" : \"A great team.\",\n \"html_url\" : \"https://github.com/orgs/github/teams/justice-league\",\n \"id\" : 1,\n \"ldap_dn\" : \"uid=asdf,ou=users,dc=github,dc=com\",\n \"members_count\" : 3,\n \"members_url\" : \"https://api.github.com/teams/1/members{/member}\",\n \"name\" : \"Justice League\",\n \"node_id\" : \"MDQ6VGVhbTE=\",\n \"organization\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"blog\" : \"https://github.com/blog\",\n \"company\" : \"GitHub\",\n \"created_at\" : \"2008-01-14T04:33:35Z\",\n \"description\" : \"A great organization\",\n \"email\" : \"octocat@github.com\",\n \"events_url\" : \"https://api.github.com/orgs/github/events\",\n \"followers\" : 20,\n \"following\" : 0,\n \"has_organization_projects\" : true,\n \"has_repository_projects\" : true,\n \"hooks_url\" : \"https://api.github.com/orgs/github/hooks\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"issues_url\" : \"https://api.github.com/orgs/github/issues\",\n \"location\" : \"San Francisco\",\n \"login\" : \"github\",\n \"members_url\" : \"https://api.github.com/orgs/github/members{/member}\",\n \"name\" : \"github\",\n \"node_id\" : \"MDEyOk9yZ2FuaXphdGlvbjE=\",\n \"public_gists\" : 1,\n \"public_members_url\" : \"https://api.github.com/orgs/github/public_members{/member}\",\n \"public_repos\" : 2,\n \"repos_url\" : \"https://api.github.com/orgs/github/repos\",\n \"type\" : \"Organization\",\n \"url\" : \"https://api.github.com/orgs/github\"\n },\n \"permission\" : \"admin\",\n \"privacy\" : \"closed\",\n \"repos_count\" : 10,\n \"repositories_url\" : \"https://api.github.com/teams/1/repos\",\n \"slug\" : \"justice-league\",\n \"updated_at\" : \"2017-08-17T12:37:15Z\",\n \"url\" : \"https://api.github.com/teams/1\"\n} ]", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "49584ccc-7f88-4ff0-8f78-60b62c318c24", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.167662Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "teams/list-for-authenticated-user", + "schema": { + "items": { + "$ref": "#/components/schemas/team-full" + }, + "type": "array" + } + } + } + }, + "insertionIndex": 38 + }, + { + "id": "5b0b5bad-47dd-42d2-9e9c-a556df488125", + "name": "List repositories watched by the authenticated user (application/json)", + "request": { + "urlPath": "/user/subscriptions", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 403, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/525140\",\n \"message\" : \"Totam provident rerum reprehenderit sint necessitatibus. Minus quo deserunt sunt quibusdam iusto. Maiores est minima est ea. Esse sint rem repudiandae occaecati qui maiores ut. Rerum delectus sint bea\",\n \"url\" : \"https://web.example.mocklab.io/173972\",\n \"status\" : \"4segtrxvlomns7b17118gtkd4m6eo66hl4nn1ajjwza5l96pyrg5iqa0tmws3wf7byd2s3mb1d7xw1hexuit1vkyv3nbsfcczz7rkprvc7bkbk1c2fyowj99hr0m6algwnf1asdiv5801twuwk1enzpdd46x0mmqjyztfdsxf7v3dw9d5ywraik04w\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "5b0b5bad-47dd-42d2-9e9c-a556df488125", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.167619Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "activity/list-watched-repos-for-authenticated-user", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 39 + }, + { + "id": "46a00ce9-676d-4ad3-9698-67ce120ad76c", + "name": "List repositories watched by the authenticated user (application/json)", + "request": { + "urlPath": "/user/subscriptions", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 401, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/492279\",\n \"message\" : \"Sapiente est est autem exercitationem. Recusandae consequatur quaerat quia nihil aut esse esse. Corrupti adipisci rerum saepe. Doloremque omnis et. Quae repudiandae ad.\",\n \"url\" : \"https://web.example.mocklab.io/004924\",\n \"status\" : \"3wy4z5b7dnm6lc1evkg3r5bv2mebgqz5v6ofkdr2udjc8ipowvs73thtj4vnsdq0myfmw6qtzdpbjjxkr5mmr0bminvmi5wyinu9yps52b0bhndelmrvsbeutl286qr86xa5sp996yhtz15d0au726i0gr9mnm1q2gedvqlncsjcketym9n11cixl2grq8oz6\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "46a00ce9-676d-4ad3-9698-67ce120ad76c", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.167406Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "activity/list-watched-repos-for-authenticated-user", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 40 + }, + { + "id": "a326eab6-fee6-4f87-92fb-fd1f1bdcd51f", + "name": "List repositories watched by the authenticated user - 304", + "request": { + "urlPath": "/user/subscriptions", + "method": "GET" + }, + "response": { + "status": 304 + }, + "uuid": "a326eab6-fee6-4f87-92fb-fd1f1bdcd51f", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.167204Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "activity/list-watched-repos-for-authenticated-user" + } + } + }, + "insertionIndex": 41 + }, + { + "id": "a1c14512-f508-4f52-bb14-389c3b9bee14", + "name": "List repositories watched by the authenticated user (application/json) - default", + "request": { + "urlPath": "/user/subscriptions", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 200, + "body": "[ {\n \"archive_url\" : \"https://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref}\",\n \"archived\" : false,\n \"assignees_url\" : \"https://api.github.com/repos/octocat/Hello-World/assignees{/user}\",\n \"blobs_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/blobs{/sha}\",\n \"branches_url\" : \"https://api.github.com/repos/octocat/Hello-World/branches{/branch}\",\n \"clone_url\" : \"https://github.com/octocat/Hello-World.git\",\n \"collaborators_url\" : \"https://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator}\",\n \"comments_url\" : \"https://api.github.com/repos/octocat/Hello-World/comments{/number}\",\n \"commits_url\" : \"https://api.github.com/repos/octocat/Hello-World/commits{/sha}\",\n \"compare_url\" : \"https://api.github.com/repos/octocat/Hello-World/compare/{base}...{head}\",\n \"contents_url\" : \"https://api.github.com/repos/octocat/Hello-World/contents/{+path}\",\n \"contributors_url\" : \"https://api.github.com/repos/octocat/Hello-World/contributors\",\n \"created_at\" : \"2011-01-26T19:01:12Z\",\n \"default_branch\" : \"master\",\n \"deployments_url\" : \"https://api.github.com/repos/octocat/Hello-World/deployments\",\n \"description\" : \"This your first repo!\",\n \"disabled\" : false,\n \"downloads_url\" : \"https://api.github.com/repos/octocat/Hello-World/downloads\",\n \"events_url\" : \"https://api.github.com/repos/octocat/Hello-World/events\",\n \"fork\" : false,\n \"forks_count\" : 9,\n \"forks_url\" : \"https://api.github.com/repos/octocat/Hello-World/forks\",\n \"full_name\" : \"octocat/Hello-World\",\n \"git_commits_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/commits{/sha}\",\n \"git_refs_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/refs{/sha}\",\n \"git_tags_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/tags{/sha}\",\n \"git_url\" : \"git:github.com/octocat/Hello-World.git\",\n \"has_downloads\" : true,\n \"has_issues\" : true,\n \"has_pages\" : false,\n \"has_projects\" : true,\n \"has_wiki\" : true,\n \"homepage\" : \"https://github.com\",\n \"hooks_url\" : \"https://api.github.com/repos/octocat/Hello-World/hooks\",\n \"html_url\" : \"https://github.com/octocat/Hello-World\",\n \"id\" : 1296269,\n \"is_template\" : false,\n \"issue_comment_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/comments{/number}\",\n \"issue_events_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/events{/number}\",\n \"issues_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues{/number}\",\n \"keys_url\" : \"https://api.github.com/repos/octocat/Hello-World/keys{/key_id}\",\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World/labels{/name}\",\n \"languages_url\" : \"https://api.github.com/repos/octocat/Hello-World/languages\",\n \"merges_url\" : \"https://api.github.com/repos/octocat/Hello-World/merges\",\n \"milestones_url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones{/number}\",\n \"mirror_url\" : \"git:git.example.com/octocat/Hello-World\",\n \"name\" : \"Hello-World\",\n \"node_id\" : \"MDEwOlJlcG9zaXRvcnkxMjk2MjY5\",\n \"notifications_url\" : \"https://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating}\",\n \"open_issues_count\" : 0,\n \"owner\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"permissions\" : {\n \"admin\" : false,\n \"pull\" : true,\n \"push\" : false\n },\n \"private\" : false,\n \"pulls_url\" : \"https://api.github.com/repos/octocat/Hello-World/pulls{/number}\",\n \"pushed_at\" : \"2011-01-26T19:06:43Z\",\n \"releases_url\" : \"https://api.github.com/repos/octocat/Hello-World/releases{/id}\",\n \"size\" : 108,\n \"ssh_url\" : \"git@github.com:octocat/Hello-World.git\",\n \"stargazers_count\" : 80,\n \"stargazers_url\" : \"https://api.github.com/repos/octocat/Hello-World/stargazers\",\n \"statuses_url\" : \"https://api.github.com/repos/octocat/Hello-World/statuses/{sha}\",\n \"subscribers_url\" : \"https://api.github.com/repos/octocat/Hello-World/subscribers\",\n \"subscription_url\" : \"https://api.github.com/repos/octocat/Hello-World/subscription\",\n \"svn_url\" : \"https://svn.github.com/octocat/Hello-World\",\n \"tags_url\" : \"https://api.github.com/repos/octocat/Hello-World/tags\",\n \"teams_url\" : \"https://api.github.com/repos/octocat/Hello-World/teams\",\n \"template_repository\" : {\n \"allow_merge_commit\" : true,\n \"allow_rebase_merge\" : true,\n \"allow_squash_merge\" : true,\n \"archive_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/{archive_format}{/ref}\",\n \"archived\" : false,\n \"assignees_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/assignees{/user}\",\n \"blobs_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/git/blobs{/sha}\",\n \"branches_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/branches{/branch}\",\n \"clone_url\" : \"https://github.com/octocat/Hello-World-Template.git\",\n \"collaborators_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/collaborators{/collaborator}\",\n \"comments_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/comments{/number}\",\n \"commits_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/commits{/sha}\",\n \"compare_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/compare/{base}...{head}\",\n \"contents_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/contents/{+path}\",\n \"contributors_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/contributors\",\n \"created_at\" : \"2011-01-26T19:01:12Z\",\n \"default_branch\" : \"master\",\n \"delete_branch_on_merge\" : true,\n \"deployments_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/deployments\",\n \"description\" : \"This your first repo!\",\n \"disabled\" : false,\n \"downloads_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/downloads\",\n \"events_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/events\",\n \"fork\" : false,\n \"forks\" : 9,\n \"forks_count\" : 9,\n \"forks_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/forks\",\n \"full_name\" : \"octocat/Hello-World-Template\",\n \"git_commits_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/git/commits{/sha}\",\n \"git_refs_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/git/refs{/sha}\",\n \"git_tags_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/git/tags{/sha}\",\n \"git_url\" : \"git:github.com/octocat/Hello-World-Template.git\",\n \"has_downloads\" : true,\n \"has_issues\" : true,\n \"has_pages\" : false,\n \"has_projects\" : true,\n \"has_wiki\" : true,\n \"homepage\" : \"https://github.com\",\n \"hooks_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/hooks\",\n \"html_url\" : \"https://github.com/octocat/Hello-World-Template\",\n \"id\" : 1296269,\n \"is_template\" : true,\n \"issue_comment_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/issues/comments{/number}\",\n \"issue_events_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/issues/events{/number}\",\n \"issues_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/issues{/number}\",\n \"keys_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/keys{/key_id}\",\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/labels{/name}\",\n \"languages_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/languages\",\n \"license\" : {\n \"html_url\" : \"https://api.github.com/licenses/mit\",\n \"key\" : \"mit\",\n \"name\" : \"MIT License\",\n \"node_id\" : \"MDc6TGljZW5zZW1pdA==\",\n \"spdx_id\" : \"MIT\",\n \"url\" : \"https://api.github.com/licenses/mit\"\n },\n \"merges_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/merges\",\n \"milestones_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/milestones{/number}\",\n \"mirror_url\" : \"git:git.example.com/octocat/Hello-World-Template\",\n \"name\" : \"Hello-World-Template\",\n \"network_count\" : 0,\n \"node_id\" : \"MDEwOlJlcG9zaXRvcnkxMjk2MjY5\",\n \"notifications_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/notifications{?since,all,participating}\",\n \"open_issues\" : 0,\n \"open_issues_count\" : 0,\n \"owner\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"permissions\" : {\n \"admin\" : false,\n \"pull\" : true,\n \"push\" : false\n },\n \"private\" : false,\n \"pulls_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/pulls{/number}\",\n \"pushed_at\" : \"2011-01-26T19:06:43Z\",\n \"releases_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/releases{/id}\",\n \"size\" : 108,\n \"ssh_url\" : \"git@github.com:octocat/Hello-World-Template.git\",\n \"stargazers_count\" : 80,\n \"stargazers_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/stargazers\",\n \"statuses_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/statuses/{sha}\",\n \"subscribers_count\" : 42,\n \"subscribers_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/subscribers\",\n \"subscription_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/subscription\",\n \"svn_url\" : \"https://svn.github.com/octocat/Hello-World-Template\",\n \"tags_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/tags\",\n \"teams_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/teams\",\n \"temp_clone_token\" : \"ABTLWHOULUVAXGTRYU7OC2876QJ2O\",\n \"topics\" : [ \"octocat\", \"atom\", \"electron\", \"api\" ],\n \"trees_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/git/trees{/sha}\",\n \"updated_at\" : \"2011-01-26T19:14:43Z\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World-Template\",\n \"visibility\" : \"public\",\n \"watchers\" : 80,\n \"watchers_count\" : 80\n },\n \"topics\" : [ \"octocat\", \"atom\", \"electron\", \"api\" ],\n \"trees_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/trees{/sha}\",\n \"updated_at\" : \"2011-01-26T19:14:43Z\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World\",\n \"visibility\" : \"public\",\n \"watchers_count\" : 80\n} ]", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "a1c14512-f508-4f52-bb14-389c3b9bee14", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.16718Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "activity/list-watched-repos-for-authenticated-user", + "schema": { + "items": { + "$ref": "#/components/schemas/minimal-repository" + }, + "type": "array" + } + } + } + }, + "insertionIndex": 42 + }, + { + "id": "64492e52-7098-4b80-90fd-a185753ebaa7", + "name": "Star a repository for the authenticated user (application/json)", + "request": { + "urlPath": "/user/starred/jcx0dblz2ahq1i6zibdwvo0ztnk14y2ampx6nbeajwsw5ojclcggciubb38ne6b0slj2pf7f76azqih87b7pk1fb2gpj7k008jkl47sbjcg8ptahln6i2yjrnkkgl1pi25j5jqnhxqoty1w58nu3o4ph11wiqhl9e2lc7lfrboppopcketml7ofj3/sna9fcrh680j5zmno8jmtvcttgflbhojckannz43ximahle26b0vld6yiiirslufx85dh5os2k8qwvvkjru7detvcijvaq20fczzgwiulr4rukvqrwk4qwl8ymd6ssfrfwvdeq87q715mkb2zfnfhmaigfxbojz37gem59xjm0dguk4jecbxttc", + "method": "PUT", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/066824\",\n \"message\" : \"Aut accusamus sunt quaerat architecto iste. Unde et dignissimos molestiae dolores. Ullam nisi aliquid suscipit officia cupiditate nisi.\",\n \"url\" : \"https://web.example.mocklab.io/565261\",\n \"status\" : \"1vg12e9w7bp9hkmaevt1sb3gfci8eq03eqic3ngtggdzuvznwfxy275boy9o7kxyk7ob889v7gx7w66pi720e5m9menoqtolif5ao3otwdtgyxc5eswd34j174yfk7bbeq25jqk47hta4ohm2x0sy88zdzwt4k2xqzl1i4affpp9bklacsskixs0\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "64492e52-7098-4b80-90fd-a185753ebaa7", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.167113Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "activity/star-repo-for-authenticated-user", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 43 + }, + { + "id": "d413f2de-44c0-430a-8fdb-0b0b0d849455", + "name": "Star a repository for the authenticated user (application/json)", + "request": { + "urlPath": "/user/starred/ulkyvnqobizr07s6319fw5nxiiz2zsq8tjt045/j3w43yvs8thrm88clun71o7jrbyel7qg9pb2q95mmdd7ghtqi3r", + "method": "PUT", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 403, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/896110\",\n \"message\" : \"Sit est perspiciatis in quibusdam eius dolor. Reiciendis praesentium sed hic ut quia blanditiis. Mollitia nemo quasi architecto. Tenetur repudiandae quidem ad.\",\n \"url\" : \"https://web.example.mocklab.io/643613\",\n \"status\" : \"gld9v4ilyud7zfk4e7v5dlkqmrtpl8jgt\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "d413f2de-44c0-430a-8fdb-0b0b0d849455", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.166886Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "activity/star-repo-for-authenticated-user", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 44 + }, + { + "id": "6e0382a8-d88a-4277-9f82-97a9d76ba9d7", + "name": "Star a repository for the authenticated user (application/json)", + "request": { + "urlPath": "/user/starred/lk36h/xr2ys91yt359590wqqyl2d12564hwziboy54webqxcuwgwsslmrgjjo9r65tvfde4royff1a6vwn7j0rnvah14ghwwyfb63w9kwy6rtk1tt16jxk31kp0qq3lwnuypwb61hwr0pmt0rn90m0qlx3du22i3k4jyadw5bucstnzg85l7okgm1qm8i", + "method": "PUT", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 401, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/722355\",\n \"message\" : \"Eveniet est sunt molestiae velit quidem. Optio minus repellat enim fuga consequatur sed. Est labore temporibus natus est eligendi pariatur tenetur.\",\n \"url\" : \"https://web.example.mocklab.io/261827\",\n \"status\" : \"2u8jjcup2tqngdzi02jfuu4r4fb6oetjbunym5emoetp0dj3139306wul9z5dugmkppns5vn45j3vddhwcmnaue6wnc3gv6r\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "6e0382a8-d88a-4277-9f82-97a9d76ba9d7", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.166663Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "activity/star-repo-for-authenticated-user", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 45 + }, + { + "id": "593fc042-8dd5-49a9-89d1-a1cd012cc3a1", + "name": "Star a repository for the authenticated user - 304", + "request": { + "urlPath": "/user/starred/cp6gliwusmb10cu2c3e8indtrufffw3l47mdadbo2c1u78m4jv9pb9kojfcstnt5w3xfpnuihktx2u71daah9ubqf0ghxt9yxz5ye5f1qfu5pmb6tpavjvcjetz1ntvul9eke5gxg7lanmj/gkhk4slz66xftxk5o4vgoa1xz9eu0o3izwlzfdvy1eow4ymv6byz2dojalan9gtrzzwcast", + "method": "PUT" + }, + "response": { + "status": 304 + }, + "uuid": "593fc042-8dd5-49a9-89d1-a1cd012cc3a1", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.16644Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "activity/star-repo-for-authenticated-user" + } + } + }, + "insertionIndex": 46 + }, + { + "id": "b92e5fa6-67f7-453e-8e2b-fcf013673e42", + "name": "Star a repository for the authenticated user - 204", + "request": { + "urlPath": "/user/starred/uo8j63p9qrzeebqcu95n25njfo1kmduqmyufkix5t2qr5ykqlz31v3wolhqbtanc5lg56clrjfgcouvsmrucyiz89veoaq1eo4lu09bufq9x4fe8wjlpk774sw73vkqsedcn/rx3emt9n2xkh0et7rjioip8uyegubqb924dj77ybx8o9z55t6xedtjgmkkbs28ti29qyugrnfvv5os2697xujlnujt4j1lvppe13hx1t4uvo60u4sndckqdv0vyz84pepeje92k215lfu8ndr36aw7ex5gilbyn9gcr8tyct44zxc0eqj970mb", + "method": "PUT" + }, + "response": { + "status": 204 + }, + "uuid": "b92e5fa6-67f7-453e-8e2b-fcf013673e42", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.166403Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "activity/star-repo-for-authenticated-user" + } + } + }, + "insertionIndex": 47 + }, + { + "id": "0a3f1549-7d68-46ea-aed0-e611152ea73f", + "name": "Check if a repository is starred by the authenticated user (application/json)", + "request": { + "urlPath": "/user/starred/srwq8wtddyxna/na0yehwcl2pefug0utvgndmqjg1852i6kmykt4vj3pi21jyxcr15voicxy94344r1lyl7pept8yv3j9jdisnzftvd6uqyw6erddxecargd13xyjtkh373zz0pmcya0vkobt8s96ohpr8xdx4kzaboj7eb", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/806569\",\n \"message\" : \"Nihil asperiores earum sit sunt ut asperiores velit. Autem est illo laboriosam. Architecto tempora culpa aut iure sunt inventore molestias.\",\n \"url\" : \"https://web.example.mocklab.io/797096\",\n \"status\" : \"hu9dw3yka2biuc5wp3jggzxbp966g2cq9xjeg6pjhat8q42tujb77v9u02dl6rof9xl7vynvdtcny6qox51cnly4yri5toit1zkt1ccoep97dk7p3bdb4wrgjbovtim65xbfxcz5gfwoon3vaz08pea\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "0a3f1549-7d68-46ea-aed0-e611152ea73f", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.166353Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "activity/check-repo-is-starred-by-authenticated-user", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 48 + }, + { + "id": "caa7dea4-3846-438f-a975-c825b7c22d60", + "name": "Check if a repository is starred by the authenticated user (application/json)", + "request": { + "urlPath": "/user/starred/i4fopg/b5u2pivr8ildygsk8r1mmfjx5zclar7555hjs", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 403, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/288967\",\n \"message\" : \"Laborum optio adipisci. Et quae impedit. Odit ipsa odio modi a officiis. Quia est reiciendis incidunt neque quia.\",\n \"url\" : \"https://web.example.mocklab.io/392023\",\n \"status\" : \"qzw8cywhwdqsralx\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "caa7dea4-3846-438f-a975-c825b7c22d60", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.166131Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "activity/check-repo-is-starred-by-authenticated-user", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 49 + }, + { + "id": "c5c2706e-fc67-4f4c-a48b-e8cfb4e53c22", + "name": "Check if a repository is starred by the authenticated user (application/json)", + "request": { + "urlPath": "/user/starred/h3s6i2fk1px255qoe8av0j9uknp562gn9pej35snle32zk8p4539cp1jjia8bzlcebgzyqic3tpmnsw3t/3ot75zalwa5pejyii5azwzwo1oo9nm2zt16etztvsui7g20c519yx", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 401, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/488821\",\n \"message\" : \"Accusantium doloribus temporibus rerum sequi est occaecati. Nihil id quasi architecto dolorem quia aperiam. Quis quia iure architecto.\",\n \"url\" : \"https://web.example.mocklab.io/983851\",\n \"status\" : \"mx978mo2ac3s26jgpqnszvejdh9nvbubqv9ie4496xe4tqhoduk67cwo1qf58zzvj4l7t4ie7a0gy0u7ft98m3z1hsl7p06dswok9hm4q6wngcyjwamwkqteg4xoiklq5m3nyr0cqj3u9v1jzfu0c8gmm5cj3tlgarhav2w\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "c5c2706e-fc67-4f4c-a48b-e8cfb4e53c22", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.165911Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "activity/check-repo-is-starred-by-authenticated-user", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 50 + }, + { + "id": "3a5b5948-683c-47f2-9064-8d318734987d", + "name": "Check if a repository is starred by the authenticated user - 304", + "request": { + "urlPath": "/user/starred/n2d05bdumag28jitc1exohb0mlu2n4v34cmm/f0uduqiv0q5j848lz8razhowzbjl3eb9mysdntttggi9yre49wyyxj9o77xq1dxdpm5", + "method": "GET" + }, + "response": { + "status": 304 + }, + "uuid": "3a5b5948-683c-47f2-9064-8d318734987d", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.165697Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "activity/check-repo-is-starred-by-authenticated-user" + } + } + }, + "insertionIndex": 51 + }, + { + "id": "d26b6e16-1829-42dd-8d95-49972d61cdd6", + "name": "Check if a repository is starred by the authenticated user - 204", + "request": { + "urlPath": "/user/starred/ngumjzq797rmmaopxmy1rn9xvtbmbngcpwxw7mf/lbl9016q91l8dcp51is0kj40o8uthjxusney8rflcunc0u7iy6n388h5g0z1tzofakk4i1duem3iu45xml6z5c5i5wsgr1xe6v493ndxygm8039k2okqzm2k31xeyyie0zpxyx72q8jep3gy", + "method": "GET" + }, + "response": { + "status": 204 + }, + "uuid": "d26b6e16-1829-42dd-8d95-49972d61cdd6", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.165662Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "activity/check-repo-is-starred-by-authenticated-user" + } + } + }, + "insertionIndex": 52 + }, + { + "id": "05d488ef-6cc2-4bd3-b13f-1f5e3a192c33", + "name": "Unstar a repository for the authenticated user (application/json)", + "request": { + "urlPath": "/user/starred/h2bhuzutvi1ncxxqle5mlsxzbjim6x8xgouyn8pxhxomemhzo5dovzpivkmmbojtc15prlojw4t1w0c8ad5q6onpqz5cvagfw6afeeypcl47qzwd6zrxmqj2lxd787sc1evokowiblhxgi9ad6xtfz78kq4xgnqvziq3yhoaf7kfmn/9yl1q8wrz5swqevyojxqdi9y0py65mb1nkcdm4zu1k83c1x4dbmj951a4iereshk4d0mjv5wom1cxr0tcl5x29dvzug6o0w41ko5bhlwnv74q2a1krqq2yyb0mm90m9x2qzipf3qvk9bhsvtud9gj0rs", + "method": "DELETE", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/293542\",\n \"message\" : \"Itaque molestias unde officiis quia quaerat natus nisi. Soluta quo maiores iste eligendi. Quod ut laudantium delectus sed. Voluptas velit deleniti.\",\n \"url\" : \"https://web.example.mocklab.io/697263\",\n \"status\" : \"50bgzrtwz9mxugbdkd9t3ewj78aval3gyou7yc6yi4zen4sj359d131824za5tji4xphkah86dx04e8uctj70rnxs8khxj57asskd67zrohopb0jc3cosvjglrzivo0d8z03csoj9tqgxycdm88yk7jxu7y\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "05d488ef-6cc2-4bd3-b13f-1f5e3a192c33", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.165616Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "activity/unstar-repo-for-authenticated-user", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 53 + }, + { + "id": "5ebb02cf-8155-4351-93d1-0015f46e430d", + "name": "Unstar a repository for the authenticated user (application/json)", + "request": { + "urlPath": "/user/starred/seeytcq9fqfydcuir4qf2v2pvpp8an50x4n9eltx8y6m2jih08ax11b62xsbn93/k5qzvb9xi2b438edp1s5xk9xlinypauwq0yl7iol", + "method": "DELETE", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 403, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/440757\",\n \"message\" : \"Earum dolorem sit aperiam repellat qui. Iusto blanditiis ipsa delectus. Quis a in. Odio ut maiores totam ipsum dignissimos.\",\n \"url\" : \"https://web.example.mocklab.io/247723\",\n \"status\" : \"pkis3x21hllu1qfmvs8gxki0ugytq7rs7mb3p8k7flvvkljwhsd2y24iy88t9c43jk4m9fe1wh53zl9ucab0vh056v4t53cxhwgqdgprog8lysswzjm8iumdg23db0jpu4objdzzkg8ksg43ervnx81nu14xzzhfls0aw95j7ujibgt2e2yp9bn6vb7xlgyce2es0sgz\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "5ebb02cf-8155-4351-93d1-0015f46e430d", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.165388Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "activity/unstar-repo-for-authenticated-user", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 54 + }, + { + "id": "fe4e672f-2816-47d4-8042-3f53f8dd3ebf", + "name": "Unstar a repository for the authenticated user (application/json)", + "request": { + "urlPath": "/user/starred/lh16ob0yh21az3h39yoh8quei91pg7yzsw/vd725y8vlky11qdfb6fprmcoa5tdnmrobiakq2tyamkyslthuxpg6m2pef6ihs37rsbhxgcxndhbz7jxeum7ni8xwgsbas9l5uaw4ceafx1am9lvvarbhrevvjvic94vpg2tuuir6ab5dum2cr8ivkpggmual4gpgdw967", + "method": "DELETE", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 401, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/784566\",\n \"message\" : \"Quia quidem animi. Molestias libero quo impedit natus fugit quas. Et velit excepturi. Amet adipisci porro modi recusandae et sed.\",\n \"url\" : \"https://web.example.mocklab.io/052186\",\n \"status\" : \"88palfm97b9j68qbkg9rxw073y2k9ftynln4zh9c7i54kiebsmuekmctb04qflgydqk49sqghfdw7dthirowofr80w3h6f3slv4ptjcfhhgeh71jby6lhqhbfs3kwdaugoyc8gonu87neqojef527\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "fe4e672f-2816-47d4-8042-3f53f8dd3ebf", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.165161Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "activity/unstar-repo-for-authenticated-user", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 55 + }, + { + "id": "f18e23f2-bd15-4fc5-88ee-44403ee48de6", + "name": "Unstar a repository for the authenticated user - 304", + "request": { + "urlPath": "/user/starred/ysrfur4eaqjwjn4ekp49w2y45l1vh4oq88wcxss9mtxvo9kusf80zuc04ciqjgvdjdvtuyq8l21wjvner08m2h7fbwnqtesj7718ja73i5pflianoo/49atnl54av3firhfsgncts5lwsi03g6qzjnzuhtx8qsnutw3a9nh70zza5q17we8hp7gh9xg27w3zrblma0fwl10ar4tu15vole4otgcdulnhl2qjdl67sqk8gjao66bdlnffsyagfcgv4u16wcfz435x9h258a3n7gifmk6kdcsb4ejv1j", + "method": "DELETE" + }, + "response": { + "status": 304 + }, + "uuid": "f18e23f2-bd15-4fc5-88ee-44403ee48de6", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.16494Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "activity/unstar-repo-for-authenticated-user" + } + } + }, + "insertionIndex": 56 + }, + { + "id": "de538404-1c57-474a-b42e-d1d010e6f0f2", + "name": "Unstar a repository for the authenticated user - 204", + "request": { + "urlPath": "/user/starred/4i0nhhol07gsw6kq3atw9v8kh4q8forym31r5a4zh0cul43530pwnd6tqu071bmccb61qxmb3wh3aq9novk957pdaax71hozel61awnt6snbt0q53isx8vl6hi1chwec/ndf2eyvntjyspv", + "method": "DELETE" + }, + "response": { + "status": 204 + }, + "uuid": "de538404-1c57-474a-b42e-d1d010e6f0f2", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.164902Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "activity/unstar-repo-for-authenticated-user" + } + } + }, + "insertionIndex": 57 + }, + { + "id": "7f82adc7-7de7-4004-bfa6-aca44cff6043", + "name": "List repositories starred by the authenticated user (application/json)", + "request": { + "urlPath": "/user/starred", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 403, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/785172\",\n \"message\" : \"Sit soluta voluptatem itaque itaque. Sint quia fuga in recusandae ad nulla. Ut et sint molestiae deserunt cumque ut distinctio. Voluptatem voluptate ut possimus illo enim omnis consequatur.\",\n \"url\" : \"https://web.example.mocklab.io/511872\",\n \"status\" : \"kv55ubzo0aku367dwomd1gt3v5f893d4ol6onvhrn43e02c1271zui8o9v7a78k1i7q76x645gd0kldohs0gb18awhtzuixjisxurliwy47e7jnjui36dctp3por65kvmhux1w9aclg\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "7f82adc7-7de7-4004-bfa6-aca44cff6043", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.164851Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "activity/list-repos-starred-by-authenticated-user", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 58 + }, + { + "id": "cf3d6441-b056-422f-807e-c2ad88fb6d67", + "name": "List repositories starred by the authenticated user (application/json)", + "request": { + "urlPath": "/user/starred", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 401, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/055511\",\n \"message\" : \"Delectus ea velit provident placeat assumenda autem dolores. Id omnis voluptatum. Minima cum dolorum blanditiis eius magnam quaerat.\",\n \"url\" : \"https://web.example.mocklab.io/179280\",\n \"status\" : \"fbmq5r6hpvlofeby9yg2kxhzqo2uj8nl9ehdzpwbns6v3xflp2xdcfrrvlhwu9f4o485ysz428k09qd8oyz2vrknjew18ufgj4i0uyiscvf1c0svlyf2d5zzm8p9eeymrxswnt2fuxzo6b01xewz\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "cf3d6441-b056-422f-807e-c2ad88fb6d67", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.164642Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "activity/list-repos-starred-by-authenticated-user", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 59 + }, + { + "id": "286a5329-4cef-4991-8a80-e8eb7f7ff9f4", + "name": "List repositories starred by the authenticated user - 304", + "request": { + "urlPath": "/user/starred", + "method": "GET" + }, + "response": { + "status": 304 + }, + "uuid": "286a5329-4cef-4991-8a80-e8eb7f7ff9f4", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.164444Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "activity/list-repos-starred-by-authenticated-user" + } + } + }, + "insertionIndex": 60 + }, + { + "id": "5b69a66f-c5ca-467a-b986-10da487b2bae", + "name": "List repositories starred by the authenticated user (application/vnd.github.v3.star+json) - alternative-response-with-star-creation-timestamps", + "request": { + "urlPath": "/user/starred", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/vnd.github.v3.star+json" + } + } + }, + "response": { + "status": 200, + "body": "[ {\n \"repo\" : {\n \"allow_merge_commit\" : true,\n \"allow_rebase_merge\" : true,\n \"allow_squash_merge\" : true,\n \"anonymous_access_enabled\" : false,\n \"archive_url\" : \"https://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref}\",\n \"archived\" : false,\n \"assignees_url\" : \"https://api.github.com/repos/octocat/Hello-World/assignees{/user}\",\n \"blobs_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/blobs{/sha}\",\n \"branches_url\" : \"https://api.github.com/repos/octocat/Hello-World/branches{/branch}\",\n \"clone_url\" : \"https://github.com/octocat/Hello-World.git\",\n \"collaborators_url\" : \"https://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator}\",\n \"comments_url\" : \"https://api.github.com/repos/octocat/Hello-World/comments{/number}\",\n \"commits_url\" : \"https://api.github.com/repos/octocat/Hello-World/commits{/sha}\",\n \"compare_url\" : \"https://api.github.com/repos/octocat/Hello-World/compare/{base}...{head}\",\n \"contents_url\" : \"https://api.github.com/repos/octocat/Hello-World/contents/{+path}\",\n \"contributors_url\" : \"https://api.github.com/repos/octocat/Hello-World/contributors\",\n \"created_at\" : \"2011-01-26T19:01:12Z\",\n \"default_branch\" : \"master\",\n \"delete_branch_on_merge\" : true,\n \"deployments_url\" : \"https://api.github.com/repos/octocat/Hello-World/deployments\",\n \"description\" : \"This your first repo!\",\n \"disabled\" : false,\n \"downloads_url\" : \"https://api.github.com/repos/octocat/Hello-World/downloads\",\n \"events_url\" : \"https://api.github.com/repos/octocat/Hello-World/events\",\n \"fork\" : false,\n \"forks_count\" : 9,\n \"forks_url\" : \"https://api.github.com/repos/octocat/Hello-World/forks\",\n \"full_name\" : \"octocat/Hello-World\",\n \"git_commits_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/commits{/sha}\",\n \"git_refs_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/refs{/sha}\",\n \"git_tags_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/tags{/sha}\",\n \"git_url\" : \"git:github.com/octocat/Hello-World.git\",\n \"has_downloads\" : true,\n \"has_issues\" : true,\n \"has_pages\" : false,\n \"has_projects\" : true,\n \"has_wiki\" : true,\n \"homepage\" : \"https://github.com\",\n \"hooks_url\" : \"https://api.github.com/repos/octocat/Hello-World/hooks\",\n \"html_url\" : \"https://github.com/octocat/Hello-World\",\n \"id\" : 1296269,\n \"is_template\" : true,\n \"issue_comment_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/comments{/number}\",\n \"issue_events_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/events{/number}\",\n \"issues_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues{/number}\",\n \"keys_url\" : \"https://api.github.com/repos/octocat/Hello-World/keys{/key_id}\",\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World/labels{/name}\",\n \"languages_url\" : \"https://api.github.com/repos/octocat/Hello-World/languages\",\n \"merges_url\" : \"https://api.github.com/repos/octocat/Hello-World/merges\",\n \"milestones_url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones{/number}\",\n \"mirror_url\" : \"git:git.example.com/octocat/Hello-World\",\n \"name\" : \"Hello-World\",\n \"network_count\" : 0,\n \"node_id\" : \"MDEwOlJlcG9zaXRvcnkxMjk2MjY5\",\n \"notifications_url\" : \"https://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating}\",\n \"open_issues_count\" : 0,\n \"owner\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"permissions\" : {\n \"admin\" : false,\n \"pull\" : true,\n \"push\" : false\n },\n \"private\" : false,\n \"pulls_url\" : \"https://api.github.com/repos/octocat/Hello-World/pulls{/number}\",\n \"pushed_at\" : \"2011-01-26T19:06:43Z\",\n \"releases_url\" : \"https://api.github.com/repos/octocat/Hello-World/releases{/id}\",\n \"size\" : 108,\n \"ssh_url\" : \"git@github.com:octocat/Hello-World.git\",\n \"stargazers_count\" : 80,\n \"stargazers_url\" : \"https://api.github.com/repos/octocat/Hello-World/stargazers\",\n \"statuses_url\" : \"https://api.github.com/repos/octocat/Hello-World/statuses/{sha}\",\n \"subscribers_count\" : 42,\n \"subscribers_url\" : \"https://api.github.com/repos/octocat/Hello-World/subscribers\",\n \"subscription_url\" : \"https://api.github.com/repos/octocat/Hello-World/subscription\",\n \"svn_url\" : \"https://svn.github.com/octocat/Hello-World\",\n \"tags_url\" : \"https://api.github.com/repos/octocat/Hello-World/tags\",\n \"teams_url\" : \"https://api.github.com/repos/octocat/Hello-World/teams\",\n \"topics\" : [ \"octocat\", \"atom\", \"electron\", \"api\" ],\n \"trees_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/trees{/sha}\",\n \"updated_at\" : \"2011-01-26T19:14:43Z\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World\",\n \"visibility\" : \"public\",\n \"watchers_count\" : 80\n },\n \"starred_at\" : \"2011-01-16T19:06:43Z\"\n} ]", + "headers": { + "Content-Type": "application/vnd.github.v3.star+json" + } + }, + "uuid": "5b69a66f-c5ca-467a-b986-10da487b2bae", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.164421Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "activity/list-repos-starred-by-authenticated-user", + "schema": { + "items": { + "$ref": "#/components/schemas/starred-repository" + }, + "type": "array" + } + } + } + }, + "insertionIndex": 61 + }, + { + "id": "c69348c2-84ac-41c5-a45a-40bc46a1cf56", + "name": "List repositories starred by the authenticated user (application/json) - default-response", + "request": { + "urlPath": "/user/starred", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 200, + "body": "[ {\n \"allow_merge_commit\" : true,\n \"allow_rebase_merge\" : true,\n \"allow_squash_merge\" : true,\n \"archive_url\" : \"https://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref}\",\n \"archived\" : false,\n \"assignees_url\" : \"https://api.github.com/repos/octocat/Hello-World/assignees{/user}\",\n \"blobs_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/blobs{/sha}\",\n \"branches_url\" : \"https://api.github.com/repos/octocat/Hello-World/branches{/branch}\",\n \"clone_url\" : \"https://github.com/octocat/Hello-World.git\",\n \"collaborators_url\" : \"https://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator}\",\n \"comments_url\" : \"https://api.github.com/repos/octocat/Hello-World/comments{/number}\",\n \"commits_url\" : \"https://api.github.com/repos/octocat/Hello-World/commits{/sha}\",\n \"compare_url\" : \"https://api.github.com/repos/octocat/Hello-World/compare/{base}...{head}\",\n \"contents_url\" : \"https://api.github.com/repos/octocat/Hello-World/contents/{+path}\",\n \"contributors_url\" : \"https://api.github.com/repos/octocat/Hello-World/contributors\",\n \"created_at\" : \"2011-01-26T19:01:12Z\",\n \"default_branch\" : \"master\",\n \"delete_branch_on_merge\" : true,\n \"deployments_url\" : \"https://api.github.com/repos/octocat/Hello-World/deployments\",\n \"description\" : \"This your first repo!\",\n \"disabled\" : false,\n \"downloads_url\" : \"https://api.github.com/repos/octocat/Hello-World/downloads\",\n \"events_url\" : \"https://api.github.com/repos/octocat/Hello-World/events\",\n \"fork\" : false,\n \"forks\" : 1,\n \"forks_count\" : 9,\n \"forks_url\" : \"https://api.github.com/repos/octocat/Hello-World/forks\",\n \"full_name\" : \"octocat/Hello-World\",\n \"git_commits_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/commits{/sha}\",\n \"git_refs_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/refs{/sha}\",\n \"git_tags_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/tags{/sha}\",\n \"git_url\" : \"git:github.com/octocat/Hello-World.git\",\n \"has_downloads\" : true,\n \"has_issues\" : true,\n \"has_pages\" : false,\n \"has_projects\" : true,\n \"has_wiki\" : true,\n \"homepage\" : \"https://github.com\",\n \"hooks_url\" : \"https://api.github.com/repos/octocat/Hello-World/hooks\",\n \"html_url\" : \"https://github.com/octocat/Hello-World\",\n \"id\" : 1296269,\n \"is_template\" : true,\n \"issue_comment_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/comments{/number}\",\n \"issue_events_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/events{/number}\",\n \"issues_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues{/number}\",\n \"keys_url\" : \"https://api.github.com/repos/octocat/Hello-World/keys{/key_id}\",\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World/labels{/name}\",\n \"languages_url\" : \"https://api.github.com/repos/octocat/Hello-World/languages\",\n \"license\" : {\n \"html_url\" : \"https://github.com/licenses/mit\",\n \"key\" : \"mit\",\n \"name\" : \"MIT License\",\n \"node_id\" : \"MDc6TGljZW5zZW1pdA==\",\n \"spdx_id\" : \"MIT\",\n \"url\" : \"https://api.github.com/licenses/mit\"\n },\n \"merges_url\" : \"https://api.github.com/repos/octocat/Hello-World/merges\",\n \"milestones_url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones{/number}\",\n \"mirror_url\" : \"git:git.example.com/octocat/Hello-World\",\n \"name\" : \"Hello-World\",\n \"network_count\" : 0,\n \"node_id\" : \"MDEwOlJlcG9zaXRvcnkxMjk2MjY5\",\n \"notifications_url\" : \"https://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating}\",\n \"open_issues\" : 1,\n \"open_issues_count\" : 0,\n \"owner\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"permissions\" : {\n \"admin\" : false,\n \"pull\" : true,\n \"push\" : false\n },\n \"private\" : false,\n \"pulls_url\" : \"https://api.github.com/repos/octocat/Hello-World/pulls{/number}\",\n \"pushed_at\" : \"2011-01-26T19:06:43Z\",\n \"releases_url\" : \"https://api.github.com/repos/octocat/Hello-World/releases{/id}\",\n \"size\" : 108,\n \"ssh_url\" : \"git@github.com:octocat/Hello-World.git\",\n \"stargazers_count\" : 80,\n \"stargazers_url\" : \"https://api.github.com/repos/octocat/Hello-World/stargazers\",\n \"statuses_url\" : \"https://api.github.com/repos/octocat/Hello-World/statuses/{sha}\",\n \"subscribers_count\" : 42,\n \"subscribers_url\" : \"https://api.github.com/repos/octocat/Hello-World/subscribers\",\n \"subscription_url\" : \"https://api.github.com/repos/octocat/Hello-World/subscription\",\n \"svn_url\" : \"https://svn.github.com/octocat/Hello-World\",\n \"tags_url\" : \"https://api.github.com/repos/octocat/Hello-World/tags\",\n \"teams_url\" : \"https://api.github.com/repos/octocat/Hello-World/teams\",\n \"temp_clone_token\" : \"ABTLWHOULUVAXGTRYU7OC2876QJ2O\",\n \"topics\" : [ \"octocat\", \"atom\", \"electron\", \"api\" ],\n \"trees_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/trees{/sha}\",\n \"updated_at\" : \"2011-01-26T19:14:43Z\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World\",\n \"visibility\" : \"public\",\n \"watchers\" : 1,\n \"watchers_count\" : 80\n} ]", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "c69348c2-84ac-41c5-a45a-40bc46a1cf56", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.164375Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "activity/list-repos-starred-by-authenticated-user", + "schema": { + "items": { + "$ref": "#/components/schemas/repository" + }, + "type": "array" + } + } + } + }, + "insertionIndex": 62 + }, + { + "id": "9b2cee24-f3a7-43a1-a931-a090b16ea3a7", + "name": "Accept a repository invitation (application/json)", + "request": { + "urlPath": "/user/repository_invitations/9149641791437857300", + "method": "PATCH", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 409, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/015396\",\n \"message\" : \"Officiis non repudiandae tenetur in aut provident explicabo. Quam quas accusamus et voluptates porro pariatur. Corrupti consectetur optio. Deleniti non facere omnis.\",\n \"url\" : \"https://web.example.mocklab.io/587237\",\n \"status\" : \"we0117ew7xme6oca5oijf1g2eypg8i1vz6x807br5vbzhrtkhzo2w1ogjcq2vxy6odh80nwxm6cr9m9n\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "9b2cee24-f3a7-43a1-a931-a090b16ea3a7", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.164321Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/accept-invitation", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 63 + }, + { + "id": "0a0e1d3d-e69b-4778-92ed-f041d6893b47", + "name": "Accept a repository invitation (application/json)", + "request": { + "urlPath": "/user/repository_invitations/8504779399647566739", + "method": "PATCH", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/318250\",\n \"message\" : \"Error facere dolore similique velit itaque ex velit. Quis non et cumque earum quia. Tenetur quia in.\",\n \"url\" : \"https://web.example.mocklab.io/540188\",\n \"status\" : \"hrdv6zjpk3msr1q7kj3jdh2709foyxbh25sdkm0m2j7gyu587j7ueyr8y2b97jjsg0jjtmj3kb2b3au9qc6xvakq4myi6ezio7nnrw7fjyrc\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "0a0e1d3d-e69b-4778-92ed-f041d6893b47", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.164112Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/accept-invitation", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 64 + }, + { + "id": "42fda2ac-a453-41e9-bfbb-285d12eb6aa0", + "name": "Accept a repository invitation (application/json)", + "request": { + "urlPath": "/user/repository_invitations/945704818425012575", + "method": "PATCH", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 403, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/878892\",\n \"message\" : \"Eaque ut quam rem qui soluta velit adipisci. Quidem facere est dolores eos. Perspiciatis quam esse ratione. Eaque ullam doloremque fugit quaerat. Placeat illo perferendis.\",\n \"url\" : \"https://web.example.mocklab.io/091176\",\n \"status\" : \"zod1odpopigmwqeju547prpwod43oilitkvdb9gfv0m02hi50yj0vlp3vjt06ic7t6w8hmmzw3e2xn4qvofbqyg6wjlkqe2lf4t2zsaqd2fgzzf6qr22nrtd6e46hzjgxurojcqu6ht\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "42fda2ac-a453-41e9-bfbb-285d12eb6aa0", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.163907Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/accept-invitation", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 65 + }, + { + "id": "a921d4c6-228a-44a3-a73d-4cd957ee1c10", + "name": "Accept a repository invitation - 304", + "request": { + "urlPath": "/user/repository_invitations/1085760098993743972", + "method": "PATCH" + }, + "response": { + "status": 304 + }, + "uuid": "a921d4c6-228a-44a3-a73d-4cd957ee1c10", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.163709Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/accept-invitation" + } + } + }, + "insertionIndex": 66 + }, + { + "id": "58fe8fc8-51fe-4a4d-8ce6-601686256d44", + "name": "Accept a repository invitation - 204", + "request": { + "urlPath": "/user/repository_invitations/5996150288254270467", + "method": "PATCH" + }, + "response": { + "status": 204 + }, + "uuid": "58fe8fc8-51fe-4a4d-8ce6-601686256d44", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.163691Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/accept-invitation" + } + } + }, + "insertionIndex": 67 + }, + { + "id": "0b55a242-1140-4a42-85a2-e38257c142f0", + "name": "Decline a repository invitation (application/json)", + "request": { + "urlPath": "/user/repository_invitations/1653969737010530934", + "method": "DELETE", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 409, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/079691\",\n \"message\" : \"Eos voluptatem voluptas qui nihil suscipit modi. Magni eos tempora fugiat nobis voluptatem ducimus. Deleniti corrupti non aut sed unde veritatis. Accusantium quidem aut nesciunt sed atque. Saepe adipi\",\n \"url\" : \"https://web.example.mocklab.io/933270\",\n \"status\" : \"sm5s6e03dhbymbk152v0m52gb2f0axoxllml5xqtk55zl06pv25wxr7x1jlefef65zgq947bjkoptx47a\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "0b55a242-1140-4a42-85a2-e38257c142f0", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.163661Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/decline-invitation", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 68 + }, + { + "id": "40e68103-33ce-4b67-a413-4ff3faf0ee46", + "name": "Decline a repository invitation (application/json)", + "request": { + "urlPath": "/user/repository_invitations/6390733741730023821", + "method": "DELETE", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/551384\",\n \"message\" : \"Rerum quia dolores. Modi at ut. Blanditiis quaerat libero id.\",\n \"url\" : \"https://web.example.mocklab.io/567632\",\n \"status\" : \"wlmzh24xrsqzwtmvk5zn47yb4juf90u8w1prk58lvfw1k4jsb8hg2woxj05gr8mmlxc555y2h7sb2m6n0mxt7y1qmkucaih7ol3astgkl5tdmdbh8aof0htu8\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "40e68103-33ce-4b67-a413-4ff3faf0ee46", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.163442Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/decline-invitation", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 69 + }, + { + "id": "bc323104-9ffb-478c-bbbd-7f6a36e4d9e4", + "name": "Decline a repository invitation (application/json)", + "request": { + "urlPath": "/user/repository_invitations/7287352650697325771", + "method": "DELETE", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 403, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/409332\",\n \"message\" : \"Voluptate cum quis ut vel. Similique odio sit. Et harum dolor tempore modi. Et quaerat aut ut quos. Et repellendus repellendus quidem.\",\n \"url\" : \"https://web.example.mocklab.io/584024\",\n \"status\" : \"8ki2cx37zok1agb3q0v3ohg47f936ffvuwee2k1zgif69mdj47gvphrwjcej852p54h7mqe0im6iv4a7dq\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "bc323104-9ffb-478c-bbbd-7f6a36e4d9e4", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.163233Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/decline-invitation", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 70 + }, + { + "id": "7453eeed-0ba3-445c-a6af-8981506ab6f1", + "name": "Decline a repository invitation - 304", + "request": { + "urlPath": "/user/repository_invitations/529478889237443984", + "method": "DELETE" + }, + "response": { + "status": 304 + }, + "uuid": "7453eeed-0ba3-445c-a6af-8981506ab6f1", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.163025Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/decline-invitation" + } + } + }, + "insertionIndex": 71 + }, + { + "id": "77801b4c-7e0e-49ec-b05e-7d748a8a28ec", + "name": "Decline a repository invitation - 204", + "request": { + "urlPath": "/user/repository_invitations/4808383050100439908", + "method": "DELETE" + }, + "response": { + "status": 204 + }, + "uuid": "77801b4c-7e0e-49ec-b05e-7d748a8a28ec", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.163005Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/decline-invitation" + } + } + }, + "insertionIndex": 72 + }, + { + "id": "a88d19b0-6559-40be-b261-d7c0dbd9d4c9", + "name": "List repository invitations for the authenticated user (application/json)", + "request": { + "urlPath": "/user/repository_invitations", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/898235\",\n \"message\" : \"Ut autem vitae qui consectetur porro consequatur. Assumenda assumenda officia quia non ut est. Dolores eius minus saepe et aut quaerat. Eaque dolores minima odio ut optio quia.\",\n \"url\" : \"https://web.example.mocklab.io/685265\",\n \"status\" : \"st6thpz9rd8d9egxhfg6lpcc7ufj4vm90ok6c8p3kt5po5phm85536hy4569borpz8yk949mtsaqpyofg83e36cvu5uz7292txauy6iy953dgydnf8qjbvb72h01uizbhco1x6wsqxsy56du23e6qk27fat6eut0wxe1d07apgpxo8z222f0wxjii3zs6481q3jy\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "a88d19b0-6559-40be-b261-d7c0dbd9d4c9", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.162967Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/list-invitations-for-authenticated-user", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 73 + }, + { + "id": "47c9a33a-757a-40ed-8177-8a2e15546d14", + "name": "List repository invitations for the authenticated user (application/json)", + "request": { + "urlPath": "/user/repository_invitations", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 403, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/394139\",\n \"message\" : \"Ut reprehenderit sunt et mollitia fuga. Voluptates et odit non sapiente id non et. Est dolorum sunt hic cumque aliquid quia fuga. Ut architecto est qui consequatur corrupti et.\",\n \"url\" : \"https://web.example.mocklab.io/297835\",\n \"status\" : \"hidv99a69w9yltevemfrkj9m2e4r44vcp4dqfxkwp1syn4ovd0y0a2hcwb1chj2wom8kfpba1zs2sg1gt8z5wt1nrbcnr59v25r6\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "47c9a33a-757a-40ed-8177-8a2e15546d14", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.162752Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/list-invitations-for-authenticated-user", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 74 + }, + { + "id": "411793a1-33c7-4d9f-93e0-1b70d3cba8fa", + "name": "List repository invitations for the authenticated user (application/json)", + "request": { + "urlPath": "/user/repository_invitations", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 401, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/262659\",\n \"message\" : \"Sunt et est quos ipsa similique quos. Omnis ullam in aut. Suscipit voluptatem enim et. Consequuntur sed et libero sit minus suscipit aut. Sapiente rerum facilis sapiente adipisci cupiditate sed dolore\",\n \"url\" : \"https://web.example.mocklab.io/508408\",\n \"status\" : \"8vdc3uc8d92km7emfopk2vt851ra9jfrx6ah5eq9dsedfh4id1khchsqvp2pwprf07gi6riqh\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "411793a1-33c7-4d9f-93e0-1b70d3cba8fa", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.162539Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/list-invitations-for-authenticated-user", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 75 + }, + { + "id": "259a839d-0ae5-47e3-a250-2bbb8fecc51b", + "name": "List repository invitations for the authenticated user - 304", + "request": { + "urlPath": "/user/repository_invitations", + "method": "GET" + }, + "response": { + "status": 304 + }, + "uuid": "259a839d-0ae5-47e3-a250-2bbb8fecc51b", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.162334Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/list-invitations-for-authenticated-user" + } + } + }, + "insertionIndex": 76 + }, + { + "id": "bdd372aa-3b7b-468e-a095-af752eb564ca", + "name": "List repository invitations for the authenticated user (application/json) - default", + "request": { + "urlPath": "/user/repository_invitations", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 200, + "body": "[ {\n \"created_at\" : \"2016-06-13T14:52:50-05:00\",\n \"html_url\" : \"https://github.com/octocat/Hello-World/invitations\",\n \"id\" : 1,\n \"invitee\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"inviter\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"permissions\" : \"write\",\n \"repository\" : {\n \"archive_url\" : \"https://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref}\",\n \"assignees_url\" : \"https://api.github.com/repos/octocat/Hello-World/assignees{/user}\",\n \"blobs_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/blobs{/sha}\",\n \"branches_url\" : \"https://api.github.com/repos/octocat/Hello-World/branches{/branch}\",\n \"collaborators_url\" : \"https://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator}\",\n \"comments_url\" : \"https://api.github.com/repos/octocat/Hello-World/comments{/number}\",\n \"commits_url\" : \"https://api.github.com/repos/octocat/Hello-World/commits{/sha}\",\n \"compare_url\" : \"https://api.github.com/repos/octocat/Hello-World/compare/{base}...{head}\",\n \"contents_url\" : \"https://api.github.com/repos/octocat/Hello-World/contents/{+path}\",\n \"contributors_url\" : \"https://api.github.com/repos/octocat/Hello-World/contributors\",\n \"deployments_url\" : \"https://api.github.com/repos/octocat/Hello-World/deployments\",\n \"description\" : \"This your first repo!\",\n \"downloads_url\" : \"https://api.github.com/repos/octocat/Hello-World/downloads\",\n \"events_url\" : \"https://api.github.com/repos/octocat/Hello-World/events\",\n \"fork\" : false,\n \"forks_url\" : \"https://api.github.com/repos/octocat/Hello-World/forks\",\n \"full_name\" : \"octocat/Hello-World\",\n \"git_commits_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/commits{/sha}\",\n \"git_refs_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/refs{/sha}\",\n \"git_tags_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/tags{/sha}\",\n \"git_url\" : \"git:github.com/octocat/Hello-World.git\",\n \"hooks_url\" : \"http://api.github.com/repos/octocat/Hello-World/hooks\",\n \"html_url\" : \"https://github.com/octocat/Hello-World\",\n \"id\" : 1296269,\n \"issue_comment_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/comments{/number}\",\n \"issue_events_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/events{/number}\",\n \"issues_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues{/number}\",\n \"keys_url\" : \"https://api.github.com/repos/octocat/Hello-World/keys{/key_id}\",\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World/labels{/name}\",\n \"languages_url\" : \"https://api.github.com/repos/octocat/Hello-World/languages\",\n \"merges_url\" : \"https://api.github.com/repos/octocat/Hello-World/merges\",\n \"milestones_url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones{/number}\",\n \"name\" : \"Hello-World\",\n \"node_id\" : \"MDEwOlJlcG9zaXRvcnkxMjk2MjY5\",\n \"notifications_url\" : \"https://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating}\",\n \"owner\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"private\" : false,\n \"pulls_url\" : \"https://api.github.com/repos/octocat/Hello-World/pulls{/number}\",\n \"releases_url\" : \"https://api.github.com/repos/octocat/Hello-World/releases{/id}\",\n \"ssh_url\" : \"git@github.com:octocat/Hello-World.git\",\n \"stargazers_url\" : \"https://api.github.com/repos/octocat/Hello-World/stargazers\",\n \"statuses_url\" : \"https://api.github.com/repos/octocat/Hello-World/statuses/{sha}\",\n \"subscribers_url\" : \"https://api.github.com/repos/octocat/Hello-World/subscribers\",\n \"subscription_url\" : \"https://api.github.com/repos/octocat/Hello-World/subscription\",\n \"tags_url\" : \"https://api.github.com/repos/octocat/Hello-World/tags\",\n \"teams_url\" : \"https://api.github.com/repos/octocat/Hello-World/teams\",\n \"trees_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/trees{/sha}\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World\"\n },\n \"url\" : \"https://api.github.com/user/repository_invitations/1296269\"\n} ]", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "bdd372aa-3b7b-468e-a095-af752eb564ca", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.16231Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/list-invitations-for-authenticated-user", + "schema": { + "items": { + "$ref": "#/components/schemas/repository-invitation" + }, + "type": "array" + } + } + } + }, + "insertionIndex": 77 + }, + { + "id": "b7a44a4f-4020-403a-90c9-0a0da6ab2159", + "name": "Create a repository for the authenticated user (application/json)", + "request": { + "urlPath": "/user/repos", + "method": "POST", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 422, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/755624\",\n \"message\" : \"Omnis necessitatibus dolorem alias. Corporis quibusdam animi laboriosam. Voluptatibus dolor nemo animi dolores sapiente nisi iusto.\",\n \"errors\" : [ {\n \"code\" : \"lqjnkqsfd\",\n \"field\" : \"e30gw2nqjum2dq0qvpzsxwsiy4cmarifvsp9womkj0ywv9i\",\n \"resource\" : \"ds69lih0a4qrdwelflg3\",\n \"index\" : 3930170394219049979,\n \"message\" : \"Perferendis sequi ut nisi velit numquam. Minus non temporibus delectus rerum et. Earum et sapiente quis amet maxime id. Pariatur eligendi consequatur. Similique distinctio debitis.\",\n \"value\" : { }\n }, {\n \"code\" : \"owgaqo69rkuoe6swrmjwlrabamew13ddklynnc5rhbm2ug27w9rl\",\n \"field\" : \"myxo68tdfmpbpvfp\",\n \"resource\" : \"ea433munvcse2mzvc2e3v6mv6ua0ncpgf8iag5l6yjyzvrmlwka70gh2vcoothgp303031rqflw73dfaon0n6rpkqjryd1qeomv08upiv9yzqdzsnmv0fayk1bhs5qrev352onb4umwm1rsfzdfpajxwd4kd7auew\",\n \"index\" : 2686202791032504846,\n \"message\" : \"Fugit cupiditate et ab omnis amet est. Ipsam quo ut. Aspernatur minus ut est excepturi et.\",\n \"value\" : { }\n } ]\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "b7a44a4f-4020-403a-90c9-0a0da6ab2159", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.162248Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/create-for-authenticated-user", + "schema": { + "description": "Validation Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "errors": { + "items": { + "properties": { + "code": { + "type": "string" + }, + "field": { + "type": "string" + }, + "index": { + "type": "integer" + }, + "message": { + "type": "string" + }, + "resource": { + "type": "string" + }, + "value": { + "oneOf": [ + { + "nullable": true, + "type": "string" + }, + { + "nullable": true, + "type": "integer" + }, + { + "items": { + "type": "string" + }, + "nullable": true, + "type": "array" + } + ] + } + }, + "required": ["code"], + "type": "object" + }, + "type": "array" + }, + "message": { + "type": "string" + } + }, + "required": ["message", "documentation_url"], + "title": "Validation Error", + "type": "object" + } + } + } + }, + "insertionIndex": 78 + }, + { + "id": "72d4a431-b2cc-48fd-baad-0c8c291fc5c4", + "name": "Create a repository for the authenticated user (application/json)", + "request": { + "urlPath": "/user/repos", + "method": "POST", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/299457\",\n \"message\" : \"Et quas nostrum facilis pariatur rem itaque quasi. Omnis praesentium excepturi aut voluptatum molestiae blanditiis sed. Quod quae enim odit et et.\",\n \"url\" : \"https://web.example.mocklab.io/532350\",\n \"status\" : \"yonoaksucyidi0p1um5yp7l2vix5k00ft1he9ziahc0w29ebedgao1pmu0s4smcg65ron55xlnuvz56gm86cr2fjlbb0zsw6a09esk\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "72d4a431-b2cc-48fd-baad-0c8c291fc5c4", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.161878Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/create-for-authenticated-user", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 79 + }, + { + "id": "13b64ddc-337d-46bd-a998-2d0036ab1736", + "name": "Create a repository for the authenticated user (application/json)", + "request": { + "urlPath": "/user/repos", + "method": "POST", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 403, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/366407\",\n \"message\" : \"Voluptatem molestias quidem. Non labore mollitia perferendis sit nam voluptatum labore. In accusantium dolorum ut et enim. Voluptate et soluta.\",\n \"url\" : \"https://web.example.mocklab.io/581046\",\n \"status\" : \"nk9y51c135s8tvpa77s\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "13b64ddc-337d-46bd-a998-2d0036ab1736", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.161652Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/create-for-authenticated-user", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 80 + }, + { + "id": "0dbe2884-f2c3-4807-8325-fd4ee370bd0f", + "name": "Create a repository for the authenticated user (application/json)", + "request": { + "urlPath": "/user/repos", + "method": "POST", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 401, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/972992\",\n \"message\" : \"Omnis autem in harum corporis fugiat soluta aut. Quos ea facere unde. Est iusto autem.\",\n \"url\" : \"https://web.example.mocklab.io/019739\",\n \"status\" : \"b720ebb65zr2r06x01fxu64r0c8ue5wevb4as0pd9c8buucf06h9ec5e3eo15k1h493h63y5fsoi6789byq876rlmh8tv1gif5serdbn0furrh41d3nbic8rxmxtbjqe6fukt5kmf12j81937ffxi0u9s3mpavbkqwdj94dsor5lylrdf\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "0dbe2884-f2c3-4807-8325-fd4ee370bd0f", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.161444Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/create-for-authenticated-user", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 81 + }, + { + "id": "69836a38-533a-4a60-ab14-38eefc65bcc6", + "name": "Create a repository for the authenticated user (application/scim+json)", + "request": { + "urlPath": "/user/repos", + "method": "POST", + "headers": { + "Accept": { + "contains": "application/scim+json" + } + } + }, + "response": { + "status": 400, + "body": "{\n \"schemas\" : [ \"pgdzanqpk1ilfv6tky9rbi6w95zedyu2ehj4y2g1ieeff7vr9nirbjjc6n8n7mptw4zhnf1ak3rtc7lr21h6m6hitafs9f73qeyy141q1q3\", \"igdv7\" ],\n \"scimType\" : \"1g0537bz1got7h7dezsh7ro0ml2sopxeq88t8r1ulszy1m6yacxnw5omp187jw52w9fzw4w7f5p4s5gmhe7pl27nfpcb5gpfxygqbmduqgz2ilcib317vmaho8mrsvt2ckkr2li8us9e04lobykcyof74ahf22\",\n \"detail\" : \"av7iwso97f4hvfebay4het7sn0zwl966q68e17zkaa8t8vqcysmcimdqpu37o687r9wwci3yz2k9ysptchhzfddwygwz8ots8878b25d5vwybrqk1sl4ofd26tmrvhfz9gkxkjky5pvi\",\n \"documentation_url\" : \"https://web.example.mocklab.io/881028\",\n \"message\" : \"Illum repellat necessitatibus totam excepturi debitis optio harum. Aperiam illo id est accusamus. Et reiciendis dolor quod molestiae.\",\n \"status\" : 409649092086447892\n}", + "headers": { + "Content-Type": "application/scim+json" + } + }, + "uuid": "69836a38-533a-4a60-ab14-38eefc65bcc6", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.161234Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/create-for-authenticated-user", + "schema": { + "description": "Scim Error", + "properties": { + "detail": { + "nullable": true, + "type": "string" + }, + "documentation_url": { + "nullable": true, + "type": "string" + }, + "message": { + "nullable": true, + "type": "string" + }, + "schemas": { + "items": { + "type": "string" + }, + "type": "array" + }, + "scimType": { + "nullable": true, + "type": "string" + }, + "status": { + "type": "integer" + } + }, + "title": "Scim Error", + "type": "object" + } + } + } + }, + "insertionIndex": 82 + }, + { + "id": "0110926b-baf8-4df1-9053-5062aa67c583", + "name": "Create a repository for the authenticated user (application/json)", + "request": { + "urlPath": "/user/repos", + "method": "POST", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 400, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/708515\",\n \"message\" : \"Officia facilis est atque. Tempore autem qui illo quo. Pariatur doloribus adipisci itaque. Quis autem est ducimus rerum sequi et assumenda. Dolor cum nemo velit repellendus.\",\n \"url\" : \"https://web.example.mocklab.io/956649\",\n \"status\" : \"kys90ql7gmw84m33547yf433axe0y5rl28zs1ry7ok2unvhkustwg4v5x92zt1m5sz1fkii4m09u63uri3ikavom6qlk56vgjnd1a2s2pqhygms0x5xf9d52f27tbjqzy40x6wyhoebcze1a1yu44vcszb5dm8n6hu8cdsu85gejtmq6feh34lf9qfrw8raww\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "0110926b-baf8-4df1-9053-5062aa67c583", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.16102Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/create-for-authenticated-user", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 83 + }, + { + "id": "e31985b2-722c-43ee-a232-14aa607543fa", + "name": "Create a repository for the authenticated user - 304", + "request": { + "urlPath": "/user/repos", + "method": "POST" + }, + "response": { + "status": 304 + }, + "uuid": "e31985b2-722c-43ee-a232-14aa607543fa", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.160793Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/create-for-authenticated-user" + } + } + }, + "insertionIndex": 84 + }, + { + "id": "b39c90a0-2336-48e9-8490-08544239b29c", + "name": "Create a repository for the authenticated user (application/json) - default", + "request": { + "urlPath": "/user/repos", + "method": "POST", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 201, + "body": "{\n \"allow_merge_commit\" : true,\n \"allow_rebase_merge\" : true,\n \"allow_squash_merge\" : true,\n \"anonymous_access_enabled\" : false,\n \"archive_url\" : \"https://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref}\",\n \"archived\" : false,\n \"assignees_url\" : \"https://api.github.com/repos/octocat/Hello-World/assignees{/user}\",\n \"blobs_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/blobs{/sha}\",\n \"branches_url\" : \"https://api.github.com/repos/octocat/Hello-World/branches{/branch}\",\n \"clone_url\" : \"https://github.com/octocat/Hello-World.git\",\n \"collaborators_url\" : \"https://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator}\",\n \"comments_url\" : \"https://api.github.com/repos/octocat/Hello-World/comments{/number}\",\n \"commits_url\" : \"https://api.github.com/repos/octocat/Hello-World/commits{/sha}\",\n \"compare_url\" : \"https://api.github.com/repos/octocat/Hello-World/compare/{base}...{head}\",\n \"contents_url\" : \"https://api.github.com/repos/octocat/Hello-World/contents/{+path}\",\n \"contributors_url\" : \"https://api.github.com/repos/octocat/Hello-World/contributors\",\n \"created_at\" : \"2011-01-26T19:01:12Z\",\n \"default_branch\" : \"master\",\n \"delete_branch_on_merge\" : true,\n \"deployments_url\" : \"https://api.github.com/repos/octocat/Hello-World/deployments\",\n \"description\" : \"This your first repo!\",\n \"disabled\" : false,\n \"downloads_url\" : \"https://api.github.com/repos/octocat/Hello-World/downloads\",\n \"events_url\" : \"https://api.github.com/repos/octocat/Hello-World/events\",\n \"fork\" : false,\n \"forks\" : 9,\n \"forks_count\" : 9,\n \"forks_url\" : \"https://api.github.com/repos/octocat/Hello-World/forks\",\n \"full_name\" : \"octocat/Hello-World\",\n \"git_commits_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/commits{/sha}\",\n \"git_refs_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/refs{/sha}\",\n \"git_tags_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/tags{/sha}\",\n \"git_url\" : \"git:github.com/octocat/Hello-World.git\",\n \"has_downloads\" : true,\n \"has_issues\" : true,\n \"has_pages\" : false,\n \"has_projects\" : true,\n \"has_wiki\" : true,\n \"homepage\" : \"https://github.com\",\n \"hooks_url\" : \"https://api.github.com/repos/octocat/Hello-World/hooks\",\n \"html_url\" : \"https://github.com/octocat/Hello-World\",\n \"id\" : 1296269,\n \"is_template\" : true,\n \"issue_comment_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/comments{/number}\",\n \"issue_events_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/events{/number}\",\n \"issues_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues{/number}\",\n \"keys_url\" : \"https://api.github.com/repos/octocat/Hello-World/keys{/key_id}\",\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World/labels{/name}\",\n \"languages_url\" : \"https://api.github.com/repos/octocat/Hello-World/languages\",\n \"license\" : {\n \"html_url\" : \"https://api.github.com/licenses/mit\",\n \"key\" : \"mit\",\n \"name\" : \"MIT License\",\n \"node_id\" : \"MDc6TGljZW5zZW1pdA==\",\n \"spdx_id\" : \"MIT\",\n \"url\" : \"https://api.github.com/licenses/mit\"\n },\n \"merges_url\" : \"https://api.github.com/repos/octocat/Hello-World/merges\",\n \"milestones_url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones{/number}\",\n \"mirror_url\" : \"git:git.example.com/octocat/Hello-World\",\n \"name\" : \"Hello-World\",\n \"network_count\" : 0,\n \"node_id\" : \"MDEwOlJlcG9zaXRvcnkxMjk2MjY5\",\n \"notifications_url\" : \"https://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating}\",\n \"open_issues\" : 0,\n \"open_issues_count\" : 0,\n \"owner\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"permissions\" : {\n \"admin\" : false,\n \"pull\" : true,\n \"push\" : false\n },\n \"private\" : false,\n \"pulls_url\" : \"https://api.github.com/repos/octocat/Hello-World/pulls{/number}\",\n \"pushed_at\" : \"2011-01-26T19:06:43Z\",\n \"releases_url\" : \"https://api.github.com/repos/octocat/Hello-World/releases{/id}\",\n \"size\" : 108,\n \"ssh_url\" : \"git@github.com:octocat/Hello-World.git\",\n \"stargazers_count\" : 80,\n \"stargazers_url\" : \"https://api.github.com/repos/octocat/Hello-World/stargazers\",\n \"statuses_url\" : \"https://api.github.com/repos/octocat/Hello-World/statuses/{sha}\",\n \"subscribers_count\" : 42,\n \"subscribers_url\" : \"https://api.github.com/repos/octocat/Hello-World/subscribers\",\n \"subscription_url\" : \"https://api.github.com/repos/octocat/Hello-World/subscription\",\n \"svn_url\" : \"https://svn.github.com/octocat/Hello-World\",\n \"tags_url\" : \"https://api.github.com/repos/octocat/Hello-World/tags\",\n \"teams_url\" : \"https://api.github.com/repos/octocat/Hello-World/teams\",\n \"topics\" : [ \"octocat\", \"atom\", \"electron\", \"api\" ],\n \"trees_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/trees{/sha}\",\n \"updated_at\" : \"2011-01-26T19:14:43Z\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World\",\n \"visibility\" : \"public\",\n \"watchers\" : 80,\n \"watchers_count\" : 80\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "b39c90a0-2336-48e9-8490-08544239b29c", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.160708Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/create-for-authenticated-user", + "schema": { + "description": "A git repository", + "properties": { + "allow_forking": { + "description": "Whether to allow forking this repo", + "type": "boolean" + }, + "allow_merge_commit": { + "default": true, + "description": "Whether to allow merge commits for pull requests.", + "example": true, + "type": "boolean" + }, + "allow_rebase_merge": { + "default": true, + "description": "Whether to allow rebase merges for pull requests.", + "example": true, + "type": "boolean" + }, + "allow_squash_merge": { + "default": true, + "description": "Whether to allow squash merges for pull requests.", + "example": true, + "type": "boolean" + }, + "anonymous_access_enabled": { + "type": "boolean" + }, + "archive_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref}", + "type": "string" + }, + "archived": { + "default": false, + "description": "Whether the repository is archived.", + "type": "boolean" + }, + "assignees_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/assignees{/user}", + "type": "string" + }, + "blobs_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/git/blobs{/sha}", + "type": "string" + }, + "branches_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/branches{/branch}", + "type": "string" + }, + "clone_url": { + "example": "https://github.com/octocat/Hello-World.git", + "type": "string" + }, + "collaborators_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator}", + "type": "string" + }, + "comments_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/comments{/number}", + "type": "string" + }, + "commits_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/commits{/sha}", + "type": "string" + }, + "compare_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/compare/{base}...{head}", + "type": "string" + }, + "contents_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/contents/{+path}", + "type": "string" + }, + "contributors_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/contributors", + "format": "uri", + "type": "string" + }, + "created_at": { + "example": "2011-01-26T19:01:12Z", + "format": "date-time", + "nullable": true, + "type": "string" + }, + "default_branch": { + "description": "The default branch of the repository.", + "example": "master", + "type": "string" + }, + "delete_branch_on_merge": { + "default": false, + "description": "Whether to delete head branches when pull requests are merged", + "example": false, + "type": "boolean" + }, + "deployments_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/deployments", + "format": "uri", + "type": "string" + }, + "description": { + "example": "This your first repo!", + "nullable": true, + "type": "string" + }, + "disabled": { + "description": "Returns whether or not this repository disabled.", + "type": "boolean" + }, + "downloads_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/downloads", + "format": "uri", + "type": "string" + }, + "events_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/events", + "format": "uri", + "type": "string" + }, + "fork": { + "type": "boolean" + }, + "forks": { + "type": "integer" + }, + "forks_count": { + "example": 9, + "type": "integer" + }, + "forks_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/forks", + "format": "uri", + "type": "string" + }, + "full_name": { + "example": "octocat/Hello-World", + "type": "string" + }, + "git_commits_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/git/commits{/sha}", + "type": "string" + }, + "git_refs_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/git/refs{/sha}", + "type": "string" + }, + "git_tags_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/git/tags{/sha}", + "type": "string" + }, + "git_url": { + "example": "git:github.com/octocat/Hello-World.git", + "type": "string" + }, + "has_downloads": { + "default": true, + "description": "Whether downloads are enabled.", + "example": true, + "type": "boolean" + }, + "has_issues": { + "default": true, + "description": "Whether issues are enabled.", + "example": true, + "type": "boolean" + }, + "has_pages": { + "type": "boolean" + }, + "has_projects": { + "default": true, + "description": "Whether projects are enabled.", + "example": true, + "type": "boolean" + }, + "has_wiki": { + "default": true, + "description": "Whether the wiki is enabled.", + "example": true, + "type": "boolean" + }, + "homepage": { + "example": "https://github.com", + "format": "uri", + "nullable": true, + "type": "string" + }, + "hooks_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/hooks", + "format": "uri", + "type": "string" + }, + "html_url": { + "example": "https://github.com/octocat/Hello-World", + "format": "uri", + "type": "string" + }, + "id": { + "description": "Unique identifier of the repository", + "example": 42, + "type": "integer" + }, + "is_template": { + "default": false, + "description": "Whether this repository acts as a template that can be used to generate new repositories.", + "example": true, + "type": "boolean" + }, + "issue_comment_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/issues/comments{/number}", + "type": "string" + }, + "issue_events_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/issues/events{/number}", + "type": "string" + }, + "issues_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/issues{/number}", + "type": "string" + }, + "keys_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/keys{/key_id}", + "type": "string" + }, + "labels_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/labels{/name}", + "type": "string" + }, + "language": { + "nullable": true, + "type": "string" + }, + "languages_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/languages", + "format": "uri", + "type": "string" + }, + "license": { + "$ref": "#/components/schemas/nullable-license-simple" + }, + "master_branch": { + "type": "string" + }, + "merges_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/merges", + "format": "uri", + "type": "string" + }, + "milestones_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/milestones{/number}", + "type": "string" + }, + "mirror_url": { + "example": "git:git.example.com/octocat/Hello-World", + "format": "uri", + "nullable": true, + "type": "string" + }, + "name": { + "description": "The name of the repository.", + "example": "Team Environment", + "type": "string" + }, + "network_count": { + "type": "integer" + }, + "node_id": { + "example": "MDEwOlJlcG9zaXRvcnkxMjk2MjY5", + "type": "string" + }, + "notifications_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating}", + "type": "string" + }, + "open_issues": { + "type": "integer" + }, + "open_issues_count": { + "example": 0, + "type": "integer" + }, + "organization": { + "$ref": "#/components/schemas/nullable-simple-user" + }, + "owner": { + "$ref": "#/components/schemas/simple-user" + }, + "permissions": { + "properties": { + "admin": { + "type": "boolean" + }, + "maintain": { + "type": "boolean" + }, + "pull": { + "type": "boolean" + }, + "push": { + "type": "boolean" + }, + "triage": { + "type": "boolean" + } + }, + "required": ["admin", "pull", "push"], + "type": "object" + }, + "private": { + "default": false, + "description": "Whether the repository is private or public.", + "type": "boolean" + }, + "pulls_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/pulls{/number}", + "type": "string" + }, + "pushed_at": { + "example": "2011-01-26T19:06:43Z", + "format": "date-time", + "nullable": true, + "type": "string" + }, + "releases_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/releases{/id}", + "type": "string" + }, + "size": { + "example": 108, + "type": "integer" + }, + "ssh_url": { + "example": "git@github.com:octocat/Hello-World.git", + "type": "string" + }, + "stargazers_count": { + "example": 80, + "type": "integer" + }, + "stargazers_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/stargazers", + "format": "uri", + "type": "string" + }, + "starred_at": { + "example": "\"2020-07-09T00:17:42Z\"", + "type": "string" + }, + "statuses_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/statuses/{sha}", + "type": "string" + }, + "subscribers_count": { + "type": "integer" + }, + "subscribers_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/subscribers", + "format": "uri", + "type": "string" + }, + "subscription_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/subscription", + "format": "uri", + "type": "string" + }, + "svn_url": { + "example": "https://svn.github.com/octocat/Hello-World", + "format": "uri", + "type": "string" + }, + "tags_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/tags", + "format": "uri", + "type": "string" + }, + "teams_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/teams", + "format": "uri", + "type": "string" + }, + "template_repository": { + "nullable": true, + "properties": { + "allow_merge_commit": { + "type": "boolean" + }, + "allow_rebase_merge": { + "type": "boolean" + }, + "allow_squash_merge": { + "type": "boolean" + }, + "anonymous_access_enabled": { + "type": "boolean" + }, + "archive_url": { + "type": "string" + }, + "archived": { + "type": "boolean" + }, + "assignees_url": { + "type": "string" + }, + "blobs_url": { + "type": "string" + }, + "branches_url": { + "type": "string" + }, + "clone_url": { + "type": "string" + }, + "collaborators_url": { + "type": "string" + }, + "comments_url": { + "type": "string" + }, + "commits_url": { + "type": "string" + }, + "compare_url": { + "type": "string" + }, + "contents_url": { + "type": "string" + }, + "contributors_url": { + "type": "string" + }, + "created_at": { + "type": "string" + }, + "default_branch": { + "type": "string" + }, + "delete_branch_on_merge": { + "type": "boolean" + }, + "deployments_url": { + "type": "string" + }, + "description": { + "type": "string" + }, + "disabled": { + "type": "boolean" + }, + "downloads_url": { + "type": "string" + }, + "events_url": { + "type": "string" + }, + "fork": { + "type": "boolean" + }, + "forks_count": { + "type": "integer" + }, + "forks_url": { + "type": "string" + }, + "full_name": { + "type": "string" + }, + "git_commits_url": { + "type": "string" + }, + "git_refs_url": { + "type": "string" + }, + "git_tags_url": { + "type": "string" + }, + "git_url": { + "type": "string" + }, + "has_downloads": { + "type": "boolean" + }, + "has_issues": { + "type": "boolean" + }, + "has_pages": { + "type": "boolean" + }, + "has_projects": { + "type": "boolean" + }, + "has_wiki": { + "type": "boolean" + }, + "homepage": { + "type": "string" + }, + "hooks_url": { + "type": "string" + }, + "html_url": { + "type": "string" + }, + "id": { + "type": "integer" + }, + "is_template": { + "type": "boolean" + }, + "issue_comment_url": { + "type": "string" + }, + "issue_events_url": { + "type": "string" + }, + "issues_url": { + "type": "string" + }, + "keys_url": { + "type": "string" + }, + "labels_url": { + "type": "string" + }, + "language": { + "type": "string" + }, + "languages_url": { + "type": "string" + }, + "merges_url": { + "type": "string" + }, + "milestones_url": { + "type": "string" + }, + "mirror_url": { + "type": "string" + }, + "name": { + "type": "string" + }, + "network_count": { + "type": "integer" + }, + "node_id": { + "type": "string" + }, + "notifications_url": { + "type": "string" + }, + "open_issues_count": { + "type": "integer" + }, + "owner": { + "properties": { + "avatar_url": { + "type": "string" + }, + "events_url": { + "type": "string" + }, + "followers_url": { + "type": "string" + }, + "following_url": { + "type": "string" + }, + "gists_url": { + "type": "string" + }, + "gravatar_id": { + "type": "string" + }, + "html_url": { + "type": "string" + }, + "id": { + "type": "integer" + }, + "login": { + "type": "string" + }, + "node_id": { + "type": "string" + }, + "organizations_url": { + "type": "string" + }, + "received_events_url": { + "type": "string" + }, + "repos_url": { + "type": "string" + }, + "site_admin": { + "type": "boolean" + }, + "starred_url": { + "type": "string" + }, + "subscriptions_url": { + "type": "string" + }, + "type": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "type": "object" + }, + "permissions": { + "properties": { + "admin": { + "type": "boolean" + }, + "maintain": { + "type": "boolean" + }, + "pull": { + "type": "boolean" + }, + "push": { + "type": "boolean" + }, + "triage": { + "type": "boolean" + } + }, + "type": "object" + }, + "private": { + "type": "boolean" + }, + "pulls_url": { + "type": "string" + }, + "pushed_at": { + "type": "string" + }, + "releases_url": { + "type": "string" + }, + "size": { + "type": "integer" + }, + "ssh_url": { + "type": "string" + }, + "stargazers_count": { + "type": "integer" + }, + "stargazers_url": { + "type": "string" + }, + "statuses_url": { + "type": "string" + }, + "subscribers_count": { + "type": "integer" + }, + "subscribers_url": { + "type": "string" + }, + "subscription_url": { + "type": "string" + }, + "svn_url": { + "type": "string" + }, + "tags_url": { + "type": "string" + }, + "teams_url": { + "type": "string" + }, + "topics": { + "items": { + "type": "string" + }, + "type": "array" + }, + "trees_url": { + "type": "string" + }, + "updated_at": { + "type": "string" + }, + "url": { + "type": "string" + }, + "visibility": { + "type": "string" + }, + "watchers_count": { + "type": "integer" + } + }, + "type": "object" + }, + "topics": { + "items": { + "type": "string" + }, + "type": "array" + }, + "trees_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/git/trees{/sha}", + "type": "string" + }, + "updated_at": { + "example": "2011-01-26T19:14:43Z", + "format": "date-time", + "nullable": true, + "type": "string" + }, + "url": { + "example": "https://api.github.com/repos/octocat/Hello-World", + "format": "uri", + "type": "string" + }, + "visibility": { + "default": "public", + "description": "The repository visibility: public, private, or internal.", + "type": "string" + }, + "watchers": { + "type": "integer" + }, + "watchers_count": { + "example": 80, + "type": "integer" + } + }, + "required": [ + "archive_url", + "assignees_url", + "blobs_url", + "branches_url", + "collaborators_url", + "comments_url", + "commits_url", + "compare_url", + "contents_url", + "contributors_url", + "deployments_url", + "description", + "downloads_url", + "events_url", + "fork", + "forks_url", + "full_name", + "git_commits_url", + "git_refs_url", + "git_tags_url", + "hooks_url", + "html_url", + "id", + "node_id", + "issue_comment_url", + "issue_events_url", + "issues_url", + "keys_url", + "labels_url", + "languages_url", + "merges_url", + "milestones_url", + "name", + "notifications_url", + "owner", + "private", + "pulls_url", + "releases_url", + "stargazers_url", + "statuses_url", + "subscribers_url", + "subscription_url", + "tags_url", + "teams_url", + "trees_url", + "url", + "clone_url", + "default_branch", + "forks", + "forks_count", + "git_url", + "has_downloads", + "has_issues", + "has_projects", + "has_wiki", + "has_pages", + "homepage", + "language", + "archived", + "disabled", + "mirror_url", + "open_issues", + "open_issues_count", + "license", + "pushed_at", + "size", + "ssh_url", + "stargazers_count", + "svn_url", + "watchers", + "watchers_count", + "created_at", + "updated_at" + ], + "title": "Repository", + "type": "object" + } + } + } + }, + "insertionIndex": 85 + }, + { + "id": "62691c84-0bc0-4273-9bde-197dc09f81be", + "name": "List repositories for the authenticated user (application/json)", + "request": { + "urlPath": "/user/repos", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 422, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/345185\",\n \"message\" : \"Aliquid est maxime et. Perferendis doloremque ex. Nulla non aut veniam voluptatibus dolore. Voluptatem hic voluptates id sunt.\",\n \"errors\" : [ {\n \"code\" : \"ioq0txwh5biw7zrfyt5mb6jkti3jwji55g1jcpw8y\",\n \"field\" : \"2rd0zg3ovk7pzibpijp1x6metkvgitqpvnqdy6sx6uukr6qacig0ikdtpnchdsrb7uzcnd\",\n \"resource\" : \"6bc2ee60tmf4z7wyjp60jgj3mx9fpdrdvjl4rr7v0uxcdiejzyjvgwsy57695f8elr4ldakq5b39o0qea3hbrejw6clhgxw62g8yu9qu1ujjsf7lwpiyxw1nqlkl6njqw6v7oioq4amtlsem33jykwwlwmsrr9ihgw78anrz5oksjwxk56c0ew31iaxw7b8jdy\",\n \"index\" : 1826397240679720564,\n \"message\" : \"Pariatur quia quam impedit eveniet. Repudiandae est sunt reprehenderit voluptates eaque. Nemo veniam ut ipsum dolores consequatur. Aperiam quasi aliquid velit ipsam aut accusamus. Et perspiciatis null\",\n \"value\" : { }\n } ]\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "62691c84-0bc0-4273-9bde-197dc09f81be", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.159512Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/list-for-authenticated-user", + "schema": { + "description": "Validation Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "errors": { + "items": { + "properties": { + "code": { + "type": "string" + }, + "field": { + "type": "string" + }, + "index": { + "type": "integer" + }, + "message": { + "type": "string" + }, + "resource": { + "type": "string" + }, + "value": { + "oneOf": [ + { + "nullable": true, + "type": "string" + }, + { + "nullable": true, + "type": "integer" + }, + { + "items": { + "type": "string" + }, + "nullable": true, + "type": "array" + } + ] + } + }, + "required": ["code"], + "type": "object" + }, + "type": "array" + }, + "message": { + "type": "string" + } + }, + "required": ["message", "documentation_url"], + "title": "Validation Error", + "type": "object" + } + } + } + }, + "insertionIndex": 86 + }, + { + "id": "bb6defb5-7b5e-4ef2-ad3b-b9823857a9c9", + "name": "List repositories for the authenticated user (application/json)", + "request": { + "urlPath": "/user/repos", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 403, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/063739\",\n \"message\" : \"Ea enim aut. Aliquid est omnis aperiam repellat ea. Nam et sunt dolor. Ea est quos odio nesciunt.\",\n \"url\" : \"https://web.example.mocklab.io/352246\",\n \"status\" : \"o2h5jqvrq4nweah3ua58550g3jy1u0j1lb0xom5vj3wpeqt8m0d8ocutr0t0szjmwiqy6pvde52v7c2c8l7f3h2uyb3eqxqruvocye62f5syikg9wjivs9oopv3s0317maataali1x7e\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "bb6defb5-7b5e-4ef2-ad3b-b9823857a9c9", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.159214Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/list-for-authenticated-user", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 87 + }, + { + "id": "5e21b5cb-fd4e-4052-a013-084e164dca64", + "name": "List repositories for the authenticated user (application/json)", + "request": { + "urlPath": "/user/repos", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 401, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/917401\",\n \"message\" : \"Repellendus non nisi eligendi autem molestiae enim est. Qui earum adipisci suscipit rerum et enim laborum. Fugit explicabo et molestias nihil consequatur. Culpa quis ut vel quia voluptatum saepe eos. \",\n \"url\" : \"https://web.example.mocklab.io/056769\",\n \"status\" : \"iaapmj7rbj76qw5wmdfrzwmpnhzna3ldlae9mk3jicf93lor7fekuha1kfnemy4uba0u1pcnuv3n8ygvjr6baqw2vc9ohr5igk31uk03kcgn5bdz4e39m9g421dapua7iasoazwxemh4xxvo60aa3x18j14ovz60vg6g914fv\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "5e21b5cb-fd4e-4052-a013-084e164dca64", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.15901Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/list-for-authenticated-user", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 88 + }, + { + "id": "13b9e1a7-21ca-464f-a392-79851667a901", + "name": "List repositories for the authenticated user - 304", + "request": { + "urlPath": "/user/repos", + "method": "GET" + }, + "response": { + "status": 304 + }, + "uuid": "13b9e1a7-21ca-464f-a392-79851667a901", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.158802Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/list-for-authenticated-user" + } + } + }, + "insertionIndex": 89 + }, + { + "id": "11727b8b-8c50-499b-8320-7d3fb5a12426", + "name": "List repositories for the authenticated user (application/json) - default", + "request": { + "urlPath": "/user/repos", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 200, + "body": "[ {\n \"allow_merge_commit\" : true,\n \"allow_rebase_merge\" : true,\n \"allow_squash_merge\" : true,\n \"archive_url\" : \"https://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref}\",\n \"archived\" : false,\n \"assignees_url\" : \"https://api.github.com/repos/octocat/Hello-World/assignees{/user}\",\n \"blobs_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/blobs{/sha}\",\n \"branches_url\" : \"https://api.github.com/repos/octocat/Hello-World/branches{/branch}\",\n \"clone_url\" : \"https://github.com/octocat/Hello-World.git\",\n \"collaborators_url\" : \"https://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator}\",\n \"comments_url\" : \"https://api.github.com/repos/octocat/Hello-World/comments{/number}\",\n \"commits_url\" : \"https://api.github.com/repos/octocat/Hello-World/commits{/sha}\",\n \"compare_url\" : \"https://api.github.com/repos/octocat/Hello-World/compare/{base}...{head}\",\n \"contents_url\" : \"https://api.github.com/repos/octocat/Hello-World/contents/{+path}\",\n \"contributors_url\" : \"https://api.github.com/repos/octocat/Hello-World/contributors\",\n \"created_at\" : \"2011-01-26T19:01:12Z\",\n \"default_branch\" : \"master\",\n \"delete_branch_on_merge\" : true,\n \"deployments_url\" : \"https://api.github.com/repos/octocat/Hello-World/deployments\",\n \"description\" : \"This your first repo!\",\n \"disabled\" : false,\n \"downloads_url\" : \"https://api.github.com/repos/octocat/Hello-World/downloads\",\n \"events_url\" : \"https://api.github.com/repos/octocat/Hello-World/events\",\n \"fork\" : false,\n \"forks\" : 1,\n \"forks_count\" : 9,\n \"forks_url\" : \"https://api.github.com/repos/octocat/Hello-World/forks\",\n \"full_name\" : \"octocat/Hello-World\",\n \"git_commits_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/commits{/sha}\",\n \"git_refs_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/refs{/sha}\",\n \"git_tags_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/tags{/sha}\",\n \"git_url\" : \"git:github.com/octocat/Hello-World.git\",\n \"has_downloads\" : true,\n \"has_issues\" : true,\n \"has_pages\" : false,\n \"has_projects\" : true,\n \"has_wiki\" : true,\n \"homepage\" : \"https://github.com\",\n \"hooks_url\" : \"https://api.github.com/repos/octocat/Hello-World/hooks\",\n \"html_url\" : \"https://github.com/octocat/Hello-World\",\n \"id\" : 1296269,\n \"is_template\" : true,\n \"issue_comment_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/comments{/number}\",\n \"issue_events_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/events{/number}\",\n \"issues_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues{/number}\",\n \"keys_url\" : \"https://api.github.com/repos/octocat/Hello-World/keys{/key_id}\",\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World/labels{/name}\",\n \"languages_url\" : \"https://api.github.com/repos/octocat/Hello-World/languages\",\n \"license\" : {\n \"html_url\" : \"https://github.com/licenses/mit\",\n \"key\" : \"mit\",\n \"name\" : \"MIT License\",\n \"node_id\" : \"MDc6TGljZW5zZW1pdA==\",\n \"spdx_id\" : \"MIT\",\n \"url\" : \"https://api.github.com/licenses/mit\"\n },\n \"merges_url\" : \"https://api.github.com/repos/octocat/Hello-World/merges\",\n \"milestones_url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones{/number}\",\n \"mirror_url\" : \"git:git.example.com/octocat/Hello-World\",\n \"name\" : \"Hello-World\",\n \"network_count\" : 0,\n \"node_id\" : \"MDEwOlJlcG9zaXRvcnkxMjk2MjY5\",\n \"notifications_url\" : \"https://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating}\",\n \"open_issues\" : 1,\n \"open_issues_count\" : 0,\n \"owner\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"permissions\" : {\n \"admin\" : false,\n \"pull\" : true,\n \"push\" : false\n },\n \"private\" : false,\n \"pulls_url\" : \"https://api.github.com/repos/octocat/Hello-World/pulls{/number}\",\n \"pushed_at\" : \"2011-01-26T19:06:43Z\",\n \"releases_url\" : \"https://api.github.com/repos/octocat/Hello-World/releases{/id}\",\n \"size\" : 108,\n \"ssh_url\" : \"git@github.com:octocat/Hello-World.git\",\n \"stargazers_count\" : 80,\n \"stargazers_url\" : \"https://api.github.com/repos/octocat/Hello-World/stargazers\",\n \"statuses_url\" : \"https://api.github.com/repos/octocat/Hello-World/statuses/{sha}\",\n \"subscribers_count\" : 42,\n \"subscribers_url\" : \"https://api.github.com/repos/octocat/Hello-World/subscribers\",\n \"subscription_url\" : \"https://api.github.com/repos/octocat/Hello-World/subscription\",\n \"svn_url\" : \"https://svn.github.com/octocat/Hello-World\",\n \"tags_url\" : \"https://api.github.com/repos/octocat/Hello-World/tags\",\n \"teams_url\" : \"https://api.github.com/repos/octocat/Hello-World/teams\",\n \"temp_clone_token\" : \"ABTLWHOULUVAXGTRYU7OC2876QJ2O\",\n \"topics\" : [ \"octocat\", \"atom\", \"electron\", \"api\" ],\n \"trees_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/trees{/sha}\",\n \"updated_at\" : \"2011-01-26T19:14:43Z\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World\",\n \"visibility\" : \"public\",\n \"watchers\" : 1,\n \"watchers_count\" : 80\n} ]", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "11727b8b-8c50-499b-8320-7d3fb5a12426", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.158779Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/list-for-authenticated-user", + "schema": { + "items": { + "$ref": "#/components/schemas/repository" + }, + "type": "array" + } + } + } + }, + "insertionIndex": 90 + }, + { + "id": "81ee69bf-ba91-47da-a011-8b3e5b20ef45", + "name": "List public email addresses for the authenticated user (application/json)", + "request": { + "urlPath": "/user/public_emails", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/090420\",\n \"message\" : \"Vel in sit. Est accusamus accusantium tempora molestiae laboriosam exercitationem totam. Sunt ut asperiores aliquam. Magnam et consectetur architecto.\",\n \"url\" : \"https://web.example.mocklab.io/154205\",\n \"status\" : \"s5kb083v0c8adoe52ayi3f2r14dx1971zr9kwu3\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "81ee69bf-ba91-47da-a011-8b3e5b20ef45", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.158723Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "users/list-public-emails-for-authenticated", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 91 + }, + { + "id": "f4ffb078-0f41-42b1-8955-dc5adecd0cf0", + "name": "List public email addresses for the authenticated user (application/json)", + "request": { + "urlPath": "/user/public_emails", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 403, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/070190\",\n \"message\" : \"Reprehenderit ut vel quaerat earum in quisquam odit. Est sit nisi atque consequuntur. Aperiam officiis eveniet porro aut harum.\",\n \"url\" : \"https://web.example.mocklab.io/508081\",\n \"status\" : \"3ihb85v2ykckherazu8u6body9k9rbzy32snsfopk4xb6nto2gzsfqa70690shepqvrva0163zzzqm4vjy3vekvt601nyil7ebffwveag1id7mscnk2t00a03jbws2zunchsv9odfq1fe41mquupdq3c\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "f4ffb078-0f41-42b1-8955-dc5adecd0cf0", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.158518Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "users/list-public-emails-for-authenticated", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 92 + }, + { + "id": "0b437cc8-eba7-435c-bc78-9690f0c7393f", + "name": "List public email addresses for the authenticated user (application/json)", + "request": { + "urlPath": "/user/public_emails", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 401, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/667266\",\n \"message\" : \"Tempora omnis deleniti. Quia velit consequatur qui qui repellendus. Ut sint ipsum. Reprehenderit omnis rerum ex iste.\",\n \"url\" : \"https://web.example.mocklab.io/903472\",\n \"status\" : \"cw0b8nbxvybn67u7eis3i3xu4i0oodkvh9vxttizutv46b23jwbtndidscxntnjgcd6og1r4b8ay1dk4dr5u0nndv9im3i6mp\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "0b437cc8-eba7-435c-bc78-9690f0c7393f", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.158311Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "users/list-public-emails-for-authenticated", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 93 + }, + { + "id": "759d1584-581c-4048-bdc1-1734c18fe711", + "name": "List public email addresses for the authenticated user - 304", + "request": { + "urlPath": "/user/public_emails", + "method": "GET" + }, + "response": { + "status": 304 + }, + "uuid": "759d1584-581c-4048-bdc1-1734c18fe711", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.158112Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "users/list-public-emails-for-authenticated" + } + } + }, + "insertionIndex": 94 + }, + { + "id": "9d317589-db91-4e59-bf61-496daf43bd06", + "name": "List public email addresses for the authenticated user (application/json) - default", + "request": { + "urlPath": "/user/public_emails", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 200, + "body": "[ {\n \"email\" : \"octocat@github.com\",\n \"primary\" : true,\n \"verified\" : true,\n \"visibility\" : \"public\"\n} ]", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "9d317589-db91-4e59-bf61-496daf43bd06", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.158089Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "users/list-public-emails-for-authenticated", + "schema": { + "items": { + "$ref": "#/components/schemas/email" + }, + "type": "array" + } + } + } + }, + "insertionIndex": 95 + }, + { + "id": "8afe1572-ce5c-4b0c-9e7a-edcf697ec6c2", + "name": "Create a user project (application/json)", + "request": { + "urlPath": "/user/projects", + "method": "POST", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 422, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/063540\",\n \"message\" : \"Quibusdam eveniet quod et natus amet ex. Ut consequatur odio. Blanditiis animi optio temporibus.\",\n \"errors\" : [ \"fdtbgt5moco5dnudt18t178eekcpdklkt085x7gyn94phb1x2b3x5iptrdi0ju4z3bp1hld4wy74h\", \"p569\", \"tvm44j1z4lwe6mutwj5kbc0ejn45\", \"jgx79sbked5mjus7tr87dfbrgen255ckw87ksbe7ow3smsxxpd6q587ovpa3yltu1wmmmjfe4k4i2abibov3z2i90z5zb67l9fpbdfx8stuesbpszh2qcg5w48kke4ltanylgx141j3fv8d9hhxk27bbfgf75dg02gowvirb7qim3l7u\" ]\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "8afe1572-ce5c-4b0c-9e7a-edcf697ec6c2", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.158046Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "projects/create-for-authenticated-user", + "schema": { + "description": "Validation Error Simple", + "properties": { + "documentation_url": { + "type": "string" + }, + "errors": { + "items": { + "type": "string" + }, + "type": "array" + }, + "message": { + "type": "string" + } + }, + "required": ["message", "documentation_url"], + "title": "Validation Error Simple", + "type": "object" + } + } + } + }, + "insertionIndex": 96 + }, + { + "id": "71e98389-aa07-48e2-b643-1bf8d750e435", + "name": "Create a user project (application/json)", + "request": { + "urlPath": "/user/projects", + "method": "POST", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 415, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/528063\",\n \"message\" : \"Iste illum et perspiciatis non sit numquam. Doloribus architecto quod. Repellendus cum aut.\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "71e98389-aa07-48e2-b643-1bf8d750e435", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.157876Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "projects/create-for-authenticated-user", + "schema": { + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": ["message", "documentation_url"], + "type": "object" + } + } + } + }, + "insertionIndex": 97 + }, + { + "id": "149fd974-7257-47a6-996b-99f3b80a65ab", + "name": "Create a user project (application/json)", + "request": { + "urlPath": "/user/projects", + "method": "POST", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 403, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/702125\",\n \"message\" : \"Explicabo quia esse neque voluptate. Eaque a voluptatem voluptatem earum laborum. Ipsa recusandae asperiores hic sint.\",\n \"url\" : \"https://web.example.mocklab.io/683202\",\n \"status\" : \"8mauemthofbag7ifuw1nwe3wyhsi0twrzzfr7hqf055qxnoqydyr2koxbxm3i2dvsgjacyvh84d2lx45aroy5ao26sp2j8ar8tgrf6p\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "149fd974-7257-47a6-996b-99f3b80a65ab", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.157739Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "projects/create-for-authenticated-user", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 98 + }, + { + "id": "57e37bd4-5713-4d89-908b-437776bbcb26", + "name": "Create a user project (application/json)", + "request": { + "urlPath": "/user/projects", + "method": "POST", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 401, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/174256\",\n \"message\" : \"Reiciendis et velit ab debitis unde nostrum. Impedit ipsum placeat nesciunt odio cupiditate. Officia odit debitis. Harum voluptatem est ea voluptas et dolore. Velit officiis quia esse.\",\n \"url\" : \"https://web.example.mocklab.io/849756\",\n \"status\" : \"dbrmroptuv5jdgooe09u7ljumsl69wfop5c44ymvf4rud513m64brtpcrffxpe2d5brd1mvbsf1462n97u59m3gjq2ub863cc6uy6bml2rnqorpl51yxn718wl7bixvvv2zhcq1cgi0lm5nopnseao7eck2ej75ipnjc9a3l72t4qft93lb82uq7e7z6bbtu35qe\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "57e37bd4-5713-4d89-908b-437776bbcb26", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.157539Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "projects/create-for-authenticated-user", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 99 + }, + { + "id": "df2b06f8-8b86-4026-b8f0-b8f7f79b8730", + "name": "Create a user project - 304", + "request": { + "urlPath": "/user/projects", + "method": "POST" + }, + "response": { + "status": 304 + }, + "uuid": "df2b06f8-8b86-4026-b8f0-b8f7f79b8730", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.157336Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "projects/create-for-authenticated-user" + } + } + }, + "insertionIndex": 100 + }, + { + "id": "1201f63d-d1a9-4706-8cd5-bec4d54cc58c", + "name": "Create a user project (application/json) - default", + "request": { + "urlPath": "/user/projects", + "method": "POST", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 201, + "body": "{\n \"body\" : \"A board to manage my personal projects.\",\n \"columns_url\" : \"https://api.github.com/projects/1002603/columns\",\n \"created_at\" : \"2011-04-10T20:09:31Z\",\n \"creator\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"html_url\" : \"https://github.com/users/octocat/projects/1\",\n \"id\" : 1002603,\n \"name\" : \"My Projects\",\n \"node_id\" : \"MDc6UHJvamVjdDEwMDI2MDM=\",\n \"number\" : 1,\n \"owner_url\" : \"https://api.github.com/users/octocat\",\n \"state\" : \"open\",\n \"updated_at\" : \"2014-03-03T18:58:10Z\",\n \"url\" : \"https://api.github.com/projects/1002603\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "1201f63d-d1a9-4706-8cd5-bec4d54cc58c", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.157306Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "projects/create-for-authenticated-user", + "schema": { + "description": "Projects are a way to organize columns and cards of work.", + "properties": { + "body": { + "description": "Body of the project", + "example": "This project represents the sprint of the first week in January", + "nullable": true, + "type": "string" + }, + "columns_url": { + "example": "https://api.github.com/projects/1002604/columns", + "format": "uri", + "type": "string" + }, + "created_at": { + "example": "2011-04-10T20:09:31Z", + "format": "date-time", + "type": "string" + }, + "creator": { + "$ref": "#/components/schemas/nullable-simple-user" + }, + "html_url": { + "example": "https://github.com/api-playground/projects-test/projects/12", + "format": "uri", + "type": "string" + }, + "id": { + "example": 1002604, + "type": "integer" + }, + "name": { + "description": "Name of the project", + "example": "Week One Sprint", + "type": "string" + }, + "node_id": { + "example": "MDc6UHJvamVjdDEwMDI2MDQ=", + "type": "string" + }, + "number": { + "example": 1, + "type": "integer" + }, + "organization_permission": { + "description": "The baseline permission that all organization members have on this project. Only present if owner is an organization.", + "enum": ["read", "write", "admin", "none"], + "type": "string" + }, + "owner_url": { + "example": "https://api.github.com/repos/api-playground/projects-test", + "format": "uri", + "type": "string" + }, + "private": { + "description": "Whether or not this project can be seen by everyone. Only present if owner is an organization.", + "type": "boolean" + }, + "state": { + "description": "State of the project; either 'open' or 'closed'", + "example": "open", + "type": "string" + }, + "updated_at": { + "example": "2014-03-03T18:58:10Z", + "format": "date-time", + "type": "string" + }, + "url": { + "example": "https://api.github.com/projects/1002604", + "format": "uri", + "type": "string" + } + }, + "required": [ + "id", + "node_id", + "number", + "name", + "body", + "state", + "url", + "html_url", + "owner_url", + "creator", + "columns_url", + "created_at", + "updated_at" + ], + "title": "Project", + "type": "object" + } + } + } + }, + "insertionIndex": 101 + }, + { + "id": "40bde397-6746-46f7-a9fb-4d7d67f3df51", + "name": "List organizations for the authenticated user (application/json)", + "request": { + "urlPath": "/user/orgs", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 403, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/095272\",\n \"message\" : \"Et quo culpa hic qui labore. Dolor impedit rerum similique ipsam. Quidem quaerat doloribus exercitationem.\",\n \"url\" : \"https://web.example.mocklab.io/784608\",\n \"status\" : \"9j4fqtflq4ded59ok\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "40bde397-6746-46f7-a9fb-4d7d67f3df51", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.157156Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "orgs/list-for-authenticated-user", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 102 + }, + { + "id": "0bd8e8d5-b5d3-4221-911c-cb8f485c4835", + "name": "List organizations for the authenticated user (application/json)", + "request": { + "urlPath": "/user/orgs", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 401, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/962013\",\n \"message\" : \"Ducimus voluptas et ut. Consequatur doloremque quidem earum cum dicta ratione. Quod officia aliquam nihil voluptatem voluptate dolorum.\",\n \"url\" : \"https://web.example.mocklab.io/556300\",\n \"status\" : \"kbbmqy8kpjbznedkmv2a3oqraoi4u9wsxtpmui5h6\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "0bd8e8d5-b5d3-4221-911c-cb8f485c4835", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.156954Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "orgs/list-for-authenticated-user", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 103 + }, + { + "id": "38cd087f-1cdc-4fcb-9aa0-645838266e33", + "name": "List organizations for the authenticated user - 304", + "request": { + "urlPath": "/user/orgs", + "method": "GET" + }, + "response": { + "status": 304 + }, + "uuid": "38cd087f-1cdc-4fcb-9aa0-645838266e33", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.156753Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "orgs/list-for-authenticated-user" + } + } + }, + "insertionIndex": 104 + }, + { + "id": "818af065-b3ab-42e9-8105-d85a8d449685", + "name": "List organizations for the authenticated user (application/json) - default", + "request": { + "urlPath": "/user/orgs", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 200, + "body": "[ {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"description\" : \"A great organization\",\n \"events_url\" : \"https://api.github.com/orgs/github/events\",\n \"hooks_url\" : \"https://api.github.com/orgs/github/hooks\",\n \"id\" : 1,\n \"issues_url\" : \"https://api.github.com/orgs/github/issues\",\n \"login\" : \"github\",\n \"members_url\" : \"https://api.github.com/orgs/github/members{/member}\",\n \"node_id\" : \"MDEyOk9yZ2FuaXphdGlvbjE=\",\n \"public_members_url\" : \"https://api.github.com/orgs/github/public_members{/member}\",\n \"repos_url\" : \"https://api.github.com/orgs/github/repos\",\n \"url\" : \"https://api.github.com/orgs/github\"\n} ]", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "818af065-b3ab-42e9-8105-d85a8d449685", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.15673Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "orgs/list-for-authenticated-user", + "schema": { + "items": { + "$ref": "#/components/schemas/organization-simple" + }, + "type": "array" + } + } + } + }, + "insertionIndex": 105 + }, + { + "id": "5c185871-9d03-4fc4-ae19-d22614c88015", + "name": "Update an organization membership for the authenticated user", + "request": { + "urlPath": "/user/memberships/orgs/oiadn3u0dj7uy52szpnd7xggx9a1zzm60ar41q5zli4zbi3160jed5gyasihgweocscwwlp8nnlw6cm1tut0jsz0edlxt9979wwfsp0w3grjvgj9hpdhva13arfwbt8cfi872h07w8qu2e0g5nq1ad4721sto1ifxm0ic5p93ilnfozcjqymw4unx1vyur70vk0i76d", + "method": "PATCH" + }, + "response": { + "status": 422, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/021192\",\n \"message\" : \"Expedita nihil doloremque hic. Praesentium ea et. Nihil deleniti est enim quam. Explicabo commodi rerum ducimus voluptate rem.\",\n \"errors\" : [ {\n \"code\" : \"yrk38mricun8yltdyxken8qtarirk5yd1dv782kylk4gnr81b6l1amzh16ywkhmou2a1nrzekdkivcuqwsc3lw8uyeedg4qggm2o06vxmqsym71gpfa30xg9ntd56kb8vh3\",\n \"field\" : \"kbtqoy3u864m2ksgusnkj184ff2al84fu4lpg8uz07t56quv7hxzbnv75dqtgwdxj3t9tcflg6t6dwn9x6j1yty5oeg0r5a0zk3ecl40ob95x56xwvvxo0oe9hw3a68iimg8zlrgb361ohcbjfrxiuleo3\",\n \"resource\" : \"99mfk1pb1tv4za43cm8e44b4p0mh347d0bx2pvpttihb05npr8pq77dp2fo53u66331jydhflbwqwuarsc16q88zgsmgemy2f4272a5w4dts9j5ds2ofrgdbsb0zapx\",\n \"index\" : 7349734544809649503,\n \"message\" : \"Aspernatur non quos qui eius modi. Beatae perferendis architecto. Id est qui harum nobis sit ipsa fugiat. Autem libero rem consectetur.\",\n \"value\" : { }\n }, {\n \"code\" : \"54v0xdvnvkolp9vmuaso6bmctqcocw15v6luo3359bwpoyve87j1csdss3mes2lglbv9r4g49n5bluzinuc715za9ur2v8vjrwk6f2oy6rr9rcx8162w4p6mivmua8x\",\n \"field\" : \"cy95yseoaqmu2x82ldcht4qt57snycl4skzgc5wm40u43c8rnnllpubzkdcmn5jiximl7a5ltzmd5tkntybssbxx92rpjyiololumj5rx6x3d27ljord1mcfy9dgr6rbqqwxeof\",\n \"resource\" : \"uvv0zcq7pxb05zli6vqvwyolnd40pq74k6w02ziljmndr1zfafszl02jmofusl4i0sktcujsq4mbcp6ewsxabca5hxeusix4ga8q\",\n \"index\" : 9220276076972805386,\n \"message\" : \"Enim vel vel laborum quae alias. Tempore quisquam officia ad sit. Dolores incidunt quaerat aut at dolore. Odit delectus est pariatur sit.\",\n \"value\" : { }\n }, {\n \"code\" : \"lyhhn7rkgwhtp2khyd22lr8ia71mh9m6mf2ymurzackgp\",\n \"field\" : \"wz05tuk7ot0pgc3lwvx2ch4wf8qjqu6au1a7vjmf440h0gbw0gc1p5zulyv14kwicjhp\",\n \"resource\" : \"ip7qshd6n3h9mnkz7kgu9a84w4m1py6teqwwryrogpa9riscgf4dh82qsw5hpmhjys8094uzlczvbkz4ktk3hknogkxi7toquun6x0e5osnzo7byjke17zvmve2v\",\n \"index\" : 3342696283709563252,\n \"message\" : \"Et ipsum molestias. Ipsam consequatur modi nostrum quia nobis eaque dolore. Est soluta explicabo est repudiandae eius ut commodi.\",\n \"value\" : { }\n }, {\n \"code\" : \"ivlr196lwc8a2n1ldkb4zqeq89a2puof46qi336lbi3tnmryh2fb92398at2kxjjzs6392yahnvqcpmhwpyp8je3s0stxdvffoy4vs2ug3v52sykjfh7h0s1gnwmpy7\",\n \"field\" : \"fx84p9z5jbeyfrpxbn7tcz9xdl8cqpmvd0i1uv9g7o56jrptxjofm87hmly0k\",\n \"resource\" : \"r2rv0syge35dsi1l3r07ox0vdos9qv\",\n \"index\" : 4750096244984209252,\n \"message\" : \"Placeat asperiores veniam vel dolores. Voluptate ut asperiores recusandae eligendi alias officia. Non qui eos maiores aut. Consequatur qui iste optio molestiae tenetur et. Ut quo omnis et est quidem a\",\n \"value\" : { }\n }, {\n \"code\" : \"csm7sryrtf8ibika1skd\",\n \"field\" : \"zqdxelstxidgze7npbmsskh6rpfidp1m7o9cs7uwp3s0wy3qo2wp4c44q5yvijc4z2qza2zbr6gfu339nfpux6kw8jtqp8mcxb8wv9vgu0eb8urgoa1orea597bfzdarq4yg3ovh347e5tcfnyn3yhhnju2p6wwctwmmyeaqyvdp4ytne3tqqxd2cc5\",\n \"resource\" : \"2z5rwb9\",\n \"index\" : 8972586316101799403,\n \"message\" : \"Itaque cum qui. Corporis amet hic labore qui pariatur. Commodi est consectetur placeat. Temporibus molestiae perspiciatis eum earum eum aut. Eaque ut modi vitae nemo vel.\",\n \"value\" : { }\n }, {\n \"code\" : \"2w0kiwsxd8vaat1bn50kij33g8ufpgp4p0zc85agxraohbk9irzdjnh5otb3iengege8lpb59bvzhyztey7pm\",\n \"field\" : \"5frb1dvb6x94vhdmx8u8zdc4etepeqxdcku8w2l7cjtl0r6pumnk6v16utd0bf06j69kkelh3ek07klbd1273xd21gb47ik060ye0kr7f2cp6huadr48ykl7qu\",\n \"resource\" : \"wf9e47bjxyy0ek9eekmm1vbdzbn17xciz92s6oe5f2x7k0yjf1bd8hjgq\",\n \"index\" : 8381725919971574454,\n \"message\" : \"Aut vel aliquid corrupti consequatur. Vero aut ex in laborum sed veritatis. Ut consectetur qui corporis veniam. Dolor nobis voluptatem sed assumenda. Minima nobis aliquam qui illo.\",\n \"value\" : { }\n }, {\n \"code\" : \"u09\",\n \"field\" : \"162beczmq1v8le8xepd7bacpiut72f9wj4o7r93xfy9k28xptpis5trwea92gxfc8bczwr1u83weuaga5wb0fcxzgj7lrz9k4gk0jz0g1tyuwq2mefl7nf2p0x3b17r1aueibqd7li04ciq5fx1dj23v9n5t4rie3m7trmvcgqm7rk1\",\n \"resource\" : \"41assinid57gvlbdxf9y4poa77qdn8fagghqloltcolwmtw6y3fp40gkubmmjxxq46ki16xfomc7d18qqj4vdp9fcgto1pcskubczqkwhnk5ipomfoy29bvqh37vnu5m\",\n \"index\" : 1515157136203580333,\n \"message\" : \"Minus in debitis. Et placeat dignissimos fuga asperiores. Sint ratione praesentium consequuntur maiores velit at.\",\n \"value\" : { }\n }, {\n \"code\" : \"8gky3270vm09sooh521jhsafcut5qtaac097m9xzy1b1ohisks4sxan7vaj0zg7vztva98gcmfkwk36pt1qhjfy5cvwsj6zs60a6r8w5y7f2gr07j\",\n \"field\" : \"0fw4ua3thgnehv7evultwhp\",\n \"resource\" : \"vghv71nfty9gu8eq3eznvb1lrvv0b6ezmh8deyc0ud16hubckz2oonhqqjn7k46voedmti0x2wjb0fjnp1mtyna5xqorj1rqh74g3cm0\",\n \"index\" : 2765962383303207682,\n \"message\" : \"Odio atque et et exercitationem. Nulla dolor deserunt. Dolorum eum qui ea esse doloremque.\",\n \"value\" : { }\n } ]\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "5c185871-9d03-4fc4-ae19-d22614c88015", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.156687Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "orgs/update-membership-for-authenticated-user", + "schema": { + "description": "Validation Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "errors": { + "items": { + "properties": { + "code": { + "type": "string" + }, + "field": { + "type": "string" + }, + "index": { + "type": "integer" + }, + "message": { + "type": "string" + }, + "resource": { + "type": "string" + }, + "value": { + "oneOf": [ + { + "nullable": true, + "type": "string" + }, + { + "nullable": true, + "type": "integer" + }, + { + "items": { + "type": "string" + }, + "nullable": true, + "type": "array" + } + ] + } + }, + "required": ["code"], + "type": "object" + }, + "type": "array" + }, + "message": { + "type": "string" + } + }, + "required": ["message", "documentation_url"], + "title": "Validation Error", + "type": "object" + } + } + } + }, + "insertionIndex": 106 + }, + { + "id": "25cf3810-6e0e-45fa-b67a-5753aff58cea", + "name": "Update an organization membership for the authenticated user", + "request": { + "urlPath": "/user/memberships/orgs/5rt3u4ze6ee7i0x8bys1fvhvl2obiv3i4bt0yghd3t8solabdmqgc88fdbop9r3xq45mp3mojxaz", + "method": "PATCH" + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/206297\",\n \"message\" : \"Esse harum officiis voluptatem id adipisci ratione error. Rem et aliquam reiciendis. Harum qui est accusantium voluptates. Nobis eos nulla. Sit ducimus harum illo.\",\n \"url\" : \"https://web.example.mocklab.io/006929\",\n \"status\" : \"b7yfont4h5g12t18qbqbfkcmwjrup5pkcl280qugqulx5qz6bsnd2ty217m9e5do6nt7lp5t8aaoaj1cy0ohjvoka3tps86qomdykc3xpo5l21iw4wh5ojrfybupnm10vbfs8a09zwndwnr4hm218lqhawf99u\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "25cf3810-6e0e-45fa-b67a-5753aff58cea", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.15586Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "orgs/update-membership-for-authenticated-user", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 107 + }, + { + "id": "bcb43eb5-6b31-4616-aa67-468e51fc5403", + "name": "Update an organization membership for the authenticated user", + "request": { + "urlPath": "/user/memberships/orgs/60zc652pjhpy725pwsv63johj2ukrj5njjff5ap14kkau7xkglaomz9kocqxgj0pm", + "method": "PATCH" + }, + "response": { + "status": 403, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/510846\",\n \"message\" : \"Officia fugit exercitationem nesciunt aliquam tempora voluptatum. Consequuntur atque voluptatem ab consectetur quaerat. Cupiditate sunt magni est id eos. Labore aspernatur voluptas. Sit eveniet sed vo\",\n \"url\" : \"https://web.example.mocklab.io/114877\",\n \"status\" : \"2e0mnfisiw87jn76m4xs624fpkt06ru574l7fsjl7xaeud47zxkd0vqthh7badn1p7skom8yvz3a31eqwy4fsjb2dx3scwscluddlpift7e7\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "bcb43eb5-6b31-4616-aa67-468e51fc5403", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.155644Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "orgs/update-membership-for-authenticated-user", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 108 + }, + { + "id": "95f9030f-54ab-4fb7-9f47-24d49c6b8962", + "name": "Update an organization membership for the authenticated user - default", + "request": { + "urlPath": "/user/memberships/orgs/yf4lj9b68nnawpcykmrxmql192igss0meenzwaxpqsrxuc27vy8ny8sqib5ul7fzsx", + "method": "PATCH" + }, + "response": { + "status": 200, + "body": "{\n \"organization\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"description\" : \"A great organization\",\n \"events_url\" : \"https://api.github.com/orgs/github/events\",\n \"hooks_url\" : \"https://api.github.com/orgs/github/hooks\",\n \"id\" : 1,\n \"issues_url\" : \"https://api.github.com/orgs/github/issues\",\n \"login\" : \"github\",\n \"members_url\" : \"https://api.github.com/orgs/github/members{/member}\",\n \"node_id\" : \"MDEyOk9yZ2FuaXphdGlvbjE=\",\n \"public_members_url\" : \"https://api.github.com/orgs/github/public_members{/member}\",\n \"repos_url\" : \"https://api.github.com/orgs/github/repos\",\n \"url\" : \"https://api.github.com/orgs/github\"\n },\n \"organization_url\" : \"https://api.github.com/orgs/octocat\",\n \"role\" : \"admin\",\n \"state\" : \"active\",\n \"url\" : \"https://api.github.com/orgs/octocat/memberships/defunkt\",\n \"user\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n }\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "95f9030f-54ab-4fb7-9f47-24d49c6b8962", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.155424Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "orgs/update-membership-for-authenticated-user", + "schema": { + "description": "Org Membership", + "properties": { + "organization": { + "$ref": "#/components/schemas/organization-simple" + }, + "organization_url": { + "example": "https://api.github.com/orgs/octocat", + "format": "uri", + "type": "string" + }, + "permissions": { + "properties": { + "can_create_repository": { + "type": "boolean" + } + }, + "required": ["can_create_repository"], + "type": "object" + }, + "role": { + "description": "The user's membership type in the organization.", + "enum": ["admin", "member", "billing_manager"], + "example": "admin", + "type": "string" + }, + "state": { + "description": "The state of the member in the organization. The `pending` state indicates the user has not yet accepted an invitation.", + "enum": ["active", "pending"], + "example": "active", + "type": "string" + }, + "url": { + "example": "https://api.github.com/orgs/octocat/memberships/defunkt", + "format": "uri", + "type": "string" + }, + "user": { + "$ref": "#/components/schemas/nullable-simple-user" + } + }, + "required": ["state", "role", "organization_url", "url", "organization", "user"], + "title": "Org Membership", + "type": "object" + } + } + } + }, + "insertionIndex": 109 + }, + { + "id": "1f52b729-6e28-49a7-bcf1-6a2b92e128ca", + "name": "Get an organization membership for the authenticated user", + "request": { + "urlPath": "/user/memberships/orgs/cc0ki207319jbpwjnvz8x9v0e9g9s5y13d45gg8226dwdjfjw2qcqxicloxtwhuhk26pe6as3b905mgaimxwaigxq9kqgfmov2njt0h8g8l7yx8k7ewd9lsu03tggwpowoyz9htrs5zxp91npovy39kcvsffj39a42v", + "method": "GET" + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/425732\",\n \"message\" : \"Fugit enim sequi. Eum in et ipsam voluptatem tempore modi. In eligendi et laborum qui porro tenetur.\",\n \"url\" : \"https://web.example.mocklab.io/543477\",\n \"status\" : \"n8amb64fsmf7sxe7hrplh8kne9sbvl5znauhcxxrlfma1mrsqhmodoj2dj68wp19jhmp92bymx0y7ritmtn2co9hmh\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "1f52b729-6e28-49a7-bcf1-6a2b92e128ca", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.155337Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "orgs/get-membership-for-authenticated-user", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 110 + }, + { + "id": "9b288411-f646-4e4b-856f-b1a71ea85dfe", + "name": "Get an organization membership for the authenticated user", + "request": { + "urlPath": "/user/memberships/orgs/np0b7t4m3bh0qgsy50gq9dgfuovsporftssawswaw9v1aj5izxsrel9n793m5ufmcrvbey2gbvyx06rtggzh3dgyk6ed6es1o3f7a6kq4fm5l8bi5d98rbah2ehiw4s1lf3aze2yzg08gf4p818syh677pjxeg45c", + "method": "GET" + }, + "response": { + "status": 403, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/596251\",\n \"message\" : \"Quia earum commodi fugiat. Sed sed non porro excepturi laboriosam tempora ea. Quas a et alias animi eum architecto aut. Velit mollitia ratione. Amet laboriosam omnis.\",\n \"url\" : \"https://web.example.mocklab.io/799871\",\n \"status\" : \"wg2ifjfw4ju41l8msnagsilw9142un0755iog6oq8fe26vc9hk6p8t1s9lc3h8muic3ry2rwtcwnf4ntd7si1vchlmokoh2f5qkffzjdicjle78t82ia6xq8yq4x931o\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "9b288411-f646-4e4b-856f-b1a71ea85dfe", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.155127Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "orgs/get-membership-for-authenticated-user", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 111 + }, + { + "id": "203a7523-f9b2-43a8-8804-f91979922935", + "name": "Get an organization membership for the authenticated user - default", + "request": { + "urlPath": "/user/memberships/orgs/a5kumvoem46k4ahrcp2bgthf6shg86w9p7ar63h1gwx6tg67y8ztvqfbzkvp40y9b19v5qg8517ntpil4uzfjchmlrqr6eq9junsfjhkdvf3aaaordql4ef0xllihn3xyoyww7hht9byu691nmif201gqehq381032bmox3i095x6efn3hpyhbsvtduc3vc77biiv", + "method": "GET" + }, + "response": { + "status": 200, + "body": "{\n \"organization\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"description\" : \"A great organization\",\n \"events_url\" : \"https://api.github.com/orgs/github/events\",\n \"hooks_url\" : \"https://api.github.com/orgs/github/hooks\",\n \"id\" : 1,\n \"issues_url\" : \"https://api.github.com/orgs/github/issues\",\n \"login\" : \"github\",\n \"members_url\" : \"https://api.github.com/orgs/github/members{/member}\",\n \"node_id\" : \"MDEyOk9yZ2FuaXphdGlvbjE=\",\n \"public_members_url\" : \"https://api.github.com/orgs/github/public_members{/member}\",\n \"repos_url\" : \"https://api.github.com/orgs/github/repos\",\n \"url\" : \"https://api.github.com/orgs/github\"\n },\n \"organization_url\" : \"https://api.github.com/orgs/invitocat\",\n \"role\" : \"admin\",\n \"state\" : \"pending\",\n \"url\" : \"https://api.github.com/orgs/invitocat/memberships/defunkt\",\n \"user\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n }\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "203a7523-f9b2-43a8-8804-f91979922935", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.154904Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "orgs/get-membership-for-authenticated-user", + "schema": { + "description": "Org Membership", + "properties": { + "organization": { + "$ref": "#/components/schemas/organization-simple" + }, + "organization_url": { + "example": "https://api.github.com/orgs/octocat", + "format": "uri", + "type": "string" + }, + "permissions": { + "properties": { + "can_create_repository": { + "type": "boolean" + } + }, + "required": ["can_create_repository"], + "type": "object" + }, + "role": { + "description": "The user's membership type in the organization.", + "enum": ["admin", "member", "billing_manager"], + "example": "admin", + "type": "string" + }, + "state": { + "description": "The state of the member in the organization. The `pending` state indicates the user has not yet accepted an invitation.", + "enum": ["active", "pending"], + "example": "active", + "type": "string" + }, + "url": { + "example": "https://api.github.com/orgs/octocat/memberships/defunkt", + "format": "uri", + "type": "string" + }, + "user": { + "$ref": "#/components/schemas/nullable-simple-user" + } + }, + "required": ["state", "role", "organization_url", "url", "organization", "user"], + "title": "Org Membership", + "type": "object" + } + } + } + }, + "insertionIndex": 112 + }, + { + "id": "1f263323-f029-4fe3-8ca6-7e0077abc3ba", + "name": "List organization memberships for the authenticated user (application/json)", + "request": { + "urlPath": "/user/memberships/orgs", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 422, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/754475\",\n \"message\" : \"Fugit quasi voluptas omnis veniam aliquid. Ut excepturi nihil cum rerum fuga. Consequatur odio laudantium sed et modi et aliquid.\",\n \"errors\" : [ {\n \"code\" : \"9ht0wwwgj9kvd9ei41r5geafrgge7g4qlee73p3vthi93vyuj3\",\n \"field\" : \"tv9mx78nh6h7uxr1d7jm61n0bh4p0paqfgqxyz43s6r61mqy9zgalec6n0vy8oo2vv8k8z2e2tttqf8xmirgrdmpk5rh7og4x12uqxkmvwetm7rcbjdowkpqqfl2vyvtuptwu21\",\n \"resource\" : \"fc5jfkhc1hgn4ggh4mvrlwxbn7rb55hht8jyuu1ndx08eit45005wpxa748lubgy4pk135tvrdbcc2fzz4ujca0lgtb72hjgzi0fboo27nre27bt83gdu9m4zhwinbqy3cepqdvy4aqvomq5f4f2k\",\n \"index\" : 2009227050916795489,\n \"message\" : \"Velit fugit soluta voluptatem aliquam id earum. Autem quod animi. Voluptatem veritatis molestiae ad.\",\n \"value\" : { }\n }, {\n \"code\" : \"2vupjrh4zfhwwzhlxn1tos72pu08x1szmhtufrswgjigucxclm46koxobp6aolvjg6580810zv9i37g8pj1nr7ukpv35c9i1imm0bankpv5q8xhdssiu7lu98q4nuy25n17l0mawmzbc3xsbbah97z5w7n86s36x1bx2r3f3pej0xsq1hg3721wsnblxzsqbo8c5ged\",\n \"field\" : \"xe5iev87sym97puj9o40b8l6nrihgmkaend2kakzg8rv4k2sgulghd28apxcyuxooonarg7p27w1deloamu9a38ohh1fhzgojwkvozuymi8go7hw04z94agsolashy95k5cfednq9jbkdcdvlk\",\n \"resource\" : \"jl4mlkom8o2x6cjxysr6ehzagzhnva75nk0rrsv14gm5bhi6a527rmmdiern6o8nk5fpdo69ajiupyr6prmaitgagvyewpa0ncizuvwhtumsz873bmgz3huiytcxw0l1ib7gq5nyah3g5xu5s1jes33o46gyqlxyuc4\",\n \"index\" : 7343029291475392289,\n \"message\" : \"Quia tempora ipsum quam molestiae totam et. Laudantium explicabo molestiae ut ratione qui tenetur. Impedit iste eos minima. Tempore nesciunt nostrum natus impedit omnis facilis id.\",\n \"value\" : { }\n }, {\n \"code\" : \"w5lvyzakztp37xpko6l7qc33hyw76txsgtxq1x34kkef1job7b1s2v3zqrw2kju4wfu\",\n \"field\" : \"vb3iq7090vjpsi\",\n \"resource\" : \"h0p8g913f4lrybjxbn3ags5z7fmpog2f6ugk8ljnyj6pd44cbd6ucpuebd01u\",\n \"index\" : 3530564915508468939,\n \"message\" : \"Culpa ea neque doloribus consequuntur neque quo nemo. Voluptas minus iste quod maxime quidem. Vero delectus et ut aut.\",\n \"value\" : { }\n }, {\n \"code\" : \"xfiqtcc6gdewt3hcwufbatvxlf01y3fye7e50lgipjs4idpjj5wd9fsay3ghpcoa5bitqhghqy61b39or77temvhg7ulaggjy89y71b4yzw1smykycf0wnk9b62doy8cdd7ouwfmeukmp0h56b9mih4ms9h98neievij8x3n5mvx9fkuidxqdopk1wr1\",\n \"field\" : \"16h8hh029csho8p78ohlaqj1ykt1z3au8o7b5jeglxp3cmtaah37nosqnbp5d8yyjlp1cn41ek7epw7ge3ujlmk7hh905eer0hfzu4mfr61x\",\n \"resource\" : \"nsvlcgra6notrc6mnzjye0kjvczd45qkcdq2uwv6gbsagd3xa9g1tzitt47pm2c2u9lwrj9y7agdz3vap4h7tz81b7knatfbhz6mfhk69l10h8y9abgqb9aj0zl4sym0xprjvuw88beks23xt\",\n \"index\" : 2539605469636689391,\n \"message\" : \"Laudantium nihil ad numquam dolorum distinctio. Est dolores architecto quia non. Tenetur incidunt dolorem voluptatibus. Dolorum fugiat hic aut sed. Autem qui autem amet totam et laudantium debitis.\",\n \"value\" : { }\n }, {\n \"code\" : \"e1piaa89rxr6ki2ikgtgmcozw1u2gtsd0pc5283nmyxtt4pxjrl83943yhq7urhe15i2314btyp08z6r63moc8qo1bolb4uisnje8yhhuva2sao9povwvgjyiz0s4bnkd06ceirvjo1\",\n \"field\" : \"l32ohfhuy7w8lxbzhzcjhv8m6o1o3d99ytn8pnzv2pwjh5e3kxzpaof51orf93i4pzjw4vccixlzmwa2ol21krwhpow5xwupiirauti8kevlan3j8owxyynersjwyw5d2h7gmfbvah1hqntf8dmjq7khqjtiy1fjv960205uv17aivskwtrdmlbxeixczw5\",\n \"resource\" : \"jkvtn0onnl8qtf885xj22iggz11sc5865vgbpss1vmkyqd12krskylnyq24wejvzttfyo6cm3v4oaoj02u2i1txcj5lywvuuf6ckk99m643iuqslpegdzza\",\n \"index\" : 2169979579248656909,\n \"message\" : \"Blanditiis ea laudantium repudiandae suscipit nemo. Sit voluptatibus voluptatum repellat dolorem incidunt ducimus. Amet id recusandae. Quo ducimus recusandae voluptatem aut consequatur earum. Et dolor\",\n \"value\" : { }\n }, {\n \"code\" : \"wtctvi9lbnsacvf6bvty3uqte34ntt9khhth3yr47qv3ahg2tv1\",\n \"field\" : \"7xyv82cvfhxm0g3099q7ov4var9ahmt9eetux1d8yt7l\",\n \"resource\" : \"6f6zzr9i3lpgep95fj7iua4ly3ppt8r1wg78m5s2metmlj8rei5qo4tbydycjpko94i7ckfr8ypjb74staziewjhn0lp95nf3pht43iuwtdk094ygifj\",\n \"index\" : 9121432904980219781,\n \"message\" : \"Asperiores harum doloremque est veniam. Inventore perferendis voluptatem vero. Quaerat nemo sit facere. Est quos eum quia.\",\n \"value\" : { }\n }, {\n \"code\" : \"lmkl7kpjkoea8wswozqfgszlpuno3zlu73wqdmgbe34i6kfgr9wngo7pqftjy5bktwkag5h6z33j\",\n \"field\" : \"x9zeg5ad7r0h9i3yybeyj831ivcym5wurvad9xzan2s3npuuxtmsp01sqy6x51gbj16kyicsbuobu6fzbxz0esah2opa2oypwk8ewsml9kff70pddon29ii5ne9y7rxt3g4kdgozijw71hg9y94a2rvykwt8\",\n \"resource\" : \"g2oo2zs9zpqptefl0zrvvtu73zshq8rpjd7198vcfc9415mmx4qm9s86gc7br982rtvyoa97qhg5ptf3astei652txj7cmm2p9d7wp9zojeqm4y26e7gxb0h4agmz0b5kq1v7hw6wnz8ht2\",\n \"index\" : 1097936381860662148,\n \"message\" : \"Aliquid non est. Quia laudantium nihil ut velit blanditiis. Ab velit unde sint officiis quia quis voluptatum. Quia ut nihil animi. Beatae odio itaque et eligendi magnam.\",\n \"value\" : { }\n } ]\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "1f263323-f029-4fe3-8ca6-7e0077abc3ba", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.154784Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "orgs/list-memberships-for-authenticated-user", + "schema": { + "description": "Validation Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "errors": { + "items": { + "properties": { + "code": { + "type": "string" + }, + "field": { + "type": "string" + }, + "index": { + "type": "integer" + }, + "message": { + "type": "string" + }, + "resource": { + "type": "string" + }, + "value": { + "oneOf": [ + { + "nullable": true, + "type": "string" + }, + { + "nullable": true, + "type": "integer" + }, + { + "items": { + "type": "string" + }, + "nullable": true, + "type": "array" + } + ] + } + }, + "required": ["code"], + "type": "object" + }, + "type": "array" + }, + "message": { + "type": "string" + } + }, + "required": ["message", "documentation_url"], + "title": "Validation Error", + "type": "object" + } + } + } + }, + "insertionIndex": 113 + }, + { + "id": "583d213d-52f2-40d9-b8e3-f6f242f1c0ad", + "name": "List organization memberships for the authenticated user (application/json)", + "request": { + "urlPath": "/user/memberships/orgs", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 403, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/201747\",\n \"message\" : \"Modi et accusantium. Aperiam animi facilis est ut molestiae. Voluptatem dicta culpa. Iste consequatur magni consequatur quae blanditiis non.\",\n \"url\" : \"https://web.example.mocklab.io/379150\",\n \"status\" : \"mvo7yi\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "583d213d-52f2-40d9-b8e3-f6f242f1c0ad", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.154035Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "orgs/list-memberships-for-authenticated-user", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 114 + }, + { + "id": "11a7cc4b-dd5a-46cb-b677-a85297e67385", + "name": "List organization memberships for the authenticated user (application/json)", + "request": { + "urlPath": "/user/memberships/orgs", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 401, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/527755\",\n \"message\" : \"Autem id modi aut. Molestiae dolorem natus cum laborum officia. Rerum at non et odio fugiat beatae magnam.\",\n \"url\" : \"https://web.example.mocklab.io/767871\",\n \"status\" : \"rlc6u8xgyggl3p71adoomy7j9zalu3b1zxutsqwo7946tp20e2635qetwngz0dfyw2lhkqvth99sjo4twnys8ayenntfzhhwxr8dffwfkjv0lta89fhss1m64wmjdw4heu3a91lio2v97s5owu2qto3o0khbfxui\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "11a7cc4b-dd5a-46cb-b677-a85297e67385", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.153828Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "orgs/list-memberships-for-authenticated-user", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 115 + }, + { + "id": "52556d85-9263-4f26-b9cb-47eb1979c555", + "name": "List organization memberships for the authenticated user - 304", + "request": { + "urlPath": "/user/memberships/orgs", + "method": "GET" + }, + "response": { + "status": 304 + }, + "uuid": "52556d85-9263-4f26-b9cb-47eb1979c555", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.153632Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "orgs/list-memberships-for-authenticated-user" + } + } + }, + "insertionIndex": 116 + }, + { + "id": "e1e09773-7a97-4930-af91-f6fee8bf18dc", + "name": "List organization memberships for the authenticated user (application/json) - default", + "request": { + "urlPath": "/user/memberships/orgs", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 200, + "body": "[ {\n \"organization\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"description\" : \"A great organization\",\n \"events_url\" : \"https://api.github.com/orgs/github/events\",\n \"hooks_url\" : \"https://api.github.com/orgs/github/hooks\",\n \"id\" : 1,\n \"issues_url\" : \"https://api.github.com/orgs/github/issues\",\n \"login\" : \"github\",\n \"members_url\" : \"https://api.github.com/orgs/github/members{/member}\",\n \"node_id\" : \"MDEyOk9yZ2FuaXphdGlvbjE=\",\n \"public_members_url\" : \"https://api.github.com/orgs/github/public_members{/member}\",\n \"repos_url\" : \"https://api.github.com/orgs/github/repos\",\n \"url\" : \"https://api.github.com/orgs/github\"\n },\n \"organization_url\" : \"https://api.github.com/orgs/octocat\",\n \"role\" : \"admin\",\n \"state\" : \"active\",\n \"url\" : \"https://api.github.com/orgs/octocat/memberships/defunkt\",\n \"user\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n }\n}, {\n \"organization\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"description\" : \"A great organization\",\n \"events_url\" : \"https://api.github.com/orgs/github/events\",\n \"hooks_url\" : \"https://api.github.com/orgs/github/hooks\",\n \"id\" : 1,\n \"issues_url\" : \"https://api.github.com/orgs/github/issues\",\n \"login\" : \"github\",\n \"members_url\" : \"https://api.github.com/orgs/github/members{/member}\",\n \"node_id\" : \"MDEyOk9yZ2FuaXphdGlvbjE=\",\n \"public_members_url\" : \"https://api.github.com/orgs/github/public_members{/member}\",\n \"repos_url\" : \"https://api.github.com/orgs/github/repos\",\n \"url\" : \"https://api.github.com/orgs/github\"\n },\n \"organization_url\" : \"https://api.github.com/orgs/invitocat\",\n \"role\" : \"admin\",\n \"state\" : \"pending\",\n \"url\" : \"https://api.github.com/orgs/invitocat/memberships/defunkt\",\n \"user\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n }\n} ]", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "e1e09773-7a97-4930-af91-f6fee8bf18dc", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.153608Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "orgs/list-memberships-for-authenticated-user", + "schema": { + "items": { + "$ref": "#/components/schemas/org-membership" + }, + "type": "array" + } + } + } + }, + "insertionIndex": 117 + }, + { + "id": "107cab82-6316-45f3-8e09-32ffcf49b1ea", + "name": "Get a public SSH key for the authenticated user (application/json)", + "request": { + "urlPath": "/user/keys/2051711330285908645", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/199192\",\n \"message\" : \"Et dolor vero ab sint dolore. Similique placeat fugit omnis dolores. Temporibus sit aliquid aliquam. Sint et distinctio ut aperiam et commodi. Perspiciatis nostrum reprehenderit vel.\",\n \"url\" : \"https://web.example.mocklab.io/139954\",\n \"status\" : \"bs90ban5afikvatzjpsm3qrat02hm5d56h2csqcsg7efe01yxs3ciy3g427ja0s0cy4hefsexlxaww3q8hai8ldnd8kbuyd8gt301ecn3w6n0319r2foeksm8d9jrhpfc0gx6pwag5o0\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "107cab82-6316-45f3-8e09-32ffcf49b1ea", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.153559Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "users/get-public-ssh-key-for-authenticated", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 118 + }, + { + "id": "fc8d2a6c-4d0e-46e6-8a1d-6e61949d97d0", + "name": "Get a public SSH key for the authenticated user (application/json)", + "request": { + "urlPath": "/user/keys/8096873449132377240", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 403, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/697630\",\n \"message\" : \"Tempora autem praesentium magnam vitae in distinctio dicta. Vel ratione optio et consequuntur. Quibusdam quis praesentium quia eos quia.\",\n \"url\" : \"https://web.example.mocklab.io/109777\",\n \"status\" : \"kyno79rhm7upvjr8lil8d73rqef39jh906lewdhnmmery9qn0y2e8m622oafsw2fruioow63yvxyq9tpwho4i2nl89fxur4a1whxgqf5bigdzk89e6rgfctn1b5q7g9xfqg91gjlt2q\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "fc8d2a6c-4d0e-46e6-8a1d-6e61949d97d0", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.153353Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "users/get-public-ssh-key-for-authenticated", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 119 + }, + { + "id": "b410cba8-3a5a-4557-8993-0b34c731a2d0", + "name": "Get a public SSH key for the authenticated user (application/json)", + "request": { + "urlPath": "/user/keys/2916672876028899702", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 401, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/582790\",\n \"message\" : \"Tempore animi blanditiis. Dolorem omnis expedita id dolores et libero neque. Illo nostrum ut doloribus ut autem. Minus iure excepturi nesciunt tenetur ducimus recusandae. Consectetur eum pariatur debi\",\n \"url\" : \"https://web.example.mocklab.io/910875\",\n \"status\" : \"cd509a0wew\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "b410cba8-3a5a-4557-8993-0b34c731a2d0", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.153153Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "users/get-public-ssh-key-for-authenticated", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 120 + }, + { + "id": "14f8edea-e9ff-4dd2-9ff1-8f061e65ec80", + "name": "Get a public SSH key for the authenticated user - 304", + "request": { + "urlPath": "/user/keys/5435805530371905167", + "method": "GET" + }, + "response": { + "status": 304 + }, + "uuid": "14f8edea-e9ff-4dd2-9ff1-8f061e65ec80", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.152945Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "users/get-public-ssh-key-for-authenticated" + } + } + }, + "insertionIndex": 121 + }, + { + "id": "697bbc95-5a08-46ab-ae62-70703578e207", + "name": "Get a public SSH key for the authenticated user (application/json) - default", + "request": { + "urlPath": "/user/keys/3529530874733043981", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 200, + "body": "{\n \"created_at\" : \"2020-06-11T21:31:57Z\",\n \"id\" : 2,\n \"key\" : \"2Sg8iYjAxxmI2LvUXpJjkYrMxURPc8r+dB7TJyvv1234\",\n \"read_only\" : false,\n \"title\" : \"ssh-rsa AAAAB3NzaC1yc2EAAA\",\n \"url\" : \"https://api.github.com/user/keys/2\",\n \"verified\" : false\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "697bbc95-5a08-46ab-ae62-70703578e207", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.152917Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "users/get-public-ssh-key-for-authenticated", + "schema": { + "description": "Key", + "properties": { + "created_at": { + "format": "date-time", + "type": "string" + }, + "id": { + "type": "integer" + }, + "key": { + "type": "string" + }, + "read_only": { + "type": "boolean" + }, + "title": { + "type": "string" + }, + "url": { + "type": "string" + }, + "verified": { + "type": "boolean" + } + }, + "required": ["key", "id", "url", "title", "created_at", "verified", "read_only"], + "title": "Key", + "type": "object" + } + } + } + }, + "insertionIndex": 122 + }, + { + "id": "66e50a1f-b27c-4b52-b182-fbf9b8513e0a", + "name": "Delete a public SSH key for the authenticated user (application/json)", + "request": { + "urlPath": "/user/keys/3263817221642137372", + "method": "DELETE", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/813567\",\n \"message\" : \"Quidem quo cum est ut voluptas voluptas. Dolorum porro iusto a est facere laborum. Laborum distinctio dolore enim esse laboriosam exercitationem nam.\",\n \"url\" : \"https://web.example.mocklab.io/127636\",\n \"status\" : \"1i0elss5qcee5nbxufth19ry6pvkrdn6vcu9lf5g48foqntowae2yt3yuqbh87n21lxdtqq187uww0k29yje92t9vgr13qu7l0xasq77upo2i0oz5p82hj2ssj7qakw5uhrt7l4wv64i9312\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "66e50a1f-b27c-4b52-b182-fbf9b8513e0a", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.152838Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "users/delete-public-ssh-key-for-authenticated", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 123 + }, + { + "id": "1a03b98b-ada1-44a6-b681-d730a2274996", + "name": "Delete a public SSH key for the authenticated user (application/json)", + "request": { + "urlPath": "/user/keys/5952874183095559829", + "method": "DELETE", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 403, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/157764\",\n \"message\" : \"Sit sit beatae. Consectetur cupiditate dicta. Tempore consequatur occaecati excepturi omnis alias sit. Dignissimos quia animi consequuntur. Dolorum minima blanditiis eaque cupiditate consectetur.\",\n \"url\" : \"https://web.example.mocklab.io/472837\",\n \"status\" : \"oyxe5a0tmcnv4nzf5he5mju9hugbvpfylfw8n8qsykzno0e3uydylfrvy49goyypg0wkskzra9vmns5xwswjt08khtcqfax3ec37gametilwzvz1ugawelxohwjub66ei1r03f3mnh6mqusjh6x58nnuf3z660\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "1a03b98b-ada1-44a6-b681-d730a2274996", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.152625Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "users/delete-public-ssh-key-for-authenticated", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 124 + }, + { + "id": "ec7bd24e-7e55-4d44-a370-687f21bb56cd", + "name": "Delete a public SSH key for the authenticated user (application/json)", + "request": { + "urlPath": "/user/keys/1370953798463816296", + "method": "DELETE", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 401, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/464240\",\n \"message\" : \"Laudantium blanditiis ut. Molestiae qui consequatur veniam sequi eos excepturi aut. Vel in unde ratione veniam quis ea perferendis. Odio consectetur qui omnis.\",\n \"url\" : \"https://web.example.mocklab.io/108262\",\n \"status\" : \"swla3qcllhp8tdgivp8y8echtya3qon2dpychypthtyw5mbyxnq55bwc54d0vfj\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "ec7bd24e-7e55-4d44-a370-687f21bb56cd", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.152415Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "users/delete-public-ssh-key-for-authenticated", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 125 + }, + { + "id": "f81539d5-9d05-4273-ac13-c104c84dbc14", + "name": "Delete a public SSH key for the authenticated user - 304", + "request": { + "urlPath": "/user/keys/6380102028335089860", + "method": "DELETE" + }, + "response": { + "status": 304 + }, + "uuid": "f81539d5-9d05-4273-ac13-c104c84dbc14", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.15221Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "users/delete-public-ssh-key-for-authenticated" + } + } + }, + "insertionIndex": 126 + }, + { + "id": "0ae459a6-7ebd-420a-8c7d-05014e95deac", + "name": "Delete a public SSH key for the authenticated user - 204", + "request": { + "urlPath": "/user/keys/7064605261977521442", + "method": "DELETE" + }, + "response": { + "status": 204 + }, + "uuid": "0ae459a6-7ebd-420a-8c7d-05014e95deac", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.152191Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "users/delete-public-ssh-key-for-authenticated" + } + } + }, + "insertionIndex": 127 + }, + { + "id": "27414f1c-fc98-4087-a136-7fd1de45a244", + "name": "Create a public SSH key for the authenticated user (application/json)", + "request": { + "urlPath": "/user/keys", + "method": "POST", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 422, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/478916\",\n \"message\" : \"Odit molestiae consequatur. Aut fugit eos perspiciatis aut facere. Est aut cum aut nesciunt.\",\n \"errors\" : [ {\n \"code\" : \"b5wmuq9s7p3uoym1tct0y3x8nyoh5yhoxckhz8c6x1cvm3ceaph2cccr7hfqax9jrfpwz4bt0wbh8iz8pkwsj50uu7rmhdjuhwmk5i1o4oc1p3pcn2gz2scw9qpdpp3h3hoce\",\n \"field\" : \"kuqhl1jn1jvgfm5oagoi6bojwwz8cxd9doyzg6ldfvm4d5icesz7ounoexi8a4orqw1q07f7ufi5k1c0doc5ybhuvs0kwfyicx4escm6ih7vyrrkz5quzudhwjoqbpfrutb5u6w5cnofqqrb7lzhvn4k470c5a0yxn2s\",\n \"resource\" : \"a680cnsh1v1g85c64xk9iuz0rbjrc7qjfjx8lza7du9qgmh8hcw39khzrant9lv1nd3xuktgmxbu5v4me1cjmjujqc0ve95knb2qgtacwm20nb2cysjuxaj80xw97zzlfpukx8kzeww\",\n \"index\" : 6844297827326101203,\n \"message\" : \"Non dolorem est ut debitis quos. Sit rerum hic dicta. Quod sapiente nemo explicabo. Rerum cum architecto quia.\",\n \"value\" : { }\n }, {\n \"code\" : \"bbbjwqwmjhra6avk9xgrol0e2n65zywgeehymgvh87r8yusujtihi5zoxt0t7vmsgkhoxk97jivbcpc8t3d1b6sjxpnw0dmhu7jb276kodvm9\",\n \"field\" : \"cu07cmjmr4hfvimvlc0bfvf9h2o6hs6zqd593yukyk8yr9legrqsue68dt68u0tqt11vb81ueqwpl29eowi54sma3ahna4mhkv4oc88cgromwr5ke2eis2c2x1bnliyajpv6webea1d5pe\",\n \"resource\" : \"wfw0pvyptyvcmzfftct0f393owvv8e3dgl9honnknzdbzxpxn93k7wpesd14tezsiu2rjzmh9d4xtxj2i4gwmw96w9a4l6ss27b92sk89nklp252ghvvzm1ci0u0lhvgjod5u40ch7mimpes6bst6yvr0h60tkk1f9m2ep313fdy04fksfr6oxlhztdx3au6h5w\",\n \"index\" : 3702799115567185900,\n \"message\" : \"Adipisci suscipit cum quia culpa. Hic accusamus perspiciatis occaecati ut velit dolores consequuntur. Numquam fugit quisquam in autem omnis dolorem.\",\n \"value\" : { }\n }, {\n \"code\" : \"yvwvmrq00m3vtrb9de2p5bgcd6qjzfrq3538o0p\",\n \"field\" : \"zspgwfmumhia2hwnqcfyck13jslthruee19m86y4gmybhuzzk4dyg12iccah3g1sks9qab8hrq3bez6qrbtux8bxja59mmpeeqpbb84b7u5\",\n \"resource\" : \"4lnwbm2d8emyd4mbc3nlq2agrix7c6l5cxuly2w5bs5\",\n \"index\" : 6823303946044546732,\n \"message\" : \"Rerum error minus ducimus. Aliquam aut dolores et praesentium. Non numquam quis fugiat iure et corrupti. Cum ut et ex consectetur aperiam. Qui doloremque nihil molestias molestiae.\",\n \"value\" : { }\n }, {\n \"code\" : \"sb3iz9idmocsrl15kklzc96wzmn2ekdq2yv5v\",\n \"field\" : \"cf1eq62xhzbjubfh0h5skrfc9mrg7w4s9egepepndfvt7sxy4s4gn6tla6xjj8j55t7stef40crryi6o2cbmdo6k515d4g7ptksyuqadk5shhxin1fclb1sge63ltck3w4qfufvanw5ca282xr7hd\",\n \"resource\" : \"yjr9uhpyvees6ge6k8b1eagsdlt4lpeuonwt5e0za5zvravx0bldvsr0o31d2ojkk573ofx1fwbyyg42t25zbbo5xfwswdh0i6lqlmtrwxcu31xbax3z5\",\n \"index\" : 7312653649698980966,\n \"message\" : \"Aliquid quia hic sapiente repellat odio harum. Quia deserunt minus non veritatis distinctio enim consequuntur. Ut et cum esse nemo magni voluptas. Atque et qui quo.\",\n \"value\" : { }\n } ]\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "27414f1c-fc98-4087-a136-7fd1de45a244", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.152151Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "users/create-public-ssh-key-for-authenticated", + "schema": { + "description": "Validation Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "errors": { + "items": { + "properties": { + "code": { + "type": "string" + }, + "field": { + "type": "string" + }, + "index": { + "type": "integer" + }, + "message": { + "type": "string" + }, + "resource": { + "type": "string" + }, + "value": { + "oneOf": [ + { + "nullable": true, + "type": "string" + }, + { + "nullable": true, + "type": "integer" + }, + { + "items": { + "type": "string" + }, + "nullable": true, + "type": "array" + } + ] + } + }, + "required": ["code"], + "type": "object" + }, + "type": "array" + }, + "message": { + "type": "string" + } + }, + "required": ["message", "documentation_url"], + "title": "Validation Error", + "type": "object" + } + } + } + }, + "insertionIndex": 128 + }, + { + "id": "a3db6623-5b1f-4644-8ce7-70f0cb42ac0b", + "name": "Create a public SSH key for the authenticated user (application/json)", + "request": { + "urlPath": "/user/keys", + "method": "POST", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/145042\",\n \"message\" : \"Maiores voluptatum et. Dolor quam nobis esse molestias et porro culpa. Tenetur ut occaecati velit.\",\n \"url\" : \"https://web.example.mocklab.io/055000\",\n \"status\" : \"a3553xhzlfgjpasrrc6b9412gnaakevb1o5e19nbitoyhihz1cxpb3h9q9wiznczz9gxspzwmbxtwgwco75nktur29lhjzym8uyghxw\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "a3db6623-5b1f-4644-8ce7-70f0cb42ac0b", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.151617Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "users/create-public-ssh-key-for-authenticated", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 129 + }, + { + "id": "0c9b5a13-c579-4b73-9593-5be514baf16f", + "name": "Create a public SSH key for the authenticated user (application/json)", + "request": { + "urlPath": "/user/keys", + "method": "POST", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 403, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/638131\",\n \"message\" : \"Officia numquam aspernatur nihil delectus excepturi reiciendis porro. Voluptas incidunt dolores sit tempore molestiae. Exercitationem veritatis aliquam et delectus repellendus. Aut libero dolorum moll\",\n \"url\" : \"https://web.example.mocklab.io/189040\",\n \"status\" : \"pegtprwtlfe6hsguw5q8pnxkc2bfq57llf85qv3meraxw1ge1zs0ax9fnho1pv4ya38htocehnadi9wl2q61vbhkjvrduejpkr6hawcra4derpbki30lw62g28388\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "0c9b5a13-c579-4b73-9593-5be514baf16f", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.151414Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "users/create-public-ssh-key-for-authenticated", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 130 + }, + { + "id": "64ebf892-36dc-4268-8494-da7bc4def75b", + "name": "Create a public SSH key for the authenticated user (application/json)", + "request": { + "urlPath": "/user/keys", + "method": "POST", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 401, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/875328\",\n \"message\" : \"Adipisci blanditiis rerum reprehenderit fugit odit. Aliquam iure eligendi. Expedita qui id modi quia maiores ipsum.\",\n \"url\" : \"https://web.example.mocklab.io/538112\",\n \"status\" : \"oo40jq5cov203mme4tfgmjoefvri8h6nh6t71sv7of722f616z2a7sxtbsgwx53elu02ooka03m4rfum4bg60kv183ds3zfhahz0na56k22\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "64ebf892-36dc-4268-8494-da7bc4def75b", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.151204Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "users/create-public-ssh-key-for-authenticated", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 131 + }, + { + "id": "cebc4305-0719-42ce-a694-b034912c9569", + "name": "Create a public SSH key for the authenticated user - 304", + "request": { + "urlPath": "/user/keys", + "method": "POST" + }, + "response": { + "status": 304 + }, + "uuid": "cebc4305-0719-42ce-a694-b034912c9569", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.151005Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "users/create-public-ssh-key-for-authenticated" + } + } + }, + "insertionIndex": 132 + }, + { + "id": "a52e4d55-35af-48a2-a431-2b1aaa4ebd4c", + "name": "Create a public SSH key for the authenticated user (application/json) - default", + "request": { + "urlPath": "/user/keys", + "method": "POST", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 201, + "body": "{\n \"created_at\" : \"2020-06-11T21:31:57Z\",\n \"id\" : 2,\n \"key\" : \"2Sg8iYjAxxmI2LvUXpJjkYrMxURPc8r+dB7TJyvv1234\",\n \"read_only\" : false,\n \"title\" : \"ssh-rsa AAAAB3NzaC1yc2EAAA\",\n \"url\" : \"https://api.github.com/user/keys/2\",\n \"verified\" : false\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "a52e4d55-35af-48a2-a431-2b1aaa4ebd4c", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.150979Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "users/create-public-ssh-key-for-authenticated", + "schema": { + "description": "Key", + "properties": { + "created_at": { + "format": "date-time", + "type": "string" + }, + "id": { + "type": "integer" + }, + "key": { + "type": "string" + }, + "read_only": { + "type": "boolean" + }, + "title": { + "type": "string" + }, + "url": { + "type": "string" + }, + "verified": { + "type": "boolean" + } + }, + "required": ["key", "id", "url", "title", "created_at", "verified", "read_only"], + "title": "Key", + "type": "object" + } + } + } + }, + "insertionIndex": 133 + }, + { + "id": "8fc93b49-eb84-47ca-9055-048f340f2ab8", + "name": "List public SSH keys for the authenticated user (application/json)", + "request": { + "urlPath": "/user/keys", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/990331\",\n \"message\" : \"Rerum harum esse. Doloremque nisi delectus cumque delectus sed. Quam nam rerum voluptatem. Natus in omnis. Dolore soluta voluptatem.\",\n \"url\" : \"https://web.example.mocklab.io/096438\",\n \"status\" : \"jxwh3q9qjpljm\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "8fc93b49-eb84-47ca-9055-048f340f2ab8", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.150891Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "users/list-public-ssh-keys-for-authenticated", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 134 + }, + { + "id": "ad30d9f5-62f8-437c-9b61-2104e56f44cc", + "name": "List public SSH keys for the authenticated user (application/json)", + "request": { + "urlPath": "/user/keys", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 403, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/239129\",\n \"message\" : \"Facilis non iste repudiandae optio explicabo quaerat. Perferendis eos aperiam natus aliquid ut iure. Voluptatem ut cupiditate assumenda aliquam rerum.\",\n \"url\" : \"https://web.example.mocklab.io/592098\",\n \"status\" : \"wv2t5xbs5lg9ij0bhhheqhddjf2bjg42fivexdbzq4xe24vxj9rzmt0uhrvta7uyho3l33sjn9atm00dd8\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "ad30d9f5-62f8-437c-9b61-2104e56f44cc", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.150683Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "users/list-public-ssh-keys-for-authenticated", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 135 + }, + { + "id": "6694c688-cd6c-4f0f-822d-4fb17de82410", + "name": "List public SSH keys for the authenticated user (application/json)", + "request": { + "urlPath": "/user/keys", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 401, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/458615\",\n \"message\" : \"Quasi commodi consequuntur aperiam a veniam beatae. Minus eaque a ratione. Eaque quaerat ut fugiat totam ad tenetur eveniet. Eum qui cupiditate saepe explicabo. Voluptatem numquam in ipsum.\",\n \"url\" : \"https://web.example.mocklab.io/896574\",\n \"status\" : \"tew46dlwa56tz71qc57zq8bwgn6zydumstl2ko7mi2lejfalsbv5hp6beir\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "6694c688-cd6c-4f0f-822d-4fb17de82410", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.150473Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "users/list-public-ssh-keys-for-authenticated", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 136 + }, + { + "id": "ddbbeb0b-4a52-4603-a7f4-4fefd71eea7b", + "name": "List public SSH keys for the authenticated user - 304", + "request": { + "urlPath": "/user/keys", + "method": "GET" + }, + "response": { + "status": 304 + }, + "uuid": "ddbbeb0b-4a52-4603-a7f4-4fefd71eea7b", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.150267Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "users/list-public-ssh-keys-for-authenticated" + } + } + }, + "insertionIndex": 137 + }, + { + "id": "1dab6788-943a-4b94-9944-04122260c997", + "name": "List public SSH keys for the authenticated user (application/json) - default", + "request": { + "urlPath": "/user/keys", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 200, + "body": "[ {\n \"created_at\" : \"2020-06-11T21:31:57Z\",\n \"id\" : 2,\n \"key\" : \"2Sg8iYjAxxmI2LvUXpJjkYrMxURPc8r+dB7TJyvv1234\",\n \"read_only\" : false,\n \"title\" : \"ssh-rsa AAAAB3NzaC1yc2EAAA\",\n \"url\" : \"https://api.github.com/user/keys/2\",\n \"verified\" : false\n}, {\n \"created_at\" : \"2020-07-11T21:31:57Z\",\n \"id\" : 3,\n \"key\" : \"2Sg8iYjAxxmI2LvUXpJjkYrMxURPc8r+dB7TJy931234\",\n \"read_only\" : false,\n \"title\" : \"ssh-rsa AAAAB3NzaC1yc2EAAB\",\n \"url\" : \"https://api.github.com/user/keys/3\",\n \"verified\" : false\n} ]", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "1dab6788-943a-4b94-9944-04122260c997", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.150245Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "users/list-public-ssh-keys-for-authenticated", + "schema": { + "items": { + "$ref": "#/components/schemas/key" + }, + "type": "array" + } + } + } + }, + "insertionIndex": 138 + }, + { + "id": "702e8fe3-d0a6-47b8-9b99-0811d2d30cde", + "name": "List user account issues assigned to the authenticated user (application/json)", + "request": { + "urlPath": "/user/issues", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/056152\",\n \"message\" : \"Unde iste rem alias amet vitae provident. Est similique et amet omnis. Amet ea provident quasi dolorem.\",\n \"url\" : \"https://web.example.mocklab.io/681150\",\n \"status\" : \"7sopbu4nzacdq672lu031ospln5v3me3355bn7xgnhd5dwgu5ij102xyn10rspm33t9hrcz28vlixqcks3kg1yieh9c737v\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "702e8fe3-d0a6-47b8-9b99-0811d2d30cde", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.150206Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "issues/list-for-authenticated-user", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 139 + }, + { + "id": "e9495fbe-9564-4453-af60-111818a50e07", + "name": "List user account issues assigned to the authenticated user - 304", + "request": { + "urlPath": "/user/issues", + "method": "GET" + }, + "response": { + "status": 304 + }, + "uuid": "e9495fbe-9564-4453-af60-111818a50e07", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.150008Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "issues/list-for-authenticated-user" + } + } + }, + "insertionIndex": 140 + }, + { + "id": "0ca3cc3c-8e0d-4893-a6e1-200522306609", + "name": "List user account issues assigned to the authenticated user (application/json) - default", + "request": { + "urlPath": "/user/issues", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 200, + "body": "[ {\n \"active_lock_reason\" : \"too heated\",\n \"assignee\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"assignees\" : [ {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n } ],\n \"author_association\" : \"COLLABORATOR\",\n \"body\" : \"I'm having a problem with this.\",\n \"comments\" : 0,\n \"comments_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347/comments\",\n \"created_at\" : \"2011-04-22T13:33:48Z\",\n \"events_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347/events\",\n \"html_url\" : \"https://github.com/octocat/Hello-World/issues/1347\",\n \"id\" : 1,\n \"labels\" : [ {\n \"color\" : \"f29513\",\n \"default\" : true,\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"name\" : \"bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/labels/bug\"\n } ],\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347/labels{/name}\",\n \"locked\" : true,\n \"milestone\" : {\n \"closed_at\" : \"2013-02-12T13:22:01Z\",\n \"closed_issues\" : 8,\n \"created_at\" : \"2011-04-10T20:09:31Z\",\n \"creator\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"description\" : \"Tracking milestone for version 1.0\",\n \"due_on\" : \"2012-10-09T23:39:01Z\",\n \"html_url\" : \"https://github.com/octocat/Hello-World/milestones/v1.0\",\n \"id\" : 1002604,\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones/1/labels\",\n \"node_id\" : \"MDk6TWlsZXN0b25lMTAwMjYwNA==\",\n \"number\" : 1,\n \"open_issues\" : 4,\n \"state\" : \"open\",\n \"title\" : \"v1.0\",\n \"updated_at\" : \"2014-03-03T18:58:10Z\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones/1\"\n },\n \"node_id\" : \"MDU6SXNzdWUx\",\n \"number\" : 1347,\n \"pull_request\" : {\n \"diff_url\" : \"https://github.com/octocat/Hello-World/pull/1347.diff\",\n \"html_url\" : \"https://github.com/octocat/Hello-World/pull/1347\",\n \"patch_url\" : \"https://github.com/octocat/Hello-World/pull/1347.patch\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/pulls/1347\"\n },\n \"repository\" : {\n \"allow_merge_commit\" : true,\n \"allow_rebase_merge\" : true,\n \"allow_squash_merge\" : true,\n \"archive_url\" : \"https://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref}\",\n \"archived\" : false,\n \"assignees_url\" : \"https://api.github.com/repos/octocat/Hello-World/assignees{/user}\",\n \"blobs_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/blobs{/sha}\",\n \"branches_url\" : \"https://api.github.com/repos/octocat/Hello-World/branches{/branch}\",\n \"clone_url\" : \"https://github.com/octocat/Hello-World.git\",\n \"collaborators_url\" : \"https://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator}\",\n \"comments_url\" : \"https://api.github.com/repos/octocat/Hello-World/comments{/number}\",\n \"commits_url\" : \"https://api.github.com/repos/octocat/Hello-World/commits{/sha}\",\n \"compare_url\" : \"https://api.github.com/repos/octocat/Hello-World/compare/{base}...{head}\",\n \"contents_url\" : \"https://api.github.com/repos/octocat/Hello-World/contents/{+path}\",\n \"contributors_url\" : \"https://api.github.com/repos/octocat/Hello-World/contributors\",\n \"created_at\" : \"2011-01-26T19:01:12Z\",\n \"default_branch\" : \"master\",\n \"delete_branch_on_merge\" : true,\n \"deployments_url\" : \"https://api.github.com/repos/octocat/Hello-World/deployments\",\n \"description\" : \"This your first repo!\",\n \"disabled\" : false,\n \"downloads_url\" : \"https://api.github.com/repos/octocat/Hello-World/downloads\",\n \"events_url\" : \"https://api.github.com/repos/octocat/Hello-World/events\",\n \"fork\" : false,\n \"forks\" : 1,\n \"forks_count\" : 9,\n \"forks_url\" : \"https://api.github.com/repos/octocat/Hello-World/forks\",\n \"full_name\" : \"octocat/Hello-World\",\n \"git_commits_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/commits{/sha}\",\n \"git_refs_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/refs{/sha}\",\n \"git_tags_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/tags{/sha}\",\n \"git_url\" : \"git:github.com/octocat/Hello-World.git\",\n \"has_downloads\" : true,\n \"has_issues\" : true,\n \"has_pages\" : false,\n \"has_projects\" : true,\n \"has_wiki\" : true,\n \"homepage\" : \"https://github.com\",\n \"hooks_url\" : \"https://api.github.com/repos/octocat/Hello-World/hooks\",\n \"html_url\" : \"https://github.com/octocat/Hello-World\",\n \"id\" : 1296269,\n \"is_template\" : true,\n \"issue_comment_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/comments{/number}\",\n \"issue_events_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/events{/number}\",\n \"issues_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues{/number}\",\n \"keys_url\" : \"https://api.github.com/repos/octocat/Hello-World/keys{/key_id}\",\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World/labels{/name}\",\n \"languages_url\" : \"https://api.github.com/repos/octocat/Hello-World/languages\",\n \"license\" : {\n \"html_url\" : \"https://github.com/licenses/mit\",\n \"key\" : \"mit\",\n \"name\" : \"MIT License\",\n \"node_id\" : \"MDc6TGljZW5zZW1pdA==\",\n \"spdx_id\" : \"MIT\",\n \"url\" : \"https://api.github.com/licenses/mit\"\n },\n \"merges_url\" : \"https://api.github.com/repos/octocat/Hello-World/merges\",\n \"milestones_url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones{/number}\",\n \"mirror_url\" : \"git:git.example.com/octocat/Hello-World\",\n \"name\" : \"Hello-World\",\n \"network_count\" : 0,\n \"node_id\" : \"MDEwOlJlcG9zaXRvcnkxMjk2MjY5\",\n \"notifications_url\" : \"https://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating}\",\n \"open_issues\" : 1,\n \"open_issues_count\" : 0,\n \"owner\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"permissions\" : {\n \"admin\" : false,\n \"pull\" : true,\n \"push\" : false\n },\n \"private\" : false,\n \"pulls_url\" : \"https://api.github.com/repos/octocat/Hello-World/pulls{/number}\",\n \"pushed_at\" : \"2011-01-26T19:06:43Z\",\n \"releases_url\" : \"https://api.github.com/repos/octocat/Hello-World/releases{/id}\",\n \"size\" : 108,\n \"ssh_url\" : \"git@github.com:octocat/Hello-World.git\",\n \"stargazers_count\" : 80,\n \"stargazers_url\" : \"https://api.github.com/repos/octocat/Hello-World/stargazers\",\n \"statuses_url\" : \"https://api.github.com/repos/octocat/Hello-World/statuses/{sha}\",\n \"subscribers_count\" : 42,\n \"subscribers_url\" : \"https://api.github.com/repos/octocat/Hello-World/subscribers\",\n \"subscription_url\" : \"https://api.github.com/repos/octocat/Hello-World/subscription\",\n \"svn_url\" : \"https://svn.github.com/octocat/Hello-World\",\n \"tags_url\" : \"https://api.github.com/repos/octocat/Hello-World/tags\",\n \"teams_url\" : \"https://api.github.com/repos/octocat/Hello-World/teams\",\n \"temp_clone_token\" : \"ABTLWHOULUVAXGTRYU7OC2876QJ2O\",\n \"topics\" : [ \"octocat\", \"atom\", \"electron\", \"api\" ],\n \"trees_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/trees{/sha}\",\n \"updated_at\" : \"2011-01-26T19:14:43Z\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World\",\n \"visibility\" : \"public\",\n \"watchers\" : 1,\n \"watchers_count\" : 80\n },\n \"repository_url\" : \"https://api.github.com/repos/octocat/Hello-World\",\n \"state\" : \"open\",\n \"title\" : \"Found a bug\",\n \"updated_at\" : \"2011-04-22T13:33:48Z\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347\",\n \"user\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n }\n} ]", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "0ca3cc3c-8e0d-4893-a6e1-200522306609", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.149982Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "issues/list-for-authenticated-user", + "schema": { + "items": { + "$ref": "#/components/schemas/issue" + }, + "type": "array" + } + } + } + }, + "insertionIndex": 141 + }, + { + "id": "a80c0779-e880-4423-bf8e-54fe96284c7b", + "name": "Add a repository to an app installation (application/json)", + "request": { + "urlPath": "/user/installations/8281858829675540265/repositories/3828651799376761425", + "method": "PUT", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/742737\",\n \"message\" : \"Facere ut occaecati voluptatem expedita ex exercitationem. Distinctio exercitationem aliquid iusto unde laborum incidunt rerum. Enim aut iusto temporibus voluptatibus sed tempora perferendis. Fugiat d\",\n \"url\" : \"https://web.example.mocklab.io/824275\",\n \"status\" : \"eqwp891rfynlv90ctw80ae91yny9x28w1w2s6oxc37k710v53oyn0d94aa7l81vqjk1fepuyvgqi3jr5u1n38087wb38ys21vbshqbfbsl6lhk5wps9wh3tanqm\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "a80c0779-e880-4423-bf8e-54fe96284c7b", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.149914Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "apps/add-repo-to-installation", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 142 + }, + { + "id": "8edce6cf-d950-4bf9-835f-9378566348db", + "name": "Add a repository to an app installation (application/json)", + "request": { + "urlPath": "/user/installations/3176359721504269416/repositories/8456212199211930983", + "method": "PUT", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 403, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/212186\",\n \"message\" : \"Nostrum quia quibusdam atque eveniet. Ut eos soluta quia officiis. Harum dolore quo excepturi omnis velit consectetur. Dolorem vitae totam sunt. Delectus reiciendis fugit quidem voluptas nostrum quo u\",\n \"url\" : \"https://web.example.mocklab.io/230662\",\n \"status\" : \"erw3bf55j6g3o5m6n0k06d8abyyrd59d69av43r0irdcghs20gka\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "8edce6cf-d950-4bf9-835f-9378566348db", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.149692Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "apps/add-repo-to-installation", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 143 + }, + { + "id": "12fffb0d-708a-436d-b446-29d9c30f0f0f", + "name": "Add a repository to an app installation - 304", + "request": { + "urlPath": "/user/installations/7382555397801417490/repositories/5337623097321656639", + "method": "PUT" + }, + "response": { + "status": 304 + }, + "uuid": "12fffb0d-708a-436d-b446-29d9c30f0f0f", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.149488Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "apps/add-repo-to-installation" + } + } + }, + "insertionIndex": 144 + }, + { + "id": "2e875f6b-5053-4e33-9241-a60da67d9099", + "name": "Add a repository to an app installation - 204", + "request": { + "urlPath": "/user/installations/5559534825765375522/repositories/5062994583297703238", + "method": "PUT" + }, + "response": { + "status": 204 + }, + "uuid": "2e875f6b-5053-4e33-9241-a60da67d9099", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.149467Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "apps/add-repo-to-installation" + } + } + }, + "insertionIndex": 145 + }, + { + "id": "4dc6c641-8b8a-4f69-b961-6862b568df41", + "name": "Remove a repository from an app installation (application/json)", + "request": { + "urlPath": "/user/installations/3054646177516165446/repositories/1445822368664213565", + "method": "DELETE", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/690981\",\n \"message\" : \"Quae debitis iusto quis qui dolor necessitatibus nesciunt. Libero cumque dicta et non labore quis. Quasi modi at. Saepe quia facilis. Et rem fugiat enim maiores placeat assumenda.\",\n \"url\" : \"https://web.example.mocklab.io/530172\",\n \"status\" : \"wrxjlpmh8f2ry7ght4odbvgjska9wt1noeqo6twng0j6qu2x82o1q45fzzfsxjs0f0rh3viiji6oi768fi7elwdf0wwjx56m56clj7wzmjynungy8f09i4kyuvonz48hxv94u40mppmaz2quh9eaxg5makuun4\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "4dc6c641-8b8a-4f69-b961-6862b568df41", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.149438Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "apps/remove-repo-from-installation", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 146 + }, + { + "id": "35545fa6-2634-4247-9ed0-2b9c2f7a1f2d", + "name": "Remove a repository from an app installation (application/json)", + "request": { + "urlPath": "/user/installations/8828201041582849697/repositories/3763625078768433776", + "method": "DELETE", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 403, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/044785\",\n \"message\" : \"Occaecati voluptas dicta alias at qui dicta quia. Dolorum voluptatem magnam voluptatem qui maxime ex. Vero voluptas iure ab vel. Qui debitis odit.\",\n \"url\" : \"https://web.example.mocklab.io/229955\",\n \"status\" : \"hpwhe369tqa3ny4u3f469n339r4jnl1gcjvqzy3jhqucyimkg8k9rb3ik5hp0ckl05w8b9tkf3y496omtc1n29sr4vdnb2itz8931ivx6vzxwnrl7fzw543tlxvlbyz3dvijq30p7v0prsv35gzopjckwq0rldwwcbag2reocimmps1r70p3u8jwweg0\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "35545fa6-2634-4247-9ed0-2b9c2f7a1f2d", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.149222Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "apps/remove-repo-from-installation", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 147 + }, + { + "id": "97f6cd48-31d9-4e9d-a097-a5e34413f03a", + "name": "Remove a repository from an app installation - 304", + "request": { + "urlPath": "/user/installations/6403381419363181021/repositories/6263411919711877057", + "method": "DELETE" + }, + "response": { + "status": 304 + }, + "uuid": "97f6cd48-31d9-4e9d-a097-a5e34413f03a", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.149017Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "apps/remove-repo-from-installation" + } + } + }, + "insertionIndex": 148 + }, + { + "id": "39228ab1-5d74-4fce-be98-dd966b0f5eae", + "name": "Remove a repository from an app installation - 204", + "request": { + "urlPath": "/user/installations/8163357026744631551/repositories/7618988108037314839", + "method": "DELETE" + }, + "response": { + "status": 204 + }, + "uuid": "39228ab1-5d74-4fce-be98-dd966b0f5eae", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.148997Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "apps/remove-repo-from-installation" + } + } + }, + "insertionIndex": 149 + }, + { + "id": "073a8296-8729-4160-bce8-349161e335b6", + "name": "List repositories accessible to the user access token (application/json)", + "request": { + "urlPath": "/user/installations/8350829202184904723/repositories", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/823330\",\n \"message\" : \"Eos deserunt impedit fugiat. Laboriosam adipisci quaerat debitis dolor est aut incidunt. Quam omnis et ipsa expedita illum.\",\n \"url\" : \"https://web.example.mocklab.io/023237\",\n \"status\" : \"xxogddk3rhj7sb19b03719bzonoixvm5rnlg9ukiwgtpzz8bgn9bscz2\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "073a8296-8729-4160-bce8-349161e335b6", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.148963Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "apps/list-installation-repos-for-authenticated-user", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 150 + }, + { + "id": "fdbdbd75-8e74-45ac-8c3a-1c79c58f5158", + "name": "List repositories accessible to the user access token (application/json)", + "request": { + "urlPath": "/user/installations/1452870414382500526/repositories", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 403, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/434138\",\n \"message\" : \"Tenetur consequatur deserunt molestiae quia. Saepe voluptas illo omnis perferendis non. Laborum quo ut asperiores adipisci.\",\n \"url\" : \"https://web.example.mocklab.io/777434\",\n \"status\" : \"r2bjg3033sdbcgn6crctnwwplov5gpbso1awy6i92jdx3l6wt5793\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "fdbdbd75-8e74-45ac-8c3a-1c79c58f5158", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.148754Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "apps/list-installation-repos-for-authenticated-user", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 151 + }, + { + "id": "0a5871ca-f1d5-4797-8170-e92f0a0f4526", + "name": "List repositories accessible to the user access token - 304", + "request": { + "urlPath": "/user/installations/7253708345904073183/repositories", + "method": "GET" + }, + "response": { + "status": 304 + }, + "uuid": "0a5871ca-f1d5-4797-8170-e92f0a0f4526", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.148558Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "apps/list-installation-repos-for-authenticated-user" + } + } + }, + "insertionIndex": 152 + }, + { + "id": "b511277a-095f-476c-8f3f-5c9fdb495c2d", + "name": "List repositories accessible to the user access token (application/json) - default", + "request": { + "urlPath": "/user/installations/6445607092139648074/repositories", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 200, + "body": "{\n \"repositories\" : [ {\n \"allow_merge_commit\" : true,\n \"allow_rebase_merge\" : true,\n \"allow_squash_merge\" : true,\n \"archive_url\" : \"https://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref}\",\n \"archived\" : false,\n \"assignees_url\" : \"https://api.github.com/repos/octocat/Hello-World/assignees{/user}\",\n \"blobs_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/blobs{/sha}\",\n \"branches_url\" : \"https://api.github.com/repos/octocat/Hello-World/branches{/branch}\",\n \"clone_url\" : \"https://github.com/octocat/Hello-World.git\",\n \"collaborators_url\" : \"https://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator}\",\n \"comments_url\" : \"https://api.github.com/repos/octocat/Hello-World/comments{/number}\",\n \"commits_url\" : \"https://api.github.com/repos/octocat/Hello-World/commits{/sha}\",\n \"compare_url\" : \"https://api.github.com/repos/octocat/Hello-World/compare/{base}...{head}\",\n \"contents_url\" : \"https://api.github.com/repos/octocat/Hello-World/contents/{+path}\",\n \"contributors_url\" : \"https://api.github.com/repos/octocat/Hello-World/contributors\",\n \"created_at\" : \"2011-01-26T19:01:12Z\",\n \"default_branch\" : \"master\",\n \"delete_branch_on_merge\" : true,\n \"deployments_url\" : \"https://api.github.com/repos/octocat/Hello-World/deployments\",\n \"description\" : \"This your first repo!\",\n \"disabled\" : false,\n \"downloads_url\" : \"https://api.github.com/repos/octocat/Hello-World/downloads\",\n \"events_url\" : \"https://api.github.com/repos/octocat/Hello-World/events\",\n \"fork\" : false,\n \"forks\" : 1,\n \"forks_count\" : 9,\n \"forks_url\" : \"https://api.github.com/repos/octocat/Hello-World/forks\",\n \"full_name\" : \"octocat/Hello-World\",\n \"git_commits_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/commits{/sha}\",\n \"git_refs_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/refs{/sha}\",\n \"git_tags_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/tags{/sha}\",\n \"git_url\" : \"git:github.com/octocat/Hello-World.git\",\n \"has_downloads\" : true,\n \"has_issues\" : true,\n \"has_pages\" : false,\n \"has_projects\" : true,\n \"has_wiki\" : true,\n \"homepage\" : \"https://github.com\",\n \"hooks_url\" : \"https://api.github.com/repos/octocat/Hello-World/hooks\",\n \"html_url\" : \"https://github.com/octocat/Hello-World\",\n \"id\" : 1296269,\n \"is_template\" : true,\n \"issue_comment_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/comments{/number}\",\n \"issue_events_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/events{/number}\",\n \"issues_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues{/number}\",\n \"keys_url\" : \"https://api.github.com/repos/octocat/Hello-World/keys{/key_id}\",\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World/labels{/name}\",\n \"languages_url\" : \"https://api.github.com/repos/octocat/Hello-World/languages\",\n \"license\" : {\n \"html_url\" : \"https://github.com/licenses/mit\",\n \"key\" : \"mit\",\n \"name\" : \"MIT License\",\n \"node_id\" : \"MDc6TGljZW5zZW1pdA==\",\n \"spdx_id\" : \"MIT\",\n \"url\" : \"https://api.github.com/licenses/mit\"\n },\n \"merges_url\" : \"https://api.github.com/repos/octocat/Hello-World/merges\",\n \"milestones_url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones{/number}\",\n \"mirror_url\" : \"git:git.example.com/octocat/Hello-World\",\n \"name\" : \"Hello-World\",\n \"network_count\" : 0,\n \"node_id\" : \"MDEwOlJlcG9zaXRvcnkxMjk2MjY5\",\n \"notifications_url\" : \"https://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating}\",\n \"open_issues\" : 1,\n \"open_issues_count\" : 0,\n \"owner\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"permissions\" : {\n \"admin\" : false,\n \"pull\" : true,\n \"push\" : false\n },\n \"private\" : false,\n \"pulls_url\" : \"https://api.github.com/repos/octocat/Hello-World/pulls{/number}\",\n \"pushed_at\" : \"2011-01-26T19:06:43Z\",\n \"releases_url\" : \"https://api.github.com/repos/octocat/Hello-World/releases{/id}\",\n \"size\" : 108,\n \"ssh_url\" : \"git@github.com:octocat/Hello-World.git\",\n \"stargazers_count\" : 80,\n \"stargazers_url\" : \"https://api.github.com/repos/octocat/Hello-World/stargazers\",\n \"statuses_url\" : \"https://api.github.com/repos/octocat/Hello-World/statuses/{sha}\",\n \"subscribers_count\" : 42,\n \"subscribers_url\" : \"https://api.github.com/repos/octocat/Hello-World/subscribers\",\n \"subscription_url\" : \"https://api.github.com/repos/octocat/Hello-World/subscription\",\n \"svn_url\" : \"https://svn.github.com/octocat/Hello-World\",\n \"tags_url\" : \"https://api.github.com/repos/octocat/Hello-World/tags\",\n \"teams_url\" : \"https://api.github.com/repos/octocat/Hello-World/teams\",\n \"temp_clone_token\" : \"ABTLWHOULUVAXGTRYU7OC2876QJ2O\",\n \"topics\" : [ \"octocat\", \"atom\", \"electron\", \"api\" ],\n \"trees_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/trees{/sha}\",\n \"updated_at\" : \"2011-01-26T19:14:43Z\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World\",\n \"visibility\" : \"public\",\n \"watchers\" : 1,\n \"watchers_count\" : 80\n } ],\n \"total_count\" : 1\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "b511277a-095f-476c-8f3f-5c9fdb495c2d", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.14853Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "apps/list-installation-repos-for-authenticated-user", + "schema": { + "properties": { + "repositories": { + "items": { + "$ref": "#/components/schemas/repository" + }, + "type": "array" + }, + "repository_selection": { + "type": "string" + }, + "total_count": { + "type": "integer" + } + }, + "required": ["total_count", "repositories"], + "type": "object" + } + } + } + }, + "insertionIndex": 153 + }, + { + "id": "123803cc-760f-4578-802a-4ee6c855761f", + "name": "List app installations accessible to the user access token (application/json)", + "request": { + "urlPath": "/user/installations", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 415, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/342051\",\n \"message\" : \"Quo qui quia ipsa non distinctio qui veniam. Voluptatum distinctio ea ipsam optio. Non nisi quia recusandae quo molestias. Sit eos fuga.\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "123803cc-760f-4578-802a-4ee6c855761f", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.148453Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "apps/list-installations-for-authenticated-user", + "schema": { + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": ["message", "documentation_url"], + "type": "object" + } + } + } + }, + "insertionIndex": 154 + }, + { + "id": "28584c73-d91d-4f96-8283-8253b631603f", + "name": "List app installations accessible to the user access token (application/json)", + "request": { + "urlPath": "/user/installations", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 403, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/158575\",\n \"message\" : \"Sit eum rerum. Fugiat omnis assumenda perferendis nobis. Omnis ducimus dolorum dolorum repudiandae harum numquam. Dolorem ipsam iure cumque aperiam sint exercitationem.\",\n \"url\" : \"https://web.example.mocklab.io/374778\",\n \"status\" : \"ojvdg8dvs9xsbn8v2ee0ma8kp32q5mpagp01vl2k6mqlydzjv7p5ukgm68k62typ73c58tvtskeozffpu1ph1czfrbjx8\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "28584c73-d91d-4f96-8283-8253b631603f", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.148316Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "apps/list-installations-for-authenticated-user", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 155 + }, + { + "id": "8aec8d05-1763-4622-9dd5-867e00e2b73a", + "name": "List app installations accessible to the user access token (application/json)", + "request": { + "urlPath": "/user/installations", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 401, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/545303\",\n \"message\" : \"Non dolorem libero omnis asperiores ullam itaque nostrum. Consectetur aut sequi nostrum inventore libero eum. Omnis dolore labore et sit magni repellendus commodi. Accusantium qui assumenda eum vitae.\",\n \"url\" : \"https://web.example.mocklab.io/708109\",\n \"status\" : \"v99d4shtn4i02abn6ub4deugjxktjkzpi1jdoooecb6af9m3xn5lyfux8nl6yvbnynqot357fken644h3jv5cm6whcco60kxvlsvreqt0bsm3wlj0xl106vhr6ntm8bx9pfczhoy6cmgr1aejz3k\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "8aec8d05-1763-4622-9dd5-867e00e2b73a", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.148115Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "apps/list-installations-for-authenticated-user", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 156 + }, + { + "id": "1eea76ba-625f-4ae6-961d-967ddc00678b", + "name": "List app installations accessible to the user access token - 304", + "request": { + "urlPath": "/user/installations", + "method": "GET" + }, + "response": { + "status": 304 + }, + "uuid": "1eea76ba-625f-4ae6-961d-967ddc00678b", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.147915Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "apps/list-installations-for-authenticated-user" + } + } + }, + "insertionIndex": 157 + }, + { + "id": "19b59cab-ffb9-40b3-919c-771eb59f94dd", + "name": "List app installations accessible to the user access token (application/json) - default", + "request": { + "urlPath": "/user/installations", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 200, + "body": "{\n \"installations\" : [ {\n \"access_tokens_url\" : \"https://api.github.com/installations/1/access_tokens\",\n \"account\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"app_id\" : 1,\n \"app_slug\" : \"github-actions\",\n \"created_at\" : \"2017-07-08T16:18:44-04:00\",\n \"events\" : [ \"push\", \"pull_request\" ],\n \"html_url\" : \"https://github.com/organizations/github/settings/installations/1\",\n \"id\" : 1,\n \"permissions\" : {\n \"checks\" : \"write\",\n \"contents\" : \"read\",\n \"metadata\" : \"read\"\n },\n \"repositories_url\" : \"https://api.github.com/installation/repositories\",\n \"repository_selection\" : \"all\",\n \"single_file_name\" : \"config.yaml\",\n \"target_id\" : 1,\n \"target_type\" : \"Organization\",\n \"updated_at\" : \"2017-07-08T16:18:44-04:00\"\n }, {\n \"access_tokens_url\" : \"https://api.github.com/installations/1/access_tokens\",\n \"account\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 2,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"app_id\" : 1,\n \"app_slug\" : \"github-actions\",\n \"created_at\" : \"2017-07-08T16:18:44-04:00\",\n \"events\" : [ \"push\", \"pull_request\" ],\n \"html_url\" : \"https://github.com/organizations/github/settings/installations/1\",\n \"id\" : 3,\n \"permissions\" : {\n \"checks\" : \"write\",\n \"contents\" : \"read\",\n \"metadata\" : \"read\"\n },\n \"repositories_url\" : \"https://api.github.com/installation/repositories\",\n \"repository_selection\" : \"all\",\n \"single_file_name\" : \"config.yaml\",\n \"target_id\" : 1,\n \"target_type\" : \"Organization\",\n \"updated_at\" : \"2017-07-08T16:18:44-04:00\"\n } ],\n \"total_count\" : 2\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "19b59cab-ffb9-40b3-919c-771eb59f94dd", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.147889Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "apps/list-installations-for-authenticated-user", + "schema": { + "properties": { + "installations": { + "items": { + "$ref": "#/components/schemas/installation-ghes-2" + }, + "type": "array" + }, + "total_count": { + "type": "integer" + } + }, + "required": ["total_count", "installations"], + "type": "object" + } + } + } + }, + "insertionIndex": 158 + }, + { + "id": "3cce3a09-1d86-4d19-a955-15bd2d6112f6", + "name": "Get a GPG key for the authenticated user (application/json)", + "request": { + "urlPath": "/user/gpg_keys/3871890096487464781", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/459626\",\n \"message\" : \"Quis similique eos recusandae consequatur error nobis sed. Rerum facere porro enim omnis numquam. Ut nemo ipsum voluptatibus laborum. Repellendus quia tempora voluptas necessitatibus fuga.\",\n \"url\" : \"https://web.example.mocklab.io/948716\",\n \"status\" : \"zvrfes4viop6qt4kuhvnrs8bslgky9f6bongraw1ztgszxvi3xjbjuvhdie6g9buf8scnwsl97pn82mlzma8c9cdi9get1mjcctrid6d9p851xar21si2yaean587fcs5j01cjtdjwxneomyfe949h99a8\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "3cce3a09-1d86-4d19-a955-15bd2d6112f6", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.147821Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "users/get-gpg-key-for-authenticated", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 159 + }, + { + "id": "b820115a-9a2c-46eb-a9a2-ac28ae21d80f", + "name": "Get a GPG key for the authenticated user (application/json)", + "request": { + "urlPath": "/user/gpg_keys/5836757369001435670", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 403, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/207748\",\n \"message\" : \"Aut ducimus omnis possimus enim qui rerum. Numquam error nulla labore in expedita quia. Architecto et sed. Sint neque aut rerum tenetur nulla.\",\n \"url\" : \"https://web.example.mocklab.io/784216\",\n \"status\" : \"2ldpkjyxo14u6gu3ocrm1ql0jwoyj3dgtlgmchyzouwtjztcvqif3uwww8ix3mab99v48wuu01t2la4joqv6h\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "b820115a-9a2c-46eb-a9a2-ac28ae21d80f", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.147611Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "users/get-gpg-key-for-authenticated", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 160 + }, + { + "id": "e85fbe40-79b1-4baa-899a-79c61097d3ee", + "name": "Get a GPG key for the authenticated user (application/json)", + "request": { + "urlPath": "/user/gpg_keys/5448689916871470347", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 401, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/016936\",\n \"message\" : \"Qui fuga voluptas. Ipsum est voluptatum ducimus qui voluptates sit sint. Iste a veniam fugiat cupiditate quisquam. Delectus est enim magni et perspiciatis.\",\n \"url\" : \"https://web.example.mocklab.io/575374\",\n \"status\" : \"7hz209m7as05ozkf1wg53vn60ezfqrd141qsztaszgklmquwnul1xltsflpvk3xt7tlyta78kbqu04u7h4byoblmz6z5wcdimr8nq2ol97tnb5n6xg8l81o7htkimy43b5zkm6uw1bh9pddkxl7wx6u15joiy06q3vbw2589u7dvtfdsanzmg\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "e85fbe40-79b1-4baa-899a-79c61097d3ee", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.147401Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "users/get-gpg-key-for-authenticated", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 161 + }, + { + "id": "40a1afab-915b-4809-9d79-ce3bc1b33008", + "name": "Get a GPG key for the authenticated user - 304", + "request": { + "urlPath": "/user/gpg_keys/8320458728564761686", + "method": "GET" + }, + "response": { + "status": 304 + }, + "uuid": "40a1afab-915b-4809-9d79-ce3bc1b33008", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.147186Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "users/get-gpg-key-for-authenticated" + } + } + }, + "insertionIndex": 162 + }, + { + "id": "fafe1a6e-8e5f-41c5-9520-3b9f843215e3", + "name": "Get a GPG key for the authenticated user (application/json) - default", + "request": { + "urlPath": "/user/gpg_keys/6177149695354581051", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 200, + "body": "{\n \"can_certify\" : true,\n \"can_encrypt_comms\" : false,\n \"can_encrypt_storage\" : false,\n \"can_sign\" : true,\n \"created_at\" : \"2016-03-24T11:31:04-06:00\",\n \"emails\" : [ {\n \"email\" : \"mastahyeti@users.noreply.github.com\",\n \"verified\" : true\n } ],\n \"expires_at\" : \"2016-03-24T11:31:04-07:00\",\n \"id\" : 3,\n \"key_id\" : \"3262EFF25BA0D270\",\n \"primary_key_id\" : 2,\n \"public_key\" : \"xsBNBFayYZ...\",\n \"raw_key\" : \"\\\"-----BEGIN PGP PUBLIC KEY BLOCK-----\\\\nVersion: GnuPG v2\\\\n\\\\nmQENBFayYZ0BCAC4hScoJXXpyR+MXGcrBxElqw3FzCVvkViuyeko+Jp76QJhg8kr\\\\nucRTxbnOoHfda/FmilEa/wxf9ch5/PSrrL26FxEoPHhJolp8fnIDLQeITn94NYdB\\\\nZtnnEKslpPrG97qSUWIchvyqCPtvOb8+8fWvGx9K/ZWcEEdh1X8+WFR2jMENMeoX\\\\nwxHWQoPnS7LpX/85/M7VUcJxvDVfv+eHsnQupmE5bGarKNih0oMe3LbdN3qA5PTz\\\\nSCm6Iudar1VsQ+xTz08ymL7t4pnEtLguQ7EyatFHCjxNblv5RzxoL0tDgN3HqoDz\\\\nc7TEA+q4RtDQl9amcvQ95emnXmZ974u7UkYdABEBAAG0HlNvbWUgVXNlciA8c29t\\\\nZXVzZXJAZ21haWwuY29tPokBOAQTAQIAIgUCVrJhnQIbAwYLCQgHAwIGFQgCCQoL\\\\nBBYCAwECHgECF4AACgkQMmLv8lug0nAViQgArWjI55+7p48URr2z9Jvak+yrBTx1\\\\nzkufltQAnHTJkq+Kl9dySSmTnOop8o3rE4++IOpYV5Y36PkKf9EZMk4n1RQiDPKE\\\\nAFtRVTkRaoWzOir9KQXJPfhKrl01j/QzY+utfiMvUoBJZ9ybq8Pa885SljW9lbaX\\\\nIYw+hl8ZdJ2KStvGrEyfQvRyq3aN5c9TV//4BdGnwx7Qabq/U+G18lizG6f/yq15\\\\ned7t0KELaCfeKPvytp4VE9/z/Ksah/h3+Qilx07/oG2Ae5kC1bEC9coD/ogPUhbv\\\\nb2bsBIoY9E9YwsLoif2lU+o1t76zLgUktuNscRRUKobW028H1zuFS/XQhrkBDQRW\\\\nsmGdAQgApnyyv3i144OLYy0O4UKQxd3e10Y3WpDwfnGIBefAI1m7RxnUxBag/DsU\\\\n7gi9qLEC4VHSfq4eiNfr1LJOyCL2edTgCWFgBhVjbXjZe6YAOrAnhxwCErnN0Y7N\\\\n6s8wVh9fObSOyf8ZE6G7JeKpcq9Q6gd/KxagfD48a1v+fyRHpyQc6J9pUEmtrDJ7\\\\nBjmsd2VWzLBvNWdHyxDNtZweIaqIO9VUYYpr1mtTliNBOZLUelmgrt7HBRcJpWMA\\\\nS8muVVbuP5MK0trLBq/JB8qUH3zRzB/PhMgzmkIfjEK1VYDWm4E8DYyTWEJcHqkb\\\\neqFsNjrIlwPaA122BWC6gUOPwwH+oQARAQABiQEfBBgBAgAJBQJWsmGdAhsMAAoJ\\\\nEDJi7/JboNJwAyAIALd4xcdmGbZD98gScJzqwzkOMcO8zFHqHNvJ42xIFvGny7c0\\\\n1Rx7iyrdypOby5AxE+viQcjG4rpLZW/xKYBNGrCfDyQO7511I0v8x20EICMlMfD/\\\\nNrWQCzesEPcUlKTP07d+sFyP8AyseOidbzY/92CpskTgdSBjY/ntLSaoknl/fjJE\\\\nQM8OkPqU7IraO1Jzzdnm20d5PZL9+PIwIWdSTedU/vBMTJyNcoqvSfKf1wNC66XP\\\\nhqfYgXJE564AdWZKA3C0IyCqiv+LHwxLnUHio1a4/r91C8KPzxs6tGxRDjXLd7ms\\\\nuYFGWymiUGOE/giHlcxdYcHzwLnPDliMQOLiTkK5AQ0EVuxMygEIAOD+bW1cDTmE\\\\nBxh5JECoqeHuwgl6DlLhnubWPkQ4ZeRzBRAsFcEJQlwlJjrzFDicL+lnm6Qq4tt0\\\\n560TwHdf15/AKTZIZu7H25axvGNzgeaUkJEJdYAq9zTKWwX7wKyzBszi485nQg97\\\\nMfAqwhMpDW0Qqf8+7Ug+WEmfBSGv9uL3aQC6WEeIsHfri0n0n8v4XgwhfShXguxO\\\\nCsOztEsuW7WWKW9P4TngKKv4lCHdPlV6FwxeMzODBJvc2fkHVHnqc0PqszJ5xcF8\\\\n6gZCpMM027SbpeYWCAD5zwJyYP9ntfO1p2HjnQ1dZaP9FeNcO7uIV1Lnd1eGCu6I\\\\nsrVp5k1f3isAEQEAAYkCPgQYAQIACQUCVuxMygIbAgEpCRAyYu/yW6DScMBdIAQZ\\\\nAQIABgUCVuxMygAKCRCKohN4dhq2b4tcCACHxmOHVXNpu47OvUGYQydLgMACUlXN\\\\nlj+HfE0VReqShxdDmpasAY9IRpuMB2RsGK8GbNP+4SlOlAiPf5SMhS7nZNkNDgQQ\\\\naZ3HFpgrFmFwmE10BKT4iQtoxELLM57z0qGOAfTsEjWFQa4sF+6IHAQR/ptkdkkI\\\\nBUEXiMnAwVwBysLIJiLO8qdjB6qp52QkT074JVrwywT/P+DkMfC2k4r/AfEbf6eF\\\\ndmPDuPk6KD87+hJZsSa5MaMUBQVvRO/mgEkhJRITVu58eWGaBOcQJ8gqurhCqM5P\\\\nDfUA4TJ7wiqM6sS764vV1rOioTTXkszzhClQqET7hPVnVQjenYgv0EZHNyQH/1f1\\\\n/CYqvV1vFjM9vJjMbxXsATCkZe6wvBVKD8vLsJAr8N+onKQz+4OPc3kmKq7aESu3\\\\nCi/iuie5KKVwnuNhr9AzT61vEkKxwHcVFEvHB77F6ZAAInhRvjzmQbD2dlPLLQCC\\\\nqDj71ODSSAPTEmUy6969bgD9PfWei7kNkBIx7s3eBv8yzytSc2EcuUgopqFazquw\\\\nFs1+tqGHjBvQfTo6bqbJjp/9Ci2pvde3ElV2rAgUlb3lqXyXjRDqrXosh5GcRPQj\\\\nK8Nhj1BNhnrCVskE4BP0LYbOHuzgm86uXwGCFsY+w2VOsSm16Jx5GHyG5S5WU3+D\\\\nIts/HFYRLiFgDLmTlxo=\\\\n=+OzK\\\\n-----END PGP PUBLIC KEY BLOCK-----\\\"\",\n \"subkeys\" : [ {\n \"can_certify\" : false,\n \"can_encrypt_comms\" : true,\n \"can_encrypt_storage\" : true,\n \"can_sign\" : false,\n \"created_at\" : \"2016-03-24T11:31:04-06:00\",\n \"emails\" : [ ],\n \"expires_at\" : \"2016-03-24T11:31:04-07:00\",\n \"id\" : 4,\n \"key_id\" : \"4A595D4C72EE49C7\",\n \"primary_key_id\" : 3,\n \"public_key\" : \"zsBNBFayYZ...\",\n \"subkeys\" : [ ]\n } ]\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "fafe1a6e-8e5f-41c5-9520-3b9f843215e3", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.14715Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "users/get-gpg-key-for-authenticated", + "schema": { + "description": "A unique encryption key", + "properties": { + "can_certify": { + "example": true, + "type": "boolean" + }, + "can_encrypt_comms": { + "type": "boolean" + }, + "can_encrypt_storage": { + "type": "boolean" + }, + "can_sign": { + "example": true, + "type": "boolean" + }, + "created_at": { + "example": "2016-03-24T11:31:04-06:00", + "format": "date-time", + "type": "string" + }, + "emails": { + "example": [ + { + "email": "mastahyeti@users.noreply.github.com", + "verified": true + } + ], + "items": { + "properties": { + "email": { + "type": "string" + }, + "verified": { + "type": "boolean" + } + }, + "type": "object" + }, + "type": "array" + }, + "expires_at": { + "format": "date-time", + "nullable": true, + "type": "string" + }, + "id": { + "example": 3, + "type": "integer" + }, + "key_id": { + "example": "3262EFF25BA0D270", + "type": "string" + }, + "primary_key_id": { + "nullable": true, + "type": "integer" + }, + "public_key": { + "example": "xsBNBFayYZ...", + "type": "string" + }, + "raw_key": { + "nullable": true, + "type": "string" + }, + "subkeys": { + "example": [ + { + "can_certify": false, + "can_encrypt_comms": true, + "can_encrypt_storage": true, + "can_sign": false, + "created_at": "2016-03-24T11:31:04-06:00", + "emails": [], + "id": 4, + "key_id": "4A595D4C72EE49C7", + "primary_key_id": 3, + "public_key": "zsBNBFayYZ...", + "subkeys": [] + } + ], + "items": { + "properties": { + "can_certify": { + "type": "boolean" + }, + "can_encrypt_comms": { + "type": "boolean" + }, + "can_encrypt_storage": { + "type": "boolean" + }, + "can_sign": { + "type": "boolean" + }, + "created_at": { + "type": "string" + }, + "emails": { + "type": "array" + }, + "expires_at": { + "nullable": true, + "type": "string" + }, + "id": { + "type": "integer" + }, + "key_id": { + "type": "string" + }, + "primary_key_id": { + "type": "integer" + }, + "public_key": { + "type": "string" + }, + "raw_key": { + "nullable": true, + "type": "string" + }, + "subkeys": { + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "id", + "primary_key_id", + "key_id", + "raw_key", + "public_key", + "created_at", + "expires_at", + "can_sign", + "can_encrypt_comms", + "can_encrypt_storage", + "can_certify", + "emails", + "subkeys" + ], + "title": "GPG Key", + "type": "object" + } + } + } + }, + "insertionIndex": 163 + }, + { + "id": "7051d31e-b366-4ec9-834a-cc365b8e0de8", + "name": "Delete a GPG key for the authenticated user (application/json)", + "request": { + "urlPath": "/user/gpg_keys/1468230045900739988", + "method": "DELETE", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 422, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/546411\",\n \"message\" : \"Enim libero sed qui maxime. Quis non sunt quae. Reprehenderit voluptatem voluptates recusandae qui libero. Voluptatem ut voluptas dolorum ratione. Ut consectetur blanditiis alias accusantium itaque di\",\n \"errors\" : [ {\n \"code\" : \"e5sazm2ei79sh4ylvpvm9hnw401shimlp11bc05k6e6qmacknxeefiz06vrmdd0eahkvxyjegnjhnicrenhfk3hxaymb1b6u1bkjf5fph1ip9sax9wwjzme5i0rrbik15cvnoxqj9c8x5cwr38jgk09v2ez5t55z6ufja3m\",\n \"field\" : \"ge5keeirxflgdmgaezrr2kger0g3fpmq2oihfto80f6eo6k6egvxk\",\n \"resource\" : \"td3kh1r5p1shy73a59vtskxxa3r5sj20988bqbdzzebxpipwwctfag5gnijl8el1zzhjxx7wnhpfvygyr98b40qtwd25ubo1cz40v5yl7thuudgpexlmnq2fj8ftei\",\n \"index\" : 949216013189904146,\n \"message\" : \"Ducimus doloremque sunt deserunt. Alias explicabo illum neque. Porro temporibus omnis eveniet assumenda tempore. Ea autem qui minima recusandae iusto et.\",\n \"value\" : { }\n }, {\n \"code\" : \"brok4k2px7ogpwp0pji22o4n3nr71eyfiqyjw7o1j1egeo198j2k49d9u4w55z94x7x2ej9f7me0pvl4dnyztt6io3pcx4mew4uz01jesvpk7n0dswpfe43vhfe9kmj0ozgzr38m7se0dax1tqfgwr40udo9jb2ik4ktz2usaourezaf5\",\n \"field\" : \"6ecti475ufx6csmkjqht56ilu5ogi9yn9tbr7613mj7ohfvglvf1farwo2lzw2arm\",\n \"resource\" : \"rvf4cqe24k08yq7ixr71qlhfbm1j9v5776tu9cdewhyq581i3gprz5wjfm6bfrij469faqwe2gu9dstvoknspgp9n4ztrzlije3knecvqs28jpqtiq9am2lho7pbavdcv3a8tfhchlc91\",\n \"index\" : 1561584363486550026,\n \"message\" : \"Quibusdam eum rerum nihil. Blanditiis sit voluptas ut provident similique voluptate. Ab inventore similique nemo omnis qui quaerat. Eum omnis et. Impedit nam voluptatem animi nisi.\",\n \"value\" : { }\n }, {\n \"code\" : \"yg6qe2bvghs57igac0yjh5q1nsh3evvqkwun33qjm849iloo0mr3b1jk0nldq7tqf8kbizkxbcaqsn1yj5c1818m247\",\n \"field\" : \"qm0wtwf3zoaubb1h7p7psainruo2puozvzprxhhjwg7jkjyvlb142nz8bmk6coq8za6jfawd0sm2345ld52dotzh7my9z1fokofumru69zdm3mdnceokl69mi8cb6asl2rcyetx9vdmzyqfwyjw2l9mxh7kg26v7sfg26zgb7xm5ec2lmt6hzjp0zi\",\n \"resource\" : \"8iumly8v28omnirv6cwxf2j3w2af2o0unupl7rx4dk6a6vs0infvco3ppw9498qzgbtawwqpg2qgbw3u3b0kbhj6o07h7cgoiudw62t68jz1nbdidehhcxt15g0rcnyse6ml7ko803e6pb87h1nyimby1dlz7hgzqwwgcyp242qtkc\",\n \"index\" : 2496190143108040556,\n \"message\" : \"Necessitatibus nihil voluptas accusantium eligendi doloremque ut. Dolore quod inventore. Et ducimus esse provident quae cupiditate unde. Fugit sed perferendis aut ut est. Nobis est quis placeat.\",\n \"value\" : { }\n }, {\n \"code\" : \"245c8860bidbtdkztad2mwue975ys4o9t39p21ilny8omy\",\n \"field\" : \"3bwp09iyebqajwclkp6ocsfg57x91kktgbzo6q80tlz22lnvl8zyqoy2uluo3du49llxvmjgujhp4zqcovtn1xspuw2s6s2wui07h9iiz14epg4po7t80b3odldovlfur2v82ru3w2376q9tukc4wqmfyfeqkkl57s6ah85u2momx7e4pl453aijnjfs3x\",\n \"resource\" : \"8hjnnr5a1gr8r0fsfp6u5kxnficywcsow0gbi9u93bwkbbwquwkah\",\n \"index\" : 5498929330959066917,\n \"message\" : \"Consequatur id voluptatem aut cupiditate delectus esse ut. Dolor mollitia ex perferendis. Ut voluptatem exercitationem ea unde aliquam ipsa rerum. Voluptas hic natus consequatur quisquam enim tenetur.\",\n \"value\" : { }\n }, {\n \"code\" : \"9si4rkg6l8z8neahr5y2g0uzlgyyhqj6srlxohtmj2fduqoln2zxvsx0u97ixl6nm3ru3sks5kud3o0ck6a6qos4pbaa0w5w7w3keqonqzemim25uu1ezrnbytnx\",\n \"field\" : \"1n4gca9c1g0bnjdnj9431s9o0ca0if8e4wryc97qd2cog18\",\n \"resource\" : \"xz7y5bt0yv9q37u3exn0erbv510gwgi8clt33g13gdl3jsb25ltw1va7h2zgs0g64xe8jfouv974v4wvb44msaavw31091sncpp9qfqm33ffjr8667afo5n\",\n \"index\" : 3094275836178315864,\n \"message\" : \"Ullam esse voluptatibus ut esse est alias dolores. Est sunt et hic accusantium velit. Sint aut veritatis ducimus. Fugiat rem ipsam. Ratione perspiciatis eum fuga voluptate sint atque.\",\n \"value\" : { }\n }, {\n \"code\" : \"yzy8cl4f3j6u0ciwwubjb0kbv70m4j8gk3kxok2q14h3xnmirj8cmupd2hax1ncggz\",\n \"field\" : \"d36c6p0uv4ihn9e9ncd5u85fs82kxjvdukkjxlta1immqz1fu74bmjgkortl5n9j8679tg85xfssvd368ds85vcn5xcu5t58zdsnbvhpzl59ngletu8xrdkp9sts2py0vtb7f9a1ruaddvbbha0105xop\",\n \"resource\" : \"ggdj18950h58w06qij0s0rnk6hx95ajb6sdftztnu90ayro7zsywbn38bgje3cl97gewolepgqxrht1ulzn9nnnmabdgjwdi6o90u1j9qjpob3pz7gt18o0rzdg0txj7kne2zrtdzysj60sdl7yeqhl3hdzt9fx7k302nct9juu2s039ww\",\n \"index\" : 4894923529592742475,\n \"message\" : \"Corporis expedita repellendus dolor. Sit exercitationem vitae repellat. Et qui iste ut quos sunt est illum.\",\n \"value\" : { }\n }, {\n \"code\" : \"2iarrmtgbzqcqy857aipmo\",\n \"field\" : \"hzfewck1ywml1i1dhjbruhft14d4ivmknpr4kmokn9up80motrm3vuzpcyd5ijifak17bvnu2dtf9ya74mx2no2rn8lmu9z0qw6fmk5lm7g001uwds8x7l7fqbnkqealedod35l303dba9xx5y3zavox1pd129bgz8g8x5w\",\n \"resource\" : \"71wtp8a4\",\n \"index\" : 3571343749478407197,\n \"message\" : \"Non iste qui vel voluptas sint deleniti. Aut itaque id repellendus sunt architecto. Voluptatibus similique libero. Quas unde veritatis aspernatur repudiandae eveniet aut.\",\n \"value\" : { }\n } ]\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "7051d31e-b366-4ec9-834a-cc365b8e0de8", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.146903Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "users/delete-gpg-key-for-authenticated", + "schema": { + "description": "Validation Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "errors": { + "items": { + "properties": { + "code": { + "type": "string" + }, + "field": { + "type": "string" + }, + "index": { + "type": "integer" + }, + "message": { + "type": "string" + }, + "resource": { + "type": "string" + }, + "value": { + "oneOf": [ + { + "nullable": true, + "type": "string" + }, + { + "nullable": true, + "type": "integer" + }, + { + "items": { + "type": "string" + }, + "nullable": true, + "type": "array" + } + ] + } + }, + "required": ["code"], + "type": "object" + }, + "type": "array" + }, + "message": { + "type": "string" + } + }, + "required": ["message", "documentation_url"], + "title": "Validation Error", + "type": "object" + } + } + } + }, + "insertionIndex": 164 + }, + { + "id": "e9318794-6460-40d4-843a-842b7e3a0265", + "name": "Delete a GPG key for the authenticated user (application/json)", + "request": { + "urlPath": "/user/gpg_keys/2603566663813867578", + "method": "DELETE", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/491357\",\n \"message\" : \"Officia dolorem quia. Veniam modi enim. Aliquam ut assumenda.\",\n \"url\" : \"https://web.example.mocklab.io/729838\",\n \"status\" : \"v940h0q20cb0vw46tnlqceu004mxrv51dp4zxtxrfxskc6v10u1aavukf4e5wdv7\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "e9318794-6460-40d4-843a-842b7e3a0265", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.146148Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "users/delete-gpg-key-for-authenticated", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 165 + }, + { + "id": "70f8ed36-26bd-492f-b019-a58c9421804d", + "name": "Delete a GPG key for the authenticated user (application/json)", + "request": { + "urlPath": "/user/gpg_keys/7956169778221253534", + "method": "DELETE", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 403, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/323664\",\n \"message\" : \"Aspernatur non occaecati consectetur fugiat et. Voluptatum aut a minus autem enim tempore qui. Est facere porro nesciunt saepe. Aliquam ut consequatur.\",\n \"url\" : \"https://web.example.mocklab.io/146849\",\n \"status\" : \"nx6e2o5942e82s5oynjo3h\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "70f8ed36-26bd-492f-b019-a58c9421804d", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.145943Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "users/delete-gpg-key-for-authenticated", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 166 + }, + { + "id": "b361e1eb-f367-4b15-b5f4-2c811d00e415", + "name": "Delete a GPG key for the authenticated user (application/json)", + "request": { + "urlPath": "/user/gpg_keys/6477436509151245210", + "method": "DELETE", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 401, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/858390\",\n \"message\" : \"Quo facere iure soluta. Maiores placeat est. Voluptas beatae a voluptatem. Molestias veniam excepturi. Non perferendis dicta quam ut possimus.\",\n \"url\" : \"https://web.example.mocklab.io/597440\",\n \"status\" : \"mpk0sd2sfq1gi1ermglieopdjmkj4x5kfesdxeafl95l1oxco0\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "b361e1eb-f367-4b15-b5f4-2c811d00e415", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.145732Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "users/delete-gpg-key-for-authenticated", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 167 + }, + { + "id": "ad93e3c3-ca14-480f-97d0-3720131ba30a", + "name": "Delete a GPG key for the authenticated user - 304", + "request": { + "urlPath": "/user/gpg_keys/7957391993597515461", + "method": "DELETE" + }, + "response": { + "status": 304 + }, + "uuid": "ad93e3c3-ca14-480f-97d0-3720131ba30a", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.145529Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "users/delete-gpg-key-for-authenticated" + } + } + }, + "insertionIndex": 168 + }, + { + "id": "08dc3138-4d21-47b1-9dca-3916528a660f", + "name": "Delete a GPG key for the authenticated user - 204", + "request": { + "urlPath": "/user/gpg_keys/1474247665678090762", + "method": "DELETE" + }, + "response": { + "status": 204 + }, + "uuid": "08dc3138-4d21-47b1-9dca-3916528a660f", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.145509Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "users/delete-gpg-key-for-authenticated" + } + } + }, + "insertionIndex": 169 + }, + { + "id": "0dd021cf-7220-4d61-aa6c-9ca6e36a1002", + "name": "Create a GPG key for the authenticated user (application/json)", + "request": { + "urlPath": "/user/gpg_keys", + "method": "POST", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 422, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/485940\",\n \"message\" : \"Qui atque consequatur. Nostrum et blanditiis est est. Incidunt excepturi qui asperiores.\",\n \"errors\" : [ {\n \"code\" : \"5ml05nv4bazykex87l4j28qot0f56xm6h5yp6m09tynn2k58b000ojx3ugslkf2se5w2zey6qzp89kudnxn2hlnc0st8\",\n \"field\" : \"11aa3dg9hnntjzgdi7n4izpu51kl5mlttdohu5vm7fyncj3mwx0l92msq5tgzn76mjc6qwgi4cj3f0popapvor8ov10joz36otbx3v3ja8cyk5nqgqe7ppqig5n7aekwu0zkyyd3\",\n \"resource\" : \"pytdydd3ydlgr5btl1449x9t8on4tt9ekx44qrjbqi2pzpyhpxzzunsvl5k85repw3owkbibg391d7r0juhl79fm6vl8fa0eislplk6qtnmuug2puclaz22zcvmwp1dfakqgbuz214k6be3y0etnk7vledvds1sy\",\n \"index\" : 1226747525829074418,\n \"message\" : \"Dolorum dignissimos sapiente. Dicta perspiciatis et. Sint quam aspernatur earum tenetur repellat. Est aut id vitae officiis magnam debitis in. Numquam aut nihil.\",\n \"value\" : { }\n }, {\n \"code\" : \"bf7y5jpw0i8bi37fr7xfh47xra7s80kd3eorwjtyaajwnexfkf8ypzt7ve6ifizwqgzqfou1ozj3x4jxfwluw353p9w8ldt2ml\",\n \"field\" : \"eiwjvibbvf5053i43s6io2iv4h1gentdxcl1cmorfwgt2b6s9dys6iztw8rjpiem3pl3sk3kbmgjsehebfbee2k71u5cj2eovhlsknanv01hu8o4fz36vmech1j7abyvihmwjgx8r7zfowd5vb50xpb62vnhkwm2c7yodndjy1uqjzo90s9bgkffoj\",\n \"resource\" : \"zjilptbbeiw3f4ngueqdp6z8bseysnzuox0elsjjq8lv8f6ax1x2c2hdw6eqpc1joe6d0k4d5rcseqkm8tzlh3hdfqlcw1jowmowfxtt1awdsf36saz137ka0pu9y7snhtvvxpba4xlm2jzkl5g7qi2iu67s2u9iu85dqa1qnh78d5pmi\",\n \"index\" : 5932757140551225757,\n \"message\" : \"Unde eos voluptatem voluptatem qui minus. Non aut voluptas et placeat corporis a neque. Voluptatem porro accusamus eligendi. Blanditiis quod perspiciatis voluptatum explicabo. Eveniet enim repellendus\",\n \"value\" : { }\n }, {\n \"code\" : \"7r6t6qyc3g6pgnsmusi8rjdb8o629ala301xp5ssq69eeq84b9ztthjzvjmtpb40fis5atp02uizk44zrtesy0n591d6a8pe710txz167o0yyhzchsomt60ujv73xhcrn9kdwuwkq8o6r8vbom46czuq76\",\n \"field\" : \"4xqsxksoa1lr4ipgwdzhky52jj5paaxoanp0f9duwclg6coaod23b334iahn6zawchnx6v9ln720tl0t9e55ukjctigehpmcu7o0pfdrym3ze1x2t5i2b0syb14tocliwwhxslx63mowdg7zelwr2dc6wn\",\n \"resource\" : \"5ni7iqy2tvklnphjx05zalli8e7popbkf6hb2hy0e1as9ozz9wrv23rh8ykcv09rarzpcl1ram336ghpcve4738egx3srzldbromsagsseluiqk\",\n \"index\" : 4933451341058240808,\n \"message\" : \"Placeat voluptatum quis. Vel error voluptatem quisquam. Possimus explicabo a dicta facere illum dicta.\",\n \"value\" : { }\n }, {\n \"code\" : \"gsz2lljknxnryx7lzebcnicq20thq5ee13pmcoyyswd1btkegnmgpnwljy3us3zx0f2q1ws86wcsmxlvbe356r5ibm3yassmnavxr5gugabqhcom731bz9dmohdg51a2ua0fjiebugitlsq5hypybe97szidchqpn\",\n \"field\" : \"t8k38wy9dux165iuqr8bc6fzk3gjsublz7a68p3ayy63xr\",\n \"resource\" : \"bosmq8r45ri5jm5keyqnxy9iggrxuca7zlr4958absqttsg6xk3m4udvijhz8fogqjqt4k8xb1jfxxn126h9ayy54g8u6r9dyoo319gkb3b3u8axqmczy9atckrx3c0a6kdvyksj09oe9\",\n \"index\" : 5101225410691548128,\n \"message\" : \"Quia et sint iusto distinctio sint veniam. Perspiciatis voluptatum recusandae dolorem autem in esse. Aspernatur nulla quia similique magni suscipit. Cum quo occaecati ut. Voluptas quia officiis quam.\",\n \"value\" : { }\n }, {\n \"code\" : \"n9u5o87d0ry0iicaf6vxzw7woxa6g7p63969s098\",\n \"field\" : \"rqemyb52hjacsznn7hiix0mv3av1lyln8ksowqu0asy2bgcdfd9cw3x1oo9px1sf1vezapngrg3iau6gdovihrq6uyraxvnedjh570mvt6m5ueftsfk082ndj\",\n \"resource\" : \"nll85ilbsab1frjmwmvf5\",\n \"index\" : 7031571636425965420,\n \"message\" : \"Mollitia aut nihil iusto laborum autem velit. Molestiae hic dolor sed libero quibusdam error incidunt. Qui quos incidunt perferendis aliquam iusto veniam qui. Itaque qui quidem voluptatum.\",\n \"value\" : { }\n }, {\n \"code\" : \"f1x0mm3837v0pv7r7rdrhl5wq94hhwnntzp0r4ahnsnd3p7ixj5p8z9qyqt6tcsqjhm1hqr1rzefy4250hka2h8hsnr2wqmn9w\",\n \"field\" : \"fkb3i0\",\n \"resource\" : \"8kbqis5wosoe6eyaqpmwes3x\",\n \"index\" : 2956170701340358848,\n \"message\" : \"Eius nostrum similique repellendus quam autem. Deleniti dicta laudantium quas. Deleniti modi quos esse distinctio molestias dolor. Id qui voluptatem nam dolor sint. Velit voluptatibus quaerat ut accus\",\n \"value\" : { }\n } ]\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "0dd021cf-7220-4d61-aa6c-9ca6e36a1002", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.145466Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "users/create-gpg-key-for-authenticated", + "schema": { + "description": "Validation Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "errors": { + "items": { + "properties": { + "code": { + "type": "string" + }, + "field": { + "type": "string" + }, + "index": { + "type": "integer" + }, + "message": { + "type": "string" + }, + "resource": { + "type": "string" + }, + "value": { + "oneOf": [ + { + "nullable": true, + "type": "string" + }, + { + "nullable": true, + "type": "integer" + }, + { + "items": { + "type": "string" + }, + "nullable": true, + "type": "array" + } + ] + } + }, + "required": ["code"], + "type": "object" + }, + "type": "array" + }, + "message": { + "type": "string" + } + }, + "required": ["message", "documentation_url"], + "title": "Validation Error", + "type": "object" + } + } + } + }, + "insertionIndex": 170 + }, + { + "id": "a7e92274-3946-45f5-b052-eda1afc8aa61", + "name": "Create a GPG key for the authenticated user (application/json)", + "request": { + "urlPath": "/user/gpg_keys", + "method": "POST", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/563977\",\n \"message\" : \"Dignissimos vitae vel et iste in. Quia rerum fuga magni omnis enim eos. Earum autem quos aut aut laboriosam deserunt. Ad est atque aut. Beatae natus eaque.\",\n \"url\" : \"https://web.example.mocklab.io/526266\",\n \"status\" : \"z4t2nbazysozfbkm846g3ur9mrohcl9ygw76shr7fbbj\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "a7e92274-3946-45f5-b052-eda1afc8aa61", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.144773Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "users/create-gpg-key-for-authenticated", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 171 + }, + { + "id": "2ef7249d-a726-411a-a805-a57b8a0132b1", + "name": "Create a GPG key for the authenticated user (application/json)", + "request": { + "urlPath": "/user/gpg_keys", + "method": "POST", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 403, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/724065\",\n \"message\" : \"Quidem laudantium harum. Est eaque quia incidunt neque. Minus aliquid eius facere maxime id. Saepe omnis id. Neque dolores fugiat.\",\n \"url\" : \"https://web.example.mocklab.io/988616\",\n \"status\" : \"wyp2obdp4f8xjb5ctqy74zxhfyokge1kim3nzilm05dfp5ezdnfb5ybmhrlqzn85ldx7neqre7zew20jjmxqp9b46j0hmxa1jw5f0p2kge1tcb793i15ok5hvqa85dz1uad2lx6tbx3eaavjhzik1j8sab6g7\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "2ef7249d-a726-411a-a805-a57b8a0132b1", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.144564Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "users/create-gpg-key-for-authenticated", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 172 + }, + { + "id": "c6dbbd2c-8a39-4f7d-9648-64cd49668fb8", + "name": "Create a GPG key for the authenticated user (application/json)", + "request": { + "urlPath": "/user/gpg_keys", + "method": "POST", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 401, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/539522\",\n \"message\" : \"Iste consectetur vel. Nisi et est omnis eum voluptatibus ea saepe. Nobis libero natus molestias illo consequatur.\",\n \"url\" : \"https://web.example.mocklab.io/839639\",\n \"status\" : \"362xtp1d7xsghmfu6cf3kvzo4ijd4g\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "c6dbbd2c-8a39-4f7d-9648-64cd49668fb8", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.14436Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "users/create-gpg-key-for-authenticated", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 173 + }, + { + "id": "8c1c18fd-5fa7-49db-92ef-11fa843474a3", + "name": "Create a GPG key for the authenticated user - 304", + "request": { + "urlPath": "/user/gpg_keys", + "method": "POST" + }, + "response": { + "status": 304 + }, + "uuid": "8c1c18fd-5fa7-49db-92ef-11fa843474a3", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.144155Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "users/create-gpg-key-for-authenticated" + } + } + }, + "insertionIndex": 174 + }, + { + "id": "dc49836b-809e-4d18-b0d1-a082f73313e6", + "name": "Create a GPG key for the authenticated user (application/json) - default", + "request": { + "urlPath": "/user/gpg_keys", + "method": "POST", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 201, + "body": "{\n \"can_certify\" : true,\n \"can_encrypt_comms\" : false,\n \"can_encrypt_storage\" : false,\n \"can_sign\" : true,\n \"created_at\" : \"2016-03-24T11:31:04-06:00\",\n \"emails\" : [ {\n \"email\" : \"mastahyeti@users.noreply.github.com\",\n \"verified\" : true\n } ],\n \"expires_at\" : \"2016-03-24T11:31:04-07:00\",\n \"id\" : 3,\n \"key_id\" : \"3262EFF25BA0D270\",\n \"primary_key_id\" : 2,\n \"public_key\" : \"xsBNBFayYZ...\",\n \"raw_key\" : \"\\\"-----BEGIN PGP PUBLIC KEY BLOCK-----\\\\nVersion: GnuPG v2\\\\n\\\\nmQENBFayYZ0BCAC4hScoJXXpyR+MXGcrBxElqw3FzCVvkViuyeko+Jp76QJhg8kr\\\\nucRTxbnOoHfda/FmilEa/wxf9ch5/PSrrL26FxEoPHhJolp8fnIDLQeITn94NYdB\\\\nZtnnEKslpPrG97qSUWIchvyqCPtvOb8+8fWvGx9K/ZWcEEdh1X8+WFR2jMENMeoX\\\\nwxHWQoPnS7LpX/85/M7VUcJxvDVfv+eHsnQupmE5bGarKNih0oMe3LbdN3qA5PTz\\\\nSCm6Iudar1VsQ+xTz08ymL7t4pnEtLguQ7EyatFHCjxNblv5RzxoL0tDgN3HqoDz\\\\nc7TEA+q4RtDQl9amcvQ95emnXmZ974u7UkYdABEBAAG0HlNvbWUgVXNlciA8c29t\\\\nZXVzZXJAZ21haWwuY29tPokBOAQTAQIAIgUCVrJhnQIbAwYLCQgHAwIGFQgCCQoL\\\\nBBYCAwECHgECF4AACgkQMmLv8lug0nAViQgArWjI55+7p48URr2z9Jvak+yrBTx1\\\\nzkufltQAnHTJkq+Kl9dySSmTnOop8o3rE4++IOpYV5Y36PkKf9EZMk4n1RQiDPKE\\\\nAFtRVTkRaoWzOir9KQXJPfhKrl01j/QzY+utfiMvUoBJZ9ybq8Pa885SljW9lbaX\\\\nIYw+hl8ZdJ2KStvGrEyfQvRyq3aN5c9TV//4BdGnwx7Qabq/U+G18lizG6f/yq15\\\\ned7t0KELaCfeKPvytp4VE9/z/Ksah/h3+Qilx07/oG2Ae5kC1bEC9coD/ogPUhbv\\\\nb2bsBIoY9E9YwsLoif2lU+o1t76zLgUktuNscRRUKobW028H1zuFS/XQhrkBDQRW\\\\nsmGdAQgApnyyv3i144OLYy0O4UKQxd3e10Y3WpDwfnGIBefAI1m7RxnUxBag/DsU\\\\n7gi9qLEC4VHSfq4eiNfr1LJOyCL2edTgCWFgBhVjbXjZe6YAOrAnhxwCErnN0Y7N\\\\n6s8wVh9fObSOyf8ZE6G7JeKpcq9Q6gd/KxagfD48a1v+fyRHpyQc6J9pUEmtrDJ7\\\\nBjmsd2VWzLBvNWdHyxDNtZweIaqIO9VUYYpr1mtTliNBOZLUelmgrt7HBRcJpWMA\\\\nS8muVVbuP5MK0trLBq/JB8qUH3zRzB/PhMgzmkIfjEK1VYDWm4E8DYyTWEJcHqkb\\\\neqFsNjrIlwPaA122BWC6gUOPwwH+oQARAQABiQEfBBgBAgAJBQJWsmGdAhsMAAoJ\\\\nEDJi7/JboNJwAyAIALd4xcdmGbZD98gScJzqwzkOMcO8zFHqHNvJ42xIFvGny7c0\\\\n1Rx7iyrdypOby5AxE+viQcjG4rpLZW/xKYBNGrCfDyQO7511I0v8x20EICMlMfD/\\\\nNrWQCzesEPcUlKTP07d+sFyP8AyseOidbzY/92CpskTgdSBjY/ntLSaoknl/fjJE\\\\nQM8OkPqU7IraO1Jzzdnm20d5PZL9+PIwIWdSTedU/vBMTJyNcoqvSfKf1wNC66XP\\\\nhqfYgXJE564AdWZKA3C0IyCqiv+LHwxLnUHio1a4/r91C8KPzxs6tGxRDjXLd7ms\\\\nuYFGWymiUGOE/giHlcxdYcHzwLnPDliMQOLiTkK5AQ0EVuxMygEIAOD+bW1cDTmE\\\\nBxh5JECoqeHuwgl6DlLhnubWPkQ4ZeRzBRAsFcEJQlwlJjrzFDicL+lnm6Qq4tt0\\\\n560TwHdf15/AKTZIZu7H25axvGNzgeaUkJEJdYAq9zTKWwX7wKyzBszi485nQg97\\\\nMfAqwhMpDW0Qqf8+7Ug+WEmfBSGv9uL3aQC6WEeIsHfri0n0n8v4XgwhfShXguxO\\\\nCsOztEsuW7WWKW9P4TngKKv4lCHdPlV6FwxeMzODBJvc2fkHVHnqc0PqszJ5xcF8\\\\n6gZCpMM027SbpeYWCAD5zwJyYP9ntfO1p2HjnQ1dZaP9FeNcO7uIV1Lnd1eGCu6I\\\\nsrVp5k1f3isAEQEAAYkCPgQYAQIACQUCVuxMygIbAgEpCRAyYu/yW6DScMBdIAQZ\\\\nAQIABgUCVuxMygAKCRCKohN4dhq2b4tcCACHxmOHVXNpu47OvUGYQydLgMACUlXN\\\\nlj+HfE0VReqShxdDmpasAY9IRpuMB2RsGK8GbNP+4SlOlAiPf5SMhS7nZNkNDgQQ\\\\naZ3HFpgrFmFwmE10BKT4iQtoxELLM57z0qGOAfTsEjWFQa4sF+6IHAQR/ptkdkkI\\\\nBUEXiMnAwVwBysLIJiLO8qdjB6qp52QkT074JVrwywT/P+DkMfC2k4r/AfEbf6eF\\\\ndmPDuPk6KD87+hJZsSa5MaMUBQVvRO/mgEkhJRITVu58eWGaBOcQJ8gqurhCqM5P\\\\nDfUA4TJ7wiqM6sS764vV1rOioTTXkszzhClQqET7hPVnVQjenYgv0EZHNyQH/1f1\\\\n/CYqvV1vFjM9vJjMbxXsATCkZe6wvBVKD8vLsJAr8N+onKQz+4OPc3kmKq7aESu3\\\\nCi/iuie5KKVwnuNhr9AzT61vEkKxwHcVFEvHB77F6ZAAInhRvjzmQbD2dlPLLQCC\\\\nqDj71ODSSAPTEmUy6969bgD9PfWei7kNkBIx7s3eBv8yzytSc2EcuUgopqFazquw\\\\nFs1+tqGHjBvQfTo6bqbJjp/9Ci2pvde3ElV2rAgUlb3lqXyXjRDqrXosh5GcRPQj\\\\nK8Nhj1BNhnrCVskE4BP0LYbOHuzgm86uXwGCFsY+w2VOsSm16Jx5GHyG5S5WU3+D\\\\nIts/HFYRLiFgDLmTlxo=\\\\n=+OzK\\\\n-----END PGP PUBLIC KEY BLOCK-----\\\"\",\n \"subkeys\" : [ {\n \"can_certify\" : false,\n \"can_encrypt_comms\" : true,\n \"can_encrypt_storage\" : true,\n \"can_sign\" : false,\n \"created_at\" : \"2016-03-24T11:31:04-06:00\",\n \"emails\" : [ ],\n \"expires_at\" : \"2016-03-24T11:31:04-07:00\",\n \"id\" : 4,\n \"key_id\" : \"4A595D4C72EE49C7\",\n \"primary_key_id\" : 3,\n \"public_key\" : \"zsBNBFayYZ...\",\n \"subkeys\" : [ ]\n } ]\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "dc49836b-809e-4d18-b0d1-a082f73313e6", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.14412Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "users/create-gpg-key-for-authenticated", + "schema": { + "description": "A unique encryption key", + "properties": { + "can_certify": { + "example": true, + "type": "boolean" + }, + "can_encrypt_comms": { + "type": "boolean" + }, + "can_encrypt_storage": { + "type": "boolean" + }, + "can_sign": { + "example": true, + "type": "boolean" + }, + "created_at": { + "example": "2016-03-24T11:31:04-06:00", + "format": "date-time", + "type": "string" + }, + "emails": { + "example": [ + { + "email": "mastahyeti@users.noreply.github.com", + "verified": true + } + ], + "items": { + "properties": { + "email": { + "type": "string" + }, + "verified": { + "type": "boolean" + } + }, + "type": "object" + }, + "type": "array" + }, + "expires_at": { + "format": "date-time", + "nullable": true, + "type": "string" + }, + "id": { + "example": 3, + "type": "integer" + }, + "key_id": { + "example": "3262EFF25BA0D270", + "type": "string" + }, + "primary_key_id": { + "nullable": true, + "type": "integer" + }, + "public_key": { + "example": "xsBNBFayYZ...", + "type": "string" + }, + "raw_key": { + "nullable": true, + "type": "string" + }, + "subkeys": { + "example": [ + { + "can_certify": false, + "can_encrypt_comms": true, + "can_encrypt_storage": true, + "can_sign": false, + "created_at": "2016-03-24T11:31:04-06:00", + "emails": [], + "id": 4, + "key_id": "4A595D4C72EE49C7", + "primary_key_id": 3, + "public_key": "zsBNBFayYZ...", + "subkeys": [] + } + ], + "items": { + "properties": { + "can_certify": { + "type": "boolean" + }, + "can_encrypt_comms": { + "type": "boolean" + }, + "can_encrypt_storage": { + "type": "boolean" + }, + "can_sign": { + "type": "boolean" + }, + "created_at": { + "type": "string" + }, + "emails": { + "type": "array" + }, + "expires_at": { + "nullable": true, + "type": "string" + }, + "id": { + "type": "integer" + }, + "key_id": { + "type": "string" + }, + "primary_key_id": { + "type": "integer" + }, + "public_key": { + "type": "string" + }, + "raw_key": { + "nullable": true, + "type": "string" + }, + "subkeys": { + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "id", + "primary_key_id", + "key_id", + "raw_key", + "public_key", + "created_at", + "expires_at", + "can_sign", + "can_encrypt_comms", + "can_encrypt_storage", + "can_certify", + "emails", + "subkeys" + ], + "title": "GPG Key", + "type": "object" + } + } + } + }, + "insertionIndex": 175 + }, + { + "id": "803cc310-dc61-41f1-8128-5572903c5536", + "name": "List GPG keys for the authenticated user (application/json)", + "request": { + "urlPath": "/user/gpg_keys", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/149405\",\n \"message\" : \"Doloribus eius dolorem eos repellendus earum quod alias. Ut voluptas consequatur officiis sed sunt. Quasi consequatur voluptas impedit quod fugiat. Sit voluptatem aspernatur.\",\n \"url\" : \"https://web.example.mocklab.io/951381\",\n \"status\" : \"f85t73ngv935tu\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "803cc310-dc61-41f1-8128-5572903c5536", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.14387Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "users/list-gpg-keys-for-authenticated", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 176 + }, + { + "id": "69505f9f-535d-4a78-8d3e-7faea27e1cf3", + "name": "List GPG keys for the authenticated user (application/json)", + "request": { + "urlPath": "/user/gpg_keys", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 403, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/516259\",\n \"message\" : \"Repudiandae iusto consectetur quo voluptatem aut fuga. Qui excepturi vero. Sed sint a aperiam deserunt. Ad quod sint delectus nobis corporis.\",\n \"url\" : \"https://web.example.mocklab.io/788462\",\n \"status\" : \"vzz7y1uk2cdmx9pezn\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "69505f9f-535d-4a78-8d3e-7faea27e1cf3", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.143665Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "users/list-gpg-keys-for-authenticated", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 177 + }, + { + "id": "b6f476b9-0ed8-4167-b678-783257afe264", + "name": "List GPG keys for the authenticated user (application/json)", + "request": { + "urlPath": "/user/gpg_keys", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 401, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/181252\",\n \"message\" : \"Ab error nam mollitia deserunt. Nam voluptatibus ex est. Qui aut inventore. Nostrum ipsam expedita sint cum aut.\",\n \"url\" : \"https://web.example.mocklab.io/840640\",\n \"status\" : \"ko75y7ilara9gf8199a6i8cstn1gtjf\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "b6f476b9-0ed8-4167-b678-783257afe264", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.14346Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "users/list-gpg-keys-for-authenticated", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 178 + }, + { + "id": "0b9f7155-7bf4-43fe-bdc5-63b415339097", + "name": "List GPG keys for the authenticated user - 304", + "request": { + "urlPath": "/user/gpg_keys", + "method": "GET" + }, + "response": { + "status": 304 + }, + "uuid": "0b9f7155-7bf4-43fe-bdc5-63b415339097", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.143261Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "users/list-gpg-keys-for-authenticated" + } + } + }, + "insertionIndex": 179 + }, + { + "id": "8b22e815-3b52-4e7d-855e-3493c5317000", + "name": "List GPG keys for the authenticated user (application/json) - default", + "request": { + "urlPath": "/user/gpg_keys", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 200, + "body": "[ {\n \"can_certify\" : true,\n \"can_encrypt_comms\" : false,\n \"can_encrypt_storage\" : false,\n \"can_sign\" : true,\n \"created_at\" : \"2016-03-24T11:31:04-06:00\",\n \"emails\" : [ {\n \"email\" : \"mastahyeti@users.noreply.github.com\",\n \"verified\" : true\n } ],\n \"expires_at\" : \"2016-03-24T11:31:04-07:00\",\n \"id\" : 3,\n \"key_id\" : \"3262EFF25BA0D270\",\n \"primary_key_id\" : 2,\n \"public_key\" : \"xsBNBFayYZ...\",\n \"raw_key\" : \"string\",\n \"subkeys\" : [ {\n \"can_certify\" : false,\n \"can_encrypt_comms\" : true,\n \"can_encrypt_storage\" : true,\n \"can_sign\" : false,\n \"created_at\" : \"2016-03-24T11:31:04-06:00\",\n \"emails\" : [ ],\n \"expires_at\" : \"2016-03-24T11:31:04-07:00\",\n \"id\" : 4,\n \"key_id\" : \"4A595D4C72EE49C7\",\n \"primary_key_id\" : 3,\n \"public_key\" : \"zsBNBFayYZ...\",\n \"subkeys\" : [ ]\n } ]\n} ]", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "8b22e815-3b52-4e7d-855e-3493c5317000", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.143219Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "users/list-gpg-keys-for-authenticated", + "schema": { + "items": { + "$ref": "#/components/schemas/gpg-key" + }, + "type": "array" + } + } + } + }, + "insertionIndex": 180 + }, + { + "id": "557212cf-459b-4a41-ae2d-fa07e754da6d", + "name": "Follow a user (application/json)", + "request": { + "urlPath": "/user/following/lorenzo.hilll", + "method": "PUT", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/698386\",\n \"message\" : \"Harum quaerat odit nobis. Aut nihil omnis molestiae nesciunt voluptas deserunt. Excepturi et est nihil. Quae autem distinctio. Aliquid voluptatibus facere consequatur occaecati.\",\n \"url\" : \"https://web.example.mocklab.io/332535\",\n \"status\" : \"p6b0462ccmo1zww1mhhmmahu5bc80xqepse2eiy68vk1neg461hlwiqv\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "557212cf-459b-4a41-ae2d-fa07e754da6d", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.143174Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "users/follow", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 181 + }, + { + "id": "b0e9f1f1-86dd-45c1-85de-35e57b2acb08", + "name": "Follow a user (application/json)", + "request": { + "urlPath": "/user/following/hoa.nitzsche", + "method": "PUT", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 403, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/745055\",\n \"message\" : \"Voluptatem perferendis reiciendis provident provident assumenda. Incidunt molestiae corporis saepe illum earum pariatur. Quia officia autem enim. Perspiciatis nam occaecati dolorem itaque voluptatem r\",\n \"url\" : \"https://web.example.mocklab.io/830026\",\n \"status\" : \"qdot3fxlyic7gvsdh7v5hogkc7hzjfvy71h20s3hb43nh4psolk1pe4loid9f1ewm6cucdifr99gyboxcnxahv4996qyhlmvj1sdqefj6\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "b0e9f1f1-86dd-45c1-85de-35e57b2acb08", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.142944Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "users/follow", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 182 + }, + { + "id": "58c3ea53-3761-4eca-9262-e49b0eb2d194", + "name": "Follow a user (application/json)", + "request": { + "urlPath": "/user/following/caroyln.okeefe", + "method": "PUT", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 401, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/206328\",\n \"message\" : \"Explicabo doloribus officia cupiditate rerum veniam. Sed nihil ipsam esse nesciunt quidem rerum. Voluptas soluta cum eligendi cupiditate voluptas. Dolor et perferendis ut ab corporis. Sunt autem nesci\",\n \"url\" : \"https://web.example.mocklab.io/698838\",\n \"status\" : \"8vpn7y2w0za72yjy3b8leivcp28yfu3dvjxp3de60xtl6olegyzenhtsbd21kmhxmagtpdwk9pzm92z4zg6lve4pxgcha\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "58c3ea53-3761-4eca-9262-e49b0eb2d194", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.142713Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "users/follow", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 183 + }, + { + "id": "ee50bffb-2466-47d1-90c6-720999f5f7c3", + "name": "Follow a user - 304", + "request": { + "urlPath": "/user/following/kerri.schimmel", + "method": "PUT" + }, + "response": { + "status": 304 + }, + "uuid": "ee50bffb-2466-47d1-90c6-720999f5f7c3", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.142488Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "users/follow" + } + } + }, + "insertionIndex": 184 + }, + { + "id": "ddd2771b-07a7-4c5a-82f4-2875775a9447", + "name": "Follow a user - 204", + "request": { + "urlPath": "/user/following/alene.raynor", + "method": "PUT" + }, + "response": { + "status": 204 + }, + "uuid": "ddd2771b-07a7-4c5a-82f4-2875775a9447", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.142449Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "users/follow" + } + } + }, + "insertionIndex": 185 + }, + { + "id": "06dd2b59-4d70-48f0-9fd6-0217cf98ebe0", + "name": "Check if a person is followed by the authenticated user (application/json)", + "request": { + "urlPath": "/user/following/rosella.denesik", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/078098\",\n \"message\" : \"Architecto nihil aut. Saepe nesciunt ex necessitatibus voluptatibus accusantium et quia. Non nisi aut placeat nemo reiciendis odit. Tempora labore officia impedit inventore officia itaque. Autem quisq\",\n \"url\" : \"https://web.example.mocklab.io/912755\",\n \"status\" : \"gaxv\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "06dd2b59-4d70-48f0-9fd6-0217cf98ebe0", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.142401Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "users/check-person-is-followed-by-authenticated", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 186 + }, + { + "id": "ef7fb90f-36c4-4b8e-b1cf-ffcda44baf87", + "name": "Check if a person is followed by the authenticated user (application/json)", + "request": { + "urlPath": "/user/following/coral.walker", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 403, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/792292\",\n \"message\" : \"Aspernatur quaerat id rerum. Et saepe ullam odit et. Ut porro consequatur et. Aut harum fugiat commodi. Occaecati ullam esse explicabo odit facere fuga quas.\",\n \"url\" : \"https://web.example.mocklab.io/071064\",\n \"status\" : \"2n4c\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "ef7fb90f-36c4-4b8e-b1cf-ffcda44baf87", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.142171Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "users/check-person-is-followed-by-authenticated", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 187 + }, + { + "id": "652e2a20-40cf-4eec-b02f-d218b69b00b0", + "name": "Check if a person is followed by the authenticated user (application/json)", + "request": { + "urlPath": "/user/following/jorge.beier", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 401, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/954236\",\n \"message\" : \"Non deserunt inventore. Doloremque sit perferendis. Reprehenderit eum minus qui culpa maxime ut modi. Nemo voluptas voluptatibus labore velit assumenda.\",\n \"url\" : \"https://web.example.mocklab.io/029844\",\n \"status\" : \"u7fiyez45g1oee7ui8cww36dexbgw39iih7vd58qvyfzk807ezis5gamo7w1k69cm6wjd9vamlvfwx5zoqz890hitnl00pvqjt7u6b5wbfhu90g1kewe3bxmigu940l94nbnbpwu\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "652e2a20-40cf-4eec-b02f-d218b69b00b0", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.141943Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "users/check-person-is-followed-by-authenticated", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 188 + }, + { + "id": "ce19187b-beb6-4138-ba12-9ed5666a7f95", + "name": "Check if a person is followed by the authenticated user - 304", + "request": { + "urlPath": "/user/following/traci.kulas", + "method": "GET" + }, + "response": { + "status": 304 + }, + "uuid": "ce19187b-beb6-4138-ba12-9ed5666a7f95", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.141726Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "users/check-person-is-followed-by-authenticated" + } + } + }, + "insertionIndex": 189 + }, + { + "id": "36790e64-7089-4558-96b3-468e3581eea7", + "name": "Check if a person is followed by the authenticated user - 204", + "request": { + "urlPath": "/user/following/valery.rippin", + "method": "GET" + }, + "response": { + "status": 204 + }, + "uuid": "36790e64-7089-4558-96b3-468e3581eea7", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.14169Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "users/check-person-is-followed-by-authenticated" + } + } + }, + "insertionIndex": 190 + }, + { + "id": "07454680-9e76-413a-9a36-576a949f092a", + "name": "Unfollow a user (application/json)", + "request": { + "urlPath": "/user/following/spencer.volkman", + "method": "DELETE", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/650650\",\n \"message\" : \"Tenetur asperiores quis dolor ut aliquid est aliquid. Est et ut doloribus rem. Quisquam culpa aut minima quo sequi ad. Molestiae qui architecto qui nostrum. Eos esse enim.\",\n \"url\" : \"https://web.example.mocklab.io/444163\",\n \"status\" : \"g3x6zm6kvkqkhtlh37y1hnm72cqak6q0tidl2ke0mtw8l0n1vtgf5cvwr5z9j435m8xi0pgem\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "07454680-9e76-413a-9a36-576a949f092a", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.14164Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "users/unfollow", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 191 + }, + { + "id": "7a4e0683-bd44-4b56-83e2-426fabcbf766", + "name": "Unfollow a user (application/json)", + "request": { + "urlPath": "/user/following/weldon.lind", + "method": "DELETE", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 403, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/858508\",\n \"message\" : \"Fugit necessitatibus consequatur tenetur placeat. Officiis quod maiores ex quidem. Vero in nam repellendus.\",\n \"url\" : \"https://web.example.mocklab.io/869532\",\n \"status\" : \"f95j0ywcbr2hmen509sy55g40wyakm604hzqo83yo4b9s3bem9uc9g7zrvzbubrpszlvo2jzijlwextd6p6uvd1w1f7dyj3yoqk3ok4p8tt6ewp1jkpgu\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "7a4e0683-bd44-4b56-83e2-426fabcbf766", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.141405Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "users/unfollow", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 192 + }, + { + "id": "8ab6c210-4c19-46e4-89b1-3984f624b9d4", + "name": "Unfollow a user (application/json)", + "request": { + "urlPath": "/user/following/paris.feeney", + "method": "DELETE", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 401, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/480209\",\n \"message\" : \"Ipsam maiores porro sunt quia aut non. Consequatur qui quis eligendi ex vero eos quae. Numquam sed sit nostrum fugiat aut.\",\n \"url\" : \"https://web.example.mocklab.io/169837\",\n \"status\" : \"0qra6msnhq7e6htky8ws0r1rcrwxxac66nllp3o0cpp4kbk9odqu0s0clvu8822belk9ifyijttmatjl4sgr0gjgnzx0dyiap654rdz1p1sucuhik9xkupbz3ta2hd7a7ncx6a6l3qeym6al883qkfy0cby5io95b11s1tb\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "8ab6c210-4c19-46e4-89b1-3984f624b9d4", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.141176Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "users/unfollow", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 193 + }, + { + "id": "b9306b42-e887-4413-ae26-47442c402c83", + "name": "Unfollow a user - 304", + "request": { + "urlPath": "/user/following/bradley.braun", + "method": "DELETE" + }, + "response": { + "status": 304 + }, + "uuid": "b9306b42-e887-4413-ae26-47442c402c83", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.140957Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "users/unfollow" + } + } + }, + "insertionIndex": 194 + }, + { + "id": "6c6cd13d-8004-49df-9584-3ea3beaa6c0b", + "name": "Unfollow a user - 204", + "request": { + "urlPath": "/user/following/casey.huel", + "method": "DELETE" + }, + "response": { + "status": 204 + }, + "uuid": "6c6cd13d-8004-49df-9584-3ea3beaa6c0b", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.140918Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "users/unfollow" + } + } + }, + "insertionIndex": 195 + }, + { + "id": "d3080009-3a0e-467b-9930-aa9b9a6bfe5d", + "name": "List the people the authenticated user follows (application/json)", + "request": { + "urlPath": "/user/following", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 403, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/469013\",\n \"message\" : \"Odio odio sunt corrupti id ab labore vitae. Voluptatem voluptates sed aperiam. Voluptatem iusto minus. Odio ad et iusto quos nihil.\",\n \"url\" : \"https://web.example.mocklab.io/096484\",\n \"status\" : \"mfk\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "d3080009-3a0e-467b-9930-aa9b9a6bfe5d", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.140852Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "users/list-followed-by-authenticated", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 196 + }, + { + "id": "d7f97dd9-8573-4e5e-9a9d-a2fd04e5b5b1", + "name": "List the people the authenticated user follows (application/json)", + "request": { + "urlPath": "/user/following", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 401, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/220369\",\n \"message\" : \"Nihil aperiam eos voluptatem. Corrupti exercitationem quia id vitae enim. Dolores aperiam libero recusandae. Sunt voluptate non eos praesentium soluta corrupti et.\",\n \"url\" : \"https://web.example.mocklab.io/858639\",\n \"status\" : \"3if56c64\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "d7f97dd9-8573-4e5e-9a9d-a2fd04e5b5b1", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.140646Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "users/list-followed-by-authenticated", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 197 + }, + { + "id": "aca27b2d-f692-4158-a091-7b8d9a40fd62", + "name": "List the people the authenticated user follows - 304", + "request": { + "urlPath": "/user/following", + "method": "GET" + }, + "response": { + "status": 304 + }, + "uuid": "aca27b2d-f692-4158-a091-7b8d9a40fd62", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.140455Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "users/list-followed-by-authenticated" + } + } + }, + "insertionIndex": 198 + }, + { + "id": "9052ab89-b479-4e84-8d33-f29c3747b714", + "name": "List the people the authenticated user follows (application/json) - default", + "request": { + "urlPath": "/user/following", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 200, + "body": "[ {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n} ]", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "9052ab89-b479-4e84-8d33-f29c3747b714", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.140432Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "users/list-followed-by-authenticated", + "schema": { + "items": { + "$ref": "#/components/schemas/simple-user" + }, + "type": "array" + } + } + } + }, + "insertionIndex": 199 + }, + { + "id": "665f9ff3-e320-4d97-bb6b-0d478cf7fa7b", + "name": "List followers of the authenticated user (application/json)", + "request": { + "urlPath": "/user/followers", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 403, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/152723\",\n \"message\" : \"Blanditiis velit totam consequatur. Et eum odit iste. Quasi laborum id magnam voluptas sed consequatur quae. Sed officiis delectus sunt sit enim. Quaerat quibusdam ut qui occaecati.\",\n \"url\" : \"https://web.example.mocklab.io/539757\",\n \"status\" : \"ygp6532cbp13uke19yr3c509k2wpjhco728zxawi5d1wfg8u4hai56osijnoz8kn2a2dcnq\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "665f9ff3-e320-4d97-bb6b-0d478cf7fa7b", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.140394Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "users/list-followers-for-authenticated-user", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 200 + }, + { + "id": "9e46879f-9d1b-4427-af7f-1b34a92605ad", + "name": "List followers of the authenticated user (application/json)", + "request": { + "urlPath": "/user/followers", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 401, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/323971\",\n \"message\" : \"Eaque fuga ut laboriosam laborum itaque in dolore. A et fugiat eos et maiores. Impedit et ipsa. Placeat id quo laborum dolores.\",\n \"url\" : \"https://web.example.mocklab.io/524317\",\n \"status\" : \"tnyj8fg471s785fn82bigmbtybe66tdh8apbnegg17rwddcnv977eo6f0bz5kdykot7h2uo8syrs13f7fhk3n18ndyjaxizv38tcmlnhwxz\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "9e46879f-9d1b-4427-af7f-1b34a92605ad", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.140189Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "users/list-followers-for-authenticated-user", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 201 + }, + { + "id": "1852bd46-7a9b-4556-b940-f8fcc41abfa6", + "name": "List followers of the authenticated user - 304", + "request": { + "urlPath": "/user/followers", + "method": "GET" + }, + "response": { + "status": 304 + }, + "uuid": "1852bd46-7a9b-4556-b940-f8fcc41abfa6", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.139985Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "users/list-followers-for-authenticated-user" + } + } + }, + "insertionIndex": 202 + }, + { + "id": "8e379cb1-8d8a-4065-866a-fc076befcc10", + "name": "List followers of the authenticated user (application/json) - default", + "request": { + "urlPath": "/user/followers", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 200, + "body": "[ {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n} ]", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "8e379cb1-8d8a-4065-866a-fc076befcc10", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.139962Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "users/list-followers-for-authenticated-user", + "schema": { + "items": { + "$ref": "#/components/schemas/simple-user" + }, + "type": "array" + } + } + } + }, + "insertionIndex": 203 + }, + { + "id": "bac43080-c2a8-4df9-a60b-a725ec954c86", + "name": "Add an email address for the authenticated user (application/json)", + "request": { + "urlPath": "/user/emails", + "method": "POST", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 422, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/203464\",\n \"message\" : \"Error aut odit et eaque in alias ut. Ullam unde nam voluptatum. Rerum quam aut. Ea hic sit totam. Aut voluptatibus sunt veniam doloribus voluptas animi.\",\n \"errors\" : [ {\n \"code\" : \"904hv12uu9z5zfd60wrwwz7us99pj1th7aaup10ozqh8g0kkw13vyp8a1mnyz0q5hjqskiuj8sy9cyls97gtklr581v7curprrv3d\",\n \"field\" : \"5qk93fkusig5wtuowi51w3us6xtswii7ymtp3t07yv4w04w993uj5dehigsacees5lgnysplur3m2iqgq\",\n \"resource\" : \"yozj4ozz9o3ngja8qx7ml3jq4ep4i7wjliity91q34ysi3h9uo8uszxw3czlpxp8ed5rs9crsdfqn4w8xhn79tve3fpsu9jv12y8vq22omjo8xmzx\",\n \"index\" : 8346936444447176105,\n \"message\" : \"Odit aliquid quae. Eaque recusandae libero voluptatem aliquam voluptas. Eaque quia animi dolorem placeat accusantium. Et autem earum accusamus.\",\n \"value\" : { }\n }, {\n \"code\" : \"noy5t88qsypexkbpp202eftzftmnd6jk6mpgv3dyz7u28hzp997eqionf2u\",\n \"field\" : \"829hvo8ovlkozcr053syvpfkcuv7q8keccjvoqzie9an17c7ctg6ut85z9wnicoer4b7qkb2fhuxh0s8ds0gwbltyr29efhunyo71cyjkx64r3345contprgv9khqz7qvgbtctb6704m6thmv4zysal3suir2zmr8o4f9jfmrng8fkb3zhiya6ea9s\",\n \"resource\" : \"te2eelh252zu3pkpj7lwcshqg21cptush15le3tulx1li8t62rb1h9nkz7o2ruqmqlk4v0anjh1rsm8tn08ann4hms\",\n \"index\" : 5707929260452667528,\n \"message\" : \"Nemo minima non earum nobis temporibus debitis laudantium. Deserunt voluptas eveniet in perspiciatis quam. Voluptas dolor cumque ratione praesentium ratione consequatur eaque.\",\n \"value\" : { }\n }, {\n \"code\" : \"sh4u7vd88qtcd7gloth5ytl37usmgwcg9swln99wjzf0yuqdsr6qyainkqid0udl2unexfzqngpf9k3lupxgrwvo3tn4xu8srmj8l3kfgp1pcbv\",\n \"field\" : \"qi51o0zbuel\",\n \"resource\" : \"scl6zhjyb9hinw1oov4t4t53w6d3q684wtdhxv68azbnwhqj2lxou89bhpu1thbdiks28ojnx8l6zyqc5a7ebvkjkl92wpfrvsa7hepj84jrbeff1a2z0u6d8t3c39gh6evt67pl2941ywf9dyqnzloz1t6pbz1fghjzx5yo02\",\n \"index\" : 8171065375904064540,\n \"message\" : \"Dignissimos in necessitatibus veritatis dignissimos quod. Atque qui dolorum id dolorem. Illum fugit eos.\",\n \"value\" : { }\n }, {\n \"code\" : \"cdf1xgglpbmt99amv4l06wh9pgocbsc4rbbq1pv5xinxc3k6nlmwnoj8vxm\",\n \"field\" : \"h9xvmgdlrstrmgfnlfzpb3lrpmv76ybe0sijcg1bdj\",\n \"resource\" : \"4ty6dkdfib47gyd6tli6et0yfiskz6xe3xeeuk4nstvsg1e93h0gncjlhtxrwsq3v75d2jpa4yfzdjbvf15srent8gxs3bgn1uz6660rmtknfkrpz0bgksf6jwv3ljntx6dmuo9gf29uusm77raso2jc284zmsb5hbj\",\n \"index\" : 5566103043663526836,\n \"message\" : \"Esse cum suscipit. Dolorum sunt sed dolor. Molestias cum rerum. Incidunt omnis dolores nihil. Excepturi amet non error soluta ullam reprehenderit.\",\n \"value\" : { }\n }, {\n \"code\" : \"g8h4apdwr7bpox658vd\",\n \"field\" : \"sbed2zpfdcv24370t8kgvchm5aureazxsg1vbkcndjpqs4xukqmbz3cv2qx0znrwkjn1z3wnlk1lntlce744j32umvkrtd3yovfd1w1q6xdpyhmbtcj9bunrxcp0tc7e8h5w5fzlg43\",\n \"resource\" : \"82hxy4z31aivkda06c13c24we1pg1tm13rxrlshv2m66hzrnlh0uh6muc\",\n \"index\" : 7832946578265307615,\n \"message\" : \"Dicta minus ducimus dignissimos vel itaque eum. Debitis laudantium nostrum autem maxime. Voluptates repudiandae ut deserunt rerum aut beatae. Eum qui voluptatum.\",\n \"value\" : { }\n }, {\n \"code\" : \"vtzhei3iq2x4fstm48my2vfxhxqr1f2gjfs3m965agzugts9fshx060gwsqrwqbhijdnfoy9lwrumo9lospfwzcq1vah6xlhtga5ns7lxfga9cset0tele4u\",\n \"field\" : \"iz7hl5trc6ozex4j8td60aftf2vampz74z575eswultp6vak2rldyoo5w48x99w3ijknp7n4m6zblbcpiuws58azo01y60ci168as06ske34hv6mx2ak92lh0axhhbeud9\",\n \"resource\" : \"xxdhk6zeu6hecdxx5jic50o\",\n \"index\" : 5229165615597559978,\n \"message\" : \"Corrupti officiis eos dolor. Quo laboriosam dolores ut dicta illo ipsum. Dolorem aut iure recusandae iste quae doloremque repellendus. Quo quaerat alias dolorem aut et cumque.\",\n \"value\" : { }\n }, {\n \"code\" : \"o3qjm5tpaf5orqxfafcf9ezbpi6079816adozdem3bwmeyqupulpd46d0lzd1robf309wmglo7r71u1r1jgt39neoji0axql75f5b0yi0vg9ss9syyk2ay3gtq5ick9pahro2sxt43qsrt6jkxr9q2mt14fqtsm104qnsm4uknpffk1ealst3fj\",\n \"field\" : \"opokjzuggbi6a30v2b7q1pnd0e1cm05fu31ypnype4qv2x9km1k3pjjdz4foewtsd1ir7p86vkq7655elp31yusnyu7m99mj21nj1dpdudnjgw0489bzdohp2d9lnrot0qc\",\n \"resource\" : \"pafnrj30ii7aagvxsyqg2kl9je5ihb46l8kuzp3zzj4wsmt5fbfg7qux9a5afaq844ysnlim44zrbco3qc6xci8s10kwdr6upnxlg9c874w6tdjdy6w0zinst3j1jehuw4o6mbyjivedon6lub5oprvrk0ic93e2a8j7p\",\n \"index\" : 842025948076994187,\n \"message\" : \"Fugit voluptates porro est soluta in sint. Asperiores id perspiciatis aut molestias. Inventore laboriosam eos voluptate sequi est sint. Suscipit omnis provident et libero voluptate.\",\n \"value\" : { }\n } ]\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "bac43080-c2a8-4df9-a60b-a725ec954c86", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.139911Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "users/add-email-for-authenticated", + "schema": { + "description": "Validation Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "errors": { + "items": { + "properties": { + "code": { + "type": "string" + }, + "field": { + "type": "string" + }, + "index": { + "type": "integer" + }, + "message": { + "type": "string" + }, + "resource": { + "type": "string" + }, + "value": { + "oneOf": [ + { + "nullable": true, + "type": "string" + }, + { + "nullable": true, + "type": "integer" + }, + { + "items": { + "type": "string" + }, + "nullable": true, + "type": "array" + } + ] + } + }, + "required": ["code"], + "type": "object" + }, + "type": "array" + }, + "message": { + "type": "string" + } + }, + "required": ["message", "documentation_url"], + "title": "Validation Error", + "type": "object" + } + } + } + }, + "insertionIndex": 204 + }, + { + "id": "16b7057c-7c46-4953-85b6-3acdd71e4d9c", + "name": "Add an email address for the authenticated user (application/json)", + "request": { + "urlPath": "/user/emails", + "method": "POST", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/415151\",\n \"message\" : \"Ipsum quia consequatur. Et quia est facere quo quam. Quasi enim deleniti veritatis cumque enim. Id occaecati nisi reprehenderit. Eos eos ut suscipit nisi.\",\n \"url\" : \"https://web.example.mocklab.io/463699\",\n \"status\" : \"sqbsx0w2pxbg5qcpvw746iwlxo2a2iktvy6chhpgexp4lg960l342g91fcsv5pbtdg0xv4fni3kywxo9apr7e1eo2lsf5t3gto47h8roereqt9lapddtsuin8nizoyfkz54ypv4\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "16b7057c-7c46-4953-85b6-3acdd71e4d9c", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.139145Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "users/add-email-for-authenticated", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 205 + }, + { + "id": "944dc485-ca28-438e-9641-81c010729f8e", + "name": "Add an email address for the authenticated user (application/json)", + "request": { + "urlPath": "/user/emails", + "method": "POST", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 403, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/808672\",\n \"message\" : \"Accusamus voluptatem non ipsum. Sit cum labore sint fugit sint temporibus illo. Quia architecto qui asperiores et.\",\n \"url\" : \"https://web.example.mocklab.io/827045\",\n \"status\" : \"45c9clf69jahegqdad59m58u5y48wh20qu3dtptv0ia92o7jbwo35mvdhsmu07uxv4etbce0elrqb4gr03lirb792wr2cyxluh753lqp0ftrvjpvuaezg6o0ptsx\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "944dc485-ca28-438e-9641-81c010729f8e", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.138935Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "users/add-email-for-authenticated", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 206 + }, + { + "id": "54209f65-5194-4832-a843-ac771e077101", + "name": "Add an email address for the authenticated user (application/json)", + "request": { + "urlPath": "/user/emails", + "method": "POST", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 401, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/036562\",\n \"message\" : \"Officiis placeat rerum dolorem consequuntur. Dolor saepe et omnis voluptas deleniti consectetur voluptatum. Aut id sequi quas fuga exercitationem aut exercitationem. Molestiae non autem doloribus repu\",\n \"url\" : \"https://web.example.mocklab.io/883690\",\n \"status\" : \"ykpghuozyvyvx\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "54209f65-5194-4832-a843-ac771e077101", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.138728Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "users/add-email-for-authenticated", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 207 + }, + { + "id": "97a1fed4-def2-40c4-9c75-33681cd0629b", + "name": "Add an email address for the authenticated user - 304", + "request": { + "urlPath": "/user/emails", + "method": "POST" + }, + "response": { + "status": 304 + }, + "uuid": "97a1fed4-def2-40c4-9c75-33681cd0629b", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.138528Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "users/add-email-for-authenticated" + } + } + }, + "insertionIndex": 208 + }, + { + "id": "dfcd6742-c760-4c9c-8e9c-3875bd30a9f0", + "name": "Add an email address for the authenticated user (application/json) - default", + "request": { + "urlPath": "/user/emails", + "method": "POST", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 201, + "body": "[ {\n \"email\" : \"octocat@octocat.org\",\n \"primary\" : false,\n \"verified\" : false,\n \"visibility\" : \"public\"\n}, {\n \"email\" : \"octocat@github.com\",\n \"primary\" : false,\n \"verified\" : false\n}, {\n \"email\" : \"mona@github.com\",\n \"primary\" : false,\n \"verified\" : false\n} ]", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "dfcd6742-c760-4c9c-8e9c-3875bd30a9f0", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.138506Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "users/add-email-for-authenticated", + "schema": { + "items": { + "$ref": "#/components/schemas/email" + }, + "type": "array" + } + } + } + }, + "insertionIndex": 209 + }, + { + "id": "7e2c4136-995b-4b53-83a0-e1ab1f55cfdd", + "name": "List email addresses for the authenticated user (application/json)", + "request": { + "urlPath": "/user/emails", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/093110\",\n \"message\" : \"Quis rerum voluptatem et dolores. Aut nostrum ratione a. Velit maiores possimus excepturi ipsam autem. Et et nostrum voluptate eligendi quasi qui tenetur. Et a nisi distinctio est unde.\",\n \"url\" : \"https://web.example.mocklab.io/876143\",\n \"status\" : \"2booph7q4sc92n35onfnfqmhrqkd1buypxieh9v4ld2mfjkf5bsob29krkhbf5qvw4qee0e5ttv6fzomwi8cyj1p7eb9xpr4po8gobfbib70hcj1\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "7e2c4136-995b-4b53-83a0-e1ab1f55cfdd", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.138468Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "users/list-emails-for-authenticated", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 210 + }, + { + "id": "e57226eb-c1d9-4b88-94c6-38a7e4c2dc41", + "name": "List email addresses for the authenticated user (application/json)", + "request": { + "urlPath": "/user/emails", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 403, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/557759\",\n \"message\" : \"Quia laudantium enim error. Labore nam saepe veritatis. Aut pariatur dolore enim omnis temporibus. Doloribus pariatur consequatur cumque neque omnis officiis debitis. Nostrum quo reprehenderit perfere\",\n \"url\" : \"https://web.example.mocklab.io/233035\",\n \"status\" : \"fufqwhfbxxgl5wdwmpm04ycat9z5b92byedy27vdsxctp5u3wh3wpz1sszmmw4hp8j6h3pr50n3urv7kfgtgs2oidtniryyn2q2z9226s66u5dsgw6nu6vkclfl8xa4uzp9pvnw21oxqonezufj09k520l1s6wix496ywnpqyzg\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "e57226eb-c1d9-4b88-94c6-38a7e4c2dc41", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.138259Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "users/list-emails-for-authenticated", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 211 + }, + { + "id": "fe9a4efb-3ffc-49bd-9cc4-d01850417df9", + "name": "List email addresses for the authenticated user (application/json)", + "request": { + "urlPath": "/user/emails", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 401, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/342518\",\n \"message\" : \"Rerum voluptates et quidem illo sint vel molestias. Voluptas incidunt nostrum et dolores porro. Quos officiis et voluptatem. Alias dolor sed suscipit. Non ut quod ipsa occaecati quaerat alias inventor\",\n \"url\" : \"https://web.example.mocklab.io/580342\",\n \"status\" : \"khlpl9h716cudgh3kxdyaybxv7rikds96jz8qtqs29tlb3gvafmtci6g2ihsrtc2mpvanqji1554ukhotny9tlz9i9v18ka4wcdplw5vojbkv7vuepfic\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "fe9a4efb-3ffc-49bd-9cc4-d01850417df9", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.138049Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "users/list-emails-for-authenticated", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 212 + }, + { + "id": "4d36264a-e8ae-48e2-82d4-43d141e0b53d", + "name": "List email addresses for the authenticated user - 304", + "request": { + "urlPath": "/user/emails", + "method": "GET" + }, + "response": { + "status": 304 + }, + "uuid": "4d36264a-e8ae-48e2-82d4-43d141e0b53d", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.137838Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "users/list-emails-for-authenticated" + } + } + }, + "insertionIndex": 213 + }, + { + "id": "9c506cf6-d494-44da-8eef-c09f7c089b38", + "name": "List email addresses for the authenticated user (application/json) - default", + "request": { + "urlPath": "/user/emails", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 200, + "body": "[ {\n \"email\" : \"octocat@github.com\",\n \"primary\" : true,\n \"verified\" : true,\n \"visibility\" : \"public\"\n} ]", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "9c506cf6-d494-44da-8eef-c09f7c089b38", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.137816Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "users/list-emails-for-authenticated", + "schema": { + "items": { + "$ref": "#/components/schemas/email" + }, + "type": "array" + } + } + } + }, + "insertionIndex": 214 + }, + { + "id": "ea891aaf-4bc7-4699-9381-ec66908ae57b", + "name": "Delete an email address for the authenticated user (application/json)", + "request": { + "urlPath": "/user/emails", + "method": "DELETE", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 422, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/972815\",\n \"message\" : \"Expedita veniam officia. Laboriosam est saepe et. Ut accusantium possimus dolorum ut quae sint.\",\n \"errors\" : [ {\n \"code\" : \"tt5aasejs5odh8bypsnamfo73hq75niwjkma0o01rzj8rtl9dclwvldof98wlfjr6vl6mxen9b5vudmi4rnf3eh4v1r7t0v6zyvdgbsidwh3vfbk3okctrvath7lv4b4\",\n \"field\" : \"a8yncs9sxsxk2kte0worunw5m1lzr80m07grk24iir3v57zv0tw5r9dcxce2r4ugfykdy58b4rooiylqe5prz8q98zwue3ycif685v84opgj9uzlbstpq250mqsqqp2jyu6wqs69mq3lm64hnimp503csxwza9dpj9xakp2umh2mi3dai4n2vd6bqstomwxjdih\",\n \"resource\" : \"nj9922mugdqlduxmat0iw7aqw7bqmv6d1cg3mn419g54rp9shh08xzgnhtx7tawimcmmlgual7c7bdy9sh021lx12eo57g5t9a2o20a1piq1tyle4\",\n \"index\" : 531098818173889786,\n \"message\" : \"Ullam ut veritatis nemo expedita numquam. Quis necessitatibus cum ut sed. Et eligendi minus eaque doloremque et.\",\n \"value\" : { }\n }, {\n \"code\" : \"yy3qmrw3w0sdd6te5wtgi3oji47801f181v69ikjppli4bsoxux37c42ry5gwdwz8lz9tm2fo8iep4ynd86mmtxmtj2hy7vw\",\n \"field\" : \"ry78lknp7rs1fiom88etka8y1yldpdtlpk0stel7f9f4igzaa6xo6fajso71fvrznszjji2r739zs4h9txk0beva7bl85eew\",\n \"resource\" : \"f335lc04kakgpdz3chbk5l7zgriplhox72jxevwswomc5y4jncqv5zc3kgj784yge2z8vxc9lwzw5l1ajue33jv37oi23m7893wir33oi2osmsi7ijz8fs7vkhz0gvuk3cx7wc9lwntctnwotigai2tundlj1eg5tntvp5bfecekcuin2p3qqmr4d6dlcrr\",\n \"index\" : 1813802620830221216,\n \"message\" : \"Vel recusandae accusamus illum dicta. Non dolorum iusto. Debitis quia eos non eum similique sed consequatur. Qui adipisci sed et necessitatibus totam quia.\",\n \"value\" : { }\n }, {\n \"code\" : \"lacffpai577r3va3bi1wrsygcqm0t0y6uaboaoo6vvziqw9gxody66nk37q82kqkwfc0dpq3soneuopw0wgy26u6\",\n \"field\" : \"xh0wpoe8u5fbri56ilrzj86w9gg2fayk9rieq6miekrqp7q07otsr8rcb2lqu3c6c38ffcktnx5tlxm4xuo5hhyjrgtnvge0awqtjm7cbxw95p\",\n \"resource\" : \"1muw798xluzdljvcminvs49qo62man1r0xy4c7v5x8b7i77yde75cy1gj5duy317wvfwle9rsuhue8v2o8o6vzqyvzuyxzao2hvymxyd65zce7a1i0gxs9j70jrmoqsiqbf18492rkjzkv\",\n \"index\" : 3790057292029405559,\n \"message\" : \"Nihil rerum itaque non et. Et explicabo officiis ipsam delectus veniam. Est a in doloribus officia a iste enim. Aliquam est quos. Aut voluptatem at.\",\n \"value\" : { }\n }, {\n \"code\" : \"in2cm5qhkidgppiknfnjhgc3o6649axziems1bxq1kgqfwkrs1m\",\n \"field\" : \"rhp19nbltd34fc8hlztnihpjik6dbx0t2mqy410j9s0aumyzz96x0v9o1iojdeyogpunmtgc0ag5hics6bc1nx516l04ju2hdnr8vxu3g3oy9o2mue7d01z45upxmijs93bi8f4enkvxikw0j9t\",\n \"resource\" : \"8jrfw0w9qi2wa99m9dadx88wip\",\n \"index\" : 6739336885595677278,\n \"message\" : \"Nobis ex et. Maiores ratione maxime blanditiis sed aut harum a. Mollitia enim est est et expedita et qui. Vel dolore et voluptate. Cumque placeat consequatur dolore sint et quas.\",\n \"value\" : { }\n }, {\n \"code\" : \"ja8w9bsu598uvgzgof3i54q25iiys9w3fbifh3ue1fjk7i2qd\",\n \"field\" : \"4qfg7vjdwt70g8u7klg47ke8pu6ywjz2oljd6rq5u5brt66cq6k0dh40ufbgx162uqt28afnf0erigknxw8yw\",\n \"resource\" : \"rlrj3fjsvb7uirvbhzg81phd4gbibqnjxotmqopej553dwl5x66aqbrp7l3\",\n \"index\" : 5694020148656935599,\n \"message\" : \"Omnis et reiciendis quas neque eius repellendus neque. Recusandae in et est eligendi voluptatem. Autem asperiores aut quos molestias. Molestias aperiam molestiae qui repellat. Porro est nesciunt ea re\",\n \"value\" : { }\n }, {\n \"code\" : \"mqodavgc4qwej1qs3qioglfmgiqy3xx3dc7frr7gqnq9l1u5p4iwc2cbc7z3mv5rsy8rf3app2rquvhyunuh5e0d7gtdzyq5n4khdgzwueotgzl1l9z8jlr36gxfbgfz32bwv\",\n \"field\" : \"cmkl7andz20soq2nkbx5fw8fn81mqrwx4v3qr53s8t7r77x4wg3oydowb6h21oof29uh61lwanwu3cvbednbbo03o5c0is\",\n \"resource\" : \"r9mer2dvlx8p2fj2l4tpx083lp373xgo7mgj092nf44ar6e5qtvvmveyey0ogrvieue7xxmcmi335zwm1lcamx0edchmh9c8n5je8qfmr9k8ub82nzsm0e6cwgvftz5rjakwns7qhz0t448xjdoz9f4ev5up21su4aox38gb5sqm486pdoc5du\",\n \"index\" : 4300168058722508208,\n \"message\" : \"Quidem pariatur dicta et autem neque. Voluptatem quos aliquid. Reiciendis consectetur amet beatae aut. Quasi quos quod. Nam qui qui consectetur voluptatibus libero distinctio.\",\n \"value\" : { }\n }, {\n \"code\" : \"0mr6buy52amqlt8tondnj72015hlgnny454umkvz3gfaq6006lcrpdttzavdnba5xrafoqscmcfjfbg7r7amt31h1bq14t4ojaaxy9tukw68dzhwrp0cexkinm1ygk5c7ofowsymkjq60e3sjbyy5dsi16wvbdxlj7ipxdfbm49r7de\",\n \"field\" : \"pfx9tpkhbcabtkzwebvupf9cwjj11ak6i57ih44lb9hll4rlqrhvcyhijkydwmlomrs\",\n \"resource\" : \"27kmq7lnnt2srtvaei7jr6ba57acv1jx44fpzh4lprs1xjplinmpur1\",\n \"index\" : 8585304122612518973,\n \"message\" : \"Perspiciatis qui ratione. Nam veritatis dolores dolorem velit animi. Nihil officia similique. Non deleniti optio et aliquam quia.\",\n \"value\" : { }\n } ]\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "ea891aaf-4bc7-4699-9381-ec66908ae57b", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.137763Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "users/delete-email-for-authenticated", + "schema": { + "description": "Validation Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "errors": { + "items": { + "properties": { + "code": { + "type": "string" + }, + "field": { + "type": "string" + }, + "index": { + "type": "integer" + }, + "message": { + "type": "string" + }, + "resource": { + "type": "string" + }, + "value": { + "oneOf": [ + { + "nullable": true, + "type": "string" + }, + { + "nullable": true, + "type": "integer" + }, + { + "items": { + "type": "string" + }, + "nullable": true, + "type": "array" + } + ] + } + }, + "required": ["code"], + "type": "object" + }, + "type": "array" + }, + "message": { + "type": "string" + } + }, + "required": ["message", "documentation_url"], + "title": "Validation Error", + "type": "object" + } + } + } + }, + "insertionIndex": 215 + }, + { + "id": "686ff5ad-2c0b-46ce-8d0b-74ee5b21a31c", + "name": "Delete an email address for the authenticated user (application/json)", + "request": { + "urlPath": "/user/emails", + "method": "DELETE", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/115277\",\n \"message\" : \"Natus officia sint veniam doloremque nihil beatae soluta. Quasi aut nostrum tempora veniam repellat voluptas. Quis labore expedita laudantium in consectetur et. Et voluptatem et cumque mollitia nihil \",\n \"url\" : \"https://web.example.mocklab.io/476312\",\n \"status\" : \"h0omobkqkk7xypo2qdd1t5p6gm1fu8r0ar58nymt182diw0r1iktylrkq0kinrt5p77s4ajfemf8kyss566a7z1e3arjff1j3wjuik07nmlychm5etzmfxquuwbktssf0mr2x\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "686ff5ad-2c0b-46ce-8d0b-74ee5b21a31c", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.137008Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "users/delete-email-for-authenticated", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 216 + }, + { + "id": "012ca502-b662-4b68-8f4a-2991b991d611", + "name": "Delete an email address for the authenticated user (application/json)", + "request": { + "urlPath": "/user/emails", + "method": "DELETE", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 403, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/874845\",\n \"message\" : \"Sit natus laboriosam est. Totam a modi soluta molestias. Incidunt distinctio provident dignissimos aut. Omnis illum delectus sed.\",\n \"url\" : \"https://web.example.mocklab.io/789690\",\n \"status\" : \"ucnlpvu1i1w1zmdv9ueza4ug2y1k82svlu04vgicngwcdgx5trvjsdebqzivemagcfve5nvhis7jw49n4\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "012ca502-b662-4b68-8f4a-2991b991d611", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.136792Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "users/delete-email-for-authenticated", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 217 + }, + { + "id": "152d2e32-b023-42ae-9b12-262013e30da7", + "name": "Delete an email address for the authenticated user (application/json)", + "request": { + "urlPath": "/user/emails", + "method": "DELETE", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 401, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/779970\",\n \"message\" : \"Aperiam perspiciatis magni molestiae. Molestiae esse et dolor qui. Sequi iusto similique est culpa saepe ratione iusto.\",\n \"url\" : \"https://web.example.mocklab.io/697602\",\n \"status\" : \"qt7iijiu30ab5gvxrt89orc0zdm41dejbptqk9sfx9e3ti\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "152d2e32-b023-42ae-9b12-262013e30da7", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.136588Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "users/delete-email-for-authenticated", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 218 + }, + { + "id": "de32ad44-f6f5-4da2-9bde-013ddd50a072", + "name": "Delete an email address for the authenticated user - 304", + "request": { + "urlPath": "/user/emails", + "method": "DELETE" + }, + "response": { + "status": 304 + }, + "uuid": "de32ad44-f6f5-4da2-9bde-013ddd50a072", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.136391Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "users/delete-email-for-authenticated" + } + } + }, + "insertionIndex": 219 + }, + { + "id": "d4ad6041-11aa-4a43-b9ec-07911d3bdc65", + "name": "Delete an email address for the authenticated user - 204", + "request": { + "urlPath": "/user/emails", + "method": "DELETE" + }, + "response": { + "status": 204 + }, + "uuid": "d4ad6041-11aa-4a43-b9ec-07911d3bdc65", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.136375Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "users/delete-email-for-authenticated" + } + } + }, + "insertionIndex": 220 + }, + { + "id": "c18d7dfb-bf29-4bea-8627-9ab8723b60a0", + "name": "Update the authenticated user (application/json)", + "request": { + "urlPath": "/user", + "method": "PATCH", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 422, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/067141\",\n \"message\" : \"Eos aliquam odio id temporibus sit eius. Ut amet qui voluptas. Similique ut accusantium. Voluptatum doloremque voluptas soluta ipsam pariatur sint.\",\n \"errors\" : [ {\n \"code\" : \"1p2yuthgz5314nu20qr7rucjsb93s9fvi9hh8qq9ertpm95ghxggiyi6xpi6yqpbn8w90ua6v9v802zd8cmph34d18u5ltprc9bsb18csyte6jdy0g6a41bg848ehay5pdigb7g1\",\n \"field\" : \"2rhq743d1g8vhjd2nq7xfcl6anirowbrztewz08kuc2d3bcga3g3mzpz0jqkfhfuya7uevxrt51ns1zq0ajxi4rdchqzl8ihcjiywnyqli35e3mh55507vf5li6ckerdcbdpuqyr3vzy9muoc770e0wy9a2zm3uo0u57aid4amcrj62oe6v5\",\n \"resource\" : \"0a3flzetwo7swrwrvtq1geoh4qr2cbwk9y2yop2ft3xjss9vftoxzgvfmkfbuz68daskkrkphnr7pe1zciwu2kh\",\n \"index\" : 8267326601961657572,\n \"message\" : \"Ea aut alias. Provident error molestias dolores atque nisi. Tempora voluptatem voluptas laboriosam laboriosam cum et id. Voluptas minus magni dolore deleniti et.\",\n \"value\" : { }\n }, {\n \"code\" : \"1mxkwqd0weqsnd4eyhj6xvlcfsu6q\",\n \"field\" : \"xsmmxnd5ng7faqpxapjl22cnht4cfunyhwyw9i30tq92n8uf297ksbmyfms3b\",\n \"resource\" : \"f8t52i22fg5owtkeounrbolj0dl45x0om3ts9mmvaku6vag8fmnhpv3wou5ax6z39xzrmauyhf1xtx4tvbsy2hfliplv2fqm7qzjs2fu8vf1vom0cis67g9xrz241i3m5vc7ly730go3b4ldrm3c0xxwr3ws8s4tq3z039shoc4v65570b29\",\n \"index\" : 5290368998361844095,\n \"message\" : \"Saepe deleniti et dolores hic. At nihil sunt laboriosam ut cumque eligendi. Dolorem et dolores.\",\n \"value\" : { }\n }, {\n \"code\" : \"kr107vpzvt0c9dig1g0flzl6g2buaim120joje84g9xrnhm3p8e1o9goy56pmudu5kbr3xg\",\n \"field\" : \"y4zmra1qjh1sjnccgrkq3gck0zjkq2hnup6jhf8b7zwgmu4lkkkheu3qzit2l2v56wftirrutgtm1cdl7dbbn13f1mzk68twwxusfiyay01u\",\n \"resource\" : \"ekgtl71t9gumv\",\n \"index\" : 2507685943602034647,\n \"message\" : \"Itaque suscipit et. Accusantium sapiente dolorem. Voluptate sapiente impedit nesciunt voluptatem sit. Voluptates voluptate ut et aut voluptatem itaque doloremque. Provident eius impedit.\",\n \"value\" : { }\n }, {\n \"code\" : \"ed07suu742il348m7tjptro4lhemeb5jsfcnte5r8frt2lzncvwbfo1u38ir2wincyro05hzah5ble3slwmspm0tjjfw0n6mvymqzk4e09\",\n \"field\" : \"6uq9bgq7ta8dan360x6jni4fb02ftkorjoasuhgub8ljqnirfh6nae1tb02ajye3ibw62g25wkipztqo2fa1\",\n \"resource\" : \"fpe1r9paf2nq13klhxkowk9jds2p7zzi9mypbru9sueb9gypu1n\",\n \"index\" : 6899619703566424709,\n \"message\" : \"Unde dolorem cumque molestiae tenetur facere. Ipsam eius aperiam sapiente eveniet atque. Qui placeat rem officiis sunt tempora. Qui qui voluptatem aut laborum.\",\n \"value\" : { }\n }, {\n \"code\" : \"xdhfqtab4s7rhc9m4l9et4ktawpybruo6\",\n \"field\" : \"8gxukn175e8teygmpld8rrz9o3f58g1nfrtvrm0p43znursarns1bdh2\",\n \"resource\" : \"cla0mzwye7awcie51os92ljtt5dqqi8uf10mw1gjnwo8luhezzsnwcminhq8t2v7hila4dm14uo4onyc39b7edwd018rx5ovua1u5wuup8z12\",\n \"index\" : 8728342387235008719,\n \"message\" : \"Sit velit sunt voluptas a omnis autem ut. Quo eaque libero dolor. Culpa voluptas rerum neque adipisci.\",\n \"value\" : { }\n } ]\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "c18d7dfb-bf29-4bea-8627-9ab8723b60a0", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.136341Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "users/update-authenticated", + "schema": { + "description": "Validation Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "errors": { + "items": { + "properties": { + "code": { + "type": "string" + }, + "field": { + "type": "string" + }, + "index": { + "type": "integer" + }, + "message": { + "type": "string" + }, + "resource": { + "type": "string" + }, + "value": { + "oneOf": [ + { + "nullable": true, + "type": "string" + }, + { + "nullable": true, + "type": "integer" + }, + { + "items": { + "type": "string" + }, + "nullable": true, + "type": "array" + } + ] + } + }, + "required": ["code"], + "type": "object" + }, + "type": "array" + }, + "message": { + "type": "string" + } + }, + "required": ["message", "documentation_url"], + "title": "Validation Error", + "type": "object" + } + } + } + }, + "insertionIndex": 221 + }, + { + "id": "8ea333bf-c816-4734-8908-a13e6a69ef5e", + "name": "Update the authenticated user (application/json)", + "request": { + "urlPath": "/user", + "method": "PATCH", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/805648\",\n \"message\" : \"Quidem culpa ipsam aperiam maiores unde consequatur. Odit sequi blanditiis sequi dolor. Minima molestiae cupiditate. Aperiam et deleniti aut voluptatem. Dolore ipsam unde.\",\n \"url\" : \"https://web.example.mocklab.io/561930\",\n \"status\" : \"e6w7vwsr8cyapsxyqbozloaqex6nfm8c62fvf8jx46aqn2c5vm9xhqhqe3i1bapquqb4xricgkx4vy8juithahlshac7dx14pgw997lstuyzjul7q8xwapo6pkqo7jcasqrbriwxbwmbde3883xq3s0zxgs1nsmhtgshrhbux78lqgvc7\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "8ea333bf-c816-4734-8908-a13e6a69ef5e", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.135753Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "users/update-authenticated", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 222 + }, + { + "id": "ae8a3cd6-18bb-4ff6-b7c0-39824111e411", + "name": "Update the authenticated user (application/json)", + "request": { + "urlPath": "/user", + "method": "PATCH", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 403, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/722320\",\n \"message\" : \"Et nam provident dolore ut quae. Nobis ratione cum a. Natus neque officia modi voluptates illum ut commodi.\",\n \"url\" : \"https://web.example.mocklab.io/715614\",\n \"status\" : \"s3hqwg4lf97egynyaxiu6j2\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "ae8a3cd6-18bb-4ff6-b7c0-39824111e411", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.135532Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "users/update-authenticated", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 223 + }, + { + "id": "5631ce05-8d4b-41af-bac0-755d4341ab34", + "name": "Update the authenticated user (application/json)", + "request": { + "urlPath": "/user", + "method": "PATCH", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 401, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/851671\",\n \"message\" : \"Harum qui culpa ipsum ea harum. Debitis aliquam voluptatibus enim consequatur. Quia qui sunt molestiae officiis minima. Reiciendis cupiditate ducimus sed omnis qui similique corporis.\",\n \"url\" : \"https://web.example.mocklab.io/354286\",\n \"status\" : \"nzbw7kmtddb19w5xgzza35f39929lhfsw218gnjb3clz0i9k2kdj4014sl62chw2p3xk6k6meublw9sdf67x43bpjium85asabiadhbq2ovj73j9qp8wucgix5qze2y7wyojw4ac3dtdnjcrzphgw52un6k6preypbkbwj77luay1igozd1hg5ghz0lcnv3x0jdm1w\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "5631ce05-8d4b-41af-bac0-755d4341ab34", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.135328Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "users/update-authenticated", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 224 + }, + { + "id": "75f8c5b1-72c0-456b-bb40-77968f07f107", + "name": "Update the authenticated user - 304", + "request": { + "urlPath": "/user", + "method": "PATCH" + }, + "response": { + "status": 304 + }, + "uuid": "75f8c5b1-72c0-456b-bb40-77968f07f107", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.135123Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "users/update-authenticated" + } + } + }, + "insertionIndex": 225 + }, + { + "id": "779bb9fb-e78e-4393-aa45-bc79286e6d9e", + "name": "Update the authenticated user (application/json) - default", + "request": { + "urlPath": "/user", + "method": "PATCH", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 200, + "body": "{\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"bio\" : \"There once was...\",\n \"blog\" : \"https://github.com/blog\",\n \"collaborators\" : 8,\n \"company\" : \"GitHub\",\n \"created_at\" : \"2008-01-14T04:33:35Z\",\n \"disk_usage\" : 10000,\n \"email\" : \"octocat@github.com\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers\" : 20,\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following\" : 0,\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"hireable\" : false,\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"location\" : \"San Francisco\",\n \"login\" : \"octocat\",\n \"name\" : \"monalisa octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"owned_private_repos\" : 100,\n \"plan\" : {\n \"collaborators\" : 0,\n \"name\" : \"Medium\",\n \"private_repos\" : 20,\n \"space\" : 400\n },\n \"private_gists\" : 81,\n \"public_gists\" : 1,\n \"public_repos\" : 2,\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"total_private_repos\" : 100,\n \"two_factor_authentication\" : true,\n \"type\" : \"User\",\n \"updated_at\" : \"2008-01-14T04:33:35Z\",\n \"url\" : \"https://api.github.com/users/octocat\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "779bb9fb-e78e-4393-aa45-bc79286e6d9e", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.135087Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "users/update-authenticated", + "schema": { + "description": "Private User", + "properties": { + "avatar_url": { + "example": "https://github.com/images/error/octocat_happy.gif", + "format": "uri", + "type": "string" + }, + "bio": { + "example": "There once was...", + "nullable": true, + "type": "string" + }, + "blog": { + "example": "https://github.com/blog", + "nullable": true, + "type": "string" + }, + "business_plus": { + "type": "boolean" + }, + "collaborators": { + "example": 8, + "type": "integer" + }, + "company": { + "example": "GitHub", + "nullable": true, + "type": "string" + }, + "created_at": { + "example": "2008-01-14T04:33:35Z", + "format": "date-time", + "type": "string" + }, + "disk_usage": { + "example": 10000, + "type": "integer" + }, + "email": { + "example": "octocat@github.com", + "format": "email", + "nullable": true, + "type": "string" + }, + "events_url": { + "example": "https://api.github.com/users/octocat/events{/privacy}", + "type": "string" + }, + "followers": { + "example": 20, + "type": "integer" + }, + "followers_url": { + "example": "https://api.github.com/users/octocat/followers", + "format": "uri", + "type": "string" + }, + "following": { + "example": 0, + "type": "integer" + }, + "following_url": { + "example": "https://api.github.com/users/octocat/following{/other_user}", + "type": "string" + }, + "gists_url": { + "example": "https://api.github.com/users/octocat/gists{/gist_id}", + "type": "string" + }, + "gravatar_id": { + "example": "41d064eb2195891e12d0413f63227ea7", + "nullable": true, + "type": "string" + }, + "hireable": { + "nullable": true, + "type": "boolean" + }, + "html_url": { + "example": "https://github.com/octocat", + "format": "uri", + "type": "string" + }, + "id": { + "example": 1, + "type": "integer" + }, + "ldap_dn": { + "type": "string" + }, + "location": { + "example": "San Francisco", + "nullable": true, + "type": "string" + }, + "login": { + "example": "octocat", + "type": "string" + }, + "name": { + "example": "monalisa octocat", + "nullable": true, + "type": "string" + }, + "node_id": { + "example": "MDQ6VXNlcjE=", + "type": "string" + }, + "organizations_url": { + "example": "https://api.github.com/users/octocat/orgs", + "format": "uri", + "type": "string" + }, + "owned_private_repos": { + "example": 100, + "type": "integer" + }, + "plan": { + "properties": { + "collaborators": { + "type": "integer" + }, + "name": { + "type": "string" + }, + "private_repos": { + "type": "integer" + }, + "space": { + "type": "integer" + } + }, + "required": ["collaborators", "name", "space", "private_repos"], + "type": "object" + }, + "private_gists": { + "example": 81, + "type": "integer" + }, + "public_gists": { + "example": 1, + "type": "integer" + }, + "public_repos": { + "example": 2, + "type": "integer" + }, + "received_events_url": { + "example": "https://api.github.com/users/octocat/received_events", + "format": "uri", + "type": "string" + }, + "repos_url": { + "example": "https://api.github.com/users/octocat/repos", + "format": "uri", + "type": "string" + }, + "site_admin": { + "type": "boolean" + }, + "starred_url": { + "example": "https://api.github.com/users/octocat/starred{/owner}{/repo}", + "type": "string" + }, + "subscriptions_url": { + "example": "https://api.github.com/users/octocat/subscriptions", + "format": "uri", + "type": "string" + }, + "suspended_at": { + "format": "date-time", + "nullable": true, + "type": "string" + }, + "total_private_repos": { + "example": 100, + "type": "integer" + }, + "two_factor_authentication": { + "example": true, + "type": "boolean" + }, + "type": { + "example": "User", + "type": "string" + }, + "updated_at": { + "example": "2008-01-14T04:33:35Z", + "format": "date-time", + "type": "string" + }, + "url": { + "example": "https://api.github.com/users/octocat", + "format": "uri", + "type": "string" + } + }, + "required": [ + "avatar_url", + "events_url", + "followers_url", + "following_url", + "gists_url", + "gravatar_id", + "html_url", + "id", + "node_id", + "login", + "organizations_url", + "received_events_url", + "repos_url", + "site_admin", + "starred_url", + "subscriptions_url", + "type", + "url", + "bio", + "blog", + "company", + "email", + "followers", + "following", + "hireable", + "location", + "name", + "public_gists", + "public_repos", + "created_at", + "updated_at", + "collaborators", + "disk_usage", + "owned_private_repos", + "private_gists", + "total_private_repos", + "two_factor_authentication" + ], + "title": "Private User", + "type": "object" + } + } + } + }, + "insertionIndex": 226 + }, + { + "id": "2ce95159-961a-40b9-a8f5-88e0e39c87f3", + "name": "Get the authenticated user (application/json)", + "request": { + "urlPath": "/user", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 403, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/297924\",\n \"message\" : \"Ducimus sunt eum illum fugiat nulla corporis. Aliquam velit blanditiis consequatur. Impedit necessitatibus consectetur dolorem magnam. Dolorem aut animi a voluptatem. Aut laborum enim quam eos dolores\",\n \"url\" : \"https://web.example.mocklab.io/771336\",\n \"status\" : \"zpik18igmq9ehhkt9\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "2ce95159-961a-40b9-a8f5-88e0e39c87f3", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.134764Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "users/get-authenticated", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 227 + }, + { + "id": "6046fec9-30c7-49fd-a487-f30f6cfe96bd", + "name": "Get the authenticated user (application/json)", + "request": { + "urlPath": "/user", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 401, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/068667\",\n \"message\" : \"Quis fugiat placeat. Ab ut doloremque debitis et dolorum sed consequatur. Eius laborum autem.\",\n \"url\" : \"https://web.example.mocklab.io/135318\",\n \"status\" : \"2bbo8x9udvlym9gnatyvdtfkxyegwoakz7v5wx1a4a02685r3hg9n3vpqbyyq2pt9ktxerux3kbf62rjz4rsqumjy8sm5h4gb6hgenc44dlv93nb8rdwpxscstfk1ujfcvzy1qr3utd88wpk2mkycc0aicf0j7\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "6046fec9-30c7-49fd-a487-f30f6cfe96bd", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.134556Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "users/get-authenticated", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 228 + }, + { + "id": "4fd33618-2562-4433-b970-f494bd741cbc", + "name": "Get the authenticated user - 304", + "request": { + "urlPath": "/user", + "method": "GET" + }, + "response": { + "status": 304 + }, + "uuid": "4fd33618-2562-4433-b970-f494bd741cbc", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.134354Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "users/get-authenticated" + } + } + }, + "insertionIndex": 229 + }, + { + "id": "292ed2c6-a4fd-4129-948a-da0ba826779f", + "name": "Get the authenticated user (application/json) - response-with-public-profile-information", + "request": { + "urlPath": "/user", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 200, + "body": "{\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"bio\" : \"There once was...\",\n \"blog\" : \"https://github.com/blog\",\n \"company\" : \"GitHub\",\n \"created_at\" : \"2008-01-14T04:33:35Z\",\n \"email\" : \"octocat@github.com\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers\" : 20,\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following\" : 0,\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"hireable\" : false,\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"location\" : \"San Francisco\",\n \"login\" : \"octocat\",\n \"name\" : \"monalisa octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"public_gists\" : 1,\n \"public_repos\" : 2,\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"updated_at\" : \"2008-01-14T04:33:35Z\",\n \"url\" : \"https://api.github.com/users/octocat\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "292ed2c6-a4fd-4129-948a-da0ba826779f", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.134331Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "users/get-authenticated", + "schema": { + "oneOf": [ + { + "$ref": "#/components/schemas/private-user" + }, + { + "$ref": "#/components/schemas/public-user" + } + ] + } + } + } + }, + "insertionIndex": 230 + }, + { + "id": "50bf3169-3d14-4c26-8e72-d68a071cfa3f", + "name": "Get the authenticated user (application/json) - response-with-public-and-private-profile-information", + "request": { + "urlPath": "/user", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 200, + "body": "{\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"bio\" : \"There once was...\",\n \"blog\" : \"https://github.com/blog\",\n \"collaborators\" : 8,\n \"company\" : \"GitHub\",\n \"created_at\" : \"2008-01-14T04:33:35Z\",\n \"disk_usage\" : 10000,\n \"email\" : \"octocat@github.com\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers\" : 20,\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following\" : 0,\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"hireable\" : false,\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"location\" : \"San Francisco\",\n \"login\" : \"octocat\",\n \"name\" : \"monalisa octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"owned_private_repos\" : 100,\n \"plan\" : {\n \"collaborators\" : 0,\n \"name\" : \"Medium\",\n \"private_repos\" : 20,\n \"space\" : 400\n },\n \"private_gists\" : 81,\n \"public_gists\" : 1,\n \"public_repos\" : 2,\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"total_private_repos\" : 100,\n \"two_factor_authentication\" : true,\n \"type\" : \"User\",\n \"updated_at\" : \"2008-01-14T04:33:35Z\",\n \"url\" : \"https://api.github.com/users/octocat\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "50bf3169-3d14-4c26-8e72-d68a071cfa3f", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.1343Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "users/get-authenticated", + "schema": { + "oneOf": [ + { + "$ref": "#/components/schemas/private-user" + }, + { + "$ref": "#/components/schemas/public-user" + } + ] + } + } + } + }, + "insertionIndex": 231 + }, + { + "id": "ddff1c57-5bf3-448a-8d82-1b54bdd88113", + "name": "List child teams (Legacy)", + "request": { + "urlPath": "/teams/8371774499700907883/teams", + "method": "GET" + }, + "response": { + "status": 422, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/226337\",\n \"message\" : \"Ut rerum odit maxime corrupti nemo. Et nostrum recusandae accusantium perspiciatis velit natus qui. Non nihil ab et quia aspernatur. Autem maxime tenetur rerum voluptas qui voluptate.\",\n \"errors\" : [ {\n \"code\" : \"25rplieopflcjfn1jedia70qrv21bdqyatsnvf8rcxa4oq3oquw13nyyfe9qt2t02niocnnc8ejopwaxvq7th8bfb2d9du4spajpotzegpgbdl56myu338mume2mnaa61oxo6afn2wbf\",\n \"field\" : \"0a2fqdfkept7ywqi3zmb48oze5i9jqihfk8jyqm8taz7hlr52np7o3ypw764poewb0lpislw5up78x4t8lt7lxm0ajo1vrp674dcy1705nwhygaqrk2vy04i7y5xlv\",\n \"resource\" : \"7roh8csfh75qeed4w89ic6e1bbas\",\n \"index\" : 8783795978631197491,\n \"message\" : \"Dolorem iure in aspernatur odio sit. Tempora modi et. Animi tempore et consequatur mollitia nam officiis quae.\",\n \"value\" : { }\n }, {\n \"code\" : \"c3n09rufhs2mhshfs9131e527dzv2lfngg3366pxqv7rr3i\",\n \"field\" : \"c0ph86fqei1cqr7nw4yyickhnbkgbrxtshxbt0dp91gm3yp7u43s0kt8c9vn44c\",\n \"resource\" : \"rychdhzh4cvc3cqru5ht4o126b4ozhn9z57uv2urm08si7apvjtt1416akedhyxbxupazrglgw8ol07wcs6tuo7k6jm7lf6lexd0a9i887s66acukaserlyhnicfesl3vy9wfcvkf9d47ye9cwj3xm3dtnnpskrlnhc7qn8ttqxmks0e0in9y194fptvgc\",\n \"index\" : 6746945209386283115,\n \"message\" : \"Quia dolorem voluptatem. Eius quas distinctio perspiciatis delectus consequuntur et voluptatum. Labore inventore ut explicabo laboriosam. Cumque qui dignissimos voluptates. Esse id rerum animi laborum\",\n \"value\" : { }\n }, {\n \"code\" : \"nc5itolwfe62ffn1p0gxgyk5xhymkcoqi620cxcv5t3sr71h07d75b5hsfsv2zwaf4wnerk9in1dza150sxphs12gvxkgukoy8z\",\n \"field\" : \"2ld874mzi4wcty11d2w48oun9ng37bmgjupaw123hcjuemrety69cfbzjgdtnkdyeeuq8ncrz4var84m0fq0kezgik6z9ctyfhn7978z88mg2wccvlqv3gzbxpfej9di532c4c8mnkicwaxedw4pbdt794vdeydso0d7l\",\n \"resource\" : \"ck4rhu4yej9ekv993buink4epepv6niag9u345nan2l94jygkgcrqmsum10fxeciy20p16isdzzz7h1fholbhzeb\",\n \"index\" : 2512943506249680422,\n \"message\" : \"Minima vel id iusto tenetur. Nam nisi nobis vitae quidem nisi quisquam. Ipsa cupiditate autem qui velit sint. Tenetur totam officiis alias modi magni laborum id.\",\n \"value\" : { }\n }, {\n \"code\" : \"swfy4bvmnq61y1ktcjn68d6m1a79e6lqm5gq7\",\n \"field\" : \"mpahlnkj5cufezf6l1i2ymvs030sklc6cnjdqptblfl5ideldvtujkuj67tpcr2yt6hzsp7enm6l2fckar31yjhbvr34y60t3sw4ignsl7takgkv5tkro7vkf2o7pzf5wbzyh9l9s15woq2215cixnpaewdaiq\",\n \"resource\" : \"hjzj3hfx8iug3o8u3c\",\n \"index\" : 811531784591641563,\n \"message\" : \"Ut impedit facilis. Vitae vel ab. Adipisci et facere neque ducimus quis.\",\n \"value\" : { }\n }, {\n \"code\" : \"e5a0gg5645ztedui7xxmvam8meucvoz1h4we24yinbbgndbvmou00a41t7t406m5gsug5dy5n3jrxpofhh8f4fjd3vbmzaf1ecqdrk550xihcqiyr6g7yy09fs6fuw6z\",\n \"field\" : \"kk9wdv\",\n \"resource\" : \"edifm5vae2l0e4ji28hqo382rmrople2gnkv7juw7n5eu2dw1gsxxqjfsmp3iydr4xlapgdrqc3f4caoemdxy240e2ygf24ko0zz1w5qwrxg5mw7ano9uec8keni1v6otkpnrbyr30d1184veuqeqc7vexvq7ac94zg6u1oyk\",\n \"index\" : 6306646956233402554,\n \"message\" : \"Magni earum consequatur quod. Praesentium quaerat sit magni. Aut nemo nihil fugit.\",\n \"value\" : { }\n }, {\n \"code\" : \"jfhqmupaedfti94pz9y9gtlr8xedjy5jegeo9bh3z4ktqmb4176ij1espnx2rlmahnapxbltalgh2caydvr8ryllh0ba9f9572l2oyg2ggk1gz2bfzd4y5xa8x3gjryspvn1bpy4cg09n2tnm53srheu9\",\n \"field\" : \"hvmstypzcu0rlhum7717mdsbu8sn9roun77cyw8p396l44ii513pz3kbwghvlyvle6e54iypt025gt2t3kiivr1n7sc4u104rew7e1ya2kunhb16hdsu55ujfmyser3cmtmexrqldtsbgysym0g9x1sm\",\n \"resource\" : \"iy703cn1e8o0u71pxe91g1th816ltd3g6wwcky7mcggr0qg2agm9mez8xtg5auae9i66ntfae2xl6nk6g4iyztqrw9eqs8k2buxmneip41te1ftqj7havk7qi98wjz8nfqh\",\n \"index\" : 5832783993137116402,\n \"message\" : \"Tenetur quisquam magni ab. Et possimus facilis aut sit ut. Sit possimus alias tempora id distinctio. Impedit doloremque sint sit. Enim dicta voluptates.\",\n \"value\" : { }\n }, {\n \"code\" : \"a5tkdpw4tfnzz1ousdxop07homsdljmbytq2h0j1vqtjq5l1ly158l2vbj2j8jdf1eje0rvetz37a29yy2w99fg01139anvluuxs7mcr3\",\n \"field\" : \"hwprkrqkk0hoscx4su4cwuhnua9l5jzc6a6axsb12d9yb1edj5btgvrs00ppxc0xcasmdbfzmp6mp33noewtc8qbiqk9762e\",\n \"resource\" : \"fku4nhznuppvtct3681b02qvbwh480gnl3ks4p6b9kbj14przlrf2dwk5l9ww7dqayfkhio06c24dqouew30xab9imcf5ysw4v20n5cxwjqqdvcmjfmlp33g2vb64m9ba5m5dxonzgse8jvgu933dsr6tox3\",\n \"index\" : 7298183859307202787,\n \"message\" : \"Ut delectus sint provident quia nesciunt. Est et vitae quo. Aut commodi vel dolor sed quibusdam consectetur.\",\n \"value\" : { }\n }, {\n \"code\" : \"srx9bkf7f9rn0yszyet9k3m7x2noifwg0z1esuxuw5va8gg6fms3d9zdre811iyun3ksyyr3rdxy3y1bu\",\n \"field\" : \"lje5ejy3mszbs4wb3p3g4af0nl22ecf9w7t2wf1dbxje8iu8rov0s7roaimww1ppsazdk8kkavj0g3q9kp07h8b0hynzvy8fxiguvp5dh\",\n \"resource\" : \"i5f0cl\",\n \"index\" : 3839927845790212778,\n \"message\" : \"Autem est doloremque omnis eligendi. Vel delectus omnis est quas nobis nisi minima. Eum aperiam facilis et reiciendis. Magnam est tenetur architecto quia vel non officia. Vel voluptas repellendus volu\",\n \"value\" : { }\n } ]\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "ddff1c57-5bf3-448a-8d82-1b54bdd88113", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.134247Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "teams/list-child-legacy", + "schema": { + "description": "Validation Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "errors": { + "items": { + "properties": { + "code": { + "type": "string" + }, + "field": { + "type": "string" + }, + "index": { + "type": "integer" + }, + "message": { + "type": "string" + }, + "resource": { + "type": "string" + }, + "value": { + "oneOf": [ + { + "nullable": true, + "type": "string" + }, + { + "nullable": true, + "type": "integer" + }, + { + "items": { + "type": "string" + }, + "nullable": true, + "type": "array" + } + ] + } + }, + "required": ["code"], + "type": "object" + }, + "type": "array" + }, + "message": { + "type": "string" + } + }, + "required": ["message", "documentation_url"], + "title": "Validation Error", + "type": "object" + } + } + } + }, + "insertionIndex": 232 + }, + { + "id": "024b39bc-ff84-42dd-acb4-097289fc2955", + "name": "List child teams (Legacy)", + "request": { + "urlPath": "/teams/2058349160384016573/teams", + "method": "GET" + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/483787\",\n \"message\" : \"In est molestiae eveniet. Impedit qui voluptates voluptatibus. Ipsam corrupti iusto beatae quod modi.\",\n \"url\" : \"https://web.example.mocklab.io/284161\",\n \"status\" : \"ib19swb99e4doznekh6pu2byia08je909u\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "024b39bc-ff84-42dd-acb4-097289fc2955", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.133438Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "teams/list-child-legacy", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 233 + }, + { + "id": "fb6cc53a-aeb1-4406-aa6e-4bd509d4c674", + "name": "List child teams (Legacy)", + "request": { + "urlPath": "/teams/1862475340431549737/teams", + "method": "GET" + }, + "response": { + "status": 403, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/688103\",\n \"message\" : \"Quia maiores minima aut molestias necessitatibus assumenda saepe. Modi dolor nam magnam molestias. Dolorem quis est exercitationem. Facere exercitationem porro dolor aut.\",\n \"url\" : \"https://web.example.mocklab.io/749793\",\n \"status\" : \"un228a5kfq55h1h0pi5g3lb86hwavmonps4h6t4wllwmwohq2ffpb0h\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "fb6cc53a-aeb1-4406-aa6e-4bd509d4c674", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.133238Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "teams/list-child-legacy", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 234 + }, + { + "id": "644523f9-6013-46da-9a0e-1a8f09707b66", + "name": "List child teams (Legacy) - response-if-child-teams-exist", + "request": { + "urlPath": "/teams/1613656112441280090/teams", + "method": "GET" + }, + "response": { + "status": 200, + "body": "[ {\n \"description\" : \"Started it all.\",\n \"html_url\" : \"https://github.com/orgs/rails/teams/core\",\n \"id\" : 2,\n \"members_url\" : \"https://api.github.com/teams/2/members{/member}\",\n \"name\" : \"Original Roster\",\n \"node_id\" : \"MDQ6VGVhbTI=\",\n \"parent\" : {\n \"description\" : \"A great team.\",\n \"html_url\" : \"https://github.com/orgs/github/teams/justice-league\",\n \"id\" : 1,\n \"members_url\" : \"https://api.github.com/teams/1/members{/member}\",\n \"name\" : \"Justice League\",\n \"node_id\" : \"MDQ6VGVhbTE=\",\n \"permission\" : \"admin\",\n \"privacy\" : \"closed\",\n \"repositories_url\" : \"https://api.github.com/teams/1/repos\",\n \"slug\" : \"justice-league\",\n \"url\" : \"https://api.github.com/teams/1\"\n },\n \"permission\" : \"admin\",\n \"privacy\" : \"closed\",\n \"repositories_url\" : \"https://api.github.com/teams/2/repos\",\n \"slug\" : \"original-roster\",\n \"url\" : \"https://api.github.com/teams/2\"\n} ]", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "644523f9-6013-46da-9a0e-1a8f09707b66", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.133026Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "teams/list-child-legacy", + "schema": { + "items": { + "$ref": "#/components/schemas/team" + }, + "type": "array" + } + } + } + }, + "insertionIndex": 235 + }, + { + "id": "fce90e25-ed3b-434d-8be3-e16a6dae4d2a", + "name": "Add or update team repository permissions (Legacy) (application/json)", + "request": { + "urlPath": "/teams/8365713157921511628/repos/gnhq01ub8keum2cxr98fml8liavhzkmc7cf3qgopguoezp5nqaavc7lv02q3d56x5lqyet8f4lo2g01j3ooushavbhtedzk5parrl576rxvh1bhlbw9/0v1cyplsj6c5xtvpw0862wcsvz1tzetdreqjb1vgbd5npe4lk6lzsvwvcg3k9odz009bbcbg2iloqywmnuidqi492569l4qgnf6i2p989nwkyy3tkgne62xx2gda2ls6t10bg49u3l5c65u9o8ojb6yow2xhav4jqroep", + "method": "PUT", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 422, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/962065\",\n \"message\" : \"Qui ut aut vitae unde. Amet possimus aut blanditiis eum et ut est. Asperiores cum recusandae sit. Tempora ea voluptatem ipsum qui quis. Ea illum dolor laborum minus officiis.\",\n \"errors\" : [ {\n \"code\" : \"2lp8gqgfetmzjn3n4outegslc9bvxb5dj80jqtngo9uq9dxtb1zdofqnhi6jrmmv9rw3cw5k0zynwmexe4slgrhjy2rz1cdhlomg0qmlav4z6h3xvf81lk0g2rg3oslh19zeyo19m9q1ucr3j95wo4w02b7szjbg9wpm86zlrluaxo7592i2zp5y\",\n \"field\" : \"r7fpge728k0sxmdnyesjg79t50ka5emld850fqpvna2lv3j7t3anbp2yus3adw04krayn3m98n1lpneldd4r3q5qcyzwdyo3pcnm25b73bopashy4vbwq2hcva9b87kxz0qw3jn32insuz9\",\n \"resource\" : \"uzl3ulvsdu8w1fhb8irxysvhi1xu0emkirn3qxyihgg46dkftp4z6p6wd76khr3i6bf8wd95yeqdjos5sdcfnse3wyvu7ijot\",\n \"index\" : 4929443236113992067,\n \"message\" : \"Illum illum nihil eaque vel itaque. Est doloremque aut nihil sed maiores dolorum. Velit facilis quia itaque a dolor. Facilis corrupti et.\",\n \"value\" : { }\n }, {\n \"code\" : \"gwnei2mtud9je83v8901a3ce5evn9ewws3d372oyk0gys141l89739v0lx599f2202h2rv6iaqmgzj4rgjlfbqfjavc3fcyqa6fo71pigzgjm74l4aq9b1kwaplgw9gwwqwc6gk4icwnp2wg4an2a0q6zxn9r97s5zeok02ywsly6iceabhiu641n3\",\n \"field\" : \"1axihs37alujt0gzgdoy2mpy5nitkwiwkbr3ulus0l9n04pnipnrs5\",\n \"resource\" : \"tgo7rtegyvwe0l06ipobqthvjglf3z5n1ug5x3self2ftp2djxu0ypsuiavs1px0olhpsa3cg1akluugdsuuh7ekq8o3n2mr2wghkl1ujb593595xgv18gz7dkn0qn01nvb0r08ja7pbg5v65z5dfzhcaohn68jew2\",\n \"index\" : 6198588976232920761,\n \"message\" : \"Saepe et eius nihil sed. Rerum perspiciatis quidem. Ut incidunt reprehenderit sed. Vero ut corporis necessitatibus nobis quod. Et vel temporibus.\",\n \"value\" : { }\n }, {\n \"code\" : \"4dtp872f4zl\",\n \"field\" : \"lc5w9t2yy8zvutp194bopryi3w9l6i48iwu8vy4ohnusmodzbj34nhkz82lecfbyd659pq4ly29eivwaruceqtmq12c2vmjskjpdvhl314c167yfe6ee29n4igsh1n85c3fmv44\",\n \"resource\" : \"v12q9zipdb5ha58pqs6u5b3gvyh19oj6xv5xrepewqcigk0103urbr10qppm8d3sjbe4p3vdvdukggklbuxzat78nleyh7cw8ilty4bcen37zjsiv19laarim75io8rusbba7ii12lkp0vv2k9mq56fp6a1qu1wan\",\n \"index\" : 7711305494720999930,\n \"message\" : \"Earum nam ipsa ut odio et voluptatum. Adipisci explicabo doloremque eligendi quis est suscipit. Earum adipisci sequi est quaerat officia.\",\n \"value\" : { }\n }, {\n \"code\" : \"blk5p9t6g28np86oxemqn1nits17atsezybu0uza43rht9wha0hgyjkfl\",\n \"field\" : \"dy5b39mmhr0x2lm04rwaicktogp41xxsmtyw129np2jhsua3z1o3h9nacwihluvsopm39ctbqpyn9wrgo8lccwhcbswmcrd4ydszsyaksmkl6129wqr50zuaaz7swg325ayl26ko0gz8vjol66xllsy4s1xnfl5lozeovivdln0brm8rbc30romqy70\",\n \"resource\" : \"0l9osiu0oh677jrto7by8mdlz4d71fu\",\n \"index\" : 227151676956828527,\n \"message\" : \"Quo cum magnam inventore delectus culpa. Eius non ut assumenda. Est sit in ut eaque veritatis. Praesentium quia quis doloribus porro aut iste. Eum nihil cum eveniet nobis.\",\n \"value\" : { }\n }, {\n \"code\" : \"yualyk8qay6chd5xf4k3wyj4agidu0g312ejce86vnqa641dzsc4m323kz2j4wf5b6bfgji9flcjnaniv5sl64twvpwsgy72nav2canymg6r8fpcgd46nq5k8eqhj5sbue8e3b2n1sqv5gzlimfjkskzymt37d2s7mjdw341k51xatj7g1us76ox\",\n \"field\" : \"6fjezvp8iw4sg1n7kvnucpnushvhql0hpbyt3doqrclo140i1lrqq5a2rmektrtxongbcn3h8\",\n \"resource\" : \"52wmuhoe79s7uokhd9y4af8x652f9k3rvc6klkaaz3hefiu3koag8l0y47amdvfsw0o23isw094p\",\n \"index\" : 1268530919264717672,\n \"message\" : \"Occaecati doloribus repudiandae molestias beatae voluptatum voluptas. Architecto et aut est et eos ea officia. Ad corporis rerum aspernatur deleniti.\",\n \"value\" : { }\n }, {\n \"code\" : \"ow1jl784kvvzgtat5j6ou86c7od4u9mebowcnr5k50ezw04qa5c1z1m5vpw6djcu3dwurnprk72gsb6unnu08liajf8628a4181najiz78xh3jep\",\n \"field\" : \"o6icq3i9z9z2yce9mhf9upwhy1f2snpsm9ovhfp7eiixu9jlbkp6n9thpzvq2sy733nbgjb4qhvua57lea3xh9kdrza1z8olgtw7btehz0e9s0khy6bjeanm3ji8ztf4lc9k3hucsdz4wcdld8qvi\",\n \"resource\" : \"8ma7lpaphkz1bkedjgch8zpoudhxuuyd79y3l81tx90z1s6nmw8ms5tyl871uzpejz2fi23ywn1m0my7dyajj5ej9io9eyy7dtu1oxrdqak4t8tuciafww74qrpltlt5avjkepberdvjrksn238lr19xvu1lbvprst\",\n \"index\" : 758371150346895292,\n \"message\" : \"Animi rerum iusto temporibus minima dolorem doloremque iusto. Magnam et culpa ullam sed ut fugiat quia. Non asperiores in. Tempora a magni et recusandae aperiam dolore porro. At quam nisi.\",\n \"value\" : { }\n }, {\n \"code\" : \"9vt003imltxxkvvxb1dmbck1rjlycs9z879418bjva42q9nvt1ckrdqaoj8oy0i5rkoyq4vthycz1\",\n \"field\" : \"xwfiql2ejztpkw468e6nefm9xe0\",\n \"resource\" : \"rn24rn6s8xq4yf99b20w3e4t1re5rvrn7s85osv9wgx2rzjmqo7r7zrd45ms8xcddw5b4hipkabnxdoquqj51e02\",\n \"index\" : 2118335560141103081,\n \"message\" : \"Nam doloremque eveniet maxime unde neque ea et. Nobis excepturi non tempora blanditiis. Rem qui eaque non voluptate eos voluptatibus quam. Cumque veniam numquam. Consequatur numquam maiores accusantiu\",\n \"value\" : { }\n }, {\n \"code\" : \"x85qrzg8cakavbazfmjqhxh1f3zqczj72kvxzr3ctbkdo8r0jqd46t8maz8f0y8n11c7z362ov583idjpau0qfpra0tyf544jtd5wf66kaidsi43d1ga97444y0lnn7f3ipkfcp6qwg3k7x2w1gm0muaztervo\",\n \"field\" : \"06m8c0cygedvz1klxnc9hbrouad8amjwi3bcoum2vaht32hsp2qpiyv8o18yt4\",\n \"resource\" : \"6p5tbe0t6k0a34f91ouommrzxw8c1vjcx1sscnkmzlgj2daqsv4svq1og5qz7di0omf9mkhidnd8g9nbg58dsif51hbg2ui7a2pumap2ni2q49rd59pjgrt1pc9jtvnpzarzkdyalmzz77uj3\",\n \"index\" : 264038792619941907,\n \"message\" : \"Voluptatem eius necessitatibus. Non non animi optio rem eius eaque. Nemo consequuntur dolor. Esse dicta vel.\",\n \"value\" : { }\n } ]\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "fce90e25-ed3b-434d-8be3-e16a6dae4d2a", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.132965Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "teams/add-or-update-repo-permissions-legacy", + "schema": { + "description": "Validation Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "errors": { + "items": { + "properties": { + "code": { + "type": "string" + }, + "field": { + "type": "string" + }, + "index": { + "type": "integer" + }, + "message": { + "type": "string" + }, + "resource": { + "type": "string" + }, + "value": { + "oneOf": [ + { + "nullable": true, + "type": "string" + }, + { + "nullable": true, + "type": "integer" + }, + { + "items": { + "type": "string" + }, + "nullable": true, + "type": "array" + } + ] + } + }, + "required": ["code"], + "type": "object" + }, + "type": "array" + }, + "message": { + "type": "string" + } + }, + "required": ["message", "documentation_url"], + "title": "Validation Error", + "type": "object" + } + } + } + }, + "insertionIndex": 236 + }, + { + "id": "21442140-ae82-415d-bf6b-03c8fe648b5f", + "name": "Add or update team repository permissions (Legacy) (application/json)", + "request": { + "urlPath": "/teams/6626060150399951738/repos/ue71t1575w87zqldod30oafk3yzhff7d5hispzsal25ftjd0immruv83kqniu8g4b8ykq43jls81ypek2jsd76emhjz6hwnftarh1xv5ue352/lh08qs7x5o4c1qqr9yms9xktz0rhgzlftrkp71bajblprqhmr8xs711tbctxl6vpytchw8dy05uapimd58f4sw1uaoevhu6a990j9tltc", + "method": "PUT", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 403, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/228640\",\n \"message\" : \"Soluta neque eos at quo. Quis sit dignissimos. Suscipit perferendis voluptas et repudiandae numquam non sit. Odio nobis possimus veniam et aperiam adipisci. Quam est qui et dolorum quidem minima omnis\",\n \"url\" : \"https://web.example.mocklab.io/219700\",\n \"status\" : \"imzx6ygtdgpj4vx0rpn1rw5ntv6vv19zy1a3o18btxh34t99qnda5chok52kl6qd6u91g7co01i6o6nlqu\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "21442140-ae82-415d-bf6b-03c8fe648b5f", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.132096Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "teams/add-or-update-repo-permissions-legacy", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 237 + }, + { + "id": "1a598cb7-aa40-4d4f-ad53-af06eecaebbb", + "name": "Add or update team repository permissions (Legacy) - 204", + "request": { + "urlPath": "/teams/2833118736179830736/repos/9h8p48hq3lnha0khffljm4vq72c8k0rdskm7g3yv0m5qn7vskmqsge5a6c3hkqa09tr2tdl71qnf0taohtk04wrv4mx78s6hrj4ltkby38yku1s7tc4d6tdh892ri3zwvn8m9xqwgttse8q7x9aj9rbckk9sfv6x0gc9ps86g/u2m4yyhhuc626dhvuqwlnmqxwljlkzeh9l5gtw3sptyzn2kv04n8r8fia4conedzzspr7c2s0erl0ukrnjgc0vg7aszxcqgi550msm96qclim8yezwnqr0ifk3xknfux4ikcs9w6o1hs8wl7oiwuy2ws3dm", + "method": "PUT" + }, + "response": { + "status": 204 + }, + "uuid": "1a598cb7-aa40-4d4f-ad53-af06eecaebbb", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.131841Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "teams/add-or-update-repo-permissions-legacy" + } + } + }, + "insertionIndex": 238 + }, + { + "id": "c028d533-7a03-4f08-8532-a87c980b7840", + "name": "Check team permissions for a repository (Legacy) - 404", + "request": { + "urlPath": "/teams/8182181937451432234/repos/qxru/r98c03thgx33958n08n4w9k3", + "method": "GET" + }, + "response": { + "status": 404 + }, + "uuid": "c028d533-7a03-4f08-8532-a87c980b7840", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.131798Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "teams/check-permissions-for-repo-legacy" + } + } + }, + "insertionIndex": 239 + }, + { + "id": "c7d10702-1a32-46bd-97ce-e46ba7f5ba59", + "name": "Check team permissions for a repository (Legacy) - 204", + "request": { + "urlPath": "/teams/4537813649988645205/repos/cd90mksetvms9zxkbmdjmscf6h5h0eyecpungq17ucroq2zvmokydmf73ro82ismcu08l1j4/ct1xk2vfnffe51mc3h4zywfrwkk47kau7vblmptlz2ma6fdtc4ar2gcg0sdod7ye20uixaydoozwe0key3q2qs157mlloscst2ktbil7hms9x2dhqfvxypj2wmxf", + "method": "GET" + }, + "response": { + "status": 204 + }, + "uuid": "c7d10702-1a32-46bd-97ce-e46ba7f5ba59", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.131762Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "teams/check-permissions-for-repo-legacy" + } + } + }, + "insertionIndex": 240 + }, + { + "id": "d8a8c699-5e0b-4372-adb6-61132979ab19", + "name": "Check team permissions for a repository (Legacy) (application/json) - alternative-response-with-extra-repository-information", + "request": { + "urlPath": "/teams/3018812223741738392/repos/viwmlisu02umerf0d4df6oi8ka39hutvg13uv7640azbfqz6gsp2p8gs2b739josrht6vhiv84va3gdvgya8fxyj1gd0hcmmwnam95b3fhcqcuea5hfx467heqlx92q4hzl4rv9/4oj72sqpbxri25ado41sorked7jxjwf0ru9vgl8kzpimu4expotgpb87aui5lqnzclhoiguw24ncrj0vlxdnkvy4kuaepqjrlria7asajq304lqxpdpq5cht9fajt85j8vg64zmz2ulfevhlc5f7vhnh3lfky", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 200, + "body": "{\n \"allow_merge_commit\" : true,\n \"allow_rebase_merge\" : true,\n \"allow_squash_merge\" : true,\n \"anonymous_access_enabled\" : false,\n \"archive_url\" : \"https://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref}\",\n \"archived\" : false,\n \"assignees_url\" : \"https://api.github.com/repos/octocat/Hello-World/assignees{/user}\",\n \"blobs_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/blobs{/sha}\",\n \"branches_url\" : \"https://api.github.com/repos/octocat/Hello-World/branches{/branch}\",\n \"clone_url\" : \"https://github.com/octocat/Hello-World.git\",\n \"collaborators_url\" : \"https://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator}\",\n \"comments_url\" : \"https://api.github.com/repos/octocat/Hello-World/comments{/number}\",\n \"commits_url\" : \"https://api.github.com/repos/octocat/Hello-World/commits{/sha}\",\n \"compare_url\" : \"https://api.github.com/repos/octocat/Hello-World/compare/{base}...{head}\",\n \"contents_url\" : \"https://api.github.com/repos/octocat/Hello-World/contents/{+path}\",\n \"contributors_url\" : \"https://api.github.com/repos/octocat/Hello-World/contributors\",\n \"created_at\" : \"2011-01-26T19:01:12Z\",\n \"default_branch\" : \"master\",\n \"delete_branch_on_merge\" : true,\n \"deployments_url\" : \"https://api.github.com/repos/octocat/Hello-World/deployments\",\n \"description\" : \"This your first repo!\",\n \"disabled\" : false,\n \"downloads_url\" : \"https://api.github.com/repos/octocat/Hello-World/downloads\",\n \"events_url\" : \"https://api.github.com/repos/octocat/Hello-World/events\",\n \"fork\" : false,\n \"forks\" : 1,\n \"forks_count\" : 9,\n \"forks_url\" : \"https://api.github.com/repos/octocat/Hello-World/forks\",\n \"full_name\" : \"octocat/Hello-World\",\n \"git_commits_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/commits{/sha}\",\n \"git_refs_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/refs{/sha}\",\n \"git_tags_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/tags{/sha}\",\n \"git_url\" : \"git:github.com/octocat/Hello-World.git\",\n \"has_downloads\" : true,\n \"has_issues\" : true,\n \"has_pages\" : false,\n \"has_projects\" : true,\n \"has_wiki\" : true,\n \"homepage\" : \"https://github.com\",\n \"hooks_url\" : \"https://api.github.com/repos/octocat/Hello-World/hooks\",\n \"html_url\" : \"https://github.com/octocat/Hello-World\",\n \"id\" : 1296269,\n \"is_template\" : false,\n \"issue_comment_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/comments{/number}\",\n \"issue_events_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/events{/number}\",\n \"issues_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues{/number}\",\n \"keys_url\" : \"https://api.github.com/repos/octocat/Hello-World/keys{/key_id}\",\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World/labels{/name}\",\n \"languages_url\" : \"https://api.github.com/repos/octocat/Hello-World/languages\",\n \"license\" : {\n \"html_url\" : \"https://api.github.com/licenses/mit\",\n \"key\" : \"mit\",\n \"name\" : \"MIT License\",\n \"node_id\" : \"MDc6TGljZW5zZW1pdA==\",\n \"spdx_id\" : \"MIT\",\n \"url\" : \"https://api.github.com/licenses/mit\"\n },\n \"merges_url\" : \"https://api.github.com/repos/octocat/Hello-World/merges\",\n \"milestones_url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones{/number}\",\n \"mirror_url\" : \"git:git.example.com/octocat/Hello-World\",\n \"name\" : \"Hello-World\",\n \"network_count\" : 0,\n \"node_id\" : \"MDEwOlJlcG9zaXRvcnkxMjk2MjY5\",\n \"notifications_url\" : \"https://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating}\",\n \"open_issues\" : 1,\n \"open_issues_count\" : 0,\n \"owner\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"permissions\" : {\n \"admin\" : false,\n \"pull\" : true,\n \"push\" : false\n },\n \"private\" : false,\n \"pulls_url\" : \"https://api.github.com/repos/octocat/Hello-World/pulls{/number}\",\n \"pushed_at\" : \"2011-01-26T19:06:43Z\",\n \"releases_url\" : \"https://api.github.com/repos/octocat/Hello-World/releases{/id}\",\n \"size\" : 108,\n \"ssh_url\" : \"git@github.com:octocat/Hello-World.git\",\n \"stargazers_count\" : 80,\n \"stargazers_url\" : \"https://api.github.com/repos/octocat/Hello-World/stargazers\",\n \"statuses_url\" : \"https://api.github.com/repos/octocat/Hello-World/statuses/{sha}\",\n \"subscribers_count\" : 42,\n \"subscribers_url\" : \"https://api.github.com/repos/octocat/Hello-World/subscribers\",\n \"subscription_url\" : \"https://api.github.com/repos/octocat/Hello-World/subscription\",\n \"svn_url\" : \"https://svn.github.com/octocat/Hello-World\",\n \"tags_url\" : \"https://api.github.com/repos/octocat/Hello-World/tags\",\n \"teams_url\" : \"https://api.github.com/repos/octocat/Hello-World/teams\",\n \"template_repository\" : {\n \"allow_merge_commit\" : true,\n \"allow_rebase_merge\" : true,\n \"allow_squash_merge\" : true,\n \"archive_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/{archive_format}{/ref}\",\n \"archived\" : false,\n \"assignees_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/assignees{/user}\",\n \"blobs_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/git/blobs{/sha}\",\n \"branches_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/branches{/branch}\",\n \"clone_url\" : \"https://github.com/octocat/Hello-World-Template.git\",\n \"collaborators_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/collaborators{/collaborator}\",\n \"comments_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/comments{/number}\",\n \"commits_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/commits{/sha}\",\n \"compare_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/compare/{base}...{head}\",\n \"contents_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/contents/{+path}\",\n \"contributors_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/contributors\",\n \"created_at\" : \"2011-01-26T19:01:12Z\",\n \"default_branch\" : \"master\",\n \"delete_branch_on_merge\" : true,\n \"deployments_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/deployments\",\n \"description\" : \"This your first repo!\",\n \"disabled\" : false,\n \"downloads_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/downloads\",\n \"events_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/events\",\n \"fork\" : false,\n \"forks\" : 9,\n \"forks_count\" : 9,\n \"forks_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/forks\",\n \"full_name\" : \"octocat/Hello-World-Template\",\n \"git_commits_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/git/commits{/sha}\",\n \"git_refs_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/git/refs{/sha}\",\n \"git_tags_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/git/tags{/sha}\",\n \"git_url\" : \"git:github.com/octocat/Hello-World-Template.git\",\n \"has_downloads\" : true,\n \"has_issues\" : true,\n \"has_pages\" : false,\n \"has_projects\" : true,\n \"has_wiki\" : true,\n \"homepage\" : \"https://github.com\",\n \"hooks_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/hooks\",\n \"html_url\" : \"https://github.com/octocat/Hello-World-Template\",\n \"id\" : 1296269,\n \"is_template\" : true,\n \"issue_comment_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/issues/comments{/number}\",\n \"issue_events_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/issues/events{/number}\",\n \"issues_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/issues{/number}\",\n \"keys_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/keys{/key_id}\",\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/labels{/name}\",\n \"languages_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/languages\",\n \"license\" : {\n \"html_url\" : \"https://api.github.com/licenses/mit\",\n \"key\" : \"mit\",\n \"name\" : \"MIT License\",\n \"node_id\" : \"MDc6TGljZW5zZW1pdA==\",\n \"spdx_id\" : \"MIT\",\n \"url\" : \"https://api.github.com/licenses/mit\"\n },\n \"merges_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/merges\",\n \"milestones_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/milestones{/number}\",\n \"mirror_url\" : \"git:git.example.com/octocat/Hello-World-Template\",\n \"name\" : \"Hello-World-Template\",\n \"network_count\" : 0,\n \"node_id\" : \"MDEwOlJlcG9zaXRvcnkxMjk2MjY5\",\n \"notifications_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/notifications{?since,all,participating}\",\n \"open_issues\" : 0,\n \"open_issues_count\" : 0,\n \"owner\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"permissions\" : {\n \"admin\" : false,\n \"pull\" : true,\n \"push\" : false\n },\n \"private\" : false,\n \"pulls_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/pulls{/number}\",\n \"pushed_at\" : \"2011-01-26T19:06:43Z\",\n \"releases_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/releases{/id}\",\n \"size\" : 108,\n \"ssh_url\" : \"git@github.com:octocat/Hello-World-Template.git\",\n \"stargazers_count\" : 80,\n \"stargazers_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/stargazers\",\n \"statuses_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/statuses/{sha}\",\n \"subscribers_count\" : 42,\n \"subscribers_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/subscribers\",\n \"subscription_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/subscription\",\n \"svn_url\" : \"https://svn.github.com/octocat/Hello-World-Template\",\n \"tags_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/tags\",\n \"teams_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/teams\",\n \"temp_clone_token\" : \"ABTLWHOULUVAXGTRYU7OC2876QJ2O\",\n \"topics\" : [ \"octocat\", \"atom\", \"electron\", \"api\" ],\n \"trees_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/git/trees{/sha}\",\n \"updated_at\" : \"2011-01-26T19:14:43Z\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World-Template\",\n \"visibility\" : \"public\",\n \"watchers\" : 80,\n \"watchers_count\" : 80\n },\n \"topics\" : [ \"octocat\", \"atom\", \"electron\", \"api\" ],\n \"trees_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/trees{/sha}\",\n \"updated_at\" : \"2011-01-26T19:14:43Z\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World\",\n \"visibility\" : \"public\",\n \"watchers\" : 1,\n \"watchers_count\" : 80\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "d8a8c699-5e0b-4372-adb6-61132979ab19", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.131685Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "teams/check-permissions-for-repo-legacy", + "schema": { + "description": "A team's access to a repository.", + "properties": { + "allow_forking": { + "default": false, + "description": "Whether to allow forking this repo", + "example": false, + "type": "boolean" + }, + "allow_merge_commit": { + "default": true, + "description": "Whether to allow merge commits for pull requests.", + "example": true, + "type": "boolean" + }, + "allow_rebase_merge": { + "default": true, + "description": "Whether to allow rebase merges for pull requests.", + "example": true, + "type": "boolean" + }, + "allow_squash_merge": { + "default": true, + "description": "Whether to allow squash merges for pull requests.", + "example": true, + "type": "boolean" + }, + "anonymous_access_enabled": { + "type": "boolean" + }, + "archive_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref}", + "type": "string" + }, + "archived": { + "default": false, + "description": "Whether the repository is archived.", + "type": "boolean" + }, + "assignees_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/assignees{/user}", + "type": "string" + }, + "blobs_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/git/blobs{/sha}", + "type": "string" + }, + "branches_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/branches{/branch}", + "type": "string" + }, + "clone_url": { + "example": "https://github.com/octocat/Hello-World.git", + "type": "string" + }, + "collaborators_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator}", + "type": "string" + }, + "comments_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/comments{/number}", + "type": "string" + }, + "commits_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/commits{/sha}", + "type": "string" + }, + "compare_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/compare/{base}...{head}", + "type": "string" + }, + "contents_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/contents/{+path}", + "type": "string" + }, + "contributors_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/contributors", + "format": "uri", + "type": "string" + }, + "created_at": { + "example": "2011-01-26T19:01:12Z", + "format": "date-time", + "nullable": true, + "type": "string" + }, + "default_branch": { + "description": "The default branch of the repository.", + "example": "master", + "type": "string" + }, + "delete_branch_on_merge": { + "default": false, + "description": "Whether to delete head branches when pull requests are merged", + "example": false, + "type": "boolean" + }, + "deployments_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/deployments", + "format": "uri", + "type": "string" + }, + "description": { + "example": "This your first repo!", + "nullable": true, + "type": "string" + }, + "disabled": { + "description": "Returns whether or not this repository disabled.", + "type": "boolean" + }, + "downloads_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/downloads", + "format": "uri", + "type": "string" + }, + "events_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/events", + "format": "uri", + "type": "string" + }, + "fork": { + "type": "boolean" + }, + "forks": { + "type": "integer" + }, + "forks_count": { + "example": 9, + "type": "integer" + }, + "forks_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/forks", + "format": "uri", + "type": "string" + }, + "full_name": { + "example": "octocat/Hello-World", + "type": "string" + }, + "git_commits_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/git/commits{/sha}", + "type": "string" + }, + "git_refs_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/git/refs{/sha}", + "type": "string" + }, + "git_tags_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/git/tags{/sha}", + "type": "string" + }, + "git_url": { + "example": "git:github.com/octocat/Hello-World.git", + "type": "string" + }, + "has_downloads": { + "default": true, + "description": "Whether downloads are enabled.", + "example": true, + "type": "boolean" + }, + "has_issues": { + "default": true, + "description": "Whether issues are enabled.", + "example": true, + "type": "boolean" + }, + "has_pages": { + "type": "boolean" + }, + "has_projects": { + "default": true, + "description": "Whether projects are enabled.", + "example": true, + "type": "boolean" + }, + "has_wiki": { + "default": true, + "description": "Whether the wiki is enabled.", + "example": true, + "type": "boolean" + }, + "homepage": { + "example": "https://github.com", + "format": "uri", + "nullable": true, + "type": "string" + }, + "hooks_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/hooks", + "format": "uri", + "type": "string" + }, + "html_url": { + "example": "https://github.com/octocat/Hello-World", + "format": "uri", + "type": "string" + }, + "id": { + "description": "Unique identifier of the repository", + "example": 42, + "type": "integer" + }, + "is_template": { + "default": false, + "description": "Whether this repository acts as a template that can be used to generate new repositories.", + "example": true, + "type": "boolean" + }, + "issue_comment_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/issues/comments{/number}", + "type": "string" + }, + "issue_events_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/issues/events{/number}", + "type": "string" + }, + "issues_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/issues{/number}", + "type": "string" + }, + "keys_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/keys{/key_id}", + "type": "string" + }, + "labels_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/labels{/name}", + "type": "string" + }, + "language": { + "nullable": true, + "type": "string" + }, + "languages_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/languages", + "format": "uri", + "type": "string" + }, + "license": { + "$ref": "#/components/schemas/nullable-license-simple" + }, + "master_branch": { + "type": "string" + }, + "merges_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/merges", + "format": "uri", + "type": "string" + }, + "milestones_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/milestones{/number}", + "type": "string" + }, + "mirror_url": { + "example": "git:git.example.com/octocat/Hello-World", + "format": "uri", + "nullable": true, + "type": "string" + }, + "name": { + "description": "The name of the repository.", + "example": "Team Environment", + "type": "string" + }, + "network_count": { + "type": "integer" + }, + "node_id": { + "example": "MDEwOlJlcG9zaXRvcnkxMjk2MjY5", + "type": "string" + }, + "notifications_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating}", + "type": "string" + }, + "open_issues": { + "type": "integer" + }, + "open_issues_count": { + "example": 0, + "type": "integer" + }, + "owner": { + "$ref": "#/components/schemas/nullable-simple-user" + }, + "permissions": { + "properties": { + "admin": { + "type": "boolean" + }, + "maintain": { + "type": "boolean" + }, + "pull": { + "type": "boolean" + }, + "push": { + "type": "boolean" + }, + "triage": { + "type": "boolean" + } + }, + "required": ["admin", "pull", "push"], + "type": "object" + }, + "private": { + "default": false, + "description": "Whether the repository is private or public.", + "type": "boolean" + }, + "pulls_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/pulls{/number}", + "type": "string" + }, + "pushed_at": { + "example": "2011-01-26T19:06:43Z", + "format": "date-time", + "nullable": true, + "type": "string" + }, + "releases_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/releases{/id}", + "type": "string" + }, + "size": { + "example": 108, + "type": "integer" + }, + "ssh_url": { + "example": "git@github.com:octocat/Hello-World.git", + "type": "string" + }, + "stargazers_count": { + "example": 80, + "type": "integer" + }, + "stargazers_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/stargazers", + "format": "uri", + "type": "string" + }, + "statuses_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/statuses/{sha}", + "type": "string" + }, + "subscribers_count": { + "type": "integer" + }, + "subscribers_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/subscribers", + "format": "uri", + "type": "string" + }, + "subscription_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/subscription", + "format": "uri", + "type": "string" + }, + "svn_url": { + "example": "https://svn.github.com/octocat/Hello-World", + "format": "uri", + "type": "string" + }, + "tags_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/tags", + "format": "uri", + "type": "string" + }, + "teams_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/teams", + "format": "uri", + "type": "string" + }, + "template_repository": { + "$ref": "#/components/schemas/nullable-repository" + }, + "topics": { + "items": { + "type": "string" + }, + "type": "array" + }, + "trees_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/git/trees{/sha}", + "type": "string" + }, + "updated_at": { + "example": "2011-01-26T19:14:43Z", + "format": "date-time", + "nullable": true, + "type": "string" + }, + "url": { + "example": "https://api.github.com/repos/octocat/Hello-World", + "format": "uri", + "type": "string" + }, + "visibility": { + "default": "public", + "description": "The repository visibility: public, private, or internal.", + "type": "string" + }, + "watchers": { + "type": "integer" + }, + "watchers_count": { + "example": 80, + "type": "integer" + } + }, + "required": [ + "archive_url", + "assignees_url", + "blobs_url", + "branches_url", + "collaborators_url", + "comments_url", + "commits_url", + "compare_url", + "contents_url", + "contributors_url", + "deployments_url", + "description", + "downloads_url", + "events_url", + "fork", + "forks_url", + "full_name", + "git_commits_url", + "git_refs_url", + "git_tags_url", + "hooks_url", + "html_url", + "id", + "node_id", + "issue_comment_url", + "issue_events_url", + "issues_url", + "keys_url", + "labels_url", + "languages_url", + "merges_url", + "milestones_url", + "name", + "notifications_url", + "owner", + "private", + "pulls_url", + "releases_url", + "stargazers_url", + "statuses_url", + "subscribers_url", + "subscription_url", + "tags_url", + "teams_url", + "trees_url", + "url", + "clone_url", + "default_branch", + "forks", + "forks_count", + "git_url", + "has_downloads", + "has_issues", + "has_projects", + "has_wiki", + "has_pages", + "homepage", + "language", + "archived", + "disabled", + "mirror_url", + "open_issues", + "open_issues_count", + "license", + "pushed_at", + "size", + "ssh_url", + "stargazers_count", + "svn_url", + "watchers", + "watchers_count", + "created_at", + "updated_at" + ], + "title": "Team Repository", + "type": "object" + } + } + } + }, + "insertionIndex": 241 + }, + { + "id": "c5ece526-7335-4c70-a4a7-8f8e7347c685", + "name": "Remove a repository from a team (Legacy) - 204", + "request": { + "urlPath": "/teams/8782222420998555064/repos/37qq88texbtb9wcbigap39m8kw8k9o7hr8baapjtom52rhmp67l0i7sfovqgsc524ysm6dm4p2qcbt2alk69ot90vezleyooi7u0s3axwggm2iw5rzxaapppnkcse6mtt1cprdzu9g4zze3igtnbwekt22o5644fh4ekw9dlkws8bzpq8tvd5btz2zjofg6tiblirpb/g75jh3www0zo0dnr8kt0jvtsj61xprwlloduz8ftp", + "method": "DELETE" + }, + "response": { + "status": 204 + }, + "uuid": "c5ece526-7335-4c70-a4a7-8f8e7347c685", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.131033Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "teams/remove-repo-legacy" + } + } + }, + "insertionIndex": 242 + }, + { + "id": "6a652174-e63f-4bbd-a7b2-fffdd4c8d7b3", + "name": "List team repositories (Legacy)", + "request": { + "urlPath": "/teams/2348931430041330124/repos", + "method": "GET" + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/137041\",\n \"message\" : \"Architecto atque nulla earum enim dolor sunt. Quia nihil est atque nostrum sequi minima. Illo enim ullam quas dolores.\",\n \"url\" : \"https://web.example.mocklab.io/285892\",\n \"status\" : \"haqdu1fx2yz7z2wubh1ntds0j1vyaid71pa8527qayc0wg4dlvr0aoowlma3lt2vu62pddkis1mff9igeuk5\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "6a652174-e63f-4bbd-a7b2-fffdd4c8d7b3", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.130987Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "teams/list-repos-legacy", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 243 + }, + { + "id": "729cf1dc-0fdd-46ef-9f96-e9287962b529", + "name": "List team repositories (Legacy) - default", + "request": { + "urlPath": "/teams/7043033830730963747/repos", + "method": "GET" + }, + "response": { + "status": 200, + "body": "[ {\n \"archive_url\" : \"https://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref}\",\n \"archived\" : false,\n \"assignees_url\" : \"https://api.github.com/repos/octocat/Hello-World/assignees{/user}\",\n \"blobs_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/blobs{/sha}\",\n \"branches_url\" : \"https://api.github.com/repos/octocat/Hello-World/branches{/branch}\",\n \"clone_url\" : \"https://github.com/octocat/Hello-World.git\",\n \"collaborators_url\" : \"https://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator}\",\n \"comments_url\" : \"https://api.github.com/repos/octocat/Hello-World/comments{/number}\",\n \"commits_url\" : \"https://api.github.com/repos/octocat/Hello-World/commits{/sha}\",\n \"compare_url\" : \"https://api.github.com/repos/octocat/Hello-World/compare/{base}...{head}\",\n \"contents_url\" : \"https://api.github.com/repos/octocat/Hello-World/contents/{+path}\",\n \"contributors_url\" : \"https://api.github.com/repos/octocat/Hello-World/contributors\",\n \"created_at\" : \"2011-01-26T19:01:12Z\",\n \"default_branch\" : \"master\",\n \"deployments_url\" : \"https://api.github.com/repos/octocat/Hello-World/deployments\",\n \"description\" : \"This your first repo!\",\n \"disabled\" : false,\n \"downloads_url\" : \"https://api.github.com/repos/octocat/Hello-World/downloads\",\n \"events_url\" : \"https://api.github.com/repos/octocat/Hello-World/events\",\n \"fork\" : false,\n \"forks_count\" : 9,\n \"forks_url\" : \"https://api.github.com/repos/octocat/Hello-World/forks\",\n \"full_name\" : \"octocat/Hello-World\",\n \"git_commits_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/commits{/sha}\",\n \"git_refs_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/refs{/sha}\",\n \"git_tags_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/tags{/sha}\",\n \"git_url\" : \"git:github.com/octocat/Hello-World.git\",\n \"has_downloads\" : true,\n \"has_issues\" : true,\n \"has_pages\" : false,\n \"has_projects\" : true,\n \"has_wiki\" : true,\n \"homepage\" : \"https://github.com\",\n \"hooks_url\" : \"https://api.github.com/repos/octocat/Hello-World/hooks\",\n \"html_url\" : \"https://github.com/octocat/Hello-World\",\n \"id\" : 1296269,\n \"is_template\" : false,\n \"issue_comment_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/comments{/number}\",\n \"issue_events_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/events{/number}\",\n \"issues_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues{/number}\",\n \"keys_url\" : \"https://api.github.com/repos/octocat/Hello-World/keys{/key_id}\",\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World/labels{/name}\",\n \"languages_url\" : \"https://api.github.com/repos/octocat/Hello-World/languages\",\n \"merges_url\" : \"https://api.github.com/repos/octocat/Hello-World/merges\",\n \"milestones_url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones{/number}\",\n \"mirror_url\" : \"git:git.example.com/octocat/Hello-World\",\n \"name\" : \"Hello-World\",\n \"node_id\" : \"MDEwOlJlcG9zaXRvcnkxMjk2MjY5\",\n \"notifications_url\" : \"https://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating}\",\n \"open_issues_count\" : 0,\n \"owner\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"permissions\" : {\n \"admin\" : false,\n \"pull\" : true,\n \"push\" : false\n },\n \"private\" : false,\n \"pulls_url\" : \"https://api.github.com/repos/octocat/Hello-World/pulls{/number}\",\n \"pushed_at\" : \"2011-01-26T19:06:43Z\",\n \"releases_url\" : \"https://api.github.com/repos/octocat/Hello-World/releases{/id}\",\n \"size\" : 108,\n \"ssh_url\" : \"git@github.com:octocat/Hello-World.git\",\n \"stargazers_count\" : 80,\n \"stargazers_url\" : \"https://api.github.com/repos/octocat/Hello-World/stargazers\",\n \"statuses_url\" : \"https://api.github.com/repos/octocat/Hello-World/statuses/{sha}\",\n \"subscribers_url\" : \"https://api.github.com/repos/octocat/Hello-World/subscribers\",\n \"subscription_url\" : \"https://api.github.com/repos/octocat/Hello-World/subscription\",\n \"svn_url\" : \"https://svn.github.com/octocat/Hello-World\",\n \"tags_url\" : \"https://api.github.com/repos/octocat/Hello-World/tags\",\n \"teams_url\" : \"https://api.github.com/repos/octocat/Hello-World/teams\",\n \"template_repository\" : {\n \"allow_merge_commit\" : true,\n \"allow_rebase_merge\" : true,\n \"allow_squash_merge\" : true,\n \"archive_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/{archive_format}{/ref}\",\n \"archived\" : false,\n \"assignees_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/assignees{/user}\",\n \"blobs_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/git/blobs{/sha}\",\n \"branches_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/branches{/branch}\",\n \"clone_url\" : \"https://github.com/octocat/Hello-World-Template.git\",\n \"collaborators_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/collaborators{/collaborator}\",\n \"comments_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/comments{/number}\",\n \"commits_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/commits{/sha}\",\n \"compare_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/compare/{base}...{head}\",\n \"contents_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/contents/{+path}\",\n \"contributors_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/contributors\",\n \"created_at\" : \"2011-01-26T19:01:12Z\",\n \"default_branch\" : \"master\",\n \"delete_branch_on_merge\" : true,\n \"deployments_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/deployments\",\n \"description\" : \"This your first repo!\",\n \"disabled\" : false,\n \"downloads_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/downloads\",\n \"events_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/events\",\n \"fork\" : false,\n \"forks\" : 9,\n \"forks_count\" : 9,\n \"forks_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/forks\",\n \"full_name\" : \"octocat/Hello-World-Template\",\n \"git_commits_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/git/commits{/sha}\",\n \"git_refs_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/git/refs{/sha}\",\n \"git_tags_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/git/tags{/sha}\",\n \"git_url\" : \"git:github.com/octocat/Hello-World-Template.git\",\n \"has_downloads\" : true,\n \"has_issues\" : true,\n \"has_pages\" : false,\n \"has_projects\" : true,\n \"has_wiki\" : true,\n \"homepage\" : \"https://github.com\",\n \"hooks_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/hooks\",\n \"html_url\" : \"https://github.com/octocat/Hello-World-Template\",\n \"id\" : 1296269,\n \"is_template\" : true,\n \"issue_comment_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/issues/comments{/number}\",\n \"issue_events_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/issues/events{/number}\",\n \"issues_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/issues{/number}\",\n \"keys_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/keys{/key_id}\",\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/labels{/name}\",\n \"languages_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/languages\",\n \"license\" : {\n \"html_url\" : \"https://api.github.com/licenses/mit\",\n \"key\" : \"mit\",\n \"name\" : \"MIT License\",\n \"node_id\" : \"MDc6TGljZW5zZW1pdA==\",\n \"spdx_id\" : \"MIT\",\n \"url\" : \"https://api.github.com/licenses/mit\"\n },\n \"merges_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/merges\",\n \"milestones_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/milestones{/number}\",\n \"mirror_url\" : \"git:git.example.com/octocat/Hello-World-Template\",\n \"name\" : \"Hello-World-Template\",\n \"network_count\" : 0,\n \"node_id\" : \"MDEwOlJlcG9zaXRvcnkxMjk2MjY5\",\n \"notifications_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/notifications{?since,all,participating}\",\n \"open_issues\" : 0,\n \"open_issues_count\" : 0,\n \"owner\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"permissions\" : {\n \"admin\" : false,\n \"pull\" : true,\n \"push\" : false\n },\n \"private\" : false,\n \"pulls_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/pulls{/number}\",\n \"pushed_at\" : \"2011-01-26T19:06:43Z\",\n \"releases_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/releases{/id}\",\n \"size\" : 108,\n \"ssh_url\" : \"git@github.com:octocat/Hello-World-Template.git\",\n \"stargazers_count\" : 80,\n \"stargazers_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/stargazers\",\n \"statuses_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/statuses/{sha}\",\n \"subscribers_count\" : 42,\n \"subscribers_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/subscribers\",\n \"subscription_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/subscription\",\n \"svn_url\" : \"https://svn.github.com/octocat/Hello-World-Template\",\n \"tags_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/tags\",\n \"teams_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/teams\",\n \"temp_clone_token\" : \"ABTLWHOULUVAXGTRYU7OC2876QJ2O\",\n \"topics\" : [ \"octocat\", \"atom\", \"electron\", \"api\" ],\n \"trees_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/git/trees{/sha}\",\n \"updated_at\" : \"2011-01-26T19:14:43Z\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World-Template\",\n \"visibility\" : \"public\",\n \"watchers\" : 80,\n \"watchers_count\" : 80\n },\n \"topics\" : [ \"octocat\", \"atom\", \"electron\", \"api\" ],\n \"trees_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/trees{/sha}\",\n \"updated_at\" : \"2011-01-26T19:14:43Z\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World\",\n \"visibility\" : \"public\",\n \"watchers_count\" : 80\n} ]", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "729cf1dc-0fdd-46ef-9f96-e9287962b529", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.130774Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "teams/list-repos-legacy", + "schema": { + "items": { + "$ref": "#/components/schemas/minimal-repository" + }, + "type": "array" + } + } + } + }, + "insertionIndex": 244 + }, + { + "id": "884728d1-8523-4e40-86f2-d6ad561683b0", + "name": "Add or update team project permissions (Legacy) (application/json)", + "request": { + "urlPath": "/teams/7110310116859204831/projects/3385725814906378504", + "method": "PUT", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 422, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/557594\",\n \"message\" : \"Sunt voluptatibus voluptatibus illo quia. Alias exercitationem aut. Repudiandae aut eaque. Harum et et hic. Molestiae dignissimos non nulla.\",\n \"errors\" : [ {\n \"code\" : \"3unfw5ojtma5k9kn01n1eppeakgtvwztbg7nq9ni3li6po9ewuazqtnixg0lzi3s5ernmoxd3cr3pmmhja6iqepn8jyxzd2kb80jfsh9yb7lffnbevqkqblc309v9dmlnpprnqlkn4iwd3c1g173u8xi65683mxwwavz8\",\n \"field\" : \"xj5x6doerc1bf67qcknuf2ry0cwmy85jbpqwjhbhsyr5bzaoph7ihyhkyrwthl8mxmjmqaps86em5hf4\",\n \"resource\" : \"q25h95zsgl8uaaeuqwsndqi3ing6bjux94y2dcf9qrywnn5fmkzqzdb0zhpuqyfxn6ilfsz357xxdqp186dlssbj\",\n \"index\" : 4743235320950975210,\n \"message\" : \"Quidem nemo temporibus deleniti quibusdam aperiam omnis nulla. Voluptates dignissimos ipsum sint. Autem nam nulla perferendis aut eum. Expedita quod dolorem explicabo voluptatem omnis consequatur sint\",\n \"value\" : { }\n }, {\n \"code\" : \"6fg3bv9jle1j1t75d2igenimkttgwyze66hfbqcysg6nrjbb469ekesjtdyzbxc4xu85l73rzn56w\",\n \"field\" : \"oiy70w44zzlyouw0mpeoclmrwpih5\",\n \"resource\" : \"dyx6ztwnrtu4vv8n6bp0asyzv47lsttzomf3z0xvg1vcvrk00he8i4jyf577lcl8mw8zd22x4gskn\",\n \"index\" : 1619886949914200746,\n \"message\" : \"Atque aut inventore praesentium ipsa earum dolorem. Aliquid eaque esse veritatis. Non iste tenetur. Rerum natus recusandae consequatur.\",\n \"value\" : { }\n }, {\n \"code\" : \"nugkjbj6k1c9liv8ap2rhu95nley4h5p84ab0zbf1c5b0osmj4184f4ik5eiq8zn2ghj123i1q57ntmy4au8op94o6jzk99eyu2x6k2j3bce76w83pgo2so19gwkb3y2ri1jfga2jz1yf3k6uf0razpq5w1563legkozbr9m1iolxn4n02gh\",\n \"field\" : \"osj56w3mhgi\",\n \"resource\" : \"t28f5q4x71t71hh8zpbqy8exkp5p15f976drlo9aq6uzl4etilzsgwly90npu5qwf1bld8g8l41qoq5spu8vmdld36trtq3c21jxzjqy3fjkgr8xdhke9fpvmzoa2ldao9lj1019xjw1o0ub129cmo\",\n \"index\" : 770463082140954153,\n \"message\" : \"Rerum rerum voluptas voluptate eos sunt laborum et. Expedita enim quo velit sit maiores optio quo. Laboriosam fuga consectetur velit consectetur aspernatur aspernatur.\",\n \"value\" : { }\n }, {\n \"code\" : \"ocxl\",\n \"field\" : \"xbf375fo9pf0krv9hhbcvce3bymexextbng6t6wm3cpnqx2q9foaond68ttyf3kpsdesy8mzo1qesftim14yavvszlxlm8vm2wpmtletg8ty2bep7nkv0me3q58r7nb820lz7iwawq3v7rqjvg\",\n \"resource\" : \"m823foz66xwcinl4bvkqoj0lrzkyy70\",\n \"index\" : 977779369347886795,\n \"message\" : \"Nihil sunt sunt ducimus qui libero. Qui est eligendi illo nesciunt nostrum dolore maxime. Cum id odio rerum magnam dolorem voluptas est. Excepturi aut maiores sunt quibusdam. Dolorem deleniti sint aut\",\n \"value\" : { }\n }, {\n \"code\" : \"5kd44goxlyw4lyxbuewzy6wo2cl3sm878jd9vvp7uigdh9bnsyoib66q2whkngzqo5hoqtdehfg8jj11jjgd6a6iwzeuh3t4c6bkmc2d0xkue04k8imsrxosl4q5rm2587hfqdys065vc4osnuherx8da7wpo7a5rzv23cu7a\",\n \"field\" : \"wk8amxnf5l4w5w4f57ennwh6nbnegu7taonuyis3vk0wyvnmdoq4d8xkiry304vjdzt6zygn7u0h7mpc4avktxcg9xsszc0t19veuth4edte81qiedetp0gj4pgw4rpi6avul0jy2z952wlzzgp9rwz\",\n \"resource\" : \"fwfcxmeen2vx8s9cg6fio5hj93577ki5pigywrbziploy8sa2oov33775rebnp8yzlf386ym42fctj5vkeqziw0qqzu2bfysrq5ii77e6mp33idqjjph3ihkd0bt8fklhg\",\n \"index\" : 6077811544732776378,\n \"message\" : \"Unde dolores numquam. Ducimus amet enim dolor eos deleniti quod. Voluptas laudantium consequuntur quidem odit ullam eos. Dolorem excepturi voluptas deleniti. Et dolor velit sed corporis non facere nis\",\n \"value\" : { }\n }, {\n \"code\" : \"8nqa3aso0ydna2gofjk43vjpzar4bx\",\n \"field\" : \"lk6mfksih8qncv8tx61egqdqa84nf1k8qxvk1sfb71geuv4th8eqc1ws8caeseoiiia3rynbiik6eum0jpa1m46bo41s8tp7u49elrx6u8af71j32syalkl7o28qvtfxy99u4j9sus6mdjaxjpg1goqg6we7ynxyu3vqux\",\n \"resource\" : \"1euh41wv4xvxud1yi0wtn8f1ron7qp3yntmuds1mwqmji5721cg13i\",\n \"index\" : 3224416066067338319,\n \"message\" : \"Sunt aut et et minus cupiditate. Sunt aliquid minima perferendis tempora qui aut. Quod incidunt optio doloribus animi dolorum. Ducimus eligendi quis.\",\n \"value\" : { }\n }, {\n \"code\" : \"8iys6qmkg5p3viy4ol6jjrn07rirmvabdu4i8o0rs5unzi6oe19wq8wi4xs46dlak3x2lo0ac65iy6o3gfsdehljna2fdg1g2ovpxbnl6o78d16emk7eryaj7i5emtuzuhja0k0a17oed\",\n \"field\" : \"kw09xtcykyu6fidt29lk9ee1fbyu1nyxhzhkbqju5mwm8xlb2k2ufcftd2\",\n \"resource\" : \"pn5tfpsy82d6m5dv9bdx0a2dtaus6s48t9yr1osrndiazv6u35oxm6bvjvo55pz730z91ejo65vr51gdiq7zxfirrb9xm5yk8bnsg7br3j0fijo1phpwd5vgj3xp9vb7qzuki\",\n \"index\" : 2626391917280091311,\n \"message\" : \"Nisi officiis recusandae laboriosam. Et tempora quis error dolorem totam. Qui est aut adipisci ut atque. Sit ut sint a sapiente quo totam repellat.\",\n \"value\" : { }\n } ]\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "884728d1-8523-4e40-86f2-d6ad561683b0", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.130699Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "teams/add-or-update-project-permissions-legacy", + "schema": { + "description": "Validation Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "errors": { + "items": { + "properties": { + "code": { + "type": "string" + }, + "field": { + "type": "string" + }, + "index": { + "type": "integer" + }, + "message": { + "type": "string" + }, + "resource": { + "type": "string" + }, + "value": { + "oneOf": [ + { + "nullable": true, + "type": "string" + }, + { + "nullable": true, + "type": "integer" + }, + { + "items": { + "type": "string" + }, + "nullable": true, + "type": "array" + } + ] + } + }, + "required": ["code"], + "type": "object" + }, + "type": "array" + }, + "message": { + "type": "string" + } + }, + "required": ["message", "documentation_url"], + "title": "Validation Error", + "type": "object" + } + } + } + }, + "insertionIndex": 245 + }, + { + "id": "9bb94b22-aa99-4346-96cb-5aa844102774", + "name": "Add or update team project permissions (Legacy) (application/json)", + "request": { + "urlPath": "/teams/1128164029718710199/projects/8198493367965006542", + "method": "PUT", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 415, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/495916\",\n \"message\" : \"Ea autem explicabo numquam rerum vel in. Eum ut explicabo quasi eius minus soluta. Rerum cumque sunt exercitationem. Aut atque omnis. Consequatur voluptatem voluptatum ab quo magnam qui.\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "9bb94b22-aa99-4346-96cb-5aa844102774", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.129933Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "teams/add-or-update-project-permissions-legacy", + "schema": { + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": ["message", "documentation_url"], + "type": "object" + } + } + } + }, + "insertionIndex": 246 + }, + { + "id": "ead8aad2-9892-4eb4-905c-a5cc7012c935", + "name": "Add or update team project permissions (Legacy) (application/json)", + "request": { + "urlPath": "/teams/9210934353977000460/projects/5914744240136903392", + "method": "PUT", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/746016\",\n \"message\" : \"Nulla inventore deleniti. Quasi est ex eveniet. Perspiciatis necessitatibus reiciendis corporis sunt est provident et. Vel nam laudantium. Consequuntur in nisi qui aspernatur.\",\n \"url\" : \"https://web.example.mocklab.io/393431\",\n \"status\" : \"i66advf0lheq8y89sx7aiwv7qbx1n927hvmmjcephbxh6hcm8mropjhkoeujd\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "ead8aad2-9892-4eb4-905c-a5cc7012c935", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.129784Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "teams/add-or-update-project-permissions-legacy", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 247 + }, + { + "id": "09fc739e-0805-4e63-a171-338de33fa5c2", + "name": "Add or update team project permissions (Legacy) (application/json) - response-if-the-project-is-not-owned-by-the-organization", + "request": { + "urlPath": "/teams/4454716214800316456/projects/3945109825994554475", + "method": "PUT", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 403, + "body": "{\n \"documentation_url\" : \"https://docs.github.com/enterprise-server@2.21/rest/reference/teams#add-or-update-team-project-permissions\",\n \"message\" : \"Must have admin rights to Repository.\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "09fc739e-0805-4e63-a171-338de33fa5c2", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.129567Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "teams/add-or-update-project-permissions-legacy", + "schema": { + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "type": "object" + } + } + } + }, + "insertionIndex": 248 + }, + { + "id": "2142ee8d-a561-43a7-80ad-75f6424c835b", + "name": "Add or update team project permissions (Legacy) - 204", + "request": { + "urlPath": "/teams/8233896233388247069/projects/2436292648524285254", + "method": "PUT" + }, + "response": { + "status": 204 + }, + "uuid": "2142ee8d-a561-43a7-80ad-75f6424c835b", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.129526Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "teams/add-or-update-project-permissions-legacy" + } + } + }, + "insertionIndex": 249 + }, + { + "id": "c634be84-1494-4767-aa5c-46e2228a5b82", + "name": "Check team permissions for a project (Legacy) (application/json)", + "request": { + "urlPath": "/teams/7900448236733111132/projects/1906722764515576509", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 415, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/796213\",\n \"message\" : \"Labore vel qui asperiores. Laboriosam fuga ratione molestiae. Suscipit impedit ut. Eos ullam molestiae perferendis laborum.\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "c634be84-1494-4767-aa5c-46e2228a5b82", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.129496Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "teams/check-permissions-for-project-legacy", + "schema": { + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": ["message", "documentation_url"], + "type": "object" + } + } + } + }, + "insertionIndex": 250 + }, + { + "id": "bfaa267f-7bf0-4beb-b62e-69397706a66e", + "name": "Check team permissions for a project (Legacy) - 404", + "request": { + "urlPath": "/teams/8856270545306585829/projects/4780564101690057778", + "method": "GET" + }, + "response": { + "status": 404 + }, + "uuid": "bfaa267f-7bf0-4beb-b62e-69397706a66e", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.129363Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "teams/check-permissions-for-project-legacy" + } + } + }, + "insertionIndex": 251 + }, + { + "id": "3162c1cd-28c5-436c-a8b3-b4bde808d554", + "name": "Check team permissions for a project (Legacy) (application/json) - default", + "request": { + "urlPath": "/teams/7422046809809547338/projects/1250137334168916332", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 200, + "body": "{\n \"body\" : \"High-level roadmap for the upcoming year.\",\n \"columns_url\" : \"https://api.github.com/projects/1002605/columns\",\n \"created_at\" : \"2011-04-11T20:09:31Z\",\n \"creator\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"html_url\" : \"https://github.com/orgs/api-playground/projects/1\",\n \"id\" : 1002605,\n \"name\" : \"Organization Roadmap\",\n \"node_id\" : \"MDc6UHJvamVjdDEwMDI2MDU=\",\n \"number\" : 1,\n \"organization_permission\" : \"write\",\n \"owner_url\" : \"https://api.github.com/orgs/octocat\",\n \"permissions\" : {\n \"admin\" : false,\n \"read\" : true,\n \"write\" : true\n },\n \"private\" : false,\n \"state\" : \"open\",\n \"updated_at\" : \"2014-03-04T18:58:10Z\",\n \"url\" : \"https://api.github.com/projects/1002605\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "3162c1cd-28c5-436c-a8b3-b4bde808d554", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.129331Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "teams/check-permissions-for-project-legacy", + "schema": { + "description": "A team's access to a project.", + "properties": { + "body": { + "nullable": true, + "type": "string" + }, + "columns_url": { + "type": "string" + }, + "created_at": { + "type": "string" + }, + "creator": { + "$ref": "#/components/schemas/simple-user" + }, + "html_url": { + "type": "string" + }, + "id": { + "type": "integer" + }, + "name": { + "type": "string" + }, + "node_id": { + "type": "string" + }, + "number": { + "type": "integer" + }, + "organization_permission": { + "description": "The organization permission for this project. Only present when owner is an organization.", + "type": "string" + }, + "owner_url": { + "type": "string" + }, + "permissions": { + "properties": { + "admin": { + "type": "boolean" + }, + "read": { + "type": "boolean" + }, + "write": { + "type": "boolean" + } + }, + "required": ["read", "write", "admin"], + "type": "object" + }, + "private": { + "description": "Whether the project is private or not. Only present when owner is an organization.", + "type": "boolean" + }, + "state": { + "type": "string" + }, + "updated_at": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "required": [ + "owner_url", + "url", + "html_url", + "columns_url", + "id", + "node_id", + "name", + "body", + "number", + "state", + "creator", + "created_at", + "updated_at", + "permissions" + ], + "title": "Team Project", + "type": "object" + } + } + } + }, + "insertionIndex": 252 + }, + { + "id": "411c4518-9528-4234-93be-9166dac8792e", + "name": "Remove a project from a team (Legacy) (application/json)", + "request": { + "urlPath": "/teams/142346222316331904/projects/8677982565441790337", + "method": "DELETE", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 422, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/244833\",\n \"message\" : \"Soluta quo possimus nostrum quia eligendi eius. Recusandae molestiae ab sapiente quo. Molestiae porro aperiam rerum.\",\n \"errors\" : [ {\n \"code\" : \"edpvbfny9k10evzakx5gu24wzhyp66z3r65u9vg3x5vmng3pob11fqogi1582ivkwm3pm7070pomwrnoe9q4ad5uk3qiglw3z8\",\n \"field\" : \"xqqhbmh7u491owxjgsdze0vfu1hwvtl5fk1iraik19jwqdakjqe6zz9r2aqfqwgcjzlseh9wv9nzfia9xgey90unj6uk7aejl4mxo5iag4p3g9dtsdtpszwsx4z4d\",\n \"resource\" : \"2rdwmduxr2vjoeqaggq29wybmr7simmod8jyme6s3cjf1qxa74502sazmfp8gbdop41mz9qrwmgr3hej0yeyozbqmxhkw9c0hzxgli6ebdl17ajdk0z89fjv\",\n \"index\" : 1490231973324220849,\n \"message\" : \"Quaerat nemo esse expedita. Voluptas ut error. Fugit consequatur velit beatae.\",\n \"value\" : { }\n }, {\n \"code\" : \"1s1t9axztc4ez2a8ycyan23quc6vk9jsb0m6hwbv2f\",\n \"field\" : \"74zbxyrnwql6ova3ki28zszlgfgsj9in5bqxvktw0ucphyb3zza5cpk67g8aa0pb5ddbm86xzticox976j5slaqsbykbmc6l49xgxrarib1g1bb52ca8hc1t5hrj5y9ve4pdaxps4hlcklhsy1bi3\",\n \"resource\" : \"q7h5p58h2djdrum1blxxqm\",\n \"index\" : 4903422735572741549,\n \"message\" : \"Veritatis enim tempore id itaque fuga cumque. Architecto labore voluptatem magnam iusto excepturi est exercitationem. Aut perspiciatis quia et consequuntur. Nihil repudiandae explicabo.\",\n \"value\" : { }\n }, {\n \"code\" : \"8mwrvtjuusc7k646j33z73pjki8r27hij7c4k9bp9l0qzujopduo3k6g3jjtlid4hkrqc4qwsb6hfawcnlkpsd43bb2kunmvh4rfn1vof9z2uoyeenn7y3h2ll21txg4j946dgat5d7be2it6zp0h1ry8brjegoipx4byy47mxibl4euipvulf1y17g5th\",\n \"field\" : \"e7zoghj06fwitxnhpojaztfc2l0okohnagqmguhhqlvjw7kmlsiugkk9s1oflj1rwhf232gyv0pwr88xaz5biwkkk84rogmicme8x7bpf8\",\n \"resource\" : \"elys0w9woi67pupo97o8ecu4vo33du9gke06lesb5onjbpe2fggq7dug4xfkeykgv\",\n \"index\" : 3092715699067306687,\n \"message\" : \"Officia et nesciunt natus sed accusamus. Et aut odit ut suscipit eos maiores rerum. Voluptates nobis et. Laboriosam perferendis cumque. In rem sint rem molestiae similique dignissimos.\",\n \"value\" : { }\n }, {\n \"code\" : \"sp5j6cykgwj6x\",\n \"field\" : \"91vxhkkdpwu3tja8v66vyetggg2g9zd5r35i3497p8an1exj3w\",\n \"resource\" : \"0619inyurd4p59mxb801r16cjeter42dydyejlpajhyskzgh8uojs3w45ucf6bclrw6tuzabnywfmvsuyndi57tq8h69t1kokrp4aulr7gmy7kwfyyseqxnx63e6kz4tzzsas11zz7t2j4a22ag3uqon2odmxc1miu3kn58q830i54jtwpqaeq12coyvq93dj5o\",\n \"index\" : 1266071894718847412,\n \"message\" : \"Enim excepturi delectus incidunt non quas quae. Delectus qui aut ea dolor provident ut sit. Corrupti rerum recusandae. Cumque iste itaque sequi velit. Nihil vitae aut molestias.\",\n \"value\" : { }\n }, {\n \"code\" : \"6ctptxup7s7r8c7u2fmjj71sk1ykg8n2qubngm37950gyfd606x6p6xeeda\",\n \"field\" : \"28fohhwq2ag42nzdh10fk731cgdjiyp3ras9lswinunq6nr8m5dv5wrivrqy6ti4sxpuj7gmhw6em2a48c8qusvfwpi\",\n \"resource\" : \"uu628dfeepy4ezwcky0e6bhn9vofq5erboe73lpux1z5yrf1p50crav48vhgg3hsl1s4ics097v7vetq4ygd6d1d2zb1htavmne5u5qteeknp21rxlykvlf0va51aun3fkqzy98i857c9ggkj7oxuujr6c302\",\n \"index\" : 1011794987993641425,\n \"message\" : \"Libero adipisci exercitationem sint hic ipsa. Aspernatur itaque qui et alias. Occaecati voluptatibus non accusantium unde. Repellendus aspernatur distinctio enim ut magni fuga est. Odit recusandae id \",\n \"value\" : { }\n }, {\n \"code\" : \"cgopn8zqvx80rjjlbu3pee0pflltg8yhy3q0hkq2xn987bte951dx6lidrzsg776e0ohpab1khxjtiukv95gor69vflbyus9f8c74m9h7ref331qd69ez2ay2wmuhuhsm34vorcgj5hykiatakfja9t42j4tom\",\n \"field\" : \"5t6cb2bdpp8gqr37ve6qa96ojy50y6exw1uwz\",\n \"resource\" : \"4d23lpiyk3aq0udszy7ogi4hoo5lpvk1cs6obqostgkl72qpzzvsu5p9r0xkblyca4ntox9enjbg9zjn2jijagf3lzcub0ee7lxq7p9pzgjlbonn7iz0ibt8nnfbl70lkzusli3dvzhw5\",\n \"index\" : 9144082560586044878,\n \"message\" : \"Ut aut facilis aliquid ut est. Illum vitae molestiae perferendis voluptatem cumque illo non. Sit esse rem nemo consequatur qui praesentium. Quis maxime repellat deserunt. Quia et veritatis rem non.\",\n \"value\" : { }\n } ]\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "411c4518-9528-4234-93be-9166dac8792e", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.129176Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "teams/remove-project-legacy", + "schema": { + "description": "Validation Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "errors": { + "items": { + "properties": { + "code": { + "type": "string" + }, + "field": { + "type": "string" + }, + "index": { + "type": "integer" + }, + "message": { + "type": "string" + }, + "resource": { + "type": "string" + }, + "value": { + "oneOf": [ + { + "nullable": true, + "type": "string" + }, + { + "nullable": true, + "type": "integer" + }, + { + "items": { + "type": "string" + }, + "nullable": true, + "type": "array" + } + ] + } + }, + "required": ["code"], + "type": "object" + }, + "type": "array" + }, + "message": { + "type": "string" + } + }, + "required": ["message", "documentation_url"], + "title": "Validation Error", + "type": "object" + } + } + } + }, + "insertionIndex": 253 + }, + { + "id": "91196100-5444-4375-b3a9-2aac2f257f7c", + "name": "Remove a project from a team (Legacy) (application/json)", + "request": { + "urlPath": "/teams/7369283036612083124/projects/4119714574965239892", + "method": "DELETE", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 415, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/898048\",\n \"message\" : \"Nulla et rerum veniam sit voluptatem facere. Voluptatum est et. Et ut quo molestiae aperiam sed nostrum asperiores. Nam sapiente nobis.\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "91196100-5444-4375-b3a9-2aac2f257f7c", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.128478Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "teams/remove-project-legacy", + "schema": { + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": ["message", "documentation_url"], + "type": "object" + } + } + } + }, + "insertionIndex": 254 + }, + { + "id": "dd097ffb-9232-4ea4-b795-c694575f5709", + "name": "Remove a project from a team (Legacy) (application/json)", + "request": { + "urlPath": "/teams/3580224088099231182/projects/2768061350909171271", + "method": "DELETE", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/927540\",\n \"message\" : \"Qui quo qui. Vero aperiam et ut sequi nemo ut aut. Velit voluptatem enim exercitationem cumque. Quibusdam inventore tempora necessitatibus quis eos quam.\",\n \"url\" : \"https://web.example.mocklab.io/984543\",\n \"status\" : \"1esbl\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "dd097ffb-9232-4ea4-b795-c694575f5709", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.128339Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "teams/remove-project-legacy", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 255 + }, + { + "id": "2d5835f3-3ef9-478c-abd7-36b896bb61dc", + "name": "Remove a project from a team (Legacy) - 204", + "request": { + "urlPath": "/teams/2585128690994768334/projects/4296805904569111904", + "method": "DELETE" + }, + "response": { + "status": 204 + }, + "uuid": "2d5835f3-3ef9-478c-abd7-36b896bb61dc", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.12813Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "teams/remove-project-legacy" + } + } + }, + "insertionIndex": 256 + }, + { + "id": "c9836a3e-ad70-4665-85af-9a120260c407", + "name": "List team projects (Legacy)", + "request": { + "urlPath": "/teams/1648387646884624516/projects", + "method": "GET" + }, + "response": { + "status": 415, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/823563\",\n \"message\" : \"Recusandae adipisci optio ea. Autem nobis ducimus adipisci minus. Atque odit quos fuga voluptatem eos eveniet in. Velit non sint incidunt. Velit nesciunt quas ut assumenda debitis rem aut.\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "c9836a3e-ad70-4665-85af-9a120260c407", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.128105Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "teams/list-projects-legacy", + "schema": { + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": ["message", "documentation_url"], + "type": "object" + } + } + } + }, + "insertionIndex": 257 + }, + { + "id": "6e926371-06b5-4927-a3d0-228b8a68235c", + "name": "List team projects (Legacy)", + "request": { + "urlPath": "/teams/28127521708468080/projects", + "method": "GET" + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/037309\",\n \"message\" : \"Consequatur placeat eveniet dolor id et explicabo. Et tempore ratione est. Molestiae eos cupiditate illum incidunt. Quisquam ducimus et animi incidunt. Tenetur repellat exercitationem adipisci laudant\",\n \"url\" : \"https://web.example.mocklab.io/481883\",\n \"status\" : \"5a28ri5v0zvmxu42ytmo4tgbznge9n0zmha0blsoamsu4oqvusw2q9jxewfif3l878l8la70jinbaol4yokxtk3wdsgli15eijec9d1bqvj6vc7oh2wnj4sjd2zjmsj57dpsvn6sbkuxz7d3f2ka9kef5zb0b\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "6e926371-06b5-4927-a3d0-228b8a68235c", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.12797Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "teams/list-projects-legacy", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 258 + }, + { + "id": "702fb88d-3069-4e28-87b9-3832c3998dd9", + "name": "List team projects (Legacy) - default", + "request": { + "urlPath": "/teams/1106008900647353640/projects", + "method": "GET" + }, + "response": { + "status": 200, + "body": "[ {\n \"body\" : \"High-level roadmap for the upcoming year.\",\n \"columns_url\" : \"https://api.github.com/projects/1002605/columns\",\n \"created_at\" : \"2011-04-11T20:09:31Z\",\n \"creator\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"html_url\" : \"https://github.com/orgs/api-playground/projects/1\",\n \"id\" : 1002605,\n \"name\" : \"Organization Roadmap\",\n \"node_id\" : \"MDc6UHJvamVjdDEwMDI2MDU=\",\n \"number\" : 1,\n \"organization_permission\" : \"write\",\n \"owner_url\" : \"https://api.github.com/orgs/octocat\",\n \"permissions\" : {\n \"admin\" : false,\n \"read\" : true,\n \"write\" : true\n },\n \"private\" : false,\n \"state\" : \"open\",\n \"updated_at\" : \"2014-03-04T18:58:10Z\",\n \"url\" : \"https://api.github.com/projects/1002605\"\n} ]", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "702fb88d-3069-4e28-87b9-3832c3998dd9", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.127762Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "teams/list-projects-legacy", + "schema": { + "items": { + "$ref": "#/components/schemas/team-project" + }, + "type": "array" + } + } + } + }, + "insertionIndex": 259 + }, + { + "id": "e14d39bd-7b74-41b6-8dc1-34c512b15a98", + "name": "Add or update team membership for a user (Legacy) - 422", + "request": { + "urlPath": "/teams/267318500025643619/memberships/anderson.lemke", + "method": "PUT" + }, + "response": { + "status": 422 + }, + "uuid": "e14d39bd-7b74-41b6-8dc1-34c512b15a98", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.127722Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "teams/add-or-update-membership-for-user-legacy" + } + } + }, + "insertionIndex": 260 + }, + { + "id": "be4f8646-eb39-43d8-ab9c-ef2f8d11f06a", + "name": "Add or update team membership for a user (Legacy) (application/json)", + "request": { + "urlPath": "/teams/4757911162234364722/memberships/refugio.kunze", + "method": "PUT", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/163553\",\n \"message\" : \"Vel est non qui. Et optio vel enim quo autem occaecati. Ad modi ipsum et.\",\n \"url\" : \"https://web.example.mocklab.io/675663\",\n \"status\" : \"7f6zx30ctp2x94mwlhk3l50l6c7ybtnogapmam0onqkhhakuez3zeuxcs69e8jngur05cu73arjabpbkt\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "be4f8646-eb39-43d8-ab9c-ef2f8d11f06a", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.127674Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "teams/add-or-update-membership-for-user-legacy", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 261 + }, + { + "id": "1769c46b-c14e-4e96-b293-691eff374434", + "name": "Add or update team membership for a user (Legacy) - 403", + "request": { + "urlPath": "/teams/1417761069169872746/memberships/eliseo.batz", + "method": "PUT" + }, + "response": { + "status": 403 + }, + "uuid": "1769c46b-c14e-4e96-b293-691eff374434", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.12745Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "teams/add-or-update-membership-for-user-legacy" + } + } + }, + "insertionIndex": 262 + }, + { + "id": "ce5762d4-b47e-4e5d-8868-0fc2f24dce2a", + "name": "Add or update team membership for a user (Legacy) (application/json) - response-if-users-membership-with-team-is-now-pending", + "request": { + "urlPath": "/teams/5668352559061703494/memberships/marc.klein", + "method": "PUT", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 200, + "body": "{\n \"role\" : \"member\",\n \"state\" : \"pending\",\n \"url\" : \"https://api.github.com/teams/1/memberships/octocat\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "ce5762d4-b47e-4e5d-8868-0fc2f24dce2a", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.127402Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "teams/add-or-update-membership-for-user-legacy", + "schema": { + "description": "Team Membership", + "properties": { + "role": { + "default": "member", + "description": "The role of the user in the team.", + "enum": ["member", "maintainer"], + "example": "member", + "type": "string" + }, + "state": { + "description": "The state of the user's membership in the team.", + "enum": ["active", "pending"], + "type": "string" + }, + "url": { + "format": "uri", + "type": "string" + } + }, + "required": ["role", "state", "url"], + "title": "Team Membership", + "type": "object" + } + } + } + }, + "insertionIndex": 263 + }, + { + "id": "a29c842a-f063-4646-9419-dc87e1768450", + "name": "Get team membership for a user (Legacy)", + "request": { + "urlPath": "/teams/7404350559767171937/memberships/ian.barton", + "method": "GET" + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/556210\",\n \"message\" : \"Excepturi unde temporibus eligendi ipsum. Maxime eius quo repellendus modi. Voluptatum est necessitatibus beatae et. Rerum aut similique dolorum molestiae.\",\n \"url\" : \"https://web.example.mocklab.io/065141\",\n \"status\" : \"1l5ixot6lt95fjkwg94\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "a29c842a-f063-4646-9419-dc87e1768450", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.127331Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "teams/get-membership-for-user-legacy", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 264 + }, + { + "id": "8bb07c6b-2ca5-458b-a50e-481f7d80fe9a", + "name": "Get team membership for a user (Legacy) - response-if-user-is-a-team-maintainer", + "request": { + "urlPath": "/teams/7986624179848797013/memberships/damon.walker", + "method": "GET" + }, + "response": { + "status": 200, + "body": "{\n \"role\" : \"maintainer\",\n \"state\" : \"active\",\n \"url\" : \"https://api.github.com/teams/1/memberships/octocat\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "8bb07c6b-2ca5-458b-a50e-481f7d80fe9a", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.127108Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "teams/get-membership-for-user-legacy", + "schema": { + "description": "Team Membership", + "properties": { + "role": { + "default": "member", + "description": "The role of the user in the team.", + "enum": ["member", "maintainer"], + "example": "member", + "type": "string" + }, + "state": { + "description": "The state of the user's membership in the team.", + "enum": ["active", "pending"], + "type": "string" + }, + "url": { + "format": "uri", + "type": "string" + } + }, + "required": ["role", "state", "url"], + "title": "Team Membership", + "type": "object" + } + } + } + }, + "insertionIndex": 265 + }, + { + "id": "27be84f8-d932-4a98-9c55-abe85e6ad0b4", + "name": "Remove team membership for a user (Legacy) - 403", + "request": { + "urlPath": "/teams/132017984655578303/memberships/horacio.mueller", + "method": "DELETE" + }, + "response": { + "status": 403 + }, + "uuid": "27be84f8-d932-4a98-9c55-abe85e6ad0b4", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.127025Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "teams/remove-membership-for-user-legacy" + } + } + }, + "insertionIndex": 266 + }, + { + "id": "d7611824-d972-4e3f-acaf-3ae3a358817f", + "name": "Remove team membership for a user (Legacy) - 204", + "request": { + "urlPath": "/teams/6954839915631884674/memberships/del.waelchi", + "method": "DELETE" + }, + "response": { + "status": 204 + }, + "uuid": "d7611824-d972-4e3f-acaf-3ae3a358817f", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.126986Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "teams/remove-membership-for-user-legacy" + } + } + }, + "insertionIndex": 267 + }, + { + "id": "093b7817-98c2-4d97-8174-987bb4a367fa", + "name": "Add team member (Legacy) - 422", + "request": { + "urlPath": "/teams/4282026667078449827/members/aletha.stamm", + "method": "PUT" + }, + "response": { + "status": 422 + }, + "uuid": "093b7817-98c2-4d97-8174-987bb4a367fa", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.126945Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "teams/add-member-legacy" + } + } + }, + "insertionIndex": 268 + }, + { + "id": "bedf0d87-24ee-4718-814d-7f0b4daf0b63", + "name": "Add team member (Legacy) - 404", + "request": { + "urlPath": "/teams/512941544160581292/members/tom.purdy", + "method": "PUT" + }, + "response": { + "status": 404 + }, + "uuid": "bedf0d87-24ee-4718-814d-7f0b4daf0b63", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.126905Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "teams/add-member-legacy" + } + } + }, + "insertionIndex": 269 + }, + { + "id": "9592409c-8f48-443e-a0c8-033d6e987319", + "name": "Add team member (Legacy) (application/json)", + "request": { + "urlPath": "/teams/7452318490337610514/members/kimbra.romaguera", + "method": "PUT", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 403, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/251525\",\n \"message\" : \"Iure quis id ipsum praesentium. Facere tempore in et fugit quaerat. Id eum rerum commodi.\",\n \"url\" : \"https://web.example.mocklab.io/449832\",\n \"status\" : \"63ve21oi0d19\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "9592409c-8f48-443e-a0c8-033d6e987319", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.126857Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "teams/add-member-legacy", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 270 + }, + { + "id": "66ab8328-7400-4a95-80b6-f9df10abae58", + "name": "Add team member (Legacy) - 204", + "request": { + "urlPath": "/teams/7031769769446605656/members/teresa.nolan", + "method": "PUT" + }, + "response": { + "status": 204 + }, + "uuid": "66ab8328-7400-4a95-80b6-f9df10abae58", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.12663Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "teams/add-member-legacy" + } + } + }, + "insertionIndex": 271 + }, + { + "id": "29af0668-aeac-4092-a32f-1a2a3f6e3848", + "name": "Get team member (Legacy) - 404", + "request": { + "urlPath": "/teams/4659901792938309559/members/allan.balistreri", + "method": "GET" + }, + "response": { + "status": 404 + }, + "uuid": "29af0668-aeac-4092-a32f-1a2a3f6e3848", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.12659Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "teams/get-member-legacy" + } + } + }, + "insertionIndex": 272 + }, + { + "id": "d94c1cbc-d8a7-4fb2-a6db-4d4f9b13c25f", + "name": "Get team member (Legacy) - 204", + "request": { + "urlPath": "/teams/5358391412319793063/members/titus.braun", + "method": "GET" + }, + "response": { + "status": 204 + }, + "uuid": "d94c1cbc-d8a7-4fb2-a6db-4d4f9b13c25f", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.12655Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "teams/get-member-legacy" + } + } + }, + "insertionIndex": 273 + }, + { + "id": "304948ba-2cfd-44a8-a1ce-582bf4e1a96d", + "name": "Remove team member (Legacy) - 404", + "request": { + "urlPath": "/teams/13490286966960502/members/bill.orn", + "method": "DELETE" + }, + "response": { + "status": 404 + }, + "uuid": "304948ba-2cfd-44a8-a1ce-582bf4e1a96d", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.126504Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "teams/remove-member-legacy" + } + } + }, + "insertionIndex": 274 + }, + { + "id": "0b450fd9-e5fb-4376-9430-1a54b7ed289d", + "name": "Remove team member (Legacy) - 204", + "request": { + "urlPath": "/teams/604357742420744891/members/minh.runolfsson", + "method": "DELETE" + }, + "response": { + "status": 204 + }, + "uuid": "0b450fd9-e5fb-4376-9430-1a54b7ed289d", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.126463Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "teams/remove-member-legacy" + } + } + }, + "insertionIndex": 275 + }, + { + "id": "c4d61364-7852-41aa-914d-0faae32a1b7c", + "name": "List team members (Legacy)", + "request": { + "urlPath": "/teams/5098086020461594329/members", + "method": "GET" + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/541010\",\n \"message\" : \"Ut labore exercitationem. Sapiente itaque repudiandae explicabo voluptate quasi aut rerum. Sed labore iusto qui magnam possimus harum eos.\",\n \"url\" : \"https://web.example.mocklab.io/299264\",\n \"status\" : \"skcebyzammpqcmvhnk58kyisoyujurj8hps0ykr4e43hiha4luc44s7hy74r2coc1qkjpfjqfqpr63xnhipfrqydr7c76z7fduj008us9ksrz0mjrcnb8kvjrhyhi3pyq69u83uygv2i2zvp3vi1\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "c4d61364-7852-41aa-914d-0faae32a1b7c", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.126409Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "teams/list-members-legacy", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 276 + }, + { + "id": "bc5c6b52-1d1e-49cb-8d52-af95146f6a7a", + "name": "List team members (Legacy) - default", + "request": { + "urlPath": "/teams/580703813062784533/members", + "method": "GET" + }, + "response": { + "status": 200, + "body": "[ {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n} ]", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "bc5c6b52-1d1e-49cb-8d52-af95146f6a7a", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.126198Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "teams/list-members-legacy", + "schema": { + "items": { + "$ref": "#/components/schemas/simple-user" + }, + "type": "array" + } + } + } + }, + "insertionIndex": 277 + }, + { + "id": "4b9865dd-d2f9-43b5-ab0d-40289d52e938", + "name": "Create reaction for a team discussion (Legacy) - default", + "request": { + "urlPath": "/teams/7790312741717847195/discussions/1929592729763699941/reactions", + "method": "POST" + }, + "response": { + "status": 201, + "body": "{\n \"content\" : \"heart\",\n \"created_at\" : \"2016-05-20T20:09:31Z\",\n \"id\" : 1,\n \"node_id\" : \"MDg6UmVhY3Rpb24x\",\n \"user\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n }\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "4b9865dd-d2f9-43b5-ab0d-40289d52e938", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.126161Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "reactions/create-for-team-discussion-legacy", + "schema": { + "description": "Reactions to conversations provide a way to help people express their feelings more simply and effectively.", + "properties": { + "content": { + "description": "The reaction to use", + "enum": ["+1", "-1", "laugh", "confused", "heart", "hooray", "rocket", "eyes"], + "example": "heart", + "type": "string" + }, + "created_at": { + "example": "2016-05-20T20:09:31Z", + "format": "date-time", + "type": "string" + }, + "id": { + "example": 1, + "type": "integer" + }, + "node_id": { + "example": "MDg6UmVhY3Rpb24x", + "type": "string" + }, + "user": { + "$ref": "#/components/schemas/nullable-simple-user" + } + }, + "required": ["id", "node_id", "user", "content", "created_at"], + "title": "Reaction", + "type": "object" + } + } + } + }, + "insertionIndex": 278 + }, + { + "id": "e60c9c0a-128f-4f60-b9af-c188761853fb", + "name": "List reactions for a team discussion (Legacy) - default", + "request": { + "urlPath": "/teams/820708776206480890/discussions/1211922382655069161/reactions", + "method": "GET" + }, + "response": { + "status": 200, + "body": "[ {\n \"content\" : \"heart\",\n \"created_at\" : \"2016-05-20T20:09:31Z\",\n \"id\" : 1,\n \"node_id\" : \"MDg6UmVhY3Rpb24x\",\n \"user\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n }\n} ]", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "e60c9c0a-128f-4f60-b9af-c188761853fb", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.126102Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "reactions/list-for-team-discussion-legacy", + "schema": { + "items": { + "$ref": "#/components/schemas/reaction" + }, + "type": "array" + } + } + } + }, + "insertionIndex": 279 + }, + { + "id": "95ec8362-4256-43d6-8d13-401e88c70a33", + "name": "Create reaction for a team discussion comment (Legacy) - default", + "request": { + "urlPath": "/teams/680447667616154932/discussions/777860830622871378/comments/5325719450937280446/reactions", + "method": "POST" + }, + "response": { + "status": 201, + "body": "{\n \"content\" : \"heart\",\n \"created_at\" : \"2016-05-20T20:09:31Z\",\n \"id\" : 1,\n \"node_id\" : \"MDg6UmVhY3Rpb24x\",\n \"user\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n }\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "95ec8362-4256-43d6-8d13-401e88c70a33", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.126064Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "reactions/create-for-team-discussion-comment-legacy", + "schema": { + "description": "Reactions to conversations provide a way to help people express their feelings more simply and effectively.", + "properties": { + "content": { + "description": "The reaction to use", + "enum": ["+1", "-1", "laugh", "confused", "heart", "hooray", "rocket", "eyes"], + "example": "heart", + "type": "string" + }, + "created_at": { + "example": "2016-05-20T20:09:31Z", + "format": "date-time", + "type": "string" + }, + "id": { + "example": 1, + "type": "integer" + }, + "node_id": { + "example": "MDg6UmVhY3Rpb24x", + "type": "string" + }, + "user": { + "$ref": "#/components/schemas/nullable-simple-user" + } + }, + "required": ["id", "node_id", "user", "content", "created_at"], + "title": "Reaction", + "type": "object" + } + } + } + }, + "insertionIndex": 280 + }, + { + "id": "23a587f0-2a79-4637-ad3c-95e01a046c04", + "name": "List reactions for a team discussion comment (Legacy) - default", + "request": { + "urlPath": "/teams/3556094230305974340/discussions/9196858931808628470/comments/3569800107921281074/reactions", + "method": "GET" + }, + "response": { + "status": 200, + "body": "[ {\n \"content\" : \"heart\",\n \"created_at\" : \"2016-05-20T20:09:31Z\",\n \"id\" : 1,\n \"node_id\" : \"MDg6UmVhY3Rpb24x\",\n \"user\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n }\n} ]", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "23a587f0-2a79-4637-ad3c-95e01a046c04", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.125993Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "reactions/list-for-team-discussion-comment-legacy", + "schema": { + "items": { + "$ref": "#/components/schemas/reaction" + }, + "type": "array" + } + } + } + }, + "insertionIndex": 281 + }, + { + "id": "a34cf69d-6d46-4edc-80e4-f83e653a6129", + "name": "Update a discussion comment (Legacy) - default", + "request": { + "urlPath": "/teams/7568428386667863879/discussions/107569713528215109/comments/2584378088372284984", + "method": "PATCH" + }, + "response": { + "status": 200, + "body": "{\n \"author\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"body\" : \"Do you like pineapples?\",\n \"body_html\" : \"

Do you like pineapples?

\",\n \"body_version\" : \"e6907b24d9c93cc0c5024a7af5888116\",\n \"created_at\" : \"2018-01-15T23:53:58Z\",\n \"discussion_url\" : \"https://api.github.com/teams/2403582/discussions/1\",\n \"html_url\" : \"https://github.com/orgs/github/teams/justice-league/discussions/1/comments/1\",\n \"last_edited_at\" : \"2018-01-26T18:22:20Z\",\n \"node_id\" : \"MDIxOlRlYW1EaXNjdXNzaW9uQ29tbWVudDE=\",\n \"number\" : 1,\n \"reactions\" : {\n \"+1\" : 3,\n \"-1\" : 1,\n \"confused\" : 0,\n \"eyes\" : 1,\n \"heart\" : 1,\n \"hooray\" : 0,\n \"laugh\" : 0,\n \"rocket\" : 1,\n \"total_count\" : 5,\n \"url\" : \"https://api.github.com/teams/2403582/discussions/1/reactions\"\n },\n \"updated_at\" : \"2018-01-26T18:22:20Z\",\n \"url\" : \"https://api.github.com/teams/2403582/discussions/1/comments/1\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "a34cf69d-6d46-4edc-80e4-f83e653a6129", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.125951Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "teams/update-discussion-comment-legacy", + "schema": { + "description": "A reply to a discussion within a team.", + "properties": { + "author": { + "$ref": "#/components/schemas/nullable-simple-user" + }, + "body": { + "description": "The main text of the comment.", + "example": "I agree with this suggestion.", + "type": "string" + }, + "body_html": { + "example": "

Do you like apples?

", + "type": "string" + }, + "body_version": { + "description": "The current version of the body content. If provided, this update operation will be rejected if the given version does not match the latest version on the server.", + "example": "0307116bbf7ced493b8d8a346c650b71", + "type": "string" + }, + "created_at": { + "example": "2018-01-15T23:53:58Z", + "format": "date-time", + "type": "string" + }, + "discussion_url": { + "example": "https://api.github.com/organizations/1/team/2403582/discussions/1", + "format": "uri", + "type": "string" + }, + "html_url": { + "example": "https://github.com/orgs/github/teams/justice-league/discussions/1/comments/1", + "format": "uri", + "type": "string" + }, + "last_edited_at": { + "format": "date-time", + "nullable": true, + "type": "string" + }, + "node_id": { + "example": "MDIxOlRlYW1EaXNjdXNzaW9uQ29tbWVudDE=", + "type": "string" + }, + "number": { + "description": "The unique sequence number of a team discussion comment.", + "example": 42, + "type": "integer" + }, + "reactions": { + "$ref": "#/components/schemas/reaction-rollup" + }, + "updated_at": { + "example": "2018-01-15T23:53:58Z", + "format": "date-time", + "type": "string" + }, + "url": { + "example": "https://api.github.com/organizations/1/team/2403582/discussions/1/comments/1", + "format": "uri", + "type": "string" + } + }, + "required": [ + "author", + "body", + "body_html", + "body_version", + "created_at", + "last_edited_at", + "discussion_url", + "html_url", + "node_id", + "number", + "updated_at", + "url" + ], + "title": "Team Discussion Comment", + "type": "object" + } + } + } + }, + "insertionIndex": 282 + }, + { + "id": "4620053f-08a5-4c0d-9738-48f7afa8c87f", + "name": "Get a discussion comment (Legacy) - default", + "request": { + "urlPath": "/teams/75983783011055690/discussions/3962503053908917141/comments/9121530005296808219", + "method": "GET" + }, + "response": { + "status": 200, + "body": "{\n \"author\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"body\" : \"Do you like apples?\",\n \"body_html\" : \"

Do you like apples?

\",\n \"body_version\" : \"5eb32b219cdc6a5a9b29ba5d6caa9c51\",\n \"created_at\" : \"2018-01-15T23:53:58Z\",\n \"discussion_url\" : \"https://api.github.com/teams/2403582/discussions/1\",\n \"html_url\" : \"https://github.com/orgs/github/teams/justice-league/discussions/1/comments/1\",\n \"node_id\" : \"MDIxOlRlYW1EaXNjdXNzaW9uQ29tbWVudDE=\",\n \"number\" : 1,\n \"reactions\" : {\n \"+1\" : 3,\n \"-1\" : 1,\n \"confused\" : 0,\n \"eyes\" : 1,\n \"heart\" : 1,\n \"hooray\" : 0,\n \"laugh\" : 0,\n \"rocket\" : 1,\n \"total_count\" : 5,\n \"url\" : \"https://api.github.com/teams/2403582/discussions/1/reactions\"\n },\n \"updated_at\" : \"2018-01-15T23:53:58Z\",\n \"url\" : \"https://api.github.com/teams/2403582/discussions/1/comments/1\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "4620053f-08a5-4c0d-9738-48f7afa8c87f", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.125847Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "teams/get-discussion-comment-legacy", + "schema": { + "description": "A reply to a discussion within a team.", + "properties": { + "author": { + "$ref": "#/components/schemas/nullable-simple-user" + }, + "body": { + "description": "The main text of the comment.", + "example": "I agree with this suggestion.", + "type": "string" + }, + "body_html": { + "example": "

Do you like apples?

", + "type": "string" + }, + "body_version": { + "description": "The current version of the body content. If provided, this update operation will be rejected if the given version does not match the latest version on the server.", + "example": "0307116bbf7ced493b8d8a346c650b71", + "type": "string" + }, + "created_at": { + "example": "2018-01-15T23:53:58Z", + "format": "date-time", + "type": "string" + }, + "discussion_url": { + "example": "https://api.github.com/organizations/1/team/2403582/discussions/1", + "format": "uri", + "type": "string" + }, + "html_url": { + "example": "https://github.com/orgs/github/teams/justice-league/discussions/1/comments/1", + "format": "uri", + "type": "string" + }, + "last_edited_at": { + "format": "date-time", + "nullable": true, + "type": "string" + }, + "node_id": { + "example": "MDIxOlRlYW1EaXNjdXNzaW9uQ29tbWVudDE=", + "type": "string" + }, + "number": { + "description": "The unique sequence number of a team discussion comment.", + "example": 42, + "type": "integer" + }, + "reactions": { + "$ref": "#/components/schemas/reaction-rollup" + }, + "updated_at": { + "example": "2018-01-15T23:53:58Z", + "format": "date-time", + "type": "string" + }, + "url": { + "example": "https://api.github.com/organizations/1/team/2403582/discussions/1/comments/1", + "format": "uri", + "type": "string" + } + }, + "required": [ + "author", + "body", + "body_html", + "body_version", + "created_at", + "last_edited_at", + "discussion_url", + "html_url", + "node_id", + "number", + "updated_at", + "url" + ], + "title": "Team Discussion Comment", + "type": "object" + } + } + } + }, + "insertionIndex": 283 + }, + { + "id": "5fbce590-03da-41e6-8657-72689a01fcc6", + "name": "Delete a discussion comment (Legacy) - 204", + "request": { + "urlPath": "/teams/4730941527640704460/discussions/5612584913864315207/comments/2770555913670094461", + "method": "DELETE" + }, + "response": { + "status": 204 + }, + "uuid": "5fbce590-03da-41e6-8657-72689a01fcc6", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.12575Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "teams/delete-discussion-comment-legacy" + } + } + }, + "insertionIndex": 284 + }, + { + "id": "af319935-a28f-47d6-8dfc-f21e39cde9fe", + "name": "Create a discussion comment (Legacy) - default", + "request": { + "urlPath": "/teams/5036631954264994519/discussions/3638502620187740335/comments", + "method": "POST" + }, + "response": { + "status": 201, + "body": "{\n \"author\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"body\" : \"Do you like apples?\",\n \"body_html\" : \"

Do you like apples?

\",\n \"body_version\" : \"5eb32b219cdc6a5a9b29ba5d6caa9c51\",\n \"created_at\" : \"2018-01-15T23:53:58Z\",\n \"discussion_url\" : \"https://api.github.com/teams/2403582/discussions/1\",\n \"html_url\" : \"https://github.com/orgs/github/teams/justice-league/discussions/1/comments/1\",\n \"node_id\" : \"MDIxOlRlYW1EaXNjdXNzaW9uQ29tbWVudDE=\",\n \"number\" : 1,\n \"reactions\" : {\n \"+1\" : 3,\n \"-1\" : 1,\n \"confused\" : 0,\n \"eyes\" : 1,\n \"heart\" : 1,\n \"hooray\" : 0,\n \"laugh\" : 0,\n \"rocket\" : 1,\n \"total_count\" : 5,\n \"url\" : \"https://api.github.com/teams/2403582/discussions/1/reactions\"\n },\n \"updated_at\" : \"2018-01-15T23:53:58Z\",\n \"url\" : \"https://api.github.com/teams/2403582/discussions/1/comments/1\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "af319935-a28f-47d6-8dfc-f21e39cde9fe", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.12572Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "teams/create-discussion-comment-legacy", + "schema": { + "description": "A reply to a discussion within a team.", + "properties": { + "author": { + "$ref": "#/components/schemas/nullable-simple-user" + }, + "body": { + "description": "The main text of the comment.", + "example": "I agree with this suggestion.", + "type": "string" + }, + "body_html": { + "example": "

Do you like apples?

", + "type": "string" + }, + "body_version": { + "description": "The current version of the body content. If provided, this update operation will be rejected if the given version does not match the latest version on the server.", + "example": "0307116bbf7ced493b8d8a346c650b71", + "type": "string" + }, + "created_at": { + "example": "2018-01-15T23:53:58Z", + "format": "date-time", + "type": "string" + }, + "discussion_url": { + "example": "https://api.github.com/organizations/1/team/2403582/discussions/1", + "format": "uri", + "type": "string" + }, + "html_url": { + "example": "https://github.com/orgs/github/teams/justice-league/discussions/1/comments/1", + "format": "uri", + "type": "string" + }, + "last_edited_at": { + "format": "date-time", + "nullable": true, + "type": "string" + }, + "node_id": { + "example": "MDIxOlRlYW1EaXNjdXNzaW9uQ29tbWVudDE=", + "type": "string" + }, + "number": { + "description": "The unique sequence number of a team discussion comment.", + "example": 42, + "type": "integer" + }, + "reactions": { + "$ref": "#/components/schemas/reaction-rollup" + }, + "updated_at": { + "example": "2018-01-15T23:53:58Z", + "format": "date-time", + "type": "string" + }, + "url": { + "example": "https://api.github.com/organizations/1/team/2403582/discussions/1/comments/1", + "format": "uri", + "type": "string" + } + }, + "required": [ + "author", + "body", + "body_html", + "body_version", + "created_at", + "last_edited_at", + "discussion_url", + "html_url", + "node_id", + "number", + "updated_at", + "url" + ], + "title": "Team Discussion Comment", + "type": "object" + } + } + } + }, + "insertionIndex": 285 + }, + { + "id": "9400da6d-99d0-41b3-b4da-fddb66231411", + "name": "List discussion comments (Legacy) - default", + "request": { + "urlPath": "/teams/8722303380171912613/discussions/4794014203541483082/comments", + "method": "GET" + }, + "response": { + "status": 200, + "body": "[ {\n \"author\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"body\" : \"Do you like apples?\",\n \"body_html\" : \"

Do you like apples?

\",\n \"body_version\" : \"5eb32b219cdc6a5a9b29ba5d6caa9c51\",\n \"created_at\" : \"2018-01-15T23:53:58Z\",\n \"discussion_url\" : \"https://api.github.com/teams/2403582/discussions/1\",\n \"html_url\" : \"https://github.com/orgs/github/teams/justice-league/discussions/1/comments/1\",\n \"node_id\" : \"MDIxOlRlYW1EaXNjdXNzaW9uQ29tbWVudDE=\",\n \"number\" : 1,\n \"reactions\" : {\n \"+1\" : 3,\n \"-1\" : 1,\n \"confused\" : 0,\n \"eyes\" : 1,\n \"heart\" : 1,\n \"hooray\" : 0,\n \"laugh\" : 0,\n \"rocket\" : 1,\n \"total_count\" : 5,\n \"url\" : \"https://api.github.com/teams/2403582/discussions/1/reactions\"\n },\n \"updated_at\" : \"2018-01-15T23:53:58Z\",\n \"url\" : \"https://api.github.com/teams/2403582/discussions/1/comments/1\"\n} ]", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "9400da6d-99d0-41b3-b4da-fddb66231411", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.125604Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "teams/list-discussion-comments-legacy", + "schema": { + "items": { + "$ref": "#/components/schemas/team-discussion-comment" + }, + "type": "array" + } + } + } + }, + "insertionIndex": 286 + }, + { + "id": "2a0a96b4-21d7-48aa-ab57-78fa62535ba2", + "name": "Update a discussion (Legacy) - default", + "request": { + "urlPath": "/teams/2033331196520680586/discussions/3697567775743550437", + "method": "PATCH" + }, + "response": { + "status": 200, + "body": "{\n \"author\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"body\" : \"Hi! This is an area for us to collaborate as a team.\",\n \"body_html\" : \"

Hi! This is an area for us to collaborate as a team

\",\n \"body_version\" : \"0d495416a700fb06133c612575d92bfb\",\n \"comments_count\" : 1,\n \"comments_url\" : \"https://api.github.com/teams/2343027/discussions/1/comments\",\n \"created_at\" : \"2018-01-25T18:56:31Z\",\n \"html_url\" : \"https://github.com/orgs/github/teams/justice-league/discussions/1\",\n \"last_edited_at\" : \"2018-01-26T18:22:20Z\",\n \"node_id\" : \"MDE0OlRlYW1EaXNjdXNzaW9uMQ==\",\n \"number\" : 1,\n \"pinned\" : false,\n \"private\" : false,\n \"reactions\" : {\n \"+1\" : 3,\n \"-1\" : 1,\n \"confused\" : 0,\n \"eyes\" : 1,\n \"heart\" : 1,\n \"hooray\" : 0,\n \"laugh\" : 0,\n \"rocket\" : 1,\n \"total_count\" : 5,\n \"url\" : \"https://api.github.com/teams/2343027/discussions/1/reactions\"\n },\n \"team_url\" : \"https://api.github.com/teams/2343027\",\n \"title\" : \"Welcome to our first team post\",\n \"updated_at\" : \"2018-01-26T18:22:20Z\",\n \"url\" : \"https://api.github.com/teams/2343027/discussions/1\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "2a0a96b4-21d7-48aa-ab57-78fa62535ba2", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.125562Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "teams/update-discussion-legacy", + "schema": { + "description": "A team discussion is a persistent record of a free-form conversation within a team.", + "properties": { + "author": { + "$ref": "#/components/schemas/nullable-simple-user" + }, + "body": { + "description": "The main text of the discussion.", + "example": "Please suggest improvements to our workflow in comments.", + "type": "string" + }, + "body_html": { + "example": "

Hi! This is an area for us to collaborate as a team

", + "type": "string" + }, + "body_version": { + "description": "The current version of the body content. If provided, this update operation will be rejected if the given version does not match the latest version on the server.", + "example": "0307116bbf7ced493b8d8a346c650b71", + "type": "string" + }, + "comments_count": { + "example": 0, + "type": "integer" + }, + "comments_url": { + "example": "https://api.github.com/organizations/1/team/2343027/discussions/1/comments", + "format": "uri", + "type": "string" + }, + "created_at": { + "example": "2018-01-25T18:56:31Z", + "format": "date-time", + "type": "string" + }, + "html_url": { + "example": "https://github.com/orgs/github/teams/justice-league/discussions/1", + "format": "uri", + "type": "string" + }, + "last_edited_at": { + "format": "date-time", + "nullable": true, + "type": "string" + }, + "node_id": { + "example": "MDE0OlRlYW1EaXNjdXNzaW9uMQ==", + "type": "string" + }, + "number": { + "description": "The unique sequence number of a team discussion.", + "example": 42, + "type": "integer" + }, + "pinned": { + "description": "Whether or not this discussion should be pinned for easy retrieval.", + "example": true, + "type": "boolean" + }, + "private": { + "description": "Whether or not this discussion should be restricted to team members and organization administrators.", + "example": true, + "type": "boolean" + }, + "reactions": { + "$ref": "#/components/schemas/reaction-rollup" + }, + "team_url": { + "example": "https://api.github.com/organizations/1/team/2343027", + "format": "uri", + "type": "string" + }, + "title": { + "description": "The title of the discussion.", + "example": "How can we improve our workflow?", + "type": "string" + }, + "updated_at": { + "example": "2018-01-25T18:56:31Z", + "format": "date-time", + "type": "string" + }, + "url": { + "example": "https://api.github.com/organizations/1/team/2343027/discussions/1", + "format": "uri", + "type": "string" + } + }, + "required": [ + "author", + "body", + "body_html", + "body_version", + "comments_count", + "comments_url", + "created_at", + "last_edited_at", + "html_url", + "pinned", + "private", + "node_id", + "number", + "team_url", + "title", + "updated_at", + "url" + ], + "title": "Team Discussion", + "type": "object" + } + } + } + }, + "insertionIndex": 287 + }, + { + "id": "bff91406-63a2-428f-bc77-59b7f86c510f", + "name": "Get a discussion (Legacy) - default", + "request": { + "urlPath": "/teams/9023217347496959257/discussions/8093674851445494317", + "method": "GET" + }, + "response": { + "status": 200, + "body": "{\n \"author\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"body\" : \"Hi! This is an area for us to collaborate as a team.\",\n \"body_html\" : \"

Hi! This is an area for us to collaborate as a team

\",\n \"body_version\" : \"0d495416a700fb06133c612575d92bfb\",\n \"comments_count\" : 0,\n \"comments_url\" : \"https://api.github.com/teams/2343027/discussions/1/comments\",\n \"created_at\" : \"2018-01-25T18:56:31Z\",\n \"html_url\" : \"https://github.com/orgs/github/teams/justice-league/discussions/1\",\n \"node_id\" : \"MDE0OlRlYW1EaXNjdXNzaW9uMQ==\",\n \"number\" : 1,\n \"pinned\" : false,\n \"private\" : false,\n \"reactions\" : {\n \"+1\" : 3,\n \"-1\" : 1,\n \"confused\" : 0,\n \"eyes\" : 1,\n \"heart\" : 1,\n \"hooray\" : 0,\n \"laugh\" : 0,\n \"rocket\" : 1,\n \"total_count\" : 5,\n \"url\" : \"https://api.github.com/teams/2343027/discussions/1/reactions\"\n },\n \"team_url\" : \"https://api.github.com/teams/2343027\",\n \"title\" : \"Our first team post\",\n \"updated_at\" : \"2018-01-25T18:56:31Z\",\n \"url\" : \"https://api.github.com/teams/2343027/discussions/1\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "bff91406-63a2-428f-bc77-59b7f86c510f", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.125432Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "teams/get-discussion-legacy", + "schema": { + "description": "A team discussion is a persistent record of a free-form conversation within a team.", + "properties": { + "author": { + "$ref": "#/components/schemas/nullable-simple-user" + }, + "body": { + "description": "The main text of the discussion.", + "example": "Please suggest improvements to our workflow in comments.", + "type": "string" + }, + "body_html": { + "example": "

Hi! This is an area for us to collaborate as a team

", + "type": "string" + }, + "body_version": { + "description": "The current version of the body content. If provided, this update operation will be rejected if the given version does not match the latest version on the server.", + "example": "0307116bbf7ced493b8d8a346c650b71", + "type": "string" + }, + "comments_count": { + "example": 0, + "type": "integer" + }, + "comments_url": { + "example": "https://api.github.com/organizations/1/team/2343027/discussions/1/comments", + "format": "uri", + "type": "string" + }, + "created_at": { + "example": "2018-01-25T18:56:31Z", + "format": "date-time", + "type": "string" + }, + "html_url": { + "example": "https://github.com/orgs/github/teams/justice-league/discussions/1", + "format": "uri", + "type": "string" + }, + "last_edited_at": { + "format": "date-time", + "nullable": true, + "type": "string" + }, + "node_id": { + "example": "MDE0OlRlYW1EaXNjdXNzaW9uMQ==", + "type": "string" + }, + "number": { + "description": "The unique sequence number of a team discussion.", + "example": 42, + "type": "integer" + }, + "pinned": { + "description": "Whether or not this discussion should be pinned for easy retrieval.", + "example": true, + "type": "boolean" + }, + "private": { + "description": "Whether or not this discussion should be restricted to team members and organization administrators.", + "example": true, + "type": "boolean" + }, + "reactions": { + "$ref": "#/components/schemas/reaction-rollup" + }, + "team_url": { + "example": "https://api.github.com/organizations/1/team/2343027", + "format": "uri", + "type": "string" + }, + "title": { + "description": "The title of the discussion.", + "example": "How can we improve our workflow?", + "type": "string" + }, + "updated_at": { + "example": "2018-01-25T18:56:31Z", + "format": "date-time", + "type": "string" + }, + "url": { + "example": "https://api.github.com/organizations/1/team/2343027/discussions/1", + "format": "uri", + "type": "string" + } + }, + "required": [ + "author", + "body", + "body_html", + "body_version", + "comments_count", + "comments_url", + "created_at", + "last_edited_at", + "html_url", + "pinned", + "private", + "node_id", + "number", + "team_url", + "title", + "updated_at", + "url" + ], + "title": "Team Discussion", + "type": "object" + } + } + } + }, + "insertionIndex": 288 + }, + { + "id": "21b6fc7e-a950-4528-b25d-410b231d94e4", + "name": "Delete a discussion (Legacy) - 204", + "request": { + "urlPath": "/teams/277670597150282706/discussions/8403568308086351276", + "method": "DELETE" + }, + "response": { + "status": 204 + }, + "uuid": "21b6fc7e-a950-4528-b25d-410b231d94e4", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.125307Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "teams/delete-discussion-legacy" + } + } + }, + "insertionIndex": 289 + }, + { + "id": "ed24d6b2-7b6c-4713-a6b3-e9125769860f", + "name": "Create a discussion (Legacy) - default", + "request": { + "urlPath": "/teams/3172302574234520912/discussions", + "method": "POST" + }, + "response": { + "status": 201, + "body": "{\n \"author\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"body\" : \"Hi! This is an area for us to collaborate as a team.\",\n \"body_html\" : \"

Hi! This is an area for us to collaborate as a team

\",\n \"body_version\" : \"0d495416a700fb06133c612575d92bfb\",\n \"comments_count\" : 0,\n \"comments_url\" : \"https://api.github.com/teams/2343027/discussions/1/comments\",\n \"created_at\" : \"2018-01-25T18:56:31Z\",\n \"html_url\" : \"https://github.com/orgs/github/teams/justice-league/discussions/1\",\n \"node_id\" : \"MDE0OlRlYW1EaXNjdXNzaW9uMQ==\",\n \"number\" : 1,\n \"pinned\" : false,\n \"private\" : false,\n \"reactions\" : {\n \"+1\" : 3,\n \"-1\" : 1,\n \"confused\" : 0,\n \"eyes\" : 1,\n \"heart\" : 1,\n \"hooray\" : 0,\n \"laugh\" : 0,\n \"rocket\" : 1,\n \"total_count\" : 5,\n \"url\" : \"https://api.github.com/teams/2343027/discussions/1/reactions\"\n },\n \"team_url\" : \"https://api.github.com/teams/2343027\",\n \"title\" : \"Our first team post\",\n \"updated_at\" : \"2018-01-25T18:56:31Z\",\n \"url\" : \"https://api.github.com/teams/2343027/discussions/1\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "ed24d6b2-7b6c-4713-a6b3-e9125769860f", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.125274Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "teams/create-discussion-legacy", + "schema": { + "description": "A team discussion is a persistent record of a free-form conversation within a team.", + "properties": { + "author": { + "$ref": "#/components/schemas/nullable-simple-user" + }, + "body": { + "description": "The main text of the discussion.", + "example": "Please suggest improvements to our workflow in comments.", + "type": "string" + }, + "body_html": { + "example": "

Hi! This is an area for us to collaborate as a team

", + "type": "string" + }, + "body_version": { + "description": "The current version of the body content. If provided, this update operation will be rejected if the given version does not match the latest version on the server.", + "example": "0307116bbf7ced493b8d8a346c650b71", + "type": "string" + }, + "comments_count": { + "example": 0, + "type": "integer" + }, + "comments_url": { + "example": "https://api.github.com/organizations/1/team/2343027/discussions/1/comments", + "format": "uri", + "type": "string" + }, + "created_at": { + "example": "2018-01-25T18:56:31Z", + "format": "date-time", + "type": "string" + }, + "html_url": { + "example": "https://github.com/orgs/github/teams/justice-league/discussions/1", + "format": "uri", + "type": "string" + }, + "last_edited_at": { + "format": "date-time", + "nullable": true, + "type": "string" + }, + "node_id": { + "example": "MDE0OlRlYW1EaXNjdXNzaW9uMQ==", + "type": "string" + }, + "number": { + "description": "The unique sequence number of a team discussion.", + "example": 42, + "type": "integer" + }, + "pinned": { + "description": "Whether or not this discussion should be pinned for easy retrieval.", + "example": true, + "type": "boolean" + }, + "private": { + "description": "Whether or not this discussion should be restricted to team members and organization administrators.", + "example": true, + "type": "boolean" + }, + "reactions": { + "$ref": "#/components/schemas/reaction-rollup" + }, + "team_url": { + "example": "https://api.github.com/organizations/1/team/2343027", + "format": "uri", + "type": "string" + }, + "title": { + "description": "The title of the discussion.", + "example": "How can we improve our workflow?", + "type": "string" + }, + "updated_at": { + "example": "2018-01-25T18:56:31Z", + "format": "date-time", + "type": "string" + }, + "url": { + "example": "https://api.github.com/organizations/1/team/2343027/discussions/1", + "format": "uri", + "type": "string" + } + }, + "required": [ + "author", + "body", + "body_html", + "body_version", + "comments_count", + "comments_url", + "created_at", + "last_edited_at", + "html_url", + "pinned", + "private", + "node_id", + "number", + "team_url", + "title", + "updated_at", + "url" + ], + "title": "Team Discussion", + "type": "object" + } + } + } + }, + "insertionIndex": 290 + }, + { + "id": "41339416-a824-486b-a640-4b76121b7a55", + "name": "List discussions (Legacy) - default", + "request": { + "urlPath": "/teams/7826966202385765313/discussions", + "method": "GET" + }, + "response": { + "status": 200, + "body": "[ {\n \"author\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"body\" : \"Hi! This is an area for us to collaborate as a team.\",\n \"body_html\" : \"

Hi! This is an area for us to collaborate as a team

\",\n \"body_version\" : \"0d495416a700fb06133c612575d92bfb\",\n \"comments_count\" : 0,\n \"comments_url\" : \"https://api.github.com/teams/2343027/discussions/1/comments\",\n \"created_at\" : \"2018-01-25T18:56:31Z\",\n \"html_url\" : \"https://github.com/orgs/github/teams/justice-league/discussions/1\",\n \"node_id\" : \"MDE0OlRlYW1EaXNjdXNzaW9uMQ==\",\n \"number\" : 1,\n \"pinned\" : false,\n \"private\" : false,\n \"reactions\" : {\n \"+1\" : 3,\n \"-1\" : 1,\n \"confused\" : 0,\n \"eyes\" : 1,\n \"heart\" : 1,\n \"hooray\" : 0,\n \"laugh\" : 0,\n \"rocket\" : 1,\n \"total_count\" : 5,\n \"url\" : \"https://api.github.com/teams/2343027/discussions/1/reactions\"\n },\n \"team_url\" : \"https://api.github.com/teams/2343027\",\n \"title\" : \"Our first team post\",\n \"updated_at\" : \"2018-01-25T18:56:31Z\",\n \"url\" : \"https://api.github.com/teams/2343027/discussions/1\"\n} ]", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "41339416-a824-486b-a640-4b76121b7a55", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.125129Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "teams/list-discussions-legacy", + "schema": { + "items": { + "$ref": "#/components/schemas/team-discussion" + }, + "type": "array" + } + } + } + }, + "insertionIndex": 291 + }, + { + "id": "cfef5bc1-2303-49fa-ad4f-8940ef4815d8", + "name": "Update a team (Legacy)", + "request": { + "urlPath": "/teams/1259204447733979797", + "method": "PATCH" + }, + "response": { + "status": 422, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/208644\",\n \"message\" : \"Accusantium ut qui nostrum quo eaque et sunt. Enim non dolor est voluptate. Ullam ea doloribus ut cupiditate. Similique est unde sint adipisci. Provident qui tempore laborum eveniet non aliquam.\",\n \"errors\" : [ {\n \"code\" : \"wqojlu9xb9vt01txo95q5ofce3dhcpj63xop4c0t2uusthexj40n8mbx0uzewqvs3tzacergppxgackzc3nle95tp1cdsa4fq3pe0c988xkw9p6zi84cp9jiwkm7eksi0dtd8gyqw4nkwxtie094ffwmqbi70wi6iwg78s6t5wdo\",\n \"field\" : \"x3glwm0k8s3m4kn2r3hdt3pxdn31545fk6hja4\",\n \"resource\" : \"n7xq4yds3ela\",\n \"index\" : 178996994778481215,\n \"message\" : \"Minima quasi omnis autem asperiores non. Officia error dicta sunt et. Reiciendis aperiam rem voluptate aut voluptatibus.\",\n \"value\" : { }\n } ]\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "cfef5bc1-2303-49fa-ad4f-8940ef4815d8", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.125081Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "teams/update-legacy", + "schema": { + "description": "Validation Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "errors": { + "items": { + "properties": { + "code": { + "type": "string" + }, + "field": { + "type": "string" + }, + "index": { + "type": "integer" + }, + "message": { + "type": "string" + }, + "resource": { + "type": "string" + }, + "value": { + "oneOf": [ + { + "nullable": true, + "type": "string" + }, + { + "nullable": true, + "type": "integer" + }, + { + "items": { + "type": "string" + }, + "nullable": true, + "type": "array" + } + ] + } + }, + "required": ["code"], + "type": "object" + }, + "type": "array" + }, + "message": { + "type": "string" + } + }, + "required": ["message", "documentation_url"], + "title": "Validation Error", + "type": "object" + } + } + } + }, + "insertionIndex": 292 + }, + { + "id": "5ea48c09-8f06-4692-adf8-c8ec7d4941e2", + "name": "Update a team (Legacy)", + "request": { + "urlPath": "/teams/8665305520781179998", + "method": "PATCH" + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/820959\",\n \"message\" : \"Architecto quibusdam perferendis. Veritatis magni laudantium. Corrupti nisi omnis. Doloribus qui optio accusamus repellat rerum sapiente.\",\n \"url\" : \"https://web.example.mocklab.io/326530\",\n \"status\" : \"i2wvdrpx7s5ieln80i5h1dcucgy3csm7tna48nqukkw5r8gqxz8zry6z5sisq4eddyn4t5adlqltred5gf9jhxp0gh1xdc470lx9mgxkcm7br6yq1bty\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "5ea48c09-8f06-4692-adf8-c8ec7d4941e2", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.124773Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "teams/update-legacy", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 293 + }, + { + "id": "fbc77339-e7a3-42d6-876e-2fbf62be4e9c", + "name": "Update a team (Legacy)", + "request": { + "urlPath": "/teams/3348459197185929595", + "method": "PATCH" + }, + "response": { + "status": 403, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/241852\",\n \"message\" : \"Animi hic repudiandae magni deserunt repellendus consequatur. Quos et dolores odio error. Quia ipsam quia maiores quia et reprehenderit iure.\",\n \"url\" : \"https://web.example.mocklab.io/906780\",\n \"status\" : \"hfialss49meq1kruvvi8ni74ka\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "fbc77339-e7a3-42d6-876e-2fbf62be4e9c", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.12457Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "teams/update-legacy", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 294 + }, + { + "id": "7952fa79-4c23-4f30-9f15-419b8416ceca", + "name": "Update a team (Legacy) - default", + "request": { + "urlPath": "/teams/2720078274441784453", + "method": "PATCH" + }, + "response": { + "status": 201, + "body": "{\n \"created_at\" : \"2017-07-14T16:53:42Z\",\n \"description\" : \"A great team.\",\n \"html_url\" : \"https://github.com/orgs/github/teams/justice-league\",\n \"id\" : 1,\n \"ldap_dn\" : \"uid=asdf,ou=users,dc=github,dc=com\",\n \"members_count\" : 3,\n \"members_url\" : \"https://api.github.com/teams/1/members{/member}\",\n \"name\" : \"Justice League\",\n \"node_id\" : \"MDQ6VGVhbTE=\",\n \"organization\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"blog\" : \"https://github.com/blog\",\n \"company\" : \"GitHub\",\n \"created_at\" : \"2008-01-14T04:33:35Z\",\n \"description\" : \"A great organization\",\n \"email\" : \"octocat@github.com\",\n \"events_url\" : \"https://api.github.com/orgs/github/events\",\n \"followers\" : 20,\n \"following\" : 0,\n \"has_organization_projects\" : true,\n \"has_repository_projects\" : true,\n \"hooks_url\" : \"https://api.github.com/orgs/github/hooks\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"issues_url\" : \"https://api.github.com/orgs/github/issues\",\n \"location\" : \"San Francisco\",\n \"login\" : \"github\",\n \"members_url\" : \"https://api.github.com/orgs/github/members{/member}\",\n \"name\" : \"github\",\n \"node_id\" : \"MDEyOk9yZ2FuaXphdGlvbjE=\",\n \"public_gists\" : 1,\n \"public_members_url\" : \"https://api.github.com/orgs/github/public_members{/member}\",\n \"public_repos\" : 2,\n \"repos_url\" : \"https://api.github.com/orgs/github/repos\",\n \"type\" : \"Organization\",\n \"updated_at\" : \"2017-08-17T12:37:15Z\",\n \"url\" : \"https://api.github.com/orgs/github\"\n },\n \"permission\" : \"admin\",\n \"privacy\" : \"closed\",\n \"repos_count\" : 10,\n \"repositories_url\" : \"https://api.github.com/teams/1/repos\",\n \"slug\" : \"justice-league\",\n \"updated_at\" : \"2017-08-17T12:37:15Z\",\n \"url\" : \"https://api.github.com/teams/1\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "7952fa79-4c23-4f30-9f15-419b8416ceca", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.124362Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "teams/update-legacy", + "schema": { + "description": "Groups of organization members that gives permissions on specified repositories.", + "properties": { + "created_at": { + "example": "2017-07-14T16:53:42Z", + "format": "date-time", + "type": "string" + }, + "description": { + "example": "A great team.", + "nullable": true, + "type": "string" + }, + "html_url": { + "example": "https://github.com/orgs/rails/teams/core", + "format": "uri", + "type": "string" + }, + "id": { + "description": "Unique identifier of the team", + "example": 42, + "type": "integer" + }, + "ldap_dn": { + "description": "Distinguished Name (DN) that team maps to within LDAP environment", + "example": "uid=example,ou=users,dc=github,dc=com", + "type": "string" + }, + "members_count": { + "example": 3, + "type": "integer" + }, + "members_url": { + "example": "https://api.github.com/organizations/1/team/1/members{/member}", + "type": "string" + }, + "name": { + "description": "Name of the team", + "example": "Developers", + "type": "string" + }, + "node_id": { + "example": "MDQ6VGVhbTE=", + "type": "string" + }, + "organization": { + "$ref": "#/components/schemas/organization-full" + }, + "parent": { + "$ref": "#/components/schemas/nullable-team-simple" + }, + "permission": { + "description": "Permission that the team will have for its repositories", + "example": "push", + "type": "string" + }, + "privacy": { + "description": "The level of privacy this team should have", + "enum": ["closed", "secret"], + "example": "closed", + "type": "string" + }, + "repos_count": { + "example": 10, + "type": "integer" + }, + "repositories_url": { + "example": "https://api.github.com/organizations/1/team/1/repos", + "format": "uri", + "type": "string" + }, + "slug": { + "example": "justice-league", + "type": "string" + }, + "updated_at": { + "example": "2017-08-17T12:37:15Z", + "format": "date-time", + "type": "string" + }, + "url": { + "description": "URL for the team", + "example": "https://api.github.com/organizations/1/team/1", + "format": "uri", + "type": "string" + } + }, + "required": [ + "id", + "node_id", + "url", + "members_url", + "name", + "description", + "permission", + "html_url", + "repositories_url", + "slug", + "created_at", + "updated_at", + "members_count", + "repos_count", + "organization" + ], + "title": "Full Team", + "type": "object" + } + } + } + }, + "insertionIndex": 295 + }, + { + "id": "ac9fb3b8-92b2-40e2-8090-d684f875fe1a", + "name": "Update a team (Legacy) - default", + "request": { + "urlPath": "/teams/2299997657844653378", + "method": "PATCH" + }, + "response": { + "status": 200, + "body": "{\n \"created_at\" : \"2017-07-14T16:53:42Z\",\n \"description\" : \"A great team.\",\n \"html_url\" : \"https://github.com/orgs/github/teams/justice-league\",\n \"id\" : 1,\n \"ldap_dn\" : \"uid=asdf,ou=users,dc=github,dc=com\",\n \"members_count\" : 3,\n \"members_url\" : \"https://api.github.com/teams/1/members{/member}\",\n \"name\" : \"Justice League\",\n \"node_id\" : \"MDQ6VGVhbTE=\",\n \"organization\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"blog\" : \"https://github.com/blog\",\n \"company\" : \"GitHub\",\n \"created_at\" : \"2008-01-14T04:33:35Z\",\n \"description\" : \"A great organization\",\n \"email\" : \"octocat@github.com\",\n \"events_url\" : \"https://api.github.com/orgs/github/events\",\n \"followers\" : 20,\n \"following\" : 0,\n \"has_organization_projects\" : true,\n \"has_repository_projects\" : true,\n \"hooks_url\" : \"https://api.github.com/orgs/github/hooks\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"issues_url\" : \"https://api.github.com/orgs/github/issues\",\n \"location\" : \"San Francisco\",\n \"login\" : \"github\",\n \"members_url\" : \"https://api.github.com/orgs/github/members{/member}\",\n \"name\" : \"github\",\n \"node_id\" : \"MDEyOk9yZ2FuaXphdGlvbjE=\",\n \"public_gists\" : 1,\n \"public_members_url\" : \"https://api.github.com/orgs/github/public_members{/member}\",\n \"public_repos\" : 2,\n \"repos_url\" : \"https://api.github.com/orgs/github/repos\",\n \"type\" : \"Organization\",\n \"updated_at\" : \"2017-08-17T12:37:15Z\",\n \"url\" : \"https://api.github.com/orgs/github\"\n },\n \"permission\" : \"admin\",\n \"privacy\" : \"closed\",\n \"repos_count\" : 10,\n \"repositories_url\" : \"https://api.github.com/teams/1/repos\",\n \"slug\" : \"justice-league\",\n \"updated_at\" : \"2017-08-17T12:37:15Z\",\n \"url\" : \"https://api.github.com/teams/1\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "ac9fb3b8-92b2-40e2-8090-d684f875fe1a", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.124235Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "teams/update-legacy", + "schema": { + "description": "Groups of organization members that gives permissions on specified repositories.", + "properties": { + "created_at": { + "example": "2017-07-14T16:53:42Z", + "format": "date-time", + "type": "string" + }, + "description": { + "example": "A great team.", + "nullable": true, + "type": "string" + }, + "html_url": { + "example": "https://github.com/orgs/rails/teams/core", + "format": "uri", + "type": "string" + }, + "id": { + "description": "Unique identifier of the team", + "example": 42, + "type": "integer" + }, + "ldap_dn": { + "description": "Distinguished Name (DN) that team maps to within LDAP environment", + "example": "uid=example,ou=users,dc=github,dc=com", + "type": "string" + }, + "members_count": { + "example": 3, + "type": "integer" + }, + "members_url": { + "example": "https://api.github.com/organizations/1/team/1/members{/member}", + "type": "string" + }, + "name": { + "description": "Name of the team", + "example": "Developers", + "type": "string" + }, + "node_id": { + "example": "MDQ6VGVhbTE=", + "type": "string" + }, + "organization": { + "$ref": "#/components/schemas/organization-full" + }, + "parent": { + "$ref": "#/components/schemas/nullable-team-simple" + }, + "permission": { + "description": "Permission that the team will have for its repositories", + "example": "push", + "type": "string" + }, + "privacy": { + "description": "The level of privacy this team should have", + "enum": ["closed", "secret"], + "example": "closed", + "type": "string" + }, + "repos_count": { + "example": 10, + "type": "integer" + }, + "repositories_url": { + "example": "https://api.github.com/organizations/1/team/1/repos", + "format": "uri", + "type": "string" + }, + "slug": { + "example": "justice-league", + "type": "string" + }, + "updated_at": { + "example": "2017-08-17T12:37:15Z", + "format": "date-time", + "type": "string" + }, + "url": { + "description": "URL for the team", + "example": "https://api.github.com/organizations/1/team/1", + "format": "uri", + "type": "string" + } + }, + "required": [ + "id", + "node_id", + "url", + "members_url", + "name", + "description", + "permission", + "html_url", + "repositories_url", + "slug", + "created_at", + "updated_at", + "members_count", + "repos_count", + "organization" + ], + "title": "Full Team", + "type": "object" + } + } + } + }, + "insertionIndex": 296 + }, + { + "id": "7e43b351-55a3-409b-987a-736fec42c247", + "name": "Get a team (Legacy)", + "request": { + "urlPath": "/teams/7918764993227429528", + "method": "GET" + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/675907\",\n \"message\" : \"Facilis in molestiae aliquid accusantium laboriosam in. Ullam incidunt saepe aperiam cupiditate. Reprehenderit aut expedita est quas.\",\n \"url\" : \"https://web.example.mocklab.io/734771\",\n \"status\" : \"chejgxobgby294fd4vishmhysqmib54ch4teu1rovfy8qplmhidhwpiz4ageu5boa3rdmx1emg26ebuciqw66fk9jps7jtzopu578lkvqhz806i2dhtpsc6e8e2r8psbsuzc3n5ouwgmlr0a9xoeq37gsnr6uw9cmp7880gst8ixwteam8ofng5glzvi4r40zk\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "7e43b351-55a3-409b-987a-736fec42c247", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.124106Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "teams/get-legacy", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 297 + }, + { + "id": "c996197c-530b-4f50-8ce4-87e4715e5520", + "name": "Get a team (Legacy) - default", + "request": { + "urlPath": "/teams/4845010268417108522", + "method": "GET" + }, + "response": { + "status": 200, + "body": "{\n \"created_at\" : \"2017-07-14T16:53:42Z\",\n \"description\" : \"A great team.\",\n \"html_url\" : \"https://github.com/orgs/github/teams/justice-league\",\n \"id\" : 1,\n \"ldap_dn\" : \"uid=asdf,ou=users,dc=github,dc=com\",\n \"members_count\" : 3,\n \"members_url\" : \"https://api.github.com/teams/1/members{/member}\",\n \"name\" : \"Justice League\",\n \"node_id\" : \"MDQ6VGVhbTE=\",\n \"organization\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"blog\" : \"https://github.com/blog\",\n \"company\" : \"GitHub\",\n \"created_at\" : \"2008-01-14T04:33:35Z\",\n \"description\" : \"A great organization\",\n \"email\" : \"octocat@github.com\",\n \"events_url\" : \"https://api.github.com/orgs/github/events\",\n \"followers\" : 20,\n \"following\" : 0,\n \"has_organization_projects\" : true,\n \"has_repository_projects\" : true,\n \"hooks_url\" : \"https://api.github.com/orgs/github/hooks\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"issues_url\" : \"https://api.github.com/orgs/github/issues\",\n \"location\" : \"San Francisco\",\n \"login\" : \"github\",\n \"members_url\" : \"https://api.github.com/orgs/github/members{/member}\",\n \"name\" : \"github\",\n \"node_id\" : \"MDEyOk9yZ2FuaXphdGlvbjE=\",\n \"public_gists\" : 1,\n \"public_members_url\" : \"https://api.github.com/orgs/github/public_members{/member}\",\n \"public_repos\" : 2,\n \"repos_url\" : \"https://api.github.com/orgs/github/repos\",\n \"type\" : \"Organization\",\n \"updated_at\" : \"2017-08-17T12:37:15Z\",\n \"url\" : \"https://api.github.com/orgs/github\"\n },\n \"permission\" : \"admin\",\n \"privacy\" : \"closed\",\n \"repos_count\" : 10,\n \"repositories_url\" : \"https://api.github.com/teams/1/repos\",\n \"slug\" : \"justice-league\",\n \"updated_at\" : \"2017-08-17T12:37:15Z\",\n \"url\" : \"https://api.github.com/teams/1\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "c996197c-530b-4f50-8ce4-87e4715e5520", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.123886Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "teams/get-legacy", + "schema": { + "description": "Groups of organization members that gives permissions on specified repositories.", + "properties": { + "created_at": { + "example": "2017-07-14T16:53:42Z", + "format": "date-time", + "type": "string" + }, + "description": { + "example": "A great team.", + "nullable": true, + "type": "string" + }, + "html_url": { + "example": "https://github.com/orgs/rails/teams/core", + "format": "uri", + "type": "string" + }, + "id": { + "description": "Unique identifier of the team", + "example": 42, + "type": "integer" + }, + "ldap_dn": { + "description": "Distinguished Name (DN) that team maps to within LDAP environment", + "example": "uid=example,ou=users,dc=github,dc=com", + "type": "string" + }, + "members_count": { + "example": 3, + "type": "integer" + }, + "members_url": { + "example": "https://api.github.com/organizations/1/team/1/members{/member}", + "type": "string" + }, + "name": { + "description": "Name of the team", + "example": "Developers", + "type": "string" + }, + "node_id": { + "example": "MDQ6VGVhbTE=", + "type": "string" + }, + "organization": { + "$ref": "#/components/schemas/organization-full" + }, + "parent": { + "$ref": "#/components/schemas/nullable-team-simple" + }, + "permission": { + "description": "Permission that the team will have for its repositories", + "example": "push", + "type": "string" + }, + "privacy": { + "description": "The level of privacy this team should have", + "enum": ["closed", "secret"], + "example": "closed", + "type": "string" + }, + "repos_count": { + "example": 10, + "type": "integer" + }, + "repositories_url": { + "example": "https://api.github.com/organizations/1/team/1/repos", + "format": "uri", + "type": "string" + }, + "slug": { + "example": "justice-league", + "type": "string" + }, + "updated_at": { + "example": "2017-08-17T12:37:15Z", + "format": "date-time", + "type": "string" + }, + "url": { + "description": "URL for the team", + "example": "https://api.github.com/organizations/1/team/1", + "format": "uri", + "type": "string" + } + }, + "required": [ + "id", + "node_id", + "url", + "members_url", + "name", + "description", + "permission", + "html_url", + "repositories_url", + "slug", + "created_at", + "updated_at", + "members_count", + "repos_count", + "organization" + ], + "title": "Full Team", + "type": "object" + } + } + } + }, + "insertionIndex": 298 + }, + { + "id": "c25748d3-422f-4170-b944-a53291e8f85d", + "name": "Delete a team (Legacy) (application/json)", + "request": { + "urlPath": "/teams/2801162992580740325", + "method": "DELETE", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 422, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/791932\",\n \"message\" : \"Sed qui et aut ratione dolorem dolorem. Aperiam voluptates tenetur quam tempora qui beatae. Delectus et in praesentium voluptatem qui et. Laboriosam eligendi quibusdam ipsum.\",\n \"errors\" : [ {\n \"code\" : \"gvi3ica19net1zdwqokhxeoudtkjt7zy6a8glc8cpd9mz4n2rn7a8xhidlgwjh6s3\",\n \"field\" : \"c3ajs9j8o1d6f8lr0ept90t1dmr3yx2ib2wxyqvsqmkspcox1l6u53tkzf7s4v4fguil40l2u5uh0j5f6j9emum7dllnln23tjrv6d1b\",\n \"resource\" : \"noul5prlb77d2ux1614hvxn2sx5qpcyw22cm9gsddwib2qwk9mz7338zmzxnt44rtn52mm5cc9sk3ln8xsn5a06ezsnokuy1ogq78pikwff7xv4xw0hqklyw7vovrp2yo4x1ap2cgty5dzcv0ycb03gnp1v294dybzc69ge4m3ay66aavwgc2gjtb5c9b\",\n \"index\" : 4562998569835155934,\n \"message\" : \"Ut nam non rerum cupiditate sapiente non. Ea iusto ut dicta ratione omnis. Harum aperiam molestiae a et voluptatum enim. Perferendis voluptatem culpa nostrum fugit illum quidem. Molestiae qui et corru\",\n \"value\" : { }\n }, {\n \"code\" : \"3hv7c74g3e29kqp7mc4vqnakhwbcpdhzaujwb03c9wtotsj3x9w3zxx6mbqhj2805ibb3r7yxt9gm57f0qqwy67d8845c36meukztw81iahduc95499a5bkbov5fatstblcpzyqrjo3\",\n \"field\" : \"9808uqu5t6c4jdmrb1htd82hfud5muycnz08p68i9f9socimfybizfedfvm2p0j9b0aislytirwihmzniwd5zrjcswk\",\n \"resource\" : \"y9qki882qzz76o9163b39vxv34m0xnax0f3twq9ewquq4q3g7np0jwcq\",\n \"index\" : 6430817673992090754,\n \"message\" : \"Ipsa dolorem quisquam nihil. Quas sapiente molestias iure aut. Pariatur et iste rem consequatur ex. Voluptatem atque sed voluptatem ut cumque dolore rerum. Pariatur blanditiis quis aliquam.\",\n \"value\" : { }\n }, {\n \"code\" : \"a4r65ycye8uj149lc7\",\n \"field\" : \"18qb1mhr9nvvo6fk0tzgz630nbf5n2w7irsuju3aywnete4tr6tuofnzncj98hc7hnnsr1niv7dxz34pb6em467ehm0xu4l8ikj69pw12dh248e5ni3rqfz9n19n7uy6yzdweoregdsigzg3jx7bg62\",\n \"resource\" : \"569kh7grathya6m5zkg6gb4yis5uf6hiyzm1iprbsirm4tb3oqzip6rmlls1\",\n \"index\" : 4217670583823157175,\n \"message\" : \"Magnam sit nihil incidunt laboriosam. Quia occaecati temporibus enim amet. Est in aspernatur nostrum et sed voluptatem. Ut sequi consectetur reprehenderit quis dignissimos.\",\n \"value\" : { }\n }, {\n \"code\" : \"nhr4fnq6y1hv17vqsp8xruyj4s7w29y6x7ijd8o9a05u9rz4cyr8n65ozmsvxrcywt845cay\",\n \"field\" : \"dcnan7wrltwt1q5f8jxi49j24t3pslqx7xlr2o7xmci8d5z55q33alw0jh8p1bcw8ns\",\n \"resource\" : \"swml3sjdjv6prew4s7k9753v3owkmirlmpwncrq39ru7mmnri22gi83oogig9y1ka407i6v07g58i6kntmdv8g92nebs8om44irq1txvksb50z6tvf9ykejs3upi6lzr0bx3sr3eolp9rxvo2dllj1nco48agchf3bkakxijrdb0dvavhl1\",\n \"index\" : 7187056680374064108,\n \"message\" : \"Maxime odit animi quibusdam voluptatem. Explicabo in est aut unde non aliquam non. Et quia illo.\",\n \"value\" : { }\n }, {\n \"code\" : \"889ddg03r19jwdlwjwwg0jo7sbe3maiid8\",\n \"field\" : \"1avwc6ydad7cmbmcis00x381te4hgr0984cakbx0z05rsrc7750fmndaonend4sccpg216x4ywkpca8jooaagk9ygnfjdro3qbp2zlyhr54re2xijeuj5xjysz0sfs0asuiwkf7rzku9rdgn5q575spo86os5nj6s5vohjlncc1i7hdizli9p71uccbongf98ghc4\",\n \"resource\" : \"ahtol7mn7gq5pimzsynfydewn9fnpki57ar4wqaws7lc1xn\",\n \"index\" : 7422141709655057485,\n \"message\" : \"Doloribus voluptates itaque rem ut sint. Hic omnis molestiae accusamus minus autem. Deleniti pariatur quaerat impedit sunt consequatur. Aut omnis provident omnis sequi. Placeat minus aut.\",\n \"value\" : { }\n } ]\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "c25748d3-422f-4170-b944-a53291e8f85d", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.123714Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "teams/delete-legacy", + "schema": { + "description": "Validation Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "errors": { + "items": { + "properties": { + "code": { + "type": "string" + }, + "field": { + "type": "string" + }, + "index": { + "type": "integer" + }, + "message": { + "type": "string" + }, + "resource": { + "type": "string" + }, + "value": { + "oneOf": [ + { + "nullable": true, + "type": "string" + }, + { + "nullable": true, + "type": "integer" + }, + { + "items": { + "type": "string" + }, + "nullable": true, + "type": "array" + } + ] + } + }, + "required": ["code"], + "type": "object" + }, + "type": "array" + }, + "message": { + "type": "string" + } + }, + "required": ["message", "documentation_url"], + "title": "Validation Error", + "type": "object" + } + } + } + }, + "insertionIndex": 299 + }, + { + "id": "f13dc53b-e6af-4aaf-b0a0-aed883cad8a9", + "name": "Delete a team (Legacy) (application/json)", + "request": { + "urlPath": "/teams/3329942666612167643", + "method": "DELETE", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/515086\",\n \"message\" : \"Est velit aut ea accusamus qui. Eius ea libero aut. Numquam et nemo atque. Inventore voluptate est aut dolore sit ullam sed.\",\n \"url\" : \"https://web.example.mocklab.io/755963\",\n \"status\" : \"07b6zpo91acvbcklqg510rcixz9l32wr9wxyiw0my13uzzhsic1gm6vchv80y1o1u0h3zhr2s4fxayd76lusjmg2vukdmlqk5jnk6024d816wsi590n68mpds4yan2ihdfx\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "f13dc53b-e6af-4aaf-b0a0-aed883cad8a9", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.123066Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "teams/delete-legacy", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 300 + }, + { + "id": "f4a49da4-b826-4dac-a8c2-ef2950caf525", + "name": "Delete a team (Legacy) - 204", + "request": { + "urlPath": "/teams/6545673014441859837", + "method": "DELETE" + }, + "response": { + "status": 204 + }, + "uuid": "f4a49da4-b826-4dac-a8c2-ef2950caf525", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.122833Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "teams/delete-legacy" + } + } + }, + "insertionIndex": 301 + }, + { + "id": "775ff356-33d3-41ae-854c-ffa5252b7b77", + "name": "Upgrade a license - 202", + "request": { + "urlPath": "/setup/api/upgrade", + "method": "POST" + }, + "response": { + "status": 202 + }, + "uuid": "775ff356-33d3-41ae-854c-ffa5252b7b77", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.122804Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "enterprise-admin/upgrade-license" + } + } + }, + "insertionIndex": 302 + }, + { + "id": "d6b0e6d5-bc3d-42cc-97ce-ae8363102e5a", + "name": "Create a GitHub license - 202", + "request": { + "urlPath": "/setup/api/start", + "method": "POST" + }, + "response": { + "status": 202 + }, + "uuid": "d6b0e6d5-bc3d-42cc-97ce-ae8363102e5a", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.122788Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "enterprise-admin/create-enterprise-server-license" + } + } + }, + "insertionIndex": 303 + }, + { + "id": "4bd0a442-e583-4695-b1d0-16127bc63f25", + "name": "Add an authorized SSH key - default", + "request": { + "urlPath": "/setup/api/settings/authorized-keys", + "method": "POST" + }, + "response": { + "status": 201, + "body": "[ {\n \"key\" : \"ssh-rsa AAAAB3NzaC1yc2EAAAAB...\",\n \"pretty-print\" : \"ssh-rsa 01:14:0f:f2:0f:e2:fe:e8:f4:72:62:af:75:f7:1a:88:3e:04:92:64\"\n}, {\n \"key\" : \"ssh-rsa AAAAB3NzaC1yc2EAAAAB...\",\n \"pretty-print\" : \"ssh-rsa 01:14:0f:f2:0f:e2:fe:e8:f4:72:62:af:75:f7:1a:88:3e:04:92:64\"\n}, {\n \"key\" : \"ssh-rsa AAAAB3NzaC1yc2EAAAAB...\",\n \"pretty-print\" : \"ssh-rsa 01:14:0f:f2:0f:e2:fe:e8:f4:72:62:af:75:f7:1a:88:3e:04:92:64\"\n} ]", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "4bd0a442-e583-4695-b1d0-16127bc63f25", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.122768Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "enterprise-admin/add-authorized-ssh-key", + "schema": { + "items": { + "$ref": "#/components/schemas/ssh-key" + }, + "type": "array" + } + } + } + }, + "insertionIndex": 304 + }, + { + "id": "78ca184d-49dd-4ca2-ad6a-0d41cfe7f259", + "name": "Get all authorized SSH keys - default", + "request": { + "urlPath": "/setup/api/settings/authorized-keys", + "method": "GET" + }, + "response": { + "status": 200, + "body": "[ {\n \"key\" : \"ssh-rsa AAAAB3NzaC1yc2EAAAAB...\",\n \"pretty-print\" : \"ssh-rsa 01:14:0f:f2:0f:e2:fe:e8:f4:72:62:af:75:f7:1a:88:3e:04:92:64\"\n}, {\n \"key\" : \"ssh-rsa AAAAB3NzaC1yc2EAAAAB...\",\n \"pretty-print\" : \"ssh-rsa 01:14:0f:f2:0f:e2:fe:e8:f4:72:62:af:75:f7:1a:88:3e:04:92:64\"\n} ]", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "78ca184d-49dd-4ca2-ad6a-0d41cfe7f259", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.122739Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "enterprise-admin/get-all-authorized-ssh-keys", + "schema": { + "items": { + "$ref": "#/components/schemas/ssh-key" + }, + "type": "array" + } + } + } + }, + "insertionIndex": 305 + }, + { + "id": "6ec59c0f-3458-4a92-87f5-b30cc3a8c59b", + "name": "Remove an authorized SSH key - default", + "request": { + "urlPath": "/setup/api/settings/authorized-keys", + "method": "DELETE" + }, + "response": { + "status": 200, + "body": "[ {\n \"key\" : \"ssh-rsa AAAAB3NzaC1yc2EAAAAB...\",\n \"pretty-print\" : \"ssh-rsa 01:14:0f:f2:0f:e2:fe:e8:f4:72:62:af:75:f7:1a:88:3e:04:92:64\"\n}, {\n \"key\" : \"ssh-rsa AAAAB3NzaC1yc2EAAAAB...\",\n \"pretty-print\" : \"ssh-rsa 01:14:0f:f2:0f:e2:fe:e8:f4:72:62:af:75:f7:1a:88:3e:04:92:64\"\n} ]", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "6ec59c0f-3458-4a92-87f5-b30cc3a8c59b", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.122709Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "enterprise-admin/remove-authorized-ssh-key", + "schema": { + "items": { + "$ref": "#/components/schemas/ssh-key" + }, + "type": "array" + } + } + } + }, + "insertionIndex": 306 + }, + { + "id": "8249dbbe-1839-4140-8b83-49cccc0b426b", + "name": "Set settings - 204", + "request": { + "urlPath": "/setup/api/settings", + "method": "PUT" + }, + "response": { + "status": 204 + }, + "uuid": "8249dbbe-1839-4140-8b83-49cccc0b426b", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.122673Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "enterprise-admin/set-settings" + } + } + }, + "insertionIndex": 307 + }, + { + "id": "5fd56b3b-30eb-4eb7-90cc-2644216d6541", + "name": "Get settings - default", + "request": { + "urlPath": "/setup/api/settings", + "method": "GET" + }, + "response": { + "status": 200, + "body": "{\n \"enterprise\" : {\n \"auth_mode\" : \"default\",\n \"avatar\" : {\n \"enabled\" : false,\n \"uri\" : \"\"\n },\n \"cas\" : { },\n \"collectd\" : {\n \"enabled\" : false,\n \"port\" : 0\n },\n \"configuration_id\" : 1401777404,\n \"configuration_run_count\" : 4,\n \"customer\" : {\n \"email\" : \"stannis@themannis.biz\",\n \"name\" : \"GitHub\",\n \"public_key_data\" : \"-----BEGIN PGP PUBLIC KEY BLOCK-----\\nVersion: GnuPG v1.4.10 (GNU/Linux)\\n\\nmI0ETqzZYgEEALSe6snowdenXyqvLfSQ34HWD6C7....\\n-----END PGP PUBLIC KEY BLOCK-----\\n\",\n \"secret_key_data\" : \"-----BEGIN PGP PRIVATE KEY BLOCK-----\\nVersion: GnuPG v1.4.10 (GNU/Linux)\\n\\nlQcYBE5TCgsBEACk4yHpUcapplebaumBMXYMiLF+nCQ0lxpx...\\n-----END PGP PRIVATE KEY BLOCK-----\\n\",\n \"uuid\" : \"af6cac80-e4e1-012e-d822-1231380e52e9\"\n },\n \"expire_sessions\" : false,\n \"github_hostname\" : \"ghe.local\",\n \"github_oauth\" : {\n \"client_id\" : \"12313412\",\n \"client_secret\" : \"kj123131132\",\n \"organization_name\" : \"Homestar Runners\",\n \"organization_team\" : \"homestarrunners/characters\"\n },\n \"github_ssl\" : {\n \"enabled\" : false\n },\n \"identicons_host\" : \"dotcom\",\n \"ldap\" : {\n \"base\" : [ ],\n \"method\" : \"Plain\",\n \"port\" : 0,\n \"posix_support\" : true,\n \"profile\" : {\n \"uid\" : \"uid\"\n },\n \"reconciliation\" : { },\n \"recursive_group_search\" : false,\n \"search_strategy\" : \"detect\",\n \"sync_enabled\" : false,\n \"team_sync_interval\" : 4,\n \"user_groups\" : [ ],\n \"user_sync_emails\" : false,\n \"user_sync_interval\" : 4,\n \"user_sync_keys\" : false,\n \"virtual_attribute_enabled\" : false\n },\n \"license\" : {\n \"cluster_support\" : false,\n \"evaluation\" : false,\n \"expire_at\" : \"2016-04-27T00:00:00-07:00\",\n \"perpetual\" : false,\n \"seats\" : 0,\n \"ssh_allowed\" : true,\n \"support_key\" : \"ssh-rsa AAAAB3N....\",\n \"unlimited_seating\" : true\n },\n \"mapping\" : {\n \"basemap\" : \"company.map-qsz2zrvs\",\n \"enabled\" : true\n },\n \"ntp\" : {\n \"primary_server\" : \"0.pool.ntp.org\",\n \"secondary_server\" : \"1.pool.ntp.org\"\n },\n \"pages\" : {\n \"enabled\" : true\n },\n \"private_mode\" : false,\n \"public_pages\" : false,\n \"saml\" : {\n \"disable_admin_demote\" : false,\n \"idp_initiated_sso\" : false\n },\n \"signup_enabled\" : false,\n \"smtp\" : {\n \"address\" : \"smtp.example.com\",\n \"authentication\" : \"plain\",\n \"discard-to-noreply-address\" : true,\n \"domain\" : \"blah\",\n \"enable_starttls_auto\" : true,\n \"enabled\" : true,\n \"noreply_address\" : \"noreply@github.com\",\n \"password\" : \"bar\",\n \"port\" : \"1234\",\n \"support_address\" : \"enterprise@github.com\",\n \"support_address_type\" : \"email\",\n \"user_name\" : \"mr_foo\",\n \"username\" : \"foo\"\n },\n \"snmp\" : {\n \"community\" : \"\",\n \"enabled\" : false\n },\n \"subdomain_isolation\" : true,\n \"syslog\" : {\n \"enabled\" : false,\n \"protocol_name\" : \"udp\"\n }\n },\n \"run_list\" : [ \"recipe[enterprise-configure]\" ]\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "5fd56b3b-30eb-4eb7-90cc-2644216d6541", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.122621Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "enterprise-admin/get-settings", + "schema": { + "properties": { + "enterprise": { + "properties": { + "admin_password": { + "nullable": true, + "type": "string" + }, + "assets": { + "nullable": true, + "type": "string" + }, + "auth_mode": { + "type": "string" + }, + "avatar": { + "properties": { + "enabled": { + "type": "boolean" + }, + "uri": { + "type": "string" + } + }, + "type": "object" + }, + "cas": { + "properties": { + "url": { + "nullable": true, + "type": "string" + } + }, + "type": "object" + }, + "collectd": { + "properties": { + "enabled": { + "type": "boolean" + }, + "encryption": { + "nullable": true, + "type": "string" + }, + "password": { + "nullable": true, + "type": "string" + }, + "port": { + "type": "integer" + }, + "server": { + "nullable": true, + "type": "string" + }, + "username": { + "nullable": true, + "type": "string" + } + }, + "type": "object" + }, + "configuration_id": { + "type": "integer" + }, + "configuration_run_count": { + "type": "integer" + }, + "customer": { + "properties": { + "email": { + "type": "string" + }, + "name": { + "type": "string" + }, + "public_key_data": { + "type": "string" + }, + "secret_key_data": { + "type": "string" + }, + "uuid": { + "type": "string" + } + }, + "type": "object" + }, + "expire_sessions": { + "type": "boolean" + }, + "github_hostname": { + "type": "string" + }, + "github_oauth": { + "properties": { + "client_id": { + "type": "string" + }, + "client_secret": { + "type": "string" + }, + "organization_name": { + "type": "string" + }, + "organization_team": { + "type": "string" + } + }, + "type": "object" + }, + "github_ssl": { + "properties": { + "cert": { + "nullable": true, + "type": "string" + }, + "enabled": { + "type": "boolean" + }, + "key": { + "nullable": true, + "type": "string" + } + }, + "type": "object" + }, + "http_proxy": { + "nullable": true, + "type": "string" + }, + "identicons_host": { + "type": "string" + }, + "ldap": { + "properties": { + "admin_group": { + "nullable": true, + "type": "string" + }, + "base": { + "type": "array" + }, + "bind_dn": { + "nullable": true, + "type": "string" + }, + "host": { + "nullable": true, + "type": "string" + }, + "method": { + "type": "string" + }, + "password": { + "nullable": true, + "type": "string" + }, + "port": { + "type": "integer" + }, + "posix_support": { + "type": "boolean" + }, + "profile": { + "properties": { + "key": { + "nullable": true, + "type": "string" + }, + "mail": { + "nullable": true, + "type": "string" + }, + "name": { + "nullable": true, + "type": "string" + }, + "uid": { + "type": "string" + } + }, + "type": "object" + }, + "reconciliation": { + "properties": { + "org": { + "nullable": true, + "type": "string" + }, + "user": { + "nullable": true, + "type": "string" + } + }, + "type": "object" + }, + "recursive_group_search": { + "type": "boolean" + }, + "search_strategy": { + "type": "string" + }, + "sync_enabled": { + "type": "boolean" + }, + "team_sync_interval": { + "type": "integer" + }, + "uid": { + "nullable": true, + "type": "string" + }, + "user_groups": { + "type": "array" + }, + "user_sync_emails": { + "type": "boolean" + }, + "user_sync_interval": { + "type": "integer" + }, + "user_sync_keys": { + "type": "boolean" + }, + "virtual_attribute_enabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "license": { + "properties": { + "cluster_support": { + "type": "boolean" + }, + "evaluation": { + "type": "boolean" + }, + "expire_at": { + "type": "string" + }, + "perpetual": { + "type": "boolean" + }, + "seats": { + "type": "integer" + }, + "ssh_allowed": { + "type": "boolean" + }, + "support_key": { + "type": "string" + }, + "unlimited_seating": { + "type": "boolean" + } + }, + "type": "object" + }, + "load_balancer": { + "nullable": true, + "type": "string" + }, + "mapping": { + "properties": { + "basemap": { + "type": "string" + }, + "enabled": { + "type": "boolean" + }, + "tileserver": { + "nullable": true, + "type": "string" + }, + "token": { + "nullable": true, + "type": "string" + } + }, + "type": "object" + }, + "ntp": { + "properties": { + "primary_server": { + "type": "string" + }, + "secondary_server": { + "type": "string" + } + }, + "type": "object" + }, + "pages": { + "properties": { + "enabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "private_mode": { + "type": "boolean" + }, + "public_pages": { + "type": "boolean" + }, + "saml": { + "properties": { + "certificate": { + "nullable": true, + "type": "string" + }, + "certificate_path": { + "nullable": true, + "type": "string" + }, + "disable_admin_demote": { + "type": "boolean" + }, + "idp_initiated_sso": { + "type": "boolean" + }, + "issuer": { + "nullable": true, + "type": "string" + }, + "sso_url": { + "nullable": true, + "type": "string" + } + }, + "type": "object" + }, + "signup_enabled": { + "type": "boolean" + }, + "smtp": { + "properties": { + "address": { + "type": "string" + }, + "authentication": { + "type": "string" + }, + "discard-to-noreply-address": { + "type": "boolean" + }, + "domain": { + "type": "string" + }, + "enable_starttls_auto": { + "type": "boolean" + }, + "enabled": { + "type": "boolean" + }, + "noreply_address": { + "type": "string" + }, + "password": { + "type": "string" + }, + "port": { + "type": "string" + }, + "support_address": { + "type": "string" + }, + "support_address_type": { + "type": "string" + }, + "user_name": { + "type": "string" + }, + "username": { + "type": "string" + } + }, + "type": "object" + }, + "snmp": { + "properties": { + "community": { + "type": "string" + }, + "enabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "subdomain_isolation": { + "type": "boolean" + }, + "syslog": { + "properties": { + "enabled": { + "type": "boolean" + }, + "protocol_name": { + "type": "string" + }, + "server": { + "nullable": true, + "type": "string" + } + }, + "type": "object" + }, + "timezone": { + "nullable": true, + "type": "string" + } + }, + "type": "object" + }, + "run_list": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + } + } + }, + "insertionIndex": 308 + }, + { + "id": "eb4d5beb-1d18-4b50-83a0-78d2b893bc1b", + "name": "Enable or disable maintenance mode - default", + "request": { + "urlPath": "/setup/api/maintenance", + "method": "POST" + }, + "response": { + "status": 200, + "body": "{\n \"connection_services\" : [ {\n \"name\" : \"git operations\",\n \"number\" : 0\n }, {\n \"name\" : \"mysql queries\",\n \"number\" : 233\n }, {\n \"name\" : \"resque jobs\",\n \"number\" : 54\n } ],\n \"scheduled_time\" : \"Tuesday, January 22 at 15:34 -0800\",\n \"status\" : \"scheduled\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "eb4d5beb-1d18-4b50-83a0-78d2b893bc1b", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.121872Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "enterprise-admin/enable-or-disable-maintenance-mode", + "schema": { + "properties": { + "connection_services": { + "items": { + "properties": { + "name": { + "type": "string" + }, + "number": { + "type": "integer" + } + }, + "required": ["name", "number"], + "type": "object" + }, + "type": "array" + }, + "scheduled_time": { + "type": "string" + }, + "status": { + "type": "string" + } + }, + "type": "object" + } + } + } + }, + "insertionIndex": 309 + }, + { + "id": "a86539d7-26c9-4a55-acc5-562fc13acfde", + "name": "Get the maintenance status - default", + "request": { + "urlPath": "/setup/api/maintenance", + "method": "GET" + }, + "response": { + "status": 200, + "body": "{\n \"connection_services\" : [ {\n \"name\" : \"git operations\",\n \"number\" : 0\n }, {\n \"name\" : \"mysql queries\",\n \"number\" : 233\n }, {\n \"name\" : \"resque jobs\",\n \"number\" : 54\n } ],\n \"scheduled_time\" : \"Tuesday, January 22 at 15:34 -0800\",\n \"status\" : \"scheduled\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "a86539d7-26c9-4a55-acc5-562fc13acfde", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.12181Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "enterprise-admin/get-maintenance-status", + "schema": { + "properties": { + "connection_services": { + "items": { + "properties": { + "name": { + "type": "string" + }, + "number": { + "type": "integer" + } + }, + "required": ["name", "number"], + "type": "object" + }, + "type": "array" + }, + "scheduled_time": { + "type": "string" + }, + "status": { + "type": "string" + } + }, + "type": "object" + } + } + } + }, + "insertionIndex": 310 + }, + { + "id": "130b3846-097f-43d6-9437-7b3b988308a1", + "name": "Start a configuration process - 202", + "request": { + "urlPath": "/setup/api/configure", + "method": "POST" + }, + "response": { + "status": 202 + }, + "uuid": "130b3846-097f-43d6-9437-7b3b988308a1", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.121744Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "enterprise-admin/start-configuration-process" + } + } + }, + "insertionIndex": 311 + }, + { + "id": "dbd92ee5-d322-42a2-9554-4d2e6dd62a12", + "name": "Get the configuration status - default", + "request": { + "urlPath": "/setup/api/configcheck", + "method": "GET" + }, + "response": { + "status": 200, + "body": "{\n \"progress\" : [ {\n \"key\" : \"Appliance core components\",\n \"status\" : \"DONE\"\n }, {\n \"key\" : \"GitHub utilities\",\n \"status\" : \"DONE\"\n }, {\n \"key\" : \"GitHub applications\",\n \"status\" : \"DONE\"\n }, {\n \"key\" : \"GitHub services\",\n \"status\" : \"CONFIGURING\"\n }, {\n \"key\" : \"Reloading appliance services\",\n \"status\" : \"PENDING\"\n } ],\n \"status\" : \"running\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "dbd92ee5-d322-42a2-9554-4d2e6dd62a12", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.121722Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "enterprise-admin/get-configuration-status", + "schema": { + "properties": { + "progress": { + "items": { + "properties": { + "key": { + "type": "string" + }, + "status": { + "type": "string" + } + }, + "required": ["status", "key"], + "type": "object" + }, + "type": "array" + }, + "status": { + "type": "string" + } + }, + "type": "object" + } + } + } + }, + "insertionIndex": 312 + }, + { + "id": "d1070f80-3e4f-406e-a624-b9c60cb5de1d", + "name": "Search users (application/json)", + "request": { + "urlPath": "/search/users", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + }, + "queryParameters": { + "q": { + "equalTo": "lsdefg283y4umyv66veqxh17xp6p92z5b3pisfotu0vo9xemhv7l8i3efpiew39bcqgti6jjdknd21wjaydmu5w74xn288k8l9enyexw4h0jpbh1zy1nlruir8f3k0kvo80ls78pwa5ebm5oyti6bfwe0lynhbx2bshab8ly35acg77fi90uo69gcef17n6v" + } + } + }, + "response": { + "status": 503, + "body": "{\n \"code\" : \"0yny6wiwcpitjtu1ij68cvz7yofedlvnduoqvwrglxd3bhg01o88saalvfndk08177mvjydy3fnbpkbi3yjbuljvgajrpddzjelpzi6p44fq3ra6c8c\",\n \"documentation_url\" : \"https://web.example.mocklab.io/476277\",\n \"message\" : \"Nostrum architecto quo excepturi alias. Modi fugit odit assumenda corporis qui id. Natus tempora culpa dolore eos voluptas dolore aut. Aut nemo nihil aspernatur nostrum odio facilis. Fugit ut in qui m\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "d1070f80-3e4f-406e-a624-b9c60cb5de1d", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.121651Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "search/users", + "schema": { + "properties": { + "code": { + "type": "string" + }, + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "type": "object" + } + } + } + }, + "insertionIndex": 313 + }, + { + "id": "14d35d45-08b7-4923-a2d2-c5463a9b1bca", + "name": "Search users (application/json)", + "request": { + "urlPath": "/search/users", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + }, + "queryParameters": { + "q": { + "equalTo": "kuqh8d5w5py14uy7y1lc0lmf5bgms7of1mm0no4nrn3l0buofq8lb8mwmbadnorzzqurmovs17dkmm2sch6xw2flp688c54nc1zoaxr" + } + } + }, + "response": { + "status": 422, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/831582\",\n \"message\" : \"Beatae id sint temporibus itaque magni dolorem consequatur. Vitae dolores et. Enim totam eum exercitationem. Eius eaque eos porro nisi autem consequuntur nobis. Sunt impedit eligendi magnam doloremque\",\n \"errors\" : [ {\n \"code\" : \"zahjlslhcx4m4q9zeju1eee39wx0v5reu0m825qd4irsatcc5kimrcf6oom2o2pjyc75wp0arf6v6k9iz9zdqbzsj21rvh336zivggjn33xz1chyr\",\n \"field\" : \"hdvg2yp7p3ojdb5t\",\n \"resource\" : \"cw91lcg5iacwf3kw0cq9uyzb3wjm1cjaaznlho4bytyznbspn3tkgmzm9tz6vqzu4s496919ujdmlcx2dv5ql8la6oe26vb8ajly4iyk13tbhywzdqwnhtm26vv1knikd8aj0fffcrydzqwnomod8o\",\n \"index\" : 87141796004140611,\n \"message\" : \"Consequuntur atque ea odio ab sequi beatae quia. Est et maiores molestiae facilis facere. Doloribus earum aspernatur vel.\",\n \"value\" : { }\n }, {\n \"code\" : \"8j4tzyh5b5mucz4908m6pcj50xc24fg4makkl8r9yqzqek34zkurxq8krvv7ze4yvg9m188oae1lrd93ogvqiy1r9q14vep\",\n \"field\" : \"m4rwgya4oxg\",\n \"resource\" : \"so29h92fbc3unbv\",\n \"index\" : 570821646001148139,\n \"message\" : \"Qui omnis modi qui sunt id. Eum amet ex porro deserunt. Id molestiae et. Est ipsam nostrum et et voluptatibus molestiae. Illo voluptatum ut voluptatum exercitationem dolor illo.\",\n \"value\" : { }\n } ]\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "14d35d45-08b7-4923-a2d2-c5463a9b1bca", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.121466Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "search/users", + "schema": { + "description": "Validation Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "errors": { + "items": { + "properties": { + "code": { + "type": "string" + }, + "field": { + "type": "string" + }, + "index": { + "type": "integer" + }, + "message": { + "type": "string" + }, + "resource": { + "type": "string" + }, + "value": { + "oneOf": [ + { + "nullable": true, + "type": "string" + }, + { + "nullable": true, + "type": "integer" + }, + { + "items": { + "type": "string" + }, + "nullable": true, + "type": "array" + } + ] + } + }, + "required": ["code"], + "type": "object" + }, + "type": "array" + }, + "message": { + "type": "string" + } + }, + "required": ["message", "documentation_url"], + "title": "Validation Error", + "type": "object" + } + } + } + }, + "insertionIndex": 314 + }, + { + "id": "4b7d1f60-7af6-4959-89f5-7f9bbeb05058", + "name": "Search users - 304", + "request": { + "urlPath": "/search/users", + "method": "GET", + "queryParameters": { + "q": { + "equalTo": "85c66vh7st0s3pm2homwlniqvovvyfct2s3oigsav8teghmj29hkvrt6af4ue1td880mo39ofcvu7llbkcfmgyw3s1" + } + } + }, + "response": { + "status": 304 + }, + "uuid": "4b7d1f60-7af6-4959-89f5-7f9bbeb05058", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.12109Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "search/users" + } + } + }, + "insertionIndex": 315 + }, + { + "id": "0abce738-c490-4206-bf19-9eac002bfb4a", + "name": "Search users (application/json) - default", + "request": { + "urlPath": "/search/users", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + }, + "queryParameters": { + "q": { + "equalTo": "j4y9s9p2mnv2yrjqlkba4mh" + } + } + }, + "response": { + "status": 200, + "body": "{\n \"incomplete_results\" : false,\n \"items\" : [ {\n \"avatar_url\" : \"https://secure.gravatar.com/avatar/25c7c18223fb42a4c6ae1c8db6f50f9b?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png\",\n \"events_url\" : \"https://api.github.com/users/mojombo/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/mojombo/followers\",\n \"following_url\" : \"https://api.github.com/users/mojombo/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/mojombo/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/mojombo\",\n \"id\" : 1,\n \"login\" : \"mojombo\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/mojombo/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/mojombo/received_events\",\n \"repos_url\" : \"https://api.github.com/users/mojombo/repos\",\n \"score\" : 1,\n \"site_admin\" : true,\n \"starred_url\" : \"https://api.github.com/users/mojombo/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/mojombo/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/mojombo\"\n } ],\n \"total_count\" : 12\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "0abce738-c490-4206-bf19-9eac002bfb4a", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.121043Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "search/users", + "schema": { + "properties": { + "incomplete_results": { + "type": "boolean" + }, + "items": { + "items": { + "$ref": "#/components/schemas/user-search-result-item" + }, + "type": "array" + }, + "total_count": { + "type": "integer" + } + }, + "required": ["total_count", "incomplete_results", "items"], + "type": "object" + } + } + } + }, + "insertionIndex": 316 + }, + { + "id": "49d96dae-67dc-4ae6-94b8-9dc57056c5a1", + "name": "Search topics (application/json)", + "request": { + "urlPath": "/search/topics", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + }, + "queryParameters": { + "q": { + "equalTo": "ed6dia9er239qablp69qw43u08uk58grks2vwbs7fq4eth0og7jaz9q2swtruyhoosrz4q7cwri8bbe9a2fwx7fq4z4v" + } + } + }, + "response": { + "status": 415, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/715335\",\n \"message\" : \"Atque placeat corporis quis et et. Corporis et sit dolorem aut enim in quo. Unde optio porro tenetur et eligendi quod voluptatibus. Dignissimos est quaerat esse.\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "49d96dae-67dc-4ae6-94b8-9dc57056c5a1", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.12096Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "search/topics", + "schema": { + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": ["message", "documentation_url"], + "type": "object" + } + } + } + }, + "insertionIndex": 317 + }, + { + "id": "655c5575-a525-4cb8-a86e-f18004603d6d", + "name": "Search topics - 304", + "request": { + "urlPath": "/search/topics", + "method": "GET", + "queryParameters": { + "q": { + "equalTo": "ek4vvl" + } + } + }, + "response": { + "status": 304 + }, + "uuid": "655c5575-a525-4cb8-a86e-f18004603d6d", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.120809Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "search/topics" + } + } + }, + "insertionIndex": 318 + }, + { + "id": "fbfa884c-20f2-44e1-a6a5-b4f85366ed6a", + "name": "Search topics (application/json) - default", + "request": { + "urlPath": "/search/topics", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + }, + "queryParameters": { + "q": { + "equalTo": "r90lajrubq6g6vit10108m80tnthh1xozg8vzv8dn2hg15es59tbmyxspnh23huvrb1trbrk4wmxuv54avdhreu6b2pdzr74n2gjwlfh" + } + } + }, + "response": { + "status": 200, + "body": "{\n \"incomplete_results\" : false,\n \"items\" : [ {\n \"created_at\" : \"2016-11-28T22:03:59Z\",\n \"created_by\" : \"Yukihiro Matsumoto\",\n \"curated\" : true,\n \"description\" : \"Ruby was developed by Yukihiro \\\"Matz\\\" Matsumoto in 1995 with the intent of having an easily readable programming language. It is integrated with the Rails framework to create dynamic web-applications. Ruby's syntax is similar to that of Perl and Python.\",\n \"display_name\" : \"Ruby\",\n \"featured\" : true,\n \"name\" : \"ruby\",\n \"released\" : \"December 21, 1995\",\n \"score\" : 1,\n \"short_description\" : \"Ruby is a scripting language designed for simplified object-oriented programming.\",\n \"updated_at\" : \"2017-10-30T18:16:32Z\"\n }, {\n \"created_at\" : \"2016-12-09T17:03:50Z\",\n \"created_by\" : \"David Heinemeier Hansson\",\n \"curated\" : true,\n \"description\" : \"Ruby on Rails (Rails) is a web application framework written in Ruby. It is meant to help simplify the building of complex websites.\",\n \"display_name\" : \"Rails\",\n \"featured\" : true,\n \"name\" : \"rails\",\n \"released\" : \"December 13 2005\",\n \"score\" : 1,\n \"short_description\" : \"Ruby on Rails (Rails) is a web application framework written in Ruby.\",\n \"updated_at\" : \"2017-10-30T16:20:19Z\"\n }, {\n \"created_at\" : \"2016-12-07T00:07:02Z\",\n \"created_by\" : \"Guido van Rossum\",\n \"curated\" : true,\n \"description\" : \"Python is a dynamically typed programming language designed by Guido Van Rossum. Much like the programming language Ruby, Python was designed to be easily read by programmers. Because of its large following and many libraries, Python can be implemented and used to do anything from webpages to scientific research.\",\n \"display_name\" : \"Python\",\n \"featured\" : true,\n \"name\" : \"python\",\n \"released\" : \"February 20, 1991\",\n \"score\" : 1,\n \"short_description\" : \"Python is a dynamically typed programming language.\",\n \"updated_at\" : \"2017-10-27T22:45:43Z\"\n }, {\n \"created_at\" : \"2016-12-16T21:53:08Z\",\n \"created_by\" : \"Tom Preston-Werner\",\n \"curated\" : true,\n \"description\" : \"Jekyll is a blog-aware, site generator written in Ruby. It takes raw text files, runs it through a renderer and produces a publishable static website.\",\n \"display_name\" : \"Jekyll\",\n \"featured\" : true,\n \"name\" : \"jekyll\",\n \"released\" : \"2008\",\n \"score\" : 1,\n \"short_description\" : \"Jekyll is a simple, blog-aware static site generator.\",\n \"updated_at\" : \"2017-10-27T19:00:24Z\"\n }, {\n \"created_at\" : \"2016-12-16T21:53:45Z\",\n \"created_by\" : \"Hampton Catlin, Natalie Weizenbaum, Chris Eppstein\",\n \"curated\" : true,\n \"description\" : \"Sass is a stylesheet language with a main implementation in Ruby. It is an extension of CSS that makes improvements to the old stylesheet format, such as being able to declare variables and using a cleaner nesting syntax.\",\n \"display_name\" : \"Sass\",\n \"featured\" : true,\n \"name\" : \"sass\",\n \"released\" : \"November 28, 2006\",\n \"score\" : 1,\n \"short_description\" : \"Sass is a stable extension to classic CSS.\",\n \"updated_at\" : \"2018-01-16T16:30:40Z\"\n }, {\n \"created_at\" : \"2016-12-17T20:30:44Z\",\n \"created_by\" : \"Max Howell\",\n \"curated\" : true,\n \"description\" : \"Homebrew is a package manager for Apple's macOS operating system. It simplifies the installation of software and is popular in the Ruby on Rails community.\",\n \"display_name\" : \"Homebrew\",\n \"featured\" : true,\n \"name\" : \"homebrew\",\n \"released\" : \"2009\",\n \"score\" : 1,\n \"short_description\" : \"Homebrew is a package manager for macOS.\",\n \"updated_at\" : \"2018-02-06T16:14:56Z\"\n } ],\n \"total_count\" : 6\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "fbfa884c-20f2-44e1-a6a5-b4f85366ed6a", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.120762Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "search/topics", + "schema": { + "properties": { + "incomplete_results": { + "type": "boolean" + }, + "items": { + "items": { + "$ref": "#/components/schemas/topic-search-result-item" + }, + "type": "array" + }, + "total_count": { + "type": "integer" + } + }, + "required": ["total_count", "incomplete_results", "items"], + "type": "object" + } + } + } + }, + "insertionIndex": 319 + }, + { + "id": "b97f7f0f-6814-467b-b32d-d8534e2b7cbc", + "name": "Search repositories (application/json)", + "request": { + "urlPath": "/search/repositories", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + }, + "queryParameters": { + "q": { + "equalTo": "95x7j1ypvuohh61lg0t5gc5dwmtfanfh0dee1d278mtyxbq7" + } + } + }, + "response": { + "status": 503, + "body": "{\n \"code\" : \"41x57h23crr66xhywcnrw29jgb8\",\n \"documentation_url\" : \"https://web.example.mocklab.io/575922\",\n \"message\" : \"Et nostrum eaque. Velit sapiente a corrupti sint laudantium et sed. Harum aliquid incidunt. Ratione eius in occaecati et voluptatem.\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "b97f7f0f-6814-467b-b32d-d8534e2b7cbc", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.120673Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "search/repos", + "schema": { + "properties": { + "code": { + "type": "string" + }, + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "type": "object" + } + } + } + }, + "insertionIndex": 320 + }, + { + "id": "9e93ab83-813a-40bc-86b8-9159adc8096d", + "name": "Search repositories (application/json)", + "request": { + "urlPath": "/search/repositories", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + }, + "queryParameters": { + "q": { + "equalTo": "z7l1z4dzmrfb9ykjkiaee1shy55ah12xoh5yre0sgdbnsguih77kloo0liggcogq8e6ehf2xu2ls4q4uh8t32kh424agzu8uu9ganjb6nq9xn8uvimns2goz03trudqh73y521c4rxvngut93gf3yx7gbcjthia72at87u0xr4y1uzzcdu6z8ro" + } + } + }, + "response": { + "status": 422, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/458591\",\n \"message\" : \"Qui nihil numquam velit mollitia praesentium omnis. Facere consequatur natus est voluptatibus. Molestias sint sapiente minima.\",\n \"errors\" : [ {\n \"code\" : \"v87ckv3wrsgeffcll8urid2a6mtbl4ymfe1ka8bmgx40cw9burm0353lkfzlmuunyv48zbfv9mmjew88ck0ymhb40lglmodtwrb608fmxzkpoithbh8elwdjxe5frok8\",\n \"field\" : \"g3z525dbfl32umaifyfqeo3teg9qim03g9uoa8t6rb5nu57v1rohhx1ma9gg0st8htjoupmfspdea7g0z4eg23lnnz7t0n0503ap18mlgdw7zt703t\",\n \"resource\" : \"bgftjrb2vwlxi7hlhqkne8vx25t12lt7hjd1h2n65z6y5mx7iok7gece4f2nqg4gtk8iboqjt1p2w\",\n \"index\" : 991271367259506240,\n \"message\" : \"In asperiores eius ut rerum mollitia numquam. Consequatur esse quasi id facere. Enim laboriosam quia voluptates illum deleniti vero et.\",\n \"value\" : { }\n }, {\n \"code\" : \"lm0g4kh\",\n \"field\" : \"11ku8gurlsojkyp399w4cot98poybvfcn46er54ou0d3ohfr4p7xx7gvecvieb6ik2vqkwqk28bssathg10\",\n \"resource\" : \"72xumy4s6bm4tnc32ifor66xoiild97j\",\n \"index\" : 6053349240337129158,\n \"message\" : \"Sint voluptates corporis itaque. Harum molestiae modi tenetur enim excepturi numquam. Consequatur omnis molestiae. Enim impedit et facere facilis ullam quo neque.\",\n \"value\" : { }\n } ]\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "9e93ab83-813a-40bc-86b8-9159adc8096d", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.1205Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "search/repos", + "schema": { + "description": "Validation Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "errors": { + "items": { + "properties": { + "code": { + "type": "string" + }, + "field": { + "type": "string" + }, + "index": { + "type": "integer" + }, + "message": { + "type": "string" + }, + "resource": { + "type": "string" + }, + "value": { + "oneOf": [ + { + "nullable": true, + "type": "string" + }, + { + "nullable": true, + "type": "integer" + }, + { + "items": { + "type": "string" + }, + "nullable": true, + "type": "array" + } + ] + } + }, + "required": ["code"], + "type": "object" + }, + "type": "array" + }, + "message": { + "type": "string" + } + }, + "required": ["message", "documentation_url"], + "title": "Validation Error", + "type": "object" + } + } + } + }, + "insertionIndex": 321 + }, + { + "id": "7880bd69-d758-4357-964b-536ee591dc20", + "name": "Search repositories - 304", + "request": { + "urlPath": "/search/repositories", + "method": "GET", + "queryParameters": { + "q": { + "equalTo": "325qvihprpinzwv2okr671syz1bkc0890ar4zn0n2sj78vp46ldk1rqnnm6puwnz9lp09gyv3bquxqjnqm4z0zhf5kgr6n4b1qk1p76x8mpc50c4nsa1j7jgy8ex3nuz4aqln20d6klcsnk56z1f" + } + } + }, + "response": { + "status": 304 + }, + "uuid": "7880bd69-d758-4357-964b-536ee591dc20", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.120123Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "search/repos" + } + } + }, + "insertionIndex": 322 + }, + { + "id": "2d3e74b9-87d4-4a81-a403-993b51795865", + "name": "Search repositories (application/json) - default", + "request": { + "urlPath": "/search/repositories", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + }, + "queryParameters": { + "q": { + "equalTo": "8dyel8hckwd7y9n4k9h32af7mqs7qynihr1s2xw629vhszpuf6gd9ctggpanpndao01jrp3icnqbqs4wcj1o8af07yjgqx6jb30sue04qt6agj1keuwthfadp93penb0x2sptgo8knj86pzwwe1vzodx0refgys6d8z" + } + } + }, + "response": { + "status": 200, + "body": "{\n \"incomplete_results\" : false,\n \"items\" : [ {\n \"archive_url\" : \"https://api.github.com/repos/dtrupenn/Tetris/{archive_format}{/ref}\",\n \"archived\" : true,\n \"assignees_url\" : \"https://api.github.com/repos/dtrupenn/Tetris/assignees{/user}\",\n \"blobs_url\" : \"https://api.github.com/repos/dtrupenn/Tetris/git/blobs{/sha}\",\n \"branches_url\" : \"https://api.github.com/repos/dtrupenn/Tetris/branches{/branch}\",\n \"clone_url\" : \"https://github.com/dtrupenn/Tetris.git\",\n \"collaborators_url\" : \"https://api.github.com/repos/dtrupenn/Tetris/collaborators{/collaborator}\",\n \"comments_url\" : \"https://api.github.com/repos/dtrupenn/Tetris/comments{/number}\",\n \"commits_url\" : \"https://api.github.com/repos/dtrupenn/Tetris/commits{/sha}\",\n \"compare_url\" : \"https://api.github.com/repos/dtrupenn/Tetris/compare/{base}...{head}\",\n \"contents_url\" : \"https://api.github.com/repos/dtrupenn/Tetris/contents/{+path}\",\n \"contributors_url\" : \"https://api.github.com/repos/dtrupenn/Tetris/contributors\",\n \"created_at\" : \"2012-01-01T00:31:50Z\",\n \"default_branch\" : \"master\",\n \"deployments_url\" : \"https://api.github.com/repos/dtrupenn/Tetris/deployments\",\n \"description\" : \"A C implementation of Tetris using Pennsim through LC4\",\n \"disabled\" : true,\n \"downloads_url\" : \"https://api.github.com/repos/dtrupenn/Tetris/downloads\",\n \"events_url\" : \"https://api.github.com/repos/dtrupenn/Tetris/events\",\n \"fork\" : false,\n \"forks\" : 1,\n \"forks_count\" : 0,\n \"forks_url\" : \"https://api.github.com/repos/dtrupenn/Tetris/forks\",\n \"full_name\" : \"dtrupenn/Tetris\",\n \"git_commits_url\" : \"https://api.github.com/repos/dtrupenn/Tetris/git/commits{/sha}\",\n \"git_refs_url\" : \"https://api.github.com/repos/dtrupenn/Tetris/git/refs{/sha}\",\n \"git_tags_url\" : \"https://api.github.com/repos/dtrupenn/Tetris/git/tags{/sha}\",\n \"git_url\" : \"git:github.com/dtrupenn/Tetris.git\",\n \"has_downloads\" : true,\n \"has_issues\" : true,\n \"has_pages\" : true,\n \"has_projects\" : true,\n \"has_wiki\" : true,\n \"homepage\" : \"https://github.com\",\n \"hooks_url\" : \"https://api.github.com/repos/dtrupenn/Tetris/hooks\",\n \"html_url\" : \"https://github.com/dtrupenn/Tetris\",\n \"id\" : 3081286,\n \"issue_comment_url\" : \"https://api.github.com/repos/dtrupenn/Tetris/issues/comments{/number}\",\n \"issue_events_url\" : \"https://api.github.com/repos/dtrupenn/Tetris/issues/events{/number}\",\n \"issues_url\" : \"https://api.github.com/repos/dtrupenn/Tetris/issues{/number}\",\n \"keys_url\" : \"https://api.github.com/repos/dtrupenn/Tetris/keys{/key_id}\",\n \"labels_url\" : \"https://api.github.com/repos/dtrupenn/Tetris/labels{/name}\",\n \"language\" : \"Assembly\",\n \"languages_url\" : \"https://api.github.com/repos/dtrupenn/Tetris/languages\",\n \"license\" : {\n \"html_url\" : \"https://api.github.com/licenses/mit\",\n \"key\" : \"mit\",\n \"name\" : \"MIT License\",\n \"node_id\" : \"MDc6TGljZW5zZW1pdA==\",\n \"spdx_id\" : \"MIT\",\n \"url\" : \"https://api.github.com/licenses/mit\"\n },\n \"master_branch\" : \"master\",\n \"merges_url\" : \"https://api.github.com/repos/dtrupenn/Tetris/merges\",\n \"milestones_url\" : \"https://api.github.com/repos/dtrupenn/Tetris/milestones{/number}\",\n \"mirror_url\" : \"git:git.example.com/dtrupenn/Tetris\",\n \"name\" : \"Tetris\",\n \"node_id\" : \"MDEwOlJlcG9zaXRvcnkzMDgxMjg2\",\n \"notifications_url\" : \"https://api.github.com/repos/dtrupenn/Tetris/notifications{?since,all,participating}\",\n \"open_issues\" : 1,\n \"open_issues_count\" : 0,\n \"owner\" : {\n \"avatar_url\" : \"https://secure.gravatar.com/avatar/e7956084e75f239de85d3a31bc172ace?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 872147,\n \"login\" : \"dtrupenn\",\n \"node_id\" : \"MDQ6VXNlcjg3MjE0Nw==\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/dtrupenn/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : true,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/dtrupenn\"\n },\n \"private\" : false,\n \"pulls_url\" : \"https://api.github.com/repos/dtrupenn/Tetris/pulls{/number}\",\n \"pushed_at\" : \"2012-01-01T00:37:02Z\",\n \"releases_url\" : \"https://api.github.com/repos/dtrupenn/Tetris/releases{/id}\",\n \"score\" : 1,\n \"size\" : 524,\n \"ssh_url\" : \"git@github.com:dtrupenn/Tetris.git\",\n \"stargazers_count\" : 1,\n \"stargazers_url\" : \"https://api.github.com/repos/dtrupenn/Tetris/stargazers\",\n \"statuses_url\" : \"https://api.github.com/repos/dtrupenn/Tetris/statuses/{sha}\",\n \"subscribers_url\" : \"https://api.github.com/repos/dtrupenn/Tetris/subscribers\",\n \"subscription_url\" : \"https://api.github.com/repos/dtrupenn/Tetris/subscription\",\n \"svn_url\" : \"https://svn.github.com/dtrupenn/Tetris\",\n \"tags_url\" : \"https://api.github.com/repos/dtrupenn/Tetris/tags\",\n \"teams_url\" : \"https://api.github.com/repos/dtrupenn/Tetris/teams\",\n \"trees_url\" : \"https://api.github.com/repos/dtrupenn/Tetris/git/trees{/sha}\",\n \"updated_at\" : \"2013-01-05T17:58:47Z\",\n \"url\" : \"https://api.github.com/repos/dtrupenn/Tetris\",\n \"watchers\" : 1,\n \"watchers_count\" : 1\n } ],\n \"total_count\" : 40\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "2d3e74b9-87d4-4a81-a403-993b51795865", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.120076Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "search/repos", + "schema": { + "properties": { + "incomplete_results": { + "type": "boolean" + }, + "items": { + "items": { + "$ref": "#/components/schemas/repo-search-result-item" + }, + "type": "array" + }, + "total_count": { + "type": "integer" + } + }, + "required": ["total_count", "incomplete_results", "items"], + "type": "object" + } + } + } + }, + "insertionIndex": 323 + }, + { + "id": "22958450-d3b8-4cea-a21b-25d9d7c6963a", + "name": "Search labels (application/json)", + "request": { + "urlPath": "/search/labels", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + }, + "queryParameters": { + "q": { + "equalTo": "sqec9xp9yduendrewvjh5drhkcf4gzj2rpiss6ttekp9gqb" + }, + "repository_id": { + "equalTo": "4365487383965195757" + } + } + }, + "response": { + "status": 422, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/756592\",\n \"message\" : \"Quam qui fuga est iusto. Excepturi est sint velit repellat eum dolor velit. Sit labore voluptate harum quae ut iste.\",\n \"errors\" : [ {\n \"code\" : \"bo6vt57sgx9kzraahpmbei8cjl81xll2o6071464diiqv9jads5v29sajavms2zisnvx11wt2sxw6jkf14tc791vda3d51b2q48ug0822j39xg0u67gldtt6d5opkdklzs646qm5qzs5hgkmkjvek2a8m\",\n \"field\" : \"tllyl2fphmuuxsmtmf7sgkzjw8x23a1v5kk0w8u46goie79xfexo2fhm50myac33fcrmx13x8u23p5ghzbwasq7ufm5q6bof6zvg98k4htf5nyr8m9c95p3ml7dnf0eqv2jqt8429po08ji3hxgyicza727kphvhtkls\",\n \"resource\" : \"bok8smvn5zubwmjqvu2iawakg3opl1bq67lc18syr6jj8zk7bgeydwrokccgfimwj0olqnoshibluxdxvq6st3mlluwutnybw0iyvz2tbw25oimz99ilrtpvpaj8coopfb28for1hu0mf4uicgz5iy9qiveaztch6b1726r9jsphu8uwrfc8n6afqy3fsdlvwq\",\n \"index\" : 4735194335864468931,\n \"message\" : \"Eum dignissimos nulla. Quia est id quo enim mollitia. Recusandae officia rem reiciendis.\",\n \"value\" : { }\n }, {\n \"code\" : \"dyzcnc8nc0f7gqt7hlii0plu9l2qfzenc3\",\n \"field\" : \"1hmzg423bj802h8drpvzj9ri1jyepljuzdfz20be0vu2uotoubadk\",\n \"resource\" : \"h5m3a0eztdyos504wxt94fe3ojpr7siarf17khy2ks14yv0k96msky1aou4ses0e70hf22liy8\",\n \"index\" : 6100208467464905526,\n \"message\" : \"Eaque excepturi unde velit iusto optio placeat. Enim sed ut blanditiis dolore in temporibus. Animi magnam blanditiis sit.\",\n \"value\" : { }\n }, {\n \"code\" : \"vn1vyl83br0y19s0am1p7gzh3d32f9gfkclh21v13cx6o9x52eh80nvmwqmchdf0lpsmpc7re7zr5zxkwkmlkpk5bv343h5xhxj6sdhhmmx4mesrvgky09x2hqz6vsdksa266tamamv9de5\",\n \"field\" : \"ib90vl5izh1rp77t8yf8luvcoq9rkf3h3o8ml2tecwz709krdi5fugyhmma3i8v3dkess6op3v4c6mswlkrh6ae3s5k29mdpp4y5yziqgrweeaxhhzmkx0f5ensok9gqy4lr1bf6o4wgupx10ou5dip787t58hu70ba5qd3wupvs4wld2aa\",\n \"resource\" : \"auet32fcnjp89nv72ya0nhyls6zwdphu1rv9iwewcbxlhhr2uu5ljyav2sxwealino543ine4hj6kp5deybvnx16trkjd5ikrj8rnbya3pfk7uiyvl8snytghqzhd8s3h7l9p92whk6ma7hfvkdawt0v2tq6nyanhlqbmudg6l7ikq\",\n \"index\" : 4764921530312632186,\n \"message\" : \"Cum aperiam ea officia. Quidem officiis voluptate id. Modi sit sed aut recusandae cupiditate dolore. Quam soluta nihil. Corporis commodi voluptas maiores molestias cupiditate.\",\n \"value\" : { }\n }, {\n \"code\" : \"oz81xcx3g7bh2aibtr4vcr8f84q4dzsnm6o425pgc\",\n \"field\" : \"6vk5krp1lb85plezhyhwd0\",\n \"resource\" : \"ycj4iq1jmqtghhk0r3ehis7d538dsydnj74xamhsmg9gk821vsdkcv\",\n \"index\" : 2007120155466767595,\n \"message\" : \"Eligendi beatae tenetur rerum adipisci sit est fugiat. Numquam iure necessitatibus. Ipsa in omnis ab minus eos distinctio.\",\n \"value\" : { }\n }, {\n \"code\" : \"vjyq42iiw2j7qr9yrmh8r0fiej3m2vtgaane1qdyn8cft7gjle1j83tkr9vftt0kz9m5f23238cl6cfwpy5aw543gw8z5uwn0uspih0iyu0t\",\n \"field\" : \"wvvmnjphfw7rw9taxrpzmge6ns8xxt1gfj731ifjl5biurgeizvu54kuozqgkba448rom0sx6r4rg58z8mqvs1xmemqbmbeu7yn6xhxlqzh1afwoxn\",\n \"resource\" : \"jd6haf80udlhwjnmm3lt3kgwkdrxl09kugkrer7m2x9hz2p7qe3g1jt4zn7bqh1h53ukcey0ceuv0xdyiffo07weqlnj0v1f9flcc0nwg5xm7ser8axld8f8sept6c8gbn0u15\",\n \"index\" : 2580221697150719411,\n \"message\" : \"Ut perferendis consectetur dolor voluptate. Ut tempora corrupti eligendi earum. Ut eos aut sit.\",\n \"value\" : { }\n }, {\n \"code\" : \"sami6vc7l2f4lodlr2xl0ifod2k2itrjuh1rcnyfgmy65q3jwdwoa8fk6c33px62jz3yfsst\",\n \"field\" : \"syytemc39cvrcamwar1e1axvs9ls9v3q80k5shkl3jajf8psgpz95r6c7193s0lml6jnnen\",\n \"resource\" : \"0sxo2gykoxhmnvjhhr2eaur1nix8rq3xla45brscw1wk5c716e7ud8nz0avw7gmn2ix91cspvdaicf64hpk731fsdvxp46uo4lr836q4y5ywex8tbtp9zxw9c205fw7aabayreycnhcu5ptl\",\n \"index\" : 8477778464397855705,\n \"message\" : \"Cumque eveniet fugiat quo sit molestias non. Rem cupiditate et voluptatem iste officiis non qui. Deleniti voluptatem voluptate. Dolorum impedit praesentium et maiores ut accusantium accusantium.\",\n \"value\" : { }\n } ]\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "22958450-d3b8-4cea-a21b-25d9d7c6963a", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.119974Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "search/labels", + "schema": { + "description": "Validation Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "errors": { + "items": { + "properties": { + "code": { + "type": "string" + }, + "field": { + "type": "string" + }, + "index": { + "type": "integer" + }, + "message": { + "type": "string" + }, + "resource": { + "type": "string" + }, + "value": { + "oneOf": [ + { + "nullable": true, + "type": "string" + }, + { + "nullable": true, + "type": "integer" + }, + { + "items": { + "type": "string" + }, + "nullable": true, + "type": "array" + } + ] + } + }, + "required": ["code"], + "type": "object" + }, + "type": "array" + }, + "message": { + "type": "string" + } + }, + "required": ["message", "documentation_url"], + "title": "Validation Error", + "type": "object" + } + } + } + }, + "insertionIndex": 324 + }, + { + "id": "9edc81e6-dcec-4df2-a525-f2267c30648c", + "name": "Search labels (application/json)", + "request": { + "urlPath": "/search/labels", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + }, + "queryParameters": { + "q": { + "equalTo": "m8rx7lf2x4slnjfsbfx31mhms8pqmwb7fndeuf9hkinq21lh50ah5seurwqo1n7hcq25ouz71wv9lxh5" + }, + "repository_id": { + "equalTo": "7316099249081854069" + } + } + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/993311\",\n \"message\" : \"Quo eaque nulla nulla quo eius omnis officia. Aut eligendi similique provident non itaque voluptatem eaque. Possimus est sunt numquam odit error fugiat. Maiores consequatur molestiae consequuntur haru\",\n \"url\" : \"https://web.example.mocklab.io/690642\",\n \"status\" : \"kp3t6pa67x1eryaku22wzor5lg82qkym3n3wbp7r2kac0\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "9edc81e6-dcec-4df2-a525-f2267c30648c", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.119273Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "search/labels", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 325 + }, + { + "id": "7fc1a489-50ea-4fb5-a3b5-3712a41bcf8a", + "name": "Search labels (application/json)", + "request": { + "urlPath": "/search/labels", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + }, + "queryParameters": { + "q": { + "equalTo": "nsqclii8r29oi3e001voieyckaii3uulve0tk7sands2f848bu77o9w1i3" + }, + "repository_id": { + "equalTo": "8277157397435735809" + } + } + }, + "response": { + "status": 403, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/410716\",\n \"message\" : \"Est animi veritatis unde. Ipsa velit autem voluptas molestias sed soluta. Aut itaque voluptas. Ut architecto doloremque aspernatur libero voluptatem. Similique vel doloribus.\",\n \"url\" : \"https://web.example.mocklab.io/841701\",\n \"status\" : \"lttrm6la9qah7tlyolm9q5hv0qqfhixq5bh6fye9tyis55dgxh1oxfhhhquvy706nm026wv7ds78q5tauk6et33l4elwd3fwo6rqgb79gr8ircupnyo62sg2gpq9uogszb1ck8o6a3u6g1dkhebabv2om4tpgs935gbv0o9jo6k8x1o83xc12umkt3fy8qgxk2oa2w\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "7fc1a489-50ea-4fb5-a3b5-3712a41bcf8a", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.119025Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "search/labels", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 326 + }, + { + "id": "bb299c7b-0fdc-4baa-990c-5d4952e3a0f0", + "name": "Search labels - 304", + "request": { + "urlPath": "/search/labels", + "method": "GET", + "queryParameters": { + "q": { + "equalTo": "64jigui0" + }, + "repository_id": { + "equalTo": "7091427971280686903" + } + } + }, + "response": { + "status": 304 + }, + "uuid": "bb299c7b-0fdc-4baa-990c-5d4952e3a0f0", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.118793Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "search/labels" + } + } + }, + "insertionIndex": 327 + }, + { + "id": "dd562ac1-ca64-4551-ac0d-ebb237f74ff4", + "name": "Search labels (application/json) - default", + "request": { + "urlPath": "/search/labels", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + }, + "queryParameters": { + "q": { + "equalTo": "g5j7vuk" + }, + "repository_id": { + "equalTo": "6438268479085381907" + } + } + }, + "response": { + "status": 200, + "body": "{\n \"incomplete_results\" : false,\n \"items\" : [ {\n \"color\" : \"84b6eb\",\n \"default\" : true,\n \"description\" : \"New feature or request.\",\n \"id\" : 418327088,\n \"name\" : \"enhancement\",\n \"node_id\" : \"MDU6TGFiZWw0MTgzMjcwODg=\",\n \"score\" : 1,\n \"url\" : \"https://api.github.com/repos/octocat/linguist/labels/enhancement\"\n }, {\n \"color\" : \"ee0701\",\n \"default\" : true,\n \"description\" : \"Something isn't working.\",\n \"id\" : 418327086,\n \"name\" : \"bug\",\n \"node_id\" : \"MDU6TGFiZWw0MTgzMjcwODY=\",\n \"score\" : 1,\n \"url\" : \"https://api.github.com/repos/octocat/linguist/labels/bug\"\n } ],\n \"total_count\" : 2\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "dd562ac1-ca64-4551-ac0d-ebb237f74ff4", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.118738Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "search/labels", + "schema": { + "properties": { + "incomplete_results": { + "type": "boolean" + }, + "items": { + "items": { + "$ref": "#/components/schemas/label-search-result-item" + }, + "type": "array" + }, + "total_count": { + "type": "integer" + } + }, + "required": ["total_count", "incomplete_results", "items"], + "type": "object" + } + } + } + }, + "insertionIndex": 328 + }, + { + "id": "4cf90bd1-ba2d-40a7-b0fd-6993a04fad1f", + "name": "Search issues and pull requests (application/json)", + "request": { + "urlPath": "/search/issues", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + }, + "queryParameters": { + "q": { + "equalTo": "4okuhicikr4eq4eyvil6s0fvxsc3t3h0c3b6uev6p" + } + } + }, + "response": { + "status": 503, + "body": "{\n \"code\" : \"7cei1si3v0b0r6eslci\",\n \"documentation_url\" : \"https://web.example.mocklab.io/053960\",\n \"message\" : \"Voluptatum quia sit. Doloribus quia rerum pariatur sit. Necessitatibus adipisci excepturi nobis consequatur.\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "4cf90bd1-ba2d-40a7-b0fd-6993a04fad1f", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.118645Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "search/issues-and-pull-requests", + "schema": { + "properties": { + "code": { + "type": "string" + }, + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "type": "object" + } + } + } + }, + "insertionIndex": 329 + }, + { + "id": "c17a14a9-117a-4f24-a0b0-5a3f472897ca", + "name": "Search issues and pull requests (application/json)", + "request": { + "urlPath": "/search/issues", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + }, + "queryParameters": { + "q": { + "equalTo": "f2eqzgdklkyqz6qg" + } + } + }, + "response": { + "status": 422, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/217536\",\n \"message\" : \"Eum nam cupiditate recusandae accusamus veniam provident. Dolor qui fuga dolores expedita saepe ea architecto. Accusamus natus veritatis inventore debitis.\",\n \"errors\" : [ {\n \"code\" : \"k717s4731wps4bt3asojcjbafflrqape84mseo9zhrea4uinpbxuywxukg5mg802yah1j0zf7z5o18t0f\",\n \"field\" : \"64cd4xd0v7i9zmcntl43crl65k16iqkb3g1wxw56xehexss26lcc62jv4fa8j19qj0kkg4r6yyljykgdn3tnnou51hidg3f7ndoet5mnzaeb9myhe27ik1s94i4feta46p6gnvcgxo6le13qu8n35kqnhuwwtqj7kx15z0v0n7bq31r8eo9a1xfj91fbsn04l62\",\n \"resource\" : \"37mv5lrxrxya6uzij70m8comrhcoev2mi3jtn9s0ixqckizmb7hry4ys4fmeaf6hkm1529km8qvpff7c7ipnn99u337jd2n\",\n \"index\" : 7035476751709544397,\n \"message\" : \"Tempore et nemo et fugiat corporis alias. Molestias nihil qui aut et odio. Facere natus doloremque qui ipsum.\",\n \"value\" : { }\n }, {\n \"code\" : \"d8e4qdht26g38vrh7imrtpppfm6n5717gtizhhuy8nki6jr00mivax3o3ihcfoc08ufx63q8jz2lhmbcqb196ia9t372y76grctn3s151nyp7erxbsqkto\",\n \"field\" : \"j1ky6khattyqg6tgekevv639k1dbsdipzneoz5jqw884vd3lokyubpjd0wxdykrer199o8unzvj6uyulesfu9k6ya98ducvjl9fag8pni3fstmk99arwcn366oyn5l6xm51yzud4ovc8owe79lxf85zxke6\",\n \"resource\" : \"bhnziawkmo63fn4zlqvzqr7sxchfm2tpqhdda499mfywvby1axer5bwp9sc9avc868s8kvj7tqtge9v06hlfsys8oib7uosfv6fhtb6sv0dh5ef7y5rlvp75pya1b6wfue4av1nl7e0li5xrdvrm6f6\",\n \"index\" : 4368575102836634992,\n \"message\" : \"Harum dolorem fugit ab et atque dolorum. Quo aut incidunt aut quo velit aliquid. Officiis odio aut ipsam distinctio distinctio quia quos. Unde consequatur autem provident atque.\",\n \"value\" : { }\n }, {\n \"code\" : \"wsu1uj2ntodb7171ma8qkcvg5sqj49g992qssvpqvc9qq1emg9nwn9v7xzdal8h49wita2fpnw5nbty005f21u1nodbvndl7uwcs4ztczph0hnrvmz5nxjpmnq20bqg4\",\n \"field\" : \"ic63o1usbtgf2a9znnv8li49ecjb86u9cjmhjsz0tbwekb7jvy6f0iflwb14tyg7ymqdvfldksepl637gswejuvhs2r176xi7f30tw9hu6x6c0ijdcuwplh2d0espqluiomcwym40abrqk3tkbyr2jprxbcz\",\n \"resource\" : \"s93vb6cbqrqryp9gp5sondqz6t3qz8styqy54ycds1c23ewrh10n1r41p39dw71d9mth16i10g3ox0zkhvek2yr71sydx57p6zs9vv6issvr1nlswuv8i8ygdwet9izi13vid4lsz4pgnffz4kmgw5u9nym99z8omamp8xbs0mf42xlczfbikbbmx\",\n \"index\" : 1001590924568174120,\n \"message\" : \"Aut blanditiis officia labore nihil. Culpa qui qui ut consequatur est saepe deserunt. Qui quia inventore maxime dolor iusto adipisci in.\",\n \"value\" : { }\n }, {\n \"code\" : \"kpswrqf8i\",\n \"field\" : \"ow9sbvrd3l5rumk0kkn5uclhgmiqfvieqmjeekrkepd4d1ybyra75x0mspvsj0userep4md7bp7u2e6tkby49eu44i77jq2lneypjasafwz7q9cx\",\n \"resource\" : \"zbzwt8a3p4i81avftbmf1crl9otil3e619dr1ujq2qc0ge76gnvruv1ksu4jvarbqjt3gi0lk9vnhhri8otgh2yoazwggx4zftlxx0gcjh7xn25wjjkcccg7z67bcmn3x5o8ysdwz8v1nfiykrk40vr8rztxo8x52\",\n \"index\" : 1389452483314843486,\n \"message\" : \"Esse ullam ad voluptatibus in minus. Sint rem non in veniam. Enim non commodi et doloremque assumenda maiores dolorem. Nesciunt voluptas iste qui.\",\n \"value\" : { }\n }, {\n \"code\" : \"gk7ms62em5vnz057pi04zsjq947jr7l14s7aa2xjwsrzd5jsgjl4t92toomv02mw323acst56e3ghqwmgf7qmio0dgkj1xnn9xhol5edcm34slnnwiucuviu013f6yxu16q2e7h69tbxcssyll2\",\n \"field\" : \"r7e19is21c2hp\",\n \"resource\" : \"7e4qn9mdx9j9itdshq8d2ymdtbraouhjakzkltpmskaf6za39bvfn2i4u52jk1q58ddm4xcfcrrpvnc01vdflogg0ziszkq17kp4zrvwkwrt9i3m4pbcl61zbgf35rq1snmmae2h232t4m09b6t3gnhkaxhy76\",\n \"index\" : 4180216589566721100,\n \"message\" : \"Eum esse repellendus veniam et possimus voluptatem. Est et quis qui velit quo accusamus. Voluptas sunt quis magni et enim mollitia recusandae. Ut nihil aspernatur dolor. Qui qui excepturi doloremque d\",\n \"value\" : { }\n }, {\n \"code\" : \"ym4hwk62ir1tw10j3amexzw4efkw93\",\n \"field\" : \"1pbvdwow6yks56wns8hh35tmz8havte331yvy1qajz7p029cshgvbjej5w71w8p4mxrsfeof6eof4gcbv1kbqxazfndb0v4x7e5cowj9hfse608f2ff4zhpkeug835\",\n \"resource\" : \"dv9778fuollf8mq3pob7fg7aakxmufnoq8um2tjs2qofkxwlhtfa5iv0ugpro40bbx9q4pgfl7m9th0mwa8zlpv5iifuo7my14c2iofma7t325wwyg9yq6qslerwnxs\",\n \"index\" : 7233574869787046351,\n \"message\" : \"Tempore aut repudiandae quos. Et adipisci porro dolorem quaerat. Harum nisi voluptatem non architecto similique.\",\n \"value\" : { }\n }, {\n \"code\" : \"lyjgqofx7oe3c1v3sw26lwrw5l7ewnfl3y0lkrw69ianlctwmz5\",\n \"field\" : \"hggq09rc1ndogyp4felzrkxjgmziq0133gahixu6ecgaz8e2qlotwwabi5ktsccdf2u7iu1w1x3rdwvesr7c8awdbcqqnxxbdeivgjg4i1e0e1l8y6cvhfwqmdnwngxt5d9h18m0vohcfwgb0l5uuudu23tv1\",\n \"resource\" : \"2oygxcb8gbz45satgda2ijf7qxrpj98or6re5yukleaqucn2rh6ebxcgi01s430q4gvwnj7vobwe49jt0ja5y8uzt8\",\n \"index\" : 4725256440056267433,\n \"message\" : \"In incidunt et molestiae expedita. Est placeat quia ex incidunt voluptatem nam temporibus. Aut et quaerat ut et non earum ea. Eum delectus quia corporis culpa. Neque est vitae quia beatae et.\",\n \"value\" : { }\n } ]\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "c17a14a9-117a-4f24-a0b0-5a3f472897ca", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.11848Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "search/issues-and-pull-requests", + "schema": { + "description": "Validation Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "errors": { + "items": { + "properties": { + "code": { + "type": "string" + }, + "field": { + "type": "string" + }, + "index": { + "type": "integer" + }, + "message": { + "type": "string" + }, + "resource": { + "type": "string" + }, + "value": { + "oneOf": [ + { + "nullable": true, + "type": "string" + }, + { + "nullable": true, + "type": "integer" + }, + { + "items": { + "type": "string" + }, + "nullable": true, + "type": "array" + } + ] + } + }, + "required": ["code"], + "type": "object" + }, + "type": "array" + }, + "message": { + "type": "string" + } + }, + "required": ["message", "documentation_url"], + "title": "Validation Error", + "type": "object" + } + } + } + }, + "insertionIndex": 330 + }, + { + "id": "54e9ed1a-7167-47b9-b01b-0e32d9514e9c", + "name": "Search issues and pull requests (application/json)", + "request": { + "urlPath": "/search/issues", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + }, + "queryParameters": { + "q": { + "equalTo": "b2k2ysixlap37oj0qt8qyko8hw1kfh31r4tbqba0ifkxsn8o52zd7m8o8wsgbwc6e4emstnjhrkikz40hfbwoh912ti2gddxlvjmpmczkytp824ujtxn91qijjfx6rggztkk0m26bhbg2xk4b8pinqvrbgb8pw9aqp4g4hnvgw9hj1" + } + } + }, + "response": { + "status": 403, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/643783\",\n \"message\" : \"Dignissimos aperiam exercitationem excepturi excepturi. Aliquid harum excepturi. Asperiores quidem ad.\",\n \"url\" : \"https://web.example.mocklab.io/888578\",\n \"status\" : \"a8kq09ody8ct2k1kyamf3h1mj1dxtkbljis5coygiofc48nk49kzubp64of8u12krcjff8p5tb48p8ejn6rdmwzhmx3tu7ikytfxy3cwkv1nrm766cxs8k0wvwbp7etqg5vbobfgnv0sl2dfnn4\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "54e9ed1a-7167-47b9-b01b-0e32d9514e9c", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.117734Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "search/issues-and-pull-requests", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 331 + }, + { + "id": "718c1f03-377b-4ee8-a1ac-b7f7b622bb04", + "name": "Search issues and pull requests - 304", + "request": { + "urlPath": "/search/issues", + "method": "GET", + "queryParameters": { + "q": { + "equalTo": "5zc7n7eczpghwr8z34y26uvdblfpuua0whuqoxkj512h5sshxzgwwn5smmjsjmmmm17p9x8ai4o0b883a8fftrbzebllb3uuk9ttymi054k7t7rdb13jzf6khcefx84n" + } + } + }, + "response": { + "status": 304 + }, + "uuid": "718c1f03-377b-4ee8-a1ac-b7f7b622bb04", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.117517Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "search/issues-and-pull-requests" + } + } + }, + "insertionIndex": 332 + }, + { + "id": "e5ce3314-6441-46a0-b66e-dbb60e3b2e83", + "name": "Search issues and pull requests (application/json) - default", + "request": { + "urlPath": "/search/issues", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + }, + "queryParameters": { + "q": { + "equalTo": "bdznkyi5zdzcprd0sfh0otbpyg6lu95ff999783nho2ja6umigoc8wipzpncgg0iyiucsdoxdouvz9459y1v84r601nn5ximyvzk5du6luuxv4zwlo79d2uccldtzzf19iohsp3roajxg4rwc0qmbwz8c92suwfnn" + } + } + }, + "response": { + "status": 200, + "body": "{\n \"incomplete_results\" : false,\n \"items\" : [ {\n \"author_association\" : \"COLLABORATOR\",\n \"body\" : \"...\",\n \"comments\" : 15,\n \"comments_url\" : \"https://api.github.com/repos/batterseapower/pinyin-toolkit/issues/132/comments\",\n \"created_at\" : \"2009-07-12T20:10:41Z\",\n \"events_url\" : \"https://api.github.com/repos/batterseapower/pinyin-toolkit/issues/132/events\",\n \"html_url\" : \"https://github.com/batterseapower/pinyin-toolkit/issues/132\",\n \"id\" : 35802,\n \"labels\" : [ {\n \"color\" : \"ff0000\",\n \"id\" : 4,\n \"name\" : \"bug\",\n \"node_id\" : \"MDU6TGFiZWw0\",\n \"url\" : \"https://api.github.com/repos/batterseapower/pinyin-toolkit/labels/bug\"\n } ],\n \"labels_url\" : \"https://api.github.com/repos/batterseapower/pinyin-toolkit/issues/132/labels{/name}\",\n \"locked\" : true,\n \"milestone\" : {\n \"closed_at\" : \"2013-02-12T13:22:01Z\",\n \"closed_issues\" : 8,\n \"created_at\" : \"2011-04-10T20:09:31Z\",\n \"creator\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"description\" : \"Tracking milestone for version 1.0\",\n \"due_on\" : \"2012-10-09T23:39:01Z\",\n \"html_url\" : \"https://github.com/octocat/Hello-World/milestones/v1.0\",\n \"id\" : 1002604,\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones/1/labels\",\n \"node_id\" : \"MDk6TWlsZXN0b25lMTAwMjYwNA==\",\n \"number\" : 1,\n \"open_issues\" : 4,\n \"state\" : \"open\",\n \"title\" : \"v1.0\",\n \"updated_at\" : \"2014-03-03T18:58:10Z\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones/1\"\n },\n \"node_id\" : \"MDU6SXNzdWUzNTgwMg==\",\n \"number\" : 132,\n \"pull_request\" : {\n \"diff_url\" : \"https://github.com/octocat/Hello-World/pull/1347.diff\",\n \"html_url\" : \"https://github.com/octocat/Hello-World/pull/1347\",\n \"patch_url\" : \"https://api.github.com/repos/octocat/Hello-World/pulls/1347\",\n \"url\" : \"https://api/github.com/repos/octocat/Hello-World/pull/1347\"\n },\n \"repository_url\" : \"https://api.github.com/repos/batterseapower/pinyin-toolkit\",\n \"score\" : 1,\n \"state\" : \"open\",\n \"title\" : \"Line Number Indexes Beyond 20 Not Displayed\",\n \"updated_at\" : \"2009-07-19T09:23:43Z\",\n \"url\" : \"https://api.github.com/repos/batterseapower/pinyin-toolkit/issues/132\",\n \"user\" : {\n \"avatar_url\" : \"https://secure.gravatar.com/avatar/934442aadfe3b2f4630510de416c5718?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png\",\n \"events_url\" : \"https://api.github.com/users/Nick3C/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/Nick3C/followers\",\n \"following_url\" : \"https://api.github.com/users/Nick3C/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/Nick3C/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/Nick3C\",\n \"id\" : 90254,\n \"login\" : \"Nick3C\",\n \"node_id\" : \"MDQ6VXNlcjkwMjU0\",\n \"organizations_url\" : \"https://api.github.com/users/Nick3C/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/Nick3C/received_events\",\n \"repos_url\" : \"https://api.github.com/users/Nick3C/repos\",\n \"site_admin\" : true,\n \"starred_url\" : \"https://api.github.com/users/Nick3C/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/Nick3C/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/Nick3C\"\n }\n } ],\n \"total_count\" : 280\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "e5ce3314-6441-46a0-b66e-dbb60e3b2e83", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.117472Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "search/issues-and-pull-requests", + "schema": { + "properties": { + "incomplete_results": { + "type": "boolean" + }, + "items": { + "items": { + "$ref": "#/components/schemas/issue-search-result-item" + }, + "type": "array" + }, + "total_count": { + "type": "integer" + } + }, + "required": ["total_count", "incomplete_results", "items"], + "type": "object" + } + } + } + }, + "insertionIndex": 333 + }, + { + "id": "3ef2b4e5-7f0d-41d6-a11c-83e902596850", + "name": "Search commits (application/json)", + "request": { + "urlPath": "/search/commits", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + }, + "queryParameters": { + "q": { + "equalTo": "y8tuan1ly08yk1soe7x1gs78bw408hj0fv97amak3j0mcitla1jg5e906q4ni2jvrc9qhwa59qdhuj5agjaous7gnezrecdzw0xya8w1rsn2481eg9rjo4a0oj88elsbgv4xhwx76d2j85gp9069hl9liut9gwkqnv8x7fnzmvlywe330k30jz5mk3" + } + } + }, + "response": { + "status": 415, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/208739\",\n \"message\" : \"Possimus in sed ipsam consequatur est asperiores maxime. Voluptatibus dignissimos nostrum quisquam. In adipisci quidem. Quo officiis porro necessitatibus excepturi. Iure est quo enim rerum et.\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "3ef2b4e5-7f0d-41d6-a11c-83e902596850", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.117383Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "search/commits", + "schema": { + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": ["message", "documentation_url"], + "type": "object" + } + } + } + }, + "insertionIndex": 334 + }, + { + "id": "7331739a-d09b-4904-a2a8-724cf87a16cc", + "name": "Search commits - 304", + "request": { + "urlPath": "/search/commits", + "method": "GET", + "queryParameters": { + "q": { + "equalTo": "mfmq8d8vywnku9poqdl70ozcd8stvv4vd8m5x1f2ut3vbpiv533lle086ixv6hyw3o4720fcktjpyddvf6qcwsnhr6ce9szz7zgg8j4deyav61y6aq9jyt236cgrojxg5e7qjqtcra1fwqhp0z4626n2ygad2wm25ng7qs47f773rga8f54ely01rilgcn3iorg6u" + } + } + }, + "response": { + "status": 304 + }, + "uuid": "7331739a-d09b-4904-a2a8-724cf87a16cc", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.117224Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "search/commits" + } + } + }, + "insertionIndex": 335 + }, + { + "id": "02646ba4-f129-41f4-9000-b271265fae72", + "name": "Search commits (application/json) - default", + "request": { + "urlPath": "/search/commits", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + }, + "queryParameters": { + "q": { + "equalTo": "1wvisqji0lsf1rvnh89cdcgfspdkkr86snt0" + } + } + }, + "response": { + "status": 200, + "body": "{\n \"incomplete_results\" : false,\n \"items\" : [ {\n \"author\" : {\n \"avatar_url\" : \"https://avatars.githubusercontent.com/u/583231?v=3\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 583231,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjU4MzIzMQ==\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"comments_url\" : \"https://api.github.com/repos/octocat/Spoon-Knife/commits/bb4cc8d3b2e14b3af5df699876dd4ff3acd00b7f/comments\",\n \"commit\" : {\n \"author\" : {\n \"date\" : \"2014-02-04T14:38:36-08:00\",\n \"email\" : \"octocat@nowhere.com\",\n \"name\" : \"The Octocat\"\n },\n \"comment_count\" : 8,\n \"committer\" : {\n \"date\" : \"2014-02-12T15:18:55-08:00\",\n \"email\" : \"octocat@nowhere.com\",\n \"name\" : \"The Octocat\"\n },\n \"message\" : \"Create styles.css and updated README\",\n \"tree\" : {\n \"sha\" : \"a639e96f9038797fba6e0469f94a4b0cc459fa68\",\n \"url\" : \"https://api.github.com/repos/octocat/Spoon-Knife/git/trees/a639e96f9038797fba6e0469f94a4b0cc459fa68\"\n },\n \"url\" : \"https://api.github.com/repos/octocat/Spoon-Knife/git/commits/bb4cc8d3b2e14b3af5df699876dd4ff3acd00b7f\"\n },\n \"committer\" : { },\n \"html_url\" : \"https://github.com/octocat/Spoon-Knife/commit/bb4cc8d3b2e14b3af5df699876dd4ff3acd00b7f\",\n \"node_id\" : \"MDQ6VXNlcjU4MzIzMQ==\",\n \"parents\" : [ {\n \"html_url\" : \"https://github.com/octocat/Spoon-Knife/commit/a30c19e3f13765a3b48829788bc1cb8b4e95cee4\",\n \"sha\" : \"a30c19e3f13765a3b48829788bc1cb8b4e95cee4\",\n \"url\" : \"https://api.github.com/repos/octocat/Spoon-Knife/commits/a30c19e3f13765a3b48829788bc1cb8b4e95cee4\"\n } ],\n \"repository\" : {\n \"archive_url\" : \"https://api.github.com/repos/octocat/Spoon-Knife/{archive_format}{/ref}\",\n \"assignees_url\" : \"https://api.github.com/repos/octocat/Spoon-Knife/assignees{/user}\",\n \"blobs_url\" : \"https://api.github.com/repos/octocat/Spoon-Knife/git/blobs{/sha}\",\n \"branches_url\" : \"https://api.github.com/repos/octocat/Spoon-Knife/branches{/branch}\",\n \"collaborators_url\" : \"https://api.github.com/repos/octocat/Spoon-Knife/collaborators{/collaborator}\",\n \"comments_url\" : \"https://api.github.com/repos/octocat/Spoon-Knife/comments{/number}\",\n \"commits_url\" : \"https://api.github.com/repos/octocat/Spoon-Knife/commits{/sha}\",\n \"compare_url\" : \"https://api.github.com/repos/octocat/Spoon-Knife/compare/{base}...{head}\",\n \"contents_url\" : \"https://api.github.com/repos/octocat/Spoon-Knife/contents/{+path}\",\n \"contributors_url\" : \"https://api.github.com/repos/octocat/Spoon-Knife/contributors\",\n \"deployments_url\" : \"https://api.github.com/repos/octocat/Spoon-Knife/deployments\",\n \"description\" : \"This repo is for demonstration purposes only.\",\n \"downloads_url\" : \"https://api.github.com/repos/octocat/Spoon-Knife/downloads\",\n \"events_url\" : \"https://api.github.com/repos/octocat/Spoon-Knife/events\",\n \"fork\" : false,\n \"forks_url\" : \"https://api.github.com/repos/octocat/Spoon-Knife/forks\",\n \"full_name\" : \"octocat/Spoon-Knife\",\n \"git_commits_url\" : \"https://api.github.com/repos/octocat/Spoon-Knife/git/commits{/sha}\",\n \"git_refs_url\" : \"https://api.github.com/repos/octocat/Spoon-Knife/git/refs{/sha}\",\n \"git_tags_url\" : \"https://api.github.com/repos/octocat/Spoon-Knife/git/tags{/sha}\",\n \"hooks_url\" : \"https://api.github.com/repos/octocat/Spoon-Knife/hooks\",\n \"html_url\" : \"https://github.com/octocat/Spoon-Knife\",\n \"id\" : 1300192,\n \"issue_comment_url\" : \"https://api.github.com/repos/octocat/Spoon-Knife/issues/comments{/number}\",\n \"issue_events_url\" : \"https://api.github.com/repos/octocat/Spoon-Knife/issues/events{/number}\",\n \"issues_url\" : \"https://api.github.com/repos/octocat/Spoon-Knife/issues{/number}\",\n \"keys_url\" : \"https://api.github.com/repos/octocat/Spoon-Knife/keys{/key_id}\",\n \"labels_url\" : \"https://api.github.com/repos/octocat/Spoon-Knife/labels{/name}\",\n \"languages_url\" : \"https://api.github.com/repos/octocat/Spoon-Knife/languages\",\n \"merges_url\" : \"https://api.github.com/repos/octocat/Spoon-Knife/merges\",\n \"milestones_url\" : \"https://api.github.com/repos/octocat/Spoon-Knife/milestones{/number}\",\n \"name\" : \"Spoon-Knife\",\n \"node_id\" : \"MDEwOlJlcG9zaXRvcnkxMzAwMTky\",\n \"notifications_url\" : \"https://api.github.com/repos/octocat/Spoon-Knife/notifications{?since,all,participating}\",\n \"owner\" : {\n \"avatar_url\" : \"https://avatars.githubusercontent.com/u/583231?v=3\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 583231,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjU4MzIzMQ==\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"private\" : false,\n \"pulls_url\" : \"https://api.github.com/repos/octocat/Spoon-Knife/pulls{/number}\",\n \"releases_url\" : \"https://api.github.com/repos/octocat/Spoon-Knife/releases{/id}\",\n \"stargazers_url\" : \"https://api.github.com/repos/octocat/Spoon-Knife/stargazers\",\n \"statuses_url\" : \"https://api.github.com/repos/octocat/Spoon-Knife/statuses/{sha}\",\n \"subscribers_url\" : \"https://api.github.com/repos/octocat/Spoon-Knife/subscribers\",\n \"subscription_url\" : \"https://api.github.com/repos/octocat/Spoon-Knife/subscription\",\n \"tags_url\" : \"https://api.github.com/repos/octocat/Spoon-Knife/tags\",\n \"teams_url\" : \"https://api.github.com/repos/octocat/Spoon-Knife/teams\",\n \"trees_url\" : \"https://api.github.com/repos/octocat/Spoon-Knife/git/trees{/sha}\",\n \"url\" : \"https://api.github.com/repos/octocat/Spoon-Knife\"\n },\n \"score\" : 1,\n \"sha\" : \"bb4cc8d3b2e14b3af5df699876dd4ff3acd00b7f\",\n \"url\" : \"https://api.github.com/repos/octocat/Spoon-Knife/commits/bb4cc8d3b2e14b3af5df699876dd4ff3acd00b7f\"\n } ],\n \"total_count\" : 1\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "02646ba4-f129-41f4-9000-b271265fae72", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.117176Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "search/commits", + "schema": { + "properties": { + "incomplete_results": { + "type": "boolean" + }, + "items": { + "items": { + "$ref": "#/components/schemas/commit-search-result-item" + }, + "type": "array" + }, + "total_count": { + "type": "integer" + } + }, + "required": ["total_count", "incomplete_results", "items"], + "type": "object" + } + } + } + }, + "insertionIndex": 336 + }, + { + "id": "6f4f7143-c7f8-4935-93c3-e9294dc5335b", + "name": "Search code (application/json)", + "request": { + "urlPath": "/search/code", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + }, + "queryParameters": { + "q": { + "equalTo": "23fjnm5b0v3rlo3sckglwnkomkngxlymo" + } + } + }, + "response": { + "status": 503, + "body": "{\n \"code\" : \"6tb2o7xf7u3lv0cvzo7dwgmd71iey1ajjeexqufrqsobg93xd4qxuj269yvy5riau5kik3ye85qgjsajafstp6iobsn7nigj3duyy5gxs0ht6fjc21vmixr4pxa9gh3mkrv0s\",\n \"documentation_url\" : \"https://web.example.mocklab.io/673293\",\n \"message\" : \"Ad omnis tempore distinctio officiis dolor impedit reprehenderit. At saepe dolorem quia ut hic. In consequuntur sunt quo nihil numquam. Saepe officiis ullam maiores quia quisquam quis.\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "6f4f7143-c7f8-4935-93c3-e9294dc5335b", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.11708Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "search/code", + "schema": { + "properties": { + "code": { + "type": "string" + }, + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "type": "object" + } + } + } + }, + "insertionIndex": 337 + }, + { + "id": "73066be0-173f-4250-85f4-f5ee3592e9b9", + "name": "Search code (application/json)", + "request": { + "urlPath": "/search/code", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + }, + "queryParameters": { + "q": { + "equalTo": "8j22fkesf2q5ncyyv1wdmjnzh2ecnzzjna68oni8bewjofz1zxgj6nxnl31jtzti17q4f5sjcmug4hnd1g9iag06f6begx42w2y9o2l499tznfz7gd4oa2s6sugr4txox92h8mwo379ql69deaepqp46okk0tvri" + } + } + }, + "response": { + "status": 422, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/204012\",\n \"message\" : \"Id vel hic asperiores id rerum nesciunt sunt. Dignissimos cum tempore eius. Aut unde fuga commodi non.\",\n \"errors\" : [ {\n \"code\" : \"3pu4zg0bmxtjx57uolvx25lot5vzdexa1wnhg4ogq2pac1y9\",\n \"field\" : \"1rm22\",\n \"resource\" : \"aqcbmnjk1ej8zpo58kjzkpvnenpkejtzq26uwaa8u704zmnfudk91unwkqj307cuz1fsmqdezc4vckjkhnhzppidwjygukzr8j6rxk9g7qwqw3eqrpb1s5cf1ijuw82misrh9j60lnv0ldq7i9t8yb5e7i2llbtz2wr9llsqfwlmbdh4lyb6ya55u19aq089pv\",\n \"index\" : 3595805045376595288,\n \"message\" : \"Consequuntur omnis explicabo dolores perferendis. Autem et distinctio eum. Ipsum ipsa vero minima laborum.\",\n \"value\" : { }\n }, {\n \"code\" : \"px2wogpjzgpcx3qti35xvefbvp1ut4iqv8x3vf6ygi8f1t3y6yzvo4pdsjl405uzzhv0epmf\",\n \"field\" : \"z3t9l37he6h64tt6eg300ijuf8karg0njs3djv0jy0wibtuvvfho55ovkv3guior\",\n \"resource\" : \"t22lsoc69c35hozyta4xb641jzaunbsoxhdmmm1zcstslkz34e7gqr6zun4px55k0o8b83oqsxs0r8i71xlt8lz18myw70by7jtoqr0xtrmaev8rjdmss8wcwkoud9lqia32puquqnmt7vsvo865m3o5cebndbwv5uic4byq9j4m8um3i\",\n \"index\" : 6013924343202198776,\n \"message\" : \"Qui modi unde. Et eaque necessitatibus. Harum rem ipsa deserunt reiciendis minus ex.\",\n \"value\" : { }\n }, {\n \"code\" : \"fmq78u2s6ucf89xp9vnsa12p7s05wm694i3d1zbck5024g5\",\n \"field\" : \"ltzoimv4tvn39eyqyw2ncrgjk3rgu45rhicliatn7904m4nufqxygqjmc86lzfhiv7l1aky84jexcsqpsq5dkcw5ptcwfegeovutt3xy\",\n \"resource\" : \"hgt51f33ave527cqqlda\",\n \"index\" : 2102259372665447806,\n \"message\" : \"Nemo natus nemo temporibus quidem facilis sit. Saepe assumenda eum est tenetur. Unde vel accusamus neque aperiam voluptatem nostrum. Numquam amet ut.\",\n \"value\" : { }\n }, {\n \"code\" : \"zzvsxuqc6i7abh3jxjzlal\",\n \"field\" : \"7llgmjscelj9rhhkfu0fhtngt8cvmprhtyx13wjsim7by4e4o11b1zl88md3dwi8pwzlr94l2yi2qcx35ckxujeo4wiy9mi8wri5p5340gjy41np6ds4npok\",\n \"resource\" : \"p75olbk84dz9h9gb1ux0wzmoadanz34zonf4eptrk6l3kf83j09k6ce76jq8poq270t3m3cex2c4k7dpfyftaso31uqy1vkn8j4v71f1ulx05v9r7nsisymv1ptljanwt8wx3scxnezr3huvdsoz7uj48xckdvp0dyct\",\n \"index\" : 7550773228801550853,\n \"message\" : \"Consequatur debitis aspernatur. Dolorem quia dolor eos. Provident ea est nisi est ducimus. Voluptas animi quod. Beatae deleniti possimus dignissimos omnis.\",\n \"value\" : { }\n } ]\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "73066be0-173f-4250-85f4-f5ee3592e9b9", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.1169Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "search/code", + "schema": { + "description": "Validation Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "errors": { + "items": { + "properties": { + "code": { + "type": "string" + }, + "field": { + "type": "string" + }, + "index": { + "type": "integer" + }, + "message": { + "type": "string" + }, + "resource": { + "type": "string" + }, + "value": { + "oneOf": [ + { + "nullable": true, + "type": "string" + }, + { + "nullable": true, + "type": "integer" + }, + { + "items": { + "type": "string" + }, + "nullable": true, + "type": "array" + } + ] + } + }, + "required": ["code"], + "type": "object" + }, + "type": "array" + }, + "message": { + "type": "string" + } + }, + "required": ["message", "documentation_url"], + "title": "Validation Error", + "type": "object" + } + } + } + }, + "insertionIndex": 338 + }, + { + "id": "d46405e5-3cf7-4aa7-8194-abd58fc00c3f", + "name": "Search code (application/json)", + "request": { + "urlPath": "/search/code", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + }, + "queryParameters": { + "q": { + "equalTo": "p9jevspv0a0shqg3dv3x59fj4nnr8qr7itiajxq83nzd2sxly4wr4ky4kzk44pzwqwqixjkqpkrejtwa5ezyoncdnm0afh66oqxefvumk5w3ogoa4e07tlolfzn7gt8gx8pk4ct0m2id6umwwaj9n7fesyp7z6achgsqxkp09cxjob5ixswc3toakfy4t3w4wk88pw" + } + } + }, + "response": { + "status": 403, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/589921\",\n \"message\" : \"Ipsum facere eos illum aut. Qui temporibus est atque nihil eius. Explicabo totam quia laudantium harum harum officia et.\",\n \"url\" : \"https://web.example.mocklab.io/350949\",\n \"status\" : \"rlf1nakxa4qyrq4b6ch68cuja3n5l8ndessm16bawb0keirbh2vw1ocxvs8oj5aumllx3soes8bpitl73n3md1ykoadtzzz63jxvlnjtf3qunf6spr5kupk0t80j\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "d46405e5-3cf7-4aa7-8194-abd58fc00c3f", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.116391Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "search/code", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 339 + }, + { + "id": "ff16f844-165b-42fb-9f42-46b448a7c8b5", + "name": "Search code - 304", + "request": { + "urlPath": "/search/code", + "method": "GET", + "queryParameters": { + "q": { + "equalTo": "7yzckj0e0pplhqahsbwfpa3y9pm10u2u7za840iqqr6jo7b76a18r9f3qbtpfdnp35wk5mewzxob1yagg5g84g0qgppirat0ll8pvjvjcd55htsmv3f30vj19koycogvqjvzmiy31ze9izkjzp8" + } + } + }, + "response": { + "status": 304 + }, + "uuid": "ff16f844-165b-42fb-9f42-46b448a7c8b5", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.116159Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "search/code" + } + } + }, + "insertionIndex": 340 + }, + { + "id": "75a1c17d-1050-44ac-910e-5edaf4b264cf", + "name": "Search code (application/json) - default", + "request": { + "urlPath": "/search/code", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + }, + "queryParameters": { + "q": { + "equalTo": "36nmv3got7867w2ppnthgri3xjsaxcc8o9" + } + } + }, + "response": { + "status": 200, + "body": "{\n \"incomplete_results\" : false,\n \"items\" : [ {\n \"git_url\" : \"https://api.github.com/repositories/167174/git/blobs/d7212f9dee2dcc18f084d7df8f417b80846ded5a\",\n \"html_url\" : \"https://github.com/jquery/jquery/blob/825ac3773694e0cd23ee74895fd5aeb535b27da4/src/attributes/classes.js\",\n \"name\" : \"classes.js\",\n \"path\" : \"src/attributes/classes.js\",\n \"repository\" : {\n \"archive_url\" : \"https://api.github.com/repos/jquery/jquery/{archive_format}{/ref}\",\n \"assignees_url\" : \"https://api.github.com/repos/jquery/jquery/assignees{/user}\",\n \"blobs_url\" : \"https://api.github.com/repos/jquery/jquery/git/blobs{/sha}\",\n \"branches_url\" : \"https://api.github.com/repos/jquery/jquery/branches{/branch}\",\n \"collaborators_url\" : \"https://api.github.com/repos/jquery/jquery/collaborators{/collaborator}\",\n \"comments_url\" : \"https://api.github.com/repos/jquery/jquery/comments{/number}\",\n \"commits_url\" : \"https://api.github.com/repos/jquery/jquery/commits{/sha}\",\n \"compare_url\" : \"https://api.github.com/repos/jquery/jquery/compare/{base}...{head}\",\n \"contents_url\" : \"https://api.github.com/repos/jquery/jquery/contents/{+path}\",\n \"contributors_url\" : \"https://api.github.com/repos/jquery/jquery/contributors\",\n \"deployments_url\" : \"http://api.github.com/repos/octocat/Hello-World/deployments\",\n \"description\" : \"jQuery JavaScript Library\",\n \"downloads_url\" : \"https://api.github.com/repos/jquery/jquery/downloads\",\n \"events_url\" : \"https://api.github.com/repos/jquery/jquery/events\",\n \"fork\" : false,\n \"forks_url\" : \"https://api.github.com/repos/jquery/jquery/forks\",\n \"full_name\" : \"jquery/jquery\",\n \"git_commits_url\" : \"https://api.github.com/repos/jquery/jquery/git/commits{/sha}\",\n \"git_refs_url\" : \"https://api.github.com/repos/jquery/jquery/git/refs{/sha}\",\n \"git_tags_url\" : \"https://api.github.com/repos/jquery/jquery/git/tags{/sha}\",\n \"hooks_url\" : \"https://api.github.com/repos/jquery/jquery/hooks\",\n \"html_url\" : \"https://github.com/jquery/jquery\",\n \"id\" : 167174,\n \"issue_comment_url\" : \"https://api.github.com/repos/jquery/jquery/issues/comments/{number}\",\n \"issue_events_url\" : \"https://api.github.com/repos/jquery/jquery/issues/events{/number}\",\n \"issues_url\" : \"https://api.github.com/repos/jquery/jquery/issues{/number}\",\n \"keys_url\" : \"https://api.github.com/repos/jquery/jquery/keys{/key_id}\",\n \"labels_url\" : \"https://api.github.com/repos/jquery/jquery/labels{/name}\",\n \"languages_url\" : \"https://api.github.com/repos/jquery/jquery/languages\",\n \"merges_url\" : \"https://api.github.com/repos/jquery/jquery/merges\",\n \"milestones_url\" : \"https://api.github.com/repos/jquery/jquery/milestones{/number}\",\n \"name\" : \"jquery\",\n \"node_id\" : \"MDEwOlJlcG9zaXRvcnkxNjcxNzQ=\",\n \"notifications_url\" : \"https://api.github.com/repos/jquery/jquery/notifications{?since,all,participating}\",\n \"owner\" : {\n \"avatar_url\" : \"https://0.gravatar.com/avatar/6906f317a4733f4379b06c32229ef02f?d=https%3A%2F%2Fidenticons.github.com%2Ff426f04f2f9813718fb806b30e0093de.png\",\n \"events_url\" : \"https://api.github.com/users/jquery/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/jquery/followers\",\n \"following_url\" : \"https://api.github.com/users/jquery/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/jquery/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/jquery\",\n \"id\" : 70142,\n \"login\" : \"jquery\",\n \"node_id\" : \"MDQ6VXNlcjcwMTQy\",\n \"organizations_url\" : \"https://api.github.com/users/jquery/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/jquery/received_events\",\n \"repos_url\" : \"https://api.github.com/users/jquery/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/jquery/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/jquery/subscriptions\",\n \"type\" : \"Organization\",\n \"url\" : \"https://api.github.com/users/jquery\"\n },\n \"private\" : false,\n \"pulls_url\" : \"https://api.github.com/repos/jquery/jquery/pulls{/number}\",\n \"releases_url\" : \"http://api.github.com/repos/octocat/Hello-World/releases{/id}\",\n \"stargazers_url\" : \"https://api.github.com/repos/jquery/jquery/stargazers\",\n \"statuses_url\" : \"https://api.github.com/repos/jquery/jquery/statuses/{sha}\",\n \"subscribers_url\" : \"https://api.github.com/repos/jquery/jquery/subscribers\",\n \"subscription_url\" : \"https://api.github.com/repos/jquery/jquery/subscription\",\n \"tags_url\" : \"https://api.github.com/repos/jquery/jquery/tags\",\n \"teams_url\" : \"https://api.github.com/repos/jquery/jquery/teams\",\n \"trees_url\" : \"https://api.github.com/repos/jquery/jquery/git/trees{/sha}\",\n \"url\" : \"https://api.github.com/repos/jquery/jquery\"\n },\n \"score\" : 1,\n \"sha\" : \"d7212f9dee2dcc18f084d7df8f417b80846ded5a\",\n \"url\" : \"https://api.github.com/repositories/167174/contents/src/attributes/classes.js?ref=825ac3773694e0cd23ee74895fd5aeb535b27da4\"\n } ],\n \"total_count\" : 7\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "75a1c17d-1050-44ac-910e-5edaf4b264cf", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.11611Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "search/code", + "schema": { + "properties": { + "incomplete_results": { + "type": "boolean" + }, + "items": { + "items": { + "$ref": "#/components/schemas/code-search-result-item" + }, + "type": "array" + }, + "total_count": { + "type": "integer" + } + }, + "required": ["total_count", "incomplete_results", "items"], + "type": "object" + } + } + } + }, + "insertionIndex": 341 + }, + { + "id": "155234d0-be5e-48fa-a644-1c3300f4f948", + "name": "List public repositories (application/json)", + "request": { + "urlPath": "/repositories", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 422, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/451045\",\n \"message\" : \"Corrupti autem aut pariatur. Rerum maxime ab cumque aut aspernatur enim est. Aut porro expedita aut in. Repellendus exercitationem suscipit.\",\n \"errors\" : [ {\n \"code\" : \"xqcbfx98v15pclh1bldo7fmeu8iwbzu0o7j48veikuuzi84u7uysciezirxg61ommgbkhvhjvkk26ner2ourre918ikbcxiqpp0a2v1ri3p6rpqbqp5gsiz7hrsu5q9sbjebw1zdmw0gujx4r\",\n \"field\" : \"711z8382ykc44p5ywd8khjz2mwr7hle9rig10909fgp9ghikq3vglnihgbniz8gfcm9ak4sdbh52lj0bfw716ysbfdcbc2f8bg4chkoi613xbr\",\n \"resource\" : \"oivn5o0jl4k24jwl33akh8zlsyzt06w6vrc1d25f3yqij1o0qkqy6tv4r4f\",\n \"index\" : 8366030143177278820,\n \"message\" : \"Nobis repellendus ad in id sunt unde earum. Omnis nisi quaerat consequatur sit animi. Fuga pariatur officiis expedita ipsam fugit ipsum totam.\",\n \"value\" : { }\n }, {\n \"code\" : \"fzdjc542ltudjs3yh9njioqlsfr5jwc3cip74ydcmrz04dlho7zegoi7tcbs2pg1y16aynikche3tk7p2fmmk74j9kr4vmiskbgn8\",\n \"field\" : \"vc8nvaaf9n5sy7ngaho9t2vud8huup5zdzakaxyidk4dj96b7ixuood72rs4pisltvqjlb3y7bpppqlx23lnkbhnuw4qn1l4l9r3fgz4fup30buyp003xbjk7tl8rxmcbmm4dffzdfbfvsz6jt7j1fn8vcp3e7\",\n \"resource\" : \"ffhkzxayzvaqq2n0ncdpn23jykil2gcm1txhflyj374x20d564u46u4mz5l9uhkr5pd01uixueu0i0zschxoslz05za7rhmtf4nmpkt0ogbmqum\",\n \"index\" : 2418927664447676835,\n \"message\" : \"Et ut enim vero accusamus ipsum. Autem iusto accusamus odit incidunt voluptas eos. Ut voluptates sit autem commodi possimus inventore. Accusamus temporibus iusto ut et est voluptas architecto. Aut err\",\n \"value\" : { }\n }, {\n \"code\" : \"2zje2lcidrxlubtrs0o0sgvuqcrgz1h8vh5mkjurpj7a5ndc8zrz58o1mc7ntd4usxg5rmjpb3bm74cknm3ncj4z65ozup5o\",\n \"field\" : \"2jigl6d8zkwi1hd2sm3ree46j17l0ij3scdysram1q06mra1ty9osya7wci1kdls0gqaurxjuwa4u8m2hr5s2hvx6d5md5noy3f7d7g0qy21ez8uxcsfz\",\n \"resource\" : \"e1fm8bydthmsmchkbeztlm7xt\",\n \"index\" : 865045417104930423,\n \"message\" : \"Voluptatum aliquid voluptas ut ut. Occaecati et facere consectetur quaerat aut et ipsam. Iste nisi est quae at ea illum facilis.\",\n \"value\" : { }\n }, {\n \"code\" : \"826m86v3sab568g7niuvtd4wh7b3nj3w47z784c9cvewihzw11sqst1bryh8pmwk1hagc8isgd7kzje1avlepx4jh9fwy9kcz734s98rm1wddkc8ffy7lky6gjvrasgjo2m8o36zn23vkv6wo50rvyujs1bx6k6ded\",\n \"field\" : \"p238kkuezl53nqizsi0kks1wboyay2ih3uzhvl4jfv4s1u9mfzj4e538s71io3tx8mf6xin4rfosom9s2fs8xbzqfy6a8bz376jgqepwqdfx6hu3a6ba1m9h7shi24cog8xbudjc0149\",\n \"resource\" : \"znl34in61hvzh4sbfgnwdlcdlazopbjvdeoibw8mnmwc1bhm0u7r5psbd5ehsh40bfphtbsfaluq154ekm10mgxblxllxoodm\",\n \"index\" : 6173737471432203511,\n \"message\" : \"Omnis id quia odio consectetur sapiente. Eaque omnis aut architecto. Velit odit qui itaque facilis.\",\n \"value\" : { }\n }, {\n \"code\" : \"o7qrpmuzgnqwnuitqv2nxq8gdpep8wxhfyy5yv3g1a\",\n \"field\" : \"ftxpxqqgnuy56ejsddznvo7kaocp7s27mlt7b34q7g0lt45rwotne85tbxec88ly35u13j8jeldpvzugo7id1bsjxnj2lvpzur0b6g6iwlxi16yx7hm8k2qkwld3lsi47i4xbwl3iryc3rhs7uih8wwigsgypx37irpmnx2bar26k\",\n \"resource\" : \"shk3j2fjpa9evumc75gv1wpzblykjzkj498upgbq6fvq52sdqzekk2wkr6gs2xdcpxiqxux0t2kbljtzngx9xluiyoahtq0g\",\n \"index\" : 5539652732453920520,\n \"message\" : \"Exercitationem soluta odio. Qui minus quidem. Officia ea deleniti animi sapiente officia doloremque eos.\",\n \"value\" : { }\n }, {\n \"code\" : \"r9o7hmqqm93dr62a3jjrka5bif3zf9cj412hy3g49toyu4tsvqw06uyef9mw62pblmkuyex25f3xiko\",\n \"field\" : \"mmgurlvrh15s62g5d2rp1byw4zw1sajn5f17yqf56onsfnz7p9mni2gvy8tcz0zhrpbmobz566n2cam6\",\n \"resource\" : \"021dc2gcpqh1fxv45smddht0qp1so2456pwcqr92ibiqe9t7k6xq7lgph\",\n \"index\" : 9014528073574662821,\n \"message\" : \"Explicabo officia omnis iure sapiente accusamus ullam. Necessitatibus itaque unde sunt. Distinctio et incidunt reiciendis odio earum.\",\n \"value\" : { }\n }, {\n \"code\" : \"7qzcgiebzd42c9k4wf999un95edgr5ngyeke852mb63qvy8yrsa2q5od6n0rjddmyc2xu92ousodhd759l27mvl7vaba8kh2cex4uvovupal2qssbs47zxtqor2dmck9oawdoif9i66r2xj01b5yvv8cnmwcywcjwho846gic3\",\n \"field\" : \"1q0q8b01qqc99dbudqrfto4qoqmeowjx1nf6mbuatfpgp1en0x95o2k1n46tk8g2phy6qg5l\",\n \"resource\" : \"anz3i35i0zjodsko154uff8xn385ewp707pblxolk0bkcqwv68tgib\",\n \"index\" : 7458496421300932877,\n \"message\" : \"Voluptas voluptatibus qui molestiae molestias illo aut quas. Ab modi culpa odio. Accusantium atque quae commodi numquam.\",\n \"value\" : { }\n } ]\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "155234d0-be5e-48fa-a644-1c3300f4f948", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.116008Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/list-public", + "schema": { + "description": "Validation Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "errors": { + "items": { + "properties": { + "code": { + "type": "string" + }, + "field": { + "type": "string" + }, + "index": { + "type": "integer" + }, + "message": { + "type": "string" + }, + "resource": { + "type": "string" + }, + "value": { + "oneOf": [ + { + "nullable": true, + "type": "string" + }, + { + "nullable": true, + "type": "integer" + }, + { + "items": { + "type": "string" + }, + "nullable": true, + "type": "array" + } + ] + } + }, + "required": ["code"], + "type": "object" + }, + "type": "array" + }, + "message": { + "type": "string" + } + }, + "required": ["message", "documentation_url"], + "title": "Validation Error", + "type": "object" + } + } + } + }, + "insertionIndex": 342 + }, + { + "id": "0dba067d-67aa-4c03-8119-9370ee0e0055", + "name": "List public repositories - 304", + "request": { + "urlPath": "/repositories", + "method": "GET" + }, + "response": { + "status": 304 + }, + "uuid": "0dba067d-67aa-4c03-8119-9370ee0e0055", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.115222Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/list-public" + } + } + }, + "insertionIndex": 343 + }, + { + "id": "4512d750-53a5-4325-bb54-12dff080c966", + "name": "List public repositories (application/json) - default", + "request": { + "urlPath": "/repositories", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 200, + "body": "[ {\n \"archive_url\" : \"https://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref}\",\n \"assignees_url\" : \"https://api.github.com/repos/octocat/Hello-World/assignees{/user}\",\n \"blobs_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/blobs{/sha}\",\n \"branches_url\" : \"https://api.github.com/repos/octocat/Hello-World/branches{/branch}\",\n \"collaborators_url\" : \"https://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator}\",\n \"comments_url\" : \"https://api.github.com/repos/octocat/Hello-World/comments{/number}\",\n \"commits_url\" : \"https://api.github.com/repos/octocat/Hello-World/commits{/sha}\",\n \"compare_url\" : \"https://api.github.com/repos/octocat/Hello-World/compare/{base}...{head}\",\n \"contents_url\" : \"https://api.github.com/repos/octocat/Hello-World/contents/{+path}\",\n \"contributors_url\" : \"https://api.github.com/repos/octocat/Hello-World/contributors\",\n \"deployments_url\" : \"https://api.github.com/repos/octocat/Hello-World/deployments\",\n \"description\" : \"This your first repo!\",\n \"downloads_url\" : \"https://api.github.com/repos/octocat/Hello-World/downloads\",\n \"events_url\" : \"https://api.github.com/repos/octocat/Hello-World/events\",\n \"fork\" : false,\n \"forks_url\" : \"https://api.github.com/repos/octocat/Hello-World/forks\",\n \"full_name\" : \"octocat/Hello-World\",\n \"git_commits_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/commits{/sha}\",\n \"git_refs_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/refs{/sha}\",\n \"git_tags_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/tags{/sha}\",\n \"git_url\" : \"git:github.com/octocat/Hello-World.git\",\n \"hooks_url\" : \"http://api.github.com/repos/octocat/Hello-World/hooks\",\n \"html_url\" : \"https://github.com/octocat/Hello-World\",\n \"id\" : 1296269,\n \"issue_comment_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/comments{/number}\",\n \"issue_events_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/events{/number}\",\n \"issues_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues{/number}\",\n \"keys_url\" : \"https://api.github.com/repos/octocat/Hello-World/keys{/key_id}\",\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World/labels{/name}\",\n \"languages_url\" : \"https://api.github.com/repos/octocat/Hello-World/languages\",\n \"merges_url\" : \"https://api.github.com/repos/octocat/Hello-World/merges\",\n \"milestones_url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones{/number}\",\n \"name\" : \"Hello-World\",\n \"node_id\" : \"MDEwOlJlcG9zaXRvcnkxMjk2MjY5\",\n \"notifications_url\" : \"https://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating}\",\n \"owner\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"private\" : false,\n \"pulls_url\" : \"https://api.github.com/repos/octocat/Hello-World/pulls{/number}\",\n \"releases_url\" : \"https://api.github.com/repos/octocat/Hello-World/releases{/id}\",\n \"ssh_url\" : \"git@github.com:octocat/Hello-World.git\",\n \"stargazers_url\" : \"https://api.github.com/repos/octocat/Hello-World/stargazers\",\n \"statuses_url\" : \"https://api.github.com/repos/octocat/Hello-World/statuses/{sha}\",\n \"subscribers_url\" : \"https://api.github.com/repos/octocat/Hello-World/subscribers\",\n \"subscription_url\" : \"https://api.github.com/repos/octocat/Hello-World/subscription\",\n \"tags_url\" : \"https://api.github.com/repos/octocat/Hello-World/tags\",\n \"teams_url\" : \"https://api.github.com/repos/octocat/Hello-World/teams\",\n \"trees_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/trees{/sha}\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World\"\n} ]", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "4512d750-53a5-4325-bb54-12dff080c966", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.115196Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/list-public", + "schema": { + "items": { + "$ref": "#/components/schemas/minimal-repository" + }, + "type": "array" + } + } + } + }, + "insertionIndex": 344 + }, + { + "id": "3f998306-1df1-480c-8b9c-3357ba6077c4", + "name": "Create a repository using a template - default", + "request": { + "urlPath": "/repos/28v88uauahpy4viq2a2bgktisa5i1/1irc59bwqv2tix0htspkujn0hpi8kcf3jgis5rjg0x3npplm6ufrks3k53txb7bb3udmmjozuopxkjw7ar0as548l133curm02baupsyd60p/generate", + "method": "POST" + }, + "response": { + "status": 201, + "body": "{\n \"allow_rebase_merge\" : true,\n \"anonymous_access_enabled\" : false,\n \"archive_url\" : \"https://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref}\",\n \"archived\" : false,\n \"assignees_url\" : \"https://api.github.com/repos/octocat/Hello-World/assignees{/user}\",\n \"blobs_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/blobs{/sha}\",\n \"branches_url\" : \"https://api.github.com/repos/octocat/Hello-World/branches{/branch}\",\n \"clone_url\" : \"https://github.com/octocat/Hello-World.git\",\n \"collaborators_url\" : \"https://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator}\",\n \"comments_url\" : \"https://api.github.com/repos/octocat/Hello-World/comments{/number}\",\n \"commits_url\" : \"https://api.github.com/repos/octocat/Hello-World/commits{/sha}\",\n \"compare_url\" : \"https://api.github.com/repos/octocat/Hello-World/compare/{base}...{head}\",\n \"contents_url\" : \"https://api.github.com/repos/octocat/Hello-World/contents/{+path}\",\n \"contributors_url\" : \"https://api.github.com/repos/octocat/Hello-World/contributors\",\n \"created_at\" : \"2011-01-26T19:01:12Z\",\n \"default_branch\" : \"master\",\n \"deployments_url\" : \"https://api.github.com/repos/octocat/Hello-World/deployments\",\n \"description\" : \"This your first repo!\",\n \"disabled\" : false,\n \"downloads_url\" : \"https://api.github.com/repos/octocat/Hello-World/downloads\",\n \"events_url\" : \"https://api.github.com/repos/octocat/Hello-World/events\",\n \"fork\" : false,\n \"forks\" : 9,\n \"forks_count\" : 9,\n \"forks_url\" : \"https://api.github.com/repos/octocat/Hello-World/forks\",\n \"full_name\" : \"octocat/Hello-World\",\n \"git_commits_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/commits{/sha}\",\n \"git_refs_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/refs{/sha}\",\n \"git_tags_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/tags{/sha}\",\n \"git_url\" : \"git:github.com/octocat/Hello-World.git\",\n \"has_downloads\" : true,\n \"has_issues\" : true,\n \"has_pages\" : false,\n \"has_projects\" : true,\n \"has_wiki\" : true,\n \"homepage\" : \"https://github.com\",\n \"hooks_url\" : \"https://api.github.com/repos/octocat/Hello-World/hooks\",\n \"html_url\" : \"https://github.com/octocat/Hello-World\",\n \"id\" : 1296269,\n \"is_template\" : false,\n \"issue_comment_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/comments{/number}\",\n \"issue_events_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/events{/number}\",\n \"issues_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues{/number}\",\n \"keys_url\" : \"https://api.github.com/repos/octocat/Hello-World/keys{/key_id}\",\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World/labels{/name}\",\n \"languages_url\" : \"https://api.github.com/repos/octocat/Hello-World/languages\",\n \"license\" : {\n \"html_url\" : \"https://github.com/licenses/mit\",\n \"key\" : \"mit\",\n \"name\" : \"MIT License\",\n \"node_id\" : \"MDc6TGljZW5zZW1pdA==\",\n \"spdx_id\" : \"MIT\",\n \"url\" : \"https://api.github.com/licenses/mit\"\n },\n \"merges_url\" : \"https://api.github.com/repos/octocat/Hello-World/merges\",\n \"milestones_url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones{/number}\",\n \"mirror_url\" : \"git:git.example.com/octocat/Hello-World\",\n \"name\" : \"Hello-World\",\n \"node_id\" : \"MDEwOlJlcG9zaXRvcnkxMjk2MjY5\",\n \"notifications_url\" : \"https://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating}\",\n \"open_issues\" : 0,\n \"open_issues_count\" : 0,\n \"owner\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"permissions\" : {\n \"admin\" : false,\n \"pull\" : true,\n \"push\" : false\n },\n \"private\" : false,\n \"pulls_url\" : \"https://api.github.com/repos/octocat/Hello-World/pulls{/number}\",\n \"pushed_at\" : \"2011-01-26T19:06:43Z\",\n \"releases_url\" : \"https://api.github.com/repos/octocat/Hello-World/releases{/id}\",\n \"size\" : 108,\n \"ssh_url\" : \"git@github.com:octocat/Hello-World.git\",\n \"stargazers_count\" : 80,\n \"stargazers_url\" : \"https://api.github.com/repos/octocat/Hello-World/stargazers\",\n \"statuses_url\" : \"https://api.github.com/repos/octocat/Hello-World/statuses/{sha}\",\n \"subscribers_url\" : \"https://api.github.com/repos/octocat/Hello-World/subscribers\",\n \"subscription_url\" : \"https://api.github.com/repos/octocat/Hello-World/subscription\",\n \"svn_url\" : \"https://svn.github.com/octocat/Hello-World\",\n \"tags_url\" : \"https://api.github.com/repos/octocat/Hello-World/tags\",\n \"teams_url\" : \"https://api.github.com/repos/octocat/Hello-World/teams\",\n \"template_repository\" : {\n \"anonymous_access_enabled\" : false\n },\n \"topics\" : [ \"octocat\", \"atom\", \"electron\", \"api\" ],\n \"trees_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/trees{/sha}\",\n \"updated_at\" : \"2011-01-26T19:14:43Z\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World\",\n \"visibility\" : \"public\",\n \"watchers\" : 80,\n \"watchers_count\" : 80\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "3f998306-1df1-480c-8b9c-3357ba6077c4", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.115084Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/create-using-template", + "schema": { + "description": "A git repository", + "properties": { + "allow_forking": { + "description": "Whether to allow forking this repo", + "type": "boolean" + }, + "allow_merge_commit": { + "default": true, + "description": "Whether to allow merge commits for pull requests.", + "example": true, + "type": "boolean" + }, + "allow_rebase_merge": { + "default": true, + "description": "Whether to allow rebase merges for pull requests.", + "example": true, + "type": "boolean" + }, + "allow_squash_merge": { + "default": true, + "description": "Whether to allow squash merges for pull requests.", + "example": true, + "type": "boolean" + }, + "anonymous_access_enabled": { + "type": "boolean" + }, + "archive_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref}", + "type": "string" + }, + "archived": { + "default": false, + "description": "Whether the repository is archived.", + "type": "boolean" + }, + "assignees_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/assignees{/user}", + "type": "string" + }, + "blobs_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/git/blobs{/sha}", + "type": "string" + }, + "branches_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/branches{/branch}", + "type": "string" + }, + "clone_url": { + "example": "https://github.com/octocat/Hello-World.git", + "type": "string" + }, + "collaborators_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator}", + "type": "string" + }, + "comments_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/comments{/number}", + "type": "string" + }, + "commits_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/commits{/sha}", + "type": "string" + }, + "compare_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/compare/{base}...{head}", + "type": "string" + }, + "contents_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/contents/{+path}", + "type": "string" + }, + "contributors_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/contributors", + "format": "uri", + "type": "string" + }, + "created_at": { + "example": "2011-01-26T19:01:12Z", + "format": "date-time", + "nullable": true, + "type": "string" + }, + "default_branch": { + "description": "The default branch of the repository.", + "example": "master", + "type": "string" + }, + "delete_branch_on_merge": { + "default": false, + "description": "Whether to delete head branches when pull requests are merged", + "example": false, + "type": "boolean" + }, + "deployments_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/deployments", + "format": "uri", + "type": "string" + }, + "description": { + "example": "This your first repo!", + "nullable": true, + "type": "string" + }, + "disabled": { + "description": "Returns whether or not this repository disabled.", + "type": "boolean" + }, + "downloads_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/downloads", + "format": "uri", + "type": "string" + }, + "events_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/events", + "format": "uri", + "type": "string" + }, + "fork": { + "type": "boolean" + }, + "forks": { + "type": "integer" + }, + "forks_count": { + "example": 9, + "type": "integer" + }, + "forks_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/forks", + "format": "uri", + "type": "string" + }, + "full_name": { + "example": "octocat/Hello-World", + "type": "string" + }, + "git_commits_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/git/commits{/sha}", + "type": "string" + }, + "git_refs_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/git/refs{/sha}", + "type": "string" + }, + "git_tags_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/git/tags{/sha}", + "type": "string" + }, + "git_url": { + "example": "git:github.com/octocat/Hello-World.git", + "type": "string" + }, + "has_downloads": { + "default": true, + "description": "Whether downloads are enabled.", + "example": true, + "type": "boolean" + }, + "has_issues": { + "default": true, + "description": "Whether issues are enabled.", + "example": true, + "type": "boolean" + }, + "has_pages": { + "type": "boolean" + }, + "has_projects": { + "default": true, + "description": "Whether projects are enabled.", + "example": true, + "type": "boolean" + }, + "has_wiki": { + "default": true, + "description": "Whether the wiki is enabled.", + "example": true, + "type": "boolean" + }, + "homepage": { + "example": "https://github.com", + "format": "uri", + "nullable": true, + "type": "string" + }, + "hooks_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/hooks", + "format": "uri", + "type": "string" + }, + "html_url": { + "example": "https://github.com/octocat/Hello-World", + "format": "uri", + "type": "string" + }, + "id": { + "description": "Unique identifier of the repository", + "example": 42, + "type": "integer" + }, + "is_template": { + "default": false, + "description": "Whether this repository acts as a template that can be used to generate new repositories.", + "example": true, + "type": "boolean" + }, + "issue_comment_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/issues/comments{/number}", + "type": "string" + }, + "issue_events_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/issues/events{/number}", + "type": "string" + }, + "issues_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/issues{/number}", + "type": "string" + }, + "keys_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/keys{/key_id}", + "type": "string" + }, + "labels_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/labels{/name}", + "type": "string" + }, + "language": { + "nullable": true, + "type": "string" + }, + "languages_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/languages", + "format": "uri", + "type": "string" + }, + "license": { + "$ref": "#/components/schemas/nullable-license-simple" + }, + "master_branch": { + "type": "string" + }, + "merges_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/merges", + "format": "uri", + "type": "string" + }, + "milestones_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/milestones{/number}", + "type": "string" + }, + "mirror_url": { + "example": "git:git.example.com/octocat/Hello-World", + "format": "uri", + "nullable": true, + "type": "string" + }, + "name": { + "description": "The name of the repository.", + "example": "Team Environment", + "type": "string" + }, + "network_count": { + "type": "integer" + }, + "node_id": { + "example": "MDEwOlJlcG9zaXRvcnkxMjk2MjY5", + "type": "string" + }, + "notifications_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating}", + "type": "string" + }, + "open_issues": { + "type": "integer" + }, + "open_issues_count": { + "example": 0, + "type": "integer" + }, + "organization": { + "$ref": "#/components/schemas/nullable-simple-user" + }, + "owner": { + "$ref": "#/components/schemas/simple-user" + }, + "permissions": { + "properties": { + "admin": { + "type": "boolean" + }, + "maintain": { + "type": "boolean" + }, + "pull": { + "type": "boolean" + }, + "push": { + "type": "boolean" + }, + "triage": { + "type": "boolean" + } + }, + "required": ["admin", "pull", "push"], + "type": "object" + }, + "private": { + "default": false, + "description": "Whether the repository is private or public.", + "type": "boolean" + }, + "pulls_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/pulls{/number}", + "type": "string" + }, + "pushed_at": { + "example": "2011-01-26T19:06:43Z", + "format": "date-time", + "nullable": true, + "type": "string" + }, + "releases_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/releases{/id}", + "type": "string" + }, + "size": { + "example": 108, + "type": "integer" + }, + "ssh_url": { + "example": "git@github.com:octocat/Hello-World.git", + "type": "string" + }, + "stargazers_count": { + "example": 80, + "type": "integer" + }, + "stargazers_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/stargazers", + "format": "uri", + "type": "string" + }, + "starred_at": { + "example": "\"2020-07-09T00:17:42Z\"", + "type": "string" + }, + "statuses_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/statuses/{sha}", + "type": "string" + }, + "subscribers_count": { + "type": "integer" + }, + "subscribers_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/subscribers", + "format": "uri", + "type": "string" + }, + "subscription_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/subscription", + "format": "uri", + "type": "string" + }, + "svn_url": { + "example": "https://svn.github.com/octocat/Hello-World", + "format": "uri", + "type": "string" + }, + "tags_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/tags", + "format": "uri", + "type": "string" + }, + "teams_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/teams", + "format": "uri", + "type": "string" + }, + "template_repository": { + "nullable": true, + "properties": { + "allow_merge_commit": { + "type": "boolean" + }, + "allow_rebase_merge": { + "type": "boolean" + }, + "allow_squash_merge": { + "type": "boolean" + }, + "anonymous_access_enabled": { + "type": "boolean" + }, + "archive_url": { + "type": "string" + }, + "archived": { + "type": "boolean" + }, + "assignees_url": { + "type": "string" + }, + "blobs_url": { + "type": "string" + }, + "branches_url": { + "type": "string" + }, + "clone_url": { + "type": "string" + }, + "collaborators_url": { + "type": "string" + }, + "comments_url": { + "type": "string" + }, + "commits_url": { + "type": "string" + }, + "compare_url": { + "type": "string" + }, + "contents_url": { + "type": "string" + }, + "contributors_url": { + "type": "string" + }, + "created_at": { + "type": "string" + }, + "default_branch": { + "type": "string" + }, + "delete_branch_on_merge": { + "type": "boolean" + }, + "deployments_url": { + "type": "string" + }, + "description": { + "type": "string" + }, + "disabled": { + "type": "boolean" + }, + "downloads_url": { + "type": "string" + }, + "events_url": { + "type": "string" + }, + "fork": { + "type": "boolean" + }, + "forks_count": { + "type": "integer" + }, + "forks_url": { + "type": "string" + }, + "full_name": { + "type": "string" + }, + "git_commits_url": { + "type": "string" + }, + "git_refs_url": { + "type": "string" + }, + "git_tags_url": { + "type": "string" + }, + "git_url": { + "type": "string" + }, + "has_downloads": { + "type": "boolean" + }, + "has_issues": { + "type": "boolean" + }, + "has_pages": { + "type": "boolean" + }, + "has_projects": { + "type": "boolean" + }, + "has_wiki": { + "type": "boolean" + }, + "homepage": { + "type": "string" + }, + "hooks_url": { + "type": "string" + }, + "html_url": { + "type": "string" + }, + "id": { + "type": "integer" + }, + "is_template": { + "type": "boolean" + }, + "issue_comment_url": { + "type": "string" + }, + "issue_events_url": { + "type": "string" + }, + "issues_url": { + "type": "string" + }, + "keys_url": { + "type": "string" + }, + "labels_url": { + "type": "string" + }, + "language": { + "type": "string" + }, + "languages_url": { + "type": "string" + }, + "merges_url": { + "type": "string" + }, + "milestones_url": { + "type": "string" + }, + "mirror_url": { + "type": "string" + }, + "name": { + "type": "string" + }, + "network_count": { + "type": "integer" + }, + "node_id": { + "type": "string" + }, + "notifications_url": { + "type": "string" + }, + "open_issues_count": { + "type": "integer" + }, + "owner": { + "properties": { + "avatar_url": { + "type": "string" + }, + "events_url": { + "type": "string" + }, + "followers_url": { + "type": "string" + }, + "following_url": { + "type": "string" + }, + "gists_url": { + "type": "string" + }, + "gravatar_id": { + "type": "string" + }, + "html_url": { + "type": "string" + }, + "id": { + "type": "integer" + }, + "login": { + "type": "string" + }, + "node_id": { + "type": "string" + }, + "organizations_url": { + "type": "string" + }, + "received_events_url": { + "type": "string" + }, + "repos_url": { + "type": "string" + }, + "site_admin": { + "type": "boolean" + }, + "starred_url": { + "type": "string" + }, + "subscriptions_url": { + "type": "string" + }, + "type": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "type": "object" + }, + "permissions": { + "properties": { + "admin": { + "type": "boolean" + }, + "maintain": { + "type": "boolean" + }, + "pull": { + "type": "boolean" + }, + "push": { + "type": "boolean" + }, + "triage": { + "type": "boolean" + } + }, + "type": "object" + }, + "private": { + "type": "boolean" + }, + "pulls_url": { + "type": "string" + }, + "pushed_at": { + "type": "string" + }, + "releases_url": { + "type": "string" + }, + "size": { + "type": "integer" + }, + "ssh_url": { + "type": "string" + }, + "stargazers_count": { + "type": "integer" + }, + "stargazers_url": { + "type": "string" + }, + "statuses_url": { + "type": "string" + }, + "subscribers_count": { + "type": "integer" + }, + "subscribers_url": { + "type": "string" + }, + "subscription_url": { + "type": "string" + }, + "svn_url": { + "type": "string" + }, + "tags_url": { + "type": "string" + }, + "teams_url": { + "type": "string" + }, + "topics": { + "items": { + "type": "string" + }, + "type": "array" + }, + "trees_url": { + "type": "string" + }, + "updated_at": { + "type": "string" + }, + "url": { + "type": "string" + }, + "visibility": { + "type": "string" + }, + "watchers_count": { + "type": "integer" + } + }, + "type": "object" + }, + "topics": { + "items": { + "type": "string" + }, + "type": "array" + }, + "trees_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/git/trees{/sha}", + "type": "string" + }, + "updated_at": { + "example": "2011-01-26T19:14:43Z", + "format": "date-time", + "nullable": true, + "type": "string" + }, + "url": { + "example": "https://api.github.com/repos/octocat/Hello-World", + "format": "uri", + "type": "string" + }, + "visibility": { + "default": "public", + "description": "The repository visibility: public, private, or internal.", + "type": "string" + }, + "watchers": { + "type": "integer" + }, + "watchers_count": { + "example": 80, + "type": "integer" + } + }, + "required": [ + "archive_url", + "assignees_url", + "blobs_url", + "branches_url", + "collaborators_url", + "comments_url", + "commits_url", + "compare_url", + "contents_url", + "contributors_url", + "deployments_url", + "description", + "downloads_url", + "events_url", + "fork", + "forks_url", + "full_name", + "git_commits_url", + "git_refs_url", + "git_tags_url", + "hooks_url", + "html_url", + "id", + "node_id", + "issue_comment_url", + "issue_events_url", + "issues_url", + "keys_url", + "labels_url", + "languages_url", + "merges_url", + "milestones_url", + "name", + "notifications_url", + "owner", + "private", + "pulls_url", + "releases_url", + "stargazers_url", + "statuses_url", + "subscribers_url", + "subscription_url", + "tags_url", + "teams_url", + "trees_url", + "url", + "clone_url", + "default_branch", + "forks", + "forks_count", + "git_url", + "has_downloads", + "has_issues", + "has_projects", + "has_wiki", + "has_pages", + "homepage", + "language", + "archived", + "disabled", + "mirror_url", + "open_issues", + "open_issues_count", + "license", + "pushed_at", + "size", + "ssh_url", + "stargazers_count", + "svn_url", + "watchers", + "watchers_count", + "created_at", + "updated_at" + ], + "title": "Repository", + "type": "object" + } + } + } + }, + "insertionIndex": 345 + }, + { + "id": "6a5a4be2-10a9-48e5-a24b-da46cab59210", + "name": "Download a repository archive (zip) - 302", + "request": { + "urlPath": "/repos/m1j7qdl0b9hjy8rbhcfxt7bencfgio3k7hxbd5hmdkjkr3503di9q0vh4pthvu87nkavytz4y0mza862uwri7ggbvl1x1zpsm0vy9d7eopx54mx4qp10kmwmo933g335s4095vx7ecok16f37ol4xf4v8jcg07vodnn/llwv87xopg5239g05w7iahigv6n6ttgiu57ksejhh6zeb4zpjnvoq846/zipball/wfvkp53xh2nnr3ay0ln13vxslzb4pizs9ocj4uyuooojc3wmbr9dm72n5aru5enh3wxthuf86hssc0l6wi1vro7hhzhvs0ii978o6mh2s2djmddt1ae7dvr9g9x", + "method": "GET" + }, + "response": { + "status": 302 + }, + "uuid": "6a5a4be2-10a9-48e5-a24b-da46cab59210", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.113904Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/download-zipball-archive" + } + } + }, + "insertionIndex": 346 + }, + { + "id": "a29ffc32-818d-4d74-8268-5801458312ff", + "name": "Transfer a repository - default", + "request": { + "urlPath": "/repos/zxag49jy5ltm94cyzcw9xy424k0bhescy1ab/a2zeabop539eofv0au586xxepx1rxdkbuz5lwkbbysa8mwm1hwpdm9ghn8fyxhyeaqx3koe8vcumghqzu1aanyp213vsej2893nwe3alqvmp9odi53io4zhwuibc81fop1fwz3viqt13uno1ubzru/transfer", + "method": "POST" + }, + "response": { + "status": 202, + "body": "{\n \"anonymous_access_enabled\" : false,\n \"archive_url\" : \"https://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref}\",\n \"archived\" : false,\n \"assignees_url\" : \"https://api.github.com/repos/octocat/Hello-World/assignees{/user}\",\n \"blobs_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/blobs{/sha}\",\n \"branches_url\" : \"https://api.github.com/repos/octocat/Hello-World/branches{/branch}\",\n \"clone_url\" : \"https://github.com/octocat/Hello-World.git\",\n \"collaborators_url\" : \"https://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator}\",\n \"comments_url\" : \"https://api.github.com/repos/octocat/Hello-World/comments{/number}\",\n \"commits_url\" : \"https://api.github.com/repos/octocat/Hello-World/commits{/sha}\",\n \"compare_url\" : \"https://api.github.com/repos/octocat/Hello-World/compare/{base}...{head}\",\n \"contents_url\" : \"https://api.github.com/repos/octocat/Hello-World/contents/{+path}\",\n \"contributors_url\" : \"https://api.github.com/repos/octocat/Hello-World/contributors\",\n \"created_at\" : \"2011-01-26T19:01:12Z\",\n \"default_branch\" : \"master\",\n \"delete_branch_on_merge\" : true,\n \"deployments_url\" : \"https://api.github.com/repos/octocat/Hello-World/deployments\",\n \"description\" : \"This your first repo!\",\n \"disabled\" : false,\n \"downloads_url\" : \"https://api.github.com/repos/octocat/Hello-World/downloads\",\n \"events_url\" : \"https://api.github.com/repos/octocat/Hello-World/events\",\n \"fork\" : false,\n \"forks_count\" : 9,\n \"forks_url\" : \"https://api.github.com/repos/octocat/Hello-World/forks\",\n \"full_name\" : \"octocat/Hello-World\",\n \"git_commits_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/commits{/sha}\",\n \"git_refs_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/refs{/sha}\",\n \"git_tags_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/tags{/sha}\",\n \"git_url\" : \"git:github.com/octocat/Hello-World.git\",\n \"has_downloads\" : true,\n \"has_issues\" : true,\n \"has_pages\" : false,\n \"has_projects\" : true,\n \"has_wiki\" : true,\n \"homepage\" : \"https://github.com\",\n \"hooks_url\" : \"https://api.github.com/repos/octocat/Hello-World/hooks\",\n \"html_url\" : \"https://github.com/octocat/Hello-World\",\n \"id\" : 1296269,\n \"is_template\" : true,\n \"issue_comment_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/comments{/number}\",\n \"issue_events_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/events{/number}\",\n \"issues_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues{/number}\",\n \"keys_url\" : \"https://api.github.com/repos/octocat/Hello-World/keys{/key_id}\",\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World/labels{/name}\",\n \"languages_url\" : \"https://api.github.com/repos/octocat/Hello-World/languages\",\n \"license\" : {\n \"key\" : \"mit\",\n \"name\" : \"MIT License\",\n \"node_id\" : \"MDc6TGljZW5zZW1pdA==\",\n \"spdx_id\" : \"MIT\",\n \"url\" : \"https://api.github.com/licenses/mit\"\n },\n \"merges_url\" : \"https://api.github.com/repos/octocat/Hello-World/merges\",\n \"milestones_url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones{/number}\",\n \"mirror_url\" : \"git:git.example.com/octocat/Hello-World\",\n \"name\" : \"Hello-World\",\n \"network_count\" : 0,\n \"node_id\" : \"MDEwOlJlcG9zaXRvcnkxMjk2MjY5\",\n \"notifications_url\" : \"https://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating}\",\n \"open_issues_count\" : 0,\n \"owner\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"permissions\" : {\n \"admin\" : false,\n \"pull\" : true,\n \"push\" : false\n },\n \"private\" : false,\n \"pulls_url\" : \"https://api.github.com/repos/octocat/Hello-World/pulls{/number}\",\n \"pushed_at\" : \"2011-01-26T19:06:43Z\",\n \"releases_url\" : \"https://api.github.com/repos/octocat/Hello-World/releases{/id}\",\n \"size\" : 108,\n \"ssh_url\" : \"git@github.com:octocat/Hello-World.git\",\n \"stargazers_count\" : 80,\n \"stargazers_url\" : \"https://api.github.com/repos/octocat/Hello-World/stargazers\",\n \"statuses_url\" : \"https://api.github.com/repos/octocat/Hello-World/statuses/{sha}\",\n \"subscribers_count\" : 42,\n \"subscribers_url\" : \"https://api.github.com/repos/octocat/Hello-World/subscribers\",\n \"subscription_url\" : \"https://api.github.com/repos/octocat/Hello-World/subscription\",\n \"svn_url\" : \"https://svn.github.com/octocat/Hello-World\",\n \"tags_url\" : \"https://api.github.com/repos/octocat/Hello-World/tags\",\n \"teams_url\" : \"https://api.github.com/repos/octocat/Hello-World/teams\",\n \"topics\" : [ \"octocat\", \"atom\", \"electron\", \"api\" ],\n \"trees_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/trees{/sha}\",\n \"updated_at\" : \"2011-01-26T19:14:43Z\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World\",\n \"visibility\" : \"public\",\n \"watchers_count\" : 80\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "a29ffc32-818d-4d74-8268-5801458312ff", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.113823Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/transfer", + "schema": { + "description": "Minimal Repository", + "properties": { + "allow_forking": { + "type": "boolean" + }, + "anonymous_access_enabled": { + "type": "boolean" + }, + "archive_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref}", + "type": "string" + }, + "archived": { + "type": "boolean" + }, + "assignees_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/assignees{/user}", + "type": "string" + }, + "blobs_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/git/blobs{/sha}", + "type": "string" + }, + "branches_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/branches{/branch}", + "type": "string" + }, + "clone_url": { + "type": "string" + }, + "code_of_conduct": { + "$ref": "#/components/schemas/code-of-conduct" + }, + "collaborators_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator}", + "type": "string" + }, + "comments_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/comments{/number}", + "type": "string" + }, + "commits_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/commits{/sha}", + "type": "string" + }, + "compare_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/compare/{base}...{head}", + "type": "string" + }, + "contents_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/contents/{+path}", + "type": "string" + }, + "contributors_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/contributors", + "format": "uri", + "type": "string" + }, + "created_at": { + "example": "2011-01-26T19:01:12Z", + "format": "date-time", + "nullable": true, + "type": "string" + }, + "default_branch": { + "type": "string" + }, + "delete_branch_on_merge": { + "type": "boolean" + }, + "deployments_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/deployments", + "format": "uri", + "type": "string" + }, + "description": { + "example": "This your first repo!", + "nullable": true, + "type": "string" + }, + "disabled": { + "type": "boolean" + }, + "downloads_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/downloads", + "format": "uri", + "type": "string" + }, + "events_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/events", + "format": "uri", + "type": "string" + }, + "fork": { + "type": "boolean" + }, + "forks": { + "example": 0, + "type": "integer" + }, + "forks_count": { + "type": "integer" + }, + "forks_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/forks", + "format": "uri", + "type": "string" + }, + "full_name": { + "example": "octocat/Hello-World", + "type": "string" + }, + "git_commits_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/git/commits{/sha}", + "type": "string" + }, + "git_refs_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/git/refs{/sha}", + "type": "string" + }, + "git_tags_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/git/tags{/sha}", + "type": "string" + }, + "git_url": { + "type": "string" + }, + "has_downloads": { + "type": "boolean" + }, + "has_issues": { + "type": "boolean" + }, + "has_pages": { + "type": "boolean" + }, + "has_projects": { + "type": "boolean" + }, + "has_wiki": { + "type": "boolean" + }, + "homepage": { + "nullable": true, + "type": "string" + }, + "hooks_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/hooks", + "format": "uri", + "type": "string" + }, + "html_url": { + "example": "https://github.com/octocat/Hello-World", + "format": "uri", + "type": "string" + }, + "id": { + "example": 1296269, + "type": "integer" + }, + "is_template": { + "type": "boolean" + }, + "issue_comment_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/issues/comments{/number}", + "type": "string" + }, + "issue_events_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/issues/events{/number}", + "type": "string" + }, + "issues_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/issues{/number}", + "type": "string" + }, + "keys_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/keys{/key_id}", + "type": "string" + }, + "labels_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/labels{/name}", + "type": "string" + }, + "language": { + "nullable": true, + "type": "string" + }, + "languages_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/languages", + "format": "uri", + "type": "string" + }, + "license": { + "nullable": true, + "properties": { + "key": { + "type": "string" + }, + "name": { + "type": "string" + }, + "node_id": { + "type": "string" + }, + "spdx_id": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "type": "object" + }, + "merges_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/merges", + "format": "uri", + "type": "string" + }, + "milestones_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/milestones{/number}", + "type": "string" + }, + "mirror_url": { + "nullable": true, + "type": "string" + }, + "name": { + "example": "Hello-World", + "type": "string" + }, + "network_count": { + "type": "integer" + }, + "node_id": { + "example": "MDEwOlJlcG9zaXRvcnkxMjk2MjY5", + "type": "string" + }, + "notifications_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating}", + "type": "string" + }, + "open_issues": { + "example": 0, + "type": "integer" + }, + "open_issues_count": { + "type": "integer" + }, + "owner": { + "$ref": "#/components/schemas/simple-user" + }, + "permissions": { + "properties": { + "admin": { + "type": "boolean" + }, + "maintain": { + "type": "boolean" + }, + "pull": { + "type": "boolean" + }, + "push": { + "type": "boolean" + }, + "triage": { + "type": "boolean" + } + }, + "type": "object" + }, + "private": { + "type": "boolean" + }, + "pulls_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/pulls{/number}", + "type": "string" + }, + "pushed_at": { + "example": "2011-01-26T19:06:43Z", + "format": "date-time", + "nullable": true, + "type": "string" + }, + "releases_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/releases{/id}", + "type": "string" + }, + "size": { + "type": "integer" + }, + "ssh_url": { + "type": "string" + }, + "stargazers_count": { + "type": "integer" + }, + "stargazers_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/stargazers", + "format": "uri", + "type": "string" + }, + "statuses_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/statuses/{sha}", + "type": "string" + }, + "subscribers_count": { + "type": "integer" + }, + "subscribers_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/subscribers", + "format": "uri", + "type": "string" + }, + "subscription_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/subscription", + "format": "uri", + "type": "string" + }, + "svn_url": { + "type": "string" + }, + "tags_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/tags", + "format": "uri", + "type": "string" + }, + "teams_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/teams", + "format": "uri", + "type": "string" + }, + "template_repository": { + "$ref": "#/components/schemas/nullable-repository" + }, + "topics": { + "items": { + "type": "string" + }, + "type": "array" + }, + "trees_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/git/trees{/sha}", + "type": "string" + }, + "updated_at": { + "example": "2011-01-26T19:14:43Z", + "format": "date-time", + "nullable": true, + "type": "string" + }, + "url": { + "example": "https://api.github.com/repos/octocat/Hello-World", + "format": "uri", + "type": "string" + }, + "visibility": { + "type": "string" + }, + "watchers": { + "example": 0, + "type": "integer" + }, + "watchers_count": { + "type": "integer" + } + }, + "required": [ + "archive_url", + "assignees_url", + "blobs_url", + "branches_url", + "collaborators_url", + "comments_url", + "commits_url", + "compare_url", + "contents_url", + "contributors_url", + "deployments_url", + "description", + "downloads_url", + "events_url", + "fork", + "forks_url", + "full_name", + "git_commits_url", + "git_refs_url", + "git_tags_url", + "hooks_url", + "html_url", + "id", + "node_id", + "issue_comment_url", + "issue_events_url", + "issues_url", + "keys_url", + "labels_url", + "languages_url", + "merges_url", + "milestones_url", + "name", + "notifications_url", + "owner", + "private", + "pulls_url", + "releases_url", + "stargazers_url", + "statuses_url", + "subscribers_url", + "subscription_url", + "tags_url", + "teams_url", + "trees_url", + "url" + ], + "title": "Minimal Repository", + "type": "object" + } + } + } + }, + "insertionIndex": 347 + }, + { + "id": "047649a5-684c-4032-9196-e0484d6afef5", + "name": "Replace all repository topics", + "request": { + "urlPath": "/repos/y7i1zwpdn303g59wjltcclgut2juszrly7a9752o48io7khd9o8nkhkuwwl0twy2u/h4vsu8moyoycavacrhcydo5jndlmg2ehe7v9pn03gv5u1z1n7yh7mdie2g44c/topics", + "method": "PUT" + }, + "response": { + "status": 422, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/738390\",\n \"message\" : \"Ex accusamus quis aut amet est. Perspiciatis accusantium omnis inventore. Culpa nobis ullam sunt reprehenderit quod.\",\n \"errors\" : [ \"2tkng3tu0mroxukyxtjflzi25p2qrt772xjpjho8b2rfkclbj4ojrcxk52ujb7z4rxvkc31j0xc3vchgrjoplpa50717pbxovjsa4r6zi1b4dw9kxsul4if9lkovo754k98drphw58n7y1haql6zw6lkap\", \"8057a256cizxsojf8li7m74hgdvwsrpnqyppvvt0970nxrwcx5v6cvimhvn5oocm7t5mr46irvn0wv63cgnpwyv2gxyf2hel0mqpbehp5189mwy3nstgiu3desle6k5jj8ntrr\", \"akb1a8x1pd7mj4qn5x0b6wgv9n1pkt2kuku8ew2m4fthea31029k81czpgkrv0lddsbdv6jy7cqzufkijn2iddy0o8\", \"6qk6lxh4zxckwy78l44j6qybysqng5al03cxb7i8bitbz3gcco37erxcekgx4coy4arg90wi32280qkzj7rj07g3fdo6ndi3f3hs5yfpz1an44y4f6wgqwt2y6qnf699dp65e201bmnstmyj3ct1c9rxfkqgk0citk9i9kf6q9\", \"v9f1ojxz2q9epxxlawtpnd9ul1worea9w8kgb6904jdk\", \"pddx75iq5q27t67tn6xu0jr09wydzpytfp19ykxk3j22mepea5kt\", \"kf3tyupnq0hvgixqzs8trpdvuixivtl372xzxxt367bw2k4kuyswn7pbbdw246ka\" ]\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "047649a5-684c-4032-9196-e0484d6afef5", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.113197Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/replace-all-topics", + "schema": { + "description": "Validation Error Simple", + "properties": { + "documentation_url": { + "type": "string" + }, + "errors": { + "items": { + "type": "string" + }, + "type": "array" + }, + "message": { + "type": "string" + } + }, + "required": ["message", "documentation_url"], + "title": "Validation Error Simple", + "type": "object" + } + } + } + }, + "insertionIndex": 348 + }, + { + "id": "df8f88af-17c0-4f59-aad4-623b73672307", + "name": "Replace all repository topics", + "request": { + "urlPath": "/repos/s090tvipld5bsrsrndgjh60a0i6uiarsojmuqg55lmf45/1z6e3ouxgq9pzkhug9r5nd5ofwz6sn7uqrd0uhy3gcnhvgmo6o45o7edj6qcfqma1xw838hbm4k6rygt8amz23c8gq2wsogdm96nvvgfbsxlqxij9dxklu8ymit16pc4lj3hp6qgbjqkcehgrbdrvzajd0ijti6yy4ncxb8qat0zp5ce/topics", + "method": "PUT" + }, + "response": { + "status": 415, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/754428\",\n \"message\" : \"Iste quo sapiente in. Voluptatem quaerat repudiandae commodi consequatur dolore. Laborum dolores eos maxime optio modi. Et qui magni non cumque nisi animi illo.\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "df8f88af-17c0-4f59-aad4-623b73672307", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.112995Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/replace-all-topics", + "schema": { + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": ["message", "documentation_url"], + "type": "object" + } + } + } + }, + "insertionIndex": 349 + }, + { + "id": "54f92026-9452-4c46-ac0c-bbea7c19b714", + "name": "Replace all repository topics", + "request": { + "urlPath": "/repos/4h9r4fkb056a2z16scjb2gtqbaca/9kbsx5tww6rn9vdgyrmjcml1ztc8se9x5s2ytsrnt9g8zjalduii2392uwisn8evlujcu7tei0tzv2se9pgzbkak6f0eyr5dqjoxwoiw3m59mixsisp6viko8s6mpgrxixyq7kmfzz6xed7sr8tua1venevdfayt5bcia6hemv5hwky007rn30b37/topics", + "method": "PUT" + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/524738\",\n \"message\" : \"Est deleniti perspiciatis omnis accusamus molestias. Ea voluptatum nulla excepturi aut. Magnam repellat rerum et alias quas dolorum quae. Omnis aut eum sit deleniti alias. Dolorem incidunt nobis ut.\",\n \"url\" : \"https://web.example.mocklab.io/650594\",\n \"status\" : \"kijz1c9i7w9zbypmg94q5dc9tbh9c1iqrgpstwydokchfgqimkojs2qhi3jm8icy5qtn8ft0dttqbxuoot4d0j8k4y2s69gadoahi4ug6j6a06\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "54f92026-9452-4c46-ac0c-bbea7c19b714", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.112844Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/replace-all-topics", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 350 + }, + { + "id": "0d95655f-5174-48c9-87e8-ee1938cdd437", + "name": "Replace all repository topics - default", + "request": { + "urlPath": "/repos/mlzdrv8ee9gd5wi3nnp48839uwmpur0a5ff/80h85adf0fd9saiq41rf3mhhcwyrl2nsepta2d7tdqjk4eyapjitnz7sj0mwap6ccgoatqm6zl0vvx5t11pxndgw15mig5hse5tu7pu3mu5qdftteu5i7j/topics", + "method": "PUT" + }, + "response": { + "status": 200, + "body": "{\n \"names\" : [ \"octocat\", \"atom\", \"electron\", \"api\" ]\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "0d95655f-5174-48c9-87e8-ee1938cdd437", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.112618Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/replace-all-topics", + "schema": { + "description": "A topic aggregates entities that are related to a subject.", + "properties": { + "names": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": ["names"], + "title": "Topic", + "type": "object" + } + } + } + }, + "insertionIndex": 351 + }, + { + "id": "d1a2219a-6861-4a0e-8b63-c3ff8dd0e6cd", + "name": "Get all repository topics", + "request": { + "urlPath": "/repos/7bfsrn0uvl3g5rj6reyixch05goqaojau6qra97d0ctcjhjow4ca83f5j2gonw2gt4zaaexxmqvi4k5h2v9pjnk5uici5m0po991krs6htvlg75oef2imq20o8dbkwpmiydlhw4kw4eu78lpnpe2wu7y5db8ks2ojinlv5njrj30h9iw183830ing0/290ztu1l0zdatn9zlsigm2p4u9e9ns276y09exdb6iqqcsvt/topics", + "method": "GET" + }, + "response": { + "status": 415, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/451519\",\n \"message\" : \"Nostrum fuga vero quae recusandae necessitatibus sint occaecati. Consequatur quo ipsum. Explicabo officia perspiciatis. Possimus et consequatur voluptatem non.\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "d1a2219a-6861-4a0e-8b63-c3ff8dd0e6cd", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.112559Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/get-all-topics", + "schema": { + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": ["message", "documentation_url"], + "type": "object" + } + } + } + }, + "insertionIndex": 352 + }, + { + "id": "5297ad1b-88c8-40ef-b82a-d9e3679c7a96", + "name": "Get all repository topics", + "request": { + "urlPath": "/repos/802ki8qn5rnmkz9d2nq6xlm7kfoc7sohuv1tupfg3c9kf6xrorg5xbp2jlqa7cux9vseb6l74jks07u2g046k4mut84wir3r4lurhwqxtmokfxonjcq9y05zjo7get4afhkp8qkaxgtack0d8ttmn2b11kmoxugnvzu3kpeidwfdzh/z9am9gx5uum8zl520o8jub0pshz31bevjav3nlnjlh5vtm71wvvnhd3b789f405sosceb1b7almxxrnub8onbgotzf2k7evp21ikt0bf1ztvcb11d3j45r8hexr3uq931r4hk53hyzwgx0p2exlt7wqty6ikisf5teqw9et4pfh218i9bp8sg/topics", + "method": "GET" + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/735329\",\n \"message\" : \"Laudantium cumque molestias quam aperiam quaerat ullam aut. Aut quae nulla consectetur voluptatem. Facere quod et error vitae. Aliquam sint nostrum modi. Est animi est molestiae omnis magnam neque.\",\n \"url\" : \"https://web.example.mocklab.io/788430\",\n \"status\" : \"c8828f0ygikxay73\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "5297ad1b-88c8-40ef-b82a-d9e3679c7a96", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.112403Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/get-all-topics", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 353 + }, + { + "id": "82fc43aa-a07b-4d1e-a02b-e5f8c18738f5", + "name": "Get all repository topics - default", + "request": { + "urlPath": "/repos/ku1lg2fgni49rc9iizps7vlmygt5mr2rcxrtaqf9bv1x3lmsont7zih0csw3wazglrhh/7dslwiak5v0mqxbu73e/topics", + "method": "GET" + }, + "response": { + "status": 200, + "body": "{\n \"names\" : [ \"octocat\", \"atom\", \"electron\", \"api\" ]\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "82fc43aa-a07b-4d1e-a02b-e5f8c18738f5", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.112177Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/get-all-topics", + "schema": { + "description": "A topic aggregates entities that are related to a subject.", + "properties": { + "names": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": ["names"], + "title": "Topic", + "type": "object" + } + } + } + }, + "insertionIndex": 354 + }, + { + "id": "8a269a55-b0a6-4016-b041-4b0f23bf4af1", + "name": "List repository teams - default", + "request": { + "urlPath": "/repos/wzycmwfwhd5lp70ygnropu9rnzpd0ttb3yxkosebrvq5zoyg5wr7/7r99f04d5/teams", + "method": "GET" + }, + "response": { + "status": 200, + "body": "[ {\n \"description\" : \"A great team.\",\n \"html_url\" : \"https://github.com/orgs/github/teams/justice-league\",\n \"id\" : 1,\n \"members_url\" : \"https://api.github.com/teams/1/members{/member}\",\n \"name\" : \"Justice League\",\n \"node_id\" : \"MDQ6VGVhbTE=\",\n \"permission\" : \"admin\",\n \"privacy\" : \"closed\",\n \"repositories_url\" : \"https://api.github.com/teams/1/repos\",\n \"slug\" : \"justice-league\",\n \"url\" : \"https://api.github.com/teams/1\"\n} ]", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "8a269a55-b0a6-4016-b041-4b0f23bf4af1", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.112113Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/list-teams", + "schema": { + "items": { + "$ref": "#/components/schemas/team" + }, + "type": "array" + } + } + } + }, + "insertionIndex": 355 + }, + { + "id": "b0efa984-e6cb-4b88-9cbb-d568e279852b", + "name": "Download a repository archive (tar) - 302", + "request": { + "urlPath": "/repos/o3ad4gmttegiqxc4vljxr4edxt9yqwi99wlhmjkz0mocnf7gucdfcp15805qzlmhst2cait6iur8pchdikiope94zbxgejnte7592igds8p4j4e7rn02wj/4p1zfgof9ejtostg0keyoxxf1khxi1oc29zgu238rhgr8012hgn8wizm5bg4t6xmvylc4s0ct5qprzk5bq60srlgu95hh6ve3e6c7v4rrm4n/tarball/xlqmxee3tfqzfss4iaidcs4471f614jlo5cx8gv0yagnh84d3106x5p2ogruq10wo386u2nw87w3cugint2141uilqs3okk1tlpmjkvzc7e67lk8xebs87lqpa0ac379qrylnimu2gyia91erpu", + "method": "GET" + }, + "response": { + "status": 302 + }, + "uuid": "b0efa984-e6cb-4b88-9cbb-d568e279852b", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.112066Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/download-tarball-archive" + } + } + }, + "insertionIndex": 356 + }, + { + "id": "50961fd3-b85d-4042-a088-5e9bef8e0bc9", + "name": "List repository tags - default", + "request": { + "urlPath": "/repos/4w954rl383jt3fek3lkl7n3932yluslfc7fnan9ck53fl3tvqr949nh5g4t8fsu1zyc0lou9z7/shxhk7r3hgbso6atxy6ydjffdzybc6yadllu37vetv74ennl0qy0lmt3koi2tt12rleluacqoo8v3cp42kkutmubbdlam90nyte7j0i3t1iy/tags", + "method": "GET" + }, + "response": { + "status": 200, + "body": "[ {\n \"commit\" : {\n \"sha\" : \"c5b97d5ae6c19d5c5df71a34c7fbeeda2479ccbc\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/commits/c5b97d5ae6c19d5c5df71a34c7fbeeda2479ccbc\"\n },\n \"name\" : \"v0.1\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"tarball_url\" : \"https://github.com/octocat/Hello-World/tarball/v0.1\",\n \"zipball_url\" : \"https://github.com/octocat/Hello-World/zipball/v0.1\"\n} ]", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "50961fd3-b85d-4042-a088-5e9bef8e0bc9", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.112016Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/list-tags", + "schema": { + "items": { + "$ref": "#/components/schemas/tag" + }, + "type": "array" + } + } + } + }, + "insertionIndex": 357 + }, + { + "id": "dd5f23ed-9ce2-4b5d-81d3-df2fef2b8c0a", + "name": "Set a repository subscription - default", + "request": { + "urlPath": "/repos/2m3wghbxaf62ra547a81f64q6t13acwn3sr81l70xx409nbmhnyczgy0sti64h0nb10sysdfqbsq5sc8ten6ty4fkj6d2nqccrupvuoovbx62o7aj7j7iktfjlennzo/r39io9pa2lskhzgueik0iyymv0q0syjjqv79ivbevh9v5yhswwg57znwcjlv0nzqhylxs1rpp92463q1kajt97xo4swqfkqv2ogipsninot63trr8cszyqzl57ptslmrf0i4dwpolbwpduwli/subscription", + "method": "PUT" + }, + "response": { + "status": 200, + "body": "{\n \"created_at\" : \"2012-10-06T21:34:12Z\",\n \"ignored\" : false,\n \"repository_url\" : \"https://api.github.com/repos/octocat/example\",\n \"subscribed\" : true,\n \"url\" : \"https://api.github.com/repos/octocat/example/subscription\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "dd5f23ed-9ce2-4b5d-81d3-df2fef2b8c0a", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.111963Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "activity/set-repo-subscription", + "schema": { + "description": "Repository invitations let you manage who you collaborate with.", + "properties": { + "created_at": { + "example": "2012-10-06T21:34:12Z", + "format": "date-time", + "type": "string" + }, + "ignored": { + "description": "Determines if all notifications should be blocked from this repository.", + "type": "boolean" + }, + "reason": { + "nullable": true, + "type": "string" + }, + "repository_url": { + "example": "https://api.github.com/repos/octocat/example", + "format": "uri", + "type": "string" + }, + "subscribed": { + "description": "Determines if notifications should be received from this repository.", + "example": true, + "type": "boolean" + }, + "url": { + "example": "https://api.github.com/repos/octocat/example/subscription", + "format": "uri", + "type": "string" + } + }, + "required": [ + "created_at", + "ignored", + "reason", + "subscribed", + "url", + "repository_url" + ], + "title": "Repository Invitation", + "type": "object" + } + } + } + }, + "insertionIndex": 358 + }, + { + "id": "5657d889-98e7-49a6-ac0f-ace6ab290379", + "name": "Get a repository subscription - 404", + "request": { + "urlPath": "/repos/o6bt2qm3x0ognnjrhdoj5hyzc0pelk6xgajix2x1dl2qa36isr1/yiwsstdlx07onc00aajfxvrb24kxavxmjtdgospbnp7d1aa9myt7n1h1qjbix2nk4rs5d3hi6rqb2e840viup61v44vm9rs6011ax2mbx1kzq24prujn3cj3h4f7urccbi7cm8r0o37h9bpdrdo2g74esqgise7tuioe5a8rg9603dbat3wou5e5l6p6bcpb4dhli8/subscription", + "method": "GET" + }, + "response": { + "status": 404 + }, + "uuid": "5657d889-98e7-49a6-ac0f-ace6ab290379", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.111878Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "activity/get-repo-subscription" + } + } + }, + "insertionIndex": 359 + }, + { + "id": "a4cb6d0e-7665-40f8-a998-4c886c449437", + "name": "Get a repository subscription (application/json)", + "request": { + "urlPath": "/repos/fi1w6a13lfzav86gygm4ukwq9nrgg57qwzi6za1nmi19q77vy1r5cdk5y0l0xuop58cnb8eia68ghglk/dz0a7br4a9phg0w0yml8qavk55ibalvelnwnubi2em3bzsffto2oa9fdzmlriin6vj7zzucrrc4htn9arroit402qap1a5t4yj87tao6jv9wm9zc8g62s7q8ph3qo4wvaawnx9wvmalhhfdl9f5bunpqkyru69ak0p74wq3neip2vkg2p78n921dvi8qh2mubjo4j6pa/subscription", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 403, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/293191\",\n \"message\" : \"Molestiae et ex. Perspiciatis excepturi autem unde. Excepturi debitis est asperiores sapiente repellendus molestiae quia. Est qui magni possimus exercitationem suscipit dolor. Consectetur aut voluptat\",\n \"url\" : \"https://web.example.mocklab.io/433415\",\n \"status\" : \"j34gc9tpx0r8s6uxdec6i0jc09g1cam8314sn688m55oce84d77682b6c5k22z38clw0hmpudew2phd4cscvcdmycji9aityi8uz3y0xza6khtceeeiexeex0bmfhnvxpzcrxptxqz53fl622tdf0rorsldxa7i6d3hjtvjebbowdynbqdhjsb\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "a4cb6d0e-7665-40f8-a998-4c886c449437", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.111832Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "activity/get-repo-subscription", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 360 + }, + { + "id": "a43c5e53-c6c8-4b53-b290-7673aec37be1", + "name": "Get a repository subscription (application/json) - response-if-you-subscribe-to-the-repository", + "request": { + "urlPath": "/repos/68ftzaq87g6hjhy9ca8kls3wz9vs9y14wl0sd72dbr4gxny2j7aplwy6k2a3lackpz417v8vybl1mpkem2b6509qad90y78b8gxvne560nsp86uvir9fyhoghold55d7/6x8qcmgl9n7ce2z0yq3rqbhvj6a6ot9mu57r1hj5jm3ng0xwls36r2agw4quokd32yhgal4ggvnmntzf4qohlovjmhwsfsli4gj6iujm0uk0ahnfqqrcpfpecjpnkdff3w8s2m4nm81t38ryjugoux2ub1/subscription", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 200, + "body": "{\n \"created_at\" : \"2012-10-06T21:34:12Z\",\n \"ignored\" : false,\n \"repository_url\" : \"https://api.github.com/repos/octocat/example\",\n \"subscribed\" : true,\n \"url\" : \"https://api.github.com/repos/octocat/example/subscription\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "a43c5e53-c6c8-4b53-b290-7673aec37be1", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.111583Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "activity/get-repo-subscription", + "schema": { + "description": "Repository invitations let you manage who you collaborate with.", + "properties": { + "created_at": { + "example": "2012-10-06T21:34:12Z", + "format": "date-time", + "type": "string" + }, + "ignored": { + "description": "Determines if all notifications should be blocked from this repository.", + "type": "boolean" + }, + "reason": { + "nullable": true, + "type": "string" + }, + "repository_url": { + "example": "https://api.github.com/repos/octocat/example", + "format": "uri", + "type": "string" + }, + "subscribed": { + "description": "Determines if notifications should be received from this repository.", + "example": true, + "type": "boolean" + }, + "url": { + "example": "https://api.github.com/repos/octocat/example/subscription", + "format": "uri", + "type": "string" + } + }, + "required": [ + "created_at", + "ignored", + "reason", + "subscribed", + "url", + "repository_url" + ], + "title": "Repository Invitation", + "type": "object" + } + } + } + }, + "insertionIndex": 361 + }, + { + "id": "938c4ec0-d9c1-4b4c-ae68-fa088e570bc1", + "name": "Delete a repository subscription - 204", + "request": { + "urlPath": "/repos/xe4fy113iuire6sute05zbott383ogxouiumoteg8h59c9t0gg0gzn5r0kxe23tfyji669w/29kb2hg1s508yr20pjzsvwv1/subscription", + "method": "DELETE" + }, + "response": { + "status": 204 + }, + "uuid": "938c4ec0-d9c1-4b4c-ae68-fa088e570bc1", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.111479Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "activity/delete-repo-subscription" + } + } + }, + "insertionIndex": 362 + }, + { + "id": "0c746c67-202c-49b2-b1ff-c340e48d4684", + "name": "List watchers - default", + "request": { + "urlPath": "/repos/5gx1z04wngkr9jc32r1zc767z9ebcvtgflga8mflzxha2zcctuztw45z4aj9rodn44jtg7b1fvcfuf4q4w315idcjz32tkbx7vtongigu0a6mjexc95h7uo7noyj121xwir91ztfkq6eij1cf1or1mhrgkjt2auovbsu1u8xt5h1u41zf784lo/xiqwhvb1a55m6rdw5oddofz0wc3az95i2n71cpf44rhhoy9g8ssm8qefzq7p6h6isvkn6j9pki7/subscribers", + "method": "GET" + }, + "response": { + "status": 200, + "body": "[ {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n} ]", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "0c746c67-202c-49b2-b1ff-c340e48d4684", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.111442Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "activity/list-watchers-for-repo", + "schema": { + "items": { + "$ref": "#/components/schemas/simple-user" + }, + "type": "array" + } + } + } + }, + "insertionIndex": 363 + }, + { + "id": "64da4620-e446-4c28-8c68-b611b577e2ee", + "name": "Create a commit status - default", + "request": { + "urlPath": "/repos/pj1cxmv1gwcwyy00takbj0k/d31b43x4exjex284a2jhvvqvcsqi8xw9wyr64i0wn247eznbp5dhxu3ui44yke4m1afjibj4r242i11f8vcvv0c4ncjasam6yjt9cdn84sj0bo7j1862fahzxoruw05xdy50wee7vrhcvjkdt9hjkrnwewkvppivkpfhm7ofk5a2y3tws1fpzdyboh/statuses/agoggbd6nlxbb5m7z9bebpqvukic8w3j6h6emqjvesfigj4xo473tkgouctdpmdb07lr8guhcl6mqm3hf9ug6t5x6ncc3ynsj1hu90udvjl1s1xv2cjaifttbhq8dchkubscfomil7nf038r46qliafsf7gqcoidvmgoezb85k1qqe96pfr8qd4a70cdr20a9p4k", + "method": "POST" + }, + "response": { + "status": 201, + "body": "{\n \"avatar_url\" : \"https://github.com/images/error/hubot_happy.gif\",\n \"context\" : \"continuous-integration/jenkins\",\n \"created_at\" : \"2012-07-20T01:19:13Z\",\n \"creator\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"description\" : \"Build has completed successfully\",\n \"id\" : 1,\n \"node_id\" : \"MDY6U3RhdHVzMQ==\",\n \"state\" : \"success\",\n \"target_url\" : \"https://ci.example.com/1000/output\",\n \"updated_at\" : \"2012-07-20T01:19:13Z\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/statuses/6dcb09b5b57875f334f61aebed695e2e4193db5e\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "64da4620-e446-4c28-8c68-b611b577e2ee", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.111384Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/create-commit-status", + "schema": { + "description": "The status of a commit.", + "properties": { + "avatar_url": { + "nullable": true, + "type": "string" + }, + "context": { + "type": "string" + }, + "created_at": { + "type": "string" + }, + "creator": { + "$ref": "#/components/schemas/nullable-simple-user" + }, + "description": { + "type": "string" + }, + "id": { + "type": "integer" + }, + "node_id": { + "type": "string" + }, + "state": { + "type": "string" + }, + "target_url": { + "type": "string" + }, + "updated_at": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "required": [ + "url", + "avatar_url", + "id", + "node_id", + "state", + "description", + "target_url", + "context", + "created_at", + "updated_at", + "creator" + ], + "title": "Status", + "type": "object" + } + } + } + }, + "insertionIndex": 364 + }, + { + "id": "96130f3b-ea0c-449b-8746-03cc313240ca", + "name": "Get the hourly commit count for each day - 204", + "request": { + "urlPath": "/repos/vfzip9zqa/x29s53d894cxp0sgecmhu2y023k3ak2m5cwdupu7q4syd3cf9iub4p0xyu68y6o9kbfjtmupbylgn1xf4yc125cjg4vdhedr96h9smn37dvpu8vbrd3526eegye39pt24ib0h5nty314tvzrfno1mwiucf4/stats/punch_card", + "method": "GET" + }, + "response": { + "status": 204 + }, + "uuid": "96130f3b-ea0c-449b-8746-03cc313240ca", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.111248Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/get-punch-card-stats" + } + } + }, + "insertionIndex": 365 + }, + { + "id": "6a0c7bf9-df91-4501-a077-b9ec72795127", + "name": "Get the hourly commit count for each day (application/json) - default", + "request": { + "urlPath": "/repos/j0nsnd8p10yj11smz63jtmlt5pqq95ybxoppuubha6hbjtew97nt5mcwz53ud34q0xc6gm042iug2tuhnmm55803qe9wiz366stihf7s0w51b7dpxd1jfsnambzxhfbvm5v6c3gr6dfrcd3grwrqw2q/y31esbhhr7lrdlyoz00exxgjetsn2nkhzs1g06t8rqunlsj8ii12ggrimva3mfday4c7r2cf0xpcqo17mcy1lmbi9r1v8c0q0ypney6lpfsw4ymzczonrucrtwlilto7u608ccn3ewjk1ebvau13fi623aiptlzf2ttpi763ikwzcw4o22rakgghgmto753ti/stats/punch_card", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 200, + "body": "[ [ 0, 0, 5 ], [ 0, 1, 43 ], [ 0, 2, 21 ] ]", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "6a0c7bf9-df91-4501-a077-b9ec72795127", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.111205Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/get-punch-card-stats", + "schema": { + "items": { + "$ref": "#/components/schemas/code-frequency-stat" + }, + "type": "array" + } + } + } + }, + "insertionIndex": 366 + }, + { + "id": "44a4d0c7-4504-43ac-ba92-d36a87182e5d", + "name": "Get the weekly commit count", + "request": { + "urlPath": "/repos/852u6ieiu1bls92pgd5c/tymkdl1e49xb4bzs10gyoqcgmet3wgmmvb7ajr/stats/participation", + "method": "GET" + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/645153\",\n \"message\" : \"Cupiditate doloribus inventore et explicabo labore aperiam occaecati. Voluptate consequuntur illo est. Ducimus qui et. Magnam sint enim quisquam sit doloremque a. Magni voluptatum aspernatur tenetur q\",\n \"url\" : \"https://web.example.mocklab.io/136267\",\n \"status\" : \"u748hwngsh9arob1ekk3sdgbhxmtxmu2\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "44a4d0c7-4504-43ac-ba92-d36a87182e5d", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.11115Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/get-participation-stats", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 367 + }, + { + "id": "3bcb8720-f8e3-4e50-9ba5-864851b6893b", + "name": "Get the weekly commit count - default", + "request": { + "urlPath": "/repos/4ridh0h3l5ffe17txnnkn5wtbdw86tmzxyxx04i0dnswne6pwhcf2ukhd687b1gpqoxhsax4hr7upp891t053yfuy1b5ja78ny2ufa6rv052olw1rj816ca4hkzvz1uhsh9/76az8i7gzbab2keq7buf8cx7ns9ctownptxpwo4kyipmg6fvys5s5irmjaffmjm36l/stats/participation", + "method": "GET" + }, + "response": { + "status": 200, + "body": "{\n \"all\" : [ 11, 21, 15, 2, 8, 1, 8, 23, 17, 21, 11, 10, 33, 91, 38, 34, 22, 23, 32, 3, 43, 87, 71, 18, 13, 5, 13, 16, 66, 27, 12, 45, 110, 117, 13, 8, 18, 9, 19, 26, 39, 12, 20, 31, 46, 91, 45, 10, 24, 9, 29, 7 ],\n \"owner\" : [ 3, 2, 3, 0, 2, 0, 5, 14, 7, 9, 1, 5, 0, 48, 19, 2, 0, 1, 10, 2, 23, 40, 35, 8, 8, 2, 10, 6, 30, 0, 2, 9, 53, 104, 3, 3, 10, 4, 7, 11, 21, 4, 4, 22, 26, 63, 11, 2, 14, 1, 10, 3 ]\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "3bcb8720-f8e3-4e50-9ba5-864851b6893b", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.110905Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/get-participation-stats", + "schema": { + "properties": { + "all": { + "items": { + "type": "integer" + }, + "type": "array" + }, + "owner": { + "items": { + "type": "integer" + }, + "type": "array" + } + }, + "required": ["all", "owner"], + "title": "Participation Stats", + "type": "object" + } + } + } + }, + "insertionIndex": 368 + }, + { + "id": "10558158-d813-4c9b-bc26-84f35796705d", + "name": "Get all contributor commit activity - 204", + "request": { + "urlPath": "/repos/t94rgzf56m0g5f0ojksy1acdt5370qkpq21vgt22wya1wb/7nq9zu8owu958wdafyit5mprf1mgrl2znk2e63sl7we99553k2dro167mw0kofsawwyrf1jq0p4afwecu62s7uhspwo8pk5yi1t8pfvdrt38wg0xc51i8/stats/contributors", + "method": "GET" + }, + "response": { + "status": 204 + }, + "uuid": "10558158-d813-4c9b-bc26-84f35796705d", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.110822Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/get-contributors-stats" + } + } + }, + "insertionIndex": 369 + }, + { + "id": "0a64a5e0-3360-4995-951f-afba08663ae6", + "name": "Get all contributor commit activity (application/json)", + "request": { + "urlPath": "/repos/eaomox50bkzwjqun8kobrklca4myfb7w1zv6wrdr1dkxr4jpgs4k4fw4bccyevycgbye7w0ifa9k2wehfek080h8m3kdeq112b8j3usq5rwcckmwq4gnxngmwvns6czeka78l708kg1rso/7kqndfogu6uyn18xhuwuhdqwff9iuzslucqk1b8u0g6x9khta5bvprdkpfu2eyd3jbhtkmheyiwkc2fgthwp8kgwcwp0sdedrtlee6er7sifuv3vs63x3kpxpwf5wg6sums1scsr4m9zdmc4osoqkgwx3e0tz0a88m4cc728659n54rwcg4ouc2lgucn81ht9yg3/stats/contributors", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 202, + "body": "{ }", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "0a64a5e0-3360-4995-951f-afba08663ae6", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.11078Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/get-contributors-stats", + "schema": { + "type": "object" + } + } + } + }, + "insertionIndex": 370 + }, + { + "id": "c1c31723-bff0-4260-862b-60f5107879cf", + "name": "Get all contributor commit activity (application/json) - default", + "request": { + "urlPath": "/repos/dfpoqbqc5mkukww65wva32aajqzo4rzezp1fxrl2yuuv2jrwu0s0ab1w82ba6a3rhn5wcale0ci7ibzh3u0m44n6euji/jkyrlhysvo12me9s7qd4hsrq6p5h2joy1dr6n36kncme1bmi90l9gczf25ekf5db49cytjbrkli2h0ikd8886dn4tgcjjicya6il3lql2zn0ykkhrb7xmqu73i216nmjowmae2n1saa4slofuj4h/stats/contributors", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 200, + "body": "[ {\n \"author\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"total\" : 135,\n \"weeks\" : [ {\n \"a\" : 6898,\n \"c\" : 10,\n \"d\" : 77,\n \"w\" : 1367712000\n } ]\n} ]", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "c1c31723-bff0-4260-862b-60f5107879cf", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.110726Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/get-contributors-stats", + "schema": { + "items": { + "$ref": "#/components/schemas/contributor-activity" + }, + "type": "array" + } + } + } + }, + "insertionIndex": 371 + }, + { + "id": "ea95710a-f7d4-40ca-9cd4-f84594464f03", + "name": "Get the last year of commit activity - 204", + "request": { + "urlPath": "/repos/9w43xa2wtuzsvgmyiw98pytecp9lz2wdwc4n4cpp95fs7mefd4clfr55j66v1zy849ju64hejw7bzavomkvkq4bpc38y4dgp3xc5yzymqx5faq6618zn9qvrhxc3sw1w6i7u5owqd5rbkxf06vy4ofuqs8d7t4yvusgn6ry2500jecmj0u65choamwn8st3r51n6/dcam7m1j58ml53efmznum9drdp3qs58my50ranj4hvcyv3uyxggl7s7yp9v6mcvpp0964aencsyir25wxob9d31ff/stats/commit_activity", + "method": "GET" + }, + "response": { + "status": 204 + }, + "uuid": "ea95710a-f7d4-40ca-9cd4-f84594464f03", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.110672Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/get-commit-activity-stats" + } + } + }, + "insertionIndex": 372 + }, + { + "id": "da1273ce-8d96-4e47-b13a-12aff84cc18f", + "name": "Get the last year of commit activity (application/json)", + "request": { + "urlPath": "/repos/dg6xr6xo1etqihy839cwa5ipjufsg4j2peigale7hscaf9pnzxq51xpb2xax9ifpasfzng7/rioni6ugnmy1medcfoijhu1hwyk5l8whj8jdk4yw2bi5xsp6z4nt02vg8s8vvwgar20pt6a4erwkgaegy5ohsjukp5x2ff6m9c2ktdhajoonbynyj0jl1f2ihwle2/stats/commit_activity", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 202, + "body": "{ }", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "da1273ce-8d96-4e47-b13a-12aff84cc18f", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.110627Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/get-commit-activity-stats", + "schema": { + "type": "object" + } + } + } + }, + "insertionIndex": 373 + }, + { + "id": "375b06b0-8ea8-447e-8f45-dd0d103dcbf0", + "name": "Get the last year of commit activity (application/json) - default", + "request": { + "urlPath": "/repos/ghpbr4dxl699hbcjo3rnelf4ia37ylye3igv5tfblaqino0su3yvqfej1mxijyme119o2xeg8d9nslr8wmx8sbhu93nv659n593o1mae9db9uo147tnodtx12xanbwedyrenye/ju2xadhwh0jof6idfsx9o5acp5shh03hyhu2yczhcdvurxpqh8hsbc7nw5xci9a3cbot2g4prqzbppknwkqmoakhlvojdd2shfsbqdkc/stats/commit_activity", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 200, + "body": "[ {\n \"days\" : [ 0, 3, 26, 20, 39, 1, 0 ],\n \"total\" : 89,\n \"week\" : 1336280400\n} ]", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "375b06b0-8ea8-447e-8f45-dd0d103dcbf0", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.110573Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/get-commit-activity-stats", + "schema": { + "items": { + "$ref": "#/components/schemas/commit-activity" + }, + "type": "array" + } + } + } + }, + "insertionIndex": 374 + }, + { + "id": "9784ceae-1dd2-4082-8229-639a11b7e680", + "name": "Get the weekly commit activity - 204", + "request": { + "urlPath": "/repos/rmotnhzth9np56rpfsqwxp9r7st2vl2kjruyxo1d6c5df7xxwoe0wllx612ge6f6roqrx2wrg0x2bpp1jfmr9xhkrl3mwpchqdj54udo2p0p4y4h4odog28k7hkzdtxz62wnchr0p7k9661hjumc90ipqzlfxnvq57ji8vbfl373izh5/wt2kg8jwdtubmacex20i9hr7cshtds9aebxwhexbtir88egxf7auyztd6pr219g92obsy61ev4wejenadh130jnyh4oqw58h2gpoj6ae7tt5r755poxjg49unsagtzl7kidwvql20y2173ehwjvh1rao5e3axg62yc95igaj874av8/stats/code_frequency", + "method": "GET" + }, + "response": { + "status": 204 + }, + "uuid": "9784ceae-1dd2-4082-8229-639a11b7e680", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.110518Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/get-code-frequency-stats" + } + } + }, + "insertionIndex": 375 + }, + { + "id": "f2e45116-ac5e-4cc4-8c1b-5b729d3da785", + "name": "Get the weekly commit activity (application/json)", + "request": { + "urlPath": "/repos/5x01ztowilkllz121c14wiw2hbm62ixiaj21sl29lkslimarmv8vs4fss4xdk36tdsuooin9gsvoexfx9c4sod541oen3j0v0i2rt4sq49rwtvbwt7xlzwvqgnymn22ger2gcuoek3wcqph8hocsque5dq0gbxunvp9pd4i5vmdp6yucrncshu8213xok0am7iz/iepxjdlbrc283wptxobyw8xgxmj9rz51c3ayckakfwnmj4oqgc34pxtnolhtm9t1lr56mbyarpua2k4x0x2xas81ms35qi6016xcf235smdb8ed6isd038kua069vxx7dx86hdoxlv1ilcb9pjsqv/stats/code_frequency", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 202, + "body": "{ }", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "f2e45116-ac5e-4cc4-8c1b-5b729d3da785", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.110471Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/get-code-frequency-stats", + "schema": { + "type": "object" + } + } + } + }, + "insertionIndex": 376 + }, + { + "id": "4585bd04-0d3e-4582-be1c-66e0673d4fbd", + "name": "Get the weekly commit activity (application/json) - default", + "request": { + "urlPath": "/repos/sa4nuklcck4xvefygv9jhwbbl6uy3qnssrfjfhmqzug4g888m2pbc8d0l2khl4bvywgzqt3kt0m99nhwitshvdihjvkcgp7dsgftml1vlnbjkf72snjeu51gcfkel9pgerzip12vk1vy/st320iz3uhfzvkx3ikuum9v30j5mv1ea/stats/code_frequency", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 200, + "body": "[ [ 1302998400, 1124, -435 ] ]", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "4585bd04-0d3e-4582-be1c-66e0673d4fbd", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.11041Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/get-code-frequency-stats", + "schema": { + "items": { + "$ref": "#/components/schemas/code-frequency-stat" + }, + "type": "array" + } + } + } + }, + "insertionIndex": 377 + }, + { + "id": "591b4b57-36ab-4427-aee5-37042a354eb5", + "name": "List stargazers", + "request": { + "urlPath": "/repos/7to31oeka7lnl5mi308pu3lgs5z8m7dfwhvkwfpkbv17rwb6r8egsrhlu1c7nrmtkbxrbd0r8yseciaqv6pw9pdjioz7wynl2x50qrllj5v4mauqr90r90ztydjcgrpeye8vzoupaw9ttt5qk9jjf88xgsxjo2u5oqx94x447kfabm5ls2fosbk1jw0n8/rzmj57chhd3mypvkeoxel01wa2cl5b1hf3ggvbh62fkgh599gd3tquqr1m1bvikzvdbb8kzjjyql16douert5quc9qmzdxuz2deod8z8c9241rbriu6kp0pz0cu7azt78zx7udf6tibu3ejpfus7vhv91ei0twny92tj2/stargazers", + "method": "GET" + }, + "response": { + "status": 422, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/226925\",\n \"message\" : \"Accusantium dignissimos quia ipsa praesentium. Totam quos ab quia culpa quod soluta soluta. Nemo aut nobis dolore sunt laborum.\",\n \"errors\" : [ {\n \"code\" : \"us7zybrg0vov2n869f5vpxy\",\n \"field\" : \"1cgnnx31z2icoo6ljemq74nafuldkt26ws5hd0zf24c577xpxwft7kgq\",\n \"resource\" : \"8f9b6bnn4s1lobavmghhlwjnl6tlcb3\",\n \"index\" : 3236701465625107680,\n \"message\" : \"Eius voluptate dolores enim nemo. Laudantium voluptas ducimus sit esse officiis consequatur sequi. Officia aut et. Illo suscipit aut explicabo nihil quia id laboriosam. Sed rerum eaque quia incidunt m\",\n \"value\" : { }\n }, {\n \"code\" : \"7amy1z7gzjyctb3xdpww9wyi\",\n \"field\" : \"gvn7uujqhngumbrd4g61m7zacp4mfnjo25tk2bijlw0z7wvmhyt43rqkl90ez46bzebu8w2fhw1riurr73ai059axybbsjvfsi9u\",\n \"resource\" : \"n5dbmqvjkr0k6fm5hkrlhi48if0bxd0uwcp1a86fey4jijk2b98fg32ltma6jpbhlqiiyt0yait36wxvtlro1mxon3oa7dppw3kq03pdne9qv7gcxa9\",\n \"index\" : 1105125364241133020,\n \"message\" : \"Repellendus ipsa sunt optio sed dignissimos. Nihil dolores qui consequatur impedit dolorem fuga eum. Molestiae ratione pariatur vero ab atque nihil dolores. Esse ratione vitae.\",\n \"value\" : { }\n }, {\n \"code\" : \"ldztiao1hls4mjkffbx8tr84gij8pskzwy8teuy0rjywd7d2zi5alf35au8ea449948uvnoxdmiay9iwyzzj42n2kk71wcaoghl0o8jna2r2dzjseifr5i370eijkry\",\n \"field\" : \"wo3ymkcke74pa1v8iw8vfbu4fuuqygwcj4oap9qx8xeigpx374t7whszku4lifzwsoeicts8x8xoqoqtdksr2z06fotisfd5gn396qnsv2picmba0mxe1wuxkl5y0nfvf90\",\n \"resource\" : \"pavlw6xuwtzu53wmgk5se0swi8vt2l58szndw5hnf50hi8\",\n \"index\" : 3281534207360134610,\n \"message\" : \"Totam autem aut eveniet eum dolores voluptatum deserunt. Asperiores dolorem qui fugit vel quo tempore nesciunt. Quis qui voluptas velit qui at enim molestiae. Neque vero architecto praesentium et et c\",\n \"value\" : { }\n }, {\n \"code\" : \"aa2p4fkatcfix2taxrzibbmm94j7g9llp4327azmlgvzw53d8zr2cdz3g2pur8skibfdosw4s7f1tof1svdw5ooewulkjwi4qsecm0evis3pged8t3nthm8e\",\n \"field\" : \"z9dfgqpb50g8dl1cdw3xo2lflr2a57t3qbjhanb13ncpsrwpbod8axwcjqdj9lle5bl6ml5lagtn5vb3phs2zn528fw7s79n11bkisfxv5bykngoctetv3x89w9iw3\",\n \"resource\" : \"o8bhymvyfy9py05681gdc527fnzaey2t6teo6zyepuslvv7nurl76\",\n \"index\" : 2323476973791789525,\n \"message\" : \"Error rerum illum. Hic et quisquam consequatur et voluptatem. Nesciunt molestias perspiciatis.\",\n \"value\" : { }\n }, {\n \"code\" : \"1ruyzo83tsifjszlile2xd0a1zbyahc4w5ugbswzlrxtyr85ap20h4cbb8arq3ymyl3pjg2w3qyv7xg30eqgz29aeu2at5915861o6ybzx6c2d378kldrkxdvazrooq84\",\n \"field\" : \"l7n410w8efw1wazxmw5zmmu3wtjlmrhu5p60fzplu4sb9ep7mei39dpfv6sqbfiz2skkhvnba279nw7mma886r2wz2uz3ofmxubszg95vel5i8n7\",\n \"resource\" : \"oolj9whq6ckxx9z98z1tadg18psz1lqia9x9dzwkspfi8hgxz6przfkpda4v53g38ezvgk6jxah8ppwohaqy0ox9mdul9982sv\",\n \"index\" : 7188812569231741203,\n \"message\" : \"Doloremque rerum quis et aut asperiores. Aliquam nihil totam est commodi. Aliquam non rerum odit ut aliquid.\",\n \"value\" : { }\n }, {\n \"code\" : \"ttrzw1dulrmcchn1cnjgpqx4o8ticle60s8k1k70tt0adfvvnw7d5beubpxs7tldc5z2of6qc2nc712z5ekcat4qycwhxvkfdxqjod7p0fqol7nlbpi4\",\n \"field\" : \"fyai1oii1hx7vh3r8jy18a4\",\n \"resource\" : \"z3ora2uy4g1tzrxsk5dyob5en7z7eg3lp5adgpey3yfr5zjjyt1vem522mfiecungffivyawopzljc3kfiitr7vqav37mqjw4\",\n \"index\" : 7025668986924472929,\n \"message\" : \"Sit velit debitis non non non sed voluptas. Molestiae ad enim consequatur placeat sint nemo. Veritatis esse consectetur. Aut omnis voluptatem nemo non expedita. Est earum porro debitis est pariatur.\",\n \"value\" : { }\n }, {\n \"code\" : \"o4v6c0v3y9gyc9zjde7qf0djmns8nde20w8ldht0vkj84sya7bxnnb20ol27lm71dso09br5bthu65y2p73h1xev\",\n \"field\" : \"tlzilvi43sbznrq4xygqm0q9qwf2y7dn0mhyc54nq8feb5f6z9ihc4ud0ofcsmlzl1k5a8j4k25yysb7sofleu\",\n \"resource\" : \"151wy92ga2too05vvujcmuex\",\n \"index\" : 2615609741002045269,\n \"message\" : \"Maiores qui quod eaque ad qui. Voluptas facere autem sed velit facilis. Ex aut velit sapiente qui. Nisi deleniti voluptas fugiat asperiores eos assumenda. At nihil corporis nesciunt deleniti quae repe\",\n \"value\" : { }\n } ]\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "591b4b57-36ab-4427-aee5-37042a354eb5", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.110346Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "activity/list-stargazers-for-repo", + "schema": { + "description": "Validation Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "errors": { + "items": { + "properties": { + "code": { + "type": "string" + }, + "field": { + "type": "string" + }, + "index": { + "type": "integer" + }, + "message": { + "type": "string" + }, + "resource": { + "type": "string" + }, + "value": { + "oneOf": [ + { + "nullable": true, + "type": "string" + }, + { + "nullable": true, + "type": "integer" + }, + { + "items": { + "type": "string" + }, + "nullable": true, + "type": "array" + } + ] + } + }, + "required": ["code"], + "type": "object" + }, + "type": "array" + }, + "message": { + "type": "string" + } + }, + "required": ["message", "documentation_url"], + "title": "Validation Error", + "type": "object" + } + } + } + }, + "insertionIndex": 378 + }, + { + "id": "331effbd-faeb-40f8-8919-f663cd51e90b", + "name": "List stargazers - default-response", + "request": { + "urlPath": "/repos/c0c81tu9586tp638ggff1skck4u9e751qtya9awha365vg0m2/990fzfdfgcouxpwsnx0bfum8s3/stargazers", + "method": "GET" + }, + "response": { + "status": 200, + "body": "[ {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n} ]", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "331effbd-faeb-40f8-8919-f663cd51e90b", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.109541Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "activity/list-stargazers-for-repo", + "schema": { + "anyOf": [ + { + "items": { + "$ref": "#/components/schemas/simple-user" + }, + "type": "array" + }, + { + "items": { + "$ref": "#/components/schemas/stargazer" + }, + "type": "array" + } + ] + } + } + } + }, + "insertionIndex": 379 + }, + { + "id": "d16b7071-b09a-4ffd-a7f5-b380d73721b7", + "name": "List stargazers - alternative-response-with-star-creation-timestamps", + "request": { + "urlPath": "/repos/xwplu8skfsbet215f4fxqyt7k37a8uwhtmwi2ebsi7dhkkofz1dt598aeyvt86akx7le5gvdfzs9b35c6zvjp2m5b6urbgdfjaujklluq67b3iapbxfnfw5pwhy8slo1t9mbylwwqkmtayt5ztkp6bi16lgow00mc6d4nsp29r9ozi7mn5v/9pcb4vnc3e2ovnrb7f6/stargazers", + "method": "GET" + }, + "response": { + "status": 200, + "body": "[ {\n \"starred_at\" : \"2011-01-16T19:06:43Z\",\n \"user\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n }\n} ]", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "d16b7071-b09a-4ffd-a7f5-b380d73721b7", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.109475Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "activity/list-stargazers-for-repo", + "schema": { + "anyOf": [ + { + "items": { + "$ref": "#/components/schemas/simple-user" + }, + "type": "array" + }, + { + "items": { + "$ref": "#/components/schemas/stargazer" + }, + "type": "array" + } + ] + } + } + } + }, + "insertionIndex": 380 + }, + { + "id": "e74430a1-f87a-4aac-a2de-7c0167205662", + "name": "Upload a release asset - response-for-successful-upload", + "request": { + "urlPath": "/repos/mxameuk7m57bvrieut7pijf99of8gfz60fib08pvrq8rdg7f32e50o51mrru1tem9l1jn9kqetxon1szt7qqg2jurbmul663lli1/0nd1u1icrj9uaht4yjvay0q40m3n8m43qtm4wsijza0hl000r03htnytj2aj5of8rf2cmgzkeo08cdwyh3xyy10jgswi335hzzjuua0npjqwfi2/releases/5419551145138457546/assets", + "method": "POST", + "queryParameters": { + "name": { + "equalTo": "Jamie+Swift" + } + } + }, + "response": { + "status": 201, + "body": "{\n \"browser_download_url\" : \"https://github.com/octocat/Hello-World/releases/download/v1.0.0/example.zip\",\n \"content_type\" : \"application/zip\",\n \"created_at\" : \"2013-02-27T19:35:32Z\",\n \"download_count\" : 42,\n \"id\" : 1,\n \"label\" : \"short description\",\n \"name\" : \"example.zip\",\n \"node_id\" : \"MDEyOlJlbGVhc2VBc3NldDE=\",\n \"size\" : 1024,\n \"state\" : \"uploaded\",\n \"updated_at\" : \"2013-02-27T19:35:32Z\",\n \"uploader\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/releases/assets/1\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "e74430a1-f87a-4aac-a2de-7c0167205662", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.109388Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/upload-release-asset", + "schema": { + "description": "Data related to a release.", + "properties": { + "browser_download_url": { + "format": "uri", + "type": "string" + }, + "content_type": { + "type": "string" + }, + "created_at": { + "format": "date-time", + "type": "string" + }, + "download_count": { + "type": "integer" + }, + "id": { + "type": "integer" + }, + "label": { + "nullable": true, + "type": "string" + }, + "name": { + "description": "The file name of the asset.", + "example": "Team Environment", + "type": "string" + }, + "node_id": { + "type": "string" + }, + "size": { + "type": "integer" + }, + "state": { + "description": "State of the release asset.", + "enum": ["uploaded", "open"], + "type": "string" + }, + "updated_at": { + "format": "date-time", + "type": "string" + }, + "uploader": { + "$ref": "#/components/schemas/nullable-simple-user" + }, + "url": { + "format": "uri", + "type": "string" + } + }, + "required": [ + "id", + "name", + "content_type", + "size", + "state", + "url", + "node_id", + "download_count", + "label", + "uploader", + "browser_download_url", + "created_at", + "updated_at" + ], + "title": "Release Asset", + "type": "object" + } + } + } + }, + "insertionIndex": 381 + }, + { + "id": "77efc99f-124b-44e3-9a80-00d33e39feca", + "name": "List release assets - default", + "request": { + "urlPath": "/repos/zp3lrz721wwupu7wqywmfnkza2nh14hhbiolwd3o5yyunprbaet2t1g893lzwzzc8vbntnkl8zsar91ra4f73hnxtekxigdpgm4scpnxv9pdspkeuyp9be5cfwwh08z/4ef98un59ueyzjc9no7laeumowsu/releases/5129556200153616747/assets", + "method": "GET" + }, + "response": { + "status": 200, + "body": "[ {\n \"browser_download_url\" : \"https://github.com/octocat/Hello-World/releases/download/v1.0.0/example.zip\",\n \"content_type\" : \"application/zip\",\n \"created_at\" : \"2013-02-27T19:35:32Z\",\n \"download_count\" : 42,\n \"id\" : 1,\n \"label\" : \"short description\",\n \"name\" : \"example.zip\",\n \"node_id\" : \"MDEyOlJlbGVhc2VBc3NldDE=\",\n \"size\" : 1024,\n \"state\" : \"uploaded\",\n \"updated_at\" : \"2013-02-27T19:35:32Z\",\n \"uploader\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/releases/assets/1\"\n} ]", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "77efc99f-124b-44e3-9a80-00d33e39feca", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.109196Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/list-release-assets", + "schema": { + "items": { + "$ref": "#/components/schemas/release-asset" + }, + "type": "array" + } + } + } + }, + "insertionIndex": 382 + }, + { + "id": "d8c6d9b5-8488-4d10-851e-da65f651d5cc", + "name": "Update a release - default", + "request": { + "urlPath": "/repos/p55lfxy9nt0ezsksy0uiz0zzuez21ahzw7a5nu5d56y9inzy7fftnbe0qmpikl0047k07sm4s59n7n7s2ifo0w1zcvbrzfjhu5ak6xz8n4mokv9lxwpzzbex5o4w0cq10k1ymz90atpzut5iaudtg4qxsuhrw0wx1aoi5p5xact2p1rtgzcgigubl41jy/6sxaaxmrc9se6qnzqqac4j80xtbozc76eckn9ijz50ewy08b65bm08a3wj7210ac4/releases/8032943211222806484", + "method": "PATCH" + }, + "response": { + "status": 200, + "body": "{\n \"assets\" : [ {\n \"browser_download_url\" : \"https://github.com/octocat/Hello-World/releases/download/v1.0.0/example.zip\",\n \"content_type\" : \"application/zip\",\n \"created_at\" : \"2013-02-27T19:35:32Z\",\n \"download_count\" : 42,\n \"id\" : 1,\n \"label\" : \"short description\",\n \"name\" : \"example.zip\",\n \"node_id\" : \"MDEyOlJlbGVhc2VBc3NldDE=\",\n \"size\" : 1024,\n \"state\" : \"uploaded\",\n \"updated_at\" : \"2013-02-27T19:35:32Z\",\n \"uploader\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/releases/assets/1\"\n } ],\n \"assets_url\" : \"https://api.github.com/repos/octocat/Hello-World/releases/1/assets\",\n \"author\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"body\" : \"Description of the release\",\n \"created_at\" : \"2013-02-27T19:35:32Z\",\n \"discussion_url\" : \"https://github.com/octocat/Hello-World/discussions/90\",\n \"draft\" : false,\n \"html_url\" : \"https://github.com/octocat/Hello-World/releases/v1.0.0\",\n \"id\" : 1,\n \"name\" : \"v1.0.0\",\n \"node_id\" : \"MDc6UmVsZWFzZTE=\",\n \"prerelease\" : false,\n \"published_at\" : \"2013-02-27T19:35:32Z\",\n \"tag_name\" : \"v1.0.0\",\n \"tarball_url\" : \"https://api.github.com/repos/octocat/Hello-World/tarball/v1.0.0\",\n \"target_commitish\" : \"master\",\n \"upload_url\" : \"https://uploads.github.com/repos/octocat/Hello-World/releases/1/assets{?name,label}\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/releases/1\",\n \"zipball_url\" : \"https://api.github.com/repos/octocat/Hello-World/zipball/v1.0.0\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "d8c6d9b5-8488-4d10-851e-da65f651d5cc", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.10913Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/update-release", + "schema": { + "description": "A release.", + "properties": { + "assets": { + "items": { + "$ref": "#/components/schemas/release-asset" + }, + "type": "array" + }, + "assets_url": { + "format": "uri", + "type": "string" + }, + "author": { + "$ref": "#/components/schemas/simple-user" + }, + "body": { + "nullable": true, + "type": "string" + }, + "body_html": { + "type": "string" + }, + "body_text": { + "type": "string" + }, + "created_at": { + "format": "date-time", + "type": "string" + }, + "draft": { + "description": "true to create a draft (unpublished) release, false to create a published one.", + "example": false, + "type": "boolean" + }, + "html_url": { + "format": "uri", + "type": "string" + }, + "id": { + "type": "integer" + }, + "name": { + "nullable": true, + "type": "string" + }, + "node_id": { + "type": "string" + }, + "prerelease": { + "description": "Whether to identify the release as a prerelease or a full release.", + "example": false, + "type": "boolean" + }, + "published_at": { + "format": "date-time", + "nullable": true, + "type": "string" + }, + "reactions": { + "$ref": "#/components/schemas/reaction-rollup" + }, + "tag_name": { + "description": "The name of the tag.", + "example": "v1.0.0", + "type": "string" + }, + "tarball_url": { + "format": "uri", + "nullable": true, + "type": "string" + }, + "target_commitish": { + "description": "Specifies the commitish value that determines where the Git tag is created from.", + "example": "master", + "type": "string" + }, + "upload_url": { + "type": "string" + }, + "url": { + "format": "uri", + "type": "string" + }, + "zipball_url": { + "format": "uri", + "nullable": true, + "type": "string" + } + }, + "required": [ + "assets_url", + "upload_url", + "tarball_url", + "zipball_url", + "created_at", + "published_at", + "draft", + "id", + "node_id", + "author", + "html_url", + "name", + "prerelease", + "tag_name", + "target_commitish", + "assets", + "url" + ], + "title": "Release", + "type": "object" + } + } + } + }, + "insertionIndex": 383 + }, + { + "id": "510bd661-b7c4-46b1-9f79-2702322150d3", + "name": "Get a release", + "request": { + "urlPath": "/repos/9er56jhumn0wgmfc2blwgsd63s54oiwj3pee230r6suqazm4b8u0t4uks6bdxd0c/bc3/releases/5636579070009278514", + "method": "GET" + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/244927\",\n \"message\" : \"Ullam minus aut commodi rerum similique sequi et. Nostrum dolor saepe odio. Voluptas distinctio aliquid saepe consequatur nisi eos. Dolores et quaerat voluptatem consequatur sed.\",\n \"url\" : \"https://web.example.mocklab.io/561337\",\n \"status\" : \"biew4hyivbyb0sk040avrvzw3em7suh2s673rpr7nil1tsci8syyvdzu7ook7u1z7srwpi8emosz2ttfvhz6j2hurbxn7avkwsqjc441g4o4iw9hyhpi4dt1bjov4l45n7kx768ph1nc10\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "510bd661-b7c4-46b1-9f79-2702322150d3", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.108967Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/get-release", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 384 + }, + { + "id": "bbec55f5-821e-419b-a16b-723c3d13e543", + "name": "Get a release - default", + "request": { + "urlPath": "/repos/yse36nzco7sw4bju4nftncsoiihuh0g5ye9boz7objkvkv4xalqf1vj9qjgoypitr0pgao6nw9bhlhhgqwsa3lg0/dwh/releases/2292039265641210264", + "method": "GET" + }, + "response": { + "status": 200, + "body": "{\n \"assets\" : [ {\n \"browser_download_url\" : \"https://github.com/octocat/Hello-World/releases/download/v1.0.0/example.zip\",\n \"content_type\" : \"application/zip\",\n \"created_at\" : \"2013-02-27T19:35:32Z\",\n \"download_count\" : 42,\n \"id\" : 1,\n \"label\" : \"short description\",\n \"name\" : \"example.zip\",\n \"node_id\" : \"MDEyOlJlbGVhc2VBc3NldDE=\",\n \"size\" : 1024,\n \"state\" : \"uploaded\",\n \"updated_at\" : \"2013-02-27T19:35:32Z\",\n \"uploader\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/releases/assets/1\"\n } ],\n \"assets_url\" : \"https://api.github.com/repos/octocat/Hello-World/releases/1/assets\",\n \"author\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"body\" : \"Description of the release\",\n \"created_at\" : \"2013-02-27T19:35:32Z\",\n \"discussion_url\" : \"https://github.com/octocat/Hello-World/discussions/90\",\n \"draft\" : false,\n \"html_url\" : \"https://github.com/octocat/Hello-World/releases/v1.0.0\",\n \"id\" : 1,\n \"name\" : \"v1.0.0\",\n \"node_id\" : \"MDc6UmVsZWFzZTE=\",\n \"prerelease\" : false,\n \"published_at\" : \"2013-02-27T19:35:32Z\",\n \"tag_name\" : \"v1.0.0\",\n \"tarball_url\" : \"https://api.github.com/repos/octocat/Hello-World/tarball/v1.0.0\",\n \"target_commitish\" : \"master\",\n \"upload_url\" : \"https://uploads.github.com/repos/octocat/Hello-World/releases/1/assets{?name,label}\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/releases/1\",\n \"zipball_url\" : \"https://api.github.com/repos/octocat/Hello-World/zipball/v1.0.0\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "bbec55f5-821e-419b-a16b-723c3d13e543", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.108734Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/get-release", + "schema": { + "description": "A release.", + "properties": { + "assets": { + "items": { + "$ref": "#/components/schemas/release-asset" + }, + "type": "array" + }, + "assets_url": { + "format": "uri", + "type": "string" + }, + "author": { + "$ref": "#/components/schemas/simple-user" + }, + "body": { + "nullable": true, + "type": "string" + }, + "body_html": { + "type": "string" + }, + "body_text": { + "type": "string" + }, + "created_at": { + "format": "date-time", + "type": "string" + }, + "draft": { + "description": "true to create a draft (unpublished) release, false to create a published one.", + "example": false, + "type": "boolean" + }, + "html_url": { + "format": "uri", + "type": "string" + }, + "id": { + "type": "integer" + }, + "name": { + "nullable": true, + "type": "string" + }, + "node_id": { + "type": "string" + }, + "prerelease": { + "description": "Whether to identify the release as a prerelease or a full release.", + "example": false, + "type": "boolean" + }, + "published_at": { + "format": "date-time", + "nullable": true, + "type": "string" + }, + "reactions": { + "$ref": "#/components/schemas/reaction-rollup" + }, + "tag_name": { + "description": "The name of the tag.", + "example": "v1.0.0", + "type": "string" + }, + "tarball_url": { + "format": "uri", + "nullable": true, + "type": "string" + }, + "target_commitish": { + "description": "Specifies the commitish value that determines where the Git tag is created from.", + "example": "master", + "type": "string" + }, + "upload_url": { + "type": "string" + }, + "url": { + "format": "uri", + "type": "string" + }, + "zipball_url": { + "format": "uri", + "nullable": true, + "type": "string" + } + }, + "required": [ + "assets_url", + "upload_url", + "tarball_url", + "zipball_url", + "created_at", + "published_at", + "draft", + "id", + "node_id", + "author", + "html_url", + "name", + "prerelease", + "tag_name", + "target_commitish", + "assets", + "url" + ], + "title": "Release", + "type": "object" + } + } + } + }, + "insertionIndex": 385 + }, + { + "id": "8d67d2ea-75b4-40da-9d63-0c4d60bbf0a3", + "name": "Delete a release - 204", + "request": { + "urlPath": "/repos/e0qqlh3smh1h9ekacfwxeclhjs2tp6sum6ba6zt2oifkmitm5ldofsf0vb9ljqh11pypsesbv4bawan7ff9fi2wahj3afxr0fitp50gh9e5jbkohig0uyrwdln18pr8rsgkfiflc4q0feg7hq9tpx53bjo27b4lxtw4svvbnrxhizo4asdl31ydk4afj/i0838t5wkk54lacnewidemo74bwj25j0svceug7b2srwnl1noiz9tkixaqxgp/releases/3075521646505834301", + "method": "DELETE" + }, + "response": { + "status": 204 + }, + "uuid": "8d67d2ea-75b4-40da-9d63-0c4d60bbf0a3", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.108579Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/delete-release" + } + } + }, + "insertionIndex": 386 + }, + { + "id": "01a614a5-6cb8-4d81-8fb6-af175b2700ff", + "name": "Get a release by tag name", + "request": { + "urlPath": "/repos/k2ijlwwq3mmx0avyr60slp6tdonuhvg2n9olqivw9d6nunqftzgj07rqfbqzpmxpxev249rasu3ohdbhgdjutzbev0zpoknbvxfsdgg4ymyoh42p55o1zuu0ep1kh5wtbxm06vmn5dv/gjv5px801wsr1afyghn1uukfhsm7z79lru1b8wy5frrmd5j244bal1ks0ywc0yw65igdjd2pts/releases/tags/modi", + "method": "GET" + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/205242\",\n \"message\" : \"Velit deleniti quae rerum nihil deserunt. Natus dolores ipsum dolor aut saepe laudantium consectetur. Dolores non similique eligendi commodi est. Explicabo praesentium qui porro quibusdam.\",\n \"url\" : \"https://web.example.mocklab.io/017238\",\n \"status\" : \"0bhhic3p7hyo8wk5cyt8932vtckzez66yv9i3ji3j8pjk757vefju3p3w3oplcqqsy2we9dizovkvnnnz245ftt2qsp65k87sh9bqsgz04r758udl0aighkkjcq3entbdjhmhusg9kzyzer9l3al1a\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "01a614a5-6cb8-4d81-8fb6-af175b2700ff", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.108534Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/get-release-by-tag", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 387 + }, + { + "id": "afbbff49-40e1-45eb-af28-ff67b2133e33", + "name": "Get a release by tag name - default", + "request": { + "urlPath": "/repos/8od6i352/uaixdjyvt2rwgom12po3ov72p86nru31tt9qsc30ys7c3sbvzems0c4j30/releases/tags/qui", + "method": "GET" + }, + "response": { + "status": 200, + "body": "{\n \"assets\" : [ {\n \"browser_download_url\" : \"https://github.com/octocat/Hello-World/releases/download/v1.0.0/example.zip\",\n \"content_type\" : \"application/zip\",\n \"created_at\" : \"2013-02-27T19:35:32Z\",\n \"download_count\" : 42,\n \"id\" : 1,\n \"label\" : \"short description\",\n \"name\" : \"example.zip\",\n \"node_id\" : \"MDEyOlJlbGVhc2VBc3NldDE=\",\n \"size\" : 1024,\n \"state\" : \"uploaded\",\n \"updated_at\" : \"2013-02-27T19:35:32Z\",\n \"uploader\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/releases/assets/1\"\n } ],\n \"assets_url\" : \"https://api.github.com/repos/octocat/Hello-World/releases/1/assets\",\n \"author\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"body\" : \"Description of the release\",\n \"created_at\" : \"2013-02-27T19:35:32Z\",\n \"discussion_url\" : \"https://github.com/octocat/Hello-World/discussions/90\",\n \"draft\" : false,\n \"html_url\" : \"https://github.com/octocat/Hello-World/releases/v1.0.0\",\n \"id\" : 1,\n \"name\" : \"v1.0.0\",\n \"node_id\" : \"MDc6UmVsZWFzZTE=\",\n \"prerelease\" : false,\n \"published_at\" : \"2013-02-27T19:35:32Z\",\n \"tag_name\" : \"v1.0.0\",\n \"tarball_url\" : \"https://api.github.com/repos/octocat/Hello-World/tarball/v1.0.0\",\n \"target_commitish\" : \"master\",\n \"upload_url\" : \"https://uploads.github.com/repos/octocat/Hello-World/releases/1/assets{?name,label}\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/releases/1\",\n \"zipball_url\" : \"https://api.github.com/repos/octocat/Hello-World/zipball/v1.0.0\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "afbbff49-40e1-45eb-af28-ff67b2133e33", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.108278Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/get-release-by-tag", + "schema": { + "description": "A release.", + "properties": { + "assets": { + "items": { + "$ref": "#/components/schemas/release-asset" + }, + "type": "array" + }, + "assets_url": { + "format": "uri", + "type": "string" + }, + "author": { + "$ref": "#/components/schemas/simple-user" + }, + "body": { + "nullable": true, + "type": "string" + }, + "body_html": { + "type": "string" + }, + "body_text": { + "type": "string" + }, + "created_at": { + "format": "date-time", + "type": "string" + }, + "draft": { + "description": "true to create a draft (unpublished) release, false to create a published one.", + "example": false, + "type": "boolean" + }, + "html_url": { + "format": "uri", + "type": "string" + }, + "id": { + "type": "integer" + }, + "name": { + "nullable": true, + "type": "string" + }, + "node_id": { + "type": "string" + }, + "prerelease": { + "description": "Whether to identify the release as a prerelease or a full release.", + "example": false, + "type": "boolean" + }, + "published_at": { + "format": "date-time", + "nullable": true, + "type": "string" + }, + "reactions": { + "$ref": "#/components/schemas/reaction-rollup" + }, + "tag_name": { + "description": "The name of the tag.", + "example": "v1.0.0", + "type": "string" + }, + "tarball_url": { + "format": "uri", + "nullable": true, + "type": "string" + }, + "target_commitish": { + "description": "Specifies the commitish value that determines where the Git tag is created from.", + "example": "master", + "type": "string" + }, + "upload_url": { + "type": "string" + }, + "url": { + "format": "uri", + "type": "string" + }, + "zipball_url": { + "format": "uri", + "nullable": true, + "type": "string" + } + }, + "required": [ + "assets_url", + "upload_url", + "tarball_url", + "zipball_url", + "created_at", + "published_at", + "draft", + "id", + "node_id", + "author", + "html_url", + "name", + "prerelease", + "tag_name", + "target_commitish", + "assets", + "url" + ], + "title": "Release", + "type": "object" + } + } + } + }, + "insertionIndex": 388 + }, + { + "id": "83d70149-2f6a-4f32-805a-61181d1d091f", + "name": "Get the latest release - default", + "request": { + "urlPath": "/repos/jywh2le5oeq6fk28i8cn46v48id3sgj6gjejnelsdbg4ea8l8m6hojiumss8ej9t7s8rb7laee00gjz7an1v1gj6et9s5giv55a4ynck2nsmexr6kqivjnm2661hjkivlzzd/edvbhevzkxobkbyctptf4ytzeau6t66vhy8bho7naif6hx5cwhs390st3tlbzbxts38rtf3gybni1ihffaqo8xnnx6vq00v3xucqznc4fdo6i9iq3ta6bajpdxo0iihmy9kxhtpywmi7wjh3otgewnan36fl/releases/latest", + "method": "GET" + }, + "response": { + "status": 200, + "body": "{\n \"assets\" : [ {\n \"browser_download_url\" : \"https://github.com/octocat/Hello-World/releases/download/v1.0.0/example.zip\",\n \"content_type\" : \"application/zip\",\n \"created_at\" : \"2013-02-27T19:35:32Z\",\n \"download_count\" : 42,\n \"id\" : 1,\n \"label\" : \"short description\",\n \"name\" : \"example.zip\",\n \"node_id\" : \"MDEyOlJlbGVhc2VBc3NldDE=\",\n \"size\" : 1024,\n \"state\" : \"uploaded\",\n \"updated_at\" : \"2013-02-27T19:35:32Z\",\n \"uploader\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/releases/assets/1\"\n } ],\n \"assets_url\" : \"https://api.github.com/repos/octocat/Hello-World/releases/1/assets\",\n \"author\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"body\" : \"Description of the release\",\n \"created_at\" : \"2013-02-27T19:35:32Z\",\n \"discussion_url\" : \"https://github.com/octocat/Hello-World/discussions/90\",\n \"draft\" : false,\n \"html_url\" : \"https://github.com/octocat/Hello-World/releases/v1.0.0\",\n \"id\" : 1,\n \"name\" : \"v1.0.0\",\n \"node_id\" : \"MDc6UmVsZWFzZTE=\",\n \"prerelease\" : false,\n \"published_at\" : \"2013-02-27T19:35:32Z\",\n \"tag_name\" : \"v1.0.0\",\n \"tarball_url\" : \"https://api.github.com/repos/octocat/Hello-World/tarball/v1.0.0\",\n \"target_commitish\" : \"master\",\n \"upload_url\" : \"https://uploads.github.com/repos/octocat/Hello-World/releases/1/assets{?name,label}\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/releases/1\",\n \"zipball_url\" : \"https://api.github.com/repos/octocat/Hello-World/zipball/v1.0.0\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "83d70149-2f6a-4f32-805a-61181d1d091f", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.108096Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/get-latest-release", + "schema": { + "description": "A release.", + "properties": { + "assets": { + "items": { + "$ref": "#/components/schemas/release-asset" + }, + "type": "array" + }, + "assets_url": { + "format": "uri", + "type": "string" + }, + "author": { + "$ref": "#/components/schemas/simple-user" + }, + "body": { + "nullable": true, + "type": "string" + }, + "body_html": { + "type": "string" + }, + "body_text": { + "type": "string" + }, + "created_at": { + "format": "date-time", + "type": "string" + }, + "draft": { + "description": "true to create a draft (unpublished) release, false to create a published one.", + "example": false, + "type": "boolean" + }, + "html_url": { + "format": "uri", + "type": "string" + }, + "id": { + "type": "integer" + }, + "name": { + "nullable": true, + "type": "string" + }, + "node_id": { + "type": "string" + }, + "prerelease": { + "description": "Whether to identify the release as a prerelease or a full release.", + "example": false, + "type": "boolean" + }, + "published_at": { + "format": "date-time", + "nullable": true, + "type": "string" + }, + "reactions": { + "$ref": "#/components/schemas/reaction-rollup" + }, + "tag_name": { + "description": "The name of the tag.", + "example": "v1.0.0", + "type": "string" + }, + "tarball_url": { + "format": "uri", + "nullable": true, + "type": "string" + }, + "target_commitish": { + "description": "Specifies the commitish value that determines where the Git tag is created from.", + "example": "master", + "type": "string" + }, + "upload_url": { + "type": "string" + }, + "url": { + "format": "uri", + "type": "string" + }, + "zipball_url": { + "format": "uri", + "nullable": true, + "type": "string" + } + }, + "required": [ + "assets_url", + "upload_url", + "tarball_url", + "zipball_url", + "created_at", + "published_at", + "draft", + "id", + "node_id", + "author", + "html_url", + "name", + "prerelease", + "tag_name", + "target_commitish", + "assets", + "url" + ], + "title": "Release", + "type": "object" + } + } + } + }, + "insertionIndex": 389 + }, + { + "id": "6ce74754-5668-4a7e-82c6-c39bf3abe588", + "name": "Update a release asset - default", + "request": { + "urlPath": "/repos/7vgyc5lnqrhtv869hf1fevfsi3u7jtizdyx4sm0vvhsqvh6px8f6x/10wl2lo81jzsrdv9robimru87q4qzlqvg8vh9qszoep2v4214dtq/releases/assets/2778106464247512245", + "method": "PATCH" + }, + "response": { + "status": 200, + "body": "{\n \"browser_download_url\" : \"https://github.com/octocat/Hello-World/releases/download/v1.0.0/example.zip\",\n \"content_type\" : \"application/zip\",\n \"created_at\" : \"2013-02-27T19:35:32Z\",\n \"download_count\" : 42,\n \"id\" : 1,\n \"label\" : \"short description\",\n \"name\" : \"example.zip\",\n \"node_id\" : \"MDEyOlJlbGVhc2VBc3NldDE=\",\n \"size\" : 1024,\n \"state\" : \"uploaded\",\n \"updated_at\" : \"2013-02-27T19:35:32Z\",\n \"uploader\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/releases/assets/1\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "6ce74754-5668-4a7e-82c6-c39bf3abe588", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.107926Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/update-release-asset", + "schema": { + "description": "Data related to a release.", + "properties": { + "browser_download_url": { + "format": "uri", + "type": "string" + }, + "content_type": { + "type": "string" + }, + "created_at": { + "format": "date-time", + "type": "string" + }, + "download_count": { + "type": "integer" + }, + "id": { + "type": "integer" + }, + "label": { + "nullable": true, + "type": "string" + }, + "name": { + "description": "The file name of the asset.", + "example": "Team Environment", + "type": "string" + }, + "node_id": { + "type": "string" + }, + "size": { + "type": "integer" + }, + "state": { + "description": "State of the release asset.", + "enum": ["uploaded", "open"], + "type": "string" + }, + "updated_at": { + "format": "date-time", + "type": "string" + }, + "uploader": { + "$ref": "#/components/schemas/nullable-simple-user" + }, + "url": { + "format": "uri", + "type": "string" + } + }, + "required": [ + "id", + "name", + "content_type", + "size", + "state", + "url", + "node_id", + "download_count", + "label", + "uploader", + "browser_download_url", + "created_at", + "updated_at" + ], + "title": "Release Asset", + "type": "object" + } + } + } + }, + "insertionIndex": 390 + }, + { + "id": "0d66f8be-9b8d-4517-8465-f264c8735ed4", + "name": "Get a release asset (application/json)", + "request": { + "urlPath": "/repos/vd8afyktw26nznuznlpauepqjvsqwvxv2396rv2wueekdnfarh6vq0e8uuogwq9qyi8a3hcbn7imcq2mw77b86rlifo64xgxgx8yzsnb2ik1hnmzk0lkbvdha99aekmygxb678jfofdgnefyws6zy3yqv/h5t427ve4j5sd5sm3l8w6pj0g2k608g5kn7wkvf627h2zulcqedx6qjqbs4o58sq34vsfubxfzdyduiisx2xqv0z6sopv6f9oxe48uqui8widhnfxdn2hl1hmfbhqo7qzqv071ry3i2e0s87abt5xycsm8zce7in/releases/assets/7468228097531895550", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 415, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/063404\",\n \"message\" : \"Sapiente corrupti enim. Dolorem facere quaerat saepe dolorem maiores amet. Provident aut omnis perferendis facilis tenetur qui. Ad neque rerum non et.\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "0d66f8be-9b8d-4517-8465-f264c8735ed4", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.1078Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/get-release-asset", + "schema": { + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": ["message", "documentation_url"], + "type": "object" + } + } + } + }, + "insertionIndex": 391 + }, + { + "id": "677ddc2e-461b-4245-a087-4d08a368581f", + "name": "Get a release asset (application/json)", + "request": { + "urlPath": "/repos/9qhrzfd7yy5knbyy22gg2bkqpwn5gozy5xgssj44futbbdwnhowomtwy0tenxi1/0rohaf1tp4400r6n8r49q9lhay90bezus711091km34tnu174nr9x31o15s5da0jmpnw6eea2daevyrht3t8heoekvywz25sqsufhoke/releases/assets/6253162224207987489", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/622037\",\n \"message\" : \"Exercitationem dignissimos beatae eaque minima. Quasi eos minus quis assumenda. Est rem temporibus omnis vero consequatur aspernatur. Animi deleniti omnis itaque amet. Dolor dolorum molestiae ut cum i\",\n \"url\" : \"https://web.example.mocklab.io/219196\",\n \"status\" : \"b1ozv1afmevm5hqv3kz2kshcl7vsnapkggshj1u4svhf1nkwksnootzb8kxcjjhcfatt5no1lol2jobddpuelxxznu3vsk2zevattz7q812usj5npbzm58yxzf1mbqu9gbl738vn92pu001l8mg627fln9ria\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "677ddc2e-461b-4245-a087-4d08a368581f", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.107633Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/get-release-asset", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 392 + }, + { + "id": "309b7a6c-4ac4-4bc0-b219-0d21e984e4ef", + "name": "Get a release asset - 302", + "request": { + "urlPath": "/repos/aj5r7pu68851pe5qmwbivpy/yyxb94apbta5dmxhr0y/releases/assets/6636641007395208007", + "method": "GET" + }, + "response": { + "status": 302 + }, + "uuid": "309b7a6c-4ac4-4bc0-b219-0d21e984e4ef", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.107384Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/get-release-asset" + } + } + }, + "insertionIndex": 393 + }, + { + "id": "ecc8dec5-90a1-4eea-bea3-cb1ee8ba94a8", + "name": "Get a release asset (application/json) - default", + "request": { + "urlPath": "/repos/tywu1s2cadb6r6fusmudkg7udud5lmhfk4rlgm6sy3f32sc0fmmywi9xzaig5ksc3yehno42fkdybnm2e0xzce9k7v291ix2gt739kjfvhhhjp0fbhg4kzvv9vna9927wdgwrypab576p5jzghe9aeujozs9i4p8/cqgliu05xszat3yuez8m7yuosg1zn7ecfrsto4y3imfpwp8tcllj3pdpzk5rijkimzglmu7z81s4ncbk9taa3fayerlhjmw7e/releases/assets/7347063981621999863", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 200, + "body": "{\n \"browser_download_url\" : \"https://github.com/octocat/Hello-World/releases/download/v1.0.0/example.zip\",\n \"content_type\" : \"application/zip\",\n \"created_at\" : \"2013-02-27T19:35:32Z\",\n \"download_count\" : 42,\n \"id\" : 1,\n \"label\" : \"short description\",\n \"name\" : \"example.zip\",\n \"node_id\" : \"MDEyOlJlbGVhc2VBc3NldDE=\",\n \"size\" : 1024,\n \"state\" : \"uploaded\",\n \"updated_at\" : \"2013-02-27T19:35:32Z\",\n \"uploader\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/releases/assets/1\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "ecc8dec5-90a1-4eea-bea3-cb1ee8ba94a8", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.107335Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/get-release-asset", + "schema": { + "description": "Data related to a release.", + "properties": { + "browser_download_url": { + "format": "uri", + "type": "string" + }, + "content_type": { + "type": "string" + }, + "created_at": { + "format": "date-time", + "type": "string" + }, + "download_count": { + "type": "integer" + }, + "id": { + "type": "integer" + }, + "label": { + "nullable": true, + "type": "string" + }, + "name": { + "description": "The file name of the asset.", + "example": "Team Environment", + "type": "string" + }, + "node_id": { + "type": "string" + }, + "size": { + "type": "integer" + }, + "state": { + "description": "State of the release asset.", + "enum": ["uploaded", "open"], + "type": "string" + }, + "updated_at": { + "format": "date-time", + "type": "string" + }, + "uploader": { + "$ref": "#/components/schemas/nullable-simple-user" + }, + "url": { + "format": "uri", + "type": "string" + } + }, + "required": [ + "id", + "name", + "content_type", + "size", + "state", + "url", + "node_id", + "download_count", + "label", + "uploader", + "browser_download_url", + "created_at", + "updated_at" + ], + "title": "Release Asset", + "type": "object" + } + } + } + }, + "insertionIndex": 394 + }, + { + "id": "0a13d9ef-c4c8-4287-89b4-59b6688a6e54", + "name": "Delete a release asset - 204", + "request": { + "urlPath": "/repos/vfadoep49nft65ds2pt2tap60so5281j5aleqjlpaj/2earg99aa35ml59os5snl6soth7yisrcdtwqzeg55hewfvyc1kt7m69t69wvsfq5p4un7yo9agdlclw62sxbibtcopd5l4ou7vsn8l9u9xhusv0etbf8io4bqbp10b2ftbeqvbzwermieg9pb5vp17eegt83fgs4x/releases/assets/2222303448420079463", + "method": "DELETE" + }, + "response": { + "status": 204 + }, + "uuid": "0a13d9ef-c4c8-4287-89b4-59b6688a6e54", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.107191Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/delete-release-asset" + } + } + }, + "insertionIndex": 395 + }, + { + "id": "9ca29531-e801-4172-843e-4dfb4d523d7e", + "name": "Create a release", + "request": { + "urlPath": "/repos/9yvmp662xz0khwcjba4hjmcl6bpwi13i19n6kpdj2weuwfiu8fbqpoulaz21p7m6omausqbd74h7gpjmhcvvl9z9wbolcet114wk2txgn2kxvy6575rukuok7w0urapx500ykal47zm14nv76hdgvwwrw2ean3x9s940s52um6hqv67amsnwt/iit4d8z6cstfilvhuz83pqlug33c5xuravejnfekmvojin8y4o579ouqkkec8ca1z1og7dlfir1el57udk5v571x0x508phjhvvtoepfo8rxuigs/releases", + "method": "POST" + }, + "response": { + "status": 422, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/573889\",\n \"message\" : \"Et occaecati commodi laboriosam in fuga odit mollitia. Eius est laudantium similique. Sapiente ut ex molestiae et impedit est.\",\n \"errors\" : [ {\n \"code\" : \"i4s095oj41qweme8r6ycw6oli5xp5lcj3ty7n8cu7l4ult2f51elq4elghl3dugmgbuc9er04ol724ajqzmj282bt2nedltrua7vds8bv4hxqod36wqfexlya8aymjbgwjvmm6j1nvnb4h0wx0z3t\",\n \"field\" : \"xni3nc64164g6fhhu4n6jeklycooa68zlh5x8ylo2u92gokbsm4qomzgjz9sjxts2rm96lodje0alyl401d1tb81ixfc1zi0lco4bycblzdsxga6dalnqb71ry6s83x90ho1l\",\n \"resource\" : \"f612yftz4hfid59me58qkcu83t5d90uv2h34ddzb4jshp43xpckdsu9qvywjr52fe931awooiwnoxlds4z8tsmwgdslgqeqd07k1qe2csv5ohfhpfxr798evj2dwutzo92i6dximgl94jdk66\",\n \"index\" : 980608602554314428,\n \"message\" : \"Ut asperiores laudantium facere repudiandae modi voluptatem. Nulla eligendi voluptates quidem officiis nobis architecto sint. Blanditiis quaerat qui ratione et. Quaerat ducimus delectus. Maxime molest\",\n \"value\" : { }\n }, {\n \"code\" : \"72xikn1nzblz5ci9op73gn6iqjp4b2osfvak9d0wj17j0qhcqoq30ax6l6i05k85kajcw3s82emxiuagk4jz75jscn14wfb8blmcdz1\",\n \"field\" : \"nq2n495tu59n1i1ltbqzh2wma50rxpuu6y4l8b\",\n \"resource\" : \"te72zc2y8mk2bj1odze1bc5qkhxt\",\n \"index\" : 4563783173498624822,\n \"message\" : \"Libero pariatur nihil. Rerum aspernatur hic. Explicabo minus nemo aut quibusdam. Dolorem sapiente doloremque voluptas. Laudantium libero rerum voluptates deserunt officia aliquid expedita.\",\n \"value\" : { }\n }, {\n \"code\" : \"dhdl6ucvzpna3zwfez40qm6r7swkudtd739e9vw9bfbr0kax8tbqe00ajo7pedvaykfzsj7u15ndgnsemcm3jrgyo6gp6xexzi4ke10xytu762uvnhi9zt9yacyfw7gd5b70tltyl19r0vwffrydrsym3bqhuijugn1xfj9iu6fgooyve7m3qrxy52je2yhd1o6pa4\",\n \"field\" : \"2w1k69gmke4l2cmkzk8e6oz2no1u1wiyqshma6rourilithijxa7fqjz6epkphtyfj9roi7br62d4uau\",\n \"resource\" : \"m8uhu8s315k19ap60wk5po3rnuvidvm54vbbwsmchvw7pkfnw5aqpsxat6075d61g7lwyxwfqm6\",\n \"index\" : 2189547957473540328,\n \"message\" : \"Aut iste ea nobis dicta rerum inventore soluta. Tempora blanditiis consequatur quibusdam amet ad distinctio sint. Nam inventore aut repellendus eligendi quia commodi fugiat. Voluptatem et dolorem dolo\",\n \"value\" : { }\n }, {\n \"code\" : \"u2b0he5xbtc7ae3ri1jxy3gzdhhd3ve9k6buv7k9joo4bmb20t85ujj6c74voewvvua89jfnynzwuihhnptw4skt4oo7p0zkxwvzh7k5x6l8iy1wpbewhrtaeuif28huhl294el5m1ra03vmn5kxpkov86dh3brenm0l1p8ors51wgmd6175j\",\n \"field\" : \"5ylmur1jv0zcgbaah025jucgzq3e4p8n8pptbuajwjcn4t8d8xg7bphw7z9tamvmlj24gp6brrn36hx1k6dzzkeisya7xccclo3iuui43\",\n \"resource\" : \"nvs3tm8o3aurhbvnjldizw\",\n \"index\" : 3293357307162938093,\n \"message\" : \"Dicta porro enim. In consectetur quis voluptas expedita et qui. Cum minus aut.\",\n \"value\" : { }\n }, {\n \"code\" : \"rzbh51qzr322f544sod26lf020ugm54f5963eqnxvmmmjerqhy3o8ibdr70hofpk6cgstwme8uuaplmgbyj091rkzpguc1y0juu0qm7csjzv6msbj8gyi3a9x\",\n \"field\" : \"z84srh55xh3y0dexb93zk3qh4xshyzzquv5pe5aa07qb7t\",\n \"resource\" : \"bhv7p1uccpnokx3ccdf0xb96lc9qmlofocllxjujqc2hfw9q7kwnl0jrtjdccfr9cf6z2svhl186kvisoc6858hfsu3d55kdnm2bhvzj8fc\",\n \"index\" : 7891527417882843022,\n \"message\" : \"Quae doloremque et quia dolorem. Corporis repellendus aspernatur. Cum odio nemo fugiat aut reprehenderit error.\",\n \"value\" : { }\n } ]\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "9ca29531-e801-4172-843e-4dfb4d523d7e", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.107137Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/create-release", + "schema": { + "description": "Validation Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "errors": { + "items": { + "properties": { + "code": { + "type": "string" + }, + "field": { + "type": "string" + }, + "index": { + "type": "integer" + }, + "message": { + "type": "string" + }, + "resource": { + "type": "string" + }, + "value": { + "oneOf": [ + { + "nullable": true, + "type": "string" + }, + { + "nullable": true, + "type": "integer" + }, + { + "items": { + "type": "string" + }, + "nullable": true, + "type": "array" + } + ] + } + }, + "required": ["code"], + "type": "object" + }, + "type": "array" + }, + "message": { + "type": "string" + } + }, + "required": ["message", "documentation_url"], + "title": "Validation Error", + "type": "object" + } + } + } + }, + "insertionIndex": 396 + }, + { + "id": "740e91a3-49e8-4638-a542-b3d603131360", + "name": "Create a release - default", + "request": { + "urlPath": "/repos/95fwkj85hrf7060zc15g1c37lk5p60yv21vkx/kx8nbnvjb5mfslha9z8uidynmoctf5aruexbckrygevd8c9yh1896rcatmce68len4mfs94b7qxp704pe04rrziaio6xvut618drf1e2ls2cupujvqbig2rurf3a1b6zh9des2jsfwx98fro87hvu64m5yxr82oxjrj1zf9gn3jqadqhlbntoz9fl27/releases", + "method": "POST" + }, + "response": { + "status": 201, + "body": "{\n \"assets\" : [ {\n \"browser_download_url\" : \"https://github.com/octocat/Hello-World/releases/download/v1.0.0/example.zip\",\n \"content_type\" : \"application/zip\",\n \"created_at\" : \"2013-02-27T19:35:32Z\",\n \"download_count\" : 42,\n \"id\" : 1,\n \"label\" : \"short description\",\n \"name\" : \"example.zip\",\n \"node_id\" : \"MDEyOlJlbGVhc2VBc3NldDE=\",\n \"size\" : 1024,\n \"state\" : \"uploaded\",\n \"updated_at\" : \"2013-02-27T19:35:32Z\",\n \"uploader\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/releases/assets/1\"\n } ],\n \"assets_url\" : \"https://api.github.com/repos/octocat/Hello-World/releases/1/assets\",\n \"author\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"body\" : \"Description of the release\",\n \"created_at\" : \"2013-02-27T19:35:32Z\",\n \"discussion_url\" : \"https://github.com/octocat/Hello-World/discussions/90\",\n \"draft\" : false,\n \"html_url\" : \"https://github.com/octocat/Hello-World/releases/v1.0.0\",\n \"id\" : 1,\n \"name\" : \"v1.0.0\",\n \"node_id\" : \"MDc6UmVsZWFzZTE=\",\n \"prerelease\" : false,\n \"published_at\" : \"2013-02-27T19:35:32Z\",\n \"tag_name\" : \"v1.0.0\",\n \"tarball_url\" : \"https://api.github.com/repos/octocat/Hello-World/tarball/v1.0.0\",\n \"target_commitish\" : \"master\",\n \"upload_url\" : \"https://uploads.github.com/repos/octocat/Hello-World/releases/1/assets{?name,label}\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/releases/1\",\n \"zipball_url\" : \"https://api.github.com/repos/octocat/Hello-World/zipball/v1.0.0\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "740e91a3-49e8-4638-a542-b3d603131360", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.106514Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/create-release", + "schema": { + "description": "A release.", + "properties": { + "assets": { + "items": { + "$ref": "#/components/schemas/release-asset" + }, + "type": "array" + }, + "assets_url": { + "format": "uri", + "type": "string" + }, + "author": { + "$ref": "#/components/schemas/simple-user" + }, + "body": { + "nullable": true, + "type": "string" + }, + "body_html": { + "type": "string" + }, + "body_text": { + "type": "string" + }, + "created_at": { + "format": "date-time", + "type": "string" + }, + "draft": { + "description": "true to create a draft (unpublished) release, false to create a published one.", + "example": false, + "type": "boolean" + }, + "html_url": { + "format": "uri", + "type": "string" + }, + "id": { + "type": "integer" + }, + "name": { + "nullable": true, + "type": "string" + }, + "node_id": { + "type": "string" + }, + "prerelease": { + "description": "Whether to identify the release as a prerelease or a full release.", + "example": false, + "type": "boolean" + }, + "published_at": { + "format": "date-time", + "nullable": true, + "type": "string" + }, + "reactions": { + "$ref": "#/components/schemas/reaction-rollup" + }, + "tag_name": { + "description": "The name of the tag.", + "example": "v1.0.0", + "type": "string" + }, + "tarball_url": { + "format": "uri", + "nullable": true, + "type": "string" + }, + "target_commitish": { + "description": "Specifies the commitish value that determines where the Git tag is created from.", + "example": "master", + "type": "string" + }, + "upload_url": { + "type": "string" + }, + "url": { + "format": "uri", + "type": "string" + }, + "zipball_url": { + "format": "uri", + "nullable": true, + "type": "string" + } + }, + "required": [ + "assets_url", + "upload_url", + "tarball_url", + "zipball_url", + "created_at", + "published_at", + "draft", + "id", + "node_id", + "author", + "html_url", + "name", + "prerelease", + "tag_name", + "target_commitish", + "assets", + "url" + ], + "title": "Release", + "type": "object" + } + } + } + }, + "insertionIndex": 397 + }, + { + "id": "1d8e359f-f452-4396-abb5-95e329e13e95", + "name": "List releases", + "request": { + "urlPath": "/repos/dalvcloy4kpaaxukx4e029qyfggpw16f179mj18sm79t3bkror8v5knzamx9fbs13y272go8m98z9p35/qtozigcm75z4nvtct1nvvzem7dkfbznfg1d2zhj2bynd3kd3nu3pibwx7xbau0lrv8kfkvg88mp3k2vovr28bxpjizd7slgv9htgfmcs6ad4wnpgytpn467pljlq1idfw9j0ubhc26k6tax7y0n43j1a3ot7j02g44jayoknv2qjovtz5zppty3a8e1tgllinporvbmm/releases", + "method": "GET" + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/792997\",\n \"message\" : \"Occaecati qui et et. Nulla voluptas repellat tenetur dolorem esse nisi. Repellat quos qui provident.\",\n \"url\" : \"https://web.example.mocklab.io/218794\",\n \"status\" : \"418u4ibiyyq8zwh05q218k5kol95kuxkld39tnkvoiyul78vqgertaadb1io6chaglm2czmpgk3f5d5t3ktou4m5m9bdi103zq9pktp83fthc0rg2m6jekswgws4tf3iojt41jwcbzgumfcqgrmy6xu7fb7hiuqohlht0v56l553m1qiqmre12m06x6frkc\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "1d8e359f-f452-4396-abb5-95e329e13e95", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.106323Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/list-releases", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 398 + }, + { + "id": "01cb7eef-377a-4225-a533-37c6c962f4d8", + "name": "List releases - default", + "request": { + "urlPath": "/repos/eac50x3h0pw5c6u43ulqj0c97ix75zg7f3rvf81ddztg6oq9a8m3urb49dajeyjmn666g1hq946lidlkzdfodua1kx9buqaa5zbxxc/92vuxc5293qoznsrbsaugtljhstfq7cu6gndbn8xcqm3iixa1s20vwuw1t1xdbt5jj1/releases", + "method": "GET" + }, + "response": { + "status": 200, + "body": "[ {\n \"assets\" : [ {\n \"browser_download_url\" : \"https://github.com/octocat/Hello-World/releases/download/v1.0.0/example.zip\",\n \"content_type\" : \"application/zip\",\n \"created_at\" : \"2013-02-27T19:35:32Z\",\n \"download_count\" : 42,\n \"id\" : 1,\n \"label\" : \"short description\",\n \"name\" : \"example.zip\",\n \"node_id\" : \"MDEyOlJlbGVhc2VBc3NldDE=\",\n \"size\" : 1024,\n \"state\" : \"uploaded\",\n \"updated_at\" : \"2013-02-27T19:35:32Z\",\n \"uploader\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/releases/assets/1\"\n } ],\n \"assets_url\" : \"https://api.github.com/repos/octocat/Hello-World/releases/1/assets\",\n \"author\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"body\" : \"Description of the release\",\n \"created_at\" : \"2013-02-27T19:35:32Z\",\n \"draft\" : false,\n \"html_url\" : \"https://github.com/octocat/Hello-World/releases/v1.0.0\",\n \"id\" : 1,\n \"name\" : \"v1.0.0\",\n \"node_id\" : \"MDc6UmVsZWFzZTE=\",\n \"prerelease\" : false,\n \"published_at\" : \"2013-02-27T19:35:32Z\",\n \"tag_name\" : \"v1.0.0\",\n \"tarball_url\" : \"https://api.github.com/repos/octocat/Hello-World/tarball/v1.0.0\",\n \"target_commitish\" : \"master\",\n \"upload_url\" : \"https://uploads.github.com/repos/octocat/Hello-World/releases/1/assets{?name,label}\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/releases/1\",\n \"zipball_url\" : \"https://api.github.com/repos/octocat/Hello-World/zipball/v1.0.0\"\n} ]", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "01cb7eef-377a-4225-a533-37c6c962f4d8", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.106093Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/list-releases", + "schema": { + "items": { + "$ref": "#/components/schemas/release" + }, + "type": "array" + } + } + } + }, + "insertionIndex": 399 + }, + { + "id": "967b844e-6c9e-4053-8525-4b0a90158f44", + "name": "Get a repository README for a directory", + "request": { + "urlPath": "/repos/bqof15s6d3rct964l2a89wws7f6acnolaf880z9s9ec671y0w1jy5fn53jqkj2ezlih9cpn968pd7az0tohn79c72495tqfqx2mixjg1lqvpu9uvx7pho5g5ijnx8x8butezf/3csvl56dme723vusyz0564bec41ogqty9v8p0lq8sakms19r2btwz9qj4mjfrcg1oabl7t9g3tw6e0x33arnao68e3v1509hl/readme/kwkfmnddqmvjt857sgjhh86hwgo0icqqvr63dexiq078j2r9p0i7xodgaba9", + "method": "GET" + }, + "response": { + "status": 422, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/852006\",\n \"message\" : \"Expedita quia officiis vel aut dolor quae magni. Dolorem rem ullam dolorem. Minus et ex. Doloremque enim et aperiam est distinctio aut. Molestiae cumque id praesentium accusantium fugit ut eos.\",\n \"errors\" : [ {\n \"code\" : \"alsuc14rcrwj0xltq8tf08cb1d155fu8tu5b9374zeh0x05uj7i2jxh2\",\n \"field\" : \"gq9g3y2vbrjj6up6a39eeskzfxj0nanuceq9xbirbr2mniykwrrkk1oq961oajjx6\",\n \"resource\" : \"2b812xmkycjva3ivrsn0u58ttwu4papvr\",\n \"index\" : 2321035771126686605,\n \"message\" : \"Ut expedita ipsam consequatur iure dolores. Illo qui et cum vel dolores. Quae aut modi. Vel quasi sequi saepe nihil sit officiis voluptatem.\",\n \"value\" : { }\n }, {\n \"code\" : \"5s2ewp55jpznn02l0ccj07n4rit0d089iq5lmge9myif3hlqj5aqxlafe1l42l7doqmm\",\n \"field\" : \"4xigiwmhrpab3pc1huznzdx2o4xc1abjerptcmqek15xtn8q7qqx0k\",\n \"resource\" : \"jfkirpoi6ocz\",\n \"index\" : 1588475563304310761,\n \"message\" : \"Fugiat perspiciatis ut ut quibusdam vel ab. Eum aut quia sed voluptas. Dolores qui a nulla soluta. Fuga quisquam autem eum nam laudantium. Mollitia quod reprehenderit.\",\n \"value\" : { }\n }, {\n \"code\" : \"378gnqs3guc78jqz4w\",\n \"field\" : \"d3t84c2hbi0e6l9jitwgjtgq9ykb7qjsln8jfy47npxeoe3l65vfians9rkhxd351nny2vh2syym3b6aroqny4398hesyyxbg9ko20dnqxe1nspldpq09c96iyu16dxhbnsdhwxy06f5n688h2fuq9zvuowdd7co9jfdw70e3xzq1\",\n \"resource\" : \"i958j21p40vvc3v92ml04fszgm5o3ja8gwk6\",\n \"index\" : 532626988529602962,\n \"message\" : \"Veritatis voluptates ullam sit. Autem velit minima in numquam iure laudantium nihil. Amet adipisci minima explicabo fugiat.\",\n \"value\" : { }\n }, {\n \"code\" : \"tq0l38838gvf83aptribww2n8v5xa64xz1668cqsrdink01hnjcdmcuek85wouu1r3gdwhuol27u40uhi3wep09ig6djnnbkczjt9saheqqmjre3jh32vfwf6pcii8hxbz3uxkokhivx5ovp9n1dxmanzbj9z\",\n \"field\" : \"2j2u4d5s7bqruzx8jmi9r7zjlx7brtqleyfjhnlgf3hcqc39v27wcoo23ytrieo\",\n \"resource\" : \"1t1c6zl7unt2o\",\n \"index\" : 6498647751061773786,\n \"message\" : \"Nostrum eaque quae dolorem similique id nihil. Blanditiis pariatur nobis culpa qui omnis ducimus commodi. Unde fuga voluptas atque sed. Amet ea ducimus itaque. Totam sapiente possimus et itaque veniam\",\n \"value\" : { }\n }, {\n \"code\" : \"2ogp1i71urgxwczfaysqoajbawak2qfyk0wha806es4c8r4kcp1cquycyjfkjeq184i7pg3vom4vslznga6n0z674pdmmbvo3sv\",\n \"field\" : \"7vr84vxdmtwbqgipw8g3zbfn0ceqbwwx06ajt2mn9ljran5xwx1m5h69ipn54ytrd6izhpky4vwaibm2utp82eour3c54evh547560rab1eszo019d33kdtpuphqoholsg\",\n \"resource\" : \"65o1jxh7cbo0warwv81mx06ynt8h3urwyyc084ii8rrt5v7987fr7o1l3s6ls1ot2lb58tk4oyuypolbnvga2g65m0ls5xc1uhgyypemmkn35sdmom6m182estmhoesfy4fa735w1ko0172dggnuwptds2gnxc8g1w4cm3x5534d79tplzhsrqr18ob037\",\n \"index\" : 8352488022915196280,\n \"message\" : \"Sit id voluptatem est. Sed voluptate laborum. Debitis omnis illo quidem fugit. Id qui deserunt. Fugiat corporis asperiores fuga libero et ut.\",\n \"value\" : { }\n }, {\n \"code\" : \"uiqy44eqgn40jhcm2noti3mofuv5qhbb9fp0gkibyaiiplwmbekk6dyo3zlxev5zah6llprfvro9drg78gjdsq8q78b4yxqescta5fo0fthx9rfuc0j78it37lba9kil0nef2ept950yjh7tpreji\",\n \"field\" : \"qu04a73q83p0zif2z5397wznzf0wimmp1292z02iuws3teebkq571zs6jgka03zraxp1bmxdn26fxd5vpls6b2x990l24l1q7hjb8i6ausn\",\n \"resource\" : \"endn4snfs3x88e\",\n \"index\" : 7901438982590559798,\n \"message\" : \"Aspernatur vel velit est unde excepturi est. Non accusamus impedit. Voluptatem vel voluptas ut vitae occaecati iure eos. Veniam consequatur reprehenderit illum voluptates natus incidunt accusantium. T\",\n \"value\" : { }\n }, {\n \"code\" : \"3q819290zeentir271u1508gvn82wllvalvsg7ymg6bou8kb9dzbs6ba5df9kxf1kvgi440ukjgf9fcmjq1pep9yh9zq0nlswowm5\",\n \"field\" : \"atp6rvrbna4rln9kp30pmpf5p6rs7wpxv43j3q8n9010v4j78eqaej5rxb1y62cs92mslwb1lu59s81hzoc87h4mqngzi2uil315l8mac8wz0ofqcnr53n3m79hvz2m05ddq2mcds8rlrr1n1n73b2sd0ejd4sz4v61i6ms2fwy9o4v\",\n \"resource\" : \"kzlvbvlpygeec\",\n \"index\" : 8544493344530251148,\n \"message\" : \"Sapiente dolorem veritatis. Quas quidem dolorem consectetur ab et. Sit aperiam animi odio. Et fuga possimus dolores sed.\",\n \"value\" : { }\n } ]\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "967b844e-6c9e-4053-8525-4b0a90158f44", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.10601Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/get-readme-in-directory", + "schema": { + "description": "Validation Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "errors": { + "items": { + "properties": { + "code": { + "type": "string" + }, + "field": { + "type": "string" + }, + "index": { + "type": "integer" + }, + "message": { + "type": "string" + }, + "resource": { + "type": "string" + }, + "value": { + "oneOf": [ + { + "nullable": true, + "type": "string" + }, + { + "nullable": true, + "type": "integer" + }, + { + "items": { + "type": "string" + }, + "nullable": true, + "type": "array" + } + ] + } + }, + "required": ["code"], + "type": "object" + }, + "type": "array" + }, + "message": { + "type": "string" + } + }, + "required": ["message", "documentation_url"], + "title": "Validation Error", + "type": "object" + } + } + } + }, + "insertionIndex": 400 + }, + { + "id": "f5d470b0-bdd8-440c-b51c-a8590ac05939", + "name": "Get a repository README for a directory", + "request": { + "urlPath": "/repos/3pwsekkjzkau7dhqhgflkglmubueet71mdstbmj1hsjee7ob4buekvsg3zcibhk71zjxjbj0t1nqm9iytuv4x76t35o4zejcq0ummvl3jlcg3ceyuigw0s00nhqi1jqkb003dicnb9gqr3p71vnfwfa6nrqepx641i18vhtosx9ux2rrbc7/872swyyasnxkab6apou774y15zin5isi0vqwi3nl3m8tkjcszn4gsuxkq9ya6mn3mr5w5pp9ndvjl0wqnlxnah9x1blfriyr0ir3uzygie648vc9sge4vn44ub22l1rmhux2o2lnejuqqoy4e6l5wsrctrhoo8o0de6f0y5ae2a0vejt1lu/readme/fjx45zwg0men57st9w2rs1l7p5sju2d0knk1z7il4s069y40nr12v4rwr5yu7mc9bylkxanjocg710vtlr5m8jczi9pfqo8myl8lpfnlssrktqmnwyk5ujq1ufl1snyji8oop3wz7h8w5vkn0zvhsng25010zv0ja3ves84ztrkrowpx4", + "method": "GET" + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/678257\",\n \"message\" : \"Laborum qui nemo harum atque. Molestiae expedita at. Officiis consequatur sed quia maiores qui repudiandae.\",\n \"url\" : \"https://web.example.mocklab.io/733360\",\n \"status\" : \"7ntij4kdftzmg6jpuncqah8raplfxv7qapw840kw5wxff8w5w3bsqrqrfch27t3lkw4a8wi1qdrsq7wsz\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "f5d470b0-bdd8-440c-b51c-a8590ac05939", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.105212Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/get-readme-in-directory", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 401 + }, + { + "id": "85da4494-1445-4eec-a14d-1aa0b03add9a", + "name": "Get a repository README for a directory - default", + "request": { + "urlPath": "/repos/p9p9w1v8h6kimungxi034ec6zu4jyzpjz7h6pzdp8cfky2f4w1z1i2g20lfmuxp7mdbaaqflgug57nsph6p8ess8dqjfo2jeya2tps89fgvm7dl6d45oqo3a1b69omgavq5zo7gorrkr4c6f3wdpoejq92mq2175kiyry9kewb28pow/ccrnhtbnu73w0tx7wj6mnld6pmvf5ltnbanz9o8rcrk9fziuikxxc85tnroyx2nft4nvc9t9vgujig18d73enw83r37jo7k82gv5b8y2xoo8pf9x0na/readme/4eetihqtz4pkejpdn21nb10l8ngsp1k6krt98mst1pnbqhrfyvl4ouocqbmnyyty6uixp05czxfzfy4h1h5sz7ecp4iusbbno7m2mg4qh831199fu3x3jq1hfmb8608acrrz3gnv7iqdrppdjitol4gz22pql5yw", + "method": "GET" + }, + "response": { + "status": 200, + "body": "{\n \"_links\" : {\n \"git\" : \"https://api.github.com/repos/octokit/octokit.rb/git/blobs/3d21ec53a331a6f037a91c368710b99387d012c1\",\n \"html\" : \"https://github.com/octokit/octokit.rb/blob/master/README.md\",\n \"self\" : \"https://api.github.com/repos/octokit/octokit.rb/contents/README.md\"\n },\n \"content\" : \"encoded content ...\",\n \"download_url\" : \"https://raw.githubusercontent.com/octokit/octokit.rb/master/README.md\",\n \"encoding\" : \"base64\",\n \"git_url\" : \"https://api.github.com/repos/octokit/octokit.rb/git/blobs/3d21ec53a331a6f037a91c368710b99387d012c1\",\n \"html_url\" : \"https://github.com/octokit/octokit.rb/blob/master/README.md\",\n \"name\" : \"README.md\",\n \"path\" : \"README.md\",\n \"sha\" : \"3d21ec53a331a6f037a91c368710b99387d012c1\",\n \"size\" : 5362,\n \"type\" : \"file\",\n \"url\" : \"https://api.github.com/repos/octokit/octokit.rb/contents/README.md\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "85da4494-1445-4eec-a14d-1aa0b03add9a", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.104906Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/get-readme-in-directory", + "schema": { + "description": "Content File", + "properties": { + "_links": { + "properties": { + "git": { + "format": "uri", + "nullable": true, + "type": "string" + }, + "html": { + "format": "uri", + "nullable": true, + "type": "string" + }, + "self": { + "format": "uri", + "type": "string" + } + }, + "required": ["git", "html", "self"], + "type": "object" + }, + "content": { + "type": "string" + }, + "download_url": { + "format": "uri", + "nullable": true, + "type": "string" + }, + "encoding": { + "type": "string" + }, + "git_url": { + "format": "uri", + "nullable": true, + "type": "string" + }, + "html_url": { + "format": "uri", + "nullable": true, + "type": "string" + }, + "name": { + "type": "string" + }, + "path": { + "type": "string" + }, + "sha": { + "type": "string" + }, + "size": { + "type": "integer" + }, + "submodule_git_url": { + "example": "\"git://example.com/defunkt/dotjs.git\"", + "type": "string" + }, + "target": { + "example": "\"actual/actual.md\"", + "type": "string" + }, + "type": { + "type": "string" + }, + "url": { + "format": "uri", + "type": "string" + } + }, + "required": [ + "_links", + "git_url", + "html_url", + "download_url", + "name", + "path", + "sha", + "size", + "type", + "url", + "content", + "encoding" + ], + "title": "Content File", + "type": "object" + } + } + } + }, + "insertionIndex": 402 + }, + { + "id": "2e473a51-d1c6-4d64-a462-c228bb0ddd9a", + "name": "Get a repository README", + "request": { + "urlPath": "/repos/afn1l2qvgwwmgdxryen0fiugs652nfgo9pzj/c3zjpv3wug8i3y2dxrn07gsq9au4p2ntwjex5wxxqi0s3vn5f51qdyhwo1z8grrcpshfk9w50vnjidnglauhcytn4xcadnk8pmic4hyvqyvv94x7fjr/readme", + "method": "GET" + }, + "response": { + "status": 422, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/900735\",\n \"message\" : \"Voluptates aut velit error. Saepe omnis commodi. Aut labore voluptatum. Dolor sit et amet. Itaque consequuntur eius iure reiciendis quisquam.\",\n \"errors\" : [ {\n \"code\" : \"zp43o36qjmtam1frjucunuvjog7oo0fza4nf9fcwwimtmd00lq2djk7vcb3cz0b896lmnd3fdufc82ha9bw\",\n \"field\" : \"u2t85kk48htmmcby8b9ex7o391im61iic0tpds1a2ft3qce5ik9uqhz9h1rgam9ystex3dzdl7nn58xt9j1acbyiel1n1ldnqee71acd6nhrcvs70fhufqapx30wqpmrfcfemc0ho895jdlr8ypmbiyri43y5\",\n \"resource\" : \"5l59c0z6vpx6jf7v9fu10mkzjqfquyieqrb54rlo11m29pucoi60ytr17qov2vb47tkw10fjp5w59j2tlz07blxkj8n96iepxqw4yr5\",\n \"index\" : 5776491417053819147,\n \"message\" : \"Rerum vero possimus atque quam et nulla. Velit porro a. Corrupti eligendi aliquam sint nisi accusantium. Alias doloremque ea dolor omnis ipsam. Id ipsam suscipit.\",\n \"value\" : { }\n }, {\n \"code\" : \"n95jmj5ldr2jte0im184sn91s5ua5f11l12picnfbbofse2xx6tvsj0fth2zrebp9a067bkvwg3uadtjkwd6nag6v1et2mknhs356zgltwdgqmhh124aqsudglrsdmru3f4mal8aft\",\n \"field\" : \"lh3z28poh4shwh4xe9e6k5so49vj9vpzj49wuz78mi6v4zsawxk80ozle3l07csg6ic3fw9n15a7swf7\",\n \"resource\" : \"h58ixtz3xxdwo70vucx570cat1ql4hw6e96bclmfg3kcnjb5rlm8ihopzplu72vr3len59g65h53fvimaktqf1hlsf9gojwi50eu2t6hfwzii16445bq1uwvdk4d8unkgbv0y97vrkwh2v62cv9zwhxtxnbbp9lg3e6gt5kslkikqb7t831kc3b\",\n \"index\" : 7291431381952692890,\n \"message\" : \"Ipsum enim enim tenetur aut et aut. Quo quibusdam ipsa omnis. Ut occaecati enim ut porro in excepturi. Sed omnis modi harum atque.\",\n \"value\" : { }\n }, {\n \"code\" : \"py7rb7gbuzhndwo3db96m\",\n \"field\" : \"4milkmxcl88gugk42jie89bkmgfva0u1m0trgyoqxbcc36kakz1ang7wbs0\",\n \"resource\" : \"75hwqvptgsz0ylrp39fy2v7gbxd0kakd2n431jki5l09jcq94rjy8cekzyeoiu22e2vvi99zesm0vzsvq9mh2crjfjbz5vyqtirq29e1xpedbjjrvt4v10hped3ue1cap8vq5eqkoo8qab1cv4vmt0viby3odfsqwij7bh47h561mtcw4qac9f3dowp\",\n \"index\" : 5679910216658965550,\n \"message\" : \"Corrupti quaerat maiores iste error ut autem. Molestias vitae corporis. Mollitia minima quas numquam modi voluptatem. Sed autem perspiciatis consequatur. Qui qui architecto.\",\n \"value\" : { }\n }, {\n \"code\" : \"etz140jvpztr22oskqtj6iqbgbe\",\n \"field\" : \"anilasxtvk9atyk9mp9v2mu1w38yyd1tc8yjefzpxrkjk2y0sk899ashw4h77i60nj1xydz6c5o1o5jshtwhegmnrk9jutgnryfw8nwe1yg8ghn1hq1nkn787hmawv3xcjcaf4r44414wu61j9zzr3cn3oiw4bammf15xs3apxdtx6zx54vhck99ad4661qrca0\",\n \"resource\" : \"mbm093gmdxquwawso3h0izgmr81zewoiworx0aenijh6jv96757cowe1z08ra4925ocdieucjhxqpu20s5vl28c9mrt5bymh2g8wwas9klorua9kpm8fju70zt99ctg69wjztrnuey54lb744yfrsadgeuzcaq4as8qxv4d67s1tr2gls068x976nar9h405ytg2nuof\",\n \"index\" : 8098057999881766357,\n \"message\" : \"Impedit ducimus qui corrupti velit saepe. Explicabo esse qui consequuntur eum repellendus nesciunt quia. Laborum sequi sapiente.\",\n \"value\" : { }\n } ]\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "2e473a51-d1c6-4d64-a462-c228bb0ddd9a", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.104723Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/get-readme", + "schema": { + "description": "Validation Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "errors": { + "items": { + "properties": { + "code": { + "type": "string" + }, + "field": { + "type": "string" + }, + "index": { + "type": "integer" + }, + "message": { + "type": "string" + }, + "resource": { + "type": "string" + }, + "value": { + "oneOf": [ + { + "nullable": true, + "type": "string" + }, + { + "nullable": true, + "type": "integer" + }, + { + "items": { + "type": "string" + }, + "nullable": true, + "type": "array" + } + ] + } + }, + "required": ["code"], + "type": "object" + }, + "type": "array" + }, + "message": { + "type": "string" + } + }, + "required": ["message", "documentation_url"], + "title": "Validation Error", + "type": "object" + } + } + } + }, + "insertionIndex": 403 + }, + { + "id": "1880a15b-be33-468b-8849-9c18bd7315a1", + "name": "Get a repository README", + "request": { + "urlPath": "/repos/xo51puwwr6icy0l8dazbaszwtxsmpp03x7pvgq7ojfd032y73u081qjf47oh70ab9ez4w8hf667muem/gywlga4qwdezagvponhzxq0rka8205c85xemvgn8shyfpj576npvzh8u4kc6v7a4dv86reo5henw6kfe2dyc8332mpqwbwgrxexeqc3exowkqqcaa183sb7h61jxkkwgo0mw9rgr23uyc/readme", + "method": "GET" + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/939104\",\n \"message\" : \"Illum sint sint. Ea consequuntur id odio earum quis pariatur quo. Consequatur a et. Labore dolores id quibusdam voluptatem. Officia et et exercitationem qui.\",\n \"url\" : \"https://web.example.mocklab.io/625133\",\n \"status\" : \"xv0sjkg1w2jajuwqh8vkmwj8qldmuj24jov5o8aptnekl78im3kx5qvn3dutelp18pzhucerwr3ltfr59mp2y\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "1880a15b-be33-468b-8849-9c18bd7315a1", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.104077Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/get-readme", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 404 + }, + { + "id": "85e7da64-e585-4268-a449-f6d6a6ff54ef", + "name": "Get a repository README - default", + "request": { + "urlPath": "/repos/9c2hv575otvotqvc6axi6e9p480ce48aafdcgzysaf19cvifdeea2c1webtrea69oz0y3m4pe7s/lg7axxu0p7xduuvlqy0y5fsxbwuw15x4vexgzfyiby6hxfv5ofnb/readme", + "method": "GET" + }, + "response": { + "status": 200, + "body": "{\n \"_links\" : {\n \"git\" : \"https://api.github.com/repos/octokit/octokit.rb/git/blobs/3d21ec53a331a6f037a91c368710b99387d012c1\",\n \"html\" : \"https://github.com/octokit/octokit.rb/blob/master/README.md\",\n \"self\" : \"https://api.github.com/repos/octokit/octokit.rb/contents/README.md\"\n },\n \"content\" : \"encoded content ...\",\n \"download_url\" : \"https://raw.githubusercontent.com/octokit/octokit.rb/master/README.md\",\n \"encoding\" : \"base64\",\n \"git_url\" : \"https://api.github.com/repos/octokit/octokit.rb/git/blobs/3d21ec53a331a6f037a91c368710b99387d012c1\",\n \"html_url\" : \"https://github.com/octokit/octokit.rb/blob/master/README.md\",\n \"name\" : \"README.md\",\n \"path\" : \"README.md\",\n \"sha\" : \"3d21ec53a331a6f037a91c368710b99387d012c1\",\n \"size\" : 5362,\n \"type\" : \"file\",\n \"url\" : \"https://api.github.com/repos/octokit/octokit.rb/contents/README.md\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "85e7da64-e585-4268-a449-f6d6a6ff54ef", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.103826Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/get-readme", + "schema": { + "description": "Content File", + "properties": { + "_links": { + "properties": { + "git": { + "format": "uri", + "nullable": true, + "type": "string" + }, + "html": { + "format": "uri", + "nullable": true, + "type": "string" + }, + "self": { + "format": "uri", + "type": "string" + } + }, + "required": ["git", "html", "self"], + "type": "object" + }, + "content": { + "type": "string" + }, + "download_url": { + "format": "uri", + "nullable": true, + "type": "string" + }, + "encoding": { + "type": "string" + }, + "git_url": { + "format": "uri", + "nullable": true, + "type": "string" + }, + "html_url": { + "format": "uri", + "nullable": true, + "type": "string" + }, + "name": { + "type": "string" + }, + "path": { + "type": "string" + }, + "sha": { + "type": "string" + }, + "size": { + "type": "integer" + }, + "submodule_git_url": { + "example": "\"git://example.com/defunkt/dotjs.git\"", + "type": "string" + }, + "target": { + "example": "\"actual/actual.md\"", + "type": "string" + }, + "type": { + "type": "string" + }, + "url": { + "format": "uri", + "type": "string" + } + }, + "required": [ + "_links", + "git_url", + "html_url", + "download_url", + "name", + "path", + "sha", + "size", + "type", + "url", + "content", + "encoding" + ], + "title": "Content File", + "type": "object" + } + } + } + }, + "insertionIndex": 405 + }, + { + "id": "c71a3502-52fa-4ad8-8c44-15e3b7aa427a", + "name": "Update a pull request branch", + "request": { + "urlPath": "/repos/3r1ggwavmje4xuk95ohtnbxpsqo83wwhss8boru919fkerrusdox4cv5aulenv9vft8kl/ymxw0dnsooxmesxvong6tc8aur93e6deyklepdw5yfeogkv0gk4ahqz2hay50rd8isx1jtal6oxn8p3tac99hisz7bmqqys4728oxufrglortk3til41w8481hd6phfu42knlnl4fhg8pw99ddh8u51uqjvdz895esbei8so3n8n7ew5qt3om4hp364f/pulls/6673193453155574227/update-branch", + "method": "PUT" + }, + "response": { + "status": 422, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/985119\",\n \"message\" : \"Eos officiis et alias facere nostrum atque necessitatibus. Sed quia aliquid est ratione ut voluptas itaque. Qui quos ut vitae nesciunt tempore voluptates reiciendis. Autem sint occaecati non. Sed sequ\",\n \"errors\" : [ {\n \"code\" : \"5dpd5kgtkrt5prudsq7tys392xri6r744oavtpdhpy3ud9oe9bgk868xfi0hc7j11f8homqhoisnl6496edqxkafpye2s83jf3tr7o0iazcins0uqjyt0o43c2lagxyjj3ftvg1nuuv9ikqnybnmq3vlrpxyj2sv4ona7kk4\",\n \"field\" : \"2bfnfolep5md79ns4k160xee9ia5pfg21ufrcr9jro3ph0roiaskxdfynersw2egczj3juc26q61m8glvjas6726cnonf8340xfg3po0ygxr1dzdbk1eekcr5a383mox0q3gw11x40huecbs5ta2p0ghp1dx2zk\",\n \"resource\" : \"l8qbgtrq0vh0z7xc6n3hky4ceh4oat90r20z8l8vrd8cmo8wy8prt2ftefhs3udpffhbu9a724zjjmmewnbi14yrhkwf5jdg64q6hqqodwfjbyi4q0ni198vyxpx837qxeytus8gh53zibyuivgw8c74l4pksu92jvhv124o1w73\",\n \"index\" : 5410952094088073568,\n \"message\" : \"Mollitia eaque labore autem quo. Omnis soluta ipsum maxime qui. Praesentium facilis quia minus dignissimos.\",\n \"value\" : { }\n }, {\n \"code\" : \"lauzpfaj2jc6fcb6q5bzyw403z7s4mexj7pc5mvpykeqn4qxr9xnjfd9mll1u4d5sbow53cudpxz0qrv062xuqsa2xeyev5igyko3xykj2h41nukbkt\",\n \"field\" : \"dxdf8s5yrrqmzlptg0ylfpfo8thpbtgvbzrzmhmpcrepvj3qsx4kgar0el3w13oa\",\n \"resource\" : \"2igggsk31pt65mnsay8mqpjk2sz76j9felfhixxr96m2\",\n \"index\" : 3601228765511861774,\n \"message\" : \"Autem voluptatum ea et voluptate quasi. Vero nam unde minima fuga iure temporibus voluptatem. Quis iste unde voluptatem corrupti sed. Aperiam pariatur illum possimus qui. Rerum qui distinctio quia est\",\n \"value\" : { }\n }, {\n \"code\" : \"44z7yrwqihfmpjuk\",\n \"field\" : \"8y11lxahosu7dzoipt4xaeof9jf7w8ummzsyojfnmreavuhx3lyhfw7va6ky2zjj1k17clw278glzzkx8sgfucfhopavc2nz6lof8lq97ny1c1oe6l97vo7tucsrxt43lspwgeow9mn2q2t5ntu93b5\",\n \"resource\" : \"j5lg5sf3y9pqix2b82pg2d2p13uo9tqod8vtxgo7oydpw5lglh01be4r8gqc\",\n \"index\" : 6158917956096558968,\n \"message\" : \"Perferendis accusamus et consequatur placeat. Et enim nam eaque ab molestiae. Id amet excepturi recusandae aspernatur.\",\n \"value\" : { }\n }, {\n \"code\" : \"uu161jds9z9rlphtmmn078q1b1nbpmoclcy70edeqtzbdqia1e13zw1snfbp2aecurvqo4lqs\",\n \"field\" : \"j2ndy2ldxyf1qs411yd4kd3kg3yogt7\",\n \"resource\" : \"61dwl6pf1aekvs16ykgyy7k25jukfd8u2jdkc5eahvdssxo913a6dgn8fz598rndmhqid\",\n \"index\" : 2773887748761514529,\n \"message\" : \"Qui officiis et distinctio deserunt ut. Rem numquam deleniti temporibus. Iste accusantium mollitia dolor ipsum est inventore.\",\n \"value\" : { }\n }, {\n \"code\" : \"f9sjbw8yepd9rq17q3gobqfq5ta9ripsze4ca3hzwzn9wh9rr7nq67pk3vv7b4tly3hzmr6fhnghfnafpmvghrxrmq8drrwkn03ocs2lvounsfri4rlxzqzhf85szht5gnucs6atswft0utdbcabhd7pmpadvcpfk6nlwqyoyhq57u070j7tmvctzjs6c\",\n \"field\" : \"z9llklhijzzeqds0ss4et9gv5c9wqjudmwwzak24grxjrkadotoxnvxpom09s0ti9pk7xbhbnfqpqo8tnvqgnlbm7uvouyay0d6ns3jguz5ysbofjyt1fd93lvfhofzjj4mpwl6qbrm3r444ep3u11n8q9b\",\n \"resource\" : \"ry0xrpfvabzpzjgb0v20l7z2a9btsu8alt890vb0rzy7hgi6sevy7ixsefob7ioh95jxccvgrc6nql9xw852irw47dz93dnirm6r2oc8mvyd3vdh50dia4ehpa1z5y9\",\n \"index\" : 8709970329380837729,\n \"message\" : \"Iure rerum qui magni. Quae sunt est beatae placeat animi cum. Alias corrupti velit beatae sed enim cupiditate.\",\n \"value\" : { }\n }, {\n \"code\" : \"pfgitrkapgz57j04o13tjco2fn9y9d8roiu2e6xkvvohtycrb904wonlxu7pwfya8oc70jn9bevb2727iycbibtmkq4oolsrtlrtxxuf2tzkaj6rfkvpj9mh049zdnf48hu40pfk3ceyxd84xrtqcfj1nx6mnaiahgvo5a0s2muvz9ph2v\",\n \"field\" : \"87rcnqklpomd09hi1ecpfbxur9fcwpgpus6ndn6y30xie8uuk1475gxfhztlsduhviol8elcmrmsiuyfesxyk6wpuvkw2yzkhucrnbgk607ya8q4lftvnsx5mjrptopt79rfrvshfkzvy1l6a1u86y9r94o5ygxs14remdh8gbyhsp1s1z3qac0ubqz\",\n \"resource\" : \"o729sbsv3ijcinamy6uj99l8nd1ukmjb4neaq8wujf55b1nqyy3gk3deg4o5brt99t5od0e8dpmke7c75a1lcim2ocsd7n5a3724dwbnl2qtrqcl7kqdib0ghz153i\",\n \"index\" : 206445346535620412,\n \"message\" : \"Error dignissimos id deserunt facilis. Et ullam laborum vel quidem iusto possimus. Corrupti commodi sit vero reprehenderit vel.\",\n \"value\" : { }\n }, {\n \"code\" : \"fjzi3alv18xapulakriwzujhrijauqv65b2fddtezxzr4i2q20hfvijtkskt90qb0yyt3npc7a0hfm09vhj2sj4p5wxo2ns4867l8vtnq6v\",\n \"field\" : \"pn9quz1f0wgxss3mldhwwgvmaorzkpe70r6anb5vbc0\",\n \"resource\" : \"zhb253q3lj77bbym9scbp4rs3h2cpf0lzitvp6hckwwwk6fkdqanyo97ryvwn5lu8qv8r\",\n \"index\" : 7123474744945554992,\n \"message\" : \"Optio et maxime non magni esse nihil dolore. Voluptates facere nisi. Dolores quidem dolorem voluptatibus. Omnis totam eos ipsum. Repellat esse dignissimos labore iste et reiciendis.\",\n \"value\" : { }\n }, {\n \"code\" : \"b5ptxgmldli87i61wcw489xczahnn7j505mhkls82f60yhxm4f4h7hyaponp1zbiowbhge5rn6yhtfro18aoy0bva579gaoxn3v3v4bugufepl8a4bhs5ac5kt6o3d2rqbu9nbf81r9nxhsx3w\",\n \"field\" : \"yyd64ygqt8dsquaje681m0xzvnca7bbrrqc1a0uhkysbukgo1v1nevsyg411tkqawhmyhxf48g20z9rmmyp8wisy0g6pn65ce8js43kz9bh0qd6pc59tisj8ruoy113dfl4xs7xq3to7f87lhqn2tzrp1nx4mt320fcnpyy\",\n \"resource\" : \"t30zkfhej5met6q0gmqlj9pwp925px4pkv62mcdb00fx69q51suzn2j4cyk8yppq1g17qqsnp9akh6qz3h\",\n \"index\" : 3543810678209771325,\n \"message\" : \"Adipisci voluptatum autem est deleniti. Dolor aut similique quasi est accusantium quo quis. Cum et aut laborum.\",\n \"value\" : { }\n } ]\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "c71a3502-52fa-4ad8-8c44-15e3b7aa427a", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.10365Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "pulls/update-branch", + "schema": { + "description": "Validation Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "errors": { + "items": { + "properties": { + "code": { + "type": "string" + }, + "field": { + "type": "string" + }, + "index": { + "type": "integer" + }, + "message": { + "type": "string" + }, + "resource": { + "type": "string" + }, + "value": { + "oneOf": [ + { + "nullable": true, + "type": "string" + }, + { + "nullable": true, + "type": "integer" + }, + { + "items": { + "type": "string" + }, + "nullable": true, + "type": "array" + } + ] + } + }, + "required": ["code"], + "type": "object" + }, + "type": "array" + }, + "message": { + "type": "string" + } + }, + "required": ["message", "documentation_url"], + "title": "Validation Error", + "type": "object" + } + } + } + }, + "insertionIndex": 406 + }, + { + "id": "695ad96c-fdeb-4cdb-a5ed-f4af29c316e7", + "name": "Update a pull request branch", + "request": { + "urlPath": "/repos/pfca/g53uftlxxy4zmrya7min1l7ackh/pulls/3706598730588248588/update-branch", + "method": "PUT" + }, + "response": { + "status": 415, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/037022\",\n \"message\" : \"Omnis aperiam reiciendis rerum sed sapiente. Aut accusamus neque expedita. Occaecati quaerat unde iure nisi praesentium iure. Cupiditate impedit qui corporis.\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "695ad96c-fdeb-4cdb-a5ed-f4af29c316e7", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.102768Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "pulls/update-branch", + "schema": { + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": ["message", "documentation_url"], + "type": "object" + } + } + } + }, + "insertionIndex": 407 + }, + { + "id": "51da2291-1ae1-4c5f-8c16-e1894ad51db6", + "name": "Update a pull request branch", + "request": { + "urlPath": "/repos/y879jgtcmi6ga6vftxn9u54xi1sbqo3l3uoxjqqb9od5f22zm7cpl4xon7pt1yt1pk1yzbkvdql3sjck6x9wig1pgecp6qwxck8nqvg3nrliawgfx/tzcu6ulgegjpn06m2dbpvu52k8bcdvs8ol32og3nrrekjddxo2mh0ua90gf0c06flhnulry8zgzb7r6kla8m28ala47q63l3kqxqc1oja47avl7anhy94cuhccz8oqlrhxg5yw748y1mionr0kv1yitk/pulls/2129951774544257007/update-branch", + "method": "PUT" + }, + "response": { + "status": 403, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/803677\",\n \"message\" : \"Ex facere voluptas aut. Quia amet facere qui quisquam voluptas omnis. Optio sed nisi vel sunt iure ad culpa. Aut debitis id.\",\n \"url\" : \"https://web.example.mocklab.io/562524\",\n \"status\" : \"8gcwxealgkomrz7g9yjc4vgwrz5gc9gnho9i8zmsm\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "51da2291-1ae1-4c5f-8c16-e1894ad51db6", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.102617Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "pulls/update-branch", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 408 + }, + { + "id": "ad1ab146-98f1-4ad5-bdb0-dff5f502a1b3", + "name": "Update a pull request branch", + "request": { + "urlPath": "/repos/owxced9ils4221e28ziiglwo6q9w9oujvjiebdxn8u6vbqjvcng0u5ybl5z3udoa6urbjpqds4spw4n5/p3mzochgbtzr9fvyr3yms5n4zf74gotuy6wut9eh9q918gwqhz3rrrta7z/pulls/4824720407710270896/update-branch", + "method": "PUT" + }, + "response": { + "status": 202, + "body": "{\n \"message\" : \"Updating pull request branch.\",\n \"url\" : \"https://github.com/repos/octocat/Hello-World/pulls/53\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "ad1ab146-98f1-4ad5-bdb0-dff5f502a1b3", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.102378Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "pulls/update-branch", + "schema": { + "properties": { + "message": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "type": "object" + } + } + } + }, + "insertionIndex": 409 + }, + { + "id": "db42b509-c908-493c-9e04-ac3d2e8fadc2", + "name": "Submit a review for a pull request", + "request": { + "urlPath": "/repos/l29rlz2w81ghg6pv7ew1j3yg1e1zubne3kw9vc9lpi510sas23pvsp40cqk96378dywsafmqmxk1tti48mlnszdptdgmpuvzro1z4lgxp1907uc0b4suyehs9rvyvmklk676by80gisz7etks3bvnhljcl76d/vldhd21eq67dt8rvdr56haj0wzhkdayx3iydk6kiw97c9ogad4vzg0vdhy7cwlgp20xrs6vsth9/pulls/1667790605621765646/reviews/5692371491035170954/events", + "method": "POST" + }, + "response": { + "status": 422, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/069290\",\n \"message\" : \"Doloribus id optio quam nulla. Porro id sint possimus porro et quia. Sed ex qui possimus magnam aut. Facilis quasi rerum. Ex ut incidunt earum repellendus rerum.\",\n \"errors\" : [ \"78598abvd9haiemhcls9593bgwmw8sb1hiv0mn06ed15aswmw2uvj6nzuccyumngojerod10tqqgmrrsfobzdll4bruris1lcj2ktjla2jqjn82idcr7tqc7skopgcilskr45xsfgljp8hhogiikaasednhodvdjxflfs\", \"psi1zf1bb008svim409niechr61l24yjoocpm8giymm52w575f150xfn59yziajmszfm0axs3b75rovk\", \"w0rh3jwrl5w7tm0vi60x73v5jr37cfe3lzfpbj478xj23x1qc237hf9t8vevfphwih5qbkocnje36rqi1j7oprwg36i33cm4ab7tcwb5okyo349j3ysxkr18m7dw2c6fzghxqxfnuqin9sc2g2yilj4b0f325l56hg1j48awc9eg1nr1awae5zdggtqsbj7f2gtji9\", \"d1368mcdxkvd0ulzlob02xdm4v0c4x7yridwdndfz38i\", \"d3w0n6qqsdabjx5jtyzdfsnmtsvu4toqcb4l568t01yx7who1ctxvlhm0ybklzv12bc9cqpjsd3stmsmmb0eryw8uzu9xx7rkvg99b35dz9fltydddhd2cvc6qvbbm0kocvw0lvzhmy\" ]\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "db42b509-c908-493c-9e04-ac3d2e8fadc2", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.102308Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "pulls/submit-review", + "schema": { + "description": "Validation Error Simple", + "properties": { + "documentation_url": { + "type": "string" + }, + "errors": { + "items": { + "type": "string" + }, + "type": "array" + }, + "message": { + "type": "string" + } + }, + "required": ["message", "documentation_url"], + "title": "Validation Error Simple", + "type": "object" + } + } + } + }, + "insertionIndex": 410 + }, + { + "id": "85eb567b-4c91-4965-b298-547f90abc249", + "name": "Submit a review for a pull request", + "request": { + "urlPath": "/repos/o6kghtt9po3xwuvrh5f1u2ihcev4eue747la8tzme73l35p5galvkpfghic395z9xkq9nngf0q3c4ujwig5p9ve815gbden219y7vj1siqfabbplacmfd1ingaa/ioo39e8an39vk9doujka954wmlcbqoatnajl3gr0oqvqdg84x7t7jt971ei9di6exgcoqu3dp60o/pulls/6669038410060705147/reviews/5612968328828475492/events", + "method": "POST" + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/065148\",\n \"message\" : \"Maiores repudiandae quo animi incidunt. Est fugit repudiandae odio a sapiente quibusdam. Quos temporibus odio ut.\",\n \"url\" : \"https://web.example.mocklab.io/829892\",\n \"status\" : \"3x0j20es4co7bnbr3ucgtaerzpz9qduwzbt8knkimkyzgqgzn8tfq2keaza1717op6c6x5fbgm2hibb0dqluloxvwb8jbo4fwvn320f9j0ce55ketf8t281nl721am2ih9qhw7g4y03y10z2ds9kwrctb03f3r7wyq2po223t3wcp4vfvdl3c\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "85eb567b-4c91-4965-b298-547f90abc249", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.102106Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "pulls/submit-review", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 411 + }, + { + "id": "303121db-2d8c-4beb-bc26-c3276583edab", + "name": "Submit a review for a pull request", + "request": { + "urlPath": "/repos/hhiwr3e1ph80p78d90jlcsvanr4t6kg718907nva29xjzpgsdefm1erpo1z6okc21r6ntsk4cq6xy2h4byoq4s5eoiodpwjcex3bv38evbg5yarg3j6uhi5pbhr0eh1tev0g9l00btdxthmnt6l2qvyfpqooyfi1b0fnkksmk6b6cjhqsuy2/kl1pjfwra8kk3km2waihrlbld387sq26h7h6gnlc8nj2v4srk8y6a416khq5x1k7ajblo6u7/pulls/8920573759403614752/reviews/1492856446711867626/events", + "method": "POST" + }, + "response": { + "status": 403, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/004139\",\n \"message\" : \"Error optio nesciunt eligendi et dolorem omnis. Ab rem est vero nesciunt numquam. Eum voluptatem ex fugiat ullam asperiores libero. Est deserunt enim maiores reiciendis. Ut quo nulla.\",\n \"url\" : \"https://web.example.mocklab.io/927691\",\n \"status\" : \"n0nulvnychmhus5jk4m612snrpatndrytn0kus7r7752nyiw458lnp6u6kkk865i4mxlq3954dvc8c3boec9ya47e5kqb6colnkiqqgsyqmrmm1be81szsmblg23skova3n01c\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "303121db-2d8c-4beb-bc26-c3276583edab", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.101883Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "pulls/submit-review", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 412 + }, + { + "id": "02ab16e2-9216-434f-a92d-ab8b3c358ef9", + "name": "Submit a review for a pull request - default", + "request": { + "urlPath": "/repos/0r4ehtg9xgst94bg9x66or51pu3os6l4c8cb7u0f5ym0bne6vb6qcpeevjo0loaktl0rqx85i4oin0xtvvfpvuuek74s1j9v5hf8ii0f4uq64hq11190803ow9i5k2juqtdaqiji/xslof5pv763t/pulls/8042535659801326646/reviews/3201991977367901036/events", + "method": "POST" + }, + "response": { + "status": 200, + "body": "{\n \"_links\" : {\n \"html\" : {\n \"href\" : \"https://github.com/octocat/Hello-World/pull/12#pullrequestreview-80\"\n },\n \"pull_request\" : {\n \"href\" : \"https://api.github.com/repos/octocat/Hello-World/pulls/12\"\n }\n },\n \"author_association\" : \"COLLABORATOR\",\n \"body\" : \"Here is the body for the review.\",\n \"commit_id\" : \"ecdd80bb57125d7ba9641ffaa4d7d2c19d3f3091\",\n \"html_url\" : \"https://github.com/octocat/Hello-World/pull/12#pullrequestreview-80\",\n \"id\" : 80,\n \"node_id\" : \"MDE3OlB1bGxSZXF1ZXN0UmV2aWV3ODA=\",\n \"pull_request_url\" : \"https://api.github.com/repos/octocat/Hello-World/pulls/12\",\n \"state\" : \"APPROVED\",\n \"submitted_at\" : \"2019-11-17T17:43:43Z\",\n \"user\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n }\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "02ab16e2-9216-434f-a92d-ab8b3c358ef9", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.101643Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "pulls/submit-review", + "schema": { + "description": "Pull Request Reviews are reviews on pull requests.", + "properties": { + "_links": { + "properties": { + "html": { + "properties": { + "href": { + "type": "string" + } + }, + "required": ["href"], + "type": "object" + }, + "pull_request": { + "properties": { + "href": { + "type": "string" + } + }, + "required": ["href"], + "type": "object" + } + }, + "required": ["html", "pull_request"], + "type": "object" + }, + "author_association": { + "$ref": "#/components/schemas/author_association" + }, + "body": { + "description": "The text of the review.", + "example": "This looks great.", + "type": "string" + }, + "body_html": { + "type": "string" + }, + "body_text": { + "type": "string" + }, + "commit_id": { + "description": "A commit SHA for the review.", + "example": "54bb654c9e6025347f57900a4a5c2313a96b8035", + "type": "string" + }, + "html_url": { + "example": "https://github.com/octocat/Hello-World/pull/12#pullrequestreview-80", + "format": "uri", + "type": "string" + }, + "id": { + "description": "Unique identifier of the review", + "example": 42, + "type": "integer" + }, + "node_id": { + "example": "MDE3OlB1bGxSZXF1ZXN0UmV2aWV3ODA=", + "type": "string" + }, + "pull_request_url": { + "example": "https://api.github.com/repos/octocat/Hello-World/pulls/12", + "format": "uri", + "type": "string" + }, + "state": { + "example": "CHANGES_REQUESTED", + "type": "string" + }, + "submitted_at": { + "format": "date-time", + "type": "string" + }, + "user": { + "$ref": "#/components/schemas/nullable-simple-user" + } + }, + "required": [ + "id", + "node_id", + "user", + "body", + "state", + "commit_id", + "html_url", + "pull_request_url", + "_links", + "author_association" + ], + "title": "Pull Request Review", + "type": "object" + } + } + } + }, + "insertionIndex": 413 + }, + { + "id": "277a511b-9716-4e21-ad25-2296e856ab59", + "name": "Dismiss a review for a pull request", + "request": { + "urlPath": "/repos/uercizh4et3wd7v48fxgzu78tnd6p/4kfcdkopogew79rukuc55y/pulls/4923831842949349796/reviews/1802239096262382120/dismissals", + "method": "PUT" + }, + "response": { + "status": 422, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/058073\",\n \"message\" : \"Quaerat tempora delectus maxime ipsam ipsa sapiente. Corrupti quaerat et ut corporis adipisci incidunt aperiam. Ipsum aut quia nihil. Nihil aliquam dolores blanditiis sint enim aut. Qui ut eum nihil e\",\n \"errors\" : [ \"6kfsi3fq4jth970sr71k99uvcko750ks44ob6axsaloaehkbkqj797fu3vhr3ft7pcwzbi26muoix1avgnjxo8tgcpdvwu9pfrgdg5rg290llsx0hig89py7plbxwq3ylmbd61rmcv52rekiluim9y0ldbff0\", \"qtvijw83zy5e7gydfkt5ets119x79lye8y8q3553qir88mzjhrp3hxhbcalzdfbbgzum7y4gcehnqqgcnfwwbz79zmvkbdxoljsoo3qrlbp1yn575lm0s4a3rhl\", \"8z8ljgdzbzfsq7xk5jtv1era9mn33es4hxmtij9eyc37qotj0x5gr8w\", \"f9zzusxdjala5cezsdxx8yhyfaqexck26m19nkg0t3u07lqoy6gmw7h8z3b30rxilovdeskiciv5cj04bhw697xiioi9d9mjoyfj51p5w6s5ee042f9uj64fdcqj43j2oplyvzv2mrdfwknikbqths3d7rciud8\", \"d1a929i7633adhcittgq6wggm4t4q2qi0e9604uqt50bw3lwx2rdn4g0nceqhgzcd81sprvo4\", \"bv334g71l2dgjik21cosv7zvrgcuuz0c1cuqzdue3t5jr2vplktlm5l2xipblwu1jpmm311sikzw2\" ]\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "277a511b-9716-4e21-ad25-2296e856ab59", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.1015Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "pulls/dismiss-review", + "schema": { + "description": "Validation Error Simple", + "properties": { + "documentation_url": { + "type": "string" + }, + "errors": { + "items": { + "type": "string" + }, + "type": "array" + }, + "message": { + "type": "string" + } + }, + "required": ["message", "documentation_url"], + "title": "Validation Error Simple", + "type": "object" + } + } + } + }, + "insertionIndex": 414 + }, + { + "id": "76fcb7ba-0431-45b6-bbca-a65412489e9b", + "name": "Dismiss a review for a pull request", + "request": { + "urlPath": "/repos/4z4n19rlld694no7rxkbh69us35sdx53qs3zcuz61foesibukaqewvyzw4jb9htdv9c2cru9xbykl9hoqdg/14tzfnbych6udmms15mt72x580zes9p8fdanu8llzhcvygsu1mw3vksxy2v7u7o2fba878z7ymr9mm2pe2zob7mum09cq7fjyepq3ol8f9a1302tzlsw3k99r5y001smidphdyrhc697bfj5webrdyz14ytxb5p/pulls/6612551023129812787/reviews/539617580732590281/dismissals", + "method": "PUT" + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/033044\",\n \"message\" : \"Maxime aut non enim vel vitae. Quasi distinctio est deleniti officia accusantium rerum vel. Porro sed earum recusandae perferendis possimus sunt excepturi.\",\n \"url\" : \"https://web.example.mocklab.io/745415\",\n \"status\" : \"4tqt515katu2211wkflm9hegremmbmp1h1rq7pof6kpayfe5v68kwes6oxlr0abzs4xd2havtzw933il7751vpi45r2ksiaemj69pxi0nslhis63n94h7z5qkr3ljdwh9e8t81tb89bgj2ysixdf2gx7kvzqh8vleci7ouzjjci19a9j6jh\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "76fcb7ba-0431-45b6-bbca-a65412489e9b", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.101293Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "pulls/dismiss-review", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 415 + }, + { + "id": "7f84dec4-6db7-4081-9bf1-eebabcadb7ad", + "name": "Dismiss a review for a pull request - default", + "request": { + "urlPath": "/repos/glc7s8ik8kkt1bvill66m9rppvhsdrbcq9olu53yirvnw537qkboz3icyut1zt2syrefre9vgccb6bxny/foxun4210zxyk96nput76ucapdp7vr7h44mjb2bihs6gqsreohgd4zczxrhi8u1vi3bto25n8hug7l2aj153r35dxz10qn6fi5ibwccs65fqil371tpk1rsxy1sb5bstr5xnaz94bmamp4ysyno0nyz3j98yooqyut1pdzu8/pulls/1650077396420514978/reviews/4255021247464348756/dismissals", + "method": "PUT" + }, + "response": { + "status": 200, + "body": "{\n \"_links\" : {\n \"html\" : {\n \"href\" : \"https://github.com/octocat/Hello-World/pull/12#pullrequestreview-80\"\n },\n \"pull_request\" : {\n \"href\" : \"https://api.github.com/repos/octocat/Hello-World/pulls/12\"\n }\n },\n \"author_association\" : \"COLLABORATOR\",\n \"body\" : \"Here is the body for the review.\",\n \"commit_id\" : \"ecdd80bb57125d7ba9641ffaa4d7d2c19d3f3091\",\n \"html_url\" : \"https://github.com/octocat/Hello-World/pull/12#pullrequestreview-80\",\n \"id\" : 80,\n \"node_id\" : \"MDE3OlB1bGxSZXF1ZXN0UmV2aWV3ODA=\",\n \"pull_request_url\" : \"https://api.github.com/repos/octocat/Hello-World/pulls/12\",\n \"state\" : \"DISMISSED\",\n \"submitted_at\" : \"2019-11-17T17:43:43Z\",\n \"user\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n }\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "7f84dec4-6db7-4081-9bf1-eebabcadb7ad", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.101057Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "pulls/dismiss-review", + "schema": { + "description": "Pull Request Reviews are reviews on pull requests.", + "properties": { + "_links": { + "properties": { + "html": { + "properties": { + "href": { + "type": "string" + } + }, + "required": ["href"], + "type": "object" + }, + "pull_request": { + "properties": { + "href": { + "type": "string" + } + }, + "required": ["href"], + "type": "object" + } + }, + "required": ["html", "pull_request"], + "type": "object" + }, + "author_association": { + "$ref": "#/components/schemas/author_association" + }, + "body": { + "description": "The text of the review.", + "example": "This looks great.", + "type": "string" + }, + "body_html": { + "type": "string" + }, + "body_text": { + "type": "string" + }, + "commit_id": { + "description": "A commit SHA for the review.", + "example": "54bb654c9e6025347f57900a4a5c2313a96b8035", + "type": "string" + }, + "html_url": { + "example": "https://github.com/octocat/Hello-World/pull/12#pullrequestreview-80", + "format": "uri", + "type": "string" + }, + "id": { + "description": "Unique identifier of the review", + "example": 42, + "type": "integer" + }, + "node_id": { + "example": "MDE3OlB1bGxSZXF1ZXN0UmV2aWV3ODA=", + "type": "string" + }, + "pull_request_url": { + "example": "https://api.github.com/repos/octocat/Hello-World/pulls/12", + "format": "uri", + "type": "string" + }, + "state": { + "example": "CHANGES_REQUESTED", + "type": "string" + }, + "submitted_at": { + "format": "date-time", + "type": "string" + }, + "user": { + "$ref": "#/components/schemas/nullable-simple-user" + } + }, + "required": [ + "id", + "node_id", + "user", + "body", + "state", + "commit_id", + "html_url", + "pull_request_url", + "_links", + "author_association" + ], + "title": "Pull Request Review", + "type": "object" + } + } + } + }, + "insertionIndex": 416 + }, + { + "id": "24b36033-4f06-422f-836f-dc284bf4b990", + "name": "List comments for a pull request review", + "request": { + "urlPath": "/repos/oe2csxuavmw3l16cel4gxyvqp11enhq3ndt5p298li6xfukw48hcimkj30i6p06q212oz1obflvwd8qzwizt5vy1rfld2yoxouu3chqkad8vdako2werp/50uabksx2p5yxdubycpynpdk7xqu5kso6l2hnemwldgk5f4vc75pt4wofeqk1jd9n7ixnelpyimgmb135s5rs9hrlg3j7pjntw4ze6urkwova5k5dgehkd6es0mbf/pulls/2162951829822498797/reviews/5006928721722411971/comments", + "method": "GET" + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/356577\",\n \"message\" : \"Non consequatur dolores non voluptatibus. Earum dolorum vero sit est iure eaque. Repellendus fugiat id quidem est saepe. Quo placeat sit modi est consequuntur. Id vel sed est et sequi.\",\n \"url\" : \"https://web.example.mocklab.io/611966\",\n \"status\" : \"2ntflcjvh70lupb6u2kz08m7dlk3j86773r5ypt4g7h7iyyl38p8dgfeq0rsa46okgpj9kzylmgtte5gdt94kna42q6x7\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "24b36033-4f06-422f-836f-dc284bf4b990", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.100913Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "pulls/list-comments-for-review", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 417 + }, + { + "id": "12aaddb1-4006-4483-8d8d-6c7c759c84db", + "name": "List comments for a pull request review - default", + "request": { + "urlPath": "/repos/gaakvcuy6gxil1pxkc4zc0pylg27yexpayqjy3l11y97rpg0zrm94ftyfnz08y8qyy76kncw33bwabodqqjmm18x6yhg83nrw3tl3l7bzp9bif/vzbqjoift4llhb2jjot6txbv8y556p79pvnykk9xwxql13rkr5sekytk4xn68iw9nemnn8bp8q3nlv6tsqp2f5jlt95j21bftvuu02k0h3m/pulls/2449468779266988357/reviews/1198842059636379543/comments", + "method": "GET" + }, + "response": { + "status": 200, + "body": "[ {\n \"_links\" : {\n \"html\" : {\n \"href\" : \"https://github.com/octocat/Hello-World/pull/1#discussion-diff-1\"\n },\n \"pull_request\" : {\n \"href\" : \"https://api.github.com/repos/octocat/Hello-World/pulls/1\"\n },\n \"self\" : {\n \"href\" : \"https://api.github.com/repos/octocat/Hello-World/pulls/comments/1\"\n }\n },\n \"author_association\" : \"NONE\",\n \"body\" : \"Great stuff!\",\n \"commit_id\" : \"6dcb09b5b57875f334f61aebed695e2e4193db5e\",\n \"created_at\" : \"2011-04-14T16:00:49Z\",\n \"diff_hunk\" : \"@@ -16,33 +16,40 @@ public class Connection : IConnection...\",\n \"html_url\" : \"https://github.com/octocat/Hello-World/pull/1#discussion-diff-1\",\n \"id\" : 10,\n \"in_reply_to_id\" : 8,\n \"node_id\" : \"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDEw\",\n \"original_commit_id\" : \"9c48853fa3dc5c1c3d6f1f1cd1f2743e72652840\",\n \"original_position\" : 4,\n \"path\" : \"file1.txt\",\n \"position\" : 1,\n \"pull_request_review_id\" : 42,\n \"pull_request_url\" : \"https://api.github.com/repos/octocat/Hello-World/pulls/1\",\n \"updated_at\" : \"2011-04-14T16:00:49Z\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/pulls/comments/1\",\n \"user\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n }\n} ]", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "12aaddb1-4006-4483-8d8d-6c7c759c84db", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.100658Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "pulls/list-comments-for-review", + "schema": { + "items": { + "$ref": "#/components/schemas/review-comment" + }, + "type": "array" + } + } + } + }, + "insertionIndex": 418 + }, + { + "id": "4b28d8c1-477f-4b0f-864d-740d275bc76e", + "name": "Update a review for a pull request", + "request": { + "urlPath": "/repos/nvtqai36jsgr3f7lia7uc80ggg62lv4s1olu415kbjis0fep7wd82x5v9kmdc57xehjbsok5vl48jxilhvlzf3gjnygzryql1cwfoq51lcyzvu95e301f22jfmyxx6p2mi3140djv7r5ood9c9ggl33cstjkf4wl5s9a1hvs89vncrjomb0ruh22als91/pkydclvt9pj0nh3jmude005ymn9boky8enxwk3ztsj1sc45beg6v112r3cfak2iub4d1649g0ocbfqib56105br/pulls/7697036842711314657/reviews/7291805044835699431", + "method": "PUT" + }, + "response": { + "status": 422, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/998413\",\n \"message\" : \"Est quibusdam id et non. Mollitia laborum reprehenderit architecto non commodi a. Sit nulla aut asperiores.\",\n \"errors\" : [ \"xdg\", \"46g0q176i2mdn4\", \"hp0p688ese8mdg1xse1kc4hyi199fm0l6okubcfth8a8eejjhksodvvch\" ]\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "4b28d8c1-477f-4b0f-864d-740d275bc76e", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.100594Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "pulls/update-review", + "schema": { + "description": "Validation Error Simple", + "properties": { + "documentation_url": { + "type": "string" + }, + "errors": { + "items": { + "type": "string" + }, + "type": "array" + }, + "message": { + "type": "string" + } + }, + "required": ["message", "documentation_url"], + "title": "Validation Error Simple", + "type": "object" + } + } + } + }, + "insertionIndex": 419 + }, + { + "id": "df9614df-8646-487e-899d-6c2fcd1f7eeb", + "name": "Update a review for a pull request - default", + "request": { + "urlPath": "/repos/2ynwjzqat69xbd7kiltpezo0xtsw3t9dhtej92tq2bmf9m4ciz21bsj3kckewqveorp68q6estpz6pghmhd8bsekf57oe12fxkd6uw4lhfege7ymyxrjnw1r38ru5bdekgagevgchgdcloyghykgov6fw56p1jjooq4b0r/hlqhgf7z27yqfyxjwl4suufjr9pferlwtoe8gxit04nbqpymrku5lvu24q6uyqwp8snrjp1a47ng5j5e0v331kzibsxn4tc84mmh14ynlhy1rhq63hlu1tvky3ilvq3mnes/pulls/7315827461664833111/reviews/7679027954683438579", + "method": "PUT" + }, + "response": { + "status": 200, + "body": "{\n \"_links\" : {\n \"html\" : {\n \"href\" : \"https://github.com/octocat/Hello-World/pull/12#pullrequestreview-80\"\n },\n \"pull_request\" : {\n \"href\" : \"https://api.github.com/repos/octocat/Hello-World/pulls/12\"\n }\n },\n \"author_association\" : \"COLLABORATOR\",\n \"body\" : \"This is close to perfect! Please address the suggested inline change. And add more about this.\",\n \"commit_id\" : \"ecdd80bb57125d7ba9641ffaa4d7d2c19d3f3091\",\n \"html_url\" : \"https://github.com/octocat/Hello-World/pull/12#pullrequestreview-80\",\n \"id\" : 80,\n \"node_id\" : \"MDE3OlB1bGxSZXF1ZXN0UmV2aWV3ODA=\",\n \"pull_request_url\" : \"https://api.github.com/repos/octocat/Hello-World/pulls/12\",\n \"state\" : \"CHANGES_REQUESTED\",\n \"submitted_at\" : \"2019-11-17T17:43:43Z\",\n \"user\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n }\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "df9614df-8646-487e-899d-6c2fcd1f7eeb", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.100408Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "pulls/update-review", + "schema": { + "description": "Pull Request Reviews are reviews on pull requests.", + "properties": { + "_links": { + "properties": { + "html": { + "properties": { + "href": { + "type": "string" + } + }, + "required": ["href"], + "type": "object" + }, + "pull_request": { + "properties": { + "href": { + "type": "string" + } + }, + "required": ["href"], + "type": "object" + } + }, + "required": ["html", "pull_request"], + "type": "object" + }, + "author_association": { + "$ref": "#/components/schemas/author_association" + }, + "body": { + "description": "The text of the review.", + "example": "This looks great.", + "type": "string" + }, + "body_html": { + "type": "string" + }, + "body_text": { + "type": "string" + }, + "commit_id": { + "description": "A commit SHA for the review.", + "example": "54bb654c9e6025347f57900a4a5c2313a96b8035", + "type": "string" + }, + "html_url": { + "example": "https://github.com/octocat/Hello-World/pull/12#pullrequestreview-80", + "format": "uri", + "type": "string" + }, + "id": { + "description": "Unique identifier of the review", + "example": 42, + "type": "integer" + }, + "node_id": { + "example": "MDE3OlB1bGxSZXF1ZXN0UmV2aWV3ODA=", + "type": "string" + }, + "pull_request_url": { + "example": "https://api.github.com/repos/octocat/Hello-World/pulls/12", + "format": "uri", + "type": "string" + }, + "state": { + "example": "CHANGES_REQUESTED", + "type": "string" + }, + "submitted_at": { + "format": "date-time", + "type": "string" + }, + "user": { + "$ref": "#/components/schemas/nullable-simple-user" + } + }, + "required": [ + "id", + "node_id", + "user", + "body", + "state", + "commit_id", + "html_url", + "pull_request_url", + "_links", + "author_association" + ], + "title": "Pull Request Review", + "type": "object" + } + } + } + }, + "insertionIndex": 420 + }, + { + "id": "9427c5b6-b379-4b8b-84bc-f935569c1d11", + "name": "Get a review for a pull request", + "request": { + "urlPath": "/repos/6cwat1lw655qkxp00z3cm6arvy0bjzxvv4ebddz876j4hvqbyor5nmgkkpjyv5tfv0edbmr2l8owqnltekk9cp20c705essdxc19gofigbxv7sprly6m2iilwcux21fbuxvjke5gxrhh8zd36a11pbqu78e1d3ras23yvp0/n1frltcobpy97y7mfgw9ewvwpelq89knk8sbtuwb06o/pulls/3202118624466580600/reviews/1123084810020359671", + "method": "GET" + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/976475\",\n \"message\" : \"Repellendus facilis voluptate assumenda officiis delectus et aut. Saepe deleniti omnis animi saepe minus aperiam. Voluptatibus ipsa dolores nisi dolore et. Quos aut reprehenderit voluptatem optio enim\",\n \"url\" : \"https://web.example.mocklab.io/645440\",\n \"status\" : \"43v\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "9427c5b6-b379-4b8b-84bc-f935569c1d11", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.100264Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "pulls/get-review", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 421 + }, + { + "id": "da385739-0338-49af-a643-2ed8b21a418d", + "name": "Get a review for a pull request - default", + "request": { + "urlPath": "/repos/mdqm2rarwjntvd00yheddadtxq8plt3tpxccf7bx21dejjsm0j41ft2ocw6e3h83wd7uhaxqqvszkdjwgf17hkrg1hnq01lybmzhnvdeuj5vfysarxukwo7opd1lt0r79fh9p/q7lg6pobj2g8swhqf5qjhgsxjzmd8facd89eg57pgw44v3klncqlcuta31w33beose6lt3my/pulls/3992374419567526690/reviews/6864494856901791227", + "method": "GET" + }, + "response": { + "status": 200, + "body": "{\n \"_links\" : {\n \"html\" : {\n \"href\" : \"https://github.com/octocat/Hello-World/pull/12#pullrequestreview-80\"\n },\n \"pull_request\" : {\n \"href\" : \"https://api.github.com/repos/octocat/Hello-World/pulls/12\"\n }\n },\n \"author_association\" : \"COLLABORATOR\",\n \"body\" : \"Here is the body for the review.\",\n \"commit_id\" : \"ecdd80bb57125d7ba9641ffaa4d7d2c19d3f3091\",\n \"html_url\" : \"https://github.com/octocat/Hello-World/pull/12#pullrequestreview-80\",\n \"id\" : 80,\n \"node_id\" : \"MDE3OlB1bGxSZXF1ZXN0UmV2aWV3ODA=\",\n \"pull_request_url\" : \"https://api.github.com/repos/octocat/Hello-World/pulls/12\",\n \"state\" : \"APPROVED\",\n \"submitted_at\" : \"2019-11-17T17:43:43Z\",\n \"user\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n }\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "da385739-0338-49af-a643-2ed8b21a418d", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.100023Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "pulls/get-review", + "schema": { + "description": "Pull Request Reviews are reviews on pull requests.", + "properties": { + "_links": { + "properties": { + "html": { + "properties": { + "href": { + "type": "string" + } + }, + "required": ["href"], + "type": "object" + }, + "pull_request": { + "properties": { + "href": { + "type": "string" + } + }, + "required": ["href"], + "type": "object" + } + }, + "required": ["html", "pull_request"], + "type": "object" + }, + "author_association": { + "$ref": "#/components/schemas/author_association" + }, + "body": { + "description": "The text of the review.", + "example": "This looks great.", + "type": "string" + }, + "body_html": { + "type": "string" + }, + "body_text": { + "type": "string" + }, + "commit_id": { + "description": "A commit SHA for the review.", + "example": "54bb654c9e6025347f57900a4a5c2313a96b8035", + "type": "string" + }, + "html_url": { + "example": "https://github.com/octocat/Hello-World/pull/12#pullrequestreview-80", + "format": "uri", + "type": "string" + }, + "id": { + "description": "Unique identifier of the review", + "example": 42, + "type": "integer" + }, + "node_id": { + "example": "MDE3OlB1bGxSZXF1ZXN0UmV2aWV3ODA=", + "type": "string" + }, + "pull_request_url": { + "example": "https://api.github.com/repos/octocat/Hello-World/pulls/12", + "format": "uri", + "type": "string" + }, + "state": { + "example": "CHANGES_REQUESTED", + "type": "string" + }, + "submitted_at": { + "format": "date-time", + "type": "string" + }, + "user": { + "$ref": "#/components/schemas/nullable-simple-user" + } + }, + "required": [ + "id", + "node_id", + "user", + "body", + "state", + "commit_id", + "html_url", + "pull_request_url", + "_links", + "author_association" + ], + "title": "Pull Request Review", + "type": "object" + } + } + } + }, + "insertionIndex": 422 + }, + { + "id": "28e6cb9e-902f-4a0b-a0ff-8d348de9fd5e", + "name": "Delete a pending review for a pull request", + "request": { + "urlPath": "/repos/zv7elvffui3g1wjnxsic99jpsaua81y8mp8wnwix1wd2oqwfohc7h1hi28w13zaveifoqpxavafrhocd7nq14b746cbxnj23pixqhx595ow7n7ycrask57fyjxv3q1qhe8x3l1i3yzhvcuxv66er946lk5lao6q59ubiuo/xifjgxbz7tn91xzauxydpwnbpjkvh9nr3epyj5nf5xrq0cvn7bpgbmygbmi3o8n4ox6npnneoiza59jtyoxjvl4oteag3p9ke3ax4a2e9k4tql/pulls/2376741735371378550/reviews/8225919756509515280", + "method": "DELETE" + }, + "response": { + "status": 422, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/036745\",\n \"message\" : \"Aspernatur officia inventore debitis iusto consequatur accusamus rerum. Vero sed maxime voluptas minima minima. Numquam id fugiat.\",\n \"errors\" : [ \"359rfk2y4k7dobwe5eatwm1iqv9bgj3p1kwea2xbhoqkbul1dpq6alirg04dof4gg4nxwvg9wuypidrm7k10p4rydovlekvn21a4ww9skq8rkq0gjdmt06al5lp9he\" ]\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "28e6cb9e-902f-4a0b-a0ff-8d348de9fd5e", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.099874Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "pulls/delete-pending-review", + "schema": { + "description": "Validation Error Simple", + "properties": { + "documentation_url": { + "type": "string" + }, + "errors": { + "items": { + "type": "string" + }, + "type": "array" + }, + "message": { + "type": "string" + } + }, + "required": ["message", "documentation_url"], + "title": "Validation Error Simple", + "type": "object" + } + } + } + }, + "insertionIndex": 423 + }, + { + "id": "0be485ba-4a45-4b47-81ea-03b0f885ea16", + "name": "Delete a pending review for a pull request", + "request": { + "urlPath": "/repos/xp72qb2aeagw3t15j2ye7txwx9sbk1t9h7alcls1x4355iohh3zbx9073xwgzqmh01t0gue2sze0vz0moft75xyo7hgi0pzrso89nr0vacylk1azoa5x1vhqs0h7zy6krz1ahragnfav22s4f76y2xyeyjdkctxr8vb0mtczvkvszkgqnbxv3lu3mysdnayowgosqb93/vci0e9i5e4v6w7tfgvcm8tp6b2ejjt50dhqm0rtvgynfdl6olhblqttbtksb7nzeue0ehduuuwdjpry8u2i44psawgbkt2yw1w9k101usrjmax9h4dhnblozh8bytynqj5adle6n14v9y/pulls/267410497389410777/reviews/5561553446095606102", + "method": "DELETE" + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/942848\",\n \"message\" : \"Dolor sit et. Dolorum et quis similique. Omnis maxime perspiciatis id quibusdam adipisci.\",\n \"url\" : \"https://web.example.mocklab.io/240090\",\n \"status\" : \"apt2cf0wcl3izm9ctnlzv3smdfe0gvs7hksleliflygf0lue0e4riklkrf8fweamr8sj6jqqinxc3lumfb9oghhw4udkk18n5jq8zuosf5j2hbg98qv3e32yn4dnx3cquvt9zloy5w5sim2ulbaa8pepwt2sfcpth\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "0be485ba-4a45-4b47-81ea-03b0f885ea16", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.099688Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "pulls/delete-pending-review", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 424 + }, + { + "id": "0daea7a5-8059-499e-9687-9b578f650f68", + "name": "Delete a pending review for a pull request - default", + "request": { + "urlPath": "/repos/bspginduy4zm9nupe99hghne8441bhnmosf4l3bac75ajpi1lw9yzsesbukaim7aqb6m51pzpdapxqzxnnlu0bwpakjwh9m6pf35gef6bx2eoz934m8/arvqv889ep9kklgr8dwo061wuls4q2lupa80od8pfov0p9snddybrr0tlzn3yws1c3x36i01l2dmle0ug4q3e5ejr9ddq1vl/pulls/5849300767896538342/reviews/2186767226377768606", + "method": "DELETE" + }, + "response": { + "status": 200, + "body": "{\n \"_links\" : {\n \"html\" : {\n \"href\" : \"https://github.com/octocat/Hello-World/pull/12#pullrequestreview-80\"\n },\n \"pull_request\" : {\n \"href\" : \"https://api.github.com/repos/octocat/Hello-World/pulls/12\"\n }\n },\n \"author_association\" : \"COLLABORATOR\",\n \"body\" : \"This is close to perfect! Please address the suggested inline change.\",\n \"commit_id\" : \"ecdd80bb57125d7ba9641ffaa4d7d2c19d3f3091\",\n \"html_url\" : \"https://github.com/octocat/Hello-World/pull/12#pullrequestreview-80\",\n \"id\" : 80,\n \"node_id\" : \"MDE3OlB1bGxSZXF1ZXN0UmV2aWV3ODA=\",\n \"pull_request_url\" : \"https://api.github.com/repos/octocat/Hello-World/pulls/12\",\n \"state\" : \"CHANGES_REQUESTED\",\n \"submitted_at\" : \"2019-11-17T17:43:43Z\",\n \"user\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n }\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "0daea7a5-8059-499e-9687-9b578f650f68", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.099426Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "pulls/delete-pending-review", + "schema": { + "description": "Pull Request Reviews are reviews on pull requests.", + "properties": { + "_links": { + "properties": { + "html": { + "properties": { + "href": { + "type": "string" + } + }, + "required": ["href"], + "type": "object" + }, + "pull_request": { + "properties": { + "href": { + "type": "string" + } + }, + "required": ["href"], + "type": "object" + } + }, + "required": ["html", "pull_request"], + "type": "object" + }, + "author_association": { + "$ref": "#/components/schemas/author_association" + }, + "body": { + "description": "The text of the review.", + "example": "This looks great.", + "type": "string" + }, + "body_html": { + "type": "string" + }, + "body_text": { + "type": "string" + }, + "commit_id": { + "description": "A commit SHA for the review.", + "example": "54bb654c9e6025347f57900a4a5c2313a96b8035", + "type": "string" + }, + "html_url": { + "example": "https://github.com/octocat/Hello-World/pull/12#pullrequestreview-80", + "format": "uri", + "type": "string" + }, + "id": { + "description": "Unique identifier of the review", + "example": 42, + "type": "integer" + }, + "node_id": { + "example": "MDE3OlB1bGxSZXF1ZXN0UmV2aWV3ODA=", + "type": "string" + }, + "pull_request_url": { + "example": "https://api.github.com/repos/octocat/Hello-World/pulls/12", + "format": "uri", + "type": "string" + }, + "state": { + "example": "CHANGES_REQUESTED", + "type": "string" + }, + "submitted_at": { + "format": "date-time", + "type": "string" + }, + "user": { + "$ref": "#/components/schemas/nullable-simple-user" + } + }, + "required": [ + "id", + "node_id", + "user", + "body", + "state", + "commit_id", + "html_url", + "pull_request_url", + "_links", + "author_association" + ], + "title": "Pull Request Review", + "type": "object" + } + } + } + }, + "insertionIndex": 425 + }, + { + "id": "df759bda-9c37-41fb-80b1-6e2f16190569", + "name": "Create a review for a pull request", + "request": { + "urlPath": "/repos/izt0n6hk47d4lvzyit9wvwjj03mt9lwt0sxobpyjie8c55lrjd8/esgpaf6q7cahyozco0apkspmwqkzdcq8ga6p7t4turpswkci6sol6s370wmxeyg4i4h63ctxdhvjmuti1jx8/pulls/5810999056338629872/reviews", + "method": "POST" + }, + "response": { + "status": 422, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/670432\",\n \"message\" : \"Et adipisci excepturi adipisci ratione fuga. Error harum ratione delectus qui nemo molestiae. Possimus et dolor dignissimos similique. Qui illo et ex.\",\n \"errors\" : [ \"a1q4lmm2yhhqs8714rshr1m\", \"4t1yqj4q00kktfhyn\", \"qzxy9c1railh9rlcpnsw6flzbvyu8r0poqbyoczhz6pxvonjj33kr0b952ax9ckayjrctvqnjxzkcm1rbaihcr1tzd4s279mety8j7htopxxvw7wr4xsc8w6owv8zmodq1ydmepz74mo078\", \"6w9zsqavczs3n07n3omf1s75ddcz2vfbtya9ofqck8nhsdz1dsjbjwmupqfhlhgtkh9fouan9rrk2puf56somxdxk7aaz1t0yn015t4eb2hdlxf2v6jwluooejprhu7isex4au03mjqba5fs2tq3dfe4fqsva1yea9arbt13l5srk1likh3ooi79\" ]\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "df759bda-9c37-41fb-80b1-6e2f16190569", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.09926Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "pulls/create-review", + "schema": { + "description": "Validation Error Simple", + "properties": { + "documentation_url": { + "type": "string" + }, + "errors": { + "items": { + "type": "string" + }, + "type": "array" + }, + "message": { + "type": "string" + } + }, + "required": ["message", "documentation_url"], + "title": "Validation Error Simple", + "type": "object" + } + } + } + }, + "insertionIndex": 426 + }, + { + "id": "47f308ab-a155-4f3c-85e8-de32ac32ab3f", + "name": "Create a review for a pull request", + "request": { + "urlPath": "/repos/0dnpoumrdekh42avalccshnj0o8qe606zqs1qr9p3m9uodqw4i0zr21gmpx5k0pctz0g7d12tx4w1j88y8y8kentdgtqgr4jpbpjnlps/mq6qoo2arg25tiiwzg4uiw6johinvnfhhg4fkn9nib2itho5wrbfqbyvpc7mg0mfmpxsu1yyqext8kaa9kn9/pulls/2961517007046266986/reviews", + "method": "POST" + }, + "response": { + "status": 403, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/439364\",\n \"message\" : \"Totam a iste atque ipsa magni. Atque quia perferendis molestias delectus. Eligendi ea est.\",\n \"url\" : \"https://web.example.mocklab.io/337817\",\n \"status\" : \"obskbrnpb120q5s1351er2nr3hqfhdc655xv33a228x6vdlt8bhks7kqx4emepidn8naati0k13id6cvlgkhkenccjv0ihnfrg0tifmm4nhfwx9t5z7nlh1gryy8xh0ox0mwmjzt4b5o\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "47f308ab-a155-4f3c-85e8-de32ac32ab3f", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.09904Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "pulls/create-review", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 427 + }, + { + "id": "ad365c13-47cc-4602-83af-ac042e5c9e01", + "name": "Create a review for a pull request - default", + "request": { + "urlPath": "/repos/1jwqnl34sivn6cki44ffkm3qyhqfxfcjkxk2mtcx7lc7q8cub8z3eojerlu/ich44m0nb6i6ql15fl4olpdz8qg6pjdt1v307xn/pulls/4200059567554590157/reviews", + "method": "POST" + }, + "response": { + "status": 200, + "body": "{\n \"_links\" : {\n \"html\" : {\n \"href\" : \"https://github.com/octocat/Hello-World/pull/12#pullrequestreview-80\"\n },\n \"pull_request\" : {\n \"href\" : \"https://api.github.com/repos/octocat/Hello-World/pulls/12\"\n }\n },\n \"author_association\" : \"COLLABORATOR\",\n \"body\" : \"This is close to perfect! Please address the suggested inline change.\",\n \"commit_id\" : \"ecdd80bb57125d7ba9641ffaa4d7d2c19d3f3091\",\n \"html_url\" : \"https://github.com/octocat/Hello-World/pull/12#pullrequestreview-80\",\n \"id\" : 80,\n \"node_id\" : \"MDE3OlB1bGxSZXF1ZXN0UmV2aWV3ODA=\",\n \"pull_request_url\" : \"https://api.github.com/repos/octocat/Hello-World/pulls/12\",\n \"state\" : \"CHANGES_REQUESTED\",\n \"submitted_at\" : \"2019-11-17T17:43:43Z\",\n \"user\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n }\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "ad365c13-47cc-4602-83af-ac042e5c9e01", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.098798Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "pulls/create-review", + "schema": { + "description": "Pull Request Reviews are reviews on pull requests.", + "properties": { + "_links": { + "properties": { + "html": { + "properties": { + "href": { + "type": "string" + } + }, + "required": ["href"], + "type": "object" + }, + "pull_request": { + "properties": { + "href": { + "type": "string" + } + }, + "required": ["href"], + "type": "object" + } + }, + "required": ["html", "pull_request"], + "type": "object" + }, + "author_association": { + "$ref": "#/components/schemas/author_association" + }, + "body": { + "description": "The text of the review.", + "example": "This looks great.", + "type": "string" + }, + "body_html": { + "type": "string" + }, + "body_text": { + "type": "string" + }, + "commit_id": { + "description": "A commit SHA for the review.", + "example": "54bb654c9e6025347f57900a4a5c2313a96b8035", + "type": "string" + }, + "html_url": { + "example": "https://github.com/octocat/Hello-World/pull/12#pullrequestreview-80", + "format": "uri", + "type": "string" + }, + "id": { + "description": "Unique identifier of the review", + "example": 42, + "type": "integer" + }, + "node_id": { + "example": "MDE3OlB1bGxSZXF1ZXN0UmV2aWV3ODA=", + "type": "string" + }, + "pull_request_url": { + "example": "https://api.github.com/repos/octocat/Hello-World/pulls/12", + "format": "uri", + "type": "string" + }, + "state": { + "example": "CHANGES_REQUESTED", + "type": "string" + }, + "submitted_at": { + "format": "date-time", + "type": "string" + }, + "user": { + "$ref": "#/components/schemas/nullable-simple-user" + } + }, + "required": [ + "id", + "node_id", + "user", + "body", + "state", + "commit_id", + "html_url", + "pull_request_url", + "_links", + "author_association" + ], + "title": "Pull Request Review", + "type": "object" + } + } + } + }, + "insertionIndex": 428 + }, + { + "id": "f476b743-8a18-423c-aaac-07fd760a0f00", + "name": "List reviews for a pull request - default", + "request": { + "urlPath": "/repos/5wweegu928gv1p0lpqhao4ktd4vrzq7y5rulwb374gak9jcv1037g5mq9wpahqsnt5y987d46hofueux3sqrddcizgo6tjdmi4h7n0wem469e0y20iuzw0x7i21bii6tznzql1/ugcm444i6v7ld0g6ir0xpxdedlc9g9cx30mwqympivw9x4s6c73/pulls/4572033837190163467/reviews", + "method": "GET" + }, + "response": { + "status": 200, + "body": "[ {\n \"_links\" : {\n \"html\" : {\n \"href\" : \"https://github.com/octocat/Hello-World/pull/12#pullrequestreview-80\"\n },\n \"pull_request\" : {\n \"href\" : \"https://api.github.com/repos/octocat/Hello-World/pulls/12\"\n }\n },\n \"author_association\" : \"COLLABORATOR\",\n \"body\" : \"Here is the body for the review.\",\n \"commit_id\" : \"ecdd80bb57125d7ba9641ffaa4d7d2c19d3f3091\",\n \"html_url\" : \"https://github.com/octocat/Hello-World/pull/12#pullrequestreview-80\",\n \"id\" : 80,\n \"node_id\" : \"MDE3OlB1bGxSZXF1ZXN0UmV2aWV3ODA=\",\n \"pull_request_url\" : \"https://api.github.com/repos/octocat/Hello-World/pulls/12\",\n \"state\" : \"APPROVED\",\n \"submitted_at\" : \"2019-11-17T17:43:43Z\",\n \"user\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n }\n} ]", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "f476b743-8a18-423c-aaac-07fd760a0f00", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.098635Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "pulls/list-reviews", + "schema": { + "items": { + "$ref": "#/components/schemas/pull-request-review" + }, + "type": "array" + } + } + } + }, + "insertionIndex": 429 + }, + { + "id": "ef0626da-f330-4b49-8f81-2424c66dbd19", + "name": "Request reviewers for a pull request - 422", + "request": { + "urlPath": "/repos/4neiwmagjgsfoqb/k1zj561tz9zso04r8n9po9eqr4xexrh7sznunhq37ka4qzx9efyxa0b8c5693l0jer9p6a9b0v/pulls/1929508864343699994/requested_reviewers", + "method": "POST" + }, + "response": { + "status": 422 + }, + "uuid": "ef0626da-f330-4b49-8f81-2424c66dbd19", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.098573Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "pulls/request-reviewers" + } + } + }, + "insertionIndex": 430 + }, + { + "id": "d0a08b34-d632-41a2-b5a2-d1b7c1a9e0de", + "name": "Request reviewers for a pull request (application/json)", + "request": { + "urlPath": "/repos/xasqo/b7n7q7vy9rt1355ii3l3azkg2mbjvpv6p3jkjuburutvzg8kbvznlau2n5kuza7xs7p5ta73gatjda9qstx2y8hv0vq3nqebgo82u3ngnsjb3ig6x9c6h03t2/pulls/403074313486067171/requested_reviewers", + "method": "POST", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 403, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/355848\",\n \"message\" : \"Iste voluptatem quis. Impedit harum voluptatibus sed. Est cupiditate fugiat mollitia facilis et est.\",\n \"url\" : \"https://web.example.mocklab.io/552798\",\n \"status\" : \"rwo9zlh3hd9k82b2ip6fjb6whk1pmchivlhwovjlizqubfus6yivjgcf8urt94ad2k1awnrrwrnpcrjazoywwg105d3jqhffixrvb93gr27ry75gepzq919mut8r9cv75cnnsqv42jdimxlny6b5anvutl\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "d0a08b34-d632-41a2-b5a2-d1b7c1a9e0de", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.09852Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "pulls/request-reviewers", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 431 + }, + { + "id": "52ac97b0-7a5c-4080-a58c-fa4634a1f400", + "name": "Request reviewers for a pull request (application/json) - default", + "request": { + "urlPath": "/repos/zvbqib7f41wearn3fvc5arwmx2qaid1791n100140nwanictj84rzfhg980hl3b6g14j1wfcpdxz5u933qbdh0cg9gifv/9g3p9b5kq7scdsctdyvie4qhngg797k7x9ivhnjck62av9qfvp9n251qmo7phhbbrasn2ihr5xr13zu2i4vvgvkwmus59axgjd4hvo4x8ocaghnsw1ek1ihqbby5xingp8ft425dvn0zn33unu91octylhdjhspdu58gf0i5ea4ngq/pulls/2092412765246517093/requested_reviewers", + "method": "POST", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 201, + "body": "{\n \"_links\" : {\n \"comments\" : {\n \"href\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347/comments\"\n },\n \"commits\" : {\n \"href\" : \"https://api.github.com/repos/octocat/Hello-World/pulls/1347/commits\"\n },\n \"html\" : {\n \"href\" : \"https://github.com/octocat/Hello-World/pull/1347\"\n },\n \"issue\" : {\n \"href\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347\"\n },\n \"review_comment\" : {\n \"href\" : \"https://api.github.com/repos/octocat/Hello-World/pulls/comments{/number}\"\n },\n \"review_comments\" : {\n \"href\" : \"https://api.github.com/repos/octocat/Hello-World/pulls/1347/comments\"\n },\n \"self\" : {\n \"href\" : \"https://api.github.com/repos/octocat/Hello-World/pulls/1347\"\n },\n \"statuses\" : {\n \"href\" : \"https://api.github.com/repos/octocat/Hello-World/statuses/6dcb09b5b57875f334f61aebed695e2e4193db5e\"\n }\n },\n \"active_lock_reason\" : \"too heated\",\n \"assignee\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"assignees\" : [ {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n }, {\n \"avatar_url\" : \"https://github.com/images/error/hubot_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/hubot/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/hubot/followers\",\n \"following_url\" : \"https://api.github.com/users/hubot/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/hubot/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/hubot\",\n \"id\" : 1,\n \"login\" : \"hubot\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/hubot/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/hubot/received_events\",\n \"repos_url\" : \"https://api.github.com/users/hubot/repos\",\n \"site_admin\" : true,\n \"starred_url\" : \"https://api.github.com/users/hubot/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/hubot/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/hubot\"\n } ],\n \"author_association\" : \"OWNER\",\n \"base\" : {\n \"label\" : \"octocat:master\",\n \"ref\" : \"master\",\n \"repo\" : {\n \"allow_merge_commit\" : true,\n \"allow_rebase_merge\" : true,\n \"allow_squash_merge\" : true,\n \"anonymous_access_enabled\" : false,\n \"archive_url\" : \"https://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref}\",\n \"archived\" : false,\n \"assignees_url\" : \"https://api.github.com/repos/octocat/Hello-World/assignees{/user}\",\n \"blobs_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/blobs{/sha}\",\n \"branches_url\" : \"https://api.github.com/repos/octocat/Hello-World/branches{/branch}\",\n \"clone_url\" : \"https://github.com/octocat/Hello-World.git\",\n \"collaborators_url\" : \"https://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator}\",\n \"comments_url\" : \"https://api.github.com/repos/octocat/Hello-World/comments{/number}\",\n \"commits_url\" : \"https://api.github.com/repos/octocat/Hello-World/commits{/sha}\",\n \"compare_url\" : \"https://api.github.com/repos/octocat/Hello-World/compare/{base}...{head}\",\n \"contents_url\" : \"https://api.github.com/repos/octocat/Hello-World/contents/{+path}\",\n \"contributors_url\" : \"https://api.github.com/repos/octocat/Hello-World/contributors\",\n \"created_at\" : \"2011-01-26T19:01:12Z\",\n \"default_branch\" : \"master\",\n \"delete_branch_on_merge\" : true,\n \"deployments_url\" : \"https://api.github.com/repos/octocat/Hello-World/deployments\",\n \"description\" : \"This your first repo!\",\n \"disabled\" : false,\n \"downloads_url\" : \"https://api.github.com/repos/octocat/Hello-World/downloads\",\n \"events_url\" : \"https://api.github.com/repos/octocat/Hello-World/events\",\n \"fork\" : false,\n \"forks\" : 1,\n \"forks_count\" : 9,\n \"forks_url\" : \"https://api.github.com/repos/octocat/Hello-World/forks\",\n \"full_name\" : \"octocat/Hello-World\",\n \"git_commits_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/commits{/sha}\",\n \"git_refs_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/refs{/sha}\",\n \"git_tags_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/tags{/sha}\",\n \"git_url\" : \"git:github.com/octocat/Hello-World.git\",\n \"has_downloads\" : true,\n \"has_issues\" : true,\n \"has_pages\" : false,\n \"has_projects\" : true,\n \"has_wiki\" : true,\n \"homepage\" : \"https://github.com\",\n \"hooks_url\" : \"https://api.github.com/repos/octocat/Hello-World/hooks\",\n \"html_url\" : \"https://github.com/octocat/Hello-World\",\n \"id\" : 1296269,\n \"is_template\" : true,\n \"issue_comment_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/comments{/number}\",\n \"issue_events_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/events{/number}\",\n \"issues_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues{/number}\",\n \"keys_url\" : \"https://api.github.com/repos/octocat/Hello-World/keys{/key_id}\",\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World/labels{/name}\",\n \"languages_url\" : \"https://api.github.com/repos/octocat/Hello-World/languages\",\n \"license\" : {\n \"html_url\" : \"https://api.github.com/licenses/mit\",\n \"key\" : \"mit\",\n \"name\" : \"MIT License\",\n \"node_id\" : \"MDc6TGljZW5zZW1pdA==\",\n \"spdx_id\" : \"MIT\",\n \"url\" : \"https://api.github.com/licenses/mit\"\n },\n \"merges_url\" : \"https://api.github.com/repos/octocat/Hello-World/merges\",\n \"milestones_url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones{/number}\",\n \"mirror_url\" : \"git:git.example.com/octocat/Hello-World\",\n \"name\" : \"Hello-World\",\n \"network_count\" : 0,\n \"node_id\" : \"MDEwOlJlcG9zaXRvcnkxMjk2MjY5\",\n \"notifications_url\" : \"https://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating}\",\n \"open_issues\" : 1,\n \"open_issues_count\" : 0,\n \"owner\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"permissions\" : {\n \"admin\" : false,\n \"pull\" : true,\n \"push\" : false\n },\n \"private\" : false,\n \"pulls_url\" : \"https://api.github.com/repos/octocat/Hello-World/pulls{/number}\",\n \"pushed_at\" : \"2011-01-26T19:06:43Z\",\n \"releases_url\" : \"https://api.github.com/repos/octocat/Hello-World/releases{/id}\",\n \"size\" : 108,\n \"ssh_url\" : \"git@github.com:octocat/Hello-World.git\",\n \"stargazers_count\" : 80,\n \"stargazers_url\" : \"https://api.github.com/repos/octocat/Hello-World/stargazers\",\n \"statuses_url\" : \"https://api.github.com/repos/octocat/Hello-World/statuses/{sha}\",\n \"subscribers_count\" : 42,\n \"subscribers_url\" : \"https://api.github.com/repos/octocat/Hello-World/subscribers\",\n \"subscription_url\" : \"https://api.github.com/repos/octocat/Hello-World/subscription\",\n \"svn_url\" : \"https://svn.github.com/octocat/Hello-World\",\n \"tags_url\" : \"https://api.github.com/repos/octocat/Hello-World/tags\",\n \"teams_url\" : \"https://api.github.com/repos/octocat/Hello-World/teams\",\n \"topics\" : [ \"octocat\", \"atom\", \"electron\", \"api\" ],\n \"trees_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/trees{/sha}\",\n \"updated_at\" : \"2011-01-26T19:14:43Z\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World\",\n \"visibility\" : \"public\",\n \"watchers\" : 1,\n \"watchers_count\" : 80\n },\n \"sha\" : \"6dcb09b5b57875f334f61aebed695e2e4193db5e\",\n \"user\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n }\n },\n \"body\" : \"Please pull these awesome changes in!\",\n \"closed_at\" : \"2011-01-26T19:01:12Z\",\n \"comments_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347/comments\",\n \"commits_url\" : \"https://api.github.com/repos/octocat/Hello-World/pulls/1347/commits\",\n \"created_at\" : \"2011-01-26T19:01:12Z\",\n \"diff_url\" : \"https://github.com/octocat/Hello-World/pull/1347.diff\",\n \"draft\" : false,\n \"head\" : {\n \"label\" : \"octocat:new-topic\",\n \"ref\" : \"new-topic\",\n \"repo\" : {\n \"allow_merge_commit\" : true,\n \"allow_rebase_merge\" : true,\n \"allow_squash_merge\" : true,\n \"anonymous_access_enabled\" : false,\n \"archive_url\" : \"https://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref}\",\n \"archived\" : false,\n \"assignees_url\" : \"https://api.github.com/repos/octocat/Hello-World/assignees{/user}\",\n \"blobs_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/blobs{/sha}\",\n \"branches_url\" : \"https://api.github.com/repos/octocat/Hello-World/branches{/branch}\",\n \"clone_url\" : \"https://github.com/octocat/Hello-World.git\",\n \"collaborators_url\" : \"https://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator}\",\n \"comments_url\" : \"https://api.github.com/repos/octocat/Hello-World/comments{/number}\",\n \"commits_url\" : \"https://api.github.com/repos/octocat/Hello-World/commits{/sha}\",\n \"compare_url\" : \"https://api.github.com/repos/octocat/Hello-World/compare/{base}...{head}\",\n \"contents_url\" : \"https://api.github.com/repos/octocat/Hello-World/contents/{+path}\",\n \"contributors_url\" : \"https://api.github.com/repos/octocat/Hello-World/contributors\",\n \"created_at\" : \"2011-01-26T19:01:12Z\",\n \"default_branch\" : \"master\",\n \"delete_branch_on_merge\" : true,\n \"deployments_url\" : \"https://api.github.com/repos/octocat/Hello-World/deployments\",\n \"description\" : \"This your first repo!\",\n \"disabled\" : false,\n \"downloads_url\" : \"https://api.github.com/repos/octocat/Hello-World/downloads\",\n \"events_url\" : \"https://api.github.com/repos/octocat/Hello-World/events\",\n \"fork\" : false,\n \"forks\" : 1,\n \"forks_count\" : 9,\n \"forks_url\" : \"https://api.github.com/repos/octocat/Hello-World/forks\",\n \"full_name\" : \"octocat/Hello-World\",\n \"git_commits_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/commits{/sha}\",\n \"git_refs_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/refs{/sha}\",\n \"git_tags_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/tags{/sha}\",\n \"git_url\" : \"git:github.com/octocat/Hello-World.git\",\n \"has_downloads\" : true,\n \"has_issues\" : true,\n \"has_pages\" : false,\n \"has_projects\" : true,\n \"has_wiki\" : true,\n \"homepage\" : \"https://github.com\",\n \"hooks_url\" : \"https://api.github.com/repos/octocat/Hello-World/hooks\",\n \"html_url\" : \"https://github.com/octocat/Hello-World\",\n \"id\" : 1296269,\n \"is_template\" : true,\n \"issue_comment_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/comments{/number}\",\n \"issue_events_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/events{/number}\",\n \"issues_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues{/number}\",\n \"keys_url\" : \"https://api.github.com/repos/octocat/Hello-World/keys{/key_id}\",\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World/labels{/name}\",\n \"languages_url\" : \"https://api.github.com/repos/octocat/Hello-World/languages\",\n \"license\" : {\n \"html_url\" : \"https://github.com/licenses/mit\",\n \"key\" : \"mit\",\n \"name\" : \"MIT License\",\n \"node_id\" : \"MDc6TGljZW5zZW1pdA==\",\n \"spdx_id\" : \"MIT\",\n \"url\" : \"https://api.github.com/licenses/mit\"\n },\n \"merges_url\" : \"https://api.github.com/repos/octocat/Hello-World/merges\",\n \"milestones_url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones{/number}\",\n \"mirror_url\" : \"git:git.example.com/octocat/Hello-World\",\n \"name\" : \"Hello-World\",\n \"network_count\" : 0,\n \"node_id\" : \"MDEwOlJlcG9zaXRvcnkxMjk2MjY5\",\n \"notifications_url\" : \"https://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating}\",\n \"open_issues\" : 1,\n \"open_issues_count\" : 0,\n \"owner\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"permissions\" : {\n \"admin\" : false,\n \"pull\" : true,\n \"push\" : false\n },\n \"private\" : false,\n \"pulls_url\" : \"https://api.github.com/repos/octocat/Hello-World/pulls{/number}\",\n \"pushed_at\" : \"2011-01-26T19:06:43Z\",\n \"releases_url\" : \"https://api.github.com/repos/octocat/Hello-World/releases{/id}\",\n \"size\" : 108,\n \"ssh_url\" : \"git@github.com:octocat/Hello-World.git\",\n \"stargazers_count\" : 80,\n \"stargazers_url\" : \"https://api.github.com/repos/octocat/Hello-World/stargazers\",\n \"statuses_url\" : \"https://api.github.com/repos/octocat/Hello-World/statuses/{sha}\",\n \"subscribers_count\" : 42,\n \"subscribers_url\" : \"https://api.github.com/repos/octocat/Hello-World/subscribers\",\n \"subscription_url\" : \"https://api.github.com/repos/octocat/Hello-World/subscription\",\n \"svn_url\" : \"https://svn.github.com/octocat/Hello-World\",\n \"tags_url\" : \"https://api.github.com/repos/octocat/Hello-World/tags\",\n \"teams_url\" : \"https://api.github.com/repos/octocat/Hello-World/teams\",\n \"topics\" : [ \"octocat\", \"atom\", \"electron\", \"api\" ],\n \"trees_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/trees{/sha}\",\n \"updated_at\" : \"2011-01-26T19:14:43Z\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World\",\n \"visibility\" : \"public\",\n \"watchers\" : 1,\n \"watchers_count\" : 80\n },\n \"sha\" : \"6dcb09b5b57875f334f61aebed695e2e4193db5e\",\n \"user\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n }\n },\n \"html_url\" : \"https://github.com/octocat/Hello-World/pull/1347\",\n \"id\" : 1,\n \"issue_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347\",\n \"labels\" : [ {\n \"color\" : \"f29513\",\n \"default\" : true,\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"name\" : \"bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/labels/bug\"\n } ],\n \"locked\" : true,\n \"merge_commit_sha\" : \"e5bd3914e2e596debea16f433f57875b5b90bcd6\",\n \"merged_at\" : \"2011-01-26T19:01:12Z\",\n \"milestone\" : {\n \"closed_at\" : \"2013-02-12T13:22:01Z\",\n \"closed_issues\" : 8,\n \"created_at\" : \"2011-04-10T20:09:31Z\",\n \"creator\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"description\" : \"Tracking milestone for version 1.0\",\n \"due_on\" : \"2012-10-09T23:39:01Z\",\n \"html_url\" : \"https://github.com/octocat/Hello-World/milestones/v1.0\",\n \"id\" : 1002604,\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones/1/labels\",\n \"node_id\" : \"MDk6TWlsZXN0b25lMTAwMjYwNA==\",\n \"number\" : 1,\n \"open_issues\" : 4,\n \"state\" : \"open\",\n \"title\" : \"v1.0\",\n \"updated_at\" : \"2014-03-03T18:58:10Z\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones/1\"\n },\n \"node_id\" : \"MDExOlB1bGxSZXF1ZXN0MQ==\",\n \"number\" : 1347,\n \"patch_url\" : \"https://github.com/octocat/Hello-World/pull/1347.patch\",\n \"requested_reviewers\" : [ {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n }, {\n \"avatar_url\" : \"https://github.com/images/error/hubot_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/hubot/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/hubot/followers\",\n \"following_url\" : \"https://api.github.com/users/hubot/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/hubot/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/hubot\",\n \"id\" : 1,\n \"login\" : \"hubot\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/hubot/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/hubot/received_events\",\n \"repos_url\" : \"https://api.github.com/users/hubot/repos\",\n \"site_admin\" : true,\n \"starred_url\" : \"https://api.github.com/users/hubot/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/hubot/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/hubot\"\n }, {\n \"avatar_url\" : \"https://github.com/images/error/other_user_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/other_user/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/other_user/followers\",\n \"following_url\" : \"https://api.github.com/users/other_user/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/other_user/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/other_user\",\n \"id\" : 1,\n \"login\" : \"other_user\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/other_user/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/other_user/received_events\",\n \"repos_url\" : \"https://api.github.com/users/other_user/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/other_user/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/other_user/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/other_user\"\n } ],\n \"requested_teams\" : [ {\n \"description\" : \"A great team.\",\n \"html_url\" : \"https://github.com/orgs/github/teams/justice-league\",\n \"id\" : 1,\n \"members_url\" : \"https://api.github.com/teams/1/members{/member}\",\n \"name\" : \"Justice League\",\n \"node_id\" : \"MDQ6VGVhbTE=\",\n \"permission\" : \"admin\",\n \"privacy\" : \"closed\",\n \"repositories_url\" : \"https://api.github.com/teams/1/repos\",\n \"slug\" : \"justice-league\",\n \"url\" : \"https://api.github.com/teams/1\"\n } ],\n \"review_comment_url\" : \"https://api.github.com/repos/octocat/Hello-World/pulls/comments{/number}\",\n \"review_comments_url\" : \"https://api.github.com/repos/octocat/Hello-World/pulls/1347/comments\",\n \"state\" : \"open\",\n \"statuses_url\" : \"https://api.github.com/repos/octocat/Hello-World/statuses/6dcb09b5b57875f334f61aebed695e2e4193db5e\",\n \"title\" : \"Amazing new feature\",\n \"updated_at\" : \"2011-01-26T19:01:12Z\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/pulls/1347\",\n \"user\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n }\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "52ac97b0-7a5c-4080-a58c-fa4634a1f400", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.098233Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "pulls/request-reviewers", + "schema": { + "description": "Pull Request Simple", + "properties": { + "_links": { + "properties": { + "comments": { + "$ref": "#/components/schemas/link" + }, + "commits": { + "$ref": "#/components/schemas/link" + }, + "html": { + "$ref": "#/components/schemas/link" + }, + "issue": { + "$ref": "#/components/schemas/link" + }, + "review_comment": { + "$ref": "#/components/schemas/link" + }, + "review_comments": { + "$ref": "#/components/schemas/link" + }, + "self": { + "$ref": "#/components/schemas/link" + }, + "statuses": { + "$ref": "#/components/schemas/link" + } + }, + "required": [ + "comments", + "commits", + "statuses", + "html", + "issue", + "review_comments", + "review_comment", + "self" + ], + "type": "object" + }, + "active_lock_reason": { + "example": "too heated", + "nullable": true, + "type": "string" + }, + "assignee": { + "$ref": "#/components/schemas/nullable-simple-user" + }, + "assignees": { + "items": { + "$ref": "#/components/schemas/simple-user" + }, + "nullable": true, + "type": "array" + }, + "author_association": { + "$ref": "#/components/schemas/author_association" + }, + "base": { + "properties": { + "label": { + "type": "string" + }, + "ref": { + "type": "string" + }, + "repo": { + "$ref": "#/components/schemas/repository" + }, + "sha": { + "type": "string" + }, + "user": { + "$ref": "#/components/schemas/nullable-simple-user" + } + }, + "required": ["label", "ref", "repo", "sha", "user"], + "type": "object" + }, + "body": { + "example": "Please pull these awesome changes", + "nullable": true, + "type": "string" + }, + "closed_at": { + "example": "2011-01-26T19:01:12Z", + "format": "date-time", + "nullable": true, + "type": "string" + }, + "comments_url": { + "example": "https://api.github.com/repos/octocat/Hello-World/issues/1347/comments", + "format": "uri", + "type": "string" + }, + "commits_url": { + "example": "https://api.github.com/repos/octocat/Hello-World/pulls/1347/commits", + "format": "uri", + "type": "string" + }, + "created_at": { + "example": "2011-01-26T19:01:12Z", + "format": "date-time", + "type": "string" + }, + "diff_url": { + "example": "https://github.com/octocat/Hello-World/pull/1347.diff", + "format": "uri", + "type": "string" + }, + "draft": { + "description": "Indicates whether or not the pull request is a draft.", + "example": false, + "type": "boolean" + }, + "head": { + "properties": { + "label": { + "type": "string" + }, + "ref": { + "type": "string" + }, + "repo": { + "$ref": "#/components/schemas/repository" + }, + "sha": { + "type": "string" + }, + "user": { + "$ref": "#/components/schemas/nullable-simple-user" + } + }, + "required": ["label", "ref", "repo", "sha", "user"], + "type": "object" + }, + "html_url": { + "example": "https://github.com/octocat/Hello-World/pull/1347", + "format": "uri", + "type": "string" + }, + "id": { + "example": 1, + "type": "integer" + }, + "issue_url": { + "example": "https://api.github.com/repos/octocat/Hello-World/issues/1347", + "format": "uri", + "type": "string" + }, + "labels": { + "items": { + "properties": { + "color": { + "type": "string" + }, + "default": { + "type": "boolean" + }, + "description": { + "type": "string" + }, + "id": { + "format": "int64", + "type": "integer" + }, + "name": { + "type": "string" + }, + "node_id": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "locked": { + "example": true, + "type": "boolean" + }, + "merge_commit_sha": { + "example": "e5bd3914e2e596debea16f433f57875b5b90bcd6", + "nullable": true, + "type": "string" + }, + "merged_at": { + "example": "2011-01-26T19:01:12Z", + "format": "date-time", + "nullable": true, + "type": "string" + }, + "milestone": { + "$ref": "#/components/schemas/nullable-milestone" + }, + "node_id": { + "example": "MDExOlB1bGxSZXF1ZXN0MQ==", + "type": "string" + }, + "number": { + "example": 1347, + "type": "integer" + }, + "patch_url": { + "example": "https://github.com/octocat/Hello-World/pull/1347.patch", + "format": "uri", + "type": "string" + }, + "requested_reviewers": { + "items": { + "$ref": "#/components/schemas/simple-user" + }, + "nullable": true, + "type": "array" + }, + "requested_teams": { + "items": { + "$ref": "#/components/schemas/team" + }, + "nullable": true, + "type": "array" + }, + "review_comment_url": { + "example": "https://api.github.com/repos/octocat/Hello-World/pulls/comments{/number}", + "type": "string" + }, + "review_comments_url": { + "example": "https://api.github.com/repos/octocat/Hello-World/pulls/1347/comments", + "format": "uri", + "type": "string" + }, + "state": { + "example": "open", + "type": "string" + }, + "statuses_url": { + "example": "https://api.github.com/repos/octocat/Hello-World/statuses/6dcb09b5b57875f334f61aebed695e2e4193db5e", + "format": "uri", + "type": "string" + }, + "title": { + "example": "new-feature", + "type": "string" + }, + "updated_at": { + "example": "2011-01-26T19:01:12Z", + "format": "date-time", + "type": "string" + }, + "url": { + "example": "https://api.github.com/repos/octocat/Hello-World/pulls/1347", + "format": "uri", + "type": "string" + }, + "user": { + "$ref": "#/components/schemas/nullable-simple-user" + } + }, + "required": [ + "_links", + "assignee", + "labels", + "base", + "body", + "closed_at", + "comments_url", + "commits_url", + "created_at", + "diff_url", + "head", + "html_url", + "id", + "node_id", + "issue_url", + "merge_commit_sha", + "merged_at", + "milestone", + "number", + "patch_url", + "review_comment_url", + "review_comments_url", + "statuses_url", + "state", + "locked", + "title", + "updated_at", + "url", + "user", + "author_association" + ], + "title": "Pull Request Simple", + "type": "object" + } + } + } + }, + "insertionIndex": 432 + }, + { + "id": "dbd51941-898c-418f-974d-05cf04ffc63c", + "name": "List requested reviewers for a pull request - default", + "request": { + "urlPath": "/repos/y991nylwna63ykyf2rrb61272yw6qokxw1d7cvq9w9175qea17vpuvlrr6l7ycoyiv034vdkyzpifpdvu8w7y6d7z814fmal0r08/cgwg42iosw2tmgvl548ihvego49k7ttrvju2qmv7pl8ybtzal75vasnor/pulls/963051979624692778/requested_reviewers", + "method": "GET" + }, + "response": { + "status": 200, + "body": "{\n \"teams\" : [ {\n \"description\" : \"A great team.\",\n \"html_url\" : \"https://github.com/orgs/github/teams/justice-league\",\n \"id\" : 1,\n \"members_url\" : \"https://api.github.com/teams/1/members{/member}\",\n \"name\" : \"Justice League\",\n \"node_id\" : \"MDQ6VGVhbTE=\",\n \"permission\" : \"admin\",\n \"privacy\" : \"closed\",\n \"repositories_url\" : \"https://api.github.com/teams/1/repos\",\n \"slug\" : \"justice-league\",\n \"url\" : \"https://api.github.com/teams/1\"\n } ],\n \"users\" : [ {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n } ]\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "dbd51941-898c-418f-974d-05cf04ffc63c", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.097804Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "pulls/list-requested-reviewers", + "schema": { + "description": "Pull Request Review Request", + "properties": { + "teams": { + "items": { + "$ref": "#/components/schemas/team" + }, + "type": "array" + }, + "users": { + "items": { + "$ref": "#/components/schemas/simple-user" + }, + "type": "array" + } + }, + "required": ["users", "teams"], + "title": "Pull Request Review Request", + "type": "object" + } + } + } + }, + "insertionIndex": 433 + }, + { + "id": "cd40ca8f-61c5-4c81-85de-8af33077c03e", + "name": "Remove requested reviewers from a pull request", + "request": { + "urlPath": "/repos/ct4m5i6ewl92s8u4/tbmi6cafj9vk1mh47ajs9nqslqvnb8s5ggfsjkvbpw8g32a/pulls/1097358640598907213/requested_reviewers", + "method": "DELETE" + }, + "response": { + "status": 422, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/963147\",\n \"message\" : \"Accusantium natus sunt. Reprehenderit velit dolores. Saepe ipsum omnis in earum asperiores. Debitis cum sit sit nihil. Est adipisci doloremque rerum.\",\n \"errors\" : [ {\n \"code\" : \"s81178hievl8nnl71esvvdsc96y7k3b\",\n \"field\" : \"nmj2jgl8olwwai4c89u0r0pox7d564bs3flmfawkj70eywzom1moz5djlw6c4p2akbsz3m3u5433benlgpess68lpq8zp4stfxl6at2h9jkxkj\",\n \"resource\" : \"uoego4npes0axm3efznxgzote4ibtaimpdbfsuj6pbl03frawmoq9bvt7gc10udo4bim8wapg8x3pcv66kavk0gwq705q5zeut4ozil1cg228l7w9hh21bqfbnavwubxgh1p\",\n \"index\" : 4134475014771670602,\n \"message\" : \"Quaerat voluptatem odit rerum modi quo ut eveniet. Quasi cupiditate quia repellendus est saepe aliquam cumque. Rerum provident exercitationem blanditiis numquam laudantium ipsa est. Consequatur aut ra\",\n \"value\" : { }\n }, {\n \"code\" : \"rajmfuu9mk5appx\",\n \"field\" : \"j0eb76kwxww37syjv5vpjztqgkb8x3ibm42\",\n \"resource\" : \"cciprz2ky42viuxhpuysmtsumecn4e\",\n \"index\" : 6567747787234312329,\n \"message\" : \"Recusandae illo saepe quisquam nostrum. Est qui asperiores modi explicabo enim in sequi. Ut a numquam. Sit temporibus et et. Quia ut quidem.\",\n \"value\" : { }\n }, {\n \"code\" : \"bo1juknxknn9cmjjd0mgwid44qltkbmwvkdkvrtow68ksm0db56rpmnp0jell7rt7q9enqgrjvieu4n32xsmnpo0fhzx8ac6qp2ywlgfnveykqc7uh10ra5h5srjah22xi4o8h9bfiniam3kw843olc90su92f7xvd2001knrs2o2r4vz0m9bqejec5hi0d\",\n \"field\" : \"lhqg7j24lolryut9e1gjgza9h4yvv2gt68ptgd86ek57ifh0ktxlp0o2zr0bghhqp5dacf82xz7kugcriz1lgnunhzuavvzcynaue0d1bpjtp7\",\n \"resource\" : \"tar8j004pmgqdmlnxzfdjod6oc4sbmpta2hf3071dpvw1a3cwsbn62u0e07ypcysp1pp4s3dxwoea6eh0pgl51qjtjspvlgsamf5tgsjg82v23nafglkq2wm5\",\n \"index\" : 7994826815695156567,\n \"message\" : \"Facere eius aut. Voluptatum eius ut consequuntur qui quasi minima. Nisi non consequuntur cum repellendus ut. Neque modi fugit asperiores eaque exercitationem tenetur.\",\n \"value\" : { }\n }, {\n \"code\" : \"g442vpi36sx0ox0m58j8qyz4uo95tqt32vz2audgoeu7voei59mrafosk9a8v6wv04ryw5ckb3zy2eyuqm5sn5ke9678jwagm6id0fh9u3ilk4k7hn5ivoelxlqj\",\n \"field\" : \"4enx3rn0j9jncijqhkyqkyef7m24w2j409xp2f1x\",\n \"resource\" : \"lym1ljn798j5cstr54mka\",\n \"index\" : 8606783615403710373,\n \"message\" : \"Eligendi soluta itaque nisi laboriosam. Est quis dolore inventore qui debitis repudiandae. Ea illum ut sed. Accusamus ipsam ipsam qui quod nulla.\",\n \"value\" : { }\n }, {\n \"code\" : \"k2m4ym8g5za00bu08ztsnbuy1a4xo3jjn3zyvr9gv178mjnen58yhtdq16ef1hglvj1qbj60egvoko1gt1uyo9hf8l0el6cg3b4tjfzbjcckbmr2tuuqhf6p8m1jzyeexi8wdwmtxsbvhuit4d6zuz18eqfu31ij3t8kbkxbagwecm94m\",\n \"field\" : \"oac2dmoz94ww\",\n \"resource\" : \"bqujzbld66x3ar11j6chvyv7gl5667s9jw0u9hy4o3ns6zfyrp5uhgh10oxuj7t11q5b87t5sh63i8cmnnom18jmaqwp46nd9kj0\",\n \"index\" : 7727483214451052388,\n \"message\" : \"Est sit aliquid eos explicabo incidunt. Autem qui consectetur sunt voluptate eos et. Et quas ipsam voluptatem ducimus tempore quod non.\",\n \"value\" : { }\n }, {\n \"code\" : \"zab2wme59fenrzuyj6ekwjvw45guxipcev7difmwlerl7rso65y3sf14qrc0zsh8el8usqgkqfqvewnnwzsxs61cjortojrja4tuoupgwqmgd1x8jg59tgty7appmefzeky3fo2ljbz1f8nb950g3bm723316as26assg0xjjzyot15s4w18p4wvl5sfbuk\",\n \"field\" : \"abixzwsvyheqevp9icyrieim4o6z2r0sbxvenh9rb28ty96u36mf83kcg9luxu1s1s67o72ov8ktj9stbytmk3p15qwfwo565j7046f6xck1w7k53d9u6jcci6tc6zhkya29xe9fe1yvng9mzr4sn5ixs1a7j2d6piulqrwha0r\",\n \"resource\" : \"f4kem838lfy9vahsa6qnpep2o\",\n \"index\" : 2032011472654447772,\n \"message\" : \"Veritatis repellendus doloremque ab. Excepturi odio et. Perspiciatis et iusto quos beatae animi. Mollitia recusandae sit molestias suscipit doloribus.\",\n \"value\" : { }\n }, {\n \"code\" : \"70n2bhotsf6nofx5cnq4vl9kce3zdczcok0vt2s8ingcs115xxz94hlptmohqhh0zj6mpn1p34215ve179k7bc0wzsfw9i311xskw8j6fwbcxqxdxiu1wjafq4ftxctpgarctr25bwnn55r\",\n \"field\" : \"e15uhg3vm6kzik5m0vsoxru5xuf02znv185wb3lfsob70qrl4t9tgrj0jfhzjhl17t74jwly0p5k1mjweimfr7atxpstx1z6uo0wqwt2chmg1aw46jnhmgww5z8x5et6od7rn2186ougx1bkfwpdqg8g17ia2hmcqvgduifr0d68d84djhee69\",\n \"resource\" : \"mkqhbogb2xdql3oce70wyf1va8nhq0b\",\n \"index\" : 5546357941973723875,\n \"message\" : \"Quidem praesentium est dolorem ut. Est nam dolor suscipit odit sint at sit. Beatae in explicabo at suscipit soluta voluptatem. Blanditiis placeat optio temporibus qui.\",\n \"value\" : { }\n }, {\n \"code\" : \"uxlfcx7kgqtd0j7uyhkb7dlnjyxdnma82h78n56qkm18ojk79rl20d8c6h2zraug1avvk72mdhj6elefhrh\",\n \"field\" : \"wyapys44us2wuw9b4z18qps6zxtwfupy\",\n \"resource\" : \"wrrw3bh8l3sha96bcugwwwosr78fv40wvowb7hfh5w8s2gwuus9rgmn7ws4ayzxagz7nggk75blllylk0po4701toiaphkip8ki\",\n \"index\" : 3532654296504759113,\n \"message\" : \"Omnis ut eaque dolore qui aut. Deleniti vitae omnis voluptatibus nihil enim cumque. Nesciunt minima sint vel totam sed. In sed non quasi aliquid. Ut excepturi corrupti molestiae enim molestiae perspic\",\n \"value\" : { }\n } ]\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "cd40ca8f-61c5-4c81-85de-8af33077c03e", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.097703Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "pulls/remove-requested-reviewers", + "schema": { + "description": "Validation Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "errors": { + "items": { + "properties": { + "code": { + "type": "string" + }, + "field": { + "type": "string" + }, + "index": { + "type": "integer" + }, + "message": { + "type": "string" + }, + "resource": { + "type": "string" + }, + "value": { + "oneOf": [ + { + "nullable": true, + "type": "string" + }, + { + "nullable": true, + "type": "integer" + }, + { + "items": { + "type": "string" + }, + "nullable": true, + "type": "array" + } + ] + } + }, + "required": ["code"], + "type": "object" + }, + "type": "array" + }, + "message": { + "type": "string" + } + }, + "required": ["message", "documentation_url"], + "title": "Validation Error", + "type": "object" + } + } + } + }, + "insertionIndex": 434 + }, + { + "id": "4875dffc-fefd-4151-a9ff-b994c9708fae", + "name": "Remove requested reviewers from a pull request", + "request": { + "urlPath": "/repos/43r2wxej92fi6s0z52z7ikr8y149p8wmwm07y1vt6mqynd2qkpbvm7t28hxc5wd0un5w5rzbd36xstox6clskug8ulddhp4wdpy2v7lv3fnomc88judq882wkqjjvjkry4er9tp7ra4y22cfwo2gi6xwz3oj0a8jshpnf0steaa4afbd/w0t41saemfugi3ox32v5frx2zn9/pulls/6199201499793754694/requested_reviewers", + "method": "DELETE" + }, + "response": { + "status": 200, + "body": "{\n \"issue_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347\",\n \"_links\" : {\n \"comments\" : {\n \"href\" : \"7kxgawnssz6wg8kme7cbd3dz5my28d2hwrnrufo8qi1n3fczyxm8r7f5sne73ep5fpeerwsf7f1i8uga6buecrqopazqi87zdtth5pf34822ix4i7ex28lqy6m345wy5df1fkgx7k1qzvrkyksnfz7\"\n },\n \"issue\" : {\n \"href\" : \"2e7okp1b9v8foe5\"\n },\n \"commits\" : {\n \"href\" : \"f3uxioj7q1daiqveiolsic9axvlnrnt1dfmzy2gf7ap5w54erhlv5oryvb4sb4wy9n5tt5u8chk0j5egv1acur2tqq4ru0qlvoxqhm1hjqawj7ebvsn\"\n },\n \"review_comments\" : {\n \"href\" : \"q1z8vxtjpmqyzsa5aaxptx8j1yt3q4du1g0mmovdh6rag3ysgmkjd389pac2x540nbpycez8qwdkya5w3m5djvstbjbpjlmk9t74ahvejxlqdj1uc2lkqqij05xpc41x98abg0xu8diqkp02y1jakiw8f3iif204p89\"\n },\n \"self\" : {\n \"href\" : \"m1zitsaibrwyctsk567i4trubjl0z1pljswnbwkz72or97mwj\"\n },\n \"statuses\" : {\n \"href\" : \"kq84dsun9zd2y9874th7owi7z83txznc57bh1x0mk005g4rjvhrsu3ubxe3iazg3wavqg2bouhh5u9kq3cydmben8lip9hrrwe0mhsw033sp3ahliqz99uyc0pygumq1jbbukpgqjo2qs0gv104eiqi1kcuo46iggq3hye46aj105n6f0tk1jxtp\"\n },\n \"html\" : {\n \"href\" : \"0umu7xykajmyed5zrks8u97w5qe6hphqf00o7ot19femp1a5mc0rfv9501s5w8z1o84azqhy0hesm86q2899sd95korsgzagk9jlhe31q3ywpipwbnjew8ys64xqks5jm0xtkwftxq6eifhug2ua\"\n },\n \"review_comment\" : {\n \"href\" : \"8zcbxjmdcxjt81ryunr03dwhka91v2yoblusxrzwt2qvwss63ify2q5mwarxzol0g26owmazufzwhxwoucvsmczdi5asdm0c0w\"\n }\n },\n \"assignees\" : [ {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Nida Abshire I\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"9kxh5590j98bwf2oposgl3yrb20w8zmosssqk8u8j6ht9fzimyt87703pm6dfwr3psktbmvu7gxm8zlz4sz3xc180r\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n }, {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Maragret Predovic\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"bue9cz7mnk5rji59ty5jh7rh4q65tun8qc97mgancaaefvrhlzm5v4oe3q1mx7z9sp1q8334x993g1iymia5z6pnc\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n }, {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Mrs. Nida Mertz\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"jlujx5zb72t5exf21tjzsdq8aq1seo9v\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n }, {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Reinaldo Olson\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"m6af3x8zicho6zsjzfcfit3ucvses908pwb0ovjb8qpnr88pc4a9jgfzdj9x3lv6e9ul7gh39hlvk118q75y14h542t4ms4ylg1b5kghayuicqzygq57sdtt7h3z8d0cjzsn63esdgzq0n2e\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n }, {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Bennie Kilback\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"58slqf03dy33kui8glm5l4lxu0l999zkir9etetaei2d990vrz0hg4uyz0wsd9c\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n }, {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Margit Jenkins\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"8qcqjd4le3d3ztzcno8eku0s43xm7r4fj9pzi7xxqdjiw8cg2f8a88mlytc8xftdrpcfxui188sdzl6utk07jec5hnoxefu7t1x3k3stohb0gsq178nj7u7n8k0gi76dp2szf46uwc2ht282dj3oyd9rstirme2lu3tfmnxrmsjurx7kf4m8vg\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n }, {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Milan Murray\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"xff45hnuwrhoi7por7g68blci94r7ncu4ij\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n } ],\n \"created_at\" : \"2011-01-26T19:01:12Z\",\n \"diff_url\" : \"https://github.com/octocat/Hello-World/pull/1347.diff\",\n \"requested_reviewers\" : [ {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Richelle Dickens\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"s7jhl9bsrylyq5dwm4y9gac1jp11l14whuw9xyn7wnmmu8akwih9v3bj2k1b4g7dxxemlhhlqtd76fxso3cshid69io0nd3gurejhrpalgv1ouy0q5tp18jahro15zjtuee5h46hhwqpfxyjqu9sn08f9rcli\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n }, {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Dr. Cornelius Flatley\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"q24sahpfzr288\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n }, {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Dr. Ehtel Schulist\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"vhqwguuvwl3xrzctkgv5wzq44b7elv7odcnm9mfpxjivdce1am4k4x5c3i2qoe2bgma4dvkhon9ieqikequrha7cavq79pk731ndfxn79frd4j4vxx0\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n }, {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Elton Waters\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"yk1qvb99lhp28j2\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n } ],\n \"body\" : \"Please pull these awesome changes\",\n \"title\" : \"new-feature\",\n \"requested_teams\" : [ {\n \"parent\" : {\n \"ldap_dn\" : \"uid=example,ou=users,dc=github,dc=com\",\n \"repositories_url\" : \"https://api.github.com/organizations/1/team/1/repos\",\n \"members_url\" : \"https://api.github.com/organizations/1/team/1/members{/member}\",\n \"html_url\" : \"https://github.com/orgs/rails/teams/core\",\n \"name\" : \"Justice League\",\n \"description\" : \"A great team.\",\n \"privacy\" : \"closed\",\n \"permission\" : \"admin\",\n \"id\" : 1,\n \"slug\" : \"justice-league\",\n \"url\" : \"https://api.github.com/organizations/1/team/1\",\n \"node_id\" : \"MDQ6VGVhbTE=\"\n },\n \"repositories_url\" : \"https://web.example.mocklab.io/145754\",\n \"members_url\" : \"https://web.example.mocklab.io/874369\",\n \"description\" : \"Cum delectus eum expedita modi beatae qui. Et voluptas consequatur veniam atque assumenda ipsa. Voluptatem voluptates quasi unde voluptatibus molestiae. Est distinctio sit doloribus fugiat sint minima\",\n \"privacy\" : \"3lxgz96vg8l\",\n \"permission\" : \"m39ec5fme6nspb1i3laxticbj15e8s7la1bmauz\",\n \"url\" : \"https://web.example.mocklab.io/307837\",\n \"permissions\" : {\n \"pull\" : false,\n \"maintain\" : false,\n \"admin\" : true,\n \"triage\" : false,\n \"push\" : true\n },\n \"html_url\" : \"https://github.com/orgs/rails/teams/core\",\n \"name\" : \"Bong McClure Sr.\",\n \"id\" : 6956654918445990684,\n \"slug\" : \"8r8y25r68rn8vcpbauhjrqkw0cnndrk8851fl239nghawgy59jivboc2n6p7gu9ke3jnnubiiscsprp6gulhxtq8buvdxdq3fk5v9ix6pphrrkdq0yecfb3atgr6tpi8ozmvppqbr2urmgexpni9zfb01geliuiim\",\n \"node_id\" : \"77v2\"\n }, {\n \"parent\" : {\n \"ldap_dn\" : \"uid=example,ou=users,dc=github,dc=com\",\n \"repositories_url\" : \"https://api.github.com/organizations/1/team/1/repos\",\n \"members_url\" : \"https://api.github.com/organizations/1/team/1/members{/member}\",\n \"html_url\" : \"https://github.com/orgs/rails/teams/core\",\n \"name\" : \"Justice League\",\n \"description\" : \"A great team.\",\n \"privacy\" : \"closed\",\n \"permission\" : \"admin\",\n \"id\" : 1,\n \"slug\" : \"justice-league\",\n \"url\" : \"https://api.github.com/organizations/1/team/1\",\n \"node_id\" : \"MDQ6VGVhbTE=\"\n },\n \"repositories_url\" : \"https://web.example.mocklab.io/663091\",\n \"members_url\" : \"https://web.example.mocklab.io/810705\",\n \"description\" : \"Cumque tempora voluptates adipisci. Consequatur facilis aliquid eaque. Praesentium at ipsum.\",\n \"privacy\" : \"sze8szlmqzn7cs2bc2hudectegb3cb375depanyd1yc7b9vyhv4wb86sug3fskuzem9upjnf2g9koy69cwc4g8bnu5jijwpdo08fpksk5lgqvelj28zzg2e\",\n \"permission\" : \"zrhmaa6t9o9x4sg6qp6bwrqdk94qfcfafa3cxp2iq9aet5h1aji1a2wco49lamxb5fl432nzq0obc554y03peaqnpght10894pqzy1j6p1yvg\",\n \"url\" : \"https://web.example.mocklab.io/972417\",\n \"permissions\" : {\n \"pull\" : false,\n \"maintain\" : true,\n \"admin\" : true,\n \"triage\" : false,\n \"push\" : false\n },\n \"html_url\" : \"https://github.com/orgs/rails/teams/core\",\n \"name\" : \"Florance Legros\",\n \"id\" : 5405940730339941522,\n \"slug\" : \"mp9mbb1kq83eqyocs0p56qqqiqz32oqhg1st6\",\n \"node_id\" : \"4dl3\"\n }, {\n \"parent\" : {\n \"ldap_dn\" : \"uid=example,ou=users,dc=github,dc=com\",\n \"repositories_url\" : \"https://api.github.com/organizations/1/team/1/repos\",\n \"members_url\" : \"https://api.github.com/organizations/1/team/1/members{/member}\",\n \"html_url\" : \"https://github.com/orgs/rails/teams/core\",\n \"name\" : \"Justice League\",\n \"description\" : \"A great team.\",\n \"privacy\" : \"closed\",\n \"permission\" : \"admin\",\n \"id\" : 1,\n \"slug\" : \"justice-league\",\n \"url\" : \"https://api.github.com/organizations/1/team/1\",\n \"node_id\" : \"MDQ6VGVhbTE=\"\n },\n \"repositories_url\" : \"https://web.example.mocklab.io/151845\",\n \"members_url\" : \"https://web.example.mocklab.io/705645\",\n \"description\" : \"Excepturi rerum repudiandae corrupti molestiae molestiae. Nihil porro pariatur ut molestiae. Et numquam reiciendis et modi inventore optio. Officia iste magni aut.\",\n \"privacy\" : \"h049tg9kubzpfdknm0unowvoqwzy565zgl9xxw9tqsmpvvq4yrcjd5\",\n \"permission\" : \"ne96vghp9s2pjw20d3br3cwnyvm236vg91vh5zsczwojk7lu3d1qxpj2yjykd4l2wbhh62g0qdf2l0j9v8gznfenl1pm6ggcss2hrg20bdqvjos6jcc3jysrphtyqm4pcg7tr1u5219g5lr1iwlcla6uxag9468qeq2tzysmvl5zsuhhjagz7g\",\n \"url\" : \"https://web.example.mocklab.io/867022\",\n \"permissions\" : {\n \"pull\" : true,\n \"maintain\" : true,\n \"admin\" : false,\n \"triage\" : false,\n \"push\" : false\n },\n \"html_url\" : \"https://github.com/orgs/rails/teams/core\",\n \"name\" : \"Penni Shields\",\n \"id\" : 7969644448206955824,\n \"slug\" : \"9lj7v3dahlznuoww4gd5pvo1iqmmm6qc1whpqii2mjgi2rarfs3iudndkcup8wkj9e57exs3nc7qya60s5prvxs0ldyontmvvfnuojtt5ql4dm6rqj3prj369\",\n \"node_id\" : \"o94v\"\n }, {\n \"parent\" : {\n \"ldap_dn\" : \"uid=example,ou=users,dc=github,dc=com\",\n \"repositories_url\" : \"https://api.github.com/organizations/1/team/1/repos\",\n \"members_url\" : \"https://api.github.com/organizations/1/team/1/members{/member}\",\n \"html_url\" : \"https://github.com/orgs/rails/teams/core\",\n \"name\" : \"Justice League\",\n \"description\" : \"A great team.\",\n \"privacy\" : \"closed\",\n \"permission\" : \"admin\",\n \"id\" : 1,\n \"slug\" : \"justice-league\",\n \"url\" : \"https://api.github.com/organizations/1/team/1\",\n \"node_id\" : \"MDQ6VGVhbTE=\"\n },\n \"repositories_url\" : \"https://web.example.mocklab.io/891212\",\n \"members_url\" : \"https://web.example.mocklab.io/289454\",\n \"description\" : \"Aperiam voluptates ad magnam et quos earum. Iste quasi fugiat maxime. Quis voluptate nam atque ullam cupiditate rerum in.\",\n \"privacy\" : \"mzppe35vrfncsauritjg1iuspohp7roko4gm5on57eolay4f0v8pypf31e4ngkuxvco\",\n \"permission\" : \"gdvz99xinmiabjm8h9cwn2cax8agpntbtvh6gzllda6gskhawn0udld8nl2dr5tq7ez25rgx95kc88pv1o25r73ul2qdfrutoeufxgm9exb5o3ldkjnne8tvm3l8wa94i6afobzn84wb8fwedq276ahmusoer2mfg8pwawilnxhqnvoo8cvay\",\n \"url\" : \"https://web.example.mocklab.io/855674\",\n \"permissions\" : {\n \"pull\" : true,\n \"maintain\" : true,\n \"admin\" : false,\n \"triage\" : false,\n \"push\" : false\n },\n \"html_url\" : \"https://github.com/orgs/rails/teams/core\",\n \"name\" : \"Aubrey Corkery\",\n \"id\" : 6404659504291311373,\n \"slug\" : \"5bo3m4x6ef9vnagcwrjl2lei94dh5hwswytodhctacvurkch0rg49xefo3xiwgv0x07hhmtleqiets7onhc6\",\n \"node_id\" : \"z9c4\"\n }, {\n \"parent\" : {\n \"ldap_dn\" : \"uid=example,ou=users,dc=github,dc=com\",\n \"repositories_url\" : \"https://api.github.com/organizations/1/team/1/repos\",\n \"members_url\" : \"https://api.github.com/organizations/1/team/1/members{/member}\",\n \"html_url\" : \"https://github.com/orgs/rails/teams/core\",\n \"name\" : \"Justice League\",\n \"description\" : \"A great team.\",\n \"privacy\" : \"closed\",\n \"permission\" : \"admin\",\n \"id\" : 1,\n \"slug\" : \"justice-league\",\n \"url\" : \"https://api.github.com/organizations/1/team/1\",\n \"node_id\" : \"MDQ6VGVhbTE=\"\n },\n \"repositories_url\" : \"https://web.example.mocklab.io/830909\",\n \"members_url\" : \"https://web.example.mocklab.io/661601\",\n \"description\" : \"Est aut ullam fugiat in. Vel culpa voluptatem eos et voluptas. Occaecati expedita doloremque exercitationem in in reprehenderit. Voluptatem quia minima error enim est harum consequatur. Voluptates id \",\n \"privacy\" : \"nidw8m2xn9fphdjoyj79mcpsv66w6t1dnwp4g3myxe3zryd3so8k4cd0qb6bkcp54h0kwh\",\n \"permission\" : \"2ic2luqzwe0don216r8xovzqsjvx9i62pxgd97nys8q04fp3c1p8zsiuvxye8f46zpy0wnlffo7s8ckb2x8cz44hvkxet6kkvrxzlrhudqmpzexv5d3y6ti\",\n \"url\" : \"https://web.example.mocklab.io/186651\",\n \"permissions\" : {\n \"pull\" : true,\n \"maintain\" : true,\n \"admin\" : true,\n \"triage\" : true,\n \"push\" : false\n },\n \"html_url\" : \"https://github.com/orgs/rails/teams/core\",\n \"name\" : \"Miss Jessie Grimes\",\n \"id\" : 4353273023029470921,\n \"slug\" : \"xzudqbhkvy6nmw4pfxhjqtr76lpjroxi9084ua599o2j9ospmjd4udxml5zab5ebkr0h6cyia2u6tx6hpyuitieldbpjvi2u8eyc023pashhqmy0g5v0ulplaqelb5zvjwf26b6u9efv6c4fj2wj62cy1gr87andblaeg\",\n \"node_id\" : \"ny23\"\n } ],\n \"author_association\" : \"OWNER\",\n \"head\" : {\n \"ref\" : \"683fih1s0vm5drrd1gzb50gu8zhql7o0qkj6al2pnx7c2nmicnsphogefk1xahkwj7x4s78xrtbcza7nci1spli75mylbzv3ok2dsgzwchunrhdh6lesy6jtyclsfntph20puizb6ntaab50mzjxz4q6qjkhjo3xp29snbblxwuud8nvdapfl\",\n \"repo\" : {\n \"allow_forking\" : true,\n \"anonymous_access_enabled\" : true,\n \"is_template\" : true,\n \"stargazers_count\" : 80,\n \"pushed_at\" : \"2011-01-26T19:06:43Z\",\n \"language\" : \"bmv1kfh2cb0rh\",\n \"subscription_url\" : \"http://api.github.com/repos/octocat/Hello-World/subscription\",\n \"branches_url\" : \"http://api.github.com/repos/octocat/Hello-World/branches{/branch}\",\n \"allow_rebase_merge\" : true,\n \"issue_comment_url\" : \"http://api.github.com/repos/octocat/Hello-World/issues/comments{/number}\",\n \"labels_url\" : \"http://api.github.com/repos/octocat/Hello-World/labels{/name}\",\n \"permissions\" : {\n \"pull\" : false,\n \"maintain\" : true,\n \"admin\" : true,\n \"triage\" : true,\n \"push\" : false\n },\n \"subscribers_url\" : \"http://api.github.com/repos/octocat/Hello-World/subscribers\",\n \"releases_url\" : \"http://api.github.com/repos/octocat/Hello-World/releases{/id}\",\n \"svn_url\" : \"https://svn.github.com/octocat/Hello-World\",\n \"subscribers_count\" : 9179754457996758752,\n \"id\" : 42,\n \"master_branch\" : \"bkidww7b3c4dsz6xsph4c8r7urlguys3f7ucgz0iu003i3r673cva081sbbmmvkxrx\",\n \"forks\" : 2231992907166975196,\n \"allow_merge_commit\" : true,\n \"archive_url\" : \"http://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref}\",\n \"git_refs_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/refs{/sha}\",\n \"forks_url\" : \"http://api.github.com/repos/octocat/Hello-World/forks\",\n \"visibility\" : \"lacgwdaxvyxdh1g8k8k1o1fl93csynaddqd1uxjx5qg91fkvv4ycxpipamdwe85ugxc7kvm60xf7e7v6zl01ktiquqnopci02de5plztqb1i8di9g7ftwjz4k0yw34gxa46v21gnsx272dhg6td3bk88vfmz7990eioyutrxaznmpqs4lvws\",\n \"statuses_url\" : \"http://api.github.com/repos/octocat/Hello-World/statuses/{sha}\",\n \"network_count\" : 6142291539547397126,\n \"ssh_url\" : \"git@github.com:octocat/Hello-World.git\",\n \"license\" : {\n \"html_url\" : \"https://web.example.mocklab.io/061176\",\n \"name\" : \"MIT License\",\n \"spdx_id\" : \"MIT\",\n \"key\" : \"mit\",\n \"url\" : \"https://api.github.com/licenses/mit\",\n \"node_id\" : \"MDc6TGljZW5zZW1pdA==\"\n },\n \"full_name\" : \"octocat/Hello-World\",\n \"size\" : 108,\n \"template_repository\" : {\n \"anonymous_access_enabled\" : true,\n \"is_template\" : false,\n \"stargazers_count\" : 6418800829202508668,\n \"pushed_at\" : \"7kp2szvak0kzyt9j9l83dvuo0nh4i7vrxvceaeym983m\",\n \"language\" : \"i9cjavpfnthncr5xl5eb1nnhq2mht7svg\",\n \"subscription_url\" : \"https://web.example.mocklab.io/432031\",\n \"branches_url\" : \"https://web.example.mocklab.io/271366\",\n \"allow_rebase_merge\" : true,\n \"issue_comment_url\" : \"https://web.example.mocklab.io/056794\",\n \"labels_url\" : \"https://web.example.mocklab.io/513585\",\n \"permissions\" : {\n \"pull\" : false,\n \"maintain\" : false,\n \"admin\" : true,\n \"triage\" : true,\n \"push\" : false\n },\n \"subscribers_url\" : \"https://web.example.mocklab.io/466624\",\n \"releases_url\" : \"https://web.example.mocklab.io/295852\",\n \"svn_url\" : \"https://web.example.mocklab.io/138782\",\n \"subscribers_count\" : 6848334168011693524,\n \"id\" : 5245300618033110676,\n \"allow_merge_commit\" : true,\n \"archive_url\" : \"https://web.example.mocklab.io/978098\",\n \"git_refs_url\" : \"https://web.example.mocklab.io/616299\",\n \"forks_url\" : \"https://web.example.mocklab.io/770199\",\n \"visibility\" : \"ykro75i7y0h2gaifnmw9tvgsyptizhe1s82tufgr1mh4ymwo52sc06tzbnlsrfxhq4xvcosiyhlxpwsg1sqynbld086ehh0lppiiybdisthxb8eawh3sz48089tg8zvbsmh0qzvh77of99bg1jqysnuz\",\n \"statuses_url\" : \"https://web.example.mocklab.io/940611\",\n \"network_count\" : 2991563596024966300,\n \"ssh_url\" : \"https://web.example.mocklab.io/501666\",\n \"full_name\" : \"Cristopher Spinka\",\n \"size\" : 3505387072573929690,\n \"languages_url\" : \"https://web.example.mocklab.io/817737\",\n \"clone_url\" : \"https://web.example.mocklab.io/535968\",\n \"collaborators_url\" : \"https://web.example.mocklab.io/691282\",\n \"html_url\" : \"https://web.example.mocklab.io/745874\",\n \"name\" : \"Wava Bailey\",\n \"pulls_url\" : \"https://web.example.mocklab.io/428130\",\n \"default_branch\" : \"nedtuscc88gh50tz7gw0890ascpbr22ngtqghdeuusitqgec278kt5z\",\n \"hooks_url\" : \"https://web.example.mocklab.io/049141\",\n \"trees_url\" : \"https://web.example.mocklab.io/061831\",\n \"tags_url\" : \"https://web.example.mocklab.io/929414\",\n \"contributors_url\" : \"https://web.example.mocklab.io/766758\",\n \"private\" : true,\n \"has_downloads\" : false,\n \"notifications_url\" : \"https://web.example.mocklab.io/802428\",\n \"open_issues_count\" : 5612831099457548738,\n \"created_at\" : \"etuwthpxbq4h8wn6itueqh9vcr8l7qxmhmcglxc3s5chimnk0pd4vvmangd1jny0j46k4xc8figbw8fvi9ms8alfs195oqic6mfm5cjdygs7pm8mgfc37e2hiqfabch6hlnoly3yxhlor0yhrk4qaretmnoqsbf01h3js0b5qm7scalhmjqjaqjafj7\",\n \"description\" : \"Magnam adipisci repellat cupiditate libero neque. Iste explicabo omnis. Sapiente incidunt quam voluptate cupiditate suscipit voluptas. Atque harum ut autem non quia eius.\",\n \"deployments_url\" : \"https://web.example.mocklab.io/739158\",\n \"keys_url\" : \"https://web.example.mocklab.io/777425\",\n \"has_projects\" : true,\n \"archived\" : false,\n \"has_wiki\" : false,\n \"updated_at\" : \"2022-03-30T07:10:59.085974Z\",\n \"comments_url\" : \"https://web.example.mocklab.io/783560\",\n \"stargazers_url\" : \"https://web.example.mocklab.io/994534\",\n \"disabled\" : true,\n \"delete_branch_on_merge\" : false,\n \"git_url\" : \"https://web.example.mocklab.io/583526\",\n \"has_pages\" : true,\n \"owner\" : {\n \"gists_url\" : \"https://web.example.mocklab.io/704742\",\n \"repos_url\" : \"https://web.example.mocklab.io/439748\",\n \"following_url\" : \"https://web.example.mocklab.io/217916\",\n \"starred_url\" : \"https://web.example.mocklab.io/174319\",\n \"followers_url\" : \"https://web.example.mocklab.io/949150\",\n \"login\" : \"2acjum2dr0hjdcg50m60wrwzcoep396w2iwk4etzvh9xtgbhp9vnxkkwaj9s2p2qvqkjg6pk9bbiw2omet3tahuzwbbbza2ft85iqwvalcjd638bbv6nm58nru1q8j7y19\",\n \"type\" : \"ihm08nvmkpc\",\n \"url\" : \"https://web.example.mocklab.io/321973\",\n \"subscriptions_url\" : \"https://web.example.mocklab.io/556375\",\n \"received_events_url\" : \"https://web.example.mocklab.io/792142\",\n \"avatar_url\" : \"https://s3.amazonaws.com/uifaces/faces/twitter/codepoet_ru/128.jpg\",\n \"events_url\" : \"https://web.example.mocklab.io/776829\",\n \"html_url\" : \"https://web.example.mocklab.io/866882\",\n \"site_admin\" : false,\n \"id\" : 1998082732409666180,\n \"gravatar_id\" : \"2ab5\",\n \"node_id\" : \"t5d3\",\n \"organizations_url\" : \"https://web.example.mocklab.io/988968\"\n },\n \"allow_squash_merge\" : false,\n \"commits_url\" : \"https://web.example.mocklab.io/761489\",\n \"compare_url\" : \"https://web.example.mocklab.io/699227\",\n \"git_commits_url\" : \"https://web.example.mocklab.io/447744\",\n \"topics\" : [ \"xv8brue3n3wvsiuafy08ux9s8nedcmzow45xjtfj78np4xhsc4pj8leznwzzmx2f3elpk8gp0y60qck4a2ob07blkddzbqjqlk31g\", \"f362rvk8ybmcmmxo9lg0omtwml0u1arujx35rigbrg095xq\" ],\n \"blobs_url\" : \"https://web.example.mocklab.io/635088\",\n \"git_tags_url\" : \"https://web.example.mocklab.io/693835\",\n \"merges_url\" : \"https://web.example.mocklab.io/950790\",\n \"downloads_url\" : \"https://web.example.mocklab.io/156884\",\n \"has_issues\" : false,\n \"url\" : \"https://web.example.mocklab.io/025602\",\n \"contents_url\" : \"https://web.example.mocklab.io/670218\",\n \"mirror_url\" : \"https://web.example.mocklab.io/942187\",\n \"milestones_url\" : \"https://web.example.mocklab.io/490838\",\n \"teams_url\" : \"https://web.example.mocklab.io/589314\",\n \"fork\" : true,\n \"issues_url\" : \"https://web.example.mocklab.io/533551\",\n \"events_url\" : \"https://web.example.mocklab.io/312459\",\n \"issue_events_url\" : \"https://web.example.mocklab.io/174013\",\n \"assignees_url\" : \"https://web.example.mocklab.io/926283\",\n \"watchers_count\" : 6239648233800634250,\n \"forks_count\" : 7771498494325422844,\n \"homepage\" : \"xo4kx7huid8sjvmcpp7c9qza3\",\n \"node_id\" : \"3k1w\"\n },\n \"languages_url\" : \"http://api.github.com/repos/octocat/Hello-World/languages\",\n \"clone_url\" : \"https://github.com/octocat/Hello-World.git\",\n \"collaborators_url\" : \"http://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator}\",\n \"html_url\" : \"https://github.com/octocat/Hello-World\",\n \"name\" : \"Team Environment\",\n \"pulls_url\" : \"http://api.github.com/repos/octocat/Hello-World/pulls{/number}\",\n \"default_branch\" : \"master\",\n \"hooks_url\" : \"http://api.github.com/repos/octocat/Hello-World/hooks\",\n \"trees_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/trees{/sha}\",\n \"tags_url\" : \"http://api.github.com/repos/octocat/Hello-World/tags\",\n \"contributors_url\" : \"http://api.github.com/repos/octocat/Hello-World/contributors\",\n \"private\" : false,\n \"has_downloads\" : true,\n \"notifications_url\" : \"http://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating}\",\n \"open_issues_count\" : 0,\n \"created_at\" : \"2011-01-26T19:01:12Z\",\n \"description\" : \"This your first repo!\",\n \"watchers\" : 5553031816691070404,\n \"deployments_url\" : \"http://api.github.com/repos/octocat/Hello-World/deployments\",\n \"keys_url\" : \"http://api.github.com/repos/octocat/Hello-World/keys{/key_id}\",\n \"has_projects\" : true,\n \"archived\" : false,\n \"has_wiki\" : true,\n \"updated_at\" : \"2011-01-26T19:14:43Z\",\n \"comments_url\" : \"http://api.github.com/repos/octocat/Hello-World/comments{/number}\",\n \"stargazers_url\" : \"http://api.github.com/repos/octocat/Hello-World/stargazers\",\n \"disabled\" : false,\n \"delete_branch_on_merge\" : false,\n \"git_url\" : \"git:github.com/octocat/Hello-World.git\",\n \"has_pages\" : false,\n \"owner\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Maureen Senger\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"94rgqijwb0n0wsuoniu5gmndzkx7svsl1ovya1mxmutx\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"allow_squash_merge\" : true,\n \"commits_url\" : \"http://api.github.com/repos/octocat/Hello-World/commits{/sha}\",\n \"compare_url\" : \"http://api.github.com/repos/octocat/Hello-World/compare/{base}...{head}\",\n \"git_commits_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/commits{/sha}\",\n \"topics\" : [ \"xm36zl3wrsidtaa520jgilf6u3vxje0pfugc7cwllub7j79vl29u1ytx108gnb325kpz21432jyva08bwwnnip081euiqlgv0jo7m98w16wapc87xqo8tf2rghl9j8\", \"4csks0kzfhva9r68s3r7knadkhhn9syghtfg5ke8cjajwgygeu532bc25tp4w6tpyv4tx84vavcebsonvw7aldw3pxiy5gjibxcbxm4slvqjalsxmbihii4p5bqc7u6l93n7nskuid4op0ytz5y3rmne0dvv07gtn6l5wyurcolq4grtjlmp1dp\", \"ahi6l5jbaxxuvic7ct5ytbvquvehw4xceq4j3c9ya4oiaciz9qyb0fzw00nkn9uemrgwjm448w80mtq3dca24zrbucghgs7h208aaul1mdj7retv21o7skunifty\", \"64u332ilk6vxm63hp1hex201ofpvizq6qrmmjw1x7xawjnwe29o6dh6dddvh5obmzdp00zzekqwy42dxs1hqdk9nojulh66q2hj40io742\", \"n48k39mwbo9gvrfhvcnqcoxs0yjoarx0ls5xcsdhwn3xzrg9kbyr9ivikv2hrvlsuvija9s6p29xxe5iksqgw07qbi0dud0rc6inwwyjfio0osi8libg6ppdqo4v68d2mcplbpwkj62dgcd3kd28bzc2nknd93y7sawsucd5bn5hb8so96xo2ohkceron49vqzy\" ],\n \"blobs_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/blobs{/sha}\",\n \"git_tags_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/tags{/sha}\",\n \"merges_url\" : \"http://api.github.com/repos/octocat/Hello-World/merges\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:42Z\\\"\",\n \"downloads_url\" : \"http://api.github.com/repos/octocat/Hello-World/downloads\",\n \"has_issues\" : true,\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World\",\n \"contents_url\" : \"http://api.github.com/repos/octocat/Hello-World/contents/{+path}\",\n \"mirror_url\" : \"git:git.example.com/octocat/Hello-World\",\n \"milestones_url\" : \"http://api.github.com/repos/octocat/Hello-World/milestones{/number}\",\n \"teams_url\" : \"http://api.github.com/repos/octocat/Hello-World/teams\",\n \"fork\" : false,\n \"issues_url\" : \"http://api.github.com/repos/octocat/Hello-World/issues{/number}\",\n \"events_url\" : \"http://api.github.com/repos/octocat/Hello-World/events\",\n \"issue_events_url\" : \"http://api.github.com/repos/octocat/Hello-World/issues/events{/number}\",\n \"organization\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Harold Thompson I\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"71cf5z8q3\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"assignees_url\" : \"http://api.github.com/repos/octocat/Hello-World/assignees{/user}\",\n \"open_issues\" : 3626291740986321162,\n \"watchers_count\" : 80,\n \"forks_count\" : 9,\n \"homepage\" : \"https://github.com\",\n \"node_id\" : \"MDEwOlJlcG9zaXRvcnkxMjk2MjY5\"\n },\n \"label\" : \"voluptas\",\n \"sha\" : \"xg9gjwr8hfcad3sp1cnifcvqvrpvlll719n8da06nyizk6ls884qz4owda7xsm8e82a1gl0h61yuvbix7by1hfxdc0o2lr4y47dvekv\",\n \"user\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"dante.walter\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"auytaymsrhv6gnhhwqkzgp26m1rpl6s6gkr0ln1sas1sypp5zkw2w63gmrqp53yxsoo9r5pg8zpfgij5dfbwo2f3z8ox5o1rtjuim0egkprl1kr2avt1od78kyv9b50jc8x50x5zjs79g9aj7kymdohzu6p6qzjnsxc0b3xu4jk3n1nxkm\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n }\n },\n \"number\" : 1347,\n \"patch_url\" : \"https://github.com/octocat/Hello-World/pull/1347.patch\",\n \"updated_at\" : \"2011-01-26T19:01:12Z\",\n \"draft\" : false,\n \"comments_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347/comments\",\n \"merge_commit_sha\" : \"e5bd3914e2e596debea16f433f57875b5b90bcd6\",\n \"review_comment_url\" : \"https://api.github.com/repos/octocat/Hello-World/pulls/comments{/number}\",\n \"active_lock_reason\" : \"too heated\",\n \"id\" : 1,\n \"state\" : \"open\",\n \"locked\" : true,\n \"commits_url\" : \"https://api.github.com/repos/octocat/Hello-World/pulls/1347/commits\",\n \"closed_at\" : \"2011-01-26T19:01:12Z\",\n \"statuses_url\" : \"https://api.github.com/repos/octocat/Hello-World/statuses/6dcb09b5b57875f334f61aebed695e2e4193db5e\",\n \"merged_at\" : \"2011-01-26T19:01:12Z\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/pulls/1347\",\n \"labels\" : [ {\n \"default\" : true,\n \"color\" : \"o1jxr7i1azup787uwuaezixyl51411ii6ahj5hspgj3pr0fsqt3a1do58m6zat1hg8quwey8t5dqu9ll6suxa2uhqjeu8srybtntcc912ekon30n8n31mq6hkh08t3llarww5fg6hygnu7psu2tjpspae4i1y1xx2j5zrm78y5037cvsd91sn99sfnea\",\n \"name\" : \"Song VonRueden PhD\",\n \"description\" : \"A consequatur voluptatem est non nam in. Iusto officia sunt. Itaque ad veniam velit vitae. Ipsum vero sit ipsa suscipit.\",\n \"id\" : 102778024940232780,\n \"url\" : \"https://web.example.mocklab.io/169583\",\n \"node_id\" : \"v9k1\"\n }, {\n \"default\" : true,\n \"color\" : \"lwvckx7f23jgtc3ojru171xyv6bs7oq13yiz4mfzvjqlxa1ld1zop\",\n \"name\" : \"Juliet Larson\",\n \"description\" : \"Dolorem fugit quae. Veritatis exercitationem perspiciatis. Nulla beatae provident nisi delectus.\",\n \"id\" : 8064342475372905084,\n \"url\" : \"https://web.example.mocklab.io/011955\",\n \"node_id\" : \"r8ts\"\n }, {\n \"default\" : true,\n \"color\" : \"u47qc6bytpt5x9voty3n835y8cn89sq2fpnw5c83dau90acxriunov\",\n \"name\" : \"Dr. Zona Kuhlman\",\n \"description\" : \"Omnis consectetur odio. Cumque sequi nostrum libero sit perspiciatis. Quo et est enim ut voluptates. Sunt illum amet nesciunt. Cupiditate beatae voluptas ipsum.\",\n \"id\" : 3778921106422806707,\n \"url\" : \"https://web.example.mocklab.io/283439\",\n \"node_id\" : \"01m7\"\n }, {\n \"default\" : false,\n \"color\" : \"mh2vm2105izz8vf51xwdfjmg24cw571u4kbnvq\",\n \"name\" : \"Abe Dooley IV\",\n \"description\" : \"Delectus eaque voluptas quas et. Iure eaque dolorem tempora. Sint iure nihil tempora inventore quos porro.\",\n \"id\" : 9016199623383561281,\n \"url\" : \"https://web.example.mocklab.io/152666\",\n \"node_id\" : \"4l58\"\n }, {\n \"default\" : true,\n \"color\" : \"kbeuqt7aru5wnqfticyrxmq6uvnds\",\n \"name\" : \"Virgil Dach\",\n \"description\" : \"Sunt facere repellat ex similique. Reprehenderit commodi accusantium quibusdam laboriosam molestiae. Voluptatem voluptatibus nisi voluptatem neque commodi. Eos quis sapiente quis.\",\n \"id\" : 398910899487750628,\n \"url\" : \"https://web.example.mocklab.io/677934\",\n \"node_id\" : \"55ne\"\n }, {\n \"default\" : true,\n \"color\" : \"h72bfuvwto8\",\n \"name\" : \"Robin Schroeder\",\n \"description\" : \"Expedita aut ut reiciendis distinctio. Voluptas recusandae distinctio aut. Necessitatibus consequuntur ipsam ullam atque sit quod. Quaerat maiores illum enim qui quisquam. Est dicta ipsum aut ab vitae\",\n \"id\" : 2910564677686361386,\n \"url\" : \"https://web.example.mocklab.io/422039\",\n \"node_id\" : \"783e\"\n }, {\n \"default\" : true,\n \"color\" : \"glc8l2ovwa0191fzxne1lhtde3nz96imednt302cbev9cj9gmkcbe2i0f5ul1ef1sbwhvpgizdguqwtie4i6jnrx7a71u1jnmbvs604voupuvhn87gkywhu329lnxcnjwcpa3e8riz2e8wibyc6bmvc780tyl52\",\n \"name\" : \"Joe Hickle I\",\n \"description\" : \"Occaecati magni est quia dolorum ut sint nihil. Est et culpa natus est. Distinctio autem et adipisci odit iure et aperiam. Veniam tempore sit consequuntur dolores asperiores quod est.\",\n \"id\" : 7941071535078802350,\n \"url\" : \"https://web.example.mocklab.io/910940\",\n \"node_id\" : \"z7x3\"\n } ],\n \"milestone\" : {\n \"creator\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Bertie Sporer\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"9t2gjrummywwhzts7pe9gkkm19rtzb1e8w1vq5311hbks93hnwh8ogmibkd5pf48lol339wbbpt290yx71onuz3jjjrbm79vyw7dlxhb9bd0km2ctphu0mtnxmptss4w1xtawvdpgfv0aeaj3cq5mwd9x405fwn60nhc031vipj0yk31aqus7\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"closed_at\" : \"2013-02-12T13:22:01Z\",\n \"created_at\" : \"2011-04-10T20:09:31Z\",\n \"description\" : \"Tracking milestone for version 1.0\",\n \"closed_issues\" : 8,\n \"title\" : \"v1.0\",\n \"due_on\" : \"2012-10-09T23:39:01Z\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones/1\",\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones/1/labels\",\n \"number\" : 42,\n \"updated_at\" : \"2014-03-03T18:58:10Z\",\n \"html_url\" : \"https://github.com/octocat/Hello-World/milestones/v1.0\",\n \"id\" : 1002604,\n \"state\" : \"open\",\n \"open_issues\" : 4,\n \"node_id\" : \"MDk6TWlsZXN0b25lMTAwMjYwNA==\"\n },\n \"html_url\" : \"https://github.com/octocat/Hello-World/pull/1347\",\n \"review_comments_url\" : \"https://api.github.com/repos/octocat/Hello-World/pulls/1347/comments\",\n \"assignee\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Lenny Reinger\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"ekn9m3u8c07\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"user\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"shavonne.hauck\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"guixmgvk65uxppivzzhi2z2oxtspvweljs79rc5kqcjxnkhiqe9btd01s4evu2q6e52xj9wjkqj11il1attqi7\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"base\" : {\n \"ref\" : \"tshr0m9wyh8dmu8thry8bcodiwwyyb9hqajvkxjph51qomzw5br6awcnm69yi1gxi8ntw7mwsphakqru2nwp8qv90dxzq1nvvlu6t1m6t14u17doqtxop41ke35a1kh7f4zka6fqqxjdn5xue0zn416v2ijekio82zflkigap2xb4n88nnpvarlo7czvb2rb6phon2\",\n \"repo\" : {\n \"allow_forking\" : false,\n \"anonymous_access_enabled\" : false,\n \"is_template\" : true,\n \"stargazers_count\" : 80,\n \"pushed_at\" : \"2011-01-26T19:06:43Z\",\n \"language\" : \"1o0vowvzhxll4s9lt9si27f8vh1h6kybv96gz79ggufsorlcs04ujsynq4fzvl4hxegpvf19n8qn3jzlothwkc5r22rww2wpdc1tdfvuuntiw6x66g47k275xbenur9o8hegw0vqyrladtyw8l47w7etqzw8d3bebvyqhqlet89mr7hz4o1ljy4i5q4ct\",\n \"subscription_url\" : \"http://api.github.com/repos/octocat/Hello-World/subscription\",\n \"branches_url\" : \"http://api.github.com/repos/octocat/Hello-World/branches{/branch}\",\n \"allow_rebase_merge\" : true,\n \"issue_comment_url\" : \"http://api.github.com/repos/octocat/Hello-World/issues/comments{/number}\",\n \"labels_url\" : \"http://api.github.com/repos/octocat/Hello-World/labels{/name}\",\n \"permissions\" : {\n \"pull\" : true,\n \"maintain\" : false,\n \"admin\" : false,\n \"triage\" : false,\n \"push\" : false\n },\n \"subscribers_url\" : \"http://api.github.com/repos/octocat/Hello-World/subscribers\",\n \"releases_url\" : \"http://api.github.com/repos/octocat/Hello-World/releases{/id}\",\n \"svn_url\" : \"https://svn.github.com/octocat/Hello-World\",\n \"subscribers_count\" : 4918030858074092602,\n \"id\" : 42,\n \"master_branch\" : \"3xsvkj95xxoehhz0xgb8lb2rgk8txfb157mnjtsa9bndqykr6u24q70ch6r5mmtx1tgcl7uc9pjmsox22lsvk1f1rqlk6l5anq2m56vo7gol8s1viqvtp6yp79j0yu70mc4hxdup0gzup\",\n \"forks\" : 260624966119334457,\n \"allow_merge_commit\" : true,\n \"archive_url\" : \"http://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref}\",\n \"git_refs_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/refs{/sha}\",\n \"forks_url\" : \"http://api.github.com/repos/octocat/Hello-World/forks\",\n \"visibility\" : \"morgpenzeetbj2euzau9l9vrux1liraj2o0bck4w6yzqkcgx0m58zln9mv\",\n \"statuses_url\" : \"http://api.github.com/repos/octocat/Hello-World/statuses/{sha}\",\n \"network_count\" : 6599065771246486142,\n \"ssh_url\" : \"git@github.com:octocat/Hello-World.git\",\n \"license\" : {\n \"html_url\" : \"https://web.example.mocklab.io/805863\",\n \"name\" : \"MIT License\",\n \"spdx_id\" : \"MIT\",\n \"key\" : \"mit\",\n \"url\" : \"https://api.github.com/licenses/mit\",\n \"node_id\" : \"MDc6TGljZW5zZW1pdA==\"\n },\n \"full_name\" : \"octocat/Hello-World\",\n \"size\" : 108,\n \"template_repository\" : {\n \"anonymous_access_enabled\" : false,\n \"is_template\" : false,\n \"stargazers_count\" : 5049845659800681270,\n \"pushed_at\" : \"gm3prvw9slj96g7xgw\",\n \"language\" : \"sytz7wv493rkhy6h47b674cp6x08ztfc8wuah0q9uktd9riu8pzweccbh\",\n \"subscription_url\" : \"https://web.example.mocklab.io/313913\",\n \"branches_url\" : \"https://web.example.mocklab.io/461284\",\n \"allow_rebase_merge\" : true,\n \"issue_comment_url\" : \"https://web.example.mocklab.io/343307\",\n \"labels_url\" : \"https://web.example.mocklab.io/499849\",\n \"permissions\" : {\n \"pull\" : true,\n \"maintain\" : true,\n \"admin\" : true,\n \"triage\" : true,\n \"push\" : true\n },\n \"subscribers_url\" : \"https://web.example.mocklab.io/591388\",\n \"releases_url\" : \"https://web.example.mocklab.io/277657\",\n \"svn_url\" : \"https://web.example.mocklab.io/187260\",\n \"subscribers_count\" : 2185796711011917464,\n \"id\" : 4763639371016773310,\n \"allow_merge_commit\" : false,\n \"archive_url\" : \"https://web.example.mocklab.io/295719\",\n \"git_refs_url\" : \"https://web.example.mocklab.io/096030\",\n \"forks_url\" : \"https://web.example.mocklab.io/712895\",\n \"visibility\" : \"sj42kl5dyc98i6xrq206enz\",\n \"statuses_url\" : \"https://web.example.mocklab.io/912550\",\n \"network_count\" : 1687975890772047304,\n \"ssh_url\" : \"https://web.example.mocklab.io/170369\",\n \"full_name\" : \"Dr. Kellee Pollich\",\n \"size\" : 6604945280400017213,\n \"languages_url\" : \"https://web.example.mocklab.io/323820\",\n \"clone_url\" : \"https://web.example.mocklab.io/577158\",\n \"collaborators_url\" : \"https://web.example.mocklab.io/055983\",\n \"html_url\" : \"https://web.example.mocklab.io/680187\",\n \"name\" : \"Jc Sawayn\",\n \"pulls_url\" : \"https://web.example.mocklab.io/265097\",\n \"default_branch\" : \"n2p44h0aes7vg9q2skee42v9qq30n38ssjs39ymyfcgfuw4oo0o2h6b18quc7bva08hkwn5mksyu6hx217z3qhz6hcrwsi3a316agkj9dygi1vldg7zpzmnh02z5i80tpyremaa17pemaf49bmhl3yr593td47m2brra613s8gxybseewqo\",\n \"hooks_url\" : \"https://web.example.mocklab.io/154704\",\n \"trees_url\" : \"https://web.example.mocklab.io/951339\",\n \"tags_url\" : \"https://web.example.mocklab.io/872107\",\n \"contributors_url\" : \"https://web.example.mocklab.io/412523\",\n \"private\" : true,\n \"has_downloads\" : false,\n \"notifications_url\" : \"https://web.example.mocklab.io/990641\",\n \"open_issues_count\" : 5899426004765249251,\n \"created_at\" : \"4hx91a376jbbojdzmyg9kcq4ywgdg5s4mohy79y1a8gn2lpwh4iz0yhax1slur3xem0pe4666\",\n \"description\" : \"Sint quia suscipit illum ut sunt provident. Voluptatem occaecati nesciunt. Architecto dolorum excepturi non dolor. Repudiandae a iusto cum consequatur. Et rem omnis praesentium possimus laudantium.\",\n \"deployments_url\" : \"https://web.example.mocklab.io/140021\",\n \"keys_url\" : \"https://web.example.mocklab.io/091575\",\n \"has_projects\" : true,\n \"archived\" : false,\n \"has_wiki\" : false,\n \"updated_at\" : \"2022-10-07T06:46:59.093255Z\",\n \"comments_url\" : \"https://web.example.mocklab.io/650903\",\n \"stargazers_url\" : \"https://web.example.mocklab.io/556083\",\n \"disabled\" : true,\n \"delete_branch_on_merge\" : false,\n \"git_url\" : \"https://web.example.mocklab.io/165841\",\n \"has_pages\" : true,\n \"owner\" : {\n \"gists_url\" : \"https://web.example.mocklab.io/677117\",\n \"repos_url\" : \"https://web.example.mocklab.io/988640\",\n \"following_url\" : \"https://web.example.mocklab.io/715886\",\n \"starred_url\" : \"https://web.example.mocklab.io/461353\",\n \"followers_url\" : \"https://web.example.mocklab.io/204858\",\n \"login\" : \"7vyn251o9bagd8rzbzgc6fb5lapzvnalfbysgr29egyrbjhrhgzale765awdzm3vk1g4x5fbt32tyfrpfgi4pop6pri14hn2ody9kfnxgimbnlxlsh3b45dwu\",\n \"type\" : \"8so89n3mgr03ldqcen0i648vp2q1m2nyi3dstardnyuj13c5pyw2g7z00nyerauzr4ptvkapaptibhlm2xq2nwrldqt8gvapgzutbp8oi0dv9g9ecpumlirv9dzabzog\",\n \"url\" : \"https://web.example.mocklab.io/342011\",\n \"subscriptions_url\" : \"https://web.example.mocklab.io/135227\",\n \"received_events_url\" : \"https://web.example.mocklab.io/192894\",\n \"avatar_url\" : \"https://s3.amazonaws.com/uifaces/faces/twitter/bruno_mart/128.jpg\",\n \"events_url\" : \"https://web.example.mocklab.io/748905\",\n \"html_url\" : \"https://web.example.mocklab.io/273739\",\n \"site_admin\" : true,\n \"id\" : 5696629537556149499,\n \"gravatar_id\" : \"21h8\",\n \"node_id\" : \"98v0\",\n \"organizations_url\" : \"https://web.example.mocklab.io/383874\"\n },\n \"allow_squash_merge\" : true,\n \"commits_url\" : \"https://web.example.mocklab.io/393729\",\n \"compare_url\" : \"https://web.example.mocklab.io/289377\",\n \"git_commits_url\" : \"https://web.example.mocklab.io/036022\",\n \"topics\" : [ \"1r5fd3p8zezft7zmc0eibpyxir832ql2wfsb5t5tsyax0znbuy8lrcojm7zno5wql0jvwamsdx3oyfzc03aafd6g8ki20w4spu0yewhtotp3ohdgpb7hfcziymivt51yitvtalhorwvz6nprv34mgdo7uwpzv\", \"mbmttmfg91pqbza708w0f1j1oqcfey94lakegskd5ejgfo6c7vfpw8da5hbcsfifw6ll4lv3f98l16pu096qhh2txpmu3vw80nk0er8gnbj02so8waxm5kgm2xrcm5cdxlgqdksy52ey1nmo3epy743d21he2ayw70ro90u7hs4amnc4t\", \"yef41d8k\", \"p3nl7tl7bjj4e59hv0oj8wfy7xmymzglxl5r92eobf1ik0yb06c\", \"2qsw1anx0oil41r0fabtzac5few1vlhydwhljuff51pkuyhj4rzl5cssdsq7ryclv8tqbnpp95ro2k32987w9likubd7eziqhvn8zdztasoetphqbe4eftlm8k1kwk559sjm3g7xnngyyzjtnc52y4whk6zgolyys4m92cacwec4ez4tja\", \"d512c0bqk9oai2jvrkjn5aovsbjiny0q6m292sn15p145dd632ug2zunqwqo4b0fulmqlv0qttzmlwm9mofjzx73ljand6bxrk8istibg5fris4cvk7hel01ppw3lsa5f9okwnlezh3zat5y3lck4ifb71\", \"svknqgbvq2bxc21uv4gnx74qkqccps3u5viu8f2qixh8gj0hre8c6f6st8amf2zgw46igs04x2pm7fbcvb0hdqd6f5d1chu42yi9x6lww9bjt9q6877aw4i5gbbpjvr6z1gavxy6eacj4hb8eyhwbt5ka4uypuv9vhz9\", \"l5n70j3il0blhrl2fhpqzf5q70eves34pjvtkr71j02azae2xj0yy4yt4dpi5c3s29o4b5qya3yd90uviv4wuclstyzdis4\" ],\n \"blobs_url\" : \"https://web.example.mocklab.io/975890\",\n \"git_tags_url\" : \"https://web.example.mocklab.io/962472\",\n \"merges_url\" : \"https://web.example.mocklab.io/519897\",\n \"downloads_url\" : \"https://web.example.mocklab.io/263481\",\n \"has_issues\" : false,\n \"url\" : \"https://web.example.mocklab.io/515781\",\n \"contents_url\" : \"https://web.example.mocklab.io/761781\",\n \"mirror_url\" : \"https://web.example.mocklab.io/985395\",\n \"milestones_url\" : \"https://web.example.mocklab.io/161038\",\n \"teams_url\" : \"https://web.example.mocklab.io/111561\",\n \"fork\" : true,\n \"issues_url\" : \"https://web.example.mocklab.io/049811\",\n \"events_url\" : \"https://web.example.mocklab.io/385950\",\n \"issue_events_url\" : \"https://web.example.mocklab.io/275444\",\n \"assignees_url\" : \"https://web.example.mocklab.io/833289\",\n \"watchers_count\" : 5491207404082499837,\n \"forks_count\" : 3166334752839539374,\n \"homepage\" : \"voe8vl0sfmcgk1vo2m7ven5ylzrwlfi9qj3qvk5q7mg7f5thcuvk2z\",\n \"node_id\" : \"fas9\"\n },\n \"languages_url\" : \"http://api.github.com/repos/octocat/Hello-World/languages\",\n \"clone_url\" : \"https://github.com/octocat/Hello-World.git\",\n \"collaborators_url\" : \"http://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator}\",\n \"html_url\" : \"https://github.com/octocat/Hello-World\",\n \"name\" : \"Team Environment\",\n \"pulls_url\" : \"http://api.github.com/repos/octocat/Hello-World/pulls{/number}\",\n \"default_branch\" : \"master\",\n \"hooks_url\" : \"http://api.github.com/repos/octocat/Hello-World/hooks\",\n \"trees_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/trees{/sha}\",\n \"tags_url\" : \"http://api.github.com/repos/octocat/Hello-World/tags\",\n \"contributors_url\" : \"http://api.github.com/repos/octocat/Hello-World/contributors\",\n \"private\" : true,\n \"has_downloads\" : true,\n \"notifications_url\" : \"http://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating}\",\n \"open_issues_count\" : 0,\n \"created_at\" : \"2011-01-26T19:01:12Z\",\n \"description\" : \"This your first repo!\",\n \"watchers\" : 3611799286402253109,\n \"deployments_url\" : \"http://api.github.com/repos/octocat/Hello-World/deployments\",\n \"keys_url\" : \"http://api.github.com/repos/octocat/Hello-World/keys{/key_id}\",\n \"has_projects\" : true,\n \"archived\" : false,\n \"has_wiki\" : true,\n \"updated_at\" : \"2011-01-26T19:14:43Z\",\n \"comments_url\" : \"http://api.github.com/repos/octocat/Hello-World/comments{/number}\",\n \"stargazers_url\" : \"http://api.github.com/repos/octocat/Hello-World/stargazers\",\n \"disabled\" : true,\n \"delete_branch_on_merge\" : false,\n \"git_url\" : \"git:github.com/octocat/Hello-World.git\",\n \"has_pages\" : true,\n \"owner\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Fritz Torphy\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"rugbb1lb9nfla9v3tl02kdjuluusf67sn8x2761m2hncn5znsgnmzs7bwx0k99e1nw4oe9a2dy\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"allow_squash_merge\" : true,\n \"commits_url\" : \"http://api.github.com/repos/octocat/Hello-World/commits{/sha}\",\n \"compare_url\" : \"http://api.github.com/repos/octocat/Hello-World/compare/{base}...{head}\",\n \"git_commits_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/commits{/sha}\",\n \"topics\" : [ \"7id2p2hb0j2clnpoav8v41ut\", \"dwuv7cwddlkrn\", \"4a3v658n911cm5mkea90o8h3vqnka6etipq6gdfbc2ksxr6zgarxlb6iuh4jvwm6tzc5aiml3gv66i6s38zw1uvdt34ewe3ontfm5zvlwbgzsrq4xjqb4us3p8z1g767nryv0kqi8yipgh22jx6g5d3s6zl8k3nac9tysi0p7yiy8odn9std462hcdmjn2d9z\", \"v534u2vaq2dfoy6s6dg9dmhkjculwgz9uyy729doen2rkwmwpwtirpaw0cjp5vdc882rnxmwiasfflebw1iz1b9po80hrb1x1ib6y6vvak5p44\", \"clym25gys34bopz4zgxncwv766zlt1hnrsjs3v5dm6c97761unr35r2c71qy1usnf08oc5kei2sel23pscyrft1yj34vnuosbo6pkrv9osw5c8iojgazpxern9qpeazyg\", \"yfr619rxamqgsu0l20uzathj0gyaiz8zkief5kccwnlwdton8p3kx32x7ht1z7sfov4l32unlaxuao927pfg1yx9f62wta3tuglc9z35a2pzb7z\", \"simfahxnzye10lzgpg5kedekdh9renkzvefxixgywt3m9bmae0jpbyqhr0hhtlxrlf7v8wxetn4lsvbbpgayzzdizk3rpxvk1mmyf43w5j1mq2f9s7ipu77ywdf8tlltcfkqj2jf0tmp19xicmfb4\" ],\n \"blobs_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/blobs{/sha}\",\n \"git_tags_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/tags{/sha}\",\n \"merges_url\" : \"http://api.github.com/repos/octocat/Hello-World/merges\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:42Z\\\"\",\n \"downloads_url\" : \"http://api.github.com/repos/octocat/Hello-World/downloads\",\n \"has_issues\" : true,\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World\",\n \"contents_url\" : \"http://api.github.com/repos/octocat/Hello-World/contents/{+path}\",\n \"mirror_url\" : \"git:git.example.com/octocat/Hello-World\",\n \"milestones_url\" : \"http://api.github.com/repos/octocat/Hello-World/milestones{/number}\",\n \"teams_url\" : \"http://api.github.com/repos/octocat/Hello-World/teams\",\n \"fork\" : true,\n \"issues_url\" : \"http://api.github.com/repos/octocat/Hello-World/issues{/number}\",\n \"events_url\" : \"http://api.github.com/repos/octocat/Hello-World/events\",\n \"issue_events_url\" : \"http://api.github.com/repos/octocat/Hello-World/issues/events{/number}\",\n \"organization\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Carylon Pouros\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"hee932z6m1xesd5h\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"assignees_url\" : \"http://api.github.com/repos/octocat/Hello-World/assignees{/user}\",\n \"open_issues\" : 8226800653152658239,\n \"watchers_count\" : 80,\n \"forks_count\" : 9,\n \"homepage\" : \"https://github.com\",\n \"node_id\" : \"MDEwOlJlcG9zaXRvcnkxMjk2MjY5\"\n },\n \"label\" : \"qui\",\n \"sha\" : \"nlkmiw71lgwxej3w6n7le020sns0od29ylmrev2cwc6m2n0t3b63185n3s6g69v3md9c57jckqelithfu1o45qyl58or5jt8e3nd3d05xfjdh\",\n \"user\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"tiana.wiza\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"qel8virc0dmmlah7sof0xb\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n }\n },\n \"node_id\" : \"MDExOlB1bGxSZXF1ZXN0MQ==\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "4875dffc-fefd-4151-a9ff-b994c9708fae", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.096708Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "pulls/remove-requested-reviewers", + "schema": { + "description": "Pull Request Simple", + "properties": { + "_links": { + "properties": { + "comments": { + "$ref": "#/components/schemas/link" + }, + "commits": { + "$ref": "#/components/schemas/link" + }, + "html": { + "$ref": "#/components/schemas/link" + }, + "issue": { + "$ref": "#/components/schemas/link" + }, + "review_comment": { + "$ref": "#/components/schemas/link" + }, + "review_comments": { + "$ref": "#/components/schemas/link" + }, + "self": { + "$ref": "#/components/schemas/link" + }, + "statuses": { + "$ref": "#/components/schemas/link" + } + }, + "required": [ + "comments", + "commits", + "statuses", + "html", + "issue", + "review_comments", + "review_comment", + "self" + ], + "type": "object" + }, + "active_lock_reason": { + "example": "too heated", + "nullable": true, + "type": "string" + }, + "assignee": { + "$ref": "#/components/schemas/nullable-simple-user" + }, + "assignees": { + "items": { + "$ref": "#/components/schemas/simple-user" + }, + "nullable": true, + "type": "array" + }, + "author_association": { + "$ref": "#/components/schemas/author_association" + }, + "base": { + "properties": { + "label": { + "type": "string" + }, + "ref": { + "type": "string" + }, + "repo": { + "$ref": "#/components/schemas/repository" + }, + "sha": { + "type": "string" + }, + "user": { + "$ref": "#/components/schemas/nullable-simple-user" + } + }, + "required": ["label", "ref", "repo", "sha", "user"], + "type": "object" + }, + "body": { + "example": "Please pull these awesome changes", + "nullable": true, + "type": "string" + }, + "closed_at": { + "example": "2011-01-26T19:01:12Z", + "format": "date-time", + "nullable": true, + "type": "string" + }, + "comments_url": { + "example": "https://api.github.com/repos/octocat/Hello-World/issues/1347/comments", + "format": "uri", + "type": "string" + }, + "commits_url": { + "example": "https://api.github.com/repos/octocat/Hello-World/pulls/1347/commits", + "format": "uri", + "type": "string" + }, + "created_at": { + "example": "2011-01-26T19:01:12Z", + "format": "date-time", + "type": "string" + }, + "diff_url": { + "example": "https://github.com/octocat/Hello-World/pull/1347.diff", + "format": "uri", + "type": "string" + }, + "draft": { + "description": "Indicates whether or not the pull request is a draft.", + "example": false, + "type": "boolean" + }, + "head": { + "properties": { + "label": { + "type": "string" + }, + "ref": { + "type": "string" + }, + "repo": { + "$ref": "#/components/schemas/repository" + }, + "sha": { + "type": "string" + }, + "user": { + "$ref": "#/components/schemas/nullable-simple-user" + } + }, + "required": ["label", "ref", "repo", "sha", "user"], + "type": "object" + }, + "html_url": { + "example": "https://github.com/octocat/Hello-World/pull/1347", + "format": "uri", + "type": "string" + }, + "id": { + "example": 1, + "type": "integer" + }, + "issue_url": { + "example": "https://api.github.com/repos/octocat/Hello-World/issues/1347", + "format": "uri", + "type": "string" + }, + "labels": { + "items": { + "properties": { + "color": { + "type": "string" + }, + "default": { + "type": "boolean" + }, + "description": { + "type": "string" + }, + "id": { + "format": "int64", + "type": "integer" + }, + "name": { + "type": "string" + }, + "node_id": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "locked": { + "example": true, + "type": "boolean" + }, + "merge_commit_sha": { + "example": "e5bd3914e2e596debea16f433f57875b5b90bcd6", + "nullable": true, + "type": "string" + }, + "merged_at": { + "example": "2011-01-26T19:01:12Z", + "format": "date-time", + "nullable": true, + "type": "string" + }, + "milestone": { + "$ref": "#/components/schemas/nullable-milestone" + }, + "node_id": { + "example": "MDExOlB1bGxSZXF1ZXN0MQ==", + "type": "string" + }, + "number": { + "example": 1347, + "type": "integer" + }, + "patch_url": { + "example": "https://github.com/octocat/Hello-World/pull/1347.patch", + "format": "uri", + "type": "string" + }, + "requested_reviewers": { + "items": { + "$ref": "#/components/schemas/simple-user" + }, + "nullable": true, + "type": "array" + }, + "requested_teams": { + "items": { + "$ref": "#/components/schemas/team" + }, + "nullable": true, + "type": "array" + }, + "review_comment_url": { + "example": "https://api.github.com/repos/octocat/Hello-World/pulls/comments{/number}", + "type": "string" + }, + "review_comments_url": { + "example": "https://api.github.com/repos/octocat/Hello-World/pulls/1347/comments", + "format": "uri", + "type": "string" + }, + "state": { + "example": "open", + "type": "string" + }, + "statuses_url": { + "example": "https://api.github.com/repos/octocat/Hello-World/statuses/6dcb09b5b57875f334f61aebed695e2e4193db5e", + "format": "uri", + "type": "string" + }, + "title": { + "example": "new-feature", + "type": "string" + }, + "updated_at": { + "example": "2011-01-26T19:01:12Z", + "format": "date-time", + "type": "string" + }, + "url": { + "example": "https://api.github.com/repos/octocat/Hello-World/pulls/1347", + "format": "uri", + "type": "string" + }, + "user": { + "$ref": "#/components/schemas/nullable-simple-user" + } + }, + "required": [ + "_links", + "assignee", + "labels", + "base", + "body", + "closed_at", + "comments_url", + "commits_url", + "created_at", + "diff_url", + "head", + "html_url", + "id", + "node_id", + "issue_url", + "merge_commit_sha", + "merged_at", + "milestone", + "number", + "patch_url", + "review_comment_url", + "review_comments_url", + "statuses_url", + "state", + "locked", + "title", + "updated_at", + "url", + "user", + "author_association" + ], + "title": "Pull Request Simple", + "type": "object" + } + } + } + }, + "insertionIndex": 435 + }, + { + "id": "94615dc0-ad65-41f6-8a03-4d0fecb4931e", + "name": "Merge a pull request", + "request": { + "urlPath": "/repos/fyovxgdk3oznkeyymbl3tn9yyeow9iewdcfd5mx9okth70wsrlgiufwjeim6hrhh54yisk0n4kfu0r75zjvmnx5ffm2sll5aeesh4475jn9jx3j3zm494enl007sbq96umwqjsydg0rv5qvnzx66aivvb3zivern3sgy/uti2om57iobqpisk/pulls/6635590117236549442/merge", + "method": "PUT" + }, + "response": { + "status": 422, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/524239\",\n \"message\" : \"Omnis est asperiores qui nihil. Quia et at quae. Labore vel et maiores odit consequuntur. Velit omnis explicabo.\",\n \"errors\" : [ {\n \"code\" : \"ejbr0kpp\",\n \"field\" : \"nm8cw465wjkdv1rr3f0jxtr74j5hizfkp58v6w4kj0k64m2sc1ajdw3yf9vsdxl73rhgz8v8cwemlncufya2q6qkhglpqagts5e81lzcsm1p8h8u7ryi1ews9rf3yjenka4tutkppoyq3lmjw4b\",\n \"resource\" : \"iv6arwk4upc1cyv71ytr18ia1yx85917t7wnelekhx6xjx4xs73ca0ubhsm1pvatkqspyhcivmb39kicnlhgb2rmz88lewf7q4d0p2qoaunvug66143mj2vh02bpsge9f6kj5y1oe7ufqdmdbtcvsndzbn6g3fp3obtqzmnhtlfidfozjr\",\n \"index\" : 2217834512367808871,\n \"message\" : \"Corrupti quas nihil quia recusandae sit et tenetur. Blanditiis eum occaecati modi vel molestiae nostrum. Tempora in voluptatum eius nam. Provident ut qui et est voluptatem. Quia et voluptatibus quia c\",\n \"value\" : { }\n }, {\n \"code\" : \"4xixlpxkgsjkkep8flhl0iq747lr7ylolk3gz8xbl3p45nys1gzg5znz0re4jqmi99apu402i0hj8vsloy0vqv6of2rmnrep9d24utne3z0t6e2hs7o6v2zdftsdj0wbyjfocoyx3fkm2i9852\",\n \"field\" : \"p3bhno3ze9ei1oarsl2jvhiztx4vpopqbjnt2dcyeyvtnltdq110yml4ut7sa21gpnat7eyw7w4gccuswe93itksmlk6zv\",\n \"resource\" : \"7u3o8k9q0jio3g4na89w8vbbe2qme2adwzp4e1m3s3kmc6iqt\",\n \"index\" : 2393800332295484772,\n \"message\" : \"Eaque velit quia voluptatem repellendus iusto. Nostrum dolores et blanditiis eaque eligendi id. Voluptatibus laudantium quidem nemo ullam aut nostrum. Voluptatem culpa consequatur omnis saepe labore v\",\n \"value\" : { }\n } ]\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "94615dc0-ad65-41f6-8a03-4d0fecb4931e", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.08043Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "pulls/merge", + "schema": { + "description": "Validation Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "errors": { + "items": { + "properties": { + "code": { + "type": "string" + }, + "field": { + "type": "string" + }, + "index": { + "type": "integer" + }, + "message": { + "type": "string" + }, + "resource": { + "type": "string" + }, + "value": { + "oneOf": [ + { + "nullable": true, + "type": "string" + }, + { + "nullable": true, + "type": "integer" + }, + { + "items": { + "type": "string" + }, + "nullable": true, + "type": "array" + } + ] + } + }, + "required": ["code"], + "type": "object" + }, + "type": "array" + }, + "message": { + "type": "string" + } + }, + "required": ["message", "documentation_url"], + "title": "Validation Error", + "type": "object" + } + } + } + }, + "insertionIndex": 436 + }, + { + "id": "58630a7a-f8ba-41d2-8808-82610498d7f7", + "name": "Merge a pull request - response-if-sha-was-provided-and-pull-request-head-did-not-match", + "request": { + "urlPath": "/repos/5ehk0hpjqm9irr0x2t0a1hg1b2pd80861n1t/4avwt7iko0iml87wytit7n28rw12cocvmanwpxwn6paetuelocduripqb8rapjetiw399iceiufi5wzj27ewcikrzajktxs6211a5qexfi38xfr86fo8unaq8yxazyjy0tjvf1p1n2kqqyy11rbf2tffs7uqggn6qvgk2k6q/pulls/912578455834659413/merge", + "method": "PUT" + }, + "response": { + "status": 409, + "body": "{\n \"message\" : \"Head branch was modified. Review and try the merge again.\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "58630a7a-f8ba-41d2-8808-82610498d7f7", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.079975Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "pulls/merge", + "schema": { + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "type": "object" + } + } + } + }, + "insertionIndex": 437 + }, + { + "id": "f6cb1d23-36eb-4746-ac71-99cb79d041e3", + "name": "Merge a pull request - response-if-merge-cannot-be-performed", + "request": { + "urlPath": "/repos/w23fvwkn2udhouosqjb1uf7yk7uxpspltb93iqa0rebqntthqxvvr735ke/zk5etqunm2f5kkpvbsw71rhmootiwy6zvzw722po3bro8bzt3ncrhs9dvpt4ur40zv6im78jt5zycrnpd81uixtlihmf58fxja7f1c9wloz6wpx0hrzpk4fhwxw/pulls/298347612757668944/merge", + "method": "PUT" + }, + "response": { + "status": 405, + "body": "{\n \"message\" : \"Pull Request is not mergeable\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "f6cb1d23-36eb-4746-ac71-99cb79d041e3", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.079911Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "pulls/merge", + "schema": { + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "type": "object" + } + } + } + }, + "insertionIndex": 438 + }, + { + "id": "ae148aee-c3c9-4d30-a10f-c6d1930d7863", + "name": "Merge a pull request", + "request": { + "urlPath": "/repos/m6h62vpj7ks02eqs61jgjtagy77gbe0je564j9axt1613mnnfiepn18rk2hgp01gt024joqv/dc0ysetljrrve4qnrfnf9tp40t1hshznom06u12xt0niyx2jbt2bhydiybu5t09zayog2k6v31r34yl4ldwgqze9mvnkuwbtwx/pulls/764836490680777072/merge", + "method": "PUT" + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/423094\",\n \"message\" : \"Enim aperiam delectus a voluptatum voluptas quisquam illum. Qui et dolor. Recusandae error sapiente. Est laborum qui. Nulla molestias ab distinctio in est.\",\n \"url\" : \"https://web.example.mocklab.io/012739\",\n \"status\" : \"t6r2dgteu9dvxfqgm12ypkgtzherbixm4khnurcchm89t36jxfz6nbxth65523dvwjdre4oyblp0t5nfnwb4v69bgniy1c03hzjsrlx0zh68z2yc1nfv1nfn3wnyr5r79zv4zglna751a8ejnt7l5kbmff9xo61pujccwbzq7a3eyln7oh\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "ae148aee-c3c9-4d30-a10f-c6d1930d7863", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.079833Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "pulls/merge", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 439 + }, + { + "id": "0d6e28b9-bf01-4b87-b0d0-db55dca7d8d7", + "name": "Merge a pull request", + "request": { + "urlPath": "/repos/024wmhhw1kuq4bfbeespcgfu1z9qmhp0n5y4tpe0gkspclbcnac6hmhp9elhujkc/1359xsod4zzsq24cd5vi2hfr58jm2s6a2lagntm81ht/pulls/357945687217738362/merge", + "method": "PUT" + }, + "response": { + "status": 403, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/719389\",\n \"message\" : \"Nihil quia commodi earum aut minima et ipsa. Consequatur est voluptatem id distinctio occaecati et rem. Mollitia vel molestiae quae eaque et non.\",\n \"url\" : \"https://web.example.mocklab.io/687855\",\n \"status\" : \"78n4p41puvavbklr8mq53lj0kioi3l5jwu273x7in7f5cykap1hxemeib1hyma2ruai8nv5i0eyt4zc3i0iw07t6q6m7lkf1mie\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "0d6e28b9-bf01-4b87-b0d0-db55dca7d8d7", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.079498Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "pulls/merge", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 440 + }, + { + "id": "b17ad1f9-a247-4598-a7b7-2ecb3cdb5836", + "name": "Merge a pull request - response-if-merge-was-successful", + "request": { + "urlPath": "/repos/a77zpirusqj2axlpo9q6wusdickvrqosp3sviq1z49s5xu555f3ip8bgl7ahv0lhq7cbs8z3nlj9bz4cybdnubcglu11vwcwgrt31wfg4iqq8i/6sh9wqeno6z41lobsx6ghz31067kupudqlnn90vriekwsqdrlnr7amom5vgyj3uayvztyki58c2q7y1m9fl0r7fpt/pulls/4513711178365435504/merge", + "method": "PUT" + }, + "response": { + "status": 200, + "body": "{\n \"merged\" : true,\n \"message\" : \"Pull Request successfully merged\",\n \"sha\" : \"6dcb09b5b57875f334f61aebed695e2e4193db5e\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "b17ad1f9-a247-4598-a7b7-2ecb3cdb5836", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.079268Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "pulls/merge", + "schema": { + "description": "Pull Request Merge Result", + "properties": { + "merged": { + "type": "boolean" + }, + "message": { + "type": "string" + }, + "sha": { + "type": "string" + } + }, + "required": ["merged", "message", "sha"], + "title": "Pull Request Merge Result", + "type": "object" + } + } + } + }, + "insertionIndex": 441 + }, + { + "id": "d98d64d5-e9e7-4177-ba28-62bfaeb81bb2", + "name": "Check if a pull request has been merged - 404", + "request": { + "urlPath": "/repos/7h7cumvs6dtv648fish4z16kwktsqvczt136k7a0gz5pefm7qixcfsw7b3qtprvo3y9kn4o2qzx7zb993nyhdszdlmxsi0n9c8mlex6udt4wu0sapngjl50za5qej8mzpi2l/qynmqlw8ew7uzl57pu6239rx3cl0ps/pulls/7746910019481199769/merge", + "method": "GET" + }, + "response": { + "status": 404 + }, + "uuid": "d98d64d5-e9e7-4177-ba28-62bfaeb81bb2", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.079195Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "pulls/check-if-merged" + } + } + }, + "insertionIndex": 442 + }, + { + "id": "72bf319f-74bf-46cd-a877-2158cf4947cf", + "name": "Check if a pull request has been merged - 204", + "request": { + "urlPath": "/repos/4hiw7pq4ivf01tmucsy0psywhrz5u5w6qubi4tuo48b6tweefstekijpsqap8gmoz5y8sh5ox13qis7dnjl2fyhspeitpi21ba3n4rjmjdh30ybgckh9xu33wn8hkt7pumbi8l3c4cfy2y30uw5un8roxq3wazf20gcurtfdq7keo3f81lli/s2dr720qwen61icrtc6g36jv0ixdmtno98lzu8tloiy6affjoimlyxfmndb00j/pulls/300024198074255847/merge", + "method": "GET" + }, + "response": { + "status": 204 + }, + "uuid": "72bf319f-74bf-46cd-a877-2158cf4947cf", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.079157Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "pulls/check-if-merged" + } + } + }, + "insertionIndex": 443 + }, + { + "id": "bf070b21-60be-4cf6-bba1-f41735601445", + "name": "List pull requests files", + "request": { + "urlPath": "/repos/4gnr31a1jg4kjfyzw5q18yru09fmomd945em4e71lm1jzqayy3c217mw8kc697w82zsepre6/74fv9fs52wpc9vvil8s3gzdajdk18wzkhyus1prwd71ll9y8kqbpami02pmv5zcmyyxrbuxi5hih4adnxd7et9wnb3fy77i24k8vregzxb0omv4w0wa3km7an2rl6u2as9n6a5n9qhrif1ytkgm4zwitynqainv8p/pulls/1310412810970232824/files", + "method": "GET" + }, + "response": { + "status": 500, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/328748\",\n \"message\" : \"Explicabo porro et quia minima. Ut deleniti laborum repudiandae dolore ea possimus sed. Officia molestiae quis accusantium natus.\",\n \"url\" : \"https://web.example.mocklab.io/136587\",\n \"status\" : \"7bkhtqoajn5r5yk7fye8b68rf7w25n1u40h6ezetr1tlevgol78zjbbi2dtichwz0a63ilixvtsrywf6xv1vojmcpgpp4s1wh5nkwpimx7cr2njr\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "bf070b21-60be-4cf6-bba1-f41735601445", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.079111Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "pulls/list-files", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 444 + }, + { + "id": "cbf15db3-81e3-4d31-9c40-e6bbea3aa447", + "name": "List pull requests files", + "request": { + "urlPath": "/repos/rvdafu994tuugf9t4ddw42dbaudnntax9ctvgzoeoisq327ph6xsz03oaekb2qfqfbbt8le31xl8ryhwzcuh9oxidqgob7r97g7nfguri0ign0isiqziw6g8xlq8zogaygiqr4ha67d/vlzt3z6vmn8sdbd0w6xxpvsjcjx2zdimty2ooue5jxtkppydtloxsjeay05b40bxy929d0efj63gk2ckq9ly581neuozhxuwta23rpl93zoxxzuv4tx11e5nj2uaarcx6lq0iw7fmvuf7kromt0tlgqclepfjfv2ej0cv7/pulls/7182772027135535944/files", + "method": "GET" + }, + "response": { + "status": 422, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/010398\",\n \"message\" : \"Molestiae dolores cupiditate laudantium quis est labore sit. Nihil et id recusandae eligendi occaecati quia. Molestiae cum error repudiandae sed quos. Nostrum nihil maiores. Ea a aliquam.\",\n \"errors\" : [ {\n \"code\" : \"5mtfsx\",\n \"field\" : \"023zdy1f\",\n \"resource\" : \"88d1cm2u0ifnc7aqpw4y39kffgekjwhfjs2ujg7ufwhd62bf4\",\n \"index\" : 8069432892131723187,\n \"message\" : \"Iusto iure et dolor dolore velit aspernatur. Quos vero iusto. Cum voluptas iste doloribus deserunt ducimus voluptates quis.\",\n \"value\" : { }\n }, {\n \"code\" : \"yz9tddq667jf3z3961mfe8uwesxlqzlwumt41fj07bnujijcxogxogu6g0ohacn8d0tj59ik7c7jtyrewkjnkq2cngy5qord5jhk2g81mq03cbrivyxof3v231ghys4ew5husnloshn1diehil9rsh8bsu81hve30jawumkkdh6gvqt6cfnizey4amc5f5\",\n \"field\" : \"69qb0lj\",\n \"resource\" : \"ahjk5llpvud365crbd0soz72c0h7n6vdmfjjnnrgidlqaec6nnygildn8ah5ptvuv75afqmo37pg7xuxn5j25dns5c5u4g98rvf8pc\",\n \"index\" : 1698997499931021298,\n \"message\" : \"Amet aut dignissimos. Id nesciunt odio magni qui. Explicabo cupiditate sint iure repellendus. Saepe hic omnis consequatur autem ea in. Qui veritatis cupiditate repellat quo corrupti error.\",\n \"value\" : { }\n } ]\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "cbf15db3-81e3-4d31-9c40-e6bbea3aa447", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.078866Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "pulls/list-files", + "schema": { + "description": "Validation Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "errors": { + "items": { + "properties": { + "code": { + "type": "string" + }, + "field": { + "type": "string" + }, + "index": { + "type": "integer" + }, + "message": { + "type": "string" + }, + "resource": { + "type": "string" + }, + "value": { + "oneOf": [ + { + "nullable": true, + "type": "string" + }, + { + "nullable": true, + "type": "integer" + }, + { + "items": { + "type": "string" + }, + "nullable": true, + "type": "array" + } + ] + } + }, + "required": ["code"], + "type": "object" + }, + "type": "array" + }, + "message": { + "type": "string" + } + }, + "required": ["message", "documentation_url"], + "title": "Validation Error", + "type": "object" + } + } + } + }, + "insertionIndex": 445 + }, + { + "id": "e2bf5eae-d0ce-472c-a1bb-5d6e1dccfb68", + "name": "List pull requests files - default", + "request": { + "urlPath": "/repos/tadeiddmehggus41atojsybof1g7mowqtzcncj293enmuqbi7l5b1pt8zwzpqv2tox7rs5xrogr9xdtrt27odru2mf5xwbxqjbpaaoqp5s7/wvhmwbk0snaojp10pij2e29qds35bb9j9n4fv3rw395wydkx2wb4qn9pujr6ao4/pulls/6018293462478597664/files", + "method": "GET" + }, + "response": { + "status": 200, + "body": "[ {\n \"additions\" : 103,\n \"blob_url\" : \"https://github.com/octocat/Hello-World/blob/6dcb09b5b57875f334f61aebed695e2e4193db5e/file1.txt\",\n \"changes\" : 124,\n \"contents_url\" : \"https://api.github.com/repos/octocat/Hello-World/contents/file1.txt?ref=6dcb09b5b57875f334f61aebed695e2e4193db5e\",\n \"deletions\" : 21,\n \"filename\" : \"file1.txt\",\n \"patch\" : \"@@ -132,7 +132,7 @@ module Test @@ -1000,7 +1000,7 @@ module Test\",\n \"raw_url\" : \"https://github.com/octocat/Hello-World/raw/6dcb09b5b57875f334f61aebed695e2e4193db5e/file1.txt\",\n \"sha\" : \"bbcd538c8e72b8c175046e27cc8f907076331401\",\n \"status\" : \"added\"\n} ]", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "e2bf5eae-d0ce-472c-a1bb-5d6e1dccfb68", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.078472Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "pulls/list-files", + "schema": { + "items": { + "$ref": "#/components/schemas/diff-entry" + }, + "type": "array" + } + } + } + }, + "insertionIndex": 446 + }, + { + "id": "51dfd334-97c9-4b9f-a1a8-50ba47c56701", + "name": "List commits on a pull request - default", + "request": { + "urlPath": "/repos/57b6xxp6fq96ixosu0zd4r1rsmp2w1g/cfhpzzn4sq4siqhaox6w8xgdo4xmafli8alxqf3t17ge/pulls/6225477696381556056/commits", + "method": "GET" + }, + "response": { + "status": 200, + "body": "[ {\n \"author\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"comments_url\" : \"https://api.github.com/repos/octocat/Hello-World/commits/6dcb09b5b57875f334f61aebed695e2e4193db5e/comments\",\n \"commit\" : {\n \"author\" : {\n \"date\" : \"2011-04-14T16:00:49Z\",\n \"email\" : \"support@github.com\",\n \"name\" : \"Monalisa Octocat\"\n },\n \"comment_count\" : 0,\n \"committer\" : {\n \"date\" : \"2011-04-14T16:00:49Z\",\n \"email\" : \"support@github.com\",\n \"name\" : \"Monalisa Octocat\"\n },\n \"message\" : \"Fix all the bugs\",\n \"tree\" : {\n \"sha\" : \"6dcb09b5b57875f334f61aebed695e2e4193db5e\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/tree/6dcb09b5b57875f334f61aebed695e2e4193db5e\"\n },\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/git/commits/6dcb09b5b57875f334f61aebed695e2e4193db5e\",\n \"verification\" : {\n \"reason\" : \"unsigned\",\n \"verified\" : false\n }\n },\n \"committer\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"html_url\" : \"https://github.com/octocat/Hello-World/commit/6dcb09b5b57875f334f61aebed695e2e4193db5e\",\n \"node_id\" : \"MDY6Q29tbWl0NmRjYjA5YjViNTc4NzVmMzM0ZjYxYWViZWQ2OTVlMmU0MTkzZGI1ZQ==\",\n \"parents\" : [ {\n \"sha\" : \"6dcb09b5b57875f334f61aebed695e2e4193db5e\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/commits/6dcb09b5b57875f334f61aebed695e2e4193db5e\"\n } ],\n \"sha\" : \"6dcb09b5b57875f334f61aebed695e2e4193db5e\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/commits/6dcb09b5b57875f334f61aebed695e2e4193db5e\"\n} ]", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "51dfd334-97c9-4b9f-a1a8-50ba47c56701", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.078418Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "pulls/list-commits", + "schema": { + "items": { + "$ref": "#/components/schemas/commit" + }, + "type": "array" + } + } + } + }, + "insertionIndex": 447 + }, + { + "id": "c6cbe988-6a7b-48f0-bbec-04c79decf4eb", + "name": "Create a reply for a review comment", + "request": { + "urlPath": "/repos/ebk1vk/dfa2009rowy7vcwgqob1yfcrr59lajtw1sefveksmvbkr0j2018ku3sxou77cai5v61hkwchiw1vkw7nbpudms7hdw5k08/pulls/8772354668770056948/comments/971084689519865101/replies", + "method": "POST" + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/581129\",\n \"message\" : \"Nisi incidunt omnis adipisci amet beatae aut. Neque consequatur ipsa quos dolorem id pariatur. Fugit est sed laudantium vitae quam iste voluptate. Aliquam doloribus consequatur quasi maiores.\",\n \"url\" : \"https://web.example.mocklab.io/124016\",\n \"status\" : \"vbmmchoalnfroitfdffqz5ddqe5aczfakzhzlg7nvm\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "c6cbe988-6a7b-48f0-bbec-04c79decf4eb", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.078354Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "pulls/create-reply-for-review-comment", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 448 + }, + { + "id": "a7b44432-76b4-4809-8ec2-cdf6a920cc75", + "name": "Create a reply for a review comment - default", + "request": { + "urlPath": "/repos/yfe9pss/bevfnfd6/pulls/9108399195143334195/comments/1219434079757741832/replies", + "method": "POST" + }, + "response": { + "status": 201, + "body": "{\n \"_links\" : {\n \"html\" : {\n \"href\" : \"https://github.com/octocat/Hello-World/pull/1#discussion-diff-1\"\n },\n \"pull_request\" : {\n \"href\" : \"https://api.github.com/repos/octocat/Hello-World/pulls/1\"\n },\n \"self\" : {\n \"href\" : \"https://api.github.com/repos/octocat/Hello-World/pulls/comments/1\"\n }\n },\n \"author_association\" : \"NONE\",\n \"body\" : \"Great stuff!\",\n \"commit_id\" : \"6dcb09b5b57875f334f61aebed695e2e4193db5e\",\n \"created_at\" : \"2011-04-14T16:00:49Z\",\n \"diff_hunk\" : \"@@ -16,33 +16,40 @@ public class Connection : IConnection...\",\n \"html_url\" : \"https://github.com/octocat/Hello-World/pull/1#discussion-diff-1\",\n \"id\" : 10,\n \"in_reply_to_id\" : 426899381,\n \"line\" : 2,\n \"node_id\" : \"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDEw\",\n \"original_commit_id\" : \"9c48853fa3dc5c1c3d6f1f1cd1f2743e72652840\",\n \"original_line\" : 2,\n \"original_position\" : 4,\n \"original_start_line\" : 1,\n \"path\" : \"file1.txt\",\n \"position\" : 1,\n \"pull_request_review_id\" : 42,\n \"pull_request_url\" : \"https://api.github.com/repos/octocat/Hello-World/pulls/1\",\n \"side\" : \"RIGHT\",\n \"start_line\" : 1,\n \"start_side\" : \"RIGHT\",\n \"updated_at\" : \"2011-04-14T16:00:49Z\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/pulls/comments/1\",\n \"user\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n }\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "a7b44432-76b4-4809-8ec2-cdf6a920cc75", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.078086Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "pulls/create-reply-for-review-comment", + "schema": { + "description": "Pull Request Review Comments are comments on a portion of the Pull Request's diff.", + "properties": { + "_links": { + "properties": { + "html": { + "properties": { + "href": { + "example": "https://github.com/octocat/Hello-World/pull/1#discussion-diff-1", + "format": "uri", + "type": "string" + } + }, + "required": ["href"], + "type": "object" + }, + "pull_request": { + "properties": { + "href": { + "example": "https://api.github.com/repos/octocat/Hello-World/pulls/1", + "format": "uri", + "type": "string" + } + }, + "required": ["href"], + "type": "object" + }, + "self": { + "properties": { + "href": { + "example": "https://api.github.com/repos/octocat/Hello-World/pulls/comments/1", + "format": "uri", + "type": "string" + } + }, + "required": ["href"], + "type": "object" + } + }, + "required": ["self", "html", "pull_request"], + "type": "object" + }, + "author_association": { + "$ref": "#/components/schemas/author_association" + }, + "body": { + "description": "The text of the comment.", + "example": "We should probably include a check for null values here.", + "type": "string" + }, + "body_html": { + "example": "\"

comment body

\"", + "type": "string" + }, + "body_text": { + "example": "\"comment body\"", + "type": "string" + }, + "commit_id": { + "description": "The SHA of the commit to which the comment applies.", + "example": "6dcb09b5b57875f334f61aebed695e2e4193db5e", + "type": "string" + }, + "created_at": { + "example": "2011-04-14T16:00:49Z", + "format": "date-time", + "type": "string" + }, + "diff_hunk": { + "description": "The diff of the line that the comment refers to.", + "example": "@@ -16,33 +16,40 @@ public class Connection : IConnection...", + "type": "string" + }, + "html_url": { + "description": "HTML URL for the pull request review comment.", + "example": "https://github.com/octocat/Hello-World/pull/1#discussion-diff-1", + "format": "uri", + "type": "string" + }, + "id": { + "description": "The ID of the pull request review comment.", + "example": 1, + "type": "integer" + }, + "in_reply_to_id": { + "description": "The comment ID to reply to.", + "example": 8, + "type": "integer" + }, + "line": { + "description": "The line of the blob to which the comment applies. The last line of the range for a multi-line comment", + "example": 2, + "type": "integer" + }, + "node_id": { + "description": "The node ID of the pull request review comment.", + "example": "MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDEw", + "type": "string" + }, + "original_commit_id": { + "description": "The SHA of the original commit to which the comment applies.", + "example": "9c48853fa3dc5c1c3d6f1f1cd1f2743e72652840", + "type": "string" + }, + "original_line": { + "description": "The line of the blob to which the comment applies. The last line of the range for a multi-line comment", + "example": 2, + "type": "integer" + }, + "original_position": { + "description": "The index of the original line in the diff to which the comment applies.", + "example": 4, + "type": "integer" + }, + "original_start_line": { + "description": "The first line of the range for a multi-line comment.", + "example": 2, + "nullable": true, + "type": "integer" + }, + "path": { + "description": "The relative path of the file to which the comment applies.", + "example": "config/database.yaml", + "type": "string" + }, + "position": { + "description": "The line index in the diff to which the comment applies.", + "example": 1, + "type": "integer" + }, + "pull_request_review_id": { + "description": "The ID of the pull request review to which the comment belongs.", + "example": 42, + "nullable": true, + "type": "integer" + }, + "pull_request_url": { + "description": "URL for the pull request that the review comment belongs to.", + "example": "https://api.github.com/repos/octocat/Hello-World/pulls/1", + "format": "uri", + "type": "string" + }, + "reactions": { + "$ref": "#/components/schemas/reaction-rollup" + }, + "side": { + "default": "RIGHT", + "description": "The side of the diff to which the comment applies. The side of the last line of the range for a multi-line comment", + "enum": ["LEFT", "RIGHT"], + "type": "string" + }, + "start_line": { + "description": "The first line of the range for a multi-line comment.", + "example": 2, + "nullable": true, + "type": "integer" + }, + "start_side": { + "default": "RIGHT", + "description": "The side of the first line of the range for a multi-line comment.", + "enum": ["LEFT", "RIGHT"], + "nullable": true, + "type": "string" + }, + "updated_at": { + "example": "2011-04-14T16:00:49Z", + "format": "date-time", + "type": "string" + }, + "url": { + "description": "URL for the pull request review comment", + "example": "https://api.github.com/repos/octocat/Hello-World/pulls/comments/1", + "type": "string" + }, + "user": { + "$ref": "#/components/schemas/simple-user" + } + }, + "required": [ + "url", + "id", + "node_id", + "pull_request_review_id", + "diff_hunk", + "path", + "position", + "original_position", + "commit_id", + "original_commit_id", + "user", + "body", + "created_at", + "updated_at", + "html_url", + "pull_request_url", + "author_association", + "_links" + ], + "title": "Pull Request Review Comment", + "type": "object" + } + } + } + }, + "insertionIndex": 449 + }, + { + "id": "af836ce2-d06e-4c34-a2ca-c1269c998960", + "name": "Create a review comment for a pull request", + "request": { + "urlPath": "/repos/atyoud05jztbzr88kv0aktsu8kk3zdqo9o7bwblvzrkleb07n6iiexdulx1syjbj1bzgeild9086iyy8weup65vs4yd1452at5fjqvyo/rnrfuexrbrl74/pulls/8490104949102525074/comments", + "method": "POST" + }, + "response": { + "status": 422, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/976161\",\n \"message\" : \"Omnis esse quis odit dolor harum culpa nobis. Qui debitis voluptas voluptas repellat quas nisi qui. Numquam eius quibusdam molestias animi amet. Cumque deleniti sed. Sunt occaecati et est.\",\n \"errors\" : [ {\n \"code\" : \"mtub16m87m07y1ykbhb8ynfmtrhayxnb4z0qfv2worz8dk\",\n \"field\" : \"3w4g718hu45p385eu7a2oaq5280wof6c2gi7vtkyomusl233akp1ji66y5j9dv019vc60jttw3b9l1m4dl3igd04zr4yt7xbxjyqr09iubmiriq8feu54q0iiitlyy\",\n \"resource\" : \"d1ucyz2xr0c3e5uq6zlxioinqmy60waze30o79ruvl5vb2gtetqi7e6bsjw0glpmxqp8d4iz0nqgrwc1blkxvml6sb155i0jg056hbv4winixo0tovwdb9\",\n \"index\" : 2280373286468323838,\n \"message\" : \"Eum impedit labore dolor iste. Eligendi ratione autem autem. Ut qui nihil quibusdam quae numquam non molestias. Perspiciatis et praesentium.\",\n \"value\" : { }\n }, {\n \"code\" : \"5pjopsx948vgdxvwjtiyfe1d9ru25876dobfyxq01ngtja5ip64wet2easen04o1gcnewfkjq39eode8jlb40byg8whuobxrbnq4klwence3btxfq24lubnwhf6r09w14nt9qg6wt6k1p307nd2wkmkukl1693ccxe7ehseiq16juyuso25z\",\n \"field\" : \"hud5sef66b08fnwf131fbwcpu2i4wax9lpu46dkny5i8shr\",\n \"resource\" : \"457d9ulb03r8n56uwfbxwbwuv4r4k89ckuadj5fr7b0rz4ickn62yzpth4nm91x5h2j9tg3ps0hla90aatmbgewfmo98cvivq3eo6v4h7\",\n \"index\" : 4147611928375925941,\n \"message\" : \"Eligendi accusantium voluptates temporibus dolor eveniet id. Deserunt voluptas architecto est pariatur facere architecto id. Deleniti rerum ut minus dicta molestiae excepturi. Quia amet ut officiis te\",\n \"value\" : { }\n }, {\n \"code\" : \"jwn463fmkcv7ghoxjv30csxbxs7ojsbb6mzby2kzah6jb4j9341ktgmn2drn69dy9rxuscu1j7sg2cgkl6jbt25tlc4xmxidz44hof3haldsk9dlta5oe66anummq3l5xk5tett5cj8p0i0cifi0ezdybyorc98g\",\n \"field\" : \"inzagkm9f078e3fl0u4hvp27nksud0qru583fub7m5st68fht1hu67krbexpuh06wue8nm0mkffgpw85t1cdhdehwhyxnyjofi5z273ow1np2nsukqzs56vodmfsmrpp8wgn6d3dr\",\n \"resource\" : \"5la2oohq5146mwz9zhussqafd8j4s9\",\n \"index\" : 8794254349656740371,\n \"message\" : \"Ut sit eaque mollitia voluptatem illo iusto blanditiis. Illum quod temporibus vero voluptate ut debitis. Non quos cupiditate ut velit ratione non. Rerum commodi consequatur adipisci. Dolores in ad in \",\n \"value\" : { }\n }, {\n \"code\" : \"0xwljjoj2\",\n \"field\" : \"wq504ggsh6aictlths2oeb1b25i4zacrljrqpdhb2cxw01u8ver0as7pysfh1zwplvdxqaqo69i4x4ymx22zlz7er5o1qg2nebndrcp2xcw6gbm2vbg9et7y1mhxrvhy9zdm9yr\",\n \"resource\" : \"cfte15nn6uivmg9x82ztaz8lhnfzn56si98bi5m7ns2097t0x0k7596prxfseyknf38dou49rro62bimin7rmhwx6p75piccl9vpazk4ei3q8dmi7o42e830a4uicuaw5yz508zsw6vg3beozfvl8s3fnyg\",\n \"index\" : 2082830205621196639,\n \"message\" : \"Corporis rerum maxime vel optio. Architecto aliquid modi voluptas sit maiores aut rerum. Molestiae unde nostrum et.\",\n \"value\" : { }\n }, {\n \"code\" : \"p2wyizhuurjlqn9y8xaqm3p96popjhq6okd0tmwymrswjc63x55ph1qnr8ap3aztbz3ocjuzgprh5tfi5p7nd7k50os80rqusle2bjxeg35wc9y48t4hzpo7o8ywx7tb61vkxuff7kmtj9apq5uhf56kx2pw00ehp2i0jby2nw4t\",\n \"field\" : \"u87ez3i67qxteeczphmfmspy644wdymsrxp7dbpe63w16mvwibq9ydpdncj943dtglo3nbbdbus4dammpyi8f1qtoqujhomkf8heg7hndd7f1wy0jzoghqlnhvtwo7ld5ri7sz61l07mdi22wt59ouey1isyaej1pd80f7benk6tdeb0r19ecnc2l83mlw\",\n \"resource\" : \"v5d9flx0svam0p2a3epcc09sl67sd11r8tj7e3ueupclbyx280mkbs450xdkgqr5muqq3e33ai2angqu7uy3ub8j92l376848qnx5lwjramopbs5ig3jcojdfrw9uq04ofhc3pl5u1isq0r\",\n \"index\" : 5026466451084401321,\n \"message\" : \"Molestiae molestiae suscipit aliquid quo iure. Odit et natus perspiciatis eligendi. Officia iusto animi ipsam eveniet. Natus quis optio quos et nemo in velit.\",\n \"value\" : { }\n }, {\n \"code\" : \"q4fq1w51oo44jutge1wql9wj9mdij2msldu4rl3hnsqkmtte384nt24nwx11he3u9480\",\n \"field\" : \"6pxb9ag3jqs7etv1rvjva2emie5jnodpyu4iw1sd3y2s7fifh53xyv536uvs2x17xdqd8\",\n \"resource\" : \"m2poyqozfifv4wbwvirwahr5755ynnvro8oy87vo2eptptsujxs5n927w4d6efk0043wzzq4m58p782kewyli4fy4kj1dutnceiusla63fw53xx1gibzt975ck5vrwcfwiptlamfirgm17u10tluyo8czadtey79x\",\n \"index\" : 1185459879363336541,\n \"message\" : \"Ducimus numquam commodi maiores qui id rem. In fugit mollitia aut tempore aliquam. Maxime velit quo ipsum. Aliquam repellat ratione dolor vel ullam et eos.\",\n \"value\" : { }\n }, {\n \"code\" : \"s112bjlw4oyyohjfmdcbcg81w3rd8r0f6lcgyfw6249ihefwv1vapp6zgwcgtqya8i8fmqyt64ytab41slexn3vptn6k4azq0aa7tj9voreywglpvd8v85pjp30z6keq9z2g3nwuocklvgwbity9y7h06033ug1jrnzu1ymr25seu4s8hxrpdz7q7lu719mp2l52\",\n \"field\" : \"kvx1c2e1oct11ookxzhbq10f7eocccs79qjdimjkihw3ajp7mu91v3z1cnv0z15puapy4rate337r7we5f93i4eysoj97ij9omhpwxmxbya212xjnq\",\n \"resource\" : \"8tnuykb3przf3nx2txg8syevls0lykmv\",\n \"index\" : 3100146261986868641,\n \"message\" : \"Minima eligendi nihil quia. Qui aliquid enim deleniti molestias delectus. Ipsa qui aut quas nobis corrupti voluptatibus.\",\n \"value\" : { }\n }, {\n \"code\" : \"l5zvs9kc2dsefyh65n5fxcmdpn8c50e0www3z9lxcxsc5chb47y5arhwvv5mdk71nz3rrcti72m3oe94o6m8xrej9yi4hlizai6viaypckvzgr3hiu9yz0bzxdq0bkg4ctis76ofcz1xig3il1sfelgob6fghkfyig7ljpk4igtd55ar7y9p0ngylrzci6n704\",\n \"field\" : \"s7hhdxzk1n11zq3a9dukuuw2hcqrzett92cqjzyttowfpue8hqvkb82uacx4tih68hph36chcsgjs855lhns3qe79s0lr7tlbquvxfa\",\n \"resource\" : \"uep3nolpbwyn0ls5u9z54ox7e7pjmi3l8bbda1octwm0efftqmsqtowth8b7znhwi057ikc39nv44di51mrksvr9glkkwdp977ey19vo4s0409wxbpc213313bjob8x9ocvs0otxx3rnwccd13y9bqzbjlpc98ravtotvwoc0h9it10t\",\n \"index\" : 2898604644306314760,\n \"message\" : \"Dolore itaque excepturi dignissimos eum expedita. Voluptas quia numquam qui et molestiae accusantium. Mollitia fugiat animi et. Et cumque vel. Repudiandae illo et iure quo aut.\",\n \"value\" : { }\n } ]\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "af836ce2-d06e-4c34-a2ca-c1269c998960", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.077804Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "pulls/create-review-comment", + "schema": { + "description": "Validation Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "errors": { + "items": { + "properties": { + "code": { + "type": "string" + }, + "field": { + "type": "string" + }, + "index": { + "type": "integer" + }, + "message": { + "type": "string" + }, + "resource": { + "type": "string" + }, + "value": { + "oneOf": [ + { + "nullable": true, + "type": "string" + }, + { + "nullable": true, + "type": "integer" + }, + { + "items": { + "type": "string" + }, + "nullable": true, + "type": "array" + } + ] + } + }, + "required": ["code"], + "type": "object" + }, + "type": "array" + }, + "message": { + "type": "string" + } + }, + "required": ["message", "documentation_url"], + "title": "Validation Error", + "type": "object" + } + } + } + }, + "insertionIndex": 450 + }, + { + "id": "5b5eb2ad-8d2f-4c38-b4ad-42f657541ae8", + "name": "Create a review comment for a pull request", + "request": { + "urlPath": "/repos/y6qzmw8c0t0g761tmhciuopb9lie37eh00bsel6457oqoy7iyj9cr410u55eonxhzgupxa287o7ue3vxh30o5yasfeuxcucov3xanxvlv6r6hcqiffc6xx5r7dl0yb4r4xb6h86qtvnbnyskcntimdl8s5n9b20l1e43yvr894veb0wvvdnhkq/559nreontt7lj5ut3v0ehny35a22vbpsm7yragvi8bhh4e8e4t0nwi5f2wmd85pqsb7sb5mjmrh02zj2owc0plhmk0jsvtshzpayh80dt37thouwr335kpfdao4khf1tz23di9jivd85kn3qtiiok5709u2oei2xx8g2/pulls/5971514253084618454/comments", + "method": "POST" + }, + "response": { + "status": 403, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/071429\",\n \"message\" : \"Est qui aut veniam voluptatibus aut qui cum. Ipsum odio deserunt voluptatem unde. Molestiae voluptatem numquam.\",\n \"url\" : \"https://web.example.mocklab.io/570041\",\n \"status\" : \"qq1kvmtx9linhh04mipa4w82kn8s7894swydd861usc5o8nft08apzw1bsd8u2b06vc3f45obj1dha5uykix16q50o2ohltbbtrwlbxux0g67blhtavyv9pi0f3f3ygzgs3ubkqvoyl8aocsqenebav0eptmctgdhzs9ekynk5ggmdh741ik9rongu\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "5b5eb2ad-8d2f-4c38-b4ad-42f657541ae8", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.076917Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "pulls/create-review-comment", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 451 + }, + { + "id": "cb57b274-be00-44d2-be5b-c5f73b0ae9f7", + "name": "Create a review comment for a pull request - example-for-a-multi-line-comment", + "request": { + "urlPath": "/repos/z64zcbly41k8yzsjnp0088qu1rbx5y8fhyiz71uizn5r5ioey3oyewbpfu7dna8sgsu88nl9dil0716j9n4bbb459ordardo4mqe3gtcdoyccduz4j2z9d9sd0ud6tif22ndwln6cm525ggdugjuqbo/rbmutww9281hti3w238vf7fu1afn2off1thleo4z02qrh3kvwswuascc3ew8lhup03vehbrawp2s0huwtxo59zyc5ufap8v5vrv8tepldkck1r26s0o/pulls/496434644026786715/comments", + "method": "POST" + }, + "response": { + "status": 201, + "body": "{\n \"_links\" : {\n \"html\" : {\n \"href\" : \"https://github.com/octocat/Hello-World/pull/1#discussion-diff-1\"\n },\n \"pull_request\" : {\n \"href\" : \"https://api.github.com/repos/octocat/Hello-World/pulls/1\"\n },\n \"self\" : {\n \"href\" : \"https://api.github.com/repos/octocat/Hello-World/pulls/comments/1\"\n }\n },\n \"author_association\" : \"NONE\",\n \"body\" : \"Great stuff!\",\n \"commit_id\" : \"6dcb09b5b57875f334f61aebed695e2e4193db5e\",\n \"created_at\" : \"2011-04-14T16:00:49Z\",\n \"diff_hunk\" : \"@@ -16,33 +16,40 @@ public class Connection : IConnection...\",\n \"html_url\" : \"https://github.com/octocat/Hello-World/pull/1#discussion-diff-1\",\n \"id\" : 10,\n \"in_reply_to_id\" : 8,\n \"line\" : 2,\n \"node_id\" : \"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDEw\",\n \"original_commit_id\" : \"9c48853fa3dc5c1c3d6f1f1cd1f2743e72652840\",\n \"original_line\" : 2,\n \"original_position\" : 4,\n \"original_start_line\" : 1,\n \"path\" : \"file1.txt\",\n \"position\" : 1,\n \"pull_request_review_id\" : 42,\n \"pull_request_url\" : \"https://api.github.com/repos/octocat/Hello-World/pulls/1\",\n \"side\" : \"RIGHT\",\n \"start_line\" : 1,\n \"start_side\" : \"RIGHT\",\n \"updated_at\" : \"2011-04-14T16:00:49Z\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/pulls/comments/1\",\n \"user\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n }\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "cb57b274-be00-44d2-be5b-c5f73b0ae9f7", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.076651Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "pulls/create-review-comment", + "schema": { + "description": "Pull Request Review Comments are comments on a portion of the Pull Request's diff.", + "properties": { + "_links": { + "properties": { + "html": { + "properties": { + "href": { + "example": "https://github.com/octocat/Hello-World/pull/1#discussion-diff-1", + "format": "uri", + "type": "string" + } + }, + "required": ["href"], + "type": "object" + }, + "pull_request": { + "properties": { + "href": { + "example": "https://api.github.com/repos/octocat/Hello-World/pulls/1", + "format": "uri", + "type": "string" + } + }, + "required": ["href"], + "type": "object" + }, + "self": { + "properties": { + "href": { + "example": "https://api.github.com/repos/octocat/Hello-World/pulls/comments/1", + "format": "uri", + "type": "string" + } + }, + "required": ["href"], + "type": "object" + } + }, + "required": ["self", "html", "pull_request"], + "type": "object" + }, + "author_association": { + "$ref": "#/components/schemas/author_association" + }, + "body": { + "description": "The text of the comment.", + "example": "We should probably include a check for null values here.", + "type": "string" + }, + "body_html": { + "example": "\"

comment body

\"", + "type": "string" + }, + "body_text": { + "example": "\"comment body\"", + "type": "string" + }, + "commit_id": { + "description": "The SHA of the commit to which the comment applies.", + "example": "6dcb09b5b57875f334f61aebed695e2e4193db5e", + "type": "string" + }, + "created_at": { + "example": "2011-04-14T16:00:49Z", + "format": "date-time", + "type": "string" + }, + "diff_hunk": { + "description": "The diff of the line that the comment refers to.", + "example": "@@ -16,33 +16,40 @@ public class Connection : IConnection...", + "type": "string" + }, + "html_url": { + "description": "HTML URL for the pull request review comment.", + "example": "https://github.com/octocat/Hello-World/pull/1#discussion-diff-1", + "format": "uri", + "type": "string" + }, + "id": { + "description": "The ID of the pull request review comment.", + "example": 1, + "type": "integer" + }, + "in_reply_to_id": { + "description": "The comment ID to reply to.", + "example": 8, + "type": "integer" + }, + "line": { + "description": "The line of the blob to which the comment applies. The last line of the range for a multi-line comment", + "example": 2, + "type": "integer" + }, + "node_id": { + "description": "The node ID of the pull request review comment.", + "example": "MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDEw", + "type": "string" + }, + "original_commit_id": { + "description": "The SHA of the original commit to which the comment applies.", + "example": "9c48853fa3dc5c1c3d6f1f1cd1f2743e72652840", + "type": "string" + }, + "original_line": { + "description": "The line of the blob to which the comment applies. The last line of the range for a multi-line comment", + "example": 2, + "type": "integer" + }, + "original_position": { + "description": "The index of the original line in the diff to which the comment applies.", + "example": 4, + "type": "integer" + }, + "original_start_line": { + "description": "The first line of the range for a multi-line comment.", + "example": 2, + "nullable": true, + "type": "integer" + }, + "path": { + "description": "The relative path of the file to which the comment applies.", + "example": "config/database.yaml", + "type": "string" + }, + "position": { + "description": "The line index in the diff to which the comment applies.", + "example": 1, + "type": "integer" + }, + "pull_request_review_id": { + "description": "The ID of the pull request review to which the comment belongs.", + "example": 42, + "nullable": true, + "type": "integer" + }, + "pull_request_url": { + "description": "URL for the pull request that the review comment belongs to.", + "example": "https://api.github.com/repos/octocat/Hello-World/pulls/1", + "format": "uri", + "type": "string" + }, + "reactions": { + "$ref": "#/components/schemas/reaction-rollup" + }, + "side": { + "default": "RIGHT", + "description": "The side of the diff to which the comment applies. The side of the last line of the range for a multi-line comment", + "enum": ["LEFT", "RIGHT"], + "type": "string" + }, + "start_line": { + "description": "The first line of the range for a multi-line comment.", + "example": 2, + "nullable": true, + "type": "integer" + }, + "start_side": { + "default": "RIGHT", + "description": "The side of the first line of the range for a multi-line comment.", + "enum": ["LEFT", "RIGHT"], + "nullable": true, + "type": "string" + }, + "updated_at": { + "example": "2011-04-14T16:00:49Z", + "format": "date-time", + "type": "string" + }, + "url": { + "description": "URL for the pull request review comment", + "example": "https://api.github.com/repos/octocat/Hello-World/pulls/comments/1", + "type": "string" + }, + "user": { + "$ref": "#/components/schemas/simple-user" + } + }, + "required": [ + "url", + "id", + "node_id", + "pull_request_review_id", + "diff_hunk", + "path", + "position", + "original_position", + "commit_id", + "original_commit_id", + "user", + "body", + "created_at", + "updated_at", + "html_url", + "pull_request_url", + "author_association", + "_links" + ], + "title": "Pull Request Review Comment", + "type": "object" + } + } + } + }, + "insertionIndex": 452 + }, + { + "id": "dddbb246-e106-4da6-8767-5c8de2890098", + "name": "List review comments on a pull request - default", + "request": { + "urlPath": "/repos/hh0aryqscgsvuqr15na6owcv00ikucg2g4/wkuftfpbkfte2o0s6fh45xuwxs5ir3raea1wjs32g/pulls/8536814578391810543/comments", + "method": "GET" + }, + "response": { + "status": 200, + "body": "[ {\n \"_links\" : {\n \"html\" : {\n \"href\" : \"https://github.com/octocat/Hello-World/pull/1#discussion-diff-1\"\n },\n \"pull_request\" : {\n \"href\" : \"https://api.github.com/repos/octocat/Hello-World/pulls/1\"\n },\n \"self\" : {\n \"href\" : \"https://api.github.com/repos/octocat/Hello-World/pulls/comments/1\"\n }\n },\n \"author_association\" : \"NONE\",\n \"body\" : \"Great stuff!\",\n \"commit_id\" : \"6dcb09b5b57875f334f61aebed695e2e4193db5e\",\n \"created_at\" : \"2011-04-14T16:00:49Z\",\n \"diff_hunk\" : \"@@ -16,33 +16,40 @@ public class Connection : IConnection...\",\n \"html_url\" : \"https://github.com/octocat/Hello-World/pull/1#discussion-diff-1\",\n \"id\" : 10,\n \"in_reply_to_id\" : 8,\n \"line\" : 2,\n \"node_id\" : \"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDEw\",\n \"original_commit_id\" : \"9c48853fa3dc5c1c3d6f1f1cd1f2743e72652840\",\n \"original_line\" : 2,\n \"original_position\" : 4,\n \"original_start_line\" : 1,\n \"path\" : \"file1.txt\",\n \"position\" : 1,\n \"pull_request_review_id\" : 42,\n \"pull_request_url\" : \"https://api.github.com/repos/octocat/Hello-World/pulls/1\",\n \"side\" : \"RIGHT\",\n \"start_line\" : 1,\n \"start_side\" : \"RIGHT\",\n \"updated_at\" : \"2011-04-14T16:00:49Z\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/pulls/comments/1\",\n \"user\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n }\n} ]", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "dddbb246-e106-4da6-8767-5c8de2890098", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.076333Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "pulls/list-review-comments", + "schema": { + "items": { + "$ref": "#/components/schemas/pull-request-review-comment" + }, + "type": "array" + } + } + } + }, + "insertionIndex": 453 + }, + { + "id": "429bbc13-7376-466a-a93d-300529f071ff", + "name": "Update a pull request", + "request": { + "urlPath": "/repos/e8wh3bmcfh7q7ibwiuymgdyj8r70ur1m8rkfzq1lnlxblr3t/cqojdm5pbx39slt9g9x2dcz4e3hxktvmv10ls0gla2m4dxmtn0cfkyn5o67ec2ncjtzmoqv091lk2ko787v1a1x9lt4t4q87a35qs8lw8dogltaba4w45pnu8gq7iscysx5pc86ag0zs89x6y4p4bnouyzm7c02qao0fk0aplk1gl20srrfta6px6m8wlbmz4g/pulls/887642968741284464", + "method": "PATCH" + }, + "response": { + "status": 422, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/174266\",\n \"message\" : \"Optio aut culpa velit in. Et voluptatem nisi soluta facere. Vero veritatis reiciendis ea. Sit qui quis deleniti quod.\",\n \"errors\" : [ {\n \"code\" : \"jckgy6lpxl0o8d8uev79tosmq9\",\n \"field\" : \"5uxlclocjlc53oboeokzqnuructsf1ycax74lo5inysvaz9s46y9ayqyaq3ijwiubzn\",\n \"resource\" : \"aorjkj0jugxr964ph56xtmf5dy49cu4byg1nqk9xpeara0zibzwiiglg2dioxm53yu8l4j9wlvdz9sl6rjq0e43lm6oprnmojz5fzi31qoi6yyidxib6ds\",\n \"index\" : 1841578196156958133,\n \"message\" : \"Accusantium atque vel. Aut vitae sed. Distinctio est recusandae doloribus quas molestiae delectus et. Quasi est officia.\",\n \"value\" : { }\n }, {\n \"code\" : \"7vv0c8zvecm8cs9y2lazhp6tqye3g7ypd35fmv3yygex2jcf6riplt11btnal4pifywa98jcvsyk6gh1cow2xv7doyj4x9wl9bmdlxjc5iznoqyisxjpvbna1nmeqtd6ph8cuinjhjwfs9tf76d682lwhdvejdj8way4prkhy7zxeayf87kdsf9f9wzub\",\n \"field\" : \"bco017iwc5tc87hwki97augyrqx3o6cud6y5guu3vkx8wkun9vw98a85ivz6scs174ok3iv5nfe7dwes9qdmpferfakhz3asxkxdj8frbfoszvwprej748prg0zpd7c\",\n \"resource\" : \"2u0k63e1vihba7x1xklwbicagmpgv6o213tb4aoyg7kotqsxals3yrojqfwi7e0jak7eeqz5sokkj530jkp1cnhstb2g2qup41drkua1vn9lp6lh04llc1as1h3yp\",\n \"index\" : 5991497957556750543,\n \"message\" : \"Sapiente et nam a. Neque labore corporis quia qui. Voluptas aut tenetur. Sit omnis officiis quia necessitatibus illo quod corporis. Officiis enim dolorem ab rem vel inventore.\",\n \"value\" : { }\n }, {\n \"code\" : \"z6mtcumgre29j257frxi089krvxgakc6ejxuyaunr5644l4t9kxphqv596t1cpg3o1z03fjz491tkh2jinez33ommgp74ukh7yvzv41tuag4dox340j11i46zyox2781bwechy1mud\",\n \"field\" : \"i4ezbuvic8iyosn88zgx5allvmr887qnls\",\n \"resource\" : \"mtb\",\n \"index\" : 5016970889013673348,\n \"message\" : \"Dolore earum nam voluptatem. Consectetur vero sed quidem. Quisquam eum ducimus. Velit est non quos.\",\n \"value\" : { }\n } ]\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "429bbc13-7376-466a-a93d-300529f071ff", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.076249Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "pulls/update", + "schema": { + "description": "Validation Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "errors": { + "items": { + "properties": { + "code": { + "type": "string" + }, + "field": { + "type": "string" + }, + "index": { + "type": "integer" + }, + "message": { + "type": "string" + }, + "resource": { + "type": "string" + }, + "value": { + "oneOf": [ + { + "nullable": true, + "type": "string" + }, + { + "nullable": true, + "type": "integer" + }, + { + "items": { + "type": "string" + }, + "nullable": true, + "type": "array" + } + ] + } + }, + "required": ["code"], + "type": "object" + }, + "type": "array" + }, + "message": { + "type": "string" + } + }, + "required": ["message", "documentation_url"], + "title": "Validation Error", + "type": "object" + } + } + } + }, + "insertionIndex": 454 + }, + { + "id": "2c873dee-cfc8-46bd-b729-f173e13bb6d7", + "name": "Update a pull request", + "request": { + "urlPath": "/repos/8zhofhzxs2uglolu6r0g7jylel68j9drzqian6mrysfz2579x6xqfsvxt27d482eovgdpsthzehbefexg7xf41nihyhq3sewr8n/l1r3g5f3vnedzlsebmysq8exa2mtiq3ytwd78qadqwrk2h2t5pyjn3pmyviw1549joih7ojhjodcisnxzo1ii2pb958pg0yji6i6u9ytbdg3oab91611y1l/pulls/1647482170335595790", + "method": "PATCH" + }, + "response": { + "status": 403, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/717594\",\n \"message\" : \"Et et cupiditate eum quisquam assumenda consequatur qui. Amet et velit velit tempora laboriosam minima dolor. Non possimus natus possimus dolor qui optio deleniti. Qui consectetur aut placeat delectus\",\n \"url\" : \"https://web.example.mocklab.io/057006\",\n \"status\" : \"1qqfrqna6gtri4mqbl8yiqe1081a693ie4cobd18c02fg25mu1xgky670wdzue0tvh\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "2c873dee-cfc8-46bd-b729-f173e13bb6d7", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.075722Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "pulls/update", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 455 + }, + { + "id": "dfd135cd-9b35-46ba-ae7b-49efefa42f80", + "name": "Update a pull request - default", + "request": { + "urlPath": "/repos/ftmzhx394ywc19mnqwar0tbx0a8si0b3m9er4ld0w68sf7folzkusbxspacrvu89hb2xxo5g0ai6kts41qrtnf8z1n/pr0ytvfa1lwa8by34lss075jlv6vg2a2bry1w74jb137euwdw9qcvknlb3kxkr090kyz84km5bg3mbiq4oks1ev6iv94md1hkuj3xe9bj6bu5iejh6l0eecd8vbsjysj78518u1rk/pulls/4471634928993976095", + "method": "PATCH" + }, + "response": { + "status": 200, + "body": "{\n \"_links\" : {\n \"comments\" : {\n \"href\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347/comments\"\n },\n \"commits\" : {\n \"href\" : \"https://api.github.com/repos/octocat/Hello-World/pulls/1347/commits\"\n },\n \"html\" : {\n \"href\" : \"https://github.com/octocat/Hello-World/pull/1347\"\n },\n \"issue\" : {\n \"href\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347\"\n },\n \"review_comment\" : {\n \"href\" : \"https://api.github.com/repos/octocat/Hello-World/pulls/comments{/number}\"\n },\n \"review_comments\" : {\n \"href\" : \"https://api.github.com/repos/octocat/Hello-World/pulls/1347/comments\"\n },\n \"self\" : {\n \"href\" : \"https://api.github.com/repos/octocat/Hello-World/pulls/1347\"\n },\n \"statuses\" : {\n \"href\" : \"https://api.github.com/repos/octocat/Hello-World/statuses/6dcb09b5b57875f334f61aebed695e2e4193db5e\"\n }\n },\n \"active_lock_reason\" : \"too heated\",\n \"additions\" : 100,\n \"assignee\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"assignees\" : [ {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n }, {\n \"avatar_url\" : \"https://github.com/images/error/hubot_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/hubot/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/hubot/followers\",\n \"following_url\" : \"https://api.github.com/users/hubot/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/hubot/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/hubot\",\n \"id\" : 1,\n \"login\" : \"hubot\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/hubot/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/hubot/received_events\",\n \"repos_url\" : \"https://api.github.com/users/hubot/repos\",\n \"site_admin\" : true,\n \"starred_url\" : \"https://api.github.com/users/hubot/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/hubot/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/hubot\"\n } ],\n \"author_association\" : \"OWNER\",\n \"base\" : {\n \"label\" : \"octocat:master\",\n \"ref\" : \"master\",\n \"repo\" : {\n \"allow_merge_commit\" : true,\n \"allow_rebase_merge\" : true,\n \"allow_squash_merge\" : true,\n \"anonymous_access_enabled\" : false,\n \"archive_url\" : \"https://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref}\",\n \"archived\" : false,\n \"assignees_url\" : \"https://api.github.com/repos/octocat/Hello-World/assignees{/user}\",\n \"blobs_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/blobs{/sha}\",\n \"branches_url\" : \"https://api.github.com/repos/octocat/Hello-World/branches{/branch}\",\n \"clone_url\" : \"https://github.com/octocat/Hello-World.git\",\n \"collaborators_url\" : \"https://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator}\",\n \"comments_url\" : \"https://api.github.com/repos/octocat/Hello-World/comments{/number}\",\n \"commits_url\" : \"https://api.github.com/repos/octocat/Hello-World/commits{/sha}\",\n \"compare_url\" : \"https://api.github.com/repos/octocat/Hello-World/compare/{base}...{head}\",\n \"contents_url\" : \"https://api.github.com/repos/octocat/Hello-World/contents/{+path}\",\n \"contributors_url\" : \"https://api.github.com/repos/octocat/Hello-World/contributors\",\n \"created_at\" : \"2011-01-26T19:01:12Z\",\n \"default_branch\" : \"master\",\n \"deployments_url\" : \"https://api.github.com/repos/octocat/Hello-World/deployments\",\n \"description\" : \"This your first repo!\",\n \"disabled\" : false,\n \"downloads_url\" : \"https://api.github.com/repos/octocat/Hello-World/downloads\",\n \"events_url\" : \"https://api.github.com/repos/octocat/Hello-World/events\",\n \"fork\" : false,\n \"forks\" : 123,\n \"forks_count\" : 9,\n \"forks_url\" : \"https://api.github.com/repos/octocat/Hello-World/forks\",\n \"full_name\" : \"octocat/Hello-World\",\n \"git_commits_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/commits{/sha}\",\n \"git_refs_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/refs{/sha}\",\n \"git_tags_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/tags{/sha}\",\n \"git_url\" : \"git:github.com/octocat/Hello-World.git\",\n \"has_downloads\" : true,\n \"has_issues\" : true,\n \"has_pages\" : false,\n \"has_projects\" : true,\n \"has_wiki\" : true,\n \"homepage\" : \"https://github.com\",\n \"hooks_url\" : \"https://api.github.com/repos/octocat/Hello-World/hooks\",\n \"html_url\" : \"https://github.com/octocat/Hello-World\",\n \"id\" : 1296269,\n \"issue_comment_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/comments{/number}\",\n \"issue_events_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/events{/number}\",\n \"issues_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues{/number}\",\n \"keys_url\" : \"https://api.github.com/repos/octocat/Hello-World/keys{/key_id}\",\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World/labels{/name}\",\n \"languages_url\" : \"https://api.github.com/repos/octocat/Hello-World/languages\",\n \"license\" : {\n \"key\" : \"mit\",\n \"name\" : \"MIT License\",\n \"node_id\" : \"MDc6TGljZW5zZW1pdA==\",\n \"spdx_id\" : \"MIT\",\n \"url\" : \"https://api.github.com/licenses/mit\"\n },\n \"merges_url\" : \"https://api.github.com/repos/octocat/Hello-World/merges\",\n \"milestones_url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones{/number}\",\n \"mirror_url\" : \"git:git.example.com/octocat/Hello-World\",\n \"name\" : \"Hello-World\",\n \"node_id\" : \"MDEwOlJlcG9zaXRvcnkxMjk2MjY5\",\n \"notifications_url\" : \"https://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating}\",\n \"open_issues\" : 123,\n \"open_issues_count\" : 0,\n \"owner\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"permissions\" : {\n \"admin\" : false,\n \"pull\" : true,\n \"push\" : false\n },\n \"private\" : false,\n \"pulls_url\" : \"https://api.github.com/repos/octocat/Hello-World/pulls{/number}\",\n \"pushed_at\" : \"2011-01-26T19:06:43Z\",\n \"releases_url\" : \"https://api.github.com/repos/octocat/Hello-World/releases{/id}\",\n \"size\" : 108,\n \"ssh_url\" : \"git@github.com:octocat/Hello-World.git\",\n \"stargazers_count\" : 80,\n \"stargazers_url\" : \"https://api.github.com/repos/octocat/Hello-World/stargazers\",\n \"statuses_url\" : \"https://api.github.com/repos/octocat/Hello-World/statuses/{sha}\",\n \"subscribers_url\" : \"https://api.github.com/repos/octocat/Hello-World/subscribers\",\n \"subscription_url\" : \"https://api.github.com/repos/octocat/Hello-World/subscription\",\n \"svn_url\" : \"https://svn.github.com/octocat/Hello-World\",\n \"tags_url\" : \"https://api.github.com/repos/octocat/Hello-World/tags\",\n \"teams_url\" : \"https://api.github.com/repos/octocat/Hello-World/teams\",\n \"topics\" : [ \"octocat\", \"atom\", \"electron\", \"api\" ],\n \"trees_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/trees{/sha}\",\n \"updated_at\" : \"2011-01-26T19:14:43Z\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World\",\n \"watchers\" : 123,\n \"watchers_count\" : 80\n },\n \"sha\" : \"6dcb09b5b57875f334f61aebed695e2e4193db5e\",\n \"user\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n }\n },\n \"body\" : \"Please pull these awesome changes in!\",\n \"changed_files\" : 5,\n \"closed_at\" : \"2011-01-26T19:01:12Z\",\n \"comments\" : 10,\n \"comments_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347/comments\",\n \"commits\" : 3,\n \"commits_url\" : \"https://api.github.com/repos/octocat/Hello-World/pulls/1347/commits\",\n \"created_at\" : \"2011-01-26T19:01:12Z\",\n \"deletions\" : 3,\n \"diff_url\" : \"https://github.com/octocat/Hello-World/pull/1347.diff\",\n \"draft\" : false,\n \"head\" : {\n \"label\" : \"octocat:new-topic\",\n \"ref\" : \"new-topic\",\n \"repo\" : {\n \"allow_forking\" : true,\n \"allow_merge_commit\" : true,\n \"allow_rebase_merge\" : true,\n \"allow_squash_merge\" : true,\n \"anonymous_access_enabled\" : false,\n \"archive_url\" : \"https://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref}\",\n \"archived\" : false,\n \"assignees_url\" : \"https://api.github.com/repos/octocat/Hello-World/assignees{/user}\",\n \"blobs_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/blobs{/sha}\",\n \"branches_url\" : \"https://api.github.com/repos/octocat/Hello-World/branches{/branch}\",\n \"clone_url\" : \"https://github.com/octocat/Hello-World.git\",\n \"collaborators_url\" : \"https://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator}\",\n \"comments_url\" : \"https://api.github.com/repos/octocat/Hello-World/comments{/number}\",\n \"commits_url\" : \"https://api.github.com/repos/octocat/Hello-World/commits{/sha}\",\n \"compare_url\" : \"https://api.github.com/repos/octocat/Hello-World/compare/{base}...{head}\",\n \"contents_url\" : \"https://api.github.com/repos/octocat/Hello-World/contents/{+path}\",\n \"contributors_url\" : \"https://api.github.com/repos/octocat/Hello-World/contributors\",\n \"created_at\" : \"2011-01-26T19:01:12Z\",\n \"default_branch\" : \"master\",\n \"deployments_url\" : \"https://api.github.com/repos/octocat/Hello-World/deployments\",\n \"description\" : \"This your first repo!\",\n \"disabled\" : false,\n \"downloads_url\" : \"https://api.github.com/repos/octocat/Hello-World/downloads\",\n \"events_url\" : \"https://api.github.com/repos/octocat/Hello-World/events\",\n \"fork\" : false,\n \"forks\" : 123,\n \"forks_count\" : 9,\n \"forks_url\" : \"https://api.github.com/repos/octocat/Hello-World/forks\",\n \"full_name\" : \"octocat/Hello-World\",\n \"git_commits_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/commits{/sha}\",\n \"git_refs_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/refs{/sha}\",\n \"git_tags_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/tags{/sha}\",\n \"git_url\" : \"git:github.com/octocat/Hello-World.git\",\n \"has_downloads\" : true,\n \"has_issues\" : true,\n \"has_pages\" : false,\n \"has_projects\" : true,\n \"has_wiki\" : true,\n \"homepage\" : \"https://github.com\",\n \"hooks_url\" : \"https://api.github.com/repos/octocat/Hello-World/hooks\",\n \"html_url\" : \"https://github.com/octocat/Hello-World\",\n \"id\" : 1296269,\n \"issue_comment_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/comments{/number}\",\n \"issue_events_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/events{/number}\",\n \"issues_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues{/number}\",\n \"keys_url\" : \"https://api.github.com/repos/octocat/Hello-World/keys{/key_id}\",\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World/labels{/name}\",\n \"languages_url\" : \"https://api.github.com/repos/octocat/Hello-World/languages\",\n \"license\" : {\n \"key\" : \"mit\",\n \"name\" : \"MIT License\",\n \"node_id\" : \"MDc6TGljZW5zZW1pdA==\",\n \"spdx_id\" : \"MIT\",\n \"url\" : \"https://api.github.com/licenses/mit\"\n },\n \"merges_url\" : \"https://api.github.com/repos/octocat/Hello-World/merges\",\n \"milestones_url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones{/number}\",\n \"mirror_url\" : \"git:git.example.com/octocat/Hello-World\",\n \"name\" : \"Hello-World\",\n \"node_id\" : \"MDEwOlJlcG9zaXRvcnkxMjk2MjY5\",\n \"notifications_url\" : \"https://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating}\",\n \"open_issues\" : 123,\n \"open_issues_count\" : 0,\n \"owner\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"permissions\" : {\n \"admin\" : false,\n \"pull\" : true,\n \"push\" : false\n },\n \"private\" : false,\n \"pulls_url\" : \"https://api.github.com/repos/octocat/Hello-World/pulls{/number}\",\n \"pushed_at\" : \"2011-01-26T19:06:43Z\",\n \"releases_url\" : \"https://api.github.com/repos/octocat/Hello-World/releases{/id}\",\n \"size\" : 108,\n \"ssh_url\" : \"git@github.com:octocat/Hello-World.git\",\n \"stargazers_count\" : 80,\n \"stargazers_url\" : \"https://api.github.com/repos/octocat/Hello-World/stargazers\",\n \"statuses_url\" : \"https://api.github.com/repos/octocat/Hello-World/statuses/{sha}\",\n \"subscribers_url\" : \"https://api.github.com/repos/octocat/Hello-World/subscribers\",\n \"subscription_url\" : \"https://api.github.com/repos/octocat/Hello-World/subscription\",\n \"svn_url\" : \"https://svn.github.com/octocat/Hello-World\",\n \"tags_url\" : \"https://api.github.com/repos/octocat/Hello-World/tags\",\n \"teams_url\" : \"https://api.github.com/repos/octocat/Hello-World/teams\",\n \"topics\" : [ \"octocat\", \"atom\", \"electron\", \"api\" ],\n \"trees_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/trees{/sha}\",\n \"updated_at\" : \"2011-01-26T19:14:43Z\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World\",\n \"watchers\" : 123,\n \"watchers_count\" : 80\n },\n \"sha\" : \"6dcb09b5b57875f334f61aebed695e2e4193db5e\",\n \"user\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n }\n },\n \"html_url\" : \"https://github.com/octocat/Hello-World/pull/1347\",\n \"id\" : 1,\n \"issue_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347\",\n \"labels\" : [ {\n \"color\" : \"f29513\",\n \"default\" : true,\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"name\" : \"bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/labels/bug\"\n } ],\n \"locked\" : true,\n \"maintainer_can_modify\" : true,\n \"merge_commit_sha\" : \"e5bd3914e2e596debea16f433f57875b5b90bcd6\",\n \"mergeable\" : true,\n \"mergeable_state\" : \"clean\",\n \"merged\" : false,\n \"merged_at\" : \"2011-01-26T19:01:12Z\",\n \"merged_by\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"milestone\" : {\n \"closed_at\" : \"2013-02-12T13:22:01Z\",\n \"closed_issues\" : 8,\n \"created_at\" : \"2011-04-10T20:09:31Z\",\n \"creator\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"description\" : \"Tracking milestone for version 1.0\",\n \"due_on\" : \"2012-10-09T23:39:01Z\",\n \"html_url\" : \"https://github.com/octocat/Hello-World/milestones/v1.0\",\n \"id\" : 1002604,\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones/1/labels\",\n \"node_id\" : \"MDk6TWlsZXN0b25lMTAwMjYwNA==\",\n \"number\" : 1,\n \"open_issues\" : 4,\n \"state\" : \"open\",\n \"title\" : \"v1.0\",\n \"updated_at\" : \"2014-03-03T18:58:10Z\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones/1\"\n },\n \"node_id\" : \"MDExOlB1bGxSZXF1ZXN0MQ==\",\n \"number\" : 1347,\n \"patch_url\" : \"https://github.com/octocat/Hello-World/pull/1347.patch\",\n \"rebaseable\" : true,\n \"requested_reviewers\" : [ {\n \"avatar_url\" : \"https://github.com/images/error/other_user_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/other_user/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/other_user/followers\",\n \"following_url\" : \"https://api.github.com/users/other_user/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/other_user/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/other_user\",\n \"id\" : 1,\n \"login\" : \"other_user\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/other_user/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/other_user/received_events\",\n \"repos_url\" : \"https://api.github.com/users/other_user/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/other_user/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/other_user/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/other_user\"\n } ],\n \"requested_teams\" : [ {\n \"description\" : \"A great team.\",\n \"html_url\" : \"https://github.com/orgs/github/teams/justice-league\",\n \"id\" : 1,\n \"members_url\" : \"https://api.github.com/teams/1/members{/member}\",\n \"name\" : \"Justice League\",\n \"node_id\" : \"MDQ6VGVhbTE=\",\n \"permission\" : \"admin\",\n \"privacy\" : \"closed\",\n \"repositories_url\" : \"https://api.github.com/teams/1/repos\",\n \"slug\" : \"justice-league\",\n \"url\" : \"https://api.github.com/teams/1\"\n } ],\n \"review_comment_url\" : \"https://api.github.com/repos/octocat/Hello-World/pulls/comments{/number}\",\n \"review_comments\" : 0,\n \"review_comments_url\" : \"https://api.github.com/repos/octocat/Hello-World/pulls/1347/comments\",\n \"state\" : \"open\",\n \"statuses_url\" : \"https://api.github.com/repos/octocat/Hello-World/statuses/6dcb09b5b57875f334f61aebed695e2e4193db5e\",\n \"title\" : \"Amazing new feature\",\n \"updated_at\" : \"2011-01-26T19:01:12Z\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/pulls/1347\",\n \"user\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n }\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "dfd135cd-9b35-46ba-ae7b-49efefa42f80", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.075234Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "pulls/update", + "schema": { + "description": "Pull requests let you tell others about changes you've pushed to a repository on GitHub. Once a pull request is sent, interested parties can review the set of changes, discuss potential modifications, and even push follow-up commits if necessary.", + "properties": { + "_links": { + "properties": { + "comments": { + "$ref": "#/components/schemas/link" + }, + "commits": { + "$ref": "#/components/schemas/link" + }, + "html": { + "$ref": "#/components/schemas/link" + }, + "issue": { + "$ref": "#/components/schemas/link" + }, + "review_comment": { + "$ref": "#/components/schemas/link" + }, + "review_comments": { + "$ref": "#/components/schemas/link" + }, + "self": { + "$ref": "#/components/schemas/link" + }, + "statuses": { + "$ref": "#/components/schemas/link" + } + }, + "required": [ + "comments", + "commits", + "statuses", + "html", + "issue", + "review_comments", + "review_comment", + "self" + ], + "type": "object" + }, + "active_lock_reason": { + "example": "too heated", + "nullable": true, + "type": "string" + }, + "additions": { + "example": 100, + "type": "integer" + }, + "assignee": { + "$ref": "#/components/schemas/nullable-simple-user" + }, + "assignees": { + "items": { + "$ref": "#/components/schemas/simple-user" + }, + "nullable": true, + "type": "array" + }, + "author_association": { + "$ref": "#/components/schemas/author_association" + }, + "base": { + "properties": { + "label": { + "type": "string" + }, + "ref": { + "type": "string" + }, + "repo": { + "properties": { + "allow_forking": { + "type": "boolean" + }, + "allow_merge_commit": { + "type": "boolean" + }, + "allow_rebase_merge": { + "type": "boolean" + }, + "allow_squash_merge": { + "type": "boolean" + }, + "anonymous_access_enabled": { + "type": "boolean" + }, + "archive_url": { + "type": "string" + }, + "archived": { + "type": "boolean" + }, + "assignees_url": { + "type": "string" + }, + "blobs_url": { + "type": "string" + }, + "branches_url": { + "type": "string" + }, + "clone_url": { + "type": "string" + }, + "collaborators_url": { + "type": "string" + }, + "comments_url": { + "type": "string" + }, + "commits_url": { + "type": "string" + }, + "compare_url": { + "type": "string" + }, + "contents_url": { + "type": "string" + }, + "contributors_url": { + "format": "uri", + "type": "string" + }, + "created_at": { + "format": "date-time", + "type": "string" + }, + "default_branch": { + "type": "string" + }, + "deployments_url": { + "format": "uri", + "type": "string" + }, + "description": { + "nullable": true, + "type": "string" + }, + "disabled": { + "type": "boolean" + }, + "downloads_url": { + "format": "uri", + "type": "string" + }, + "events_url": { + "format": "uri", + "type": "string" + }, + "fork": { + "type": "boolean" + }, + "forks": { + "type": "integer" + }, + "forks_count": { + "type": "integer" + }, + "forks_url": { + "format": "uri", + "type": "string" + }, + "full_name": { + "type": "string" + }, + "git_commits_url": { + "type": "string" + }, + "git_refs_url": { + "type": "string" + }, + "git_tags_url": { + "type": "string" + }, + "git_url": { + "type": "string" + }, + "has_downloads": { + "type": "boolean" + }, + "has_issues": { + "type": "boolean" + }, + "has_pages": { + "type": "boolean" + }, + "has_projects": { + "type": "boolean" + }, + "has_wiki": { + "type": "boolean" + }, + "homepage": { + "format": "uri", + "nullable": true, + "type": "string" + }, + "hooks_url": { + "format": "uri", + "type": "string" + }, + "html_url": { + "format": "uri", + "type": "string" + }, + "id": { + "type": "integer" + }, + "issue_comment_url": { + "type": "string" + }, + "issue_events_url": { + "type": "string" + }, + "issues_url": { + "type": "string" + }, + "keys_url": { + "type": "string" + }, + "labels_url": { + "type": "string" + }, + "language": { + "nullable": true, + "type": "string" + }, + "languages_url": { + "format": "uri", + "type": "string" + }, + "license": { + "$ref": "#/components/schemas/nullable-license-simple" + }, + "master_branch": { + "type": "string" + }, + "merges_url": { + "format": "uri", + "type": "string" + }, + "milestones_url": { + "type": "string" + }, + "mirror_url": { + "format": "uri", + "nullable": true, + "type": "string" + }, + "name": { + "type": "string" + }, + "node_id": { + "type": "string" + }, + "notifications_url": { + "type": "string" + }, + "open_issues": { + "type": "integer" + }, + "open_issues_count": { + "type": "integer" + }, + "owner": { + "properties": { + "avatar_url": { + "format": "uri", + "type": "string" + }, + "events_url": { + "type": "string" + }, + "followers_url": { + "format": "uri", + "type": "string" + }, + "following_url": { + "type": "string" + }, + "gists_url": { + "type": "string" + }, + "gravatar_id": { + "nullable": true, + "type": "string" + }, + "html_url": { + "format": "uri", + "type": "string" + }, + "id": { + "type": "integer" + }, + "login": { + "type": "string" + }, + "node_id": { + "type": "string" + }, + "organizations_url": { + "format": "uri", + "type": "string" + }, + "received_events_url": { + "format": "uri", + "type": "string" + }, + "repos_url": { + "format": "uri", + "type": "string" + }, + "site_admin": { + "type": "boolean" + }, + "starred_url": { + "type": "string" + }, + "subscriptions_url": { + "format": "uri", + "type": "string" + }, + "type": { + "type": "string" + }, + "url": { + "format": "uri", + "type": "string" + } + }, + "required": [ + "avatar_url", + "events_url", + "followers_url", + "following_url", + "gists_url", + "gravatar_id", + "html_url", + "id", + "node_id", + "login", + "organizations_url", + "received_events_url", + "repos_url", + "site_admin", + "starred_url", + "subscriptions_url", + "type", + "url" + ], + "type": "object" + }, + "permissions": { + "properties": { + "admin": { + "type": "boolean" + }, + "maintain": { + "type": "boolean" + }, + "pull": { + "type": "boolean" + }, + "push": { + "type": "boolean" + }, + "triage": { + "type": "boolean" + } + }, + "required": ["admin", "pull", "push"], + "type": "object" + }, + "private": { + "type": "boolean" + }, + "pulls_url": { + "type": "string" + }, + "pushed_at": { + "format": "date-time", + "type": "string" + }, + "releases_url": { + "type": "string" + }, + "size": { + "type": "integer" + }, + "ssh_url": { + "type": "string" + }, + "stargazers_count": { + "type": "integer" + }, + "stargazers_url": { + "format": "uri", + "type": "string" + }, + "statuses_url": { + "type": "string" + }, + "subscribers_url": { + "format": "uri", + "type": "string" + }, + "subscription_url": { + "format": "uri", + "type": "string" + }, + "svn_url": { + "format": "uri", + "type": "string" + }, + "tags_url": { + "format": "uri", + "type": "string" + }, + "teams_url": { + "format": "uri", + "type": "string" + }, + "topics": { + "items": { + "type": "string" + }, + "type": "array" + }, + "trees_url": { + "type": "string" + }, + "updated_at": { + "format": "date-time", + "type": "string" + }, + "url": { + "format": "uri", + "type": "string" + }, + "watchers": { + "type": "integer" + }, + "watchers_count": { + "type": "integer" + } + }, + "required": [ + "archive_url", + "assignees_url", + "blobs_url", + "branches_url", + "collaborators_url", + "comments_url", + "commits_url", + "compare_url", + "contents_url", + "contributors_url", + "deployments_url", + "description", + "downloads_url", + "events_url", + "fork", + "forks_url", + "full_name", + "git_commits_url", + "git_refs_url", + "git_tags_url", + "hooks_url", + "html_url", + "id", + "node_id", + "issue_comment_url", + "issue_events_url", + "issues_url", + "keys_url", + "labels_url", + "languages_url", + "merges_url", + "milestones_url", + "name", + "notifications_url", + "owner", + "private", + "pulls_url", + "releases_url", + "stargazers_url", + "statuses_url", + "subscribers_url", + "subscription_url", + "tags_url", + "teams_url", + "trees_url", + "url", + "clone_url", + "default_branch", + "forks", + "forks_count", + "git_url", + "has_downloads", + "has_issues", + "has_projects", + "has_wiki", + "has_pages", + "homepage", + "language", + "archived", + "disabled", + "mirror_url", + "open_issues", + "open_issues_count", + "license", + "pushed_at", + "size", + "ssh_url", + "stargazers_count", + "svn_url", + "watchers", + "watchers_count", + "created_at", + "updated_at" + ], + "type": "object" + }, + "sha": { + "type": "string" + }, + "user": { + "properties": { + "avatar_url": { + "format": "uri", + "type": "string" + }, + "events_url": { + "type": "string" + }, + "followers_url": { + "format": "uri", + "type": "string" + }, + "following_url": { + "type": "string" + }, + "gists_url": { + "type": "string" + }, + "gravatar_id": { + "nullable": true, + "type": "string" + }, + "html_url": { + "format": "uri", + "type": "string" + }, + "id": { + "type": "integer" + }, + "login": { + "type": "string" + }, + "node_id": { + "type": "string" + }, + "organizations_url": { + "format": "uri", + "type": "string" + }, + "received_events_url": { + "format": "uri", + "type": "string" + }, + "repos_url": { + "format": "uri", + "type": "string" + }, + "site_admin": { + "type": "boolean" + }, + "starred_url": { + "type": "string" + }, + "subscriptions_url": { + "format": "uri", + "type": "string" + }, + "type": { + "type": "string" + }, + "url": { + "format": "uri", + "type": "string" + } + }, + "required": [ + "avatar_url", + "events_url", + "followers_url", + "following_url", + "gists_url", + "gravatar_id", + "html_url", + "id", + "node_id", + "login", + "organizations_url", + "received_events_url", + "repos_url", + "site_admin", + "starred_url", + "subscriptions_url", + "type", + "url" + ], + "type": "object" + } + }, + "required": ["label", "ref", "repo", "sha", "user"], + "type": "object" + }, + "body": { + "example": "Please pull these awesome changes", + "nullable": true, + "type": "string" + }, + "changed_files": { + "example": 5, + "type": "integer" + }, + "closed_at": { + "example": "2011-01-26T19:01:12Z", + "format": "date-time", + "nullable": true, + "type": "string" + }, + "comments": { + "example": 10, + "type": "integer" + }, + "comments_url": { + "example": "https://api.github.com/repos/octocat/Hello-World/issues/1347/comments", + "format": "uri", + "type": "string" + }, + "commits": { + "example": 3, + "type": "integer" + }, + "commits_url": { + "example": "https://api.github.com/repos/octocat/Hello-World/pulls/1347/commits", + "format": "uri", + "type": "string" + }, + "created_at": { + "example": "2011-01-26T19:01:12Z", + "format": "date-time", + "type": "string" + }, + "deletions": { + "example": 3, + "type": "integer" + }, + "diff_url": { + "example": "https://github.com/octocat/Hello-World/pull/1347.diff", + "format": "uri", + "type": "string" + }, + "draft": { + "description": "Indicates whether or not the pull request is a draft.", + "example": false, + "type": "boolean" + }, + "head": { + "properties": { + "label": { + "type": "string" + }, + "ref": { + "type": "string" + }, + "repo": { + "nullable": true, + "properties": { + "allow_forking": { + "type": "boolean" + }, + "allow_merge_commit": { + "type": "boolean" + }, + "allow_rebase_merge": { + "type": "boolean" + }, + "allow_squash_merge": { + "type": "boolean" + }, + "anonymous_access_enabled": { + "type": "boolean" + }, + "archive_url": { + "type": "string" + }, + "archived": { + "type": "boolean" + }, + "assignees_url": { + "type": "string" + }, + "blobs_url": { + "type": "string" + }, + "branches_url": { + "type": "string" + }, + "clone_url": { + "type": "string" + }, + "collaborators_url": { + "type": "string" + }, + "comments_url": { + "type": "string" + }, + "commits_url": { + "type": "string" + }, + "compare_url": { + "type": "string" + }, + "contents_url": { + "type": "string" + }, + "contributors_url": { + "format": "uri", + "type": "string" + }, + "created_at": { + "format": "date-time", + "type": "string" + }, + "default_branch": { + "type": "string" + }, + "deployments_url": { + "format": "uri", + "type": "string" + }, + "description": { + "nullable": true, + "type": "string" + }, + "disabled": { + "type": "boolean" + }, + "downloads_url": { + "format": "uri", + "type": "string" + }, + "events_url": { + "format": "uri", + "type": "string" + }, + "fork": { + "type": "boolean" + }, + "forks": { + "type": "integer" + }, + "forks_count": { + "type": "integer" + }, + "forks_url": { + "format": "uri", + "type": "string" + }, + "full_name": { + "type": "string" + }, + "git_commits_url": { + "type": "string" + }, + "git_refs_url": { + "type": "string" + }, + "git_tags_url": { + "type": "string" + }, + "git_url": { + "type": "string" + }, + "has_downloads": { + "type": "boolean" + }, + "has_issues": { + "type": "boolean" + }, + "has_pages": { + "type": "boolean" + }, + "has_projects": { + "type": "boolean" + }, + "has_wiki": { + "type": "boolean" + }, + "homepage": { + "format": "uri", + "nullable": true, + "type": "string" + }, + "hooks_url": { + "format": "uri", + "type": "string" + }, + "html_url": { + "format": "uri", + "type": "string" + }, + "id": { + "type": "integer" + }, + "issue_comment_url": { + "type": "string" + }, + "issue_events_url": { + "type": "string" + }, + "issues_url": { + "type": "string" + }, + "keys_url": { + "type": "string" + }, + "labels_url": { + "type": "string" + }, + "language": { + "nullable": true, + "type": "string" + }, + "languages_url": { + "format": "uri", + "type": "string" + }, + "license": { + "nullable": true, + "properties": { + "key": { + "type": "string" + }, + "name": { + "type": "string" + }, + "node_id": { + "type": "string" + }, + "spdx_id": { + "nullable": true, + "type": "string" + }, + "url": { + "format": "uri", + "nullable": true, + "type": "string" + } + }, + "required": ["key", "name", "url", "spdx_id", "node_id"], + "type": "object" + }, + "master_branch": { + "type": "string" + }, + "merges_url": { + "format": "uri", + "type": "string" + }, + "milestones_url": { + "type": "string" + }, + "mirror_url": { + "format": "uri", + "nullable": true, + "type": "string" + }, + "name": { + "type": "string" + }, + "node_id": { + "type": "string" + }, + "notifications_url": { + "type": "string" + }, + "open_issues": { + "type": "integer" + }, + "open_issues_count": { + "type": "integer" + }, + "owner": { + "properties": { + "avatar_url": { + "format": "uri", + "type": "string" + }, + "events_url": { + "type": "string" + }, + "followers_url": { + "format": "uri", + "type": "string" + }, + "following_url": { + "type": "string" + }, + "gists_url": { + "type": "string" + }, + "gravatar_id": { + "nullable": true, + "type": "string" + }, + "html_url": { + "format": "uri", + "type": "string" + }, + "id": { + "type": "integer" + }, + "login": { + "type": "string" + }, + "node_id": { + "type": "string" + }, + "organizations_url": { + "format": "uri", + "type": "string" + }, + "received_events_url": { + "format": "uri", + "type": "string" + }, + "repos_url": { + "format": "uri", + "type": "string" + }, + "site_admin": { + "type": "boolean" + }, + "starred_url": { + "type": "string" + }, + "subscriptions_url": { + "format": "uri", + "type": "string" + }, + "type": { + "type": "string" + }, + "url": { + "format": "uri", + "type": "string" + } + }, + "required": [ + "avatar_url", + "events_url", + "followers_url", + "following_url", + "gists_url", + "gravatar_id", + "html_url", + "id", + "node_id", + "login", + "organizations_url", + "received_events_url", + "repos_url", + "site_admin", + "starred_url", + "subscriptions_url", + "type", + "url" + ], + "type": "object" + }, + "permissions": { + "properties": { + "admin": { + "type": "boolean" + }, + "maintain": { + "type": "boolean" + }, + "pull": { + "type": "boolean" + }, + "push": { + "type": "boolean" + }, + "triage": { + "type": "boolean" + } + }, + "required": ["admin", "pull", "push"], + "type": "object" + }, + "private": { + "type": "boolean" + }, + "pulls_url": { + "type": "string" + }, + "pushed_at": { + "format": "date-time", + "type": "string" + }, + "releases_url": { + "type": "string" + }, + "size": { + "type": "integer" + }, + "ssh_url": { + "type": "string" + }, + "stargazers_count": { + "type": "integer" + }, + "stargazers_url": { + "format": "uri", + "type": "string" + }, + "statuses_url": { + "type": "string" + }, + "subscribers_url": { + "format": "uri", + "type": "string" + }, + "subscription_url": { + "format": "uri", + "type": "string" + }, + "svn_url": { + "format": "uri", + "type": "string" + }, + "tags_url": { + "format": "uri", + "type": "string" + }, + "teams_url": { + "format": "uri", + "type": "string" + }, + "topics": { + "items": { + "type": "string" + }, + "type": "array" + }, + "trees_url": { + "type": "string" + }, + "updated_at": { + "format": "date-time", + "type": "string" + }, + "url": { + "format": "uri", + "type": "string" + }, + "watchers": { + "type": "integer" + }, + "watchers_count": { + "type": "integer" + } + }, + "required": [ + "archive_url", + "assignees_url", + "blobs_url", + "branches_url", + "collaborators_url", + "comments_url", + "commits_url", + "compare_url", + "contents_url", + "contributors_url", + "deployments_url", + "description", + "downloads_url", + "events_url", + "fork", + "forks_url", + "full_name", + "git_commits_url", + "git_refs_url", + "git_tags_url", + "hooks_url", + "html_url", + "id", + "node_id", + "issue_comment_url", + "issue_events_url", + "issues_url", + "keys_url", + "labels_url", + "languages_url", + "merges_url", + "milestones_url", + "name", + "notifications_url", + "owner", + "private", + "pulls_url", + "releases_url", + "stargazers_url", + "statuses_url", + "subscribers_url", + "subscription_url", + "tags_url", + "teams_url", + "trees_url", + "url", + "clone_url", + "default_branch", + "forks", + "forks_count", + "git_url", + "has_downloads", + "has_issues", + "has_projects", + "has_wiki", + "has_pages", + "homepage", + "language", + "archived", + "disabled", + "mirror_url", + "open_issues", + "open_issues_count", + "license", + "pushed_at", + "size", + "ssh_url", + "stargazers_count", + "svn_url", + "watchers", + "watchers_count", + "created_at", + "updated_at" + ], + "type": "object" + }, + "sha": { + "type": "string" + }, + "user": { + "properties": { + "avatar_url": { + "format": "uri", + "type": "string" + }, + "events_url": { + "type": "string" + }, + "followers_url": { + "format": "uri", + "type": "string" + }, + "following_url": { + "type": "string" + }, + "gists_url": { + "type": "string" + }, + "gravatar_id": { + "nullable": true, + "type": "string" + }, + "html_url": { + "format": "uri", + "type": "string" + }, + "id": { + "type": "integer" + }, + "login": { + "type": "string" + }, + "node_id": { + "type": "string" + }, + "organizations_url": { + "format": "uri", + "type": "string" + }, + "received_events_url": { + "format": "uri", + "type": "string" + }, + "repos_url": { + "format": "uri", + "type": "string" + }, + "site_admin": { + "type": "boolean" + }, + "starred_url": { + "type": "string" + }, + "subscriptions_url": { + "format": "uri", + "type": "string" + }, + "type": { + "type": "string" + }, + "url": { + "format": "uri", + "type": "string" + } + }, + "required": [ + "avatar_url", + "events_url", + "followers_url", + "following_url", + "gists_url", + "gravatar_id", + "html_url", + "id", + "node_id", + "login", + "organizations_url", + "received_events_url", + "repos_url", + "site_admin", + "starred_url", + "subscriptions_url", + "type", + "url" + ], + "type": "object" + } + }, + "required": ["label", "ref", "repo", "sha", "user"], + "type": "object" + }, + "html_url": { + "example": "https://github.com/octocat/Hello-World/pull/1347", + "format": "uri", + "type": "string" + }, + "id": { + "example": 1, + "type": "integer" + }, + "issue_url": { + "example": "https://api.github.com/repos/octocat/Hello-World/issues/1347", + "format": "uri", + "type": "string" + }, + "labels": { + "items": { + "properties": { + "color": { + "type": "string" + }, + "default": { + "type": "boolean" + }, + "description": { + "nullable": true, + "type": "string" + }, + "id": { + "format": "int64", + "type": "integer" + }, + "name": { + "type": "string" + }, + "node_id": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "locked": { + "example": true, + "type": "boolean" + }, + "maintainer_can_modify": { + "description": "Indicates whether maintainers can modify the pull request.", + "example": true, + "type": "boolean" + }, + "merge_commit_sha": { + "example": "e5bd3914e2e596debea16f433f57875b5b90bcd6", + "nullable": true, + "type": "string" + }, + "mergeable": { + "example": true, + "nullable": true, + "type": "boolean" + }, + "mergeable_state": { + "example": "clean", + "type": "string" + }, + "merged": { + "type": "boolean" + }, + "merged_at": { + "example": "2011-01-26T19:01:12Z", + "format": "date-time", + "nullable": true, + "type": "string" + }, + "merged_by": { + "$ref": "#/components/schemas/nullable-simple-user" + }, + "milestone": { + "$ref": "#/components/schemas/nullable-milestone" + }, + "node_id": { + "example": "MDExOlB1bGxSZXF1ZXN0MQ==", + "type": "string" + }, + "number": { + "description": "Number uniquely identifying the pull request within its repository.", + "example": 42, + "type": "integer" + }, + "patch_url": { + "example": "https://github.com/octocat/Hello-World/pull/1347.patch", + "format": "uri", + "type": "string" + }, + "rebaseable": { + "example": true, + "nullable": true, + "type": "boolean" + }, + "requested_reviewers": { + "items": { + "$ref": "#/components/schemas/simple-user" + }, + "nullable": true, + "type": "array" + }, + "requested_teams": { + "items": { + "$ref": "#/components/schemas/team-simple" + }, + "nullable": true, + "type": "array" + }, + "review_comment_url": { + "example": "https://api.github.com/repos/octocat/Hello-World/pulls/comments{/number}", + "type": "string" + }, + "review_comments": { + "example": 0, + "type": "integer" + }, + "review_comments_url": { + "example": "https://api.github.com/repos/octocat/Hello-World/pulls/1347/comments", + "format": "uri", + "type": "string" + }, + "state": { + "description": "State of this Pull Request. Either `open` or `closed`.", + "enum": ["open", "closed"], + "example": "open", + "type": "string" + }, + "statuses_url": { + "example": "https://api.github.com/repos/octocat/Hello-World/statuses/6dcb09b5b57875f334f61aebed695e2e4193db5e", + "format": "uri", + "type": "string" + }, + "title": { + "description": "The title of the pull request.", + "example": "Amazing new feature", + "type": "string" + }, + "updated_at": { + "example": "2011-01-26T19:01:12Z", + "format": "date-time", + "type": "string" + }, + "url": { + "example": "https://api.github.com/repos/octocat/Hello-World/pulls/1347", + "format": "uri", + "type": "string" + }, + "user": { + "$ref": "#/components/schemas/nullable-simple-user" + } + }, + "required": [ + "_links", + "assignee", + "labels", + "base", + "body", + "closed_at", + "comments_url", + "commits_url", + "created_at", + "diff_url", + "head", + "html_url", + "id", + "node_id", + "issue_url", + "merge_commit_sha", + "merged_at", + "milestone", + "number", + "patch_url", + "review_comment_url", + "review_comments_url", + "statuses_url", + "state", + "locked", + "title", + "updated_at", + "url", + "user", + "author_association", + "additions", + "changed_files", + "comments", + "commits", + "deletions", + "mergeable", + "mergeable_state", + "merged", + "maintainer_can_modify", + "merged_by", + "review_comments" + ], + "title": "Pull Request", + "type": "object" + } + } + } + }, + "insertionIndex": 456 + }, + { + "id": "e76aeb5e-05dd-4ba0-95bf-ed81773eadc9", + "name": "Get a pull request (application/json)", + "request": { + "urlPath": "/repos/w3bbc4g7b9sbo0z/lpcazsgo64w6pk69lvszbu8pkgftbod6llwcl27hzpa2rif4xlvfbsndj8molntl56ygstqhh8a2o3pn5y4omizpkz4st2id8wpu4qgn2d4ki1n6reh0421a7ezpod77xnxmq0684vk1kmzw94p9yy8kzpm7s1ue/pulls/7209287363276760798", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 500, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/671763\",\n \"message\" : \"Tempore facere iusto nam eveniet quasi. Qui magnam minus ut aspernatur qui. Placeat tempore qui possimus est sed quos.\",\n \"url\" : \"https://web.example.mocklab.io/000584\",\n \"status\" : \"uejonnrqkeclltcnrjsxv1hke2x3n5nw6uehgukjt3seeihntfil64wbg1j8w8hr68cnf772c3dxtk66l8aitk43okoqnhp3exrqofkrzvzis52cyuwihqgbaur1f4uxu4183qwvuzljy39ydogqh083cky9b\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "e76aeb5e-05dd-4ba0-95bf-ed81773eadc9", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.073152Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "pulls/get", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 457 + }, + { + "id": "d8e91cf1-530f-4d1a-95ea-d2f6bd790319", + "name": "Get a pull request (application/json)", + "request": { + "urlPath": "/repos/ew5eazmnynuxy4ggrjrid6lp3rg5uaimxnj3mgp2mlsk6nw9b34pc6d6qygqx459uix1thrq2zrxcencuh0jxotjjon7zuhaxcfgl63ckub3sb2uqg1wtl6nspp5xjsemadjijajie0kk1pnxih8zgwrvobihr0k50zgf5boymv7uwfiwl/7ynjplthqmwbeplil8mquphdzi3c2irg7p8r1wixbvam380rhxua3efuyk5d1q4whrb9gcqggkbys6chnzdxpu/pulls/9019104139844952256", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/337584\",\n \"message\" : \"Debitis porro ut eveniet nesciunt. In id iusto voluptas et illum minus. Et natus est. Vel assumenda odio.\",\n \"url\" : \"https://web.example.mocklab.io/224960\",\n \"status\" : \"tzpapyeoawmae9jclteptfzh05br0r5giyymgxeceawj0v6q35zv1fapfw07a62bhb8sr2y554i7v92fw5cpjzjt25yn6fhe\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "d8e91cf1-530f-4d1a-95ea-d2f6bd790319", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.072905Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "pulls/get", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 458 + }, + { + "id": "5b70cf93-554d-466d-8083-3358870f76d5", + "name": "Get a pull request - 304", + "request": { + "urlPath": "/repos/w6xkfkjp11rsegxm7a2yvctd4q90psh7qq5mmx1ey9wd6avzpouqaz81tn6p9dlg0bd8mv3hcgzj44nnx27f4gh1m93dqmp4rq9a3h17w1my8kga0b3np0tty82kums1bbt4xnf7tm3yeiexlxs9dmz6x7sj3eufzr87sui67ecg2h5co7edwq/tlzu00kqoynjoh787ouj9bafhr1qujelm3r26ckhtdt6jahr6mna8r5akllvzrko837l8942s0xjk5we8tjvyxfzkdtsdm1grlr1niw2oxlxjlwpgnwzzengapfpr4tvu5exzrpduqqt4q98fdn03lmxs2cg4/pulls/8147510519894628620", + "method": "GET" + }, + "response": { + "status": 304 + }, + "uuid": "5b70cf93-554d-466d-8083-3358870f76d5", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.072568Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "pulls/get" + } + } + }, + "insertionIndex": 459 + }, + { + "id": "80054bfa-5e30-4013-8dda-6aafd2a6261a", + "name": "Get a pull request (application/json) - default", + "request": { + "urlPath": "/repos/dwvormigmnu85gz46jqyeee7q3ub9n6ii8p8k6s5xlusxdrz20auaxjifyj5yfpim2hqg4y6i68h9h5zs0rgavcycixm4c3xq6vwm8ejbiu2wt9z4ccyn2z87iv80j9baf3c7qh750r76jmvps52ghk3x440mbinq3is/ptucn3c7fv3r1diox2lz9gf7mpjegd96kx7x7e65yjspl974jt/pulls/2296069427902660768", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 200, + "body": "{\n \"_links\" : {\n \"comments\" : {\n \"href\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347/comments\"\n },\n \"commits\" : {\n \"href\" : \"https://api.github.com/repos/octocat/Hello-World/pulls/1347/commits\"\n },\n \"html\" : {\n \"href\" : \"https://github.com/octocat/Hello-World/pull/1347\"\n },\n \"issue\" : {\n \"href\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347\"\n },\n \"review_comment\" : {\n \"href\" : \"https://api.github.com/repos/octocat/Hello-World/pulls/comments{/number}\"\n },\n \"review_comments\" : {\n \"href\" : \"https://api.github.com/repos/octocat/Hello-World/pulls/1347/comments\"\n },\n \"self\" : {\n \"href\" : \"https://api.github.com/repos/octocat/Hello-World/pulls/1347\"\n },\n \"statuses\" : {\n \"href\" : \"https://api.github.com/repos/octocat/Hello-World/statuses/6dcb09b5b57875f334f61aebed695e2e4193db5e\"\n }\n },\n \"active_lock_reason\" : \"too heated\",\n \"additions\" : 100,\n \"assignee\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"assignees\" : [ {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n }, {\n \"avatar_url\" : \"https://github.com/images/error/hubot_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/hubot/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/hubot/followers\",\n \"following_url\" : \"https://api.github.com/users/hubot/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/hubot/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/hubot\",\n \"id\" : 1,\n \"login\" : \"hubot\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/hubot/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/hubot/received_events\",\n \"repos_url\" : \"https://api.github.com/users/hubot/repos\",\n \"site_admin\" : true,\n \"starred_url\" : \"https://api.github.com/users/hubot/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/hubot/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/hubot\"\n } ],\n \"author_association\" : \"OWNER\",\n \"base\" : {\n \"label\" : \"octocat:master\",\n \"ref\" : \"master\",\n \"repo\" : {\n \"allow_merge_commit\" : true,\n \"allow_rebase_merge\" : true,\n \"allow_squash_merge\" : true,\n \"anonymous_access_enabled\" : false,\n \"archive_url\" : \"https://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref}\",\n \"archived\" : false,\n \"assignees_url\" : \"https://api.github.com/repos/octocat/Hello-World/assignees{/user}\",\n \"blobs_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/blobs{/sha}\",\n \"branches_url\" : \"https://api.github.com/repos/octocat/Hello-World/branches{/branch}\",\n \"clone_url\" : \"https://github.com/octocat/Hello-World.git\",\n \"collaborators_url\" : \"https://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator}\",\n \"comments_url\" : \"https://api.github.com/repos/octocat/Hello-World/comments{/number}\",\n \"commits_url\" : \"https://api.github.com/repos/octocat/Hello-World/commits{/sha}\",\n \"compare_url\" : \"https://api.github.com/repos/octocat/Hello-World/compare/{base}...{head}\",\n \"contents_url\" : \"https://api.github.com/repos/octocat/Hello-World/contents/{+path}\",\n \"contributors_url\" : \"https://api.github.com/repos/octocat/Hello-World/contributors\",\n \"created_at\" : \"2011-01-26T19:01:12Z\",\n \"default_branch\" : \"master\",\n \"deployments_url\" : \"https://api.github.com/repos/octocat/Hello-World/deployments\",\n \"description\" : \"This your first repo!\",\n \"disabled\" : false,\n \"downloads_url\" : \"https://api.github.com/repos/octocat/Hello-World/downloads\",\n \"events_url\" : \"https://api.github.com/repos/octocat/Hello-World/events\",\n \"fork\" : false,\n \"forks\" : 123,\n \"forks_count\" : 9,\n \"forks_url\" : \"https://api.github.com/repos/octocat/Hello-World/forks\",\n \"full_name\" : \"octocat/Hello-World\",\n \"git_commits_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/commits{/sha}\",\n \"git_refs_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/refs{/sha}\",\n \"git_tags_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/tags{/sha}\",\n \"git_url\" : \"git:github.com/octocat/Hello-World.git\",\n \"has_downloads\" : true,\n \"has_issues\" : true,\n \"has_pages\" : false,\n \"has_projects\" : true,\n \"has_wiki\" : true,\n \"homepage\" : \"https://github.com\",\n \"hooks_url\" : \"https://api.github.com/repos/octocat/Hello-World/hooks\",\n \"html_url\" : \"https://github.com/octocat/Hello-World\",\n \"id\" : 1296269,\n \"issue_comment_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/comments{/number}\",\n \"issue_events_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/events{/number}\",\n \"issues_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues{/number}\",\n \"keys_url\" : \"https://api.github.com/repos/octocat/Hello-World/keys{/key_id}\",\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World/labels{/name}\",\n \"languages_url\" : \"https://api.github.com/repos/octocat/Hello-World/languages\",\n \"license\" : {\n \"key\" : \"mit\",\n \"name\" : \"MIT License\",\n \"node_id\" : \"MDc6TGljZW5zZW1pdA==\",\n \"spdx_id\" : \"MIT\",\n \"url\" : \"https://api.github.com/licenses/mit\"\n },\n \"merges_url\" : \"https://api.github.com/repos/octocat/Hello-World/merges\",\n \"milestones_url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones{/number}\",\n \"mirror_url\" : \"git:git.example.com/octocat/Hello-World\",\n \"name\" : \"Hello-World\",\n \"node_id\" : \"MDEwOlJlcG9zaXRvcnkxMjk2MjY5\",\n \"notifications_url\" : \"https://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating}\",\n \"open_issues\" : 123,\n \"open_issues_count\" : 0,\n \"owner\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"permissions\" : {\n \"admin\" : false,\n \"pull\" : true,\n \"push\" : false\n },\n \"private\" : false,\n \"pulls_url\" : \"https://api.github.com/repos/octocat/Hello-World/pulls{/number}\",\n \"pushed_at\" : \"2011-01-26T19:06:43Z\",\n \"releases_url\" : \"https://api.github.com/repos/octocat/Hello-World/releases{/id}\",\n \"size\" : 108,\n \"ssh_url\" : \"git@github.com:octocat/Hello-World.git\",\n \"stargazers_count\" : 80,\n \"stargazers_url\" : \"https://api.github.com/repos/octocat/Hello-World/stargazers\",\n \"statuses_url\" : \"https://api.github.com/repos/octocat/Hello-World/statuses/{sha}\",\n \"subscribers_url\" : \"https://api.github.com/repos/octocat/Hello-World/subscribers\",\n \"subscription_url\" : \"https://api.github.com/repos/octocat/Hello-World/subscription\",\n \"svn_url\" : \"https://svn.github.com/octocat/Hello-World\",\n \"tags_url\" : \"https://api.github.com/repos/octocat/Hello-World/tags\",\n \"teams_url\" : \"https://api.github.com/repos/octocat/Hello-World/teams\",\n \"topics\" : [ \"octocat\", \"atom\", \"electron\", \"api\" ],\n \"trees_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/trees{/sha}\",\n \"updated_at\" : \"2011-01-26T19:14:43Z\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World\",\n \"watchers\" : 123,\n \"watchers_count\" : 80\n },\n \"sha\" : \"6dcb09b5b57875f334f61aebed695e2e4193db5e\",\n \"user\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n }\n },\n \"body\" : \"Please pull these awesome changes in!\",\n \"changed_files\" : 5,\n \"closed_at\" : \"2011-01-26T19:01:12Z\",\n \"comments\" : 10,\n \"comments_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347/comments\",\n \"commits\" : 3,\n \"commits_url\" : \"https://api.github.com/repos/octocat/Hello-World/pulls/1347/commits\",\n \"created_at\" : \"2011-01-26T19:01:12Z\",\n \"deletions\" : 3,\n \"diff_url\" : \"https://github.com/octocat/Hello-World/pull/1347.diff\",\n \"draft\" : false,\n \"head\" : {\n \"label\" : \"octocat:new-topic\",\n \"ref\" : \"new-topic\",\n \"repo\" : {\n \"allow_forking\" : true,\n \"allow_merge_commit\" : true,\n \"allow_rebase_merge\" : true,\n \"allow_squash_merge\" : true,\n \"anonymous_access_enabled\" : false,\n \"archive_url\" : \"https://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref}\",\n \"archived\" : false,\n \"assignees_url\" : \"https://api.github.com/repos/octocat/Hello-World/assignees{/user}\",\n \"blobs_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/blobs{/sha}\",\n \"branches_url\" : \"https://api.github.com/repos/octocat/Hello-World/branches{/branch}\",\n \"clone_url\" : \"https://github.com/octocat/Hello-World.git\",\n \"collaborators_url\" : \"https://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator}\",\n \"comments_url\" : \"https://api.github.com/repos/octocat/Hello-World/comments{/number}\",\n \"commits_url\" : \"https://api.github.com/repos/octocat/Hello-World/commits{/sha}\",\n \"compare_url\" : \"https://api.github.com/repos/octocat/Hello-World/compare/{base}...{head}\",\n \"contents_url\" : \"https://api.github.com/repos/octocat/Hello-World/contents/{+path}\",\n \"contributors_url\" : \"https://api.github.com/repos/octocat/Hello-World/contributors\",\n \"created_at\" : \"2011-01-26T19:01:12Z\",\n \"default_branch\" : \"master\",\n \"deployments_url\" : \"https://api.github.com/repos/octocat/Hello-World/deployments\",\n \"description\" : \"This your first repo!\",\n \"disabled\" : false,\n \"downloads_url\" : \"https://api.github.com/repos/octocat/Hello-World/downloads\",\n \"events_url\" : \"https://api.github.com/repos/octocat/Hello-World/events\",\n \"fork\" : false,\n \"forks\" : 123,\n \"forks_count\" : 9,\n \"forks_url\" : \"https://api.github.com/repos/octocat/Hello-World/forks\",\n \"full_name\" : \"octocat/Hello-World\",\n \"git_commits_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/commits{/sha}\",\n \"git_refs_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/refs{/sha}\",\n \"git_tags_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/tags{/sha}\",\n \"git_url\" : \"git:github.com/octocat/Hello-World.git\",\n \"has_downloads\" : true,\n \"has_issues\" : true,\n \"has_pages\" : false,\n \"has_projects\" : true,\n \"has_wiki\" : true,\n \"homepage\" : \"https://github.com\",\n \"hooks_url\" : \"https://api.github.com/repos/octocat/Hello-World/hooks\",\n \"html_url\" : \"https://github.com/octocat/Hello-World\",\n \"id\" : 1296269,\n \"issue_comment_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/comments{/number}\",\n \"issue_events_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/events{/number}\",\n \"issues_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues{/number}\",\n \"keys_url\" : \"https://api.github.com/repos/octocat/Hello-World/keys{/key_id}\",\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World/labels{/name}\",\n \"languages_url\" : \"https://api.github.com/repos/octocat/Hello-World/languages\",\n \"license\" : {\n \"key\" : \"mit\",\n \"name\" : \"MIT License\",\n \"node_id\" : \"MDc6TGljZW5zZW1pdA==\",\n \"spdx_id\" : \"MIT\",\n \"url\" : \"https://api.github.com/licenses/mit\"\n },\n \"merges_url\" : \"https://api.github.com/repos/octocat/Hello-World/merges\",\n \"milestones_url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones{/number}\",\n \"mirror_url\" : \"git:git.example.com/octocat/Hello-World\",\n \"name\" : \"Hello-World\",\n \"node_id\" : \"MDEwOlJlcG9zaXRvcnkxMjk2MjY5\",\n \"notifications_url\" : \"https://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating}\",\n \"open_issues\" : 123,\n \"open_issues_count\" : 0,\n \"owner\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"permissions\" : {\n \"admin\" : false,\n \"pull\" : true,\n \"push\" : false\n },\n \"private\" : false,\n \"pulls_url\" : \"https://api.github.com/repos/octocat/Hello-World/pulls{/number}\",\n \"pushed_at\" : \"2011-01-26T19:06:43Z\",\n \"releases_url\" : \"https://api.github.com/repos/octocat/Hello-World/releases{/id}\",\n \"size\" : 108,\n \"ssh_url\" : \"git@github.com:octocat/Hello-World.git\",\n \"stargazers_count\" : 80,\n \"stargazers_url\" : \"https://api.github.com/repos/octocat/Hello-World/stargazers\",\n \"statuses_url\" : \"https://api.github.com/repos/octocat/Hello-World/statuses/{sha}\",\n \"subscribers_url\" : \"https://api.github.com/repos/octocat/Hello-World/subscribers\",\n \"subscription_url\" : \"https://api.github.com/repos/octocat/Hello-World/subscription\",\n \"svn_url\" : \"https://svn.github.com/octocat/Hello-World\",\n \"tags_url\" : \"https://api.github.com/repos/octocat/Hello-World/tags\",\n \"teams_url\" : \"https://api.github.com/repos/octocat/Hello-World/teams\",\n \"topics\" : [ \"octocat\", \"atom\", \"electron\", \"api\" ],\n \"trees_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/trees{/sha}\",\n \"updated_at\" : \"2011-01-26T19:14:43Z\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World\",\n \"watchers\" : 123,\n \"watchers_count\" : 80\n },\n \"sha\" : \"6dcb09b5b57875f334f61aebed695e2e4193db5e\",\n \"user\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n }\n },\n \"html_url\" : \"https://github.com/octocat/Hello-World/pull/1347\",\n \"id\" : 1,\n \"issue_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347\",\n \"labels\" : [ {\n \"color\" : \"f29513\",\n \"default\" : true,\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"name\" : \"bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/labels/bug\"\n } ],\n \"locked\" : true,\n \"maintainer_can_modify\" : true,\n \"merge_commit_sha\" : \"e5bd3914e2e596debea16f433f57875b5b90bcd6\",\n \"mergeable\" : true,\n \"mergeable_state\" : \"clean\",\n \"merged\" : false,\n \"merged_at\" : \"2011-01-26T19:01:12Z\",\n \"merged_by\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"milestone\" : {\n \"closed_at\" : \"2013-02-12T13:22:01Z\",\n \"closed_issues\" : 8,\n \"created_at\" : \"2011-04-10T20:09:31Z\",\n \"creator\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"description\" : \"Tracking milestone for version 1.0\",\n \"due_on\" : \"2012-10-09T23:39:01Z\",\n \"html_url\" : \"https://github.com/octocat/Hello-World/milestones/v1.0\",\n \"id\" : 1002604,\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones/1/labels\",\n \"node_id\" : \"MDk6TWlsZXN0b25lMTAwMjYwNA==\",\n \"number\" : 1,\n \"open_issues\" : 4,\n \"state\" : \"open\",\n \"title\" : \"v1.0\",\n \"updated_at\" : \"2014-03-03T18:58:10Z\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones/1\"\n },\n \"node_id\" : \"MDExOlB1bGxSZXF1ZXN0MQ==\",\n \"number\" : 1347,\n \"patch_url\" : \"https://github.com/octocat/Hello-World/pull/1347.patch\",\n \"rebaseable\" : true,\n \"requested_reviewers\" : [ {\n \"avatar_url\" : \"https://github.com/images/error/other_user_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/other_user/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/other_user/followers\",\n \"following_url\" : \"https://api.github.com/users/other_user/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/other_user/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/other_user\",\n \"id\" : 1,\n \"login\" : \"other_user\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/other_user/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/other_user/received_events\",\n \"repos_url\" : \"https://api.github.com/users/other_user/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/other_user/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/other_user/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/other_user\"\n } ],\n \"requested_teams\" : [ {\n \"description\" : \"A great team.\",\n \"html_url\" : \"https://github.com/orgs/github/teams/justice-league\",\n \"id\" : 1,\n \"members_url\" : \"https://api.github.com/teams/1/members{/member}\",\n \"name\" : \"Justice League\",\n \"node_id\" : \"MDQ6VGVhbTE=\",\n \"permission\" : \"admin\",\n \"privacy\" : \"closed\",\n \"repositories_url\" : \"https://api.github.com/teams/1/repos\",\n \"slug\" : \"justice-league\",\n \"url\" : \"https://api.github.com/teams/1\"\n } ],\n \"review_comment_url\" : \"https://api.github.com/repos/octocat/Hello-World/pulls/comments{/number}\",\n \"review_comments\" : 0,\n \"review_comments_url\" : \"https://api.github.com/repos/octocat/Hello-World/pulls/1347/comments\",\n \"state\" : \"open\",\n \"statuses_url\" : \"https://api.github.com/repos/octocat/Hello-World/statuses/6dcb09b5b57875f334f61aebed695e2e4193db5e\",\n \"title\" : \"Amazing new feature\",\n \"updated_at\" : \"2011-01-26T19:01:12Z\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/pulls/1347\",\n \"user\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n }\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "80054bfa-5e30-4013-8dda-6aafd2a6261a", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.072377Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "pulls/get", + "schema": { + "description": "Pull requests let you tell others about changes you've pushed to a repository on GitHub. Once a pull request is sent, interested parties can review the set of changes, discuss potential modifications, and even push follow-up commits if necessary.", + "properties": { + "_links": { + "properties": { + "comments": { + "$ref": "#/components/schemas/link" + }, + "commits": { + "$ref": "#/components/schemas/link" + }, + "html": { + "$ref": "#/components/schemas/link" + }, + "issue": { + "$ref": "#/components/schemas/link" + }, + "review_comment": { + "$ref": "#/components/schemas/link" + }, + "review_comments": { + "$ref": "#/components/schemas/link" + }, + "self": { + "$ref": "#/components/schemas/link" + }, + "statuses": { + "$ref": "#/components/schemas/link" + } + }, + "required": [ + "comments", + "commits", + "statuses", + "html", + "issue", + "review_comments", + "review_comment", + "self" + ], + "type": "object" + }, + "active_lock_reason": { + "example": "too heated", + "nullable": true, + "type": "string" + }, + "additions": { + "example": 100, + "type": "integer" + }, + "assignee": { + "$ref": "#/components/schemas/nullable-simple-user" + }, + "assignees": { + "items": { + "$ref": "#/components/schemas/simple-user" + }, + "nullable": true, + "type": "array" + }, + "author_association": { + "$ref": "#/components/schemas/author_association" + }, + "base": { + "properties": { + "label": { + "type": "string" + }, + "ref": { + "type": "string" + }, + "repo": { + "properties": { + "allow_forking": { + "type": "boolean" + }, + "allow_merge_commit": { + "type": "boolean" + }, + "allow_rebase_merge": { + "type": "boolean" + }, + "allow_squash_merge": { + "type": "boolean" + }, + "anonymous_access_enabled": { + "type": "boolean" + }, + "archive_url": { + "type": "string" + }, + "archived": { + "type": "boolean" + }, + "assignees_url": { + "type": "string" + }, + "blobs_url": { + "type": "string" + }, + "branches_url": { + "type": "string" + }, + "clone_url": { + "type": "string" + }, + "collaborators_url": { + "type": "string" + }, + "comments_url": { + "type": "string" + }, + "commits_url": { + "type": "string" + }, + "compare_url": { + "type": "string" + }, + "contents_url": { + "type": "string" + }, + "contributors_url": { + "format": "uri", + "type": "string" + }, + "created_at": { + "format": "date-time", + "type": "string" + }, + "default_branch": { + "type": "string" + }, + "deployments_url": { + "format": "uri", + "type": "string" + }, + "description": { + "nullable": true, + "type": "string" + }, + "disabled": { + "type": "boolean" + }, + "downloads_url": { + "format": "uri", + "type": "string" + }, + "events_url": { + "format": "uri", + "type": "string" + }, + "fork": { + "type": "boolean" + }, + "forks": { + "type": "integer" + }, + "forks_count": { + "type": "integer" + }, + "forks_url": { + "format": "uri", + "type": "string" + }, + "full_name": { + "type": "string" + }, + "git_commits_url": { + "type": "string" + }, + "git_refs_url": { + "type": "string" + }, + "git_tags_url": { + "type": "string" + }, + "git_url": { + "type": "string" + }, + "has_downloads": { + "type": "boolean" + }, + "has_issues": { + "type": "boolean" + }, + "has_pages": { + "type": "boolean" + }, + "has_projects": { + "type": "boolean" + }, + "has_wiki": { + "type": "boolean" + }, + "homepage": { + "format": "uri", + "nullable": true, + "type": "string" + }, + "hooks_url": { + "format": "uri", + "type": "string" + }, + "html_url": { + "format": "uri", + "type": "string" + }, + "id": { + "type": "integer" + }, + "issue_comment_url": { + "type": "string" + }, + "issue_events_url": { + "type": "string" + }, + "issues_url": { + "type": "string" + }, + "keys_url": { + "type": "string" + }, + "labels_url": { + "type": "string" + }, + "language": { + "nullable": true, + "type": "string" + }, + "languages_url": { + "format": "uri", + "type": "string" + }, + "license": { + "$ref": "#/components/schemas/nullable-license-simple" + }, + "master_branch": { + "type": "string" + }, + "merges_url": { + "format": "uri", + "type": "string" + }, + "milestones_url": { + "type": "string" + }, + "mirror_url": { + "format": "uri", + "nullable": true, + "type": "string" + }, + "name": { + "type": "string" + }, + "node_id": { + "type": "string" + }, + "notifications_url": { + "type": "string" + }, + "open_issues": { + "type": "integer" + }, + "open_issues_count": { + "type": "integer" + }, + "owner": { + "properties": { + "avatar_url": { + "format": "uri", + "type": "string" + }, + "events_url": { + "type": "string" + }, + "followers_url": { + "format": "uri", + "type": "string" + }, + "following_url": { + "type": "string" + }, + "gists_url": { + "type": "string" + }, + "gravatar_id": { + "nullable": true, + "type": "string" + }, + "html_url": { + "format": "uri", + "type": "string" + }, + "id": { + "type": "integer" + }, + "login": { + "type": "string" + }, + "node_id": { + "type": "string" + }, + "organizations_url": { + "format": "uri", + "type": "string" + }, + "received_events_url": { + "format": "uri", + "type": "string" + }, + "repos_url": { + "format": "uri", + "type": "string" + }, + "site_admin": { + "type": "boolean" + }, + "starred_url": { + "type": "string" + }, + "subscriptions_url": { + "format": "uri", + "type": "string" + }, + "type": { + "type": "string" + }, + "url": { + "format": "uri", + "type": "string" + } + }, + "required": [ + "avatar_url", + "events_url", + "followers_url", + "following_url", + "gists_url", + "gravatar_id", + "html_url", + "id", + "node_id", + "login", + "organizations_url", + "received_events_url", + "repos_url", + "site_admin", + "starred_url", + "subscriptions_url", + "type", + "url" + ], + "type": "object" + }, + "permissions": { + "properties": { + "admin": { + "type": "boolean" + }, + "maintain": { + "type": "boolean" + }, + "pull": { + "type": "boolean" + }, + "push": { + "type": "boolean" + }, + "triage": { + "type": "boolean" + } + }, + "required": ["admin", "pull", "push"], + "type": "object" + }, + "private": { + "type": "boolean" + }, + "pulls_url": { + "type": "string" + }, + "pushed_at": { + "format": "date-time", + "type": "string" + }, + "releases_url": { + "type": "string" + }, + "size": { + "type": "integer" + }, + "ssh_url": { + "type": "string" + }, + "stargazers_count": { + "type": "integer" + }, + "stargazers_url": { + "format": "uri", + "type": "string" + }, + "statuses_url": { + "type": "string" + }, + "subscribers_url": { + "format": "uri", + "type": "string" + }, + "subscription_url": { + "format": "uri", + "type": "string" + }, + "svn_url": { + "format": "uri", + "type": "string" + }, + "tags_url": { + "format": "uri", + "type": "string" + }, + "teams_url": { + "format": "uri", + "type": "string" + }, + "topics": { + "items": { + "type": "string" + }, + "type": "array" + }, + "trees_url": { + "type": "string" + }, + "updated_at": { + "format": "date-time", + "type": "string" + }, + "url": { + "format": "uri", + "type": "string" + }, + "watchers": { + "type": "integer" + }, + "watchers_count": { + "type": "integer" + } + }, + "required": [ + "archive_url", + "assignees_url", + "blobs_url", + "branches_url", + "collaborators_url", + "comments_url", + "commits_url", + "compare_url", + "contents_url", + "contributors_url", + "deployments_url", + "description", + "downloads_url", + "events_url", + "fork", + "forks_url", + "full_name", + "git_commits_url", + "git_refs_url", + "git_tags_url", + "hooks_url", + "html_url", + "id", + "node_id", + "issue_comment_url", + "issue_events_url", + "issues_url", + "keys_url", + "labels_url", + "languages_url", + "merges_url", + "milestones_url", + "name", + "notifications_url", + "owner", + "private", + "pulls_url", + "releases_url", + "stargazers_url", + "statuses_url", + "subscribers_url", + "subscription_url", + "tags_url", + "teams_url", + "trees_url", + "url", + "clone_url", + "default_branch", + "forks", + "forks_count", + "git_url", + "has_downloads", + "has_issues", + "has_projects", + "has_wiki", + "has_pages", + "homepage", + "language", + "archived", + "disabled", + "mirror_url", + "open_issues", + "open_issues_count", + "license", + "pushed_at", + "size", + "ssh_url", + "stargazers_count", + "svn_url", + "watchers", + "watchers_count", + "created_at", + "updated_at" + ], + "type": "object" + }, + "sha": { + "type": "string" + }, + "user": { + "properties": { + "avatar_url": { + "format": "uri", + "type": "string" + }, + "events_url": { + "type": "string" + }, + "followers_url": { + "format": "uri", + "type": "string" + }, + "following_url": { + "type": "string" + }, + "gists_url": { + "type": "string" + }, + "gravatar_id": { + "nullable": true, + "type": "string" + }, + "html_url": { + "format": "uri", + "type": "string" + }, + "id": { + "type": "integer" + }, + "login": { + "type": "string" + }, + "node_id": { + "type": "string" + }, + "organizations_url": { + "format": "uri", + "type": "string" + }, + "received_events_url": { + "format": "uri", + "type": "string" + }, + "repos_url": { + "format": "uri", + "type": "string" + }, + "site_admin": { + "type": "boolean" + }, + "starred_url": { + "type": "string" + }, + "subscriptions_url": { + "format": "uri", + "type": "string" + }, + "type": { + "type": "string" + }, + "url": { + "format": "uri", + "type": "string" + } + }, + "required": [ + "avatar_url", + "events_url", + "followers_url", + "following_url", + "gists_url", + "gravatar_id", + "html_url", + "id", + "node_id", + "login", + "organizations_url", + "received_events_url", + "repos_url", + "site_admin", + "starred_url", + "subscriptions_url", + "type", + "url" + ], + "type": "object" + } + }, + "required": ["label", "ref", "repo", "sha", "user"], + "type": "object" + }, + "body": { + "example": "Please pull these awesome changes", + "nullable": true, + "type": "string" + }, + "changed_files": { + "example": 5, + "type": "integer" + }, + "closed_at": { + "example": "2011-01-26T19:01:12Z", + "format": "date-time", + "nullable": true, + "type": "string" + }, + "comments": { + "example": 10, + "type": "integer" + }, + "comments_url": { + "example": "https://api.github.com/repos/octocat/Hello-World/issues/1347/comments", + "format": "uri", + "type": "string" + }, + "commits": { + "example": 3, + "type": "integer" + }, + "commits_url": { + "example": "https://api.github.com/repos/octocat/Hello-World/pulls/1347/commits", + "format": "uri", + "type": "string" + }, + "created_at": { + "example": "2011-01-26T19:01:12Z", + "format": "date-time", + "type": "string" + }, + "deletions": { + "example": 3, + "type": "integer" + }, + "diff_url": { + "example": "https://github.com/octocat/Hello-World/pull/1347.diff", + "format": "uri", + "type": "string" + }, + "draft": { + "description": "Indicates whether or not the pull request is a draft.", + "example": false, + "type": "boolean" + }, + "head": { + "properties": { + "label": { + "type": "string" + }, + "ref": { + "type": "string" + }, + "repo": { + "nullable": true, + "properties": { + "allow_forking": { + "type": "boolean" + }, + "allow_merge_commit": { + "type": "boolean" + }, + "allow_rebase_merge": { + "type": "boolean" + }, + "allow_squash_merge": { + "type": "boolean" + }, + "anonymous_access_enabled": { + "type": "boolean" + }, + "archive_url": { + "type": "string" + }, + "archived": { + "type": "boolean" + }, + "assignees_url": { + "type": "string" + }, + "blobs_url": { + "type": "string" + }, + "branches_url": { + "type": "string" + }, + "clone_url": { + "type": "string" + }, + "collaborators_url": { + "type": "string" + }, + "comments_url": { + "type": "string" + }, + "commits_url": { + "type": "string" + }, + "compare_url": { + "type": "string" + }, + "contents_url": { + "type": "string" + }, + "contributors_url": { + "format": "uri", + "type": "string" + }, + "created_at": { + "format": "date-time", + "type": "string" + }, + "default_branch": { + "type": "string" + }, + "deployments_url": { + "format": "uri", + "type": "string" + }, + "description": { + "nullable": true, + "type": "string" + }, + "disabled": { + "type": "boolean" + }, + "downloads_url": { + "format": "uri", + "type": "string" + }, + "events_url": { + "format": "uri", + "type": "string" + }, + "fork": { + "type": "boolean" + }, + "forks": { + "type": "integer" + }, + "forks_count": { + "type": "integer" + }, + "forks_url": { + "format": "uri", + "type": "string" + }, + "full_name": { + "type": "string" + }, + "git_commits_url": { + "type": "string" + }, + "git_refs_url": { + "type": "string" + }, + "git_tags_url": { + "type": "string" + }, + "git_url": { + "type": "string" + }, + "has_downloads": { + "type": "boolean" + }, + "has_issues": { + "type": "boolean" + }, + "has_pages": { + "type": "boolean" + }, + "has_projects": { + "type": "boolean" + }, + "has_wiki": { + "type": "boolean" + }, + "homepage": { + "format": "uri", + "nullable": true, + "type": "string" + }, + "hooks_url": { + "format": "uri", + "type": "string" + }, + "html_url": { + "format": "uri", + "type": "string" + }, + "id": { + "type": "integer" + }, + "issue_comment_url": { + "type": "string" + }, + "issue_events_url": { + "type": "string" + }, + "issues_url": { + "type": "string" + }, + "keys_url": { + "type": "string" + }, + "labels_url": { + "type": "string" + }, + "language": { + "nullable": true, + "type": "string" + }, + "languages_url": { + "format": "uri", + "type": "string" + }, + "license": { + "nullable": true, + "properties": { + "key": { + "type": "string" + }, + "name": { + "type": "string" + }, + "node_id": { + "type": "string" + }, + "spdx_id": { + "nullable": true, + "type": "string" + }, + "url": { + "format": "uri", + "nullable": true, + "type": "string" + } + }, + "required": ["key", "name", "url", "spdx_id", "node_id"], + "type": "object" + }, + "master_branch": { + "type": "string" + }, + "merges_url": { + "format": "uri", + "type": "string" + }, + "milestones_url": { + "type": "string" + }, + "mirror_url": { + "format": "uri", + "nullable": true, + "type": "string" + }, + "name": { + "type": "string" + }, + "node_id": { + "type": "string" + }, + "notifications_url": { + "type": "string" + }, + "open_issues": { + "type": "integer" + }, + "open_issues_count": { + "type": "integer" + }, + "owner": { + "properties": { + "avatar_url": { + "format": "uri", + "type": "string" + }, + "events_url": { + "type": "string" + }, + "followers_url": { + "format": "uri", + "type": "string" + }, + "following_url": { + "type": "string" + }, + "gists_url": { + "type": "string" + }, + "gravatar_id": { + "nullable": true, + "type": "string" + }, + "html_url": { + "format": "uri", + "type": "string" + }, + "id": { + "type": "integer" + }, + "login": { + "type": "string" + }, + "node_id": { + "type": "string" + }, + "organizations_url": { + "format": "uri", + "type": "string" + }, + "received_events_url": { + "format": "uri", + "type": "string" + }, + "repos_url": { + "format": "uri", + "type": "string" + }, + "site_admin": { + "type": "boolean" + }, + "starred_url": { + "type": "string" + }, + "subscriptions_url": { + "format": "uri", + "type": "string" + }, + "type": { + "type": "string" + }, + "url": { + "format": "uri", + "type": "string" + } + }, + "required": [ + "avatar_url", + "events_url", + "followers_url", + "following_url", + "gists_url", + "gravatar_id", + "html_url", + "id", + "node_id", + "login", + "organizations_url", + "received_events_url", + "repos_url", + "site_admin", + "starred_url", + "subscriptions_url", + "type", + "url" + ], + "type": "object" + }, + "permissions": { + "properties": { + "admin": { + "type": "boolean" + }, + "maintain": { + "type": "boolean" + }, + "pull": { + "type": "boolean" + }, + "push": { + "type": "boolean" + }, + "triage": { + "type": "boolean" + } + }, + "required": ["admin", "pull", "push"], + "type": "object" + }, + "private": { + "type": "boolean" + }, + "pulls_url": { + "type": "string" + }, + "pushed_at": { + "format": "date-time", + "type": "string" + }, + "releases_url": { + "type": "string" + }, + "size": { + "type": "integer" + }, + "ssh_url": { + "type": "string" + }, + "stargazers_count": { + "type": "integer" + }, + "stargazers_url": { + "format": "uri", + "type": "string" + }, + "statuses_url": { + "type": "string" + }, + "subscribers_url": { + "format": "uri", + "type": "string" + }, + "subscription_url": { + "format": "uri", + "type": "string" + }, + "svn_url": { + "format": "uri", + "type": "string" + }, + "tags_url": { + "format": "uri", + "type": "string" + }, + "teams_url": { + "format": "uri", + "type": "string" + }, + "topics": { + "items": { + "type": "string" + }, + "type": "array" + }, + "trees_url": { + "type": "string" + }, + "updated_at": { + "format": "date-time", + "type": "string" + }, + "url": { + "format": "uri", + "type": "string" + }, + "watchers": { + "type": "integer" + }, + "watchers_count": { + "type": "integer" + } + }, + "required": [ + "archive_url", + "assignees_url", + "blobs_url", + "branches_url", + "collaborators_url", + "comments_url", + "commits_url", + "compare_url", + "contents_url", + "contributors_url", + "deployments_url", + "description", + "downloads_url", + "events_url", + "fork", + "forks_url", + "full_name", + "git_commits_url", + "git_refs_url", + "git_tags_url", + "hooks_url", + "html_url", + "id", + "node_id", + "issue_comment_url", + "issue_events_url", + "issues_url", + "keys_url", + "labels_url", + "languages_url", + "merges_url", + "milestones_url", + "name", + "notifications_url", + "owner", + "private", + "pulls_url", + "releases_url", + "stargazers_url", + "statuses_url", + "subscribers_url", + "subscription_url", + "tags_url", + "teams_url", + "trees_url", + "url", + "clone_url", + "default_branch", + "forks", + "forks_count", + "git_url", + "has_downloads", + "has_issues", + "has_projects", + "has_wiki", + "has_pages", + "homepage", + "language", + "archived", + "disabled", + "mirror_url", + "open_issues", + "open_issues_count", + "license", + "pushed_at", + "size", + "ssh_url", + "stargazers_count", + "svn_url", + "watchers", + "watchers_count", + "created_at", + "updated_at" + ], + "type": "object" + }, + "sha": { + "type": "string" + }, + "user": { + "properties": { + "avatar_url": { + "format": "uri", + "type": "string" + }, + "events_url": { + "type": "string" + }, + "followers_url": { + "format": "uri", + "type": "string" + }, + "following_url": { + "type": "string" + }, + "gists_url": { + "type": "string" + }, + "gravatar_id": { + "nullable": true, + "type": "string" + }, + "html_url": { + "format": "uri", + "type": "string" + }, + "id": { + "type": "integer" + }, + "login": { + "type": "string" + }, + "node_id": { + "type": "string" + }, + "organizations_url": { + "format": "uri", + "type": "string" + }, + "received_events_url": { + "format": "uri", + "type": "string" + }, + "repos_url": { + "format": "uri", + "type": "string" + }, + "site_admin": { + "type": "boolean" + }, + "starred_url": { + "type": "string" + }, + "subscriptions_url": { + "format": "uri", + "type": "string" + }, + "type": { + "type": "string" + }, + "url": { + "format": "uri", + "type": "string" + } + }, + "required": [ + "avatar_url", + "events_url", + "followers_url", + "following_url", + "gists_url", + "gravatar_id", + "html_url", + "id", + "node_id", + "login", + "organizations_url", + "received_events_url", + "repos_url", + "site_admin", + "starred_url", + "subscriptions_url", + "type", + "url" + ], + "type": "object" + } + }, + "required": ["label", "ref", "repo", "sha", "user"], + "type": "object" + }, + "html_url": { + "example": "https://github.com/octocat/Hello-World/pull/1347", + "format": "uri", + "type": "string" + }, + "id": { + "example": 1, + "type": "integer" + }, + "issue_url": { + "example": "https://api.github.com/repos/octocat/Hello-World/issues/1347", + "format": "uri", + "type": "string" + }, + "labels": { + "items": { + "properties": { + "color": { + "type": "string" + }, + "default": { + "type": "boolean" + }, + "description": { + "nullable": true, + "type": "string" + }, + "id": { + "format": "int64", + "type": "integer" + }, + "name": { + "type": "string" + }, + "node_id": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "locked": { + "example": true, + "type": "boolean" + }, + "maintainer_can_modify": { + "description": "Indicates whether maintainers can modify the pull request.", + "example": true, + "type": "boolean" + }, + "merge_commit_sha": { + "example": "e5bd3914e2e596debea16f433f57875b5b90bcd6", + "nullable": true, + "type": "string" + }, + "mergeable": { + "example": true, + "nullable": true, + "type": "boolean" + }, + "mergeable_state": { + "example": "clean", + "type": "string" + }, + "merged": { + "type": "boolean" + }, + "merged_at": { + "example": "2011-01-26T19:01:12Z", + "format": "date-time", + "nullable": true, + "type": "string" + }, + "merged_by": { + "$ref": "#/components/schemas/nullable-simple-user" + }, + "milestone": { + "$ref": "#/components/schemas/nullable-milestone" + }, + "node_id": { + "example": "MDExOlB1bGxSZXF1ZXN0MQ==", + "type": "string" + }, + "number": { + "description": "Number uniquely identifying the pull request within its repository.", + "example": 42, + "type": "integer" + }, + "patch_url": { + "example": "https://github.com/octocat/Hello-World/pull/1347.patch", + "format": "uri", + "type": "string" + }, + "rebaseable": { + "example": true, + "nullable": true, + "type": "boolean" + }, + "requested_reviewers": { + "items": { + "$ref": "#/components/schemas/simple-user" + }, + "nullable": true, + "type": "array" + }, + "requested_teams": { + "items": { + "$ref": "#/components/schemas/team-simple" + }, + "nullable": true, + "type": "array" + }, + "review_comment_url": { + "example": "https://api.github.com/repos/octocat/Hello-World/pulls/comments{/number}", + "type": "string" + }, + "review_comments": { + "example": 0, + "type": "integer" + }, + "review_comments_url": { + "example": "https://api.github.com/repos/octocat/Hello-World/pulls/1347/comments", + "format": "uri", + "type": "string" + }, + "state": { + "description": "State of this Pull Request. Either `open` or `closed`.", + "enum": ["open", "closed"], + "example": "open", + "type": "string" + }, + "statuses_url": { + "example": "https://api.github.com/repos/octocat/Hello-World/statuses/6dcb09b5b57875f334f61aebed695e2e4193db5e", + "format": "uri", + "type": "string" + }, + "title": { + "description": "The title of the pull request.", + "example": "Amazing new feature", + "type": "string" + }, + "updated_at": { + "example": "2011-01-26T19:01:12Z", + "format": "date-time", + "type": "string" + }, + "url": { + "example": "https://api.github.com/repos/octocat/Hello-World/pulls/1347", + "format": "uri", + "type": "string" + }, + "user": { + "$ref": "#/components/schemas/nullable-simple-user" + } + }, + "required": [ + "_links", + "assignee", + "labels", + "base", + "body", + "closed_at", + "comments_url", + "commits_url", + "created_at", + "diff_url", + "head", + "html_url", + "id", + "node_id", + "issue_url", + "merge_commit_sha", + "merged_at", + "milestone", + "number", + "patch_url", + "review_comment_url", + "review_comments_url", + "statuses_url", + "state", + "locked", + "title", + "updated_at", + "url", + "user", + "author_association", + "additions", + "changed_files", + "comments", + "commits", + "deletions", + "mergeable", + "mergeable_state", + "merged", + "maintainer_can_modify", + "merged_by", + "review_comments" + ], + "title": "Pull Request", + "type": "object" + } + } + } + }, + "insertionIndex": 460 + }, + { + "id": "cbc42c0d-af38-4bed-bee6-12230a0cbbd5", + "name": "Delete a pull request comment reaction - 204", + "request": { + "urlPath": "/repos/tn01ztg50pvzlt9nkibjk0ucywuf4hl1dezrad3ckcshcovudvej0zmeeidwpxmj8926zwlh852tdw1wypiye57vayblev9ulzha8o/7gew4kt1o3spigqyigreugwm0tutttdx07b5ufn44ezp86p5m3htepakmd4l9n5ek64zqg1mr444xbm0unqjif64ybl6bqhx1ru2jjdk8j705du853ms6b6hlmao6iqj30k3fayijtvbvrs9so5o7floyg3/pulls/comments/8111851520147313458/reactions/6330782695810532104", + "method": "DELETE" + }, + "response": { + "status": 204 + }, + "uuid": "cbc42c0d-af38-4bed-bee6-12230a0cbbd5", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.070155Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "reactions/delete-for-pull-request-comment" + } + } + }, + "insertionIndex": 461 + }, + { + "id": "665dd295-6dda-41ad-ae08-a5cf9608b4d9", + "name": "Create reaction for a pull request review comment", + "request": { + "urlPath": "/repos/xiiu6lvp5g9wj3134b4mpz/mriz1ov1wzkq47wvffsn6gvkuie78qo4xbjjz9ikgrkyt5tyednc1jbm04ul435a0r9eg28rts9mi1u13sl1lzwe18283nob9nhjobqdfdhtjdscw1mcqqnneby1w1deaq1j04368m/pulls/comments/2434460853479921159/reactions", + "method": "POST" + }, + "response": { + "status": 422, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/521228\",\n \"message\" : \"Rerum molestias voluptates est eius molestiae. Perspiciatis aut ea eveniet optio magni. Id laudantium ullam. Sed quasi inventore est modi est.\",\n \"errors\" : [ {\n \"code\" : \"93v1nph5av45fxe02c9zotetkdjmycexeiuv84fs1yqh69fpcs0qs0ff3tjf7tzxuchjo2ra1cpww\",\n \"field\" : \"xtjfrcmgeyhz8agf61nbgke8njfsalcg0jivlwyyrnik61bjtcu6wpqm3d7cfllp4nv5nu1dvfx08cndbutbp6ncbsfojasitplnhb5bpmexymwftoow43aaj4b456rgopgf221q89m5dbt3hfhhxhzvz9o9myd3f\",\n \"resource\" : \"48oywumjatbg5as0zwb9tsfo7ort59zvdu846zts246hfsm4ojxa6wjijapvghue2pr2bsvz7a193b7mash9pusf14yjpnrx31k\",\n \"index\" : 6130505166826987829,\n \"message\" : \"Quia quia nisi cumque impedit ad occaecati mollitia. Ducimus perferendis magni dolores est. Ducimus pariatur aut vero dolor.\",\n \"value\" : { }\n } ]\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "665dd295-6dda-41ad-ae08-a5cf9608b4d9", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.070085Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "reactions/create-for-pull-request-review-comment", + "schema": { + "description": "Validation Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "errors": { + "items": { + "properties": { + "code": { + "type": "string" + }, + "field": { + "type": "string" + }, + "index": { + "type": "integer" + }, + "message": { + "type": "string" + }, + "resource": { + "type": "string" + }, + "value": { + "oneOf": [ + { + "nullable": true, + "type": "string" + }, + { + "nullable": true, + "type": "integer" + }, + { + "items": { + "type": "string" + }, + "nullable": true, + "type": "array" + } + ] + } + }, + "required": ["code"], + "type": "object" + }, + "type": "array" + }, + "message": { + "type": "string" + } + }, + "required": ["message", "documentation_url"], + "title": "Validation Error", + "type": "object" + } + } + } + }, + "insertionIndex": 462 + }, + { + "id": "477799eb-ed48-4742-b7f3-c9946a25ce85", + "name": "Create reaction for a pull request review comment", + "request": { + "urlPath": "/repos/tvxfwng9ho069mk70k5j49oi6cwvw1l32szoghpqiz9qntkctvgf5tqgbnm30pq8kqbuwx7eorpnv0btb498d2fbylwi03r24sfksnsq706pky4icomguvnbl/yao1oahhzihu09uwfhousg6m0ifwzoiqithbmema00tccm7rub49ohtwa0i3fiy7t32h/pulls/comments/3425253589356399873/reactions", + "method": "POST" + }, + "response": { + "status": 415, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/858256\",\n \"message\" : \"Expedita aut qui facilis accusamus. At quis sequi autem. Necessitatibus enim aut eligendi corporis temporibus velit. Nisi nemo debitis accusantium quod natus impedit. Enim corrupti sint voluptatibus i\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "477799eb-ed48-4742-b7f3-c9946a25ce85", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.06959Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "reactions/create-for-pull-request-review-comment", + "schema": { + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": ["message", "documentation_url"], + "type": "object" + } + } + } + }, + "insertionIndex": 463 + }, + { + "id": "bfc75b53-0aa6-4c05-9c25-f374f443390b", + "name": "Create reaction for a pull request review comment - default", + "request": { + "urlPath": "/repos/53tp3pl83pt1m41svvmqilqcfay39d4h6ogpjpj1cbwhfvjpb5jztrg720mcfrtzib6syf65yvi0r5kytfahgaou4zbbe7ysaghiroyaq6ks3v9vgc8wwlgk57mcvfa8u3bc2u6lakc3ywhpqh/e05g95pynoagmtq1d8jj4v34gf/pulls/comments/7358276540046604686/reactions", + "method": "POST" + }, + "response": { + "status": 201, + "body": "{\n \"content\" : \"heart\",\n \"created_at\" : \"2016-05-20T20:09:31Z\",\n \"id\" : 1,\n \"node_id\" : \"MDg6UmVhY3Rpb24x\",\n \"user\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n }\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "bfc75b53-0aa6-4c05-9c25-f374f443390b", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.069432Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "reactions/create-for-pull-request-review-comment", + "schema": { + "description": "Reactions to conversations provide a way to help people express their feelings more simply and effectively.", + "properties": { + "content": { + "description": "The reaction to use", + "enum": ["+1", "-1", "laugh", "confused", "heart", "hooray", "rocket", "eyes"], + "example": "heart", + "type": "string" + }, + "created_at": { + "example": "2016-05-20T20:09:31Z", + "format": "date-time", + "type": "string" + }, + "id": { + "example": 1, + "type": "integer" + }, + "node_id": { + "example": "MDg6UmVhY3Rpb24x", + "type": "string" + }, + "user": { + "$ref": "#/components/schemas/nullable-simple-user" + } + }, + "required": ["id", "node_id", "user", "content", "created_at"], + "title": "Reaction", + "type": "object" + } + } + } + }, + "insertionIndex": 464 + }, + { + "id": "9663f38f-825b-4aa4-a147-fce409f9b1ff", + "name": "Create reaction for a pull request review comment - default", + "request": { + "urlPath": "/repos/6stuqgxin7ibhi4bw7wpb5n6pohxqcrhyn44njh8q3crdk43yggdq7dpk/iovwygo3fszif5catrrozxciywx9rj9d7enppt/pulls/comments/3037247145098138532/reactions", + "method": "POST" + }, + "response": { + "status": 200, + "body": "{\n \"content\" : \"heart\",\n \"created_at\" : \"2016-05-20T20:09:31Z\",\n \"id\" : 1,\n \"node_id\" : \"MDg6UmVhY3Rpb24x\",\n \"user\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n }\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "9663f38f-825b-4aa4-a147-fce409f9b1ff", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.069342Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "reactions/create-for-pull-request-review-comment", + "schema": { + "description": "Reactions to conversations provide a way to help people express their feelings more simply and effectively.", + "properties": { + "content": { + "description": "The reaction to use", + "enum": ["+1", "-1", "laugh", "confused", "heart", "hooray", "rocket", "eyes"], + "example": "heart", + "type": "string" + }, + "created_at": { + "example": "2016-05-20T20:09:31Z", + "format": "date-time", + "type": "string" + }, + "id": { + "example": 1, + "type": "integer" + }, + "node_id": { + "example": "MDg6UmVhY3Rpb24x", + "type": "string" + }, + "user": { + "$ref": "#/components/schemas/nullable-simple-user" + } + }, + "required": ["id", "node_id", "user", "content", "created_at"], + "title": "Reaction", + "type": "object" + } + } + } + }, + "insertionIndex": 465 + }, + { + "id": "9a9bcc74-b2f7-4440-8eaa-3e4f1456fe2f", + "name": "List reactions for a pull request review comment", + "request": { + "urlPath": "/repos/z1s831jscjiu09cvzk8rg78ku87970npa7z33tgv9kzedpr2a6ltk22z99s93k1xlpx9esbzs8820hp0ygvf52kfj33pshhrclssm1d7q9j0fx3hgf7h6fi30qa32xdtmrmto22siofttxoq0mta3c2z7ro89b/85lh6niwr0fsuwstwnsun8iy0zpn0d7sw6wjd6vo3pzdnkz0gq0q6jj6ddr69seegsc3ij62e4ky5gkcmznb9r7p2etqbmqnm2ci9vh8ugq37svzknl9wousryds15lc18cf0iswpiqj3rg8l/pulls/comments/8876509331078139889/reactions", + "method": "GET" + }, + "response": { + "status": 415, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/809925\",\n \"message\" : \"Autem ipsum illum quasi. Expedita aperiam sunt id quidem ut et dolor. Pariatur vero voluptatum vitae iure est doloremque. Ipsa dolores aut voluptatibus est libero vel labore. Earum provident possimus \"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "9a9bcc74-b2f7-4440-8eaa-3e4f1456fe2f", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.069246Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "reactions/list-for-pull-request-review-comment", + "schema": { + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": ["message", "documentation_url"], + "type": "object" + } + } + } + }, + "insertionIndex": 466 + }, + { + "id": "a292dc1e-20e0-4832-91a3-63958c8ddd9f", + "name": "List reactions for a pull request review comment", + "request": { + "urlPath": "/repos/df0xcgv5meq8yp50p/kyr0gvg6srq5udn8lh1xs99ykapvf6s2z43dphd/pulls/comments/3853601044344417097/reactions", + "method": "GET" + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/731066\",\n \"message\" : \"Quo libero error magni quia ipsa maiores. Distinctio non molestiae. Nemo voluptas magni vero maiores.\",\n \"url\" : \"https://web.example.mocklab.io/744939\",\n \"status\" : \"ffvrpkpkoulztcb2oum3m05ftnc0nih6f7h22gdhetf7d5m3dt3brac22armax153hec9chzkpostq\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "a292dc1e-20e0-4832-91a3-63958c8ddd9f", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.06907Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "reactions/list-for-pull-request-review-comment", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 467 + }, + { + "id": "07d4fad2-b9cc-4b43-817b-c3ab2b9bde63", + "name": "List reactions for a pull request review comment - default", + "request": { + "urlPath": "/repos/l5ar4m93r3wnmtvm1d0whggbshje0w47gnj8gyof499mih4y1rgjlgzxsjhraqrhz9/0fsvhzs0qo84qgr76i16e2e1lt204sl6e8enea9zd5wgjt0144kxskqvcgxkjf0z2v9y9s6d0ysklh23fib50vv/pulls/comments/8681803827861204498/reactions", + "method": "GET" + }, + "response": { + "status": 200, + "body": "[ {\n \"content\" : \"heart\",\n \"created_at\" : \"2016-05-20T20:09:31Z\",\n \"id\" : 1,\n \"node_id\" : \"MDg6UmVhY3Rpb24x\",\n \"user\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n }\n} ]", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "07d4fad2-b9cc-4b43-817b-c3ab2b9bde63", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.068804Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "reactions/list-for-pull-request-review-comment", + "schema": { + "items": { + "$ref": "#/components/schemas/reaction" + }, + "type": "array" + } + } + } + }, + "insertionIndex": 468 + }, + { + "id": "bb791d23-12ac-4598-9cf0-2ca258492ccf", + "name": "Update a review comment for a pull request - default", + "request": { + "urlPath": "/repos/sydfjczg07s4tv7alf1khj9ici866/37rthigdobaze1ig29uxhuydxpvtfa3vjx7kds7l73mx56zufsbttzac182bzk5mh6njrdjj1e9w48ijny83u5c2y05f9arax8d98iy7q0afa2l/pulls/comments/1656158816983251579", + "method": "PATCH" + }, + "response": { + "status": 200, + "body": "{\n \"_links\" : {\n \"html\" : {\n \"href\" : \"https://github.com/octocat/Hello-World/pull/1#discussion-diff-1\"\n },\n \"pull_request\" : {\n \"href\" : \"https://api.github.com/repos/octocat/Hello-World/pulls/1\"\n },\n \"self\" : {\n \"href\" : \"https://api.github.com/repos/octocat/Hello-World/pulls/comments/1\"\n }\n },\n \"author_association\" : \"NONE\",\n \"body\" : \"Great stuff!\",\n \"commit_id\" : \"6dcb09b5b57875f334f61aebed695e2e4193db5e\",\n \"created_at\" : \"2011-04-14T16:00:49Z\",\n \"diff_hunk\" : \"@@ -16,33 +16,40 @@ public class Connection : IConnection...\",\n \"html_url\" : \"https://github.com/octocat/Hello-World/pull/1#discussion-diff-1\",\n \"id\" : 10,\n \"in_reply_to_id\" : 8,\n \"line\" : 2,\n \"node_id\" : \"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDEw\",\n \"original_commit_id\" : \"9c48853fa3dc5c1c3d6f1f1cd1f2743e72652840\",\n \"original_line\" : 2,\n \"original_position\" : 4,\n \"original_start_line\" : 1,\n \"path\" : \"file1.txt\",\n \"position\" : 1,\n \"pull_request_review_id\" : 42,\n \"pull_request_url\" : \"https://api.github.com/repos/octocat/Hello-World/pulls/1\",\n \"side\" : \"RIGHT\",\n \"start_line\" : 1,\n \"start_side\" : \"RIGHT\",\n \"updated_at\" : \"2011-04-14T16:00:49Z\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/pulls/comments/1\",\n \"user\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n }\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "bb791d23-12ac-4598-9cf0-2ca258492ccf", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.06872Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "pulls/update-review-comment", + "schema": { + "description": "Pull Request Review Comments are comments on a portion of the Pull Request's diff.", + "properties": { + "_links": { + "properties": { + "html": { + "properties": { + "href": { + "example": "https://github.com/octocat/Hello-World/pull/1#discussion-diff-1", + "format": "uri", + "type": "string" + } + }, + "required": ["href"], + "type": "object" + }, + "pull_request": { + "properties": { + "href": { + "example": "https://api.github.com/repos/octocat/Hello-World/pulls/1", + "format": "uri", + "type": "string" + } + }, + "required": ["href"], + "type": "object" + }, + "self": { + "properties": { + "href": { + "example": "https://api.github.com/repos/octocat/Hello-World/pulls/comments/1", + "format": "uri", + "type": "string" + } + }, + "required": ["href"], + "type": "object" + } + }, + "required": ["self", "html", "pull_request"], + "type": "object" + }, + "author_association": { + "$ref": "#/components/schemas/author_association" + }, + "body": { + "description": "The text of the comment.", + "example": "We should probably include a check for null values here.", + "type": "string" + }, + "body_html": { + "example": "\"

comment body

\"", + "type": "string" + }, + "body_text": { + "example": "\"comment body\"", + "type": "string" + }, + "commit_id": { + "description": "The SHA of the commit to which the comment applies.", + "example": "6dcb09b5b57875f334f61aebed695e2e4193db5e", + "type": "string" + }, + "created_at": { + "example": "2011-04-14T16:00:49Z", + "format": "date-time", + "type": "string" + }, + "diff_hunk": { + "description": "The diff of the line that the comment refers to.", + "example": "@@ -16,33 +16,40 @@ public class Connection : IConnection...", + "type": "string" + }, + "html_url": { + "description": "HTML URL for the pull request review comment.", + "example": "https://github.com/octocat/Hello-World/pull/1#discussion-diff-1", + "format": "uri", + "type": "string" + }, + "id": { + "description": "The ID of the pull request review comment.", + "example": 1, + "type": "integer" + }, + "in_reply_to_id": { + "description": "The comment ID to reply to.", + "example": 8, + "type": "integer" + }, + "line": { + "description": "The line of the blob to which the comment applies. The last line of the range for a multi-line comment", + "example": 2, + "type": "integer" + }, + "node_id": { + "description": "The node ID of the pull request review comment.", + "example": "MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDEw", + "type": "string" + }, + "original_commit_id": { + "description": "The SHA of the original commit to which the comment applies.", + "example": "9c48853fa3dc5c1c3d6f1f1cd1f2743e72652840", + "type": "string" + }, + "original_line": { + "description": "The line of the blob to which the comment applies. The last line of the range for a multi-line comment", + "example": 2, + "type": "integer" + }, + "original_position": { + "description": "The index of the original line in the diff to which the comment applies.", + "example": 4, + "type": "integer" + }, + "original_start_line": { + "description": "The first line of the range for a multi-line comment.", + "example": 2, + "nullable": true, + "type": "integer" + }, + "path": { + "description": "The relative path of the file to which the comment applies.", + "example": "config/database.yaml", + "type": "string" + }, + "position": { + "description": "The line index in the diff to which the comment applies.", + "example": 1, + "type": "integer" + }, + "pull_request_review_id": { + "description": "The ID of the pull request review to which the comment belongs.", + "example": 42, + "nullable": true, + "type": "integer" + }, + "pull_request_url": { + "description": "URL for the pull request that the review comment belongs to.", + "example": "https://api.github.com/repos/octocat/Hello-World/pulls/1", + "format": "uri", + "type": "string" + }, + "reactions": { + "$ref": "#/components/schemas/reaction-rollup" + }, + "side": { + "default": "RIGHT", + "description": "The side of the diff to which the comment applies. The side of the last line of the range for a multi-line comment", + "enum": ["LEFT", "RIGHT"], + "type": "string" + }, + "start_line": { + "description": "The first line of the range for a multi-line comment.", + "example": 2, + "nullable": true, + "type": "integer" + }, + "start_side": { + "default": "RIGHT", + "description": "The side of the first line of the range for a multi-line comment.", + "enum": ["LEFT", "RIGHT"], + "nullable": true, + "type": "string" + }, + "updated_at": { + "example": "2011-04-14T16:00:49Z", + "format": "date-time", + "type": "string" + }, + "url": { + "description": "URL for the pull request review comment", + "example": "https://api.github.com/repos/octocat/Hello-World/pulls/comments/1", + "type": "string" + }, + "user": { + "$ref": "#/components/schemas/simple-user" + } + }, + "required": [ + "url", + "id", + "node_id", + "pull_request_review_id", + "diff_hunk", + "path", + "position", + "original_position", + "commit_id", + "original_commit_id", + "user", + "body", + "created_at", + "updated_at", + "html_url", + "pull_request_url", + "author_association", + "_links" + ], + "title": "Pull Request Review Comment", + "type": "object" + } + } + } + }, + "insertionIndex": 469 + }, + { + "id": "bdd52030-1ef4-46a3-b396-fa5a181bf449", + "name": "Get a review comment for a pull request", + "request": { + "urlPath": "/repos/ua634wauehjn4vic6xdnkop4tgdn1nzxidst2u8wgl8ewfeokt2vq7mvcdbposzr8y1hh0klp0p02rjdv9obmo2zskj0i4nepe1b8tlx90h9e0mpbnuoujwj5xlh4nesbubz52yb40duvl3gyddx0f2dclwymsijkg36dmxwzog6nf/zso1265e0x1spk7vcdn6/pulls/comments/8384547918579467576", + "method": "GET" + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/763998\",\n \"message\" : \"Nobis harum ea quis quod cumque corporis. Inventore perspiciatis iste dolorum. Id omnis dolor ut.\",\n \"url\" : \"https://web.example.mocklab.io/984474\",\n \"status\" : \"8b4imaz3mllp098fxovm51dmisy712drutpunwozuj0702pfrw7a9zu07ytksgjdqw9rr205uyo79zoguzlpmes4akf4iskmkw562vlo8rp4ccnpx507jy1i62bs5bj0xk59z7a56iuccl0vt5xwhvz9n36cm4y2olsxvzf2su7pcqp5konklt8xtbbfl275mruqidkn\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "bdd52030-1ef4-46a3-b396-fa5a181bf449", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.068455Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "pulls/get-review-comment", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 470 + }, + { + "id": "4f8bd19c-8dcc-44b6-8f1b-9eda093926e3", + "name": "Get a review comment for a pull request - default", + "request": { + "urlPath": "/repos/qtybsg7ewczl6e3bfcsajc252h2ct2c3vk3rbt5eperqh5ewjr9f61vo/27ru9w4yo4y5v068tskr48qic9kpwjmw77379909z8psxtka3apgjbbiz3fzi6v3o0x4ze7cqhpzxeyojy6qpr0t71ww1kiyw0nwj00u5356cem0woad371hh10r5t9jb184geztwu1eyvi4nom109rriga0yy9nxaxubk/pulls/comments/1492555475353310908", + "method": "GET" + }, + "response": { + "status": 200, + "body": "{\n \"_links\" : {\n \"html\" : {\n \"href\" : \"https://github.com/octocat/Hello-World/pull/1#discussion-diff-1\"\n },\n \"pull_request\" : {\n \"href\" : \"https://api.github.com/repos/octocat/Hello-World/pulls/1\"\n },\n \"self\" : {\n \"href\" : \"https://api.github.com/repos/octocat/Hello-World/pulls/comments/1\"\n }\n },\n \"author_association\" : \"NONE\",\n \"body\" : \"Great stuff!\",\n \"commit_id\" : \"6dcb09b5b57875f334f61aebed695e2e4193db5e\",\n \"created_at\" : \"2011-04-14T16:00:49Z\",\n \"diff_hunk\" : \"@@ -16,33 +16,40 @@ public class Connection : IConnection...\",\n \"html_url\" : \"https://github.com/octocat/Hello-World/pull/1#discussion-diff-1\",\n \"id\" : 10,\n \"in_reply_to_id\" : 8,\n \"line\" : 2,\n \"node_id\" : \"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDEw\",\n \"original_commit_id\" : \"9c48853fa3dc5c1c3d6f1f1cd1f2743e72652840\",\n \"original_line\" : 2,\n \"original_position\" : 4,\n \"original_start_line\" : 1,\n \"path\" : \"file1.txt\",\n \"position\" : 1,\n \"pull_request_review_id\" : 42,\n \"pull_request_url\" : \"https://api.github.com/repos/octocat/Hello-World/pulls/1\",\n \"side\" : \"RIGHT\",\n \"start_line\" : 1,\n \"start_side\" : \"RIGHT\",\n \"updated_at\" : \"2011-04-14T16:00:49Z\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/pulls/comments/1\",\n \"user\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n }\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "4f8bd19c-8dcc-44b6-8f1b-9eda093926e3", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.068173Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "pulls/get-review-comment", + "schema": { + "description": "Pull Request Review Comments are comments on a portion of the Pull Request's diff.", + "properties": { + "_links": { + "properties": { + "html": { + "properties": { + "href": { + "example": "https://github.com/octocat/Hello-World/pull/1#discussion-diff-1", + "format": "uri", + "type": "string" + } + }, + "required": ["href"], + "type": "object" + }, + "pull_request": { + "properties": { + "href": { + "example": "https://api.github.com/repos/octocat/Hello-World/pulls/1", + "format": "uri", + "type": "string" + } + }, + "required": ["href"], + "type": "object" + }, + "self": { + "properties": { + "href": { + "example": "https://api.github.com/repos/octocat/Hello-World/pulls/comments/1", + "format": "uri", + "type": "string" + } + }, + "required": ["href"], + "type": "object" + } + }, + "required": ["self", "html", "pull_request"], + "type": "object" + }, + "author_association": { + "$ref": "#/components/schemas/author_association" + }, + "body": { + "description": "The text of the comment.", + "example": "We should probably include a check for null values here.", + "type": "string" + }, + "body_html": { + "example": "\"

comment body

\"", + "type": "string" + }, + "body_text": { + "example": "\"comment body\"", + "type": "string" + }, + "commit_id": { + "description": "The SHA of the commit to which the comment applies.", + "example": "6dcb09b5b57875f334f61aebed695e2e4193db5e", + "type": "string" + }, + "created_at": { + "example": "2011-04-14T16:00:49Z", + "format": "date-time", + "type": "string" + }, + "diff_hunk": { + "description": "The diff of the line that the comment refers to.", + "example": "@@ -16,33 +16,40 @@ public class Connection : IConnection...", + "type": "string" + }, + "html_url": { + "description": "HTML URL for the pull request review comment.", + "example": "https://github.com/octocat/Hello-World/pull/1#discussion-diff-1", + "format": "uri", + "type": "string" + }, + "id": { + "description": "The ID of the pull request review comment.", + "example": 1, + "type": "integer" + }, + "in_reply_to_id": { + "description": "The comment ID to reply to.", + "example": 8, + "type": "integer" + }, + "line": { + "description": "The line of the blob to which the comment applies. The last line of the range for a multi-line comment", + "example": 2, + "type": "integer" + }, + "node_id": { + "description": "The node ID of the pull request review comment.", + "example": "MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDEw", + "type": "string" + }, + "original_commit_id": { + "description": "The SHA of the original commit to which the comment applies.", + "example": "9c48853fa3dc5c1c3d6f1f1cd1f2743e72652840", + "type": "string" + }, + "original_line": { + "description": "The line of the blob to which the comment applies. The last line of the range for a multi-line comment", + "example": 2, + "type": "integer" + }, + "original_position": { + "description": "The index of the original line in the diff to which the comment applies.", + "example": 4, + "type": "integer" + }, + "original_start_line": { + "description": "The first line of the range for a multi-line comment.", + "example": 2, + "nullable": true, + "type": "integer" + }, + "path": { + "description": "The relative path of the file to which the comment applies.", + "example": "config/database.yaml", + "type": "string" + }, + "position": { + "description": "The line index in the diff to which the comment applies.", + "example": 1, + "type": "integer" + }, + "pull_request_review_id": { + "description": "The ID of the pull request review to which the comment belongs.", + "example": 42, + "nullable": true, + "type": "integer" + }, + "pull_request_url": { + "description": "URL for the pull request that the review comment belongs to.", + "example": "https://api.github.com/repos/octocat/Hello-World/pulls/1", + "format": "uri", + "type": "string" + }, + "reactions": { + "$ref": "#/components/schemas/reaction-rollup" + }, + "side": { + "default": "RIGHT", + "description": "The side of the diff to which the comment applies. The side of the last line of the range for a multi-line comment", + "enum": ["LEFT", "RIGHT"], + "type": "string" + }, + "start_line": { + "description": "The first line of the range for a multi-line comment.", + "example": 2, + "nullable": true, + "type": "integer" + }, + "start_side": { + "default": "RIGHT", + "description": "The side of the first line of the range for a multi-line comment.", + "enum": ["LEFT", "RIGHT"], + "nullable": true, + "type": "string" + }, + "updated_at": { + "example": "2011-04-14T16:00:49Z", + "format": "date-time", + "type": "string" + }, + "url": { + "description": "URL for the pull request review comment", + "example": "https://api.github.com/repos/octocat/Hello-World/pulls/comments/1", + "type": "string" + }, + "user": { + "$ref": "#/components/schemas/simple-user" + } + }, + "required": [ + "url", + "id", + "node_id", + "pull_request_review_id", + "diff_hunk", + "path", + "position", + "original_position", + "commit_id", + "original_commit_id", + "user", + "body", + "created_at", + "updated_at", + "html_url", + "pull_request_url", + "author_association", + "_links" + ], + "title": "Pull Request Review Comment", + "type": "object" + } + } + } + }, + "insertionIndex": 471 + }, + { + "id": "6a0adcc0-eb8d-450a-b0e3-9d4544e85ef1", + "name": "Delete a review comment for a pull request (application/json)", + "request": { + "urlPath": "/repos/6vw8tv9k0fj22cl31qv9fob1xkjqps8m6zgae2ges9bo8inhcytigshgq4dvt4vl99qf8g8njw08bxizv0xz05hjgrd18axj9nz2ahde1vr8nokhqmk8qckcsj60372m4nift6jsqmqbyr7u9qomfkm54as42mgvt3cilva5rh9ayzc31jdg2q3y12ke8w69guw8p/98b7bmeq249n3946lly29vcg2r005n6axpf9qkz764nyxrpjjvz2uauied3nodlqegu0pct7ma8vfaz953pu/pulls/comments/5903844411945602186", + "method": "DELETE", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/136829\",\n \"message\" : \"Corrupti accusantium nam earum nihil voluptatem. Eos harum ea ipsum exercitationem. Omnis facilis et. Esse quia veritatis sed. Atque voluptas distinctio.\",\n \"url\" : \"https://web.example.mocklab.io/025686\",\n \"status\" : \"6qzl192230ezzuiblrzl7agakz40vn5rpbfi48vb00asii63zcp3mul9j0ktx0slb2fg4xpphezzj9hpi1rbclm4j5pvfmjc415jt01dljjcbkqe\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "6a0adcc0-eb8d-450a-b0e3-9d4544e85ef1", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.067849Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "pulls/delete-review-comment", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 472 + }, + { + "id": "dbbf0946-84d5-4471-bda5-e9ff7da331c9", + "name": "Delete a review comment for a pull request - 204", + "request": { + "urlPath": "/repos/argyy2hk0gzpc7rdp33y2e1dmubud07skpffoqz3kqka5dt79uz2/fy8n0a4b/pulls/comments/3201195740950691876", + "method": "DELETE" + }, + "response": { + "status": 204 + }, + "uuid": "dbbf0946-84d5-4471-bda5-e9ff7da331c9", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.067542Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "pulls/delete-review-comment" + } + } + }, + "insertionIndex": 473 + }, + { + "id": "89b216ca-1ef9-47a3-9ed2-5178d277d402", + "name": "List review comments in a repository - default", + "request": { + "urlPath": "/repos/51p1gyh4uitewggr0qwikq38frtov158mf6xmxwpnqwqx6xw01h9prkdaxzwh3mgpgswn2c3prlgt4iytat7mfz57m2ccvdxklcptwc7bni78vp6z3lzyk48v09f0mcujl9hpt7jddlnu794ma9h3qgr9l96/unlxnthbmjccsom2bxgxwm7r8jh5cn1q4wauf7sj9nrsp5oe2m2g2wufv783i1yy92uf4q/pulls/comments", + "method": "GET" + }, + "response": { + "status": 200, + "body": "[ {\n \"_links\" : {\n \"html\" : {\n \"href\" : \"https://github.com/octocat/Hello-World/pull/1#discussion-diff-1\"\n },\n \"pull_request\" : {\n \"href\" : \"https://api.github.com/repos/octocat/Hello-World/pulls/1\"\n },\n \"self\" : {\n \"href\" : \"https://api.github.com/repos/octocat/Hello-World/pulls/comments/1\"\n }\n },\n \"author_association\" : \"NONE\",\n \"body\" : \"Great stuff!\",\n \"commit_id\" : \"6dcb09b5b57875f334f61aebed695e2e4193db5e\",\n \"created_at\" : \"2011-04-14T16:00:49Z\",\n \"diff_hunk\" : \"@@ -16,33 +16,40 @@ public class Connection : IConnection...\",\n \"html_url\" : \"https://github.com/octocat/Hello-World/pull/1#discussion-diff-1\",\n \"id\" : 10,\n \"in_reply_to_id\" : 8,\n \"line\" : 2,\n \"node_id\" : \"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDEw\",\n \"original_commit_id\" : \"9c48853fa3dc5c1c3d6f1f1cd1f2743e72652840\",\n \"original_line\" : 2,\n \"original_position\" : 4,\n \"original_start_line\" : 1,\n \"path\" : \"file1.txt\",\n \"position\" : 1,\n \"pull_request_review_id\" : 42,\n \"pull_request_url\" : \"https://api.github.com/repos/octocat/Hello-World/pulls/1\",\n \"side\" : \"RIGHT\",\n \"start_line\" : 1,\n \"start_side\" : \"RIGHT\",\n \"updated_at\" : \"2011-04-14T16:00:49Z\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/pulls/comments/1\",\n \"user\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n }\n} ]", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "89b216ca-1ef9-47a3-9ed2-5178d277d402", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.06749Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "pulls/list-review-comments-for-repo", + "schema": { + "items": { + "$ref": "#/components/schemas/pull-request-review-comment" + }, + "type": "array" + } + } + } + }, + "insertionIndex": 474 + }, + { + "id": "48e87662-87c9-477c-9776-a9410542024c", + "name": "Create a pull request", + "request": { + "urlPath": "/repos/xt5eetr69jungjveys3r7hnskw94mjmcubzdsjgldh9qkagpnho8sp2jbe9afqs01ozdcym88n80itz29daooqk9j4vsbdy3juztpg/luntfn09z4f99fsji26ckto5aiwsyew6wq27ea2qavhs9zzc0c3p9p1wxh2ksm7ffla4phdsmybvmtyjtyj74pdab5ca6zumjbg0y/pulls", + "method": "POST" + }, + "response": { + "status": 422, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/254316\",\n \"message\" : \"Assumenda vel nemo earum iusto esse. Facilis dolorem voluptatem dolorum quos. Sit odio dolorum quis. Totam illum qui. Eum qui qui tempore eos ipsa corrupti ut.\",\n \"errors\" : [ {\n \"code\" : \"c80ja1hibz012j0kxs4\",\n \"field\" : \"ffhv4wtci1o4juyok61cg9rt0veiour04ck2305mlvqu9wk3mtxs0eushfwxd1etjuznzujgu7dkhx57qn3w9qhpzbou1dytzttjbe8kp18lmhhrjwn5ge0a54g1z6syklv6mn3gnloerzhzm90292nxjdt91v2p3b5juesyw0lva5zuxhfgblboae\",\n \"resource\" : \"g8eicxikzxgvgbjpkhkxtwp87quis38q0u9gon2e4vokdsiiqgkyjxh33jrgnhneo9sm6si7r7opnu33ieu2xsqjmsjlividhn31cuurovxwj11nd4e41qaf1vm299kc\",\n \"index\" : 3427519680816604656,\n \"message\" : \"Ducimus quos inventore et repellat eum. Alias rerum adipisci veniam tempore minima. Et voluptas et voluptas enim dolores omnis perferendis. Omnis reiciendis ab deleniti.\",\n \"value\" : { }\n }, {\n \"code\" : \"gt72sdpcvf8sektiqoro53k9cb1uxslaxgcq39fyfwx45x78iplecw60jteh5vdvk97qzqir5oswqfp1jbigq34edcsv0yxxetk4kwkwkj19w4mskqz4zxbk252j7xnyxfqy5ws7snt5sfa6ih7sqzp973516le14hdev8m8uyc1jg96m57187rujw1c8wmz\",\n \"field\" : \"n14yblengxlr5dvrq7xhkoxusaoyvn1ffpx9v0tfc0lbw7z02extkdovv2zjaog62peq4cr6060fyz3h4t11862scuemclii32win2kzvldh2actmibdfypeneuhj6vv0p0vfxeeaycvtz5l6epdmtyksp9mbomjr3p2t1bx1053ymjxe1adzjgba4d\",\n \"resource\" : \"mowryxichp9ln8npuwy55lwzaz5yhzwdq7ii6nspf8rtt593ch0vri89\",\n \"index\" : 6418996153828509456,\n \"message\" : \"Earum unde aut quam unde quaerat soluta. Dolorem facilis exercitationem sit ratione velit. Exercitationem atque non nisi.\",\n \"value\" : { }\n }, {\n \"code\" : \"16vjizo1qre0nb5d1sij8uzsazlcuu5csnlbmh6z47b76kyoe1ybhl56250b2zay02i19vorcdjyfe42a70zq3o77xybvntsizadax9z7zbkpu1xq4rp888vp2mshs2i9q5gx1yo5of1d7cbauvmhz6qn8grtoun74vdq1a6h98ihznuydg8gpe\",\n \"field\" : \"nc11jz7trhnl5u0prys8aqsys45jmnjdcw7mdw7ad67km7wfn10ne1d2w7a7lholnza9tixadagh9nbyqhruvo4bpr4upnp84luxkege77fdnlcy5h1wse37zlx2z2zyyt7a\",\n \"resource\" : \"spg2m914d1s7izfeax74x981p8gx2yz2gjlsxs4iudqhdg84twxbdb2te2qx8aty5oh6rii5cqlj84ozic09m2brn2qohk3tfopscw\",\n \"index\" : 8086399774437970952,\n \"message\" : \"Eaque voluptatem alias et eius commodi veniam. Aliquid repellat earum similique inventore. Laboriosam ipsum asperiores vel. Iure et voluptate rerum asperiores eos fugiat hic.\",\n \"value\" : { }\n }, {\n \"code\" : \"y2j5il1usw3j1co2yfio3xqt6xiwh6eh2rpfc09i8f65ogfsltgdzqj1t1u066rmgpk0hs6fzp8oyt01fg58dldmtd\",\n \"field\" : \"814z81t7vno3l7ehv701a1yxi78207juizp4wsjz0wjcb9mqsqkn2h35ybz6bxjytg9kazkockj8wlz50um9jlufegoggz6l7iliigh9efj01yoa3p4wgb2107s79xfdqjnuxwtonijbd2i0f4o\",\n \"resource\" : \"z11rkbq7kbnpbt724yehx6mfek8bhoezdpztag2hf9xknpt9y1m0hys912oagvblejudzxzgv2w78n0mw3gautw9meguxtnizn9f5qtnr9h0ez2kgdxhstsgmy3ylen7j0pimns6bfrxlrisdr4r14f9si\",\n \"index\" : 1766969794455320876,\n \"message\" : \"Animi nisi aut autem accusamus laudantium itaque. Ducimus esse veritatis sed aliquam pariatur aliquam aspernatur. Et et dolores odio. Optio iusto et libero ipsum et.\",\n \"value\" : { }\n }, {\n \"code\" : \"9ou1xugcpzquebey5k2now2wl5x1k96gg70v6jnuznemnayja5jfzue3w47vmuqj2fuxsna382wqrlmdcm3v9owcg0hf0c85l6x27uz1wcrq8cf5f0ay60if2hrhqw0bo80r3bsvwh4komnpie3a6cqw1kw2oy274zdrwz0x0y6xh1cq14fzdtj4eot6d23rndl\",\n \"field\" : \"8qfjpu6vgv77wzzz21h8ol8gunvu3wdco2qvpwxp5xeflkflshwu6bdcreyls7m1hsno1ux4vj1wak6xx3dmi6mzs87mytcdj6k0tb7ogd17gwoqhimw2n349rmig6mpqevlgwfkerh2mhcl4554lkjsuw3evgtwixa2uclduo\",\n \"resource\" : \"29b0ekbedgm1fvq9c8s3p95fk1qjx\",\n \"index\" : 4988635887128927411,\n \"message\" : \"Libero eum adipisci a in laborum maxime. Et velit cumque. Omnis magnam repudiandae. Et labore dolorum porro quas similique sequi.\",\n \"value\" : { }\n }, {\n \"code\" : \"bvl0pl6ruusdartfxn6vnb5piaevxy5r35qd8kth469122s3tu8qz89uujjpxn3rrun2jzjf4dsgbyvb72htxfap2680338s8bthxbx89qc8grjzsxxl0z5lioxx3\",\n \"field\" : \"g5j9ay1f95kvaan23g4l4qpk9l1rj5mdb4y321tqnmttgnx54gkqm5enmw43trlwq55pcomfke7opp9drr6mkm8wyhi6atal3wvzf037mca4k024pmq3d6txjaj0bz7bzllpbp9\",\n \"resource\" : \"zxcy4b20ln4tvuzi8j75craip8g4eso4ipd7f6j5yv1uzyz66gc2727pvxwa4unedwg6vblbnhlugplkhpyi\",\n \"index\" : 2347879604172907198,\n \"message\" : \"Modi saepe perferendis laboriosam consectetur. Aliquam pariatur eius. Reiciendis voluptate ea molestiae. Quo iure ratione accusantium expedita assumenda sed quae. Sed mollitia voluptas.\",\n \"value\" : { }\n }, {\n \"code\" : \"8pm1chk3maurbzp588ps2c9t9aesgkaqumkg94ndtz07bxtsn1r9fp1w7wvenoizk8b2voh2bl1r6th88lp5olak\",\n \"field\" : \"8niev315j64vi4ohh3yua1pbxpj1lnpfo7s2jk19ziy28svtocr6e7qldp8b7rd4badtyrs67ius3kl2g7bn69canzx2f8r7ktvdkd9s7fx190m1kf0k33qmpl3qhid7c8z4u9xva23mwn\",\n \"resource\" : \"c5x1zblzecgtjewpg9ukll1btqltk8g3rhfhdoez2n5ss52upqkjgk3p8pju27sqfwvllemc92xszypkmtnxecerqubywgeeh715nv\",\n \"index\" : 7736586482351881878,\n \"message\" : \"Dolores earum est harum aut. Aliquam dolore modi doloremque. Corporis provident repellendus sapiente recusandae officiis eveniet iste.\",\n \"value\" : { }\n }, {\n \"code\" : \"dvfrisy5nf6qk58kqx8x4hcl\",\n \"field\" : \"9jvifiu59pq1mgyg3yzff25ben6d27437qp7ycp5tcnhdur3o80nj5mto6ohqtpde1tfcogqrp62y9a0at5cgmx2gpj8g7yq2ckfj10cd05737u6vkpc9n7lksrlmp7e5kortmctkrjm2yn9zeiprzn6hu0hbvel5xemkp5vj9\",\n \"resource\" : \"4wxw0l8xi17sj95kuuugh7nr69xkwejpu3ke5liqxzh1av8gqampfi17zf8j0qg2dysgo4yliqy35gjbxddhp9h3pos5daag95w2htabpy3eet6h3thy2p6zf4qevkvg7zqs4oozbrzh9cp3heatfsb\",\n \"index\" : 5995934994782256655,\n \"message\" : \"Ipsum labore fuga magnam omnis in quis recusandae. Perspiciatis est tempore et numquam quia molestiae saepe. Tempora aliquam inventore sed velit cum quos. Autem est eos sapiente omnis.\",\n \"value\" : { }\n } ]\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "48e87662-87c9-477c-9776-a9410542024c", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.067384Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "pulls/create", + "schema": { + "description": "Validation Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "errors": { + "items": { + "properties": { + "code": { + "type": "string" + }, + "field": { + "type": "string" + }, + "index": { + "type": "integer" + }, + "message": { + "type": "string" + }, + "resource": { + "type": "string" + }, + "value": { + "oneOf": [ + { + "nullable": true, + "type": "string" + }, + { + "nullable": true, + "type": "integer" + }, + { + "items": { + "type": "string" + }, + "nullable": true, + "type": "array" + } + ] + } + }, + "required": ["code"], + "type": "object" + }, + "type": "array" + }, + "message": { + "type": "string" + } + }, + "required": ["message", "documentation_url"], + "title": "Validation Error", + "type": "object" + } + } + } + }, + "insertionIndex": 475 + }, + { + "id": "0263383b-dd55-4c1c-8499-388dd4513669", + "name": "Create a pull request", + "request": { + "urlPath": "/repos/dta3uwhzo3iffgo5kk2k9fqq8q49afrq39s6q562uazzhz502w3sqzr0zc8t07wum6j5pj18g8ms66xu4rqmbugikqgb5ejvgk03/ciz13jx7tkmp08k4h0ifeh4mr1x71j06dclt8a/pulls", + "method": "POST" + }, + "response": { + "status": 403, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/018065\",\n \"message\" : \"Ex voluptatum aut sit tempora sint quidem cupiditate. Quia est odio iusto voluptatem. Ad optio animi consequatur sit aut omnis ipsam. Delectus ut et consequatur porro quidem quo.\",\n \"url\" : \"https://web.example.mocklab.io/395051\",\n \"status\" : \"c1eelao21ixdj9qsxqka953ut4f6sspmglbobnpm8cdnafmr3rdlrk57fn69ah9bg3i1a1txm07jcnjypi2woqlobdwk9xvlm4pzvge2wev7st8913ib93mydvr5wmcx3zesh8tqiueaiq17hw1yxg9d856ezjnu7rc6gq18czqfr4kg6vfphku42b1d25u93fkb5tcl\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "0263383b-dd55-4c1c-8499-388dd4513669", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.066359Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "pulls/create", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 476 + }, + { + "id": "592ec129-df7e-42d8-85cd-7e3e1952ab9d", + "name": "Create a pull request - default", + "request": { + "urlPath": "/repos/p9oy1u51wadkkmf6i0bn5btvtn7ij9ngbytqlmzv04jypq95kaiju8h8/l4hzjba4d7r6zx04m5ro0n56l1hu4z7wzbm3hsfzcrm42/pulls", + "method": "POST" + }, + "response": { + "status": 201, + "body": "{\n \"_links\" : {\n \"comments\" : {\n \"href\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347/comments\"\n },\n \"commits\" : {\n \"href\" : \"https://api.github.com/repos/octocat/Hello-World/pulls/1347/commits\"\n },\n \"html\" : {\n \"href\" : \"https://github.com/octocat/Hello-World/pull/1347\"\n },\n \"issue\" : {\n \"href\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347\"\n },\n \"review_comment\" : {\n \"href\" : \"https://api.github.com/repos/octocat/Hello-World/pulls/comments{/number}\"\n },\n \"review_comments\" : {\n \"href\" : \"https://api.github.com/repos/octocat/Hello-World/pulls/1347/comments\"\n },\n \"self\" : {\n \"href\" : \"https://api.github.com/repos/octocat/Hello-World/pulls/1347\"\n },\n \"statuses\" : {\n \"href\" : \"https://api.github.com/repos/octocat/Hello-World/statuses/6dcb09b5b57875f334f61aebed695e2e4193db5e\"\n }\n },\n \"active_lock_reason\" : \"too heated\",\n \"additions\" : 100,\n \"assignee\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"assignees\" : [ {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n }, {\n \"avatar_url\" : \"https://github.com/images/error/hubot_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/hubot/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/hubot/followers\",\n \"following_url\" : \"https://api.github.com/users/hubot/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/hubot/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/hubot\",\n \"id\" : 1,\n \"login\" : \"hubot\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/hubot/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/hubot/received_events\",\n \"repos_url\" : \"https://api.github.com/users/hubot/repos\",\n \"site_admin\" : true,\n \"starred_url\" : \"https://api.github.com/users/hubot/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/hubot/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/hubot\"\n } ],\n \"author_association\" : \"OWNER\",\n \"base\" : {\n \"label\" : \"octocat:master\",\n \"ref\" : \"master\",\n \"repo\" : {\n \"allow_merge_commit\" : true,\n \"allow_rebase_merge\" : true,\n \"allow_squash_merge\" : true,\n \"anonymous_access_enabled\" : false,\n \"archive_url\" : \"https://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref}\",\n \"archived\" : false,\n \"assignees_url\" : \"https://api.github.com/repos/octocat/Hello-World/assignees{/user}\",\n \"blobs_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/blobs{/sha}\",\n \"branches_url\" : \"https://api.github.com/repos/octocat/Hello-World/branches{/branch}\",\n \"clone_url\" : \"https://github.com/octocat/Hello-World.git\",\n \"collaborators_url\" : \"https://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator}\",\n \"comments_url\" : \"https://api.github.com/repos/octocat/Hello-World/comments{/number}\",\n \"commits_url\" : \"https://api.github.com/repos/octocat/Hello-World/commits{/sha}\",\n \"compare_url\" : \"https://api.github.com/repos/octocat/Hello-World/compare/{base}...{head}\",\n \"contents_url\" : \"https://api.github.com/repos/octocat/Hello-World/contents/{+path}\",\n \"contributors_url\" : \"https://api.github.com/repos/octocat/Hello-World/contributors\",\n \"created_at\" : \"2011-01-26T19:01:12Z\",\n \"default_branch\" : \"master\",\n \"deployments_url\" : \"https://api.github.com/repos/octocat/Hello-World/deployments\",\n \"description\" : \"This your first repo!\",\n \"disabled\" : false,\n \"downloads_url\" : \"https://api.github.com/repos/octocat/Hello-World/downloads\",\n \"events_url\" : \"https://api.github.com/repos/octocat/Hello-World/events\",\n \"fork\" : false,\n \"forks\" : 123,\n \"forks_count\" : 9,\n \"forks_url\" : \"https://api.github.com/repos/octocat/Hello-World/forks\",\n \"full_name\" : \"octocat/Hello-World\",\n \"git_commits_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/commits{/sha}\",\n \"git_refs_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/refs{/sha}\",\n \"git_tags_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/tags{/sha}\",\n \"git_url\" : \"git:github.com/octocat/Hello-World.git\",\n \"has_downloads\" : true,\n \"has_issues\" : true,\n \"has_pages\" : false,\n \"has_projects\" : true,\n \"has_wiki\" : true,\n \"homepage\" : \"https://github.com\",\n \"hooks_url\" : \"https://api.github.com/repos/octocat/Hello-World/hooks\",\n \"html_url\" : \"https://github.com/octocat/Hello-World\",\n \"id\" : 1296269,\n \"issue_comment_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/comments{/number}\",\n \"issue_events_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/events{/number}\",\n \"issues_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues{/number}\",\n \"keys_url\" : \"https://api.github.com/repos/octocat/Hello-World/keys{/key_id}\",\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World/labels{/name}\",\n \"languages_url\" : \"https://api.github.com/repos/octocat/Hello-World/languages\",\n \"license\" : {\n \"key\" : \"mit\",\n \"name\" : \"MIT License\",\n \"node_id\" : \"MDc6TGljZW5zZW1pdA==\",\n \"spdx_id\" : \"MIT\",\n \"url\" : \"https://api.github.com/licenses/mit\"\n },\n \"merges_url\" : \"https://api.github.com/repos/octocat/Hello-World/merges\",\n \"milestones_url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones{/number}\",\n \"mirror_url\" : \"git:git.example.com/octocat/Hello-World\",\n \"name\" : \"Hello-World\",\n \"node_id\" : \"MDEwOlJlcG9zaXRvcnkxMjk2MjY5\",\n \"notifications_url\" : \"https://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating}\",\n \"open_issues\" : 123,\n \"open_issues_count\" : 0,\n \"owner\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"permissions\" : {\n \"admin\" : false,\n \"pull\" : true,\n \"push\" : false\n },\n \"private\" : false,\n \"pulls_url\" : \"https://api.github.com/repos/octocat/Hello-World/pulls{/number}\",\n \"pushed_at\" : \"2011-01-26T19:06:43Z\",\n \"releases_url\" : \"https://api.github.com/repos/octocat/Hello-World/releases{/id}\",\n \"size\" : 108,\n \"ssh_url\" : \"git@github.com:octocat/Hello-World.git\",\n \"stargazers_count\" : 80,\n \"stargazers_url\" : \"https://api.github.com/repos/octocat/Hello-World/stargazers\",\n \"statuses_url\" : \"https://api.github.com/repos/octocat/Hello-World/statuses/{sha}\",\n \"subscribers_url\" : \"https://api.github.com/repos/octocat/Hello-World/subscribers\",\n \"subscription_url\" : \"https://api.github.com/repos/octocat/Hello-World/subscription\",\n \"svn_url\" : \"https://svn.github.com/octocat/Hello-World\",\n \"tags_url\" : \"https://api.github.com/repos/octocat/Hello-World/tags\",\n \"teams_url\" : \"https://api.github.com/repos/octocat/Hello-World/teams\",\n \"topics\" : [ \"octocat\", \"atom\", \"electron\", \"api\" ],\n \"trees_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/trees{/sha}\",\n \"updated_at\" : \"2011-01-26T19:14:43Z\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World\",\n \"watchers\" : 123,\n \"watchers_count\" : 80\n },\n \"sha\" : \"6dcb09b5b57875f334f61aebed695e2e4193db5e\",\n \"user\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n }\n },\n \"body\" : \"Please pull these awesome changes in!\",\n \"changed_files\" : 5,\n \"closed_at\" : \"2011-01-26T19:01:12Z\",\n \"comments\" : 10,\n \"comments_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347/comments\",\n \"commits\" : 3,\n \"commits_url\" : \"https://api.github.com/repos/octocat/Hello-World/pulls/1347/commits\",\n \"created_at\" : \"2011-01-26T19:01:12Z\",\n \"deletions\" : 3,\n \"diff_url\" : \"https://github.com/octocat/Hello-World/pull/1347.diff\",\n \"draft\" : false,\n \"head\" : {\n \"label\" : \"octocat:new-topic\",\n \"ref\" : \"new-topic\",\n \"repo\" : {\n \"allow_forking\" : true,\n \"allow_merge_commit\" : true,\n \"allow_rebase_merge\" : true,\n \"allow_squash_merge\" : true,\n \"anonymous_access_enabled\" : false,\n \"archive_url\" : \"https://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref}\",\n \"archived\" : false,\n \"assignees_url\" : \"https://api.github.com/repos/octocat/Hello-World/assignees{/user}\",\n \"blobs_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/blobs{/sha}\",\n \"branches_url\" : \"https://api.github.com/repos/octocat/Hello-World/branches{/branch}\",\n \"clone_url\" : \"https://github.com/octocat/Hello-World.git\",\n \"collaborators_url\" : \"https://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator}\",\n \"comments_url\" : \"https://api.github.com/repos/octocat/Hello-World/comments{/number}\",\n \"commits_url\" : \"https://api.github.com/repos/octocat/Hello-World/commits{/sha}\",\n \"compare_url\" : \"https://api.github.com/repos/octocat/Hello-World/compare/{base}...{head}\",\n \"contents_url\" : \"https://api.github.com/repos/octocat/Hello-World/contents/{+path}\",\n \"contributors_url\" : \"https://api.github.com/repos/octocat/Hello-World/contributors\",\n \"created_at\" : \"2011-01-26T19:01:12Z\",\n \"default_branch\" : \"master\",\n \"deployments_url\" : \"https://api.github.com/repos/octocat/Hello-World/deployments\",\n \"description\" : \"This your first repo!\",\n \"disabled\" : false,\n \"downloads_url\" : \"https://api.github.com/repos/octocat/Hello-World/downloads\",\n \"events_url\" : \"https://api.github.com/repos/octocat/Hello-World/events\",\n \"fork\" : false,\n \"forks\" : 123,\n \"forks_count\" : 9,\n \"forks_url\" : \"https://api.github.com/repos/octocat/Hello-World/forks\",\n \"full_name\" : \"octocat/Hello-World\",\n \"git_commits_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/commits{/sha}\",\n \"git_refs_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/refs{/sha}\",\n \"git_tags_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/tags{/sha}\",\n \"git_url\" : \"git:github.com/octocat/Hello-World.git\",\n \"has_downloads\" : true,\n \"has_issues\" : true,\n \"has_pages\" : false,\n \"has_projects\" : true,\n \"has_wiki\" : true,\n \"homepage\" : \"https://github.com\",\n \"hooks_url\" : \"https://api.github.com/repos/octocat/Hello-World/hooks\",\n \"html_url\" : \"https://github.com/octocat/Hello-World\",\n \"id\" : 1296269,\n \"issue_comment_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/comments{/number}\",\n \"issue_events_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/events{/number}\",\n \"issues_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues{/number}\",\n \"keys_url\" : \"https://api.github.com/repos/octocat/Hello-World/keys{/key_id}\",\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World/labels{/name}\",\n \"languages_url\" : \"https://api.github.com/repos/octocat/Hello-World/languages\",\n \"license\" : {\n \"key\" : \"mit\",\n \"name\" : \"MIT License\",\n \"node_id\" : \"MDc6TGljZW5zZW1pdA==\",\n \"spdx_id\" : \"MIT\",\n \"url\" : \"https://api.github.com/licenses/mit\"\n },\n \"merges_url\" : \"https://api.github.com/repos/octocat/Hello-World/merges\",\n \"milestones_url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones{/number}\",\n \"mirror_url\" : \"git:git.example.com/octocat/Hello-World\",\n \"name\" : \"Hello-World\",\n \"node_id\" : \"MDEwOlJlcG9zaXRvcnkxMjk2MjY5\",\n \"notifications_url\" : \"https://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating}\",\n \"open_issues\" : 123,\n \"open_issues_count\" : 0,\n \"owner\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"permissions\" : {\n \"admin\" : false,\n \"pull\" : true,\n \"push\" : false\n },\n \"private\" : false,\n \"pulls_url\" : \"https://api.github.com/repos/octocat/Hello-World/pulls{/number}\",\n \"pushed_at\" : \"2011-01-26T19:06:43Z\",\n \"releases_url\" : \"https://api.github.com/repos/octocat/Hello-World/releases{/id}\",\n \"size\" : 108,\n \"ssh_url\" : \"git@github.com:octocat/Hello-World.git\",\n \"stargazers_count\" : 80,\n \"stargazers_url\" : \"https://api.github.com/repos/octocat/Hello-World/stargazers\",\n \"statuses_url\" : \"https://api.github.com/repos/octocat/Hello-World/statuses/{sha}\",\n \"subscribers_url\" : \"https://api.github.com/repos/octocat/Hello-World/subscribers\",\n \"subscription_url\" : \"https://api.github.com/repos/octocat/Hello-World/subscription\",\n \"svn_url\" : \"https://svn.github.com/octocat/Hello-World\",\n \"tags_url\" : \"https://api.github.com/repos/octocat/Hello-World/tags\",\n \"teams_url\" : \"https://api.github.com/repos/octocat/Hello-World/teams\",\n \"topics\" : [ \"octocat\", \"atom\", \"electron\", \"api\" ],\n \"trees_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/trees{/sha}\",\n \"updated_at\" : \"2011-01-26T19:14:43Z\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World\",\n \"watchers\" : 123,\n \"watchers_count\" : 80\n },\n \"sha\" : \"6dcb09b5b57875f334f61aebed695e2e4193db5e\",\n \"user\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n }\n },\n \"html_url\" : \"https://github.com/octocat/Hello-World/pull/1347\",\n \"id\" : 1,\n \"issue_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347\",\n \"labels\" : [ {\n \"color\" : \"f29513\",\n \"default\" : true,\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"name\" : \"bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/labels/bug\"\n } ],\n \"locked\" : true,\n \"maintainer_can_modify\" : true,\n \"merge_commit_sha\" : \"e5bd3914e2e596debea16f433f57875b5b90bcd6\",\n \"mergeable\" : true,\n \"mergeable_state\" : \"clean\",\n \"merged\" : false,\n \"merged_at\" : \"2011-01-26T19:01:12Z\",\n \"merged_by\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"milestone\" : {\n \"closed_at\" : \"2013-02-12T13:22:01Z\",\n \"closed_issues\" : 8,\n \"created_at\" : \"2011-04-10T20:09:31Z\",\n \"creator\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"description\" : \"Tracking milestone for version 1.0\",\n \"due_on\" : \"2012-10-09T23:39:01Z\",\n \"html_url\" : \"https://github.com/octocat/Hello-World/milestones/v1.0\",\n \"id\" : 1002604,\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones/1/labels\",\n \"node_id\" : \"MDk6TWlsZXN0b25lMTAwMjYwNA==\",\n \"number\" : 1,\n \"open_issues\" : 4,\n \"state\" : \"open\",\n \"title\" : \"v1.0\",\n \"updated_at\" : \"2014-03-03T18:58:10Z\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones/1\"\n },\n \"node_id\" : \"MDExOlB1bGxSZXF1ZXN0MQ==\",\n \"number\" : 1347,\n \"patch_url\" : \"https://github.com/octocat/Hello-World/pull/1347.patch\",\n \"rebaseable\" : true,\n \"requested_reviewers\" : [ {\n \"avatar_url\" : \"https://github.com/images/error/other_user_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/other_user/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/other_user/followers\",\n \"following_url\" : \"https://api.github.com/users/other_user/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/other_user/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/other_user\",\n \"id\" : 1,\n \"login\" : \"other_user\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/other_user/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/other_user/received_events\",\n \"repos_url\" : \"https://api.github.com/users/other_user/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/other_user/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/other_user/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/other_user\"\n } ],\n \"requested_teams\" : [ {\n \"description\" : \"A great team.\",\n \"html_url\" : \"https://github.com/orgs/github/teams/justice-league\",\n \"id\" : 1,\n \"members_url\" : \"https://api.github.com/teams/1/members{/member}\",\n \"name\" : \"Justice League\",\n \"node_id\" : \"MDQ6VGVhbTE=\",\n \"permission\" : \"admin\",\n \"privacy\" : \"closed\",\n \"repositories_url\" : \"https://api.github.com/teams/1/repos\",\n \"slug\" : \"justice-league\",\n \"url\" : \"https://api.github.com/teams/1\"\n } ],\n \"review_comment_url\" : \"https://api.github.com/repos/octocat/Hello-World/pulls/comments{/number}\",\n \"review_comments\" : 0,\n \"review_comments_url\" : \"https://api.github.com/repos/octocat/Hello-World/pulls/1347/comments\",\n \"state\" : \"open\",\n \"statuses_url\" : \"https://api.github.com/repos/octocat/Hello-World/statuses/6dcb09b5b57875f334f61aebed695e2e4193db5e\",\n \"title\" : \"Amazing new feature\",\n \"updated_at\" : \"2011-01-26T19:01:12Z\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/pulls/1347\",\n \"user\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n }\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "592ec129-df7e-42d8-85cd-7e3e1952ab9d", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.065903Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "pulls/create", + "schema": { + "description": "Pull requests let you tell others about changes you've pushed to a repository on GitHub. Once a pull request is sent, interested parties can review the set of changes, discuss potential modifications, and even push follow-up commits if necessary.", + "properties": { + "_links": { + "properties": { + "comments": { + "$ref": "#/components/schemas/link" + }, + "commits": { + "$ref": "#/components/schemas/link" + }, + "html": { + "$ref": "#/components/schemas/link" + }, + "issue": { + "$ref": "#/components/schemas/link" + }, + "review_comment": { + "$ref": "#/components/schemas/link" + }, + "review_comments": { + "$ref": "#/components/schemas/link" + }, + "self": { + "$ref": "#/components/schemas/link" + }, + "statuses": { + "$ref": "#/components/schemas/link" + } + }, + "required": [ + "comments", + "commits", + "statuses", + "html", + "issue", + "review_comments", + "review_comment", + "self" + ], + "type": "object" + }, + "active_lock_reason": { + "example": "too heated", + "nullable": true, + "type": "string" + }, + "additions": { + "example": 100, + "type": "integer" + }, + "assignee": { + "$ref": "#/components/schemas/nullable-simple-user" + }, + "assignees": { + "items": { + "$ref": "#/components/schemas/simple-user" + }, + "nullable": true, + "type": "array" + }, + "author_association": { + "$ref": "#/components/schemas/author_association" + }, + "base": { + "properties": { + "label": { + "type": "string" + }, + "ref": { + "type": "string" + }, + "repo": { + "properties": { + "allow_forking": { + "type": "boolean" + }, + "allow_merge_commit": { + "type": "boolean" + }, + "allow_rebase_merge": { + "type": "boolean" + }, + "allow_squash_merge": { + "type": "boolean" + }, + "anonymous_access_enabled": { + "type": "boolean" + }, + "archive_url": { + "type": "string" + }, + "archived": { + "type": "boolean" + }, + "assignees_url": { + "type": "string" + }, + "blobs_url": { + "type": "string" + }, + "branches_url": { + "type": "string" + }, + "clone_url": { + "type": "string" + }, + "collaborators_url": { + "type": "string" + }, + "comments_url": { + "type": "string" + }, + "commits_url": { + "type": "string" + }, + "compare_url": { + "type": "string" + }, + "contents_url": { + "type": "string" + }, + "contributors_url": { + "format": "uri", + "type": "string" + }, + "created_at": { + "format": "date-time", + "type": "string" + }, + "default_branch": { + "type": "string" + }, + "deployments_url": { + "format": "uri", + "type": "string" + }, + "description": { + "nullable": true, + "type": "string" + }, + "disabled": { + "type": "boolean" + }, + "downloads_url": { + "format": "uri", + "type": "string" + }, + "events_url": { + "format": "uri", + "type": "string" + }, + "fork": { + "type": "boolean" + }, + "forks": { + "type": "integer" + }, + "forks_count": { + "type": "integer" + }, + "forks_url": { + "format": "uri", + "type": "string" + }, + "full_name": { + "type": "string" + }, + "git_commits_url": { + "type": "string" + }, + "git_refs_url": { + "type": "string" + }, + "git_tags_url": { + "type": "string" + }, + "git_url": { + "type": "string" + }, + "has_downloads": { + "type": "boolean" + }, + "has_issues": { + "type": "boolean" + }, + "has_pages": { + "type": "boolean" + }, + "has_projects": { + "type": "boolean" + }, + "has_wiki": { + "type": "boolean" + }, + "homepage": { + "format": "uri", + "nullable": true, + "type": "string" + }, + "hooks_url": { + "format": "uri", + "type": "string" + }, + "html_url": { + "format": "uri", + "type": "string" + }, + "id": { + "type": "integer" + }, + "issue_comment_url": { + "type": "string" + }, + "issue_events_url": { + "type": "string" + }, + "issues_url": { + "type": "string" + }, + "keys_url": { + "type": "string" + }, + "labels_url": { + "type": "string" + }, + "language": { + "nullable": true, + "type": "string" + }, + "languages_url": { + "format": "uri", + "type": "string" + }, + "license": { + "$ref": "#/components/schemas/nullable-license-simple" + }, + "master_branch": { + "type": "string" + }, + "merges_url": { + "format": "uri", + "type": "string" + }, + "milestones_url": { + "type": "string" + }, + "mirror_url": { + "format": "uri", + "nullable": true, + "type": "string" + }, + "name": { + "type": "string" + }, + "node_id": { + "type": "string" + }, + "notifications_url": { + "type": "string" + }, + "open_issues": { + "type": "integer" + }, + "open_issues_count": { + "type": "integer" + }, + "owner": { + "properties": { + "avatar_url": { + "format": "uri", + "type": "string" + }, + "events_url": { + "type": "string" + }, + "followers_url": { + "format": "uri", + "type": "string" + }, + "following_url": { + "type": "string" + }, + "gists_url": { + "type": "string" + }, + "gravatar_id": { + "nullable": true, + "type": "string" + }, + "html_url": { + "format": "uri", + "type": "string" + }, + "id": { + "type": "integer" + }, + "login": { + "type": "string" + }, + "node_id": { + "type": "string" + }, + "organizations_url": { + "format": "uri", + "type": "string" + }, + "received_events_url": { + "format": "uri", + "type": "string" + }, + "repos_url": { + "format": "uri", + "type": "string" + }, + "site_admin": { + "type": "boolean" + }, + "starred_url": { + "type": "string" + }, + "subscriptions_url": { + "format": "uri", + "type": "string" + }, + "type": { + "type": "string" + }, + "url": { + "format": "uri", + "type": "string" + } + }, + "required": [ + "avatar_url", + "events_url", + "followers_url", + "following_url", + "gists_url", + "gravatar_id", + "html_url", + "id", + "node_id", + "login", + "organizations_url", + "received_events_url", + "repos_url", + "site_admin", + "starred_url", + "subscriptions_url", + "type", + "url" + ], + "type": "object" + }, + "permissions": { + "properties": { + "admin": { + "type": "boolean" + }, + "maintain": { + "type": "boolean" + }, + "pull": { + "type": "boolean" + }, + "push": { + "type": "boolean" + }, + "triage": { + "type": "boolean" + } + }, + "required": ["admin", "pull", "push"], + "type": "object" + }, + "private": { + "type": "boolean" + }, + "pulls_url": { + "type": "string" + }, + "pushed_at": { + "format": "date-time", + "type": "string" + }, + "releases_url": { + "type": "string" + }, + "size": { + "type": "integer" + }, + "ssh_url": { + "type": "string" + }, + "stargazers_count": { + "type": "integer" + }, + "stargazers_url": { + "format": "uri", + "type": "string" + }, + "statuses_url": { + "type": "string" + }, + "subscribers_url": { + "format": "uri", + "type": "string" + }, + "subscription_url": { + "format": "uri", + "type": "string" + }, + "svn_url": { + "format": "uri", + "type": "string" + }, + "tags_url": { + "format": "uri", + "type": "string" + }, + "teams_url": { + "format": "uri", + "type": "string" + }, + "topics": { + "items": { + "type": "string" + }, + "type": "array" + }, + "trees_url": { + "type": "string" + }, + "updated_at": { + "format": "date-time", + "type": "string" + }, + "url": { + "format": "uri", + "type": "string" + }, + "watchers": { + "type": "integer" + }, + "watchers_count": { + "type": "integer" + } + }, + "required": [ + "archive_url", + "assignees_url", + "blobs_url", + "branches_url", + "collaborators_url", + "comments_url", + "commits_url", + "compare_url", + "contents_url", + "contributors_url", + "deployments_url", + "description", + "downloads_url", + "events_url", + "fork", + "forks_url", + "full_name", + "git_commits_url", + "git_refs_url", + "git_tags_url", + "hooks_url", + "html_url", + "id", + "node_id", + "issue_comment_url", + "issue_events_url", + "issues_url", + "keys_url", + "labels_url", + "languages_url", + "merges_url", + "milestones_url", + "name", + "notifications_url", + "owner", + "private", + "pulls_url", + "releases_url", + "stargazers_url", + "statuses_url", + "subscribers_url", + "subscription_url", + "tags_url", + "teams_url", + "trees_url", + "url", + "clone_url", + "default_branch", + "forks", + "forks_count", + "git_url", + "has_downloads", + "has_issues", + "has_projects", + "has_wiki", + "has_pages", + "homepage", + "language", + "archived", + "disabled", + "mirror_url", + "open_issues", + "open_issues_count", + "license", + "pushed_at", + "size", + "ssh_url", + "stargazers_count", + "svn_url", + "watchers", + "watchers_count", + "created_at", + "updated_at" + ], + "type": "object" + }, + "sha": { + "type": "string" + }, + "user": { + "properties": { + "avatar_url": { + "format": "uri", + "type": "string" + }, + "events_url": { + "type": "string" + }, + "followers_url": { + "format": "uri", + "type": "string" + }, + "following_url": { + "type": "string" + }, + "gists_url": { + "type": "string" + }, + "gravatar_id": { + "nullable": true, + "type": "string" + }, + "html_url": { + "format": "uri", + "type": "string" + }, + "id": { + "type": "integer" + }, + "login": { + "type": "string" + }, + "node_id": { + "type": "string" + }, + "organizations_url": { + "format": "uri", + "type": "string" + }, + "received_events_url": { + "format": "uri", + "type": "string" + }, + "repos_url": { + "format": "uri", + "type": "string" + }, + "site_admin": { + "type": "boolean" + }, + "starred_url": { + "type": "string" + }, + "subscriptions_url": { + "format": "uri", + "type": "string" + }, + "type": { + "type": "string" + }, + "url": { + "format": "uri", + "type": "string" + } + }, + "required": [ + "avatar_url", + "events_url", + "followers_url", + "following_url", + "gists_url", + "gravatar_id", + "html_url", + "id", + "node_id", + "login", + "organizations_url", + "received_events_url", + "repos_url", + "site_admin", + "starred_url", + "subscriptions_url", + "type", + "url" + ], + "type": "object" + } + }, + "required": ["label", "ref", "repo", "sha", "user"], + "type": "object" + }, + "body": { + "example": "Please pull these awesome changes", + "nullable": true, + "type": "string" + }, + "changed_files": { + "example": 5, + "type": "integer" + }, + "closed_at": { + "example": "2011-01-26T19:01:12Z", + "format": "date-time", + "nullable": true, + "type": "string" + }, + "comments": { + "example": 10, + "type": "integer" + }, + "comments_url": { + "example": "https://api.github.com/repos/octocat/Hello-World/issues/1347/comments", + "format": "uri", + "type": "string" + }, + "commits": { + "example": 3, + "type": "integer" + }, + "commits_url": { + "example": "https://api.github.com/repos/octocat/Hello-World/pulls/1347/commits", + "format": "uri", + "type": "string" + }, + "created_at": { + "example": "2011-01-26T19:01:12Z", + "format": "date-time", + "type": "string" + }, + "deletions": { + "example": 3, + "type": "integer" + }, + "diff_url": { + "example": "https://github.com/octocat/Hello-World/pull/1347.diff", + "format": "uri", + "type": "string" + }, + "draft": { + "description": "Indicates whether or not the pull request is a draft.", + "example": false, + "type": "boolean" + }, + "head": { + "properties": { + "label": { + "type": "string" + }, + "ref": { + "type": "string" + }, + "repo": { + "nullable": true, + "properties": { + "allow_forking": { + "type": "boolean" + }, + "allow_merge_commit": { + "type": "boolean" + }, + "allow_rebase_merge": { + "type": "boolean" + }, + "allow_squash_merge": { + "type": "boolean" + }, + "anonymous_access_enabled": { + "type": "boolean" + }, + "archive_url": { + "type": "string" + }, + "archived": { + "type": "boolean" + }, + "assignees_url": { + "type": "string" + }, + "blobs_url": { + "type": "string" + }, + "branches_url": { + "type": "string" + }, + "clone_url": { + "type": "string" + }, + "collaborators_url": { + "type": "string" + }, + "comments_url": { + "type": "string" + }, + "commits_url": { + "type": "string" + }, + "compare_url": { + "type": "string" + }, + "contents_url": { + "type": "string" + }, + "contributors_url": { + "format": "uri", + "type": "string" + }, + "created_at": { + "format": "date-time", + "type": "string" + }, + "default_branch": { + "type": "string" + }, + "deployments_url": { + "format": "uri", + "type": "string" + }, + "description": { + "nullable": true, + "type": "string" + }, + "disabled": { + "type": "boolean" + }, + "downloads_url": { + "format": "uri", + "type": "string" + }, + "events_url": { + "format": "uri", + "type": "string" + }, + "fork": { + "type": "boolean" + }, + "forks": { + "type": "integer" + }, + "forks_count": { + "type": "integer" + }, + "forks_url": { + "format": "uri", + "type": "string" + }, + "full_name": { + "type": "string" + }, + "git_commits_url": { + "type": "string" + }, + "git_refs_url": { + "type": "string" + }, + "git_tags_url": { + "type": "string" + }, + "git_url": { + "type": "string" + }, + "has_downloads": { + "type": "boolean" + }, + "has_issues": { + "type": "boolean" + }, + "has_pages": { + "type": "boolean" + }, + "has_projects": { + "type": "boolean" + }, + "has_wiki": { + "type": "boolean" + }, + "homepage": { + "format": "uri", + "nullable": true, + "type": "string" + }, + "hooks_url": { + "format": "uri", + "type": "string" + }, + "html_url": { + "format": "uri", + "type": "string" + }, + "id": { + "type": "integer" + }, + "issue_comment_url": { + "type": "string" + }, + "issue_events_url": { + "type": "string" + }, + "issues_url": { + "type": "string" + }, + "keys_url": { + "type": "string" + }, + "labels_url": { + "type": "string" + }, + "language": { + "nullable": true, + "type": "string" + }, + "languages_url": { + "format": "uri", + "type": "string" + }, + "license": { + "nullable": true, + "properties": { + "key": { + "type": "string" + }, + "name": { + "type": "string" + }, + "node_id": { + "type": "string" + }, + "spdx_id": { + "nullable": true, + "type": "string" + }, + "url": { + "format": "uri", + "nullable": true, + "type": "string" + } + }, + "required": ["key", "name", "url", "spdx_id", "node_id"], + "type": "object" + }, + "master_branch": { + "type": "string" + }, + "merges_url": { + "format": "uri", + "type": "string" + }, + "milestones_url": { + "type": "string" + }, + "mirror_url": { + "format": "uri", + "nullable": true, + "type": "string" + }, + "name": { + "type": "string" + }, + "node_id": { + "type": "string" + }, + "notifications_url": { + "type": "string" + }, + "open_issues": { + "type": "integer" + }, + "open_issues_count": { + "type": "integer" + }, + "owner": { + "properties": { + "avatar_url": { + "format": "uri", + "type": "string" + }, + "events_url": { + "type": "string" + }, + "followers_url": { + "format": "uri", + "type": "string" + }, + "following_url": { + "type": "string" + }, + "gists_url": { + "type": "string" + }, + "gravatar_id": { + "nullable": true, + "type": "string" + }, + "html_url": { + "format": "uri", + "type": "string" + }, + "id": { + "type": "integer" + }, + "login": { + "type": "string" + }, + "node_id": { + "type": "string" + }, + "organizations_url": { + "format": "uri", + "type": "string" + }, + "received_events_url": { + "format": "uri", + "type": "string" + }, + "repos_url": { + "format": "uri", + "type": "string" + }, + "site_admin": { + "type": "boolean" + }, + "starred_url": { + "type": "string" + }, + "subscriptions_url": { + "format": "uri", + "type": "string" + }, + "type": { + "type": "string" + }, + "url": { + "format": "uri", + "type": "string" + } + }, + "required": [ + "avatar_url", + "events_url", + "followers_url", + "following_url", + "gists_url", + "gravatar_id", + "html_url", + "id", + "node_id", + "login", + "organizations_url", + "received_events_url", + "repos_url", + "site_admin", + "starred_url", + "subscriptions_url", + "type", + "url" + ], + "type": "object" + }, + "permissions": { + "properties": { + "admin": { + "type": "boolean" + }, + "maintain": { + "type": "boolean" + }, + "pull": { + "type": "boolean" + }, + "push": { + "type": "boolean" + }, + "triage": { + "type": "boolean" + } + }, + "required": ["admin", "pull", "push"], + "type": "object" + }, + "private": { + "type": "boolean" + }, + "pulls_url": { + "type": "string" + }, + "pushed_at": { + "format": "date-time", + "type": "string" + }, + "releases_url": { + "type": "string" + }, + "size": { + "type": "integer" + }, + "ssh_url": { + "type": "string" + }, + "stargazers_count": { + "type": "integer" + }, + "stargazers_url": { + "format": "uri", + "type": "string" + }, + "statuses_url": { + "type": "string" + }, + "subscribers_url": { + "format": "uri", + "type": "string" + }, + "subscription_url": { + "format": "uri", + "type": "string" + }, + "svn_url": { + "format": "uri", + "type": "string" + }, + "tags_url": { + "format": "uri", + "type": "string" + }, + "teams_url": { + "format": "uri", + "type": "string" + }, + "topics": { + "items": { + "type": "string" + }, + "type": "array" + }, + "trees_url": { + "type": "string" + }, + "updated_at": { + "format": "date-time", + "type": "string" + }, + "url": { + "format": "uri", + "type": "string" + }, + "watchers": { + "type": "integer" + }, + "watchers_count": { + "type": "integer" + } + }, + "required": [ + "archive_url", + "assignees_url", + "blobs_url", + "branches_url", + "collaborators_url", + "comments_url", + "commits_url", + "compare_url", + "contents_url", + "contributors_url", + "deployments_url", + "description", + "downloads_url", + "events_url", + "fork", + "forks_url", + "full_name", + "git_commits_url", + "git_refs_url", + "git_tags_url", + "hooks_url", + "html_url", + "id", + "node_id", + "issue_comment_url", + "issue_events_url", + "issues_url", + "keys_url", + "labels_url", + "languages_url", + "merges_url", + "milestones_url", + "name", + "notifications_url", + "owner", + "private", + "pulls_url", + "releases_url", + "stargazers_url", + "statuses_url", + "subscribers_url", + "subscription_url", + "tags_url", + "teams_url", + "trees_url", + "url", + "clone_url", + "default_branch", + "forks", + "forks_count", + "git_url", + "has_downloads", + "has_issues", + "has_projects", + "has_wiki", + "has_pages", + "homepage", + "language", + "archived", + "disabled", + "mirror_url", + "open_issues", + "open_issues_count", + "license", + "pushed_at", + "size", + "ssh_url", + "stargazers_count", + "svn_url", + "watchers", + "watchers_count", + "created_at", + "updated_at" + ], + "type": "object" + }, + "sha": { + "type": "string" + }, + "user": { + "properties": { + "avatar_url": { + "format": "uri", + "type": "string" + }, + "events_url": { + "type": "string" + }, + "followers_url": { + "format": "uri", + "type": "string" + }, + "following_url": { + "type": "string" + }, + "gists_url": { + "type": "string" + }, + "gravatar_id": { + "nullable": true, + "type": "string" + }, + "html_url": { + "format": "uri", + "type": "string" + }, + "id": { + "type": "integer" + }, + "login": { + "type": "string" + }, + "node_id": { + "type": "string" + }, + "organizations_url": { + "format": "uri", + "type": "string" + }, + "received_events_url": { + "format": "uri", + "type": "string" + }, + "repos_url": { + "format": "uri", + "type": "string" + }, + "site_admin": { + "type": "boolean" + }, + "starred_url": { + "type": "string" + }, + "subscriptions_url": { + "format": "uri", + "type": "string" + }, + "type": { + "type": "string" + }, + "url": { + "format": "uri", + "type": "string" + } + }, + "required": [ + "avatar_url", + "events_url", + "followers_url", + "following_url", + "gists_url", + "gravatar_id", + "html_url", + "id", + "node_id", + "login", + "organizations_url", + "received_events_url", + "repos_url", + "site_admin", + "starred_url", + "subscriptions_url", + "type", + "url" + ], + "type": "object" + } + }, + "required": ["label", "ref", "repo", "sha", "user"], + "type": "object" + }, + "html_url": { + "example": "https://github.com/octocat/Hello-World/pull/1347", + "format": "uri", + "type": "string" + }, + "id": { + "example": 1, + "type": "integer" + }, + "issue_url": { + "example": "https://api.github.com/repos/octocat/Hello-World/issues/1347", + "format": "uri", + "type": "string" + }, + "labels": { + "items": { + "properties": { + "color": { + "type": "string" + }, + "default": { + "type": "boolean" + }, + "description": { + "nullable": true, + "type": "string" + }, + "id": { + "format": "int64", + "type": "integer" + }, + "name": { + "type": "string" + }, + "node_id": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "locked": { + "example": true, + "type": "boolean" + }, + "maintainer_can_modify": { + "description": "Indicates whether maintainers can modify the pull request.", + "example": true, + "type": "boolean" + }, + "merge_commit_sha": { + "example": "e5bd3914e2e596debea16f433f57875b5b90bcd6", + "nullable": true, + "type": "string" + }, + "mergeable": { + "example": true, + "nullable": true, + "type": "boolean" + }, + "mergeable_state": { + "example": "clean", + "type": "string" + }, + "merged": { + "type": "boolean" + }, + "merged_at": { + "example": "2011-01-26T19:01:12Z", + "format": "date-time", + "nullable": true, + "type": "string" + }, + "merged_by": { + "$ref": "#/components/schemas/nullable-simple-user" + }, + "milestone": { + "$ref": "#/components/schemas/nullable-milestone" + }, + "node_id": { + "example": "MDExOlB1bGxSZXF1ZXN0MQ==", + "type": "string" + }, + "number": { + "description": "Number uniquely identifying the pull request within its repository.", + "example": 42, + "type": "integer" + }, + "patch_url": { + "example": "https://github.com/octocat/Hello-World/pull/1347.patch", + "format": "uri", + "type": "string" + }, + "rebaseable": { + "example": true, + "nullable": true, + "type": "boolean" + }, + "requested_reviewers": { + "items": { + "$ref": "#/components/schemas/simple-user" + }, + "nullable": true, + "type": "array" + }, + "requested_teams": { + "items": { + "$ref": "#/components/schemas/team-simple" + }, + "nullable": true, + "type": "array" + }, + "review_comment_url": { + "example": "https://api.github.com/repos/octocat/Hello-World/pulls/comments{/number}", + "type": "string" + }, + "review_comments": { + "example": 0, + "type": "integer" + }, + "review_comments_url": { + "example": "https://api.github.com/repos/octocat/Hello-World/pulls/1347/comments", + "format": "uri", + "type": "string" + }, + "state": { + "description": "State of this Pull Request. Either `open` or `closed`.", + "enum": ["open", "closed"], + "example": "open", + "type": "string" + }, + "statuses_url": { + "example": "https://api.github.com/repos/octocat/Hello-World/statuses/6dcb09b5b57875f334f61aebed695e2e4193db5e", + "format": "uri", + "type": "string" + }, + "title": { + "description": "The title of the pull request.", + "example": "Amazing new feature", + "type": "string" + }, + "updated_at": { + "example": "2011-01-26T19:01:12Z", + "format": "date-time", + "type": "string" + }, + "url": { + "example": "https://api.github.com/repos/octocat/Hello-World/pulls/1347", + "format": "uri", + "type": "string" + }, + "user": { + "$ref": "#/components/schemas/nullable-simple-user" + } + }, + "required": [ + "_links", + "assignee", + "labels", + "base", + "body", + "closed_at", + "comments_url", + "commits_url", + "created_at", + "diff_url", + "head", + "html_url", + "id", + "node_id", + "issue_url", + "merge_commit_sha", + "merged_at", + "milestone", + "number", + "patch_url", + "review_comment_url", + "review_comments_url", + "statuses_url", + "state", + "locked", + "title", + "updated_at", + "url", + "user", + "author_association", + "additions", + "changed_files", + "comments", + "commits", + "deletions", + "mergeable", + "mergeable_state", + "merged", + "maintainer_can_modify", + "merged_by", + "review_comments" + ], + "title": "Pull Request", + "type": "object" + } + } + } + }, + "insertionIndex": 477 + }, + { + "id": "e61e4601-40ab-4dcd-a45f-20298cef4bbf", + "name": "List pull requests (application/json)", + "request": { + "urlPath": "/repos/hmknd4a7s7n0gb9kn5q3v5ts5gdud9iti8p56li4lnlbwtal0nioxagitpg11rzxgjwi2zftlmhec9co93x2tegrlifnkigj0y1bv21q3d9zejkchadnrhkm2eofycs1xds30e7vtjfwp7pp13gp43/ji5v25c0fmouyzt10vgv2q5bct0dgongu3aa1s7o3vesde4vuotnx672oummswalkqjp92mcmw81v38k8eucho35k7hcpzv3qvu9geousbqxwmc7hjxqom06pqi3oqf0b6dw9ql0de/pulls", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 422, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/806466\",\n \"message\" : \"Odio soluta accusamus at consequatur. Rerum itaque perspiciatis hic rerum impedit vel. Voluptates amet sint reprehenderit tempora laborum itaque temporibus.\",\n \"errors\" : [ {\n \"code\" : \"hk96gaxmv8uukgpeddu2v75f68am0zfk45c8gfjk0vaz8oaowdirev59gmltt55mkaqp0q2dam5\",\n \"field\" : \"fcf3a4a19sn762mapgoycqy7w5pikka711qwp0yp2p804j1z72kc2u1lgarj5s1hndzmwt1br50yentk6xoyuklpjbz71zdy0zvo6rv90lgxwg0210c6zeihruwnbfs5r05b3ejtddbn3nyn2rtpqjr\",\n \"resource\" : \"xlgun7umyxu5q0f5hnh6w25ewfvgw3bmb7e0qhztb30dxoyocfyb9gwl7hyp62hzk96d6a44xyf0ajjwlgfcpb0h99azi2p3e262bc93stnlw9oa8ff8zqqgys597asjvrxug\",\n \"index\" : 5646571852328201818,\n \"message\" : \"Rem recusandae praesentium aut delectus rerum natus et. Perferendis eveniet reprehenderit vel ducimus. Temporibus ad ipsa hic.\",\n \"value\" : { }\n }, {\n \"code\" : \"9zqk945pwbfwwok1qehu6u3qg2pxnsbvhvlnvofwf3xro12whkh3z6hko38jl2j1khkknspyu8tpfkdr95xtew86n52uqci5qfhvwm2m9rzepe9tahcmljplnu9d47nzfaj3iu4g8\",\n \"field\" : \"cnvotupeatumvgp3b8zl2libmxgvdex637xn813s8hq4b7dek1ofpmxi625886mm02uwcnqaewld9mvwlr20rjw6ypb21dy8j8uvt1ulugjiwlbejm0u4z6v4imavyb7gxo9rzakmr421h509urocvi9b5frwe7hv9olpw81pzt5nul62n9\",\n \"resource\" : \"ygj4d12xkhs2jxiq07g0q8tzjh6i0tnxjuaecqdh9dgz36f5tmqlgwfpisueczot31xcmqbnu5lpovac35j5bub5yn85u8ovw4kfvqmquk\",\n \"index\" : 6626127360972270706,\n \"message\" : \"Nobis iure eligendi est. Omnis doloremque magni voluptas aut praesentium. Qui quo qui eaque aut. Id et quo doloribus corrupti suscipit. Sint accusamus ipsa qui aut expedita.\",\n \"value\" : { }\n }, {\n \"code\" : \"cf5zoder\",\n \"field\" : \"qxi9mxuyhdv0q40ecz1bztqp49m5xfp3psug8ff0w5kimx7qgpr3x3cu8zpzvm1r3jonkazgmj7wewu95f8d0n1rpet46tid6s69yog7uvwcagvnxwlpzhrcnd1bjmch0qefvzab6a40hwj0xx9ir08dect15nbxkebl613idrawgdp5x8\",\n \"resource\" : \"bc3q11h5xm2rm0cpyo3zh58e1fequmb87cz7xood80vhgmv3l\",\n \"index\" : 540974881443072517,\n \"message\" : \"Facere sed nam suscipit totam. Incidunt odit asperiores laboriosam molestias. Molestias sit dolor. Ipsum impedit repudiandae.\",\n \"value\" : { }\n }, {\n \"code\" : \"g7wblvwchndyzqgdscf9ldbzz0mekhu2ln4z2ewx5oe9j4qrdsh67j02woy1toxq406apcuc44a1ayf5nbbtxffqao2ywzhr9vtlrj96i279xuumkakesx36x1yncgp5wbpgr1y1jz8m4a52a5o4vlz213j961ucdh2fyj5j06yvuzaas\",\n \"field\" : \"j4ba9zakn0iol8wp034obrro293bsc90wyp70zj1b5\",\n \"resource\" : \"96ym6trjou8uxo0iip8l6rhq3hq6qhdonu652n7yly6h2z5gn5xiprncrxsg5enoped95pk0771ab35dryze9lo2xknmyfdqsuef7omf7d764le41nhe66hofmp4kf3\",\n \"index\" : 8755161076408148114,\n \"message\" : \"Sint suscipit vel molestias eaque cum. Similique doloremque perferendis culpa est iusto. Praesentium qui voluptatibus et quis voluptas omnis officiis.\",\n \"value\" : { }\n }, {\n \"code\" : \"g21bmvyg\",\n \"field\" : \"0u8b6gbb9i1apm4lkc539x9o4tk5hp0uezse5n6n7ujtzu9d7qji1mdg5yjpjr955a1jcytvcenvhovlcdoqrwr1yr9b7w8j1qm8t9v6e74e7qtlf6rw9w27m9vnp1\",\n \"resource\" : \"ubcmz3a3m8oqvps9v62bnzvi6k9l61err8vjroqtmkb9t2keax8977ydktflocd1hywtwo0ibvd71vn9c02zmdpmeqb57hmdohgwecscfkvnr12hop7xtgkpgjn2ahc1f2p160gp4jz944pd4uhmuqo2mp4v1w8r3nofff1abk3a3j6eypvvwc81j638d1tpw\",\n \"index\" : 359397440513934932,\n \"message\" : \"Delectus architecto non in quam. Fuga laboriosam inventore dolores. Eius ab aut aliquid. Aut nam ratione fugit voluptatem eveniet repellendus. Qui expedita ea.\",\n \"value\" : { }\n } ]\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "e61e4601-40ab-4dcd-a45f-20298cef4bbf", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.063576Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "pulls/list", + "schema": { + "description": "Validation Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "errors": { + "items": { + "properties": { + "code": { + "type": "string" + }, + "field": { + "type": "string" + }, + "index": { + "type": "integer" + }, + "message": { + "type": "string" + }, + "resource": { + "type": "string" + }, + "value": { + "oneOf": [ + { + "nullable": true, + "type": "string" + }, + { + "nullable": true, + "type": "integer" + }, + { + "items": { + "type": "string" + }, + "nullable": true, + "type": "array" + } + ] + } + }, + "required": ["code"], + "type": "object" + }, + "type": "array" + }, + "message": { + "type": "string" + } + }, + "required": ["message", "documentation_url"], + "title": "Validation Error", + "type": "object" + } + } + } + }, + "insertionIndex": 478 + }, + { + "id": "d699eb01-c1f4-44aa-bb32-22a281843492", + "name": "List pull requests - 304", + "request": { + "urlPath": "/repos/mgljrilsd1y2mxw79ykftkrm0zhdd0gk7goe0zh4z1c9ihng3rk4ikswwl9mflyfzfpqpsg2vqjq3fdvdudktm6n2i0494uz5b1jn9d6eofdqafwsup7u3s08eayabwjky19dq9bon56nu50hhn2im7tb4kvj5zci0ytvsw51uzd0r3q75734v6y3a11n70p57mtqy/74znaz7lina3eahbtw8rnbimdi4lljz0ep1kjv7eqr1i7vux76a101/pulls", + "method": "GET" + }, + "response": { + "status": 304 + }, + "uuid": "d699eb01-c1f4-44aa-bb32-22a281843492", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.062886Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "pulls/list" + } + } + }, + "insertionIndex": 479 + }, + { + "id": "a7cb995f-e5ce-4210-9334-087e9fbaced3", + "name": "List pull requests (application/json) - default", + "request": { + "urlPath": "/repos/88j1av8bdm0tggaqwf92etue3ogh6vz8j3fdk4wo5krrx646z1c8f0tlry4m2ijv9956bhz6yutyp1qlwwas5c23my1prpdi2q8fs2343te3bkamn87rza53aojo1evlyy58v2b458iqpw7cnl9s8me3ygx3niskjmcbkvbxj78he5ddc0qk90aqo7ktjd9r2p4h/viu6u28avdw8w93p9miwgkvfym7r49uymbn1l57hbdl3aq8xpmpzjirhuox6zln2qfd1kearls4k0zy91if9j4pj7wrxhz32u11yfywm6iqnvrhvsq139q1ck9dxq7ab88xkddnrgybtifosu7639mrelndp14390mc8ne9mpe10yyh0fbiry1/pulls", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 200, + "body": "[ {\n \"_links\" : {\n \"comments\" : {\n \"href\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347/comments\"\n },\n \"commits\" : {\n \"href\" : \"https://api.github.com/repos/octocat/Hello-World/pulls/1347/commits\"\n },\n \"html\" : {\n \"href\" : \"https://github.com/octocat/Hello-World/pull/1347\"\n },\n \"issue\" : {\n \"href\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347\"\n },\n \"review_comment\" : {\n \"href\" : \"https://api.github.com/repos/octocat/Hello-World/pulls/comments{/number}\"\n },\n \"review_comments\" : {\n \"href\" : \"https://api.github.com/repos/octocat/Hello-World/pulls/1347/comments\"\n },\n \"self\" : {\n \"href\" : \"https://api.github.com/repos/octocat/Hello-World/pulls/1347\"\n },\n \"statuses\" : {\n \"href\" : \"https://api.github.com/repos/octocat/Hello-World/statuses/6dcb09b5b57875f334f61aebed695e2e4193db5e\"\n }\n },\n \"active_lock_reason\" : \"too heated\",\n \"assignee\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"assignees\" : [ {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n }, {\n \"avatar_url\" : \"https://github.com/images/error/hubot_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/hubot/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/hubot/followers\",\n \"following_url\" : \"https://api.github.com/users/hubot/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/hubot/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/hubot\",\n \"id\" : 1,\n \"login\" : \"hubot\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/hubot/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/hubot/received_events\",\n \"repos_url\" : \"https://api.github.com/users/hubot/repos\",\n \"site_admin\" : true,\n \"starred_url\" : \"https://api.github.com/users/hubot/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/hubot/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/hubot\"\n } ],\n \"author_association\" : \"OWNER\",\n \"base\" : {\n \"label\" : \"octocat:master\",\n \"ref\" : \"master\",\n \"repo\" : {\n \"allow_merge_commit\" : true,\n \"allow_rebase_merge\" : true,\n \"allow_squash_merge\" : true,\n \"anonymous_access_enabled\" : false,\n \"archive_url\" : \"https://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref}\",\n \"archived\" : false,\n \"assignees_url\" : \"https://api.github.com/repos/octocat/Hello-World/assignees{/user}\",\n \"blobs_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/blobs{/sha}\",\n \"branches_url\" : \"https://api.github.com/repos/octocat/Hello-World/branches{/branch}\",\n \"clone_url\" : \"https://github.com/octocat/Hello-World.git\",\n \"collaborators_url\" : \"https://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator}\",\n \"comments_url\" : \"https://api.github.com/repos/octocat/Hello-World/comments{/number}\",\n \"commits_url\" : \"https://api.github.com/repos/octocat/Hello-World/commits{/sha}\",\n \"compare_url\" : \"https://api.github.com/repos/octocat/Hello-World/compare/{base}...{head}\",\n \"contents_url\" : \"https://api.github.com/repos/octocat/Hello-World/contents/{+path}\",\n \"contributors_url\" : \"https://api.github.com/repos/octocat/Hello-World/contributors\",\n \"created_at\" : \"2011-01-26T19:01:12Z\",\n \"default_branch\" : \"master\",\n \"delete_branch_on_merge\" : true,\n \"deployments_url\" : \"https://api.github.com/repos/octocat/Hello-World/deployments\",\n \"description\" : \"This your first repo!\",\n \"disabled\" : false,\n \"downloads_url\" : \"https://api.github.com/repos/octocat/Hello-World/downloads\",\n \"events_url\" : \"https://api.github.com/repos/octocat/Hello-World/events\",\n \"fork\" : false,\n \"forks_count\" : 9,\n \"forks_url\" : \"https://api.github.com/repos/octocat/Hello-World/forks\",\n \"full_name\" : \"octocat/Hello-World\",\n \"git_commits_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/commits{/sha}\",\n \"git_refs_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/refs{/sha}\",\n \"git_tags_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/tags{/sha}\",\n \"git_url\" : \"git:github.com/octocat/Hello-World.git\",\n \"has_downloads\" : true,\n \"has_issues\" : true,\n \"has_pages\" : false,\n \"has_projects\" : true,\n \"has_wiki\" : true,\n \"homepage\" : \"https://github.com\",\n \"hooks_url\" : \"https://api.github.com/repos/octocat/Hello-World/hooks\",\n \"html_url\" : \"https://github.com/octocat/Hello-World\",\n \"id\" : 1296269,\n \"is_template\" : true,\n \"issue_comment_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/comments{/number}\",\n \"issue_events_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/events{/number}\",\n \"issues_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues{/number}\",\n \"keys_url\" : \"https://api.github.com/repos/octocat/Hello-World/keys{/key_id}\",\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World/labels{/name}\",\n \"languages_url\" : \"https://api.github.com/repos/octocat/Hello-World/languages\",\n \"merges_url\" : \"https://api.github.com/repos/octocat/Hello-World/merges\",\n \"milestones_url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones{/number}\",\n \"mirror_url\" : \"git:git.example.com/octocat/Hello-World\",\n \"name\" : \"Hello-World\",\n \"network_count\" : 0,\n \"node_id\" : \"MDEwOlJlcG9zaXRvcnkxMjk2MjY5\",\n \"notifications_url\" : \"https://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating}\",\n \"open_issues_count\" : 0,\n \"owner\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"permissions\" : {\n \"admin\" : false,\n \"pull\" : true,\n \"push\" : false\n },\n \"private\" : false,\n \"pulls_url\" : \"https://api.github.com/repos/octocat/Hello-World/pulls{/number}\",\n \"pushed_at\" : \"2011-01-26T19:06:43Z\",\n \"releases_url\" : \"https://api.github.com/repos/octocat/Hello-World/releases{/id}\",\n \"size\" : 108,\n \"ssh_url\" : \"git@github.com:octocat/Hello-World.git\",\n \"stargazers_count\" : 80,\n \"stargazers_url\" : \"https://api.github.com/repos/octocat/Hello-World/stargazers\",\n \"statuses_url\" : \"https://api.github.com/repos/octocat/Hello-World/statuses/{sha}\",\n \"subscribers_count\" : 42,\n \"subscribers_url\" : \"https://api.github.com/repos/octocat/Hello-World/subscribers\",\n \"subscription_url\" : \"https://api.github.com/repos/octocat/Hello-World/subscription\",\n \"svn_url\" : \"https://svn.github.com/octocat/Hello-World\",\n \"tags_url\" : \"https://api.github.com/repos/octocat/Hello-World/tags\",\n \"teams_url\" : \"https://api.github.com/repos/octocat/Hello-World/teams\",\n \"topics\" : [ \"octocat\", \"atom\", \"electron\", \"api\" ],\n \"trees_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/trees{/sha}\",\n \"updated_at\" : \"2011-01-26T19:14:43Z\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World\",\n \"visibility\" : \"public\",\n \"watchers_count\" : 80\n },\n \"sha\" : \"6dcb09b5b57875f334f61aebed695e2e4193db5e\",\n \"user\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n }\n },\n \"body\" : \"Please pull these awesome changes in!\",\n \"closed_at\" : \"2011-01-26T19:01:12Z\",\n \"comments_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347/comments\",\n \"commits_url\" : \"https://api.github.com/repos/octocat/Hello-World/pulls/1347/commits\",\n \"created_at\" : \"2011-01-26T19:01:12Z\",\n \"diff_url\" : \"https://github.com/octocat/Hello-World/pull/1347.diff\",\n \"draft\" : false,\n \"head\" : {\n \"label\" : \"octocat:new-topic\",\n \"ref\" : \"new-topic\",\n \"repo\" : {\n \"allow_merge_commit\" : true,\n \"allow_rebase_merge\" : true,\n \"allow_squash_merge\" : true,\n \"anonymous_access_enabled\" : false,\n \"archive_url\" : \"https://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref}\",\n \"archived\" : false,\n \"assignees_url\" : \"https://api.github.com/repos/octocat/Hello-World/assignees{/user}\",\n \"blobs_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/blobs{/sha}\",\n \"branches_url\" : \"https://api.github.com/repos/octocat/Hello-World/branches{/branch}\",\n \"clone_url\" : \"https://github.com/octocat/Hello-World.git\",\n \"collaborators_url\" : \"https://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator}\",\n \"comments_url\" : \"https://api.github.com/repos/octocat/Hello-World/comments{/number}\",\n \"commits_url\" : \"https://api.github.com/repos/octocat/Hello-World/commits{/sha}\",\n \"compare_url\" : \"https://api.github.com/repos/octocat/Hello-World/compare/{base}...{head}\",\n \"contents_url\" : \"https://api.github.com/repos/octocat/Hello-World/contents/{+path}\",\n \"contributors_url\" : \"https://api.github.com/repos/octocat/Hello-World/contributors\",\n \"created_at\" : \"2011-01-26T19:01:12Z\",\n \"default_branch\" : \"master\",\n \"delete_branch_on_merge\" : true,\n \"deployments_url\" : \"https://api.github.com/repos/octocat/Hello-World/deployments\",\n \"description\" : \"This your first repo!\",\n \"disabled\" : false,\n \"downloads_url\" : \"https://api.github.com/repos/octocat/Hello-World/downloads\",\n \"events_url\" : \"https://api.github.com/repos/octocat/Hello-World/events\",\n \"fork\" : false,\n \"forks_count\" : 9,\n \"forks_url\" : \"https://api.github.com/repos/octocat/Hello-World/forks\",\n \"full_name\" : \"octocat/Hello-World\",\n \"git_commits_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/commits{/sha}\",\n \"git_refs_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/refs{/sha}\",\n \"git_tags_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/tags{/sha}\",\n \"git_url\" : \"git:github.com/octocat/Hello-World.git\",\n \"has_downloads\" : true,\n \"has_issues\" : true,\n \"has_pages\" : false,\n \"has_projects\" : true,\n \"has_wiki\" : true,\n \"homepage\" : \"https://github.com\",\n \"hooks_url\" : \"https://api.github.com/repos/octocat/Hello-World/hooks\",\n \"html_url\" : \"https://github.com/octocat/Hello-World\",\n \"id\" : 1296269,\n \"is_template\" : true,\n \"issue_comment_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/comments{/number}\",\n \"issue_events_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/events{/number}\",\n \"issues_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues{/number}\",\n \"keys_url\" : \"https://api.github.com/repos/octocat/Hello-World/keys{/key_id}\",\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World/labels{/name}\",\n \"languages_url\" : \"https://api.github.com/repos/octocat/Hello-World/languages\",\n \"merges_url\" : \"https://api.github.com/repos/octocat/Hello-World/merges\",\n \"milestones_url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones{/number}\",\n \"mirror_url\" : \"git:git.example.com/octocat/Hello-World\",\n \"name\" : \"Hello-World\",\n \"network_count\" : 0,\n \"node_id\" : \"MDEwOlJlcG9zaXRvcnkxMjk2MjY5\",\n \"notifications_url\" : \"https://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating}\",\n \"open_issues_count\" : 0,\n \"owner\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"permissions\" : {\n \"admin\" : false,\n \"pull\" : true,\n \"push\" : false\n },\n \"private\" : false,\n \"pulls_url\" : \"https://api.github.com/repos/octocat/Hello-World/pulls{/number}\",\n \"pushed_at\" : \"2011-01-26T19:06:43Z\",\n \"releases_url\" : \"https://api.github.com/repos/octocat/Hello-World/releases{/id}\",\n \"size\" : 108,\n \"ssh_url\" : \"git@github.com:octocat/Hello-World.git\",\n \"stargazers_count\" : 80,\n \"stargazers_url\" : \"https://api.github.com/repos/octocat/Hello-World/stargazers\",\n \"statuses_url\" : \"https://api.github.com/repos/octocat/Hello-World/statuses/{sha}\",\n \"subscribers_count\" : 42,\n \"subscribers_url\" : \"https://api.github.com/repos/octocat/Hello-World/subscribers\",\n \"subscription_url\" : \"https://api.github.com/repos/octocat/Hello-World/subscription\",\n \"svn_url\" : \"https://svn.github.com/octocat/Hello-World\",\n \"tags_url\" : \"https://api.github.com/repos/octocat/Hello-World/tags\",\n \"teams_url\" : \"https://api.github.com/repos/octocat/Hello-World/teams\",\n \"topics\" : [ \"octocat\", \"atom\", \"electron\", \"api\" ],\n \"trees_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/trees{/sha}\",\n \"updated_at\" : \"2011-01-26T19:14:43Z\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World\",\n \"visibility\" : \"public\",\n \"watchers_count\" : 80\n },\n \"sha\" : \"6dcb09b5b57875f334f61aebed695e2e4193db5e\",\n \"user\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n }\n },\n \"html_url\" : \"https://github.com/octocat/Hello-World/pull/1347\",\n \"id\" : 1,\n \"issue_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347\",\n \"labels\" : [ {\n \"color\" : \"f29513\",\n \"default\" : true,\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"name\" : \"bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/labels/bug\"\n } ],\n \"locked\" : true,\n \"merge_commit_sha\" : \"e5bd3914e2e596debea16f433f57875b5b90bcd6\",\n \"merged_at\" : \"2011-01-26T19:01:12Z\",\n \"milestone\" : {\n \"closed_at\" : \"2013-02-12T13:22:01Z\",\n \"closed_issues\" : 8,\n \"created_at\" : \"2011-04-10T20:09:31Z\",\n \"creator\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"description\" : \"Tracking milestone for version 1.0\",\n \"due_on\" : \"2012-10-09T23:39:01Z\",\n \"html_url\" : \"https://github.com/octocat/Hello-World/milestones/v1.0\",\n \"id\" : 1002604,\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones/1/labels\",\n \"node_id\" : \"MDk6TWlsZXN0b25lMTAwMjYwNA==\",\n \"number\" : 1,\n \"open_issues\" : 4,\n \"state\" : \"open\",\n \"title\" : \"v1.0\",\n \"updated_at\" : \"2014-03-03T18:58:10Z\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones/1\"\n },\n \"node_id\" : \"MDExOlB1bGxSZXF1ZXN0MQ==\",\n \"number\" : 1347,\n \"patch_url\" : \"https://github.com/octocat/Hello-World/pull/1347.patch\",\n \"requested_reviewers\" : [ {\n \"avatar_url\" : \"https://github.com/images/error/other_user_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/other_user/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/other_user/followers\",\n \"following_url\" : \"https://api.github.com/users/other_user/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/other_user/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/other_user\",\n \"id\" : 1,\n \"login\" : \"other_user\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/other_user/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/other_user/received_events\",\n \"repos_url\" : \"https://api.github.com/users/other_user/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/other_user/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/other_user/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/other_user\"\n } ],\n \"requested_teams\" : [ {\n \"description\" : \"A great team.\",\n \"html_url\" : \"https://github.com/orgs/github/teams/justice-league\",\n \"id\" : 1,\n \"members_url\" : \"https://api.github.com/teams/1/members{/member}\",\n \"name\" : \"Justice League\",\n \"node_id\" : \"MDQ6VGVhbTE=\",\n \"permission\" : \"admin\",\n \"privacy\" : \"closed\",\n \"repositories_url\" : \"https://api.github.com/teams/1/repos\",\n \"slug\" : \"justice-league\",\n \"url\" : \"https://api.github.com/teams/1\"\n } ],\n \"review_comment_url\" : \"https://api.github.com/repos/octocat/Hello-World/pulls/comments{/number}\",\n \"review_comments_url\" : \"https://api.github.com/repos/octocat/Hello-World/pulls/1347/comments\",\n \"state\" : \"open\",\n \"statuses_url\" : \"https://api.github.com/repos/octocat/Hello-World/statuses/6dcb09b5b57875f334f61aebed695e2e4193db5e\",\n \"title\" : \"Amazing new feature\",\n \"updated_at\" : \"2011-01-26T19:01:12Z\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/pulls/1347\",\n \"user\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n }\n} ]", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "a7cb995f-e5ce-4210-9334-087e9fbaced3", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.062836Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "pulls/list", + "schema": { + "items": { + "$ref": "#/components/schemas/pull-request-simple" + }, + "type": "array" + } + } + } + }, + "insertionIndex": 480 + }, + { + "id": "3ac14230-1df1-44c3-9c88-dc29edf508ee", + "name": "Create a repository project", + "request": { + "urlPath": "/repos/4lyvyvv0fw99q8973r067xqt70g7j7y7jh2mn4m6lkl7svp0tuivlyfx5qdo1u4vh1yuznpwnh9uhr3tnsd3b19mo82aun62xmujlukl0d7j5/ut5w8yxgxblu66oy8ir8e0l3i7xx6vkpt3xvj3audhphdfnc298vt19r41kkk6jp7jo3ilfmyk0tu49ftrio6i9fkw9f5265j9twbm6jmbwcx4ep05d5rz1qx7kinmx5evmp1gv19ock26pqb2c0bxr5c6dldko6rgabold1dvbqq0qw8ulq2mtmtnsf77wrzy/projects", + "method": "POST" + }, + "response": { + "status": 422, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/117803\",\n \"message\" : \"Ratione et impedit. Reprehenderit officia aut. Qui dolore perferendis itaque iste dolor fugiat assumenda.\",\n \"errors\" : [ \"3glr5qcs0arlgbwvvzjpv1kzsldd82opq2m23\", \"pnqvrb1828upx5hi2u2zpdi6qe7emmcnjxyce6tgvcnq8as4zhmiiur5k79mi6ut7xnamqrrnfwqxvinjjfp07s5qhqn4cpxgaio14j24w6quezhm4iqtn12k2um1uxv71qgww\", \"wo5s5kz4ry35qrvj7fpnnqz9gbfimulj6mpdqap8k3c3eoji85s\", \"ufc3wpp9ep9abjovo5nnjm7cq4cor3sfmuz19rngk2ptwa6\", \"zh18ypa1hkmosb71rw68hwpdo3ty22p41jx0c1d7mbsykyq4znrysbzsqzzyu1hu48s9hg6hpxb5he89z3pyp0523lchsa97dw6ierpkl7j1tqczpsd0za2ukxb3g6m3avoi2tabgayfbanveudcu9fldmzdjocwk04ryasr07pl83h5u\", \"yz2swrhkhcjio3v2pcjvni1yjw36mbkowwkprybdkt19lef6cn2vkvwg6jpsz8v\" ]\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "3ac14230-1df1-44c3-9c88-dc29edf508ee", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.062714Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "projects/create-for-repo", + "schema": { + "description": "Validation Error Simple", + "properties": { + "documentation_url": { + "type": "string" + }, + "errors": { + "items": { + "type": "string" + }, + "type": "array" + }, + "message": { + "type": "string" + } + }, + "required": ["message", "documentation_url"], + "title": "Validation Error Simple", + "type": "object" + } + } + } + }, + "insertionIndex": 481 + }, + { + "id": "2da59e8d-5205-49d9-bfa9-77877e558c18", + "name": "Create a repository project", + "request": { + "urlPath": "/repos/qpzd1ikdcdu1d34esu52qimy0y1ccsl4zo7okrscytpgvcbzhgtni5gy4gebs6j3zywh3i7tby8tqp5crhgpfpzs9l7s2nb1phjhccvets5qlxngab4ve1fdz5966ssvh0geksqsaf9uz1o5hrnh9yixbo0th76os62u4b7muaz6mocsh5m3tbqn5hbel0d96hb3q/qwsu6rgfl6dee0vgtuxxazhcf7cfpzi1ynnhigejj5j3nct2bt9972uqtzuix3hxvsl0k7zkbzmo54i5rtqgkbvew527t8p4wtviyi5lxis7zo5anfhgolr4eho064hfy4410gde103mxxwcxgluc0328v4fjn7hidbgoqqcj29ns2poijy3qpf/projects", + "method": "POST" + }, + "response": { + "status": 410, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/248652\",\n \"message\" : \"Similique tempore quae assumenda et hic dolores qui. Laudantium cum sit. Molestiae ut dolores dicta. Et voluptatem quaerat sint. Aliquam adipisci ab cumque.\",\n \"url\" : \"https://web.example.mocklab.io/506945\",\n \"status\" : \"tf1x60hfegcau5lmnnhopsq9ed5j4t6zgmhytosnm1brfzidlz1l87205f1p9ns0h\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "2da59e8d-5205-49d9-bfa9-77877e558c18", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.062503Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "projects/create-for-repo", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 482 + }, + { + "id": "f77098fc-12b7-43c0-9498-5ead1bcdb886", + "name": "Create a repository project", + "request": { + "urlPath": "/repos/o9mtqui7v8bsvunawlepo2pu2r97mvxoboihnnfcyhye7svh5emops7em7ahu3dv38kh62wcnikt7u4oojbs31cbg9xa70pdaa57oz2r4t94jgbc8jo96jsmlnacpuh0h24wsetjejpqpcc5bg9wgh6uq6ncpqkjk8846s0tyclxgwn278brcjvctp6ebrrgrfv/amilsikrsv19z9ia4h264kn2p37z40c32o0zztru13z7nsigik4zxz8atqw1rqdfy5qv7x6/projects", + "method": "POST" + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/372236\",\n \"message\" : \"Facilis reprehenderit in illum voluptas et. Eaque aut deleniti. Magni similique excepturi exercitationem voluptatem et nostrum eum. Eum ex ut optio reiciendis aliquid voluptates voluptatem.\",\n \"url\" : \"https://web.example.mocklab.io/460916\",\n \"status\" : \"yn8r5y99q5fixo5bjk5jh6qa3uwbo0zzn61d3j8kdbj263cfw5ld63dwn5oll8rdedt8ck37v733vi14i1fafg90l7dnfnqpoqe7c7ux59sqoyf4lr2uiv494h6s8oc\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "f77098fc-12b7-43c0-9498-5ead1bcdb886", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.062274Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "projects/create-for-repo", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 483 + }, + { + "id": "b482973b-2bf5-4897-a549-189f31765759", + "name": "Create a repository project", + "request": { + "urlPath": "/repos/3u04t2n6ijkelqcn0ssyh0w9icmovtgeo4e65v5kxir188gwy6oo5mk3rw0q16y8cyohansl5xlrzy2p2lfxgtkc7nun2xd58tsx32lcuikho3fy8zkogwrjmeg0v2/ak5zx13nz6goav3gpbfh8iapqfysp5rpfdks5vomxyx1t1nbst4wqlgabux6dr9fhsuxl3kop0ik4osvjdthwdk090hf0b65anlgbnhmlwrxvvvfn4xm3qez8m1gwmq8xv6v56q45tiniqyvma2hgwnjgzrtya9ufc3jt128r8o8whqcr2g/projects", + "method": "POST" + }, + "response": { + "status": 403, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/640417\",\n \"message\" : \"Ut beatae expedita quo ex. Sint est est laudantium unde consequuntur tenetur tempore. Magni non non quisquam. Ullam repellendus ea illo dolores sunt id. Officiis eius laborum non neque.\",\n \"url\" : \"https://web.example.mocklab.io/905330\",\n \"status\" : \"4qk68jjoyym7f723xk43uzladvjnkhwkkdbvvntiwyfqq29nehctjwtek7ud\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "b482973b-2bf5-4897-a549-189f31765759", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.062043Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "projects/create-for-repo", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 484 + }, + { + "id": "633b63df-de92-4b63-9f2a-ea0fab95b868", + "name": "Create a repository project", + "request": { + "urlPath": "/repos/j208k3wljofa6v34xjm8fmnp61u6lqa6l640s1purrdcftz97tp7tjshha56k3j0z48bc0blu7h39uhu5libs54cy9yllsv0rqkh7t6h5il2qxcdo2udkearly7yo2uopvc3av58dqnmgbtbgvjcxmvu116q6hlxbfcw7fw/3xrwj2pr59qvtxn2s1197gk3t08lh2rxh48hmrfo4495tc4b1ftd9arzm3wyyzunvj8dk3e2864v8wvj9b6bgd87o3uu6yygyoz/projects", + "method": "POST" + }, + "response": { + "status": 401, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/688066\",\n \"message\" : \"Architecto quis optio itaque molestias ratione perferendis praesentium. Quibusdam quis ea labore quo. Magnam earum modi quia. Eligendi ratione aspernatur voluptate vel.\",\n \"url\" : \"https://web.example.mocklab.io/723663\",\n \"status\" : \"oaotcq3f8vx5co93jup4o99cuztmnu0fvcxnzlwb8od5mx8hx39wrycnu9hd9s9eq9lmq8pe1nml60ty2gaex9wipo8kj06zq71s3gev3e3njc7r1\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "633b63df-de92-4b63-9f2a-ea0fab95b868", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.061788Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "projects/create-for-repo", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 485 + }, + { + "id": "b53358a7-8daf-42a1-8f94-c5a03e79bbb7", + "name": "Create a repository project - default", + "request": { + "urlPath": "/repos/lox3vud60d8whwkw4/q1h7dno11wdfsp1/projects", + "method": "POST" + }, + "response": { + "status": 201, + "body": "{\n \"body\" : \"Developer documentation project for the developer site.\",\n \"columns_url\" : \"https://api.github.com/projects/1002604/columns\",\n \"created_at\" : \"2011-04-10T20:09:31Z\",\n \"creator\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"html_url\" : \"https://github.com/api-playground/projects-test/projects/1\",\n \"id\" : 1002604,\n \"name\" : \"Projects Documentation\",\n \"node_id\" : \"MDc6UHJvamVjdDEwMDI2MDQ=\",\n \"number\" : 1,\n \"owner_url\" : \"https://api.github.com/repos/api-playground/projects-test\",\n \"state\" : \"open\",\n \"updated_at\" : \"2014-03-03T18:58:10Z\",\n \"url\" : \"https://api.github.com/projects/1002604\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "b53358a7-8daf-42a1-8f94-c5a03e79bbb7", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.061528Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "projects/create-for-repo", + "schema": { + "description": "Projects are a way to organize columns and cards of work.", + "properties": { + "body": { + "description": "Body of the project", + "example": "This project represents the sprint of the first week in January", + "nullable": true, + "type": "string" + }, + "columns_url": { + "example": "https://api.github.com/projects/1002604/columns", + "format": "uri", + "type": "string" + }, + "created_at": { + "example": "2011-04-10T20:09:31Z", + "format": "date-time", + "type": "string" + }, + "creator": { + "$ref": "#/components/schemas/nullable-simple-user" + }, + "html_url": { + "example": "https://github.com/api-playground/projects-test/projects/12", + "format": "uri", + "type": "string" + }, + "id": { + "example": 1002604, + "type": "integer" + }, + "name": { + "description": "Name of the project", + "example": "Week One Sprint", + "type": "string" + }, + "node_id": { + "example": "MDc6UHJvamVjdDEwMDI2MDQ=", + "type": "string" + }, + "number": { + "example": 1, + "type": "integer" + }, + "organization_permission": { + "description": "The baseline permission that all organization members have on this project. Only present if owner is an organization.", + "enum": ["read", "write", "admin", "none"], + "type": "string" + }, + "owner_url": { + "example": "https://api.github.com/repos/api-playground/projects-test", + "format": "uri", + "type": "string" + }, + "private": { + "description": "Whether or not this project can be seen by everyone. Only present if owner is an organization.", + "type": "boolean" + }, + "state": { + "description": "State of the project; either 'open' or 'closed'", + "example": "open", + "type": "string" + }, + "updated_at": { + "example": "2014-03-03T18:58:10Z", + "format": "date-time", + "type": "string" + }, + "url": { + "example": "https://api.github.com/projects/1002604", + "format": "uri", + "type": "string" + } + }, + "required": [ + "id", + "node_id", + "number", + "name", + "body", + "state", + "url", + "html_url", + "owner_url", + "creator", + "columns_url", + "created_at", + "updated_at" + ], + "title": "Project", + "type": "object" + } + } + } + }, + "insertionIndex": 486 + }, + { + "id": "8fdd82d7-ef56-40c3-884b-9be442809236", + "name": "List repository projects", + "request": { + "urlPath": "/repos/gfoq/4p1xv9a8x23brt9i4g6291i7x37f3sv6ndhl15ku/projects", + "method": "GET" + }, + "response": { + "status": 422, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/136700\",\n \"message\" : \"Porro perferendis veniam praesentium quis. Sapiente fugit minus earum fugit quo. Harum tempore occaecati omnis. Ex et enim ratione.\",\n \"errors\" : [ \"3mg7zy8hfw3wljpouuycc7qzns9rqc9drrnp37kf1co37b4likxertq0db4db72go2709721hettzb3wx444hsg0shbkb5wa2p59xzwsbeotpol3bof5qeem6ww28mssh6yfdfrau\", \"k9zroc85xmvluh78skgaqicrw\" ]\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "8fdd82d7-ef56-40c3-884b-9be442809236", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.061344Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "projects/list-for-repo", + "schema": { + "description": "Validation Error Simple", + "properties": { + "documentation_url": { + "type": "string" + }, + "errors": { + "items": { + "type": "string" + }, + "type": "array" + }, + "message": { + "type": "string" + } + }, + "required": ["message", "documentation_url"], + "title": "Validation Error Simple", + "type": "object" + } + } + } + }, + "insertionIndex": 487 + }, + { + "id": "dfb50df0-7c45-468b-ac23-7393f4aef918", + "name": "List repository projects", + "request": { + "urlPath": "/repos/gxza6tq1pt1jkqwh0v4z3pxf58vxfthlxp1plx88qcv2sfl5g0k9gfep2y4ihvduactuhrdtobg51vhnja47sx7yyip17ui3o1iih14rodfkd1s0h0r265gmifj2xs78ilcu715i47ofi1qbwjirfl2eorpojfi6840g1pfnyth2x3y4uv48j43hqs8ps9ms/wee6mhz75ohzy8id0b98l2p9uf7axz9bfqkj7m6v935mxsppgg9itzih2bfr40g3q4moqphwzcjiv3p6bnzzl4jwmjbk2xdf56dl0pv55wpkccox8dnxi0/projects", + "method": "GET" + }, + "response": { + "status": 410, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/853681\",\n \"message\" : \"Est id accusamus accusamus doloribus dolores. In accusantium omnis id ex aut. Ut vitae quisquam voluptas libero pariatur. Est dolores harum omnis. Officia facilis fuga error sed.\",\n \"url\" : \"https://web.example.mocklab.io/456930\",\n \"status\" : \"r0spfg523738ag4rfbnzdusqc4e0isvyksqjrfsbcx150t7gm9tuj6aivrm05pef1pensaz9uxzdnjqveu9ayc69oyb2sluxmze384lisz16a5ahwa5mso43gw\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "dfb50df0-7c45-468b-ac23-7393f4aef918", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.061138Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "projects/list-for-repo", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 488 + }, + { + "id": "d915f9ab-368c-4e47-9c9e-da6a7c18610b", + "name": "List repository projects", + "request": { + "urlPath": "/repos/h4hv41kqhdv47i870ec68zo9mulfhz64hh7o6a5vai426dmc5rlp1ddgw5alw7l2pjtbzef0vuez1myb8zu50x5ph2alae7ybbg0knmxwkaauc4ig8/q2bx4i3rexwo1huhyv96hjgxz2eoyujbqohn9pwm9ahn6rn9rquopyzsnz22ah01xez2948le86di84284l9mitwgjhoc2w1ds5a8i4vr0kor2zrap6tondlesn64ufwp8erqj508h22vgz8rgg0ztbglcbk9jphy4qlbfh5jp11f6suh58/projects", + "method": "GET" + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/722234\",\n \"message\" : \"Soluta officia voluptatum odit eius iste. Libero alias et explicabo eveniet excepturi. Eveniet vitae quasi totam tempora alias illo. Itaque aliquam sint omnis in minima voluptas architecto. Aut accusa\",\n \"url\" : \"https://web.example.mocklab.io/366337\",\n \"status\" : \"vax0\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "d915f9ab-368c-4e47-9c9e-da6a7c18610b", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.060891Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "projects/list-for-repo", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 489 + }, + { + "id": "6945649e-26e5-4309-8c06-97950773c17a", + "name": "List repository projects", + "request": { + "urlPath": "/repos/hyko5vvwtn37dmd3xm151s52ktje91d9bhmbap4en09j19v63kijwm8lh7re5wnaesm1kkikkg38nyrllmmypfejj0cdxbpdjk4jhgtm45flilfy2pvv07e2hhdyobu0d1ol7hogunvgi628b0nza7xpg6vaivinteuelsr3mrtvn9tw79fb5da13e7d3mqw7kp/kovus9b44w2jaw6klwg0g2tmn6f8s7munym7n3esbefzh7z1i5ygs8rt6x8m4xbs4rxvoucavomrg0u14f2e1drv3zd6naga0j4zxzwnuphcvz6v36x9vri6t64w09s6m6ue2yzph0ud3mzpim5l28g1awap40k709hh5fo4k2nnbjmhfg77jhkv0swg9w/projects", + "method": "GET" + }, + "response": { + "status": 403, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/839630\",\n \"message\" : \"Totam quia odio rem soluta repellat dolorum et. Ea qui vel eum sed. Ea libero incidunt doloremque quis saepe. Modi nihil voluptas. Necessitatibus et ut maxime.\",\n \"url\" : \"https://web.example.mocklab.io/202358\",\n \"status\" : \"vgx0bzouml2unpkps0ke79knnj5mm72mk0j5y5vtiqqujzc8pjhsd0p50hx\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "6945649e-26e5-4309-8c06-97950773c17a", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.060653Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "projects/list-for-repo", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 490 + }, + { + "id": "8b91dff6-95e1-4f60-9ff4-7b4c62cca63a", + "name": "List repository projects", + "request": { + "urlPath": "/repos/zb3rf2h2addha3tcfivrwivjv1gkzqv1nkdj815trzx1daq2wz4dviwlrzpc40tkvz5hlix025yz9bb43ymbcxbex4fs8bzjrqt871kv5w4jmsx4pyhdnkcdfew24u71fpgw12nzqkxrafksws/0dk9oys8hlbcert6u79b3p0gbrhy0fuideue6ol7z8woenhcdmr9jpkt6fwaufelvkyidmp89hehj0ypurel9aeqkelg4lthwu9mr7xqnwfxhln1osq5dccvo68ccy51se6pyfcii9g28ngc0zq3fwgjfd02jxsqly3zgn/projects", + "method": "GET" + }, + "response": { + "status": 401, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/402584\",\n \"message\" : \"Debitis est ipsa voluptas et. Sint laboriosam nam suscipit nam eos eum illo. Aperiam nisi autem quo. Delectus vitae dolor ipsa natus voluptates beatae ullam. Voluptate iste recusandae laborum ex ut.\",\n \"url\" : \"https://web.example.mocklab.io/660956\",\n \"status\" : \"itfgbnkdtv7wsze6axyzj98nmpfdc6yyttpx1tccmx0ypy7k36f7xpin4odafoftux24pbhqqrwf0zal1lcu32k8yixgm09a93511hsnhdwf4ommice6acg2ex20lfygb1upye7izn87y91vwd0ilt\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "8b91dff6-95e1-4f60-9ff4-7b4c62cca63a", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.060416Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "projects/list-for-repo", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 491 + }, + { + "id": "19abb82e-a5f5-46dd-b564-d63068625407", + "name": "List repository projects - default", + "request": { + "urlPath": "/repos/2rtu13sfuoafzc88mrm9dxphods5jbv0lkdjletmcfr0ozg25mc3hkw1pnpwqz1waq5q6v3s1pt1j9z8rw3crnzmm6ddtcb2jh4bepot0lwuypymh5w3iefcg08rulilqdk3iyrgis7im9jkmmbpo9uf7f9aywjr33b22kwji0rio34rjlbdsbejdb5ztrtb/cydoiutg2qy9iciurkluti72hm8sh6rvswgk1k1oc1s94bjnvwl7jctauftp2nuqq46zdnnfs2ikc6c0os65sussvx1s1sxzy80544fkbatb8jshjqazermv4/projects", + "method": "GET" + }, + "response": { + "status": 200, + "body": "[ {\n \"body\" : \"Developer documentation project for the developer site.\",\n \"columns_url\" : \"https://api.github.com/projects/1002604/columns\",\n \"created_at\" : \"2011-04-10T20:09:31Z\",\n \"creator\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"html_url\" : \"https://github.com/api-playground/projects-test/projects/1\",\n \"id\" : 1002604,\n \"name\" : \"Projects Documentation\",\n \"node_id\" : \"MDc6UHJvamVjdDEwMDI2MDQ=\",\n \"number\" : 1,\n \"owner_url\" : \"https://api.github.com/repos/api-playground/projects-test\",\n \"state\" : \"open\",\n \"updated_at\" : \"2014-03-03T18:58:10Z\",\n \"url\" : \"https://api.github.com/projects/1002604\"\n} ]", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "19abb82e-a5f5-46dd-b564-d63068625407", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.060103Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "projects/list-for-repo", + "schema": { + "items": { + "$ref": "#/components/schemas/project" + }, + "type": "array" + } + } + } + }, + "insertionIndex": 492 + }, + { + "id": "06888920-2145-4684-8e96-b66b23365a73", + "name": "Update pre-receive hook enforcement for a repository - default", + "request": { + "urlPath": "/repos/0yc2s1p7wjsppig4c1ne26tu0mbo5mqrf0leo54w9n9qq2pztrztickjsw7vuwhxxb59h3ym2thk832dskc0ok9rvapwupyruj4ut5rucsuivwsy9cet0lrwdk1bpgdv7g6n5n7jrpe3zuy1rr13icfs92yhftjrniv4aovnedmmszcvjlsr/sl4lcco885zhahhhf4a6w2wk3hsxkgd7tmwgkfdmf4rxinlki5qgt7qp34mo8x4i0ggqwrhextw0rj1gh13f1wdicjmk72pjb78qnq799gezh7o82k966xfwh7q2ttvalw3hrusno/pre-receive-hooks/4756177880600358822", + "method": "PATCH" + }, + "response": { + "status": 200, + "body": "{\n \"configuration_url\" : \"https://github.example.com/api/v3/repos/octocat/hello-world/pre-receive-hooks/42\",\n \"enforcement\" : \"enabled\",\n \"id\" : 42,\n \"name\" : \"Check Commits\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "06888920-2145-4684-8e96-b66b23365a73", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.060037Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "enterprise-admin/update-pre-receive-hook-enforcement-for-repo", + "schema": { + "properties": { + "configuration_url": { + "type": "string" + }, + "enforcement": { + "type": "string" + }, + "id": { + "type": "integer" + }, + "name": { + "type": "string" + } + }, + "type": "object" + } + } + } + }, + "insertionIndex": 493 + }, + { + "id": "ade2e3f8-d100-4c90-8bf4-82c831ee6d1a", + "name": "Get a pre-receive hook for a repository - default", + "request": { + "urlPath": "/repos/6tte9b9a1aa2ls5a51nd1nr4vosqb21ovcs2g1t146q0xisuqlse13b9da3uvekzhikha8o293nmpd8i2b4vm594bq7jcpy9bg5iry2bc8uw1l0iwiq19ld8463iggatrufewl0z1eb5pyhr5vgoofe9h7yru9077npp0fxrrhm22kmshltwpb0wm82dut/8z49vcw6t64zpq18nia8memq/pre-receive-hooks/6621121534308783684", + "method": "GET" + }, + "response": { + "status": 200, + "body": "{\n \"configuration_url\" : \"https://github.example.com/api/v3/orgs/octocat/pre-receive-hooks/42\",\n \"enforcement\" : \"disabled\",\n \"id\" : 42,\n \"name\" : \"Check Commits\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "ade2e3f8-d100-4c90-8bf4-82c831ee6d1a", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.059963Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "enterprise-admin/get-pre-receive-hook-for-repo", + "schema": { + "properties": { + "configuration_url": { + "type": "string" + }, + "enforcement": { + "type": "string" + }, + "id": { + "type": "integer" + }, + "name": { + "type": "string" + } + }, + "type": "object" + } + } + } + }, + "insertionIndex": 494 + }, + { + "id": "b8e4d29d-5829-4bcc-acbd-43302996a283", + "name": "Remove pre-receive hook enforcement for a repository - default", + "request": { + "urlPath": "/repos/5zv3k3auv2os8qh32aswvvo03vfl7mr0z1xghfowojqvtjlhmbpbtx68cgqf3ddslyh6d8lbpcyw11it7txdf4p7fox3ovus7v34igfz7admck4zmghp9yb1sdh8ibit02/dgflrhb7sdjhi6sd3/pre-receive-hooks/6162136317492821432", + "method": "DELETE" + }, + "response": { + "status": 200, + "body": "{\n \"configuration_url\" : \"https://github.example.com/api/v3/orgs/octocat/pre-receive-hooks/42\",\n \"enforcement\" : \"disabled\",\n \"id\" : 42,\n \"name\" : \"Check Commits\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "b8e4d29d-5829-4bcc-acbd-43302996a283", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.059893Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "enterprise-admin/remove-pre-receive-hook-enforcement-for-repo", + "schema": { + "properties": { + "configuration_url": { + "type": "string" + }, + "enforcement": { + "type": "string" + }, + "id": { + "type": "integer" + }, + "name": { + "type": "string" + } + }, + "type": "object" + } + } + } + }, + "insertionIndex": 495 + }, + { + "id": "f905db81-6d0d-4ac1-8a72-e597ef59abbc", + "name": "List pre-receive hooks for a repository - default", + "request": { + "urlPath": "/repos/fl1s6f2zvtap1t52uhx2bxo19emr92ilrn9uo57b1tyowrpbylj06kh8ys6o8euy0qxi57mellcofi6lomfryqwpat3zkokhpbnxt9lln3gve63v59r7725/5kixxrstwjlj4ym682hm3vbeq5a3e8ay7yj6ckw7yl6r0wwaalryzpzjxz15zmsdxkr287p6nssk3j0sabfqpnys8c390ibrd2bkuavxplbgo5egubh7kqsovp8f2rx69hwp6jm2t/pre-receive-hooks", + "method": "GET" + }, + "response": { + "status": 200, + "body": "[ {\n \"configuration_url\" : \"https://github.example.com/api/v3/orgs/octocat/pre-receive-hooks/42\",\n \"enforcement\" : \"disabled\",\n \"id\" : 42,\n \"name\" : \"Check Commits\"\n} ]", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "f905db81-6d0d-4ac1-8a72-e597ef59abbc", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.05981Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "enterprise-admin/list-pre-receive-hooks-for-repo", + "schema": { + "items": { + "$ref": "#/components/schemas/repository-pre-receive-hook" + }, + "type": "array" + } + } + } + }, + "insertionIndex": 496 + }, + { + "id": "fe2fe009-085f-4246-9208-0a704adf0a18", + "name": "Get GitHub Enterprise Server Pages build - default", + "request": { + "urlPath": "/repos/pn3ez1hlvnvfezmbt1mzzbiven8rc72zpj41eluvy6f4dx8mljvrxmn9aasqqug8j7pmcwjl32jb77ne371lke9gfta9u0hkcoh7x3hjc9g/szdqiwn6jadf0tmmihnqrcbbj251ffzm6sx1xe83xc6zp/pages/builds/74246311906000290", + "method": "GET" + }, + "response": { + "status": 200, + "body": "{\n \"commit\" : \"351391cdcb88ffae71ec3028c91f375a8036a26b\",\n \"created_at\" : \"2014-02-10T19:00:49Z\",\n \"duration\" : 2104,\n \"error\" : { },\n \"pusher\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"status\" : \"built\",\n \"updated_at\" : \"2014-02-10T19:00:51Z\",\n \"url\" : \"https://api.github.com/repos/github/developer.github.com/pages/builds/5472601\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "fe2fe009-085f-4246-9208-0a704adf0a18", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.059742Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/get-pages-build", + "schema": { + "description": "Page Build", + "properties": { + "commit": { + "type": "string" + }, + "created_at": { + "format": "date-time", + "type": "string" + }, + "duration": { + "type": "integer" + }, + "error": { + "properties": { + "message": { + "nullable": true, + "type": "string" + } + }, + "required": ["message"], + "type": "object" + }, + "pusher": { + "$ref": "#/components/schemas/nullable-simple-user" + }, + "status": { + "type": "string" + }, + "updated_at": { + "format": "date-time", + "type": "string" + }, + "url": { + "format": "uri", + "type": "string" + } + }, + "required": [ + "url", + "status", + "error", + "pusher", + "commit", + "duration", + "created_at", + "updated_at" + ], + "title": "Page Build", + "type": "object" + } + } + } + }, + "insertionIndex": 497 + }, + { + "id": "640387ac-0252-4805-a4e7-62d1de70ea7c", + "name": "Get latest Pages build - default", + "request": { + "urlPath": "/repos/qbkvnvsaobicentqg1010b9vlfsynj6gjxdvflowf7gkp93z7os17z447fgrz3p/4cby5arjxy34dbtjjr1ll3os2rp07kjztgd9ltwtlnkgowqo9mmg2wuf4d5u8qykcn1hkicr1jshs4j1kxeq15sv056wvh6zz0rq73br9z38cawq05b7x8cp2q85d7pjp37f124ztf599qp8k1smyygr1ooeidpaqdd9zh4pap7zunpiie1o9flvn8ljhfj4iym4p13v/pages/builds/latest", + "method": "GET" + }, + "response": { + "status": 200, + "body": "{\n \"commit\" : \"351391cdcb88ffae71ec3028c91f375a8036a26b\",\n \"created_at\" : \"2014-02-10T19:00:49Z\",\n \"duration\" : 2104,\n \"error\" : { },\n \"pusher\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"status\" : \"built\",\n \"updated_at\" : \"2014-02-10T19:00:51Z\",\n \"url\" : \"https://api.github.com/repos/github/developer.github.com/pages/builds/5472601\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "640387ac-0252-4805-a4e7-62d1de70ea7c", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.05958Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/get-latest-pages-build", + "schema": { + "description": "Page Build", + "properties": { + "commit": { + "type": "string" + }, + "created_at": { + "format": "date-time", + "type": "string" + }, + "duration": { + "type": "integer" + }, + "error": { + "properties": { + "message": { + "nullable": true, + "type": "string" + } + }, + "required": ["message"], + "type": "object" + }, + "pusher": { + "$ref": "#/components/schemas/nullable-simple-user" + }, + "status": { + "type": "string" + }, + "updated_at": { + "format": "date-time", + "type": "string" + }, + "url": { + "format": "uri", + "type": "string" + } + }, + "required": [ + "url", + "status", + "error", + "pusher", + "commit", + "duration", + "created_at", + "updated_at" + ], + "title": "Page Build", + "type": "object" + } + } + } + }, + "insertionIndex": 498 + }, + { + "id": "56c5fd7b-2494-4034-9251-c039ee7584c8", + "name": "Request a GitHub Enterprise Server Pages build - default", + "request": { + "urlPath": "/repos/9545j1ia33g37q8yj76l3b6fc6lc931umwfw8keu50er7ou4s1pt0c7ei47oitd60t2b28t5ghp0pjle32dnc02ezk1fe64fq35uhghn1kivpk27pz3sfyzf50h5nrjycwbxe55rreqm3a4xp4y7h6bsdd3jjj5akq1w3mlyvvgq0lz1olssbdxqhrx3w/znvwgmwvmgo825mo28j826cym76xmcgjflk/pages/builds", + "method": "POST" + }, + "response": { + "status": 201, + "body": "{\n \"status\" : \"queued\",\n \"url\" : \"https://api.github.com/repos/github/developer.github.com/pages/builds/latest\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "56c5fd7b-2494-4034-9251-c039ee7584c8", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.059475Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/request-pages-build", + "schema": { + "description": "Page Build Status", + "properties": { + "status": { + "example": "queued", + "type": "string" + }, + "url": { + "example": "https://api.github.com/repos/github/hello-world/pages/builds/latest", + "format": "uri", + "type": "string" + } + }, + "required": ["url", "status"], + "title": "Page Build Status", + "type": "object" + } + } + } + }, + "insertionIndex": 499 + }, + { + "id": "56dfa7d6-c1e7-4a89-acab-d868b9ccb61e", + "name": "List GitHub Enterprise Server Pages builds - default", + "request": { + "urlPath": "/repos/114k6vjznj48v1mpvn64qk3hs31t4nwg7lqb9iph2bcpu721mdwpvg4p1sal5lg1oma25sz46isdufez6y0qetn9h99v5md2pgd886o527zaf6ekonk1rgzcziyrsihvxfzljj4ozh2e/x5z4qr01f6qjva4yafw1dj3ry0r2s88t013xnyn5155fqbbr425082qmy2u24u5x2az396q9fmq/pages/builds", + "method": "GET" + }, + "response": { + "status": 200, + "body": "[ {\n \"commit\" : \"351391cdcb88ffae71ec3028c91f375a8036a26b\",\n \"created_at\" : \"2014-02-10T19:00:49Z\",\n \"duration\" : 2104,\n \"error\" : { },\n \"pusher\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"status\" : \"built\",\n \"updated_at\" : \"2014-02-10T19:00:51Z\",\n \"url\" : \"https://api.github.com/repos/github/developer.github.com/pages/builds/5472601\"\n} ]", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "56dfa7d6-c1e7-4a89-acab-d868b9ccb61e", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.059406Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/list-pages-builds", + "schema": { + "items": { + "$ref": "#/components/schemas/page-build" + }, + "type": "array" + } + } + } + }, + "insertionIndex": 500 + }, + { + "id": "c6ead72b-25b2-4708-9740-7b5561436adf", + "name": "Update information about a GitHub Pages site (application/json)", + "request": { + "urlPath": "/repos/4vm64tolty9l4avmsxipi8ikgoemplnaealj8t8vndho2zzo40sh32ipfk5sr1u8l2n7oepckyrj5mavcnwt24mvrk2kgyicyfx9424cri55t18lv8tawymmb4tugbguwifa0f2nlj7n5ihvlp00b4aabs85z9u6kiw9366d1j6lf2ia/zvuiy7/pages", + "method": "PUT", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 422, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/451650\",\n \"message\" : \"Quis praesentium possimus id dicta. Consectetur et odio autem. Id voluptas ea inventore maiores fugiat. Rerum sapiente vero.\",\n \"errors\" : [ {\n \"code\" : \"xl5m3xegatze74615s67btgrryjmqggc23q\",\n \"field\" : \"qt7805mzp3at5k1zzqaddgtr63faslsp\",\n \"resource\" : \"kpq53gwumgkhqq10flvnrb457yq24nrf27a917\",\n \"index\" : 7297418194204386660,\n \"message\" : \"Deserunt quia qui autem pariatur. Voluptatibus nemo aspernatur odio laboriosam ad ut. Asperiores nam at et corporis expedita sapiente itaque. Eos ut sunt facere a et aliquid error. Vel nemo cumque quo\",\n \"value\" : { }\n }, {\n \"code\" : \"81gbyzg61e6w90qa88v62yf48i10em6h3r17liitljapcza1joiwhyldk3assa1ikc702o1\",\n \"field\" : \"9wdphv1m98x9mcd2lbapejxgvmm3e8s53xtv657j6hl3z4pe5osci2tpd8yrlccx6zhgahlipxjqvdqnkjwlysiqqeqi9t25daii5ail93tz72qe8u2woabhqg\",\n \"resource\" : \"zzoa4zie5lkjubdi30ib00kj96cy1m8p7m8ckaruonxpfxby09diyezrc4mmjjblx2vqdveqy4a671zrtuhp48227ib35w55v4xy0vm90ojowphfn6e2wagk1c5crzcernayn8foij8rgf2m6t0en09p8ntsqr0fts6z7wll774t61p6e87ou6\",\n \"index\" : 2564072008640914816,\n \"message\" : \"Quibusdam eum recusandae. Neque incidunt mollitia. Optio quia sed. Dolores sint voluptas omnis repellat explicabo quod.\",\n \"value\" : { }\n }, {\n \"code\" : \"7lgelo17np92oi6t2vfd9f8fwrh2hrd7bmtripeaa4sokspahl77p3l714xmq5eibmlrxx8wubmvym3f727i1jth1ta4wr0mbzrafin2isfhdmxoy0nulbb048x0r31dy2ycfmqvckkgaz6yjhnbucchefga0du3qf0d1te4v7ca4igh27kxbtk\",\n \"field\" : \"bs5sontgv2cgj36xjvwtsby5q759ziv94ulam8\",\n \"resource\" : \"72glnhed1n0b2pnazx00j14\",\n \"index\" : 4200788634727286743,\n \"message\" : \"Itaque quia omnis. Dolor quam est tempore quia porro dolorem est. Necessitatibus est aut vitae error voluptatem omnis eum.\",\n \"value\" : { }\n } ]\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "c6ead72b-25b2-4708-9740-7b5561436adf", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.059337Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/update-information-about-pages-site", + "schema": { + "description": "Validation Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "errors": { + "items": { + "properties": { + "code": { + "type": "string" + }, + "field": { + "type": "string" + }, + "index": { + "type": "integer" + }, + "message": { + "type": "string" + }, + "resource": { + "type": "string" + }, + "value": { + "oneOf": [ + { + "nullable": true, + "type": "string" + }, + { + "nullable": true, + "type": "integer" + }, + { + "items": { + "type": "string" + }, + "nullable": true, + "type": "array" + } + ] + } + }, + "required": ["code"], + "type": "object" + }, + "type": "array" + }, + "message": { + "type": "string" + } + }, + "required": ["message", "documentation_url"], + "title": "Validation Error", + "type": "object" + } + } + } + }, + "insertionIndex": 501 + }, + { + "id": "81d3c54a-818f-45fd-afdd-76349658c07e", + "name": "Update information about a GitHub Pages site (application/scim+json)", + "request": { + "urlPath": "/repos/n366f37qjb7p020vps6i9nxcpyzv7ywqyf1ndd8la4y9fhyh3yqq0hxb93whj83yug3ypppic2y198eodn4uiwo1xjkwgdhqyhqoiw77n/375k0yugj0cijt9qjoozfh4idslgjgll1426gveaikx5e07ul01jb2xbwhi0mvh2783hl35b6nv6j8u95c35r7cgubhbyhhtvpkrosde81don5v4g87mh15axqz4ymw52ogyjlx8058r4vkzesd0iup96m0127u8b949zf6/pages", + "method": "PUT", + "headers": { + "Accept": { + "contains": "application/scim+json" + } + } + }, + "response": { + "status": 400, + "body": "{\n \"schemas\" : [ \"l29nu8hoapoy3u826mjmglmoes92jooemf0xes3jnksaknai8ich3d7jwhd2b3t1kpdbtrnzzgx783by5l6qdes6apr5ggdug1ols7qm51c8zqxglds9bjqygg6favucam6uuapc1rc35ob74zbe5\", \"294ij5h1t1h6yevd82md3l74ke1e86pks7c288np5fy78qxki6357scgguqo0eo\", \"n7phvza7pucrlwefqzbcnk01sbaichq93a60dwrl60pc5z6z88jwad6jbjw61f3okn7uc37hwu5dzxulsabtndchhcjx1mmv4zzzt2ka\" ],\n \"scimType\" : \"r2kpuvr1jbatog3eetivp1czyuy4bk2yd53c5yhmdb\",\n \"detail\" : \"yyx3d1paq5dwdmo6tgl9g7l42bksmiaprp6o893sygvpk32zv931zla2csay762lz7r5tf0e8nfn4w0h6xpv5gcdomkpoc799rpp2hpc\",\n \"documentation_url\" : \"https://web.example.mocklab.io/000562\",\n \"message\" : \"Nobis esse et aspernatur quia porro illum omnis. Ut itaque molestias optio fugiat. Similique numquam a commodi nulla voluptatem. Nobis et neque omnis rerum quia quae. Id perspiciatis sit molestiae.\",\n \"status\" : 2097962616040733171\n}", + "headers": { + "Content-Type": "application/scim+json" + } + }, + "uuid": "81d3c54a-818f-45fd-afdd-76349658c07e", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.058863Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/update-information-about-pages-site", + "schema": { + "description": "Scim Error", + "properties": { + "detail": { + "nullable": true, + "type": "string" + }, + "documentation_url": { + "nullable": true, + "type": "string" + }, + "message": { + "nullable": true, + "type": "string" + }, + "schemas": { + "items": { + "type": "string" + }, + "type": "array" + }, + "scimType": { + "nullable": true, + "type": "string" + }, + "status": { + "type": "integer" + } + }, + "title": "Scim Error", + "type": "object" + } + } + } + }, + "insertionIndex": 502 + }, + { + "id": "de8a32eb-f0ab-41db-bf68-5bc2ce61eccb", + "name": "Update information about a GitHub Pages site (application/json)", + "request": { + "urlPath": "/repos/tidrvvump2uve9oxradlbb9s820kh0u69ygqdcbaviro7glo2qm3j5s6eewid82ht8k3hei45aflq2954vrp2z4c7b034h751x2z5kvnhe92n3gwo1384cb5v2h9ri991s22hshfrd6bet2eaff4hsi2aevuej/hwqevyt46pbytgfznagln4em9zcxlfmwivn9mckx13j1jar1jn9nn4lh20n3/pages", + "method": "PUT", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 400, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/123633\",\n \"message\" : \"Qui ullam velit culpa sapiente necessitatibus autem. Sunt ipsa ipsa commodi aut repudiandae eveniet inventore. Modi tempore est. Unde velit qui non ipsa quidem aliquam et.\",\n \"url\" : \"https://web.example.mocklab.io/484909\",\n \"status\" : \"1sf1iav03eyzzyep826jqlitsdmj4zlv5edivb0fau9xmweyj8uha5cpdhuultrh\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "de8a32eb-f0ab-41db-bf68-5bc2ce61eccb", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.058616Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/update-information-about-pages-site", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 503 + }, + { + "id": "e0e2bc51-ff5e-42c3-b38e-04c4a43f8565", + "name": "Update information about a GitHub Pages site - 204", + "request": { + "urlPath": "/repos/7d59o9hq1ge3sgtjfkm24i32y4tnz6uxuxa2imz9e1xfxckce9lucmwrnsz52vwbic8ylssl9lqjwvu87j4r385ns6dsm8y9qt05dc2bp6mzksuyzt6xw6qf0u3dpai8a6hyyormpy5irfy3dcrctanqfjuo3zjzv4wrbeuy01pmvptdt0d34e81pq65eddzgyhf1x/6ue3te1o7hj4270rv7yefs5hm6lzu3xzvhr51sp300lhgt82oxm1csf7rywks1cep9wrjftsdyl4jhz881xzfjvx33tsqjycok4qluqgxn1blz25auwy67ibz5x70pvrz8x8tdj2975cs5jzb7us03yzmwbieewvyqlie9kngqr5q5xci8998gpr4714/pages", + "method": "PUT" + }, + "response": { + "status": 204 + }, + "uuid": "e0e2bc51-ff5e-42c3-b38e-04c4a43f8565", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.058397Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/update-information-about-pages-site" + } + } + }, + "insertionIndex": 504 + }, + { + "id": "6b1d1128-0bcc-4ba1-b353-da5a91e47290", + "name": "Create a GitHub Pages site", + "request": { + "urlPath": "/repos/x3gkc8wobejs05dnbwf1gs6qn71p/sa39/pages", + "method": "POST" + }, + "response": { + "status": 422, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/327347\",\n \"message\" : \"Voluptatem tenetur assumenda velit consequatur recusandae vel. Quidem fugit dolore libero voluptate. Excepturi recusandae est animi. Ipsum reiciendis aut fugit dolores sed aut. Vero assumenda quibusda\",\n \"errors\" : [ {\n \"code\" : \"35ivfuy5rtem6wfr3mlldf0j68gmeli5wwik8g1dveswgb8oiielwlrw5g8drurit\",\n \"field\" : \"4kwu42ftbip6gyens7okoerwi697qqi4g03zzxq7s2mytoa9lklbehzbnanekt4zni39xywnm7dcm19m1nkxx08pbeocc5927sv7d8m8pimueksc2i\",\n \"resource\" : \"jww0bisgd7s0alv31ur6g5pzreuqb4ufmzfh3tp9s8hm5ft97qnvoo6iz325obujwkl38eufjj2fpo1a2awqssdt694wpfflpjmlux9n2x3lw87s1h2kqbprh7w2rwc6hvic6qucsdj9xzclaj1hniok3eexoa2kr1cw61o\",\n \"index\" : 3429763902511445101,\n \"message\" : \"Praesentium minus libero ab nihil sint qui velit. Qui labore iste est quae voluptas ut amet. Voluptas eum consequatur eveniet aut voluptatem beatae. Quos libero qui.\",\n \"value\" : { }\n }, {\n \"code\" : \"hio6el9e691vrf906xj57kzm\",\n \"field\" : \"oo4\",\n \"resource\" : \"hsfolbilhv87yt3txdldmzwhcgt6ona2wgefpslr846v3wlss89wgcf6u55i1l7skfs5idd3vkyd62i\",\n \"index\" : 3274122872734343532,\n \"message\" : \"Voluptas est magnam quia suscipit vitae. Fuga dolorem tempora sunt consequuntur in. Itaque similique ut nobis laboriosam. Iure est cupiditate necessitatibus.\",\n \"value\" : { }\n }, {\n \"code\" : \"gzndcmf0hysuyr3lfb5koal9gpo6nqt9gifkn1sfv6z9s7alv03ozxllcj42r3l32mfaatg0zc4jf\",\n \"field\" : \"wnjdkgb84b7jszfqqnvd2sd0le9d06wiv2ou7qvb9e3ut7begjhoq5clfnoqtqwofh5w2m2admfa6smwwwcxwmyfxiqy01uqlyct\",\n \"resource\" : \"bubg395vo81jr9pqd17gw513qjafpf6l7ju2u1amho8ulltz2tgtasbw893b7t4za6li09at10v87ii270u1s76ofkx42rso\",\n \"index\" : 4275101145178474965,\n \"message\" : \"Et iusto repudiandae aut et quia id corporis. Laboriosam repellendus in natus. Autem commodi commodi aut ut.\",\n \"value\" : { }\n }, {\n \"code\" : \"eje0n0uzm5dfpopbi3kf7n8slui6r3wozkbo343\",\n \"field\" : \"l5en41mgvoowcjb577xzm6nqq9\",\n \"resource\" : \"uz75jsi777emd0ue6a9qozhlgarur2j97pftioh8fiig49z5s4ag775lk1fp70s4kgki01v543wm7wklxxuk2ua1rgjkxiujtcx3lg40qunyd21cn15jd1knmgr1p82xyxy18w43tr\",\n \"index\" : 3932353992275228342,\n \"message\" : \"Dolore non consequatur in rerum aut qui officiis. Qui aliquam doloribus magni possimus vel. Tempore ipsa nulla neque. Qui tempore officia provident. Consectetur excepturi recusandae dolorem quod et su\",\n \"value\" : { }\n } ]\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "6b1d1128-0bcc-4ba1-b353-da5a91e47290", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.05835Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/create-pages-site", + "schema": { + "description": "Validation Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "errors": { + "items": { + "properties": { + "code": { + "type": "string" + }, + "field": { + "type": "string" + }, + "index": { + "type": "integer" + }, + "message": { + "type": "string" + }, + "resource": { + "type": "string" + }, + "value": { + "oneOf": [ + { + "nullable": true, + "type": "string" + }, + { + "nullable": true, + "type": "integer" + }, + { + "items": { + "type": "string" + }, + "nullable": true, + "type": "array" + } + ] + } + }, + "required": ["code"], + "type": "object" + }, + "type": "array" + }, + "message": { + "type": "string" + } + }, + "required": ["message", "documentation_url"], + "title": "Validation Error", + "type": "object" + } + } + } + }, + "insertionIndex": 505 + }, + { + "id": "090466b3-66a3-42a1-8f3c-56cc1cd468dd", + "name": "Create a GitHub Pages site", + "request": { + "urlPath": "/repos/hc8torlteg4htjgt16kopux8hnwjqrzwlr4e2qhdtrgvkq3vt6ty0u3i0al4utcdypad6wid7m64y8k1h38ri9s94ed5vj6kxjsuc6l82t2y/cgo054deklia3jzrjlhcc5ipnlng460sqsy2x4sjxv9v89armrgjytk4mjvckvvlf03ipbjm27bnvz1zen4j23cj7ykmebzb86qehttaolhgb9d0o3s0v3q2r4w705vi8lhxxruwndadf8x5vihuj8oo1ztllx0hj4izhwv4ibra9flosfr5hmse6xru508d7d1x/pages", + "method": "POST" + }, + "response": { + "status": 415, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/099675\",\n \"message\" : \"Nemo impedit voluptatem reprehenderit et saepe eos. Voluptatem dolorem ea debitis totam nemo quibusdam sint. Nam fuga sit dolor.\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "090466b3-66a3-42a1-8f3c-56cc1cd468dd", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.057833Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/create-pages-site", + "schema": { + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": ["message", "documentation_url"], + "type": "object" + } + } + } + }, + "insertionIndex": 506 + }, + { + "id": "391650c8-c819-4303-9c85-33118a959767", + "name": "Create a GitHub Pages site", + "request": { + "urlPath": "/repos/xsvc36ruk4a4h9i87rv3d2bd8sydek8q5hdcjz44tcr25oq9dv26tkyntzu3pt16a4xa9ztabfnkcv7il6pa2yzqxfbzhv112dw4647z11a661jonh8r85n67g6gfaszi8h9h/dozowuxx3mlze5oos6c6reh0gr3ohbee5p2eicaryr3c0ij9r85f1qxn6jnxkooy7s/pages", + "method": "POST" + }, + "response": { + "status": 409, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/455196\",\n \"message\" : \"Ex magni quis aperiam aut. Voluptas totam eos veniam. Id eaque quaerat voluptas voluptates ea perspiciatis natus.\",\n \"url\" : \"https://web.example.mocklab.io/579839\",\n \"status\" : \"gzhzvdkhwttwshvj79dem6lrgq19ptv4otp476xq1sypcl2384sfhw6ftfg2qi2r3212txad6j886806f72nz2fm0hewo10oa552h70jspnq0clxfv1w6143momrjaa6p\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "391650c8-c819-4303-9c85-33118a959767", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.057682Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/create-pages-site", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 507 + }, + { + "id": "50bc5147-08ba-4018-af0a-32e9dcdc557b", + "name": "Create a GitHub Pages site - default", + "request": { + "urlPath": "/repos/iqbn1/a8e39pp8b9720mjx5dgacmxspbvij4y3nzku9zzqi2a5fq4kovhxgf5ton3u3j3lqksml/pages", + "method": "POST" + }, + "response": { + "status": 201, + "body": "{\n \"cname\" : \"developer.github.com\",\n \"custom_404\" : false,\n \"html_url\" : \"https://developer.github.com\",\n \"https_certificate\" : {\n \"description\" : \"Certificate is approved\",\n \"domains\" : [ \"developer.github.com\" ],\n \"expires_at\" : \"2021-05-22\",\n \"state\" : \"approved\"\n },\n \"https_enforced\" : true,\n \"public\" : true,\n \"source\" : {\n \"branch\" : \"master\",\n \"path\" : \"/\"\n },\n \"status\" : \"built\",\n \"url\" : \"https://api.github.com/repos/github/developer.github.com/pages\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "50bc5147-08ba-4018-af0a-32e9dcdc557b", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.057468Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/create-pages-site", + "schema": { + "description": "The configuration for GitHub Pages for a repository.", + "properties": { + "cname": { + "description": "The Pages site's custom domain", + "example": "example.com", + "nullable": true, + "type": "string" + }, + "custom_404": { + "default": false, + "description": "Whether the Page has a custom 404 page.", + "example": false, + "type": "boolean" + }, + "html_url": { + "description": "The web address the Page can be accessed from.", + "example": "https://example.com", + "format": "uri", + "type": "string" + }, + "https_certificate": { + "$ref": "#/components/schemas/pages-https-certificate" + }, + "https_enforced": { + "description": "Whether https is enabled on the domain", + "example": true, + "type": "boolean" + }, + "public": { + "description": "Whether the GitHub Pages site is publicly visible. If set to `true`, the site is accessible to anyone on the internet. If set to `false`, the site will only be accessible to users who have at least `read` access to the repository that published the site.", + "example": true, + "type": "boolean" + }, + "source": { + "$ref": "#/components/schemas/pages-source-hash" + }, + "status": { + "description": "The status of the most recent build of the Page.", + "enum": ["built", "building", "errored"], + "example": "built", + "nullable": true, + "type": "string" + }, + "url": { + "description": "The API address for accessing this Page resource.", + "example": "https://api.github.com/repos/github/hello-world/pages", + "format": "uri", + "type": "string" + } + }, + "required": ["url", "status", "cname", "custom_404", "public"], + "title": "GitHub Pages", + "type": "object" + } + } + } + }, + "insertionIndex": 508 + }, + { + "id": "2d06a28e-c828-4c52-8176-fad65cc75aed", + "name": "Get a GitHub Enterprise Server Pages site", + "request": { + "urlPath": "/repos/c0kmciix0z7eeglkeobvdrxjufqvuewe48nzyceqj9jm2my4c7ubiw0q2/fwvx0t86sfq5coj3qvaqtvk96mpydgxec35osot5ufvz9h1esyvf6w/pages", + "method": "GET" + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/202565\",\n \"message\" : \"Omnis veniam eum nihil quis. Cum sed modi qui suscipit neque mollitia ullam. Culpa accusantium harum minus libero voluptate sed. Et assumenda in magni laboriosam animi. Illum consequatur at.\",\n \"url\" : \"https://web.example.mocklab.io/164262\",\n \"status\" : \"w64xreej2bs0l8d9nos4vqusdfwjh6m7tk970zs586exlukg8ey2v49tv4nookb4s4czz3hi7y3hwcrf9kcs9vo8x\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "2d06a28e-c828-4c52-8176-fad65cc75aed", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.057375Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/get-pages", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 509 + }, + { + "id": "43857883-455f-41d6-94c1-6ae5a8ecfd83", + "name": "Get a GitHub Enterprise Server Pages site - default", + "request": { + "urlPath": "/repos/v69awp86t4s9owfe5fvom3tdbu09rw127z1gan82rulv3v20bn4j2p8lr7dxnnez2gvtgakd70654j3xsp9i4xe9dzfmi9w2bj804o/3jxtnpv44wlgunwkz8g1yx2orbqi32iajl2efc7xwwvmvuvwysxy2ptijkhpj9xxxg8wqbmxvu8l7ua4lvxlljgcndxog3geycz1chey6j04fucy8i06ajjmcn1c3vh/pages", + "method": "GET" + }, + "response": { + "status": 200, + "body": "{\n \"cname\" : \"developer.github.com\",\n \"custom_404\" : false,\n \"html_url\" : \"https://developer.github.com\",\n \"https_certificate\" : {\n \"description\" : \"Certificate is approved\",\n \"domains\" : [ \"developer.github.com\" ],\n \"expires_at\" : \"2021-05-22\",\n \"state\" : \"approved\"\n },\n \"https_enforced\" : true,\n \"public\" : true,\n \"source\" : {\n \"branch\" : \"master\",\n \"path\" : \"/\"\n },\n \"status\" : \"built\",\n \"url\" : \"https://api.github.com/repos/github/developer.github.com/pages\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "43857883-455f-41d6-94c1-6ae5a8ecfd83", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.057148Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/get-pages", + "schema": { + "description": "The configuration for GitHub Pages for a repository.", + "properties": { + "cname": { + "description": "The Pages site's custom domain", + "example": "example.com", + "nullable": true, + "type": "string" + }, + "custom_404": { + "default": false, + "description": "Whether the Page has a custom 404 page.", + "example": false, + "type": "boolean" + }, + "html_url": { + "description": "The web address the Page can be accessed from.", + "example": "https://example.com", + "format": "uri", + "type": "string" + }, + "https_certificate": { + "$ref": "#/components/schemas/pages-https-certificate" + }, + "https_enforced": { + "description": "Whether https is enabled on the domain", + "example": true, + "type": "boolean" + }, + "public": { + "description": "Whether the GitHub Pages site is publicly visible. If set to `true`, the site is accessible to anyone on the internet. If set to `false`, the site will only be accessible to users who have at least `read` access to the repository that published the site.", + "example": true, + "type": "boolean" + }, + "source": { + "$ref": "#/components/schemas/pages-source-hash" + }, + "status": { + "description": "The status of the most recent build of the Page.", + "enum": ["built", "building", "errored"], + "example": "built", + "nullable": true, + "type": "string" + }, + "url": { + "description": "The API address for accessing this Page resource.", + "example": "https://api.github.com/repos/github/hello-world/pages", + "format": "uri", + "type": "string" + } + }, + "required": ["url", "status", "cname", "custom_404", "public"], + "title": "GitHub Pages", + "type": "object" + } + } + } + }, + "insertionIndex": 510 + }, + { + "id": "dc0e7574-247f-4a9f-9139-c8d80ac5c1e4", + "name": "Delete a GitHub Enterprise Server Pages site (application/json)", + "request": { + "urlPath": "/repos/8il7fb52yd5re7ng1amaxraqi2au9owfi43ao4j6h28lxjpxwl93dxpbp3yipt48so86orvwpidl32in263ndicjr9xazqfh/cp3zg5i2jswo2nqbyi6h6warx3ktgwu2ss26ninvc558cu8nc6c/pages", + "method": "DELETE", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 422, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/366582\",\n \"message\" : \"Et repellendus qui maxime. Non praesentium numquam reprehenderit et. Quos odit maiores illum facilis consequuntur.\",\n \"errors\" : [ {\n \"code\" : \"s4s4borsgk49q158jw8cbqya8bin7dt0sl1tcyu2k25mvd5dscwliiahkmirtaaor5t7cd02bbl9804xagdg9pr5bnzy63gnh3ftcdxam4otdkbi9c9imf9q8k5ldohnmnw8oig2mvvsfminldnftkjsrj1wvpnuu1yn7oag9z175i4hquczhcao4giybdn7pqfcp\",\n \"field\" : \"pcnni15r8yl40l3989i805n7wl8f4dyavno85cxg44nmqg6j2o7rcw37fkl3ih71qcmmc2ktyqlht\",\n \"resource\" : \"tl0rp3osyvmlu104t5xvt7ddauqh6ebomo3dw2r6xsqd91ehv4zvvg0xeeiqcqltdsa42ejd1ob4krdi6movfry01j581q7ho2a2d2sg02l6fmbquxcjsx30a0krg564rtqpfiajg7dzk273jz67\",\n \"index\" : 318797019418193539,\n \"message\" : \"Inventore est labore aut repellat. Blanditiis error consectetur fugit minus. Ut asperiores iste.\",\n \"value\" : { }\n }, {\n \"code\" : \"etfaefd8c00v38bl26jkz5eobrmbqxzec93q9rtmyze5yxts0vihi0e7zqhtutcvrkex4puv19wu0idk0c9j9z5ouz9mzjgb6wa3omgc41kjxivwu0ke87mufsrdte1lxm10\",\n \"field\" : \"lq9190c7dj7n5wri76it8crcfboaao2zxr6hz6y8va0ds3oyufm5ylaay8sexkke8hatxoov760vkat5brj5d8nfbll0e3d5n4t8fxcsykk6\",\n \"resource\" : \"qxsfumfusijubbb6tyv6ig2a8cpcddz0bal8d5rlqmm9bj9yzdj7m5fek8myrovg318qbxe75xris4nuq1nv814b6e18jw0xanys9if4rzght7xaqxrhnbqqyehx7wz1t3ykbk3da5gmrcyyrqw2\",\n \"index\" : 7137688558819631716,\n \"message\" : \"Qui explicabo sequi qui reiciendis. Cum praesentium ut quo et fugit eaque. Nulla exercitationem incidunt porro doloribus qui expedita tempore.\",\n \"value\" : { }\n }, {\n \"code\" : \"hxjl78h0h8b08liqx9ftt8xo6le42mbg2nfwemg54\",\n \"field\" : \"9h20zb1ebkhskgfgl7pc5r1cm5stjpa92gutinkb7vqakjzn7elg8uzoou65g1xq93v8nux1rqikg52wxv8f5tozn15moi9zwr1tkzwbva9dgj570pv3ih6hbfhs1piogya83immifat4ca7oqar1lgyuptjpul84t0i24yhw2jkgpnc40xfc6rd5lb3\",\n \"resource\" : \"e2msm16z0l07l2fz2a7vjoxs6iych0teasefhj8gsyzwk6ha8uw8r6akmif4g9vdzokcf3nstu15nuwyce830h4a9yuj8gsb7x0t4y70g4aqdo1716djt8mpvcaj\",\n \"index\" : 8321418970522571140,\n \"message\" : \"Eveniet et molestiae est asperiores consequatur fugiat aut. Vel iste dolorem odit accusamus architecto dolorum est. Veritatis optio architecto consequatur. Quo quisquam qui cum. Rerum qui ea eos dolor\",\n \"value\" : { }\n }, {\n \"code\" : \"8s0h5oggzvtrmtzvdc1ahri0v2ae7witt1zbqgb6xu3nbd2mkk9hkskveg4m1i7s4dizs4lqi5awmr4c8hvi9wz8mptx1k5lihtn2d6r6gm3q23s81ojwm6mnshp2mxdtxwx0p5tsxwkvv\",\n \"field\" : \"sezwn3mtlsx2uals2jzbf7n4rh6hmznog78bzbk5zt747em3cpui2f4gjk1t9x4eoydf5cbbilan1bddxiqzchg13lw4welhi3ums5do7kt3ei56osoqlae7irxqbn6ifay2bzwkthhshxrk95kgodbpltt\",\n \"resource\" : \"u6781mvf81mudm32el2prajfbyggrzwyb02fi8yn9trwf224gzvp09yhbxp40h9iz6auk26dem2c4cn0zab45zz2mrzhabqvr3k6xwxvbqvaom\",\n \"index\" : 4859671431300108566,\n \"message\" : \"Et id consequatur quia. Assumenda ratione error tempore sunt. Saepe beatae sed sint et. Totam vel dolore.\",\n \"value\" : { }\n }, {\n \"code\" : \"u27iswegqlmoff\",\n \"field\" : \"mxmjv89poixqetmd6p0kym2xor9p2vhdasmaopb6syxhd6ua9qtsexnu0a4fz28usj44ajkgakw9u109awh69rq9lofqsmyyzy4mrjiaejluoa4sw6advswy3x8pw94qg6ig5n1k6seorlc1hx\",\n \"resource\" : \"qkw4dua9qpik2o\",\n \"index\" : 654205132153571906,\n \"message\" : \"Deleniti nostrum et ut omnis. Tempore qui quaerat vel iste eius. Enim adipisci ipsum.\",\n \"value\" : { }\n }, {\n \"code\" : \"6bq812xibxdv5jdyuczsipca7wx7gwc19idvwic6e1cmtfrhiswjso3trd3w4uipqq6nmtbpk33zxrxzdkbe6gn5ctw1diq7d2ct6g7ztzfihotrtysf6ma6bl4i0kyk7r4zdledaw3u00uuiba7mxn1n9qnt05gmol2ve1yazodj10qyemuatyi04\",\n \"field\" : \"zc7o5g9my7wq1b4gjs368j4ye2xa601gpwagja4mg86opppp6s7y2pmyn4cllxnxpt1kj7m2xd9ofyenl8fjkj6z1wy238st0ptbvvvellfjj3fm4wspgdujlxrtx4i3tjq616sa10aod80eo5p9kpntebwz3vvlofb8rrf75nu4stingicvmh2dkj9whvaa2\",\n \"resource\" : \"q2hxv47ip7ob4kh5f9fq24txvgfg69m9zl34foajbgzc63nknexda8hnrvfcsnhbxlitji33vycoaw0y00f2o4chbo\",\n \"index\" : 4999676108167795848,\n \"message\" : \"Reiciendis quo et dolore. A labore temporibus magni consequatur a. Blanditiis pariatur adipisci.\",\n \"value\" : { }\n }, {\n \"code\" : \"kpfz05i8rsmljo3qscwllhdqyzp1dhp5a5dxk3wz11qmpbayc\",\n \"field\" : \"txffaeh\",\n \"resource\" : \"c54nu39ij0gd3iv1hb2m26lt1pnp\",\n \"index\" : 1936878117253118159,\n \"message\" : \"Suscipit aspernatur dolore. Eveniet qui ea est qui. Ea quos perferendis ratione. Dolorem rerum nihil aspernatur tempora perferendis.\",\n \"value\" : { }\n } ]\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "dc0e7574-247f-4a9f-9139-c8d80ac5c1e4", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.057026Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/delete-pages-site", + "schema": { + "description": "Validation Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "errors": { + "items": { + "properties": { + "code": { + "type": "string" + }, + "field": { + "type": "string" + }, + "index": { + "type": "integer" + }, + "message": { + "type": "string" + }, + "resource": { + "type": "string" + }, + "value": { + "oneOf": [ + { + "nullable": true, + "type": "string" + }, + { + "nullable": true, + "type": "integer" + }, + { + "items": { + "type": "string" + }, + "nullable": true, + "type": "array" + } + ] + } + }, + "required": ["code"], + "type": "object" + }, + "type": "array" + }, + "message": { + "type": "string" + } + }, + "required": ["message", "documentation_url"], + "title": "Validation Error", + "type": "object" + } + } + } + }, + "insertionIndex": 511 + }, + { + "id": "6fc23d3d-3755-481c-a085-e5395ea32026", + "name": "Delete a GitHub Enterprise Server Pages site (application/json)", + "request": { + "urlPath": "/repos/uryn19wdvd9kabasqu9pxy9okkv61l9tff1x3gtchorlra84y7gv0/envpj6l9flr8i02qbswpe2ckz8gucqqii3wazyi10cltgdv9xgu8fro17gn0fyhtssfzahsrowz82a1/pages", + "method": "DELETE", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 415, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/263562\",\n \"message\" : \"Minus at occaecati quas aut reiciendis et sunt. Aliquid dicta quis eligendi beatae doloribus. Tenetur consequatur quaerat esse omnis voluptatem maxime. Qui molestias quibusdam molestias nam enim volup\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "6fc23d3d-3755-481c-a085-e5395ea32026", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.056301Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/delete-pages-site", + "schema": { + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": ["message", "documentation_url"], + "type": "object" + } + } + } + }, + "insertionIndex": 512 + }, + { + "id": "1cf76a48-ddfe-42ec-ba91-b6e52677bdd5", + "name": "Delete a GitHub Enterprise Server Pages site (application/json)", + "request": { + "urlPath": "/repos/g0e3dgc6amaqshrhlcvxykvi5vjk48xnd2r0pgtesjeayzlzgr5t26g1uttefvdn7wjl/fmawv8p6zg0g3p0p2gerdm8o5jip7jdbzas7auf9659g1r9u8lpnajoxsxnvp8nmc9dp6zi5aye5jgdh6j52xmzpf1psxc9mnjpc5wrylm7fu6ftiyr25ivc/pages", + "method": "DELETE", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/213471\",\n \"message\" : \"Est necessitatibus ut reiciendis. Sunt esse in qui. Culpa enim sed magnam ea. Quasi beatae eum dolorem inventore.\",\n \"url\" : \"https://web.example.mocklab.io/542344\",\n \"status\" : \"cqwetmgj2z0g3fj4bglzvkhsnv79jg7hsveqdgl6gl4gae7bkawq1v6s9z78jqu6znz1iuowztgownu7uadnql7em6l2c3qelckwpxwv7d14wtdo2lfs8x9ix5pedjsx35sdl0j56y20v1aa6h6fcshfdqkkrcaz3pgz3njrawrxhrao\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "1cf76a48-ddfe-42ec-ba91-b6e52677bdd5", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.056142Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/delete-pages-site", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 513 + }, + { + "id": "21fbde0e-421e-40e1-b065-34585fe24db2", + "name": "Delete a GitHub Enterprise Server Pages site - 204", + "request": { + "urlPath": "/repos/hb5fnrq2bc39r3dg55yisw5lgne1spquzh28o51do536n4ooq8uafbczm2ndt33l0fofz5wb9bue9qb382kxf5ftmw1ay0n5ke4owmm7hfbhaj81frd4eetwkvawk2h7ey8n2cc661qnqrljif28wm8ccx432neasrmw5whf2c3wowmpbyqz9m1wab5z12d7xd1nu1qr/dmbqis32h4k5j6disgr0um58wl4xk5bkc2ahhs216n724qft0egf34hcbtflymq02knl0sc7vlyqmc8hi5e5tsydjurwznal/pages", + "method": "DELETE" + }, + "response": { + "status": 204 + }, + "uuid": "21fbde0e-421e-40e1-b065-34585fe24db2", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.055933Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/delete-pages-site" + } + } + }, + "insertionIndex": 514 + }, + { + "id": "bba847bf-55eb-4b44-ae62-cece8846abca", + "name": "Mark repository notifications as read - 205", + "request": { + "urlPath": "/repos/k1hjh/2dya6hfwx1iv5mpyfdn9tkp8xmbzdcdkvi1qfreujpquzm5qbseyu4jdwcic9zj0xv2a0rttczxex4e3p5lilrk9wyywfls351cua7g343rq5klp8kw3iyk8xo3i18llv3ge0csu2cwn2mhkyinetr/notifications", + "method": "PUT" + }, + "response": { + "status": 205 + }, + "uuid": "bba847bf-55eb-4b44-ae62-cece8846abca", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.05589Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "activity/mark-repo-notifications-as-read" + } + } + }, + "insertionIndex": 515 + }, + { + "id": "458bc068-d249-45db-ae46-315a8cbc4e6b", + "name": "Mark repository notifications as read (application/json)", + "request": { + "urlPath": "/repos/ea3pbbb0nuhk4fkfl5vl4cj/5cebag7hij6llr3pcqir8vtgz/notifications", + "method": "PUT", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 202, + "body": "{\n \"message\" : \"Amet et ex. Corporis voluptatem nihil molestiae eos et. Commodi laudantium aut consectetur vitae voluptatibus soluta. Necessitatibus accusantium corrupti. Quasi omnis ut error asperiores eum.\",\n \"url\" : \"https://web.example.mocklab.io/108823\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "458bc068-d249-45db-ae46-315a8cbc4e6b", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.055847Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "activity/mark-repo-notifications-as-read", + "schema": { + "properties": { + "message": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "type": "object" + } + } + } + }, + "insertionIndex": 516 + }, + { + "id": "aff60f89-eb73-4a27-b7d3-24b4dd8aa093", + "name": "List repository notifications for the authenticated user - default", + "request": { + "urlPath": "/repos/iqj1t9t8evj4o6qw5ev0oye224pw4mu17b333ccwazcdx19xddn0vokhlpxten/ew844l06pw5zqj1g4jafmyq7durvm7n85j0rhr3qf763tzcb8tpkui8aawyhlyr4vc7vjjfi4lbtt6ygxq1s8zw51jiwcr8wzbtkmlxgy6c50c78if67tvlr1mte84pcrqfanlpvm1pihuqacjgly88o361s/notifications", + "method": "GET" + }, + "response": { + "status": 200, + "body": "[ {\n \"id\" : \"1\",\n \"last_read_at\" : \"2014-11-07T22:01:45Z\",\n \"reason\" : \"subscribed\",\n \"repository\" : {\n \"archive_url\" : \"https://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref}\",\n \"assignees_url\" : \"https://api.github.com/repos/octocat/Hello-World/assignees{/user}\",\n \"blobs_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/blobs{/sha}\",\n \"branches_url\" : \"https://api.github.com/repos/octocat/Hello-World/branches{/branch}\",\n \"collaborators_url\" : \"https://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator}\",\n \"comments_url\" : \"https://api.github.com/repos/octocat/Hello-World/comments{/number}\",\n \"commits_url\" : \"https://api.github.com/repos/octocat/Hello-World/commits{/sha}\",\n \"compare_url\" : \"https://api.github.com/repos/octocat/Hello-World/compare/{base}...{head}\",\n \"contents_url\" : \"https://api.github.com/repos/octocat/Hello-World/contents/{+path}\",\n \"contributors_url\" : \"https://api.github.com/repos/octocat/Hello-World/contributors\",\n \"deployments_url\" : \"https://api.github.com/repos/octocat/Hello-World/deployments\",\n \"description\" : \"This your first repo!\",\n \"downloads_url\" : \"https://api.github.com/repos/octocat/Hello-World/downloads\",\n \"events_url\" : \"https://api.github.com/repos/octocat/Hello-World/events\",\n \"fork\" : false,\n \"forks_url\" : \"https://api.github.com/repos/octocat/Hello-World/forks\",\n \"full_name\" : \"octocat/Hello-World\",\n \"git_commits_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/commits{/sha}\",\n \"git_refs_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/refs{/sha}\",\n \"git_tags_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/tags{/sha}\",\n \"git_url\" : \"git:github.com/octocat/Hello-World.git\",\n \"hooks_url\" : \"http://api.github.com/repos/octocat/Hello-World/hooks\",\n \"html_url\" : \"https://github.com/octocat/Hello-World\",\n \"id\" : 1296269,\n \"issue_comment_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/comments{/number}\",\n \"issue_events_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/events{/number}\",\n \"issues_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues{/number}\",\n \"keys_url\" : \"https://api.github.com/repos/octocat/Hello-World/keys{/key_id}\",\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World/labels{/name}\",\n \"languages_url\" : \"https://api.github.com/repos/octocat/Hello-World/languages\",\n \"merges_url\" : \"https://api.github.com/repos/octocat/Hello-World/merges\",\n \"milestones_url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones{/number}\",\n \"name\" : \"Hello-World\",\n \"node_id\" : \"MDEwOlJlcG9zaXRvcnkxMjk2MjY5\",\n \"notifications_url\" : \"https://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating}\",\n \"owner\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"private\" : false,\n \"pulls_url\" : \"https://api.github.com/repos/octocat/Hello-World/pulls{/number}\",\n \"releases_url\" : \"https://api.github.com/repos/octocat/Hello-World/releases{/id}\",\n \"ssh_url\" : \"git@github.com:octocat/Hello-World.git\",\n \"stargazers_url\" : \"https://api.github.com/repos/octocat/Hello-World/stargazers\",\n \"statuses_url\" : \"https://api.github.com/repos/octocat/Hello-World/statuses/{sha}\",\n \"subscribers_url\" : \"https://api.github.com/repos/octocat/Hello-World/subscribers\",\n \"subscription_url\" : \"https://api.github.com/repos/octocat/Hello-World/subscription\",\n \"tags_url\" : \"https://api.github.com/repos/octocat/Hello-World/tags\",\n \"teams_url\" : \"https://api.github.com/repos/octocat/Hello-World/teams\",\n \"trees_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/trees{/sha}\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World\"\n },\n \"subject\" : {\n \"latest_comment_url\" : \"https://api.github.com/repos/octokit/octokit.rb/issues/comments/123\",\n \"title\" : \"Greetings\",\n \"type\" : \"Issue\",\n \"url\" : \"https://api.github.com/repos/octokit/octokit.rb/issues/123\"\n },\n \"subscription_url\" : \"https://api.github.com/notifications/threads/1/subscription\",\n \"unread\" : true,\n \"updated_at\" : \"2014-11-07T22:01:45Z\",\n \"url\" : \"https://api.github.com/notifications/threads/1\"\n} ]", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "aff60f89-eb73-4a27-b7d3-24b4dd8aa093", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.055697Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "activity/list-repo-notifications-for-authenticated-user", + "schema": { + "items": { + "$ref": "#/components/schemas/thread" + }, + "type": "array" + } + } + } + }, + "insertionIndex": 517 + }, + { + "id": "977cd24e-6820-4b24-84bb-5cc9d56a1974", + "name": "List labels for issues in a milestone - default", + "request": { + "urlPath": "/repos/0j6ziekcujmwevircbgcdihpemh3xb7a8r5el7h733n0o58i0od9dom3dzz0izl8aa0obr8dp7mzagvwf7xarg1isrkjm65w79x99ovrtrnq9curxr7r566bb9mwggkqycidecmwr0apg/s8c1u3lkv3pwxrr5jj2hww5dpk8fliu27wtuc0acm4p6wam0r01y79mmwrlaogo7m0r9opcfuipn0enru5xbb8afnqcehzed255dwnjgka07vkid3v1s7alc1312otggie5b2i/milestones/8247186654445798383/labels", + "method": "GET" + }, + "response": { + "status": 200, + "body": "[ {\n \"color\" : \"f29513\",\n \"default\" : true,\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"name\" : \"bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/labels/bug\"\n}, {\n \"color\" : \"a2eeef\",\n \"default\" : false,\n \"description\" : \"New feature or request\",\n \"id\" : 208045947,\n \"name\" : \"enhancement\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDc=\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/labels/enhancement\"\n} ]", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "977cd24e-6820-4b24-84bb-5cc9d56a1974", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.055634Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "issues/list-labels-for-milestone", + "schema": { + "items": { + "$ref": "#/components/schemas/label" + }, + "type": "array" + } + } + } + }, + "insertionIndex": 518 + }, + { + "id": "3f236419-08cc-4995-b0d7-812adbb1f741", + "name": "Update a milestone - default", + "request": { + "urlPath": "/repos/j4uis053/4nkp4v0rzdmpz5ksx767gqc95cr2ocum1fnycr18qi5xo/milestones/6025722274837072714", + "method": "PATCH" + }, + "response": { + "status": 200, + "body": "{\n \"closed_at\" : \"2013-02-12T13:22:01Z\",\n \"closed_issues\" : 8,\n \"created_at\" : \"2011-04-10T20:09:31Z\",\n \"creator\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"description\" : \"Tracking milestone for version 1.0\",\n \"due_on\" : \"2012-10-09T23:39:01Z\",\n \"html_url\" : \"https://github.com/octocat/Hello-World/milestones/v1.0\",\n \"id\" : 1002604,\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones/1/labels\",\n \"node_id\" : \"MDk6TWlsZXN0b25lMTAwMjYwNA==\",\n \"number\" : 1,\n \"open_issues\" : 4,\n \"state\" : \"open\",\n \"title\" : \"v1.0\",\n \"updated_at\" : \"2014-03-03T18:58:10Z\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones/1\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "3f236419-08cc-4995-b0d7-812adbb1f741", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.05557Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "issues/update-milestone", + "schema": { + "description": "A collection of related issues and pull requests.", + "properties": { + "closed_at": { + "example": "2013-02-12T13:22:01Z", + "format": "date-time", + "nullable": true, + "type": "string" + }, + "closed_issues": { + "example": 8, + "type": "integer" + }, + "created_at": { + "example": "2011-04-10T20:09:31Z", + "format": "date-time", + "type": "string" + }, + "creator": { + "$ref": "#/components/schemas/nullable-simple-user" + }, + "description": { + "example": "Tracking milestone for version 1.0", + "nullable": true, + "type": "string" + }, + "due_on": { + "example": "2012-10-09T23:39:01Z", + "format": "date-time", + "nullable": true, + "type": "string" + }, + "html_url": { + "example": "https://github.com/octocat/Hello-World/milestones/v1.0", + "format": "uri", + "type": "string" + }, + "id": { + "example": 1002604, + "type": "integer" + }, + "labels_url": { + "example": "https://api.github.com/repos/octocat/Hello-World/milestones/1/labels", + "format": "uri", + "type": "string" + }, + "node_id": { + "example": "MDk6TWlsZXN0b25lMTAwMjYwNA==", + "type": "string" + }, + "number": { + "description": "The number of the milestone.", + "example": 42, + "type": "integer" + }, + "open_issues": { + "example": 4, + "type": "integer" + }, + "state": { + "default": "open", + "description": "The state of the milestone.", + "enum": ["open", "closed"], + "example": "open", + "type": "string" + }, + "title": { + "description": "The title of the milestone.", + "example": "v1.0", + "type": "string" + }, + "updated_at": { + "example": "2014-03-03T18:58:10Z", + "format": "date-time", + "type": "string" + }, + "url": { + "example": "https://api.github.com/repos/octocat/Hello-World/milestones/1", + "format": "uri", + "type": "string" + } + }, + "required": [ + "closed_issues", + "creator", + "description", + "due_on", + "closed_at", + "id", + "node_id", + "labels_url", + "html_url", + "number", + "open_issues", + "state", + "title", + "url", + "created_at", + "updated_at" + ], + "title": "Milestone", + "type": "object" + } + } + } + }, + "insertionIndex": 519 + }, + { + "id": "dda8cad9-edf6-44a8-9f11-990bea49fe72", + "name": "Get a milestone", + "request": { + "urlPath": "/repos/y52hy4b7afziqzfydy7jok653z3shamk7iimahdka17gwap1s8ptkgy704xtyifq42f7apwzyzweegt6731ttvdw0wq5ui31bdz3dusoyxikwguvwbvrn2u61mmv8bqkpw03bk8cdgxr3rw3p97m6dx0rmd70dhpeusek80d/2lahmjbkpfiz01st3ozuzzva413mzpzod0zhdxf4419pszbvyeyfo9yjr0t0q/milestones/2308701211746973670", + "method": "GET" + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/053626\",\n \"message\" : \"Consequuntur aut optio eos. Labore sit adipisci et. Neque iure inventore ea laborum saepe vero maiores. Et delectus perspiciatis recusandae ut. Accusamus aut ut nostrum quos quia.\",\n \"url\" : \"https://web.example.mocklab.io/516132\",\n \"status\" : \"ckiak3\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "dda8cad9-edf6-44a8-9f11-990bea49fe72", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.055436Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "issues/get-milestone", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 520 + }, + { + "id": "69476e93-660b-404f-85d1-c2b49764d214", + "name": "Get a milestone - default", + "request": { + "urlPath": "/repos/a9cunokxg98t4f46qq5xpoj07n9hqn8wwgz5954enwgfmicpurhtyfyofg0sisrqn7003zrb14kh1richmwri1b2rl9mpploj4z6pqzwt2q89dahsso6ninf8pm77fnha0wwn1olcxsgaa6rrtv0b2t6uhlmt4zhqyzit2pfdeg4lp8mtw23hcx8o4cxhx4/js10c07toyujvqh1fatkqgpatww4sdxjl8b6kjygc89il19lv5v58o6151qy51hj03b0k1l4i4y5f0rmxnlk61y9dqsvljumynpgtd2jwv3cxanw9hcnkhs8n88l5nqjggdwt/milestones/4924291313442833308", + "method": "GET" + }, + "response": { + "status": 200, + "body": "{\n \"closed_at\" : \"2013-02-12T13:22:01Z\",\n \"closed_issues\" : 8,\n \"created_at\" : \"2011-04-10T20:09:31Z\",\n \"creator\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"description\" : \"Tracking milestone for version 1.0\",\n \"due_on\" : \"2012-10-09T23:39:01Z\",\n \"html_url\" : \"https://github.com/octocat/Hello-World/milestones/v1.0\",\n \"id\" : 1002604,\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones/1/labels\",\n \"node_id\" : \"MDk6TWlsZXN0b25lMTAwMjYwNA==\",\n \"number\" : 1,\n \"open_issues\" : 4,\n \"state\" : \"open\",\n \"title\" : \"v1.0\",\n \"updated_at\" : \"2014-03-03T18:58:10Z\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones/1\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "69476e93-660b-404f-85d1-c2b49764d214", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.055209Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "issues/get-milestone", + "schema": { + "description": "A collection of related issues and pull requests.", + "properties": { + "closed_at": { + "example": "2013-02-12T13:22:01Z", + "format": "date-time", + "nullable": true, + "type": "string" + }, + "closed_issues": { + "example": 8, + "type": "integer" + }, + "created_at": { + "example": "2011-04-10T20:09:31Z", + "format": "date-time", + "type": "string" + }, + "creator": { + "$ref": "#/components/schemas/nullable-simple-user" + }, + "description": { + "example": "Tracking milestone for version 1.0", + "nullable": true, + "type": "string" + }, + "due_on": { + "example": "2012-10-09T23:39:01Z", + "format": "date-time", + "nullable": true, + "type": "string" + }, + "html_url": { + "example": "https://github.com/octocat/Hello-World/milestones/v1.0", + "format": "uri", + "type": "string" + }, + "id": { + "example": 1002604, + "type": "integer" + }, + "labels_url": { + "example": "https://api.github.com/repos/octocat/Hello-World/milestones/1/labels", + "format": "uri", + "type": "string" + }, + "node_id": { + "example": "MDk6TWlsZXN0b25lMTAwMjYwNA==", + "type": "string" + }, + "number": { + "description": "The number of the milestone.", + "example": 42, + "type": "integer" + }, + "open_issues": { + "example": 4, + "type": "integer" + }, + "state": { + "default": "open", + "description": "The state of the milestone.", + "enum": ["open", "closed"], + "example": "open", + "type": "string" + }, + "title": { + "description": "The title of the milestone.", + "example": "v1.0", + "type": "string" + }, + "updated_at": { + "example": "2014-03-03T18:58:10Z", + "format": "date-time", + "type": "string" + }, + "url": { + "example": "https://api.github.com/repos/octocat/Hello-World/milestones/1", + "format": "uri", + "type": "string" + } + }, + "required": [ + "closed_issues", + "creator", + "description", + "due_on", + "closed_at", + "id", + "node_id", + "labels_url", + "html_url", + "number", + "open_issues", + "state", + "title", + "url", + "created_at", + "updated_at" + ], + "title": "Milestone", + "type": "object" + } + } + } + }, + "insertionIndex": 521 + }, + { + "id": "931f4678-0d04-4537-8e54-84d50c902710", + "name": "Delete a milestone (application/json)", + "request": { + "urlPath": "/repos/s7u628zhaphq714jw9r98y7hceuw5qaky6zrndf27xmdrfebfomos306lyztvo3c8yotubaddbl0rfocpib68re3emocurmse7uzsvckdat1qudjtznag7tadrprbr3o4/dgb4daz9bz88dfstqzkok6sg2c5gc4n3cafmf3d0ppz6ecrxmbw9rppmegaqwnnl8cncjhqtw8v12z2sf62tqo3u14izi7y00g3un1uy0i9xaxxcf32b7ayp4s2b9oq718s9xutsqtsee9wtxop07vajtge3yd9l966s5xvzozxp94z9hc625cn4645hprp3ql4749/milestones/1156761619415345973", + "method": "DELETE", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/597640\",\n \"message\" : \"Maiores perspiciatis voluptatem necessitatibus illum non. Similique dolor facilis soluta occaecati voluptate. Qui provident cumque dolores eos animi ut.\",\n \"url\" : \"https://web.example.mocklab.io/606554\",\n \"status\" : \"6pxwvhzux79mwy4u0q3xomei3rdlpmrtgljqyipwyre0e6vk7\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "931f4678-0d04-4537-8e54-84d50c902710", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.055058Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "issues/delete-milestone", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 522 + }, + { + "id": "e1e18aec-d8c8-4b65-b17f-17bc07f26819", + "name": "Delete a milestone - 204", + "request": { + "urlPath": "/repos/nh2f5d2s09en0b31rip8wh9cfdfktapzzjnpxsjaodg1danpuem1w1oibe78dhgixqxy4u9lc8mntptwhhq0czbtrf6q2qnu26xzqlinux1f96brg76wc7i7tkqflfs0kk102bobn0vi4nfkrpo2l54lv2rraetucj31l1498uj3fqq9ynvuicfwfxfhso/qa5izm3ckmeiu7pomy44dcfy38hs4hjv8wv1jieu12ehip5bmzwcsjc3u53t7v368qsvka7rawblhx/milestones/2341633811856214133", + "method": "DELETE" + }, + "response": { + "status": 204 + }, + "uuid": "e1e18aec-d8c8-4b65-b17f-17bc07f26819", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.054842Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "issues/delete-milestone" + } + } + }, + "insertionIndex": 523 + }, + { + "id": "ada0aed2-49d3-4dd6-ada9-58922153510f", + "name": "Create a milestone", + "request": { + "urlPath": "/repos/cr0jry83mkrb7qrlcfnepltuaxgoqu95iy53yspxemjuyujykt6k2piqp8annrt86zf3mr4dhqsq7dlst78oalkksksvl8me8nlxwo5mvzsanfxa4q0gvs8why52/odgfoavo4go58ocl5aq5rld9cj1478yr9htvxxw4as97wmjk3z5xfp7qt9ut3k8o51ujk4wggl359u9k6rhmnkp21qetskr74uji5310inxf2jxcihqketezzmkb5w39j6ikk3o/milestones", + "method": "POST" + }, + "response": { + "status": 422, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/347651\",\n \"message\" : \"Maxime nobis est consequatur. Eligendi molestiae consectetur unde fugiat. Alias sed unde. Dolorem soluta voluptas. Aperiam quia quod rerum assumenda voluptates dolor.\",\n \"errors\" : [ {\n \"code\" : \"nykxhxn20dplk5urf4io1rjqjp6mgr2uequtf6k8yx73qa7c9h6w5lnom82md6qyzo7kbshclwqauow4he799oxzevp9qomk3xx0zr6fppeukc7gzrd8feibwof7qid3hnmgx9npfizbxdrj0neigvh0fekwfvfnjnb0395pzep9zntm0oohpun5s\",\n \"field\" : \"boxsysrlbc9q66h3dpgxckmniequilyl\",\n \"resource\" : \"4024xaum1a7phvpuvek982r41k7dl2ecus7k6t7vyguimbgwp1q494glv2ylh1424b318fq6ei6mbq2w0x\",\n \"index\" : 3525673532593624003,\n \"message\" : \"Sed voluptates omnis. Illo quaerat dolor facere sunt laudantium quisquam laboriosam. Omnis quia id voluptatem quod est quam dignissimos. Officiis a nam fugiat saepe magnam quia. Maxime porro laboriosa\",\n \"value\" : { }\n }, {\n \"code\" : \"lvrazmr1x9mlmgxk1qq58u67woo5aaswkjp9qtoecrz5eyje3qrl3hhno7ybwoieej\",\n \"field\" : \"ucqy3n90xtnki79coqumzqrztgq3yx1niujzzbqasph78hmiyq1sdebvrl92qbxiilzfg2v\",\n \"resource\" : \"s4uc2krlbvqabfw3ldoqpn06yo23l7ykq29wy2iz23d63hamntjh0war0j2oakxsrlox0pzdk5zzily3vpje6kn082k2figg2i1jg7phuee9y9hnrkvm3sgopanropzwkg\",\n \"index\" : 5924110378360142537,\n \"message\" : \"Quo quas quo iste mollitia et. Dolorem magnam sunt. Facilis quis maiores debitis doloremque. Quam dicta at ea et quia tempora reiciendis. Pariatur est quos repellat consequatur mollitia natus ut.\",\n \"value\" : { }\n }, {\n \"code\" : \"id8noyhpu54odka70373lkbelgwdkiktglh1s349c8ic4iqna3f5qtg3uvbh308g715rcdr5h0np06a8s9ihqdbmo9bs5n7hsey58wf5p6vap4o3ux2q7k5c6ro5edhq3\",\n \"field\" : \"u45idf28j95r2smx9u3n01k50ugxv5wwb6sf9acyxdps7wciw9uid2k8ufvsno8je6idknu81pg2j8yxn8v709vasvse1usixmi6fkbr7tc14\",\n \"resource\" : \"e5v1nidkqodkagqs94npgtdqbefbmdcck0cm1c0lrugx7h3bygbqjg3cvbmn8jhisist92vsnr8lm0ugqc3cqrvow6icvrxbqh6zsd1jubjs5ckqv8lrhvp0llh7bwww974ztl\",\n \"index\" : 5061581227407121735,\n \"message\" : \"Quaerat iusto qui sit. Qui voluptas autem ut in. Voluptatem similique qui. Sit cum quos et.\",\n \"value\" : { }\n }, {\n \"code\" : \"jxz1fvfde85xng6ni9cs6wr3j5ijiqtkgz4d1pwvl6mu6qevuox8taarj2f6yev8eounm19yn0t51qr36nksw8np3hsygzmqtwhas2wwc1xan8j8ukjbjx8sdid17gsr6fky9lc17vnt0t12xi85a295a11luazv0o0bks6j4077boygs\",\n \"field\" : \"k8g77tjjppesi56n7zipw2inuf8tr9ljv6948i20ixulcp2a86m5mfj3l6j730r7nrdfg0x08xno0cmm3ergngqync25rck4qjgbe5gdj2\",\n \"resource\" : \"cbwbi3z7vewlxd05xbgofgotdsdblpyou6eul0nfkbatgz7ox2e8ub88kb4h7f538p8iv6k9i32xvrg8qsqhuc3dtsa80oxq6nroqb6u7dkc7zne8ad97qtwskcs454simr4g15t5dnd8902sni67862mu6k7pgimnnqm\",\n \"index\" : 6605892601363621611,\n \"message\" : \"Et sed laboriosam harum. Vel nam suscipit sit. Et praesentium velit totam quidem laboriosam et. Dolores excepturi natus.\",\n \"value\" : { }\n }, {\n \"code\" : \"e285xgq45pwqun1su3v2d84xtmdabxydbghvum4q2336gdvhhcu5ehb2fr1j2mgpin43zey29sd52b2d889ugu5qooakcpxiyxcsfhksa4l1k5acmcff8wofijvuxatc3p5ysbmk2rkdgi363x4w9aej0ngnggojprwtcn0pjhhmk6hrjtt719hb6k\",\n \"field\" : \"xylqudiwjx4sq5qh32fw08r6lie86labdw8q3tlrf521l51n6dqpl2bp2wn3n4f93mwxx79hl16a6c9nwbow9c49vttksi0j31mpnd6x68acg07kicvpyww05es8w1s04wa0x9n\",\n \"resource\" : \"bnk5o6e694hgyanphjmz4yts1q2hjrc3hjepgfixw5wpswze2uu96dxfa8vnk1ktqb8e5ybjdmwsgjdr3a4ioswqclspls1vrl70\",\n \"index\" : 2323191790433620589,\n \"message\" : \"Accusantium totam officia. Et et magnam temporibus et quisquam sit est. Ut sunt est aperiam. Reiciendis est dolor praesentium voluptatum voluptatem itaque.\",\n \"value\" : { }\n }, {\n \"code\" : \"rz6trlcl19o7ww9hc8qhvsmxjyjgw54vkzhi8lhbebjx70qmo5pfc64uh9d39c\",\n \"field\" : \"fg7qxjmec8lew5z5zi8audzsst7pail3lpcj6qf2jw8h8ipctdt3nlu9b4a3yx9mb2xpcfxlwc4mm1ef2s4bdbloaxl58oink6fs11l9bnyakyw8q1yailqlf4rzvg7ve4ecwkqk52url2dxvinwvznvb9xp\",\n \"resource\" : \"g4x2r3a15n4rrf3l1p1hxwlvlzyormq7vx37qxd66s5jhhnmog3qt0fy5a1t4wvb2sh4gt\",\n \"index\" : 8482533633349170021,\n \"message\" : \"Libero ad animi. Quod dolorem animi dolorem et culpa provident. Aut sapiente placeat velit dolor inventore in aliquid.\",\n \"value\" : { }\n } ]\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "ada0aed2-49d3-4dd6-ada9-58922153510f", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.054794Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "issues/create-milestone", + "schema": { + "description": "Validation Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "errors": { + "items": { + "properties": { + "code": { + "type": "string" + }, + "field": { + "type": "string" + }, + "index": { + "type": "integer" + }, + "message": { + "type": "string" + }, + "resource": { + "type": "string" + }, + "value": { + "oneOf": [ + { + "nullable": true, + "type": "string" + }, + { + "nullable": true, + "type": "integer" + }, + { + "items": { + "type": "string" + }, + "nullable": true, + "type": "array" + } + ] + } + }, + "required": ["code"], + "type": "object" + }, + "type": "array" + }, + "message": { + "type": "string" + } + }, + "required": ["message", "documentation_url"], + "title": "Validation Error", + "type": "object" + } + } + } + }, + "insertionIndex": 524 + }, + { + "id": "fc9aca80-6125-4ffb-8cb5-94374eaffadf", + "name": "Create a milestone", + "request": { + "urlPath": "/repos/4f1acqiw96fe5wk5zsayexo5rloq283yncw1dqja4v0qte432iwl9fq8p/ezoj8z1o6omhkwf6dmvhzvixdu2kp2pk8ghmhz7zu5u5nbwaioj4pbq1ef7i8w9kmk76twn2tmty990fzjneb62o3t4kt21a/milestones", + "method": "POST" + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/807773\",\n \"message\" : \"Et qui officiis est et quo molestias. Quia adipisci consequuntur delectus iusto ad qui. Doloremque vel earum vero optio maxime.\",\n \"url\" : \"https://web.example.mocklab.io/801852\",\n \"status\" : \"expd80iusqddu790n9ss2n05vwy0ecw7en6ljye5xa87d4xiznawiz9jdznw3e5wqx1f6ppds8rb6jkytznhexz\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "fc9aca80-6125-4ffb-8cb5-94374eaffadf", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.054134Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "issues/create-milestone", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 525 + }, + { + "id": "2ebf9c2e-5a2e-4fc1-8e82-ef8b2c118c0b", + "name": "Create a milestone - default", + "request": { + "urlPath": "/repos/yxu3otlr5b934qw435c2y3or7eq7o9gh54dduz06ereo10t6dk3qs589auoyrcmzr0dnqysdr0raglsldpwzb5x9vd5fre11tv488523wi5326vl90qlwc5r2j1ac0p4l3yhj8i5etrdj2pe3d1pmtey7gn8aaxv1andckw7olmvjqp46cm2f9ugms70of7w4ekwu/lscwc2vy2w4qa56tqhyricaf9h061hw31fwu0toq4pz1tl9b90xy1x68p34kxwuv4ofcvxhaj1d17g91tsxjg327tu8rioblnn148t35gsx1h2wg8790soowbmyg22biy40wbm6gt1d1qokk1etr8v4mk69gmxktdehyd/milestones", + "method": "POST" + }, + "response": { + "status": 201, + "body": "{\n \"closed_at\" : \"2013-02-12T13:22:01Z\",\n \"closed_issues\" : 8,\n \"created_at\" : \"2011-04-10T20:09:31Z\",\n \"creator\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"description\" : \"Tracking milestone for version 1.0\",\n \"due_on\" : \"2012-10-09T23:39:01Z\",\n \"html_url\" : \"https://github.com/octocat/Hello-World/milestones/v1.0\",\n \"id\" : 1002604,\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones/1/labels\",\n \"node_id\" : \"MDk6TWlsZXN0b25lMTAwMjYwNA==\",\n \"number\" : 1,\n \"open_issues\" : 4,\n \"state\" : \"open\",\n \"title\" : \"v1.0\",\n \"updated_at\" : \"2014-03-03T18:58:10Z\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones/1\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "2ebf9c2e-5a2e-4fc1-8e82-ef8b2c118c0b", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.053906Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "issues/create-milestone", + "schema": { + "description": "A collection of related issues and pull requests.", + "properties": { + "closed_at": { + "example": "2013-02-12T13:22:01Z", + "format": "date-time", + "nullable": true, + "type": "string" + }, + "closed_issues": { + "example": 8, + "type": "integer" + }, + "created_at": { + "example": "2011-04-10T20:09:31Z", + "format": "date-time", + "type": "string" + }, + "creator": { + "$ref": "#/components/schemas/nullable-simple-user" + }, + "description": { + "example": "Tracking milestone for version 1.0", + "nullable": true, + "type": "string" + }, + "due_on": { + "example": "2012-10-09T23:39:01Z", + "format": "date-time", + "nullable": true, + "type": "string" + }, + "html_url": { + "example": "https://github.com/octocat/Hello-World/milestones/v1.0", + "format": "uri", + "type": "string" + }, + "id": { + "example": 1002604, + "type": "integer" + }, + "labels_url": { + "example": "https://api.github.com/repos/octocat/Hello-World/milestones/1/labels", + "format": "uri", + "type": "string" + }, + "node_id": { + "example": "MDk6TWlsZXN0b25lMTAwMjYwNA==", + "type": "string" + }, + "number": { + "description": "The number of the milestone.", + "example": 42, + "type": "integer" + }, + "open_issues": { + "example": 4, + "type": "integer" + }, + "state": { + "default": "open", + "description": "The state of the milestone.", + "enum": ["open", "closed"], + "example": "open", + "type": "string" + }, + "title": { + "description": "The title of the milestone.", + "example": "v1.0", + "type": "string" + }, + "updated_at": { + "example": "2014-03-03T18:58:10Z", + "format": "date-time", + "type": "string" + }, + "url": { + "example": "https://api.github.com/repos/octocat/Hello-World/milestones/1", + "format": "uri", + "type": "string" + } + }, + "required": [ + "closed_issues", + "creator", + "description", + "due_on", + "closed_at", + "id", + "node_id", + "labels_url", + "html_url", + "number", + "open_issues", + "state", + "title", + "url", + "created_at", + "updated_at" + ], + "title": "Milestone", + "type": "object" + } + } + } + }, + "insertionIndex": 526 + }, + { + "id": "5f5d1aeb-ec71-4845-9dbb-12d2b4fd42e3", + "name": "List milestones", + "request": { + "urlPath": "/repos/34ash3uod5sie0wdvp4katfj6s202nyyt9h6q0apo/hijz7i24n8bdavvrd5srs68pk2kntoertu4fx2ekqnypz72hdiyhbrsp1yejdln9bsb8itql22v4g62pov7zfslw3o43s7z4/milestones", + "method": "GET" + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/809709\",\n \"message\" : \"Accusantium sint sunt at. Illo magni dolore nam vel. Fugit quasi similique ut fugiat rem in ad.\",\n \"url\" : \"https://web.example.mocklab.io/716214\",\n \"status\" : \"7q8vlbqd5vf65d52rhg1hbgv85tas0onk4zf7n6davbk49vnt7dpbb7jke551f4w\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "5f5d1aeb-ec71-4845-9dbb-12d2b4fd42e3", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.053734Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "issues/list-milestones", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 527 + }, + { + "id": "c13dfe0b-4c42-4b64-85ba-2e208793b994", + "name": "List milestones - default", + "request": { + "urlPath": "/repos/oyiebibfs90tjj2gez0udh9gtmvs8ju5v57fkmflj18h58ghlz5dr2/aycjpydxp5pr3z3v1s20ijffbl9thzn8f88nxyegb4klw2vzeprs6ews999mefsk1t0xdc6ryzgbegwhljn0gouquk0530fc2ir1ucjrqjzn9hqnqbzsl7xf6eqcjh4asqem8i7az3vavsx7x1coo1j3l1lvec10tik1i6bm5s0vevhge3b7ubic84nb5z813d/milestones", + "method": "GET" + }, + "response": { + "status": 200, + "body": "[ {\n \"closed_at\" : \"2013-02-12T13:22:01Z\",\n \"closed_issues\" : 8,\n \"created_at\" : \"2011-04-10T20:09:31Z\",\n \"creator\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"description\" : \"Tracking milestone for version 1.0\",\n \"due_on\" : \"2012-10-09T23:39:01Z\",\n \"html_url\" : \"https://github.com/octocat/Hello-World/milestones/v1.0\",\n \"id\" : 1002604,\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones/1/labels\",\n \"node_id\" : \"MDk6TWlsZXN0b25lMTAwMjYwNA==\",\n \"number\" : 1,\n \"open_issues\" : 4,\n \"state\" : \"open\",\n \"title\" : \"v1.0\",\n \"updated_at\" : \"2014-03-03T18:58:10Z\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones/1\"\n} ]", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "c13dfe0b-4c42-4b64-85ba-2e208793b994", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.053515Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "issues/list-milestones", + "schema": { + "items": { + "$ref": "#/components/schemas/milestone" + }, + "type": "array" + } + } + } + }, + "insertionIndex": 528 + }, + { + "id": "2fd4309b-52ea-4fb6-aa3d-21854553c8b5", + "name": "Merge a branch (application/json)", + "request": { + "urlPath": "/repos/193ot0eh7p7tdnqmufbkatb1pdaogipmctsjktm752yz3cyzviz6kcjrqjbq9k15wwzl6zr2zr2y3wkp0ixni3auoofwnb6qejmrtvx8nwwgvqov0bu3kh4o3mwr1iq/mzjdao9sxb2t5vjwqcnzefbhmn2yduzozhppc9p55rufgf6nbuxsadb1mu42ja/merges", + "method": "POST", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 422, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/227812\",\n \"message\" : \"Natus natus voluptatibus atque quo maiores eos. Rem laudantium corporis consectetur vel inventore illo dolore. Voluptates ad quos cum quam qui quam sed. Rem rerum ut sint corrupti. Esse sint sit dolor\",\n \"errors\" : [ {\n \"code\" : \"aqa12bzzsphv1cdd0507bzyh79dywc\",\n \"field\" : \"o8ckxx8whe4ngc5la4lpweyg1ro6m081vziguhoif5j4j1jtvj9p9z10pgyttswrfyxl4fxee1lnkx\",\n \"resource\" : \"oqg6qzjwy2pkvrbq6i7kyi35b3z480375mfvknyrruqly86xba060eeaaafqkj3j30f3jebsscak8ewz8qk1rbtkqsnm6ljvczsjyu1fc9knyc4rixf76e05zcw5xy4tukmz3hx9j4gbfsgrbk\",\n \"index\" : 5957675612487474133,\n \"message\" : \"Harum doloribus hic eum dolores ea non. Velit id repudiandae. Ut sed sed similique tempora perspiciatis esse sequi. Debitis vitae delectus voluptatem vero illo quod.\",\n \"value\" : { }\n }, {\n \"code\" : \"amvx3zxwnt106sberi1111dh61uz8vmkq5qi1rmnqjf501jr2x5bbd6qxwgc5ddkuqsoo8kvssi8dtebe1t2cl723g05yo00j1sns8kwd0k5k3j1znb98hzdq8l6c8kdc9bq2itqy26bhhrx0u5y8em86\",\n \"field\" : \"y8xczvh2fza7sp7tlhjb12rnv7tcu07tbu68ulu7pkm19tr12ebh2\",\n \"resource\" : \"he8uy9wltq6rd3cgafzambp1r52f6oezrmaon9sifn886pttzf64k7f43546ri8rjgq9v1x4wxjeb7x46tpl7r5maqow617xjxyubbhj635dtpkcwfyo4tnitpq13zfkodh3ep5drk0hjoiq5u8pjgslo9q1f3z2eon9pv49l13u6rqd51f0m\",\n \"index\" : 7380940733693440727,\n \"message\" : \"Nisi eum illum. Eveniet possimus ea repudiandae. Neque nesciunt aut incidunt praesentium beatae et.\",\n \"value\" : { }\n }, {\n \"code\" : \"ddp1ot9tgw5og4ir1ryt7bebjpfd3n7ooyukz3abkc59nw2zg3c7yjbut7ctey4uzhln03mt42xvemm9tycgef4opxp5ipo5jdb600p06mnlwvy5wsqb76q5tkdgwh1f72qu2y3gl3uav3er1pzcc91x\",\n \"field\" : \"8qacfgm3i67e1o6nmmsopuqzr2b2qhf4894grzj8eekbfr2ztza1gny3n80gqzt9ys0c7r\",\n \"resource\" : \"js7wmqnv4zzf6ul3st163rxu29h5twwjbsg7xtmbsv9lw8t8glhstpqfmkfhvbhnu2lkwfd5lpsny6t44h2e2s8kdm33jpt0h0gtv0jlyh6mq4muqvwu0xbsq01z7tb\",\n \"index\" : 3724141449533290916,\n \"message\" : \"Et facilis placeat cupiditate reprehenderit non ut. Sed incidunt labore voluptatum sint repellendus. Laudantium quis tempora consequatur. Ducimus tenetur atque minima iste nulla repudiandae eveniet.\",\n \"value\" : { }\n }, {\n \"code\" : \"xb0t1kivw7l9l7wc6tkyn2r9dv0w5ofp3zyrg1xsr6z7zmyhz7dd1bi69kmti381hmyox4kfcrxlw10gs0\",\n \"field\" : \"7khx726xf4cpp43kyq89cf5d1lfo3tfbawhbbg3z7yncrelx47sji1crf98093190zvag28mr548g0l97pcwbo4xi36ndj7i627tncivsggj7ch6c5wz0tfp5oxp5mf4n84xzxfkdobues3xuy0xmswd5rg37wve3lquindj278jrx\",\n \"resource\" : \"ez9rnhokibw5arwu06apxt2442y6bojf3scntyyh90zd7e9v5akqsacuj90maqjbppp2v5slv2uadkavq8a2rgj4jq0hiaa1t19a861ruwkwz6nnu48vqlrrwqhv6fucmloaepcs0bpe03we5pfetnb78hwwkpd5otspj\",\n \"index\" : 6968621161672471024,\n \"message\" : \"Temporibus et accusamus. Itaque nulla sunt. Non quos debitis consequuntur enim. Aut autem possimus occaecati quaerat.\",\n \"value\" : { }\n }, {\n \"code\" : \"l92rrimuec602lcfw2jjowff8mw5k9t2plsnsdb7qrxdidgekv3gw69mmydv95nzerw5oz6oqg8l6utxl3s90x9auiisrvdy6z27erxoc0ee1119lr80xcogxe1a7lncm\",\n \"field\" : \"llr49mw1va7q0pngg2h40lhj64zxdz1xyiq2dcc6qvdgg27t4zbsaotamqrk2iscw074uvd35jjyf5xv3kxs0lsy9p0awz21dl75etynl954qktdbwnyjxxs7gz9wtkhmr5wcp4vay9ugfezq5506axns8\",\n \"resource\" : \"oko0e4mfdgoxvg8ated6t1treh1jkv7ekjtw4w5ywpqkwj8mi68gww7k78emfsggfg3o14xgfkmgpizansvjolyalf6oskyfs6r71bzz5dkkurdxkugb88cccb80i2hratw2buv96hlpeky4ukpu5hzu80ljtrt1vm2h7ago2b83afqtb5u6ivspshfsuwd3e\",\n \"index\" : 3867785187910343511,\n \"message\" : \"Voluptatum facilis reiciendis molestias corporis. Incidunt minus ad praesentium. Aut dolores laboriosam quidem. Magni quisquam repellendus officiis dolorem cupiditate.\",\n \"value\" : { }\n } ]\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "2fd4309b-52ea-4fb6-aa3d-21854553c8b5", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.053445Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/merge", + "schema": { + "description": "Validation Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "errors": { + "items": { + "properties": { + "code": { + "type": "string" + }, + "field": { + "type": "string" + }, + "index": { + "type": "integer" + }, + "message": { + "type": "string" + }, + "resource": { + "type": "string" + }, + "value": { + "oneOf": [ + { + "nullable": true, + "type": "string" + }, + { + "nullable": true, + "type": "integer" + }, + { + "items": { + "type": "string" + }, + "nullable": true, + "type": "array" + } + ] + } + }, + "required": ["code"], + "type": "object" + }, + "type": "array" + }, + "message": { + "type": "string" + } + }, + "required": ["message", "documentation_url"], + "title": "Validation Error", + "type": "object" + } + } + } + }, + "insertionIndex": 529 + }, + { + "id": "acac6dc1-f093-4dc9-aa49-12ffa70290c2", + "name": "Merge a branch - 409", + "request": { + "urlPath": "/repos/5qe191uuq7y1kukjlu7jewajv9dcrmnsqq3jky6yk6a3hutl8v4978rv6lbfde4ryi1d16uzexszunny6al5g1je00ex9tsyixu88y6ts1d45peh0yaf6thk05qn1r/f457wnwfcez37f1mgrv6gefesv02ve91r9ol3eb43nzso96yq7nogjkv8fkr45bqd9vga59qpo5naoikhpad3mrbpm05hdufty7tm9deaur06wuh/merges", + "method": "POST" + }, + "response": { + "status": 409 + }, + "uuid": "acac6dc1-f093-4dc9-aa49-12ffa70290c2", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.052832Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/merge" + } + } + }, + "insertionIndex": 530 + }, + { + "id": "9ea88c59-2f9f-4909-813a-fa10057f3dae", + "name": "Merge a branch - 404", + "request": { + "urlPath": "/repos/zpo43s3ndjzt6c64mfq4lx3bfhu4jggtbszwxq6u9dp03yjy53b124zbi0viuo77decz970lpdymjn4l4t5ysznuzihlonnxmtjft6k9wlirrf8qgharre3geugmcuofennq4biaqvsgvj3h0y7wa6sxy5b/4ch1p8b6n90l0iqxw5xj0159zm9hpn1brt74c42zckruqytmrmg/merges", + "method": "POST" + }, + "response": { + "status": 404 + }, + "uuid": "9ea88c59-2f9f-4909-813a-fa10057f3dae", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.052795Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/merge" + } + } + }, + "insertionIndex": 531 + }, + { + "id": "83f73047-512b-4285-a3c9-3b406f6a8ba1", + "name": "Merge a branch (application/json)", + "request": { + "urlPath": "/repos/vrfgyc1flq5y882w5pi3s2c2qh86jc5dgpxuldghtpuwk9vlukari9hjg0xm9k6419ntgm8qq90ossx85wj2le2wdm87c7n5rgzy5dxstepbk1eva00thmt573gpezgvpoashszlt4yskwhxath/2lzepnjd4hmoyo01xz3gbsfhf4gjyad3xctub32iln74y/merges", + "method": "POST", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 403, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/531223\",\n \"message\" : \"Aut recusandae dolorum inventore. Qui et voluptatum tempora voluptatum. Consequuntur ut ipsum iste illo mollitia voluptates. Voluptas et mollitia ut et.\",\n \"url\" : \"https://web.example.mocklab.io/410716\",\n \"status\" : \"fywxs8yf3yrarzes4qzt233mcsj6yoyp1nt5joknsfnynmynvuzxv7qt4qouq8iywb0hmuawfl16o3v31waehj490uy8pstnith1iosxlxn4r3exi12p21tcd7sl04ondj0k97ruyn3iuse0cpl21zvt67r9l07iq1s75cv4hqfpvj0gxbs1\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "83f73047-512b-4285-a3c9-3b406f6a8ba1", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.052751Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/merge", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 532 + }, + { + "id": "22a691fd-b926-42c0-a5e2-9ea9f6d28c0e", + "name": "Merge a branch - 204", + "request": { + "urlPath": "/repos/md0mz40yvzl76qlk8n2m35yrgmdh2cl29rj90xi02m8a33d1fzxymajgzacy3mqsxq5i75010b0jl0zyjqsoibjuk12vafxds5zrxly9t2xam/h686zmwqvp7vv7d36for7giz9iinmw16epmp33w57fbt633fa75ipw5zkyho6tb59feavdjiuzr3si2mt7qeiymd04eood846eud0geffffgmyizkvx6hiweonygfuzjsrkfcnx1sjzt30i1ybg3zdsim03ajmxysrqs6j38n53lbrqp/merges", + "method": "POST" + }, + "response": { + "status": 204 + }, + "uuid": "22a691fd-b926-42c0-a5e2-9ea9f6d28c0e", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.052531Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/merge" + } + } + }, + "insertionIndex": 533 + }, + { + "id": "68e69082-cacb-43a7-b941-2616a6351d32", + "name": "Merge a branch (application/json) - default", + "request": { + "urlPath": "/repos/u2udzsfr2qawsm0ejaepjiu0c3c1svkvau2nmc871pk4ie8i3kv66vyzf6l2vnx1jnxw37dwisfb7dic25ijlh1mngwhykxkdw9r91v9mmsi6haol7bmfck8jhbeqryfld5hwumgnkuxr14vycrsl4gpm6lg2426h3iu5dmsm/9gu0u4/merges", + "method": "POST", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 201, + "body": "{\n \"author\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"comments_url\" : \"https://api.github.com/repos/octocat/Hello-World/commits/6dcb09b5b57875f334f61aebed695e2e4193db5e/comments\",\n \"commit\" : {\n \"author\" : {\n \"date\" : \"2011-04-14T16:00:49Z\",\n \"email\" : \"mona@github.com\",\n \"name\" : \"Monalisa Octocat\"\n },\n \"comment_count\" : 0,\n \"committer\" : {\n \"date\" : \"2011-04-14T16:00:49Z\",\n \"email\" : \"mona@github.com\",\n \"name\" : \"Monalisa Octocat\"\n },\n \"message\" : \"Fix all the bugs\",\n \"tree\" : {\n \"sha\" : \"6dcb09b5b57875f334f61aebed695e2e4193db5e\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/tree/6dcb09b5b57875f334f61aebed695e2e4193db5e\"\n },\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/git/commits/6dcb09b5b57875f334f61aebed695e2e4193db5e\",\n \"verification\" : {\n \"reason\" : \"unsigned\",\n \"verified\" : false\n }\n },\n \"committer\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"files\" : [ {\n \"additions\" : 10,\n \"blob_url\" : \"https://github.com/octocat/Hello-World/blob/7ca483543807a51b6079e54ac4cc392bc29ae284/file1.txt\",\n \"changes\" : 12,\n \"deletions\" : 2,\n \"filename\" : \"file1.txt\",\n \"patch\" : \"@@ -29,7 +29,7 @@\\n.....\",\n \"raw_url\" : \"https://github.com/octocat/Hello-World/raw/7ca483543807a51b6079e54ac4cc392bc29ae284/file1.txt\",\n \"status\" : \"modified\"\n } ],\n \"html_url\" : \"https://github.com/octocat/Hello-World/commit/6dcb09b5b57875f334f61aebed695e2e4193db5e\",\n \"node_id\" : \"MDY6Q29tbWl0NmRjYjA5YjViNTc4NzVmMzM0ZjYxYWViZWQ2OTVlMmU0MTkzZGI1ZQ==\",\n \"parents\" : [ {\n \"sha\" : \"6dcb09b5b57875f334f61aebed695e2e4193db5e\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/commits/6dcb09b5b57875f334f61aebed695e2e4193db5e\"\n } ],\n \"sha\" : \"6dcb09b5b57875f334f61aebed695e2e4193db5e\",\n \"stats\" : {\n \"additions\" : 104,\n \"deletions\" : 4,\n \"total\" : 108\n },\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/commits/6dcb09b5b57875f334f61aebed695e2e4193db5e\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "68e69082-cacb-43a7-b941-2616a6351d32", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.052475Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/merge", + "schema": { + "description": "Commit", + "properties": { + "author": { + "$ref": "#/components/schemas/nullable-simple-user" + }, + "comments_url": { + "example": "https://api.github.com/repos/octocat/Hello-World/commits/6dcb09b5b57875f334f61aebed695e2e4193db5e/comments", + "format": "uri", + "type": "string" + }, + "commit": { + "properties": { + "author": { + "$ref": "#/components/schemas/nullable-git-user" + }, + "comment_count": { + "example": 0, + "type": "integer" + }, + "committer": { + "$ref": "#/components/schemas/nullable-git-user" + }, + "message": { + "example": "Fix all the bugs", + "type": "string" + }, + "tree": { + "properties": { + "sha": { + "example": "827efc6d56897b048c772eb4087f854f46256132", + "type": "string" + }, + "url": { + "example": "https://api.github.com/repos/octocat/Hello-World/tree/827efc6d56897b048c772eb4087f854f46256132", + "format": "uri", + "type": "string" + } + }, + "required": ["sha", "url"], + "type": "object" + }, + "url": { + "example": "https://api.github.com/repos/octocat/Hello-World/commits/6dcb09b5b57875f334f61aebed695e2e4193db5e", + "format": "uri", + "type": "string" + }, + "verification": { + "$ref": "#/components/schemas/verification" + } + }, + "required": ["author", "committer", "comment_count", "message", "tree", "url"], + "type": "object" + }, + "committer": { + "$ref": "#/components/schemas/nullable-simple-user" + }, + "files": { + "items": { + "properties": { + "additions": { + "type": "integer" + }, + "blob_url": { + "type": "string" + }, + "changes": { + "type": "integer" + }, + "contents_url": { + "example": "\"https://api.github.com/repos/owner-3d68404b07d25daeb2d4a6bf/AAA_Public_Repo/contents/geometry.js?ref=c3956841a7cb7e8ba4a6fd923568d86958f01573\"", + "type": "string" + }, + "deletions": { + "type": "integer" + }, + "filename": { + "type": "string" + }, + "patch": { + "type": "string" + }, + "previous_filename": { + "example": "\"subdir/before_name.txt\"", + "type": "string" + }, + "raw_url": { + "type": "string" + }, + "sha": { + "example": "\"1e8e60ce9733d5283f7836fa602b6365a66b2567\"", + "type": "string" + }, + "status": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "html_url": { + "example": "https://github.com/octocat/Hello-World/commit/6dcb09b5b57875f334f61aebed695e2e4193db5e", + "format": "uri", + "type": "string" + }, + "node_id": { + "example": "MDY6Q29tbWl0NmRjYjA5YjViNTc4NzVmMzM0ZjYxYWViZWQ2OTVlMmU0MTkzZGI1ZQ==", + "type": "string" + }, + "parents": { + "items": { + "properties": { + "html_url": { + "example": "https://github.com/octocat/Hello-World/commit/7638417db6d59f3c431d3e1f261cc637155684cd", + "format": "uri", + "type": "string" + }, + "sha": { + "example": "7638417db6d59f3c431d3e1f261cc637155684cd", + "type": "string" + }, + "url": { + "example": "https://api.github.com/repos/octocat/Hello-World/commits/7638417db6d59f3c431d3e1f261cc637155684cd", + "format": "uri", + "type": "string" + } + }, + "required": ["sha", "url"], + "type": "object" + }, + "type": "array" + }, + "sha": { + "example": "6dcb09b5b57875f334f61aebed695e2e4193db5e", + "type": "string" + }, + "stats": { + "properties": { + "additions": { + "type": "integer" + }, + "deletions": { + "type": "integer" + }, + "total": { + "type": "integer" + } + }, + "type": "object" + }, + "url": { + "example": "https://api.github.com/repos/octocat/Hello-World/commits/6dcb09b5b57875f334f61aebed695e2e4193db5e", + "format": "uri", + "type": "string" + } + }, + "required": [ + "url", + "sha", + "node_id", + "html_url", + "comments_url", + "commit", + "author", + "committer", + "parents" + ], + "title": "Commit", + "type": "object" + } + } + } + }, + "insertionIndex": 534 + }, + { + "id": "4b4d45d3-4cb1-4455-b312-3669f04a5da8", + "name": "Get the license for a repository - default", + "request": { + "urlPath": "/repos/akrmle7gc0bznv4rkb6bo1kjjvudahnz143yfuhlevu8431k70gyuy581x300cob9dz9mh7nuiyav28kpk4pk7a9jf7sy9uje9wezbejfvzih65my3m9dakcugjus4b0cmluh7u0rp675dwqzfnadxy7w5aubpgk30m4hnqy55izk9s1m3yzx/cidz67abv4gxj46j8y5dj/license", + "method": "GET" + }, + "response": { + "status": 200, + "body": "{\n \"_links\" : {\n \"git\" : \"https://api.github.com/repos/benbalter/gman/git/blobs/401c59dcc4570b954dd6d345e76199e1f4e76266\",\n \"html\" : \"https://github.com/benbalter/gman/blob/master/LICENSE\",\n \"self\" : \"https://api.github.com/repos/benbalter/gman/contents/LICENSE?ref=master\"\n },\n \"content\" : \"VGhlIE1JVCBMaWNlbnNlIChNSVQpCgpDb3B5cmlnaHQgKGMpIDIwMTMgQmVu\\nIEJhbHRlcgoKUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBv\\nZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZgp0\\naGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmls\\nZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbgp0aGUgU29mdHdhcmUg\\nd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRh\\ndGlvbiB0aGUgcmlnaHRzIHRvCnVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwg\\ncHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwg\\nY29waWVzIG9mCnRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25z\\nIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywK\\nc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CgpUaGUgYWJv\\ndmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGlj\\nZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwKY29waWVzIG9yIHN1YnN0YW50\\naWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KClRIRSBTT0ZUV0FSRSBJ\\nUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBL\\nSU5ELCBFWFBSRVNTIE9SCklNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJ\\nTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBG\\nSVRORVNTCkZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklO\\nR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUgpDT1BZ\\nUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdF\\nUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIKSU4gQU4gQUNUSU9OIE9G\\nIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBP\\nVVQgT0YgT1IgSU4KQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBU\\nSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4K\\n\",\n \"download_url\" : \"https://raw.githubusercontent.com/benbalter/gman/master/LICENSE?lab=true\",\n \"encoding\" : \"base64\",\n \"git_url\" : \"https://api.github.com/repos/benbalter/gman/git/blobs/401c59dcc4570b954dd6d345e76199e1f4e76266\",\n \"html_url\" : \"https://github.com/benbalter/gman/blob/master/LICENSE\",\n \"license\" : {\n \"key\" : \"mit\",\n \"name\" : \"MIT License\",\n \"node_id\" : \"MDc6TGljZW5zZW1pdA==\",\n \"spdx_id\" : \"MIT\",\n \"url\" : \"https://api.github.com/licenses/mit\"\n },\n \"name\" : \"LICENSE\",\n \"path\" : \"LICENSE\",\n \"sha\" : \"401c59dcc4570b954dd6d345e76199e1f4e76266\",\n \"size\" : 1077,\n \"type\" : \"file\",\n \"url\" : \"https://api.github.com/repos/benbalter/gman/contents/LICENSE?ref=master\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "4b4d45d3-4cb1-4455-b312-3669f04a5da8", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.052171Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "licenses/get-for-repo", + "schema": { + "description": "License Content", + "properties": { + "_links": { + "properties": { + "git": { + "format": "uri", + "nullable": true, + "type": "string" + }, + "html": { + "format": "uri", + "nullable": true, + "type": "string" + }, + "self": { + "format": "uri", + "type": "string" + } + }, + "required": ["git", "html", "self"], + "type": "object" + }, + "content": { + "type": "string" + }, + "download_url": { + "format": "uri", + "nullable": true, + "type": "string" + }, + "encoding": { + "type": "string" + }, + "git_url": { + "format": "uri", + "nullable": true, + "type": "string" + }, + "html_url": { + "format": "uri", + "nullable": true, + "type": "string" + }, + "license": { + "$ref": "#/components/schemas/nullable-license-simple" + }, + "name": { + "type": "string" + }, + "path": { + "type": "string" + }, + "sha": { + "type": "string" + }, + "size": { + "type": "integer" + }, + "type": { + "type": "string" + }, + "url": { + "format": "uri", + "type": "string" + } + }, + "required": [ + "_links", + "git_url", + "html_url", + "download_url", + "name", + "path", + "sha", + "size", + "type", + "url", + "content", + "encoding", + "license" + ], + "title": "License Content", + "type": "object" + } + } + } + }, + "insertionIndex": 535 + }, + { + "id": "3c23e2fb-e95e-4233-8504-af8d58fe8b61", + "name": "List repository languages - default", + "request": { + "urlPath": "/repos/9t3fzm5ex536exwizmjwqno3swmuj2dfs4fc5v6nnqwx2jwlihpe6il6c2gvpfbrvdc1ph0wimk0ukpgm4f1j5x6n9flgp06x0csnmq4phnjh0jk4vlyk5r70popgstco45zkqd4aaatcn4wk277a14zt55gepqkum5wo05nvq7symix/vxs4y1hyxv6y985bdwhf7dk1i8l01dic7d219ksrw1gmsllbqz8dhnv9x6n50qprykv5tiw37gplkmsvn/languages", + "method": "GET" + }, + "response": { + "status": 200, + "body": "{\n \"C\" : 78769,\n \"Python\" : 7769\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "3c23e2fb-e95e-4233-8504-af8d58fe8b61", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.052023Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/list-languages", + "schema": { + "additionalProperties": { + "type": "integer" + }, + "description": "Language", + "title": "Language", + "type": "object" + } + } + } + }, + "insertionIndex": 536 + }, + { + "id": "750ad322-6c6e-428d-8e5b-8bc5bb42e9fa", + "name": "Update a label - default", + "request": { + "urlPath": "/repos/k7yb8swrn9l6y97zbs4ylso1nch6cty2l887m1k2h4bj9t027q2su5i7g7wjm4769cgvcrrkaf85kwd98dhw1deana8osvmpo6e0amghv99uwoi4uoo7yjims4y/vic2wapnrrgnkdwlf0b3d154tv579kkadlyz2vtrwdac7rr64ob2h80in8iiqw2njcevxq4c7zem7l90s97nfv77k8jz3ogc5kjy0y1r8/labels/Cedrick+Weimann", + "method": "PATCH" + }, + "response": { + "status": 200, + "body": "{\n \"color\" : \"b01f26\",\n \"default\" : true,\n \"description\" : \"Small bug fix required\",\n \"id\" : 208045946,\n \"name\" : \"bug :bug:\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/labels/bug%20:bug:\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "750ad322-6c6e-428d-8e5b-8bc5bb42e9fa", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.051965Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "issues/update-label", + "schema": { + "description": "Color-coded labels help you categorize and filter your issues (just like labels in Gmail).", + "properties": { + "color": { + "description": "6-character hex code, without the leading #, identifying the color", + "example": "FFFFFF", + "type": "string" + }, + "default": { + "example": true, + "type": "boolean" + }, + "description": { + "example": "Something isn't working", + "nullable": true, + "type": "string" + }, + "id": { + "example": 208045946, + "format": "int64", + "type": "integer" + }, + "name": { + "description": "The name of the label.", + "example": "bug", + "type": "string" + }, + "node_id": { + "example": "MDU6TGFiZWwyMDgwNDU5NDY=", + "type": "string" + }, + "url": { + "description": "URL for the label", + "example": "https://api.github.com/repositories/42/labels/bug", + "format": "uri", + "type": "string" + } + }, + "required": ["id", "node_id", "url", "name", "description", "color", "default"], + "title": "Label", + "type": "object" + } + } + } + }, + "insertionIndex": 537 + }, + { + "id": "e4a4bcc8-af74-438c-b350-d9fb11ff7ad5", + "name": "Get a label", + "request": { + "urlPath": "/repos/m8zkulp4xer5alt8q15jvk24xfknpxwo9a796b3rd3rhd4kxfc2s04dh/rur60uy7sv3i6sa27mgc5oo/labels/Romeo+Christiansen", + "method": "GET" + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/709373\",\n \"message\" : \"Ipsa explicabo aut voluptas quis aut exercitationem. Pariatur consectetur et quod recusandae adipisci. Velit fuga est dolorem voluptatem ex.\",\n \"url\" : \"https://web.example.mocklab.io/190800\",\n \"status\" : \"x2jh7i2nq583ef9vbli0evvkmyu0zmq59odjny61rsb8j7kn61y8hkbtszxzxvao00ccug6pw903u2z2a419zrk5k19w7olgqkguxnuv58n1dnv9ve7eharjvaxpiufybwhi6bikxwhjpezodnkrihkk3rpv98\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "e4a4bcc8-af74-438c-b350-d9fb11ff7ad5", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.051837Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "issues/get-label", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 538 + }, + { + "id": "3faed8d3-7822-4cf3-ad23-6f8b58613546", + "name": "Get a label - default", + "request": { + "urlPath": "/repos/h4pmqkbf6fdxg4pes2tlimnnvdfq3bqo/0x6quj40f42jo2oegzcm2owk1l7todxfq04nzewd623ykx731qg0bgxw2vvfg7hkuasusozjkqwxk8dxiwdt5xqhi05verux2068oxc/labels/Pamela+Zulauf", + "method": "GET" + }, + "response": { + "status": 200, + "body": "{\n \"color\" : \"f29513\",\n \"default\" : true,\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"name\" : \"bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/labels/bug\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "3faed8d3-7822-4cf3-ad23-6f8b58613546", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.051576Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "issues/get-label", + "schema": { + "description": "Color-coded labels help you categorize and filter your issues (just like labels in Gmail).", + "properties": { + "color": { + "description": "6-character hex code, without the leading #, identifying the color", + "example": "FFFFFF", + "type": "string" + }, + "default": { + "example": true, + "type": "boolean" + }, + "description": { + "example": "Something isn't working", + "nullable": true, + "type": "string" + }, + "id": { + "example": 208045946, + "format": "int64", + "type": "integer" + }, + "name": { + "description": "The name of the label.", + "example": "bug", + "type": "string" + }, + "node_id": { + "example": "MDU6TGFiZWwyMDgwNDU5NDY=", + "type": "string" + }, + "url": { + "description": "URL for the label", + "example": "https://api.github.com/repositories/42/labels/bug", + "format": "uri", + "type": "string" + } + }, + "required": ["id", "node_id", "url", "name", "description", "color", "default"], + "title": "Label", + "type": "object" + } + } + } + }, + "insertionIndex": 539 + }, + { + "id": "fb76e8f5-eb4a-49e1-b6c1-b3a040ab3022", + "name": "Delete a label - 204", + "request": { + "urlPath": "/repos/l04h4ld5sylm41a5jlm3po2673t0bpx3esgi912bk0h6rtcdv69unh0zk/ykufmxplxoay1vb99exjpzmlyvwdtli8voe8m5599vkutmw9sgkhdz2xi9ch8hp5a52uhp2ue8ik8ky8ek8e35hpehd3tgto8ijjqvd9x1ktgvjbunt6dac81l8lwccnzrw8v90r9c1lfsm85cne/labels/Santo+Powlowski", + "method": "DELETE" + }, + "response": { + "status": 204 + }, + "uuid": "fb76e8f5-eb4a-49e1-b6c1-b3a040ab3022", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.051429Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "issues/delete-label" + } + } + }, + "insertionIndex": 540 + }, + { + "id": "ddfd0eb5-8292-48c4-818d-b84fa40faae8", + "name": "Create a label", + "request": { + "urlPath": "/repos/rnhvg5yusc71ujae0bsiohhxh/d7tgz97ty8nrcb05hipyigt9t03n160pgm3j82hu4lgh6d3362n5tlj7jsl6a8lwld9gxh9hwg4enovsml9c4ypttig5da3ol0tik41bgz0lhdepwtbytd13yk15ubw6ujndncnqrk7nm/labels", + "method": "POST" + }, + "response": { + "status": 422, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/090434\",\n \"message\" : \"Sequi est harum. Dolore quas enim et et quis eligendi hic. Corporis molestias enim laborum. Ab mollitia minus quam quasi. Similique reprehenderit illum architecto voluptatum quia et.\",\n \"errors\" : [ {\n \"code\" : \"6rmwy85ybhfbznqcuukdramnzdpku6iefg3pmn450txnq5lo2zotm06ednbudtj0rm\",\n \"field\" : \"8fx4enub55tw9dqrvn2yts84ksu518b949o2fyte0g7eki4oj9rb06dkp45bflpki4h8w1axlkzljx7bz2p6og5rrawftbqjivsey624hq7czrgu31uojcbvu1xztlvh7z5g7vzb4q14\",\n \"resource\" : \"l861mrr97tj8h91cgo9mzavkkapp06z375uvtqehqt5jrmmbqu6pjm3gtfjuq9guysqpf0p5eh9iarwjvt36sp9c20pcumbkiw0xpf378qfkkm6sbu6zvxga624wkzxsb7is2ikqsc3\",\n \"index\" : 8266079119460288426,\n \"message\" : \"Voluptas distinctio et aut consectetur odio veniam natus. Nulla occaecati laudantium. Nobis sunt sunt.\",\n \"value\" : { }\n }, {\n \"code\" : \"ksdi7v8kj1kpv9xbhzb6zxuyz72zy4yzw3ui1t94mym7morbmxx9jer4b6935majvt11dnxlz6w5smuaq4bkge3dvlzpwrssiswxstpn3xm35t9uryj3lw7xv6y3pt\",\n \"field\" : \"c7mertyrtechho4a9xi4peexss10fnjhf3ltu8fb6nmb9ylmkaftf7nizis8gwiajhdjv1xrr6fa0k92dmcyt9nl8gc6nqau298wgo8qdgclzot6cj2kc3makndq3a101b4\",\n \"resource\" : \"p42ler8oampp7u2335i2x5rv0lswe7qkgcltxt8zy3ms25njid5j2\",\n \"index\" : 946580289783454050,\n \"message\" : \"Illum autem consequatur numquam dolor. Consequuntur suscipit commodi. Maxime est sed neque quia totam aut quos. Similique sed pariatur. Nulla voluptatem quaerat.\",\n \"value\" : { }\n } ]\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "ddfd0eb5-8292-48c4-818d-b84fa40faae8", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.051334Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "issues/create-label", + "schema": { + "description": "Validation Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "errors": { + "items": { + "properties": { + "code": { + "type": "string" + }, + "field": { + "type": "string" + }, + "index": { + "type": "integer" + }, + "message": { + "type": "string" + }, + "resource": { + "type": "string" + }, + "value": { + "oneOf": [ + { + "nullable": true, + "type": "string" + }, + { + "nullable": true, + "type": "integer" + }, + { + "items": { + "type": "string" + }, + "nullable": true, + "type": "array" + } + ] + } + }, + "required": ["code"], + "type": "object" + }, + "type": "array" + }, + "message": { + "type": "string" + } + }, + "required": ["message", "documentation_url"], + "title": "Validation Error", + "type": "object" + } + } + } + }, + "insertionIndex": 541 + }, + { + "id": "a1b8228e-0e9d-4590-ba95-112ff75df37f", + "name": "Create a label", + "request": { + "urlPath": "/repos/za999kzy0j/3gfff36rixf5wf18cibebunhq59ikmqeh9q5226hzf097qczkkzkekj2yk7cn6f252vwaw0aymr2w5zugpfw0qxom9ulv05wu38qwg1hsu3fhuisr7c9r0r2ucjktu1fc7qs8ia3gmy2gvht5vmdpbn8ynp2imc473bbe6ib2w4x5jneik0f3qvbncg0p3/labels", + "method": "POST" + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/468071\",\n \"message\" : \"Eos quos doloribus magni. Enim qui quo sed eveniet sapiente. Sed sit quia et illum. Exercitationem at vitae a. Neque iure deserunt et repellendus repudiandae.\",\n \"url\" : \"https://web.example.mocklab.io/730982\",\n \"status\" : \"nw72jcmq28rpgl78raynxufe6nso0ghu3o2leaeaw6y3om73yytgtm9529t6rf0oh1p6hhtqhaud85xlrh9ygmu19s9qdgzov7bx0zaoswmj5bbwscn0sl0y1rjf29c6wjx77uutmhjwudkv5uuvq\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "a1b8228e-0e9d-4590-ba95-112ff75df37f", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.050944Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "issues/create-label", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 542 + }, + { + "id": "9280c2db-aa5e-48d4-a14e-d8f5dd258fc0", + "name": "Create a label - default", + "request": { + "urlPath": "/repos/6776svf99pda0g38aejpzw3ccouqg80riow11exgv3ydz3ys1mo496g9pghl764peved071fbz4x2ptdsc4dri60g4337cunzjoouplsokrql4z846ywhi92ns1l1bm583bg3s8deso4/9jif6if6aa79uuesmuax5k/labels", + "method": "POST" + }, + "response": { + "status": 201, + "body": "{\n \"color\" : \"f29513\",\n \"default\" : true,\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"name\" : \"bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/labels/bug\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "9280c2db-aa5e-48d4-a14e-d8f5dd258fc0", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.050715Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "issues/create-label", + "schema": { + "description": "Color-coded labels help you categorize and filter your issues (just like labels in Gmail).", + "properties": { + "color": { + "description": "6-character hex code, without the leading #, identifying the color", + "example": "FFFFFF", + "type": "string" + }, + "default": { + "example": true, + "type": "boolean" + }, + "description": { + "example": "Something isn't working", + "nullable": true, + "type": "string" + }, + "id": { + "example": 208045946, + "format": "int64", + "type": "integer" + }, + "name": { + "description": "The name of the label.", + "example": "bug", + "type": "string" + }, + "node_id": { + "example": "MDU6TGFiZWwyMDgwNDU5NDY=", + "type": "string" + }, + "url": { + "description": "URL for the label", + "example": "https://api.github.com/repositories/42/labels/bug", + "format": "uri", + "type": "string" + } + }, + "required": ["id", "node_id", "url", "name", "description", "color", "default"], + "title": "Label", + "type": "object" + } + } + } + }, + "insertionIndex": 543 + }, + { + "id": "50e8450d-f7a8-4a45-bd84-bff9904215d9", + "name": "List labels for a repository", + "request": { + "urlPath": "/repos/fo3m2n988m03a/cmnmpev55t4p6i343rxfyzpjyuwwdxei6t6vno2tyvugiv4p9vlek8zf7keizu83a2la7pot73ajo9dr8z4niuuw5ssr6x9rp61i71m98nr3c62i4cy6uhychtmzk5flu024xzi94rmv9jnqosni54oeqwbduzcfu1jfztyyvhf490trklqbk1mu1zglssr/labels", + "method": "GET" + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/995999\",\n \"message\" : \"Quidem cumque natus. Veritatis aut dicta rerum facilis autem nesciunt sequi. Alias ex similique reprehenderit voluptates est. Et debitis omnis molestiae dignissimos delectus doloremque id. Beatae ut q\",\n \"url\" : \"https://web.example.mocklab.io/283318\",\n \"status\" : \"wqguufnyve33ulcl87nt4zj1pf2sbhtwuhg6k32f591dqpvhbxam2wl3escbwaciyylp6pnbi2ozmcolxytspcv2viw08kdensdzo9i241nvrap1zijezkxq8cj2v6zce4\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "50e8450d-f7a8-4a45-bd84-bff9904215d9", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.050602Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "issues/list-labels-for-repo", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 544 + }, + { + "id": "b2a4d3e6-76fd-4b01-9af8-532bceddf995", + "name": "List labels for a repository - default", + "request": { + "urlPath": "/repos/2rvrnu8qpbq37lidu1mrwwkxzome91kyvk1s209naxc32a5verplwkb7a1qd9ep47bruj2aj6xnoho06ezb3xlzurxk1g20gh2h8k3vm1y2fsmlpr2qcm2aiqktogzrb5lygfv45v/ud7td0chli1fvagrxu0cykxz10qk0ba4gc9o9/labels", + "method": "GET" + }, + "response": { + "status": 200, + "body": "[ {\n \"color\" : \"f29513\",\n \"default\" : true,\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"name\" : \"bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/labels/bug\"\n}, {\n \"color\" : \"a2eeef\",\n \"default\" : false,\n \"description\" : \"New feature or request\",\n \"id\" : 208045947,\n \"name\" : \"enhancement\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDc=\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/labels/enhancement\"\n} ]", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "b2a4d3e6-76fd-4b01-9af8-532bceddf995", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.05037Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "issues/list-labels-for-repo", + "schema": { + "items": { + "$ref": "#/components/schemas/label" + }, + "type": "array" + } + } + } + }, + "insertionIndex": 545 + }, + { + "id": "fa2b46ba-7fbb-482f-bdc2-e3c9594c5bd0", + "name": "Get a deploy key", + "request": { + "urlPath": "/repos/muv9ffmrkag9dkxcqm8wy/j3rdnkd1ti70yvvsm4/keys/5638675112298173555", + "method": "GET" + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/308413\",\n \"message\" : \"In quasi ipsam. Magnam eum totam error et similique. Eos ab excepturi beatae natus. Facilis temporibus sed.\",\n \"url\" : \"https://web.example.mocklab.io/644022\",\n \"status\" : \"nt6pmfs8lxrmnui2tb6u0159w7cv7g4dyun9catd8e7s4hc7cutzqqzn1v9h8c51vft9pj297fv36ukvkxby8b8xbalivodd7jj1edwq13oz0ae2dea7oswzr6tttxlr6adcex2l3gve31h8z1799oqsgd3udexag0iupj1e9\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "fa2b46ba-7fbb-482f-bdc2-e3c9594c5bd0", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.050316Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/get-deploy-key", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 546 + }, + { + "id": "d51dbeae-4209-495b-99f4-8e17674f9e41", + "name": "Get a deploy key - default", + "request": { + "urlPath": "/repos/5v1dkgps70udfecktgq9fb1ym4siewj4aiy43ka7dfze9l50iq1mvzyw2/e02r434s96sza4uutyuoa0uv2z8p0q8sko4s4qw1vycrxltbqnznsxmd07xgh8cw6/keys/8291006147775438323", + "method": "GET" + }, + "response": { + "status": 200, + "body": "{\n \"created_at\" : \"2014-12-10T15:53:42Z\",\n \"id\" : 1,\n \"key\" : \"ssh-rsa AAA...\",\n \"read_only\" : true,\n \"title\" : \"octocat@octomac\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/keys/1\",\n \"verified\" : true\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "d51dbeae-4209-495b-99f4-8e17674f9e41", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.050093Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/get-deploy-key", + "schema": { + "description": "An SSH key granting access to a single repository.", + "properties": { + "created_at": { + "type": "string" + }, + "id": { + "type": "integer" + }, + "key": { + "type": "string" + }, + "read_only": { + "type": "boolean" + }, + "title": { + "type": "string" + }, + "url": { + "type": "string" + }, + "verified": { + "type": "boolean" + } + }, + "required": ["id", "key", "url", "title", "verified", "created_at", "read_only"], + "title": "Deploy Key", + "type": "object" + } + } + } + }, + "insertionIndex": 547 + }, + { + "id": "a9ceea79-7a9e-4ec1-8fb8-7e2028931879", + "name": "Delete a deploy key - 204", + "request": { + "urlPath": "/repos/kzl6rnavu0oxuwccqvcwsfweretyol72xn6wiisrfkak730s4xrnbm0n777n2xh399uttvfraxxr0s4o9jjr0poy32r5rl4n5k7w0to58hkim1ccigx36zcpoomhjv9gfwj6jdsb1n8sd0u8ukgn6egudrkmu9msm126qfmfbrdhli74dwpwhc4seqplorxxzg/9ac9ywvbi6itleb4qyslsvzty1jdj39ns6f6opdsbhqpcei34riz3uu3akzics19nmuie0hocpff0m8u4bgrdeoatr36k8h6pbvblyir6rjeiqs9elcyebpu3kbyslik83ht0v1l55kbslnkao4b4warwhbcbjg868j/keys/4987457199935067950", + "method": "DELETE" + }, + "response": { + "status": 204 + }, + "uuid": "a9ceea79-7a9e-4ec1-8fb8-7e2028931879", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.050004Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/delete-deploy-key" + } + } + }, + "insertionIndex": 548 + }, + { + "id": "c37f37fc-6b15-4c68-9697-f486912cce63", + "name": "Create a deploy key", + "request": { + "urlPath": "/repos/h68ugcty6xlohrk6wqmulmczewdvn3ul16ukh38bfvpxe1hhyuiaxnx8ahiq81spwtu737wab5dw83p2fg3h30e9szaldga56ccjnyy5sxgsxkz6i/z7z9ttaz8ia9asjcma7h3xwyyt4gf8iyrf5tghscyxgbnwhlgsbfig6cf1uqkqszocuags/keys", + "method": "POST" + }, + "response": { + "status": 422, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/360632\",\n \"message\" : \"Laboriosam tempora et odit minima sed in. Ipsa qui deleniti. Vitae dolorum ut velit molestias.\",\n \"errors\" : [ {\n \"code\" : \"d5x8efkadc9xtfrps016gqirkpd80mad5hwngkco52zhoj3kfg727rhcegtx22ox5xvtli6iimt069jgwa2s2rb3atro1nb7kdcindi87zk0mo6yydny01iktu7loq28uu57eggx0trk117cdrxm\",\n \"field\" : \"kt4r3s82i0x9mrzhgjjq9rlds0abcew243s7qp3vcktbiuy806idjkp4xu0r6hb3e4g8cv5t54e7bu6thmom4392iv5wr0oxutsvo1t0s60y1n9sp5on30ykxu65o53fwm163fg5bw4y5isyi5yik485wkp2c23qkelrvp6ocr0kaq\",\n \"resource\" : \"yq2sy9g8x51cm16v792jgjlxljhsg6598w3cu8okyt9c2m5uzomi1c24z84g72fz4wnv9cmn5o29evzsjuf28pfcsy92e0ivdhb4gyzxnpc0o64ffjn25tw1z7g4b6itrw640ad2rp7juo0t54nn7qdoqd3pzp4d7chi78i2xq261d\",\n \"index\" : 1803604540917704758,\n \"message\" : \"Vero est vitae aut sunt et occaecati. Sit praesentium aut totam recusandae fugit ipsum. Nobis deleniti sunt voluptas temporibus asperiores dolor. Magnam perferendis id. Ipsum qui aut in voluptatem dig\",\n \"value\" : { }\n }, {\n \"code\" : \"g41yema8cxn4vg8j91x\",\n \"field\" : \"t3is8jy48uwgew4gm0ezn6q9546m6\",\n \"resource\" : \"iwc0xdwv2h2h5fhhw4yn2j8qd6lndxmf6tmreig5uaq0n1qpk5s4y2qyzol849jacn7fyspt7cr51c5kfc8tbsb248ifq1xqxsmt1ijnqsvpqi3ioxsd1s8vd46ytlwz7vgt3unr6wi0kpmjcdw1z8n7marli5axtd\",\n \"index\" : 5421270084005739165,\n \"message\" : \"Cumque soluta consequatur molestiae at est aliquid. Perspiciatis eligendi iusto. Et eaque ab reiciendis doloribus et. Aut vel commodi sint nisi iusto est.\",\n \"value\" : { }\n } ]\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "c37f37fc-6b15-4c68-9697-f486912cce63", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.04995Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/create-deploy-key", + "schema": { + "description": "Validation Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "errors": { + "items": { + "properties": { + "code": { + "type": "string" + }, + "field": { + "type": "string" + }, + "index": { + "type": "integer" + }, + "message": { + "type": "string" + }, + "resource": { + "type": "string" + }, + "value": { + "oneOf": [ + { + "nullable": true, + "type": "string" + }, + { + "nullable": true, + "type": "integer" + }, + { + "items": { + "type": "string" + }, + "nullable": true, + "type": "array" + } + ] + } + }, + "required": ["code"], + "type": "object" + }, + "type": "array" + }, + "message": { + "type": "string" + } + }, + "required": ["message", "documentation_url"], + "title": "Validation Error", + "type": "object" + } + } + } + }, + "insertionIndex": 549 + }, + { + "id": "7634ea37-086b-40cc-b89a-56d2faa819a5", + "name": "Create a deploy key - default", + "request": { + "urlPath": "/repos/x38gnzk8xbv54j0wvjj8dz31z7xe1km/kghsb6xgz7kge6tx8z6bwk0la4gu5ln83q2w7kfgnl11ez6yurcqz69inm0urih2n7177f4o5z4afd7bty82o2rx06rl022fnz08i9sv5ex3kd40whgbaofdctrpahti9811w8odf2o0h/keys", + "method": "POST" + }, + "response": { + "status": 201, + "body": "{\n \"created_at\" : \"2014-12-10T15:53:42Z\",\n \"id\" : 1,\n \"key\" : \"ssh-rsa AAA...\",\n \"read_only\" : true,\n \"title\" : \"octocat@octomac\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/keys/1\",\n \"verified\" : true\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "7634ea37-086b-40cc-b89a-56d2faa819a5", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.049566Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/create-deploy-key", + "schema": { + "description": "An SSH key granting access to a single repository.", + "properties": { + "created_at": { + "type": "string" + }, + "id": { + "type": "integer" + }, + "key": { + "type": "string" + }, + "read_only": { + "type": "boolean" + }, + "title": { + "type": "string" + }, + "url": { + "type": "string" + }, + "verified": { + "type": "boolean" + } + }, + "required": ["id", "key", "url", "title", "verified", "created_at", "read_only"], + "title": "Deploy Key", + "type": "object" + } + } + } + }, + "insertionIndex": 550 + }, + { + "id": "91933246-7bc0-498b-8f7b-6503c1797ef5", + "name": "List deploy keys - default", + "request": { + "urlPath": "/repos/t8dm0pcrikfa9h9ec9opzgc4vvnicwf49dsjepy52zixclxr54ux8f56cey0nmbfouy4f4j3ue/01x6zsb51cgkrzxlf54ghegvmcffdark2rlrxvfepapgu5hoglzykbkp6ixvxqomc2arq94vtsk2d8g4nzqypubtkuycd06neg45/keys", + "method": "GET" + }, + "response": { + "status": 200, + "body": "[ {\n \"created_at\" : \"2014-12-10T15:53:42Z\",\n \"id\" : 1,\n \"key\" : \"ssh-rsa AAA...\",\n \"read_only\" : true,\n \"title\" : \"octocat@octomac\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/keys/1\",\n \"verified\" : true\n} ]", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "91933246-7bc0-498b-8f7b-6503c1797ef5", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.04947Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/list-deploy-keys", + "schema": { + "items": { + "$ref": "#/components/schemas/deploy-key" + }, + "type": "array" + } + } + } + }, + "insertionIndex": 551 + }, + { + "id": "17127ef5-3f54-47b7-803e-91191ae55312", + "name": "List timeline events for an issue", + "request": { + "urlPath": "/repos/s2wxqbrykahjc5q82fqsvvaw9t6eild/uii3tctgr1rt2ij2jawjzpqrsninxm9/issues/1457278924696522303/timeline", + "method": "GET" + }, + "response": { + "status": 410, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/094587\",\n \"message\" : \"Rerum sed tempora. Est fugit a debitis non ea. Sed itaque molestias.\",\n \"url\" : \"https://web.example.mocklab.io/216873\",\n \"status\" : \"gvc1v353dvt4jksnls77n01184o2hr4h7nhqba84jx791q28fj3cea3worbbmnd6czelkldni7nitczb812qg5n7dyotzs5gqkjz0iuf0fsrl6sc0az1hl2l149hl8lup1p34agwwcazagwcn0m8iisqle2fk514pi2myduq2b9biym9x6b4i046mbx\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "17127ef5-3f54-47b7-803e-91191ae55312", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.049418Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "issues/list-events-for-timeline", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 552 + }, + { + "id": "b699b5b6-b220-4685-9dad-b079f7d3e334", + "name": "List timeline events for an issue", + "request": { + "urlPath": "/repos/60ovrrcqqryofiatmf985bvar81xvojk7aaaw1sgbyth7dmh6bpm9gnjn4aiis/kb635xrp189cy33vl3lqnvz6ip2bgscm520vbg2ah4d98eu22933365lv7ydlezxmnpai01fkdi09l6x2slyvl98470p4uc1ltpe7vy1xaabxbect8jbulxvqzvobeszq2vx9dbngk170s2mn3/issues/1128656876278746236/timeline", + "method": "GET" + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/858868\",\n \"message\" : \"Ut est veniam at odit earum illum sequi. Quaerat asperiores tempore ipsum officia ut est nisi. Consequatur et neque placeat similique maxime cumque. At mollitia assumenda quia aut ipsa.\",\n \"url\" : \"https://web.example.mocklab.io/973895\",\n \"status\" : \"uzttyw2oehk9qkwoqoeswu4twrtz1846kvcfhzszq74ndo\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "b699b5b6-b220-4685-9dad-b079f7d3e334", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.049211Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "issues/list-events-for-timeline", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 553 + }, + { + "id": "52ec7e07-8371-4322-a4d5-58c6c30e1275", + "name": "List timeline events for an issue", + "request": { + "urlPath": "/repos/bdi5svdj4pnhrdi58f262wrk0fv5ignq4biiv8wv89sj6vi1434kol3tnkzu4qbz8986832igj51h5hnxpf3yv8tjrk14xls3scg5gmnzlg9nf3zzt5xtlgfyqitzl1kgiy9k5coh4t1u3/ex37etbmu3dpt8trcg309v1750vgka9191cn69zdhzu9w1ghfe5yw7i3p9dd6dyiifdhw33djtex6jwwfp4xay1n/issues/4787237648209103561/timeline", + "method": "GET" + }, + "response": { + "status": 200, + "body": "[ {\n \"actor\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"John Pagac\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"4kwoypnu4lcmv08i9op2rbvkqk8g0jcyv9qwra7xue1k283nym8slzhlk2l8jzs608c4368py4mvp0dyvt0rdkbhanb7s9p8h385jhn1013f5x5qacq92isvdx0o3h6jf8rxa8kur11gpi1rcs4dwu1f\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"commit_url\" : \"https://web.example.mocklab.io/019568\",\n \"milestone\" : {\n \"title\" : \"Maxime et ipsum.\"\n },\n \"performed_via_github_app\" : {\n \"owner\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Carrol Grady\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"7m3d0wzxkp8hmjti7w6s7fh2jcaam8vbuadpkkxgotfho1iaezxp5r2bhckj053ff8lkgxv1udilnjda2awuxxjt5t9q5lmryi0hytjp459cjhlp9f7ktsaoa0yr7fd6na94c83wdhjrmk48psb2rp4gc65sjwg3a6ciff05how46717t3b\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"installations_count\" : 5,\n \"created_at\" : \"2017-07-08T16:18:44-04:00\",\n \"description\" : \"The description of the app.\",\n \"client_id\" : \"\\\"Iv1.25b5d1e65ffc4022\\\"\",\n \"external_url\" : \"https://example.com\",\n \"updated_at\" : \"2017-07-08T16:18:44-04:00\",\n \"permissions\" : {\n \"deployments\" : \"write\",\n \"issues\" : \"read\"\n },\n \"html_url\" : \"https://github.com/apps/super-ci\",\n \"name\" : \"Probot Owners\",\n \"pem\" : \"\\\"-----BEGIN RSA PRIVATE KEY-----\\\\nMIIEogIBAAKCAQEArYxrNYD/iT5CZVpRJu4rBKmmze3PVmT/gCo2ATUvDvZTPTey\\\\nxcGJ3vvrJXazKk06pN05TN29o98jrYz4cengG3YGsXPNEpKsIrEl8NhbnxapEnM9\\\\nJCMRe0P5JcPsfZlX6hmiT7136GRWiGOUba2X9+HKh8QJVLG5rM007TBER9/z9mWm\\\\nrJuNh+m5l320oBQY/Qq3A7wzdEfZw8qm/mIN0FCeoXH1L6B8xXWaAYBwhTEh6SSn\\\\nZHlO1Xu1JWDmAvBCi0RO5aRSKM8q9QEkvvHP4yweAtK3N8+aAbZ7ovaDhyGz8r6r\\\\nzhU1b8Uo0Z2ysf503WqzQgIajr7Fry7/kUwpgQIDAQABAoIBADwJp80Ko1xHPZDy\\\\nfcCKBDfIuPvkmSW6KumbsLMaQv1aGdHDwwTGv3t0ixSay8CGlxMRtRDyZPib6SvQ\\\\n6OH/lpfpbMdW2ErkksgtoIKBVrDilfrcAvrNZu7NxRNbhCSvN8q0s4ICecjbbVQh\\\\nnueSdlA6vGXbW58BHMq68uRbHkP+k+mM9U0mDJ1HMch67wlg5GbayVRt63H7R2+r\\\\nVxcna7B80J/lCEjIYZznawgiTvp3MSanTglqAYi+m1EcSsP14bJIB9vgaxS79kTu\\\\noiSo93leJbBvuGo8QEiUqTwMw4tDksmkLsoqNKQ1q9P7LZ9DGcujtPy4EZsamSJT\\\\ny8OJt0ECgYEA2lxOxJsQk2kI325JgKFjo92mQeUObIvPfSNWUIZQDTjniOI6Gv63\\\\nGLWVFrZcvQBWjMEQraJA9xjPbblV8PtfO87MiJGLWCHFxmPz2dzoedN+2Coxom8m\\\\nV95CLz8QUShuao6u/RYcvUaZEoYs5bHcTmy5sBK80JyEmafJPtCQVxMCgYEAy3ar\\\\nZr3yv4xRPEPMat4rseswmuMooSaK3SKub19WFI5IAtB/e7qR1Rj9JhOGcZz+OQrl\\\\nT78O2OFYlgOIkJPvRMrPpK5V9lslc7tz1FSh3BZMRGq5jSyD7ETSOQ0c8T2O/s7v\\\\nbeEPbVbDe4mwvM24XByH0GnWveVxaDl51ABD65sCgYB3ZAspUkOA5egVCh8kNpnd\\\\nSd6SnuQBE3ySRlT2WEnCwP9Ph6oPgn+oAfiPX4xbRqkL8q/k0BdHQ4h+zNwhk7+h\\\\nWtPYRAP1Xxnc/F+jGjb+DVaIaKGU18MWPg7f+FI6nampl3Q0KvfxwX0GdNhtio8T\\\\nTj1E+SnFwh56SRQuxSh2gwKBgHKjlIO5NtNSflsUYFM+hyQiPiqnHzddfhSG+/3o\\\\nm5nNaSmczJesUYreH5San7/YEy2UxAugvP7aSY2MxB+iGsiJ9WD2kZzTUlDZJ7RV\\\\nUzWsoqBR+eZfVJ2FUWWvy8TpSG6trh4dFxImNtKejCR1TREpSiTV3Zb1dmahK9GV\\\\nrK9NAoGAbBxRLoC01xfxCTgt5BDiBcFVh4fp5yYKwavJPLzHSpuDOrrI9jDn1oKN\\\\nonq5sDU1i391zfQvdrbX4Ova48BN+B7p63FocP/MK5tyyBoT8zQEk2+vWDOw7H/Z\\\\nu5dTCPxTIsoIwUw1I+7yIxqJzLPFgR2gVBwY1ra/8iAqCj+zeBw=\\\\n-----END RSA PRIVATE KEY-----\\\\n\\\"\",\n \"webhook_secret\" : \"\\\"6fba8f2fc8a7e8f2cca5577eddd82ca7586b3b6b\\\"\",\n \"client_secret\" : \"\\\"1d4b2097ac622ba702d19de498f005747a8b21d3\\\"\",\n \"id\" : 37,\n \"events\" : [ \"label\", \"deployment\" ],\n \"slug\" : \"probot-owners\",\n \"node_id\" : \"MDExOkludGVncmF0aW9uMQ==\"\n },\n \"created_at\" : \"wmuhnfdhwmbqaor1mozdzycr53mtqtv17l7x3hd9f1dp6d55ghrzjhubt0lvdl5e4ri843mbpwivwkmlpufe1e7cay5jzjcpnp4gp4someyxc24sv4j5al\",\n \"id\" : 4126776841372648143,\n \"event\" : \"zwqj4kflh3u5c8yqqmxh4ag8n1e9h7eu6hiiqy05d4ci9jwu4f9bvjdbkmjy99b5czj8km7k0zfjattv1ryhd7jjyw6\",\n \"commit_id\" : \"99ia\",\n \"url\" : \"https://web.example.mocklab.io/832373\",\n \"node_id\" : \"3qxl\"\n} ]", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "52ec7e07-8371-4322-a4d5-58c6c30e1275", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.048991Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "issues/list-events-for-timeline", + "schema": { + "items": { + "$ref": "#/components/schemas/timeline-issue-events" + }, + "type": "array" + } + } + } + }, + "insertionIndex": 554 + }, + { + "id": "be59bf7c-99c8-4dbd-ab43-f48cef14b67b", + "name": "Delete an issue reaction - 204", + "request": { + "urlPath": "/repos/o2tql8htnlt87lk3udi0t5vdeoacx07vi7x7f7rv1rxl57yot3261xj2kjt2sovfjac2jlvfwlzpd6wce5rv16kmx4u9visg48s78m9l8yu0t45/zdtb6zmljmwkmy5ell60vexfv3h7mv431b47w5gqhjvk/issues/6379519448528487155/reactions/4788720604409530235", + "method": "DELETE" + }, + "response": { + "status": 204 + }, + "uuid": "be59bf7c-99c8-4dbd-ab43-f48cef14b67b", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.048312Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "reactions/delete-for-issue" + } + } + }, + "insertionIndex": 555 + }, + { + "id": "9c6b0c02-55db-4998-859b-e97cdf4e1311", + "name": "Create reaction for an issue", + "request": { + "urlPath": "/repos/9seiwix5yczpc4wvg3d0havhy8h2vmsjzpp7gkaiitvfz6p339ag0fb6x26b9siob4975sy46muocxxh6vahfkzli2y37o2zziyrfb5ugum3bzubu6totdeec7ztoaph86ci5g38nxgdsxcqy1m9i4x6nqfxitlvkhadplhhcczdrzdjb02z1zh7s/8jcv0m477re26a5uvckyp4rcgfg8e09h86blc06336kcc8on0sza9stvtx7blatjzzv8p7thrc84frh2he9efzf4p483dzt7d9cddmezcxl4jv9659l937fbvf6zhj9821cs/issues/2706214295123712794/reactions", + "method": "POST" + }, + "response": { + "status": 422, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/929832\",\n \"message\" : \"Sit a omnis. Eligendi doloremque nam sint repellendus qui. Voluptatem beatae dolor ea.\",\n \"errors\" : [ {\n \"code\" : \"qunhk8rkmc9ziq9xy30501qbabd2atfho8z71dzurtydb5a6zzho6188n11vi2qg5z3stmkc999emdwd2q172gtgibotofkv60k39krn3fqnk60xty7isotj0y7w0ezpdu5v95uea002clqmy8s1bv1ssmxxwtxj9iauxe6ec4\",\n \"field\" : \"mgkeljnm5p8627one99svez34tq1v81efmybo4ao118mcai15p5sg6zm8sih3i3eotwjdijttih7lvscsr615bu7uh8nb79543tv7paqaoek9l9w\",\n \"resource\" : \"wsszfljvpz8rauhhbnavzwk8clkx6xy14kajgcefvwkce4sxhxxao48ad2xz302610c6m00odi4txpykbs6uhdl8bq40hootboo1\",\n \"index\" : 6399094350271339205,\n \"message\" : \"Aspernatur voluptatem quo omnis omnis sint animi et. Dolorem exercitationem dolores nihil quaerat. Recusandae quo ex adipisci consequuntur consequatur. Magnam repellendus omnis.\",\n \"value\" : { }\n }, {\n \"code\" : \"9bxdvhejn6d6a1czoo5e7vpyaz6ftas631lcxuvryj7i7seky44d8fu13pjq2jeligzonedrdv\",\n \"field\" : \"x4guf\",\n \"resource\" : \"0dhrzbz54z0plwza1qy76wkb4ghwuz28h34ypvoygrop4i806pzekdjxjwcuksh6yporjm4zkcy3f3i7ze8ybelegevq5a20ty3y8zagrhzp6060gxpqf7steo7rsun9y8ub8ynvmcb6mgeuza5ivdvvy8gtkb66qtkriw2isvab9vpz59pm1\",\n \"index\" : 6194242073222893816,\n \"message\" : \"Reprehenderit earum autem est. Commodi porro eaque voluptate similique illum. Explicabo porro nulla atque corrupti.\",\n \"value\" : { }\n } ]\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "9c6b0c02-55db-4998-859b-e97cdf4e1311", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.048266Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "reactions/create-for-issue", + "schema": { + "description": "Validation Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "errors": { + "items": { + "properties": { + "code": { + "type": "string" + }, + "field": { + "type": "string" + }, + "index": { + "type": "integer" + }, + "message": { + "type": "string" + }, + "resource": { + "type": "string" + }, + "value": { + "oneOf": [ + { + "nullable": true, + "type": "string" + }, + { + "nullable": true, + "type": "integer" + }, + { + "items": { + "type": "string" + }, + "nullable": true, + "type": "array" + } + ] + } + }, + "required": ["code"], + "type": "object" + }, + "type": "array" + }, + "message": { + "type": "string" + } + }, + "required": ["message", "documentation_url"], + "title": "Validation Error", + "type": "object" + } + } + } + }, + "insertionIndex": 556 + }, + { + "id": "9a327983-a56b-448a-97a4-5b1936a5245f", + "name": "Create reaction for an issue", + "request": { + "urlPath": "/repos/jmiyah15mt3n4s6ap9r7q6x66qf3v8u3xm/iwga40ce99xyr3cvmff7cmvwfypb8yjkgtuyzbyxisa08mq7sqfarak8d682jlpunvt1rtk2l106w5kxd3hxp3c3e1qjxtyd65nu1yywpfrzr0dlhbxxb9jt3vbt5jjkrfqa8mej43/issues/3486059476392584965/reactions", + "method": "POST" + }, + "response": { + "status": 415, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/201287\",\n \"message\" : \"Voluptate laboriosam quisquam quas ipsum minus veniam. Deserunt et aut voluptatem nam vitae et. Incidunt aut neque voluptas voluptatem.\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "9a327983-a56b-448a-97a4-5b1936a5245f", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.047909Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "reactions/create-for-issue", + "schema": { + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": ["message", "documentation_url"], + "type": "object" + } + } + } + }, + "insertionIndex": 557 + }, + { + "id": "8ea8830d-4ba3-4d84-be54-2a0c59c1abc4", + "name": "Create reaction for an issue - default", + "request": { + "urlPath": "/repos/6dawghpbrkz8a3qivxvofcqhzsx5y461a8rpx4foxvrdgp/pcxy46vxlemsvilzl1uz5ys2odvsh2f7t5ur5lpdkde1bp36epjx5pey1lcdqkadc5xkbl0mn8wyi2tbpms8hbwysnx0vqv7lv9f96a0w6eju2pjnb1l74mwjfbcc05qxdnp4c9sigt4sftxb5tu99oyu8e2k6bhu/issues/5603604858313475209/reactions", + "method": "POST" + }, + "response": { + "status": 201, + "body": "{\n \"content\" : \"heart\",\n \"created_at\" : \"2016-05-20T20:09:31Z\",\n \"id\" : 1,\n \"node_id\" : \"MDg6UmVhY3Rpb24x\",\n \"user\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n }\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "8ea8830d-4ba3-4d84-be54-2a0c59c1abc4", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.047768Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "reactions/create-for-issue", + "schema": { + "description": "Reactions to conversations provide a way to help people express their feelings more simply and effectively.", + "properties": { + "content": { + "description": "The reaction to use", + "enum": ["+1", "-1", "laugh", "confused", "heart", "hooray", "rocket", "eyes"], + "example": "heart", + "type": "string" + }, + "created_at": { + "example": "2016-05-20T20:09:31Z", + "format": "date-time", + "type": "string" + }, + "id": { + "example": 1, + "type": "integer" + }, + "node_id": { + "example": "MDg6UmVhY3Rpb24x", + "type": "string" + }, + "user": { + "$ref": "#/components/schemas/nullable-simple-user" + } + }, + "required": ["id", "node_id", "user", "content", "created_at"], + "title": "Reaction", + "type": "object" + } + } + } + }, + "insertionIndex": 558 + }, + { + "id": "451e423e-4df3-4e96-bd75-95910a4c1b59", + "name": "Create reaction for an issue - default", + "request": { + "urlPath": "/repos/kvkoi2dtlba57y4fua9xtvq3aaco5bftexrqcqj02xflw55v7gws5ymontdpdplj/rivem3n5nkzgayz8rgsvczdsif9judo8cmdkx/issues/5180575918640970148/reactions", + "method": "POST" + }, + "response": { + "status": 200, + "body": "{\n \"content\" : \"heart\",\n \"created_at\" : \"2016-05-20T20:09:31Z\",\n \"id\" : 1,\n \"node_id\" : \"MDg6UmVhY3Rpb24x\",\n \"user\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n }\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "451e423e-4df3-4e96-bd75-95910a4c1b59", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.04769Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "reactions/create-for-issue", + "schema": { + "description": "Reactions to conversations provide a way to help people express their feelings more simply and effectively.", + "properties": { + "content": { + "description": "The reaction to use", + "enum": ["+1", "-1", "laugh", "confused", "heart", "hooray", "rocket", "eyes"], + "example": "heart", + "type": "string" + }, + "created_at": { + "example": "2016-05-20T20:09:31Z", + "format": "date-time", + "type": "string" + }, + "id": { + "example": 1, + "type": "integer" + }, + "node_id": { + "example": "MDg6UmVhY3Rpb24x", + "type": "string" + }, + "user": { + "$ref": "#/components/schemas/nullable-simple-user" + } + }, + "required": ["id", "node_id", "user", "content", "created_at"], + "title": "Reaction", + "type": "object" + } + } + } + }, + "insertionIndex": 559 + }, + { + "id": "f5f31255-3b77-48a0-9cc2-08905c5ac906", + "name": "List reactions for an issue", + "request": { + "urlPath": "/repos/0r6u5xa62gj9i2ji8xfanx9kz2r4kgv5h8ih2t0kighuooyyqx4wd8el8s6i/yyh35yioh4zs6eh4dsm56tm3oup1mx4fzyvt03k7aitfvewtdf4m6vo3cl0qwgw9fhpflirnupdikhl52375u8hopbedhr7ce0vfir7xevqyhe7g79ll4hhl1nej4varjehgatn1qigavaz5qk5ak2bpq6mvp4wozjjnlhgjhhazo/issues/1554411646878929981/reactions", + "method": "GET" + }, + "response": { + "status": 415, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/715472\",\n \"message\" : \"Quo et natus rerum aut nisi. Aliquam et omnis. Quo commodi ut.\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "f5f31255-3b77-48a0-9cc2-08905c5ac906", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.047599Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "reactions/list-for-issue", + "schema": { + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": ["message", "documentation_url"], + "type": "object" + } + } + } + }, + "insertionIndex": 560 + }, + { + "id": "866c0077-c26a-480e-a656-3a097660aeac", + "name": "List reactions for an issue", + "request": { + "urlPath": "/repos/hz1591cmjoikek8j58gmlv47ans49it6jm5eg2x5dbe435vj2ecbe1xguxjuj90/6pwyn0cmest7id6a8fovinblprnyoz6h01x98wsw6xrtpjfsa2f92qjdi275izdzg7qvkg7m9aivnzpgp4a/issues/4659238442956495811/reactions", + "method": "GET" + }, + "response": { + "status": 410, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/267815\",\n \"message\" : \"Voluptas sed excepturi quae repudiandae ea. Eaque qui beatae. Optio error animi explicabo et nam.\",\n \"url\" : \"https://web.example.mocklab.io/442724\",\n \"status\" : \"kxosbcuy5x05rhb1n26au8john0m06alqy5jr0rowd8lxsuclij0qloi2nam0r47p2fmz0ey0u0ibb5o57ahnkh20h5dyqf2gxvtnfyhf2c86z99shh86sewp9rnq\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "866c0077-c26a-480e-a656-3a097660aeac", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.047459Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "reactions/list-for-issue", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 561 + }, + { + "id": "999caab6-f4de-4081-b0b3-ad725c1806c3", + "name": "List reactions for an issue", + "request": { + "urlPath": "/repos/314t536lh5wzfsdwol36prd8pts28l19zal58r7rb93efjxiu1xwvqmde3uyf5tdpiu26pil3tsg65ukk5za6onozqzabelvslcpele/8ae1829wu9mx9vlzal0d3xv13t31jsbxk6d/issues/3999216658071842149/reactions", + "method": "GET" + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/909694\",\n \"message\" : \"Delectus nemo delectus atque debitis nam. Modi aut similique id quas non quia. Dignissimos officiis consectetur et omnis.\",\n \"url\" : \"https://web.example.mocklab.io/868156\",\n \"status\" : \"gt4olqndfpek4dv7lzaofij64wkcb5ssa3wruf4m9ev73sguaogu9ya43lk668phvex99zx2rropysxh4wgwnb8e5roc6t7jwt\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "999caab6-f4de-4081-b0b3-ad725c1806c3", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.047253Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "reactions/list-for-issue", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 562 + }, + { + "id": "00b0e933-8997-4bcb-8e99-c3fff38ed121", + "name": "List reactions for an issue - default", + "request": { + "urlPath": "/repos/gmda9i3nlpof3ucxvxs73udfxy9mn9d4meu5mneohiblz2oc5ig0lhf2h6fl2eo8hs1v4tfaqjy6gk2a9vjv7nco8key8nnov2azz1ilo3ysg9si3mansgay3nedppk9yqofe50y4j5dh0cgg0kbz5sz/ercx85mbi1ow9nnusbrlrheit989comcblvgmna220afaadmr16fjfmykwvh768b94himej5tnk3ov4qgc487ftfi7cx2vapa2jtul4po8iosd9i0uciddpxgnlolzqcdyt/issues/2759509917972350890/reactions", + "method": "GET" + }, + "response": { + "status": 200, + "body": "[ {\n \"content\" : \"heart\",\n \"created_at\" : \"2016-05-20T20:09:31Z\",\n \"id\" : 1,\n \"node_id\" : \"MDg6UmVhY3Rpb24x\",\n \"user\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n }\n} ]", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "00b0e933-8997-4bcb-8e99-c3fff38ed121", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.047043Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "reactions/list-for-issue", + "schema": { + "items": { + "$ref": "#/components/schemas/reaction" + }, + "type": "array" + } + } + } + }, + "insertionIndex": 563 + }, + { + "id": "80aea0fb-e9a1-442f-a858-b5fb540f26be", + "name": "Lock an issue (application/json)", + "request": { + "urlPath": "/repos/j32jodh7okmz4u80o4577/ezf7l/issues/2271822801967053873/lock", + "method": "PUT", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 422, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/892014\",\n \"message\" : \"Ducimus autem dolorum. Id est sit. Aut quo vitae corrupti.\",\n \"errors\" : [ {\n \"code\" : \"rdma7nftruj17t7gp92igfe4p\",\n \"field\" : \"p8okxpl1272daurary4n1yfsyvtemrj1xh242v2p74na20jojx7m\",\n \"resource\" : \"u61ztksfbw5\",\n \"index\" : 8956549310089255828,\n \"message\" : \"Totam molestiae excepturi ut rerum. Consequatur inventore facere. Ut aliquid dolores id. Eos velit error fuga non neque perspiciatis. Fugit quod a aperiam.\",\n \"value\" : { }\n }, {\n \"code\" : \"t3oc59ybmhvcx9ke9vp3zn0n783h9wma6n0daic9fgzazmtaip6t70cl2yr95p8kslfpmgkxxe446qmjjz80h5s9ys6i8skk4bufnw1cj\",\n \"field\" : \"e5gynbo308kgtu5tvnbxq980bu217p8u3k4p21m151usu1c1w6ds4f9k5p45eni6k823sm0ab0b5poj8ovk6iqozywmsmu2vz7r9b8dlhvh7vdenblwpna7b0wn2rfh90h2u354703l2cdpiut4q0xgwmk0\",\n \"resource\" : \"wonus4d7jhqj6wofp7v4kx31u5hfiduv1e0z6judsc1dxmoq4gplhdkf9hp8ylngigsuvotc3aab9uocsni7tvycwet0timn3wdg6p2gz4m1o0azr5waztzw3xe90md9\",\n \"index\" : 6236337667060646946,\n \"message\" : \"Autem tenetur rerum minima. Itaque porro possimus iure sint qui temporibus dolores. Sint reiciendis omnis veniam impedit totam. Error dignissimos ipsum quidem deleniti voluptatem. A numquam magni prae\",\n \"value\" : { }\n }, {\n \"code\" : \"66ituxrnc5grf7h6mqgezv608pygxqbvqd2fcub5d7astaozkjof9x36lx4kyeec79vttx08a0f9mw5188wd9jkm0zia\",\n \"field\" : \"rxkx7kroovgt8vd50tdl3qy4fg1719x4b55zchg31zqdbmduu4b8vrfguh8fbepj8ckv5fag7bjsf3blec4cqnsugs88msru9a4rzy3aaq2gdn52hwlkgyaw6t\",\n \"resource\" : \"5xvmghyk46fkz15smga6vb1ocs13j4l1cg0vcij5gve9yq4zssfits0dabjx68s2nxywpq17t4cxv7ctodsibd9hrsmamzyidam25ijqqmgtv9lhpr47h55opnd7v1nez78tqi1ivnzbanfnc2cv77e2rkhjlpbzcefg\",\n \"index\" : 1661335633847598652,\n \"message\" : \"Et reprehenderit quia. Excepturi tempora voluptate odio. Aut minus dolorem amet.\",\n \"value\" : { }\n }, {\n \"code\" : \"948xu3peu6wn8buu4irviufpukn0w8nmabiyk2qw0cqoy7y3whj8wn8dmj995mu25kwkb0kouhd7jjh7o13gdfchzr9eykpn3vge34g5g170uyqt03pjtro02ri3cwdj774i9p9gdndmj89tu6r4hzknjsi09dp4e\",\n \"field\" : \"7x2ox02hw8xybbehe36rhsu2zaxkmhfy5cvvvy0hj8ied3\",\n \"resource\" : \"2ld8mobjywfwq0tzknu56gotz1gcgwdnjhncg9h4xh4m0ku9nakl79w7i5fq00zuxxdg2ae0d67sipbe078m6nryk4yt6rjr7ssmys6ci8g9xb8gcyrfagq76ala656jq7koi1e7ea2jw6enr2i5y73ls2gpweslmmdcd2ddfti4ym8h17fsws5\",\n \"index\" : 1191483631367087344,\n \"message\" : \"Consequuntur ex quidem sit quos facilis veritatis rerum. Quia atque consequatur quae. Cumque temporibus eos. Fugiat rerum modi molestiae et quos eum.\",\n \"value\" : { }\n }, {\n \"code\" : \"jadjai161z60crcmomkf6zick0logazsmjlh96k51d5pgu3sm0z6oyxo22avtzt0du4imv3fa4wev\",\n \"field\" : \"nmge4qqa18tlk7n6p4ev6tc0qyzi43fdaa8w6vaeii8rw8csl2kk26aglwila72hudfcliq7wwnkyvp3kwko98txzgntgnbhd4x\",\n \"resource\" : \"28voq3ur0g8m9th1pph4vaqnk49yrgtdupxhvsu8uaq3g4g35ikqkmksf1oiy4ju00b59ebnf7ghslt06p51exklr\",\n \"index\" : 9098588753375882314,\n \"message\" : \"Aut repellat est soluta sed. Unde dolor dolor qui explicabo. Voluptatem quisquam id beatae eveniet. Ullam aspernatur et nam. Totam at ut.\",\n \"value\" : { }\n }, {\n \"code\" : \"m8xcafpixk0xi1oc3q88jvjx1cduh73mguc794sw3f5if9ybw00s6adhrhv3hc91d8xg6r6ai\",\n \"field\" : \"ickyut6chz2kjh2hae3evjgjipl3898axdrozichfkn469yf7ij1wdimintc6avre69jaak3dccawx0fd2k6w3k8vus09d272q68xf9yfi0e3c154yaizt6y2x05f9xgxbmoy38vcrpc5t0abx5wuf6zjxe1phtimdtm35o91imz5\",\n \"resource\" : \"3otscvb\",\n \"index\" : 4874191651137232246,\n \"message\" : \"Culpa qui incidunt voluptas ut. Nesciunt ducimus itaque voluptatem. Enim fugit vel fuga in sapiente perspiciatis. Sed sit ullam ut nihil eos. Totam ut non facere.\",\n \"value\" : { }\n }, {\n \"code\" : \"g922ncpjh20rfj2\",\n \"field\" : \"c2z4qoi4x4ipxira1vrqpo9sbcd43nzns820o5q572yplz88iyyx8138sin4mttozzbuw3be57g9wyvh12ycjyk6p8nhik2cicukvk5q1rydiioceh1ly0bto7f4zwzu5jr0osfx1efwsoevc\",\n \"resource\" : \"34s52tfg447f69r32nwkzlfwfhr57xer3ife4u2obt3sx8ja1f95r6h01bqtj6gxxpmxqnz96xm7cd834bwzotlqm6cy3buybqiqopwehwlig2n512mgfixnppufdysisl381injd5mnplt1k9u53hzqqhfd9p2yt581ugytg99crh86b84q66xb\",\n \"index\" : 2427178170499253861,\n \"message\" : \"Voluptatem dolor nihil qui ab voluptatem. Molestias dolores debitis dolor. Sequi totam nostrum est consectetur.\",\n \"value\" : { }\n }, {\n \"code\" : \"c23d4urlc\",\n \"field\" : \"xclcdbkdtue60a2tqw7s270s081e0ee2d4mahkg6u5ezalwhgll6qv9kwnqenexcj71tvr4muptqzv106c3eqag0gcllyqe6iavv6get8dkt20nvrsto2qjp105ujclmqt7h7crxs6blc40a3jlz9erf9vbeo468w02s65vsq\",\n \"resource\" : \"e63gjimjnsetibgvatu5hmv35uu8j9vx1xs3a8y2sdufyibk0sis3nkayxu7i6b1rtbuoud2y7aoemp8faqnfubc9\",\n \"index\" : 6716012000529153414,\n \"message\" : \"Et atque fugit. Quae qui numquam. Suscipit ratione maiores officia cumque.\",\n \"value\" : { }\n } ]\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "80aea0fb-e9a1-442f-a858-b5fb540f26be", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.04697Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "issues/lock", + "schema": { + "description": "Validation Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "errors": { + "items": { + "properties": { + "code": { + "type": "string" + }, + "field": { + "type": "string" + }, + "index": { + "type": "integer" + }, + "message": { + "type": "string" + }, + "resource": { + "type": "string" + }, + "value": { + "oneOf": [ + { + "nullable": true, + "type": "string" + }, + { + "nullable": true, + "type": "integer" + }, + { + "items": { + "type": "string" + }, + "nullable": true, + "type": "array" + } + ] + } + }, + "required": ["code"], + "type": "object" + }, + "type": "array" + }, + "message": { + "type": "string" + } + }, + "required": ["message", "documentation_url"], + "title": "Validation Error", + "type": "object" + } + } + } + }, + "insertionIndex": 564 + }, + { + "id": "d10f1224-b613-42cb-ab76-a7603a310954", + "name": "Lock an issue (application/json)", + "request": { + "urlPath": "/repos/9z9w5e9fx5f8qckml51h98khq8lsya0ig3oratnswvrigmno/vrj60i8v9v6d947s5r57rbschmnmjx/issues/625045516709177751/lock", + "method": "PUT", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 410, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/572965\",\n \"message\" : \"Quibusdam dolor fugit qui earum in. Et molestias explicabo aut. Consectetur enim qui ut nam. Iure et molestiae occaecati.\",\n \"url\" : \"https://web.example.mocklab.io/577430\",\n \"status\" : \"so0c3za094ea0z4udhfbc5vt0zwr\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "d10f1224-b613-42cb-ab76-a7603a310954", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.046156Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "issues/lock", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 565 + }, + { + "id": "3daa32c4-ea5c-4f60-b085-46f141f07209", + "name": "Lock an issue (application/json)", + "request": { + "urlPath": "/repos/agblg6ysuc153m9axjg6dwwur13znf044ithzzf07ual5mpaja6cw020jtiis8jvf0wrewy1w6wktcgg57629r9tc1s03ckqppvtmagk327ghbjdnqxag0gmarmfe7ql0725q35slnbnwwecxzqaiozz1wu7pyu9doeuilpu1h9nn14enu5tqd0j9bummjcycx5b747/hkbsguck75xrbk2zubwpo3jmz1cl4miq6tbv29k/issues/5718403377162309754/lock", + "method": "PUT", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/652095\",\n \"message\" : \"Voluptatum temporibus delectus odit. Culpa a reprehenderit commodi. Ut debitis distinctio quia autem commodi voluptas. Excepturi cumque et distinctio enim et.\",\n \"url\" : \"https://web.example.mocklab.io/077655\",\n \"status\" : \"ai5vxpxtbg9jgq7oywglr669g7nhaed96oh8pjm8b2n222ut3is9ke60hzql176xi7ib5r63jt7wrqb8l2oxnvqtcxda\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "3daa32c4-ea5c-4f60-b085-46f141f07209", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.045944Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "issues/lock", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 566 + }, + { + "id": "b2894cd8-595b-4329-b0ea-4144ebf80ecf", + "name": "Lock an issue (application/json)", + "request": { + "urlPath": "/repos/4atm60g0y9bj156becomqy8m54u2a6d5icmywwp22usksihj53lvgxv6fahm8vvzuqzjfkq6ove/680zz010dqee7cm9029i2xkyvee5hho0ockskbmp7qg34l61ekeg00zaxnr8dsv6e2pz9rgd20jfr89q16ndx9lld4mxjv23712k6febkd02a4q4lsizn1t6flh7t19w/issues/6504868614177389047/lock", + "method": "PUT", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 403, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/687122\",\n \"message\" : \"Sed voluptas recusandae eaque voluptates excepturi quia. Ut dolor tempore commodi sint aut occaecati sed. Saepe cumque cum. Aliquam dolore ducimus iste eaque eos facilis ut. Veritatis in rerum adipisc\",\n \"url\" : \"https://web.example.mocklab.io/431948\",\n \"status\" : \"p7likz4tykbu8zeo9im\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "b2894cd8-595b-4329-b0ea-4144ebf80ecf", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.045724Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "issues/lock", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 567 + }, + { + "id": "63185385-4a08-4d40-a575-9697d74de1fa", + "name": "Lock an issue - 204", + "request": { + "urlPath": "/repos/n19nr8bdfgylj7dldjefn6kvefnxpngh86uk7m7o/hxfk8gintjgmrlymzshd8ejt2lwelytf1y21yja02m1j0x5fap2vvt7ra3nojtao3o6b0xhxuj7qdx9xsot5viy3nkkh7jern6gpsm0h6m179tu7cnp2oljh6p02gy55ilele6n5xqsu917djfelm8l7q638o8ah7pshkpazfw7m99qkjjhzpcmjg6st9sv0ehtqk8/issues/8269860045036303340/lock", + "method": "PUT" + }, + "response": { + "status": 204 + }, + "uuid": "63185385-4a08-4d40-a575-9697d74de1fa", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.045509Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "issues/lock" + } + } + }, + "insertionIndex": 568 + }, + { + "id": "f0b58477-7eec-4f9b-adc8-51472a4a0589", + "name": "Unlock an issue (application/json)", + "request": { + "urlPath": "/repos/zs2jezmwf1y9uktm37lz43vk2sonvj74idltqngi8qkb1jw19fmr705x1frwaqfujch9g5bbic4cazr3fhqo9os326q3iauts7uwn40efs7sqnrpvqlpybuhgwl2j60yj/u20wnn17zlcmce0q2sseb7nw6anfb57lrxy0faazw5x6yxs2pga3q4odjxf677ahp0yc7q4omby7dimv4no6kh7bg/issues/8587045676984361066/lock", + "method": "DELETE", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/327173\",\n \"message\" : \"Sed voluptates laboriosam rerum eveniet aliquam ad. Qui labore aut magni sapiente dolores placeat voluptatem. Doloremque hic magnam corporis corporis.\",\n \"url\" : \"https://web.example.mocklab.io/790504\",\n \"status\" : \"vrviozab0rd9k9oul2n0bkbytczqkdvmit49fzrc7r5bynprzqg1ovtx4wg884xr1kedve3heo3e1hgsjt0x3bykhfwhs6ntz3hiugk82un71qqhdur71bzs5hpyystylqqmmwiuvy9hvfea\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "f0b58477-7eec-4f9b-adc8-51472a4a0589", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.045461Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "issues/unlock", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 569 + }, + { + "id": "4f49e6e4-3dce-44a4-a987-93aae173f1cf", + "name": "Unlock an issue (application/json)", + "request": { + "urlPath": "/repos/t3xp96qrrezty0cb9s9zkhre62z2ag3imxivl33n4bsweqpgyy142iuc23ypee9ucv5sytssc9dcrecbmi0reqbtu71q8194kytt60d2q98gp0b7zdbnp9e4vbqva31a12oa35jbju724gc0y2n1p37thj7qzigk5qlmc/7jbu8za0le2gp792y83u4im8su3ab2y7udml627fp8l1jric0q5trvy6g7au6bjn7csmq6jekdls5lkz1t8tu2j7zxnnv3urayu5lmfqy2owqoyhqj1lhgmgkxe1xr47e6ynezizitsi2lhsjpq9p133ayfhg647hk9b9c552cwklckeksciood58j6md1/issues/9015410525213105094/lock", + "method": "DELETE", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 403, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/937873\",\n \"message\" : \"Delectus repellendus ut consequuntur corrupti possimus repudiandae. Ratione porro reprehenderit consequatur et. Maxime quod consequuntur laboriosam quisquam provident. Possimus saepe temporibus quibus\",\n \"url\" : \"https://web.example.mocklab.io/111677\",\n \"status\" : \"r5ldk7plikyvv0be6qwcyrnthj57qiq3kontysk8xj795d9p4pwyox96g67onxe1loqmmkc4hfrpqj3es9kjfx66xjm49fsi5mf8wp35x7y6xe71t7ny5z9\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "4f49e6e4-3dce-44a4-a987-93aae173f1cf", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.045244Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "issues/unlock", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 570 + }, + { + "id": "b5b94ca6-95d6-4a8d-a5c0-db1060966873", + "name": "Unlock an issue - 204", + "request": { + "urlPath": "/repos/thdijnsnsjdmqahoc6qvh73ior8x7si417rfmm80xlcp2m64z5w1dsabgw6zboe23j/z46bnv34vcs7vjfohjjgn7wv/issues/4716913410868431153/lock", + "method": "DELETE" + }, + "response": { + "status": 204 + }, + "uuid": "b5b94ca6-95d6-4a8d-a5c0-db1060966873", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.045017Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "issues/unlock" + } + } + }, + "insertionIndex": 571 + }, + { + "id": "d591a7aa-a122-4e49-aab7-7d5ae2e28c32", + "name": "Remove a label from an issue", + "request": { + "urlPath": "/repos/0nomnfyn33wvn1cquxzbij4hd9dupejd3dc4j34uyjx6gbxrwxrdvaldmo06pe90yvtylkd5q84ngwx6905g4zyweq7sfg5g9ru4fzkp7wko4fiyzmee2olei4e62daf40nuawmt5aavow25gz5apl07wu4krwyuvetxdaoz9ax838/b7r1t0ni92ckmowzwfp6qukawxqqux58tifzv9ol72mj5xkn0kbttd94ayu1sgqq9o0hyg1akp5nwab4tnw018tvg96okfz2rwfxbc80ghqqtck55uoi9n4v2ips06xmqrml7691ew8oyibzgqbzlxyet1cgq6vs36t749elfbtftl9ybg1bd68ik1b8d2/issues/2313476122419543721/labels/Miles+Bartoletti", + "method": "DELETE" + }, + "response": { + "status": 410, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/020894\",\n \"message\" : \"Est ut harum voluptatum cupiditate quo ut vel. Velit nesciunt reiciendis rerum. Voluptatum enim animi ullam nesciunt explicabo. Qui vel reiciendis nam eaque qui.\",\n \"url\" : \"https://web.example.mocklab.io/406319\",\n \"status\" : \"57uxlny8kwkg2ckampufgaiv03cwbanzbc35uu0j4y66qqwgsskvi5h9oq4wbzhho30vzgb849ybnsdinxb8\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "d591a7aa-a122-4e49-aab7-7d5ae2e28c32", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.044977Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "issues/remove-label", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 572 + }, + { + "id": "c7d46493-a3b2-4438-866e-12caa7c3a9fb", + "name": "Remove a label from an issue", + "request": { + "urlPath": "/repos/1pyhix9l962d494j5b6o8h05po9lqwcju0ixqwef1n5n7cpumzsj0cxbl5ytmet0cjqonp8qm5stgevuti337ps0ti9u92fuvibidhrbmxh3/uwk45lu207u2mol92s/issues/3680866238612426796/labels/Dr.+Jacqulyn+Cassin", + "method": "DELETE" + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/246271\",\n \"message\" : \"Quia temporibus modi molestiae vel possimus. Vero ea non dolorem ut voluptates. Id asperiores officia consequatur aperiam cumque. Ea ut unde eveniet earum consequuntur et nemo. Rerum ratione expedita \",\n \"url\" : \"https://web.example.mocklab.io/585954\",\n \"status\" : \"cupaqa464rdxemoh69w9blqpsq9zdk0kxcsdjp7v3hyzl8645ncepru7cp\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "c7d46493-a3b2-4438-866e-12caa7c3a9fb", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.044722Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "issues/remove-label", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 573 + }, + { + "id": "7b93292b-1907-43fe-b799-cca9cc98a155", + "name": "Remove a label from an issue - default", + "request": { + "urlPath": "/repos/fot4tuqlurf9m2t4mku2apnr/ghvqoznw9r44o076qbay62gtaake2qdufw4jq6ge9t26v80mxsvhed5gv0y0o78aa3qp5lqgz1ydc3smhvmqk4qs2yc1oyaoo3930mx8593mdqr6n8la5chd8q/issues/3145636047420064486/labels/Russell+Langosh", + "method": "DELETE" + }, + "response": { + "status": 200, + "body": "[ {\n \"color\" : \"f29513\",\n \"default\" : true,\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"name\" : \"bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/labels/bug\"\n} ]", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "7b93292b-1907-43fe-b799-cca9cc98a155", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.044471Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "issues/remove-label", + "schema": { + "items": { + "$ref": "#/components/schemas/label" + }, + "type": "array" + } + } + } + }, + "insertionIndex": 574 + }, + { + "id": "38971be9-862b-44c5-80a6-bb513f748673", + "name": "Set labels for an issue", + "request": { + "urlPath": "/repos/3bzj0sd2hakvdbtt3wuqf68lic3g0vxdj0go7kvt12bq9tlrco8e4hds2in42z0ll0j8p6o9vvl0ajsi5yhapnjlsn7ymgcgyhvxrjb6ac6hj4/zywfc5x7fc03aoxvuxvvsi6rmgyyoeb4xlpp604nhch0muvpj4p3rppsqfnyr7svbwyluv0yonvs2chii39vds0h98vz0738kx6yghfyvu/issues/8946987933427607439/labels", + "method": "PUT" + }, + "response": { + "status": 422, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/726642\",\n \"message\" : \"Minima doloribus officia. Ab ut possimus quas in corporis quae id. Commodi commodi voluptatum voluptatibus quis. Nostrum ut perspiciatis rem veniam.\",\n \"errors\" : [ {\n \"code\" : \"g0u5aagbd8umg1lnuxp9n12bn09ewhhk44cv7watzcwmdfj4t1wjaf0awa1snd0c5q1ldohqjmrfwf30ytpqso1tcmsajp5en5b34kgtgj76lwwc9twgukgp8m9e64qihrgldcc7bbg9kemw714ke2pavbumujuz4\",\n \"field\" : \"sseicf6d70uhsujav6d3pmbq65ncbii2blmt26gckzfox3rwhir780cfjm2n1r502ka65omfb3ka8yjr2nmmci35clvm61n69zq8lvvf37aj8wsfkl2w8gcysjie284io2s05o1qb4sri5idpx4fhmmpab4irowm7suq2s2ploqhlkwwc6zd2wfikq\",\n \"resource\" : \"op5oz3qxyhszfxeuzhowe9mzluypzadascb6qt2me\",\n \"index\" : 206370059215800265,\n \"message\" : \"Exercitationem odio aut incidunt quisquam architecto reprehenderit. Labore eveniet quod ad ut quos. Est labore eum sunt unde. Aspernatur ratione provident sint sed temporibus.\",\n \"value\" : { }\n }, {\n \"code\" : \"edygnpl1gm9dvomb8ibaee3t5rkvjza7dtcclu3a41s1ip1mr0a3up2n9iswogaabd89ndzaltarylv9nvz04dsios4kkguauxcq\",\n \"field\" : \"gw4kfi7zgpmfckhu7bqz4fr2j2sb8o8zllwc5bglroztfwi2gxsnrh5882d2jq8emtxuqn0b735nbmbbvhddwh8notqgwnrk0m78jgkodre56wk7gr57yf1r57bbjkc9e5egv979db8eanaktqwvkgzp170gc3s7dxy3ap1xb4cs6o11oem7c2jcxhkf\",\n \"resource\" : \"7bzgdutbmqgq8p928xezo0ohvhtgk0kwe7hv9pzp7xwrltvcg4dcxe2al689fiqf03j7gkv52q70qyr0\",\n \"index\" : 4003735063315837195,\n \"message\" : \"Enim libero dolorem quis. Suscipit natus ea temporibus. Pariatur asperiores ratione. Porro temporibus accusantium et saepe sit.\",\n \"value\" : { }\n }, {\n \"code\" : \"q0fmgem6ei1to6jl7f14ly2b0eo5qnq5hsvil5bh1zw6vgvclc1pt7vx82iwzz0wmw8iq4gwvr6s7l8v3dxcf2ma45ttnc161xcxf\",\n \"field\" : \"zjzcq1meml9qhy3svas7uqncx527qdnmp6th70g7kliexyg6tm9df1mohiwq9xfm18rywsxyo5bcjztacspzynabf7hlfgt7jfm9qptnk7q5mxdp2w77obbix\",\n \"resource\" : \"3hw8a\",\n \"index\" : 293591962882982805,\n \"message\" : \"In rem vel fugiat. Enim dolorem omnis recusandae ab. Atque fuga eos ut velit facere est ullam.\",\n \"value\" : { }\n } ]\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "38971be9-862b-44c5-80a6-bb513f748673", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.044369Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "issues/set-labels", + "schema": { + "description": "Validation Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "errors": { + "items": { + "properties": { + "code": { + "type": "string" + }, + "field": { + "type": "string" + }, + "index": { + "type": "integer" + }, + "message": { + "type": "string" + }, + "resource": { + "type": "string" + }, + "value": { + "oneOf": [ + { + "nullable": true, + "type": "string" + }, + { + "nullable": true, + "type": "integer" + }, + { + "items": { + "type": "string" + }, + "nullable": true, + "type": "array" + } + ] + } + }, + "required": ["code"], + "type": "object" + }, + "type": "array" + }, + "message": { + "type": "string" + } + }, + "required": ["message", "documentation_url"], + "title": "Validation Error", + "type": "object" + } + } + } + }, + "insertionIndex": 575 + }, + { + "id": "ef7ddae0-c2e2-4189-8d05-1e6f49fe1552", + "name": "Set labels for an issue", + "request": { + "urlPath": "/repos/l5lraqpwcogzm3ou91ufwop/gmndzjce26wibctv1z/issues/6991958134093709375/labels", + "method": "PUT" + }, + "response": { + "status": 410, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/750937\",\n \"message\" : \"Ut sed eligendi esse repellendus dolores id dolor. Blanditiis corporis nihil sed nostrum sunt architecto. Provident ut reiciendis cupiditate ut harum quae.\",\n \"url\" : \"https://web.example.mocklab.io/393442\",\n \"status\" : \"g6cmztq38quvnde7x95uj8\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "ef7ddae0-c2e2-4189-8d05-1e6f49fe1552", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.043944Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "issues/set-labels", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 576 + }, + { + "id": "9a10f353-1d29-4e24-b5f7-a9d697490299", + "name": "Set labels for an issue - default", + "request": { + "urlPath": "/repos/re17s6mauem3bn8y1vvqci81xjizlfe5xo5bpdo2ukbslnm1zvgeshlptrr1t3tubw916ighe49kcwzdovb7bph3l3bd04l1k5wa2x37/176lblqrcj2z9wy8gsa4mxnm1yg8pkzbzkydsvhl4sjleuhpwu8817ilz5jw1bqnebrpuddyx7g198d5z7nizvfpxd0wkao990u59wspkmfxaouhk0py4aapjvxir5tppbeydfwn9j670yplrtws8rse7xc8uaampvii6jd0nn2l59l1iapknyccsc2xmzq9apdrcvd/issues/6337310496800710040/labels", + "method": "PUT" + }, + "response": { + "status": 200, + "body": "[ {\n \"color\" : \"f29513\",\n \"default\" : true,\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"name\" : \"bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/labels/bug\"\n}, {\n \"color\" : \"a2eeef\",\n \"default\" : false,\n \"description\" : \"New feature or request\",\n \"id\" : 208045947,\n \"name\" : \"enhancement\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDc=\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/labels/enhancement\"\n} ]", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "9a10f353-1d29-4e24-b5f7-a9d697490299", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.043731Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "issues/set-labels", + "schema": { + "items": { + "$ref": "#/components/schemas/label" + }, + "type": "array" + } + } + } + }, + "insertionIndex": 577 + }, + { + "id": "46c084c8-85d0-4b29-9955-5c319eeef26e", + "name": "Add labels to an issue", + "request": { + "urlPath": "/repos/5izefxkkrrcvbr4q3nk1sq9xgr4rkdf1ujju2nctmusqemql1dr83e8bxig3rlu0iyq8h5gmu51wtrr94apybvrc5lcr5npvhffsgvhki144yotfljd06v8z3tvxdc8pc50am68eetxo3jpmjvw3al9h2p2vwpm66kxq08jcffvmtekv/yb89n4s37vjei7t8mnnt0yi7c4rqx2zpbtcnuofz0xkcofwlu5aabeyb5w4djvw0757tyw8d2o2mr3ngzauxwvzz4onrl7bgzx4h9bp9gyzosz7ee2bofl9v2obnthwlyittpilivpk3t3arn9g5kxgruk1ho1zz5gcnlw1ce6cd3cue1va3fulqx8ttn/issues/2235806447623216150/labels", + "method": "POST" + }, + "response": { + "status": 422, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/867053\",\n \"message\" : \"Qui voluptatem amet itaque enim quibusdam assumenda est. Voluptatem officiis consequatur. Corrupti cumque accusantium itaque et doloribus consectetur. Soluta tempora voluptate. Soluta est rem eaque.\",\n \"errors\" : [ {\n \"code\" : \"000932doeql5subbmexrttec7ikqwd2snsfs0ijuiza4lyeduu8cwrsosauy9ttr1uydziqd1id30ertve11er977qs0ajkiqym43f205cq038tfiqoe5h1453kqd9rrjnyojbboy9okj6aee23nux8bht9dnqz0jary2894ioj742liftr84jqpzbdt02\",\n \"field\" : \"pfl\",\n \"resource\" : \"xegcm3yojxz057u8uhuiss9dlafnpwme6ieqojq1t75bguspm5hiirtem2njo67sf4rx3cxm2sn90v9qgikdem1rix0i\",\n \"index\" : 7007079165650044507,\n \"message\" : \"Corporis fuga autem nulla autem velit. Ex voluptatibus accusantium dolores perspiciatis. Animi enim nostrum.\",\n \"value\" : { }\n }, {\n \"code\" : \"ervylse0nz2wg300v0ej0ed82w64cmourfr9mmdfnxfdu5nsopoy29hu887a9lemxngqz4j980d2oka9kxxmeni5\",\n \"field\" : \"92j3mccfn8noozp05mj1xa852u0hgwu47glkp8qf15hffrt0i04w4vjtx1czh56ps8eutgwlauw6gwj0nol7u\",\n \"resource\" : \"n6mwvb0lmn4vaaff1fncgeumk\",\n \"index\" : 1966955862483161520,\n \"message\" : \"Aut aliquam distinctio reprehenderit neque. Nostrum eum minima aliquid sed. Molestias qui quae.\",\n \"value\" : { }\n } ]\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "46c084c8-85d0-4b29-9955-5c319eeef26e", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.043674Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "issues/add-labels", + "schema": { + "description": "Validation Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "errors": { + "items": { + "properties": { + "code": { + "type": "string" + }, + "field": { + "type": "string" + }, + "index": { + "type": "integer" + }, + "message": { + "type": "string" + }, + "resource": { + "type": "string" + }, + "value": { + "oneOf": [ + { + "nullable": true, + "type": "string" + }, + { + "nullable": true, + "type": "integer" + }, + { + "items": { + "type": "string" + }, + "nullable": true, + "type": "array" + } + ] + } + }, + "required": ["code"], + "type": "object" + }, + "type": "array" + }, + "message": { + "type": "string" + } + }, + "required": ["message", "documentation_url"], + "title": "Validation Error", + "type": "object" + } + } + } + }, + "insertionIndex": 578 + }, + { + "id": "b444694a-1c16-4bf5-968a-00390517fe32", + "name": "Add labels to an issue", + "request": { + "urlPath": "/repos/64hg87rv6mqaam2lsb5gutyrsncqoiuuh4rttefm54s0f5zpqnsmh5turwf0dv7bnfvecnlho91noacpcx6ja4/wyq24woc3l1sgq2g6k0c9welxij23fd7ktzfc9idk3evkfngcj6032snlnbfy7fmg574ucc9jp13ux5vsuef02rl06lrc9nfw0bd4f6v0tjte9l3ap4gh8pkbt92zkvpp8sqb2go9cz3sn2pj83vw1p01dptmtulnrvg39fcpqoz4ycoy38cq0b92e7vge/issues/2009571265994680161/labels", + "method": "POST" + }, + "response": { + "status": 410, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/733113\",\n \"message\" : \"Quod sit magni quo reprehenderit omnis eius aut. Repellendus quod nobis animi maxime repellat. Ut veritatis nemo eum molestiae rerum adipisci. Sunt adipisci modi at ducimus unde. Ratione aut excepturi\",\n \"url\" : \"https://web.example.mocklab.io/620666\",\n \"status\" : \"kjcxa3n15kzdqw7xwy6drfjrf0xc923f4mtf0gr5ohipnw8rzmvflg0u4azwsjsub4g2gnw3k8wvafs6axisruzojwjk45c78m7x9cnhf2u28pi0j0tvonat7uhos053ozsu7v\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "b444694a-1c16-4bf5-968a-00390517fe32", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.043314Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "issues/add-labels", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 579 + }, + { + "id": "880c52f8-031a-455b-ad53-8bb74cf14df0", + "name": "Add labels to an issue - default", + "request": { + "urlPath": "/repos/c7d03dx01nfvurlrxjlyvyy0fu0gv1exch8jsm9npsd43zsw4km38xoa3cipj47f7qtj2kmsfk35lchkeleykix93fyos7kv8ofjqaq12fy0lm60edjv3q78679n9icgokweu8k8itukftlgge5f6socx0j1dnj7amearvl/2mtjw39oaj5exb63nw1293h8kbxudsop21m222giccb2z3itjxmfzdlrxrnli0rlblu7149bowed436n9rq9iwwaos0l5lkhrxytrh5xcgyj9it4o58y88gxqfg9owrrfzq2b2am1bso4ug4t3reiq1lfzn359vbqz20d9nquxebfyig4z8zdsul/issues/3191863186941252088/labels", + "method": "POST" + }, + "response": { + "status": 200, + "body": "[ {\n \"color\" : \"f29513\",\n \"default\" : true,\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"name\" : \"bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/labels/bug\"\n}, {\n \"color\" : \"a2eeef\",\n \"default\" : false,\n \"description\" : \"New feature or request\",\n \"id\" : 208045947,\n \"name\" : \"enhancement\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDc=\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/labels/enhancement\"\n} ]", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "880c52f8-031a-455b-ad53-8bb74cf14df0", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.043091Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "issues/add-labels", + "schema": { + "items": { + "$ref": "#/components/schemas/label" + }, + "type": "array" + } + } + } + }, + "insertionIndex": 580 + }, + { + "id": "714ec24d-dfcd-4520-95be-777f8543f06e", + "name": "List labels for an issue", + "request": { + "urlPath": "/repos/id7oc12485y39awp02g62921po19zlcjxutjc5s9e5i7zc9jy81x4tsnd4dfrbq3v9uhmdrx8npvpprhimuqvdkbji778tpi6ukquqaxk8zn6qid0vjc21kwd4jky9frst9uxuaskkczmqw/xm23u4eiiixd3zzinq2ni396dc3g1fmptr87qp/issues/2561945363223554020/labels", + "method": "GET" + }, + "response": { + "status": 410, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/903838\",\n \"message\" : \"Blanditiis error consequatur vel qui. Quia est earum. Asperiores odit totam illo est non.\",\n \"url\" : \"https://web.example.mocklab.io/377557\",\n \"status\" : \"uxnowmz0we3h7iwbpmgrmeo961b75atrfvun4q9wsfdirvd3zamn7sy61memwdr944vveuc87ozwypydnsjvs3enepe13jljow9zeeyyc92sr79ctrb10s83air34ze1crhcoyt9wv1i0u5yck89trs14as9mmuznaip01wldhu5ciym\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "714ec24d-dfcd-4520-95be-777f8543f06e", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.043038Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "issues/list-labels-on-issue", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 581 + }, + { + "id": "5a999f36-aff2-48d0-af5d-3d659a8cc606", + "name": "List labels for an issue - default", + "request": { + "urlPath": "/repos/45264g6bvzuqhri/j1eng2q185afde1ez3neh9d4iofh1mogisn56quh3obm8dof7nn07pvemj3mdodxsbk8ijvdgbdeqzthyhmd25ldm0ovrjn9v4mk41l88yxhnb8r1fk6g3pajiscxx5fzshpchd4m9i1bxi6ki1l35ts8vcu04rwtj98y3e270u8j2aauul4qbko6t/issues/3541107894156317711/labels", + "method": "GET" + }, + "response": { + "status": 200, + "body": "[ {\n \"color\" : \"f29513\",\n \"default\" : true,\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"name\" : \"bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/labels/bug\"\n}, {\n \"color\" : \"a2eeef\",\n \"default\" : false,\n \"description\" : \"New feature or request\",\n \"id\" : 208045947,\n \"name\" : \"enhancement\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDc=\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/labels/enhancement\"\n} ]", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "5a999f36-aff2-48d0-af5d-3d659a8cc606", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.042827Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "issues/list-labels-on-issue", + "schema": { + "items": { + "$ref": "#/components/schemas/label" + }, + "type": "array" + } + } + } + }, + "insertionIndex": 582 + }, + { + "id": "ab7f8151-65bc-46f7-bba5-d518921fd2d5", + "name": "Remove all labels from an issue (application/json)", + "request": { + "urlPath": "/repos/g7fp74asseeyhb3t6ar4yq0bl1g1etj40qwiw7j0er18d4o8oq23ornhc352lclkqk/0tk5hsj51o0jidvxms/issues/281706415908163366/labels", + "method": "DELETE", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 410, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/505327\",\n \"message\" : \"Quam accusamus aut. Dolor voluptas ipsum architecto repellat voluptatum. Sequi nesciunt omnis.\",\n \"url\" : \"https://web.example.mocklab.io/808047\",\n \"status\" : \"xbritmi6pl3txiny87hl9j5v\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "ab7f8151-65bc-46f7-bba5-d518921fd2d5", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.042765Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "issues/remove-all-labels", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 583 + }, + { + "id": "3c77fd1a-6ada-4aea-abf6-cfe62a22c0d8", + "name": "Remove all labels from an issue - 204", + "request": { + "urlPath": "/repos/yln/2kuu1vcoo01zypv8cwsjtr9gkgtpxtukblc95997qpm/issues/1325199036273925885/labels", + "method": "DELETE" + }, + "response": { + "status": 204 + }, + "uuid": "3c77fd1a-6ada-4aea-abf6-cfe62a22c0d8", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.042555Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "issues/remove-all-labels" + } + } + }, + "insertionIndex": 584 + }, + { + "id": "48bb2bc6-8017-4da1-a071-c6b35ccf2229", + "name": "List issue events", + "request": { + "urlPath": "/repos/u6ai05uotoydtxr6nfku3xt7n5ast5ht3ar72ier10odmecezjqrbzhlc45b82sv0wi61y8pjrpshs5n2evoeu2t40xfwjb82uze5yhg7s/bt3sujtr3xgsb44dceq4u07oqh9htou6m88jts1lhrvb9u3o838bffb3rsv3khgyss9th5earhylm2e79iw6f8o43ik3j1zlhf83nf2ztca0hrvrznlj7z0yxjgab9rztfjnmhvxo4eor27vvffpf9k3dn6r0ggwxri0vwbhyqir/issues/1104860403311716862/events", + "method": "GET" + }, + "response": { + "status": 410, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/402250\",\n \"message\" : \"Vitae et ad consequuntur voluptas. Dolores velit eum dolorum dolores. Corporis ut at itaque unde ratione consectetur.\",\n \"url\" : \"https://web.example.mocklab.io/878721\",\n \"status\" : \"ick2sawwgcb5a5nwqtt414f2vjj5ng97qh9k4ebccw633bfcsow8jwvsw455vdtpfy2n82n1qvop3wqitj45qoscs7i4m9nbwpulbg82iz318zr54f9taeort0sia3l4ruindeskkq7iuhvpj8vvkt3\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "48bb2bc6-8017-4da1-a071-c6b35ccf2229", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.042516Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "issues/list-events", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 585 + }, + { + "id": "9224d394-6998-40ad-9349-ffdf038d8007", + "name": "List issue events - default", + "request": { + "urlPath": "/repos/f8fi9esyybebu4ym5kn2v0zzaugmhvnemqzcgdfkwinfen1edj6ln1jli3dr18hlrrxc3c12bqtb3fhizrrs9r0n2jmq3kync0bg4nfmd6qan4sm0hf8oc3v65ffvryzdci2tr8ng3sycu/pa8ghzo6ef00un64t5difbaxrkut25/issues/328334134841332951/events", + "method": "GET" + }, + "response": { + "status": 200, + "body": "[ {\n \"actor\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"commit_id\" : \"6dcb09b5b57875f334f61aebed695e2e4193db5e\",\n \"commit_url\" : \"https://api.github.com/repos/octocat/Hello-World/commits/6dcb09b5b57875f334f61aebed695e2e4193db5e\",\n \"created_at\" : \"2011-04-14T16:00:49Z\",\n \"event\" : \"closed\",\n \"id\" : 1,\n \"label\" : {\n \"color\" : \"red\",\n \"name\" : \"label\"\n },\n \"node_id\" : \"MDEwOklzc3VlRXZlbnQx\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/events/1\"\n} ]", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "9224d394-6998-40ad-9349-ffdf038d8007", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.042304Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "issues/list-events", + "schema": { + "items": { + "$ref": "#/components/schemas/issue-event-for-issue" + }, + "type": "array" + } + } + } + }, + "insertionIndex": 586 + }, + { + "id": "d16ec3f8-14c4-4d62-b881-00b7efae8021", + "name": "Create an issue comment", + "request": { + "urlPath": "/repos/9pmt61xtgrjhfofls89988gh6wbek6bp739fhejv62m6658dh6z/g195hoxp8f5bbhz3wo1b1gdimwc1l1jhw39halctsdg3h9mu611ph7c4ctvy89glf6d3zz81pasjdn0ro2zzc8qjpu10dtk0x66qw8ldep29h1gyk3j28bm1383ntvszvc78423a7r1em9uqd8fkicydcfovwp9xcctrxka38b5y0u1v/issues/971182406191894934/comments", + "method": "POST" + }, + "response": { + "status": 422, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/849437\",\n \"message\" : \"Quis veritatis ut earum. Vel expedita placeat rem commodi. Molestias voluptatem earum.\",\n \"errors\" : [ {\n \"code\" : \"59w7\",\n \"field\" : \"0q6fwkvlffuhikr38ukhklxkq74p0t1vvg56v1y2f03ib8av0wclml9w21xd5m3suz8awz4bxbai7qpln9fsgutnqmm0d33cqjc9cbk9zgaqvnjx8lha3a75sra36g1wto8tjck\",\n \"resource\" : \"x9qa0muj0pej4mzcca7cfaf7wgwq9faptmh\",\n \"index\" : 7516292696756926251,\n \"message\" : \"Necessitatibus consequuntur ducimus quae quo quae veniam ullam. Et pariatur itaque. Deserunt ipsa dolor et veniam minus.\",\n \"value\" : { }\n }, {\n \"code\" : \"cws4zxbuxsr9spk9o8fkueor10g13p42xx928sreeh80s3kueqb8gzs3ou46b9uh01uep2wzcgch99lmz8nf4bimzdoghe7osf9qlq\",\n \"field\" : \"6rcrbcbgirrg34qvdjpmn832l4yb8mwf32zzxpze9uo89tvzwvoujmujp3c3w2hr4h5ikal6o315wf85f3xclqm70f55ze0coa90imj3nutq4957xtif5rnfhqf2pvd2r7gdhdx3f22ve37i4ikn\",\n \"resource\" : \"kttotlmcmieuzc6b46uox1b00z4w3xgh36rshy81zb\",\n \"index\" : 928138102742483539,\n \"message\" : \"Nam quam ut repellendus ducimus nisi. Minus inventore commodi exercitationem cumque earum. Facilis neque non est vitae.\",\n \"value\" : { }\n }, {\n \"code\" : \"ahx0bff2\",\n \"field\" : \"otdm2iz4v36qoh3qziyk6o314ho5yqj3puo4tgp4cg8dts3of60up7v0304rcctjrexb1s1ntq0qgambg5pynyznousw1cxx4f3qp72sbdpgbk3lm9c9qa6wbzcl4dc9ilqputgs6ed002yvzo36or15m3g0s8sb\",\n \"resource\" : \"4kbf1p7fyb7skltfwzu6zhhyt6frxpdf3ufbdsoj07sdnfai28x5g495zz8y5m7vds7rgxhxjcqby4xgd7nmfsov3j3347s4yonlz0qa5040xvxd4\",\n \"index\" : 1450231452529373451,\n \"message\" : \"Et architecto voluptatem vel velit omnis. Accusantium voluptates accusantium. Ea consequuntur labore ad expedita.\",\n \"value\" : { }\n }, {\n \"code\" : \"48hrk85owmkoc3ac34es9y66xbap44jw8rk74gzbhwqrml2mp5uztw1fp5xe73c36m\",\n \"field\" : \"1tghgfeqeg1f4wfdqxu9pc2zzu3sk6ws6l12p09v6ywzttqc1y677xptrbollvyjsp1xlytj7mmuubk1u5ugqgr3uz2zns30el8dd0q8patf73reafc8njkld5ml09a51p9jb04o5073wtxusjacww4vnk3v\",\n \"resource\" : \"xk8c6p90w2k3f5u8utku\",\n \"index\" : 3803673441921709748,\n \"message\" : \"Nemo eos tenetur porro tenetur quaerat incidunt. Ab cumque aspernatur. Voluptates vel tempora et aperiam. Rerum omnis repellendus tempore culpa. Voluptatem quae dolor ab.\",\n \"value\" : { }\n }, {\n \"code\" : \"tix3k7y1fahhxqepm3fmrf79fvywyu1e8108gvs0b0a4oltzvznsquj8cw17cbvrjrn5q\",\n \"field\" : \"pllzyhyzds8rmugjn8pj2lu0lppgg4pk809\",\n \"resource\" : \"u3s2iql1317q0c6x1py67jg8v6gf\",\n \"index\" : 642305262405537072,\n \"message\" : \"Suscipit deserunt vero enim cumque nam nostrum distinctio. Omnis beatae est consequuntur quisquam animi. Eaque minus enim officia natus.\",\n \"value\" : { }\n }, {\n \"code\" : \"4bb6jx8nvsj28yx2jogxo94m2lmc8r\",\n \"field\" : \"es5a1t4xafy0o\",\n \"resource\" : \"f1e1ekcir\",\n \"index\" : 8073846658682539555,\n \"message\" : \"Asperiores assumenda dolores. Velit delectus dolor sed dolore perspiciatis voluptatem officia. Porro alias et. Eum soluta eius doloremque ea. Et sed alias facilis quasi saepe.\",\n \"value\" : { }\n }, {\n \"code\" : \"lysdn69bqdm7r922o31chpabpdrjk2ir3c8dakeyqyztr0pm8wffd5gjnan7md6vl06t4fx1uqf1no378tml3cipa643uwgwujbqq3n6alrqwipjeyduxe9306ralqwcxklfnwfj6kiwa273psope70rrob5n1dbks2hzx7e7qk189p042kvs6hgto48f8gnmmd\",\n \"field\" : \"sscrtlavrccm46f\",\n \"resource\" : \"vi66ibzfge53jad1egc81pq0z8mjz3y6r1y9kitne2d390zhmw\",\n \"index\" : 951004850904836471,\n \"message\" : \"Vel facilis vitae optio eos aut facilis. Rerum quia pariatur rem quo qui sint. Tenetur doloribus aut doloribus voluptatibus. Quia soluta eos ipsa.\",\n \"value\" : { }\n }, {\n \"code\" : \"rrzow9rsh4hwy0dmnj18ulwqb1ndmrbykfi5ri4rvzej9aacuxp5w16opb59fgsbns9f2f982ilk578x9\",\n \"field\" : \"g8mwh7xyv1qvdwbiplz7tvq5ev2k7zz26ao3n6lganxo0n1j1cygq\",\n \"resource\" : \"afe49cxmkjt92m44qpfmdwn5n0833jqz115y24gcgsepv4uw39m3jckqv8s3re8bdltmiq8d4kjxn9idyht811j1mopste22tu0p020qamqlragyz9hvkmht7asr7g03w99wkp520goommfomko67j9vsgrh83q3beod32m2wsyw89fvjrcfuptqnf0g9\",\n \"index\" : 799816738771043882,\n \"message\" : \"Sint maxime hic sed. Pariatur autem quisquam harum. Aperiam vel dolorem impedit sint accusamus. Similique eum nihil libero.\",\n \"value\" : { }\n } ]\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "d16ec3f8-14c4-4d62-b881-00b7efae8021", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.042236Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "issues/create-comment", + "schema": { + "description": "Validation Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "errors": { + "items": { + "properties": { + "code": { + "type": "string" + }, + "field": { + "type": "string" + }, + "index": { + "type": "integer" + }, + "message": { + "type": "string" + }, + "resource": { + "type": "string" + }, + "value": { + "oneOf": [ + { + "nullable": true, + "type": "string" + }, + { + "nullable": true, + "type": "integer" + }, + { + "items": { + "type": "string" + }, + "nullable": true, + "type": "array" + } + ] + } + }, + "required": ["code"], + "type": "object" + }, + "type": "array" + }, + "message": { + "type": "string" + } + }, + "required": ["message", "documentation_url"], + "title": "Validation Error", + "type": "object" + } + } + } + }, + "insertionIndex": 587 + }, + { + "id": "895ea39a-5fba-406f-bd7c-36c6219bac74", + "name": "Create an issue comment", + "request": { + "urlPath": "/repos/qyti8a4v93bjr1khllwwueksi89gyo7x7h16vhbl8dk2po4wbuuc513jx4nc4n5ew1znwpg9kw9kkw9nsedg2y6dorw8o2ffa5or1l9c65y82atgckx73m3s62e9mdmic17f8mgk9vu3gmzlhfaeuxwnf0yqhjkhm/fmvxrrxurc5vo9i9skr6ao1d639tc0/issues/7734389836152012872/comments", + "method": "POST" + }, + "response": { + "status": 410, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/833895\",\n \"message\" : \"Earum ea quisquam totam odio. Quia sit ratione rem consequatur. Sunt nam eum sed molestiae sapiente facere. Modi veniam vitae eum.\",\n \"url\" : \"https://web.example.mocklab.io/076443\",\n \"status\" : \"d8yn8e94tthzjp0wpq8mu7g1tsk2mx9d474ccs5mvl8nfkrcnavjh8akt922shpxr11qiyie1wupfw8ymc\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "895ea39a-5fba-406f-bd7c-36c6219bac74", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.041436Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "issues/create-comment", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 588 + }, + { + "id": "1411094f-cdf9-4067-9fc4-7c8503e9fcd8", + "name": "Create an issue comment", + "request": { + "urlPath": "/repos/4dnkzcmkr6jqihraf1dolfbz1ftjlnkin207hw7h6g4fmpktklcaytcn7y59g0uv8iu08a91g6o694rwx6q7unl9dfdn42jqqtsq2klp8cawvh4c28mvy85csbhp98iou3gi6ct0byp44kocer52n8vxckdnze08n04mwe/f79ol4s5dz32raqsvmoykk58vow3d5cjdsvu13ltdy0a2atxcavkun8wv3fdufdevz9l5b8q1jno9nq4flpnl52elvyh1s3pkvwfl3nvqr3ey558j8ttmszjdo91bcpztljrxjvgb6deboiytmwjhifm3y7ekwipsxekgjg/issues/2650668072840587218/comments", + "method": "POST" + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/460035\",\n \"message\" : \"Eos illum commodi vitae cumque repudiandae explicabo itaque. Voluptatem animi ut nemo debitis minus pariatur. Amet in consequuntur. Cupiditate perspiciatis deserunt consequatur tempora.\",\n \"url\" : \"https://web.example.mocklab.io/888679\",\n \"status\" : \"to4ihhxzu10lik7gotjv7943uipa8pyhhgrgbyyer8yp876wnshk6j0cq7rhoqlezv2toajfwsl73f3vynyuadva1i4ia49o4ope5f1y1kwwmn2sms5a0ekf14vd7ub68mwistrrtc5q5pq1zzxnvnwxu\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "1411094f-cdf9-4067-9fc4-7c8503e9fcd8", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.041224Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "issues/create-comment", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 589 + }, + { + "id": "3689946a-0b6d-4f33-8d40-fd0f2096f89b", + "name": "Create an issue comment", + "request": { + "urlPath": "/repos/cji8612hej965antqqhlcstbb7j59idy9hbrwgqztl87sx51z9wuxzgsngmddyamu7igowqc7slrmmwd53rg5li154auhysz2xln2m67iu4yh/9k23rxklzupq4gu7awi9egzpfv7mu27jb6u0fi3bido5apjzk5z6f4kjenokasadci5yz23fi7tm6umwu56v2yowoctetuunh32v674mrgvuexnreg0ofvj8ga2xv7t/issues/8898411979227805025/comments", + "method": "POST" + }, + "response": { + "status": 403, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/879928\",\n \"message\" : \"Sit impedit nihil. Ea optio modi enim. Cumque neque vero blanditiis dolorem et voluptatem.\",\n \"url\" : \"https://web.example.mocklab.io/848792\",\n \"status\" : \"g83u8jkdun70kjac5fkb04vwsg4z4x06iurfovyl3li74txk6fg2bta6uihk1\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "3689946a-0b6d-4f33-8d40-fd0f2096f89b", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.040997Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "issues/create-comment", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 590 + }, + { + "id": "7d8f4a7a-4050-4496-8351-ba614f07b13e", + "name": "Create an issue comment - default", + "request": { + "urlPath": "/repos/80bfg17gm/isg5v3t9py1h01t2o9z4v/issues/2574242278943533932/comments", + "method": "POST" + }, + "response": { + "status": 201, + "body": "{\n \"author_association\" : \"COLLABORATOR\",\n \"body\" : \"Me too\",\n \"created_at\" : \"2011-04-14T16:00:49Z\",\n \"html_url\" : \"https://github.com/octocat/Hello-World/issues/1347#issuecomment-1\",\n \"id\" : 1,\n \"issue_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347\",\n \"node_id\" : \"MDEyOklzc3VlQ29tbWVudDE=\",\n \"updated_at\" : \"2011-04-14T16:00:49Z\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/comments/1\",\n \"user\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n }\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "7d8f4a7a-4050-4496-8351-ba614f07b13e", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.040787Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "issues/create-comment", + "schema": { + "description": "Comments provide a way for people to collaborate on an issue.", + "properties": { + "author_association": { + "$ref": "#/components/schemas/author_association" + }, + "body": { + "description": "Contents of the issue comment", + "example": "What version of Safari were you using when you observed this bug?", + "type": "string" + }, + "body_html": { + "type": "string" + }, + "body_text": { + "type": "string" + }, + "created_at": { + "example": "2011-04-14T16:00:49Z", + "format": "date-time", + "type": "string" + }, + "html_url": { + "format": "uri", + "type": "string" + }, + "id": { + "description": "Unique identifier of the issue comment", + "example": 42, + "type": "integer" + }, + "issue_url": { + "format": "uri", + "type": "string" + }, + "node_id": { + "type": "string" + }, + "performed_via_github_app": { + "$ref": "#/components/schemas/nullable-integration" + }, + "reactions": { + "$ref": "#/components/schemas/reaction-rollup" + }, + "updated_at": { + "example": "2011-04-14T16:00:49Z", + "format": "date-time", + "type": "string" + }, + "url": { + "description": "URL for the issue comment", + "example": "https://api.github.com/repositories/42/issues/comments/1", + "format": "uri", + "type": "string" + }, + "user": { + "$ref": "#/components/schemas/nullable-simple-user" + } + }, + "required": [ + "id", + "node_id", + "html_url", + "issue_url", + "author_association", + "user", + "url", + "created_at", + "updated_at" + ], + "title": "Issue Comment", + "type": "object" + } + } + } + }, + "insertionIndex": 591 + }, + { + "id": "eb33de9d-61aa-4836-8003-b32296e08262", + "name": "List issue comments", + "request": { + "urlPath": "/repos/f9sxe0y8cqhpdgqd56sx1scn706q273ag3bfd7fcunxhv8fivolv2j6wz1je4kgtzm3tpfrg6xjq3mh0kkifdh2codox2s0ngpa005lglho4ficnxrb0d3/ube358qlogn4vhpu9oos7vxlztxv8885p8cwd7dkt5x412xtjva1ukek3zcgtxvvumr6fu6gtp9c3ov7gecsdanb0undghfuxewz5xw2kvoh17dcd8wsty8q65ur9czaunevko8ny/issues/949243754601576314/comments", + "method": "GET" + }, + "response": { + "status": 410, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/958868\",\n \"message\" : \"Qui eos est. Qui aliquid et neque aut aspernatur est ab. Facere ut eius. Assumenda modi atque aspernatur veritatis et quo impedit.\",\n \"url\" : \"https://web.example.mocklab.io/788001\",\n \"status\" : \"2i8zbfadunau00e637\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "eb33de9d-61aa-4836-8003-b32296e08262", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.040667Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "issues/list-comments", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 592 + }, + { + "id": "720c86ac-ecca-4706-90b6-bddff23ea8c6", + "name": "List issue comments", + "request": { + "urlPath": "/repos/6tbpu1vvyox7bexku7cvcq6emjccvf8tucb80hhd3r157pz1yibj1hnxlr9c85803dyd/jpjha6v0e5bvipaw8dskg70bklex1mdtz3td92v1opypu0e6bl0pssa7gr5tk4hvr5kxryzpsmuki5zxlmvfx05s0fgn6hoc/issues/8330333692677464621/comments", + "method": "GET" + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/886490\",\n \"message\" : \"Ex non assumenda minima rerum ut accusamus. Odio libero expedita velit. Consequuntur et quaerat nihil repellendus. Natus in id eos nemo ullam quia odit.\",\n \"url\" : \"https://web.example.mocklab.io/809083\",\n \"status\" : \"0tzecr49det49sybxeqcrgg6cxznxie457hzauisypdppwzv23l9yy9c0jhi0u6g3spb1ls\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "720c86ac-ecca-4706-90b6-bddff23ea8c6", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.040453Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "issues/list-comments", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 593 + }, + { + "id": "09f8ca2d-d457-46c2-a51b-259cb98c9c1c", + "name": "List issue comments - default", + "request": { + "urlPath": "/repos/9coko6ufqr1sirrta4uh7dann7ew2w3n6jxmhbcvq8abz8s8ufmlxlh9kdc5bn3glslfl29is73487gi56kzl40hd794yfxgm6dyan3shdxhj5j8b0jcjnfyealtxwzeb9cfipo9wx062xyix18byenksoojidapmtsr6az468jiut7gqazx49mjf39eesz7ffbu60wr/ivoujz6nf917ze0uyxu27aeehi98jv3lm0lxkunmjm2l3w0fsxlzlxnqqva1uo7z50majxavzosui6ocleigz85eayyfykgbnbnw9u7231vpgovc3sk1slfe9mi5bhm7ekg4ofbcdp4shuaq3admfqii6kwdxp2hscha6vt8zpl9xooho4v/issues/3174700635167048512/comments", + "method": "GET" + }, + "response": { + "status": 200, + "body": "[ {\n \"author_association\" : \"COLLABORATOR\",\n \"body\" : \"Me too\",\n \"created_at\" : \"2011-04-14T16:00:49Z\",\n \"html_url\" : \"https://github.com/octocat/Hello-World/issues/1347#issuecomment-1\",\n \"id\" : 1,\n \"issue_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347\",\n \"node_id\" : \"MDEyOklzc3VlQ29tbWVudDE=\",\n \"updated_at\" : \"2011-04-14T16:00:49Z\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/comments/1\",\n \"user\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n }\n} ]", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "09f8ca2d-d457-46c2-a51b-259cb98c9c1c", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.040234Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "issues/list-comments", + "schema": { + "items": { + "$ref": "#/components/schemas/issue-comment" + }, + "type": "array" + } + } + } + }, + "insertionIndex": 594 + }, + { + "id": "31287557-10c2-477a-bba4-fa5d2ac67ace", + "name": "Add assignees to an issue - default", + "request": { + "urlPath": "/repos/evnda6fwzc9a4ejn8mwg6uoardx4ic4byh5ltcdng/wreppfhon510zhdhcp7996vc9k92dotbv8peujz37ovcfb0nkvqiaqz4iybc51ug4x6lptn5moimezd13z1b337l8ft3nq4wfkj42l33ofjq7atomninoixtix25ez2n721/issues/7831304104907326972/assignees", + "method": "POST" + }, + "response": { + "status": 201, + "body": "{\n \"active_lock_reason\" : \"too heated\",\n \"assignee\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"assignees\" : [ {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n }, {\n \"avatar_url\" : \"https://github.com/images/error/hubot_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/hubot/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/hubot/followers\",\n \"following_url\" : \"https://api.github.com/users/hubot/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/hubot/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/hubot\",\n \"id\" : 1,\n \"login\" : \"hubot\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/hubot/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/hubot/received_events\",\n \"repos_url\" : \"https://api.github.com/users/hubot/repos\",\n \"site_admin\" : true,\n \"starred_url\" : \"https://api.github.com/users/hubot/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/hubot/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/hubot\"\n }, {\n \"avatar_url\" : \"https://github.com/images/error/other_user_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/other_user/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/other_user/followers\",\n \"following_url\" : \"https://api.github.com/users/other_user/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/other_user/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/other_user\",\n \"id\" : 1,\n \"login\" : \"other_user\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/other_user/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/other_user/received_events\",\n \"repos_url\" : \"https://api.github.com/users/other_user/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/other_user/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/other_user/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/other_user\"\n } ],\n \"author_association\" : \"COLLABORATOR\",\n \"body\" : \"I'm having a problem with this.\",\n \"comments\" : 0,\n \"comments_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347/comments\",\n \"created_at\" : \"2011-04-22T13:33:48Z\",\n \"events_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347/events\",\n \"html_url\" : \"https://github.com/octocat/Hello-World/issues/1347\",\n \"id\" : 1,\n \"labels\" : [ {\n \"color\" : \"f29513\",\n \"default\" : true,\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"name\" : \"bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/labels/bug\"\n } ],\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347/labels{/name}\",\n \"locked\" : true,\n \"milestone\" : {\n \"closed_at\" : \"2013-02-12T13:22:01Z\",\n \"closed_issues\" : 8,\n \"created_at\" : \"2011-04-10T20:09:31Z\",\n \"creator\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"description\" : \"Tracking milestone for version 1.0\",\n \"due_on\" : \"2012-10-09T23:39:01Z\",\n \"html_url\" : \"https://github.com/octocat/Hello-World/milestones/v1.0\",\n \"id\" : 1002604,\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones/1/labels\",\n \"node_id\" : \"MDk6TWlsZXN0b25lMTAwMjYwNA==\",\n \"number\" : 1,\n \"open_issues\" : 4,\n \"state\" : \"open\",\n \"title\" : \"v1.0\",\n \"updated_at\" : \"2014-03-03T18:58:10Z\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones/1\"\n },\n \"node_id\" : \"MDU6SXNzdWUx\",\n \"number\" : 1347,\n \"pull_request\" : {\n \"diff_url\" : \"https://github.com/octocat/Hello-World/pull/1347.diff\",\n \"html_url\" : \"https://github.com/octocat/Hello-World/pull/1347\",\n \"patch_url\" : \"https://github.com/octocat/Hello-World/pull/1347.patch\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/pulls/1347\"\n },\n \"repository_url\" : \"https://api.github.com/repos/octocat/Hello-World\",\n \"state\" : \"open\",\n \"title\" : \"Found a bug\",\n \"updated_at\" : \"2011-04-22T13:33:48Z\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347\",\n \"user\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n }\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "31287557-10c2-477a-bba4-fa5d2ac67ace", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.040162Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "issues/add-assignees", + "schema": { + "description": "Issue Simple", + "properties": { + "active_lock_reason": { + "example": "too heated", + "nullable": true, + "type": "string" + }, + "assignee": { + "$ref": "#/components/schemas/nullable-simple-user" + }, + "assignees": { + "items": { + "$ref": "#/components/schemas/simple-user" + }, + "nullable": true, + "type": "array" + }, + "author_association": { + "$ref": "#/components/schemas/author_association" + }, + "body": { + "example": "I'm having a problem with this.", + "type": "string" + }, + "body_html": { + "type": "string" + }, + "body_text": { + "type": "string" + }, + "closed_at": { + "format": "date-time", + "nullable": true, + "type": "string" + }, + "comments": { + "example": 0, + "type": "integer" + }, + "comments_url": { + "example": "https://api.github.com/repos/octocat/Hello-World/issues/1347/comments", + "format": "uri", + "type": "string" + }, + "created_at": { + "example": "2011-04-22T13:33:48Z", + "format": "date-time", + "type": "string" + }, + "events_url": { + "example": "https://api.github.com/repos/octocat/Hello-World/issues/1347/events", + "format": "uri", + "type": "string" + }, + "html_url": { + "example": "https://github.com/octocat/Hello-World/issues/1347", + "format": "uri", + "type": "string" + }, + "id": { + "example": 1, + "type": "integer" + }, + "labels": { + "items": { + "$ref": "#/components/schemas/label" + }, + "type": "array" + }, + "labels_url": { + "example": "https://api.github.com/repos/octocat/Hello-World/issues/1347/labels{/name}", + "type": "string" + }, + "locked": { + "example": true, + "type": "boolean" + }, + "milestone": { + "$ref": "#/components/schemas/nullable-milestone" + }, + "node_id": { + "example": "MDU6SXNzdWUx", + "type": "string" + }, + "number": { + "example": 1347, + "type": "integer" + }, + "performed_via_github_app": { + "$ref": "#/components/schemas/nullable-integration" + }, + "pull_request": { + "properties": { + "diff_url": { + "format": "uri", + "nullable": true, + "type": "string" + }, + "html_url": { + "format": "uri", + "nullable": true, + "type": "string" + }, + "merged_at": { + "format": "date-time", + "nullable": true, + "type": "string" + }, + "patch_url": { + "format": "uri", + "nullable": true, + "type": "string" + }, + "url": { + "format": "uri", + "nullable": true, + "type": "string" + } + }, + "required": ["diff_url", "html_url", "patch_url", "url"], + "type": "object" + }, + "repository": { + "$ref": "#/components/schemas/repository" + }, + "repository_url": { + "example": "https://api.github.com/repos/octocat/Hello-World", + "format": "uri", + "type": "string" + }, + "state": { + "example": "open", + "type": "string" + }, + "timeline_url": { + "format": "uri", + "type": "string" + }, + "title": { + "example": "Found a bug", + "type": "string" + }, + "updated_at": { + "example": "2011-04-22T13:33:48Z", + "format": "date-time", + "type": "string" + }, + "url": { + "example": "https://api.github.com/repos/octocat/Hello-World/issues/1347", + "format": "uri", + "type": "string" + }, + "user": { + "$ref": "#/components/schemas/nullable-simple-user" + } + }, + "required": [ + "assignee", + "closed_at", + "comments", + "comments_url", + "events_url", + "html_url", + "id", + "node_id", + "labels", + "labels_url", + "milestone", + "number", + "repository_url", + "state", + "locked", + "title", + "url", + "user", + "author_association", + "created_at", + "updated_at" + ], + "title": "Issue Simple", + "type": "object" + } + } + } + }, + "insertionIndex": 595 + }, + { + "id": "a82380fd-7745-41a4-9224-6e6f13973dfe", + "name": "Remove assignees from an issue - default", + "request": { + "urlPath": "/repos/uvofuizzd7z08m620umdyb0l3ffjrg2rknm8jgj6erv7xpkmj33sxh10q37fz3ehxawrx8nm4378gsgv/lmxkxbwx7hzdpp7wkvoosnbqfjmdbjsq8opyoxm13sp8n2my57393lfw1v30mxfcsjju0ktd196ct3d1xm5w9sgfbf9fiqn10nv2upfxopafclgtbcffnupc5z8fyyhd2s0wxfsg93plqwaq9ay94oqzmrogv4/issues/2832534864533961597/assignees", + "method": "DELETE" + }, + "response": { + "status": 200, + "body": "{\n \"active_lock_reason\" : \"too heated\",\n \"assignee\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"assignees\" : [ {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n }, {\n \"avatar_url\" : \"https://github.com/images/error/hubot_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/hubot/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/hubot/followers\",\n \"following_url\" : \"https://api.github.com/users/hubot/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/hubot/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/hubot\",\n \"id\" : 1,\n \"login\" : \"hubot\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/hubot/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/hubot/received_events\",\n \"repos_url\" : \"https://api.github.com/users/hubot/repos\",\n \"site_admin\" : true,\n \"starred_url\" : \"https://api.github.com/users/hubot/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/hubot/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/hubot\"\n }, {\n \"avatar_url\" : \"https://github.com/images/error/other_user_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/other_user/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/other_user/followers\",\n \"following_url\" : \"https://api.github.com/users/other_user/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/other_user/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/other_user\",\n \"id\" : 1,\n \"login\" : \"other_user\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/other_user/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/other_user/received_events\",\n \"repos_url\" : \"https://api.github.com/users/other_user/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/other_user/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/other_user/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/other_user\"\n } ],\n \"author_association\" : \"COLLABORATOR\",\n \"body\" : \"I'm having a problem with this.\",\n \"comments\" : 0,\n \"comments_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347/comments\",\n \"created_at\" : \"2011-04-22T13:33:48Z\",\n \"events_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347/events\",\n \"html_url\" : \"https://github.com/octocat/Hello-World/issues/1347\",\n \"id\" : 1,\n \"labels\" : [ {\n \"color\" : \"f29513\",\n \"default\" : true,\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"name\" : \"bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/labels/bug\"\n } ],\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347/labels{/name}\",\n \"locked\" : true,\n \"milestone\" : {\n \"closed_at\" : \"2013-02-12T13:22:01Z\",\n \"closed_issues\" : 8,\n \"created_at\" : \"2011-04-10T20:09:31Z\",\n \"creator\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"description\" : \"Tracking milestone for version 1.0\",\n \"due_on\" : \"2012-10-09T23:39:01Z\",\n \"html_url\" : \"https://github.com/octocat/Hello-World/milestones/v1.0\",\n \"id\" : 1002604,\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones/1/labels\",\n \"node_id\" : \"MDk6TWlsZXN0b25lMTAwMjYwNA==\",\n \"number\" : 1,\n \"open_issues\" : 4,\n \"state\" : \"open\",\n \"title\" : \"v1.0\",\n \"updated_at\" : \"2014-03-03T18:58:10Z\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones/1\"\n },\n \"node_id\" : \"MDU6SXNzdWUx\",\n \"number\" : 1347,\n \"pull_request\" : {\n \"diff_url\" : \"https://github.com/octocat/Hello-World/pull/1347.diff\",\n \"html_url\" : \"https://github.com/octocat/Hello-World/pull/1347\",\n \"patch_url\" : \"https://github.com/octocat/Hello-World/pull/1347.patch\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/pulls/1347\"\n },\n \"repository_url\" : \"https://api.github.com/repos/octocat/Hello-World\",\n \"state\" : \"open\",\n \"title\" : \"Found a bug\",\n \"updated_at\" : \"2011-04-22T13:33:48Z\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347\",\n \"user\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n }\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "a82380fd-7745-41a4-9224-6e6f13973dfe", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.039937Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "issues/remove-assignees", + "schema": { + "description": "Issue Simple", + "properties": { + "active_lock_reason": { + "example": "too heated", + "nullable": true, + "type": "string" + }, + "assignee": { + "$ref": "#/components/schemas/nullable-simple-user" + }, + "assignees": { + "items": { + "$ref": "#/components/schemas/simple-user" + }, + "nullable": true, + "type": "array" + }, + "author_association": { + "$ref": "#/components/schemas/author_association" + }, + "body": { + "example": "I'm having a problem with this.", + "type": "string" + }, + "body_html": { + "type": "string" + }, + "body_text": { + "type": "string" + }, + "closed_at": { + "format": "date-time", + "nullable": true, + "type": "string" + }, + "comments": { + "example": 0, + "type": "integer" + }, + "comments_url": { + "example": "https://api.github.com/repos/octocat/Hello-World/issues/1347/comments", + "format": "uri", + "type": "string" + }, + "created_at": { + "example": "2011-04-22T13:33:48Z", + "format": "date-time", + "type": "string" + }, + "events_url": { + "example": "https://api.github.com/repos/octocat/Hello-World/issues/1347/events", + "format": "uri", + "type": "string" + }, + "html_url": { + "example": "https://github.com/octocat/Hello-World/issues/1347", + "format": "uri", + "type": "string" + }, + "id": { + "example": 1, + "type": "integer" + }, + "labels": { + "items": { + "$ref": "#/components/schemas/label" + }, + "type": "array" + }, + "labels_url": { + "example": "https://api.github.com/repos/octocat/Hello-World/issues/1347/labels{/name}", + "type": "string" + }, + "locked": { + "example": true, + "type": "boolean" + }, + "milestone": { + "$ref": "#/components/schemas/nullable-milestone" + }, + "node_id": { + "example": "MDU6SXNzdWUx", + "type": "string" + }, + "number": { + "example": 1347, + "type": "integer" + }, + "performed_via_github_app": { + "$ref": "#/components/schemas/nullable-integration" + }, + "pull_request": { + "properties": { + "diff_url": { + "format": "uri", + "nullable": true, + "type": "string" + }, + "html_url": { + "format": "uri", + "nullable": true, + "type": "string" + }, + "merged_at": { + "format": "date-time", + "nullable": true, + "type": "string" + }, + "patch_url": { + "format": "uri", + "nullable": true, + "type": "string" + }, + "url": { + "format": "uri", + "nullable": true, + "type": "string" + } + }, + "required": ["diff_url", "html_url", "patch_url", "url"], + "type": "object" + }, + "repository": { + "$ref": "#/components/schemas/repository" + }, + "repository_url": { + "example": "https://api.github.com/repos/octocat/Hello-World", + "format": "uri", + "type": "string" + }, + "state": { + "example": "open", + "type": "string" + }, + "timeline_url": { + "format": "uri", + "type": "string" + }, + "title": { + "example": "Found a bug", + "type": "string" + }, + "updated_at": { + "example": "2011-04-22T13:33:48Z", + "format": "date-time", + "type": "string" + }, + "url": { + "example": "https://api.github.com/repos/octocat/Hello-World/issues/1347", + "format": "uri", + "type": "string" + }, + "user": { + "$ref": "#/components/schemas/nullable-simple-user" + } + }, + "required": [ + "assignee", + "closed_at", + "comments", + "comments_url", + "events_url", + "html_url", + "id", + "node_id", + "labels", + "labels_url", + "milestone", + "number", + "repository_url", + "state", + "locked", + "title", + "url", + "user", + "author_association", + "created_at", + "updated_at" + ], + "title": "Issue Simple", + "type": "object" + } + } + } + }, + "insertionIndex": 596 + }, + { + "id": "d689fc83-da57-4437-8f51-341b57bcf955", + "name": "Update an issue", + "request": { + "urlPath": "/repos/htc0s49231danncv2466vun0f0u75l0q5p4dg9hcoqkhkru4o82yjrq2gxg9b6lutuhy0vowzkxfxxqb46pvcu6q9kilvlocyl2wbxvg7esauza1u5vt6bw7a6r26nl4zxhmi39kktd4bzysom00hjc2mrleb9hepo17bo7ysss50nibogvn249q92mbp1oj/fwkvnlsubtnikyai0e3pudc8ycjue33pu7b62elscmk65ckuumd3lrjng21ihnwiod0kmj6186xi0jb6wnfh2u1qbiunt5yt7a4f7f944b55d7o5nd9fvs6mskzdkbcuhqmhcqlmm7lnk7vll4kyqm/issues/7563292470402592353", + "method": "PATCH" + }, + "response": { + "status": 503, + "body": "{\n \"code\" : \"bfzvlauhomr\",\n \"documentation_url\" : \"https://web.example.mocklab.io/526681\",\n \"message\" : \"Dicta rerum molestiae porro. Dolorum explicabo ullam quisquam quos id perspiciatis id. Cupiditate id soluta illum eos odio.\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "d689fc83-da57-4437-8f51-341b57bcf955", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.039675Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "issues/update", + "schema": { + "properties": { + "code": { + "type": "string" + }, + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "type": "object" + } + } + } + }, + "insertionIndex": 597 + }, + { + "id": "39655db2-6150-4a3e-85fe-3dcbba70316c", + "name": "Update an issue", + "request": { + "urlPath": "/repos/ssc1zxcvhn0mfhm92psuseo9ng4bl4mucci5p8/rj6cteqmudl55utyj7y0utgzib0g8908zlxw9sz4yz08gqd6u0mbnpxa8cnjuwnmjlcmzh15ip8upugerhs1brexgbltgio8uwu57cbj4msuyirxiuwjkm44jntxo9ecpph71vukqveea3ijy9i1gd74xth51rx18lvy91c/issues/4010391024465931442", + "method": "PATCH" + }, + "response": { + "status": 422, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/216363\",\n \"message\" : \"Fugit molestiae ipsum corrupti. Hic autem cumque labore aperiam laborum voluptatum in. Eum modi corporis earum. Blanditiis incidunt hic.\",\n \"errors\" : [ {\n \"code\" : \"un90mb893i8c46i14roata1zrmgzwh64won2ibo1t03i96elmm5wglu7q16rc7a1jet6cb9t6wm6ej2h8b3y3qs0eg736fkpd0ym1hehaqpfizghrz42zo0i3iasm9ezmnuoxfbvdplre0m22mptffbahn3s3u6gk7iuv8sicq\",\n \"field\" : \"99elb2zutn55i9v1whhfjhhmfxsk4aops3cq34ijas25o3fqj0vjsyqsnx\",\n \"resource\" : \"xosa\",\n \"index\" : 3084976689723573034,\n \"message\" : \"Tenetur dolore aliquid quas. Aperiam laborum omnis blanditiis officia sunt sint. Dolores perspiciatis non quia perferendis omnis neque eius. Nobis necessitatibus quos voluptatem iste perspiciatis reic\",\n \"value\" : { }\n }, {\n \"code\" : \"chyrsq8z3d1b54w33wktf518jlj57u2105xu6ntxm2992nez8odtxp21f5mutj1qv25tivyl9envr87ylfxb1zalxak21olkndyzq7efewzuo1fbyutmpj6mj635ff2fuhd0rfk0no5mgn6cjknjxoij7sq72tbziapew3jyrfijb\",\n \"field\" : \"3lc7xliogmzxffuuhslliovg3l80rz73phnlhjr8al3ne9zzqcjemhpodjcbe6q6qyx6ug36o\",\n \"resource\" : \"fgffkj3hwr3qhnhjjfe6773fm2pyn3vs63euclp1o4gz1fwff7dhwlixnv2ibto7qdqyyd89uxz77hxe9srj1nlkwpni1c204qjr\",\n \"index\" : 8082270764432163528,\n \"message\" : \"Consequatur quas doloribus. Nesciunt cumque sint fugiat non ut omnis repellendus. Et tempora et id commodi quidem minima voluptas. Iure asperiores quia quaerat sed doloribus.\",\n \"value\" : { }\n }, {\n \"code\" : \"w44sniby9l7fadbbo5gy4t0aadcbw24je3hd3canjvgfofhmky0wz04htubxfh9wdnat5l0wcc2bd53ykrncgvh26cxai3hc0rfpr4qhtge1k7d7lp1lowco44f9tu7vk8ucef2vhksqtdk1nzlzg9r9ck9mwnjlfz87yc2cl2vl3i2wkhbj2rs0ti7i365uo1wtg\",\n \"field\" : \"zzar21fv11s9ri44clg66grianbhhvxckwdiu7df0h0glcbyt06z1k6sczfpk22xpyxe3vx6zjmaz19kzloa568\",\n \"resource\" : \"iknpaobl7ywzhjqd6tr5j97tjtxtbp19ulppgt33jdivhodrtxx2obawobyrp4qb08ydluf252jo2mtbf\",\n \"index\" : 4530216839898672427,\n \"message\" : \"Quam aut reiciendis perspiciatis. Exercitationem repudiandae maiores ut. Et nobis doloribus. Rerum ea inventore mollitia voluptatem.\",\n \"value\" : { }\n }, {\n \"code\" : \"o9albxiy1pzqo312yfbpoog229brmub6431q1neqb9wik4bj0adaugndkc8eeg5pxzftgyciwd5yi0u5qko44bvvepfnca5w090m6ujrcgm9wowen70avlp0db06774f0pwuumxxbeko6foswa95ex8\",\n \"field\" : \"2yafg587uewyrl1adjux4ycojqy2hd1t17zpx5b5t8q1kvnyteppwh\",\n \"resource\" : \"4n9aff4buzxsmxxe6c2sgn7wsqu8k4qdsi66a5hnqfg6p7m7w61c1ank82ia898rxo6fa3d5pgh\",\n \"index\" : 7177332159651446067,\n \"message\" : \"Repellat deleniti at laboriosam sed. Praesentium dolores dolorem eligendi autem quas. Maxime ut necessitatibus et nesciunt.\",\n \"value\" : { }\n } ]\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "39655db2-6150-4a3e-85fe-3dcbba70316c", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.039491Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "issues/update", + "schema": { + "description": "Validation Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "errors": { + "items": { + "properties": { + "code": { + "type": "string" + }, + "field": { + "type": "string" + }, + "index": { + "type": "integer" + }, + "message": { + "type": "string" + }, + "resource": { + "type": "string" + }, + "value": { + "oneOf": [ + { + "nullable": true, + "type": "string" + }, + { + "nullable": true, + "type": "integer" + }, + { + "items": { + "type": "string" + }, + "nullable": true, + "type": "array" + } + ] + } + }, + "required": ["code"], + "type": "object" + }, + "type": "array" + }, + "message": { + "type": "string" + } + }, + "required": ["message", "documentation_url"], + "title": "Validation Error", + "type": "object" + } + } + } + }, + "insertionIndex": 598 + }, + { + "id": "b53289ac-e68f-48cc-ad3b-a2935b12b7bb", + "name": "Update an issue", + "request": { + "urlPath": "/repos/pnvu559fsg41e7oqlr2i3pxk6xc4dv2ftm485sxj6174yladftfy5aflx5ep2qv8vgy25r9qnx8087kdqfbe9oawmif56gyc38wvjcsu44ulghpqc6/6v2se9xtf9juorj1lj27kavas32dja3524bmzukefvpezwxg77xwjemzyiahto2mv756hkwf2g08s0yf1v/issues/8625772037037217769", + "method": "PATCH" + }, + "response": { + "status": 410, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/452802\",\n \"message\" : \"Sit perspiciatis corrupti. In exercitationem sint alias ea occaecati a. Quidem fugit eligendi veritatis harum hic qui. Dignissimos rem aut voluptas sunt. Eum distinctio velit.\",\n \"url\" : \"https://web.example.mocklab.io/719008\",\n \"status\" : \"xcsen6wxvzc30r9hpqb0jqlzhuqlb66teg4m2z3z3y8nlptqx5o4hykmhbs0t8f2nj3fp22ssp8iwub04tmzu5cvwup7qcuqwmi6lj1a2l9v8xlzkjir296fubv4jo8tdsfzdub48tmba8gvvnm\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "b53289ac-e68f-48cc-ad3b-a2935b12b7bb", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.038971Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "issues/update", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 599 + }, + { + "id": "9cb0b878-840b-46b9-9491-0e810bf9daca", + "name": "Update an issue", + "request": { + "urlPath": "/repos/jqacw9c89mtxfaauv6cykwru7oh0yny53ztgrhqqz8gav73byba8a73cllnr6yd5idcqywcmtgf4ghpy6r9/2nwacrf64lf7iynwb4wwvp4tbfq7jqewiovvt1l9kq01xhhl/issues/2929374352119752919", + "method": "PATCH" + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/721444\",\n \"message\" : \"Ut modi aliquam dolor et necessitatibus. Quaerat natus quam. Non autem eveniet a eos deleniti quos est. Quas quia dignissimos nobis illo non consequuntur sit.\",\n \"url\" : \"https://web.example.mocklab.io/033915\",\n \"status\" : \"y4v7pptuq6ew7xngwch6z87ey9vhyo2ijeiec2bhtv9tocu9y38r35mf0fkk1sh2qj9aw0sxnou7u0l1cocj046rnw9bfylyk5k6xmrvomfoayrm5in9wqibr4w69k6uzekkicxq406abdlnfnkb7q3r0u7tqhac8e8bb3ajesuf5pbq\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "9cb0b878-840b-46b9-9491-0e810bf9daca", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.038758Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "issues/update", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 600 + }, + { + "id": "2fb76a86-ab5d-4bd7-99a6-dedfac1fdd01", + "name": "Update an issue", + "request": { + "urlPath": "/repos/guptds5vmpx8jy3elxkz6v27qm5r4lnghsgfywcwpxglepxbhtddi62ua8tpwfokhz5uuc7insyhdjzc8hmyge1cekywkbs2hhmqqp62u52f9tqbate6nrxvqg3z2gromgubmqhsoe972fqp05lu8czluiwqybteh22ud/fltee83ywql0356cmwy0i0r4h65zudy28saddxqo79obnsj836djbgw4ft5ang0su7g41em9lymq5aey4r1v60fl9oecbspame5z59acm/issues/4110766467015786550", + "method": "PATCH" + }, + "response": { + "status": 403, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/969112\",\n \"message\" : \"Aut magni eius omnis. Voluptatem eos nihil. Repellendus voluptas aliquam ut ab consequatur consequatur dicta. Sunt cum fugit asperiores delectus non. Maxime ut omnis.\",\n \"url\" : \"https://web.example.mocklab.io/062687\",\n \"status\" : \"clmlqjyr18mh9qv56au6psstw4gga30cecwgv0hyytkce8nnk0huas7u1fwjrmt6gqytu8054f7jk2x34rmpicb1ssyegq0wq7qwoiehbxmc7yznx4fkpspy3gb6v\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "2fb76a86-ab5d-4bd7-99a6-dedfac1fdd01", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.03855Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "issues/update", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 601 + }, + { + "id": "f66db218-a606-4a45-a935-7799fbe68efa", + "name": "Update an issue", + "request": { + "urlPath": "/repos/e1nbfq4hefkhnr6zglswcrzgzzgk6mbrtv24s92nc/ybmdmhscvwth3zcow3ye5jnommwokr6sifz9mjg3z53vzp65qh1lotuu0q4dx5q04sl7ouoxowkz751aeikr5a7444nf7wtmeytuvnfd8gjrkv0qi9d93nmzqvaixv6imod0ngen/issues/7534784558608544286", + "method": "PATCH" + }, + "response": { + "status": 301, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/688518\",\n \"message\" : \"Amet eos ducimus natus quam et. Et omnis molestiae sunt exercitationem optio iste. Facere molestiae sed labore consequatur.\",\n \"url\" : \"https://web.example.mocklab.io/393502\",\n \"status\" : \"smr93wops7fny5w1envu0c3t8sddf7ynp2vyt3pso41xmx2he75fw1fdu738hubsqn9qxs9eccy76cma8qgupbyimm7u4vbluylpj07r2365pbkzwefme9jxu69ew1zgqu8ugdp9cp14vh7pdl6fc0\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "f66db218-a606-4a45-a935-7799fbe68efa", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.038338Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "issues/update", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 602 + }, + { + "id": "11bcc8f7-b0e9-4398-95b8-36ce28158a01", + "name": "Update an issue - default", + "request": { + "urlPath": "/repos/k0oqxjl1i4qjjdfk9ygfk9jmy4otft260ie8li6lcxv6nw70it651umu90276gwryp2b1q2u0ojgtjgwlypzdwcrojxp9prsciv/3n6r99tdfrvbvby4hd4uhrenrygtnamcbtiekasqaqbyhlmqhhksxb01gvy48nnowd0tqu23iqsx2tepg1nd1rcrkggqbkvwxyd0iqj109vej0qugs8oeek7vllz7/issues/8658350772106894673", + "method": "PATCH" + }, + "response": { + "status": 200, + "body": "{\n \"active_lock_reason\" : \"too heated\",\n \"assignee\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"assignees\" : [ {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n } ],\n \"author_association\" : \"COLLABORATOR\",\n \"body\" : \"I'm having a problem with this.\",\n \"closed_by\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"comments\" : 0,\n \"comments_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347/comments\",\n \"created_at\" : \"2011-04-22T13:33:48Z\",\n \"events_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347/events\",\n \"html_url\" : \"https://github.com/octocat/Hello-World/issues/1347\",\n \"id\" : 1,\n \"labels\" : [ {\n \"color\" : \"f29513\",\n \"default\" : true,\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"name\" : \"bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/labels/bug\"\n } ],\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347/labels{/name}\",\n \"locked\" : true,\n \"milestone\" : {\n \"closed_at\" : \"2013-02-12T13:22:01Z\",\n \"closed_issues\" : 8,\n \"created_at\" : \"2011-04-10T20:09:31Z\",\n \"creator\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"description\" : \"Tracking milestone for version 1.0\",\n \"due_on\" : \"2012-10-09T23:39:01Z\",\n \"html_url\" : \"https://github.com/octocat/Hello-World/milestones/v1.0\",\n \"id\" : 1002604,\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones/1/labels\",\n \"node_id\" : \"MDk6TWlsZXN0b25lMTAwMjYwNA==\",\n \"number\" : 1,\n \"open_issues\" : 4,\n \"state\" : \"open\",\n \"title\" : \"v1.0\",\n \"updated_at\" : \"2014-03-03T18:58:10Z\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones/1\"\n },\n \"node_id\" : \"MDU6SXNzdWUx\",\n \"number\" : 1347,\n \"pull_request\" : {\n \"diff_url\" : \"https://github.com/octocat/Hello-World/pull/1347.diff\",\n \"html_url\" : \"https://github.com/octocat/Hello-World/pull/1347\",\n \"patch_url\" : \"https://github.com/octocat/Hello-World/pull/1347.patch\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/pulls/1347\"\n },\n \"repository_url\" : \"https://api.github.com/repos/octocat/Hello-World\",\n \"state\" : \"open\",\n \"title\" : \"Found a bug\",\n \"updated_at\" : \"2011-04-22T13:33:48Z\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347\",\n \"user\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n }\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "11bcc8f7-b0e9-4398-95b8-36ce28158a01", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.038112Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "issues/update", + "schema": { + "description": "Issues are a great way to keep track of tasks, enhancements, and bugs for your projects.", + "properties": { + "active_lock_reason": { + "nullable": true, + "type": "string" + }, + "assignee": { + "$ref": "#/components/schemas/nullable-simple-user" + }, + "assignees": { + "items": { + "$ref": "#/components/schemas/simple-user" + }, + "nullable": true, + "type": "array" + }, + "author_association": { + "$ref": "#/components/schemas/author_association" + }, + "body": { + "description": "Contents of the issue", + "example": "It looks like the new widget form is broken on Safari. When I try and create the widget, Safari crashes. This is reproducible on 10.8, but not 10.9. Maybe a browser bug?", + "nullable": true, + "type": "string" + }, + "body_html": { + "type": "string" + }, + "body_text": { + "type": "string" + }, + "closed_at": { + "format": "date-time", + "nullable": true, + "type": "string" + }, + "closed_by": { + "$ref": "#/components/schemas/nullable-simple-user" + }, + "comments": { + "type": "integer" + }, + "comments_url": { + "format": "uri", + "type": "string" + }, + "created_at": { + "format": "date-time", + "type": "string" + }, + "events_url": { + "format": "uri", + "type": "string" + }, + "html_url": { + "format": "uri", + "type": "string" + }, + "id": { + "type": "integer" + }, + "labels": { + "description": "Labels to associate with this issue; pass one or more label names to replace the set of labels on this issue; send an empty array to clear all labels from the issue; note that the labels are silently dropped for users without push access to the repository", + "example": ["bug", "registration"], + "items": { + "oneOf": [ + { + "type": "string" + }, + { + "properties": { + "color": { + "nullable": true, + "type": "string" + }, + "default": { + "type": "boolean" + }, + "description": { + "nullable": true, + "type": "string" + }, + "id": { + "format": "int64", + "type": "integer" + }, + "name": { + "type": "string" + }, + "node_id": { + "type": "string" + }, + "url": { + "format": "uri", + "type": "string" + } + }, + "type": "object" + } + ] + }, + "type": "array" + }, + "labels_url": { + "type": "string" + }, + "locked": { + "type": "boolean" + }, + "milestone": { + "$ref": "#/components/schemas/nullable-milestone" + }, + "node_id": { + "type": "string" + }, + "number": { + "description": "Number uniquely identifying the issue within its repository", + "example": 42, + "type": "integer" + }, + "performed_via_github_app": { + "$ref": "#/components/schemas/nullable-integration" + }, + "pull_request": { + "properties": { + "diff_url": { + "format": "uri", + "nullable": true, + "type": "string" + }, + "html_url": { + "format": "uri", + "nullable": true, + "type": "string" + }, + "merged_at": { + "format": "date-time", + "nullable": true, + "type": "string" + }, + "patch_url": { + "format": "uri", + "nullable": true, + "type": "string" + }, + "url": { + "format": "uri", + "nullable": true, + "type": "string" + } + }, + "required": ["diff_url", "html_url", "patch_url", "url"], + "type": "object" + }, + "reactions": { + "$ref": "#/components/schemas/reaction-rollup" + }, + "repository": { + "$ref": "#/components/schemas/repository" + }, + "repository_url": { + "format": "uri", + "type": "string" + }, + "state": { + "description": "State of the issue; either 'open' or 'closed'", + "example": "open", + "type": "string" + }, + "timeline_url": { + "format": "uri", + "type": "string" + }, + "title": { + "description": "Title of the issue", + "example": "Widget creation fails in Safari on OS X 10.8", + "type": "string" + }, + "updated_at": { + "format": "date-time", + "type": "string" + }, + "url": { + "description": "URL for the issue", + "example": "https://api.github.com/repositories/42/issues/1", + "format": "uri", + "type": "string" + }, + "user": { + "$ref": "#/components/schemas/nullable-simple-user" + } + }, + "required": [ + "assignee", + "closed_at", + "comments", + "comments_url", + "events_url", + "html_url", + "id", + "node_id", + "labels", + "labels_url", + "milestone", + "number", + "repository_url", + "state", + "locked", + "title", + "url", + "user", + "author_association", + "created_at", + "updated_at" + ], + "title": "Issue", + "type": "object" + } + } + } + }, + "insertionIndex": 603 + }, + { + "id": "e9b36944-6c11-464d-9c61-e0e39983a63c", + "name": "Get an issue (application/json)", + "request": { + "urlPath": "/repos/kitmbf0deuckolv1qij7qr4ayxx6iy34v5vzeo5dt8lrhyqpyr2zz2u4qxeowx1l5sfr7y8upwrahknlb12ldgzw3h2oybzdqnbjmchu5l15ngk65q7fygxy70jjha7466r26rkj5nb8gt3rwlas/59u0w2l4y16da6zuauk2zf69yyul4ol6t18nyh4xh403ame3sw9jq2n3sywghqzfq6t0rl9x6i5ri28lg1pt0z9rpaevvey388rroo8awmqejfivsmqx6mbhxz1/issues/1703069617039762812", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 410, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/620392\",\n \"message\" : \"Reiciendis quia dolor placeat quod explicabo ipsum reiciendis. Voluptates vero corporis enim fugiat magnam. Qui qui quibusdam et provident est necessitatibus. Assumenda sit explicabo sed quis culpa qu\",\n \"url\" : \"https://web.example.mocklab.io/428889\",\n \"status\" : \"1unm026clbkby3pcdurq8btv8b7wt2rqxt2ai9x1jf08nzwtrq56ybz4cfjo0ze9cv93iovrvic9c9kv6ulzd7bwxb8ygfoss2mwgk1qy0sx549rpiacrgcvvgw5avwb1kjrodvic58d0d66z2baa5rd2jhys6ne54jgjb8jxqcb3wjutr6vq4rimixcwl45zq6vwhxl\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "e9b36944-6c11-464d-9c61-e0e39983a63c", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.037814Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "issues/get", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 604 + }, + { + "id": "f9ca9efc-588e-4f02-8315-10c73e09bc6a", + "name": "Get an issue (application/json)", + "request": { + "urlPath": "/repos/3yao4oxn6b0uaxx56893lz6xe49pq0ldg6im4uv9pbz1zg0bv0sm245dyyzgcp40r4nk3w852990solnt85znn8umh9d4dosx3i5c1272a41w5xbboihloyb7pz9if5dk4ieb/qt2tzb3kjp7c5ygjwm04ajkouo7922bzcypbp3b11x6iefpcvuke8qo7giraggcofnyf4hq37m9n0b3qz3xkpgo4oia00a8k6mnondqlamwzgd/issues/8075292671929320830", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/237576\",\n \"message\" : \"Iste sapiente debitis hic corrupti tenetur dolore corporis. Quae natus dolorem. Eveniet amet labore totam. Animi eos voluptatem. Enim eaque sint rerum maiores rerum inventore ratione.\",\n \"url\" : \"https://web.example.mocklab.io/055074\",\n \"status\" : \"ucyw4qu7o1rqxwpf5u7bzxxhb6tq5y6ucsj1iodk0gkkw2ref7cc6ry38ubrlqa03v2fyg51c8n8q6jpxlgds564irs7ybv2gg1r0566lkgaj05lu0f0nium1eafdgvdqdgvgv9zizu2b12pe3prpr4e4\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "f9ca9efc-588e-4f02-8315-10c73e09bc6a", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.037591Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "issues/get", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 605 + }, + { + "id": "8f210a24-bf0e-428c-bae7-7118dde67f77", + "name": "Get an issue - 304", + "request": { + "urlPath": "/repos/4pmkv4108r3yj839jpskw1hbhn78mv49zr5p/6596220ufva8e19nw2hxtln23j9iny20vbl031e53hbe5p7w9wlysstcrvn4pgva0024qlvbz6o6gvs5qgxd12mv52bq2va30aes15b1c6c7kude1v5nwmpvodw3eteezoc88iepoaviw4aj5zif0/issues/4214685951237464379", + "method": "GET" + }, + "response": { + "status": 304 + }, + "uuid": "8f210a24-bf0e-428c-bae7-7118dde67f77", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.037374Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "issues/get" + } + } + }, + "insertionIndex": 606 + }, + { + "id": "9ce99e35-98b9-49b6-83fb-76412a1b8352", + "name": "Get an issue (application/json)", + "request": { + "urlPath": "/repos/verxemsg4d5o48diga1zq0f4t2tr00z2j5cstk5d75cgxmwsyn6e6bcvpemyothasyzdf9mc1/d8nvp6o8d6cp7e8rtyj1tmyhfqtcpmbl7oz3x0neuruf69n3k9uxnjia45w663a99atsrpylt277y33jrgb0z1h5mxn5ej8u9uwyq4xmm8i13oghxyszprt1j7ng0oh72x8ao2kq/issues/7522644380317982163", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 301, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/217538\",\n \"message\" : \"Nostrum quos incidunt. Provident atque sunt tempora architecto porro. Dolore sint rem unde quia nam ducimus eum.\",\n \"url\" : \"https://web.example.mocklab.io/441379\",\n \"status\" : \"vfgjh667d219j2itu45cdzrba4w03r8ir8lbq52h57ohp92sq4yl7dvwdh6tqmyw1w4qvzva4\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "9ce99e35-98b9-49b6-83fb-76412a1b8352", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.03733Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "issues/get", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 607 + }, + { + "id": "11c71c76-268e-41eb-b75b-e4ecfae427b3", + "name": "Get an issue (application/json) - default", + "request": { + "urlPath": "/repos/ht0yjej9xw2jvwfjvn1g48qcch7rtifma89vbyermvesmr0sanpis4ecoodajldvhfsvm135urh3lfgj2xs4oe1iyxpb8mhoep8olmy5232hstsb2he263hn1el82wlt27686lk/t78yg4629320s3017t665x5tszt8d13i9ghe85dzqx76lsl/issues/2046064954979361624", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 200, + "body": "{\n \"active_lock_reason\" : \"too heated\",\n \"assignee\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"assignees\" : [ {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n } ],\n \"author_association\" : \"COLLABORATOR\",\n \"body\" : \"I'm having a problem with this.\",\n \"closed_by\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"comments\" : 0,\n \"comments_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347/comments\",\n \"created_at\" : \"2011-04-22T13:33:48Z\",\n \"events_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347/events\",\n \"html_url\" : \"https://github.com/octocat/Hello-World/issues/1347\",\n \"id\" : 1,\n \"labels\" : [ {\n \"color\" : \"f29513\",\n \"default\" : true,\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"name\" : \"bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/labels/bug\"\n } ],\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347/labels{/name}\",\n \"locked\" : true,\n \"milestone\" : {\n \"closed_at\" : \"2013-02-12T13:22:01Z\",\n \"closed_issues\" : 8,\n \"created_at\" : \"2011-04-10T20:09:31Z\",\n \"creator\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"description\" : \"Tracking milestone for version 1.0\",\n \"due_on\" : \"2012-10-09T23:39:01Z\",\n \"html_url\" : \"https://github.com/octocat/Hello-World/milestones/v1.0\",\n \"id\" : 1002604,\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones/1/labels\",\n \"node_id\" : \"MDk6TWlsZXN0b25lMTAwMjYwNA==\",\n \"number\" : 1,\n \"open_issues\" : 4,\n \"state\" : \"open\",\n \"title\" : \"v1.0\",\n \"updated_at\" : \"2014-03-03T18:58:10Z\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones/1\"\n },\n \"node_id\" : \"MDU6SXNzdWUx\",\n \"number\" : 1347,\n \"pull_request\" : {\n \"diff_url\" : \"https://github.com/octocat/Hello-World/pull/1347.diff\",\n \"html_url\" : \"https://github.com/octocat/Hello-World/pull/1347\",\n \"patch_url\" : \"https://github.com/octocat/Hello-World/pull/1347.patch\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/pulls/1347\"\n },\n \"repository_url\" : \"https://api.github.com/repos/octocat/Hello-World\",\n \"state\" : \"open\",\n \"title\" : \"Found a bug\",\n \"updated_at\" : \"2011-04-22T13:33:48Z\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347\",\n \"user\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n }\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "11c71c76-268e-41eb-b75b-e4ecfae427b3", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.037097Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "issues/get", + "schema": { + "description": "Issues are a great way to keep track of tasks, enhancements, and bugs for your projects.", + "properties": { + "active_lock_reason": { + "nullable": true, + "type": "string" + }, + "assignee": { + "$ref": "#/components/schemas/nullable-simple-user" + }, + "assignees": { + "items": { + "$ref": "#/components/schemas/simple-user" + }, + "nullable": true, + "type": "array" + }, + "author_association": { + "$ref": "#/components/schemas/author_association" + }, + "body": { + "description": "Contents of the issue", + "example": "It looks like the new widget form is broken on Safari. When I try and create the widget, Safari crashes. This is reproducible on 10.8, but not 10.9. Maybe a browser bug?", + "nullable": true, + "type": "string" + }, + "body_html": { + "type": "string" + }, + "body_text": { + "type": "string" + }, + "closed_at": { + "format": "date-time", + "nullable": true, + "type": "string" + }, + "closed_by": { + "$ref": "#/components/schemas/nullable-simple-user" + }, + "comments": { + "type": "integer" + }, + "comments_url": { + "format": "uri", + "type": "string" + }, + "created_at": { + "format": "date-time", + "type": "string" + }, + "events_url": { + "format": "uri", + "type": "string" + }, + "html_url": { + "format": "uri", + "type": "string" + }, + "id": { + "type": "integer" + }, + "labels": { + "description": "Labels to associate with this issue; pass one or more label names to replace the set of labels on this issue; send an empty array to clear all labels from the issue; note that the labels are silently dropped for users without push access to the repository", + "example": ["bug", "registration"], + "items": { + "oneOf": [ + { + "type": "string" + }, + { + "properties": { + "color": { + "nullable": true, + "type": "string" + }, + "default": { + "type": "boolean" + }, + "description": { + "nullable": true, + "type": "string" + }, + "id": { + "format": "int64", + "type": "integer" + }, + "name": { + "type": "string" + }, + "node_id": { + "type": "string" + }, + "url": { + "format": "uri", + "type": "string" + } + }, + "type": "object" + } + ] + }, + "type": "array" + }, + "labels_url": { + "type": "string" + }, + "locked": { + "type": "boolean" + }, + "milestone": { + "$ref": "#/components/schemas/nullable-milestone" + }, + "node_id": { + "type": "string" + }, + "number": { + "description": "Number uniquely identifying the issue within its repository", + "example": 42, + "type": "integer" + }, + "performed_via_github_app": { + "$ref": "#/components/schemas/nullable-integration" + }, + "pull_request": { + "properties": { + "diff_url": { + "format": "uri", + "nullable": true, + "type": "string" + }, + "html_url": { + "format": "uri", + "nullable": true, + "type": "string" + }, + "merged_at": { + "format": "date-time", + "nullable": true, + "type": "string" + }, + "patch_url": { + "format": "uri", + "nullable": true, + "type": "string" + }, + "url": { + "format": "uri", + "nullable": true, + "type": "string" + } + }, + "required": ["diff_url", "html_url", "patch_url", "url"], + "type": "object" + }, + "reactions": { + "$ref": "#/components/schemas/reaction-rollup" + }, + "repository": { + "$ref": "#/components/schemas/repository" + }, + "repository_url": { + "format": "uri", + "type": "string" + }, + "state": { + "description": "State of the issue; either 'open' or 'closed'", + "example": "open", + "type": "string" + }, + "timeline_url": { + "format": "uri", + "type": "string" + }, + "title": { + "description": "Title of the issue", + "example": "Widget creation fails in Safari on OS X 10.8", + "type": "string" + }, + "updated_at": { + "format": "date-time", + "type": "string" + }, + "url": { + "description": "URL for the issue", + "example": "https://api.github.com/repositories/42/issues/1", + "format": "uri", + "type": "string" + }, + "user": { + "$ref": "#/components/schemas/nullable-simple-user" + } + }, + "required": [ + "assignee", + "closed_at", + "comments", + "comments_url", + "events_url", + "html_url", + "id", + "node_id", + "labels", + "labels_url", + "milestone", + "number", + "repository_url", + "state", + "locked", + "title", + "url", + "user", + "author_association", + "created_at", + "updated_at" + ], + "title": "Issue", + "type": "object" + } + } + } + }, + "insertionIndex": 608 + }, + { + "id": "a353646d-1513-4bce-b96f-09bc37c47669", + "name": "Get an issue event", + "request": { + "urlPath": "/repos/36x550phtorqlzu53r8m2z4w4axphso97tdvrd96otqi3n8djodtvbhcqv4vz7cltqjk2ha6p6916iw5wf2sqd8o5dw5txwqiz7eihocyezo7f9x9mj7jwi6lauh6poasyabnl8mrzhimw9du3kin5j86skyf4oj/ys0o224cb8qccl15u9na2860f/issues/events/7520347842400121412", + "method": "GET" + }, + "response": { + "status": 410, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/953317\",\n \"message\" : \"Id aut ullam quo assumenda. Id ea mollitia corrupti odit ducimus temporibus sint. Sed iusto et. Ea non molestiae dolorem iure facere recusandae. Accusantium aut dolorum facilis eum minus natus.\",\n \"url\" : \"https://web.example.mocklab.io/186321\",\n \"status\" : \"mihcpq11n1qoqek9pnrw4k181lf2160xann2fofmp5p15jisha7rzz1kia28rlaf7pigod1ntgtiwp1nv3h00fmay5tc47m81umo0umzv5rv8swi5dr1pq1h303evktj76nrk4nuverrjcgyddsz8v51\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "a353646d-1513-4bce-b96f-09bc37c47669", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.036761Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "issues/get-event", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 609 + }, + { + "id": "6905ef28-d966-41c4-a809-8a2f85de2c2a", + "name": "Get an issue event", + "request": { + "urlPath": "/repos/8bs2fq4cxe0fez0wf05avkbd4oeue5b017w9j8mp7rqhlgisv2fsh0kozpvlbafoqm2bf2xk7kj3xnzqighwd28fkrdnr8p8f81csersoguhvw7mjmu8s44dizayz/fqnf4uuvb4kkhw5pfgs006udctv6np4cj1n5eckeggphaemklufb6ofrjp9hysq3pczzqfstyley2bar87gtp8nffw6e778suc18kiqrbbk4kok71qurj385qaahjlg0fj0tzp6tsyaq8gebjfx68s8xwc/issues/events/3032429640361024140", + "method": "GET" + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/621158\",\n \"message\" : \"Et praesentium corporis ut eos qui commodi. Et dolor laboriosam earum aut sit optio. Voluptatem voluptatem eaque id excepturi culpa ea. Omnis aperiam maiores consequatur dolore qui possimus.\",\n \"url\" : \"https://web.example.mocklab.io/349359\",\n \"status\" : \"qv62mig77kjs6lmm9aox8uvwfbc2010vowhu9v54u2hvqke8j64hrl32bbe8c9plf4jck6exeoeozfc3771xootaxwkpbrgv1nlrwzya\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "6905ef28-d966-41c4-a809-8a2f85de2c2a", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.036546Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "issues/get-event", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 610 + }, + { + "id": "ba00679d-a252-4dfa-bea8-291c7f7edac1", + "name": "Get an issue event", + "request": { + "urlPath": "/repos/yhq5hdut33nbb9oj9s9ped36m1gadk76peq0g8syenh4r43adgr2jqb0xfwm0a7fblobl92lel80cue05nf9cwp1edqygd4rvi1r3su2khu5bbqo6q33wqsdcwel0du4hju1ut0nvkkgl7drnk8c4rak4cjh82jhvv56fkv/2o2ftb66i6bpkzguaazk0p6s6bm3uayokpejp3r1kc072dob6ebddwfom2rg87vcbx7a2sjik8ctyp7arjvrjst3yi6rb46f5vig8mc4ptmmbsybc5mydeztu8oo959v4hj0jxjzwdu831bnefllejhmgbc7q21sbtdkeexw0xpd8kgdbl7idc3jiw/issues/events/1204795859304391455", + "method": "GET" + }, + "response": { + "status": 403, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/603950\",\n \"message\" : \"Voluptates ipsa modi optio voluptas officia et. Eos tempora dicta qui soluta ex velit. Amet quod veritatis autem voluptas.\",\n \"url\" : \"https://web.example.mocklab.io/515513\",\n \"status\" : \"wjmex3v7z2h80biabo0oymqbsl5tbzybm6vlelfcnok46ws8tusuj5e8az1lr5jyp770nf42cy74lxxouhx2t61sgnbb6yx860mvrb71g81egmwlex7xo01m2og9nhrpb7wyb3cc1axxkfvk19m1lzsr4fm9i\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "ba00679d-a252-4dfa-bea8-291c7f7edac1", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.036328Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "issues/get-event", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 611 + }, + { + "id": "3d4f8ce5-02fc-4246-af4a-367198580fbc", + "name": "Get an issue event - default", + "request": { + "urlPath": "/repos/g7x2ubxlwaqf9ms2wt66alz4j34fpwxcuwaag5icswsk/nr507mmjqlvnf6628bw/issues/events/2439120111102414696", + "method": "GET" + }, + "response": { + "status": 200, + "body": "{\n \"actor\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"commit_id\" : \"6dcb09b5b57875f334f61aebed695e2e4193db5e\",\n \"commit_url\" : \"https://api.github.com/repos/octocat/Hello-World/commits/6dcb09b5b57875f334f61aebed695e2e4193db5e\",\n \"created_at\" : \"2011-04-14T16:00:49Z\",\n \"event\" : \"closed\",\n \"id\" : 1,\n \"issue\" : {\n \"assignee\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"assignees\" : [ {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n } ],\n \"author_association\" : \"COLLABORATOR\",\n \"body\" : \"I'm having a problem with this.\",\n \"comments\" : 0,\n \"comments_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347/comments\",\n \"created_at\" : \"2011-04-22T13:33:48Z\",\n \"events_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347/events\",\n \"html_url\" : \"https://github.com/octocat/Hello-World/issues/1347\",\n \"id\" : 1,\n \"labels\" : [ {\n \"color\" : \"f29513\",\n \"default\" : true,\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"name\" : \"bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/labels/bug\"\n } ],\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347/labels{/name}\",\n \"locked\" : true,\n \"milestone\" : {\n \"closed_at\" : \"2013-02-12T13:22:01Z\",\n \"closed_issues\" : 8,\n \"created_at\" : \"2011-04-10T20:09:31Z\",\n \"creator\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"description\" : \"Tracking milestone for version 1.0\",\n \"due_on\" : \"2012-10-09T23:39:01Z\",\n \"html_url\" : \"https://github.com/octocat/Hello-World/milestones/v1.0\",\n \"id\" : 1002604,\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones/1/labels\",\n \"node_id\" : \"MDk6TWlsZXN0b25lMTAwMjYwNA==\",\n \"number\" : 1,\n \"open_issues\" : 4,\n \"state\" : \"open\",\n \"title\" : \"v1.0\",\n \"updated_at\" : \"2014-03-03T18:58:10Z\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones/1\"\n },\n \"node_id\" : \"MDU6SXNzdWUx\",\n \"number\" : 1347,\n \"performed_via_github_app\" : {\n \"created_at\" : \"2017-07-08T16:18:44-04:00\",\n \"description\" : \"\",\n \"events\" : [ \"push\", \"pull_request\" ],\n \"external_url\" : \"https://example.com\",\n \"html_url\" : \"https://github.com/apps/octoapp\",\n \"id\" : 1,\n \"name\" : \"Octocat App\",\n \"node_id\" : \"MDExOkludGVncmF0aW9uMQ==\",\n \"owner\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/orgs/github/events\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"github\",\n \"node_id\" : \"MDEyOk9yZ2FuaXphdGlvbjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/orgs/github/repos\",\n \"site_admin\" : true,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/orgs/github\"\n },\n \"permissions\" : {\n \"contents\" : \"read\",\n \"issues\" : \"write\",\n \"metadata\" : \"read\",\n \"single_file\" : \"write\"\n },\n \"slug\" : \"octoapp\",\n \"updated_at\" : \"2017-07-08T16:18:44-04:00\"\n },\n \"pull_request\" : {\n \"diff_url\" : \"https://github.com/octocat/Hello-World/pull/1347.diff\",\n \"html_url\" : \"https://github.com/octocat/Hello-World/pull/1347\",\n \"patch_url\" : \"https://github.com/octocat/Hello-World/pull/1347.patch\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/pulls/1347\"\n },\n \"repository_url\" : \"https://api.github.com/repos/octocat/Hello-World\",\n \"state\" : \"open\",\n \"title\" : \"Found a bug\",\n \"updated_at\" : \"2011-04-22T13:33:48Z\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347\",\n \"user\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n }\n },\n \"node_id\" : \"MDEwOklzc3VlRXZlbnQx\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/events/1\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "3d4f8ce5-02fc-4246-af4a-367198580fbc", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.036103Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "issues/get-event", + "schema": { + "description": "Issue Event", + "properties": { + "actor": { + "$ref": "#/components/schemas/nullable-simple-user" + }, + "assignee": { + "$ref": "#/components/schemas/nullable-simple-user" + }, + "assigner": { + "$ref": "#/components/schemas/nullable-simple-user" + }, + "author_association": { + "$ref": "#/components/schemas/author_association" + }, + "commit_id": { + "example": "6dcb09b5b57875f334f61aebed695e2e4193db5e", + "nullable": true, + "type": "string" + }, + "commit_url": { + "example": "https://api.github.com/repos/octocat/Hello-World/commits/6dcb09b5b57875f334f61aebed695e2e4193db5e", + "nullable": true, + "type": "string" + }, + "created_at": { + "example": "2011-04-14T16:00:49Z", + "format": "date-time", + "type": "string" + }, + "dismissed_review": { + "$ref": "#/components/schemas/issue-event-dismissed-review" + }, + "event": { + "example": "closed", + "type": "string" + }, + "id": { + "example": 1, + "type": "integer" + }, + "issue": { + "$ref": "#/components/schemas/issue-simple" + }, + "label": { + "$ref": "#/components/schemas/issue-event-label" + }, + "lock_reason": { + "nullable": true, + "type": "string" + }, + "milestone": { + "$ref": "#/components/schemas/issue-event-milestone" + }, + "node_id": { + "example": "MDEwOklzc3VlRXZlbnQx", + "type": "string" + }, + "performed_via_github_app": { + "$ref": "#/components/schemas/nullable-integration" + }, + "project_card": { + "$ref": "#/components/schemas/issue-event-project-card" + }, + "rename": { + "$ref": "#/components/schemas/issue-event-rename" + }, + "requested_reviewer": { + "$ref": "#/components/schemas/nullable-simple-user" + }, + "requested_team": { + "$ref": "#/components/schemas/team" + }, + "review_requester": { + "$ref": "#/components/schemas/nullable-simple-user" + }, + "url": { + "example": "https://api.github.com/repos/octocat/Hello-World/issues/events/1", + "format": "uri", + "type": "string" + } + }, + "required": [ + "id", + "node_id", + "url", + "actor", + "event", + "commit_id", + "commit_url", + "created_at" + ], + "title": "Issue Event", + "type": "object" + } + } + } + }, + "insertionIndex": 612 + }, + { + "id": "9e62b402-f332-4813-bc9b-e3ee45738313", + "name": "List issue events for a repository", + "request": { + "urlPath": "/repos/kbgli00mq7s3vgcd9r1oa8gitl223am6t9qap4luikeefsd4drbm4r7vjz4a8kjqksbkwf4xcbk3ls9h7io12ojaqlbqp01smguz5ue/x9fcmkcsgefqks4b4i/issues/events", + "method": "GET" + }, + "response": { + "status": 422, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/090302\",\n \"message\" : \"Eos harum eligendi ut ullam dolore. Impedit rem placeat nobis eligendi quidem cumque. Molestiae tempore reprehenderit iste qui modi ut. Similique laborum et eligendi illum. Sint nemo accusamus tenetur\",\n \"errors\" : [ {\n \"code\" : \"5nyaobf2atgwkeg4mnf0yf97u6hls0mdq8y46gj\",\n \"field\" : \"b01dd9kvfxqxfdxrvjy4cjs4twyz7wr\",\n \"resource\" : \"ezv2l00fouli09b8as6buav5gn8d4adl6o795vs211iiwvkvu2bvd1z04tieojqa1c6k8z35ur1n9zyn6xouafb469p9jb1dcibkv41fepcqatbfrvu4ocn122ptg8drpzyg5lqovybj4t4fyf80fnhblk2wrg0v2ezlfohp4zo2279g5umfg27j1wt311gdhvrjcvz\",\n \"index\" : 7254362260798359496,\n \"message\" : \"Officia reiciendis sequi qui. Consectetur et numquam explicabo. Doloribus sint et et. Nihil qui ut provident vel eum.\",\n \"value\" : { }\n }, {\n \"code\" : \"hq0zmukyrlzrf8jeb6aki34b267ahcyau2y96c9e1ucj96s0tnpcjos8uw30vmk2v1781moeend0zkcm6dti6e40dgmhj1nxd7r6c6pbl7i7yuqzy0vi62jmcxbplfe448a1iqs\",\n \"field\" : \"fmzi0q6txojbkon49iu07h0mx1c3yglxtj5sg0ae80cnzppj6h5bayvntz4f9ljdugh0y9n8nsn0gfw141b8otv7wfkumh4i6cyvemdumwl29yltc2gr726ydl09\",\n \"resource\" : \"xxg4csqnr83p91pxxn3qsp9q5m7l6qh0o7h9w7y0hu1nyigqxze564mz2oc1h5as2\",\n \"index\" : 1674953255233434593,\n \"message\" : \"Rerum et enim error ut sint sed veniam. Et et sed nihil quaerat et libero. Qui velit earum sequi minus placeat occaecati laudantium.\",\n \"value\" : { }\n } ]\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "9e62b402-f332-4813-bc9b-e3ee45738313", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.035955Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "issues/list-events-for-repo", + "schema": { + "description": "Validation Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "errors": { + "items": { + "properties": { + "code": { + "type": "string" + }, + "field": { + "type": "string" + }, + "index": { + "type": "integer" + }, + "message": { + "type": "string" + }, + "resource": { + "type": "string" + }, + "value": { + "oneOf": [ + { + "nullable": true, + "type": "string" + }, + { + "nullable": true, + "type": "integer" + }, + { + "items": { + "type": "string" + }, + "nullable": true, + "type": "array" + } + ] + } + }, + "required": ["code"], + "type": "object" + }, + "type": "array" + }, + "message": { + "type": "string" + } + }, + "required": ["message", "documentation_url"], + "title": "Validation Error", + "type": "object" + } + } + } + }, + "insertionIndex": 613 + }, + { + "id": "78651d53-9015-43c5-8b98-c4945f67bff9", + "name": "List issue events for a repository - default", + "request": { + "urlPath": "/repos/7xi2xe30v8sf13lmyxda4al88d5ygt39xaa91w2xe33vhek871vh6lvpvbp78qvs1jmmt6ccrq0mamqxbrjwt716so3o3ex83rrzpt8gby2ihjc8vn/q9sq1a/issues/events", + "method": "GET" + }, + "response": { + "status": 200, + "body": "[ {\n \"actor\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"commit_id\" : \"6dcb09b5b57875f334f61aebed695e2e4193db5e\",\n \"commit_url\" : \"https://api.github.com/repos/octocat/Hello-World/commits/6dcb09b5b57875f334f61aebed695e2e4193db5e\",\n \"created_at\" : \"2011-04-14T16:00:49Z\",\n \"event\" : \"closed\",\n \"id\" : 1,\n \"issue\" : {\n \"active_lock_reason\" : \"too heated\",\n \"assignee\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"assignees\" : [ {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n } ],\n \"author_association\" : \"COLLABORATOR\",\n \"body\" : \"I'm having a problem with this.\",\n \"comments\" : 0,\n \"comments_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347/comments\",\n \"created_at\" : \"2011-04-22T13:33:48Z\",\n \"events_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347/events\",\n \"html_url\" : \"https://github.com/octocat/Hello-World/issues/1347\",\n \"id\" : 1,\n \"labels\" : [ {\n \"color\" : \"f29513\",\n \"default\" : true,\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"name\" : \"bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/labels/bug\"\n } ],\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347/labels{/name}\",\n \"locked\" : true,\n \"milestone\" : {\n \"closed_at\" : \"2013-02-12T13:22:01Z\",\n \"closed_issues\" : 8,\n \"created_at\" : \"2011-04-10T20:09:31Z\",\n \"creator\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"description\" : \"Tracking milestone for version 1.0\",\n \"due_on\" : \"2012-10-09T23:39:01Z\",\n \"html_url\" : \"https://github.com/octocat/Hello-World/milestones/v1.0\",\n \"id\" : 1002604,\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones/1/labels\",\n \"node_id\" : \"MDk6TWlsZXN0b25lMTAwMjYwNA==\",\n \"number\" : 1,\n \"open_issues\" : 4,\n \"state\" : \"open\",\n \"title\" : \"v1.0\",\n \"updated_at\" : \"2014-03-03T18:58:10Z\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones/1\"\n },\n \"node_id\" : \"MDU6SXNzdWUx\",\n \"number\" : 1347,\n \"pull_request\" : {\n \"diff_url\" : \"https://github.com/octocat/Hello-World/pull/1347.diff\",\n \"html_url\" : \"https://github.com/octocat/Hello-World/pull/1347\",\n \"patch_url\" : \"https://github.com/octocat/Hello-World/pull/1347.patch\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/pulls/1347\"\n },\n \"repository_url\" : \"https://api.github.com/repos/octocat/Hello-World\",\n \"state\" : \"open\",\n \"title\" : \"Found a bug\",\n \"updated_at\" : \"2011-04-22T13:33:48Z\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347\",\n \"user\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n }\n },\n \"node_id\" : \"MDEwOklzc3VlRXZlbnQx\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/events/1\"\n} ]", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "78651d53-9015-43c5-8b98-c4945f67bff9", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.03559Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "issues/list-events-for-repo", + "schema": { + "items": { + "$ref": "#/components/schemas/issue-event" + }, + "type": "array" + } + } + } + }, + "insertionIndex": 614 + }, + { + "id": "c87c9f47-e4ab-4b23-bf05-55e6bac37c5f", + "name": "Delete an issue comment reaction - 204", + "request": { + "urlPath": "/repos/1yntp984r2rgfqijhgul3qibdnuqnt3iy42rfxmdlx8wuuem288x4ub3xg3l3m9sbe2eni/yrdnca0sw99bzkd0gjt53ewugtj3p56krm33o5t8fjcxjlvud83fx42p2hkbjtcpy9mwnkmesikltr5rvqngfxejwfos5x77yct2jslhg5pj86nisqesegl8f8vwb54dliwqj86qodr7wmdw5syngmqaw0ytb73zy0v2gwzgiee1ikes60tax1n/issues/comments/5603472874626172735/reactions/5935186819254795729", + "method": "DELETE" + }, + "response": { + "status": 204 + }, + "uuid": "c87c9f47-e4ab-4b23-bf05-55e6bac37c5f", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.035525Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "reactions/delete-for-issue-comment" + } + } + }, + "insertionIndex": 615 + }, + { + "id": "6069d97f-4079-43c4-b08e-6cfc15ee8491", + "name": "Create reaction for an issue comment", + "request": { + "urlPath": "/repos/lyn7ttua7cqbc1i1lo8n7t31jckv571fjw3pd9uf59zr195l4xh1yyp7zvdvks5gbv6l170udso1fxw1yosxvj89kb0luez3kop0l08gz2q0qja03zo0zjzsx7idbtq02a0m4t2elxl1lo74clit8naxv8zunhq/waures0fyfthfnoo296dunnhtnbaiyiln59dlghnbse2hn5q5pjynm6rq3noq3qk7bxvsuwwqsev455v3e05yn6tvgr9ez38ckz7kdtvi/issues/comments/7728480017705173691/reactions", + "method": "POST" + }, + "response": { + "status": 422, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/147072\",\n \"message\" : \"Quod veritatis illum perspiciatis. Tempora molestiae reiciendis quis. Odit sit fugiat tempore qui molestiae quo.\",\n \"errors\" : [ {\n \"code\" : \"yoa3z62sm39vx0q3jso1\",\n \"field\" : \"23xnnu9kuijbnjp69wr4shf9q75\",\n \"resource\" : \"5tmiyaqt58phi0lh33imwqnite17d1cwahqeqdpqdt7vqe7f0vt4ho7p2u4dq974pigua7jt4tuvig7p6fjaj4npkrl3xbjxaxyxbau727ob54za3qkjauy9zsln107715bk0szmb4k4foti1ocd1milrh66zlc2yawmf\",\n \"index\" : 6135772660679575879,\n \"message\" : \"Vel earum quisquam cupiditate. Fugit eligendi enim ullam. Et earum dolorem porro. Quos at consectetur eum quam inventore corporis quia.\",\n \"value\" : { }\n }, {\n \"code\" : \"a8rbfpzbku8027m6d5vjkbs065eykhinxcje5xs1tm2co7rbhztdqluxcox3kw3bk5wtncxshs7jvipvoha2xcq9\",\n \"field\" : \"kcf2yskc2jgda538eggrr3ucnumiyk84zg0qptedc5eiwx1jf857g94nsacd6zfwwwq64dskpk1k2guphsovi3oqngpywvttsf3tey7cjuhuo2fm0qpalguh8h1a8vvfv9s8rwm20lilfua2w97h6x0s2r8sfkl28yiigwivksssydbxsio\",\n \"resource\" : \"43f4jsw5s0qi8d2fgcnazbxa4qskdvjulneulx8qhycubzqp9g1a39gfdflk7crvocsgo9j98u1j58nzpho37nk5nmvvhita3n8aumla25d5l0rcpx22nhtb9brppp5egrj\",\n \"index\" : 7263802518228804456,\n \"message\" : \"Aliquid unde aut eum beatae et non. Ut dicta labore nihil nemo perferendis quos deserunt. Perferendis accusamus quia dolore quia nesciunt consequatur. Enim nihil deserunt et commodi cumque natus volup\",\n \"value\" : { }\n }, {\n \"code\" : \"a35ybu4w5i0tqdxyf6hpn3n4708q4jz0kjimg67fv1tfda31\",\n \"field\" : \"cuf4b2guu9nffp3qpqhrw6kxcefct5zb6tjfe7ccpp5yv4ccs9sx004v1fc5kl2upqndoghg5k277z7llhz6h7mmn5i3i3dau95vue5eo6i2spbl24xbt22wgg0xvmzz8ekjfo29hnokd2rku4qvpekyykf3e77wn9\",\n \"resource\" : \"owjdm3i5pbruw1tqy2yzlgk7xqf6dzsqfohh2gn2igtdv8whqxujgyw9xycyiksa4hvzygeilczbbv2rpqj8u8co563o6tygy8d4exo5r99t3gb57jmuhis4teqjp3ksegq\",\n \"index\" : 3985904265994858363,\n \"message\" : \"Omnis enim praesentium enim nihil totam debitis. Non amet quas. Laudantium sit est natus. Necessitatibus et asperiores omnis unde at ratione hic.\",\n \"value\" : { }\n }, {\n \"code\" : \"m4ry1ruzsa0yyyqcris46477h399qsr\",\n \"field\" : \"n7lzfu84vyzue28f49ig2qt0y52fkppmm90a31mxi65a2a25er6wwgppq98zdn0xivri4lus5zskkkvizz5iwny2sktc9ltwt1zj5q5ga1dw7nwpscab354ui5a9563gd3aaei312fnmoz460btkluv252ux0\",\n \"resource\" : \"4rkohsgyi6nkunibzyn164inw8bdaqvl99u\",\n \"index\" : 263378123823767713,\n \"message\" : \"Placeat tenetur aut incidunt. Laboriosam architecto voluptas expedita. Et iure omnis rem. Quia odio inventore dolor quia quia. Voluptatum laudantium explicabo fuga sed non accusantium.\",\n \"value\" : { }\n }, {\n \"code\" : \"weperjyqvg9juryozk6ufhi6hcx0cibmc7tepaa98k1x91ubrirf787lj2e4xk4ag2coxg5csmsl6blq52ggnudpo9ke7gexqh5cpqz3pyucdy422aqvdpns6vzvhb2jsislfnrygoneriufatvi4muofm2t8cc8zgcfvtd5s0r942459\",\n \"field\" : \"upzy8npnm9igffwqxua2jdwpwv2jlnh5pqkbt8ue56t7yybk74ln46tmns8m0mdcezah1apm880hme\",\n \"resource\" : \"7d3puehlqsy9k4pdmc93l1ea99wilebf3l2kkztvpqpf9r7lj8avchbmqxec0recuae2ljzz0xzlmcg3gzadkvr3vdlow36muxfc8vrxt3gs3xk11\",\n \"index\" : 2828721139806992012,\n \"message\" : \"Voluptates eum adipisci magnam dolor. Quisquam natus tempora sint voluptatem tempora modi alias. Magnam ipsa harum unde adipisci facere error maxime. Aut voluptas asperiores laborum accusantium. Enim \",\n \"value\" : { }\n } ]\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "6069d97f-4079-43c4-b08e-6cfc15ee8491", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.035476Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "reactions/create-for-issue-comment", + "schema": { + "description": "Validation Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "errors": { + "items": { + "properties": { + "code": { + "type": "string" + }, + "field": { + "type": "string" + }, + "index": { + "type": "integer" + }, + "message": { + "type": "string" + }, + "resource": { + "type": "string" + }, + "value": { + "oneOf": [ + { + "nullable": true, + "type": "string" + }, + { + "nullable": true, + "type": "integer" + }, + { + "items": { + "type": "string" + }, + "nullable": true, + "type": "array" + } + ] + } + }, + "required": ["code"], + "type": "object" + }, + "type": "array" + }, + "message": { + "type": "string" + } + }, + "required": ["message", "documentation_url"], + "title": "Validation Error", + "type": "object" + } + } + } + }, + "insertionIndex": 616 + }, + { + "id": "1a06f191-80a1-47b7-a6f0-d139ea43522f", + "name": "Create reaction for an issue comment", + "request": { + "urlPath": "/repos/ink6vwnpje442uzx6erbp83zumdbzdjg1xcwfjrw/2m1tp8n/issues/comments/5147043610573873724/reactions", + "method": "POST" + }, + "response": { + "status": 415, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/044324\",\n \"message\" : \"Quae debitis nemo id et magnam. Et odit sit qui voluptatem rerum nihil. Et voluptatem sed quaerat dolorum accusantium est sed. Cupiditate doloribus earum omnis. Necessitatibus eum velit voluptatem.\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "1a06f191-80a1-47b7-a6f0-d139ea43522f", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.034881Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "reactions/create-for-issue-comment", + "schema": { + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": ["message", "documentation_url"], + "type": "object" + } + } + } + }, + "insertionIndex": 617 + }, + { + "id": "43e76d83-0164-430e-a251-4ef6e2413ba9", + "name": "Create reaction for an issue comment - default", + "request": { + "urlPath": "/repos/fyctjk8p663svsdjtv96b4d1vawtx075t6mbewoo5ja9ljcdcoxgzj81lu50qu3qrh9mlcneyimnxvgmqtbhvxmm2il22zp12mnexh/di8qww58riqsn2yc7quu8mi20lunymhcw0/issues/comments/4813179225174363682/reactions", + "method": "POST" + }, + "response": { + "status": 201, + "body": "{\n \"content\" : \"heart\",\n \"created_at\" : \"2016-05-20T20:09:31Z\",\n \"id\" : 1,\n \"node_id\" : \"MDg6UmVhY3Rpb24x\",\n \"user\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n }\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "43e76d83-0164-430e-a251-4ef6e2413ba9", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.034732Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "reactions/create-for-issue-comment", + "schema": { + "description": "Reactions to conversations provide a way to help people express their feelings more simply and effectively.", + "properties": { + "content": { + "description": "The reaction to use", + "enum": ["+1", "-1", "laugh", "confused", "heart", "hooray", "rocket", "eyes"], + "example": "heart", + "type": "string" + }, + "created_at": { + "example": "2016-05-20T20:09:31Z", + "format": "date-time", + "type": "string" + }, + "id": { + "example": 1, + "type": "integer" + }, + "node_id": { + "example": "MDg6UmVhY3Rpb24x", + "type": "string" + }, + "user": { + "$ref": "#/components/schemas/nullable-simple-user" + } + }, + "required": ["id", "node_id", "user", "content", "created_at"], + "title": "Reaction", + "type": "object" + } + } + } + }, + "insertionIndex": 618 + }, + { + "id": "704dae28-9bc7-4bf9-b1e6-064e90fcc35b", + "name": "Create reaction for an issue comment - default", + "request": { + "urlPath": "/repos/7mtni24j0z7ryylozfopqawdyguplln1wvyztu058snd4g6aiq813x7qji2xj0r1gq7di176nr0dmtrx4sjpmdk8t6l26e6ou44bmn/m1jzk4qvqd1or91hh/issues/comments/8912521697005728222/reactions", + "method": "POST" + }, + "response": { + "status": 200, + "body": "{\n \"content\" : \"heart\",\n \"created_at\" : \"2016-05-20T20:09:31Z\",\n \"id\" : 1,\n \"node_id\" : \"MDg6UmVhY3Rpb24x\",\n \"user\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n }\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "704dae28-9bc7-4bf9-b1e6-064e90fcc35b", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.034657Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "reactions/create-for-issue-comment", + "schema": { + "description": "Reactions to conversations provide a way to help people express their feelings more simply and effectively.", + "properties": { + "content": { + "description": "The reaction to use", + "enum": ["+1", "-1", "laugh", "confused", "heart", "hooray", "rocket", "eyes"], + "example": "heart", + "type": "string" + }, + "created_at": { + "example": "2016-05-20T20:09:31Z", + "format": "date-time", + "type": "string" + }, + "id": { + "example": 1, + "type": "integer" + }, + "node_id": { + "example": "MDg6UmVhY3Rpb24x", + "type": "string" + }, + "user": { + "$ref": "#/components/schemas/nullable-simple-user" + } + }, + "required": ["id", "node_id", "user", "content", "created_at"], + "title": "Reaction", + "type": "object" + } + } + } + }, + "insertionIndex": 619 + }, + { + "id": "57592e39-5b37-4abc-bdc1-802c7f490170", + "name": "List reactions for an issue comment", + "request": { + "urlPath": "/repos/mno0hnibfd7xe8u7kuinkc56w8oqci6aovburmaxgwmo14umg4snabsms0q2wzt9wg/056aj94hkzz767no6x0ebmhwlsicfgj38yr2n4acms9bx3k1lnqlz1yav0iclbgdnhqk75a2hnfl9aca117u8o7lbxjc3n22ejzdrixzrrts5v/issues/comments/3912980765772547461/reactions", + "method": "GET" + }, + "response": { + "status": 415, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/894442\",\n \"message\" : \"Quam voluptatem autem qui sed sapiente. Ut quia ut quia beatae ut. Sed odit adipisci omnis. Voluptas error error quo dolore dolores inventore. Dolorem delectus quidem animi.\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "57592e39-5b37-4abc-bdc1-802c7f490170", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.034568Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "reactions/list-for-issue-comment", + "schema": { + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": ["message", "documentation_url"], + "type": "object" + } + } + } + }, + "insertionIndex": 620 + }, + { + "id": "62470735-b0db-462e-969f-82c9359a249f", + "name": "List reactions for an issue comment", + "request": { + "urlPath": "/repos/q53mli069uohgfvlc7j2nz5s2gwrglbef35stlnme7ne8dtkfm8nf4u4/2by8tr56gck64k6tk8g3vijea0oux0y0qzcbeu7exsqtfov6oujhgeh5ecsykwek6r6g5vaa7l/issues/comments/2089043354526915460/reactions", + "method": "GET" + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/086117\",\n \"message\" : \"Ipsum optio voluptas quaerat animi. Occaecati minus quis beatae minus. Voluptas facere dolorum voluptate.\",\n \"url\" : \"https://web.example.mocklab.io/613168\",\n \"status\" : \"5z3u8y917qi55mpdd3x5vph9r5doib99trwfz1f\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "62470735-b0db-462e-969f-82c9359a249f", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.03442Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "reactions/list-for-issue-comment", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 621 + }, + { + "id": "aa96d6a0-87ed-47d7-acfb-623ad490c62a", + "name": "List reactions for an issue comment - default", + "request": { + "urlPath": "/repos/h3neefnhwvrjwwxyn64ynv3mqqh6e6dpl8nvtbvcx7a5mg9fgedm5uh7s01ecdn70v20jbzsp3efo6pfdxubf0c2f6g3n789gkvino7xb1pop1bcatlgi59p6y0qv8rybngv/4m21rznj0lwujslilqy0z6uh34pqz97fyg8fyaktkzkl37vqj4glydhnds1vx00yy374okv4p5m074tsusdmrz5fce295du4kh8u9k4rspf2f95s1iz71il/issues/comments/3865536925017040983/reactions", + "method": "GET" + }, + "response": { + "status": 200, + "body": "[ {\n \"content\" : \"heart\",\n \"created_at\" : \"2016-05-20T20:09:31Z\",\n \"id\" : 1,\n \"node_id\" : \"MDg6UmVhY3Rpb24x\",\n \"user\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n }\n} ]", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "aa96d6a0-87ed-47d7-acfb-623ad490c62a", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.034209Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "reactions/list-for-issue-comment", + "schema": { + "items": { + "$ref": "#/components/schemas/reaction" + }, + "type": "array" + } + } + } + }, + "insertionIndex": 622 + }, + { + "id": "50d84284-c7db-4d1d-b13c-737993ff5278", + "name": "Update an issue comment", + "request": { + "urlPath": "/repos/rhdf386lupi2q103yup18b5rhoklkygis37hc3l326qepm555dxjn0uvty3yzcy8to4snp92ovk4m2pz1w0tulvj06g/z4ugl7ak2vsqauzrvdpjudfo0arql6lfb18lxqkr34lph7odaa6mq5f/issues/comments/7591125875129357710", + "method": "PATCH" + }, + "response": { + "status": 422, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/252547\",\n \"message\" : \"Repellendus quae laudantium assumenda sed expedita nisi non. Quis ea quam omnis necessitatibus optio deserunt. Placeat excepturi odit consequuntur optio. Veritatis unde fugit. Nulla quod et recusandae\",\n \"errors\" : [ {\n \"code\" : \"8a1fgxij144s9m15kue0l8a5qjckvot0m9ugzs9dj3amf49w7l72c9zfwj83ohddcik03c05p8d4kw277fn3b2hubnsw6uzeoj3ltqakcnf0fec9h8utgd9yd2ox3zd6btn0w909e8qf5jui78dqu4iactw3lwtnxnlhwh\",\n \"field\" : \"5f29zdo\",\n \"resource\" : \"087taektqenx85qt4260rq1r3uhbnzqfrkplygw0e72bpf8vmr5im0o01xkcs\",\n \"index\" : 6057229244188594360,\n \"message\" : \"Et veritatis quos. Id porro consequatur. Commodi reiciendis ipsum eos ut sit tempora. Sunt asperiores repellendus. Est assumenda at distinctio itaque deserunt dolore.\",\n \"value\" : { }\n }, {\n \"code\" : \"psani8u3ggjhbvkh2lv823xzw36kecf3kbsjc8h3jkeg3r1n118jsqv9w0hyqqs7dnm3yrkdtqxsjzou5ljhfyk5u02b7a9q\",\n \"field\" : \"812yxqb9c89olwan337lp9juxniqfhqnif9q61lnympig6qm057p60dj1aug4ssxvmzf0yo3vkaxtb0s5qfg28uvp20mqwvbyjrgnhxj9jibd0ck8nldd3fegjgsgmeawhqjnu76y6ieyvu67gr1ffgkwwpheots\",\n \"resource\" : \"l4z2r8fpgm1lax5m0gmrb1zyr18xqs4yl3lxuby0olokjcbq4il2cmbv73jlrz9l3xditc7dgof6xfoq0gwyspp2j4rnzc2eb975a682iwt8g7jyx8r6qumlhb4t74catpkvvaqpsvrh1zrixhf6y4u5n8n5u6sidks3wflnpq81k8ulqz7eiotuvnk\",\n \"index\" : 1523876249354105390,\n \"message\" : \"Quis soluta natus quas voluptatem non autem odit. Reprehenderit et distinctio. Optio laboriosam aperiam quam laudantium ea hic.\",\n \"value\" : { }\n } ]\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "50d84284-c7db-4d1d-b13c-737993ff5278", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.034125Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "issues/update-comment", + "schema": { + "description": "Validation Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "errors": { + "items": { + "properties": { + "code": { + "type": "string" + }, + "field": { + "type": "string" + }, + "index": { + "type": "integer" + }, + "message": { + "type": "string" + }, + "resource": { + "type": "string" + }, + "value": { + "oneOf": [ + { + "nullable": true, + "type": "string" + }, + { + "nullable": true, + "type": "integer" + }, + { + "items": { + "type": "string" + }, + "nullable": true, + "type": "array" + } + ] + } + }, + "required": ["code"], + "type": "object" + }, + "type": "array" + }, + "message": { + "type": "string" + } + }, + "required": ["message", "documentation_url"], + "title": "Validation Error", + "type": "object" + } + } + } + }, + "insertionIndex": 623 + }, + { + "id": "93c5dfb2-bded-43e2-bf76-e995cf17dc01", + "name": "Update an issue comment - default", + "request": { + "urlPath": "/repos/folj0il06wualqqmayctz5mouy5m/a17tg0w4b0vr7b7d5a0178tklycir26qdz7km5qmw0jdr62nwnhpq0m5muv1kkbc2h6afd0ctxi3/issues/comments/4581312848840336159", + "method": "PATCH" + }, + "response": { + "status": 200, + "body": "{\n \"author_association\" : \"COLLABORATOR\",\n \"body\" : \"Me too\",\n \"created_at\" : \"2011-04-14T16:00:49Z\",\n \"html_url\" : \"https://github.com/octocat/Hello-World/issues/1347#issuecomment-1\",\n \"id\" : 1,\n \"issue_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347\",\n \"node_id\" : \"MDEyOklzc3VlQ29tbWVudDE=\",\n \"updated_at\" : \"2011-04-14T16:00:49Z\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/comments/1\",\n \"user\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n }\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "93c5dfb2-bded-43e2-bf76-e995cf17dc01", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.033757Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "issues/update-comment", + "schema": { + "description": "Comments provide a way for people to collaborate on an issue.", + "properties": { + "author_association": { + "$ref": "#/components/schemas/author_association" + }, + "body": { + "description": "Contents of the issue comment", + "example": "What version of Safari were you using when you observed this bug?", + "type": "string" + }, + "body_html": { + "type": "string" + }, + "body_text": { + "type": "string" + }, + "created_at": { + "example": "2011-04-14T16:00:49Z", + "format": "date-time", + "type": "string" + }, + "html_url": { + "format": "uri", + "type": "string" + }, + "id": { + "description": "Unique identifier of the issue comment", + "example": 42, + "type": "integer" + }, + "issue_url": { + "format": "uri", + "type": "string" + }, + "node_id": { + "type": "string" + }, + "performed_via_github_app": { + "$ref": "#/components/schemas/nullable-integration" + }, + "reactions": { + "$ref": "#/components/schemas/reaction-rollup" + }, + "updated_at": { + "example": "2011-04-14T16:00:49Z", + "format": "date-time", + "type": "string" + }, + "url": { + "description": "URL for the issue comment", + "example": "https://api.github.com/repositories/42/issues/comments/1", + "format": "uri", + "type": "string" + }, + "user": { + "$ref": "#/components/schemas/nullable-simple-user" + } + }, + "required": [ + "id", + "node_id", + "html_url", + "issue_url", + "author_association", + "user", + "url", + "created_at", + "updated_at" + ], + "title": "Issue Comment", + "type": "object" + } + } + } + }, + "insertionIndex": 624 + }, + { + "id": "8d6cf73b-06d0-44b4-9042-37e1f9395037", + "name": "Get an issue comment", + "request": { + "urlPath": "/repos/k8vodxvr9i9e9fgbdnxlkv10380squuy6nsz7phfpz5ber4s3golwzx7vqm4xwdwgll1wdgfhfjjro26xuclh105kpw42tzjo72k6xonp9aie76hlj3wcgil0kpqyymo5ko5zltoiuropi0azcpohu33z4itly8ugq38huvxf/nxhrxp87hddqc9wrbe62pqw3ayn9dsdm4c1v1nd8f09zjn1r5771v0nysmknfln2v24efatyvyc3hwu9zqxsm4ug3zzm/issues/comments/74129174484383325", + "method": "GET" + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/747549\",\n \"message\" : \"Ratione quibusdam odit mollitia beatae. A illum doloribus incidunt expedita quia. Odio maiores sed eveniet voluptas voluptatibus nisi voluptatem. Quaerat earum itaque voluptatibus eum. Eos non qui dis\",\n \"url\" : \"https://web.example.mocklab.io/359652\",\n \"status\" : \"wrow74btqy3cg5vv7iyqvhr8iuzzk6yow4px5ymjnybcig4eiiiyxctxevehr0gruval2fprsnz882erdy575e9xs75kt3ckn2fou04dsrp876mzlw5uf4x1c2bb1atdvs0n9s0wwg\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "8d6cf73b-06d0-44b4-9042-37e1f9395037", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.033652Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "issues/get-comment", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 625 + }, + { + "id": "df2ff7ba-9c92-4e07-850d-934904045698", + "name": "Get an issue comment - default", + "request": { + "urlPath": "/repos/jp2/6n74yql7zk2j9b9qnzny8h4s1gipypzt7fxqjt515pmxwfs1pyht3kj5fwxw9x43r6if5oe6z1x20rt0ob44ccy2tmp97328p44hs7r6k2z7uwg37g0r1indda7rycv/issues/comments/8175992096939572172", + "method": "GET" + }, + "response": { + "status": 200, + "body": "{\n \"author_association\" : \"COLLABORATOR\",\n \"body\" : \"Me too\",\n \"created_at\" : \"2011-04-14T16:00:49Z\",\n \"html_url\" : \"https://github.com/octocat/Hello-World/issues/1347#issuecomment-1\",\n \"id\" : 1,\n \"issue_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347\",\n \"node_id\" : \"MDEyOklzc3VlQ29tbWVudDE=\",\n \"updated_at\" : \"2011-04-14T16:00:49Z\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/comments/1\",\n \"user\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n }\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "df2ff7ba-9c92-4e07-850d-934904045698", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.033426Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "issues/get-comment", + "schema": { + "description": "Comments provide a way for people to collaborate on an issue.", + "properties": { + "author_association": { + "$ref": "#/components/schemas/author_association" + }, + "body": { + "description": "Contents of the issue comment", + "example": "What version of Safari were you using when you observed this bug?", + "type": "string" + }, + "body_html": { + "type": "string" + }, + "body_text": { + "type": "string" + }, + "created_at": { + "example": "2011-04-14T16:00:49Z", + "format": "date-time", + "type": "string" + }, + "html_url": { + "format": "uri", + "type": "string" + }, + "id": { + "description": "Unique identifier of the issue comment", + "example": 42, + "type": "integer" + }, + "issue_url": { + "format": "uri", + "type": "string" + }, + "node_id": { + "type": "string" + }, + "performed_via_github_app": { + "$ref": "#/components/schemas/nullable-integration" + }, + "reactions": { + "$ref": "#/components/schemas/reaction-rollup" + }, + "updated_at": { + "example": "2011-04-14T16:00:49Z", + "format": "date-time", + "type": "string" + }, + "url": { + "description": "URL for the issue comment", + "example": "https://api.github.com/repositories/42/issues/comments/1", + "format": "uri", + "type": "string" + }, + "user": { + "$ref": "#/components/schemas/nullable-simple-user" + } + }, + "required": [ + "id", + "node_id", + "html_url", + "issue_url", + "author_association", + "user", + "url", + "created_at", + "updated_at" + ], + "title": "Issue Comment", + "type": "object" + } + } + } + }, + "insertionIndex": 626 + }, + { + "id": "7fe48e00-c6f9-43c9-94dc-90de660d9043", + "name": "Delete an issue comment - 204", + "request": { + "urlPath": "/repos/kjjn75ld8m1l9g6939ptyj9e/rufb8vgp0cimwp89qku5bpuizz5fb25tgem5hlce3cukf2tperwdch4pmph45skzxsdn4j4e4c7yz2ze0honxqsy1jox09u36svi3tsoeidym62mmr2f4ua37n69fubw4x95409l634fmcupppdxfxrtdbv0ey07qh3wuj2hjf75c805o7mi/issues/comments/3374835765520984055", + "method": "DELETE" + }, + "response": { + "status": 204 + }, + "uuid": "7fe48e00-c6f9-43c9-94dc-90de660d9043", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.033306Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "issues/delete-comment" + } + } + }, + "insertionIndex": 627 + }, + { + "id": "a60a71f2-ef0c-4b90-98b8-a59ef8eeb8c1", + "name": "List issue comments for a repository", + "request": { + "urlPath": "/repos/h62msl9ob64efunikh0pyuthbxnwtsqp1wqjhsrie0lu7z/l2teda12r9g8nz2aqhaukgqdgy5k7a/issues/comments", + "method": "GET" + }, + "response": { + "status": 422, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/877823\",\n \"message\" : \"Asperiores minima sit et facilis. Autem iure officiis dolores itaque. Esse numquam tempore unde quibusdam illo rem beatae. Totam animi aliquam optio qui.\",\n \"errors\" : [ {\n \"code\" : \"iuw0fgo6y75x8xpbrhma154qu6z0c27x1gsscm9ot4hyx5c55wwlg6vad6ij8utzo16cum0ap8jnhnq12oe6yt6wzs9gcureooledegiqxdkinm4ucjji0yjhsxjgrvlwydnwgncp5w95lm5jxspld\",\n \"field\" : \"yxlpet1za5l4lioeu6najj9107tdgr11pj9ehgxd0drmsb9sbbfwgbexz2p576t9y85649z04f310klb0t5obfkfi\",\n \"resource\" : \"nc7ai9z5wky58ww79at7i1kjbo7mmmakstxrbl885hy8fhufnbviov55tul4peqfq7jd73jidtfia5uauj6ywmng7bi7u2045r9z0bgr2q5f7nqa7f7eqnc4pyt07obnmguj0gng36zwsd\",\n \"index\" : 2199785810152667643,\n \"message\" : \"Sint quia rerum quaerat dolorem harum debitis qui. Non aut porro et qui qui. Placeat mollitia dolorem iusto. Rerum a rem magnam ut quo enim.\",\n \"value\" : { }\n }, {\n \"code\" : \"e30lk2d59h38smwd22t987o9y9z2ex6uwkt48w8ltaontx2hrjngw13fk2rdpkv52z84png35lo8rvbe59tmkvllzwxwol13x4vp7taihusj40mr41cyqdv6s21v37n2wicrjld6sm07r081va9ykswv3lymuqtt9pkpbitgjdt5gj0h3m68gepjn429\",\n \"field\" : \"qj4m2zkmzywkkx9zn4hvzbzutj1wq3a2oekyh2mihqirypw5n8aituorsipqhxxuvzzlymryk99wxboidr83df4poywzpvop6my93x581wsub66yme5mx7pkzkurlh259a1d6mjcjh99mmkjh9f87p5j1yea5x3rlhst\",\n \"resource\" : \"xyzdov5x8ctbmb5qc4532hfihtogtgtvtsl1uiadxociu4ta69kll59khgdk3ov7rjq1fdb05m3c7gbnk605131qau4xe3tp3qmm3\",\n \"index\" : 5271740227840028061,\n \"message\" : \"Nulla vel ab provident magni vel voluptas. Ea est dolorem. Aut omnis magni eaque mollitia. Dolor officiis quia dignissimos asperiores totam quam aliquam.\",\n \"value\" : { }\n }, {\n \"code\" : \"eoccl4gcrkimuk5ywjgu48kpb657bqhmkvtu73lk8525shavptoeyuj0q\",\n \"field\" : \"r237cqsdltyyd5k2vazj0tq8gys88bbm2ft2wo2uwm8gdo7d88p366euhhutfscda5z8e5xodsn50ardobxr4glg3gjfy2ho7kec1l4z3krut5ucnir8d3328msnumqrpfx36gtzkll61cegd60mqiv21jwpmwmq8md0cdu1jbo3zr8rmxfgbzel\",\n \"resource\" : \"pv3v3qiy171ndo7qx9uemuappkxxe0txffi2s2jehepzpho0m5a2ep9epljriufb8f5g9grliq4xax74hmg2ibbpwpmfawj52b76jwjd8z97p3vx65idre6jmzg75gn2zq8re66xjkpf5gvz5hvcks7q70w0zotuto41duyx3pamf9we66kqzi68\",\n \"index\" : 46193335344563986,\n \"message\" : \"Sunt consectetur fuga non omnis. Tenetur aperiam voluptas natus. Culpa explicabo omnis rerum. In laudantium nobis eos quo nulla nostrum atque. Quis asperiores veritatis incidunt non.\",\n \"value\" : { }\n }, {\n \"code\" : \"l7272o0g0v5po3a6mx5z0afju12eyj47hs3yiblhnc02vx62jv69law5v3bltfj3rcxbpxz0sj8c6no87\",\n \"field\" : \"t8mbtu52obkdh0tbmfgcgpnq8wlt8ofh0k6pfaiw6zi9bku0iteyhcmyzfkd880iz1bwd0a89qzzq840pzgos3mjh7f6zdgqw1a5697azricprbe0\",\n \"resource\" : \"diusp4s6zbs4kf9r5nfsm39jygxaziwg10b0fhoo1vbb2civf6j950xa0v5isbswtm2a0j2hdlddo35tjcb1d3lx296r08vqu0kqjt8zasvxerebdw81aans3ei8x9f9j\",\n \"index\" : 9171877544553673314,\n \"message\" : \"Qui sed aspernatur ipsa repellendus. Omnis dolorem esse consequuntur molestiae. Repellat quisquam dolores. Accusantium eaque cupiditate omnis.\",\n \"value\" : { }\n }, {\n \"code\" : \"o85d3prnvsrdkxls0cd7092jvozzml6jbahhgo4l46y4qwgomyofc7nlghl33azuho3lsq8dmz1j4kvfhi3guqjjvj56762yubwoljre02bmjtn1m2bmqzncts32j0r\",\n \"field\" : \"3iv2e5lxqnwd0d80g52vsebmlv463fbuh6qs303luqcsm60dufog42oazly832mg45vqguaufhx7tw\",\n \"resource\" : \"awhpwqw32wo6hk1xcmmn4r5dqo82024neyevchdoyxoxh89d43xoq26onjy67whgovz8f9t3gmt7sl9qwgs9anxycrzvnd6kjhqj894e22ad6gmaoptzhw\",\n \"index\" : 3434090258666436263,\n \"message\" : \"Explicabo ea provident. Sapiente qui mollitia accusantium maiores. Quas sequi qui assumenda. Adipisci amet aut autem neque.\",\n \"value\" : { }\n }, {\n \"code\" : \"omkkqnqhh9jo8rpkv2xvf1mkab0rulyq9fj0j1b87jy49lpvlbo25dt7dr4g442849z3f4u4p2rf1bctj235tht1azgasoe9u21zaifsubjxq777yyp4hi9dstpmbmcqi3weljbqq426r3xg5h7k2rdokqiqfu37h46f2p9v2e7r37m2k5lz49eqiyt\",\n \"field\" : \"ipoqb5o\",\n \"resource\" : \"qbubm59xdo1ov9p2vo4e1e7casqbfdgk79orvec1399dzhaprzuilpf9eupowpgzfeg8yafbpm1ch1njo7kgs7qkjjetynw32vt1zh294bbg3vhqn1e6sinfgd6h8wqjpyc7u9qtbcv5v9hfr8zpjneoe6w1w00jw6phesl9i\",\n \"index\" : 347932665904035337,\n \"message\" : \"Est ad alias. Quisquam dignissimos architecto tempora modi. Et et quasi consequatur. Ut sed rerum est officia. Ut et est eos veniam laboriosam.\",\n \"value\" : { }\n }, {\n \"code\" : \"hltspnncfdg8r6ag1d4f4xety4z5tixu0l2acbnqvs21vf5ztsfls44og8konnx8eoo07dj3kna2c2sta0iti1eo8emqs5bgo5hzdnxngxmem6zocraodhphu\",\n \"field\" : \"378jiid5m5qb66ckw2c3xyuw8n3jscjy06tw68s1ok\",\n \"resource\" : \"cymr1bvm03qt93vsx08si3s5g6bx6slby2mvc9rlqnhydh2gnz19usgvl2lvqqejptt7r606r7yvaowkljnf2qfp34neqew0irm8vaefjg3etan0vshxfeldak7nuxawakms86pyjczx6yosqybcof2p3tdhhan5gcc61xxkhkv35m7vgxi2z25a8545gqdb0r\",\n \"index\" : 2298069048516273390,\n \"message\" : \"Provident et recusandae consequatur. Accusamus voluptas cupiditate sapiente tenetur. Error odio et atque itaque adipisci numquam.\",\n \"value\" : { }\n } ]\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "a60a71f2-ef0c-4b90-98b8-a59ef8eeb8c1", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.033259Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "issues/list-comments-for-repo", + "schema": { + "description": "Validation Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "errors": { + "items": { + "properties": { + "code": { + "type": "string" + }, + "field": { + "type": "string" + }, + "index": { + "type": "integer" + }, + "message": { + "type": "string" + }, + "resource": { + "type": "string" + }, + "value": { + "oneOf": [ + { + "nullable": true, + "type": "string" + }, + { + "nullable": true, + "type": "integer" + }, + { + "items": { + "type": "string" + }, + "nullable": true, + "type": "array" + } + ] + } + }, + "required": ["code"], + "type": "object" + }, + "type": "array" + }, + "message": { + "type": "string" + } + }, + "required": ["message", "documentation_url"], + "title": "Validation Error", + "type": "object" + } + } + } + }, + "insertionIndex": 628 + }, + { + "id": "b6bfe503-1f9c-4792-9fc2-0450884035b2", + "name": "List issue comments for a repository", + "request": { + "urlPath": "/repos/2zislkj5lvut78ch2igh1xxol8/bbeoq4v8e0kggtoilv1mqh4b000ab7t5bj36yu0v57eg3a28kntz88tc24tzgabw1brgehl0oqkwzxpkn0733xkx2b1bvqdf23ktq6j3it3sabmz3mzbvbazc3p/issues/comments", + "method": "GET" + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/153772\",\n \"message\" : \"Dicta qui praesentium et sequi. Ut deserunt ut vel. Est est soluta vero modi labore architecto.\",\n \"url\" : \"https://web.example.mocklab.io/516028\",\n \"status\" : \"c6yw6tr9bidskohf7m452klf5bngybdwb0qpx9vi7m01332znfgoxn5rbkvmlt761ljy5dhrpp1r8pallsrrfdmj6jfthr2twgim63pq98pd3tp1h6y88ja277nm06yoqxuk0hn65qfigbvs4\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "b6bfe503-1f9c-4792-9fc2-0450884035b2", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.032528Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "issues/list-comments-for-repo", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 629 + }, + { + "id": "d664afe9-d7ba-481b-9c1d-4c841db2f9fa", + "name": "List issue comments for a repository - default", + "request": { + "urlPath": "/repos/16oef6t83m9r8blj6jgg130v0pk67on0ros6s0lnlun4aiohiroflwuf46nk939d6jxepvz5ah80oqunafokmeg4m4qgcxsg0ks/a8cr8v8c4swrphdiyzrxp0f5gslpzp9hkwh9n0ywqerf6an4dyecfl/issues/comments", + "method": "GET" + }, + "response": { + "status": 200, + "body": "[ {\n \"author_association\" : \"COLLABORATOR\",\n \"body\" : \"Me too\",\n \"created_at\" : \"2011-04-14T16:00:49Z\",\n \"html_url\" : \"https://github.com/octocat/Hello-World/issues/1347#issuecomment-1\",\n \"id\" : 1,\n \"issue_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347\",\n \"node_id\" : \"MDEyOklzc3VlQ29tbWVudDE=\",\n \"updated_at\" : \"2011-04-14T16:00:49Z\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/comments/1\",\n \"user\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n }\n} ]", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "d664afe9-d7ba-481b-9c1d-4c841db2f9fa", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.032316Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "issues/list-comments-for-repo", + "schema": { + "items": { + "$ref": "#/components/schemas/issue-comment" + }, + "type": "array" + } + } + } + }, + "insertionIndex": 630 + }, + { + "id": "917de207-3d6e-4d71-8b16-78deb103b23d", + "name": "Create an issue", + "request": { + "urlPath": "/repos/792uqafh0vlimmexbxbu2azrbrsad3ebnjz1g3o1qh2rk0xlcq28xozuowqqq2fxeoe2xbp6o62ulexfbl6cscmbko9lgcv89pnesk6srs0qdlnnv5hqrmr3vxkn7dibv1izosb0en98tg924uo7692m39wmjw5/gu08mnp5n92wmda6b15yy/issues", + "method": "POST" + }, + "response": { + "status": 503, + "body": "{\n \"code\" : \"80uypctlmxffio8audfs7nhsuv5cyc714mkfqnaw64qgmw2e2wyuq\",\n \"documentation_url\" : \"https://web.example.mocklab.io/501304\",\n \"message\" : \"Illo libero asperiores aut et. Asperiores pariatur ab sapiente accusamus. Eveniet eum molestias impedit fuga. Id animi molestiae molestiae nam.\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "917de207-3d6e-4d71-8b16-78deb103b23d", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.032257Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "issues/create", + "schema": { + "properties": { + "code": { + "type": "string" + }, + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "type": "object" + } + } + } + }, + "insertionIndex": 631 + }, + { + "id": "c35ab1d8-0a80-4335-9a21-8ea080a8f9ef", + "name": "Create an issue", + "request": { + "urlPath": "/repos/6kpj9n4nh3j35sbwh1ocaayq469bx83aiojlu2a5bu9b2iltrlz5acgx8wihx96eoq0vh9luzcg05ihq0xw9cxx1cgx2c0jolha1g9ohxl82antyj9mvhdjdk8e7kj0b3nb0k9z345wyltnmth3rl7g671r2vygcmegyhpb0/41ncz8n7b4buojxenx279mmfs4oa34mnhkcw9ab8dw0yobnhuqm7w7y026i7esrci8l8608inll5o4sck9v2g4uh78rgwfwqsjsf2f6n0/issues", + "method": "POST" + }, + "response": { + "status": 422, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/080354\",\n \"message\" : \"Illo sapiente ut quis provident qui magni dolorum. In consequuntur voluptatem blanditiis. Voluptatibus dolorum molestias doloremque in quaerat. Expedita ut sequi.\",\n \"errors\" : [ {\n \"code\" : \"202wn3kce7tdto2d85kp03ravnmyl\",\n \"field\" : \"jvmc9bu\",\n \"resource\" : \"jbltsdtzud5b8j719sncrteyu9l20ge711261m67m7j1gxic0\",\n \"index\" : 7899436501459369937,\n \"message\" : \"Similique voluptas impedit eveniet aut. Sit temporibus non autem magni. Sed aut ratione. Magnam nihil a neque voluptatem ab. Aliquam architecto qui.\",\n \"value\" : { }\n }, {\n \"code\" : \"tva6bwo0xfh2u6fxg7zhdy4y0bakm7rujbvr3pi2\",\n \"field\" : \"iavwis78rs\",\n \"resource\" : \"awxacpzcl3plakjbexk4ivvyub1qhigrx0zwvjj7ugr5y13jpiwn2icvqzsn4usv8sm0xono5izp2sgry5y2rbnqt427p8ul0750amexl905hj9g6pku9ebio148ptz9dpp\",\n \"index\" : 3857980876917233163,\n \"message\" : \"Tempora aut veritatis iure dolores repudiandae dicta pariatur. Ullam alias iure maiores natus. Provident quod ratione est incidunt error. Repudiandae saepe molestias.\",\n \"value\" : { }\n }, {\n \"code\" : \"cet1drqafc3fp\",\n \"field\" : \"h7doih9c1k5\",\n \"resource\" : \"55ujabimdj7jrm6uq04r4q8hpkef6j45o10tpcd4dgnkx0ebxx36zcllqxrrl076l885h3tqwidv29c80vckro26csb7tqm14p0eczrvtftgqxx3z5cha4hwe5kjt41f4ihkt86k5dv01aruppj69wkhscsn3iwgp1j83mit466qqacdvx4tofzzoxc369\",\n \"index\" : 5291708794162024567,\n \"message\" : \"Omnis consequatur vel vel minus. Ut animi quisquam et aut animi fugiat occaecati. Vel laudantium suscipit reiciendis ratione deleniti et officia. Placeat molestias mollitia omnis dicta.\",\n \"value\" : { }\n }, {\n \"code\" : \"gysyue98ix1xs89k87jlxii8m7inw0aixs1f9svo4y1686bvhxjwej8haqct9li76fs328i0na\",\n \"field\" : \"ykpocy0lg4t0pl3gjcwmf7a7jqp8tr9nmxotg5ymqtducml3s5s2j53ao4thyucut0jm93zis6j1ai6jhjjcqchsjvpxwg6cienqjr460pisxx\",\n \"resource\" : \"i42qu4djewykwo5wbjo3d9p7a0v\",\n \"index\" : 320493735120047270,\n \"message\" : \"Voluptatem asperiores deserunt dolorem velit quasi at. Consequuntur explicabo ea odio. Iste quasi fuga labore accusantium.\",\n \"value\" : { }\n } ]\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "c35ab1d8-0a80-4335-9a21-8ea080a8f9ef", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.032093Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "issues/create", + "schema": { + "description": "Validation Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "errors": { + "items": { + "properties": { + "code": { + "type": "string" + }, + "field": { + "type": "string" + }, + "index": { + "type": "integer" + }, + "message": { + "type": "string" + }, + "resource": { + "type": "string" + }, + "value": { + "oneOf": [ + { + "nullable": true, + "type": "string" + }, + { + "nullable": true, + "type": "integer" + }, + { + "items": { + "type": "string" + }, + "nullable": true, + "type": "array" + } + ] + } + }, + "required": ["code"], + "type": "object" + }, + "type": "array" + }, + "message": { + "type": "string" + } + }, + "required": ["message", "documentation_url"], + "title": "Validation Error", + "type": "object" + } + } + } + }, + "insertionIndex": 632 + }, + { + "id": "1266f8dc-4a7d-47fd-a0bd-93601e86d487", + "name": "Create an issue", + "request": { + "urlPath": "/repos/zv8s9a7su8idpkcc6mbe2pnb553rnmrj4na0lqerl5i44uo1k8a3l9kovwrcwks97gv3hzia6gfb4m821529bo9u9kue8beuvjzg1y5ci/w1zp8e8lmqyxrx7621qw9cyr2l7hqyrjzt2lcok8kjwfcyie3wbsq8x4d7aubja39ct3eoj340icn5m43hdohtqirsoo4ysm3qban2mqtt1c8w72dq4fado347wzd/issues", + "method": "POST" + }, + "response": { + "status": 410, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/316516\",\n \"message\" : \"Quasi tempore beatae labore cumque pariatur quia hic. Sit amet dolor. Doloremque voluptatem officiis rerum sed quis sed. Quas eius et. Quam impedit modi vel beatae omnis perspiciatis.\",\n \"url\" : \"https://web.example.mocklab.io/726058\",\n \"status\" : \"5a7q2xz0z2mmj5uxyuwks3z0l3ro5qzb0ggr\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "1266f8dc-4a7d-47fd-a0bd-93601e86d487", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.031568Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "issues/create", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 633 + }, + { + "id": "cf1dfb44-19c4-4249-b8ee-ad5afd1d4786", + "name": "Create an issue", + "request": { + "urlPath": "/repos/wgwv9yaife9cvuif95ukpvfkdhr83taam7c0vms1n6zuwwk46lo7bhv9i6bl551da0ijaiakqilom7kuzqbzfodygecv0zred5up52u5kqq4t2afg7yrupz4gwif18aht5l45de89bmg32axpqdkgcnzc7aojf0ek0euqoc7ur24a2b56mdkdga61hf7/z9d01gwylcnvk5dk0vz2sa83huqwi8z0geq48tozzdwqlcvl5gccs040loua20z2acw27l1puqn8attkyh5er6q5trhoxt/issues", + "method": "POST" + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/094233\",\n \"message\" : \"Non cupiditate id aut culpa et. Eos inventore eveniet. Quis id fuga deserunt recusandae et molestiae.\",\n \"url\" : \"https://web.example.mocklab.io/893900\",\n \"status\" : \"rwkmsx91ftvjyelphf7um49xm5n9ranpvyhaiucim2e3oz857swxfuyjkauq9jkw8u4pmngad9obeh0whz\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "cf1dfb44-19c4-4249-b8ee-ad5afd1d4786", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.031351Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "issues/create", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 634 + }, + { + "id": "98bf4811-1b78-4a52-a7b5-f0708fa1d762", + "name": "Create an issue", + "request": { + "urlPath": "/repos/6ku314s1ex/cx2cf34sbhyjfacf1jlp87nys7sudnnxvruk6p42j573kbozu0zg0euyv2awkeh8y5zhz7cxixflwgdpkbscrwc1kwd2tzfahqi6npsdf5eofa09rjqj3b4700wjjznpma2ooelazy790pvn/issues", + "method": "POST" + }, + "response": { + "status": 403, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/013423\",\n \"message\" : \"Officia dicta quia dolore itaque molestiae aut qui. Eum dolore ipsum est nihil voluptate numquam animi. Possimus velit ut praesentium nisi aut sed debitis. Consequatur vel natus suscipit ut vel amet e\",\n \"url\" : \"https://web.example.mocklab.io/788455\",\n \"status\" : \"pv4crb77mip12m5zf05ax7juij2i7bebzo1oi1rt\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "98bf4811-1b78-4a52-a7b5-f0708fa1d762", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.031142Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "issues/create", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 635 + }, + { + "id": "dd3be5e8-0b5a-4af2-9d8c-e81fd20088fb", + "name": "Create an issue - default", + "request": { + "urlPath": "/repos/bzgpejdkl1dpbp1mnte6h90nchg05k4xyirrsssxwo4lk5twrsgcq0417xhos3o1cbezmiikradbfndu4ienb7uzz0ndgauehgz17mwued1k9gqftg3ekxtuts1o4xbcwitt4r2zciud12scwrvdryy1prvj1krojtowb90u78xkwsz5cem7jq/u9z0yljg6oglkj4w2xeego0b5p8ifims0fn34nheu57si/issues", + "method": "POST" + }, + "response": { + "status": 201, + "body": "{\n \"active_lock_reason\" : \"too heated\",\n \"assignee\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"assignees\" : [ {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n } ],\n \"author_association\" : \"COLLABORATOR\",\n \"body\" : \"I'm having a problem with this.\",\n \"closed_by\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"comments\" : 0,\n \"comments_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347/comments\",\n \"created_at\" : \"2011-04-22T13:33:48Z\",\n \"events_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347/events\",\n \"html_url\" : \"https://github.com/octocat/Hello-World/issues/1347\",\n \"id\" : 1,\n \"labels\" : [ {\n \"color\" : \"f29513\",\n \"default\" : true,\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"name\" : \"bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/labels/bug\"\n } ],\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347/labels{/name}\",\n \"locked\" : true,\n \"milestone\" : {\n \"closed_at\" : \"2013-02-12T13:22:01Z\",\n \"closed_issues\" : 8,\n \"created_at\" : \"2011-04-10T20:09:31Z\",\n \"creator\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"description\" : \"Tracking milestone for version 1.0\",\n \"due_on\" : \"2012-10-09T23:39:01Z\",\n \"html_url\" : \"https://github.com/octocat/Hello-World/milestones/v1.0\",\n \"id\" : 1002604,\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones/1/labels\",\n \"node_id\" : \"MDk6TWlsZXN0b25lMTAwMjYwNA==\",\n \"number\" : 1,\n \"open_issues\" : 4,\n \"state\" : \"open\",\n \"title\" : \"v1.0\",\n \"updated_at\" : \"2014-03-03T18:58:10Z\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones/1\"\n },\n \"node_id\" : \"MDU6SXNzdWUx\",\n \"number\" : 1347,\n \"pull_request\" : {\n \"diff_url\" : \"https://github.com/octocat/Hello-World/pull/1347.diff\",\n \"html_url\" : \"https://github.com/octocat/Hello-World/pull/1347\",\n \"patch_url\" : \"https://github.com/octocat/Hello-World/pull/1347.patch\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/pulls/1347\"\n },\n \"repository_url\" : \"https://api.github.com/repos/octocat/Hello-World\",\n \"state\" : \"open\",\n \"title\" : \"Found a bug\",\n \"updated_at\" : \"2011-04-22T13:33:48Z\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347\",\n \"user\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n }\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "dd3be5e8-0b5a-4af2-9d8c-e81fd20088fb", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.030902Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "issues/create", + "schema": { + "description": "Issues are a great way to keep track of tasks, enhancements, and bugs for your projects.", + "properties": { + "active_lock_reason": { + "nullable": true, + "type": "string" + }, + "assignee": { + "$ref": "#/components/schemas/nullable-simple-user" + }, + "assignees": { + "items": { + "$ref": "#/components/schemas/simple-user" + }, + "nullable": true, + "type": "array" + }, + "author_association": { + "$ref": "#/components/schemas/author_association" + }, + "body": { + "description": "Contents of the issue", + "example": "It looks like the new widget form is broken on Safari. When I try and create the widget, Safari crashes. This is reproducible on 10.8, but not 10.9. Maybe a browser bug?", + "nullable": true, + "type": "string" + }, + "body_html": { + "type": "string" + }, + "body_text": { + "type": "string" + }, + "closed_at": { + "format": "date-time", + "nullable": true, + "type": "string" + }, + "closed_by": { + "$ref": "#/components/schemas/nullable-simple-user" + }, + "comments": { + "type": "integer" + }, + "comments_url": { + "format": "uri", + "type": "string" + }, + "created_at": { + "format": "date-time", + "type": "string" + }, + "events_url": { + "format": "uri", + "type": "string" + }, + "html_url": { + "format": "uri", + "type": "string" + }, + "id": { + "type": "integer" + }, + "labels": { + "description": "Labels to associate with this issue; pass one or more label names to replace the set of labels on this issue; send an empty array to clear all labels from the issue; note that the labels are silently dropped for users without push access to the repository", + "example": ["bug", "registration"], + "items": { + "oneOf": [ + { + "type": "string" + }, + { + "properties": { + "color": { + "nullable": true, + "type": "string" + }, + "default": { + "type": "boolean" + }, + "description": { + "nullable": true, + "type": "string" + }, + "id": { + "format": "int64", + "type": "integer" + }, + "name": { + "type": "string" + }, + "node_id": { + "type": "string" + }, + "url": { + "format": "uri", + "type": "string" + } + }, + "type": "object" + } + ] + }, + "type": "array" + }, + "labels_url": { + "type": "string" + }, + "locked": { + "type": "boolean" + }, + "milestone": { + "$ref": "#/components/schemas/nullable-milestone" + }, + "node_id": { + "type": "string" + }, + "number": { + "description": "Number uniquely identifying the issue within its repository", + "example": 42, + "type": "integer" + }, + "performed_via_github_app": { + "$ref": "#/components/schemas/nullable-integration" + }, + "pull_request": { + "properties": { + "diff_url": { + "format": "uri", + "nullable": true, + "type": "string" + }, + "html_url": { + "format": "uri", + "nullable": true, + "type": "string" + }, + "merged_at": { + "format": "date-time", + "nullable": true, + "type": "string" + }, + "patch_url": { + "format": "uri", + "nullable": true, + "type": "string" + }, + "url": { + "format": "uri", + "nullable": true, + "type": "string" + } + }, + "required": ["diff_url", "html_url", "patch_url", "url"], + "type": "object" + }, + "reactions": { + "$ref": "#/components/schemas/reaction-rollup" + }, + "repository": { + "$ref": "#/components/schemas/repository" + }, + "repository_url": { + "format": "uri", + "type": "string" + }, + "state": { + "description": "State of the issue; either 'open' or 'closed'", + "example": "open", + "type": "string" + }, + "timeline_url": { + "format": "uri", + "type": "string" + }, + "title": { + "description": "Title of the issue", + "example": "Widget creation fails in Safari on OS X 10.8", + "type": "string" + }, + "updated_at": { + "format": "date-time", + "type": "string" + }, + "url": { + "description": "URL for the issue", + "example": "https://api.github.com/repositories/42/issues/1", + "format": "uri", + "type": "string" + }, + "user": { + "$ref": "#/components/schemas/nullable-simple-user" + } + }, + "required": [ + "assignee", + "closed_at", + "comments", + "comments_url", + "events_url", + "html_url", + "id", + "node_id", + "labels", + "labels_url", + "milestone", + "number", + "repository_url", + "state", + "locked", + "title", + "url", + "user", + "author_association", + "created_at", + "updated_at" + ], + "title": "Issue", + "type": "object" + } + } + } + }, + "insertionIndex": 636 + }, + { + "id": "505f3e54-abd8-45be-a854-9202f57d14d2", + "name": "List repository issues", + "request": { + "urlPath": "/repos/1zffr6jaimhlqzm6y8sqoadefhlhcm40xqx1fkn2eqv2bmnqxwqixpsj9exxxr76avtkmwvxshfd011e0889gcu4gk2oopds/4tgpw2xx0mxxc3g1czzr06kk5qv3yzcarxapr5wvzozvpjtjfwxwd6bbnobcu1u9j4hey7bb5cyom0y8lpmtj7ot9cnix0g0ol20kzvh1wlrrn1nuz7enw3rnp44zdoxf3sbbi6kffxky/issues", + "method": "GET" + }, + "response": { + "status": 422, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/823530\",\n \"message\" : \"Maxime iure non omnis ipsa itaque voluptas voluptatem. Est molestias ipsum molestiae. Aut debitis neque ab. Veritatis quasi itaque et.\",\n \"errors\" : [ {\n \"code\" : \"t44ne5p7rpls3z9oc2ozladbk8q03aahyxrlngqbaiknwpdgse30d5q9ko73dksjw9bh3orab7oqhk5lmntqe1vvjno06l0g7w4hy7391tahuceuf1es54rjppxykpiyvbaf1uyr18aj7d70e6ij41b4f59ip0rnz5d4\",\n \"field\" : \"yg2sw7y5dytuka9qjvhxi6784oy0d5j22f4ziqs\",\n \"resource\" : \"ma6k8zdqt2htadq\",\n \"index\" : 8612163136593079544,\n \"message\" : \"Ex architecto fugit est consequatur. Tempora similique voluptatem quia sit reprehenderit. Voluptatem perferendis nostrum nesciunt atque.\",\n \"value\" : { }\n }, {\n \"code\" : \"5mmt3iuchma7k7fbmqf0bgfuh42oy089k4gvl5jkc9tbp9m5c8xq9wd5tohdpby9yftyo22qjnx1bqn97i1z6cx7k8vpwgct38h2ohu99zt5bb6r\",\n \"field\" : \"wk86b4ttzpcs83eo7zj5izcbnahxtq5fxuz054n2j4y6tbm1cqy67j7bqmtugbdf30nfbpjhuzov3l6h9n71fe666ez2ni2c3928pimmkjoli8y4pi731bmhfnlroxx5h6m50kkk509hf0yhmbg55y6380zgacabdrfj\",\n \"resource\" : \"ph28zt755fnbgc01zi1wuges25ykh8yqqqdxk1ens5lsjxm5dw1l36ne2um8wmacu60ghixv0bose9e7on3sdrit52hvtg3c19fw6o9t35lhino1f7rhc8wb940n1zbh6n2y51mt9\",\n \"index\" : 3036373203248980753,\n \"message\" : \"Illum laudantium nobis. Autem aliquam quaerat velit maiores est. In dolores ab.\",\n \"value\" : { }\n }, {\n \"code\" : \"fyxu2dkj6ea\",\n \"field\" : \"zrmqaqabrzxcs0k5eopms0tkliknagcft9qj2703b5k251uamnrsh4etah3cjo634tqj\",\n \"resource\" : \"luz7b3hxsqf62c9ho9wtl0micxjohhwi6twsy\",\n \"index\" : 5741001719574398891,\n \"message\" : \"Numquam nostrum praesentium ullam inventore esse ab. Nulla quia aut voluptate. Non doloremque sint eum sint.\",\n \"value\" : { }\n }, {\n \"code\" : \"46fl2kspqw0dvvr1vnzhl6kef52njd187ylohq2ugdnk906fq6bmorm1m40dy0mb374n5wlpwow3mis85lmgg3v8xwl2uyngit06pqed8qn2a111k4kk8wwvq1vy0jcdupm064w43adf7sdgryei17dfkxq4jn7slupqzd9ppxtkilbjqfjhm8inmrk\",\n \"field\" : \"lj6dqau062m2zcb0lzwo\",\n \"resource\" : \"cv981zt39udlnp1a6wb6wo5hij4ipkrxmdw7eftohpg9nmg31pate2z5koh37p5c4qpxmlbloxev\",\n \"index\" : 8066573408937171693,\n \"message\" : \"Repellat hic ex ut et sit et laborum. Molestiae et ut aut modi sed ducimus ut. Veritatis nobis aut id est nam.\",\n \"value\" : { }\n }, {\n \"code\" : \"2dt34et71xmcvplddcvjc59sap13rrm8wf7rhif1whp44jfd1evrkqxh34m8ghjdm1b06havgniwq6706xvxzblsv1jpo9osscco4nzvw10ey4ezhjm9l9gr929m7fm4qqiy2byyillqie4ifzow84j7utipmmgb4t53khao4is7\",\n \"field\" : \"80qi81culwox12p0b01qdyrz5k7n4ul94n4mkmk2a8n01u9vsc6uoklyaxgb57z\",\n \"resource\" : \"4b3ta6hufon0kr9vlya55io2h8g5xygtvxh2ux50uhuj3b9u0k3tnpedvxzbhfs23cx76mdmwgnmkmee6hzfrgdn5agk3sza9k7z\",\n \"index\" : 7951650411427017502,\n \"message\" : \"Unde inventore sunt ut mollitia perferendis eos delectus. Praesentium occaecati explicabo et voluptatum rerum voluptate natus. Eveniet sit earum recusandae quis cum.\",\n \"value\" : { }\n } ]\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "505f3e54-abd8-45be-a854-9202f57d14d2", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.030572Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "issues/list-for-repo", + "schema": { + "description": "Validation Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "errors": { + "items": { + "properties": { + "code": { + "type": "string" + }, + "field": { + "type": "string" + }, + "index": { + "type": "integer" + }, + "message": { + "type": "string" + }, + "resource": { + "type": "string" + }, + "value": { + "oneOf": [ + { + "nullable": true, + "type": "string" + }, + { + "nullable": true, + "type": "integer" + }, + { + "items": { + "type": "string" + }, + "nullable": true, + "type": "array" + } + ] + } + }, + "required": ["code"], + "type": "object" + }, + "type": "array" + }, + "message": { + "type": "string" + } + }, + "required": ["message", "documentation_url"], + "title": "Validation Error", + "type": "object" + } + } + } + }, + "insertionIndex": 637 + }, + { + "id": "751e9aa0-9e6b-4355-9c6b-c1c1fbd179b3", + "name": "List repository issues", + "request": { + "urlPath": "/repos/01b4fdb/r8flv2ceealsxoaghj308brjlg5e2q8071eeie1zdpm/issues", + "method": "GET" + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/712525\",\n \"message\" : \"Omnis dolor hic reiciendis quo consequatur ab. Rerum amet ipsa voluptatem quam quis rerum. Ut ipsam et ea molestiae ab enim.\",\n \"url\" : \"https://web.example.mocklab.io/650987\",\n \"status\" : \"i4lncze3tm3rf387r38wd58ec00viwb63h2o80q84r3hb42vde7qqw4mkuhs8h0qjnjww1\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "751e9aa0-9e6b-4355-9c6b-c1c1fbd179b3", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.029983Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "issues/list-for-repo", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 638 + }, + { + "id": "31c01117-e482-4832-9ad6-5623f75e385e", + "name": "List repository issues", + "request": { + "urlPath": "/repos/r87g30zvuxaxshzthb227v4l76gp9u5akqwznu6prq/em63k7atovr7rw332yg0q3d2wztvxgyucrxn2q7tv7pgsbpyr9gzbm3i5suk8fo66w7nnev63bqewzv7294l8vnhgkfdbxh9/issues", + "method": "GET" + }, + "response": { + "status": 301, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/619453\",\n \"message\" : \"Sint velit sint repellendus tenetur odio. Asperiores cupiditate sint non eum nulla ea et. Eum possimus laborum reprehenderit nihil. Sit ea alias.\",\n \"url\" : \"https://web.example.mocklab.io/684988\",\n \"status\" : \"5eji62mmsr98p1nqzwrrd93nxt9d8v51lusft\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "31c01117-e482-4832-9ad6-5623f75e385e", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.02977Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "issues/list-for-repo", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 639 + }, + { + "id": "704cdf92-2c40-48a8-a502-750b073bab31", + "name": "List repository issues - default", + "request": { + "urlPath": "/repos/cqcsi1yb0tzgwm5n02uahw69f6bmt4o3la0lhk3r95e8t1w68bdo7wrvzqx9yi4e1d6kj1pvq9gz2v53gu36ykkvhogdc5153hiikxak6bl9kcit1fp8tcee9ac6hi3cvonyzbdqyh/ekw0havxj6ntrld0rwl0rpupcegsoxc3snb36bjwwo8f5n323yht3h612ov54vrevyokt4bnrm/issues", + "method": "GET" + }, + "response": { + "status": 200, + "body": "[ {\n \"active_lock_reason\" : \"too heated\",\n \"assignee\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"assignees\" : [ {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n } ],\n \"author_association\" : \"COLLABORATOR\",\n \"body\" : \"I'm having a problem with this.\",\n \"comments\" : 0,\n \"comments_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347/comments\",\n \"created_at\" : \"2011-04-22T13:33:48Z\",\n \"events_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347/events\",\n \"html_url\" : \"https://github.com/octocat/Hello-World/issues/1347\",\n \"id\" : 1,\n \"labels\" : [ {\n \"color\" : \"f29513\",\n \"default\" : true,\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"name\" : \"bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/labels/bug\"\n } ],\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347/labels{/name}\",\n \"locked\" : true,\n \"milestone\" : {\n \"closed_at\" : \"2013-02-12T13:22:01Z\",\n \"closed_issues\" : 8,\n \"created_at\" : \"2011-04-10T20:09:31Z\",\n \"creator\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"description\" : \"Tracking milestone for version 1.0\",\n \"due_on\" : \"2012-10-09T23:39:01Z\",\n \"html_url\" : \"https://github.com/octocat/Hello-World/milestones/v1.0\",\n \"id\" : 1002604,\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones/1/labels\",\n \"node_id\" : \"MDk6TWlsZXN0b25lMTAwMjYwNA==\",\n \"number\" : 1,\n \"open_issues\" : 4,\n \"state\" : \"open\",\n \"title\" : \"v1.0\",\n \"updated_at\" : \"2014-03-03T18:58:10Z\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones/1\"\n },\n \"node_id\" : \"MDU6SXNzdWUx\",\n \"number\" : 1347,\n \"pull_request\" : {\n \"diff_url\" : \"https://github.com/octocat/Hello-World/pull/1347.diff\",\n \"html_url\" : \"https://github.com/octocat/Hello-World/pull/1347\",\n \"patch_url\" : \"https://github.com/octocat/Hello-World/pull/1347.patch\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/pulls/1347\"\n },\n \"repository_url\" : \"https://api.github.com/repos/octocat/Hello-World\",\n \"state\" : \"open\",\n \"title\" : \"Found a bug\",\n \"updated_at\" : \"2011-04-22T13:33:48Z\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347\",\n \"user\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n }\n} ]", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "704cdf92-2c40-48a8-a502-750b073bab31", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.029547Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "issues/list-for-repo", + "schema": { + "items": { + "$ref": "#/components/schemas/issue-simple" + }, + "type": "array" + } + } + } + }, + "insertionIndex": 640 + }, + { + "id": "2ff6cb33-a150-4961-a53f-95cfa63e5ea1", + "name": "Update a repository invitation - default", + "request": { + "urlPath": "/repos/ob7uaa66q60tmf7kbehjnqf1kfqczlz00swszducokexwgwm0hyzfhs53zxapoj3ufjgb0ea9/l6w12v1v3wtvcjhp3/invitations/5485547608257290288", + "method": "PATCH" + }, + "response": { + "status": 200, + "body": "{\n \"created_at\" : \"2016-06-13T14:52:50-05:00\",\n \"expired\" : false,\n \"html_url\" : \"https://github.com/octocat/Hello-World/invitations\",\n \"id\" : 1,\n \"invitee\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"inviter\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"node_id\" : \"MDEwOlJlcG9zaXRvcnkxMjk2MjY5\",\n \"permissions\" : \"write\",\n \"repository\" : {\n \"archive_url\" : \"https://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref}\",\n \"assignees_url\" : \"https://api.github.com/repos/octocat/Hello-World/assignees{/user}\",\n \"blobs_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/blobs{/sha}\",\n \"branches_url\" : \"https://api.github.com/repos/octocat/Hello-World/branches{/branch}\",\n \"collaborators_url\" : \"https://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator}\",\n \"comments_url\" : \"https://api.github.com/repos/octocat/Hello-World/comments{/number}\",\n \"commits_url\" : \"https://api.github.com/repos/octocat/Hello-World/commits{/sha}\",\n \"compare_url\" : \"https://api.github.com/repos/octocat/Hello-World/compare/{base}...{head}\",\n \"contents_url\" : \"https://api.github.com/repos/octocat/Hello-World/contents/{+path}\",\n \"contributors_url\" : \"https://api.github.com/repos/octocat/Hello-World/contributors\",\n \"deployments_url\" : \"https://api.github.com/repos/octocat/Hello-World/deployments\",\n \"description\" : \"This your first repo!\",\n \"downloads_url\" : \"https://api.github.com/repos/octocat/Hello-World/downloads\",\n \"events_url\" : \"https://api.github.com/repos/octocat/Hello-World/events\",\n \"fork\" : false,\n \"forks_url\" : \"https://api.github.com/repos/octocat/Hello-World/forks\",\n \"full_name\" : \"octocat/Hello-World\",\n \"git_commits_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/commits{/sha}\",\n \"git_refs_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/refs{/sha}\",\n \"git_tags_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/tags{/sha}\",\n \"git_url\" : \"git:github.com/octocat/Hello-World.git\",\n \"hooks_url\" : \"http://api.github.com/repos/octocat/Hello-World/hooks\",\n \"html_url\" : \"https://github.com/octocat/Hello-World\",\n \"id\" : 1296269,\n \"issue_comment_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/comments{/number}\",\n \"issue_events_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/events{/number}\",\n \"issues_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues{/number}\",\n \"keys_url\" : \"https://api.github.com/repos/octocat/Hello-World/keys{/key_id}\",\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World/labels{/name}\",\n \"languages_url\" : \"https://api.github.com/repos/octocat/Hello-World/languages\",\n \"merges_url\" : \"https://api.github.com/repos/octocat/Hello-World/merges\",\n \"milestones_url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones{/number}\",\n \"name\" : \"Hello-World\",\n \"node_id\" : \"MDEwOlJlcG9zaXRvcnkxMjk2MjY5\",\n \"notifications_url\" : \"https://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating}\",\n \"owner\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"private\" : false,\n \"pulls_url\" : \"https://api.github.com/repos/octocat/Hello-World/pulls{/number}\",\n \"releases_url\" : \"https://api.github.com/repos/octocat/Hello-World/releases{/id}\",\n \"ssh_url\" : \"git@github.com:octocat/Hello-World.git\",\n \"stargazers_url\" : \"https://api.github.com/repos/octocat/Hello-World/stargazers\",\n \"statuses_url\" : \"https://api.github.com/repos/octocat/Hello-World/statuses/{sha}\",\n \"subscribers_url\" : \"https://api.github.com/repos/octocat/Hello-World/subscribers\",\n \"subscription_url\" : \"https://api.github.com/repos/octocat/Hello-World/subscription\",\n \"tags_url\" : \"https://api.github.com/repos/octocat/Hello-World/tags\",\n \"teams_url\" : \"https://api.github.com/repos/octocat/Hello-World/teams\",\n \"trees_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/trees{/sha}\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World\"\n },\n \"url\" : \"https://api.github.com/user/repository_invitations/1296269\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "2ff6cb33-a150-4961-a53f-95cfa63e5ea1", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.029473Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/update-invitation", + "schema": { + "description": "Repository invitations let you manage who you collaborate with.", + "properties": { + "created_at": { + "example": "2016-06-13T14:52:50-05:00", + "format": "date-time", + "type": "string" + }, + "expired": { + "description": "Whether or not the invitation has expired", + "type": "boolean" + }, + "html_url": { + "example": "https://github.com/octocat/Hello-World/invitations", + "type": "string" + }, + "id": { + "description": "Unique identifier of the repository invitation.", + "example": 42, + "type": "integer" + }, + "invitee": { + "$ref": "#/components/schemas/nullable-simple-user" + }, + "inviter": { + "$ref": "#/components/schemas/nullable-simple-user" + }, + "node_id": { + "type": "string" + }, + "permissions": { + "description": "The permission associated with the invitation.", + "enum": ["read", "write", "admin", "triage", "maintain"], + "example": "read", + "type": "string" + }, + "repository": { + "$ref": "#/components/schemas/minimal-repository" + }, + "url": { + "description": "URL for the repository invitation", + "example": "https://api.github.com/user/repository-invitations/1", + "type": "string" + } + }, + "required": [ + "id", + "node_id", + "permissions", + "inviter", + "invitee", + "repository", + "url", + "html_url", + "created_at" + ], + "title": "Repository Invitation", + "type": "object" + } + } + } + }, + "insertionIndex": 641 + }, + { + "id": "23496159-a1d4-4951-8694-4fcfa82318b8", + "name": "Delete a repository invitation - 204", + "request": { + "urlPath": "/repos/c8g4/wxkvw4nx2kh1enzxpqgx0vdhe39qk4dl31p891jaxcds1uq1y07e/invitations/2548435470018101440", + "method": "DELETE" + }, + "response": { + "status": 204 + }, + "uuid": "23496159-a1d4-4951-8694-4fcfa82318b8", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.029357Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/delete-invitation" + } + } + }, + "insertionIndex": 642 + }, + { + "id": "28d188bf-dbe5-4e3d-a01d-15e17327b827", + "name": "List repository invitations - default", + "request": { + "urlPath": "/repos/4sq0gs7vrhr47va7p54g7sqs646h19pnm746zpvl1k19g2ubq7f430o7xjs9erpoz1pqxhnizqwtylef5139nleqwroehwu301n80/s22pasi99hmu568arns4x4c3xf84fm0sv8tjudq0evjp4p55nje5jwctr9lyailt0vjdwdj6y7xyvg31mu5amt2gyj4nqglln74ti0zndw/invitations", + "method": "GET" + }, + "response": { + "status": 200, + "body": "[ {\n \"created_at\" : \"2016-06-13T14:52:50-05:00\",\n \"html_url\" : \"https://github.com/octocat/Hello-World/invitations\",\n \"id\" : 1,\n \"invitee\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"inviter\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"permissions\" : \"write\",\n \"repository\" : {\n \"archive_url\" : \"https://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref}\",\n \"assignees_url\" : \"https://api.github.com/repos/octocat/Hello-World/assignees{/user}\",\n \"blobs_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/blobs{/sha}\",\n \"branches_url\" : \"https://api.github.com/repos/octocat/Hello-World/branches{/branch}\",\n \"collaborators_url\" : \"https://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator}\",\n \"comments_url\" : \"https://api.github.com/repos/octocat/Hello-World/comments{/number}\",\n \"commits_url\" : \"https://api.github.com/repos/octocat/Hello-World/commits{/sha}\",\n \"compare_url\" : \"https://api.github.com/repos/octocat/Hello-World/compare/{base}...{head}\",\n \"contents_url\" : \"https://api.github.com/repos/octocat/Hello-World/contents/{+path}\",\n \"contributors_url\" : \"https://api.github.com/repos/octocat/Hello-World/contributors\",\n \"deployments_url\" : \"https://api.github.com/repos/octocat/Hello-World/deployments\",\n \"description\" : \"This your first repo!\",\n \"downloads_url\" : \"https://api.github.com/repos/octocat/Hello-World/downloads\",\n \"events_url\" : \"https://api.github.com/repos/octocat/Hello-World/events\",\n \"fork\" : false,\n \"forks_url\" : \"https://api.github.com/repos/octocat/Hello-World/forks\",\n \"full_name\" : \"octocat/Hello-World\",\n \"git_commits_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/commits{/sha}\",\n \"git_refs_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/refs{/sha}\",\n \"git_tags_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/tags{/sha}\",\n \"git_url\" : \"git:github.com/octocat/Hello-World.git\",\n \"hooks_url\" : \"http://api.github.com/repos/octocat/Hello-World/hooks\",\n \"html_url\" : \"https://github.com/octocat/Hello-World\",\n \"id\" : 1296269,\n \"issue_comment_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/comments{/number}\",\n \"issue_events_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/events{/number}\",\n \"issues_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues{/number}\",\n \"keys_url\" : \"https://api.github.com/repos/octocat/Hello-World/keys{/key_id}\",\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World/labels{/name}\",\n \"languages_url\" : \"https://api.github.com/repos/octocat/Hello-World/languages\",\n \"merges_url\" : \"https://api.github.com/repos/octocat/Hello-World/merges\",\n \"milestones_url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones{/number}\",\n \"name\" : \"Hello-World\",\n \"node_id\" : \"MDEwOlJlcG9zaXRvcnkxMjk2MjY5\",\n \"notifications_url\" : \"https://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating}\",\n \"owner\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"private\" : false,\n \"pulls_url\" : \"https://api.github.com/repos/octocat/Hello-World/pulls{/number}\",\n \"releases_url\" : \"https://api.github.com/repos/octocat/Hello-World/releases{/id}\",\n \"ssh_url\" : \"git@github.com:octocat/Hello-World.git\",\n \"stargazers_url\" : \"https://api.github.com/repos/octocat/Hello-World/stargazers\",\n \"statuses_url\" : \"https://api.github.com/repos/octocat/Hello-World/statuses/{sha}\",\n \"subscribers_url\" : \"https://api.github.com/repos/octocat/Hello-World/subscribers\",\n \"subscription_url\" : \"https://api.github.com/repos/octocat/Hello-World/subscription\",\n \"tags_url\" : \"https://api.github.com/repos/octocat/Hello-World/tags\",\n \"teams_url\" : \"https://api.github.com/repos/octocat/Hello-World/teams\",\n \"trees_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/trees{/sha}\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World\"\n },\n \"url\" : \"https://api.github.com/user/repository_invitations/1296269\"\n} ]", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "28d188bf-dbe5-4e3d-a01d-15e17327b827", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.029317Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/list-invitations", + "schema": { + "items": { + "$ref": "#/components/schemas/repository-invitation" + }, + "type": "array" + } + } + } + }, + "insertionIndex": 643 + }, + { + "id": "a5d2c086-e64d-4088-afb1-8bf9bd63d286", + "name": "Get a repository installation for the authenticated app", + "request": { + "urlPath": "/repos/ffbn3swhgyq7sit9fra47hgks456dmh5ru2r22tjmglhfldpzbge651b4l55xxtdub9gm0rxs5imjib3aqp3jb9hmelt70edw6hzlnrwncd/mva5pz2abyjzwrztlr0daj32xu28hnhvj4mqtkqhhw8fdshzhiixcsj4l6szu8q0jmbuubfjzb4isbh0ekzqiw4ri6630il6m/installation", + "method": "GET" + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/276484\",\n \"message\" : \"Veritatis maiores eveniet quasi. Quae quia consectetur commodi quia nemo. Ratione suscipit enim non ratione. Aliquam delectus qui ut aliquam voluptates laudantium impedit. Corrupti est soluta eveniet \",\n \"url\" : \"https://web.example.mocklab.io/374338\",\n \"status\" : \"52y5nwc440nznoiwrlmdcxc2of1njjixelrdiwg5d0goidqbbv59ga7nzbioyqrsxgdqllvga66j6bi8bbugjn6l2jud19a4mq7kdlw9a0pzo3hjel9axt\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "a5d2c086-e64d-4088-afb1-8bf9bd63d286", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.029249Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "apps/get-repo-installation", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 644 + }, + { + "id": "d0d78f66-ebfb-489d-a2f8-7f2cf2bd1f97", + "name": "Get a repository installation for the authenticated app", + "request": { + "urlPath": "/repos/7mxl99l4v59zszlh7llup63k87q6o42fd4jqcvdy3ibdgg1uangba2411npjntf69wst0hcb99suuekn3dj02mysd39x5dtkhx7cluixlf0yakmezrr82xwd6ntbtzpwifnag3mmnyavp7tx2jm49h33mzz1o/3jffok7qri13dw66fm3vurbk2edcqkfgysx393hlqj08tidiin1vbovg03a2lsulfqosfyn2ods3glhxzma78zkv4twt01c3zpdwffd1uerm5vq08xurff3bm51142hvzwiacqqbl08wt8za6mu4r1owlaqphek/installation", + "method": "GET" + }, + "response": { + "status": 301, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/073308\",\n \"message\" : \"Animi in quis pariatur temporibus. Ratione consequatur architecto dicta quod est quia. Sint ipsa numquam accusamus dicta numquam sint suscipit. Quidem quibusdam atque numquam. Suscipit consectetur non\",\n \"url\" : \"https://web.example.mocklab.io/794780\",\n \"status\" : \"xogipwajobi74och613mo6le47elbibg08wvgay8hgj1jdfmbn3j06dyow8evhsrg0ict613dd7whqe33agxffnehjgxcd3rl3edzcmlj03gmqakqmpxegquyld7yq8xbmyhchzxwjm19dhkdo70tl6nbugj0gn4jg7e64sc3qxzvgh\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "d0d78f66-ebfb-489d-a2f8-7f2cf2bd1f97", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.029028Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "apps/get-repo-installation", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 645 + }, + { + "id": "b4c61deb-b8ec-44f3-bfc4-a932368be28d", + "name": "Get a repository installation for the authenticated app - default", + "request": { + "urlPath": "/repos/vj755ni9g2equ4vgyck3ue4v8h3llfxgo/1jbal0bhj4xcrfavu9slp4rehwjhldckn8ybs5zxjxsna19vm9xp9b30dwmrimc390yhxrk/installation", + "method": "GET" + }, + "response": { + "status": 200, + "body": "{\n \"access_tokens_url\" : \"https://api.github.com/installations/1/access_tokens\",\n \"account\" : {\n \"avatar_url\" : \"https://github.com/images/error/hubot_happy.gif\",\n \"events_url\" : \"https://api.github.com/orgs/github/events\",\n \"followers_url\" : \"https://api.github.com/users/github/followers\",\n \"following_url\" : \"https://api.github.com/users/github/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/github/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/github\",\n \"id\" : 1,\n \"login\" : \"github\",\n \"node_id\" : \"MDEyOk9yZ2FuaXphdGlvbjE=\",\n \"organizations_url\" : \"https://api.github.com/users/github/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/github/received_events\",\n \"repos_url\" : \"https://api.github.com/orgs/github/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/github/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/github/subscriptions\",\n \"type\" : \"Organization\",\n \"url\" : \"https://api.github.com/orgs/github\"\n },\n \"app_id\" : 1,\n \"app_slug\" : \"github-actions\",\n \"created_at\" : \"2018-02-09T20:51:14Z\",\n \"events\" : [ \"push\", \"pull_request\" ],\n \"html_url\" : \"https://github.com/organizations/github/settings/installations/1\",\n \"id\" : 1,\n \"permissions\" : {\n \"checks\" : \"write\",\n \"contents\" : \"read\",\n \"metadata\" : \"read\"\n },\n \"repositories_url\" : \"https://api.github.com/installation/repositories\",\n \"repository_selection\" : \"all\",\n \"single_file_name\" : \"config.yml\",\n \"target_id\" : 1,\n \"target_type\" : \"Organization\",\n \"updated_at\" : \"2018-02-09T20:51:14Z\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "b4c61deb-b8ec-44f3-bfc4-a932368be28d", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.028783Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "apps/get-repo-installation", + "schema": { + "description": "Installation", + "properties": { + "access_tokens_url": { + "example": "https://api.github.com/installations/1/access_tokens", + "format": "uri", + "type": "string" + }, + "account": { + "anyOf": [ + { + "$ref": "#/components/schemas/simple-user" + }, + { + "$ref": "#/components/schemas/enterprise" + } + ], + "nullable": true + }, + "app_id": { + "example": 1, + "type": "integer" + }, + "app_slug": { + "example": "github-actions", + "type": "string" + }, + "contact_email": { + "example": "\"test_13f1e99741e3e004@d7e1eb0bc0a1ba12.com\"", + "nullable": true, + "type": "string" + }, + "created_at": { + "format": "date-time", + "type": "string" + }, + "events": { + "items": { + "type": "string" + }, + "type": "array" + }, + "html_url": { + "example": "https://github.com/organizations/github/settings/installations/1", + "format": "uri", + "type": "string" + }, + "id": { + "description": "The ID of the installation.", + "example": 1, + "type": "integer" + }, + "permissions": { + "example": { + "deployments": "write", + "issues": "read" + }, + "properties": { + "checks": { + "type": "string" + }, + "contents": { + "type": "string" + }, + "deployments": { + "type": "string" + }, + "issues": { + "example": "\"read\"", + "type": "string" + }, + "metadata": { + "type": "string" + }, + "organization_administration": { + "example": "\"read\"", + "type": "string" + }, + "pull_requests": { + "type": "string" + }, + "statuses": { + "type": "string" + } + }, + "type": "object" + }, + "repositories_url": { + "example": "https://api.github.com/installation/repositories", + "format": "uri", + "type": "string" + }, + "repository_selection": { + "description": "Describe whether all repositories have been selected or there's a selection involved", + "enum": ["all", "selected"], + "type": "string" + }, + "single_file_name": { + "example": "config.yaml", + "nullable": true, + "type": "string" + }, + "suspended_at": { + "format": "date-time", + "nullable": true, + "type": "string" + }, + "suspended_by": { + "$ref": "#/components/schemas/nullable-simple-user" + }, + "target_id": { + "description": "The ID of the user or organization this token is being scoped to.", + "type": "integer" + }, + "target_type": { + "example": "Organization", + "type": "string" + }, + "updated_at": { + "format": "date-time", + "type": "string" + } + }, + "required": [ + "id", + "app_id", + "app_slug", + "target_id", + "target_type", + "single_file_name", + "repository_selection", + "access_tokens_url", + "html_url", + "repositories_url", + "events", + "account", + "permissions", + "created_at", + "updated_at" + ], + "title": "Installation", + "type": "object" + } + } + } + }, + "insertionIndex": 646 + }, + { + "id": "f5efface-bea7-4dd8-9464-f6dd9cdd6ff1", + "name": "Test the push repository webhook (application/json)", + "request": { + "urlPath": "/repos/avdx8k0335xl5hwqyijpwmmo93xq9sjpbrk5n71wyfb7562xruirrwt7jaubs9he6uv3ja6d7dz774pp4dqk8h4llpyz2lcsic6pqyhhb1s9ebitetgs8o82cip0jctmxnl0zmnyvdjxjkwbb3t4y/cu5rivhxfhpi78kb168kcrgk3l7qm33sxa1jkwdrtpykj3e2k1x12coubzmb6l32vto1euyp5xfisx8vi1xj/hooks/6342479318256018349/tests", + "method": "POST", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/706809\",\n \"message\" : \"Aut voluptas ea sit enim animi quia et. Neque animi nostrum est excepturi voluptatem. Exercitationem accusamus assumenda fugit.\",\n \"url\" : \"https://web.example.mocklab.io/586125\",\n \"status\" : \"88iv1vrlmwtg21u2uz1nzewd4t7z62yj539f4geku17q1dzp8h9wg7gvfy1emmxtp56mh5n6xq946tqfewp9s4uivsw7xc55yiaqul4nrk7l8yjh4j\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "f5efface-bea7-4dd8-9464-f6dd9cdd6ff1", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.028535Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/test-push-webhook", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 647 + }, + { + "id": "d6471944-5fa2-4558-8fe3-55637db0871c", + "name": "Test the push repository webhook - 204", + "request": { + "urlPath": "/repos/sagjsg/8wur8kpw2414i95jbf4oyrko9ztkbsxosfhklxaril1fcwocytf13nowb7wzk22b749aglphnsffdj36floo53srof99ahwan1o4at359u6/hooks/1304735279213827470/tests", + "method": "POST" + }, + "response": { + "status": 204 + }, + "uuid": "d6471944-5fa2-4558-8fe3-55637db0871c", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.028316Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/test-push-webhook" + } + } + }, + "insertionIndex": 648 + }, + { + "id": "7409074b-dc04-41c7-9fef-5d1a63d900a0", + "name": "Ping a repository webhook (application/json)", + "request": { + "urlPath": "/repos/u5q8352oow94vlstnde8bwmm94zak4fd7r1jtg63qyn1/wavomlm9jyiovmhdwrzjdvv7/hooks/4623001865022427739/pings", + "method": "POST", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/092217\",\n \"message\" : \"Voluptatem voluptatem dolores. Non amet et recusandae aperiam. Laborum voluptates autem labore qui et. Delectus error aliquid repudiandae.\",\n \"url\" : \"https://web.example.mocklab.io/256006\",\n \"status\" : \"8ni5y134cgj2asxoof26km8mg9589fe4b1fifiobb8r8ti44k5accyxqdixgapvur0y66uihbvpj4k65x3mb32pccfjqcn1vvqo1fglf08ytv54b85ejk3nnr5txvw6qn5ovz8wth4z\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "7409074b-dc04-41c7-9fef-5d1a63d900a0", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.028268Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/ping-webhook", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 649 + }, + { + "id": "5236391e-07df-4860-b4f7-a797c6575a22", + "name": "Ping a repository webhook - 204", + "request": { + "urlPath": "/repos/irfbimh2u48fl1z950ucpum5whrvkernxopj02j5x4i4ops1xhpgjqh9s/emdez42l065ytlbm8lpqo9071d8o34utt81lclxw53i8b04q4ahrotd4buf3o90xiln2z64sxi710gqb4fjtzonsek3omdmhpg9mlz7ls8g5lisyvwq0nefjm825u6d1mgqskupb2alpdqnnee9iwmd1r9qszyccscdt29jiyv2dc76rhw66ch49cmhdp1d4/hooks/6649973489532431277/pings", + "method": "POST" + }, + "response": { + "status": 204 + }, + "uuid": "5236391e-07df-4860-b4f7-a797c6575a22", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.028039Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/ping-webhook" + } + } + }, + "insertionIndex": 650 + }, + { + "id": "5ec25022-6e70-4c59-906b-b60f713256cf", + "name": "Update a repository webhook", + "request": { + "urlPath": "/repos/w6ksogdegf3fd0wo3wnuew9ii7w51u5klrs7ofxk6ryrhmjcgaw5ggpf/zscg4f2wzhnyfg0db6f71fxu8qzkia7kwh6gwcaw/hooks/7785171714376611336", + "method": "PATCH" + }, + "response": { + "status": 422, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/855455\",\n \"message\" : \"Ea dolores dicta saepe eum minus ut voluptatum. Voluptatibus consequatur expedita sequi. Non porro perferendis deserunt explicabo. Veritatis quis cupiditate porro quaerat.\",\n \"errors\" : [ {\n \"code\" : \"eleddfndnidn973fjvnbjrm286lkmlnjeier25gvggukjlvsc2jwbdjvq1erbxfdl0uxaz9c8s7rtw8lan4wvvipab9izb6i\",\n \"field\" : \"buh379nv0q5rywx6o8ixut33h2vg2fsp4uhyid0gte0oe0oituj7bz9hqkvc3luir6gszu4dbzpp2qja4ianco31x51z1zdmyif25k918xhezp4rssl8hjtfe0h7b815k3hr1p1qicyr8poppgry9sv6mzo3j5izxfeonge\",\n \"resource\" : \"t2gkpdzs9i2x4iurpxlqb91kfsu0rxwt2qdx0nf5cx5m4d1exhvx95071klz1mjnryg7m9d4910109t08qdnsri7f22nc61uwuem3kkxwvbyn77id6n5b8bz40orh607y7vr3v\",\n \"index\" : 1795652575411793927,\n \"message\" : \"Enim ipsam sequi reiciendis consequuntur. Aliquam sed delectus debitis. Nulla neque et natus rem. Nulla asperiores ipsa saepe.\",\n \"value\" : { }\n }, {\n \"code\" : \"wj6u5kesnw3fdsekuyehurzillon13tgui1\",\n \"field\" : \"is5ivp236y4eiwofo0sfbox36oq3es2jjj48kioobdz5fnv5kwt4\",\n \"resource\" : \"z1owyuuj3dmrr0es3uv0rj6s78otmpw8azjbj5s64qa3jq6zu39xe63k174ggav2isuu9yob74mjq328cp0\",\n \"index\" : 7631042968015370438,\n \"message\" : \"Aliquid ut laboriosam distinctio. Iure veritatis tempore placeat consequatur et beatae. Ratione vel et velit sit et amet non. Nihil et non magnam. Porro omnis optio officia quia.\",\n \"value\" : { }\n }, {\n \"code\" : \"mz1yoosbjvti5igtln4nkawhwm8jywji7wb8fc24rd4oigqabv56x8viz6cn3l58u3d2cq4vmsr48i2dh60cprinsfbv8zwat7909m86pzqixaofcs3k55kza8oo2ybtq1kwcktz8o\",\n \"field\" : \"xcqrayavvkbd7agdikfrsz48e63dk7z5o7x7yvoyiqmyfoxhtoxypiddxzxc7iiuoxaiqpsvnb8nddo3q52m14l6g6ssti2n8ldce9mdpkp80vavu6rn7qq2ma733t4wk8p24hawoxctaw7qg47xxqzab47bxke1luimfj4p4qlmlfwzoan\",\n \"resource\" : \"cqwvhw4u7r079zjrfyekskzkn7c3ounytcli4zae8l4fewimqeajc1m51yvhgn7p1joqheclxno45ud1hupldkzvmyvq2gl1o9qr6e4cxbmbj3rk1zmdjuvuws9z294cv2x0z3ityrs3ed57e42o3j5\",\n \"index\" : 1019116994150547258,\n \"message\" : \"Qui recusandae temporibus dolor facilis itaque enim id. Error assumenda possimus est molestiae minus unde est. Voluptatum illo quibusdam debitis provident quos.\",\n \"value\" : { }\n }, {\n \"code\" : \"25bkr3wfky2nyfata5twzrio7e08zif0icq9isv50gcpux\",\n \"field\" : \"22x627hq75be5qwf3sp8qx\",\n \"resource\" : \"5nbgj6ecr1rbt5uk111peycl7norognks85ycopkgf4fa3kyruyeyfo0gvk\",\n \"index\" : 3767846309738356810,\n \"message\" : \"Placeat debitis autem autem dolore doloremque velit. Adipisci veritatis laboriosam quam. Soluta nesciunt reiciendis dolor explicabo asperiores. Molestiae delectus sed aspernatur repellendus aspernatur\",\n \"value\" : { }\n } ]\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "5ec25022-6e70-4c59-906b-b60f713256cf", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.027986Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/update-webhook", + "schema": { + "description": "Validation Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "errors": { + "items": { + "properties": { + "code": { + "type": "string" + }, + "field": { + "type": "string" + }, + "index": { + "type": "integer" + }, + "message": { + "type": "string" + }, + "resource": { + "type": "string" + }, + "value": { + "oneOf": [ + { + "nullable": true, + "type": "string" + }, + { + "nullable": true, + "type": "integer" + }, + { + "items": { + "type": "string" + }, + "nullable": true, + "type": "array" + } + ] + } + }, + "required": ["code"], + "type": "object" + }, + "type": "array" + }, + "message": { + "type": "string" + } + }, + "required": ["message", "documentation_url"], + "title": "Validation Error", + "type": "object" + } + } + } + }, + "insertionIndex": 651 + }, + { + "id": "e7502504-e442-45e8-9000-b32d2fac7c68", + "name": "Update a repository webhook", + "request": { + "urlPath": "/repos/do6vj3lbo9i31gsvyh4brc67cb2u8jnlpyjkzyuu3ofymp5eam8blu/lp2r4fezufpig80hrgz397cyvxokg3yg5ljbt8c8tb3oo9p699pne3qu1tboqe4qb8ukn8orewhqc9trrznhmjetfgwysxd6xjoo36gkqyuee1qvf7qp37ep9dzw7azzld1p16asgtji7vfacpimz80ekqfsncb2rf49x8o6gcjcn9gtz5x2r9/hooks/6452037165623296977", + "method": "PATCH" + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/850977\",\n \"message\" : \"Totam sit eos. Magni nulla occaecati est consequatur. Distinctio dolores praesentium tempore omnis.\",\n \"url\" : \"https://web.example.mocklab.io/425190\",\n \"status\" : \"g2ztgfx5uwclk6kki4pinjvvs6\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "e7502504-e442-45e8-9000-b32d2fac7c68", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.027416Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/update-webhook", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 652 + }, + { + "id": "e7474d9c-eca4-41fc-a050-58da0089eaf3", + "name": "Update a repository webhook - default", + "request": { + "urlPath": "/repos/2v55d8/2hzk283oiz10e6uc18q5bb5nhoyb30sohha2c0hl1zz89crps04mkolnl9roj3mi4/hooks/9176167300074544166", + "method": "PATCH" + }, + "response": { + "status": 200, + "body": "{\n \"active\" : true,\n \"config\" : {\n \"content_type\" : \"json\",\n \"insecure_ssl\" : \"0\",\n \"url\" : \"https://example.com/webhook\"\n },\n \"created_at\" : \"2019-06-03T00:57:16Z\",\n \"events\" : [ \"push\", \"pull_request\" ],\n \"id\" : 12345678,\n \"last_response\" : {\n \"status\" : \"unused\"\n },\n \"name\" : \"web\",\n \"ping_url\" : \"https://api.github.com/repos/octocat/Hello-World/hooks/12345678/pings\",\n \"test_url\" : \"https://api.github.com/repos/octocat/Hello-World/hooks/12345678/test\",\n \"type\" : \"Repository\",\n \"updated_at\" : \"2019-06-03T00:57:16Z\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/hooks/12345678\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "e7474d9c-eca4-41fc-a050-58da0089eaf3", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.027176Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/update-webhook", + "schema": { + "description": "Webhooks for repositories.", + "properties": { + "active": { + "description": "Determines whether the hook is actually triggered on pushes.", + "example": true, + "type": "boolean" + }, + "config": { + "properties": { + "content_type": { + "$ref": "#/components/schemas/webhook-config-content-type" + }, + "digest": { + "example": "\"sha256\"", + "type": "string" + }, + "email": { + "example": "\"foo@bar.com\"", + "type": "string" + }, + "insecure_ssl": { + "$ref": "#/components/schemas/webhook-config-insecure-ssl" + }, + "password": { + "example": "\"foo\"", + "type": "string" + }, + "room": { + "example": "\"roomer\"", + "type": "string" + }, + "secret": { + "$ref": "#/components/schemas/webhook-config-secret" + }, + "subdomain": { + "example": "\"foo\"", + "type": "string" + }, + "token": { + "example": "\"abc\"", + "type": "string" + }, + "url": { + "$ref": "#/components/schemas/webhook-config-url" + } + }, + "type": "object" + }, + "created_at": { + "example": "2011-09-06T17:26:27Z", + "format": "date-time", + "type": "string" + }, + "events": { + "description": "Determines what events the hook is triggered for. Default: ['push'].", + "example": ["push", "pull_request"], + "items": { + "type": "string" + }, + "type": "array" + }, + "id": { + "description": "Unique identifier of the webhook.", + "example": 42, + "type": "integer" + }, + "last_response": { + "$ref": "#/components/schemas/hook-response" + }, + "name": { + "description": "The name of a valid service, use 'web' for a webhook.", + "example": "web", + "type": "string" + }, + "ping_url": { + "example": "https://api.github.com/repos/octocat/Hello-World/hooks/1/pings", + "format": "uri", + "type": "string" + }, + "test_url": { + "example": "https://api.github.com/repos/octocat/Hello-World/hooks/1/test", + "format": "uri", + "type": "string" + }, + "type": { + "type": "string" + }, + "updated_at": { + "example": "2011-09-06T20:39:23Z", + "format": "date-time", + "type": "string" + }, + "url": { + "example": "https://api.github.com/repos/octocat/Hello-World/hooks/1", + "format": "uri", + "type": "string" + } + }, + "required": [ + "id", + "url", + "type", + "name", + "active", + "events", + "config", + "ping_url", + "created_at", + "updated_at", + "last_response", + "test_url" + ], + "title": "Webhook", + "type": "object" + } + } + } + }, + "insertionIndex": 653 + }, + { + "id": "54d7b1dc-b224-4428-a4c9-32e50aa79b0a", + "name": "Get a repository webhook", + "request": { + "urlPath": "/repos/m5wkybxext131rq5j1p09dohryu29hedtrkm9fmtt6pwyt4hu27srfvtz9217ltvlt66km3eu4dt4keriyetn7ugmg0i7v7z3o/8tkw6tzutnyj5tzg6p92/hooks/8038165005860716179", + "method": "GET" + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/745188\",\n \"message\" : \"Sit sapiente ipsa eos beatae laboriosam sed asperiores. Et ad aspernatur unde qui debitis. Nesciunt labore magni. Dignissimos minima enim. Sed rem voluptatem praesentium quibusdam.\",\n \"url\" : \"https://web.example.mocklab.io/770994\",\n \"status\" : \"u9o27vpvxeoth4nn3uw93yk5hn8srw1zs1sh1eej4pez5uf8rr6ifq5etfrgkikwnfgdp61tp6e7lmv2xamt50r5s25bzaqxtdttxcirf5vf8h7e2gdf7jibpiaqr1xlgk3tvkzmm2epffusoaabusasryb0hqauz5c1vxrmqqi0pzmbhu5\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "54d7b1dc-b224-4428-a4c9-32e50aa79b0a", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.027013Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/get-webhook", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 654 + }, + { + "id": "c983e02b-980c-4137-acce-6ec7f6bd1d0f", + "name": "Get a repository webhook - default", + "request": { + "urlPath": "/repos/y0rm96hnjxm1a11yxi/dncigyvsnhbihbjpkzcjo3i0pzazkmcn1gjts7yr3b6380aak6ehshqa7dust17sif5gg3vmspxmca4p7y2e04lfx8hdweid4dyb7q1tbmoi8j9dt8esfgnejgad61e2j67eyw59pn3ygx9v6p7lqeqsgbsruriu3imxzqzusc3sl3brys/hooks/3357864802785672771", + "method": "GET" + }, + "response": { + "status": 200, + "body": "{\n \"active\" : true,\n \"config\" : {\n \"content_type\" : \"json\",\n \"insecure_ssl\" : \"0\",\n \"url\" : \"https://example.com/webhook\"\n },\n \"created_at\" : \"2019-06-03T00:57:16Z\",\n \"events\" : [ \"push\", \"pull_request\" ],\n \"id\" : 12345678,\n \"last_response\" : {\n \"status\" : \"unused\"\n },\n \"name\" : \"web\",\n \"ping_url\" : \"https://api.github.com/repos/octocat/Hello-World/hooks/12345678/pings\",\n \"test_url\" : \"https://api.github.com/repos/octocat/Hello-World/hooks/12345678/test\",\n \"type\" : \"Repository\",\n \"updated_at\" : \"2019-06-03T00:57:16Z\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/hooks/12345678\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "c983e02b-980c-4137-acce-6ec7f6bd1d0f", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.026719Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/get-webhook", + "schema": { + "description": "Webhooks for repositories.", + "properties": { + "active": { + "description": "Determines whether the hook is actually triggered on pushes.", + "example": true, + "type": "boolean" + }, + "config": { + "properties": { + "content_type": { + "$ref": "#/components/schemas/webhook-config-content-type" + }, + "digest": { + "example": "\"sha256\"", + "type": "string" + }, + "email": { + "example": "\"foo@bar.com\"", + "type": "string" + }, + "insecure_ssl": { + "$ref": "#/components/schemas/webhook-config-insecure-ssl" + }, + "password": { + "example": "\"foo\"", + "type": "string" + }, + "room": { + "example": "\"roomer\"", + "type": "string" + }, + "secret": { + "$ref": "#/components/schemas/webhook-config-secret" + }, + "subdomain": { + "example": "\"foo\"", + "type": "string" + }, + "token": { + "example": "\"abc\"", + "type": "string" + }, + "url": { + "$ref": "#/components/schemas/webhook-config-url" + } + }, + "type": "object" + }, + "created_at": { + "example": "2011-09-06T17:26:27Z", + "format": "date-time", + "type": "string" + }, + "events": { + "description": "Determines what events the hook is triggered for. Default: ['push'].", + "example": ["push", "pull_request"], + "items": { + "type": "string" + }, + "type": "array" + }, + "id": { + "description": "Unique identifier of the webhook.", + "example": 42, + "type": "integer" + }, + "last_response": { + "$ref": "#/components/schemas/hook-response" + }, + "name": { + "description": "The name of a valid service, use 'web' for a webhook.", + "example": "web", + "type": "string" + }, + "ping_url": { + "example": "https://api.github.com/repos/octocat/Hello-World/hooks/1/pings", + "format": "uri", + "type": "string" + }, + "test_url": { + "example": "https://api.github.com/repos/octocat/Hello-World/hooks/1/test", + "format": "uri", + "type": "string" + }, + "type": { + "type": "string" + }, + "updated_at": { + "example": "2011-09-06T20:39:23Z", + "format": "date-time", + "type": "string" + }, + "url": { + "example": "https://api.github.com/repos/octocat/Hello-World/hooks/1", + "format": "uri", + "type": "string" + } + }, + "required": [ + "id", + "url", + "type", + "name", + "active", + "events", + "config", + "ping_url", + "created_at", + "updated_at", + "last_response", + "test_url" + ], + "title": "Webhook", + "type": "object" + } + } + } + }, + "insertionIndex": 655 + }, + { + "id": "7468067c-6f72-44a4-8274-fc506fb1af0d", + "name": "Delete a repository webhook (application/json)", + "request": { + "urlPath": "/repos/p84ech8bu0wg62z7iykx05naxipaxywr8gn8df9pefw6pbga621c2lvp446xmo7pzk7qcqi72de5/9zw8olfkwa7y2b8nn5ntf7198a7rtpyyupy27j/hooks/4842918531027989583", + "method": "DELETE", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/880863\",\n \"message\" : \"Quasi et et natus qui consequatur. Sit doloremque et delectus dolores nam possimus. Hic voluptatem illum vel fugiat sunt. Pariatur assumenda voluptatibus corporis culpa provident quisquam cumque. Iust\",\n \"url\" : \"https://web.example.mocklab.io/124372\",\n \"status\" : \"f79tnnmwyltxryrxz02eerlzzl4hz4vtkdnib2h18rggy2jl23k4ekooz\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "7468067c-6f72-44a4-8274-fc506fb1af0d", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.02645Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/delete-webhook", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 656 + }, + { + "id": "89225017-0044-4149-89b7-0ec97b56653e", + "name": "Delete a repository webhook - 204", + "request": { + "urlPath": "/repos/p8o0gp58vy0dkut2kkaoeqlc8ts55w4z7i9p7axpygsur1b346g78hd5qp7270nxy4zz9geh0adkmm7o/ywjcs7qtkkt6fvxukkqz9a0de57xcshv7cp4p82j1dx7sm66v2m9qmu9irqmm0h7ltddrof9x5ghr53f93uzbo52iha7vfnerf3wa07frqufodnxx3f86bslmbz9xprw7678zfi9iif64yr4cyfcp4bzepd0clgo3i1/hooks/7286987988837539515", + "method": "DELETE" + }, + "response": { + "status": 204 + }, + "uuid": "89225017-0044-4149-89b7-0ec97b56653e", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.026021Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/delete-webhook" + } + } + }, + "insertionIndex": 657 + }, + { + "id": "6b1166dc-e113-408f-bccd-563e4377442d", + "name": "Create a repository webhook", + "request": { + "urlPath": "/repos/okflgqtauayg9hguj77nrequjdza8p87wf97y866it49wiklb3ogrrztslyq6k87h2qeqlft9e3obctoc2rdx5at29r22pjy650pqhg48lndtmzgkbk1b02jyomlww9886oy/wagvnbu5aynn1te0usoa80mv0gwsjfcvmspdr2w0toabcmsgqq0na9sx8el0tyt6pfi6rnzqu4mnr/hooks", + "method": "POST" + }, + "response": { + "status": 422, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/706671\",\n \"message\" : \"Ratione molestiae voluptatem sint perspiciatis culpa blanditiis dignissimos. Omnis est molestiae praesentium unde nemo neque. Ut quod quaerat recusandae eum. Voluptas asperiores in. Quae sint sit.\",\n \"errors\" : [ {\n \"code\" : \"br0mp45qzh5o6g61g0gln9v1s235yff0rqka7wa44cl4n96joq0oes7yijcr9hyl5d2h8fdylxw3tq9rpzh0ug6ih4epqxr8q3uawtad1f6yiy0kbh57roilj0cd5z849hfxjwugk1mwo65fdc5rlka6uegm65jvj0b21v8pztyht92zzepr85za6\",\n \"field\" : \"zgyn3zz4wioy7ajerxmb0ynl5mwko9vx0rrrieikaoz3hnkysl9k4cycsakiaps42udq5a0rsk9j869abfiii7w\",\n \"resource\" : \"96ddr3uoo56pa35unkr5d3aj0l36xm3djaow0o9x40q6xrev77bskrkkqsr0wxgr6xfzdyu8s0bmhtt63kaedcyuoqiujnw08geky1ilmxmg3ohrgfq7w88ysuwgdgpnsfla48wbw69sq04zwjpr1z4746yyy1f5mep5ufp2gxyln6bm\",\n \"index\" : 396615409749815038,\n \"message\" : \"Ut rerum ea doloribus. Eos quae accusamus est ipsum commodi sed ipsam. Nisi nisi omnis. Optio amet dolorum neque. Autem vel quis provident.\",\n \"value\" : { }\n }, {\n \"code\" : \"n2rwairsxl47yyh6z30dc77qsmff7p9on5cprwksq99bkevlfj6c9tf6ipmo20wqsw0sixdi4hbadhrfy22nuhjy374b25qb5op9n0nh57z2t9lervx8vxh5wq6gugpxss2xgjulgez9v85swbexb7lwt7fi3tv44g08s86jc7t\",\n \"field\" : \"ia908bda0ma47ch3tlkq2jbixdhs36w7t75razxyfspq44\",\n \"resource\" : \"4m5nkuhuuz4g1x2bcuzfx8wxz3iqbd62h24g1kv40bbc56yck49oq7uckfg5yljrh\",\n \"index\" : 4854457779711897970,\n \"message\" : \"Blanditiis sint in non enim cumque deleniti. Similique veniam et dicta non. Expedita blanditiis quidem quidem quo corporis. Incidunt est nihil totam impedit. Nihil ut omnis neque.\",\n \"value\" : { }\n }, {\n \"code\" : \"vns8nmpsiiqsnmme1ok3ujdf0pmbd8ytk3j28k0g5anx6fh0gt7red0f2chc9e45fh84c4j30lr8y5gmdev98zfby0wi2p13eav44dp9fofwupnkywniz00w1m96mr7qzl9bw2lnl6ai321v9izqv7xrd1f39tz\",\n \"field\" : \"ii3famd5w8l262qa57682grw6r0h8mc0hqruzwwij6m217ecjofa7e6j5tlte0y8act9p3bw9dfs7e0w5kob7ocyjvbus7l\",\n \"resource\" : \"sibvdapqqz6zs0vzh9jxkli57l13kewce55hhxs4dmslcuy868vw3ql30kjjmomf8h9qo2j0lf9288axt3gsikq78gzoti3oqrb3om39m\",\n \"index\" : 7607729490205133514,\n \"message\" : \"Sequi iure iste. Incidunt officiis vitae animi. Consequuntur dolorem eum voluptatem ipsa mollitia accusantium.\",\n \"value\" : { }\n }, {\n \"code\" : \"gg7v832g42m0nqhymr74o9j29h6szz5i3tczihntoxwuy0nj8scaujbe0fga\",\n \"field\" : \"totj35m328zjflacmbqtdb05101yntfr795bsxxl97u8\",\n \"resource\" : \"lgyrzxfjcp32qslr37mfhquivl5144793cvqiyixnvys02u72s6c3274paayzlwt3t3e66eshbunti91xm2wjmnu1qhqmavurvii77jl\",\n \"index\" : 4655252932111224223,\n \"message\" : \"Maxime odio iste sit aut pariatur minima qui. Voluptatem beatae non veniam consectetur est quas accusantium. Consectetur eaque voluptas odio. Alias omnis ut ex a. Sapiente ratione non nostrum voluptat\",\n \"value\" : { }\n }, {\n \"code\" : \"9m93ki99v4cia2zh35toqfp7ilkm6rjhv22aflcfvbyx6cfltmi5vt0a2gr5xncdteg27asgkbmu06xwwe24brnu4ap4ucd2rqrmjmlrxco4e46kycxtwhlba0r333qdtujuj8divf0fmtpk57clk8icecm88owaia8vgx5gqe20k\",\n \"field\" : \"j3utxfnjnhc66urkc7r4xzdjtvnc7dqrec6yzscrcqf20m0vs0xa6favs9rh3c5zuustnfp1upe5yxf6htcgfzp9mvl4kpomqywnypbn5f4lccr6cp\",\n \"resource\" : \"20ikkrfcvuyb5e7qe7ohl5f1cm54p0r0fdjgoqm3suobks2\",\n \"index\" : 1274027481228018895,\n \"message\" : \"Tempore eius qui deserunt. Voluptatem est quasi in impedit quia pariatur. Sed nam tenetur omnis ab quis occaecati blanditiis. Quaerat rerum molestiae similique.\",\n \"value\" : { }\n }, {\n \"code\" : \"kj8s2jmocui5so0xuq03qss8zp1z9z4gvvlszid4npu0un0r7alo26srkaapewa3nfb3rj9y3awaqetqjg49eww8pfqh3mg14gopkgyo2kscpelc2l1wdweprvyz9bxbq9u573bk3r5irhu44s1f84ssg3l\",\n \"field\" : \"dplsia6musj\",\n \"resource\" : \"q792d0buep93hj65kpkpi7i3msd6tehazhcnp588pjyvhq44tbep7y598shwlvh4h96y2d\",\n \"index\" : 6638049986326186939,\n \"message\" : \"Unde ratione quis voluptas cupiditate autem. Et voluptatem quia fuga quis. Earum blanditiis id odio ut.\",\n \"value\" : { }\n }, {\n \"code\" : \"ez23m3s15l9440s3gvke49wg74a7dp9lwlrp82qc78junrt42r0ptfuayfw7fdioccgc0gg6lt5me2rat6m6mn6hffknokulu3sxoqnv1nkr16m4gzmqpbsa4\",\n \"field\" : \"v9vwky58eddosbqaz4m33fwh68x61xdtwzw91oy11nf7f0yahqss93xu926agcm6q1ommbvsr6pxsjl182zk6i3k6zzmbnt0urs9kry5vhdtajsn7bamu7504aq65hdugdx1qms7ja225sj21a2082fgfk\",\n \"resource\" : \"an2jmzcasi6ht8z1567r8qeutj63su8la8tf1yepvbagt24r30jz94rlemfvieaybw38dtr2rr6oyp20se1p9dflq3zvw1msdhq0y8e2wyrtdpyxkrxpdgpmyt6u2oecrwk9x44pv0xnmj3lupr0r6l81sgcjea2m5uvoczysszmar6pi76oltzusr0\",\n \"index\" : 8197748791677799224,\n \"message\" : \"Ad occaecati culpa eligendi aut vero facere. Occaecati sed nam ex et similique vel enim. Corrupti harum ducimus et possimus ratione. Sunt exercitationem quod consequatur voluptatem aperiam.\",\n \"value\" : { }\n } ]\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "6b1166dc-e113-408f-bccd-563e4377442d", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.025937Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/create-webhook", + "schema": { + "description": "Validation Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "errors": { + "items": { + "properties": { + "code": { + "type": "string" + }, + "field": { + "type": "string" + }, + "index": { + "type": "integer" + }, + "message": { + "type": "string" + }, + "resource": { + "type": "string" + }, + "value": { + "oneOf": [ + { + "nullable": true, + "type": "string" + }, + { + "nullable": true, + "type": "integer" + }, + { + "items": { + "type": "string" + }, + "nullable": true, + "type": "array" + } + ] + } + }, + "required": ["code"], + "type": "object" + }, + "type": "array" + }, + "message": { + "type": "string" + } + }, + "required": ["message", "documentation_url"], + "title": "Validation Error", + "type": "object" + } + } + } + }, + "insertionIndex": 658 + }, + { + "id": "9d9cf69e-2c03-4bed-9ecc-b296fd8e91e7", + "name": "Create a repository webhook", + "request": { + "urlPath": "/repos/gpxfkj9t4xsvwod7ojuwwyrqxdu182p1q7zygb9uur2c18l/4vt252zpe7ncbipd4jgedrcoojsn1l1oom8tyoieihdzji1tk3h2raxdbr3c425w99p821sas5kv7ejy7ptbevyyhapf6q4r776p2zumocee3fh3ok9dn6pdfrrki9ez55k4odnci4e98/hooks", + "method": "POST" + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/079292\",\n \"message\" : \"Aut optio quis reiciendis debitis. Eos quasi blanditiis illum cum quisquam dolorem. Doloribus facere modi nulla. Eveniet assumenda veniam in animi expedita a. Voluptatem est id.\",\n \"url\" : \"https://web.example.mocklab.io/932320\",\n \"status\" : \"m7uw2d30f35u5fds\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "9d9cf69e-2c03-4bed-9ecc-b296fd8e91e7", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.02484Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/create-webhook", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 659 + }, + { + "id": "dc824bd7-e6dd-46d4-9fd5-1e091cce403c", + "name": "Create a repository webhook", + "request": { + "urlPath": "/repos/ec7p578dc43ipj1x6hxr8j8eqbr6oa4gxdf9j10wa5710ychwv5rpwlqu2ymwxnxcoxqfyokgait22443etxljocgr64trli5kg3dg8i7sg3v3hokycfysiasuzr2fii3a0515scqmk7u4fq77zmiuh2vbolh3i7jfnbj1/3bd1bhe56jd9if1y9bnj44eercuiaipsuwrtqt979754ttt0t565onkazx5stv27p09oochya60lxydjckj4qfd4yfek6v0rpfy4er8pppce80zgjnlut9ppx0lo20raf9a4kpw0ps4l1mrmook9lfaksanec06cttpsk668gbkklduisl4v/hooks", + "method": "POST" + }, + "response": { + "status": 403, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/581078\",\n \"message\" : \"Ut ab laboriosam molestiae. Qui cumque iusto sit vero molestiae. Atque voluptatum unde eaque quasi.\",\n \"url\" : \"https://web.example.mocklab.io/937795\",\n \"status\" : \"1157hss2l58kf02swgytp4qe1qz86uh0u8nwgozqz7ow77l06f50ady7jsvqvy0db0k2tq2g2f593woa7tr9wokaknfvzetho5j7w0fyi97kugwida35nfi48d5szzr6hk21v1b9cx70d2b8iqdyq6550g8ke8oy6vhswf24uzpx8rq796aq60loyrt3yquxobs27q4d\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "dc824bd7-e6dd-46d4-9fd5-1e091cce403c", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.024617Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/create-webhook", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 660 + }, + { + "id": "9bbe82aa-3973-4cae-b069-e23a991296fd", + "name": "Create a repository webhook - default", + "request": { + "urlPath": "/repos/egkzj8/2h17e0tw0scoe2qmqor13hu6me44o0aijqzfmct5f6fvwr9iu50unh9br8ws5hmbrogjkcr5y9/hooks", + "method": "POST" + }, + "response": { + "status": 201, + "body": "{\n \"active\" : true,\n \"config\" : {\n \"content_type\" : \"json\",\n \"insecure_ssl\" : \"0\",\n \"url\" : \"https://example.com/webhook\"\n },\n \"created_at\" : \"2019-06-03T00:57:16Z\",\n \"events\" : [ \"push\", \"pull_request\" ],\n \"id\" : 12345678,\n \"last_response\" : {\n \"status\" : \"unused\"\n },\n \"name\" : \"web\",\n \"ping_url\" : \"https://api.github.com/repos/octocat/Hello-World/hooks/12345678/pings\",\n \"test_url\" : \"https://api.github.com/repos/octocat/Hello-World/hooks/12345678/test\",\n \"type\" : \"Repository\",\n \"updated_at\" : \"2019-06-03T00:57:16Z\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/hooks/12345678\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "9bbe82aa-3973-4cae-b069-e23a991296fd", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.02438Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/create-webhook", + "schema": { + "description": "Webhooks for repositories.", + "properties": { + "active": { + "description": "Determines whether the hook is actually triggered on pushes.", + "example": true, + "type": "boolean" + }, + "config": { + "properties": { + "content_type": { + "$ref": "#/components/schemas/webhook-config-content-type" + }, + "digest": { + "example": "\"sha256\"", + "type": "string" + }, + "email": { + "example": "\"foo@bar.com\"", + "type": "string" + }, + "insecure_ssl": { + "$ref": "#/components/schemas/webhook-config-insecure-ssl" + }, + "password": { + "example": "\"foo\"", + "type": "string" + }, + "room": { + "example": "\"roomer\"", + "type": "string" + }, + "secret": { + "$ref": "#/components/schemas/webhook-config-secret" + }, + "subdomain": { + "example": "\"foo\"", + "type": "string" + }, + "token": { + "example": "\"abc\"", + "type": "string" + }, + "url": { + "$ref": "#/components/schemas/webhook-config-url" + } + }, + "type": "object" + }, + "created_at": { + "example": "2011-09-06T17:26:27Z", + "format": "date-time", + "type": "string" + }, + "events": { + "description": "Determines what events the hook is triggered for. Default: ['push'].", + "example": ["push", "pull_request"], + "items": { + "type": "string" + }, + "type": "array" + }, + "id": { + "description": "Unique identifier of the webhook.", + "example": 42, + "type": "integer" + }, + "last_response": { + "$ref": "#/components/schemas/hook-response" + }, + "name": { + "description": "The name of a valid service, use 'web' for a webhook.", + "example": "web", + "type": "string" + }, + "ping_url": { + "example": "https://api.github.com/repos/octocat/Hello-World/hooks/1/pings", + "format": "uri", + "type": "string" + }, + "test_url": { + "example": "https://api.github.com/repos/octocat/Hello-World/hooks/1/test", + "format": "uri", + "type": "string" + }, + "type": { + "type": "string" + }, + "updated_at": { + "example": "2011-09-06T20:39:23Z", + "format": "date-time", + "type": "string" + }, + "url": { + "example": "https://api.github.com/repos/octocat/Hello-World/hooks/1", + "format": "uri", + "type": "string" + } + }, + "required": [ + "id", + "url", + "type", + "name", + "active", + "events", + "config", + "ping_url", + "created_at", + "updated_at", + "last_response", + "test_url" + ], + "title": "Webhook", + "type": "object" + } + } + } + }, + "insertionIndex": 661 + }, + { + "id": "1a40ee10-c0dc-4d5e-97fb-dd1e3490b9f5", + "name": "List repository webhooks", + "request": { + "urlPath": "/repos/vgu4w14z08exiqs0075lomz6i8c7zvon5mapzg2bkxeyokwomr5n2d47ergcdfpy0ixaxlsqujmce0xbrd8ochy13hug0p378nzjo887ih/w1wznoh1dh5ms74i1iuiq70z10bkhspdb8utkt8f2nrzkrkr809xg473xhc6ls09k2rutmr7u8lrm0ncnj5oi6ko70791inf2v29k7k6i55imw70n3gk6axmx5fm57lbbkjm3vqo47q8jmx86oko5vp9xc/hooks", + "method": "GET" + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/321985\",\n \"message\" : \"Rem explicabo dolor repudiandae est. Cupiditate voluptates sit non ratione alias et. Maiores aut iure consequatur labore dolores nobis eligendi. Sed sed nihil voluptatum molestiae ut similique.\",\n \"url\" : \"https://web.example.mocklab.io/844532\",\n \"status\" : \"auzeu56iyzttioafd7kr2y49xijypz5emwup79rvmxhdp6pahgzarr5qv189o4a4t8fayu5eb2o9afw399u632qgwtyjodgy531yt06a1n9p9e2zmy17ys7080kir3mwlltlp8so93d0irehapndw6wsk7an6w23t9im95hze7s882ax\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "1a40ee10-c0dc-4d5e-97fb-dd1e3490b9f5", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.024196Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/list-webhooks", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 662 + }, + { + "id": "30c42f5c-1e2d-4d8c-92fb-b8b3b10b3eac", + "name": "List repository webhooks - default", + "request": { + "urlPath": "/repos/gubihw3g5aze9tg2xxzjoc4vb6j391s22oqulnxybjata009nswi12gd3sm65z9pepm6eqh0buepy63p2f8jke2t9f57lj87sovdkfpfz9o8n0zhd366ulhjozv6xs2419s03yk9bw8hbvz307g/68k/hooks", + "method": "GET" + }, + "response": { + "status": 200, + "body": "[ {\n \"active\" : true,\n \"config\" : {\n \"content_type\" : \"json\",\n \"insecure_ssl\" : \"0\",\n \"url\" : \"https://example.com/webhook\"\n },\n \"created_at\" : \"2019-06-03T00:57:16Z\",\n \"events\" : [ \"push\", \"pull_request\" ],\n \"id\" : 12345678,\n \"last_response\" : {\n \"status\" : \"unused\"\n },\n \"name\" : \"web\",\n \"ping_url\" : \"https://api.github.com/repos/octocat/Hello-World/hooks/12345678/pings\",\n \"test_url\" : \"https://api.github.com/repos/octocat/Hello-World/hooks/12345678/test\",\n \"type\" : \"Repository\",\n \"updated_at\" : \"2019-06-03T00:57:16Z\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/hooks/12345678\"\n} ]", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "30c42f5c-1e2d-4d8c-92fb-b8b3b10b3eac", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.023959Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/list-webhooks", + "schema": { + "items": { + "$ref": "#/components/schemas/hook" + }, + "type": "array" + } + } + } + }, + "insertionIndex": 663 + }, + { + "id": "18d6ef3f-41fe-4be0-8c31-84eaf29c64ff", + "name": "Get a tree", + "request": { + "urlPath": "/repos/o13kh416tym5daj2phz3bw39rkjehyekb6uolxruaasijad0omnl1ath7h3erwaf3l4mhgqspl8dnhf5awb7g4thub8m93c6363dcic/ef4epohz44wnrf4fzb0olagsle9zs/git/trees/w9a7xcj0h8d87xg1d11cphg3dvbh7", + "method": "GET" + }, + "response": { + "status": 422, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/867038\",\n \"message\" : \"Consectetur eos qui blanditiis ab molestiae cum enim. Qui ut sed. Voluptate repellendus sit in sint vel ullam veniam. Saepe unde voluptas nemo qui soluta.\",\n \"errors\" : [ {\n \"code\" : \"98y\",\n \"field\" : \"4fp6fixtip8ua27buok02au7uvwvbjee947dv7mnlhf9fhrlwwdm2s3poj1m6w090c4wc6sx56bed8hlcdfvbv4x91phkurnzvsnfltwsyoskjifvz6uib1n\",\n \"resource\" : \"vuq1xa58f8n25506n3qshygx5kxsqegdfqrhw81xd9o8yjncfoplmlxpmkfgqh7jgegsni3ll4vejtveurjfcifaaes9h3tb1t7y2k9s3f84gxv1vw7yf264aa21a11xj0v6j1nfm2j29hswfef58r\",\n \"index\" : 2103672728560892304,\n \"message\" : \"Consequatur harum minima qui deleniti et tempore dolores. Odit ut culpa eius sed necessitatibus labore. Voluptatibus architecto voluptatem modi id. Eveniet similique consequuntur et illo.\",\n \"value\" : { }\n }, {\n \"code\" : \"eg6dkga8ivhn51afr41xfrm37hrhdhpuf9e5hsfrcc7segsz93qe7wmj2r6ps03ve25w7efzmb9p8cmmoh05gaos4c0crqjpap76l1ap50va48t3ci2o3du0lqbkkidv4pzo3i00w35c01sv2p2ogqac8f4n10ihb9mo1r2h44a16\",\n \"field\" : \"0h3b6gcudclkx2zrpvnezuil080f2uyofmtlrnpe3p7ys6i2owhg3n6e\",\n \"resource\" : \"w45tuydw3v5jljitlv5n585hvki1228wuwrctuzvh2dna6l2cqggyrpnyl77dmicjg7xsp7vytxz3tv9bnaewn6xex5auoabqv996zijz6768n1q4u947v7lc78aonaqwalur\",\n \"index\" : 577743597207309185,\n \"message\" : \"Ea est ullam omnis molestiae et et. Natus quisquam sit beatae voluptatem eum cupiditate voluptate. Soluta eos officiis perspiciatis facilis itaque eos. Repudiandae sint vel.\",\n \"value\" : { }\n }, {\n \"code\" : \"h8qg4kkca4ocsb27mtt7rq5zfwlsuch46uh0v4ekjindhbsqj3b0bgz964iccfsotxa31flp0prutxxwkcsib59ja07nw0nxa68xyaz9c4r793saxxgm90jtj5l15koocg8fxliz3o0qgufu71k4qtxg9z\",\n \"field\" : \"7l5k5hgc2rhqltd2eyr8o4\",\n \"resource\" : \"1amc4tj7qxznkpzgg1drvr0v6iszmd677m3rohxuxbyh9cev8hb090wam53cp5wm9u4riz72aw60ip0n1zswcwdnw4u3dd0hngabnyfafi81buv1p5rlg3yjqvw632ac2ukrvrrnyerf4gpdv5xdla8ea6p0vseuwemgpl1\",\n \"index\" : 1195219774579595866,\n \"message\" : \"Ex tempora sunt odio ut provident. Quasi ut earum maxime molestiae. Quas et et magni sunt. Nobis adipisci tenetur ut veniam saepe provident. Voluptas quo voluptatem ut.\",\n \"value\" : { }\n }, {\n \"code\" : \"g2xmj33ged7zgsvfuobf5smdhbxy1k2bd318ppk3h16qfk7f39msqzwrpvcti6dfvz4evzfatawy25akbdbc9s5w2paeln82ux70vgsqvu62mjzqazo6laijfsezre8s2rpm44aqnpxs\",\n \"field\" : \"e2qpbah13qz7z6kfh4ve38doe3eevnzzl0h0hq9f02xhzzo1dm\",\n \"resource\" : \"uvtlbvn0lkg49h8in\",\n \"index\" : 2669893524913564375,\n \"message\" : \"Harum quia aspernatur rerum vel est vero dolorum. Ut necessitatibus nam non voluptas esse eum cumque. Sunt natus placeat. Qui optio modi. Quo optio quo nulla aut aliquam ipsam dolores.\",\n \"value\" : { }\n }, {\n \"code\" : \"sm450qzbk5iyev8ivmm7xjtd0pp2okwr07av5r75a93hczv7rw9lcd67f73vcf5mxyamjvy42b0nsfiqi8zy2hj6d2zmdunlvixrmn3u03f3uh9lkgmrjeh0rk7d57z2u7pd7zv0vxmxvazh9r1fsx4whvtozao\",\n \"field\" : \"t85ihf3qgys3lkc0n79aj16fc4ckiilh3pjvxs9ld054m7eu2zma1n1zvrhr4dpuwpwoy563y2ma2scwec41ottor0r5t5yakvfhxk2hrvemsvi2vx5nh113mqmjc4dgnk0kdr05gvm81jwxp2bnwg3ef5jd1f74\",\n \"resource\" : \"awftm593dvh0hdxoptqxcvoyjlx4hbebtodossx6ia09x21rccnoyrpcmf28qjk313y8yrchtdkeww78fnpm9xt1109g64ne312gshoct0w9xu3uoc8t9vmwc2ne8wa01tp\",\n \"index\" : 2019625119580696778,\n \"message\" : \"In ullam nam quo doloremque. Consectetur laboriosam minus quis omnis repudiandae deserunt. Cumque aut itaque corporis aut sint quasi nostrum. Delectus voluptas omnis.\",\n \"value\" : { }\n } ]\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "18d6ef3f-41fe-4be0-8c31-84eaf29c64ff", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.023893Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "git/get-tree", + "schema": { + "description": "Validation Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "errors": { + "items": { + "properties": { + "code": { + "type": "string" + }, + "field": { + "type": "string" + }, + "index": { + "type": "integer" + }, + "message": { + "type": "string" + }, + "resource": { + "type": "string" + }, + "value": { + "oneOf": [ + { + "nullable": true, + "type": "string" + }, + { + "nullable": true, + "type": "integer" + }, + { + "items": { + "type": "string" + }, + "nullable": true, + "type": "array" + } + ] + } + }, + "required": ["code"], + "type": "object" + }, + "type": "array" + }, + "message": { + "type": "string" + } + }, + "required": ["message", "documentation_url"], + "title": "Validation Error", + "type": "object" + } + } + } + }, + "insertionIndex": 664 + }, + { + "id": "98493918-cc96-4e32-8e26-872f26878c83", + "name": "Get a tree", + "request": { + "urlPath": "/repos/5v12ye4i0r2l09qdk5z0m9a6r0jbo4amoiholyaomfdvo3s58elorci1zsh8nuqkzp1uacco7gmqrwcvtox5q2d30i61daqck3d3784i9985kjd9vf2rlk6aynawcmd00lh7rdfqmyfsod3diveav/elh39zdy8sl0wmdd5iqsa4rt1163gggx2x2glcdo91hg0pi0gjgtl654d0951w6u3turxafxtvxks6bc34jjbrcghnb/git/trees/ubjnkomj9clopq2ajfwff078v9y6ysfcy6ii6hsgc37s03q5wy99wh7ov26hp5ekxqblzwvr2wmq04o8ijavj7", + "method": "GET" + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/406300\",\n \"message\" : \"Amet hic doloribus repellendus quidem sit voluptates. Iusto ut et dolor inventore consequatur. Quia a facilis qui. Ex harum quo explicabo.\",\n \"url\" : \"https://web.example.mocklab.io/632375\",\n \"status\" : \"r6yzvl3nj2ivrxqweo09ts4hq388q1fu3l2tz0z97iaqgut885r8hnpjbch0re57sktdtw1wyfxjd9i81oa6npllzqgomfyay8qijxrip98orihy016ndej7jmgt7xgx3w2l7r3tqt3ikoaka13cs959minzd1m2ek8xi5k6th9z55\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "98493918-cc96-4e32-8e26-872f26878c83", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.02324Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "git/get-tree", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 665 + }, + { + "id": "66fe7e73-ef38-4483-8866-3ceedd14c307", + "name": "Get a tree - response-recursively-retrieving-a-tree", + "request": { + "urlPath": "/repos/9u60iaubphavtybmnqhuyyf3/pde67a0p30woni8sggfo65rxbaqdvebygav96kbk8tu2la3vupv9x9x1e2nyaxrnt13wfzad7un737vobb5e4vpfj4rsvpc4oan4lfsqx2lvgefjl8bvw8ad3ygca0k9519s37h9m0b7h/git/trees/01pf3tiwen1um4dlansu8r8inm30tv3umbhsgzzvnxhuwmd0qbqlhxbeq4agw2zhx283eg2qyg1la8as9elpdrz45eyectxidiw8mhg82azm1jeku1cfc8cswc0fse0n1wmqy6wq82tl7v9uu6btnyse3a69991", + "method": "GET" + }, + "response": { + "status": 200, + "body": "{\n \"sha\" : \"fc6274d15fa3ae2ab983129fb037999f264ba9a7\",\n \"tree\" : [ {\n \"mode\" : \"100644\",\n \"path\" : \"subdir/file.txt\",\n \"sha\" : \"7c258a9869f33c1e1e1f74fbb32f07c86cb5a75b\",\n \"size\" : 132,\n \"type\" : \"blob\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/git/7c258a9869f33c1e1e1f74fbb32f07c86cb5a75b\"\n } ],\n \"truncated\" : false,\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/trees/fc6274d15fa3ae2ab983129fb037999f264ba9a7\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "66fe7e73-ef38-4483-8866-3ceedd14c307", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.022981Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "git/get-tree", + "schema": { + "description": "The hierarchy between files in a Git repository.", + "properties": { + "sha": { + "type": "string" + }, + "tree": { + "description": "Objects specifying a tree structure", + "example": [ + { + "mode": "100644", + "path": "file.rb", + "properties": { + "mode": { + "type": "string" + }, + "path": { + "type": "string" + }, + "sha": { + "type": "string" + }, + "size": { + "type": "integer" + }, + "type": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "required": ["path", "mode", "type", "sha", "url", "size"], + "sha": "44b4fc6d56897b048c772eb4087f854f46256132", + "size": 30, + "type": "blob", + "url": "https://api.github.com/repos/octocat/Hello-World/git/blobs/44b4fc6d56897b048c772eb4087f854f46256132" + } + ], + "items": { + "properties": { + "mode": { + "example": "040000", + "type": "string" + }, + "path": { + "example": "test/file.rb", + "type": "string" + }, + "sha": { + "example": "23f6827669e43831def8a7ad935069c8bd418261", + "type": "string" + }, + "size": { + "example": 12, + "type": "integer" + }, + "type": { + "example": "tree", + "type": "string" + }, + "url": { + "example": "https://api.github.com/repos/owner-482f3203ecf01f67e9deb18e/BBB_Private_Repo/git/blobs/23f6827669e43831def8a7ad935069c8bd418261", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "truncated": { + "type": "boolean" + }, + "url": { + "format": "uri", + "type": "string" + } + }, + "required": ["sha", "url", "tree", "truncated"], + "title": "Git Tree", + "type": "object" + } + } + } + }, + "insertionIndex": 666 + }, + { + "id": "dcf80fda-0e1a-4b97-8fab-8f4622f7c43d", + "name": "Get a tree - default-response", + "request": { + "urlPath": "/repos/5kv4s4p3i3xr46d8i71hsddh6dmmy9xx5b04w2ykfgpc9vmnd92q87txoid4yiwsdllsu151ref1w5fzu9php7g8ofmxbfbhswmymktiwlka71ensr09duz8u6lg4b7a2i69sjgzx9u78alh7jpy/z05qbarkdk57sknl/git/trees/gpsw7ko7lwahwe2np1b02w8fbmhme3toxged5kw8gyeomigol36ckbiw0b9czjeu1q054bfnfj76375sn5", + "method": "GET" + }, + "response": { + "status": 200, + "body": "{\n \"sha\" : \"9fb037999f264ba9a7fc6274d15fa3ae2ab98312\",\n \"tree\" : [ {\n \"mode\" : \"100644\",\n \"path\" : \"file.rb\",\n \"sha\" : \"44b4fc6d56897b048c772eb4087f854f46256132\",\n \"size\" : 30,\n \"type\" : \"blob\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/git/blobs/44b4fc6d56897b048c772eb4087f854f46256132\"\n }, {\n \"mode\" : \"040000\",\n \"path\" : \"subdir\",\n \"sha\" : \"f484d249c660418515fb01c2b9662073663c242e\",\n \"type\" : \"tree\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/git/blobs/f484d249c660418515fb01c2b9662073663c242e\"\n }, {\n \"mode\" : \"100755\",\n \"path\" : \"exec_file\",\n \"sha\" : \"45b983be36b73c0788dc9cbcb76cbb80fc7bb057\",\n \"size\" : 75,\n \"type\" : \"blob\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/git/blobs/45b983be36b73c0788dc9cbcb76cbb80fc7bb057\"\n } ],\n \"truncated\" : false,\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/trees/9fb037999f264ba9a7fc6274d15fa3ae2ab98312\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "dcf80fda-0e1a-4b97-8fab-8f4622f7c43d", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.022851Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "git/get-tree", + "schema": { + "description": "The hierarchy between files in a Git repository.", + "properties": { + "sha": { + "type": "string" + }, + "tree": { + "description": "Objects specifying a tree structure", + "example": [ + { + "mode": "100644", + "path": "file.rb", + "properties": { + "mode": { + "type": "string" + }, + "path": { + "type": "string" + }, + "sha": { + "type": "string" + }, + "size": { + "type": "integer" + }, + "type": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "required": ["path", "mode", "type", "sha", "url", "size"], + "sha": "44b4fc6d56897b048c772eb4087f854f46256132", + "size": 30, + "type": "blob", + "url": "https://api.github.com/repos/octocat/Hello-World/git/blobs/44b4fc6d56897b048c772eb4087f854f46256132" + } + ], + "items": { + "properties": { + "mode": { + "example": "040000", + "type": "string" + }, + "path": { + "example": "test/file.rb", + "type": "string" + }, + "sha": { + "example": "23f6827669e43831def8a7ad935069c8bd418261", + "type": "string" + }, + "size": { + "example": 12, + "type": "integer" + }, + "type": { + "example": "tree", + "type": "string" + }, + "url": { + "example": "https://api.github.com/repos/owner-482f3203ecf01f67e9deb18e/BBB_Private_Repo/git/blobs/23f6827669e43831def8a7ad935069c8bd418261", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "truncated": { + "type": "boolean" + }, + "url": { + "format": "uri", + "type": "string" + } + }, + "required": ["sha", "url", "tree", "truncated"], + "title": "Git Tree", + "type": "object" + } + } + } + }, + "insertionIndex": 667 + }, + { + "id": "b04960a8-034d-4a29-b7a3-047d9b4aed7b", + "name": "Create a tree", + "request": { + "urlPath": "/repos/wjbh55uu6m07xbkog1ifwbymtfd/kxoxd7ml9oizkx/git/trees", + "method": "POST" + }, + "response": { + "status": 422, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/779799\",\n \"message\" : \"Quis voluptas non. Dolores quo officiis sit pariatur perferendis id animi. Aperiam quasi optio. In magni eum voluptates qui. Similique quo id.\",\n \"errors\" : [ {\n \"code\" : \"lvv9njqq9b5c0c3xjjo2zclk0weuie27vppm8a2qbos5vz45w04j77mce7c9t7ki0k2jhapvyvzrwis4z5ihqc47rno6segx5\",\n \"field\" : \"0n47d7dsma91c48pgv55kxr4xpdfe3d2zibdp7hq2wwoxdxeof9e2fm7kt8i7xlsa0m3iw6oqfklgi97y9v\",\n \"resource\" : \"lv7lf3ih88lddg8vt2uiv\",\n \"index\" : 8740484855561690759,\n \"message\" : \"Ut voluptas laborum eum eum enim quae. Quia non perferendis assumenda incidunt possimus quia. Dolores soluta laboriosam similique quaerat sunt modi libero. Aut molestiae occaecati numquam dolor alias.\",\n \"value\" : { }\n }, {\n \"code\" : \"hu89jm9on4sexqyxcvuqfspxvseyoxb8234rpjquz11unmv6g5zb71iwowdoovko0voxwscibpfnjvxyp3zbqj9vt1bhsl9a3wcv8d9dlsllte02p11w0dinlzfxxm89qzg99fvzdah0laphkvsgpsuwlyeolejuhlk3veuz2qxsjcr510dqxe0\",\n \"field\" : \"wf3x739kusqo6uco6nf70imzbv5zprt6sv2m705l6ul4qxwibi8ghvlb63jqhp0u0j24g6bq31uyb470u4p7b8rsnn53thjrbjgx9cidpa6h6y9uzowxca1yula9s6vvi\",\n \"resource\" : \"e79t7fsnjwo811smgrueebbmfuf9p8fjkh54h4zucet2c5l95iwkc24m9yoyied8seb9dxfz9n1kpbk01evu62kexzol7raaibo91donxtklg8yyas7wu3mfiakgw34hbe3n65eqkf7h0r5k32260mkhgbimphevpswnr08g6opch96yg1fxanpj\",\n \"index\" : 804168505653401522,\n \"message\" : \"Quas voluptas neque molestiae necessitatibus sed et neque. Qui molestiae qui labore quia consequatur ut. Quia corporis omnis. Enim aut suscipit commodi.\",\n \"value\" : { }\n }, {\n \"code\" : \"kr2tgvwj5webtp7zi5gt9m5g564bmub40uhry939r7swfof4wra5mp0wmh4syi8jho6ixfqtn9crsqeyuvy4isurjz12k79lspvx3rj2yvy80rn5o39puu769ils7435ddpm3gxi0dq731q4s47m64\",\n \"field\" : \"rxsez5y2mvkrm8hns8sm8i5b4eoe2v64rqwjr6gtvwn49f9kuuqoov2v70xzigtpvz79r7kn94gvrv4pacxqjtq8h7k97fqco2n0hje5xq99v7rkdgo8toswo97or58uy1191v8gbigplklnfsvt6a622osisek\",\n \"resource\" : \"zt3jppwztijlfb70vx7yl9o92fq09a0bd22va98iejqhotbld03dn4t0db1zx1f9m54y69bz9f1kz8yu3kx8xkq441eu9prgjmb6srwfofu1t\",\n \"index\" : 2457027536585920612,\n \"message\" : \"Id libero rerum cupiditate doloribus quia. Occaecati non deleniti hic non explicabo dolores. Qui ipsa aperiam unde aperiam quibusdam.\",\n \"value\" : { }\n } ]\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "b04960a8-034d-4a29-b7a3-047d9b4aed7b", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.022699Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "git/create-tree", + "schema": { + "description": "Validation Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "errors": { + "items": { + "properties": { + "code": { + "type": "string" + }, + "field": { + "type": "string" + }, + "index": { + "type": "integer" + }, + "message": { + "type": "string" + }, + "resource": { + "type": "string" + }, + "value": { + "oneOf": [ + { + "nullable": true, + "type": "string" + }, + { + "nullable": true, + "type": "integer" + }, + { + "items": { + "type": "string" + }, + "nullable": true, + "type": "array" + } + ] + } + }, + "required": ["code"], + "type": "object" + }, + "type": "array" + }, + "message": { + "type": "string" + } + }, + "required": ["message", "documentation_url"], + "title": "Validation Error", + "type": "object" + } + } + } + }, + "insertionIndex": 668 + }, + { + "id": "9669d603-fe24-471c-a8cb-22e456f1fcd1", + "name": "Create a tree", + "request": { + "urlPath": "/repos/tjh40cozq652c0pdwjb64p3dlfeb0ywwftp22to4cfuxficu0ad681yf8xbvunn7ia1lh5f91jbkyl5sz1rc621cfo23rj7lm5z424zb3ydc5b4nd6jg9ggklqjd6tzj7nhyr65d82vm9erge78e53/8y0beixz42xrk973wx5ndlj9pplzcmltchbd2nrnhbpdukuke7m94p22n9y60kds0yspaescwzfmxubba0rr20vccnvxvfvciye6905v9vcd8k8lieg0o1etu1ghkdcdhvm89cu8w53ecqru1k891ueif1axcz9vke30njbimzc5d6qlnuz1v3x7xlst3w41x/git/trees", + "method": "POST" + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/844899\",\n \"message\" : \"Voluptatem voluptas dolorem modi aut. Earum est veritatis magnam. Odit sed rem voluptates aliquid sed voluptas. Est earum dolorum.\",\n \"url\" : \"https://web.example.mocklab.io/843637\",\n \"status\" : \"halp1q1wh9vxwy1fylg5vrpl716vm76ljs\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "9669d603-fe24-471c-a8cb-22e456f1fcd1", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.022227Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "git/create-tree", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 669 + }, + { + "id": "e8dde8b6-d965-4f71-97ad-ec9f2b92fcae", + "name": "Create a tree", + "request": { + "urlPath": "/repos/dj8b86wu94yp8plada1m17r6xdz9isbgtad9bugcexs5g7sydgac55edjp39pkbzpbywxffuv5n6b7n4n4kcqy2rc5q9axmhhlrbqyh02ys1beufb4arnz7n1txj5jyji3tulb6ohm69u80ldjl45kxfl182l1odn7rebpq4esxu43r/l00kda5m1f3af7jbppydzrf8390jmce05u01vxvtab8qejvnxp9fd52596s1upw87xy4s1ksrrscd538bdbbihqihp9jypny5nazgbs2oqo3t0chh6qu7gj9k9kxjd5ah0x785bfh4mslustpfp8yzctw2gis14plnljbs8fi603ytjrttxs30f3np5zmh55f/git/trees", + "method": "POST" + }, + "response": { + "status": 403, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/693261\",\n \"message\" : \"Nobis sed ut quis. Rerum necessitatibus velit et beatae velit officia. Voluptatem ut ipsam. Quaerat assumenda vel sint ea. Qui repellendus inventore quia pariatur nihil error.\",\n \"url\" : \"https://web.example.mocklab.io/769092\",\n \"status\" : \"a5y0jbv53bv3kp7sqbezys7ic1glsybman23pl2dydop0sre25rmt3by9639jlwtry8fjfkd4yxlvwb0xi0ww80k47bj2j40cq5030wpb8444sbbmmliyz5f88b0dzol7nbfcerh0xjxjhibe1azn3mog1l29mztya4zrugxbs1\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "e8dde8b6-d965-4f71-97ad-ec9f2b92fcae", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.022003Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "git/create-tree", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 670 + }, + { + "id": "c1029f6b-673f-4eea-89ed-7f5e3b472980", + "name": "Create a tree - default", + "request": { + "urlPath": "/repos/15e5b0f7n4kx22ee8mt190qcy6r1h0r4ofhiq20nv3mshvd0tmvxoiuu1esokm1e3mraadkf8pnk284zgpywn1u1zu6nkzlzgurfnjyzcwj06q2zfv8jgzvugex78fn3xv5d6ozixq21rp0g8p3tdm91mehkkeq68yh4idee8a8tfkmakhlnemj6bfmk9j/qcnaqtdpveva60c5f7hehvm8i3syxz5o51/git/trees", + "method": "POST" + }, + "response": { + "status": 201, + "body": "{\n \"sha\" : \"cd8274d15fa3ae2ab983129fb037999f264ba9a7\",\n \"tree\" : [ {\n \"mode\" : \"100644\",\n \"path\" : \"file.rb\",\n \"sha\" : \"7c258a9869f33c1e1e1f74fbb32f07c86cb5a75b\",\n \"size\" : 132,\n \"type\" : \"blob\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/git/blobs/7c258a9869f33c1e1e1f74fbb32f07c86cb5a75b\"\n } ],\n \"truncated\" : true,\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/trees/cd8274d15fa3ae2ab983129fb037999f264ba9a7\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "c1029f6b-673f-4eea-89ed-7f5e3b472980", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.021767Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "git/create-tree", + "schema": { + "description": "The hierarchy between files in a Git repository.", + "properties": { + "sha": { + "type": "string" + }, + "tree": { + "description": "Objects specifying a tree structure", + "example": [ + { + "mode": "100644", + "path": "file.rb", + "properties": { + "mode": { + "type": "string" + }, + "path": { + "type": "string" + }, + "sha": { + "type": "string" + }, + "size": { + "type": "integer" + }, + "type": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "required": ["path", "mode", "type", "sha", "url", "size"], + "sha": "44b4fc6d56897b048c772eb4087f854f46256132", + "size": 30, + "type": "blob", + "url": "https://api.github.com/repos/octocat/Hello-World/git/blobs/44b4fc6d56897b048c772eb4087f854f46256132" + } + ], + "items": { + "properties": { + "mode": { + "example": "040000", + "type": "string" + }, + "path": { + "example": "test/file.rb", + "type": "string" + }, + "sha": { + "example": "23f6827669e43831def8a7ad935069c8bd418261", + "type": "string" + }, + "size": { + "example": 12, + "type": "integer" + }, + "type": { + "example": "tree", + "type": "string" + }, + "url": { + "example": "https://api.github.com/repos/owner-482f3203ecf01f67e9deb18e/BBB_Private_Repo/git/blobs/23f6827669e43831def8a7ad935069c8bd418261", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "truncated": { + "type": "boolean" + }, + "url": { + "format": "uri", + "type": "string" + } + }, + "required": ["sha", "url", "tree", "truncated"], + "title": "Git Tree", + "type": "object" + } + } + } + }, + "insertionIndex": 671 + }, + { + "id": "dfc7f7f8-2cd0-40ef-9660-d1f204846fa6", + "name": "Get a tag", + "request": { + "urlPath": "/repos/qev1js7g91s9dwhjebfjoxvegxhxychcvsetxokke8r4ybjxeoqeihdna78jlq1n3icux4syvu2meqvm3moothw83rl5y23k29uuga7vxo225l4vuk0qsrntqgxp81ruy4wjosoifujy307b3v1nviv61nsxg/bc9k4eo941kuoau5elgbcgrxug77hwf6cjcyh517hhrlslbktb9auw238luj/git/tags/duyvcpnna4q77mdtq3qliyww9km0odkcv5i5s51x87lvj", + "method": "GET" + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/885204\",\n \"message\" : \"Rerum sint sunt non. Laboriosam aperiam assumenda aliquid voluptatum ex. Est labore nam asperiores perferendis qui provident.\",\n \"url\" : \"https://web.example.mocklab.io/657863\",\n \"status\" : \"q50bdq7f2hzh36tiqs5h1up\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "dfc7f7f8-2cd0-40ef-9660-d1f204846fa6", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.021624Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "git/get-tag", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 672 + }, + { + "id": "427bd552-05d2-49a5-90e4-eea773545b22", + "name": "Get a tag - default", + "request": { + "urlPath": "/repos/imtnmhp15wpecyzn0hguaztiglyqs5b7gvpnb0oc2u463ocwymnldbmagfjyzr5rsosbos82uliu2kvrlu2y6h5wp98006ml2bonu1ctc27wjmj67st5ua2dia9h19avq962g448hpeypnl758zezfecwjg9d0u0nxmeuz1c5thcktwxiruhre5/d7cud3s2r9zl9ehnc8qxeor27pdzgvxbq7h4es403ffsksvrlcroknyx2fukc5aor4plwnoldvtfqtbybob8sb0277r7972r8jzlhxlabmnzsu47wn4xb/git/tags/38b46rd1ohk0cz5kss355qsk0m2ensl0trav9nb9uko6swemauijminv9pdt0hi1gqnz1vao34kryuancqqixf0fj6iqok6gy3", + "method": "GET" + }, + "response": { + "status": 200, + "body": "{\n \"message\" : \"initial version\",\n \"node_id\" : \"MDM6VGFnOTQwYmQzMzYyNDhlZmFlMGY5ZWU1YmM3YjJkNWM5ODU4ODdiMTZhYw==\",\n \"object\" : {\n \"sha\" : \"c3d0be41ecbe669545ee3e94d31ed9a4bc91ee3c\",\n \"type\" : \"commit\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/git/commits/c3d0be41ecbe669545ee3e94d31ed9a4bc91ee3c\"\n },\n \"sha\" : \"940bd336248efae0f9ee5bc7b2d5c985887b16ac\",\n \"tag\" : \"v0.0.1\",\n \"tagger\" : {\n \"date\" : \"2014-11-07T22:01:45Z\",\n \"email\" : \"octocat@github.com\",\n \"name\" : \"Monalisa Octocat\"\n },\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/git/tags/940bd336248efae0f9ee5bc7b2d5c985887b16ac\",\n \"verification\" : {\n \"reason\" : \"unsigned\",\n \"verified\" : false\n }\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "427bd552-05d2-49a5-90e4-eea773545b22", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.021368Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "git/get-tag", + "schema": { + "description": "Metadata for a Git tag", + "properties": { + "message": { + "description": "Message describing the purpose of the tag", + "example": "Initial public release", + "type": "string" + }, + "node_id": { + "example": "MDM6VGFnOTQwYmQzMzYyNDhlZmFlMGY5ZWU1YmM3YjJkNWM5ODU4ODdiMTZhYw==", + "type": "string" + }, + "object": { + "properties": { + "sha": { + "type": "string" + }, + "type": { + "type": "string" + }, + "url": { + "format": "uri", + "type": "string" + } + }, + "required": ["sha", "type", "url"], + "type": "object" + }, + "sha": { + "example": "940bd336248efae0f9ee5bc7b2d5c985887b16ac", + "type": "string" + }, + "tag": { + "description": "Name of the tag", + "example": "v0.0.1", + "type": "string" + }, + "tagger": { + "properties": { + "date": { + "type": "string" + }, + "email": { + "type": "string" + }, + "name": { + "type": "string" + } + }, + "required": ["date", "email", "name"], + "type": "object" + }, + "url": { + "description": "URL for the tag", + "example": "https://api.github.com/repositories/42/git/tags/940bd336248efae0f9ee5bc7b2d5c985887b16ac", + "format": "uri", + "type": "string" + }, + "verification": { + "$ref": "#/components/schemas/verification" + } + }, + "required": ["sha", "url", "node_id", "tagger", "object", "tag", "message"], + "title": "Git Tag", + "type": "object" + } + } + } + }, + "insertionIndex": 673 + }, + { + "id": "30af08fe-756d-4424-b0d0-c84db4097a4d", + "name": "Create a tag object", + "request": { + "urlPath": "/repos/h7huoc4xxzxxmtix3es8iitlb4wuxw114y2rhvmh7glmss1zdv0abda8j9edpqgyu0m7zriteepwkgid8rpx8byhust3us9zfquznkkhd5u2ah3cktw1k7j8ufgebure7ktlt/2fwejbjn1v7lu1has57lsloyvtcnnleg85spq55j59nprpodi9j449fjp4v5ffmigccpbgay2fyq2cmw9lfaodf9l8w65k07zux90t6o3fx9odln1m3mr3gxbatr5xk9xfxrpqhqz471nb3bfj3p38ud3i4g425eyebo9kzakz07f716dx4zsow39y9t5bl5n3nr/git/tags", + "method": "POST" + }, + "response": { + "status": 422, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/060213\",\n \"message\" : \"Ex maiores dolores nemo culpa quam cupiditate quia. Odio similique iste. Quidem error nobis quia. Numquam quibusdam ipsum officia aut dolore voluptatem.\",\n \"errors\" : [ {\n \"code\" : \"bot321khe8wu5602ubf42p6e1gnvn419y62os40gbp3n19izrbe36pw0kcqwtusw2cpr35tz\",\n \"field\" : \"st71u53j1qxc8jrdsos96s4f39l4em66vt5ocn4vgdpl64ukf6vagkrw7kflok7910vf2qmhkctyo0urgcpnnvkge50gsnkkyj5tvjsk7sns77o86jh6o70w24sx260khocmk93ihnaeico04gbn9er48d7hbqcizh\",\n \"resource\" : \"1ymfdsveopzfbv3azzsrg6ukm9ub9jxo7hcraxv5bge19zyj39bbxg2r4hn4w6tvmj1m7cxxcnp6u9ktegh9p\",\n \"index\" : 8463557086812072135,\n \"message\" : \"Enim est corrupti exercitationem ex sit. Officia consequuntur delectus aspernatur. Suscipit alias voluptates et dolor. Sed ducimus sit delectus quasi. Aspernatur recusandae modi eius.\",\n \"value\" : { }\n }, {\n \"code\" : \"fvq57kg9b4y2a3ep1shlzqgkara88uak7s7q0rtpz3ynu2jlszu0goqoz81cqglo9u9buw0li32qfs6pmsbg8k6lo85qcq8ftwusg2u1bdclaj5gkcku6gs1msfbsw6daik02k9ybs1991brum921n5c9wgvbejud5dg5o5nmp\",\n \"field\" : \"jxif7angxej5y2qbxmct2gra7sa2owxkt1cys7at5rmea39emzfvhfpxf08la1zggw7vaxjfe3g8flj8vhbxv52jrin2oeqs\",\n \"resource\" : \"gi6lkkbewcdwvpfaor754tw5d8ozrxbv94anasg7excppejlm0h1cgnq2jt2tc7798kyxb7e3sasslqyk0d8favet\",\n \"index\" : 8707500666962991391,\n \"message\" : \"Iure ullam ex alias debitis sunt odio excepturi. Voluptatem ab dicta facilis voluptatem magni ut. Iste tempora ut ut nihil. Odit sit qui culpa temporibus illum voluptate dolorem.\",\n \"value\" : { }\n }, {\n \"code\" : \"3p9zqmnl903pl1wpfiwjaycif4bhqn5u44ep8yussd97kjxlq7wdb5o\",\n \"field\" : \"np6eerucp6yd6yjsn0mx1k01840hjcklmtjme941ota4mn0srbghmn\",\n \"resource\" : \"p5irmeq43gzglcnr0x7kxtyfvqll4str630sk9h77sgp8in48nl2rg4qcvok6mmwlhiv887nwiym95v2smsx92e2oix4gwoo36zm9ovyc8sb92pxh7kpbecxmg1771rq1wc0p5w9\",\n \"index\" : 2969178048475545075,\n \"message\" : \"Deserunt et qui debitis. Voluptas ut amet laudantium. Quas eveniet et eaque dolores quidem. Earum consectetur qui in doloremque nisi necessitatibus dolorum.\",\n \"value\" : { }\n } ]\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "30af08fe-756d-4424-b0d0-c84db4097a4d", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.021228Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "git/create-tag", + "schema": { + "description": "Validation Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "errors": { + "items": { + "properties": { + "code": { + "type": "string" + }, + "field": { + "type": "string" + }, + "index": { + "type": "integer" + }, + "message": { + "type": "string" + }, + "resource": { + "type": "string" + }, + "value": { + "oneOf": [ + { + "nullable": true, + "type": "string" + }, + { + "nullable": true, + "type": "integer" + }, + { + "items": { + "type": "string" + }, + "nullable": true, + "type": "array" + } + ] + } + }, + "required": ["code"], + "type": "object" + }, + "type": "array" + }, + "message": { + "type": "string" + } + }, + "required": ["message", "documentation_url"], + "title": "Validation Error", + "type": "object" + } + } + } + }, + "insertionIndex": 674 + }, + { + "id": "3dd87c12-945d-4337-81fe-3e69e5c4dd6c", + "name": "Create a tag object - default", + "request": { + "urlPath": "/repos/wro0t8hga6x4ctzld3dxfex9oi6ya5671vm1zoa28hkxbafi57lexia5khss7e9z8g0nyuwuy1i7jmau12xmyibt194xt513qesur9grzx8s29fgl13s/g5fsj1thyqk5rwpfujltvse2n8f70zlj7wvcouyu94uczzlumoa09t0e28pdorhqe0mbvtnutko6n1qxthrtjq93hd4dh8dbuael1a15z8a17ulxq9469o5eevgrfvdz1mhvxx75hyys6ba68pd0kij22yhrvyc6402f73/git/tags", + "method": "POST" + }, + "response": { + "status": 201, + "body": "{\n \"message\" : \"initial version\",\n \"node_id\" : \"MDM6VGFnOTQwYmQzMzYyNDhlZmFlMGY5ZWU1YmM3YjJkNWM5ODU4ODdiMTZhYw==\",\n \"object\" : {\n \"sha\" : \"c3d0be41ecbe669545ee3e94d31ed9a4bc91ee3c\",\n \"type\" : \"commit\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/git/commits/c3d0be41ecbe669545ee3e94d31ed9a4bc91ee3c\"\n },\n \"sha\" : \"940bd336248efae0f9ee5bc7b2d5c985887b16ac\",\n \"tag\" : \"v0.0.1\",\n \"tagger\" : {\n \"date\" : \"2014-11-07T22:01:45Z\",\n \"email\" : \"octocat@github.com\",\n \"name\" : \"Monalisa Octocat\"\n },\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/git/tags/940bd336248efae0f9ee5bc7b2d5c985887b16ac\",\n \"verification\" : {\n \"reason\" : \"unsigned\",\n \"verified\" : false\n }\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "3dd87c12-945d-4337-81fe-3e69e5c4dd6c", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.020747Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "git/create-tag", + "schema": { + "description": "Metadata for a Git tag", + "properties": { + "message": { + "description": "Message describing the purpose of the tag", + "example": "Initial public release", + "type": "string" + }, + "node_id": { + "example": "MDM6VGFnOTQwYmQzMzYyNDhlZmFlMGY5ZWU1YmM3YjJkNWM5ODU4ODdiMTZhYw==", + "type": "string" + }, + "object": { + "properties": { + "sha": { + "type": "string" + }, + "type": { + "type": "string" + }, + "url": { + "format": "uri", + "type": "string" + } + }, + "required": ["sha", "type", "url"], + "type": "object" + }, + "sha": { + "example": "940bd336248efae0f9ee5bc7b2d5c985887b16ac", + "type": "string" + }, + "tag": { + "description": "Name of the tag", + "example": "v0.0.1", + "type": "string" + }, + "tagger": { + "properties": { + "date": { + "type": "string" + }, + "email": { + "type": "string" + }, + "name": { + "type": "string" + } + }, + "required": ["date", "email", "name"], + "type": "object" + }, + "url": { + "description": "URL for the tag", + "example": "https://api.github.com/repositories/42/git/tags/940bd336248efae0f9ee5bc7b2d5c985887b16ac", + "format": "uri", + "type": "string" + }, + "verification": { + "$ref": "#/components/schemas/verification" + } + }, + "required": ["sha", "url", "node_id", "tagger", "object", "tag", "message"], + "title": "Git Tag", + "type": "object" + } + } + } + }, + "insertionIndex": 675 + }, + { + "id": "b5bd99cc-965e-4b93-a599-069f57b694d4", + "name": "Update a reference", + "request": { + "urlPath": "/repos/ucqvo7wkwx22d6xnaf1nmgl/ckq36yrx4ji2n6f2jnluqgeqotu5pn0q5pnfvvn56s2it4an9wjig0x5xuoqj41edefxsjbrwe0xg6e77tafmaj4ki8w94q0vmiljjck0w2b2g4stc1vyx80vvx3nuvk6kuj5ni0r3sl5rlssjs8k2k18bkg97ox8idoxa/git/refs/m4rwk15p08bnp9j8t10fg4wczwnobqziiqil0i8mb4xaj2z26vtz4gywd1tfwxew8e9d96yvmgxinuwkbig8vhh3l4rhgzygwxgt8l7sd6ebwatggihk5uh370stkm4sr9t93m3dakoc0xidthdk29eaixlgcb9ixt2w7me6re1txt3yj5kziopm2nitrewks", + "method": "PATCH" + }, + "response": { + "status": 422, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/783908\",\n \"message\" : \"Eaque veritatis repellat modi voluptatem est. Odit similique quae ipsam impedit doloremque omnis. Veritatis dolor voluptate eaque. Aut consectetur optio quia et accusantium.\",\n \"errors\" : [ {\n \"code\" : \"yb7f0b9la3oi9smn87nl810exkt4vnx1k1sth3xgkwv413nzl9z554d207\",\n \"field\" : \"vzhzu97ke9bo70aim8am9pukau6txfymgpjqypk9jx0fe9lh5wls3gtlaf36cnsgjg38nmqgs4bqpfzkpj3smg8mzhki8n7rk0wbcj2wb9ci42plsi0ytu2ctaqk6yb4rur0unovdg7n6hkm\",\n \"resource\" : \"00m2lvnr8yqfhnvlkbtl42wf2na9tdtp16dynsfi8qdq2d3ejur75c9jbattbbl6i5cw41lp0yakc84g7scq0x9azatx6kp3mrsk1640ozdwrkscwxcgpcbzdn3r9s9vhe85u4\",\n \"index\" : 3428123316848858158,\n \"message\" : \"Officiis hic eum libero illum reprehenderit provident. Cupiditate non voluptatibus autem ipsam dolorum distinctio quo. Quaerat quis tempore suscipit quod illum ut in. Nihil quo tenetur velit nobis. Ad\",\n \"value\" : { }\n }, {\n \"code\" : \"16dehz7dalis1ifg3va7hgscqs8gw5e85f87sr14vh6delz0fb8z0uubafq9qxxozv6crqs47i\",\n \"field\" : \"7nbbwni54o9hmv6q142591axxj0vuy6cnfra9cfw0vupckk8exg7olzahsw05xrvqq353ulvyfv2gqxuwcnv7m8c8wju14d1cdebnddxzcks8r9xcc00xuo0djwrp3jm69584sj0cq2l2k3l\",\n \"resource\" : \"mqv4vwfnt0sxwcfhkafj9nbf5xeck7rhqvbrvfrf8pbmoulvq3k4loppgw3lthffw4zzlqsfe03dbppmlerf25hsj7nfody4wiebacgirosafr99szj6g4rc8ddkk7krflo5pg1\",\n \"index\" : 345549077481064753,\n \"message\" : \"Aliquam fuga ipsa asperiores ut. Est dignissimos optio molestiae quis facere ut. Debitis quam tempore nostrum omnis. Pariatur dolores in ea aut dolorem.\",\n \"value\" : { }\n }, {\n \"code\" : \"5h88jo7wx9pucqcb2ji8cbgnsfd8sr518zjmqmpko5q8kargktv7nksq1c0s7wkajxprvk8f4n8j3gsenxuc70kqsgda6owd08q8dzyp7iyuk40g0rf5ibkklbtfeg6jdar8\",\n \"field\" : \"wmoejgctkt1h70zjxqeqhjo8o077ix875snd1wns73\",\n \"resource\" : \"j1xqsuhgldl7p0hoztr4q4xqnlvzoedw9p3fem3bjddqlvmwusq2oc71vuc2kj4zr7gzlsbvjsvh2\",\n \"index\" : 5092765444269532233,\n \"message\" : \"Excepturi id laudantium consequatur aliquam vitae ut. Rerum possimus quisquam laboriosam consequatur ea. Ipsam pariatur ut repellat unde.\",\n \"value\" : { }\n }, {\n \"code\" : \"b0sag90\",\n \"field\" : \"aj7ismn782h3jrh7gr3hlogrjejybjdmucy66g4ckpnvvic5tpsws1wp8ovpdcfb6gte4y1wtb2lk7c35b7yet7w5r1\",\n \"resource\" : \"35py9ons12xp2g4x50y83nv2nj2j6mo3wxdl850viw2wson9rlolbok39s2ey0ppg0uxiargxtdoi9lx9h1ofnytfy5zf6tc9zccic8nk4ek4km0\",\n \"index\" : 6188433978020758692,\n \"message\" : \"Consequuntur laboriosam consequatur esse dicta rerum molestiae. Et natus adipisci. Ullam totam voluptatem cupiditate. Eius quis pariatur exercitationem animi omnis. Molestias inventore est dolorum ips\",\n \"value\" : { }\n }, {\n \"code\" : \"rsobob13opgrz22i9fv30f9ow7qeq4jk103egqvbcgqaeu0yi0v929nnnzhglhrsag2si5wxhv91qdqq0gqbke6mnwz8wet4i8jb46ayapzvmhexnitxhjqxpktlsfurtu8tk8z9jws7z8a7mwfnh31ahwcrwx6v\",\n \"field\" : \"r5hexnqfdfau0zol3sr7ia8qbdamdc43ej2lws6vzse9tnmn8y3b203mjx1sjfq3jvef58xk0jdvdk5m1oko5c895ez8yz\",\n \"resource\" : \"3hq0kefq9ir0ety9z2gmt7bbouda8ga6vpsypq1krbjdu00prns7gpjbibclb7wszg8b3apji4a6fsq8h1dh1x0jf1gp0eap4qinlwb06g0veke19gcw615yrx0c6a9f1616w3wmo88rshtt0ro4tw5\",\n \"index\" : 2548194343206511804,\n \"message\" : \"Perspiciatis iure iusto in quis. Velit adipisci rerum fugiat vero. Voluptatem fuga delectus necessitatibus harum aliquid.\",\n \"value\" : { }\n } ]\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "b5bd99cc-965e-4b93-a599-069f57b694d4", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.02059Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "git/update-ref", + "schema": { + "description": "Validation Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "errors": { + "items": { + "properties": { + "code": { + "type": "string" + }, + "field": { + "type": "string" + }, + "index": { + "type": "integer" + }, + "message": { + "type": "string" + }, + "resource": { + "type": "string" + }, + "value": { + "oneOf": [ + { + "nullable": true, + "type": "string" + }, + { + "nullable": true, + "type": "integer" + }, + { + "items": { + "type": "string" + }, + "nullable": true, + "type": "array" + } + ] + } + }, + "required": ["code"], + "type": "object" + }, + "type": "array" + }, + "message": { + "type": "string" + } + }, + "required": ["message", "documentation_url"], + "title": "Validation Error", + "type": "object" + } + } + } + }, + "insertionIndex": 676 + }, + { + "id": "10b52d02-f4a0-46af-992d-5802d6aa3d7f", + "name": "Update a reference - default", + "request": { + "urlPath": "/repos/w2lrt7f4t39zyf6gfy66508mrrt5jad2yl3ge7x967ybuejuy6nd2wzm0gkfut6ueox10nil7zv2szcy0kvmqqrp9gdiksojobwkijld6wmm35w9mgxjflk043mpt/3gj0s89m06tqd3ljflnopmgcoofalhem9nzcv5dxvk9mnwwoz7q2yo6c7qpou09h1lgon5lcwqai25stwdtlujtbsdfhksu6v/git/refs/fcbgdft63", + "method": "PATCH" + }, + "response": { + "status": 200, + "body": "{\n \"node_id\" : \"MDM6UmVmcmVmcy9oZWFkcy9mZWF0dXJlQQ==\",\n \"object\" : {\n \"sha\" : \"aa218f56b14c9653891f9e74264a383fa43fefbd\",\n \"type\" : \"commit\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/git/commits/aa218f56b14c9653891f9e74264a383fa43fefbd\"\n },\n \"ref\" : \"refs/heads/featureA\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/git/refs/heads/featureA\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "10b52d02-f4a0-46af-992d-5802d6aa3d7f", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.019949Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "git/update-ref", + "schema": { + "description": "Git references within a repository", + "properties": { + "node_id": { + "type": "string" + }, + "object": { + "properties": { + "sha": { + "description": "SHA for the reference", + "example": "7638417db6d59f3c431d3e1f261cc637155684cd", + "maxLength": 40, + "minLength": 40, + "type": "string" + }, + "type": { + "type": "string" + }, + "url": { + "format": "uri", + "type": "string" + } + }, + "required": ["type", "sha", "url"], + "type": "object" + }, + "ref": { + "type": "string" + }, + "url": { + "format": "uri", + "type": "string" + } + }, + "required": ["ref", "node_id", "url", "object"], + "title": "Git Reference", + "type": "object" + } + } + } + }, + "insertionIndex": 677 + }, + { + "id": "395b3a2b-3baa-4dfa-90f9-427dc170f2dc", + "name": "Delete a reference (application/json)", + "request": { + "urlPath": "/repos/tqotzr7r8835zx929zmbjnyg06ocqcczagk0lzsfqmdhtsprm9h6ggfo1nj4y8eg7qfoqeegaciagqnu575fy6oux2hn92x89ixvekztwytg7prxn6qy1e175v852rt1xljb/j00iy2kznupd5sgnryp7glhvz5l2ecq2nnzl04ec8lw86bqxaj0mqxm6frqti9au/git/refs/98eiyl7sgrziqrhrt4urr46t8tpe7e", + "method": "DELETE", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 422, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/956515\",\n \"message\" : \"Unde nam aut. Animi provident voluptates aspernatur. A magni aperiam dolorem cum.\",\n \"errors\" : [ {\n \"code\" : \"lzwcyb53l1z4c1t2qynd3cboz\",\n \"field\" : \"cg0cc3tgii5mewd7tqlqz4r55bp3wr12qk4dyo0ysokv3tayyphrij5e2wnr2kqba1ksn3bok13jygpjet6ddatnyyscplux4976hitc2tym1wzmmm088yjy4t7jx6hq3at6ba7gw9h94qbvei7bk2akjyj7qu27wm602as9wnxbp1a\",\n \"resource\" : \"wd6bo0uq06qhlxi33iye333gjyb0b9jt12m0myi3ppmndujqnmdam27r\",\n \"index\" : 2234394535001754941,\n \"message\" : \"Odio ut quia. Nam quam dolorem nemo sed. Id sunt quia ut sit provident. Placeat sed odit. Ut officia veritatis repellat totam voluptate.\",\n \"value\" : { }\n }, {\n \"code\" : \"gja4jyd7ox0xntp5qozrgvc1hkeb66d3l48xchc83cpqb1rhloqbpyywl4o11n\",\n \"field\" : \"tn2h47vtc2xugyqq8q34rvt8z8kqhpmn2xn74zwfabjp53vm0ol7rwzcitx0kb23xs8rlh86oyc9j73t4mpoic0frbrfjam\",\n \"resource\" : \"yq70n76yom9muq1vphpjs6npi14hk2zurioke3ezxmb8pkonoap1hn99h12vhy0lsts29wi3uri4t8wlch3bkzwzyfq294sflwvhlobsprhfaj9g619hqjmcz7x696jwmu2qiqa5d9o9q66w3a\",\n \"index\" : 6193843394181119197,\n \"message\" : \"Natus similique voluptas eos dolorem error. Cumque quod odit sed et repellat. Aut sed voluptas.\",\n \"value\" : { }\n }, {\n \"code\" : \"iqpp14udiwaxkebhlmfbqjv3va3ao7d7q4jr9yvlmeet6pkughs3or4rkxht\",\n \"field\" : \"basxnzr46ukc0s\",\n \"resource\" : \"qn3pbr9gbkkdzdwsjl1c37jy92r68tijcodkz599c9if3okcy4irfqr3i36hphhv3fusrbfi4bxr7ng178pkwvwzy1k21c2a3wbo6sv\",\n \"index\" : 228200536456456833,\n \"message\" : \"Ea numquam quis voluptas ad ullam totam officia. Rerum impedit et non sed nulla. Maxime voluptatibus dolorum voluptatem quisquam. Labore nihil rem in adipisci quidem qui.\",\n \"value\" : { }\n }, {\n \"code\" : \"29f3an4vas899wmufq514fey0clmxvnmjn5nj8y3i1cpu8lf040d5uhebmf7re5sm5lcx2qxyw5wwujnvs2g1ctotghpjxmwx8rbp9f66pti1uvjq3rot2fx9pnkm0l2201k\",\n \"field\" : \"b31z7cs64xcs6nzuy89kgsnhlcqgumsd9t1hygnc2gaxjvsltruerw6rz5\",\n \"resource\" : \"q0dsygpik3ji5n3hg3jmgrakk8mvd5qpg8yhfhlbzkarzzzwwi39xy1uqlyy674a2zee16p4dio5000gxayap\",\n \"index\" : 5515385799524240055,\n \"message\" : \"Amet illum ipsa tempore ipsa numquam. Quaerat et cum id modi iusto. Culpa repellat debitis perspiciatis. Itaque architecto odit. Placeat ut voluptates est.\",\n \"value\" : { }\n }, {\n \"code\" : \"5wt9r12nfav1xbowlo9ho3fbud8jleipr4hzi8dkstm07dcxven1jyn3vkdww06tihub6xp2fd2rfo5hkfruirx8xaquzb99qiry89m6pzohaesy5eugwwujfkhyi51u8o0v7xwm0\",\n \"field\" : \"nzqj6ig041z9qo2td1husvq79pl6fjwhnpqda55xzf4du4u60jjzqpcjqpdeccf2vt1arzyqb2cyptbq9bnjgt4e9eieeev0ylt56yjhagytf7dv3okhdurtmf4ttkx2oh3fr0kcaj4qzugu27s5fmwy6tu0kxe45z\",\n \"resource\" : \"lya7bi8qaydwqpoxj8muy8\",\n \"index\" : 3413746524013547231,\n \"message\" : \"Temporibus ut voluptate laborum consequatur ea. Cum cumque sit ipsum mollitia quaerat repellat et. Molestias iste voluptatem. Quasi nesciunt exercitationem eveniet vero deserunt id quam. Temporibus in\",\n \"value\" : { }\n }, {\n \"code\" : \"dnajl6mtcpu4umj6tv6dost7enoxabbywxt3kbnhemxrm6qu6pv83a9792krcsnn0tl6n7pv3bnynq8q7h8jkdnht29v11jzah0nk6gpfg9wdnb64tm6dqkza5cw673gz3l2ldwpqt6l6hxt9\",\n \"field\" : \"5ras4cea0chimm0ma71uu2stv7y2leku9jo0e52\",\n \"resource\" : \"89vh0fygi5hw4oitq12wuapgywp8bwm3pjavn4c7124sxcpm80k0ensl12zb274utcqfoyx3rbcnjcw9elhkbararvfq4i82e9pscsdlo4evne6\",\n \"index\" : 4444596752845635562,\n \"message\" : \"Deleniti eos explicabo. Voluptate impedit voluptas accusamus aliquam. Quod quos saepe. Et optio iure nostrum autem voluptas. Quis et aut quia ut eveniet quis labore.\",\n \"value\" : { }\n }, {\n \"code\" : \"omrpq91uv9nnafm4mps1gaydc5wnfasa2jxwsiv22tomjqnqog5hu11ovyx3sejh0pmivox9qn27mv134b8rvenfi31e1p52ra01v2w2j4t5vtsxfitfban0j1s4fzn\",\n \"field\" : \"1wcqakh37qnlgmmu6625seequjqiklw3hj3riod9q4vm90vjhfin564nx2cp3t37gvtqiwzo2p8lzbl65zh8p364e6m5ppiq29xbmxqy5cr0lwy670ixyfzelezv1np0\",\n \"resource\" : \"rktu6i2nc4rqghhpxytdgzu4zgt03vzf29eub0pmvz4pmyle3imhapj6nf7qokv78uzo6rqcer11f47umgw33dkhq1bh9gc9p23i2y4uqt6eucs0fsbmzcx3rymnn96r\",\n \"index\" : 5408902635630825647,\n \"message\" : \"Nisi animi qui sed a. Quidem tempore eligendi dignissimos dolor. Tempora voluptatem veritatis consequuntur incidunt suscipit quo. Expedita tenetur ea rerum omnis iusto quidem. Et ea qui adipisci.\",\n \"value\" : { }\n } ]\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "395b3a2b-3baa-4dfa-90f9-427dc170f2dc", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.019827Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "git/delete-ref", + "schema": { + "description": "Validation Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "errors": { + "items": { + "properties": { + "code": { + "type": "string" + }, + "field": { + "type": "string" + }, + "index": { + "type": "integer" + }, + "message": { + "type": "string" + }, + "resource": { + "type": "string" + }, + "value": { + "oneOf": [ + { + "nullable": true, + "type": "string" + }, + { + "nullable": true, + "type": "integer" + }, + { + "items": { + "type": "string" + }, + "nullable": true, + "type": "array" + } + ] + } + }, + "required": ["code"], + "type": "object" + }, + "type": "array" + }, + "message": { + "type": "string" + } + }, + "required": ["message", "documentation_url"], + "title": "Validation Error", + "type": "object" + } + } + } + }, + "insertionIndex": 678 + }, + { + "id": "aa24318a-c2fa-438b-899a-809a96af16ba", + "name": "Delete a reference - 204", + "request": { + "urlPath": "/repos/1qw1tw429twhvhppvoachvcmcdlfnvzsyxa67hneuzlscmjb0dybhntictv91bu2l22fi4sygmt6kfrz7a000665zqrfn159zgdqq12l5xtxhuxlqnegey3b7vskdzoncos1fwuw16aid4idh7tvr/2nurz/git/refs/i0eu4yg72elo7zobjmmgw2t45rj80ctgq4r6segctkmf7m1k01r5fmpljd678vx440qheiohfnu11esdd1dvwn3ue5nxskwvdyn23mhgwq92omwe2ej1ri9w30yrvgbmn3r6ypk64ksjt6nazwi", + "method": "DELETE" + }, + "response": { + "status": 204 + }, + "uuid": "aa24318a-c2fa-438b-899a-809a96af16ba", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.019029Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "git/delete-ref" + } + } + }, + "insertionIndex": 679 + }, + { + "id": "96ac543c-0f64-4a7f-a288-1a06af390aba", + "name": "Create a reference", + "request": { + "urlPath": "/repos/s7oft7nw6dq0wk417epep5y952wgexzrgf7290q34dcn650dzwg5mdoexscjcd0lb/zlqeo6z4vyn1d836krdz6p10cog5k/git/refs", + "method": "POST" + }, + "response": { + "status": 422, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/588642\",\n \"message\" : \"Aliquam similique blanditiis impedit est. Laudantium labore eligendi illo architecto sit. Error architecto ut nisi quo enim. Maxime magnam qui vitae tempore nisi sint sit. Beatae consequatur dolores q\",\n \"errors\" : [ {\n \"code\" : \"6bls9sgtvm6mod7vtlwigt\",\n \"field\" : \"rucs1nycu8ljnfnwnxszo2lqcrryhi5h5awh2mlmujomzqcq2haqpa0uvizwofdhjl5bps8hqzujumimipzcecs59f8xknn\",\n \"resource\" : \"ryitov3nq2ux8wahluvo9mp8sxxf11q6wws6c8j896n1pd5d20t6psu1mdg059xzb\",\n \"index\" : 7257526213876463025,\n \"message\" : \"Perspiciatis repudiandae voluptas. Fuga tempore eum porro dicta. Est temporibus ab in rem eveniet rerum in.\",\n \"value\" : { }\n }, {\n \"code\" : \"or16fqg2d\",\n \"field\" : \"k3b0j7rzunatjds3140i3qf6j5it5q0iay1pqh6qmtjfo1vywjccj0mcri2cfwzujq5mvwik4yeuneghr28pvocut0uhm13sx0ercakch1wybvdai0vncpb0byq0fg\",\n \"resource\" : \"2h8u8mqub7934pe1229s7yt4jfg5o0afs2gvd4l73t5hm048hg6am65m1wu6dsmht6go83cmb7mvcm4y4b2zvlgos8jy9wa4g2twz4fwipshzatqockkpo1dhaog32y4yo94dm3fy8foltkid9ofxrhzsmnkvbpoz\",\n \"index\" : 3730226017972545500,\n \"message\" : \"Nihil magni veritatis unde. Architecto atque perspiciatis dolor iste. Est officiis illum dolorem facilis.\",\n \"value\" : { }\n }, {\n \"code\" : \"2g5w8ds6hi1zhnbd67pd9x1a1k38llup1j4bh389olxcbjyun10qm71xesf1o0v4cs4qe1q9dzba8xco5gn32kaffm\",\n \"field\" : \"3sbop92qa7p2y6lbpwjflcfjj600bufphzg18rs8sxl6fagkw01o01qzwc9ypbkz7yri00pch0gnuls0bvuabea0d50znezujl0r\",\n \"resource\" : \"3n4hmc\",\n \"index\" : 5686098011993093927,\n \"message\" : \"Tempora quisquam eos sapiente deserunt a et. Eius voluptas qui sint sed ipsam possimus. A odio distinctio et et praesentium. Eos rerum quas.\",\n \"value\" : { }\n }, {\n \"code\" : \"zi526tof4efnthbgf910napltzrfhmo8uvv662gxx1fjv2621eg20zql5gcrsvta\",\n \"field\" : \"tfr4lu77o5ryw9btmcky8vpdrywineg0lqqmgjl9ft79ij3xg0l1q9lzfngn71c4p3uwhtzkkrgd9vjf4ycfk95ghwfj1c5du423qhj49wvmbno6ugzg8aj8vwei48thjnbqpzqdwizg\",\n \"resource\" : \"45b7gzfla8mwfzzzrodcebv9bqqzc8sxbl2qmjp4b3hl2gy8jucavfyn7b371uq9cq1bj0qe7bt5u4k4z50m2lukkns3dryek1wwygdsl3eyfgan2f3ycimhp5rvpfgfgtvzg53sn9d9eqc81ec4oovi0ytjov\",\n \"index\" : 7734286432291976592,\n \"message\" : \"Similique aut ut omnis dignissimos impedit officiis nulla. Impedit quaerat amet expedita nostrum enim libero quam. Nihil praesentium repellendus molestias error.\",\n \"value\" : { }\n }, {\n \"code\" : \"oixig490ssjqvm9s92f8h5fscl8vbr5ytuu70tmqeu8lv7zygz4bsrnxh1imkqvi90p9c8hkjactx61s9s6whb3k\",\n \"field\" : \"50azssxc5odorgeaux1dkfs7jt5qrg0kovl15omf0gvqas9ybp1un6wvgss2crejzwkzjrbl48lt328x2w7ehbentdu99pof076tu34lamslle5oo8mvqjr45ejfz7tuwckzpgdgxsgam27vlbgra1yuhx65wzlquzy56p39acklp0il46btk18wgsth9\",\n \"resource\" : \"fvbuwubyamc0bcl8ai9hy8ful4lhpw7wtsamuw0dc7yecesjzwqxwjl7bl6ia1vnucnzjlz2jlaj43zctkbhaeqorxjxkj47a5hb8r0r9764h8sun28uxqhj0328wv3lst1t3x45mzkv6ox2219i22r0nlp93g3g9d7li4yzvfdqvj5sxftjneh\",\n \"index\" : 8522265666583896361,\n \"message\" : \"Aut quaerat magnam enim ea expedita voluptatibus sit. Aliquam reiciendis atque quia est fugiat. Natus rerum odio sunt non inventore pariatur.\",\n \"value\" : { }\n }, {\n \"code\" : \"gz9u6zc6nhrybobhvit2nv0hg9w5aph5q4p2jvnhb5pfoyphp5wm784cms02dcuh93gzb\",\n \"field\" : \"p4eoyhfp5f7ek6xu4blcc749km9p\",\n \"resource\" : \"q6fqs1q724836k4rx9j9gr\",\n \"index\" : 1363027989606130858,\n \"message\" : \"Veniam alias facere voluptas. Quod sunt vel commodi maiores autem et enim. Nostrum quam consequatur dolore sapiente architecto doloremque expedita. Repellat rerum aliquid neque est perspiciatis. Sequi\",\n \"value\" : { }\n }, {\n \"code\" : \"4uxoif77mjav3cuo70mbk7nskdc8zx72j9dxwao92c2bc79lnl6jko63v5hm9y6ztmpg7q559gd1s4er3uupbxwsjxwpj1isp8nyjtlq0exhxpagsikpdq21qul7xpn2kzpekm5czy475ps\",\n \"field\" : \"s48j3mxpeqhwqs4asgdykfbttw7t5pkd1xj5xsnj6\",\n \"resource\" : \"qc5hgov3caeeaccl0p0ouy779a0s7ebgg0mojt067zirxsghtdx21ffn93ijg2t5j8w2i3ko1oovhdgtfu1ks2xh1mdlb9klbcmmnwcej6nvgj1hx1bspzr044fggbvvrny2k2nf45dmouxihthcz6kongl6ztnrk5ichrp4u8\",\n \"index\" : 1393269787478599596,\n \"message\" : \"Labore omnis error aut est quo possimus. Enim sequi omnis. Dignissimos numquam modi dignissimos adipisci et. Aspernatur cum omnis in corporis nobis. Quo quia sed animi et.\",\n \"value\" : { }\n } ]\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "96ac543c-0f64-4a7f-a288-1a06af390aba", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.018973Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "git/create-ref", + "schema": { + "description": "Validation Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "errors": { + "items": { + "properties": { + "code": { + "type": "string" + }, + "field": { + "type": "string" + }, + "index": { + "type": "integer" + }, + "message": { + "type": "string" + }, + "resource": { + "type": "string" + }, + "value": { + "oneOf": [ + { + "nullable": true, + "type": "string" + }, + { + "nullable": true, + "type": "integer" + }, + { + "items": { + "type": "string" + }, + "nullable": true, + "type": "array" + } + ] + } + }, + "required": ["code"], + "type": "object" + }, + "type": "array" + }, + "message": { + "type": "string" + } + }, + "required": ["message", "documentation_url"], + "title": "Validation Error", + "type": "object" + } + } + } + }, + "insertionIndex": 680 + }, + { + "id": "548977ac-7927-42ca-92f2-9d71522679d8", + "name": "Create a reference - default", + "request": { + "urlPath": "/repos/15sc9vactdric0dqa5wjsxj5zmpkel1m7yeel2vc7okxgc13e2z99iepzdnsim/5xb9nnxtjr5imxfmc3e1qpeomo2f2muqfr11xgcxwlejll5fjectdavxky8en52v7tzyiah0s4mt8oypxmw0suwg71y980k74tros9mw26jd9dh7uncaja05m378rs5hv4z7hiyjvz2wi82yz1ekatrsli5zfsjmzq4vn4auidnxmelqg0741bykhzuzrstxtvyxc/git/refs", + "method": "POST" + }, + "response": { + "status": 201, + "body": "{\n \"node_id\" : \"MDM6UmVmcmVmcy9oZWFkcy9mZWF0dXJlQQ==\",\n \"object\" : {\n \"sha\" : \"aa218f56b14c9653891f9e74264a383fa43fefbd\",\n \"type\" : \"commit\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/git/commits/aa218f56b14c9653891f9e74264a383fa43fefbd\"\n },\n \"ref\" : \"refs/heads/featureA\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/git/refs/heads/featureA\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "548977ac-7927-42ca-92f2-9d71522679d8", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.018205Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "git/create-ref", + "schema": { + "description": "Git references within a repository", + "properties": { + "node_id": { + "type": "string" + }, + "object": { + "properties": { + "sha": { + "description": "SHA for the reference", + "example": "7638417db6d59f3c431d3e1f261cc637155684cd", + "maxLength": 40, + "minLength": 40, + "type": "string" + }, + "type": { + "type": "string" + }, + "url": { + "format": "uri", + "type": "string" + } + }, + "required": ["type", "sha", "url"], + "type": "object" + }, + "ref": { + "type": "string" + }, + "url": { + "format": "uri", + "type": "string" + } + }, + "required": ["ref", "node_id", "url", "object"], + "title": "Git Reference", + "type": "object" + } + } + } + }, + "insertionIndex": 681 + }, + { + "id": "b8fd3070-4609-44d3-a818-b67d740bf06f", + "name": "Get a reference", + "request": { + "urlPath": "/repos/d5kohe21twoc5o5sri549qoqktrcbys1tz6aqy63x6ue7ncbs9gtnq6x82i5r1mskgucp0/2o49usfttjuhx8qmwb1fruuk0iounnrcz5mrz2z3shslj2ythu5h9eoll636cvvqtmhi71jkx5ww16b0gmkkskr3npel8y9vg6pp74e4gka3z2og7fqb11fasz8hxhe7ry93l7hr992mtn2k3ym8inpn5j6w/git/ref/zmkyppp8417hr8xv5c8pa0bhqxo6h8yh7lclziq1npawq99oj4pt6vg6qrfru7120cmbowkfhfpkzgj793", + "method": "GET" + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/738458\",\n \"message\" : \"Ut vel aut occaecati porro. Officiis et in sit. Voluptas ut corrupti consequatur. Exercitationem ab earum dignissimos ea ea rerum.\",\n \"url\" : \"https://web.example.mocklab.io/254573\",\n \"status\" : \"mjb5qp39vlwgwvir7c0ey7tr1dzh1rwpxl54kpcnluqkfddy5zghnhx\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "b8fd3070-4609-44d3-a818-b67d740bf06f", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.018114Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "git/get-ref", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 682 + }, + { + "id": "10152555-45a8-45c4-a72d-a5bee342fc7d", + "name": "Get a reference - default", + "request": { + "urlPath": "/repos/ygcs3hwpfldojrfgmyx2319xopgtdjouibxnbgy9qnhis86595sj2uj5h42ncpl1w232xtd5vi7ensl68wun1r5qri02t4yi4ra3e7id3ga5mvxja4vewrela2e92nzp1fd5wrwhxm893gwyrd6ojvuepv4od3xnw2px5b7si4bw8j1p4n4tq2hswq5b/ofh9vcn/git/ref/fapigqkhutddenfhdpufijut69yhyqwblm1r1xa8bpjo7qplyi", + "method": "GET" + }, + "response": { + "status": 200, + "body": "{\n \"node_id\" : \"MDM6UmVmcmVmcy9oZWFkcy9mZWF0dXJlQQ==\",\n \"object\" : {\n \"sha\" : \"aa218f56b14c9653891f9e74264a383fa43fefbd\",\n \"type\" : \"commit\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/git/commits/aa218f56b14c9653891f9e74264a383fa43fefbd\"\n },\n \"ref\" : \"refs/heads/featureA\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/git/refs/heads/featureA\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "10152555-45a8-45c4-a72d-a5bee342fc7d", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.017871Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "git/get-ref", + "schema": { + "description": "Git references within a repository", + "properties": { + "node_id": { + "type": "string" + }, + "object": { + "properties": { + "sha": { + "description": "SHA for the reference", + "example": "7638417db6d59f3c431d3e1f261cc637155684cd", + "maxLength": 40, + "minLength": 40, + "type": "string" + }, + "type": { + "type": "string" + }, + "url": { + "format": "uri", + "type": "string" + } + }, + "required": ["type", "sha", "url"], + "type": "object" + }, + "ref": { + "type": "string" + }, + "url": { + "format": "uri", + "type": "string" + } + }, + "required": ["ref", "node_id", "url", "object"], + "title": "Git Reference", + "type": "object" + } + } + } + }, + "insertionIndex": 683 + }, + { + "id": "94334fee-e155-4595-8a79-893d43794b79", + "name": "List matching references - default", + "request": { + "urlPath": "/repos/frxzloo2s1pzjmj6385yeauxlnj23b7x1cuoyea4c4072awt18b1yfeqhfzv85hp4oej9nl8mayezndm746xiioibwlpnj20d6h1v6rh3o40kmmps4exmdnlt3dlrwxgsh3trh8vn0jqwmgj/k6tyr7/git/matching-refs/x8oemle4ggm83osn01cgwid5ge96gspwov790omlbgxj0xkui3we70zjc9kzvdhpa5mawmllme9wwqghthzjhzw9j1mh0sefvtl1a3uz19qsbbfjycbckjebouj0adgqsoceqjyvengy5pmk9851rg9ukef8pscmdlvgtqgpncjoia8x90ae", + "method": "GET" + }, + "response": { + "status": 200, + "body": "[ {\n \"node_id\" : \"MDM6UmVmcmVmcy9oZWFkcy9mZWF0dXJlLWE=\",\n \"object\" : {\n \"sha\" : \"aa218f56b14c9653891f9e74264a383fa43fefbd\",\n \"type\" : \"commit\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/git/commits/aa218f56b14c9653891f9e74264a383fa43fefbd\"\n },\n \"ref\" : \"refs/heads/feature-a\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/git/refs/heads/feature-a\"\n}, {\n \"node_id\" : \"MDM6UmVmcmVmcy9oZWFkcy9mZWF0dXJlLWI=\",\n \"object\" : {\n \"sha\" : \"612077ae6dffb4d2fbd8ce0cccaa58893b07b5ac\",\n \"type\" : \"commit\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/git/commits/612077ae6dffb4d2fbd8ce0cccaa58893b07b5ac\"\n },\n \"ref\" : \"refs/heads/feature-b\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/git/refs/heads/feature-b\"\n} ]", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "94334fee-e155-4595-8a79-893d43794b79", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.017759Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "git/list-matching-refs", + "schema": { + "items": { + "$ref": "#/components/schemas/git-ref" + }, + "type": "array" + } + } + } + }, + "insertionIndex": 684 + }, + { + "id": "a9d6e835-c9f5-4686-8151-1193c70ce474", + "name": "Get a commit", + "request": { + "urlPath": "/repos/vhnoizex3p2jfz3sbglte8jkl0t4ozloble4p0wjcubmie6upujnvyrcw89cs3sk/ih4nu0f7bk2ko4es48j2ymgx29v4h2gaaa9r3e2qv7i1l96v7v48iz18hg9aa6fvcfb03w3h6uqg3cummye5sgwb3oovq14qx/git/commits/v07j0w0vxovksag8ufuntd9wen2lv12wll0a4h79rs9r0pxfqxwr7qu8o0cijwf5zp0lk285kjae54on8svimcs3fun91hux3vvz37bcq653es706bnyyb1t2r93ip1tohum", + "method": "GET" + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/604326\",\n \"message\" : \"Est sit voluptas eum dolor officiis eum praesentium. Placeat qui qui culpa ab magnam modi. Placeat et maxime sit beatae. Consequuntur nemo doloremque. Alias adipisci ipsam molestiae error minima quas.\",\n \"url\" : \"https://web.example.mocklab.io/256286\",\n \"status\" : \"l86eyxtz96r9f\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "a9d6e835-c9f5-4686-8151-1193c70ce474", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.017692Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "git/get-commit", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 685 + }, + { + "id": "47cf0053-34b4-4d62-a96d-a9d9398f5128", + "name": "Get a commit - default", + "request": { + "urlPath": "/repos/r12vhrgckm1rkcnugxu5/bn7tycoc7q25h7ganoljqi3r60ie38ldbz7qkv2c0olw1vhbenhhxln6brjoq1ck6aqy2muwuxli2n7tamt7uynoi30nvabesi2v7q74sdrz0lcx4gnh1phwo8wiutq0e3z2opgdafuvqj3mnezmp2b2gxzb9416zn/git/commits/2z6ht265xwgx3g54jmowbnkwl85226nueg1ehixkdjl1v8bcsgenwnchuxw6ifp4d7e3km6k0ckq243", + "method": "GET" + }, + "response": { + "status": 200, + "body": "{\n \"author\" : {\n \"date\" : \"2014-11-07T22:01:45Z\",\n \"email\" : \"octocat@github.com\",\n \"name\" : \"Monalisa Octocat\"\n },\n \"committer\" : {\n \"date\" : \"2014-11-07T22:01:45Z\",\n \"email\" : \"octocat@github.com\",\n \"name\" : \"Monalisa Octocat\"\n },\n \"html_url\" : \"https://github.com/octocat/Hello-World/commit/7638417db6d59f3c431d3e1f261cc637155684cd\",\n \"message\" : \"added readme, because im a good github citizen\",\n \"node_id\" : \"MDY6Q29tbWl0NmRjYjA5YjViNTc4NzVmMzM0ZjYxYWViZWQ2OTVlMmU0MTkzZGI1ZQ==\",\n \"parents\" : [ {\n \"html_url\" : \"https://github.com/octocat/Hello-World/commit/7638417db6d59f3c431d3e1f261cc637155684cd\",\n \"sha\" : \"1acc419d4d6a9ce985db7be48c6349a0475975b5\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/git/commits/1acc419d4d6a9ce985db7be48c6349a0475975b5\"\n } ],\n \"sha\" : \"7638417db6d59f3c431d3e1f261cc637155684cd\",\n \"tree\" : {\n \"sha\" : \"691272480426f78a0138979dd3ce63b77f706feb\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/git/trees/691272480426f78a0138979dd3ce63b77f706feb\"\n },\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/git/commits/7638417db6d59f3c431d3e1f261cc637155684cd\",\n \"verification\" : {\n \"reason\" : \"unsigned\",\n \"verified\" : false\n }\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "47cf0053-34b4-4d62-a96d-a9d9398f5128", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.017435Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "git/get-commit", + "schema": { + "description": "Low-level Git commit operations within a repository", + "properties": { + "author": { + "description": "Identifying information for the git-user", + "properties": { + "date": { + "description": "Timestamp of the commit", + "example": "2014-08-09T08:02:04+12:00", + "format": "date-time", + "type": "string" + }, + "email": { + "description": "Git email address of the user", + "example": "monalisa.octocat@example.com", + "type": "string" + }, + "name": { + "description": "Name of the git user", + "example": "Monalisa Octocat", + "type": "string" + } + }, + "required": ["email", "name", "date"], + "type": "object" + }, + "committer": { + "description": "Identifying information for the git-user", + "properties": { + "date": { + "description": "Timestamp of the commit", + "example": "2014-08-09T08:02:04+12:00", + "format": "date-time", + "type": "string" + }, + "email": { + "description": "Git email address of the user", + "example": "monalisa.octocat@example.com", + "type": "string" + }, + "name": { + "description": "Name of the git user", + "example": "Monalisa Octocat", + "type": "string" + } + }, + "required": ["email", "name", "date"], + "type": "object" + }, + "html_url": { + "format": "uri", + "type": "string" + }, + "message": { + "description": "Message describing the purpose of the commit", + "example": "Fix #42", + "type": "string" + }, + "node_id": { + "type": "string" + }, + "parents": { + "items": { + "properties": { + "html_url": { + "format": "uri", + "type": "string" + }, + "sha": { + "description": "SHA for the commit", + "example": "7638417db6d59f3c431d3e1f261cc637155684cd", + "type": "string" + }, + "url": { + "format": "uri", + "type": "string" + } + }, + "required": ["sha", "url", "html_url"], + "type": "object" + }, + "type": "array" + }, + "sha": { + "description": "SHA for the commit", + "example": "7638417db6d59f3c431d3e1f261cc637155684cd", + "type": "string" + }, + "tree": { + "properties": { + "sha": { + "description": "SHA for the commit", + "example": "7638417db6d59f3c431d3e1f261cc637155684cd", + "type": "string" + }, + "url": { + "format": "uri", + "type": "string" + } + }, + "required": ["sha", "url"], + "type": "object" + }, + "url": { + "format": "uri", + "type": "string" + }, + "verification": { + "properties": { + "payload": { + "nullable": true, + "type": "string" + }, + "reason": { + "type": "string" + }, + "signature": { + "nullable": true, + "type": "string" + }, + "verified": { + "type": "boolean" + } + }, + "required": ["verified", "reason", "signature", "payload"], + "type": "object" + } + }, + "required": [ + "sha", + "node_id", + "url", + "html_url", + "author", + "committer", + "tree", + "message", + "parents", + "verification" + ], + "title": "Git Commit", + "type": "object" + } + } + } + }, + "insertionIndex": 686 + }, + { + "id": "9a6f1da2-dbd0-43ba-8038-3e5a16bcb26e", + "name": "Create a commit", + "request": { + "urlPath": "/repos/w43v7gikmwlpbdrugfii825uapdwhg4zazjzy6yqrr2q4vuru1n2fszd66hxnzw1dgaxeqvnfnjq1kkt0utz8q5kyjcttipm2aott03vlecyovqi52h4v8f5rpi25b050yfos7xhacf53m63p/d282k7lmubv0x3i5h05jttixkwhwfz5hubf14zcwzr7p5x20ixrpfp3phwywb5k2gdkctcwm7d2q64mzj55l0hy7lc7b2ere4f7my7s8iocng105zn6vurf3vf2co8lpiqg8zes7f4428wo7jgoq/git/commits", + "method": "POST" + }, + "response": { + "status": 422, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/328495\",\n \"message\" : \"Labore dolores sequi inventore quis maiores et aut. Iure ad voluptate nisi rerum numquam sequi. Qui eum omnis blanditiis.\",\n \"errors\" : [ {\n \"code\" : \"zrf\",\n \"field\" : \"vjgtkiailsxgeent1b2v02l0piu1b3o7xji9kjm5whkh04feyaap25djuk7zotcx2vcql27j9yoosjxv76oa0swygdgd90tnvhn4tph9x7iuwedmbzim\",\n \"resource\" : \"yca\",\n \"index\" : 6667451771644134552,\n \"message\" : \"Repellendus unde ab doloribus ut dignissimos officia alias. Sint qui veniam. Sed dolor molestiae sequi. Sint ducimus provident non.\",\n \"value\" : { }\n }, {\n \"code\" : \"ibfz0417lvp76kdicqqbegbmo9uo0yb\",\n \"field\" : \"3slycr9g6p0461bwcu5vp5nm19fa2dsz1oxe9swqphjptx712kir8ufwax87ueo8iobinsrhgcwvfb5skj2lzsq55guci9fxnnm3j92x08orjdzdw7eetsz6qql0knmbrirp1xqmgsjkr3z0x5ppwtqdqxxrmzkc6ou79xa5c493x38tswpvqg\",\n \"resource\" : \"b6nd7ehqvkft8phpzc81rrxr6atdc0pvm2aliur0oweiivmbm7t8o73q3on65du0ypf6mbs9vlgcnhig87vc98ph9gi1i80zssj7d7p0wmeyapj1eyuuiskwzvgcwvcua39ntx05k\",\n \"index\" : 1379623159611962291,\n \"message\" : \"Nam perferendis ea deserunt autem non iure dolores. Repudiandae voluptas animi hic. Fuga qui ut nulla. Sed voluptates ipsa quasi ipsum occaecati. Id voluptas aut minus consequatur temporibus dolores.\",\n \"value\" : { }\n } ]\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "9a6f1da2-dbd0-43ba-8038-3e5a16bcb26e", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.017216Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "git/create-commit", + "schema": { + "description": "Validation Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "errors": { + "items": { + "properties": { + "code": { + "type": "string" + }, + "field": { + "type": "string" + }, + "index": { + "type": "integer" + }, + "message": { + "type": "string" + }, + "resource": { + "type": "string" + }, + "value": { + "oneOf": [ + { + "nullable": true, + "type": "string" + }, + { + "nullable": true, + "type": "integer" + }, + { + "items": { + "type": "string" + }, + "nullable": true, + "type": "array" + } + ] + } + }, + "required": ["code"], + "type": "object" + }, + "type": "array" + }, + "message": { + "type": "string" + } + }, + "required": ["message", "documentation_url"], + "title": "Validation Error", + "type": "object" + } + } + } + }, + "insertionIndex": 687 + }, + { + "id": "0eab3d14-b846-4d6b-9a35-42f3dbc458a2", + "name": "Create a commit", + "request": { + "urlPath": "/repos/bhl7lvzfh1zmbuiovcc6mdi50n6wzdjkt20ub72m4dujxx2mqu8x6xtl9yv3g2i5nxqlekiwppu5hearon6t6v62ebf/2c0ytljj224veiejnvro8y6inao9p4510n9l8xmabbfxbfvf6z2ae1xmbumqk0mwi9qzl9p02kw5it5vg7m6ib27e3il4aqt5sr5yltdfrief9cmwjtkhr9c55as8op0cu4kwy0wplwjqexlrr1c4ybz/git/commits", + "method": "POST" + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/145203\",\n \"message\" : \"Vitae quisquam id consequatur voluptatem non. Porro et non. Et omnis consequuntur illum fugiat consequuntur. Expedita commodi qui id quo quia assumenda non.\",\n \"url\" : \"https://web.example.mocklab.io/047228\",\n \"status\" : \"gju68wr7myhggl9xxiod1zhvqzd2k5671601hfgim9758krqyjhrte7dpi0w1yz8zrx3y9wsdpw7dvg9e1\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "0eab3d14-b846-4d6b-9a35-42f3dbc458a2", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.016822Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "git/create-commit", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 688 + }, + { + "id": "21b71ddc-24fe-4375-9cf4-73dddea75447", + "name": "Create a commit - default", + "request": { + "urlPath": "/repos/4uuoblfz6awg2c6nnnsvl2r7ifz094xzyu9lq5d5est1yfms336hm9arx3g1dscdirsougkwwfbbhal8ax7culdzsyok4i7jqwobnantxrq0n8h9p6v3edntn5rxh2qhn6gfqeo2zhztfqstehxrp3na23if604gq8cfnexp/1ui6gl0njdq5mtyuw24hc7c5tillffovduoucqaggxlbi8ht2f3to61mr7vp1xt6jizdgwc5k27a09a147s4m1h5u8yjrq6saj1ft0qzvog12gr6ql20yqfql9a9wga6jcc65k5hw8syiubxrywuke4mid7l8u53xyx52h174mjnjt30oqee1y34ihg4j7g7xwknngl/git/commits", + "method": "POST" + }, + "response": { + "status": 201, + "body": "{\n \"author\" : {\n \"date\" : \"2014-11-07T22:01:45Z\",\n \"email\" : \"octocat@github.com\",\n \"name\" : \"Monalisa Octocat\"\n },\n \"committer\" : {\n \"date\" : \"2014-11-07T22:01:45Z\",\n \"email\" : \"octocat@github.com\",\n \"name\" : \"Monalisa Octocat\"\n },\n \"html_url\" : \"https://github.com/octocat/Hello-World/commit/7638417db6d59f3c431d3e1f261cc637155684cd\",\n \"message\" : \"my commit message\",\n \"node_id\" : \"MDY6Q29tbWl0NzYzODQxN2RiNmQ1OWYzYzQzMWQzZTFmMjYxY2M2MzcxNTU2ODRjZA==\",\n \"parents\" : [ {\n \"html_url\" : \"https://github.com/octocat/Hello-World/commit/7d1b31e74ee336d15cbd21741bc88a537ed063a0\",\n \"sha\" : \"7d1b31e74ee336d15cbd21741bc88a537ed063a0\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/git/commits/7d1b31e74ee336d15cbd21741bc88a537ed063a0\"\n } ],\n \"sha\" : \"7638417db6d59f3c431d3e1f261cc637155684cd\",\n \"tree\" : {\n \"sha\" : \"827efc6d56897b048c772eb4087f854f46256132\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/git/trees/827efc6d56897b048c772eb4087f854f46256132\"\n },\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/git/commits/7638417db6d59f3c431d3e1f261cc637155684cd\",\n \"verification\" : {\n \"reason\" : \"unsigned\",\n \"verified\" : false\n }\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "21b71ddc-24fe-4375-9cf4-73dddea75447", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.016578Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "git/create-commit", + "schema": { + "description": "Low-level Git commit operations within a repository", + "properties": { + "author": { + "description": "Identifying information for the git-user", + "properties": { + "date": { + "description": "Timestamp of the commit", + "example": "2014-08-09T08:02:04+12:00", + "format": "date-time", + "type": "string" + }, + "email": { + "description": "Git email address of the user", + "example": "monalisa.octocat@example.com", + "type": "string" + }, + "name": { + "description": "Name of the git user", + "example": "Monalisa Octocat", + "type": "string" + } + }, + "required": ["email", "name", "date"], + "type": "object" + }, + "committer": { + "description": "Identifying information for the git-user", + "properties": { + "date": { + "description": "Timestamp of the commit", + "example": "2014-08-09T08:02:04+12:00", + "format": "date-time", + "type": "string" + }, + "email": { + "description": "Git email address of the user", + "example": "monalisa.octocat@example.com", + "type": "string" + }, + "name": { + "description": "Name of the git user", + "example": "Monalisa Octocat", + "type": "string" + } + }, + "required": ["email", "name", "date"], + "type": "object" + }, + "html_url": { + "format": "uri", + "type": "string" + }, + "message": { + "description": "Message describing the purpose of the commit", + "example": "Fix #42", + "type": "string" + }, + "node_id": { + "type": "string" + }, + "parents": { + "items": { + "properties": { + "html_url": { + "format": "uri", + "type": "string" + }, + "sha": { + "description": "SHA for the commit", + "example": "7638417db6d59f3c431d3e1f261cc637155684cd", + "type": "string" + }, + "url": { + "format": "uri", + "type": "string" + } + }, + "required": ["sha", "url", "html_url"], + "type": "object" + }, + "type": "array" + }, + "sha": { + "description": "SHA for the commit", + "example": "7638417db6d59f3c431d3e1f261cc637155684cd", + "type": "string" + }, + "tree": { + "properties": { + "sha": { + "description": "SHA for the commit", + "example": "7638417db6d59f3c431d3e1f261cc637155684cd", + "type": "string" + }, + "url": { + "format": "uri", + "type": "string" + } + }, + "required": ["sha", "url"], + "type": "object" + }, + "url": { + "format": "uri", + "type": "string" + }, + "verification": { + "properties": { + "payload": { + "nullable": true, + "type": "string" + }, + "reason": { + "type": "string" + }, + "signature": { + "nullable": true, + "type": "string" + }, + "verified": { + "type": "boolean" + } + }, + "required": ["verified", "reason", "signature", "payload"], + "type": "object" + } + }, + "required": [ + "sha", + "node_id", + "url", + "html_url", + "author", + "committer", + "tree", + "message", + "parents", + "verification" + ], + "title": "Git Commit", + "type": "object" + } + } + } + }, + "insertionIndex": 689 + }, + { + "id": "c1a9b16f-fbfb-49d7-b15d-31f1f9e26497", + "name": "Get a blob", + "request": { + "urlPath": "/repos/y3hlwx6vqaipx21tausgtxvp4qmrkla7evdtp4key5i4iiuykqwq559aosfzk13lmxh3y37idmpevsxtvj2p/gzfccqso/git/blobs/jswsowizrq5ni089zv4cyeb1tpwqlnzij1dkx4igrvlix5vlmxugfnw17c78crhbjeiqogq", + "method": "GET" + }, + "response": { + "status": 422, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/337333\",\n \"message\" : \"Nemo dolorum aut quis. Quas quia totam qui dolorem omnis iure at. Ducimus odit mollitia voluptates deleniti vitae sit et. Aperiam eos dolor.\",\n \"errors\" : [ {\n \"code\" : \"z2u9vu2op9oxattqsc9kqtfmi64bbqcg46z4qo0ye7dtrjyc76nxs1tw7xcldysmzae4o3z9hxsyofpn2tswk41h9k5237fknubfrnekrazc31hctom12robwj\",\n \"field\" : \"gemwz9e1fn7na0joxlx239yba7bbvq\",\n \"resource\" : \"3udeu9dwgzn50bwvpe2teornhcsxgilp87468jkqegfg97sj8olbmo5ssnnmr4rtvw8i56rwsm2o45y4jtc6tn6k09f6qrogbh7i6vijb1wo7el2dlj3y59rgv0wv25iho76goetem9m8klajniiajzzp\",\n \"index\" : 7719313012847789504,\n \"message\" : \"Nemo hic itaque explicabo. Reiciendis laborum voluptatem ut sed voluptas. Laudantium corporis natus occaecati. Rerum optio quo consequatur. Labore repellendus temporibus nemo sit quae accusamus quisqu\",\n \"value\" : { }\n } ]\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "c1a9b16f-fbfb-49d7-b15d-31f1f9e26497", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.016328Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "git/get-blob", + "schema": { + "description": "Validation Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "errors": { + "items": { + "properties": { + "code": { + "type": "string" + }, + "field": { + "type": "string" + }, + "index": { + "type": "integer" + }, + "message": { + "type": "string" + }, + "resource": { + "type": "string" + }, + "value": { + "oneOf": [ + { + "nullable": true, + "type": "string" + }, + { + "nullable": true, + "type": "integer" + }, + { + "items": { + "type": "string" + }, + "nullable": true, + "type": "array" + } + ] + } + }, + "required": ["code"], + "type": "object" + }, + "type": "array" + }, + "message": { + "type": "string" + } + }, + "required": ["message", "documentation_url"], + "title": "Validation Error", + "type": "object" + } + } + } + }, + "insertionIndex": 690 + }, + { + "id": "b6f0f60b-60f4-4426-86be-0678951142ee", + "name": "Get a blob", + "request": { + "urlPath": "/repos/gjqnblgyirmjs6ufg1lwjq2pezvk5gzzeo6rzvldkb9cxvw44ipxnkaz5jva05x3ya52kak0q40kkq99a8pnadxvrmqybep3mz3cvyxyvx81hrkz59nfe19p6zjtsv9hhkm28aklloc614b2x4a7pf8psg7ulvfdcl7barp30g04gwwyz8jxz3byvcpdyn5l9qgvyc7x/89a4743l3hrb15g6/git/blobs/d60zffg0u0b62c209jdfbsxpmv3l50ptn1nzfro9ngv36tp2upigm6hbxcoh6g1sx4jyytp00ry545p4xvnaa8ouzyr20aay2ia94dbwbpoz3o3buhwaubpu0kaxb0ev0", + "method": "GET" + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/015311\",\n \"message\" : \"Nemo sed et. Modi ut autem voluptas voluptates vel. Tempore voluptatem vitae illum.\",\n \"url\" : \"https://web.example.mocklab.io/655847\",\n \"status\" : \"oonsmbjpxfg6cxrw4a3vw5uwu1ms5wpqftx0ghzqeptlxjjcionqsl8zvnx0seoiq8lrj8a5s2s4g2r34u8ivk7zzppybkwwufrsj4a6gruic0hsb9k2wv2xmmm2u22pycq972wwc868agr7dx7sgk5jd4icxgkrff3wcg9j6s\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "b6f0f60b-60f4-4426-86be-0678951142ee", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.016011Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "git/get-blob", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 691 + }, + { + "id": "fe11332f-1236-4a71-9d1e-30ff2971d225", + "name": "Get a blob", + "request": { + "urlPath": "/repos/f7y1hv0az20hduwbc2bi74j1hwkdfzbx1hibg4anmbnfe3r73q2aw921yk7v2mo3jbc6jz0dybmn0qavp6herffkvqbl4bf3x8ujb8hm8cpdb9m58hudtwytur61qwp7z8resmjo/sn2rkojxo4f1w5t8gucw4tnfrrqx24ac9md1lyrvpt1ure36xi92duu8vdelv1pmw3df87a5tiqrfrkm7ylgus9fsdg8sn3/git/blobs/6trdkg8s06deh1jacu9sz9rzg7lu4agplkzyzgcibv96y7m04e2rcm6gwczhrfjcrz2auoqbtqpqs1mp1ery3pidzpevpswsxo7x", + "method": "GET" + }, + "response": { + "status": 403, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/137673\",\n \"message\" : \"Nemo quia veniam nostrum mollitia qui dolores rerum. Exercitationem quae odio aut error ut amet eius. Sit velit voluptatibus ut et neque rerum. Facere ut sed quam quas cumque aut vero. Quaerat velit i\",\n \"url\" : \"https://web.example.mocklab.io/030496\",\n \"status\" : \"cocwwvbdhbj47q5ujixcupd67ilkh7skvq05haj1cncjd5hzifzno842jju7t1k108iuai6zxr\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "fe11332f-1236-4a71-9d1e-30ff2971d225", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.015791Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "git/get-blob", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 692 + }, + { + "id": "7e0cbd2a-741f-4c3e-b86a-676170f98a19", + "name": "Get a blob - default", + "request": { + "urlPath": "/repos/4cpae4e1z7iyeop4i6ebp1ao4/nypx50se8kme31ji7ok8jydn3grk/git/blobs/r587hjbl9go35upz6jqf8kpqsjcxaluw9kjwkcvd20306s1ytkqyy4d56qi5kw0njvs5uvcslydrkzyj1n9mamnrggwzm4pywv8pxmh9v6e6bcclv890hvgf7ico7kq8yfd1kqnhcvulz7skqo9fdk4li3dfvr6da4s1n8dqv5cugdy", + "method": "GET" + }, + "response": { + "status": 200, + "body": "{\n \"content\" : \"Q29udGVudCBvZiB0aGUgYmxvYg==\",\n \"encoding\" : \"base64\",\n \"node_id\" : \"Q29udGVudCBvZiB0aGUgYmxvYg==\",\n \"sha\" : \"3a0f86fb8db8eea7ccbb9a95f325ddbedfb25e15\",\n \"size\" : 19,\n \"url\" : \"https://api.github.com/repos/octocat/example/git/blobs/3a0f86fb8db8eea7ccbb9a95f325ddbedfb25e15\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "7e0cbd2a-741f-4c3e-b86a-676170f98a19", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.015551Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "git/get-blob", + "schema": { + "description": "Blob", + "properties": { + "content": { + "type": "string" + }, + "encoding": { + "type": "string" + }, + "highlighted_content": { + "type": "string" + }, + "node_id": { + "type": "string" + }, + "sha": { + "type": "string" + }, + "size": { + "nullable": true, + "type": "integer" + }, + "url": { + "format": "uri", + "type": "string" + } + }, + "required": ["sha", "url", "node_id", "size", "content", "encoding"], + "title": "Blob", + "type": "object" + } + } + } + }, + "insertionIndex": 693 + }, + { + "id": "b58fa446-fee0-42c0-9113-8d79758c2f1d", + "name": "Create a blob", + "request": { + "urlPath": "/repos/dximhanhxoot55evm/21ohmext0qr0r8wdz3u5y0n8pwamv2vtzqd8858h9xhtn6eog3asqud2duynmbemdd7896tac78vimrxk95da3br48u0awrn35hs1txcgqhmpx8f173wro62uuxngppk9d38clsidw0b3yhzssnacxmpnosikfah77tspv2ynvkxtqylyzlyq5zuf2e5/git/blobs", + "method": "POST" + }, + "response": { + "status": 422, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/087890\",\n \"message\" : \"In sint error. Vel minus placeat. Quaerat ab esse alias consequatur enim id. Sed est amet.\",\n \"errors\" : [ {\n \"code\" : \"fhmpr8ma5v58tqqpc7livz6pn1nadu2gxllq9vk4873w4g9axfjggg0khmrkprubj7fuq4yy46l1id5sl3kbdywppkw06lehpiqgwfdadk2t85mmesu32c83gm211d6tb8sqp0hnz46hodp9lvwc82571a15ltao0nzbx\",\n \"field\" : \"wbi1aexx043fpcbgnpqel2sv7pg8l4m5d0jgms7gu2gz0tz8f8k1jawhsofbijkrxrkcqpa70gei8gxu4v50epniws5faezk0fh7imnyjflwkfqhyxh3futhrc34sbap6\",\n \"resource\" : \"mb3rlbyzk9yd0e3wszzwg4tixrjf1qxizvlzomcxx9\",\n \"index\" : 2785820612931219864,\n \"message\" : \"Neque molestias aut deserunt cupiditate. At et beatae minus quas dolorem maiores delectus. Et incidunt qui.\",\n \"value\" : { }\n }, {\n \"code\" : \"grrihrlzyeni0q42t9bmdz10kckforz3fb5h6gpno18tikqzmmehbbsupaqwgbdny63o79pmwuxyiz1ks34itmiflsctpij9qiloxvyouukrtgip63bx1bz2o3gcqxrp29jf8x2kxtn\",\n \"field\" : \"33odg1yaqojcsreaqd4j2w4qunk7jbe3jla31aj2tvi1rkhdux6hm18lvn3am69o1cge6nkl999gyea1bwtd07zdy7gmqvcrdc9ph7t8\",\n \"resource\" : \"iy5yn8d3tn2nbvlxjxomr5bpt7zi9i3cul2xpdbwa4cbkheyzc2wm5h1rxi7cyk731unytsxieh5dnfg8xkz62qgj3lw4mqh0wou2br6y8keyj4ot0mtvbo2wryubspk3fj0t7klxnjbrk3uz4wv9gmmyyji4cexhec8bywggf4i9ridpj9mresl68573lw7xl3bc06\",\n \"index\" : 5047948216092297192,\n \"message\" : \"Explicabo iusto perspiciatis. Rerum sit officia ab corporis. Iste illo impedit.\",\n \"value\" : { }\n }, {\n \"code\" : \"ctlw9l6xxwxlpm04xvhmcevmxxfo0d294ek5dj1ki0e614kkk18hczedimc1mc7obv134buhhxohq5vg9azqsotlq9\",\n \"field\" : \"qk381mn48mku85zppk05t3ylxxqevc1c24tx5gkk3o04rjf25dz1dub1wf8azti4jsjof56qnsa7h9ip4iphhirdo1ycvlnbkthqu01gmdp92z6qxohudvx3bef3d24rzi43zv8ke0tyls1dalf8w8ypab8k\",\n \"resource\" : \"ap66sgaaxzhtollal15kpwnyya45zsozta1ydtcer3ez8oy8c2h561g1vumkndpy8hie7fph53fghxfev4p9192l73yie\",\n \"index\" : 8959228035182548873,\n \"message\" : \"Voluptatem distinctio in et. Quisquam quis quod. Sunt in mollitia laboriosam enim ratione soluta voluptatem. Neque eaque qui esse nesciunt esse aut fugiat.\",\n \"value\" : { }\n }, {\n \"code\" : \"xli0p3uvrfqd1u59fhp3nz53h69i3kernqv4pa4cglp1wbrn6nz398o26i0e386b06js6yoddn4iq6v16n3gf4ynpp5s7282c\",\n \"field\" : \"k3n4xs4xz6xjdktlka8hlhralhw33rrhvqvj1uutdobamlqvuivxpp9ymi\",\n \"resource\" : \"flfz2l28l14g4h20p7j8stg7ngqjjex7nsurcit2e99gjmoomlzl4gbsnjvs3mymxu0hiqtjysqrgnd734bxauxhok125hb6ejo65xyvi7qiq\",\n \"index\" : 5123095866337868982,\n \"message\" : \"Voluptatem omnis nemo mollitia totam facilis vel perferendis. Hic quae quos in odit commodi distinctio expedita. Et sed dolores id. Distinctio qui eaque dolores quia. Dolore tempora corporis nulla iur\",\n \"value\" : { }\n }, {\n \"code\" : \"h3hb5kyjs0hlhw31u859luvf4kbnan2bhdy19ejtb6g9j6j1cuh7xkvs1cl1pdxuujdpe1n6bliajkle4y0cgfbmhw3mysgq251sjgsq0axpgtazlcl7cjap0u5zfgsoecp0sl611cflyu1kx4y1fr08hgv8jv\",\n \"field\" : \"pvg4ojvy8xzb3lclbp5ow3b94ab51sa4hsyl6xk6h3b2xcvnm857cirf2q7n7vvh5m9w4exl67cc19atz6dbfgh376cqmnvs7cudoz12rgcdwp7iku76h24fi6oe1fph8onf6mpho\",\n \"resource\" : \"65fr2vncn0mq2bnehpt4h8n9wjqtt9am0evpalj6p927sgjur870uprrsvaxvqo3udscwvlakl7324dum0793skqnthem8c2ob8i0w2wo12m3hcwnt008bpxpcz7q1memfw1nrw9oltnfupim68c9kbdpt4p3r5372cisiiw9\",\n \"index\" : 715205582796812397,\n \"message\" : \"Ipsam in quia quo non veritatis. At tenetur ipsam ab voluptas quia aperiam. Omnis non hic. Placeat autem minima nobis libero et enim magnam. Culpa cum quos rerum necessitatibus nemo ut.\",\n \"value\" : { }\n } ]\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "b58fa446-fee0-42c0-9113-8d79758c2f1d", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.015434Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "git/create-blob", + "schema": { + "description": "Validation Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "errors": { + "items": { + "properties": { + "code": { + "type": "string" + }, + "field": { + "type": "string" + }, + "index": { + "type": "integer" + }, + "message": { + "type": "string" + }, + "resource": { + "type": "string" + }, + "value": { + "oneOf": [ + { + "nullable": true, + "type": "string" + }, + { + "nullable": true, + "type": "integer" + }, + { + "items": { + "type": "string" + }, + "nullable": true, + "type": "array" + } + ] + } + }, + "required": ["code"], + "type": "object" + }, + "type": "array" + }, + "message": { + "type": "string" + } + }, + "required": ["message", "documentation_url"], + "title": "Validation Error", + "type": "object" + } + } + } + }, + "insertionIndex": 694 + }, + { + "id": "10df3e66-2bdf-4666-8c8f-31013f279e97", + "name": "Create a blob", + "request": { + "urlPath": "/repos/g1od47adr1b5/mulv05x4q9n5vfildo2xio31x3ptk2cny81711ixm1wip6u8wwtw0i2gbycfhrtpijsr1fiifvytiq9imnqqnkrlt8rks8t3/git/blobs", + "method": "POST" + }, + "response": { + "status": 409, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/150785\",\n \"message\" : \"Saepe ut id officiis consequatur qui aliquid magni. Reiciendis at voluptate. Corrupti beatae molestiae quibusdam dolores quo omnis.\",\n \"url\" : \"https://web.example.mocklab.io/472924\",\n \"status\" : \"5eknijwymc81491cmgfudl7iyebh2mbzz5fxh78gdatj4ggrv29rvazw4v1bgj93trtavbuj68q2wv1zkxojqtvhtzyp89vu1beo9dhqhynndm9ivopkbwvczc112\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "10df3e66-2bdf-4666-8c8f-31013f279e97", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.014811Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "git/create-blob", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 695 + }, + { + "id": "b253176a-a911-43a8-948c-4a660284daea", + "name": "Create a blob", + "request": { + "urlPath": "/repos/3rvgoe1apt31o05jn3vx8kl7xf1u70dbnok2lm0459augopgrhq9g3y5e6qawd3s1wylxoz30x2w9v7ggkffxtcgx0yxevtpajjbhc7lsxvhqo2vu9eeovia5ga/j8f8p7lqk2v15bgwx93bf9vnur9wkf7ajevwxbymrczdyyv9hw2en168yw9iam978zj0ndo9w6cmyg568w4c05o3y3cg10cyra4ufkz44nuqx5ycvttq0c5nm873in3j71p0t0gay9vs7/git/blobs", + "method": "POST" + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/941509\",\n \"message\" : \"Error facilis sint. Et iste magni quidem modi esse enim. Reprehenderit sapiente molestiae eaque. Quaerat fuga cum qui.\",\n \"url\" : \"https://web.example.mocklab.io/767253\",\n \"status\" : \"uqqzfqv1v0sphq9xw2g9l4rttspa0zurlrsou5e6akk7agdlq4iy3jna2p8s2d68\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "b253176a-a911-43a8-948c-4a660284daea", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.014593Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "git/create-blob", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 696 + }, + { + "id": "b720a411-00d0-40a3-8222-0cc3e7e97205", + "name": "Create a blob", + "request": { + "urlPath": "/repos/uvu6nd0ayibrb7k4ajuwdysbqbj1we3qvz6d8uwqg4xmwiz7diktqzoam23dinpt5t85qvkvn86gn6u7u36yyts/1t5ugsw4ifl7c7zbagjilic9ybxwfu6mbad2ypsv7froxp78hqeqee8jg3n0bmzscagrekgqj82wq75w56bx7jtj0n8oioy00oz967nwvbdlb6fl1qxbyco4wyzcq00ahit4893xlz18fpum5wk0tbty2lw0bvyslx3g923i3/git/blobs", + "method": "POST" + }, + "response": { + "status": 403, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/005843\",\n \"message\" : \"Omnis omnis corporis. Minus id cumque magni exercitationem. Quo et ipsam quos vel voluptatum. Voluptatem voluptate et.\",\n \"url\" : \"https://web.example.mocklab.io/030878\",\n \"status\" : \"soi8vuub29ynqb03bktnjmwrd7tp2ch36v7q1dwpmbcs2y\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "b720a411-00d0-40a3-8222-0cc3e7e97205", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.014381Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "git/create-blob", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 697 + }, + { + "id": "58e141bb-3afb-4312-ae57-94504595e135", + "name": "Create a blob - default", + "request": { + "urlPath": "/repos/y3yjygwzcf0mvg1gtr4nj1mjcrbvnbaepnh9jxdyctntrdibxm98y107zdvyf1j8qfiisqu5zduhh8sgw83nbl92ur5sv70l1f1ful780unmcug7fc0kmzw8mhz92xk9xs21k0dwgp34oxx62zduwxln3ui4s7zljesh/e31n7dm8j5nmyyvb3avehj20rxbl8cjdr1opl3kd9395ezatezd2j6cbymdkbdrnj8rtfo4vnnoyj1r1xtnja0txv0u5a5ahz9nzducqp39bpsytey6r8vpxrufuv0ehafcu3gpdj17m3/git/blobs", + "method": "POST" + }, + "response": { + "status": 201, + "body": "{\n \"sha\" : \"3a0f86fb8db8eea7ccbb9a95f325ddbedfb25e15\",\n \"url\" : \"https://api.github.com/repos/octocat/example/git/blobs/3a0f86fb8db8eea7ccbb9a95f325ddbedfb25e15\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "58e141bb-3afb-4312-ae57-94504595e135", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.014159Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "git/create-blob", + "schema": { + "description": "Short Blob", + "properties": { + "sha": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "required": ["url", "sha"], + "title": "Short Blob", + "type": "object" + } + } + } + }, + "insertionIndex": 698 + }, + { + "id": "e715628a-1d4b-468b-8ef1-af06afdd6955", + "name": "Create a fork (application/json)", + "request": { + "urlPath": "/repos/lr93ceavofqj1ktxe3ycutkzo6mvrewhs1c3ur24xzw8b5eqk76v8t5sv5nbcic7ri70ebg33nmccmnbgt9w6ih6sqnru1mmd9uwzicop2h2l8g6piuqcsbcwtv5uqqb3mm1nw34sl6n1xz59l843z4/844lfimtrs9kjxmw1urn4m94w6b7p6qno7odm0enrgic8m24ur9lgqggzmxh55wxvc5yse62jk5ak34awub28zibpvrfladf1dssr0imn8w/forks", + "method": "POST", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 422, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/305592\",\n \"message\" : \"Quasi suscipit est vel quaerat ut esse. Aut esse libero eius consequatur. Voluptatum recusandae inventore ex dolorem consequatur iusto. Tenetur sed aut quod delectus quae.\",\n \"errors\" : [ {\n \"code\" : \"ym8m0ae8eqtpem5ngucr503787jiltl35msaywoyzsli82x3kejegoxwudhdqw4jpfjcrncrnn5mf6o011859v3usfp334k1mtruxg5fppjhu4z40bel1f1d76glr1u5hw5drbhqdqlk3dcgg4m69ek5a5yq5bcbet88ono0wofn045li1c30x76acq7zt83rzagxaw2\",\n \"field\" : \"8zbyryddq0c0ocs1po1bbo4kg586oo9bbeaz05io1x2q6sm\",\n \"resource\" : \"iu4uy2ez65y8yu4yivif0y92ok13lyaoyo83e1ee00bx0g5q3bvq2pe\",\n \"index\" : 6255993690925346306,\n \"message\" : \"Aut numquam culpa accusamus qui alias. Impedit et animi nihil rerum. Rerum libero aut non rerum aut non voluptas.\",\n \"value\" : { }\n } ]\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "e715628a-1d4b-468b-8ef1-af06afdd6955", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.014075Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/create-fork", + "schema": { + "description": "Validation Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "errors": { + "items": { + "properties": { + "code": { + "type": "string" + }, + "field": { + "type": "string" + }, + "index": { + "type": "integer" + }, + "message": { + "type": "string" + }, + "resource": { + "type": "string" + }, + "value": { + "oneOf": [ + { + "nullable": true, + "type": "string" + }, + { + "nullable": true, + "type": "integer" + }, + { + "items": { + "type": "string" + }, + "nullable": true, + "type": "array" + } + ] + } + }, + "required": ["code"], + "type": "object" + }, + "type": "array" + }, + "message": { + "type": "string" + } + }, + "required": ["message", "documentation_url"], + "title": "Validation Error", + "type": "object" + } + } + } + }, + "insertionIndex": 699 + }, + { + "id": "eb354093-afb8-448a-a265-a78a2fa80266", + "name": "Create a fork (application/json)", + "request": { + "urlPath": "/repos/6xzj886j956b5v37z4weuj6xbcpyqodc51v3000g0i5gnlr209q6kvcvsp6hz3h64b0gmlj0oythbjs/ixr3pw7gcehkqpzux8n4rrrzizc1jpd1kt89t0j4xfpe77st83n9t9wclmnhd3zwx4rzedunrkgtcfkghnm9pemzulk/forks", + "method": "POST", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/372939\",\n \"message\" : \"Expedita molestiae et sed. Laudantium autem aspernatur ab inventore. Qui eveniet debitis sed asperiores ut. Sapiente quisquam voluptas. Hic et alias voluptas perspiciatis nulla et.\",\n \"url\" : \"https://web.example.mocklab.io/532573\",\n \"status\" : \"rgtzy5j9s4b6voukmeib9f3ds8z4qyeykggko0392qdbu0fk83p2gf3d8e77xb5nzzsr6y776\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "eb354093-afb8-448a-a265-a78a2fa80266", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.013735Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/create-fork", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 700 + }, + { + "id": "5a418765-3ab4-4bb7-a6dc-5bea67be0b9a", + "name": "Create a fork (application/json)", + "request": { + "urlPath": "/repos/9k676p8gl7tktxn4j8odqaxawhedp6qlfwx1hbtocxyprvafir2grfrveq1k0ru5bquklzyeqa8vvc385dcbbrxzqgai7le4qlr7edmlox1fy5bzp7csm4yafi4xakeskai3gly/o8ktb23ts6arhfny1qsgvqtaoixteeybhy51tj4g68igo25pj83iefj742kmb6hi5hbd5t8h888mzeda82up1ihc8vbutisneiz1dehc8qptqaxjez3f9jn6/forks", + "method": "POST", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 403, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/754851\",\n \"message\" : \"Odit exercitationem eveniet aut. Aut sint quae nobis quia. Quidem eum odio ut at unde recusandae in. Voluptas nemo quo et qui. Minus quod voluptatem quasi voluptatem aut.\",\n \"url\" : \"https://web.example.mocklab.io/624677\",\n \"status\" : \"39iw4bbxf1u7a7vodx7wnbhytun6f6f9co\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "5a418765-3ab4-4bb7-a6dc-5bea67be0b9a", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.013508Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/create-fork", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 701 + }, + { + "id": "178f7d14-a32c-476f-b13b-25cb73762f67", + "name": "Create a fork (application/scim+json)", + "request": { + "urlPath": "/repos/qye6jorakfrgj10qjl2284g5tlwoe1yl7t9yc5/8hjxyg1h58wuy7h21gm8reiuxrd3lk62sy3bwzt8jnullvrlw3z8igzy9dnpufnvzt2rsh0e1pcbzadocfjp5foe7cswpsideuypmbtqsfs046tqizkdocu23xcsxgu04mqlnvk4fwtcceubms3dzxcz/forks", + "method": "POST", + "headers": { + "Accept": { + "contains": "application/scim+json" + } + } + }, + "response": { + "status": 400, + "body": "{\n \"schemas\" : [ \"8nfbieopas9mnj37td8w6o6mg3c\", \"1s56bohk655fjvqg52kdag5nu88fiuxvlcj4h6p1ls6sywbkxnfn4gvm9w188akwvnh2lmjpo9cugo5ylwly1hrk5t1fm8l8bwfv9d9pqn83boyt7qeedvckifq4wvwjevrgifidznpetcw5sjl4cl\", \"lrx4peqyrabiif9g82rl8an6zmyzcf53p6pm9rgvtxev0apurlw577ziscetyktnnu0991kufe7q7yeoicd083oigu2m3lbplick0ce9mb03f8qv3cuh2qyg1u4njyqh23n8b38\", \"xz2obd59zanvz8hqdk3pwts8waf6a181p1gmbeuykuqgw0oas8j6n5cs7nf90i84043zaj2y8zozva31gniiydtlvx3qizbtmcfddiltpmviq7rkslk3jwc61erf9c17qxcli6lqiidr2enqi6hw8q1g9rfucypqqv6f5s4iexoz9c9\", \"edv7vnn3m379x7x970u6o6fprizncqq3fo88pkxpr\", \"znipsckwqzclvcspn5hfci7ydsoxrry07f4o7n3zrmwv48y5br62xnz\" ],\n \"scimType\" : \"v4nz3ftzre76tbcxkh8xd026r5v3y7x80reuhvote5vo2vm2ska9rgcv00p2e\",\n \"detail\" : \"8qnxs4k0a10iqgk1fyffl4fpxvj1khk8mljep3df684qf2fwc1mq59kjkbwu1zj5xocsdg4p4u5h8v5rf\",\n \"documentation_url\" : \"https://web.example.mocklab.io/066014\",\n \"message\" : \"Illo sed et vero fugiat in. Quo consequatur quae ipsa ducimus provident dignissimos cum. Consequatur sed fuga. Ullam doloribus reiciendis inventore aut quis veritatis.\",\n \"status\" : 3907252575608724579\n}", + "headers": { + "Content-Type": "application/scim+json" + } + }, + "uuid": "178f7d14-a32c-476f-b13b-25cb73762f67", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.013276Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/create-fork", + "schema": { + "description": "Scim Error", + "properties": { + "detail": { + "nullable": true, + "type": "string" + }, + "documentation_url": { + "nullable": true, + "type": "string" + }, + "message": { + "nullable": true, + "type": "string" + }, + "schemas": { + "items": { + "type": "string" + }, + "type": "array" + }, + "scimType": { + "nullable": true, + "type": "string" + }, + "status": { + "type": "integer" + } + }, + "title": "Scim Error", + "type": "object" + } + } + } + }, + "insertionIndex": 702 + }, + { + "id": "4de76b39-4dd8-4d44-9229-0667248cd868", + "name": "Create a fork (application/json)", + "request": { + "urlPath": "/repos/jcbv5bxqt54dvhf3zkmomeb5pp976zkp485n0glryzfn9ev5w/ifsun72i6btxsvlws8nlaeetdgq/forks", + "method": "POST", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 400, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/698145\",\n \"message\" : \"Modi nemo eos quis. Et voluptates velit et qui quia omnis. Fugit sunt nisi itaque.\",\n \"url\" : \"https://web.example.mocklab.io/547694\",\n \"status\" : \"wcawnpqhodeol46drmclqp3dgdthwxvs4m22vy3hmr01g3fz65w9tyn0husvylv4erc93wvpswacnfrplddzymgxdsl4zeoiwu5smn6v6xy\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "4de76b39-4dd8-4d44-9229-0667248cd868", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.013028Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/create-fork", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 703 + }, + { + "id": "6c8148ef-407d-4bc8-a422-101213929ca6", + "name": "Create a fork (application/json) - default", + "request": { + "urlPath": "/repos/nm0jed2ip5c8fbxw3sj96e52ojbl4k5caldcz02c7wqqkvstrkr44d7akxwsj3mfgbd780edazc0qecwtmgndsehzy8wdbme3owv1zyyr2jvhowfmdalhfbux5rc3wcv/q14opy5o6gu26j3sv9vj3fffh5pobp56zwad4pujebcsjdkx0hd1zjrkun79tjgjy6tcym97thnkbf6mt5upr/forks", + "method": "POST", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 202, + "body": "{\n \"allow_forking\" : true,\n \"allow_merge_commit\" : true,\n \"allow_rebase_merge\" : true,\n \"allow_squash_merge\" : true,\n \"anonymous_access_enabled\" : false,\n \"archive_url\" : \"https://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref}\",\n \"archived\" : false,\n \"assignees_url\" : \"https://api.github.com/repos/octocat/Hello-World/assignees{/user}\",\n \"blobs_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/blobs{/sha}\",\n \"branches_url\" : \"https://api.github.com/repos/octocat/Hello-World/branches{/branch}\",\n \"clone_url\" : \"https://github.com/octocat/Hello-World.git\",\n \"collaborators_url\" : \"https://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator}\",\n \"comments_url\" : \"https://api.github.com/repos/octocat/Hello-World/comments{/number}\",\n \"commits_url\" : \"https://api.github.com/repos/octocat/Hello-World/commits{/sha}\",\n \"compare_url\" : \"https://api.github.com/repos/octocat/Hello-World/compare/{base}...{head}\",\n \"contents_url\" : \"https://api.github.com/repos/octocat/Hello-World/contents/{+path}\",\n \"contributors_url\" : \"https://api.github.com/repos/octocat/Hello-World/contributors\",\n \"created_at\" : \"2011-01-26T19:01:12Z\",\n \"default_branch\" : \"master\",\n \"delete_branch_on_merge\" : true,\n \"deployments_url\" : \"https://api.github.com/repos/octocat/Hello-World/deployments\",\n \"description\" : \"This your first repo!\",\n \"disabled\" : false,\n \"downloads_url\" : \"https://api.github.com/repos/octocat/Hello-World/downloads\",\n \"events_url\" : \"https://api.github.com/repos/octocat/Hello-World/events\",\n \"fork\" : false,\n \"forks\" : 9,\n \"forks_count\" : 9,\n \"forks_url\" : \"https://api.github.com/repos/octocat/Hello-World/forks\",\n \"full_name\" : \"octocat/Hello-World\",\n \"git_commits_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/commits{/sha}\",\n \"git_refs_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/refs{/sha}\",\n \"git_tags_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/tags{/sha}\",\n \"git_url\" : \"git:github.com/octocat/Hello-World.git\",\n \"has_downloads\" : true,\n \"has_issues\" : true,\n \"has_pages\" : false,\n \"has_projects\" : true,\n \"has_wiki\" : true,\n \"homepage\" : \"https://github.com\",\n \"hooks_url\" : \"https://api.github.com/repos/octocat/Hello-World/hooks\",\n \"html_url\" : \"https://github.com/octocat/Hello-World\",\n \"id\" : 1296269,\n \"is_template\" : false,\n \"issue_comment_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/comments{/number}\",\n \"issue_events_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/events{/number}\",\n \"issues_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues{/number}\",\n \"keys_url\" : \"https://api.github.com/repos/octocat/Hello-World/keys{/key_id}\",\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World/labels{/name}\",\n \"languages_url\" : \"https://api.github.com/repos/octocat/Hello-World/languages\",\n \"license\" : {\n \"html_url\" : \"https://github.com/licenses/mit\",\n \"key\" : \"mit\",\n \"name\" : \"MIT License\",\n \"node_id\" : \"MDc6TGljZW5zZW1pdA==\",\n \"spdx_id\" : \"MIT\",\n \"url\" : \"https://api.github.com/licenses/mit\"\n },\n \"merges_url\" : \"https://api.github.com/repos/octocat/Hello-World/merges\",\n \"milestones_url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones{/number}\",\n \"mirror_url\" : \"git:git.example.com/octocat/Hello-World\",\n \"name\" : \"Hello-World\",\n \"network_count\" : 0,\n \"node_id\" : \"MDEwOlJlcG9zaXRvcnkxMjk2MjY5\",\n \"notifications_url\" : \"https://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating}\",\n \"open_issues\" : 0,\n \"open_issues_count\" : 0,\n \"organization\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"Organization\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"owner\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"parent\" : {\n \"allow_merge_commit\" : true,\n \"allow_rebase_merge\" : true,\n \"allow_squash_merge\" : true,\n \"anonymous_access_enabled\" : false,\n \"archive_url\" : \"https://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref}\",\n \"archived\" : false,\n \"assignees_url\" : \"https://api.github.com/repos/octocat/Hello-World/assignees{/user}\",\n \"blobs_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/blobs{/sha}\",\n \"branches_url\" : \"https://api.github.com/repos/octocat/Hello-World/branches{/branch}\",\n \"clone_url\" : \"https://github.com/octocat/Hello-World.git\",\n \"collaborators_url\" : \"https://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator}\",\n \"comments_url\" : \"https://api.github.com/repos/octocat/Hello-World/comments{/number}\",\n \"commits_url\" : \"https://api.github.com/repos/octocat/Hello-World/commits{/sha}\",\n \"compare_url\" : \"https://api.github.com/repos/octocat/Hello-World/compare/{base}...{head}\",\n \"contents_url\" : \"https://api.github.com/repos/octocat/Hello-World/contents/{+path}\",\n \"contributors_url\" : \"https://api.github.com/repos/octocat/Hello-World/contributors\",\n \"created_at\" : \"2011-01-26T19:01:12Z\",\n \"default_branch\" : \"master\",\n \"delete_branch_on_merge\" : true,\n \"deployments_url\" : \"https://api.github.com/repos/octocat/Hello-World/deployments\",\n \"description\" : \"This your first repo!\",\n \"disabled\" : false,\n \"downloads_url\" : \"https://api.github.com/repos/octocat/Hello-World/downloads\",\n \"events_url\" : \"https://api.github.com/repos/octocat/Hello-World/events\",\n \"fork\" : false,\n \"forks\" : 1,\n \"forks_count\" : 9,\n \"forks_url\" : \"https://api.github.com/repos/octocat/Hello-World/forks\",\n \"full_name\" : \"octocat/Hello-World\",\n \"git_commits_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/commits{/sha}\",\n \"git_refs_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/refs{/sha}\",\n \"git_tags_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/tags{/sha}\",\n \"git_url\" : \"git:github.com/octocat/Hello-World.git\",\n \"has_downloads\" : true,\n \"has_issues\" : true,\n \"has_pages\" : false,\n \"has_projects\" : true,\n \"has_wiki\" : true,\n \"homepage\" : \"https://github.com\",\n \"hooks_url\" : \"https://api.github.com/repos/octocat/Hello-World/hooks\",\n \"html_url\" : \"https://github.com/octocat/Hello-World\",\n \"id\" : 1296269,\n \"is_template\" : true,\n \"issue_comment_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/comments{/number}\",\n \"issue_events_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/events{/number}\",\n \"issues_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues{/number}\",\n \"keys_url\" : \"https://api.github.com/repos/octocat/Hello-World/keys{/key_id}\",\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World/labels{/name}\",\n \"languages_url\" : \"https://api.github.com/repos/octocat/Hello-World/languages\",\n \"license\" : {\n \"html_url\" : \"https://api.github.com/licenses/mit\",\n \"key\" : \"mit\",\n \"name\" : \"MIT License\",\n \"node_id\" : \"MDc6TGljZW5zZW1pdA==\",\n \"spdx_id\" : \"MIT\",\n \"url\" : \"https://api.github.com/licenses/mit\"\n },\n \"merges_url\" : \"https://api.github.com/repos/octocat/Hello-World/merges\",\n \"milestones_url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones{/number}\",\n \"mirror_url\" : \"git:git.example.com/octocat/Hello-World\",\n \"name\" : \"Hello-World\",\n \"network_count\" : 0,\n \"node_id\" : \"MDEwOlJlcG9zaXRvcnkxMjk2MjY5\",\n \"notifications_url\" : \"https://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating}\",\n \"open_issues\" : 1,\n \"open_issues_count\" : 0,\n \"owner\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"permissions\" : {\n \"admin\" : false,\n \"pull\" : true,\n \"push\" : false\n },\n \"private\" : false,\n \"pulls_url\" : \"https://api.github.com/repos/octocat/Hello-World/pulls{/number}\",\n \"pushed_at\" : \"2011-01-26T19:06:43Z\",\n \"releases_url\" : \"https://api.github.com/repos/octocat/Hello-World/releases{/id}\",\n \"size\" : 108,\n \"ssh_url\" : \"git@github.com:octocat/Hello-World.git\",\n \"stargazers_count\" : 80,\n \"stargazers_url\" : \"https://api.github.com/repos/octocat/Hello-World/stargazers\",\n \"statuses_url\" : \"https://api.github.com/repos/octocat/Hello-World/statuses/{sha}\",\n \"subscribers_count\" : 42,\n \"subscribers_url\" : \"https://api.github.com/repos/octocat/Hello-World/subscribers\",\n \"subscription_url\" : \"https://api.github.com/repos/octocat/Hello-World/subscription\",\n \"svn_url\" : \"https://svn.github.com/octocat/Hello-World\",\n \"tags_url\" : \"https://api.github.com/repos/octocat/Hello-World/tags\",\n \"teams_url\" : \"https://api.github.com/repos/octocat/Hello-World/teams\",\n \"topics\" : [ \"octocat\", \"atom\", \"electron\", \"api\" ],\n \"trees_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/trees{/sha}\",\n \"updated_at\" : \"2011-01-26T19:14:43Z\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World\",\n \"visibility\" : \"public\",\n \"watchers\" : 1,\n \"watchers_count\" : 80\n },\n \"permissions\" : {\n \"admin\" : false,\n \"pull\" : true,\n \"push\" : false\n },\n \"private\" : false,\n \"pulls_url\" : \"https://api.github.com/repos/octocat/Hello-World/pulls{/number}\",\n \"pushed_at\" : \"2011-01-26T19:06:43Z\",\n \"releases_url\" : \"https://api.github.com/repos/octocat/Hello-World/releases{/id}\",\n \"size\" : 108,\n \"source\" : {\n \"allow_merge_commit\" : true,\n \"allow_rebase_merge\" : true,\n \"allow_squash_merge\" : true,\n \"anonymous_access_enabled\" : false,\n \"archive_url\" : \"https://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref}\",\n \"archived\" : false,\n \"assignees_url\" : \"https://api.github.com/repos/octocat/Hello-World/assignees{/user}\",\n \"blobs_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/blobs{/sha}\",\n \"branches_url\" : \"https://api.github.com/repos/octocat/Hello-World/branches{/branch}\",\n \"clone_url\" : \"https://github.com/octocat/Hello-World.git\",\n \"collaborators_url\" : \"https://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator}\",\n \"comments_url\" : \"https://api.github.com/repos/octocat/Hello-World/comments{/number}\",\n \"commits_url\" : \"https://api.github.com/repos/octocat/Hello-World/commits{/sha}\",\n \"compare_url\" : \"https://api.github.com/repos/octocat/Hello-World/compare/{base}...{head}\",\n \"contents_url\" : \"https://api.github.com/repos/octocat/Hello-World/contents/{+path}\",\n \"contributors_url\" : \"https://api.github.com/repos/octocat/Hello-World/contributors\",\n \"created_at\" : \"2011-01-26T19:01:12Z\",\n \"default_branch\" : \"master\",\n \"delete_branch_on_merge\" : true,\n \"deployments_url\" : \"https://api.github.com/repos/octocat/Hello-World/deployments\",\n \"description\" : \"This your first repo!\",\n \"disabled\" : false,\n \"downloads_url\" : \"https://api.github.com/repos/octocat/Hello-World/downloads\",\n \"events_url\" : \"https://api.github.com/repos/octocat/Hello-World/events\",\n \"fork\" : false,\n \"forks\" : 1,\n \"forks_count\" : 9,\n \"forks_url\" : \"https://api.github.com/repos/octocat/Hello-World/forks\",\n \"full_name\" : \"octocat/Hello-World\",\n \"git_commits_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/commits{/sha}\",\n \"git_refs_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/refs{/sha}\",\n \"git_tags_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/tags{/sha}\",\n \"git_url\" : \"git:github.com/octocat/Hello-World.git\",\n \"has_downloads\" : true,\n \"has_issues\" : true,\n \"has_pages\" : false,\n \"has_projects\" : true,\n \"has_wiki\" : true,\n \"homepage\" : \"https://github.com\",\n \"hooks_url\" : \"https://api.github.com/repos/octocat/Hello-World/hooks\",\n \"html_url\" : \"https://github.com/octocat/Hello-World\",\n \"id\" : 1296269,\n \"is_template\" : true,\n \"issue_comment_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/comments{/number}\",\n \"issue_events_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/events{/number}\",\n \"issues_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues{/number}\",\n \"keys_url\" : \"https://api.github.com/repos/octocat/Hello-World/keys{/key_id}\",\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World/labels{/name}\",\n \"languages_url\" : \"https://api.github.com/repos/octocat/Hello-World/languages\",\n \"license\" : {\n \"html_url\" : \"https://api.github.com/licenses/mit\",\n \"key\" : \"mit\",\n \"name\" : \"MIT License\",\n \"node_id\" : \"MDc6TGljZW5zZW1pdA==\",\n \"spdx_id\" : \"MIT\",\n \"url\" : \"https://api.github.com/licenses/mit\"\n },\n \"merges_url\" : \"https://api.github.com/repos/octocat/Hello-World/merges\",\n \"milestones_url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones{/number}\",\n \"mirror_url\" : \"git:git.example.com/octocat/Hello-World\",\n \"name\" : \"Hello-World\",\n \"network_count\" : 0,\n \"node_id\" : \"MDEwOlJlcG9zaXRvcnkxMjk2MjY5\",\n \"notifications_url\" : \"https://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating}\",\n \"open_issues\" : 1,\n \"open_issues_count\" : 0,\n \"owner\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"permissions\" : {\n \"admin\" : false,\n \"pull\" : true,\n \"push\" : false\n },\n \"private\" : false,\n \"pulls_url\" : \"https://api.github.com/repos/octocat/Hello-World/pulls{/number}\",\n \"pushed_at\" : \"2011-01-26T19:06:43Z\",\n \"releases_url\" : \"https://api.github.com/repos/octocat/Hello-World/releases{/id}\",\n \"size\" : 108,\n \"ssh_url\" : \"git@github.com:octocat/Hello-World.git\",\n \"stargazers_count\" : 80,\n \"stargazers_url\" : \"https://api.github.com/repos/octocat/Hello-World/stargazers\",\n \"statuses_url\" : \"https://api.github.com/repos/octocat/Hello-World/statuses/{sha}\",\n \"subscribers_count\" : 42,\n \"subscribers_url\" : \"https://api.github.com/repos/octocat/Hello-World/subscribers\",\n \"subscription_url\" : \"https://api.github.com/repos/octocat/Hello-World/subscription\",\n \"svn_url\" : \"https://svn.github.com/octocat/Hello-World\",\n \"tags_url\" : \"https://api.github.com/repos/octocat/Hello-World/tags\",\n \"teams_url\" : \"https://api.github.com/repos/octocat/Hello-World/teams\",\n \"topics\" : [ \"octocat\", \"atom\", \"electron\", \"api\" ],\n \"trees_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/trees{/sha}\",\n \"updated_at\" : \"2011-01-26T19:14:43Z\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World\",\n \"visibility\" : \"public\",\n \"watchers\" : 1,\n \"watchers_count\" : 80\n },\n \"ssh_url\" : \"git@github.com:octocat/Hello-World.git\",\n \"stargazers_count\" : 80,\n \"stargazers_url\" : \"https://api.github.com/repos/octocat/Hello-World/stargazers\",\n \"statuses_url\" : \"https://api.github.com/repos/octocat/Hello-World/statuses/{sha}\",\n \"subscribers_count\" : 42,\n \"subscribers_url\" : \"https://api.github.com/repos/octocat/Hello-World/subscribers\",\n \"subscription_url\" : \"https://api.github.com/repos/octocat/Hello-World/subscription\",\n \"svn_url\" : \"https://svn.github.com/octocat/Hello-World\",\n \"tags_url\" : \"https://api.github.com/repos/octocat/Hello-World/tags\",\n \"teams_url\" : \"https://api.github.com/repos/octocat/Hello-World/teams\",\n \"template_repository\" : {\n \"allow_merge_commit\" : true,\n \"allow_rebase_merge\" : true,\n \"allow_squash_merge\" : true,\n \"archive_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/{archive_format}{/ref}\",\n \"archived\" : false,\n \"assignees_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/assignees{/user}\",\n \"blobs_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/git/blobs{/sha}\",\n \"branches_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/branches{/branch}\",\n \"clone_url\" : \"https://github.com/octocat/Hello-World-Template.git\",\n \"collaborators_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/collaborators{/collaborator}\",\n \"comments_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/comments{/number}\",\n \"commits_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/commits{/sha}\",\n \"compare_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/compare/{base}...{head}\",\n \"contents_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/contents/{+path}\",\n \"contributors_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/contributors\",\n \"created_at\" : \"2011-01-26T19:01:12Z\",\n \"default_branch\" : \"master\",\n \"delete_branch_on_merge\" : true,\n \"deployments_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/deployments\",\n \"description\" : \"This your first repo!\",\n \"disabled\" : false,\n \"downloads_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/downloads\",\n \"events_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/events\",\n \"fork\" : false,\n \"forks\" : 9,\n \"forks_count\" : 9,\n \"forks_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/forks\",\n \"full_name\" : \"octocat/Hello-World-Template\",\n \"git_commits_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/git/commits{/sha}\",\n \"git_refs_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/git/refs{/sha}\",\n \"git_tags_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/git/tags{/sha}\",\n \"git_url\" : \"git:github.com/octocat/Hello-World-Template.git\",\n \"has_downloads\" : true,\n \"has_issues\" : true,\n \"has_pages\" : false,\n \"has_projects\" : true,\n \"has_wiki\" : true,\n \"homepage\" : \"https://github.com\",\n \"hooks_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/hooks\",\n \"html_url\" : \"https://github.com/octocat/Hello-World-Template\",\n \"id\" : 1296269,\n \"is_template\" : true,\n \"issue_comment_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/issues/comments{/number}\",\n \"issue_events_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/issues/events{/number}\",\n \"issues_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/issues{/number}\",\n \"keys_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/keys{/key_id}\",\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/labels{/name}\",\n \"languages_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/languages\",\n \"license\" : {\n \"html_url\" : \"https://api.github.com/licenses/mit\",\n \"key\" : \"mit\",\n \"name\" : \"MIT License\",\n \"node_id\" : \"MDc6TGljZW5zZW1pdA==\",\n \"spdx_id\" : \"MIT\",\n \"url\" : \"https://api.github.com/licenses/mit\"\n },\n \"merges_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/merges\",\n \"milestones_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/milestones{/number}\",\n \"mirror_url\" : \"git:git.example.com/octocat/Hello-World-Template\",\n \"name\" : \"Hello-World-Template\",\n \"network_count\" : 0,\n \"node_id\" : \"MDEwOlJlcG9zaXRvcnkxMjk2MjY5\",\n \"notifications_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/notifications{?since,all,participating}\",\n \"open_issues\" : 0,\n \"open_issues_count\" : 0,\n \"owner\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"permissions\" : {\n \"admin\" : false,\n \"pull\" : true,\n \"push\" : false\n },\n \"private\" : false,\n \"pulls_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/pulls{/number}\",\n \"pushed_at\" : \"2011-01-26T19:06:43Z\",\n \"releases_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/releases{/id}\",\n \"size\" : 108,\n \"ssh_url\" : \"git@github.com:octocat/Hello-World-Template.git\",\n \"stargazers_count\" : 80,\n \"stargazers_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/stargazers\",\n \"statuses_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/statuses/{sha}\",\n \"subscribers_count\" : 42,\n \"subscribers_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/subscribers\",\n \"subscription_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/subscription\",\n \"svn_url\" : \"https://svn.github.com/octocat/Hello-World-Template\",\n \"tags_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/tags\",\n \"teams_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/teams\",\n \"temp_clone_token\" : \"ABTLWHOULUVAXGTRYU7OC2876QJ2O\",\n \"topics\" : [ \"octocat\", \"atom\", \"electron\", \"api\" ],\n \"trees_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/git/trees{/sha}\",\n \"updated_at\" : \"2011-01-26T19:14:43Z\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World-Template\",\n \"visibility\" : \"public\",\n \"watchers\" : 80,\n \"watchers_count\" : 80\n },\n \"topics\" : [ \"octocat\", \"atom\", \"electron\", \"api\" ],\n \"trees_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/trees{/sha}\",\n \"updated_at\" : \"2011-01-26T19:14:43Z\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World\",\n \"visibility\" : \"public\",\n \"watchers\" : 80,\n \"watchers_count\" : 80\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "6c8148ef-407d-4bc8-a422-101213929ca6", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.012746Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/create-fork", + "schema": { + "description": "Full Repository", + "properties": { + "allow_forking": { + "example": true, + "type": "boolean" + }, + "allow_merge_commit": { + "example": true, + "type": "boolean" + }, + "allow_rebase_merge": { + "example": true, + "type": "boolean" + }, + "allow_squash_merge": { + "example": true, + "type": "boolean" + }, + "anonymous_access_enabled": { + "default": true, + "description": "Whether anonymous git access is allowed.", + "type": "boolean" + }, + "archive_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref}", + "type": "string" + }, + "archived": { + "type": "boolean" + }, + "assignees_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/assignees{/user}", + "type": "string" + }, + "blobs_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/git/blobs{/sha}", + "type": "string" + }, + "branches_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/branches{/branch}", + "type": "string" + }, + "clone_url": { + "example": "https://github.com/octocat/Hello-World.git", + "type": "string" + }, + "code_of_conduct": { + "$ref": "#/components/schemas/code-of-conduct-simple" + }, + "collaborators_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator}", + "type": "string" + }, + "comments_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/comments{/number}", + "type": "string" + }, + "commits_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/commits{/sha}", + "type": "string" + }, + "compare_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/compare/{base}...{head}", + "type": "string" + }, + "contents_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/contents/{+path}", + "type": "string" + }, + "contributors_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/contributors", + "format": "uri", + "type": "string" + }, + "created_at": { + "example": "2011-01-26T19:01:12Z", + "format": "date-time", + "type": "string" + }, + "default_branch": { + "example": "master", + "type": "string" + }, + "delete_branch_on_merge": { + "example": false, + "type": "boolean" + }, + "deployments_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/deployments", + "format": "uri", + "type": "string" + }, + "description": { + "example": "This your first repo!", + "nullable": true, + "type": "string" + }, + "disabled": { + "description": "Returns whether or not this repository disabled.", + "type": "boolean" + }, + "downloads_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/downloads", + "format": "uri", + "type": "string" + }, + "events_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/events", + "format": "uri", + "type": "string" + }, + "fork": { + "type": "boolean" + }, + "forks": { + "type": "integer" + }, + "forks_count": { + "example": 9, + "type": "integer" + }, + "forks_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/forks", + "format": "uri", + "type": "string" + }, + "full_name": { + "example": "octocat/Hello-World", + "type": "string" + }, + "git_commits_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/git/commits{/sha}", + "type": "string" + }, + "git_refs_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/git/refs{/sha}", + "type": "string" + }, + "git_tags_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/git/tags{/sha}", + "type": "string" + }, + "git_url": { + "example": "git:github.com/octocat/Hello-World.git", + "type": "string" + }, + "has_downloads": { + "example": true, + "type": "boolean" + }, + "has_issues": { + "example": true, + "type": "boolean" + }, + "has_pages": { + "type": "boolean" + }, + "has_projects": { + "example": true, + "type": "boolean" + }, + "has_wiki": { + "example": true, + "type": "boolean" + }, + "homepage": { + "example": "https://github.com", + "format": "uri", + "nullable": true, + "type": "string" + }, + "hooks_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/hooks", + "format": "uri", + "type": "string" + }, + "html_url": { + "example": "https://github.com/octocat/Hello-World", + "format": "uri", + "type": "string" + }, + "id": { + "example": 1296269, + "type": "integer" + }, + "is_template": { + "example": true, + "type": "boolean" + }, + "issue_comment_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/issues/comments{/number}", + "type": "string" + }, + "issue_events_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/issues/events{/number}", + "type": "string" + }, + "issues_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/issues{/number}", + "type": "string" + }, + "keys_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/keys{/key_id}", + "type": "string" + }, + "labels_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/labels{/name}", + "type": "string" + }, + "language": { + "nullable": true, + "type": "string" + }, + "languages_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/languages", + "format": "uri", + "type": "string" + }, + "license": { + "$ref": "#/components/schemas/nullable-license-simple" + }, + "master_branch": { + "type": "string" + }, + "merges_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/merges", + "format": "uri", + "type": "string" + }, + "milestones_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/milestones{/number}", + "type": "string" + }, + "mirror_url": { + "example": "git:git.example.com/octocat/Hello-World", + "format": "uri", + "nullable": true, + "type": "string" + }, + "name": { + "example": "Hello-World", + "type": "string" + }, + "network_count": { + "example": 0, + "type": "integer" + }, + "node_id": { + "example": "MDEwOlJlcG9zaXRvcnkxMjk2MjY5", + "type": "string" + }, + "notifications_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating}", + "type": "string" + }, + "open_issues": { + "type": "integer" + }, + "open_issues_count": { + "example": 0, + "type": "integer" + }, + "organization": { + "$ref": "#/components/schemas/nullable-simple-user" + }, + "owner": { + "$ref": "#/components/schemas/simple-user" + }, + "parent": { + "$ref": "#/components/schemas/repository" + }, + "permissions": { + "properties": { + "admin": { + "type": "boolean" + }, + "maintain": { + "type": "boolean" + }, + "pull": { + "type": "boolean" + }, + "push": { + "type": "boolean" + }, + "triage": { + "type": "boolean" + } + }, + "required": ["admin", "pull", "push"], + "type": "object" + }, + "private": { + "type": "boolean" + }, + "pulls_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/pulls{/number}", + "type": "string" + }, + "pushed_at": { + "example": "2011-01-26T19:06:43Z", + "format": "date-time", + "type": "string" + }, + "releases_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/releases{/id}", + "type": "string" + }, + "size": { + "example": 108, + "type": "integer" + }, + "source": { + "$ref": "#/components/schemas/repository" + }, + "ssh_url": { + "example": "git@github.com:octocat/Hello-World.git", + "type": "string" + }, + "stargazers_count": { + "example": 80, + "type": "integer" + }, + "stargazers_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/stargazers", + "format": "uri", + "type": "string" + }, + "statuses_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/statuses/{sha}", + "type": "string" + }, + "subscribers_count": { + "example": 42, + "type": "integer" + }, + "subscribers_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/subscribers", + "format": "uri", + "type": "string" + }, + "subscription_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/subscription", + "format": "uri", + "type": "string" + }, + "svn_url": { + "example": "https://svn.github.com/octocat/Hello-World", + "format": "uri", + "type": "string" + }, + "tags_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/tags", + "format": "uri", + "type": "string" + }, + "teams_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/teams", + "format": "uri", + "type": "string" + }, + "template_repository": { + "$ref": "#/components/schemas/nullable-repository" + }, + "topics": { + "example": ["octocat", "atom", "electron", "API"], + "items": { + "type": "string" + }, + "type": "array" + }, + "trees_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/git/trees{/sha}", + "type": "string" + }, + "updated_at": { + "example": "2011-01-26T19:14:43Z", + "format": "date-time", + "type": "string" + }, + "url": { + "example": "https://api.github.com/repos/octocat/Hello-World", + "format": "uri", + "type": "string" + }, + "visibility": { + "description": "The repository visibility: public, private, or internal.", + "example": "public", + "type": "string" + }, + "watchers": { + "type": "integer" + }, + "watchers_count": { + "example": 80, + "type": "integer" + } + }, + "required": [ + "archive_url", + "assignees_url", + "blobs_url", + "branches_url", + "collaborators_url", + "comments_url", + "commits_url", + "compare_url", + "contents_url", + "contributors_url", + "deployments_url", + "description", + "downloads_url", + "events_url", + "fork", + "forks_url", + "full_name", + "git_commits_url", + "git_refs_url", + "git_tags_url", + "hooks_url", + "html_url", + "id", + "node_id", + "issue_comment_url", + "issue_events_url", + "issues_url", + "keys_url", + "labels_url", + "languages_url", + "merges_url", + "milestones_url", + "name", + "notifications_url", + "owner", + "private", + "pulls_url", + "releases_url", + "stargazers_url", + "statuses_url", + "subscribers_url", + "subscription_url", + "tags_url", + "teams_url", + "trees_url", + "url", + "clone_url", + "default_branch", + "forks", + "forks_count", + "git_url", + "has_downloads", + "has_issues", + "has_projects", + "has_wiki", + "has_pages", + "homepage", + "language", + "archived", + "disabled", + "mirror_url", + "open_issues", + "open_issues_count", + "license", + "pushed_at", + "size", + "ssh_url", + "stargazers_count", + "svn_url", + "watchers", + "watchers_count", + "created_at", + "updated_at", + "network_count", + "subscribers_count" + ], + "title": "Full Repository", + "type": "object" + } + } + } + }, + "insertionIndex": 704 + }, + { + "id": "3b4895b8-7c77-4482-bbc3-05bc881c0db7", + "name": "List forks (application/scim+json)", + "request": { + "urlPath": "/repos/n3kgfj7o9hl62k3tyhm624kusvmtmv7tz961ua5xsmmzx4a4yz09nakyts2kzen3rj7nzjossd26gu8vomkzmar2/gl6pfuznexdez1h3xh32bcgwgqijd4ls2vj07pt8ztm88a6v34ftnf051kyuem4e8a3jboriduuduerou5g1tuta/forks", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/scim+json" + } + } + }, + "response": { + "status": 400, + "body": "{\n \"schemas\" : [ \"fz6t6gud5a6cv4x79b71ko87x4khzgwn7uqfhpp2y1nqeywem3pawoav2di3sq92tv6cqtjnb42teks6eftoyput8nfb5uwgxvjkncpnzabwdnz4czkobja9jagu6r0ich1dt194znxghgqilwey79ozkm8czecephoocm912f5oouyxblm5mw74\", \"y2rgogdlv8lkd11p3l9q1cca2hpofkqz83wb5ghbkc0q56zaaxucpc35z02hci9\", \"xopumx2y2ja4uleq2el3ejsowp2x0sc5wdwe\", \"9amtd38erm6if7zo15pflg8twctkwrnv5siimm2olyij2473n1f002kd23u9g7wlq4b1ajkw8lhyl1g5kh8smx1\" ],\n \"scimType\" : \"vadxladvvesw7v9l3l2rmphqp22l0pemkgy2kzemcfhzqay\",\n \"detail\" : \"80qy829b5zuwzenvcnts09kzblt4553eh9bcbvhlk74fxaaqd9q0kqvhdiutiqrijvlgdmo42mps3t1tmu20psnb7gzvqwmzjw4cnfr52gssm\",\n \"documentation_url\" : \"https://web.example.mocklab.io/887530\",\n \"message\" : \"Dolore molestiae esse deleniti aut. Qui possimus iure ut dolores. Veniam culpa officia nesciunt voluptatem dolor quaerat fugit. Excepturi officia laudantium dolor neque accusamus.\",\n \"status\" : 4008740328554226068\n}", + "headers": { + "Content-Type": "application/scim+json" + } + }, + "uuid": "3b4895b8-7c77-4482-bbc3-05bc881c0db7", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.012041Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/list-forks", + "schema": { + "description": "Scim Error", + "properties": { + "detail": { + "nullable": true, + "type": "string" + }, + "documentation_url": { + "nullable": true, + "type": "string" + }, + "message": { + "nullable": true, + "type": "string" + }, + "schemas": { + "items": { + "type": "string" + }, + "type": "array" + }, + "scimType": { + "nullable": true, + "type": "string" + }, + "status": { + "type": "integer" + } + }, + "title": "Scim Error", + "type": "object" + } + } + } + }, + "insertionIndex": 705 + }, + { + "id": "fe675f32-3ce1-4c30-9db5-63e749a3c4b8", + "name": "List forks (application/json)", + "request": { + "urlPath": "/repos/0q43srwru292/3cw19hdrfhixfyiyffn39aggzu0ezusyswkc72idsbsbf0uagxd45e3bkjv7grwvj6us9u1xxoynr5gxqr8hnv2py8tc69l8/forks", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 400, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/231622\",\n \"message\" : \"Et quas accusamus et maxime corporis corporis. Aut asperiores a eos dolorum. Ipsa sit tempore temporibus. Culpa doloribus enim sed aut.\",\n \"url\" : \"https://web.example.mocklab.io/710123\",\n \"status\" : \"7ij8wfbntxiajmlossithfeac4nmy6wkp5wouu0ol2iniwz9piw65g8dyn691pqnpqb3xlxtypc1muljeocw4h0e647b0e2h4qyuhyc7lov7hrk9oe3syr1172xvr51\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "fe675f32-3ce1-4c30-9db5-63e749a3c4b8", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.011783Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/list-forks", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 706 + }, + { + "id": "2058f84b-e14a-4af4-be83-37c112b617eb", + "name": "List forks (application/json) - default", + "request": { + "urlPath": "/repos/mmx23nzazslzvvzxbet11rj1f/z23jywpdx/forks", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 200, + "body": "[ {\n \"anonymous_access_enabled\" : false,\n \"archive_url\" : \"https://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref}\",\n \"archived\" : false,\n \"assignees_url\" : \"https://api.github.com/repos/octocat/Hello-World/assignees{/user}\",\n \"blobs_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/blobs{/sha}\",\n \"branches_url\" : \"https://api.github.com/repos/octocat/Hello-World/branches{/branch}\",\n \"clone_url\" : \"https://github.com/octocat/Hello-World.git\",\n \"collaborators_url\" : \"https://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator}\",\n \"comments_url\" : \"https://api.github.com/repos/octocat/Hello-World/comments{/number}\",\n \"commits_url\" : \"https://api.github.com/repos/octocat/Hello-World/commits{/sha}\",\n \"compare_url\" : \"https://api.github.com/repos/octocat/Hello-World/compare/{base}...{head}\",\n \"contents_url\" : \"https://api.github.com/repos/octocat/Hello-World/contents/{+path}\",\n \"contributors_url\" : \"https://api.github.com/repos/octocat/Hello-World/contributors\",\n \"created_at\" : \"2011-01-26T19:01:12Z\",\n \"default_branch\" : \"master\",\n \"delete_branch_on_merge\" : true,\n \"deployments_url\" : \"https://api.github.com/repos/octocat/Hello-World/deployments\",\n \"description\" : \"This your first repo!\",\n \"disabled\" : false,\n \"downloads_url\" : \"https://api.github.com/repos/octocat/Hello-World/downloads\",\n \"events_url\" : \"https://api.github.com/repos/octocat/Hello-World/events\",\n \"fork\" : true,\n \"forks_count\" : 9,\n \"forks_url\" : \"https://api.github.com/repos/octocat/Hello-World/forks\",\n \"full_name\" : \"octocat/Hello-World\",\n \"git_commits_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/commits{/sha}\",\n \"git_refs_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/refs{/sha}\",\n \"git_tags_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/tags{/sha}\",\n \"git_url\" : \"git:github.com/octocat/Hello-World.git\",\n \"has_downloads\" : true,\n \"has_issues\" : true,\n \"has_pages\" : false,\n \"has_projects\" : true,\n \"has_wiki\" : true,\n \"homepage\" : \"https://github.com\",\n \"hooks_url\" : \"https://api.github.com/repos/octocat/Hello-World/hooks\",\n \"html_url\" : \"https://github.com/octocat/Hello-World\",\n \"id\" : 1296269,\n \"is_template\" : true,\n \"issue_comment_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/comments{/number}\",\n \"issue_events_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/events{/number}\",\n \"issues_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues{/number}\",\n \"keys_url\" : \"https://api.github.com/repos/octocat/Hello-World/keys{/key_id}\",\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World/labels{/name}\",\n \"languages_url\" : \"https://api.github.com/repos/octocat/Hello-World/languages\",\n \"license\" : {\n \"key\" : \"mit\",\n \"name\" : \"MIT License\",\n \"node_id\" : \"MDc6TGljZW5zZW1pdA==\",\n \"spdx_id\" : \"MIT\",\n \"url\" : \"https://api.github.com/licenses/mit\"\n },\n \"merges_url\" : \"https://api.github.com/repos/octocat/Hello-World/merges\",\n \"milestones_url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones{/number}\",\n \"mirror_url\" : \"git:git.example.com/octocat/Hello-World\",\n \"name\" : \"Hello-World\",\n \"network_count\" : 0,\n \"node_id\" : \"MDEwOlJlcG9zaXRvcnkxMjk2MjY5\",\n \"notifications_url\" : \"https://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating}\",\n \"open_issues_count\" : 0,\n \"owner\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"permissions\" : {\n \"admin\" : false,\n \"pull\" : true,\n \"push\" : false\n },\n \"private\" : false,\n \"pulls_url\" : \"https://api.github.com/repos/octocat/Hello-World/pulls{/number}\",\n \"pushed_at\" : \"2011-01-26T19:06:43Z\",\n \"releases_url\" : \"https://api.github.com/repos/octocat/Hello-World/releases{/id}\",\n \"size\" : 108,\n \"ssh_url\" : \"git@github.com:octocat/Hello-World.git\",\n \"stargazers_count\" : 80,\n \"stargazers_url\" : \"https://api.github.com/repos/octocat/Hello-World/stargazers\",\n \"statuses_url\" : \"https://api.github.com/repos/octocat/Hello-World/statuses/{sha}\",\n \"subscribers_count\" : 42,\n \"subscribers_url\" : \"https://api.github.com/repos/octocat/Hello-World/subscribers\",\n \"subscription_url\" : \"https://api.github.com/repos/octocat/Hello-World/subscription\",\n \"svn_url\" : \"https://svn.github.com/octocat/Hello-World\",\n \"tags_url\" : \"https://api.github.com/repos/octocat/Hello-World/tags\",\n \"teams_url\" : \"https://api.github.com/repos/octocat/Hello-World/teams\",\n \"topics\" : [ \"octocat\", \"atom\", \"electron\", \"api\" ],\n \"trees_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/trees{/sha}\",\n \"updated_at\" : \"2011-01-26T19:14:43Z\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World\",\n \"visibility\" : \"public\",\n \"watchers_count\" : 80\n} ]", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "2058f84b-e14a-4af4-be83-37c112b617eb", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.011468Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/list-forks", + "schema": { + "items": { + "$ref": "#/components/schemas/minimal-repository" + }, + "type": "array" + } + } + } + }, + "insertionIndex": 707 + }, + { + "id": "e2f781c7-c873-45d4-a0e2-288a2ee0f482", + "name": "List repository events", + "request": { + "urlPath": "/repos/udke6pujoywnagxkcvab2riw23khzn2tibo2vincws32qexb50ey7h97d42vnzyol0rxypgsg4pomsf7sgnmdaihstljw8edcijrwmy7mfi76yif19c4/47i31dh737el215j62ts2f2782nw3ss26rul3s8jw13u3vu0xm349a5hyay5asmwnlnf7nx8p9h4g62so6s1cis7xv9puj5j98t4m980sbe2455fn1obccjl/events", + "method": "GET" + }, + "response": { + "status": 200, + "body": "[ {\n \"actor\" : {\n \"display_login\" : \"at87w917f1gg5ktibvmdbz6c51uauvjpenpw\",\n \"avatar_url\" : \"https://s3.amazonaws.com/uifaces/faces/twitter/justinrob/128.jpg\",\n \"id\" : 767216149382532878,\n \"login\" : \"62tfi0h4ci4ow02cr4lvr4igrqf0zie465euzz92dmjd9qmueqvo0h9cuipbxe2eqffqv33rkz5c5ig0k6b0ddn5lpxfgej9vyucncet0enal81cl8mwrgsmfgu0eysscpjz9hy6dlcy9fv8spj8el0\",\n \"gravatar_id\" : \"j0zo\",\n \"url\" : \"https://web.example.mocklab.io/889662\"\n },\n \"public\" : true,\n \"org\" : {\n \"display_login\" : \"7k7z917vzhi5xvqghgcs08im6quo7lbxa2yi4008ayv6b7mct93ybb4rpi6d86fdx7j\",\n \"avatar_url\" : \"https://s3.amazonaws.com/uifaces/faces/twitter/gabrielrosser/128.jpg\",\n \"id\" : 7812897122681457581,\n \"login\" : \"7geqfk64rejauhhyl5jcgzgzjj6gxp08hmc49i\",\n \"gravatar_id\" : \"a400\",\n \"url\" : \"https://web.example.mocklab.io/629049\"\n },\n \"payload\" : {\n \"pages\" : [ {\n \"summary\" : \"Esse at perferendis. Consequatur sint voluptatibus amet id. In et reprehenderit optio animi vitae.\",\n \"html_url\" : \"https://web.example.mocklab.io/573365\",\n \"page_name\" : \"Emile McCullough\",\n \"action\" : \"q35cab1dws11qmffn4c47heyfenqhxmk5ag189k5mzbfjq6qapytugyryadm0lj3r36zhvakk\",\n \"title\" : \"Ipsum eligendi magnam.\",\n \"sha\" : \"gujl6l81ogegx42xul6wcvm2omv6erkxc4httmteepb6nep9fea9fxz4m3tukmd3zu45aiyv4z7ol4abesulihxq6q7lqslmmqhi8vz9bpl5d3r7e05vtnayxkbc9hdcgezrt7tkinq38mdp750sc\"\n }, {\n \"summary\" : \"Est quia hic ut ut sit. Sit expedita facilis. Eum ut perferendis vel repellendus doloremque pariatur quia. Pariatur eum odit at quis. Necessitatibus commodi magni iusto at.\",\n \"html_url\" : \"https://web.example.mocklab.io/993643\",\n \"page_name\" : \"Miss Hermine Daniel\",\n \"action\" : \"qi4va\",\n \"title\" : \"Vel dolorem sed dolorem non ducimus hic.\",\n \"sha\" : \"gbl09rm2s84ayd4sc6ahf4qmw9298upl31xzavzbizpkkly9nbuhs6omb8niemh3b1h6r3pn2g473nd2l3ffkuynt5jjoy9fwnosiwb1o9vf5xmu58yg7gtc32ib6lc55f0jmthqng70t6be4wbawh7agtorsfa4npvf3f7\"\n }, {\n \"summary\" : \"Aut impedit deleniti natus quo sequi. Qui rem culpa qui distinctio error magnam. Aliquid officiis nihil accusantium est accusantium et.\",\n \"html_url\" : \"https://web.example.mocklab.io/667275\",\n \"page_name\" : \"Jim Kirlin\",\n \"action\" : \"2q0krshzyobe3f8w\",\n \"title\" : \"Eaque sit odit in quam aut.\",\n \"sha\" : \"kqqyw7sj97e52rkihbg3tcgrd3yckzninpyzccwr0v7pmm8p3xuuqotkmirqyaylxnvhrwvmcipvk2kzzz7w0tmhhmz96ffmrzk9cb4vckwstxec1epjpcgbv0e1uuhxpmkvfxjy96boilc98a91bjyt0nje0b04zvdmsqp83g8zy0m41i2rwbsjvsovzu\"\n }, {\n \"summary\" : \"Quia rerum dolor quisquam minus consequatur. Voluptates fugiat voluptas tenetur minima recusandae assumenda. Laboriosam ea dolorem.\",\n \"html_url\" : \"https://web.example.mocklab.io/473459\",\n \"page_name\" : \"Stephan Kihn\",\n \"action\" : \"kgjvoh7jyb44xovgns0obdta412kha04isb75uz6j22i637oqajsn98cm1koa2ga79ysqtqtbv19zxoginjbt9awi8d0kcwenqhqx8az3ic\",\n \"title\" : \"Voluptas nobis est omnis tempore.\",\n \"sha\" : \"u4xi8dmsxt27zrd6bxucfnfolujc7jlzmiolxxmvi1j9xdu9nmj9zwvxzrhmg0s37brjcm9f35cyj23zivp3efql6hifyxh31xpm6w3gyf1brst2d8jae0m82d0wit9beaxc5uhenpu6n0kjsuz57wrhmmhrrx7u\"\n }, {\n \"summary\" : \"Quis ut iure nemo. Nemo quo ratione placeat consectetur natus. Rerum quo hic repudiandae libero. Est suscipit saepe neque.\",\n \"html_url\" : \"https://web.example.mocklab.io/250562\",\n \"page_name\" : \"Daniel Wiza\",\n \"action\" : \"vznzxctqlmnn2hp2ptuiutj6dqekma8lstvr3m4d8bxn0mzze0ufpflejha7n58f2t9og\",\n \"title\" : \"Commodi illum iusto deserunt modi est optio.\",\n \"sha\" : \"r3x9qbs4ywxxv9qh8s6bbjdr6xy0ywqeqa2rgclnof2ref56nbkcwecwz8a1ewha6qmbsagcg76g\"\n }, {\n \"summary\" : \"Ut ducimus quas amet animi ex doloribus. Reiciendis minima commodi quia doloribus. Non debitis ad provident laudantium. Necessitatibus saepe ipsum qui possimus.\",\n \"html_url\" : \"https://web.example.mocklab.io/117573\",\n \"page_name\" : \"Asa Lueilwitz\",\n \"action\" : \"ssdqrp0wuno33xj87gaorgexet50tutfn5gkctdagerw6s367n6029iappak2w4e9feidp9avjm2t6w619v\",\n \"title\" : \"Non natus deleniti et non.\",\n \"sha\" : \"23qmi02yhcb0ied9wcbh3lzp7iqheizepq4xw76\"\n }, {\n \"summary\" : \"Veniam eaque quis voluptatem maiores dolor dolores. Officia omnis expedita est repellat nemo veritatis. Rem quibusdam praesentium atque. Ipsa quisquam accusamus reiciendis natus aut.\",\n \"html_url\" : \"https://web.example.mocklab.io/222286\",\n \"page_name\" : \"Naida Keeling DVM\",\n \"action\" : \"rtjaaqlc9z1bc5h4ekk1m6\",\n \"title\" : \"Dolorem nihil temporibus iste illo aspernatur.\",\n \"sha\" : \"nk1k4bn6calfh2pawfjhyzhyq3pfhlv7jim0ese2hz7uvil0y78nzr0ucjygq3xyo1k1c3hb17oqffukvx9znl8w37gwxdrbjkklbf0ovbkrv3pk92lwhrnxu2vf874ksbu91joxxy7w51tue9acdkdwyc34qp44e4jt4lov8mtbcs3mu7r5b4hhrqf8u7kf6kx\"\n } ],\n \"issue\" : {\n \"body_html\" : \"n5b58z1ejg2d29aus9a59cki3\",\n \"body_text\" : \"n4ne7f53i3godtbssutm03prxoc68btz947d9eyynxrltomw6f3citlxyv0ba51ztiww10mxo3prjal51gk0sg6ig4gago3tw7im1kd0kbcii0cegxcdgvo8vqztb18f06t3e0rzk75tkp3loauk\",\n \"assignees\" : [ {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Heidy Pollich\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"t7cargyxui00uqfvio512acftx33n9wgv3\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n }, {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Dwayne Sawayn\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"8tchvaqo3v6zpxrl63t3iur8aldrxpat0ugy7g131w8mavdhwxmmz01sxkb0632vm6jv2fieidv2cizbh4o714ab4pvw686d05p95cw1crqv7hj\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n }, {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Mrs. Huey Hilpert\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"lr6w6tev86539bf19fqwedheazc39bhvq\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n }, {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Echo Brakus\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"qryn9986n57sw6wxqmxrc1n6e5xvu107tz6w34i8hc9lzsbqhtxasi4ceik6jzuqvjna5h9\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n } ],\n \"created_at\" : \"2011-04-22T13:33:48Z\",\n \"body\" : \"I'm having a problem with this.\",\n \"repository\" : {\n \"allow_forking\" : false,\n \"anonymous_access_enabled\" : false,\n \"is_template\" : true,\n \"stargazers_count\" : 80,\n \"pushed_at\" : \"2011-01-26T19:06:43Z\",\n \"language\" : \"wx11vjbxwfwfo80q6xfgyvumuei24twpd6moxg56k91boku1twhouvvemtiw8trjr67ivwm4dilkplwyuzh6rssj6mgt\",\n \"subscription_url\" : \"http://api.github.com/repos/octocat/Hello-World/subscription\",\n \"branches_url\" : \"http://api.github.com/repos/octocat/Hello-World/branches{/branch}\",\n \"allow_rebase_merge\" : true,\n \"issue_comment_url\" : \"http://api.github.com/repos/octocat/Hello-World/issues/comments{/number}\",\n \"labels_url\" : \"http://api.github.com/repos/octocat/Hello-World/labels{/name}\",\n \"permissions\" : {\n \"pull\" : true,\n \"maintain\" : false,\n \"admin\" : true,\n \"triage\" : false,\n \"push\" : false\n },\n \"subscribers_url\" : \"http://api.github.com/repos/octocat/Hello-World/subscribers\",\n \"releases_url\" : \"http://api.github.com/repos/octocat/Hello-World/releases{/id}\",\n \"svn_url\" : \"https://svn.github.com/octocat/Hello-World\",\n \"subscribers_count\" : 3060627413449058070,\n \"id\" : 42,\n \"master_branch\" : \"m0gte4csjt2vale0o3pt29j5byiwxh7s8okgwbeq2tg5eypv8ocbpjq3afi19k97kuvne5rsbcybrxbi08o6jtdiepswolo3whyfccxdmxtkxjxxzrruied96m9kie8mrq5bt9m8cp55ws1wxmna44caq0wmzcera3zdvf9bgytdo8dzvf4nj\",\n \"forks\" : 6349423279941400232,\n \"allow_merge_commit\" : true,\n \"archive_url\" : \"http://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref}\",\n \"git_refs_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/refs{/sha}\",\n \"forks_url\" : \"http://api.github.com/repos/octocat/Hello-World/forks\",\n \"visibility\" : \"xax4s0x49whk7uss7nmhjgr3vllko5jew2p7ynp7mbngqeyj2u0euiwqqbzaxgczb9h7qykhddy64p3ifiruxyqn8a3dcy316zk5xr9h7nqfxx0wd2s6863ftbrp9tn0\",\n \"statuses_url\" : \"http://api.github.com/repos/octocat/Hello-World/statuses/{sha}\",\n \"network_count\" : 6573265346315825711,\n \"ssh_url\" : \"git@github.com:octocat/Hello-World.git\",\n \"license\" : {\n \"html_url\" : \"https://web.example.mocklab.io/993216\",\n \"name\" : \"MIT License\",\n \"spdx_id\" : \"MIT\",\n \"key\" : \"mit\",\n \"url\" : \"https://api.github.com/licenses/mit\",\n \"node_id\" : \"MDc6TGljZW5zZW1pdA==\"\n },\n \"full_name\" : \"octocat/Hello-World\",\n \"size\" : 108,\n \"template_repository\" : {\n \"anonymous_access_enabled\" : true,\n \"is_template\" : false,\n \"stargazers_count\" : 9168392905897334520,\n \"pushed_at\" : \"4bb4yhirxcexd9rvhgas4qmkvyrbqzcofzkg91iqmnn4dmo7ncwy9889q67pgqujmflint2ex8ef507vsq\",\n \"language\" : \"1m1zgaeaglrvvwznavnb6jon3blas2meag9w22mdms6ogy4v48pq3fe3k40c3o0sxr5o887vc1u\",\n \"subscription_url\" : \"https://web.example.mocklab.io/211061\",\n \"branches_url\" : \"https://web.example.mocklab.io/886315\",\n \"allow_rebase_merge\" : true,\n \"issue_comment_url\" : \"https://web.example.mocklab.io/245508\",\n \"labels_url\" : \"https://web.example.mocklab.io/443148\",\n \"permissions\" : { },\n \"subscribers_url\" : \"https://web.example.mocklab.io/784562\",\n \"releases_url\" : \"https://web.example.mocklab.io/671448\",\n \"svn_url\" : \"https://web.example.mocklab.io/037619\",\n \"subscribers_count\" : 7901514132377566056,\n \"id\" : 1645751537686899473,\n \"allow_merge_commit\" : false,\n \"archive_url\" : \"https://web.example.mocklab.io/951367\",\n \"git_refs_url\" : \"https://web.example.mocklab.io/492026\",\n \"forks_url\" : \"https://web.example.mocklab.io/731144\",\n \"visibility\" : \"c2okr40n1w7vv3azl2l47x2weeycdd9zm28ak9gseb6ratpapucq3ftsnqvg19188w0xcx87wxex40cnanm4wexw7g7iyfs3x5kq1sdhb77ypmi0dx\",\n \"statuses_url\" : \"https://web.example.mocklab.io/965508\",\n \"network_count\" : 3010156240338178240,\n \"ssh_url\" : \"https://web.example.mocklab.io/357058\",\n \"full_name\" : \"Gene Morissette II\",\n \"size\" : 1326241437243803867,\n \"languages_url\" : \"https://web.example.mocklab.io/051262\",\n \"clone_url\" : \"https://web.example.mocklab.io/023606\",\n \"collaborators_url\" : \"https://web.example.mocklab.io/852672\",\n \"html_url\" : \"https://web.example.mocklab.io/122556\",\n \"name\" : \"Pierre Ferry\",\n \"pulls_url\" : \"https://web.example.mocklab.io/138544\",\n \"default_branch\" : \"32dhkc35k1k3wzvu7zqosas6z04s5ddp742oua13pvxhq8e3axf0kvm1iimjpxqs6ja6eacg676z0knhz2n917ruwhmx6ifa638zw4sp9m5mtolsafwrq0vcwlfhklzyli4\",\n \"hooks_url\" : \"https://web.example.mocklab.io/669778\",\n \"trees_url\" : \"https://web.example.mocklab.io/674542\",\n \"tags_url\" : \"https://web.example.mocklab.io/510351\",\n \"contributors_url\" : \"https://web.example.mocklab.io/928689\",\n \"private\" : true,\n \"has_downloads\" : true,\n \"notifications_url\" : \"https://web.example.mocklab.io/937732\",\n \"open_issues_count\" : 2687086849984806053,\n \"created_at\" : \"i2me04m2mc6alfytw8b6zaq5yk4\",\n \"description\" : \"Dignissimos doloremque dolorum omnis reprehenderit qui. Atque molestiae ea sint. Ea et accusantium totam quia id fugiat.\",\n \"deployments_url\" : \"https://web.example.mocklab.io/478163\",\n \"keys_url\" : \"https://web.example.mocklab.io/827695\",\n \"has_projects\" : true,\n \"archived\" : true,\n \"has_wiki\" : false,\n \"updated_at\" : \"2022-07-28T06:04:58.945247Z\",\n \"comments_url\" : \"https://web.example.mocklab.io/126928\",\n \"stargazers_url\" : \"https://web.example.mocklab.io/309884\",\n \"disabled\" : false,\n \"delete_branch_on_merge\" : false,\n \"git_url\" : \"https://web.example.mocklab.io/199983\",\n \"has_pages\" : true,\n \"owner\" : { },\n \"allow_squash_merge\" : true,\n \"commits_url\" : \"https://web.example.mocklab.io/100690\",\n \"compare_url\" : \"https://web.example.mocklab.io/470698\",\n \"git_commits_url\" : \"https://web.example.mocklab.io/752951\",\n \"topics\" : [ \"e1xtq0nlz0aungg94r9nzbwlm6z5y1lth8w3vcqzm1y8c9krsnxjmh86d875z16xkebq3fmajyz31ymno\" ],\n \"blobs_url\" : \"https://web.example.mocklab.io/204449\",\n \"git_tags_url\" : \"https://web.example.mocklab.io/022894\",\n \"merges_url\" : \"https://web.example.mocklab.io/705831\",\n \"downloads_url\" : \"https://web.example.mocklab.io/379799\",\n \"has_issues\" : false,\n \"url\" : \"https://web.example.mocklab.io/022824\",\n \"contents_url\" : \"https://web.example.mocklab.io/798824\",\n \"mirror_url\" : \"https://web.example.mocklab.io/220490\",\n \"milestones_url\" : \"https://web.example.mocklab.io/327830\",\n \"teams_url\" : \"https://web.example.mocklab.io/640076\",\n \"fork\" : true,\n \"issues_url\" : \"https://web.example.mocklab.io/084963\",\n \"events_url\" : \"https://web.example.mocklab.io/044217\",\n \"issue_events_url\" : \"https://web.example.mocklab.io/042771\",\n \"assignees_url\" : \"https://web.example.mocklab.io/496950\",\n \"watchers_count\" : 1491009514418880594,\n \"forks_count\" : 534511670903614854,\n \"homepage\" : \"dp8n\",\n \"node_id\" : \"s2v5\"\n },\n \"languages_url\" : \"http://api.github.com/repos/octocat/Hello-World/languages\",\n \"clone_url\" : \"https://github.com/octocat/Hello-World.git\",\n \"collaborators_url\" : \"http://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator}\",\n \"html_url\" : \"https://github.com/octocat/Hello-World\",\n \"name\" : \"Team Environment\",\n \"pulls_url\" : \"http://api.github.com/repos/octocat/Hello-World/pulls{/number}\",\n \"default_branch\" : \"master\",\n \"hooks_url\" : \"http://api.github.com/repos/octocat/Hello-World/hooks\",\n \"trees_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/trees{/sha}\",\n \"tags_url\" : \"http://api.github.com/repos/octocat/Hello-World/tags\",\n \"contributors_url\" : \"http://api.github.com/repos/octocat/Hello-World/contributors\",\n \"private\" : true,\n \"has_downloads\" : true,\n \"notifications_url\" : \"http://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating}\",\n \"open_issues_count\" : 0,\n \"created_at\" : \"2011-01-26T19:01:12Z\",\n \"description\" : \"This your first repo!\",\n \"watchers\" : 757077877491244277,\n \"deployments_url\" : \"http://api.github.com/repos/octocat/Hello-World/deployments\",\n \"keys_url\" : \"http://api.github.com/repos/octocat/Hello-World/keys{/key_id}\",\n \"has_projects\" : true,\n \"archived\" : true,\n \"has_wiki\" : true,\n \"updated_at\" : \"2011-01-26T19:14:43Z\",\n \"comments_url\" : \"http://api.github.com/repos/octocat/Hello-World/comments{/number}\",\n \"stargazers_url\" : \"http://api.github.com/repos/octocat/Hello-World/stargazers\",\n \"disabled\" : false,\n \"delete_branch_on_merge\" : false,\n \"git_url\" : \"git:github.com/octocat/Hello-World.git\",\n \"has_pages\" : true,\n \"owner\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Carlee Labadie PhD\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"3lofedw0b9ohbj2u5l8j87vo7ulp5s5kg983hunues4t113v98h3a3mwu6rgjeu1pkjwwdq07\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"allow_squash_merge\" : true,\n \"commits_url\" : \"http://api.github.com/repos/octocat/Hello-World/commits{/sha}\",\n \"compare_url\" : \"http://api.github.com/repos/octocat/Hello-World/compare/{base}...{head}\",\n \"git_commits_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/commits{/sha}\",\n \"topics\" : [ \"nv5law7ko87tujrg5hjpj8ds9wrwgxma5pzh5g9oa56oaqzcirvcmu45cff6aruop97w0ofqnywnzfx4fblnz5fec3ouj7inohix5weg7felxw4kgf26gawkdqnbw\", \"2cy7d3pzi4heh575nnyevij60k0e8kjjudhrc9925gnbfobkpmnk48irsi6tmddlc38aholbfpnqrb87swrvpq49h1h\", \"vd1lb2set0riqgrliq4ppqv306ee59ojmf932sxih71011yr36vltgrk7tn9kgil6auye29lmsyd6mxmyl9ljn38tptocxfmieufwwnxukmsasjqdvbkl8kl79\", \"xfdh942l6yo172rx4s95tvzu91hn9e2akzre6xjmtlog2qtstnrtfy7ntimzliwwyzy22s7wwtbyclnqqh5pmqzzb6nkzwu9vf4btyhjmhkfybwlvk3yy\", \"z5fiel5aw3ww3zjg2dtfl8nghqo3qf2kvb9h8net5oehqu15z8ior6ha69ku0q3c4lypmd1e6pxsfre5nppc723nrefq5ido8j02p8z0tk5dxqf7r5q3qwif621x1ctqaoychqccnrakkpr8nyupnoh8d5id9xbbelk7s9v2tz0h92vcf8cfr35rh\" ],\n \"blobs_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/blobs{/sha}\",\n \"git_tags_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/tags{/sha}\",\n \"merges_url\" : \"http://api.github.com/repos/octocat/Hello-World/merges\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:42Z\\\"\",\n \"downloads_url\" : \"http://api.github.com/repos/octocat/Hello-World/downloads\",\n \"has_issues\" : true,\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World\",\n \"contents_url\" : \"http://api.github.com/repos/octocat/Hello-World/contents/{+path}\",\n \"mirror_url\" : \"git:git.example.com/octocat/Hello-World\",\n \"milestones_url\" : \"http://api.github.com/repos/octocat/Hello-World/milestones{/number}\",\n \"teams_url\" : \"http://api.github.com/repos/octocat/Hello-World/teams\",\n \"fork\" : true,\n \"issues_url\" : \"http://api.github.com/repos/octocat/Hello-World/issues{/number}\",\n \"events_url\" : \"http://api.github.com/repos/octocat/Hello-World/events\",\n \"issue_events_url\" : \"http://api.github.com/repos/octocat/Hello-World/issues/events{/number}\",\n \"organization\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Miss Marcelino Jenkins\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"4kjb4q7w1rqty9dnshlhmc60ipbdjgh5ypmuuoh0wefrrm0h1tlo0bils2p0ya94lw8cctgvt2ap6q3vfca4bmu3mztt45rhl4evmse2p9p2hkskj699p5jrlpf4p0poz5bagwmzwf8ntxtub7qa0873oj5o98x\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"assignees_url\" : \"http://api.github.com/repos/octocat/Hello-World/assignees{/user}\",\n \"open_issues\" : 4460450382609408126,\n \"watchers_count\" : 80,\n \"forks_count\" : 9,\n \"homepage\" : \"https://github.com\",\n \"node_id\" : \"MDEwOlJlcG9zaXRvcnkxMjk2MjY5\"\n },\n \"title\" : \"Found a bug\",\n \"author_association\" : \"OWNER\",\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347/labels{/name}\",\n \"number\" : 1347,\n \"performed_via_github_app\" : {\n \"owner\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Nicholle Kshlerin Jr.\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"ci9mdxfq07ycao3dtjgbwd1mjjeydshgljqkw2qddxe59\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"installations_count\" : 5,\n \"created_at\" : \"2017-07-08T16:18:44-04:00\",\n \"description\" : \"The description of the app.\",\n \"client_id\" : \"\\\"Iv1.25b5d1e65ffc4022\\\"\",\n \"external_url\" : \"https://example.com\",\n \"updated_at\" : \"2017-07-08T16:18:44-04:00\",\n \"permissions\" : {\n \"deployments\" : \"write\",\n \"issues\" : \"read\"\n },\n \"html_url\" : \"https://github.com/apps/super-ci\",\n \"name\" : \"Probot Owners\",\n \"pem\" : \"\\\"-----BEGIN RSA PRIVATE KEY-----\\\\nMIIEogIBAAKCAQEArYxrNYD/iT5CZVpRJu4rBKmmze3PVmT/gCo2ATUvDvZTPTey\\\\nxcGJ3vvrJXazKk06pN05TN29o98jrYz4cengG3YGsXPNEpKsIrEl8NhbnxapEnM9\\\\nJCMRe0P5JcPsfZlX6hmiT7136GRWiGOUba2X9+HKh8QJVLG5rM007TBER9/z9mWm\\\\nrJuNh+m5l320oBQY/Qq3A7wzdEfZw8qm/mIN0FCeoXH1L6B8xXWaAYBwhTEh6SSn\\\\nZHlO1Xu1JWDmAvBCi0RO5aRSKM8q9QEkvvHP4yweAtK3N8+aAbZ7ovaDhyGz8r6r\\\\nzhU1b8Uo0Z2ysf503WqzQgIajr7Fry7/kUwpgQIDAQABAoIBADwJp80Ko1xHPZDy\\\\nfcCKBDfIuPvkmSW6KumbsLMaQv1aGdHDwwTGv3t0ixSay8CGlxMRtRDyZPib6SvQ\\\\n6OH/lpfpbMdW2ErkksgtoIKBVrDilfrcAvrNZu7NxRNbhCSvN8q0s4ICecjbbVQh\\\\nnueSdlA6vGXbW58BHMq68uRbHkP+k+mM9U0mDJ1HMch67wlg5GbayVRt63H7R2+r\\\\nVxcna7B80J/lCEjIYZznawgiTvp3MSanTglqAYi+m1EcSsP14bJIB9vgaxS79kTu\\\\noiSo93leJbBvuGo8QEiUqTwMw4tDksmkLsoqNKQ1q9P7LZ9DGcujtPy4EZsamSJT\\\\ny8OJt0ECgYEA2lxOxJsQk2kI325JgKFjo92mQeUObIvPfSNWUIZQDTjniOI6Gv63\\\\nGLWVFrZcvQBWjMEQraJA9xjPbblV8PtfO87MiJGLWCHFxmPz2dzoedN+2Coxom8m\\\\nV95CLz8QUShuao6u/RYcvUaZEoYs5bHcTmy5sBK80JyEmafJPtCQVxMCgYEAy3ar\\\\nZr3yv4xRPEPMat4rseswmuMooSaK3SKub19WFI5IAtB/e7qR1Rj9JhOGcZz+OQrl\\\\nT78O2OFYlgOIkJPvRMrPpK5V9lslc7tz1FSh3BZMRGq5jSyD7ETSOQ0c8T2O/s7v\\\\nbeEPbVbDe4mwvM24XByH0GnWveVxaDl51ABD65sCgYB3ZAspUkOA5egVCh8kNpnd\\\\nSd6SnuQBE3ySRlT2WEnCwP9Ph6oPgn+oAfiPX4xbRqkL8q/k0BdHQ4h+zNwhk7+h\\\\nWtPYRAP1Xxnc/F+jGjb+DVaIaKGU18MWPg7f+FI6nampl3Q0KvfxwX0GdNhtio8T\\\\nTj1E+SnFwh56SRQuxSh2gwKBgHKjlIO5NtNSflsUYFM+hyQiPiqnHzddfhSG+/3o\\\\nm5nNaSmczJesUYreH5San7/YEy2UxAugvP7aSY2MxB+iGsiJ9WD2kZzTUlDZJ7RV\\\\nUzWsoqBR+eZfVJ2FUWWvy8TpSG6trh4dFxImNtKejCR1TREpSiTV3Zb1dmahK9GV\\\\nrK9NAoGAbBxRLoC01xfxCTgt5BDiBcFVh4fp5yYKwavJPLzHSpuDOrrI9jDn1oKN\\\\nonq5sDU1i391zfQvdrbX4Ova48BN+B7p63FocP/MK5tyyBoT8zQEk2+vWDOw7H/Z\\\\nu5dTCPxTIsoIwUw1I+7yIxqJzLPFgR2gVBwY1ra/8iAqCj+zeBw=\\\\n-----END RSA PRIVATE KEY-----\\\\n\\\"\",\n \"webhook_secret\" : \"\\\"6fba8f2fc8a7e8f2cca5577eddd82ca7586b3b6b\\\"\",\n \"client_secret\" : \"\\\"1d4b2097ac622ba702d19de498f005747a8b21d3\\\"\",\n \"id\" : 37,\n \"events\" : [ \"label\", \"deployment\" ],\n \"slug\" : \"probot-owners\",\n \"node_id\" : \"MDExOkludGVncmF0aW9uMQ==\"\n },\n \"updated_at\" : \"2011-04-22T13:33:48Z\",\n \"comments_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347/comments\",\n \"active_lock_reason\" : \"too heated\",\n \"id\" : 1,\n \"repository_url\" : \"https://api.github.com/repos/octocat/Hello-World\",\n \"state\" : \"open\",\n \"locked\" : true,\n \"timeline_url\" : \"https://web.example.mocklab.io/712410\",\n \"pull_request\" : {\n \"patch_url\" : \"https://web.example.mocklab.io/830733\",\n \"html_url\" : \"https://web.example.mocklab.io/933654\",\n \"merged_at\" : \"2023-01-22T13:35:54.947Z\",\n \"diff_url\" : \"https://web.example.mocklab.io/692286\",\n \"url\" : \"https://web.example.mocklab.io/204500\"\n },\n \"closed_at\" : \"2022-05-18T00:17:01.948Z\",\n \"comments\" : 0,\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347\",\n \"labels\" : [ {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n }, {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n }, {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n }, {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n } ],\n \"milestone\" : {\n \"creator\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Ashley Botsford\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"qw9y8n5q9b3o5o8won60ed2qpr\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"closed_at\" : \"2013-02-12T13:22:01Z\",\n \"created_at\" : \"2011-04-10T20:09:31Z\",\n \"description\" : \"Tracking milestone for version 1.0\",\n \"closed_issues\" : 8,\n \"title\" : \"v1.0\",\n \"due_on\" : \"2012-10-09T23:39:01Z\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones/1\",\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones/1/labels\",\n \"number\" : 42,\n \"updated_at\" : \"2014-03-03T18:58:10Z\",\n \"html_url\" : \"https://github.com/octocat/Hello-World/milestones/v1.0\",\n \"id\" : 1002604,\n \"state\" : \"open\",\n \"open_issues\" : 4,\n \"node_id\" : \"MDk6TWlsZXN0b25lMTAwMjYwNA==\"\n },\n \"events_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347/events\",\n \"html_url\" : \"https://github.com/octocat/Hello-World/issues/1347\",\n \"assignee\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Nelson Thompson\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"928znkue4oj3hk01gu0fcpauwd4sbx2wsdn9q0f5rcumnfg4cma6cqwj8yp1ccd4f0tqhuejgko90oie7p4h6y5vqrn2jv3tvnizmlu316692mbno6wb88tk8b24k224ji\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"user\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"emory.hoppe\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"6pf4g61pi809fb5t7s7ixbl1qpr8f7vrtp7lg8fx1rx65l2rcr7tjik3az2jqzfa2ohztxnpsiss2nihibu6wu4epzdhsgh9exvn6svdyccak\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"node_id\" : \"MDU6SXNzdWUx\"\n },\n \"action\" : \"a7ex1pcf2zz4p23kahcf164d6nhe5biq421llr7r3pkouf7ibml4a0q87mkhcpwrsbhvlmoyp7ajfdkq1fgdu0vdqqzxd3vntph3xcezizmxq344owupn6\",\n \"comment\" : {\n \"issue_url\" : \"https://web.example.mocklab.io/345565\",\n \"body_html\" : \"92qw2o0u6p95924\",\n \"body_text\" : \"yqsal9gkbb4apppgh9qjbf951m9adio7ra29ez2p84lzlsu15inoqobzik9f36qrcb0ssvl0dfr2r3y2w2sfvl15xwechx911jn3iivf7ab1x\",\n \"created_at\" : \"2011-04-14T16:00:49Z\",\n \"body\" : \"What version of Safari were you using when you observed this bug?\",\n \"url\" : \"https://api.github.com/repositories/42/issues/comments/1\",\n \"author_association\" : \"OWNER\",\n \"performed_via_github_app\" : {\n \"owner\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Ms. Faye Ryan\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"wcugh5ewdbsyuph04hjfiazxdt1hp2yxp5a2ybmps20f167visifr9p0fmzkyanrc26eomanhe5d4b4lnwnfux7nxis\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"installations_count\" : 5,\n \"created_at\" : \"2017-07-08T16:18:44-04:00\",\n \"description\" : \"The description of the app.\",\n \"client_id\" : \"\\\"Iv1.25b5d1e65ffc4022\\\"\",\n \"external_url\" : \"https://example.com\",\n \"updated_at\" : \"2017-07-08T16:18:44-04:00\",\n \"permissions\" : {\n \"deployments\" : \"write\",\n \"issues\" : \"read\"\n },\n \"html_url\" : \"https://github.com/apps/super-ci\",\n \"name\" : \"Probot Owners\",\n \"pem\" : \"\\\"-----BEGIN RSA PRIVATE KEY-----\\\\nMIIEogIBAAKCAQEArYxrNYD/iT5CZVpRJu4rBKmmze3PVmT/gCo2ATUvDvZTPTey\\\\nxcGJ3vvrJXazKk06pN05TN29o98jrYz4cengG3YGsXPNEpKsIrEl8NhbnxapEnM9\\\\nJCMRe0P5JcPsfZlX6hmiT7136GRWiGOUba2X9+HKh8QJVLG5rM007TBER9/z9mWm\\\\nrJuNh+m5l320oBQY/Qq3A7wzdEfZw8qm/mIN0FCeoXH1L6B8xXWaAYBwhTEh6SSn\\\\nZHlO1Xu1JWDmAvBCi0RO5aRSKM8q9QEkvvHP4yweAtK3N8+aAbZ7ovaDhyGz8r6r\\\\nzhU1b8Uo0Z2ysf503WqzQgIajr7Fry7/kUwpgQIDAQABAoIBADwJp80Ko1xHPZDy\\\\nfcCKBDfIuPvkmSW6KumbsLMaQv1aGdHDwwTGv3t0ixSay8CGlxMRtRDyZPib6SvQ\\\\n6OH/lpfpbMdW2ErkksgtoIKBVrDilfrcAvrNZu7NxRNbhCSvN8q0s4ICecjbbVQh\\\\nnueSdlA6vGXbW58BHMq68uRbHkP+k+mM9U0mDJ1HMch67wlg5GbayVRt63H7R2+r\\\\nVxcna7B80J/lCEjIYZznawgiTvp3MSanTglqAYi+m1EcSsP14bJIB9vgaxS79kTu\\\\noiSo93leJbBvuGo8QEiUqTwMw4tDksmkLsoqNKQ1q9P7LZ9DGcujtPy4EZsamSJT\\\\ny8OJt0ECgYEA2lxOxJsQk2kI325JgKFjo92mQeUObIvPfSNWUIZQDTjniOI6Gv63\\\\nGLWVFrZcvQBWjMEQraJA9xjPbblV8PtfO87MiJGLWCHFxmPz2dzoedN+2Coxom8m\\\\nV95CLz8QUShuao6u/RYcvUaZEoYs5bHcTmy5sBK80JyEmafJPtCQVxMCgYEAy3ar\\\\nZr3yv4xRPEPMat4rseswmuMooSaK3SKub19WFI5IAtB/e7qR1Rj9JhOGcZz+OQrl\\\\nT78O2OFYlgOIkJPvRMrPpK5V9lslc7tz1FSh3BZMRGq5jSyD7ETSOQ0c8T2O/s7v\\\\nbeEPbVbDe4mwvM24XByH0GnWveVxaDl51ABD65sCgYB3ZAspUkOA5egVCh8kNpnd\\\\nSd6SnuQBE3ySRlT2WEnCwP9Ph6oPgn+oAfiPX4xbRqkL8q/k0BdHQ4h+zNwhk7+h\\\\nWtPYRAP1Xxnc/F+jGjb+DVaIaKGU18MWPg7f+FI6nampl3Q0KvfxwX0GdNhtio8T\\\\nTj1E+SnFwh56SRQuxSh2gwKBgHKjlIO5NtNSflsUYFM+hyQiPiqnHzddfhSG+/3o\\\\nm5nNaSmczJesUYreH5San7/YEy2UxAugvP7aSY2MxB+iGsiJ9WD2kZzTUlDZJ7RV\\\\nUzWsoqBR+eZfVJ2FUWWvy8TpSG6trh4dFxImNtKejCR1TREpSiTV3Zb1dmahK9GV\\\\nrK9NAoGAbBxRLoC01xfxCTgt5BDiBcFVh4fp5yYKwavJPLzHSpuDOrrI9jDn1oKN\\\\nonq5sDU1i391zfQvdrbX4Ova48BN+B7p63FocP/MK5tyyBoT8zQEk2+vWDOw7H/Z\\\\nu5dTCPxTIsoIwUw1I+7yIxqJzLPFgR2gVBwY1ra/8iAqCj+zeBw=\\\\n-----END RSA PRIVATE KEY-----\\\\n\\\"\",\n \"webhook_secret\" : \"\\\"6fba8f2fc8a7e8f2cca5577eddd82ca7586b3b6b\\\"\",\n \"client_secret\" : \"\\\"1d4b2097ac622ba702d19de498f005747a8b21d3\\\"\",\n \"id\" : 37,\n \"events\" : [ \"label\", \"deployment\" ],\n \"slug\" : \"probot-owners\",\n \"node_id\" : \"MDExOkludGVncmF0aW9uMQ==\"\n },\n \"updated_at\" : \"2011-04-14T16:00:49Z\",\n \"html_url\" : \"https://web.example.mocklab.io/489826\",\n \"reactions\" : {\n \"confused\" : 8636750270568956247,\n \"-1\" : 7651240710498952932,\n \"+1\" : 7125069663413931102,\n \"total_count\" : 4628198618057799494,\n \"rocket\" : 158545754727304455,\n \"hooray\" : 8892924985768261757,\n \"eyes\" : 8943933376959728988,\n \"heart\" : 3014024872629654541,\n \"laugh\" : 5474023357260425323,\n \"url\" : \"https://web.example.mocklab.io/865089\"\n },\n \"id\" : 42,\n \"user\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"aracely.dach\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"ydhub1czcg9xmq1xiixg3qp3586x590mrqrat80f5zdperhqcad66iwo6qqv8gumz7i3xzcguhu\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"node_id\" : \"4573\"\n }\n },\n \"repo\" : {\n \"name\" : \"Valerie Wuckert\",\n \"id\" : 7869034220207638341,\n \"url\" : \"https://web.example.mocklab.io/705179\"\n },\n \"created_at\" : \"2023-04-16T22:04:32.949Z\",\n \"id\" : \"pqm9\",\n \"type\" : \"vlw09amm3974okdb65hbjoe4edgugd1k\"\n}, {\n \"actor\" : {\n \"display_login\" : \"j9agrgd935kb10k3uapa5fb69kkg71ic9jvd1bb4z03mnrw5q0is4235i7oczl7upt41ubqy2c5hq8f0sbwfq734hhanchhfhfc0\",\n \"avatar_url\" : \"https://s3.amazonaws.com/uifaces/faces/twitter/yecidsm/128.jpg\",\n \"id\" : 1865642119541091172,\n \"login\" : \"us6fy2a5j30a9qmkgvh3eir8j5t2k2piy79go38ilm6v50wlt67xaqxctvic2a07102lijztdbb6s7sk69rha5znctqwxhrydq356og2cfllwqj7mw7ezl83lbcvlqjybhukwp3xr9ulavpxveah0rtvyutt3jsnzi\",\n \"gravatar_id\" : \"9320\",\n \"url\" : \"https://web.example.mocklab.io/241921\"\n },\n \"public\" : true,\n \"org\" : {\n \"display_login\" : \"bhkhpogg97gpyz3ozfupujv21lkokxwiaomwg8uqgrojz505lzv6z610zps68p6jlrkof7tunoumrjfbha722yib44lbv64ibezx3teun223roxc76f4bnjkgbdcqxy2yh7dbtcoopklh51dztlwfkghfsycc\",\n \"avatar_url\" : \"https://s3.amazonaws.com/uifaces/faces/twitter/matbeedotcom/128.jpg\",\n \"id\" : 3720863014698845258,\n \"login\" : \"j2qrsfd7t6lmhrkzpdavcadmfhg1fzbe44ed6opj3ystpt4yr6buj2ykawhw0z4ewumybhzdlik84c6tqnon3gizn8q1iqy45mof3m2dmz3cvr0ysjkhr81mt\",\n \"gravatar_id\" : \"41pg\",\n \"url\" : \"https://web.example.mocklab.io/289007\"\n },\n \"payload\" : {\n \"pages\" : [ {\n \"summary\" : \"Occaecati debitis sequi qui velit iure. Odit et aut assumenda. Ut illum ratione. Consequatur consequatur excepturi.\",\n \"html_url\" : \"https://web.example.mocklab.io/122805\",\n \"page_name\" : \"Giuseppe Gorczany III\",\n \"action\" : \"phy9ehjpfqmdh07g5bo963dku2pcgmnvcdwjunljwrx7mjml36pqirxwg04a1pcd3j1\",\n \"title\" : \"Quibusdam nisi qui pariatur.\",\n \"sha\" : \"h9boz78iax65t2m55yx4ql72fwgycwqiwr4vp7hgyidhs0g18nd189zo9dpbyrxqrmb5hnpyq8k49ppq8jpiej2r8psarxdgm4ynec2067stse5zu9n9v02decesujem3zschup2qz4xzdnt0lb9x7mkiaa8dpsev5a01kmr7s\"\n }, {\n \"summary\" : \"Quibusdam quis illo quia. Aut iure non ea. Sequi quae alias optio eum.\",\n \"html_url\" : \"https://web.example.mocklab.io/611693\",\n \"page_name\" : \"Jeffrey Price\",\n \"action\" : \"ejyjeibze6540f6oaupcvocwjo7efmtdg9zel4ly9yyyf8s86r0n5fs37am6xa3zdr1enxto8vh1y0t0nbac9y1ae7memcwnilc5usnm49em\",\n \"title\" : \"A tenetur et blanditiis dolore non expedita ea.\",\n \"sha\" : \"lvdwou0f4jdiwu3ltdfhx7qx1d4s7kj35tjyp\"\n }, {\n \"summary\" : \"Est minus sed quis saepe laborum et. Sed beatae aspernatur qui. Quo assumenda optio voluptas doloremque.\",\n \"html_url\" : \"https://web.example.mocklab.io/196349\",\n \"page_name\" : \"Winston Mills\",\n \"action\" : \"7m0tnho2cvhg3abjbplw6rwss7k7zhtukksn7rlq3n1als4wu0soop2r9iv2g2cpyxjaw7ddbacil9a3botg9omw5n\",\n \"title\" : \"Illo eos temporibus perspiciatis.\",\n \"sha\" : \"eib44a06ond368pl1ei2icq35k6o4mwvhz0eo6r\"\n } ],\n \"issue\" : {\n \"body_html\" : \"kh5i77ejy4dlsxa8pmi5k0uhelwde36l88sid9uqxkj34oot174hxu0n1108cbi9f78f6xs0c2awkeax0c9pudg1az\",\n \"body_text\" : \"nd3dc5mgluq3uhabdlp4z1ga\",\n \"assignees\" : [ {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Gerry Schoen\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"ofw3u65clpvb86rg1xvthtsozbdycgz6prtbqrd2gnmax01yrvfta0xmzzfq3b7cmctfh\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n }, {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Lane McLaughlin DVM\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"3e3h4ljwrmvqwyp5g3l6rq80jql9unc94yjoghfz9tifuu1qi\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n }, {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Lance Emmerich Jr.\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"h09bmmr664hoevjxbtf9x2o3rwukiptdkvn6kqmgoy2hh5dh318tpnew5blx68w0ewpujxf12gklg6uws1cgp9kapgjkoxl8k8z5xw301pbf1wzenu5belerzi07rcaa1b55l91hgpr9yq7bgjs5axlt9yw\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n }, {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Noe Ruecker\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"a200n7ivs2en7sekieik3\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n } ],\n \"created_at\" : \"2011-04-22T13:33:48Z\",\n \"body\" : \"I'm having a problem with this.\",\n \"repository\" : {\n \"allow_forking\" : false,\n \"anonymous_access_enabled\" : false,\n \"is_template\" : true,\n \"stargazers_count\" : 80,\n \"pushed_at\" : \"2011-01-26T19:06:43Z\",\n \"language\" : \"o4yhvt9lni6gn06zoiizkp8c3o7ba36cxks4a144c1k3v5yrsb3shb1583octdy8mzrxmm59ig8m8detnpqip9zq8nhyqjftwwkui573qmbi8jxu9bq6bdguo4zbom9eewfl8c8yqkht1vrl8q8i8ptma8a9ick8wnv3y1fbwe5sk\",\n \"subscription_url\" : \"http://api.github.com/repos/octocat/Hello-World/subscription\",\n \"branches_url\" : \"http://api.github.com/repos/octocat/Hello-World/branches{/branch}\",\n \"allow_rebase_merge\" : true,\n \"issue_comment_url\" : \"http://api.github.com/repos/octocat/Hello-World/issues/comments{/number}\",\n \"labels_url\" : \"http://api.github.com/repos/octocat/Hello-World/labels{/name}\",\n \"permissions\" : {\n \"pull\" : false,\n \"maintain\" : true,\n \"admin\" : false,\n \"triage\" : true,\n \"push\" : false\n },\n \"subscribers_url\" : \"http://api.github.com/repos/octocat/Hello-World/subscribers\",\n \"releases_url\" : \"http://api.github.com/repos/octocat/Hello-World/releases{/id}\",\n \"svn_url\" : \"https://svn.github.com/octocat/Hello-World\",\n \"subscribers_count\" : 2148462193329774128,\n \"id\" : 42,\n \"master_branch\" : \"o2u5wqygz7ivnwsfgryjkqhjdz5te7jbjco4qwrvwqu1x9x4mnx8dbhmrw4pue3sw0cv47z2kehg9vgu828i9q8ze8oj5pa9noaaykty2zfo1vd5p86bb5pv98opz3ck38axl5aq3ubse9rqx85\",\n \"forks\" : 3187132988261101504,\n \"allow_merge_commit\" : true,\n \"archive_url\" : \"http://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref}\",\n \"git_refs_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/refs{/sha}\",\n \"forks_url\" : \"http://api.github.com/repos/octocat/Hello-World/forks\",\n \"visibility\" : \"i9q87heudihn5pygrk2qaub1c7cjbk7f4quwr9du99g7ygtuzax8f6bpiufg36cvi2ha3ufluko5paxgg\",\n \"statuses_url\" : \"http://api.github.com/repos/octocat/Hello-World/statuses/{sha}\",\n \"network_count\" : 6957568038451712792,\n \"ssh_url\" : \"git@github.com:octocat/Hello-World.git\",\n \"license\" : {\n \"html_url\" : \"https://web.example.mocklab.io/100070\",\n \"name\" : \"MIT License\",\n \"spdx_id\" : \"MIT\",\n \"key\" : \"mit\",\n \"url\" : \"https://api.github.com/licenses/mit\",\n \"node_id\" : \"MDc6TGljZW5zZW1pdA==\"\n },\n \"full_name\" : \"octocat/Hello-World\",\n \"size\" : 108,\n \"template_repository\" : {\n \"anonymous_access_enabled\" : false,\n \"is_template\" : true,\n \"stargazers_count\" : 7211847511111339715,\n \"pushed_at\" : \"qkjdvkyiitjdnmle44f81rs8cp36kwbvzf64f1h10aal4yepos7wgcqfxtfmhzesj07vjrqkda4i6s61eobiaztn061uk507e0z6bxnmjh258g61c87c0mhj958xeszsoi1a28f34o392e14bpccxr5a8tog6moo1bhn9ltj6rff1qhofuc\",\n \"language\" : \"vg42s45so7zilxwfrzv69szbqcnroyu8hg0f\",\n \"subscription_url\" : \"https://web.example.mocklab.io/428332\",\n \"branches_url\" : \"https://web.example.mocklab.io/241596\",\n \"allow_rebase_merge\" : true,\n \"issue_comment_url\" : \"https://web.example.mocklab.io/076667\",\n \"labels_url\" : \"https://web.example.mocklab.io/996824\",\n \"permissions\" : { },\n \"subscribers_url\" : \"https://web.example.mocklab.io/815744\",\n \"releases_url\" : \"https://web.example.mocklab.io/835759\",\n \"svn_url\" : \"https://web.example.mocklab.io/737048\",\n \"subscribers_count\" : 3871606147563114857,\n \"id\" : 3244725512141454128,\n \"allow_merge_commit\" : false,\n \"archive_url\" : \"https://web.example.mocklab.io/823728\",\n \"git_refs_url\" : \"https://web.example.mocklab.io/242825\",\n \"forks_url\" : \"https://web.example.mocklab.io/395096\",\n \"visibility\" : \"t9fbvlcx157168fy2ml1zxhdzeyab5m0libh70nozc35ejiulpzo8qxe374vyic4pws993ht7cyp6ju2bq47ix29vjla5el52xm1ry32cwu8zk1a0g5r4x9xnxefxxxhgh5ioe8ardxgwalj7sco40\",\n \"statuses_url\" : \"https://web.example.mocklab.io/664853\",\n \"network_count\" : 4192298059009926305,\n \"ssh_url\" : \"https://web.example.mocklab.io/628686\",\n \"full_name\" : \"Michell Auer\",\n \"size\" : 150299195824868806,\n \"languages_url\" : \"https://web.example.mocklab.io/714023\",\n \"clone_url\" : \"https://web.example.mocklab.io/381326\",\n \"collaborators_url\" : \"https://web.example.mocklab.io/847470\",\n \"html_url\" : \"https://web.example.mocklab.io/367556\",\n \"name\" : \"Earline Stokes\",\n \"pulls_url\" : \"https://web.example.mocklab.io/109223\",\n \"default_branch\" : \"3emwnnwur67uuk7mj5kv0jq6buxqu9bjr2wynyzfgsngsozfeg77lz08kuy\",\n \"hooks_url\" : \"https://web.example.mocklab.io/838840\",\n \"trees_url\" : \"https://web.example.mocklab.io/234903\",\n \"tags_url\" : \"https://web.example.mocklab.io/365848\",\n \"contributors_url\" : \"https://web.example.mocklab.io/017111\",\n \"private\" : true,\n \"has_downloads\" : false,\n \"notifications_url\" : \"https://web.example.mocklab.io/459632\",\n \"open_issues_count\" : 1698014156325899382,\n \"created_at\" : \"yj7qrh5b4zol8ps2cqff024w851trkhcco88a4p1amzfh3zd3ey7cqvnt34lksi2lkzjo7cs8x0bxps7z41hsowidw8p12f5aczmoeocbk4844yv1rseggvos7xkr3rra3du9kblak2qact1hzu60yg9cg6nabytpyxyk\",\n \"description\" : \"Quod accusamus cupiditate. Similique et quaerat sunt aut et nostrum ut. Nam expedita est maiores. Nisi fuga sit laborum minima sunt aspernatur repudiandae.\",\n \"deployments_url\" : \"https://web.example.mocklab.io/916329\",\n \"keys_url\" : \"https://web.example.mocklab.io/234465\",\n \"has_projects\" : true,\n \"archived\" : true,\n \"has_wiki\" : false,\n \"updated_at\" : \"2022-06-10T05:46:58.953253Z\",\n \"comments_url\" : \"https://web.example.mocklab.io/728194\",\n \"stargazers_url\" : \"https://web.example.mocklab.io/453995\",\n \"disabled\" : true,\n \"delete_branch_on_merge\" : false,\n \"git_url\" : \"https://web.example.mocklab.io/233898\",\n \"has_pages\" : false,\n \"owner\" : { },\n \"allow_squash_merge\" : true,\n \"commits_url\" : \"https://web.example.mocklab.io/010540\",\n \"compare_url\" : \"https://web.example.mocklab.io/507727\",\n \"git_commits_url\" : \"https://web.example.mocklab.io/290645\",\n \"topics\" : [ \"no1e3kd9z45nfine4yv3w3slb02bd9sm25j4ctm5w9sgw7ks5h3yp7eygqm152s0h7zkbaxviens0l08wf\", \"imwgvcessdj2w0tao0bho77m1epay7vblksb2a6u9shywbzwliezbxdntbls3pd2sjd7his4wgtsq5kd3yvdsgnmnaeqzpavzm3nw1bgbh3r6jj2b\", \"myrkhexazh0837xau877h1kqep8k84hi7np9j23qaqk74iyg7hfrpf4hea6psfyase4wibqcaza73vrpjfez4846cst77z3mi4d6yljfw4na4mu9sqxoxcok6ww4qru249rom4j3e0qdegxfgac6h3ccnmkakj16rorw\", \"8g3w5z7exbigmfmvc7rgzmjmqgxqrfh5h916gf64hlahada9waws33b2niv4jutp0gbp4lgz0f7q7jykka4uvckohll5jwmsaqpfpf5t2su7q138sj65eeivh9aoarqmuqscibijgsbpnmbdtfzechi1ui7uefgfs\", \"punczwvdwvr746nh9pvb2nd1oteydfxnxo5o2z6knossdq8t3ns74bervzpdnpor10jxshf93hedhz5teyo728g59afou94zpe98vq3dwphwxfqkzl5yhuab948pzvtd04611i1fhoty3vhm15wqf912sq390qs9rfgwxtd33nh79wtv\" ],\n \"blobs_url\" : \"https://web.example.mocklab.io/952541\",\n \"git_tags_url\" : \"https://web.example.mocklab.io/599403\",\n \"merges_url\" : \"https://web.example.mocklab.io/649065\",\n \"downloads_url\" : \"https://web.example.mocklab.io/064781\",\n \"has_issues\" : false,\n \"url\" : \"https://web.example.mocklab.io/724877\",\n \"contents_url\" : \"https://web.example.mocklab.io/326860\",\n \"mirror_url\" : \"https://web.example.mocklab.io/236592\",\n \"milestones_url\" : \"https://web.example.mocklab.io/914933\",\n \"teams_url\" : \"https://web.example.mocklab.io/505518\",\n \"fork\" : false,\n \"issues_url\" : \"https://web.example.mocklab.io/231174\",\n \"events_url\" : \"https://web.example.mocklab.io/296072\",\n \"issue_events_url\" : \"https://web.example.mocklab.io/956358\",\n \"assignees_url\" : \"https://web.example.mocklab.io/399226\",\n \"watchers_count\" : 7929455348725184667,\n \"forks_count\" : 2527075388723460573,\n \"homepage\" : \"b3uoiehluvuza1nht02gsucq2vk4vqtng0wcimh2xx929qa52lbyhpqen9tlkndf42qs8rjn5sh96ocmjgmltkpku6w0mvya07awf8j3s401749gy9ald4sk3ex59brkjdf68pt7kpgp1twvd4njwcae22hg9jydwy24r3t7frhxfgn2et2ygl81787q16dcto95wurf\",\n \"node_id\" : \"7058\"\n },\n \"languages_url\" : \"http://api.github.com/repos/octocat/Hello-World/languages\",\n \"clone_url\" : \"https://github.com/octocat/Hello-World.git\",\n \"collaborators_url\" : \"http://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator}\",\n \"html_url\" : \"https://github.com/octocat/Hello-World\",\n \"name\" : \"Team Environment\",\n \"pulls_url\" : \"http://api.github.com/repos/octocat/Hello-World/pulls{/number}\",\n \"default_branch\" : \"master\",\n \"hooks_url\" : \"http://api.github.com/repos/octocat/Hello-World/hooks\",\n \"trees_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/trees{/sha}\",\n \"tags_url\" : \"http://api.github.com/repos/octocat/Hello-World/tags\",\n \"contributors_url\" : \"http://api.github.com/repos/octocat/Hello-World/contributors\",\n \"private\" : true,\n \"has_downloads\" : true,\n \"notifications_url\" : \"http://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating}\",\n \"open_issues_count\" : 0,\n \"created_at\" : \"2011-01-26T19:01:12Z\",\n \"description\" : \"This your first repo!\",\n \"watchers\" : 2623501041818952878,\n \"deployments_url\" : \"http://api.github.com/repos/octocat/Hello-World/deployments\",\n \"keys_url\" : \"http://api.github.com/repos/octocat/Hello-World/keys{/key_id}\",\n \"has_projects\" : true,\n \"archived\" : false,\n \"has_wiki\" : true,\n \"updated_at\" : \"2011-01-26T19:14:43Z\",\n \"comments_url\" : \"http://api.github.com/repos/octocat/Hello-World/comments{/number}\",\n \"stargazers_url\" : \"http://api.github.com/repos/octocat/Hello-World/stargazers\",\n \"disabled\" : false,\n \"delete_branch_on_merge\" : false,\n \"git_url\" : \"git:github.com/octocat/Hello-World.git\",\n \"has_pages\" : true,\n \"owner\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Mrs. Erwin Dietrich\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"nbu9qggnq5msi1hyu6bl6pltvo0q0q8sitdrcrqmzj30m4ir6tm55r5t9kxwc06vuha82idpy9cwvryd64j2u7xl29oca5hy6h7a37j9772xci\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"allow_squash_merge\" : true,\n \"commits_url\" : \"http://api.github.com/repos/octocat/Hello-World/commits{/sha}\",\n \"compare_url\" : \"http://api.github.com/repos/octocat/Hello-World/compare/{base}...{head}\",\n \"git_commits_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/commits{/sha}\",\n \"topics\" : [ \"279fudj6uozqw94vkiq3qtuh62m4c2pc0q49qlp0kfb6cbcmtlzr7l5sj77phouj5xvkt47t4860cut62mducnfodgeq10j1v1ezit9h0qek05qmke5znquugdw2mmnh1a0smajx8yjmvz5ri0fsi\", \"16bjqvpekea3uc9sa37t9fas8tqc7d9rytlo6m0zd7riycgyo2nr7c7lybrmffc5013iqh1ihttucxpi3u0zba5qpenxjohpwo9qr8si8coozjz5e5wyx7kedlr0m4w0urvukkrjyvxhje4zo9xx2rjixb9rpbtpqiljqg72a4qbx3576sdylx3pnnuujaz\", \"g5aer8lmenryc903kl2a9kdc9dkxa3o9r6s3tajady7htt3u0fsifa5pmop6\", \"5x3xmff9ttwwv63c8v1swrl4dx08u\", \"ye36js3pv7z9bi08sm3am\", \"zh868agfdkhtpun2oke9ape7toxmz9az8020ad2jyibu4uy3bv0wb071gd0b8n7h6jtgm3d8lq3nl6jjxkxkbriugxdcq3hrd704j51i6v7f4y1trf38zf7bj8e4886i\", \"gilnafn7z10rgp6debg0h9sayc5krq8ka2mmjluweqt3hqci6216t77p6w8km3swdlwo7glxzacwigjswmpdrjrxlivmbrvhgbr52n3lq74o74yrd010laoqsru5yafxoq349p4c6d3o1w2pdc3td2zc6yhvrl3003ce\", \"boynvdo8rdror6ddg88lpqkwz524zy3ambi8vjhhmm3qxasv23q9jaj7udwvnntxdjkj1ysw2nebgjmrojkthiey57kg3j405z3hs708bjz8hznhz\" ],\n \"blobs_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/blobs{/sha}\",\n \"git_tags_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/tags{/sha}\",\n \"merges_url\" : \"http://api.github.com/repos/octocat/Hello-World/merges\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:42Z\\\"\",\n \"downloads_url\" : \"http://api.github.com/repos/octocat/Hello-World/downloads\",\n \"has_issues\" : true,\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World\",\n \"contents_url\" : \"http://api.github.com/repos/octocat/Hello-World/contents/{+path}\",\n \"mirror_url\" : \"git:git.example.com/octocat/Hello-World\",\n \"milestones_url\" : \"http://api.github.com/repos/octocat/Hello-World/milestones{/number}\",\n \"teams_url\" : \"http://api.github.com/repos/octocat/Hello-World/teams\",\n \"fork\" : true,\n \"issues_url\" : \"http://api.github.com/repos/octocat/Hello-World/issues{/number}\",\n \"events_url\" : \"http://api.github.com/repos/octocat/Hello-World/events\",\n \"issue_events_url\" : \"http://api.github.com/repos/octocat/Hello-World/issues/events{/number}\",\n \"organization\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Nathaniel Schinner\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"yka9wnjn574j0pbjj60q\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"assignees_url\" : \"http://api.github.com/repos/octocat/Hello-World/assignees{/user}\",\n \"open_issues\" : 5017157441346815097,\n \"watchers_count\" : 80,\n \"forks_count\" : 9,\n \"homepage\" : \"https://github.com\",\n \"node_id\" : \"MDEwOlJlcG9zaXRvcnkxMjk2MjY5\"\n },\n \"title\" : \"Found a bug\",\n \"author_association\" : \"OWNER\",\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347/labels{/name}\",\n \"number\" : 1347,\n \"performed_via_github_app\" : {\n \"owner\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Shawnee Feeney\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"umc9h78g9uheboi8tpy8iio46gxbjy8yy50zrbfafduv4ekc8hqzk25uo2gp0y58lbxh1rorpbreqlikwpemfxzg4u8ej1o4jj1srxwswx7uka3h96374jiwu22nspdm8tw0g8f7q2rte54dvbwv6ri4qhw7\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"installations_count\" : 5,\n \"created_at\" : \"2017-07-08T16:18:44-04:00\",\n \"description\" : \"The description of the app.\",\n \"client_id\" : \"\\\"Iv1.25b5d1e65ffc4022\\\"\",\n \"external_url\" : \"https://example.com\",\n \"updated_at\" : \"2017-07-08T16:18:44-04:00\",\n \"permissions\" : {\n \"deployments\" : \"write\",\n \"issues\" : \"read\"\n },\n \"html_url\" : \"https://github.com/apps/super-ci\",\n \"name\" : \"Probot Owners\",\n \"pem\" : \"\\\"-----BEGIN RSA PRIVATE KEY-----\\\\nMIIEogIBAAKCAQEArYxrNYD/iT5CZVpRJu4rBKmmze3PVmT/gCo2ATUvDvZTPTey\\\\nxcGJ3vvrJXazKk06pN05TN29o98jrYz4cengG3YGsXPNEpKsIrEl8NhbnxapEnM9\\\\nJCMRe0P5JcPsfZlX6hmiT7136GRWiGOUba2X9+HKh8QJVLG5rM007TBER9/z9mWm\\\\nrJuNh+m5l320oBQY/Qq3A7wzdEfZw8qm/mIN0FCeoXH1L6B8xXWaAYBwhTEh6SSn\\\\nZHlO1Xu1JWDmAvBCi0RO5aRSKM8q9QEkvvHP4yweAtK3N8+aAbZ7ovaDhyGz8r6r\\\\nzhU1b8Uo0Z2ysf503WqzQgIajr7Fry7/kUwpgQIDAQABAoIBADwJp80Ko1xHPZDy\\\\nfcCKBDfIuPvkmSW6KumbsLMaQv1aGdHDwwTGv3t0ixSay8CGlxMRtRDyZPib6SvQ\\\\n6OH/lpfpbMdW2ErkksgtoIKBVrDilfrcAvrNZu7NxRNbhCSvN8q0s4ICecjbbVQh\\\\nnueSdlA6vGXbW58BHMq68uRbHkP+k+mM9U0mDJ1HMch67wlg5GbayVRt63H7R2+r\\\\nVxcna7B80J/lCEjIYZznawgiTvp3MSanTglqAYi+m1EcSsP14bJIB9vgaxS79kTu\\\\noiSo93leJbBvuGo8QEiUqTwMw4tDksmkLsoqNKQ1q9P7LZ9DGcujtPy4EZsamSJT\\\\ny8OJt0ECgYEA2lxOxJsQk2kI325JgKFjo92mQeUObIvPfSNWUIZQDTjniOI6Gv63\\\\nGLWVFrZcvQBWjMEQraJA9xjPbblV8PtfO87MiJGLWCHFxmPz2dzoedN+2Coxom8m\\\\nV95CLz8QUShuao6u/RYcvUaZEoYs5bHcTmy5sBK80JyEmafJPtCQVxMCgYEAy3ar\\\\nZr3yv4xRPEPMat4rseswmuMooSaK3SKub19WFI5IAtB/e7qR1Rj9JhOGcZz+OQrl\\\\nT78O2OFYlgOIkJPvRMrPpK5V9lslc7tz1FSh3BZMRGq5jSyD7ETSOQ0c8T2O/s7v\\\\nbeEPbVbDe4mwvM24XByH0GnWveVxaDl51ABD65sCgYB3ZAspUkOA5egVCh8kNpnd\\\\nSd6SnuQBE3ySRlT2WEnCwP9Ph6oPgn+oAfiPX4xbRqkL8q/k0BdHQ4h+zNwhk7+h\\\\nWtPYRAP1Xxnc/F+jGjb+DVaIaKGU18MWPg7f+FI6nampl3Q0KvfxwX0GdNhtio8T\\\\nTj1E+SnFwh56SRQuxSh2gwKBgHKjlIO5NtNSflsUYFM+hyQiPiqnHzddfhSG+/3o\\\\nm5nNaSmczJesUYreH5San7/YEy2UxAugvP7aSY2MxB+iGsiJ9WD2kZzTUlDZJ7RV\\\\nUzWsoqBR+eZfVJ2FUWWvy8TpSG6trh4dFxImNtKejCR1TREpSiTV3Zb1dmahK9GV\\\\nrK9NAoGAbBxRLoC01xfxCTgt5BDiBcFVh4fp5yYKwavJPLzHSpuDOrrI9jDn1oKN\\\\nonq5sDU1i391zfQvdrbX4Ova48BN+B7p63FocP/MK5tyyBoT8zQEk2+vWDOw7H/Z\\\\nu5dTCPxTIsoIwUw1I+7yIxqJzLPFgR2gVBwY1ra/8iAqCj+zeBw=\\\\n-----END RSA PRIVATE KEY-----\\\\n\\\"\",\n \"webhook_secret\" : \"\\\"6fba8f2fc8a7e8f2cca5577eddd82ca7586b3b6b\\\"\",\n \"client_secret\" : \"\\\"1d4b2097ac622ba702d19de498f005747a8b21d3\\\"\",\n \"id\" : 37,\n \"events\" : [ \"label\", \"deployment\" ],\n \"slug\" : \"probot-owners\",\n \"node_id\" : \"MDExOkludGVncmF0aW9uMQ==\"\n },\n \"updated_at\" : \"2011-04-22T13:33:48Z\",\n \"comments_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347/comments\",\n \"active_lock_reason\" : \"too heated\",\n \"id\" : 1,\n \"repository_url\" : \"https://api.github.com/repos/octocat/Hello-World\",\n \"state\" : \"open\",\n \"locked\" : true,\n \"timeline_url\" : \"https://web.example.mocklab.io/490535\",\n \"pull_request\" : {\n \"patch_url\" : \"https://web.example.mocklab.io/631819\",\n \"html_url\" : \"https://web.example.mocklab.io/787963\",\n \"merged_at\" : \"2022-04-10T04:16:13.955Z\",\n \"diff_url\" : \"https://web.example.mocklab.io/224501\",\n \"url\" : \"https://web.example.mocklab.io/980822\"\n },\n \"closed_at\" : \"2022-07-16T15:14:37.955Z\",\n \"comments\" : 0,\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347\",\n \"labels\" : [ {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n }, {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n }, {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n }, {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n }, {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n }, {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n }, {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n }, {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n } ],\n \"milestone\" : {\n \"creator\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Ms. Diego McGlynn\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"w8b4rsd4uk8lb01o38ia59gttp26lb4ryyyb8u5xnixymkyomy9z49na01\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"closed_at\" : \"2013-02-12T13:22:01Z\",\n \"created_at\" : \"2011-04-10T20:09:31Z\",\n \"description\" : \"Tracking milestone for version 1.0\",\n \"closed_issues\" : 8,\n \"title\" : \"v1.0\",\n \"due_on\" : \"2012-10-09T23:39:01Z\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones/1\",\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones/1/labels\",\n \"number\" : 42,\n \"updated_at\" : \"2014-03-03T18:58:10Z\",\n \"html_url\" : \"https://github.com/octocat/Hello-World/milestones/v1.0\",\n \"id\" : 1002604,\n \"state\" : \"open\",\n \"open_issues\" : 4,\n \"node_id\" : \"MDk6TWlsZXN0b25lMTAwMjYwNA==\"\n },\n \"events_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347/events\",\n \"html_url\" : \"https://github.com/octocat/Hello-World/issues/1347\",\n \"assignee\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Ferdinand Tromp\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"lewm6gn9lxzmfnhtyson6pkiupmp84bwcu7uboz3d82dwe96ww6z1ok9kty9rm18r78ojavdavgjpdnxh4fhdryylyu73aze9ef90uc200\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"user\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"raleigh.smith\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"d5odzojjcz9z1etf96tbatur6xirprmfk4pxcu4kho0tlgipx7t330fe71easp6nyvli76ycnzvq5s9zjqmyddfc7csui4l81vj5l1xeyr5ith2ws3318g2qzewbl6l21\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"node_id\" : \"MDU6SXNzdWUx\"\n },\n \"action\" : \"45f8v\",\n \"comment\" : {\n \"issue_url\" : \"https://web.example.mocklab.io/489210\",\n \"body_html\" : \"mcxvj7sjlm7q0ou5netrj648hqpmd9sv6rnem6doku27e987y3b5xm4ee20wmqhwwzek4psrxfucb39cx4p94c7v1fb1kmrqkozqdglp6vxug158kzmu356903vd80qdzz2zo6\",\n \"body_text\" : \"azx68nvn6rfzgd9g3s49s2j04dq44e2za2rzfs0jpjm9thea96d2skraerc4nsjax754pfoocwxj7b1zds57hhtg7zha8wsmuo6cjwa7vg56lx9n5kung6ihtl2rkgo36w8n43r5dxfu3pup2xdbrv2fci9aa94dxrua0vykzyt19r1zkb\",\n \"created_at\" : \"2011-04-14T16:00:49Z\",\n \"body\" : \"What version of Safari were you using when you observed this bug?\",\n \"url\" : \"https://api.github.com/repositories/42/issues/comments/1\",\n \"author_association\" : \"OWNER\",\n \"performed_via_github_app\" : {\n \"owner\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Truman Reichert\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"kem1gsf1msm4ol07zbphqs8sny3u9d17091cxrijd99qq9oyli8q5mp0heiot6gn50l34uq6nhq0t5t0e6tb0lonoh4jy9qjr3gk4ymyflrivhtbyew9zpree0yg37sruj1s9yowx0ekkhm\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"installations_count\" : 5,\n \"created_at\" : \"2017-07-08T16:18:44-04:00\",\n \"description\" : \"The description of the app.\",\n \"client_id\" : \"\\\"Iv1.25b5d1e65ffc4022\\\"\",\n \"external_url\" : \"https://example.com\",\n \"updated_at\" : \"2017-07-08T16:18:44-04:00\",\n \"permissions\" : {\n \"deployments\" : \"write\",\n \"issues\" : \"read\"\n },\n \"html_url\" : \"https://github.com/apps/super-ci\",\n \"name\" : \"Probot Owners\",\n \"pem\" : \"\\\"-----BEGIN RSA PRIVATE KEY-----\\\\nMIIEogIBAAKCAQEArYxrNYD/iT5CZVpRJu4rBKmmze3PVmT/gCo2ATUvDvZTPTey\\\\nxcGJ3vvrJXazKk06pN05TN29o98jrYz4cengG3YGsXPNEpKsIrEl8NhbnxapEnM9\\\\nJCMRe0P5JcPsfZlX6hmiT7136GRWiGOUba2X9+HKh8QJVLG5rM007TBER9/z9mWm\\\\nrJuNh+m5l320oBQY/Qq3A7wzdEfZw8qm/mIN0FCeoXH1L6B8xXWaAYBwhTEh6SSn\\\\nZHlO1Xu1JWDmAvBCi0RO5aRSKM8q9QEkvvHP4yweAtK3N8+aAbZ7ovaDhyGz8r6r\\\\nzhU1b8Uo0Z2ysf503WqzQgIajr7Fry7/kUwpgQIDAQABAoIBADwJp80Ko1xHPZDy\\\\nfcCKBDfIuPvkmSW6KumbsLMaQv1aGdHDwwTGv3t0ixSay8CGlxMRtRDyZPib6SvQ\\\\n6OH/lpfpbMdW2ErkksgtoIKBVrDilfrcAvrNZu7NxRNbhCSvN8q0s4ICecjbbVQh\\\\nnueSdlA6vGXbW58BHMq68uRbHkP+k+mM9U0mDJ1HMch67wlg5GbayVRt63H7R2+r\\\\nVxcna7B80J/lCEjIYZznawgiTvp3MSanTglqAYi+m1EcSsP14bJIB9vgaxS79kTu\\\\noiSo93leJbBvuGo8QEiUqTwMw4tDksmkLsoqNKQ1q9P7LZ9DGcujtPy4EZsamSJT\\\\ny8OJt0ECgYEA2lxOxJsQk2kI325JgKFjo92mQeUObIvPfSNWUIZQDTjniOI6Gv63\\\\nGLWVFrZcvQBWjMEQraJA9xjPbblV8PtfO87MiJGLWCHFxmPz2dzoedN+2Coxom8m\\\\nV95CLz8QUShuao6u/RYcvUaZEoYs5bHcTmy5sBK80JyEmafJPtCQVxMCgYEAy3ar\\\\nZr3yv4xRPEPMat4rseswmuMooSaK3SKub19WFI5IAtB/e7qR1Rj9JhOGcZz+OQrl\\\\nT78O2OFYlgOIkJPvRMrPpK5V9lslc7tz1FSh3BZMRGq5jSyD7ETSOQ0c8T2O/s7v\\\\nbeEPbVbDe4mwvM24XByH0GnWveVxaDl51ABD65sCgYB3ZAspUkOA5egVCh8kNpnd\\\\nSd6SnuQBE3ySRlT2WEnCwP9Ph6oPgn+oAfiPX4xbRqkL8q/k0BdHQ4h+zNwhk7+h\\\\nWtPYRAP1Xxnc/F+jGjb+DVaIaKGU18MWPg7f+FI6nampl3Q0KvfxwX0GdNhtio8T\\\\nTj1E+SnFwh56SRQuxSh2gwKBgHKjlIO5NtNSflsUYFM+hyQiPiqnHzddfhSG+/3o\\\\nm5nNaSmczJesUYreH5San7/YEy2UxAugvP7aSY2MxB+iGsiJ9WD2kZzTUlDZJ7RV\\\\nUzWsoqBR+eZfVJ2FUWWvy8TpSG6trh4dFxImNtKejCR1TREpSiTV3Zb1dmahK9GV\\\\nrK9NAoGAbBxRLoC01xfxCTgt5BDiBcFVh4fp5yYKwavJPLzHSpuDOrrI9jDn1oKN\\\\nonq5sDU1i391zfQvdrbX4Ova48BN+B7p63FocP/MK5tyyBoT8zQEk2+vWDOw7H/Z\\\\nu5dTCPxTIsoIwUw1I+7yIxqJzLPFgR2gVBwY1ra/8iAqCj+zeBw=\\\\n-----END RSA PRIVATE KEY-----\\\\n\\\"\",\n \"webhook_secret\" : \"\\\"6fba8f2fc8a7e8f2cca5577eddd82ca7586b3b6b\\\"\",\n \"client_secret\" : \"\\\"1d4b2097ac622ba702d19de498f005747a8b21d3\\\"\",\n \"id\" : 37,\n \"events\" : [ \"label\", \"deployment\" ],\n \"slug\" : \"probot-owners\",\n \"node_id\" : \"MDExOkludGVncmF0aW9uMQ==\"\n },\n \"updated_at\" : \"2011-04-14T16:00:49Z\",\n \"html_url\" : \"https://web.example.mocklab.io/936603\",\n \"reactions\" : {\n \"confused\" : 6206025453783325700,\n \"-1\" : 4076559345761185096,\n \"+1\" : 1919985265257404719,\n \"total_count\" : 6422315659465245731,\n \"rocket\" : 5002870038373622091,\n \"hooray\" : 2350848308742798383,\n \"eyes\" : 3156545496965483692,\n \"heart\" : 3226128502531087803,\n \"laugh\" : 7600823114332990755,\n \"url\" : \"https://web.example.mocklab.io/243123\"\n },\n \"id\" : 42,\n \"user\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"larhonda.ortiz\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"rz4ioqruu6u8ts3sn2gttc6llu9jo8n7lxrzk1ue6qo7aqlnloo2b46gm145gq284kw264r54kpoe57ee5oz13alig8uhv4wosva1uv9chqvwhgridn7r2vk2ry5p6\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"node_id\" : \"46y9\"\n }\n },\n \"repo\" : {\n \"name\" : \"Branden Turcotte\",\n \"id\" : 8244543302567641350,\n \"url\" : \"https://web.example.mocklab.io/484687\"\n },\n \"created_at\" : \"2023-07-24T15:08:06.957Z\",\n \"id\" : \"ar2n\",\n \"type\" : \"txa49275kbt9wrfp86f87qdqchqzn0a52wgap5h58kw8a09cbt1d0ledzwlwj0kxxz7gc5izst1g9n4ac0hgyfawt57fxwmangu9vzx83\"\n}, {\n \"actor\" : {\n \"display_login\" : \"njf6nawgxbtqtd2foamgrzgvnkk2d0f\",\n \"avatar_url\" : \"https://s3.amazonaws.com/uifaces/faces/twitter/jerrybai1907/128.jpg\",\n \"id\" : 8611617302017801739,\n \"login\" : \"skvndkbou09thztrlu71rouhu005enssqg6mi598oo0kum79svy4s0ar8bbr56wumnetwutxvbkl7sykihj550ez\",\n \"gravatar_id\" : \"e18p\",\n \"url\" : \"https://web.example.mocklab.io/649973\"\n },\n \"public\" : false,\n \"org\" : {\n \"display_login\" : \"j50fv8da5wgs9ew9mm8o44lgr411oq9bbn7s7h5jmazp1wv9l9oxjmovqqsyjgn9\",\n \"avatar_url\" : \"https://s3.amazonaws.com/uifaces/faces/twitter/lawlbwoy/128.jpg\",\n \"id\" : 7344870170962376496,\n \"login\" : \"x9iy9nysfhl2mht2kr9uyw29wndsbzqrhvhup4w8geh1kqesnv9v8x5vmyzt6ym3c29l94pspuilsnk7bg6psoez6bw08qdapsikjbxc59pldwtii5fhf4vsnqyq2h2899be\",\n \"gravatar_id\" : \"5xg7\",\n \"url\" : \"https://web.example.mocklab.io/538898\"\n },\n \"payload\" : {\n \"pages\" : [ {\n \"summary\" : \"Voluptatibus unde facilis veniam minima amet. Quo itaque repudiandae iure aliquid illo. Et repudiandae laborum et. Adipisci ipsam totam. Dolorem sit odit.\",\n \"html_url\" : \"https://web.example.mocklab.io/976284\",\n \"page_name\" : \"Benedict Huel\",\n \"action\" : \"natzq7n0ntgcbmcbq9gbs8m6quswx3m5ixsvmds5wl27x2gy8pdpjypfb4jcfeyy44uftxnqmfnwj84efqxlcvlxys0ezof1pcu0kttygin2iwfezgirpgzs\",\n \"title\" : \"Tenetur autem amet aspernatur laborum animi dolores facere.\",\n \"sha\" : \"px0k3wasfjhjwyh8a2ua7bw79w49wf6tg9rag0yve3msjbvbr22fyu46i0n95tg0ra9our34uvw7z5rjqxgycnr320x4y7ahok4\"\n }, {\n \"summary\" : \"Nihil natus deserunt dignissimos. Porro sed suscipit unde velit aut sint. Ut inventore at enim quibusdam fugit nihil omnis. Temporibus in enim quia saepe non ratione. Quisquam saepe perferendis rerum \",\n \"html_url\" : \"https://web.example.mocklab.io/867952\",\n \"page_name\" : \"Sergio Heathcote\",\n \"action\" : \"meuo1czzi95gegn1qjvohwl4wwx75k70n\",\n \"title\" : \"Sit consequatur cumque totam aut.\",\n \"sha\" : \"bfju6vhzonueqf9ssvi9c9qjth0s3tzptll2o\"\n }, {\n \"summary\" : \"Corporis vel repellat at. Qui sint officiis suscipit rerum. Velit aperiam iste nostrum. Optio necessitatibus excepturi voluptates eum magnam. Architecto quod dicta quibusdam voluptates voluptate rem.\",\n \"html_url\" : \"https://web.example.mocklab.io/294714\",\n \"page_name\" : \"Caleb Towne\",\n \"action\" : \"hlx\",\n \"title\" : \"Repudiandae consequatur veniam et exercitationem repellat commodi itaque.\",\n \"sha\" : \"d72eced2t7n6vdferotspgb4g6nziq3i2vm3jgvvedob\"\n }, {\n \"summary\" : \"Corrupti aut dolorum sapiente non nemo quibusdam. Consequatur magni recusandae a quia. Sit enim aut aut voluptatibus.\",\n \"html_url\" : \"https://web.example.mocklab.io/591934\",\n \"page_name\" : \"Juliette Heidenreich\",\n \"action\" : \"jn0jycirp9lvz6oyaio7ckmwqu9orbsfc6kfgh5bros1uimka7nt881q1kkaq4j4htyyj3d5h6k36ds2f2t0cg2hj6n8mlubsdq6\",\n \"title\" : \"Commodi eos unde placeat est aut et.\",\n \"sha\" : \"m6h4ym9fuppc8j02jah9p1ptg59zmp3lew5t0trucvbvsvcgxn3mj9dz8x14qoaxiiqn6b344unnhmvmsjce25dirpph1la6qlol8z08s3x87m0nlds88f0e672ov7ild3gcv6z45gdz2cw9ot3kx5322tevh02mkq8f20brzb73zfqik71\"\n }, {\n \"summary\" : \"Sit voluptatem accusantium iure asperiores. A suscipit reiciendis quod est qui doloremque. Delectus numquam praesentium ducimus. Et voluptate fuga. Distinctio ut vitae.\",\n \"html_url\" : \"https://web.example.mocklab.io/395264\",\n \"page_name\" : \"Raguel Gutmann PhD\",\n \"action\" : \"9zko7sw4\",\n \"title\" : \"Perspiciatis veritatis ea excepturi nihil deserunt dolorum.\",\n \"sha\" : \"rlj18j0ku1xph4jmdjp5v6lkhghjyd6ovq7h11xmhqm6bdlsbfhrdq\"\n }, {\n \"summary\" : \"Suscipit eligendi vero fugit fuga. Voluptates illo architecto explicabo adipisci deserunt. Ut ut mollitia sunt suscipit magnam eum fuga. Eligendi vitae consequatur iure optio. In culpa est.\",\n \"html_url\" : \"https://web.example.mocklab.io/235791\",\n \"page_name\" : \"Lyndon Stiedemann\",\n \"action\" : \"83rbq1ez6qacllbr6083vn844s2gr9ou3fq6yvmwjf0rqwcabh8v9z7gzdh8qj0yy4ogfltbkhx3f6hj124odkbowt9tvkjiom9q0ezkitq0qebk96irsmhr86c1f3xv2k4q9rtm9vb8lpt7q8w2oycxamgrvks9kcaeqb6igz3oux3k0ejj6js0m267dv2344bkne\",\n \"title\" : \"Sapiente expedita non similique nobis voluptatem enim.\",\n \"sha\" : \"0uuo9lwtkgfo37gofoe043i5vdv3l33tchqfr3h06irpwo0mh7ny092h33p29uovy6er5de228d4ozenmfyzmqlekti1158uc95eokvjg8rj1np9iireo82rssqid0n7ylgud4d27k60g1pmgpungl1hvtlbxqdxlwcxfcz8o21qq83\"\n }, {\n \"summary\" : \"Blanditiis ut et illum similique. Dicta nostrum sequi possimus facere accusantium. Rerum error nihil consequatur. Eaque quaerat qui.\",\n \"html_url\" : \"https://web.example.mocklab.io/287228\",\n \"page_name\" : \"Merissa Mayer III\",\n \"action\" : \"0ntjdxpz9ileialmrsuoo3v3g2qkg\",\n \"title\" : \"Est ab occaecati.\",\n \"sha\" : \"c9yu0r6i1kms4nj5unx79bqzqxcie7zkq\"\n } ],\n \"issue\" : {\n \"body_html\" : \"17ty2vcolb5w1w48fupbr63496ciyzw93wior1bc9zmudim0caiw94qefwcpg1y2wjsu6dnesj3sv8hba29f7e8k4gnbt7go0plztmfx7ox6s4i11fmjj48y3ehf0udwy3jfn6bq6gkk\",\n \"body_text\" : \"puvvk2fe9id2g9ayrfjpr3inh01zspph1ib5rjjqpjzy9xnja74rap6122r7sq158nr4ryp8cu64wx77ii780u5j54zz3h5hdai73jn3zo0bxze1q1i31kkg1yt3jw6i1uv8per7awaw\",\n \"assignees\" : [ {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Tomi Crona\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"pq8jwm8ta394vo0rp20m17oervohdq3mno64e8lyrc4md3sc7mw4dtixj3z4u90o2f43jcz2af8c5gvxpile00l0jydx5l2sajt58a0u019198lp2kkd5e5ogidcvm2qch6u5i3w14\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n }, {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Twila Weissnat\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"w93893fvf2s5azup3nbo9ve0a61uhoa524mch0mmdhke63a9ym6s5qvz3d7ofbmev1um3u67jy6ys5ol6sdh9o9r6dhb21pdiywi6xknsdl5whikvtm5cqug3c0stof95nf8u2fp9q\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n } ],\n \"created_at\" : \"2011-04-22T13:33:48Z\",\n \"body\" : \"I'm having a problem with this.\",\n \"repository\" : {\n \"allow_forking\" : false,\n \"anonymous_access_enabled\" : false,\n \"is_template\" : true,\n \"stargazers_count\" : 80,\n \"pushed_at\" : \"2011-01-26T19:06:43Z\",\n \"language\" : \"dh5h7msdpfotbi4n3ljr1bnxrdyvz6ar28s2r0ctf9j4gu5hoy9b58wjzpzt3em0csyh7yu6j4zmbipds96qss191g7v2ssdr79d5g753co67wlggusw\",\n \"subscription_url\" : \"http://api.github.com/repos/octocat/Hello-World/subscription\",\n \"branches_url\" : \"http://api.github.com/repos/octocat/Hello-World/branches{/branch}\",\n \"allow_rebase_merge\" : true,\n \"issue_comment_url\" : \"http://api.github.com/repos/octocat/Hello-World/issues/comments{/number}\",\n \"labels_url\" : \"http://api.github.com/repos/octocat/Hello-World/labels{/name}\",\n \"permissions\" : {\n \"pull\" : true,\n \"maintain\" : false,\n \"admin\" : true,\n \"triage\" : false,\n \"push\" : false\n },\n \"subscribers_url\" : \"http://api.github.com/repos/octocat/Hello-World/subscribers\",\n \"releases_url\" : \"http://api.github.com/repos/octocat/Hello-World/releases{/id}\",\n \"svn_url\" : \"https://svn.github.com/octocat/Hello-World\",\n \"subscribers_count\" : 7189488386366418038,\n \"id\" : 42,\n \"master_branch\" : \"w0t74w3wn1n0ifyw57w2ghordokm9ssqz2a6sudaema3auickwh07o9b2ue8jtxqqodrzg1j59xpae0ox87lmn00y7yvbdh22auyon25vxoazccutuhuz439tvsmh2mcb5umwrnlly6tn8ig3yoe0fhe8mzqoy6igc5c8o209hbbndaw7k4e62ujn\",\n \"forks\" : 2870061649787373335,\n \"allow_merge_commit\" : true,\n \"archive_url\" : \"http://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref}\",\n \"git_refs_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/refs{/sha}\",\n \"forks_url\" : \"http://api.github.com/repos/octocat/Hello-World/forks\",\n \"visibility\" : \"ecu5icm4ui2uzr0pw9zecy8oyfl9epzc97ijnagomfr76ves4dap88wyjfblz4s39xu7xyfk0ji3k1bc2mkjtab5k5wlw66ozuuthjvrhs60qa65dftsy7pmaxh1y68tntkf\",\n \"statuses_url\" : \"http://api.github.com/repos/octocat/Hello-World/statuses/{sha}\",\n \"network_count\" : 1271828963310656130,\n \"ssh_url\" : \"git@github.com:octocat/Hello-World.git\",\n \"license\" : {\n \"html_url\" : \"https://web.example.mocklab.io/655438\",\n \"name\" : \"MIT License\",\n \"spdx_id\" : \"MIT\",\n \"key\" : \"mit\",\n \"url\" : \"https://api.github.com/licenses/mit\",\n \"node_id\" : \"MDc6TGljZW5zZW1pdA==\"\n },\n \"full_name\" : \"octocat/Hello-World\",\n \"size\" : 108,\n \"template_repository\" : {\n \"anonymous_access_enabled\" : true,\n \"is_template\" : true,\n \"stargazers_count\" : 7130524628120320459,\n \"pushed_at\" : \"n9m2mnlz1jgx8h8mpn79kfwd4l65t926k1w60wd53x67ab8c6e78w8d4cw\",\n \"language\" : \"8euztuxbdulpwbhwxzkwnmjgiwgtonpgjma7p8dqfkhpgejr1al1zwcnl0co4sjhaxgn5zk2tae5de374xd7xtl5otwy8dve9u3pbfgn57v5hwzqlyoirhunuj5loen8478\",\n \"subscription_url\" : \"https://web.example.mocklab.io/950623\",\n \"branches_url\" : \"https://web.example.mocklab.io/689526\",\n \"allow_rebase_merge\" : false,\n \"issue_comment_url\" : \"https://web.example.mocklab.io/964059\",\n \"labels_url\" : \"https://web.example.mocklab.io/030167\",\n \"permissions\" : { },\n \"subscribers_url\" : \"https://web.example.mocklab.io/804231\",\n \"releases_url\" : \"https://web.example.mocklab.io/368719\",\n \"svn_url\" : \"https://web.example.mocklab.io/810358\",\n \"subscribers_count\" : 4875497682755578475,\n \"id\" : 6382547157664992944,\n \"allow_merge_commit\" : true,\n \"archive_url\" : \"https://web.example.mocklab.io/745206\",\n \"git_refs_url\" : \"https://web.example.mocklab.io/779189\",\n \"forks_url\" : \"https://web.example.mocklab.io/788952\",\n \"visibility\" : \"9aakbd53fzhwwfv7gj7dpxqabo24fwqmoni966vaskzkgy342hysh1r6myw2bthrhksm37bw6s50pq2p6yti8ncsk5qc31yuiztq189jyup95fx0tnoouzx73nqe0vk546f6wk\",\n \"statuses_url\" : \"https://web.example.mocklab.io/735865\",\n \"network_count\" : 4505023542782674258,\n \"ssh_url\" : \"https://web.example.mocklab.io/558376\",\n \"full_name\" : \"Dr. Bettie Little\",\n \"size\" : 4381652177393094127,\n \"languages_url\" : \"https://web.example.mocklab.io/650733\",\n \"clone_url\" : \"https://web.example.mocklab.io/661340\",\n \"collaborators_url\" : \"https://web.example.mocklab.io/126890\",\n \"html_url\" : \"https://web.example.mocklab.io/084036\",\n \"name\" : \"Delicia Stokes Jr.\",\n \"pulls_url\" : \"https://web.example.mocklab.io/179769\",\n \"default_branch\" : \"kczveu8d35qz9nwbhd0rat04qirg6a\",\n \"hooks_url\" : \"https://web.example.mocklab.io/403666\",\n \"trees_url\" : \"https://web.example.mocklab.io/555663\",\n \"tags_url\" : \"https://web.example.mocklab.io/083958\",\n \"contributors_url\" : \"https://web.example.mocklab.io/715759\",\n \"private\" : true,\n \"has_downloads\" : true,\n \"notifications_url\" : \"https://web.example.mocklab.io/478217\",\n \"open_issues_count\" : 2872401294207289043,\n \"created_at\" : \"xxa9xeryzz3c0tk9snkb1ivqlbufv42kjgqhwdjmgk01f633wp4uaj3l618vzo3m78us0hd2z7x9c7lugbt55oot8mpwpyizsx66zru8dgfk5i2xsd8tlgpurcd7i0bpeja1ivp59ba430yrmphucpe5dmnjbzk9m354dh1tjppyjtqexxgjg9ww54otiynzos49o\",\n \"description\" : \"Vitae est a. Et pariatur repellendus ducimus eos error perferendis. Id sit sed quam quibusdam soluta quia facilis.\",\n \"deployments_url\" : \"https://web.example.mocklab.io/059722\",\n \"keys_url\" : \"https://web.example.mocklab.io/814584\",\n \"has_projects\" : false,\n \"archived\" : true,\n \"has_wiki\" : true,\n \"updated_at\" : \"2022-04-20T08:21:58.961598Z\",\n \"comments_url\" : \"https://web.example.mocklab.io/496134\",\n \"stargazers_url\" : \"https://web.example.mocklab.io/649999\",\n \"disabled\" : true,\n \"delete_branch_on_merge\" : false,\n \"git_url\" : \"https://web.example.mocklab.io/707297\",\n \"has_pages\" : false,\n \"owner\" : { },\n \"allow_squash_merge\" : true,\n \"commits_url\" : \"https://web.example.mocklab.io/084322\",\n \"compare_url\" : \"https://web.example.mocklab.io/239476\",\n \"git_commits_url\" : \"https://web.example.mocklab.io/252001\",\n \"topics\" : [ \"99b5iirk3e5uq96c80c5y6uaihr8s8sh0wa21lf1h1k34oor3vcq8fa34100ahypg75f8af5408avfe8obta5g\", \"dj4tnjqk3t3fcgwnnnbyqghrcassyc2xym7yj9w9usd2sqk8yi0kmvqijczxgxt420zv56yrtmyd6pyft1t52oulo8fxo8yoamx00ggn1x537h0s2e5tqu7m3vn08pyclacfal2b5lfizlvjo4lnqf7q94s0la6rrzlthtt82gwyqng4sr0jap9d1jtuj9lb\" ],\n \"blobs_url\" : \"https://web.example.mocklab.io/003666\",\n \"git_tags_url\" : \"https://web.example.mocklab.io/244166\",\n \"merges_url\" : \"https://web.example.mocklab.io/663800\",\n \"downloads_url\" : \"https://web.example.mocklab.io/123553\",\n \"has_issues\" : true,\n \"url\" : \"https://web.example.mocklab.io/759446\",\n \"contents_url\" : \"https://web.example.mocklab.io/848227\",\n \"mirror_url\" : \"https://web.example.mocklab.io/502411\",\n \"milestones_url\" : \"https://web.example.mocklab.io/525037\",\n \"teams_url\" : \"https://web.example.mocklab.io/347718\",\n \"fork\" : false,\n \"issues_url\" : \"https://web.example.mocklab.io/586125\",\n \"events_url\" : \"https://web.example.mocklab.io/675711\",\n \"issue_events_url\" : \"https://web.example.mocklab.io/195951\",\n \"assignees_url\" : \"https://web.example.mocklab.io/395825\",\n \"watchers_count\" : 4248177616272500728,\n \"forks_count\" : 8675052044519182195,\n \"homepage\" : \"qn2dq4ndn63a1lyiiu89uva45uwv\",\n \"node_id\" : \"pcjf\"\n },\n \"languages_url\" : \"http://api.github.com/repos/octocat/Hello-World/languages\",\n \"clone_url\" : \"https://github.com/octocat/Hello-World.git\",\n \"collaborators_url\" : \"http://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator}\",\n \"html_url\" : \"https://github.com/octocat/Hello-World\",\n \"name\" : \"Team Environment\",\n \"pulls_url\" : \"http://api.github.com/repos/octocat/Hello-World/pulls{/number}\",\n \"default_branch\" : \"master\",\n \"hooks_url\" : \"http://api.github.com/repos/octocat/Hello-World/hooks\",\n \"trees_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/trees{/sha}\",\n \"tags_url\" : \"http://api.github.com/repos/octocat/Hello-World/tags\",\n \"contributors_url\" : \"http://api.github.com/repos/octocat/Hello-World/contributors\",\n \"private\" : true,\n \"has_downloads\" : true,\n \"notifications_url\" : \"http://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating}\",\n \"open_issues_count\" : 0,\n \"created_at\" : \"2011-01-26T19:01:12Z\",\n \"description\" : \"This your first repo!\",\n \"watchers\" : 1283372903558272866,\n \"deployments_url\" : \"http://api.github.com/repos/octocat/Hello-World/deployments\",\n \"keys_url\" : \"http://api.github.com/repos/octocat/Hello-World/keys{/key_id}\",\n \"has_projects\" : true,\n \"archived\" : true,\n \"has_wiki\" : true,\n \"updated_at\" : \"2011-01-26T19:14:43Z\",\n \"comments_url\" : \"http://api.github.com/repos/octocat/Hello-World/comments{/number}\",\n \"stargazers_url\" : \"http://api.github.com/repos/octocat/Hello-World/stargazers\",\n \"disabled\" : false,\n \"delete_branch_on_merge\" : false,\n \"git_url\" : \"git:github.com/octocat/Hello-World.git\",\n \"has_pages\" : false,\n \"owner\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Mr. Aiko Kuhlman\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"46zkrpcehbs94krd\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"allow_squash_merge\" : true,\n \"commits_url\" : \"http://api.github.com/repos/octocat/Hello-World/commits{/sha}\",\n \"compare_url\" : \"http://api.github.com/repos/octocat/Hello-World/compare/{base}...{head}\",\n \"git_commits_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/commits{/sha}\",\n \"topics\" : [ \"efv7q6uugv57zh1a4opjc8pvok9fc9jpalk9221kbwg1d9vy7i4edfwxeb0wn5gvv1rlgc7j1wbybqgzxdpgm0v2cw4245kdn8qn\", \"0uj1ieptbcf9mk61rli74rfz0b65t12nmi2xfc7rq7g0ix6ehibh8jfp4ltvarcj6p1qw76vvih\", \"uoqdaqdyq7x0vi0h7jrr3qf3k3ciqgel2zdj9kz9gra5nl7oa19na775nf942j4xj8gqdrunhur0xx8bdy2hcdi0t5lhbttj0\", \"2y13l1vi8qot8dsoxgqmadhhanol0qh5slrrh05ngfvs\", \"fbcpf4udqhwwfipzjuwwv6mvr3qy2j93lc32p1kuiiu2574pfcwtmw7mh4pfh4c3r95pvelhi9bvf0wj0i1wj0ldp5piwrl7dcuw06edrtkxnucnryb0f1wkcjk3d9wse3hua1dbx8p7sowxbtpd0fx6pw\" ],\n \"blobs_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/blobs{/sha}\",\n \"git_tags_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/tags{/sha}\",\n \"merges_url\" : \"http://api.github.com/repos/octocat/Hello-World/merges\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:42Z\\\"\",\n \"downloads_url\" : \"http://api.github.com/repos/octocat/Hello-World/downloads\",\n \"has_issues\" : true,\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World\",\n \"contents_url\" : \"http://api.github.com/repos/octocat/Hello-World/contents/{+path}\",\n \"mirror_url\" : \"git:git.example.com/octocat/Hello-World\",\n \"milestones_url\" : \"http://api.github.com/repos/octocat/Hello-World/milestones{/number}\",\n \"teams_url\" : \"http://api.github.com/repos/octocat/Hello-World/teams\",\n \"fork\" : false,\n \"issues_url\" : \"http://api.github.com/repos/octocat/Hello-World/issues{/number}\",\n \"events_url\" : \"http://api.github.com/repos/octocat/Hello-World/events\",\n \"issue_events_url\" : \"http://api.github.com/repos/octocat/Hello-World/issues/events{/number}\",\n \"organization\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Jame Terry\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"auafcm4gob6goviykob0toryz6jbsc9namlk81gbeplzjt9isojj8xpbm4e1oocya22b7g0cocc9p86w3ynazc651pu\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"assignees_url\" : \"http://api.github.com/repos/octocat/Hello-World/assignees{/user}\",\n \"open_issues\" : 6430598016947751876,\n \"watchers_count\" : 80,\n \"forks_count\" : 9,\n \"homepage\" : \"https://github.com\",\n \"node_id\" : \"MDEwOlJlcG9zaXRvcnkxMjk2MjY5\"\n },\n \"title\" : \"Found a bug\",\n \"author_association\" : \"OWNER\",\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347/labels{/name}\",\n \"number\" : 1347,\n \"performed_via_github_app\" : {\n \"owner\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Zenobia Greenfelder II\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"lb05riqra289t7bo8tgt3r850wy3e7lvajuny00a58f0dqajlgbt3d6pxp99tqrnj97ioe8rc2g54tx6fboxsotcp8csq7r4n2ovkn3qdbl6jwkfyzz5cc4gf9hvvq1rvqp7i38k24bdl8hgcjzkhd84g7lb630z78qf6qbfz\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"installations_count\" : 5,\n \"created_at\" : \"2017-07-08T16:18:44-04:00\",\n \"description\" : \"The description of the app.\",\n \"client_id\" : \"\\\"Iv1.25b5d1e65ffc4022\\\"\",\n \"external_url\" : \"https://example.com\",\n \"updated_at\" : \"2017-07-08T16:18:44-04:00\",\n \"permissions\" : {\n \"deployments\" : \"write\",\n \"issues\" : \"read\"\n },\n \"html_url\" : \"https://github.com/apps/super-ci\",\n \"name\" : \"Probot Owners\",\n \"pem\" : \"\\\"-----BEGIN RSA PRIVATE KEY-----\\\\nMIIEogIBAAKCAQEArYxrNYD/iT5CZVpRJu4rBKmmze3PVmT/gCo2ATUvDvZTPTey\\\\nxcGJ3vvrJXazKk06pN05TN29o98jrYz4cengG3YGsXPNEpKsIrEl8NhbnxapEnM9\\\\nJCMRe0P5JcPsfZlX6hmiT7136GRWiGOUba2X9+HKh8QJVLG5rM007TBER9/z9mWm\\\\nrJuNh+m5l320oBQY/Qq3A7wzdEfZw8qm/mIN0FCeoXH1L6B8xXWaAYBwhTEh6SSn\\\\nZHlO1Xu1JWDmAvBCi0RO5aRSKM8q9QEkvvHP4yweAtK3N8+aAbZ7ovaDhyGz8r6r\\\\nzhU1b8Uo0Z2ysf503WqzQgIajr7Fry7/kUwpgQIDAQABAoIBADwJp80Ko1xHPZDy\\\\nfcCKBDfIuPvkmSW6KumbsLMaQv1aGdHDwwTGv3t0ixSay8CGlxMRtRDyZPib6SvQ\\\\n6OH/lpfpbMdW2ErkksgtoIKBVrDilfrcAvrNZu7NxRNbhCSvN8q0s4ICecjbbVQh\\\\nnueSdlA6vGXbW58BHMq68uRbHkP+k+mM9U0mDJ1HMch67wlg5GbayVRt63H7R2+r\\\\nVxcna7B80J/lCEjIYZznawgiTvp3MSanTglqAYi+m1EcSsP14bJIB9vgaxS79kTu\\\\noiSo93leJbBvuGo8QEiUqTwMw4tDksmkLsoqNKQ1q9P7LZ9DGcujtPy4EZsamSJT\\\\ny8OJt0ECgYEA2lxOxJsQk2kI325JgKFjo92mQeUObIvPfSNWUIZQDTjniOI6Gv63\\\\nGLWVFrZcvQBWjMEQraJA9xjPbblV8PtfO87MiJGLWCHFxmPz2dzoedN+2Coxom8m\\\\nV95CLz8QUShuao6u/RYcvUaZEoYs5bHcTmy5sBK80JyEmafJPtCQVxMCgYEAy3ar\\\\nZr3yv4xRPEPMat4rseswmuMooSaK3SKub19WFI5IAtB/e7qR1Rj9JhOGcZz+OQrl\\\\nT78O2OFYlgOIkJPvRMrPpK5V9lslc7tz1FSh3BZMRGq5jSyD7ETSOQ0c8T2O/s7v\\\\nbeEPbVbDe4mwvM24XByH0GnWveVxaDl51ABD65sCgYB3ZAspUkOA5egVCh8kNpnd\\\\nSd6SnuQBE3ySRlT2WEnCwP9Ph6oPgn+oAfiPX4xbRqkL8q/k0BdHQ4h+zNwhk7+h\\\\nWtPYRAP1Xxnc/F+jGjb+DVaIaKGU18MWPg7f+FI6nampl3Q0KvfxwX0GdNhtio8T\\\\nTj1E+SnFwh56SRQuxSh2gwKBgHKjlIO5NtNSflsUYFM+hyQiPiqnHzddfhSG+/3o\\\\nm5nNaSmczJesUYreH5San7/YEy2UxAugvP7aSY2MxB+iGsiJ9WD2kZzTUlDZJ7RV\\\\nUzWsoqBR+eZfVJ2FUWWvy8TpSG6trh4dFxImNtKejCR1TREpSiTV3Zb1dmahK9GV\\\\nrK9NAoGAbBxRLoC01xfxCTgt5BDiBcFVh4fp5yYKwavJPLzHSpuDOrrI9jDn1oKN\\\\nonq5sDU1i391zfQvdrbX4Ova48BN+B7p63FocP/MK5tyyBoT8zQEk2+vWDOw7H/Z\\\\nu5dTCPxTIsoIwUw1I+7yIxqJzLPFgR2gVBwY1ra/8iAqCj+zeBw=\\\\n-----END RSA PRIVATE KEY-----\\\\n\\\"\",\n \"webhook_secret\" : \"\\\"6fba8f2fc8a7e8f2cca5577eddd82ca7586b3b6b\\\"\",\n \"client_secret\" : \"\\\"1d4b2097ac622ba702d19de498f005747a8b21d3\\\"\",\n \"id\" : 37,\n \"events\" : [ \"label\", \"deployment\" ],\n \"slug\" : \"probot-owners\",\n \"node_id\" : \"MDExOkludGVncmF0aW9uMQ==\"\n },\n \"updated_at\" : \"2011-04-22T13:33:48Z\",\n \"comments_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347/comments\",\n \"active_lock_reason\" : \"too heated\",\n \"id\" : 1,\n \"repository_url\" : \"https://api.github.com/repos/octocat/Hello-World\",\n \"state\" : \"open\",\n \"locked\" : true,\n \"timeline_url\" : \"https://web.example.mocklab.io/978144\",\n \"pull_request\" : {\n \"patch_url\" : \"https://web.example.mocklab.io/450695\",\n \"html_url\" : \"https://web.example.mocklab.io/980402\",\n \"merged_at\" : \"2023-03-14T19:32:34.963Z\",\n \"diff_url\" : \"https://web.example.mocklab.io/884875\",\n \"url\" : \"https://web.example.mocklab.io/769745\"\n },\n \"closed_at\" : \"2023-08-27T18:52:20.964Z\",\n \"comments\" : 0,\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347\",\n \"labels\" : [ {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n }, {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n }, {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n }, {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n }, {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n }, {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n }, {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n } ],\n \"milestone\" : {\n \"creator\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Edmund Wiegand\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"s22t8cg68xptjeypt46ls4zbdl038eq4e96yw516wtvnlqt5p3u77w2ljkud1o4wld6qi5mzunlk2i3u4lc65k7u523wafq1h525ps0hq7lx9xym6xs5aefz84v4sw3da\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"closed_at\" : \"2013-02-12T13:22:01Z\",\n \"created_at\" : \"2011-04-10T20:09:31Z\",\n \"description\" : \"Tracking milestone for version 1.0\",\n \"closed_issues\" : 8,\n \"title\" : \"v1.0\",\n \"due_on\" : \"2012-10-09T23:39:01Z\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones/1\",\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones/1/labels\",\n \"number\" : 42,\n \"updated_at\" : \"2014-03-03T18:58:10Z\",\n \"html_url\" : \"https://github.com/octocat/Hello-World/milestones/v1.0\",\n \"id\" : 1002604,\n \"state\" : \"open\",\n \"open_issues\" : 4,\n \"node_id\" : \"MDk6TWlsZXN0b25lMTAwMjYwNA==\"\n },\n \"events_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347/events\",\n \"html_url\" : \"https://github.com/octocat/Hello-World/issues/1347\",\n \"assignee\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Mr. Janiece O'Conner\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"e8bvjd4pcq7ll01phuev1v5pu1gfzxkbfls3brlf\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"user\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"adaline.hintz\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"t1efh97v7nq31ikqk2ap2koqens7vkrtworhrutw4gi0tc9qogk3tjs4avm9essnmjmkjor4lu8vzcbaxxsxnehm9sorhxcajjhe4ghupqbm86ai31zbhb09t8j38anvbc1dnoun2zh873xl24itd8htzkp40rk5a9zzbebrv3l4tupw91sr\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"node_id\" : \"MDU6SXNzdWUx\"\n },\n \"action\" : \"8ze36sik6r20l3wdjsnht966cdzg5zizll38euvcffo3pjjcz44qmidcu\",\n \"comment\" : {\n \"issue_url\" : \"https://web.example.mocklab.io/621164\",\n \"body_html\" : \"xulsi10o0brgboue4geztqtqr60e90h4uh49c5tg77noqsrpsx1u7kgsvapugto5b1z63laihwx56aekbdlioowrqv\",\n \"body_text\" : \"co2xcnjmicqjiqok1otadvwvqdua0cxndqj8y1oju4kvvwv3qbcu5nxugex0qlqgyay2yxxkbba0b6n60l7867km5wuwh43zbrbjtufsxtyhbgyupu7yggxf1m7ymtn8sn68ibxwshalhklur82p2c2i4\",\n \"created_at\" : \"2011-04-14T16:00:49Z\",\n \"body\" : \"What version of Safari were you using when you observed this bug?\",\n \"url\" : \"https://api.github.com/repositories/42/issues/comments/1\",\n \"author_association\" : \"OWNER\",\n \"performed_via_github_app\" : {\n \"owner\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Shelby Ankunding\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"15z4n93hacwk9epvix91xgw004p81zdhn4wej21dy9pq\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"installations_count\" : 5,\n \"created_at\" : \"2017-07-08T16:18:44-04:00\",\n \"description\" : \"The description of the app.\",\n \"client_id\" : \"\\\"Iv1.25b5d1e65ffc4022\\\"\",\n \"external_url\" : \"https://example.com\",\n \"updated_at\" : \"2017-07-08T16:18:44-04:00\",\n \"permissions\" : {\n \"deployments\" : \"write\",\n \"issues\" : \"read\"\n },\n \"html_url\" : \"https://github.com/apps/super-ci\",\n \"name\" : \"Probot Owners\",\n \"pem\" : \"\\\"-----BEGIN RSA PRIVATE KEY-----\\\\nMIIEogIBAAKCAQEArYxrNYD/iT5CZVpRJu4rBKmmze3PVmT/gCo2ATUvDvZTPTey\\\\nxcGJ3vvrJXazKk06pN05TN29o98jrYz4cengG3YGsXPNEpKsIrEl8NhbnxapEnM9\\\\nJCMRe0P5JcPsfZlX6hmiT7136GRWiGOUba2X9+HKh8QJVLG5rM007TBER9/z9mWm\\\\nrJuNh+m5l320oBQY/Qq3A7wzdEfZw8qm/mIN0FCeoXH1L6B8xXWaAYBwhTEh6SSn\\\\nZHlO1Xu1JWDmAvBCi0RO5aRSKM8q9QEkvvHP4yweAtK3N8+aAbZ7ovaDhyGz8r6r\\\\nzhU1b8Uo0Z2ysf503WqzQgIajr7Fry7/kUwpgQIDAQABAoIBADwJp80Ko1xHPZDy\\\\nfcCKBDfIuPvkmSW6KumbsLMaQv1aGdHDwwTGv3t0ixSay8CGlxMRtRDyZPib6SvQ\\\\n6OH/lpfpbMdW2ErkksgtoIKBVrDilfrcAvrNZu7NxRNbhCSvN8q0s4ICecjbbVQh\\\\nnueSdlA6vGXbW58BHMq68uRbHkP+k+mM9U0mDJ1HMch67wlg5GbayVRt63H7R2+r\\\\nVxcna7B80J/lCEjIYZznawgiTvp3MSanTglqAYi+m1EcSsP14bJIB9vgaxS79kTu\\\\noiSo93leJbBvuGo8QEiUqTwMw4tDksmkLsoqNKQ1q9P7LZ9DGcujtPy4EZsamSJT\\\\ny8OJt0ECgYEA2lxOxJsQk2kI325JgKFjo92mQeUObIvPfSNWUIZQDTjniOI6Gv63\\\\nGLWVFrZcvQBWjMEQraJA9xjPbblV8PtfO87MiJGLWCHFxmPz2dzoedN+2Coxom8m\\\\nV95CLz8QUShuao6u/RYcvUaZEoYs5bHcTmy5sBK80JyEmafJPtCQVxMCgYEAy3ar\\\\nZr3yv4xRPEPMat4rseswmuMooSaK3SKub19WFI5IAtB/e7qR1Rj9JhOGcZz+OQrl\\\\nT78O2OFYlgOIkJPvRMrPpK5V9lslc7tz1FSh3BZMRGq5jSyD7ETSOQ0c8T2O/s7v\\\\nbeEPbVbDe4mwvM24XByH0GnWveVxaDl51ABD65sCgYB3ZAspUkOA5egVCh8kNpnd\\\\nSd6SnuQBE3ySRlT2WEnCwP9Ph6oPgn+oAfiPX4xbRqkL8q/k0BdHQ4h+zNwhk7+h\\\\nWtPYRAP1Xxnc/F+jGjb+DVaIaKGU18MWPg7f+FI6nampl3Q0KvfxwX0GdNhtio8T\\\\nTj1E+SnFwh56SRQuxSh2gwKBgHKjlIO5NtNSflsUYFM+hyQiPiqnHzddfhSG+/3o\\\\nm5nNaSmczJesUYreH5San7/YEy2UxAugvP7aSY2MxB+iGsiJ9WD2kZzTUlDZJ7RV\\\\nUzWsoqBR+eZfVJ2FUWWvy8TpSG6trh4dFxImNtKejCR1TREpSiTV3Zb1dmahK9GV\\\\nrK9NAoGAbBxRLoC01xfxCTgt5BDiBcFVh4fp5yYKwavJPLzHSpuDOrrI9jDn1oKN\\\\nonq5sDU1i391zfQvdrbX4Ova48BN+B7p63FocP/MK5tyyBoT8zQEk2+vWDOw7H/Z\\\\nu5dTCPxTIsoIwUw1I+7yIxqJzLPFgR2gVBwY1ra/8iAqCj+zeBw=\\\\n-----END RSA PRIVATE KEY-----\\\\n\\\"\",\n \"webhook_secret\" : \"\\\"6fba8f2fc8a7e8f2cca5577eddd82ca7586b3b6b\\\"\",\n \"client_secret\" : \"\\\"1d4b2097ac622ba702d19de498f005747a8b21d3\\\"\",\n \"id\" : 37,\n \"events\" : [ \"label\", \"deployment\" ],\n \"slug\" : \"probot-owners\",\n \"node_id\" : \"MDExOkludGVncmF0aW9uMQ==\"\n },\n \"updated_at\" : \"2011-04-14T16:00:49Z\",\n \"html_url\" : \"https://web.example.mocklab.io/069472\",\n \"reactions\" : {\n \"confused\" : 5959561824367599784,\n \"-1\" : 8789789176044206662,\n \"+1\" : 3041701435058633455,\n \"total_count\" : 6056715964296448276,\n \"rocket\" : 6839220535149921071,\n \"hooray\" : 7913907776125592282,\n \"eyes\" : 2799730035831118597,\n \"heart\" : 8592831070072243159,\n \"laugh\" : 4937506016405029625,\n \"url\" : \"https://web.example.mocklab.io/110421\"\n },\n \"id\" : 42,\n \"user\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"herschel.howell\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"1pfols06t9jatfcfpr1gfr5a7u3w6y3yd9p2ryh8my0awj5918q4yxuz86zvn0c1z4dwop81m8kmvrp3esupq\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"node_id\" : \"z6m9\"\n }\n },\n \"repo\" : {\n \"name\" : \"Miss Cedric Rosenbaum\",\n \"id\" : 798346874435668622,\n \"url\" : \"https://web.example.mocklab.io/345495\"\n },\n \"created_at\" : \"2024-02-12T16:48:21.965Z\",\n \"id\" : \"t0o9\",\n \"type\" : \"mjfn351pwl1m8qtk53jvluzz8jhdlcv3rciygpdkfwa7kra142o6uvqfjkvd7rppy9b5isb5ln7blwl9kap49dnvxm3egs2x8lihdrul2q3nbvei8fs7j940f3w9lg43bwk0k5pgydy2wppioh6fs7faqub96rxepiotvr59toh4icee13hv4u24am3j2sy8tbrcsk\"\n}, {\n \"actor\" : {\n \"display_login\" : \"b9clp8poitqk\",\n \"avatar_url\" : \"https://s3.amazonaws.com/uifaces/faces/twitter/j04ntoh/128.jpg\",\n \"id\" : 2919770507234054218,\n \"login\" : \"lhkfztb8xr51giyoc93sbua0yh68uhs1795drd8t4e8pnc3qurqe3m2wfxo69pdxfe5cnks9rnri3ahwp\",\n \"gravatar_id\" : \"9juf\",\n \"url\" : \"https://web.example.mocklab.io/358944\"\n },\n \"public\" : true,\n \"org\" : {\n \"display_login\" : \"fbwhauc2j6e2x9jfiz7guoy5il8k79p5zwwubl9ksk6rvnjs3pudtqahcsp0xdt3uazcmayps8clduc9dn3eacxzgmobgfc3o4bc5r8d0ypqnkairbytrs27s0hmpnqejf6oqu9xq5wh4rh8162bpxt865thkhjopac9apy4s6f596x6cbossi6u5nwch2j0hzi3sfbi\",\n \"avatar_url\" : \"https://s3.amazonaws.com/uifaces/faces/twitter/joetruesdell/128.jpg\",\n \"id\" : 5620560509093200453,\n \"login\" : \"y2puj3kp7hbazn5jzhokbulxgv5ekob23nedba6kj60gs3fnkfukpqyv3hkcaqqdng8fo0gyr31goskfs2107bcp182s92mua62yg93djmoorgw61p20h1zvx67w6jko\",\n \"gravatar_id\" : \"rusa\",\n \"url\" : \"https://web.example.mocklab.io/305224\"\n },\n \"payload\" : {\n \"pages\" : [ {\n \"summary\" : \"Impedit aperiam id. Distinctio assumenda quia explicabo ut quo vel. Deserunt eius cupiditate dolore.\",\n \"html_url\" : \"https://web.example.mocklab.io/958352\",\n \"page_name\" : \"Randolph Willms\",\n \"action\" : \"pk19293n2vz6x8468m6382qm5zk1krsmy93f0fhntsg233lqyqyuix8wwfinkcjlym697tcd\",\n \"title\" : \"Quidem ducimus ut neque consequatur excepturi nihil.\",\n \"sha\" : \"uodv9hpazvltu0y3ag3mwxmfyg6lpay5onkvonwcnr8niehjns0ql5at0\"\n }, {\n \"summary\" : \"Ducimus ipsam minima. Aut autem vero voluptatem quos alias blanditiis. Quam numquam non mollitia autem.\",\n \"html_url\" : \"https://web.example.mocklab.io/894242\",\n \"page_name\" : \"Jamey Keebler DVM\",\n \"action\" : \"2ujsrrz8gmjnrrxzi933r3fxgwhioz\",\n \"title\" : \"Esse sint quos voluptatem repudiandae tenetur.\",\n \"sha\" : \"z6p9warlgw1ypt2ab1fqg25vw1blr6b70p537ncmveu0smxt3pj9obvdnvc\"\n }, {\n \"summary\" : \"Sed ex ipsum sequi dolores et qui est. Sit harum sint tenetur. Quia non sapiente reprehenderit voluptatem cupiditate.\",\n \"html_url\" : \"https://web.example.mocklab.io/612820\",\n \"page_name\" : \"Elvia Tillman\",\n \"action\" : \"3v01dijjz3qb2a5n98ncyr9fpb98x3al376sghomr55prsdle2v4u4sw71mq8oq43noiirzyv1kkk9h6lunt825or\",\n \"title\" : \"Sequi illum eum est reprehenderit temporibus dignissimos.\",\n \"sha\" : \"t6z3h2yzi91tjc3g89ib0o442j511wip6le9lvfv8oaslkfy776ef6x0mf3kj6fmo6v11em1ry9jwa16p1p5qy251gc0t51nquaoe5e1goaq5qnxwoohvufw83nnmv0s4lyycyp6ux2lgwkvqg2ijxtgqcif8msfb2gb70uwxr1cl0oimcs4y\"\n } ],\n \"issue\" : {\n \"body_html\" : \"pnqlfqtiisbcbnzsutgvzuxn4wwv5zm8fvngz7z9mscoyfoasw48asrmla8zne72iyysdrtu54d80a2wulcqwiui6m2e2eltf5w3dsmah1t2hw7qbn9n2cmfb5a7qsa2d8tq6w6ogvtk9aonfz6yo7roxqnj\",\n \"body_text\" : \"zu4j4w3m3gargy582o0siqr27q3gelh60t81dr0disyn41kgedxb81ykpr4z4qe8h9oq2qm09vy2o9\",\n \"assignees\" : [ {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Lashonda Ernser\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"noftbtapi9bwz1lynsqpq314x33fuog2x68hvr6s911s6vqr6j66c28t8gzwag6i27tjp1ykkgo61ans7rw2vnw2t6iegticzvuape73sz3cu4fk9z4lutp0tuv0rlgg8ca7v9z4xlkg3iv4xc69l4x1vfcrb3bsshfaco9g6eijf4ymnxew8v20lyf\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n }, {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Kurtis Osinski\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"tedf3fdhunlungb9t8gb1v9ivyvl3gl2mnmzgwj33huwf44w64i5nzo4a7s3evdvcjugf5j6iizmijhjxltzw9fyomzt2ojdclef98e50zaysnqy1mn5q7yt5198nvj15ui04af5oz1lyy6bvrjmxae44r\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n }, {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Dora Turcotte\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"iqn0v4oq496w8lafihsvk5gkph8z1031g284gboo3hm81n59ysa2kvmigx3rgdb8yx36ohukc9xge1gng1ygu3u60juh1u12ho6i7498u2htn0rt16hwcl0vyw1cw9umdyqy2vmfuswo94q8dibl0hjx\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n }, {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Carie Sanford\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"osrgdwm7bpoc64kuuh7dizi8g8ykwek5acx34j0hhgcuqzwkjuku28ifzdrteex9fnu8heb2jjy3zqin1464clxzwgt\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n }, {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Dominica Shanahan\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"9c3s0yw9h186y0d20q25oe1rn9l2be36s71i8lqggih7769pgyurw7ypl\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n } ],\n \"created_at\" : \"2011-04-22T13:33:48Z\",\n \"body\" : \"I'm having a problem with this.\",\n \"repository\" : {\n \"allow_forking\" : false,\n \"anonymous_access_enabled\" : false,\n \"is_template\" : true,\n \"stargazers_count\" : 80,\n \"pushed_at\" : \"2011-01-26T19:06:43Z\",\n \"language\" : \"ynpnraysildzovxngrguoaa2t2oa1\",\n \"subscription_url\" : \"http://api.github.com/repos/octocat/Hello-World/subscription\",\n \"branches_url\" : \"http://api.github.com/repos/octocat/Hello-World/branches{/branch}\",\n \"allow_rebase_merge\" : true,\n \"issue_comment_url\" : \"http://api.github.com/repos/octocat/Hello-World/issues/comments{/number}\",\n \"labels_url\" : \"http://api.github.com/repos/octocat/Hello-World/labels{/name}\",\n \"permissions\" : {\n \"pull\" : false,\n \"maintain\" : false,\n \"admin\" : true,\n \"triage\" : true,\n \"push\" : true\n },\n \"subscribers_url\" : \"http://api.github.com/repos/octocat/Hello-World/subscribers\",\n \"releases_url\" : \"http://api.github.com/repos/octocat/Hello-World/releases{/id}\",\n \"svn_url\" : \"https://svn.github.com/octocat/Hello-World\",\n \"subscribers_count\" : 3824870112939024682,\n \"id\" : 42,\n \"master_branch\" : \"2a92myzhwqui837e8zuuhbg3farkunqnzq7erwgqmzargoxyqboqgzwmk1t6zexqrwi89dfd8oj6oext9w8n4fzm80pohvhz7xcgyd0mbkoke3pryemvngz6bq5ahum4\",\n \"forks\" : 2871031794353121784,\n \"allow_merge_commit\" : true,\n \"archive_url\" : \"http://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref}\",\n \"git_refs_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/refs{/sha}\",\n \"forks_url\" : \"http://api.github.com/repos/octocat/Hello-World/forks\",\n \"visibility\" : \"qwq6uq06dubqujtqc596lvk9d0t0qmj0iiyshym6li4ps3om31krt4a8865x24mxpq6ajxp5s6lxlthw7jdvv0fbp91k3n1mqqub5thqry4dc13hji\",\n \"statuses_url\" : \"http://api.github.com/repos/octocat/Hello-World/statuses/{sha}\",\n \"network_count\" : 7040620858480878552,\n \"ssh_url\" : \"git@github.com:octocat/Hello-World.git\",\n \"license\" : {\n \"html_url\" : \"https://web.example.mocklab.io/807343\",\n \"name\" : \"MIT License\",\n \"spdx_id\" : \"MIT\",\n \"key\" : \"mit\",\n \"url\" : \"https://api.github.com/licenses/mit\",\n \"node_id\" : \"MDc6TGljZW5zZW1pdA==\"\n },\n \"full_name\" : \"octocat/Hello-World\",\n \"size\" : 108,\n \"template_repository\" : {\n \"anonymous_access_enabled\" : true,\n \"is_template\" : false,\n \"stargazers_count\" : 640280898135463561,\n \"pushed_at\" : \"wkrhaf\",\n \"language\" : \"gnbsmxynn4wcc1qam4s8lcqe7ohfms06qhazzk8msb0wkqen67dtwwdtscw4054b0p22qmpai8hwoyqagkkfondnh809fghk7duh8lt32brmcgumk0a0lv73knuhlqdt12qxd948qgr688epibag7xgjz7kp3e6m0sf9kz2jwwcm7vltiexxh8jx972bkt9azg5\",\n \"subscription_url\" : \"https://web.example.mocklab.io/013336\",\n \"branches_url\" : \"https://web.example.mocklab.io/590730\",\n \"allow_rebase_merge\" : false,\n \"issue_comment_url\" : \"https://web.example.mocklab.io/631684\",\n \"labels_url\" : \"https://web.example.mocklab.io/178252\",\n \"permissions\" : { },\n \"subscribers_url\" : \"https://web.example.mocklab.io/945325\",\n \"releases_url\" : \"https://web.example.mocklab.io/469827\",\n \"svn_url\" : \"https://web.example.mocklab.io/177545\",\n \"subscribers_count\" : 2452319983877290057,\n \"id\" : 6551307435604559745,\n \"allow_merge_commit\" : false,\n \"archive_url\" : \"https://web.example.mocklab.io/445699\",\n \"git_refs_url\" : \"https://web.example.mocklab.io/654327\",\n \"forks_url\" : \"https://web.example.mocklab.io/759348\",\n \"visibility\" : \"xr0cpz7bqvtx4jtqebirm9170jl60feue7cox140t4\",\n \"statuses_url\" : \"https://web.example.mocklab.io/084669\",\n \"network_count\" : 5214338082076848415,\n \"ssh_url\" : \"https://web.example.mocklab.io/612477\",\n \"full_name\" : \"Billy Wiza\",\n \"size\" : 9003068393813817637,\n \"languages_url\" : \"https://web.example.mocklab.io/838193\",\n \"clone_url\" : \"https://web.example.mocklab.io/494728\",\n \"collaborators_url\" : \"https://web.example.mocklab.io/342500\",\n \"html_url\" : \"https://web.example.mocklab.io/600930\",\n \"name\" : \"Hunter Cartwright\",\n \"pulls_url\" : \"https://web.example.mocklab.io/828831\",\n \"default_branch\" : \"2xu4t3tz4drmizowmyjnqgj14yuf3umn1w2b3hne58254gvsici3yhhdlzay1nr\",\n \"hooks_url\" : \"https://web.example.mocklab.io/318609\",\n \"trees_url\" : \"https://web.example.mocklab.io/035341\",\n \"tags_url\" : \"https://web.example.mocklab.io/582709\",\n \"contributors_url\" : \"https://web.example.mocklab.io/196652\",\n \"private\" : false,\n \"has_downloads\" : true,\n \"notifications_url\" : \"https://web.example.mocklab.io/301021\",\n \"open_issues_count\" : 4495099373818336827,\n \"created_at\" : \"7je84sy1aktfzr7g58c8k35c\",\n \"description\" : \"Earum voluptatem quos. Aut quaerat quia asperiores provident deserunt. Reprehenderit illo doloremque. Architecto molestiae quisquam sunt dolorem pariatur. Ex nostrum soluta perferendis.\",\n \"deployments_url\" : \"https://web.example.mocklab.io/598351\",\n \"keys_url\" : \"https://web.example.mocklab.io/011337\",\n \"has_projects\" : false,\n \"archived\" : true,\n \"has_wiki\" : false,\n \"updated_at\" : \"2023-01-28T08:04:58.969782Z\",\n \"comments_url\" : \"https://web.example.mocklab.io/173167\",\n \"stargazers_url\" : \"https://web.example.mocklab.io/287240\",\n \"disabled\" : false,\n \"delete_branch_on_merge\" : false,\n \"git_url\" : \"https://web.example.mocklab.io/507537\",\n \"has_pages\" : false,\n \"owner\" : { },\n \"allow_squash_merge\" : false,\n \"commits_url\" : \"https://web.example.mocklab.io/610156\",\n \"compare_url\" : \"https://web.example.mocklab.io/018684\",\n \"git_commits_url\" : \"https://web.example.mocklab.io/474568\",\n \"topics\" : [ \"h6w4xlmnuy2mlfh2yuvstzu1pzaz11\", \"33151kx5e5bruluyctq0dbmgk8a9uy7bpm4cyqm6s207d9bm7jlqnn5928cfa4cxy819ya00o107318fm74g7s8pu2bioz2q9zwpmgxehtb7uotu6xnmn18v0oj3pvpb6tkychd1takhxn0uu5y4hno0z4nwf9ygj0em2ky90n8n017gf7p7f5kggsgr34o1xa\", \"jhd8t4j\", \"qh765uq2r01fyw4gh032476m9pyl1oli8rxl14dk89lzh0p2qzr2hf24xg65kqxoy4\", \"8cxo760v90vip1psafd6kc3dyfbxsas55nkq27vhl75slzh9ntp6fr4ux\", \"ma6huvgk9igwg5zytza854wo1g02ciw4sxmh8eld0hs69njqj1fh7uxm53r7kfzpin1m0w0lncws4wbt2z5nqdbdg7hx9qsi4v4x7x5uuihrz9u7z6i4dddbl0yo3zbu11vhb59jqovyxr1c5\", \"ggb9nr1e11hodbeuflyujif6s17o219o7j42kfjtpwuwftply4yo7kpaq0t15ju1m7npkoyo6aukw3l9bjyif6e9vlg15ybsh9lgioxjk69gok611iaeg1hkj602jyr645cdm\" ],\n \"blobs_url\" : \"https://web.example.mocklab.io/375751\",\n \"git_tags_url\" : \"https://web.example.mocklab.io/088472\",\n \"merges_url\" : \"https://web.example.mocklab.io/796322\",\n \"downloads_url\" : \"https://web.example.mocklab.io/585048\",\n \"has_issues\" : true,\n \"url\" : \"https://web.example.mocklab.io/840453\",\n \"contents_url\" : \"https://web.example.mocklab.io/414337\",\n \"mirror_url\" : \"https://web.example.mocklab.io/213493\",\n \"milestones_url\" : \"https://web.example.mocklab.io/399896\",\n \"teams_url\" : \"https://web.example.mocklab.io/854525\",\n \"fork\" : true,\n \"issues_url\" : \"https://web.example.mocklab.io/111943\",\n \"events_url\" : \"https://web.example.mocklab.io/588666\",\n \"issue_events_url\" : \"https://web.example.mocklab.io/671364\",\n \"assignees_url\" : \"https://web.example.mocklab.io/545649\",\n \"watchers_count\" : 7976877951331695406,\n \"forks_count\" : 5396154521456294376,\n \"homepage\" : \"6wpgxhh4lyvl7v2iynpdf7nlc6juvcyz4890feepcpze4tt5gd4a2eh5fpub5v7vyiow3eyl42b8f66w401tr6dm66pr2l39ud00fwzgi6w30rzyj6s339oogjabwnn9tnbskisxpm6kbuuk80lfinkea9hx28dbdzqpa8ptyk1poueio6n55vrtzo0bzw0y2olxa\",\n \"node_id\" : \"5zrf\"\n },\n \"languages_url\" : \"http://api.github.com/repos/octocat/Hello-World/languages\",\n \"clone_url\" : \"https://github.com/octocat/Hello-World.git\",\n \"collaborators_url\" : \"http://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator}\",\n \"html_url\" : \"https://github.com/octocat/Hello-World\",\n \"name\" : \"Team Environment\",\n \"pulls_url\" : \"http://api.github.com/repos/octocat/Hello-World/pulls{/number}\",\n \"default_branch\" : \"master\",\n \"hooks_url\" : \"http://api.github.com/repos/octocat/Hello-World/hooks\",\n \"trees_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/trees{/sha}\",\n \"tags_url\" : \"http://api.github.com/repos/octocat/Hello-World/tags\",\n \"contributors_url\" : \"http://api.github.com/repos/octocat/Hello-World/contributors\",\n \"private\" : true,\n \"has_downloads\" : true,\n \"notifications_url\" : \"http://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating}\",\n \"open_issues_count\" : 0,\n \"created_at\" : \"2011-01-26T19:01:12Z\",\n \"description\" : \"This your first repo!\",\n \"watchers\" : 8733228172151465852,\n \"deployments_url\" : \"http://api.github.com/repos/octocat/Hello-World/deployments\",\n \"keys_url\" : \"http://api.github.com/repos/octocat/Hello-World/keys{/key_id}\",\n \"has_projects\" : true,\n \"archived\" : false,\n \"has_wiki\" : true,\n \"updated_at\" : \"2011-01-26T19:14:43Z\",\n \"comments_url\" : \"http://api.github.com/repos/octocat/Hello-World/comments{/number}\",\n \"stargazers_url\" : \"http://api.github.com/repos/octocat/Hello-World/stargazers\",\n \"disabled\" : false,\n \"delete_branch_on_merge\" : false,\n \"git_url\" : \"git:github.com/octocat/Hello-World.git\",\n \"has_pages\" : false,\n \"owner\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Raven Macejkovic\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"p82df6uwyx50n09075pgwdhm57qouyeyvphrkajganatlmk1qwed0twseyw2gn7nvsbvo0c1xdytfzrbwfby\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"allow_squash_merge\" : true,\n \"commits_url\" : \"http://api.github.com/repos/octocat/Hello-World/commits{/sha}\",\n \"compare_url\" : \"http://api.github.com/repos/octocat/Hello-World/compare/{base}...{head}\",\n \"git_commits_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/commits{/sha}\",\n \"topics\" : [ \"njz0fug3o26a706os57bzzl68wb82h5d2ed\", \"37je7vre1myzu1q7g8abwvv\", \"pbtf2dz27b99k01j3suli7e26bev1kewjcxz90q5l4dvurnqnso7ax7zfdle0l4fbf7omzzcwfg\", \"69bxyppg9ph2hyp164qrki6asonux8t7bpj32rmch9l31r4l5h40nkteq2sfcmhl6csbq3fq0s4\" ],\n \"blobs_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/blobs{/sha}\",\n \"git_tags_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/tags{/sha}\",\n \"merges_url\" : \"http://api.github.com/repos/octocat/Hello-World/merges\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:42Z\\\"\",\n \"downloads_url\" : \"http://api.github.com/repos/octocat/Hello-World/downloads\",\n \"has_issues\" : true,\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World\",\n \"contents_url\" : \"http://api.github.com/repos/octocat/Hello-World/contents/{+path}\",\n \"mirror_url\" : \"git:git.example.com/octocat/Hello-World\",\n \"milestones_url\" : \"http://api.github.com/repos/octocat/Hello-World/milestones{/number}\",\n \"teams_url\" : \"http://api.github.com/repos/octocat/Hello-World/teams\",\n \"fork\" : false,\n \"issues_url\" : \"http://api.github.com/repos/octocat/Hello-World/issues{/number}\",\n \"events_url\" : \"http://api.github.com/repos/octocat/Hello-World/events\",\n \"issue_events_url\" : \"http://api.github.com/repos/octocat/Hello-World/issues/events{/number}\",\n \"organization\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Jesse Botsford\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"3y8vcu3njs8a1r4zc3d0vlkimhnhnpitcpbe4b\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"assignees_url\" : \"http://api.github.com/repos/octocat/Hello-World/assignees{/user}\",\n \"open_issues\" : 6533886983707813729,\n \"watchers_count\" : 80,\n \"forks_count\" : 9,\n \"homepage\" : \"https://github.com\",\n \"node_id\" : \"MDEwOlJlcG9zaXRvcnkxMjk2MjY5\"\n },\n \"title\" : \"Found a bug\",\n \"author_association\" : \"OWNER\",\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347/labels{/name}\",\n \"number\" : 1347,\n \"performed_via_github_app\" : {\n \"owner\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Ms. Ruben Wisozk\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"ruyl9xny7ey0kpvb12pragm7wm1jdcx5bvw4cxee8zptlxl1fm54sa4yn9bgtks55m495hma3dibivewevcltjqk3ygl7xrgh1k258vx4adplglncwm4nj7qnwmzpnbpmu19uv10xvuk4nq\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"installations_count\" : 5,\n \"created_at\" : \"2017-07-08T16:18:44-04:00\",\n \"description\" : \"The description of the app.\",\n \"client_id\" : \"\\\"Iv1.25b5d1e65ffc4022\\\"\",\n \"external_url\" : \"https://example.com\",\n \"updated_at\" : \"2017-07-08T16:18:44-04:00\",\n \"permissions\" : {\n \"deployments\" : \"write\",\n \"issues\" : \"read\"\n },\n \"html_url\" : \"https://github.com/apps/super-ci\",\n \"name\" : \"Probot Owners\",\n \"pem\" : \"\\\"-----BEGIN RSA PRIVATE KEY-----\\\\nMIIEogIBAAKCAQEArYxrNYD/iT5CZVpRJu4rBKmmze3PVmT/gCo2ATUvDvZTPTey\\\\nxcGJ3vvrJXazKk06pN05TN29o98jrYz4cengG3YGsXPNEpKsIrEl8NhbnxapEnM9\\\\nJCMRe0P5JcPsfZlX6hmiT7136GRWiGOUba2X9+HKh8QJVLG5rM007TBER9/z9mWm\\\\nrJuNh+m5l320oBQY/Qq3A7wzdEfZw8qm/mIN0FCeoXH1L6B8xXWaAYBwhTEh6SSn\\\\nZHlO1Xu1JWDmAvBCi0RO5aRSKM8q9QEkvvHP4yweAtK3N8+aAbZ7ovaDhyGz8r6r\\\\nzhU1b8Uo0Z2ysf503WqzQgIajr7Fry7/kUwpgQIDAQABAoIBADwJp80Ko1xHPZDy\\\\nfcCKBDfIuPvkmSW6KumbsLMaQv1aGdHDwwTGv3t0ixSay8CGlxMRtRDyZPib6SvQ\\\\n6OH/lpfpbMdW2ErkksgtoIKBVrDilfrcAvrNZu7NxRNbhCSvN8q0s4ICecjbbVQh\\\\nnueSdlA6vGXbW58BHMq68uRbHkP+k+mM9U0mDJ1HMch67wlg5GbayVRt63H7R2+r\\\\nVxcna7B80J/lCEjIYZznawgiTvp3MSanTglqAYi+m1EcSsP14bJIB9vgaxS79kTu\\\\noiSo93leJbBvuGo8QEiUqTwMw4tDksmkLsoqNKQ1q9P7LZ9DGcujtPy4EZsamSJT\\\\ny8OJt0ECgYEA2lxOxJsQk2kI325JgKFjo92mQeUObIvPfSNWUIZQDTjniOI6Gv63\\\\nGLWVFrZcvQBWjMEQraJA9xjPbblV8PtfO87MiJGLWCHFxmPz2dzoedN+2Coxom8m\\\\nV95CLz8QUShuao6u/RYcvUaZEoYs5bHcTmy5sBK80JyEmafJPtCQVxMCgYEAy3ar\\\\nZr3yv4xRPEPMat4rseswmuMooSaK3SKub19WFI5IAtB/e7qR1Rj9JhOGcZz+OQrl\\\\nT78O2OFYlgOIkJPvRMrPpK5V9lslc7tz1FSh3BZMRGq5jSyD7ETSOQ0c8T2O/s7v\\\\nbeEPbVbDe4mwvM24XByH0GnWveVxaDl51ABD65sCgYB3ZAspUkOA5egVCh8kNpnd\\\\nSd6SnuQBE3ySRlT2WEnCwP9Ph6oPgn+oAfiPX4xbRqkL8q/k0BdHQ4h+zNwhk7+h\\\\nWtPYRAP1Xxnc/F+jGjb+DVaIaKGU18MWPg7f+FI6nampl3Q0KvfxwX0GdNhtio8T\\\\nTj1E+SnFwh56SRQuxSh2gwKBgHKjlIO5NtNSflsUYFM+hyQiPiqnHzddfhSG+/3o\\\\nm5nNaSmczJesUYreH5San7/YEy2UxAugvP7aSY2MxB+iGsiJ9WD2kZzTUlDZJ7RV\\\\nUzWsoqBR+eZfVJ2FUWWvy8TpSG6trh4dFxImNtKejCR1TREpSiTV3Zb1dmahK9GV\\\\nrK9NAoGAbBxRLoC01xfxCTgt5BDiBcFVh4fp5yYKwavJPLzHSpuDOrrI9jDn1oKN\\\\nonq5sDU1i391zfQvdrbX4Ova48BN+B7p63FocP/MK5tyyBoT8zQEk2+vWDOw7H/Z\\\\nu5dTCPxTIsoIwUw1I+7yIxqJzLPFgR2gVBwY1ra/8iAqCj+zeBw=\\\\n-----END RSA PRIVATE KEY-----\\\\n\\\"\",\n \"webhook_secret\" : \"\\\"6fba8f2fc8a7e8f2cca5577eddd82ca7586b3b6b\\\"\",\n \"client_secret\" : \"\\\"1d4b2097ac622ba702d19de498f005747a8b21d3\\\"\",\n \"id\" : 37,\n \"events\" : [ \"label\", \"deployment\" ],\n \"slug\" : \"probot-owners\",\n \"node_id\" : \"MDExOkludGVncmF0aW9uMQ==\"\n },\n \"updated_at\" : \"2011-04-22T13:33:48Z\",\n \"comments_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347/comments\",\n \"active_lock_reason\" : \"too heated\",\n \"id\" : 1,\n \"repository_url\" : \"https://api.github.com/repos/octocat/Hello-World\",\n \"state\" : \"open\",\n \"locked\" : true,\n \"timeline_url\" : \"https://web.example.mocklab.io/466770\",\n \"pull_request\" : {\n \"patch_url\" : \"https://web.example.mocklab.io/236564\",\n \"html_url\" : \"https://web.example.mocklab.io/403684\",\n \"merged_at\" : \"2022-10-26T03:24:15.975Z\",\n \"diff_url\" : \"https://web.example.mocklab.io/027805\",\n \"url\" : \"https://web.example.mocklab.io/572457\"\n },\n \"closed_at\" : \"2022-07-02T19:28:50.975Z\",\n \"comments\" : 0,\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347\",\n \"labels\" : [ {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n }, {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n }, {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n }, {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n }, {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n }, {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n }, {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n }, {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n } ],\n \"milestone\" : {\n \"creator\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Peg Kuhn\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"4wnuf8drozg1tpsj7begydzvsq2kuh7wgg31a5carqh9hlupv10othsf6fbmpmygltnyxn08tzbob4rkzbro2yt59xvpuomy7jqu4fv5h6trdqga1vc5ge6jr3x9yrbivziwz8fhf4cq0v39zjuype4uy9urlrqg9kklisel8sgk8v68huqcf\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"closed_at\" : \"2013-02-12T13:22:01Z\",\n \"created_at\" : \"2011-04-10T20:09:31Z\",\n \"description\" : \"Tracking milestone for version 1.0\",\n \"closed_issues\" : 8,\n \"title\" : \"v1.0\",\n \"due_on\" : \"2012-10-09T23:39:01Z\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones/1\",\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones/1/labels\",\n \"number\" : 42,\n \"updated_at\" : \"2014-03-03T18:58:10Z\",\n \"html_url\" : \"https://github.com/octocat/Hello-World/milestones/v1.0\",\n \"id\" : 1002604,\n \"state\" : \"open\",\n \"open_issues\" : 4,\n \"node_id\" : \"MDk6TWlsZXN0b25lMTAwMjYwNA==\"\n },\n \"events_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347/events\",\n \"html_url\" : \"https://github.com/octocat/Hello-World/issues/1347\",\n \"assignee\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Octavio Osinski DVM\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"sjkqd20q53330h0agjbqz\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"user\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"alton.labadie\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"15xmi0vsn71f6y79l5ljim3xnpnw9qztleakjom2n3goue72lnkzitcbok0cujpujyk77aldezcezlle2mt9vbmar6w30lr7gttdzutf23dvw24dofow6hwobqchdzdh4cfqechq9ng6iut8z0qoancquji9gua4ul9e83dg8kbsvtch2j1qo12\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"node_id\" : \"MDU6SXNzdWUx\"\n },\n \"action\" : \"ue1bucpxlfl2of1i5s\",\n \"comment\" : {\n \"issue_url\" : \"https://web.example.mocklab.io/731758\",\n \"body_html\" : \"8mtwj66sj5c1z5ddnde7q6gjuz\",\n \"body_text\" : \"f39h8gxge0h9heusko26iy4490v9drsbzld0vlflnhhsnsb27s67wcbi3c1y7p9zmt18wxl10164vp08q48uw7fevxquherurbdu1zxtzkx4pah8m58686l78f4czgwczbqdbpc1b29h0239nuvjaf3jq3po20z1pi066dfm1kcimz\",\n \"created_at\" : \"2011-04-14T16:00:49Z\",\n \"body\" : \"What version of Safari were you using when you observed this bug?\",\n \"url\" : \"https://api.github.com/repositories/42/issues/comments/1\",\n \"author_association\" : \"OWNER\",\n \"performed_via_github_app\" : {\n \"owner\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Jamey Kautzer\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"gfgywqo2noj7hsvx5sybihut8hf6kmhq5kchpthvgtmtbo5vqop84ozyg3x7xgtoeelmdny7397q6c0v5d8\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"installations_count\" : 5,\n \"created_at\" : \"2017-07-08T16:18:44-04:00\",\n \"description\" : \"The description of the app.\",\n \"client_id\" : \"\\\"Iv1.25b5d1e65ffc4022\\\"\",\n \"external_url\" : \"https://example.com\",\n \"updated_at\" : \"2017-07-08T16:18:44-04:00\",\n \"permissions\" : {\n \"deployments\" : \"write\",\n \"issues\" : \"read\"\n },\n \"html_url\" : \"https://github.com/apps/super-ci\",\n \"name\" : \"Probot Owners\",\n \"pem\" : \"\\\"-----BEGIN RSA PRIVATE KEY-----\\\\nMIIEogIBAAKCAQEArYxrNYD/iT5CZVpRJu4rBKmmze3PVmT/gCo2ATUvDvZTPTey\\\\nxcGJ3vvrJXazKk06pN05TN29o98jrYz4cengG3YGsXPNEpKsIrEl8NhbnxapEnM9\\\\nJCMRe0P5JcPsfZlX6hmiT7136GRWiGOUba2X9+HKh8QJVLG5rM007TBER9/z9mWm\\\\nrJuNh+m5l320oBQY/Qq3A7wzdEfZw8qm/mIN0FCeoXH1L6B8xXWaAYBwhTEh6SSn\\\\nZHlO1Xu1JWDmAvBCi0RO5aRSKM8q9QEkvvHP4yweAtK3N8+aAbZ7ovaDhyGz8r6r\\\\nzhU1b8Uo0Z2ysf503WqzQgIajr7Fry7/kUwpgQIDAQABAoIBADwJp80Ko1xHPZDy\\\\nfcCKBDfIuPvkmSW6KumbsLMaQv1aGdHDwwTGv3t0ixSay8CGlxMRtRDyZPib6SvQ\\\\n6OH/lpfpbMdW2ErkksgtoIKBVrDilfrcAvrNZu7NxRNbhCSvN8q0s4ICecjbbVQh\\\\nnueSdlA6vGXbW58BHMq68uRbHkP+k+mM9U0mDJ1HMch67wlg5GbayVRt63H7R2+r\\\\nVxcna7B80J/lCEjIYZznawgiTvp3MSanTglqAYi+m1EcSsP14bJIB9vgaxS79kTu\\\\noiSo93leJbBvuGo8QEiUqTwMw4tDksmkLsoqNKQ1q9P7LZ9DGcujtPy4EZsamSJT\\\\ny8OJt0ECgYEA2lxOxJsQk2kI325JgKFjo92mQeUObIvPfSNWUIZQDTjniOI6Gv63\\\\nGLWVFrZcvQBWjMEQraJA9xjPbblV8PtfO87MiJGLWCHFxmPz2dzoedN+2Coxom8m\\\\nV95CLz8QUShuao6u/RYcvUaZEoYs5bHcTmy5sBK80JyEmafJPtCQVxMCgYEAy3ar\\\\nZr3yv4xRPEPMat4rseswmuMooSaK3SKub19WFI5IAtB/e7qR1Rj9JhOGcZz+OQrl\\\\nT78O2OFYlgOIkJPvRMrPpK5V9lslc7tz1FSh3BZMRGq5jSyD7ETSOQ0c8T2O/s7v\\\\nbeEPbVbDe4mwvM24XByH0GnWveVxaDl51ABD65sCgYB3ZAspUkOA5egVCh8kNpnd\\\\nSd6SnuQBE3ySRlT2WEnCwP9Ph6oPgn+oAfiPX4xbRqkL8q/k0BdHQ4h+zNwhk7+h\\\\nWtPYRAP1Xxnc/F+jGjb+DVaIaKGU18MWPg7f+FI6nampl3Q0KvfxwX0GdNhtio8T\\\\nTj1E+SnFwh56SRQuxSh2gwKBgHKjlIO5NtNSflsUYFM+hyQiPiqnHzddfhSG+/3o\\\\nm5nNaSmczJesUYreH5San7/YEy2UxAugvP7aSY2MxB+iGsiJ9WD2kZzTUlDZJ7RV\\\\nUzWsoqBR+eZfVJ2FUWWvy8TpSG6trh4dFxImNtKejCR1TREpSiTV3Zb1dmahK9GV\\\\nrK9NAoGAbBxRLoC01xfxCTgt5BDiBcFVh4fp5yYKwavJPLzHSpuDOrrI9jDn1oKN\\\\nonq5sDU1i391zfQvdrbX4Ova48BN+B7p63FocP/MK5tyyBoT8zQEk2+vWDOw7H/Z\\\\nu5dTCPxTIsoIwUw1I+7yIxqJzLPFgR2gVBwY1ra/8iAqCj+zeBw=\\\\n-----END RSA PRIVATE KEY-----\\\\n\\\"\",\n \"webhook_secret\" : \"\\\"6fba8f2fc8a7e8f2cca5577eddd82ca7586b3b6b\\\"\",\n \"client_secret\" : \"\\\"1d4b2097ac622ba702d19de498f005747a8b21d3\\\"\",\n \"id\" : 37,\n \"events\" : [ \"label\", \"deployment\" ],\n \"slug\" : \"probot-owners\",\n \"node_id\" : \"MDExOkludGVncmF0aW9uMQ==\"\n },\n \"updated_at\" : \"2011-04-14T16:00:49Z\",\n \"html_url\" : \"https://web.example.mocklab.io/834447\",\n \"reactions\" : {\n \"confused\" : 1223427653018586600,\n \"-1\" : 4932193518365818522,\n \"+1\" : 8616831180645139186,\n \"total_count\" : 2929871491859711842,\n \"rocket\" : 2633566404154915042,\n \"hooray\" : 7405850055562829282,\n \"eyes\" : 1448391112910420274,\n \"heart\" : 4803894435356821284,\n \"laugh\" : 6060683060875632229,\n \"url\" : \"https://web.example.mocklab.io/118557\"\n },\n \"id\" : 42,\n \"user\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"rodrick.mclaughlin\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"24e8r02pjb2gyey7k\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"node_id\" : \"st64\"\n }\n },\n \"repo\" : {\n \"name\" : \"Edris Steuber\",\n \"id\" : 3187801219172535941,\n \"url\" : \"https://web.example.mocklab.io/617675\"\n },\n \"created_at\" : \"2022-06-08T04:50:00.977Z\",\n \"id\" : \"ge42\",\n \"type\" : \"ngv4h6gchig9gci1ohiothxb5smulxxkbxjc3\"\n}, {\n \"actor\" : {\n \"display_login\" : \"0u9amxarszrtpzo5rxrwdge65ot50drr7psvl3pz3rc8o0e4lii282gcar\",\n \"avatar_url\" : \"https://s3.amazonaws.com/uifaces/faces/twitter/msveet/128.jpg\",\n \"id\" : 4656600887549907544,\n \"login\" : \"dlac4io01nyyavato4osqxr6q70ornwab3yrf4ntu5qp7h0byr1zyblo85lu13ar6cnfpwgad3winhlanw41au6shsl8kwnge8tv5a7mugs6aogxs9tuzva2oahmwy9r8v4ajwiue6l3kd6t4emavo2d7txgtov5gd75b8fdt0kv5lqpwl\",\n \"gravatar_id\" : \"ogoo\",\n \"url\" : \"https://web.example.mocklab.io/424947\"\n },\n \"public\" : true,\n \"org\" : {\n \"display_login\" : \"z005eplj3ezhgddl919dab8bt0pe4zahb\",\n \"avatar_url\" : \"https://s3.amazonaws.com/uifaces/faces/twitter/louis_currie/128.jpg\",\n \"id\" : 3589840276424514312,\n \"login\" : \"jmylyf68cgb8fhk72uw22phhgnweyf7xq27dc7lhavhdjtjbtcy34xuz0cetb8nrtzk0y1qda4grnwlwzhu5b6oipu6qza077dwug8u41j\",\n \"gravatar_id\" : \"ji6w\",\n \"url\" : \"https://web.example.mocklab.io/756752\"\n },\n \"payload\" : {\n \"pages\" : [ {\n \"summary\" : \"Quia sed quis. Animi ut explicabo veritatis qui aut ut molestiae. Officia et optio accusantium voluptate voluptas ipsa.\",\n \"html_url\" : \"https://web.example.mocklab.io/644551\",\n \"page_name\" : \"Zachery Satterfield\",\n \"action\" : \"ykv52zjin8jt8717hzf1ytepz2\",\n \"title\" : \"Ad aut quo fugit.\",\n \"sha\" : \"vulpmoc7h88hlo084cbxodhfy8kf7y8sjwx0azlys2eqlvhmmk5cn63wahzlwc9so\"\n }, {\n \"summary\" : \"Et labore recusandae accusamus. Et consectetur consequatur nesciunt. Ipsam magni ut reprehenderit. Ad illum nihil cumque. Libero est totam sequi voluptatem quia.\",\n \"html_url\" : \"https://web.example.mocklab.io/297641\",\n \"page_name\" : \"Cammy Bauch\",\n \"action\" : \"xr7uv3jae78up3l2h7h6u23rvlfnac2wqm2gff4bdmflp5in9bng7kbdgcayz17b1bxhuckqatvctos58erf8psperfeyvan6uav79gl6uvb492yke3ne0spp8v8n016xznoiv0y13vwz3l1b9\",\n \"title\" : \"Perferendis et eos et adipisci.\",\n \"sha\" : \"3r49mgm461rhizv5k1p6\"\n }, {\n \"summary\" : \"Ea quibusdam et facere. Voluptatem et labore tempora. Error itaque expedita ducimus quo illo est. Dolor suscipit aspernatur est eos aut voluptas nostrum. Veniam praesentium rerum.\",\n \"html_url\" : \"https://web.example.mocklab.io/009780\",\n \"page_name\" : \"Theodore O'Hara\",\n \"action\" : \"qcruolmczpfw3pa37ku3tqiwafhdrkqqlr7f43ccgc1fhgxi90payadzffl\",\n \"title\" : \"Tempora enim reiciendis eos iste dolores.\",\n \"sha\" : \"czlk2uwfd70idnv1kxjt853hespu4c8unvqlgl7zzi81vraj54sylfgcf1el5hmsnbcz3yj9on7of2wqpyfgcp89wi2dqkkzwwtpg677bhiea1z84bcu4s62dqyig9qxp\"\n }, {\n \"summary\" : \"Aliquid quibusdam reprehenderit. Necessitatibus molestiae dolores dolores facere voluptatem dolor ut. Labore illo iusto pariatur. Dolorem itaque quos. Possimus sed molestiae consequuntur voluptas libe\",\n \"html_url\" : \"https://web.example.mocklab.io/683352\",\n \"page_name\" : \"Abdul Corkery\",\n \"action\" : \"tfg4kyz288dr4et9467030crzil4y6huieohcrzj6fx3qyhjrwfiyad4kqmeclar8n9yoia95d46pkkw4e2e16m4ff4rerwoy\",\n \"title\" : \"Nulla praesentium delectus iusto aliquam.\",\n \"sha\" : \"eutxjcjsfjo0xr6i465k7gwbvvy75xuiz8o53m9zzjrn5dxh77x4k1qz186eqq2wtpar9pp8knkqf9nq0dgd379am3e2ab06qll97lvn3v0p3sg6gsrkdn75ncjdbki1kz1l22fvjqj8dtxlhfu3yu6bfjwafl94jkb491h0wpbf8goe5r4v5xlxizq8b35c1sya\"\n }, {\n \"summary\" : \"Quisquam et facere. Pariatur sit illum a reiciendis ipsum. Sunt laborum labore. Minus laudantium dolorem sit aspernatur.\",\n \"html_url\" : \"https://web.example.mocklab.io/749933\",\n \"page_name\" : \"Lorriane Smitham\",\n \"action\" : \"neol94vhjpk2\",\n \"title\" : \"Minus ad modi.\",\n \"sha\" : \"r19qbeoy3\"\n }, {\n \"summary\" : \"Consequatur facilis mollitia praesentium harum qui id quaerat. Est exercitationem quia voluptate odio. Quia voluptatem soluta itaque magni numquam aliquam. Qui exercitationem excepturi est sint pariat\",\n \"html_url\" : \"https://web.example.mocklab.io/242233\",\n \"page_name\" : \"Amal Bednar\",\n \"action\" : \"jp8gy6zp7g82koar4832n9gdy9mwbgn7cksnaohcymlwjc1\",\n \"title\" : \"Natus ipsam deserunt sit.\",\n \"sha\" : \"dpg4vo1nxexb4eu3h5pna8e9a8qf79vhpkw58b78yr03fs9a6mwyd3mlq1wl8201x37c5zd8x9jjzl4q244li9n3xp5b90fdlld8gx\"\n }, {\n \"summary\" : \"Fugit soluta esse. Aut neque commodi dolore quia eligendi. Aut commodi id qui est est rem. Veritatis modi neque voluptatem optio. Adipisci suscipit eveniet ea ut excepturi quas qui.\",\n \"html_url\" : \"https://web.example.mocklab.io/273358\",\n \"page_name\" : \"Ms. Cary D'Amore\",\n \"action\" : \"z7xif3fitq9y4alvzsinxi13jo3qth9ik019lnjvhv0392zgu24z2v5antxvtkof617mmi1hm5uc9hge2r6eh5ewxxb97dlrcmqlezlc9cek6cc6uxb6ojj8scbv3z\",\n \"title\" : \"Sed qui maiores voluptatibus.\",\n \"sha\" : \"em2dd5ytm3yo6q2wadzjvpext4yzte6qyk\"\n }, {\n \"summary\" : \"Nihil necessitatibus delectus sed cumque corporis aut. Sequi harum quia consequuntur aut earum nesciunt iure. At adipisci culpa temporibus ut perferendis ea et. Debitis voluptas maxime praesentium et.\",\n \"html_url\" : \"https://web.example.mocklab.io/198703\",\n \"page_name\" : \"Bertram Grimes\",\n \"action\" : \"bi2s5zj7xfvjvwnufl3fxvj47w5j2zhly8anr5jtl4funvxlg2t1afcksjrevynuyhbjclj4gjia3zoiwq7nxoczdgom8f0l7jmo58nl4a7h8ysm3bg5xeh77qq6v14kuw2eahjk743zi9l5m5khrsgeswti8l3rhyw6e\",\n \"title\" : \"Exercitationem consectetur quos dolores officiis quod eos hic.\",\n \"sha\" : \"xqyrc7y12c2jmsit6dwi1ghdukj3n79cwv8qak5mlv6iyo57pet0gyro4rwpioiq60gqbc4c4mt31cygnbpnqj0alb6ia4u37wab9x833em9\"\n } ],\n \"issue\" : {\n \"body_html\" : \"8yfoybv75gztiz1zgmr7c0i6cjjeir4bih5gi9pfey19gv7rpfjdem3de4611k4vj5k1rdzh76c3hdmqvfqvnga0r4kx5hbnnapxtdce03il4a1mdihpslvvdkup9q0adveaqjld0rfeld14x33vc5hk50xbxjgyvytqz3unto59xiqu6nsdg4x0nr46phyjo9h8\",\n \"body_text\" : \"ofxkgjl1gv36imlg4l6wguv00df7jkwq5kosbgg6vtpvv8w3g3w730o23x2wfw4eo0lyugg9wca0tj6dnaem\",\n \"assignees\" : [ {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Hipolito Walsh\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"twrrz0y6trfet17yw9uctlhrulj8xfhm01py2g8it98ohix8bbmo3vx88zvu5ptv5pj4gdjsykn3qux1z6rpbpjxca5vfso1t8ppugmpmibznhll4zvnre4ql4fuobgzgn3q3x9fakbf8u87to4glfzax5onbv2j1xparzubq3lvle050\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n } ],\n \"created_at\" : \"2011-04-22T13:33:48Z\",\n \"body\" : \"I'm having a problem with this.\",\n \"repository\" : {\n \"allow_forking\" : true,\n \"anonymous_access_enabled\" : false,\n \"is_template\" : true,\n \"stargazers_count\" : 80,\n \"pushed_at\" : \"2011-01-26T19:06:43Z\",\n \"language\" : \"gb4xx7urhp4ah3qqvar4uxps66h3rn7i6wab\",\n \"subscription_url\" : \"http://api.github.com/repos/octocat/Hello-World/subscription\",\n \"branches_url\" : \"http://api.github.com/repos/octocat/Hello-World/branches{/branch}\",\n \"allow_rebase_merge\" : true,\n \"issue_comment_url\" : \"http://api.github.com/repos/octocat/Hello-World/issues/comments{/number}\",\n \"labels_url\" : \"http://api.github.com/repos/octocat/Hello-World/labels{/name}\",\n \"permissions\" : {\n \"pull\" : true,\n \"maintain\" : false,\n \"admin\" : true,\n \"triage\" : true,\n \"push\" : false\n },\n \"subscribers_url\" : \"http://api.github.com/repos/octocat/Hello-World/subscribers\",\n \"releases_url\" : \"http://api.github.com/repos/octocat/Hello-World/releases{/id}\",\n \"svn_url\" : \"https://svn.github.com/octocat/Hello-World\",\n \"subscribers_count\" : 5064264057048203596,\n \"id\" : 42,\n \"master_branch\" : \"5et9ran4xbyu69wr5eu4hyfq\",\n \"forks\" : 8385034513062796650,\n \"allow_merge_commit\" : true,\n \"archive_url\" : \"http://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref}\",\n \"git_refs_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/refs{/sha}\",\n \"forks_url\" : \"http://api.github.com/repos/octocat/Hello-World/forks\",\n \"visibility\" : \"9l33n8lbfo26xelc99ppw63jbmvbp6y1ue3zy353b060w483yxpuxsnid5urkkmotae2923193l2ju09wqzc5krx5q64qkr8q5bne8aa234kd9\",\n \"statuses_url\" : \"http://api.github.com/repos/octocat/Hello-World/statuses/{sha}\",\n \"network_count\" : 3101989139976106382,\n \"ssh_url\" : \"git@github.com:octocat/Hello-World.git\",\n \"license\" : {\n \"html_url\" : \"https://web.example.mocklab.io/485007\",\n \"name\" : \"MIT License\",\n \"spdx_id\" : \"MIT\",\n \"key\" : \"mit\",\n \"url\" : \"https://api.github.com/licenses/mit\",\n \"node_id\" : \"MDc6TGljZW5zZW1pdA==\"\n },\n \"full_name\" : \"octocat/Hello-World\",\n \"size\" : 108,\n \"template_repository\" : {\n \"anonymous_access_enabled\" : true,\n \"is_template\" : false,\n \"stargazers_count\" : 5019565182514082195,\n \"pushed_at\" : \"7tt0bi2nh185780er17dwv8whdw95vngrpsdanrg22h4dfmediq377k140n7tagbo3vxjd4ap61e7348avp1edidlp962xkhc7lzu8w58hx41xa4sbys6tecu7xnpbjchu27470kdfdhqhqqdggvesfx\",\n \"language\" : \"4ggzvp3qo9f4kjbfogiflzu993fkjqbmgyd0swu616smu9of8jwxiy0gy3prhzf4k45uyjlyh\",\n \"subscription_url\" : \"https://web.example.mocklab.io/427042\",\n \"branches_url\" : \"https://web.example.mocklab.io/251320\",\n \"allow_rebase_merge\" : false,\n \"issue_comment_url\" : \"https://web.example.mocklab.io/071622\",\n \"labels_url\" : \"https://web.example.mocklab.io/041859\",\n \"permissions\" : { },\n \"subscribers_url\" : \"https://web.example.mocklab.io/126249\",\n \"releases_url\" : \"https://web.example.mocklab.io/383932\",\n \"svn_url\" : \"https://web.example.mocklab.io/159109\",\n \"subscribers_count\" : 8795384195726458862,\n \"id\" : 1610154218329500281,\n \"allow_merge_commit\" : true,\n \"archive_url\" : \"https://web.example.mocklab.io/026518\",\n \"git_refs_url\" : \"https://web.example.mocklab.io/682620\",\n \"forks_url\" : \"https://web.example.mocklab.io/483900\",\n \"visibility\" : \"47uy2p6\",\n \"statuses_url\" : \"https://web.example.mocklab.io/013782\",\n \"network_count\" : 5839524237018965029,\n \"ssh_url\" : \"https://web.example.mocklab.io/838698\",\n \"full_name\" : \"Faustino Hintz\",\n \"size\" : 5506184365507719513,\n \"languages_url\" : \"https://web.example.mocklab.io/127073\",\n \"clone_url\" : \"https://web.example.mocklab.io/186671\",\n \"collaborators_url\" : \"https://web.example.mocklab.io/589013\",\n \"html_url\" : \"https://web.example.mocklab.io/668467\",\n \"name\" : \"Maxwell Borer\",\n \"pulls_url\" : \"https://web.example.mocklab.io/621728\",\n \"default_branch\" : \"2bwfzxb8uckq7751auufyjvdwrguzop9g92x8zrbrbdoe3c1xptj64o82lfgd9bg6abfx3mrkuz7thpna2h0cs7z2650yn0gq2kkp1ndd2qeorflnfcjrhyl0har1pk19ee98hcx5xamgvnmhyxrr4m8ceyli0wyftr5qi93\",\n \"hooks_url\" : \"https://web.example.mocklab.io/125999\",\n \"trees_url\" : \"https://web.example.mocklab.io/823414\",\n \"tags_url\" : \"https://web.example.mocklab.io/802602\",\n \"contributors_url\" : \"https://web.example.mocklab.io/900366\",\n \"private\" : false,\n \"has_downloads\" : true,\n \"notifications_url\" : \"https://web.example.mocklab.io/540618\",\n \"open_issues_count\" : 1462803488819061757,\n \"created_at\" : \"h7k79sy56zl77e812t5rpi436vy8lii6qvp61mv7v3uviuuwo1eutq35j4y4nh1mbc7zigofxtq6kpteg0a1cdzoewzymkds6ui91wh5a14jguhc86asvbhfrgbh1g9ntozylmlm7qvg3d9lm28vxx5\",\n \"description\" : \"Ipsum culpa officiis et aliquam possimus perspiciatis ut. Maxime dolorem accusantium. Sit est quia quasi quidem aliquid.\",\n \"deployments_url\" : \"https://web.example.mocklab.io/040344\",\n \"keys_url\" : \"https://web.example.mocklab.io/768147\",\n \"has_projects\" : false,\n \"archived\" : true,\n \"has_wiki\" : true,\n \"updated_at\" : \"2023-03-01T07:07:58.981353Z\",\n \"comments_url\" : \"https://web.example.mocklab.io/345155\",\n \"stargazers_url\" : \"https://web.example.mocklab.io/854646\",\n \"disabled\" : false,\n \"delete_branch_on_merge\" : true,\n \"git_url\" : \"https://web.example.mocklab.io/809447\",\n \"has_pages\" : false,\n \"owner\" : { },\n \"allow_squash_merge\" : true,\n \"commits_url\" : \"https://web.example.mocklab.io/659184\",\n \"compare_url\" : \"https://web.example.mocklab.io/334565\",\n \"git_commits_url\" : \"https://web.example.mocklab.io/094335\",\n \"topics\" : [ \"khvbpndjo8apio7asdav9a6ufrw7xqsuw0n24j5tjg2at6u9b5rp6ykw74w01879vmt9tr5v9n298ce5vyz6rz\", \"xirc7hu1hqauagjsrgtsijlo0aenoo9lod6yayma8l9h9mpgktekno20155f15dsbv7aacmikk9z54li2y9g7hlupi3k64cqep8zn9pf10lkn81tjxhgl2i2w96u2zmie2kmr\", \"zqrknyfgelb9xeeov58kgq0xqz8q69hnzmqsy8v3dqn1nt78jtw8lyt0qaho3wnu7orqquyjbhz3cl82dxw8ejjlx9sj06z3pqzpcc72uupzim50az47x6kcl5ni9nxovm4lfx3dr132notg69o19ffxgkkp\", \"wu754rays348xfwt48e69tkr9uy7rn7tia825q7tu1mx19975f32fk4o2ht6svwjjhipmezinqq7th0nifjn3fad1jmb3w1uvvktqwtokwut93calc01jdse9qjbhpqudsufd0bx5iccxkek8q8duz77zcq2pnifmkodr9avhljna45hs5xmh9qgf8hqo695icavow5b\" ],\n \"blobs_url\" : \"https://web.example.mocklab.io/386794\",\n \"git_tags_url\" : \"https://web.example.mocklab.io/150009\",\n \"merges_url\" : \"https://web.example.mocklab.io/554286\",\n \"downloads_url\" : \"https://web.example.mocklab.io/764105\",\n \"has_issues\" : true,\n \"url\" : \"https://web.example.mocklab.io/226257\",\n \"contents_url\" : \"https://web.example.mocklab.io/002625\",\n \"mirror_url\" : \"https://web.example.mocklab.io/592454\",\n \"milestones_url\" : \"https://web.example.mocklab.io/244574\",\n \"teams_url\" : \"https://web.example.mocklab.io/519255\",\n \"fork\" : false,\n \"issues_url\" : \"https://web.example.mocklab.io/285241\",\n \"events_url\" : \"https://web.example.mocklab.io/324669\",\n \"issue_events_url\" : \"https://web.example.mocklab.io/070947\",\n \"assignees_url\" : \"https://web.example.mocklab.io/974581\",\n \"watchers_count\" : 6561728271776781165,\n \"forks_count\" : 7878136589032742671,\n \"homepage\" : \"nesnhd561s9aqz2rrtz3ryptzy6la6qv6eo6vwnjujaekgt7\",\n \"node_id\" : \"nfg9\"\n },\n \"languages_url\" : \"http://api.github.com/repos/octocat/Hello-World/languages\",\n \"clone_url\" : \"https://github.com/octocat/Hello-World.git\",\n \"collaborators_url\" : \"http://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator}\",\n \"html_url\" : \"https://github.com/octocat/Hello-World\",\n \"name\" : \"Team Environment\",\n \"pulls_url\" : \"http://api.github.com/repos/octocat/Hello-World/pulls{/number}\",\n \"default_branch\" : \"master\",\n \"hooks_url\" : \"http://api.github.com/repos/octocat/Hello-World/hooks\",\n \"trees_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/trees{/sha}\",\n \"tags_url\" : \"http://api.github.com/repos/octocat/Hello-World/tags\",\n \"contributors_url\" : \"http://api.github.com/repos/octocat/Hello-World/contributors\",\n \"private\" : false,\n \"has_downloads\" : true,\n \"notifications_url\" : \"http://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating}\",\n \"open_issues_count\" : 0,\n \"created_at\" : \"2011-01-26T19:01:12Z\",\n \"description\" : \"This your first repo!\",\n \"watchers\" : 4423219475166364552,\n \"deployments_url\" : \"http://api.github.com/repos/octocat/Hello-World/deployments\",\n \"keys_url\" : \"http://api.github.com/repos/octocat/Hello-World/keys{/key_id}\",\n \"has_projects\" : true,\n \"archived\" : true,\n \"has_wiki\" : true,\n \"updated_at\" : \"2011-01-26T19:14:43Z\",\n \"comments_url\" : \"http://api.github.com/repos/octocat/Hello-World/comments{/number}\",\n \"stargazers_url\" : \"http://api.github.com/repos/octocat/Hello-World/stargazers\",\n \"disabled\" : true,\n \"delete_branch_on_merge\" : false,\n \"git_url\" : \"git:github.com/octocat/Hello-World.git\",\n \"has_pages\" : true,\n \"owner\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Mrs. Linette Ondricka\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"rjdqdz4a8nl78t6lphapgzzj0l0ssn5ex90peugn4wzsd765t7ivj1ktax8nr0mt4ldozhmf5gbu7jgs7tvg8qy\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"allow_squash_merge\" : true,\n \"commits_url\" : \"http://api.github.com/repos/octocat/Hello-World/commits{/sha}\",\n \"compare_url\" : \"http://api.github.com/repos/octocat/Hello-World/compare/{base}...{head}\",\n \"git_commits_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/commits{/sha}\",\n \"topics\" : [ \"wdllrw62k1zo3wkoc9hgkzn7cmlkijvxjn8bttrohr62o3er4t6bu5q1wcrex\" ],\n \"blobs_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/blobs{/sha}\",\n \"git_tags_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/tags{/sha}\",\n \"merges_url\" : \"http://api.github.com/repos/octocat/Hello-World/merges\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:42Z\\\"\",\n \"downloads_url\" : \"http://api.github.com/repos/octocat/Hello-World/downloads\",\n \"has_issues\" : true,\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World\",\n \"contents_url\" : \"http://api.github.com/repos/octocat/Hello-World/contents/{+path}\",\n \"mirror_url\" : \"git:git.example.com/octocat/Hello-World\",\n \"milestones_url\" : \"http://api.github.com/repos/octocat/Hello-World/milestones{/number}\",\n \"teams_url\" : \"http://api.github.com/repos/octocat/Hello-World/teams\",\n \"fork\" : false,\n \"issues_url\" : \"http://api.github.com/repos/octocat/Hello-World/issues{/number}\",\n \"events_url\" : \"http://api.github.com/repos/octocat/Hello-World/events\",\n \"issue_events_url\" : \"http://api.github.com/repos/octocat/Hello-World/issues/events{/number}\",\n \"organization\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Reuben Moore\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"wwd7ms4f3vbiszx9tg26poia90gz4gcq3xxzelb68r4r3zfikx2s22om5u4r62f9f0ix6kt4ruk3m\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"assignees_url\" : \"http://api.github.com/repos/octocat/Hello-World/assignees{/user}\",\n \"open_issues\" : 3001055451886474439,\n \"watchers_count\" : 80,\n \"forks_count\" : 9,\n \"homepage\" : \"https://github.com\",\n \"node_id\" : \"MDEwOlJlcG9zaXRvcnkxMjk2MjY5\"\n },\n \"title\" : \"Found a bug\",\n \"author_association\" : \"OWNER\",\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347/labels{/name}\",\n \"number\" : 1347,\n \"performed_via_github_app\" : {\n \"owner\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Nathaniel Bradtke\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"ep8mqh9577xfj4f2xwqgoeibwz0\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"installations_count\" : 5,\n \"created_at\" : \"2017-07-08T16:18:44-04:00\",\n \"description\" : \"The description of the app.\",\n \"client_id\" : \"\\\"Iv1.25b5d1e65ffc4022\\\"\",\n \"external_url\" : \"https://example.com\",\n \"updated_at\" : \"2017-07-08T16:18:44-04:00\",\n \"permissions\" : {\n \"deployments\" : \"write\",\n \"issues\" : \"read\"\n },\n \"html_url\" : \"https://github.com/apps/super-ci\",\n \"name\" : \"Probot Owners\",\n \"pem\" : \"\\\"-----BEGIN RSA PRIVATE KEY-----\\\\nMIIEogIBAAKCAQEArYxrNYD/iT5CZVpRJu4rBKmmze3PVmT/gCo2ATUvDvZTPTey\\\\nxcGJ3vvrJXazKk06pN05TN29o98jrYz4cengG3YGsXPNEpKsIrEl8NhbnxapEnM9\\\\nJCMRe0P5JcPsfZlX6hmiT7136GRWiGOUba2X9+HKh8QJVLG5rM007TBER9/z9mWm\\\\nrJuNh+m5l320oBQY/Qq3A7wzdEfZw8qm/mIN0FCeoXH1L6B8xXWaAYBwhTEh6SSn\\\\nZHlO1Xu1JWDmAvBCi0RO5aRSKM8q9QEkvvHP4yweAtK3N8+aAbZ7ovaDhyGz8r6r\\\\nzhU1b8Uo0Z2ysf503WqzQgIajr7Fry7/kUwpgQIDAQABAoIBADwJp80Ko1xHPZDy\\\\nfcCKBDfIuPvkmSW6KumbsLMaQv1aGdHDwwTGv3t0ixSay8CGlxMRtRDyZPib6SvQ\\\\n6OH/lpfpbMdW2ErkksgtoIKBVrDilfrcAvrNZu7NxRNbhCSvN8q0s4ICecjbbVQh\\\\nnueSdlA6vGXbW58BHMq68uRbHkP+k+mM9U0mDJ1HMch67wlg5GbayVRt63H7R2+r\\\\nVxcna7B80J/lCEjIYZznawgiTvp3MSanTglqAYi+m1EcSsP14bJIB9vgaxS79kTu\\\\noiSo93leJbBvuGo8QEiUqTwMw4tDksmkLsoqNKQ1q9P7LZ9DGcujtPy4EZsamSJT\\\\ny8OJt0ECgYEA2lxOxJsQk2kI325JgKFjo92mQeUObIvPfSNWUIZQDTjniOI6Gv63\\\\nGLWVFrZcvQBWjMEQraJA9xjPbblV8PtfO87MiJGLWCHFxmPz2dzoedN+2Coxom8m\\\\nV95CLz8QUShuao6u/RYcvUaZEoYs5bHcTmy5sBK80JyEmafJPtCQVxMCgYEAy3ar\\\\nZr3yv4xRPEPMat4rseswmuMooSaK3SKub19WFI5IAtB/e7qR1Rj9JhOGcZz+OQrl\\\\nT78O2OFYlgOIkJPvRMrPpK5V9lslc7tz1FSh3BZMRGq5jSyD7ETSOQ0c8T2O/s7v\\\\nbeEPbVbDe4mwvM24XByH0GnWveVxaDl51ABD65sCgYB3ZAspUkOA5egVCh8kNpnd\\\\nSd6SnuQBE3ySRlT2WEnCwP9Ph6oPgn+oAfiPX4xbRqkL8q/k0BdHQ4h+zNwhk7+h\\\\nWtPYRAP1Xxnc/F+jGjb+DVaIaKGU18MWPg7f+FI6nampl3Q0KvfxwX0GdNhtio8T\\\\nTj1E+SnFwh56SRQuxSh2gwKBgHKjlIO5NtNSflsUYFM+hyQiPiqnHzddfhSG+/3o\\\\nm5nNaSmczJesUYreH5San7/YEy2UxAugvP7aSY2MxB+iGsiJ9WD2kZzTUlDZJ7RV\\\\nUzWsoqBR+eZfVJ2FUWWvy8TpSG6trh4dFxImNtKejCR1TREpSiTV3Zb1dmahK9GV\\\\nrK9NAoGAbBxRLoC01xfxCTgt5BDiBcFVh4fp5yYKwavJPLzHSpuDOrrI9jDn1oKN\\\\nonq5sDU1i391zfQvdrbX4Ova48BN+B7p63FocP/MK5tyyBoT8zQEk2+vWDOw7H/Z\\\\nu5dTCPxTIsoIwUw1I+7yIxqJzLPFgR2gVBwY1ra/8iAqCj+zeBw=\\\\n-----END RSA PRIVATE KEY-----\\\\n\\\"\",\n \"webhook_secret\" : \"\\\"6fba8f2fc8a7e8f2cca5577eddd82ca7586b3b6b\\\"\",\n \"client_secret\" : \"\\\"1d4b2097ac622ba702d19de498f005747a8b21d3\\\"\",\n \"id\" : 37,\n \"events\" : [ \"label\", \"deployment\" ],\n \"slug\" : \"probot-owners\",\n \"node_id\" : \"MDExOkludGVncmF0aW9uMQ==\"\n },\n \"updated_at\" : \"2011-04-22T13:33:48Z\",\n \"comments_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347/comments\",\n \"active_lock_reason\" : \"too heated\",\n \"id\" : 1,\n \"repository_url\" : \"https://api.github.com/repos/octocat/Hello-World\",\n \"state\" : \"open\",\n \"locked\" : true,\n \"timeline_url\" : \"https://web.example.mocklab.io/619510\",\n \"pull_request\" : {\n \"patch_url\" : \"https://web.example.mocklab.io/873626\",\n \"html_url\" : \"https://web.example.mocklab.io/452016\",\n \"merged_at\" : \"2023-02-02T09:52:44.983Z\",\n \"diff_url\" : \"https://web.example.mocklab.io/189242\",\n \"url\" : \"https://web.example.mocklab.io/925077\"\n },\n \"closed_at\" : \"2023-12-10T06:53:42.983Z\",\n \"comments\" : 0,\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347\",\n \"labels\" : [ {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n }, {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n }, {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n }, {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n }, {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n }, {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n }, {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n }, {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n } ],\n \"milestone\" : {\n \"creator\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Minta Ziemann III\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"sqjvlc51kkgw618b58f5qwpnpb8rywl4swffcb18p282hrnrhla7y178m2v9dxat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"closed_at\" : \"2013-02-12T13:22:01Z\",\n \"created_at\" : \"2011-04-10T20:09:31Z\",\n \"description\" : \"Tracking milestone for version 1.0\",\n \"closed_issues\" : 8,\n \"title\" : \"v1.0\",\n \"due_on\" : \"2012-10-09T23:39:01Z\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones/1\",\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones/1/labels\",\n \"number\" : 42,\n \"updated_at\" : \"2014-03-03T18:58:10Z\",\n \"html_url\" : \"https://github.com/octocat/Hello-World/milestones/v1.0\",\n \"id\" : 1002604,\n \"state\" : \"open\",\n \"open_issues\" : 4,\n \"node_id\" : \"MDk6TWlsZXN0b25lMTAwMjYwNA==\"\n },\n \"events_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347/events\",\n \"html_url\" : \"https://github.com/octocat/Hello-World/issues/1347\",\n \"assignee\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Emmanuel Glover\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"sozn8vww03p5yv1kelam128apcketihw1svwpas6i00s1omr98evpimwna4js316z\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"user\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"marvella.stokes\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"um6xennld97835i4ug8y7c4wbcrdi8aoo3ocagstwh4npmkc37q86dj5z2ahuxo0xgkzwix7ndzwj8bmhrkdw039aiywyt1wh89bg3mmaxlifj4pds2gagecr8j34r95xns3q4oymut2nzpbaef2gqnar8shmdltp2t0pd1bmbxw1vg3wycn6f2\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"node_id\" : \"MDU6SXNzdWUx\"\n },\n \"action\" : \"rrfxummx06gpwsw31ru0avxx49nj75bubaimxesnpmt3bcj6j4yaf025saa1gsuym6cb9htanria34i8mgqyv6kt2tjdpe3vyr1q9397ynjwhdypafkesmf4m9dfgaygc1kpw9oap4cbriuw8ticrz4nh\",\n \"comment\" : {\n \"issue_url\" : \"https://web.example.mocklab.io/356853\",\n \"body_html\" : \"mb7ppeiegkhatgql1xz91ykuq0lk4zfhl25iqw3scy30xfup8rj6zv4gyy9p93tzvkbkryirxaa\",\n \"body_text\" : \"uyqi206geuoglbz1kvewlrovq0g021d1idwbjlzukwtv3a799y0qslcdoz4s5upgdx2b66qr7pjlolykna7vjl0v13pte4cdcxgfiegr32ya1c9znm442t09sxqzr1zvu7qq1wssjaam8v6dhfbx6fdfqwema0\",\n \"created_at\" : \"2011-04-14T16:00:49Z\",\n \"body\" : \"What version of Safari were you using when you observed this bug?\",\n \"url\" : \"https://api.github.com/repositories/42/issues/comments/1\",\n \"author_association\" : \"OWNER\",\n \"performed_via_github_app\" : {\n \"owner\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Reagan Beer\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"767yec9d3custp1bkf1x6dxh1cwmi4yj6tftsynhniua6jzcxws9mcpiulm2fcfq7mjnzj0wdf81wmg3nyefloxdw0g1rya46lo9ynd0v0vp4syitcba2p32nz26wtbd0n6fnu9blfkx5in6zi2fjqal4k7606mhcrcwkb0v27ud1wtj2tc5mda6qvccwur8f5fgj7\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"installations_count\" : 5,\n \"created_at\" : \"2017-07-08T16:18:44-04:00\",\n \"description\" : \"The description of the app.\",\n \"client_id\" : \"\\\"Iv1.25b5d1e65ffc4022\\\"\",\n \"external_url\" : \"https://example.com\",\n \"updated_at\" : \"2017-07-08T16:18:44-04:00\",\n \"permissions\" : {\n \"deployments\" : \"write\",\n \"issues\" : \"read\"\n },\n \"html_url\" : \"https://github.com/apps/super-ci\",\n \"name\" : \"Probot Owners\",\n \"pem\" : \"\\\"-----BEGIN RSA PRIVATE KEY-----\\\\nMIIEogIBAAKCAQEArYxrNYD/iT5CZVpRJu4rBKmmze3PVmT/gCo2ATUvDvZTPTey\\\\nxcGJ3vvrJXazKk06pN05TN29o98jrYz4cengG3YGsXPNEpKsIrEl8NhbnxapEnM9\\\\nJCMRe0P5JcPsfZlX6hmiT7136GRWiGOUba2X9+HKh8QJVLG5rM007TBER9/z9mWm\\\\nrJuNh+m5l320oBQY/Qq3A7wzdEfZw8qm/mIN0FCeoXH1L6B8xXWaAYBwhTEh6SSn\\\\nZHlO1Xu1JWDmAvBCi0RO5aRSKM8q9QEkvvHP4yweAtK3N8+aAbZ7ovaDhyGz8r6r\\\\nzhU1b8Uo0Z2ysf503WqzQgIajr7Fry7/kUwpgQIDAQABAoIBADwJp80Ko1xHPZDy\\\\nfcCKBDfIuPvkmSW6KumbsLMaQv1aGdHDwwTGv3t0ixSay8CGlxMRtRDyZPib6SvQ\\\\n6OH/lpfpbMdW2ErkksgtoIKBVrDilfrcAvrNZu7NxRNbhCSvN8q0s4ICecjbbVQh\\\\nnueSdlA6vGXbW58BHMq68uRbHkP+k+mM9U0mDJ1HMch67wlg5GbayVRt63H7R2+r\\\\nVxcna7B80J/lCEjIYZznawgiTvp3MSanTglqAYi+m1EcSsP14bJIB9vgaxS79kTu\\\\noiSo93leJbBvuGo8QEiUqTwMw4tDksmkLsoqNKQ1q9P7LZ9DGcujtPy4EZsamSJT\\\\ny8OJt0ECgYEA2lxOxJsQk2kI325JgKFjo92mQeUObIvPfSNWUIZQDTjniOI6Gv63\\\\nGLWVFrZcvQBWjMEQraJA9xjPbblV8PtfO87MiJGLWCHFxmPz2dzoedN+2Coxom8m\\\\nV95CLz8QUShuao6u/RYcvUaZEoYs5bHcTmy5sBK80JyEmafJPtCQVxMCgYEAy3ar\\\\nZr3yv4xRPEPMat4rseswmuMooSaK3SKub19WFI5IAtB/e7qR1Rj9JhOGcZz+OQrl\\\\nT78O2OFYlgOIkJPvRMrPpK5V9lslc7tz1FSh3BZMRGq5jSyD7ETSOQ0c8T2O/s7v\\\\nbeEPbVbDe4mwvM24XByH0GnWveVxaDl51ABD65sCgYB3ZAspUkOA5egVCh8kNpnd\\\\nSd6SnuQBE3ySRlT2WEnCwP9Ph6oPgn+oAfiPX4xbRqkL8q/k0BdHQ4h+zNwhk7+h\\\\nWtPYRAP1Xxnc/F+jGjb+DVaIaKGU18MWPg7f+FI6nampl3Q0KvfxwX0GdNhtio8T\\\\nTj1E+SnFwh56SRQuxSh2gwKBgHKjlIO5NtNSflsUYFM+hyQiPiqnHzddfhSG+/3o\\\\nm5nNaSmczJesUYreH5San7/YEy2UxAugvP7aSY2MxB+iGsiJ9WD2kZzTUlDZJ7RV\\\\nUzWsoqBR+eZfVJ2FUWWvy8TpSG6trh4dFxImNtKejCR1TREpSiTV3Zb1dmahK9GV\\\\nrK9NAoGAbBxRLoC01xfxCTgt5BDiBcFVh4fp5yYKwavJPLzHSpuDOrrI9jDn1oKN\\\\nonq5sDU1i391zfQvdrbX4Ova48BN+B7p63FocP/MK5tyyBoT8zQEk2+vWDOw7H/Z\\\\nu5dTCPxTIsoIwUw1I+7yIxqJzLPFgR2gVBwY1ra/8iAqCj+zeBw=\\\\n-----END RSA PRIVATE KEY-----\\\\n\\\"\",\n \"webhook_secret\" : \"\\\"6fba8f2fc8a7e8f2cca5577eddd82ca7586b3b6b\\\"\",\n \"client_secret\" : \"\\\"1d4b2097ac622ba702d19de498f005747a8b21d3\\\"\",\n \"id\" : 37,\n \"events\" : [ \"label\", \"deployment\" ],\n \"slug\" : \"probot-owners\",\n \"node_id\" : \"MDExOkludGVncmF0aW9uMQ==\"\n },\n \"updated_at\" : \"2011-04-14T16:00:49Z\",\n \"html_url\" : \"https://web.example.mocklab.io/215195\",\n \"reactions\" : {\n \"confused\" : 8072052421064393082,\n \"-1\" : 3295774298039311912,\n \"+1\" : 8148810660184219957,\n \"total_count\" : 8439808816329330408,\n \"rocket\" : 3636496225485879802,\n \"hooray\" : 8584123251198975510,\n \"eyes\" : 3089029567643577598,\n \"heart\" : 8115731216446490285,\n \"laugh\" : 6304996164358835483,\n \"url\" : \"https://web.example.mocklab.io/201490\"\n },\n \"id\" : 42,\n \"user\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"faye.gulgowski\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"mohzmpt0xt9trsiezvr1asn85i8eork16v9tixw6bd10h8fck1cq314d254khhdr1cbbw483do9q64panugk4ycv75w0jzmzd3vzhcknll416rxx4rljybvnmdmuvj228j1uw7lct62j6hapvg2frlc1prhiw4q7f52oy8vbvdbui\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"node_id\" : \"exk9\"\n }\n },\n \"repo\" : {\n \"name\" : \"Yesenia Jast\",\n \"id\" : 5851599869497484827,\n \"url\" : \"https://web.example.mocklab.io/647398\"\n },\n \"created_at\" : \"2023-08-27T03:31:29.985Z\",\n \"id\" : \"174o\",\n \"type\" : \"nynkdp4zx5oen7ksotd309z676blaf1ck188sqmjefw7aqrpo8u0z2kdxc1fhntkkpdncbbqje0kcrxu9d3jq1d9159gw3i0nsp2m9tlg2dt9yetjc328fh0w5zbfyvq1c0sebdjdrqe9214j833vbqclc8kv8u\"\n}, {\n \"actor\" : {\n \"display_login\" : \"3a7bexsly0fdp5l6uf4j7udlqlg6o2ugjys60f7klw8tppcdh965s9m1zivg3u1fynvsgp7hqroakq7gdezcp234an1tkk0r2tzdni99v8uocbga8389vl302owxf600951bs4hmv3ry\",\n \"avatar_url\" : \"https://s3.amazonaws.com/uifaces/faces/twitter/silvanmuhlemann/128.jpg\",\n \"id\" : 6162614272834722800,\n \"login\" : \"01nqfsd4h3obuzzfiktf671nktcj1ppvc8191w737qeu7k9mfr0lcyjyl202otp9mm3vv29zg93enkw908mpt1y3v4urwfsqnu2dnfirtfti047160fap866jbtzwikn7sta4ym654tnv86js1y4\",\n \"gravatar_id\" : \"3v1n\",\n \"url\" : \"https://web.example.mocklab.io/325037\"\n },\n \"public\" : true,\n \"org\" : {\n \"display_login\" : \"33mq5sbyl1rnldocf2vr13d8knghugn0mn6h83pg2mv7jtr0z38lg8raktpojkv5kuuv3gfanaev7th235gddb1hxweart55\",\n \"avatar_url\" : \"https://s3.amazonaws.com/uifaces/faces/twitter/badlittleduck/128.jpg\",\n \"id\" : 2332801616237400962,\n \"login\" : \"q1gazxa6b1ptd2dm0ho\",\n \"gravatar_id\" : \"484b\",\n \"url\" : \"https://web.example.mocklab.io/596331\"\n },\n \"payload\" : {\n \"pages\" : [ {\n \"summary\" : \"Alias facere corporis perferendis qui illo. Dolorem sed non voluptatibus commodi dicta nemo praesentium. Accusantium perspiciatis rerum consequatur nisi similique ut.\",\n \"html_url\" : \"https://web.example.mocklab.io/703341\",\n \"page_name\" : \"Mr. Carroll Johnston\",\n \"action\" : \"n0v7d2uqs\",\n \"title\" : \"Beatae ut eaque eum totam sed vel voluptatum.\",\n \"sha\" : \"rmd4pp1aoiid6bbfnki3z8qlvu1drxx7af10abxwjrao3tk6osvgest9cs14u5hbek6rfrejksnzuvvo4f1589u8qqtzq34r32vgfmkjrfi97x0rj1uzx4lv47\"\n }, {\n \"summary\" : \"Optio quia repudiandae sequi aut sit tempora. Qui et minus ut fuga occaecati numquam. Placeat velit blanditiis dicta. Et provident non provident.\",\n \"html_url\" : \"https://web.example.mocklab.io/238876\",\n \"page_name\" : \"Dorsey Mraz Jr.\",\n \"action\" : \"obz6zid8xsc8kb12tdxohngck0i13k7ni5h8llhkoqvevoi9wdodrjg4n23szwph67rcwziyxdunk8uq9buzx37wj7epnyb3qaxcdbrlc2boswjp5b596103i4p3nq0xv5nmrai15kddaxqfk504u38\",\n \"title\" : \"Dolorum dolor aut officiis.\",\n \"sha\" : \"wcj5opkrqcnze1gnbzm1ersbmqjkgkcol7q3tkt1h9ivq4fejg7wg6jlsnkne16amvanyjn4grzae84j1snvoj1mxctuqtrc6d7ur664v59nryjuw41\"\n }, {\n \"summary\" : \"Et minus labore perspiciatis ut aspernatur eligendi incidunt. Ex voluptas non laudantium fugit suscipit alias provident. Occaecati quo vero omnis in beatae.\",\n \"html_url\" : \"https://web.example.mocklab.io/876934\",\n \"page_name\" : \"Concepcion Labadie\",\n \"action\" : \"oplfk005l0im1a9m9z4h4i75h32dnz9st07ocptsm07dhgi4pldzbexvv27l8wqg4m7q7iu9ieu21tg10b9z3bqcp1ph0vveg9giu4fjfcnai2ww6t475tplry31v7ehxjqf4e8kmg\",\n \"title\" : \"Sequi rerum doloribus maiores.\",\n \"sha\" : \"5ga9sa6d09cc4w5szd62lm23fjoqkz2evu7l5c93dl0y3a86yp196tgwkjqltt93zlxn4lgt4r932o8q38jo39pd6fz6i443nwv5whw926wcj6edfs2snum5s685092gcb1x1\"\n }, {\n \"summary\" : \"Reiciendis facilis voluptas sed quod corrupti. Molestias vitae error repellat. Voluptatem eius possimus iure libero quisquam. Eos nostrum aut similique aspernatur suscipit distinctio sint. Ad fuga eos\",\n \"html_url\" : \"https://web.example.mocklab.io/035470\",\n \"page_name\" : \"Mireya Mohr\",\n \"action\" : \"qeaxrbb6l5zbaht2j9mrdmygpj092gp1a9uslu3p5s07o58y455lpq3ri1tyabpny018b7y1dvyjvgnmovuy75tpvf089j042qvf6a19br0xgz6otiz2gsa4y26noty8y35bp2wt2r61qk3317uf3rg55\",\n \"title\" : \"Reiciendis voluptatem nisi suscipit voluptas.\",\n \"sha\" : \"moqgq7z68wyl6k910zpoo0se54ccrn06esdpk2plly14q39eo6qyzuwqynpypsnpl3lxuy5hb7turvwc8l6k0j0jd7dhu82zgfpe3xuq9ir7d9kc6njm76j7jrl5l4xlisqxst37b1afvgv\"\n }, {\n \"summary\" : \"Enim quo eum quos officiis velit adipisci. Soluta pariatur mollitia ut iure et. Non ab quia veritatis doloribus. Est explicabo consequatur qui. Commodi sint maiores laborum corrupti perspiciatis.\",\n \"html_url\" : \"https://web.example.mocklab.io/499793\",\n \"page_name\" : \"Kathlene Mueller DVM\",\n \"action\" : \"q478kza6znwmlvwcplzd4eld8yqpe567uycjvutcald78azgvopgldkk1y1sweyqnyoar29kh1j21h3ggm15p7tapo73piskl8cuwed6btqm4fpgv978szoe8yklfqyr7wk1uv1g2ftqheovxjqxyxaen23645fjd5kx\",\n \"title\" : \"Molestiae quia minima deserunt.\",\n \"sha\" : \"z6gbkpl4\"\n }, {\n \"summary\" : \"Enim rerum adipisci. Ducimus cumque ad facilis ut sapiente excepturi id. Est consequuntur rem nisi.\",\n \"html_url\" : \"https://web.example.mocklab.io/325518\",\n \"page_name\" : \"Maragret Stamm\",\n \"action\" : \"u54wcar731qrgbrevhnkex998ix1buxbjivpbvz0bcrgpjd7radel8cdftaxt6brypllpd50qfdty5n6mwfwdhz0j8\",\n \"title\" : \"Consequatur dolorum ut.\",\n \"sha\" : \"2a74i17nw7bwsxljjss8mgumix6d9l33tywx80jhlkdo\"\n }, {\n \"summary\" : \"Sunt nam sit error doloribus laudantium consectetur. Iusto omnis omnis consequuntur. Voluptas asperiores perspiciatis. Consequatur consequatur non sapiente alias expedita.\",\n \"html_url\" : \"https://web.example.mocklab.io/944043\",\n \"page_name\" : \"Marin Carroll\",\n \"action\" : \"r2q3cr0tubcsd8byyla0tmh9j5nhbdtppzbjhg9eypnr7llzg06qihs94oqxxmkzrmc4v92ux1vof\",\n \"title\" : \"Sit et sed voluptatibus.\",\n \"sha\" : \"100gvtitvwnedxpre0dlhv\"\n }, {\n \"summary\" : \"Et vel ea sed fuga qui. Velit reprehenderit officia quos rerum. Debitis quaerat ut. Nisi iste autem illo.\",\n \"html_url\" : \"https://web.example.mocklab.io/740810\",\n \"page_name\" : \"Boyd Tremblay PhD\",\n \"action\" : \"st41yk2ouzhv1unf987938ohekerd2j57ge5nwsbhxf7kqg7v5waupfdnhy9t8g45df5cn91tv6b1ztg1bbpbrkfev5d44a9xgm0ytt4w3nj4naigpm2v6dbpzoffp31ze5vhm97uf5c87gifrnrmyzqzofsehq4g69h9qr5r6laiflmi6ir8ybqyyuv1ifb4oey649\",\n \"title\" : \"Voluptatem sint velit omnis.\",\n \"sha\" : \"g74e3zdefdooram6p3iud0az0j12skdtbqx35432chb1b5vlzi\"\n } ],\n \"issue\" : {\n \"body_html\" : \"afex8twr4e8vozr4orzvhfp89plnh2nyhntt0nvc9cdelnj14eva0ppqn434dlh3ddbkju6q01hsydk3m4k6n\",\n \"body_text\" : \"b6x9y3aoz0pp6dj3menepkcdseagrj8lum4wu2savtyur0nfckgrcn92eqzgwzyoc800061av502igrbbqokl00z9q8gimihdqpvnfapr2p8fssafy7xyycoz1ty8yt3\",\n \"assignees\" : [ {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Teodora Mitchell\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"9fad5fypczuempooz0e6gc6etaxdje5y5y09s4x8oj7efzkl9jmymso23ptsbmhe2uj2htnipqh4feysxqkkmfkr8dqp39svvstmm62j80cukixgg0vsmo70dmn23szh5x3bl8mmk9gawktr579ypc4mi7b9n2paj3pjpax4qs0vxkqxdik2iqnp2y9c34j0tfmkil\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n }, {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Tyron O'Hara\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"ubdjatv9eh9ztuuq9asm7sd8k0gql0k9w04g6sf91674dfdkbazyloe56gfjrnanr8348marv28xy0jbkfjnt5roo6kf4gpwrfpw2jp1qje8rurjo9wz6jnde9kajz0x01mlcznb338s58yijwix9f3e0bxkk0opu1ulpv26n6upzac51fhhp73syexxbophxltdt2\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n }, {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Monique Schuster\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"gu1qw5mad3tpd3seepug9m5n9rhxj7bxsp5d75ywniiq19j5xxrya6zxq016ndr8n8z0j92b26dxfwcmli3rk3my8s1skh9bdx3cqhmj6ajawjmtydbzpyp6lhmpqxrq3qc820v\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n }, {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Bruno VonRueden DDS\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"kviru96b9ub\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n }, {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Emilio Prohaska\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"6fvtkhtn3mkced9bjmi4viiuvvvb8oeyevu815c1h\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n }, {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Apryl Upton\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"y5luds69t6f3u83l6ir2ktwxdw8fhwaq9147vn01fm3fa4agwlazshot7srz\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n } ],\n \"created_at\" : \"2011-04-22T13:33:48Z\",\n \"body\" : \"I'm having a problem with this.\",\n \"repository\" : {\n \"allow_forking\" : false,\n \"anonymous_access_enabled\" : true,\n \"is_template\" : true,\n \"stargazers_count\" : 80,\n \"pushed_at\" : \"2011-01-26T19:06:43Z\",\n \"language\" : \"fwwehows75y3t7imfacc2ypq9m2cbhbk6k8aayojdlnn7jmxj3jlhjyeeshvqong4t4i9e87anlx4aois4rt3wjc1y91pt4cln6zc4mdgvq53cxedl5cdk7ydps3sexxcvvkg8tggijqwir8btz99pzrbloposq5do7zm328hvbtvid8xxa6tmy4n9n3vv8y2n\",\n \"subscription_url\" : \"http://api.github.com/repos/octocat/Hello-World/subscription\",\n \"branches_url\" : \"http://api.github.com/repos/octocat/Hello-World/branches{/branch}\",\n \"allow_rebase_merge\" : true,\n \"issue_comment_url\" : \"http://api.github.com/repos/octocat/Hello-World/issues/comments{/number}\",\n \"labels_url\" : \"http://api.github.com/repos/octocat/Hello-World/labels{/name}\",\n \"permissions\" : {\n \"pull\" : false,\n \"maintain\" : true,\n \"admin\" : false,\n \"triage\" : true,\n \"push\" : false\n },\n \"subscribers_url\" : \"http://api.github.com/repos/octocat/Hello-World/subscribers\",\n \"releases_url\" : \"http://api.github.com/repos/octocat/Hello-World/releases{/id}\",\n \"svn_url\" : \"https://svn.github.com/octocat/Hello-World\",\n \"subscribers_count\" : 8993026292919155578,\n \"id\" : 42,\n \"master_branch\" : \"abow9eaqe1u51wigbev1a820qcnoq5guu5bvkbt6sw02fc8pl2bl37zu0dxfzx7e6zpxeax2o3b7s81gteorpkraz70gy6ytg73g8dvv6ltyywhd5vncsuoxtvegwivwu2bb2bbgqw01dxjbvhzaopwm3\",\n \"forks\" : 6723657866324223806,\n \"allow_merge_commit\" : true,\n \"archive_url\" : \"http://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref}\",\n \"git_refs_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/refs{/sha}\",\n \"forks_url\" : \"http://api.github.com/repos/octocat/Hello-World/forks\",\n \"visibility\" : \"lg05dv3iftefaxbp0octh61i12jd7g9792zjcxufgmjhihc9ug0qjygi24mced3quaizic77le215bc77azm1xv0nsyn6y139yih2gxz0mi0q4p1hcllkv93t9t2zkcna4ajjh8fxv5pjv5n1ca4y5m8ftseddu9g6\",\n \"statuses_url\" : \"http://api.github.com/repos/octocat/Hello-World/statuses/{sha}\",\n \"network_count\" : 1494023926525723729,\n \"ssh_url\" : \"git@github.com:octocat/Hello-World.git\",\n \"license\" : {\n \"html_url\" : \"https://web.example.mocklab.io/321094\",\n \"name\" : \"MIT License\",\n \"spdx_id\" : \"MIT\",\n \"key\" : \"mit\",\n \"url\" : \"https://api.github.com/licenses/mit\",\n \"node_id\" : \"MDc6TGljZW5zZW1pdA==\"\n },\n \"full_name\" : \"octocat/Hello-World\",\n \"size\" : 108,\n \"template_repository\" : {\n \"anonymous_access_enabled\" : false,\n \"is_template\" : true,\n \"stargazers_count\" : 5552216753193564429,\n \"pushed_at\" : \"gb76wmpm1ahdsh83bujt69hm79g1jlqqmk4ec7q2uqibsw8ufbjvewusx390j8m58i1j\",\n \"language\" : \"awrdc7ady89pc9vn8nghex7chh56o6vg0socjuh7q7jd4rr36l1ebeajhwbdnqj7mk2bfzpo37ixxx9bp095jwszb65skz\",\n \"subscription_url\" : \"https://web.example.mocklab.io/044731\",\n \"branches_url\" : \"https://web.example.mocklab.io/800623\",\n \"allow_rebase_merge\" : true,\n \"issue_comment_url\" : \"https://web.example.mocklab.io/760017\",\n \"labels_url\" : \"https://web.example.mocklab.io/781236\",\n \"permissions\" : { },\n \"subscribers_url\" : \"https://web.example.mocklab.io/489047\",\n \"releases_url\" : \"https://web.example.mocklab.io/987386\",\n \"svn_url\" : \"https://web.example.mocklab.io/857233\",\n \"subscribers_count\" : 7174965335051919661,\n \"id\" : 8157981632285627259,\n \"allow_merge_commit\" : false,\n \"archive_url\" : \"https://web.example.mocklab.io/179173\",\n \"git_refs_url\" : \"https://web.example.mocklab.io/341113\",\n \"forks_url\" : \"https://web.example.mocklab.io/428080\",\n \"visibility\" : \"jnx35t218oqc3ftd2aaxrkn1wr8hfmr0eozmcbm8txt4y4lpttsq0erw48mftscxxcuu\",\n \"statuses_url\" : \"https://web.example.mocklab.io/789478\",\n \"network_count\" : 851043142754062161,\n \"ssh_url\" : \"https://web.example.mocklab.io/393485\",\n \"full_name\" : \"Rhea Ortiz\",\n \"size\" : 2757187261522171998,\n \"languages_url\" : \"https://web.example.mocklab.io/154006\",\n \"clone_url\" : \"https://web.example.mocklab.io/026493\",\n \"collaborators_url\" : \"https://web.example.mocklab.io/945874\",\n \"html_url\" : \"https://web.example.mocklab.io/563029\",\n \"name\" : \"Ping Fritsch\",\n \"pulls_url\" : \"https://web.example.mocklab.io/090283\",\n \"default_branch\" : \"xcnoqncp12sv0au8jvzjqe2q0mfuhjb3ur8fxifupuyvfdty6789mj7mfhq\",\n \"hooks_url\" : \"https://web.example.mocklab.io/411561\",\n \"trees_url\" : \"https://web.example.mocklab.io/625690\",\n \"tags_url\" : \"https://web.example.mocklab.io/878841\",\n \"contributors_url\" : \"https://web.example.mocklab.io/393514\",\n \"private\" : false,\n \"has_downloads\" : false,\n \"notifications_url\" : \"https://web.example.mocklab.io/192388\",\n \"open_issues_count\" : 4222915787928991753,\n \"created_at\" : \"dyxodoh0byrz8hnts5k4llqwaeyq67tmzpemun08xyw81z5v1r6kzwpkelmeq0vd1w32muwec5uwo1vh8nydufcph62ie8hyyhsko4o3b09ejfo2ludhoswjm4tg8h1onskz00li7z1oh98mrylkry0kiojqjtzv425x70x389ugac8\",\n \"description\" : \"Illo recusandae amet. Consequuntur ab ipsum et minus doloremque. Rem modi non voluptate error alias aut.\",\n \"deployments_url\" : \"https://web.example.mocklab.io/374360\",\n \"keys_url\" : \"https://web.example.mocklab.io/812308\",\n \"has_projects\" : false,\n \"archived\" : false,\n \"has_wiki\" : true,\n \"updated_at\" : \"2022-04-09T06:44:58.989905Z\",\n \"comments_url\" : \"https://web.example.mocklab.io/676037\",\n \"stargazers_url\" : \"https://web.example.mocklab.io/098155\",\n \"disabled\" : false,\n \"delete_branch_on_merge\" : true,\n \"git_url\" : \"https://web.example.mocklab.io/961549\",\n \"has_pages\" : true,\n \"owner\" : { },\n \"allow_squash_merge\" : true,\n \"commits_url\" : \"https://web.example.mocklab.io/859764\",\n \"compare_url\" : \"https://web.example.mocklab.io/068037\",\n \"git_commits_url\" : \"https://web.example.mocklab.io/663662\",\n \"topics\" : [ \"0pmjcu3etr0yv3fu9i2cv8npiakwa60xar0k4ikuv5y\" ],\n \"blobs_url\" : \"https://web.example.mocklab.io/573788\",\n \"git_tags_url\" : \"https://web.example.mocklab.io/517805\",\n \"merges_url\" : \"https://web.example.mocklab.io/917613\",\n \"downloads_url\" : \"https://web.example.mocklab.io/370399\",\n \"has_issues\" : true,\n \"url\" : \"https://web.example.mocklab.io/757843\",\n \"contents_url\" : \"https://web.example.mocklab.io/828965\",\n \"mirror_url\" : \"https://web.example.mocklab.io/430733\",\n \"milestones_url\" : \"https://web.example.mocklab.io/875614\",\n \"teams_url\" : \"https://web.example.mocklab.io/383548\",\n \"fork\" : true,\n \"issues_url\" : \"https://web.example.mocklab.io/458837\",\n \"events_url\" : \"https://web.example.mocklab.io/847793\",\n \"issue_events_url\" : \"https://web.example.mocklab.io/025719\",\n \"assignees_url\" : \"https://web.example.mocklab.io/171610\",\n \"watchers_count\" : 7096298034025851766,\n \"forks_count\" : 2374669111083293700,\n \"homepage\" : \"1l73vx8abq3gyfwg1sryax49rqc9t9858q2ixhb96rlvbvqi4cnaqdkarsb2m0owppba9iiu13a5b1alcgj4n06ecfgzrm7ek3bt8gsjmrorf1tb7ogeox1q6c7mio8o5nqroey5dxq89jd7udu45di8xpsa6akmvx\",\n \"node_id\" : \"1ooc\"\n },\n \"languages_url\" : \"http://api.github.com/repos/octocat/Hello-World/languages\",\n \"clone_url\" : \"https://github.com/octocat/Hello-World.git\",\n \"collaborators_url\" : \"http://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator}\",\n \"html_url\" : \"https://github.com/octocat/Hello-World\",\n \"name\" : \"Team Environment\",\n \"pulls_url\" : \"http://api.github.com/repos/octocat/Hello-World/pulls{/number}\",\n \"default_branch\" : \"master\",\n \"hooks_url\" : \"http://api.github.com/repos/octocat/Hello-World/hooks\",\n \"trees_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/trees{/sha}\",\n \"tags_url\" : \"http://api.github.com/repos/octocat/Hello-World/tags\",\n \"contributors_url\" : \"http://api.github.com/repos/octocat/Hello-World/contributors\",\n \"private\" : true,\n \"has_downloads\" : true,\n \"notifications_url\" : \"http://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating}\",\n \"open_issues_count\" : 0,\n \"created_at\" : \"2011-01-26T19:01:12Z\",\n \"description\" : \"This your first repo!\",\n \"watchers\" : 8158171841819347388,\n \"deployments_url\" : \"http://api.github.com/repos/octocat/Hello-World/deployments\",\n \"keys_url\" : \"http://api.github.com/repos/octocat/Hello-World/keys{/key_id}\",\n \"has_projects\" : true,\n \"archived\" : true,\n \"has_wiki\" : true,\n \"updated_at\" : \"2011-01-26T19:14:43Z\",\n \"comments_url\" : \"http://api.github.com/repos/octocat/Hello-World/comments{/number}\",\n \"stargazers_url\" : \"http://api.github.com/repos/octocat/Hello-World/stargazers\",\n \"disabled\" : true,\n \"delete_branch_on_merge\" : false,\n \"git_url\" : \"git:github.com/octocat/Hello-World.git\",\n \"has_pages\" : false,\n \"owner\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Vicenta Tillman\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"adubss8nvr3knorenshcn77qt2hfn983eju5xef6o4bdsvwsaq6pkhpz0gk07llbhi1fraqairq4od00p4behjjbga56zmt8mjjefr7vad\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"allow_squash_merge\" : true,\n \"commits_url\" : \"http://api.github.com/repos/octocat/Hello-World/commits{/sha}\",\n \"compare_url\" : \"http://api.github.com/repos/octocat/Hello-World/compare/{base}...{head}\",\n \"git_commits_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/commits{/sha}\",\n \"topics\" : [ \"98167ecwmbr4i54ne2uwh4yf5x8vozezjo72gwyl44y5lg262g2udh0jyzp52e5cziu3skpl5gbhvlelev5jl9u5wivrxykc13eh91u5coefwshda4ykkkjlu0oup63afjf9crw520mzpy2axh3rw6vulrdg3rf2we82x7vx78o5kah4wz6igwil\", \"rmjoz3s0c58qtmq764z3pdbwd6l4x1iu7rrwj2nj2sbscl9vqnwiydiv81pj1jpg3credg6bvoqhibl90035ml8tfvd3ujs39pjb0g7s56f5uqwl2npx1rw7uxs5up257nz39g4j155ecg4fq5pts5bohjixglk87is\", \"c5gulam2c3hlcnqayoi09m\", \"36frpugo2kbe9qilogo4bq8mf8ur1tdt6rlem5alf11cg9ccao9cetw1ofqrx26epbjosroq31h69wl8xc5esuxm7kaiwol65lua7ztjqwe2g3r\", \"af40\", \"z4118sxdxsh55jqo6hfywcztvej491xsyggpftzby7g68zhzgzpgckivn1j9ubl2hggal8nz3gi04bj6s6vhak02mbnpmmqfrg838i0ux5lzd730iw8v\", \"i1vpnn0clj7ip4wkj7zop3rg2goophpksabs4dczos3nyvx3qsrpzp7bvvbsr548o4dw8k34l1dzlx3pohjhy80qx714b7qgc1410vze8lad0jldkbucsf7h2o19ym3da71bscqiu45pk81xo41y7qcrsh\" ],\n \"blobs_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/blobs{/sha}\",\n \"git_tags_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/tags{/sha}\",\n \"merges_url\" : \"http://api.github.com/repos/octocat/Hello-World/merges\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:42Z\\\"\",\n \"downloads_url\" : \"http://api.github.com/repos/octocat/Hello-World/downloads\",\n \"has_issues\" : true,\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World\",\n \"contents_url\" : \"http://api.github.com/repos/octocat/Hello-World/contents/{+path}\",\n \"mirror_url\" : \"git:git.example.com/octocat/Hello-World\",\n \"milestones_url\" : \"http://api.github.com/repos/octocat/Hello-World/milestones{/number}\",\n \"teams_url\" : \"http://api.github.com/repos/octocat/Hello-World/teams\",\n \"fork\" : true,\n \"issues_url\" : \"http://api.github.com/repos/octocat/Hello-World/issues{/number}\",\n \"events_url\" : \"http://api.github.com/repos/octocat/Hello-World/events\",\n \"issue_events_url\" : \"http://api.github.com/repos/octocat/Hello-World/issues/events{/number}\",\n \"organization\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Florentino Kertzmann\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"bh2ir784aypxohzq5ccajhnmb151l14gz34eo49ajzlm04609gwntc57admjp2rllhaaw5ubumrusb2qc5eyowtulbiz39lhyryggqekidibps6wm7zh5eqyfju9vsk7dfilbrhw\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"assignees_url\" : \"http://api.github.com/repos/octocat/Hello-World/assignees{/user}\",\n \"open_issues\" : 2869067983928962322,\n \"watchers_count\" : 80,\n \"forks_count\" : 9,\n \"homepage\" : \"https://github.com\",\n \"node_id\" : \"MDEwOlJlcG9zaXRvcnkxMjk2MjY5\"\n },\n \"title\" : \"Found a bug\",\n \"author_association\" : \"OWNER\",\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347/labels{/name}\",\n \"number\" : 1347,\n \"performed_via_github_app\" : {\n \"owner\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Ernie Reichert\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"kz6tho37uygxu4cmy47rykis7idu7kgtgl7brhzpikxgozigwujj2ioqhnaaoiotwyfmih33ryga05i4ge32lobuqmmi813cx2x7muz1d8625uy0uwdqq1wrukcczdu3d605q1q7o3d1b97i67l4ebj7iho\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"installations_count\" : 5,\n \"created_at\" : \"2017-07-08T16:18:44-04:00\",\n \"description\" : \"The description of the app.\",\n \"client_id\" : \"\\\"Iv1.25b5d1e65ffc4022\\\"\",\n \"external_url\" : \"https://example.com\",\n \"updated_at\" : \"2017-07-08T16:18:44-04:00\",\n \"permissions\" : {\n \"deployments\" : \"write\",\n \"issues\" : \"read\"\n },\n \"html_url\" : \"https://github.com/apps/super-ci\",\n \"name\" : \"Probot Owners\",\n \"pem\" : \"\\\"-----BEGIN RSA PRIVATE KEY-----\\\\nMIIEogIBAAKCAQEArYxrNYD/iT5CZVpRJu4rBKmmze3PVmT/gCo2ATUvDvZTPTey\\\\nxcGJ3vvrJXazKk06pN05TN29o98jrYz4cengG3YGsXPNEpKsIrEl8NhbnxapEnM9\\\\nJCMRe0P5JcPsfZlX6hmiT7136GRWiGOUba2X9+HKh8QJVLG5rM007TBER9/z9mWm\\\\nrJuNh+m5l320oBQY/Qq3A7wzdEfZw8qm/mIN0FCeoXH1L6B8xXWaAYBwhTEh6SSn\\\\nZHlO1Xu1JWDmAvBCi0RO5aRSKM8q9QEkvvHP4yweAtK3N8+aAbZ7ovaDhyGz8r6r\\\\nzhU1b8Uo0Z2ysf503WqzQgIajr7Fry7/kUwpgQIDAQABAoIBADwJp80Ko1xHPZDy\\\\nfcCKBDfIuPvkmSW6KumbsLMaQv1aGdHDwwTGv3t0ixSay8CGlxMRtRDyZPib6SvQ\\\\n6OH/lpfpbMdW2ErkksgtoIKBVrDilfrcAvrNZu7NxRNbhCSvN8q0s4ICecjbbVQh\\\\nnueSdlA6vGXbW58BHMq68uRbHkP+k+mM9U0mDJ1HMch67wlg5GbayVRt63H7R2+r\\\\nVxcna7B80J/lCEjIYZznawgiTvp3MSanTglqAYi+m1EcSsP14bJIB9vgaxS79kTu\\\\noiSo93leJbBvuGo8QEiUqTwMw4tDksmkLsoqNKQ1q9P7LZ9DGcujtPy4EZsamSJT\\\\ny8OJt0ECgYEA2lxOxJsQk2kI325JgKFjo92mQeUObIvPfSNWUIZQDTjniOI6Gv63\\\\nGLWVFrZcvQBWjMEQraJA9xjPbblV8PtfO87MiJGLWCHFxmPz2dzoedN+2Coxom8m\\\\nV95CLz8QUShuao6u/RYcvUaZEoYs5bHcTmy5sBK80JyEmafJPtCQVxMCgYEAy3ar\\\\nZr3yv4xRPEPMat4rseswmuMooSaK3SKub19WFI5IAtB/e7qR1Rj9JhOGcZz+OQrl\\\\nT78O2OFYlgOIkJPvRMrPpK5V9lslc7tz1FSh3BZMRGq5jSyD7ETSOQ0c8T2O/s7v\\\\nbeEPbVbDe4mwvM24XByH0GnWveVxaDl51ABD65sCgYB3ZAspUkOA5egVCh8kNpnd\\\\nSd6SnuQBE3ySRlT2WEnCwP9Ph6oPgn+oAfiPX4xbRqkL8q/k0BdHQ4h+zNwhk7+h\\\\nWtPYRAP1Xxnc/F+jGjb+DVaIaKGU18MWPg7f+FI6nampl3Q0KvfxwX0GdNhtio8T\\\\nTj1E+SnFwh56SRQuxSh2gwKBgHKjlIO5NtNSflsUYFM+hyQiPiqnHzddfhSG+/3o\\\\nm5nNaSmczJesUYreH5San7/YEy2UxAugvP7aSY2MxB+iGsiJ9WD2kZzTUlDZJ7RV\\\\nUzWsoqBR+eZfVJ2FUWWvy8TpSG6trh4dFxImNtKejCR1TREpSiTV3Zb1dmahK9GV\\\\nrK9NAoGAbBxRLoC01xfxCTgt5BDiBcFVh4fp5yYKwavJPLzHSpuDOrrI9jDn1oKN\\\\nonq5sDU1i391zfQvdrbX4Ova48BN+B7p63FocP/MK5tyyBoT8zQEk2+vWDOw7H/Z\\\\nu5dTCPxTIsoIwUw1I+7yIxqJzLPFgR2gVBwY1ra/8iAqCj+zeBw=\\\\n-----END RSA PRIVATE KEY-----\\\\n\\\"\",\n \"webhook_secret\" : \"\\\"6fba8f2fc8a7e8f2cca5577eddd82ca7586b3b6b\\\"\",\n \"client_secret\" : \"\\\"1d4b2097ac622ba702d19de498f005747a8b21d3\\\"\",\n \"id\" : 37,\n \"events\" : [ \"label\", \"deployment\" ],\n \"slug\" : \"probot-owners\",\n \"node_id\" : \"MDExOkludGVncmF0aW9uMQ==\"\n },\n \"updated_at\" : \"2011-04-22T13:33:48Z\",\n \"comments_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347/comments\",\n \"active_lock_reason\" : \"too heated\",\n \"id\" : 1,\n \"repository_url\" : \"https://api.github.com/repos/octocat/Hello-World\",\n \"state\" : \"open\",\n \"locked\" : true,\n \"timeline_url\" : \"https://web.example.mocklab.io/905050\",\n \"pull_request\" : {\n \"patch_url\" : \"https://web.example.mocklab.io/264429\",\n \"html_url\" : \"https://web.example.mocklab.io/508072\",\n \"merged_at\" : \"2023-04-17T20:31:25.992Z\",\n \"diff_url\" : \"https://web.example.mocklab.io/443095\",\n \"url\" : \"https://web.example.mocklab.io/844045\"\n },\n \"closed_at\" : \"2022-04-15T07:16:28.992Z\",\n \"comments\" : 0,\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347\",\n \"labels\" : [ {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n }, {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n } ],\n \"milestone\" : {\n \"creator\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Tilda Weimann\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"h4mn11hoanc4tksq7fhbxo9wtourv083evwwvbckphadgyprcszh5h1kf2x90z1g7rzp2o1z0pz00wbl6nwmfuca90g1k0jbo3yngvb8leict99im87qjhvxl1n5ordg8nj9wh39xwaloa1sks63yw1gz6bln\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"closed_at\" : \"2013-02-12T13:22:01Z\",\n \"created_at\" : \"2011-04-10T20:09:31Z\",\n \"description\" : \"Tracking milestone for version 1.0\",\n \"closed_issues\" : 8,\n \"title\" : \"v1.0\",\n \"due_on\" : \"2012-10-09T23:39:01Z\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones/1\",\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones/1/labels\",\n \"number\" : 42,\n \"updated_at\" : \"2014-03-03T18:58:10Z\",\n \"html_url\" : \"https://github.com/octocat/Hello-World/milestones/v1.0\",\n \"id\" : 1002604,\n \"state\" : \"open\",\n \"open_issues\" : 4,\n \"node_id\" : \"MDk6TWlsZXN0b25lMTAwMjYwNA==\"\n },\n \"events_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347/events\",\n \"html_url\" : \"https://github.com/octocat/Hello-World/issues/1347\",\n \"assignee\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Oscar Konopelski\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"35lmx33pihcwq2ojgvdpx2rjxaqarr20sr07kv5mrmohrf9s755nqfqluivr20qdr\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"user\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"frances.bins\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"suagxg7h59ze2vbj8zbxa2rm70mpaf65dpg6arvcdqooaavhbd1wahj1tvwvvtkymzvnbjh0a2jionj1\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"node_id\" : \"MDU6SXNzdWUx\"\n },\n \"action\" : \"a6byokzjmrju00cq2i0fjdmpuhw8ysak1w9ql526sfe42djet0dohk2vq6zoj798p9p1t25w7e77sbfvbx4204cel9367lmvtlm7ojn6bue1ah3wj7vhwrnfczmishanaivom0ovunrkgdfdaeo5hs0pbv1fw9860llc4uh7ish9uyw\",\n \"comment\" : {\n \"issue_url\" : \"https://web.example.mocklab.io/642439\",\n \"body_html\" : \"6784w171t0kngzr6uzhb1yxtqe95tvpejm1e05n35cqp95vt3z4mb4ef3mka2yjpb53rbi7uso\",\n \"body_text\" : \"p2twzs3twab3xw4emwz48url52vo8jb1cqxwt43k5tl0eeobyeyg19ms3udgprnu9nopy8er1unc7p9r5jybbmz0qdd8jtfn\",\n \"created_at\" : \"2011-04-14T16:00:49Z\",\n \"body\" : \"What version of Safari were you using when you observed this bug?\",\n \"url\" : \"https://api.github.com/repositories/42/issues/comments/1\",\n \"author_association\" : \"OWNER\",\n \"performed_via_github_app\" : {\n \"owner\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Garret Stamm\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"swjry6aazp1yoa27n9bo2xxkm2dse50d2lp8ob13igynin9c0av0yjf4us6e80c3ndfdbfis0b0ba9boxsowxr5g3lz423lu12hcmgach7ggbtsy6ko61lw\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"installations_count\" : 5,\n \"created_at\" : \"2017-07-08T16:18:44-04:00\",\n \"description\" : \"The description of the app.\",\n \"client_id\" : \"\\\"Iv1.25b5d1e65ffc4022\\\"\",\n \"external_url\" : \"https://example.com\",\n \"updated_at\" : \"2017-07-08T16:18:44-04:00\",\n \"permissions\" : {\n \"deployments\" : \"write\",\n \"issues\" : \"read\"\n },\n \"html_url\" : \"https://github.com/apps/super-ci\",\n \"name\" : \"Probot Owners\",\n \"pem\" : \"\\\"-----BEGIN RSA PRIVATE KEY-----\\\\nMIIEogIBAAKCAQEArYxrNYD/iT5CZVpRJu4rBKmmze3PVmT/gCo2ATUvDvZTPTey\\\\nxcGJ3vvrJXazKk06pN05TN29o98jrYz4cengG3YGsXPNEpKsIrEl8NhbnxapEnM9\\\\nJCMRe0P5JcPsfZlX6hmiT7136GRWiGOUba2X9+HKh8QJVLG5rM007TBER9/z9mWm\\\\nrJuNh+m5l320oBQY/Qq3A7wzdEfZw8qm/mIN0FCeoXH1L6B8xXWaAYBwhTEh6SSn\\\\nZHlO1Xu1JWDmAvBCi0RO5aRSKM8q9QEkvvHP4yweAtK3N8+aAbZ7ovaDhyGz8r6r\\\\nzhU1b8Uo0Z2ysf503WqzQgIajr7Fry7/kUwpgQIDAQABAoIBADwJp80Ko1xHPZDy\\\\nfcCKBDfIuPvkmSW6KumbsLMaQv1aGdHDwwTGv3t0ixSay8CGlxMRtRDyZPib6SvQ\\\\n6OH/lpfpbMdW2ErkksgtoIKBVrDilfrcAvrNZu7NxRNbhCSvN8q0s4ICecjbbVQh\\\\nnueSdlA6vGXbW58BHMq68uRbHkP+k+mM9U0mDJ1HMch67wlg5GbayVRt63H7R2+r\\\\nVxcna7B80J/lCEjIYZznawgiTvp3MSanTglqAYi+m1EcSsP14bJIB9vgaxS79kTu\\\\noiSo93leJbBvuGo8QEiUqTwMw4tDksmkLsoqNKQ1q9P7LZ9DGcujtPy4EZsamSJT\\\\ny8OJt0ECgYEA2lxOxJsQk2kI325JgKFjo92mQeUObIvPfSNWUIZQDTjniOI6Gv63\\\\nGLWVFrZcvQBWjMEQraJA9xjPbblV8PtfO87MiJGLWCHFxmPz2dzoedN+2Coxom8m\\\\nV95CLz8QUShuao6u/RYcvUaZEoYs5bHcTmy5sBK80JyEmafJPtCQVxMCgYEAy3ar\\\\nZr3yv4xRPEPMat4rseswmuMooSaK3SKub19WFI5IAtB/e7qR1Rj9JhOGcZz+OQrl\\\\nT78O2OFYlgOIkJPvRMrPpK5V9lslc7tz1FSh3BZMRGq5jSyD7ETSOQ0c8T2O/s7v\\\\nbeEPbVbDe4mwvM24XByH0GnWveVxaDl51ABD65sCgYB3ZAspUkOA5egVCh8kNpnd\\\\nSd6SnuQBE3ySRlT2WEnCwP9Ph6oPgn+oAfiPX4xbRqkL8q/k0BdHQ4h+zNwhk7+h\\\\nWtPYRAP1Xxnc/F+jGjb+DVaIaKGU18MWPg7f+FI6nampl3Q0KvfxwX0GdNhtio8T\\\\nTj1E+SnFwh56SRQuxSh2gwKBgHKjlIO5NtNSflsUYFM+hyQiPiqnHzddfhSG+/3o\\\\nm5nNaSmczJesUYreH5San7/YEy2UxAugvP7aSY2MxB+iGsiJ9WD2kZzTUlDZJ7RV\\\\nUzWsoqBR+eZfVJ2FUWWvy8TpSG6trh4dFxImNtKejCR1TREpSiTV3Zb1dmahK9GV\\\\nrK9NAoGAbBxRLoC01xfxCTgt5BDiBcFVh4fp5yYKwavJPLzHSpuDOrrI9jDn1oKN\\\\nonq5sDU1i391zfQvdrbX4Ova48BN+B7p63FocP/MK5tyyBoT8zQEk2+vWDOw7H/Z\\\\nu5dTCPxTIsoIwUw1I+7yIxqJzLPFgR2gVBwY1ra/8iAqCj+zeBw=\\\\n-----END RSA PRIVATE KEY-----\\\\n\\\"\",\n \"webhook_secret\" : \"\\\"6fba8f2fc8a7e8f2cca5577eddd82ca7586b3b6b\\\"\",\n \"client_secret\" : \"\\\"1d4b2097ac622ba702d19de498f005747a8b21d3\\\"\",\n \"id\" : 37,\n \"events\" : [ \"label\", \"deployment\" ],\n \"slug\" : \"probot-owners\",\n \"node_id\" : \"MDExOkludGVncmF0aW9uMQ==\"\n },\n \"updated_at\" : \"2011-04-14T16:00:49Z\",\n \"html_url\" : \"https://web.example.mocklab.io/493464\",\n \"reactions\" : {\n \"confused\" : 2741220721547731453,\n \"-1\" : 5654147630244748833,\n \"+1\" : 1863912088239534186,\n \"total_count\" : 4597698417391729280,\n \"rocket\" : 6688752908023927201,\n \"hooray\" : 1322092342033688973,\n \"eyes\" : 8071687333429514690,\n \"heart\" : 4290037610612440716,\n \"laugh\" : 3870424928874772454,\n \"url\" : \"https://web.example.mocklab.io/759328\"\n },\n \"id\" : 42,\n \"user\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"charita.hegmann\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"3c4vn2z9e4celheg51cujc929gmou387wook6ltekg49v7vr2sw5b1pir06z1hrjqn426pjl4e4tb1ti1r125s8ad5chfe99ov8fn5eodmxt9dhw3q0pqqw8ujxpe23snxv92xihniz36jl\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"node_id\" : \"nq62\"\n }\n },\n \"repo\" : {\n \"name\" : \"Alfonso Greenholt\",\n \"id\" : 2695317726468655124,\n \"url\" : \"https://web.example.mocklab.io/865026\"\n },\n \"created_at\" : \"2024-03-22T19:20:03.993Z\",\n \"id\" : \"f5dl\",\n \"type\" : \"c1p2c246xp5xc3p0xj2gle98okt9x0auv0b120l6f6k0x4gacvex83jrb72v4v29r5egbyc9cmtna6f8riijfaoiqrs0l5vd63yni\"\n}, {\n \"actor\" : {\n \"display_login\" : \"pcxjl1jc9ifpez8nm6xc0avzstvb62y5p5z1o61gxs3k6ecplorx71ktmixa9v9m1qm6dkyliswoprpevebkcvqirzic25pjh0p0mjxf0qamwuu0ryie5l8hwwmqsv6o289mxow1crmwz96tsq4db6o73wq6geac6sdsefxk01bsa5yvl4bnt3gk\",\n \"avatar_url\" : \"https://s3.amazonaws.com/uifaces/faces/twitter/woodsman001/128.jpg\",\n \"id\" : 8277179531310664219,\n \"login\" : \"pmndoaw2n52f7lbiyul4skmdgwuhpis8kekkv1et0wg3sx7gw5eou2fx15\",\n \"gravatar_id\" : \"0055\",\n \"url\" : \"https://web.example.mocklab.io/360802\"\n },\n \"public\" : true,\n \"org\" : {\n \"display_login\" : \"kbj7z7xufyx86q56naox1b26wu6sovpjk10yqe4yy8uzoir9itun3q6w0t6ilwq44mcx97dfwcv75hwe3stgl9oxdow5vqoue73learyirfcs3spkucgi162c3knsd28nbg6jjqt34o0hgdmt7hbh88xpbal25ge6vh3qaz6w\",\n \"avatar_url\" : \"https://s3.amazonaws.com/uifaces/faces/twitter/vivekprvr/128.jpg\",\n \"id\" : 2057157087545013940,\n \"login\" : \"b9d1bkb9io4ubar4bijwn0x56iqx7og3z4ctjb5svs83jfs177dzfxa9kecem32nrbf153fz03aivaxcpaas8ml5q5ybww3qo0jhiu37r0kyzomtudec9iwz7wff3tdqx6jidlywfjtjedv0sb8uku8v3sci7quhutjbfmgtgsaulsc8\",\n \"gravatar_id\" : \"i9ev\",\n \"url\" : \"https://web.example.mocklab.io/177092\"\n },\n \"payload\" : {\n \"pages\" : [ {\n \"summary\" : \"Rerum non voluptatem. Suscipit aliquam nemo et neque. Inventore natus quam. Eaque minima quaerat quod illum labore ab.\",\n \"html_url\" : \"https://web.example.mocklab.io/691922\",\n \"page_name\" : \"Monte Steuber\",\n \"action\" : \"3xs0ka5va0ascs6whs9hlchmfpjziemn5pjj7d0unef8ancw1k76a5kl7echpl4d8amqxdzti3ljjz6a4kfyapsu7cj2ic4k9lbqxyy2truxbl6h4wzszke6gfk376jikvnls8\",\n \"title\" : \"Est et sit a sit autem.\",\n \"sha\" : \"ko1rfqyec7hqx7tpwnd0mumpyz9ft1dy6uoo5ncra\"\n }, {\n \"summary\" : \"Consequatur illum commodi et fugit est. Labore eveniet vero consectetur quo. Et modi quia sed autem delectus nostrum reprehenderit. Non recusandae et neque.\",\n \"html_url\" : \"https://web.example.mocklab.io/383081\",\n \"page_name\" : \"Danilo Krajcik\",\n \"action\" : \"qqrlxkn2q7jq4dvspwy9xindpb6p6if3k32bflrmpgmlsr7nf6rsknf48qjcr9wn8674cewkb7m4z2i69mspwtfm1i0x1kd1x25dvmwkrxhodq73f30n4tzxbym956k0xvga9zp6j1vhkzrkq6ofcz2s5fknenv0a6xuaf43uv\",\n \"title\" : \"Consequatur consectetur dolorem.\",\n \"sha\" : \"h1cy8zf0bobvqfoxqkqc4npiklx7ofjsoqso81oi84iw01q3xvi\"\n }, {\n \"summary\" : \"Praesentium quo consequuntur accusantium. Eos corrupti eos deserunt. Voluptatum sed est.\",\n \"html_url\" : \"https://web.example.mocklab.io/196837\",\n \"page_name\" : \"Tonie Hammes\",\n \"action\" : \"4t6p78b3pydb3wsbp6qf9den80qct0447fx9s9dm8is303229rfflqe89vfemaotlxd29fg7fgczian2n3nxskh6kgk72mujjwuz3tls4e7xyga1al2xaq5urty3ywj0xa4ct5gbpu0l\",\n \"title\" : \"Iste atque rem quia quis nisi quaerat.\",\n \"sha\" : \"oj5ircdqotbp2vanrqkfmx8krtpvm6xwo4ltrxi64shskr690e2sy78majkkizolr4b9opugoe1wc2cpb7sb7zaw9n7l3212i3\"\n }, {\n \"summary\" : \"Unde magnam accusamus dolor. Molestiae est quae officia. Quis molestiae error est autem quia. Velit qui dolores totam.\",\n \"html_url\" : \"https://web.example.mocklab.io/703097\",\n \"page_name\" : \"Raymon Bergnaum\",\n \"action\" : \"gtlugxzgae1p00pjfy6j9xl1xhqypl1aa6bm5k2k35qjbygynrlds7irw\",\n \"title\" : \"Ex repudiandae aliquid odit dignissimos beatae.\",\n \"sha\" : \"ulpzxz2mwlq4igm36gvzclkn5hg3ufqxub69lttaqgmu3871gk7z1e2gkc7intmm4h20n7epl986h50zlarykxfj4c2tc2cneh7cq4e0ugy5m70f1gzcsmicb7z4y13u91adyx8bt9iuilrrw5i2usx2yvo4fjoosrcooqtrh8ypr3qsmhuv0\"\n }, {\n \"summary\" : \"Molestias dolorem eum veritatis sint qui. Voluptas deleniti quos soluta. Omnis quidem quis. Et commodi ipsum tempora vel quis facere.\",\n \"html_url\" : \"https://web.example.mocklab.io/938299\",\n \"page_name\" : \"Bradley Watsica\",\n \"action\" : \"9wcrcko0b7yre5zdtp46jznr25lgqfmw0ad5p2hg806m8ruh3rjbh0hbhdg\",\n \"title\" : \"Dolor explicabo aut suscipit aut.\",\n \"sha\" : \"php5is4apy6zqq2kgt6prturcolp\"\n }, {\n \"summary\" : \"Et culpa molestiae ipsam sint id. Dicta beatae rerum fugiat aut quia ut. Exercitationem saepe alias qui officia rerum minus.\",\n \"html_url\" : \"https://web.example.mocklab.io/878624\",\n \"page_name\" : \"Aubrey White\",\n \"action\" : \"s2rts0c44b1oq08uogzmk2kznmj4ng5s7cu93xsawjnk1oa5x4ktxao8vrbtk4rgnsqzn3lcr83v6uqo26ozygzo7fr1jxajl7jaxf4ehgl7jzcr6oqk7rixrpjef6xw0hceyxfvx4wdq99k1rg8o04f8gf3js9ddmq700tws\",\n \"title\" : \"Incidunt reprehenderit voluptatem.\",\n \"sha\" : \"p2krvx8b11ty7i2u737qjqztopdal14ttzfd6592n307x3xsikgtuun7vny1h9dz49t7r1w8pm48ptg32qcqh4qq5gymul28m2r4hyxeru5e0oxmrrowk45kxwghw9on7zb41bvgheyvp\"\n } ],\n \"issue\" : {\n \"body_html\" : \"6vll6ghpy0uwf7zh3sdw2vomzrx5va15nf1dlz25uajibglxm7x5vvivksmo7hn2jadty12913roxxotmyfgjj6avi9areaukbysrmewcrwbgaiebenpmd673itznc15daj71px4yiby1nlk8m3v4n4fc2oeastkfk9xfbrwzlfalb3gtqlu5uv\",\n \"body_text\" : \"ekezltu8c58oo9ttwfmz8rxrf0yuj3xnclae8854ibw4du648a1e4qskuw4q7gpvmyxqiole5hoyhlh7ia1phca4s7zcdhdgdz7crk6iu6j7\",\n \"assignees\" : [ {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Alanna Berge\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"mtxueqyujw192x3ubq2qhoff165wjjdpovb0uyuyidhi4qijmufkmy10ir8ba0eq9vz3d3e9uhnwi85cm7895nvmx7baz8k5xpqzkkw4toto8kj1vw581mmlqbp0sx85oe7nnvxx5nmxbimvlmbyf1ymphry2lakma2c\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n }, {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Lakeisha Bosco PhD\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"noagcb2kabhpslhxd7usafpbiy8bchk4sscmhzur31o1u9tzn95jr73qxrfr4ex7f01fi9sxqmf4owjtgiu\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n }, {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Kathlene Funk\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"0b9n6acim23vbefpedti1p1kgjdgul46ht5jva2e\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n }, {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Tyron O'Keefe\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"cs7fzl29kztdzk4ssz4txhdp1o0yrycvd19yonxvt5g1rvn8knkappoa5n9rq9dxw28n0bat9448ywlceoz3e10hhxisq115kp0sy8dqbqn1nkimlv4iqx2i2x7trxacdrsz2e8b7o38oh4waqwhmzc03anz928mcs1njmdveq998\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n }, {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Harlan Feest\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"g9hmr7xtzmb5\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n }, {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Jerry Hudson\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"iwi4qha04uqyrn1fiff94iupxgmzw0hsun\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n }, {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Elna Welch\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"orkdbtgi4hpmm4yi5c8v9x4ggrpyrdz2tscxe7gvwzo18kbcf3qovoef2vtr32d2l6p7gzigh7h4anonohatzmhagn31d8t51lp9q9y7pxumqpculqfjkc0zz4olibutvtk84w8u8uskeirhp3exki7t\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n } ],\n \"created_at\" : \"2011-04-22T13:33:48Z\",\n \"body\" : \"I'm having a problem with this.\",\n \"repository\" : {\n \"allow_forking\" : true,\n \"anonymous_access_enabled\" : true,\n \"is_template\" : true,\n \"stargazers_count\" : 80,\n \"pushed_at\" : \"2011-01-26T19:06:43Z\",\n \"language\" : \"ro97tpym4fcxa9j2ohui5yr6gb2smcuq8tgx0ellyd2zuoz6hu5vmltt4mzky876mcc677rmdmvfz6b41gn7ow1ds2oxdqk7p1tv1a1t37ua5tgtol9f00ios4q6uqbpl\",\n \"subscription_url\" : \"http://api.github.com/repos/octocat/Hello-World/subscription\",\n \"branches_url\" : \"http://api.github.com/repos/octocat/Hello-World/branches{/branch}\",\n \"allow_rebase_merge\" : true,\n \"issue_comment_url\" : \"http://api.github.com/repos/octocat/Hello-World/issues/comments{/number}\",\n \"labels_url\" : \"http://api.github.com/repos/octocat/Hello-World/labels{/name}\",\n \"permissions\" : {\n \"pull\" : true,\n \"maintain\" : false,\n \"admin\" : true,\n \"triage\" : true,\n \"push\" : false\n },\n \"subscribers_url\" : \"http://api.github.com/repos/octocat/Hello-World/subscribers\",\n \"releases_url\" : \"http://api.github.com/repos/octocat/Hello-World/releases{/id}\",\n \"svn_url\" : \"https://svn.github.com/octocat/Hello-World\",\n \"subscribers_count\" : 1828230222928864620,\n \"id\" : 42,\n \"master_branch\" : \"bubqd8w\",\n \"forks\" : 2258645737582319765,\n \"allow_merge_commit\" : true,\n \"archive_url\" : \"http://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref}\",\n \"git_refs_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/refs{/sha}\",\n \"forks_url\" : \"http://api.github.com/repos/octocat/Hello-World/forks\",\n \"visibility\" : \"sqbo7zszgcbesyhckmtlwc9kfjaudwd27bar2x7jinzmazhqxrbfp3gqs8m4oba84bdihtj436zq0bjnno0an16rvj8cm8i0vbwsrfw34mhne5zrxrm0af6\",\n \"statuses_url\" : \"http://api.github.com/repos/octocat/Hello-World/statuses/{sha}\",\n \"network_count\" : 5528640196925891038,\n \"ssh_url\" : \"git@github.com:octocat/Hello-World.git\",\n \"license\" : {\n \"html_url\" : \"https://web.example.mocklab.io/492615\",\n \"name\" : \"MIT License\",\n \"spdx_id\" : \"MIT\",\n \"key\" : \"mit\",\n \"url\" : \"https://api.github.com/licenses/mit\",\n \"node_id\" : \"MDc6TGljZW5zZW1pdA==\"\n },\n \"full_name\" : \"octocat/Hello-World\",\n \"size\" : 108,\n \"template_repository\" : {\n \"anonymous_access_enabled\" : true,\n \"is_template\" : true,\n \"stargazers_count\" : 7645124608669805460,\n \"pushed_at\" : \"p6agp80u7h4651pppy7biavvw0fhvyormcgbkvo61ljyb9ut37c\",\n \"language\" : \"kfx3wtfsr6vu9h30me1qexisrg3wtd9lyrczhbdo1k4caol2gd34p8ra2kruq3zr13yvzkh7xq1sbezgdutwkf1csa2jnrmq5aa0ojthvl98modiql0dzj0yjjtkp78afxhgucsdk59t9cru5hs5dygt2fqn9lssiwm0iri37acr6o6u8j7u7q0wihp5goezy6tg\",\n \"subscription_url\" : \"https://web.example.mocklab.io/553431\",\n \"branches_url\" : \"https://web.example.mocklab.io/519226\",\n \"allow_rebase_merge\" : true,\n \"issue_comment_url\" : \"https://web.example.mocklab.io/697042\",\n \"labels_url\" : \"https://web.example.mocklab.io/880729\",\n \"permissions\" : { },\n \"subscribers_url\" : \"https://web.example.mocklab.io/972934\",\n \"releases_url\" : \"https://web.example.mocklab.io/986357\",\n \"svn_url\" : \"https://web.example.mocklab.io/938007\",\n \"subscribers_count\" : 8743809027645801338,\n \"id\" : 8014104962352496995,\n \"allow_merge_commit\" : false,\n \"archive_url\" : \"https://web.example.mocklab.io/975003\",\n \"git_refs_url\" : \"https://web.example.mocklab.io/804615\",\n \"forks_url\" : \"https://web.example.mocklab.io/021526\",\n \"visibility\" : \"j3nkjkae06a65gdcebkzypywktiislxg6iymwyr8hecjvv8myps6r88ur7tz22t4wj6a3xan42l9a0xeh3ftclic2igu7\",\n \"statuses_url\" : \"https://web.example.mocklab.io/518221\",\n \"network_count\" : 5767285346896181410,\n \"ssh_url\" : \"https://web.example.mocklab.io/066062\",\n \"full_name\" : \"Oleta Hauck\",\n \"size\" : 5600737944011966809,\n \"languages_url\" : \"https://web.example.mocklab.io/722475\",\n \"clone_url\" : \"https://web.example.mocklab.io/797798\",\n \"collaborators_url\" : \"https://web.example.mocklab.io/422975\",\n \"html_url\" : \"https://web.example.mocklab.io/910220\",\n \"name\" : \"Gregorio Wintheiser\",\n \"pulls_url\" : \"https://web.example.mocklab.io/915690\",\n \"default_branch\" : \"8qfadwknb3c0tvz24t7qhqh1mhz6uc851uho5zula1kmhaapkf26mk4oenacl3rx61ynux2vq34k1ph0u37iinvw6movur7eeyfwymk6ugt47lf1huxui2mc4aqmjahdmd8jottzf5ss1s9mbby9jfugp1uy6nnxufx8pktb417\",\n \"hooks_url\" : \"https://web.example.mocklab.io/936305\",\n \"trees_url\" : \"https://web.example.mocklab.io/088597\",\n \"tags_url\" : \"https://web.example.mocklab.io/070976\",\n \"contributors_url\" : \"https://web.example.mocklab.io/060523\",\n \"private\" : true,\n \"has_downloads\" : true,\n \"notifications_url\" : \"https://web.example.mocklab.io/855881\",\n \"open_issues_count\" : 4417237004383108597,\n \"created_at\" : \"s5os0ych1r3nd6czogumam7vpgz6e3qxvnzaumknc93fox0mxculvigwzjghhw6uf7074frxmei7ldqk4ad5rl9hcj5zxqooi627fybucq778skb5vs6eky6dd8io3r3esy2fx630fz31txl1ii4cxb9d5yn74ymz0n7beeq5rh\",\n \"description\" : \"Similique alias corrupti. Laborum unde rerum dolores voluptatem suscipit. Aut ipsum ut.\",\n \"deployments_url\" : \"https://web.example.mocklab.io/052351\",\n \"keys_url\" : \"https://web.example.mocklab.io/626208\",\n \"has_projects\" : true,\n \"archived\" : true,\n \"has_wiki\" : true,\n \"updated_at\" : \"2022-08-09T06:18:58.998352Z\",\n \"comments_url\" : \"https://web.example.mocklab.io/739548\",\n \"stargazers_url\" : \"https://web.example.mocklab.io/712780\",\n \"disabled\" : true,\n \"delete_branch_on_merge\" : true,\n \"git_url\" : \"https://web.example.mocklab.io/448896\",\n \"has_pages\" : false,\n \"owner\" : { },\n \"allow_squash_merge\" : false,\n \"commits_url\" : \"https://web.example.mocklab.io/461664\",\n \"compare_url\" : \"https://web.example.mocklab.io/292834\",\n \"git_commits_url\" : \"https://web.example.mocklab.io/186943\",\n \"topics\" : [ \"kl2m2os9f783wlqyxyg4bxh1r844wqz56hh0rbvs7nfe5g7t8p530lotf08qof6mz0ri9xe3g3tvkk5tlefthfo9dxobkb8uozhhiohv4rhtalg7jr8iifv7h1tv9e9n8d6s4yd01z0x7\", \"8236jpvbe1i9q9vobi\" ],\n \"blobs_url\" : \"https://web.example.mocklab.io/414907\",\n \"git_tags_url\" : \"https://web.example.mocklab.io/175827\",\n \"merges_url\" : \"https://web.example.mocklab.io/949569\",\n \"downloads_url\" : \"https://web.example.mocklab.io/645185\",\n \"has_issues\" : true,\n \"url\" : \"https://web.example.mocklab.io/716842\",\n \"contents_url\" : \"https://web.example.mocklab.io/433698\",\n \"mirror_url\" : \"https://web.example.mocklab.io/747458\",\n \"milestones_url\" : \"https://web.example.mocklab.io/265422\",\n \"teams_url\" : \"https://web.example.mocklab.io/346161\",\n \"fork\" : false,\n \"issues_url\" : \"https://web.example.mocklab.io/658541\",\n \"events_url\" : \"https://web.example.mocklab.io/909699\",\n \"issue_events_url\" : \"https://web.example.mocklab.io/232858\",\n \"assignees_url\" : \"https://web.example.mocklab.io/237541\",\n \"watchers_count\" : 1560656501322047017,\n \"forks_count\" : 2883750936467490943,\n \"homepage\" : \"ksocjhyfkxdds0t37f27onu6zp9g95qgfk3fzle83qe2ch52t1ff689cm4x1xpmejnwigvwvo8\",\n \"node_id\" : \"2dsm\"\n },\n \"languages_url\" : \"http://api.github.com/repos/octocat/Hello-World/languages\",\n \"clone_url\" : \"https://github.com/octocat/Hello-World.git\",\n \"collaborators_url\" : \"http://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator}\",\n \"html_url\" : \"https://github.com/octocat/Hello-World\",\n \"name\" : \"Team Environment\",\n \"pulls_url\" : \"http://api.github.com/repos/octocat/Hello-World/pulls{/number}\",\n \"default_branch\" : \"master\",\n \"hooks_url\" : \"http://api.github.com/repos/octocat/Hello-World/hooks\",\n \"trees_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/trees{/sha}\",\n \"tags_url\" : \"http://api.github.com/repos/octocat/Hello-World/tags\",\n \"contributors_url\" : \"http://api.github.com/repos/octocat/Hello-World/contributors\",\n \"private\" : false,\n \"has_downloads\" : true,\n \"notifications_url\" : \"http://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating}\",\n \"open_issues_count\" : 0,\n \"created_at\" : \"2011-01-26T19:01:12Z\",\n \"description\" : \"This your first repo!\",\n \"watchers\" : 1047043202056173502,\n \"deployments_url\" : \"http://api.github.com/repos/octocat/Hello-World/deployments\",\n \"keys_url\" : \"http://api.github.com/repos/octocat/Hello-World/keys{/key_id}\",\n \"has_projects\" : true,\n \"archived\" : true,\n \"has_wiki\" : true,\n \"updated_at\" : \"2011-01-26T19:14:43Z\",\n \"comments_url\" : \"http://api.github.com/repos/octocat/Hello-World/comments{/number}\",\n \"stargazers_url\" : \"http://api.github.com/repos/octocat/Hello-World/stargazers\",\n \"disabled\" : false,\n \"delete_branch_on_merge\" : false,\n \"git_url\" : \"git:github.com/octocat/Hello-World.git\",\n \"has_pages\" : false,\n \"owner\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Deandrea Kunde\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"e9xnxpyl3bgfvqptijpkau5ven8tgrofyqadr2f9lfv56vpzgo96g9a3s6fa9c4rfx6py\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"allow_squash_merge\" : true,\n \"commits_url\" : \"http://api.github.com/repos/octocat/Hello-World/commits{/sha}\",\n \"compare_url\" : \"http://api.github.com/repos/octocat/Hello-World/compare/{base}...{head}\",\n \"git_commits_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/commits{/sha}\",\n \"topics\" : [ \"i1wcowvtv\" ],\n \"blobs_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/blobs{/sha}\",\n \"git_tags_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/tags{/sha}\",\n \"merges_url\" : \"http://api.github.com/repos/octocat/Hello-World/merges\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:42Z\\\"\",\n \"downloads_url\" : \"http://api.github.com/repos/octocat/Hello-World/downloads\",\n \"has_issues\" : true,\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World\",\n \"contents_url\" : \"http://api.github.com/repos/octocat/Hello-World/contents/{+path}\",\n \"mirror_url\" : \"git:git.example.com/octocat/Hello-World\",\n \"milestones_url\" : \"http://api.github.com/repos/octocat/Hello-World/milestones{/number}\",\n \"teams_url\" : \"http://api.github.com/repos/octocat/Hello-World/teams\",\n \"fork\" : false,\n \"issues_url\" : \"http://api.github.com/repos/octocat/Hello-World/issues{/number}\",\n \"events_url\" : \"http://api.github.com/repos/octocat/Hello-World/events\",\n \"issue_events_url\" : \"http://api.github.com/repos/octocat/Hello-World/issues/events{/number}\",\n \"organization\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Nieves Rau\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"4vl6fuasz4z58j8jyek4nkr4smkfvnu70auuocykkvwhzy3aquqb0jc8lpnpre54o1yp7s0mef2h42zw\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"assignees_url\" : \"http://api.github.com/repos/octocat/Hello-World/assignees{/user}\",\n \"open_issues\" : 6810696389649475676,\n \"watchers_count\" : 80,\n \"forks_count\" : 9,\n \"homepage\" : \"https://github.com\",\n \"node_id\" : \"MDEwOlJlcG9zaXRvcnkxMjk2MjY5\"\n },\n \"title\" : \"Found a bug\",\n \"author_association\" : \"OWNER\",\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347/labels{/name}\",\n \"number\" : 1347,\n \"performed_via_github_app\" : {\n \"owner\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Antione Ebert\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"61i5p0rh33wdctypmc3xkc1qodd5lgb34nvnnxqbjdzj3enkd9433prauf3s1xz29cinm2x09b1t4p37s7uyuf5wqby5gd3a0b7hdb1v7dap3jlhci0l721qe43ifcngpi7yh2ulj8bhbrgg7ajob3wdogl5e1bk4cy5eahinyz8hzqazn60luu5zucisg32e1\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"installations_count\" : 5,\n \"created_at\" : \"2017-07-08T16:18:44-04:00\",\n \"description\" : \"The description of the app.\",\n \"client_id\" : \"\\\"Iv1.25b5d1e65ffc4022\\\"\",\n \"external_url\" : \"https://example.com\",\n \"updated_at\" : \"2017-07-08T16:18:44-04:00\",\n \"permissions\" : {\n \"deployments\" : \"write\",\n \"issues\" : \"read\"\n },\n \"html_url\" : \"https://github.com/apps/super-ci\",\n \"name\" : \"Probot Owners\",\n \"pem\" : \"\\\"-----BEGIN RSA PRIVATE KEY-----\\\\nMIIEogIBAAKCAQEArYxrNYD/iT5CZVpRJu4rBKmmze3PVmT/gCo2ATUvDvZTPTey\\\\nxcGJ3vvrJXazKk06pN05TN29o98jrYz4cengG3YGsXPNEpKsIrEl8NhbnxapEnM9\\\\nJCMRe0P5JcPsfZlX6hmiT7136GRWiGOUba2X9+HKh8QJVLG5rM007TBER9/z9mWm\\\\nrJuNh+m5l320oBQY/Qq3A7wzdEfZw8qm/mIN0FCeoXH1L6B8xXWaAYBwhTEh6SSn\\\\nZHlO1Xu1JWDmAvBCi0RO5aRSKM8q9QEkvvHP4yweAtK3N8+aAbZ7ovaDhyGz8r6r\\\\nzhU1b8Uo0Z2ysf503WqzQgIajr7Fry7/kUwpgQIDAQABAoIBADwJp80Ko1xHPZDy\\\\nfcCKBDfIuPvkmSW6KumbsLMaQv1aGdHDwwTGv3t0ixSay8CGlxMRtRDyZPib6SvQ\\\\n6OH/lpfpbMdW2ErkksgtoIKBVrDilfrcAvrNZu7NxRNbhCSvN8q0s4ICecjbbVQh\\\\nnueSdlA6vGXbW58BHMq68uRbHkP+k+mM9U0mDJ1HMch67wlg5GbayVRt63H7R2+r\\\\nVxcna7B80J/lCEjIYZznawgiTvp3MSanTglqAYi+m1EcSsP14bJIB9vgaxS79kTu\\\\noiSo93leJbBvuGo8QEiUqTwMw4tDksmkLsoqNKQ1q9P7LZ9DGcujtPy4EZsamSJT\\\\ny8OJt0ECgYEA2lxOxJsQk2kI325JgKFjo92mQeUObIvPfSNWUIZQDTjniOI6Gv63\\\\nGLWVFrZcvQBWjMEQraJA9xjPbblV8PtfO87MiJGLWCHFxmPz2dzoedN+2Coxom8m\\\\nV95CLz8QUShuao6u/RYcvUaZEoYs5bHcTmy5sBK80JyEmafJPtCQVxMCgYEAy3ar\\\\nZr3yv4xRPEPMat4rseswmuMooSaK3SKub19WFI5IAtB/e7qR1Rj9JhOGcZz+OQrl\\\\nT78O2OFYlgOIkJPvRMrPpK5V9lslc7tz1FSh3BZMRGq5jSyD7ETSOQ0c8T2O/s7v\\\\nbeEPbVbDe4mwvM24XByH0GnWveVxaDl51ABD65sCgYB3ZAspUkOA5egVCh8kNpnd\\\\nSd6SnuQBE3ySRlT2WEnCwP9Ph6oPgn+oAfiPX4xbRqkL8q/k0BdHQ4h+zNwhk7+h\\\\nWtPYRAP1Xxnc/F+jGjb+DVaIaKGU18MWPg7f+FI6nampl3Q0KvfxwX0GdNhtio8T\\\\nTj1E+SnFwh56SRQuxSh2gwKBgHKjlIO5NtNSflsUYFM+hyQiPiqnHzddfhSG+/3o\\\\nm5nNaSmczJesUYreH5San7/YEy2UxAugvP7aSY2MxB+iGsiJ9WD2kZzTUlDZJ7RV\\\\nUzWsoqBR+eZfVJ2FUWWvy8TpSG6trh4dFxImNtKejCR1TREpSiTV3Zb1dmahK9GV\\\\nrK9NAoGAbBxRLoC01xfxCTgt5BDiBcFVh4fp5yYKwavJPLzHSpuDOrrI9jDn1oKN\\\\nonq5sDU1i391zfQvdrbX4Ova48BN+B7p63FocP/MK5tyyBoT8zQEk2+vWDOw7H/Z\\\\nu5dTCPxTIsoIwUw1I+7yIxqJzLPFgR2gVBwY1ra/8iAqCj+zeBw=\\\\n-----END RSA PRIVATE KEY-----\\\\n\\\"\",\n \"webhook_secret\" : \"\\\"6fba8f2fc8a7e8f2cca5577eddd82ca7586b3b6b\\\"\",\n \"client_secret\" : \"\\\"1d4b2097ac622ba702d19de498f005747a8b21d3\\\"\",\n \"id\" : 37,\n \"events\" : [ \"label\", \"deployment\" ],\n \"slug\" : \"probot-owners\",\n \"node_id\" : \"MDExOkludGVncmF0aW9uMQ==\"\n },\n \"updated_at\" : \"2011-04-22T13:33:48Z\",\n \"comments_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347/comments\",\n \"active_lock_reason\" : \"too heated\",\n \"id\" : 1,\n \"repository_url\" : \"https://api.github.com/repos/octocat/Hello-World\",\n \"state\" : \"open\",\n \"locked\" : true,\n \"timeline_url\" : \"https://web.example.mocklab.io/835805\",\n \"pull_request\" : {\n \"patch_url\" : \"https://web.example.mocklab.io/649049\",\n \"html_url\" : \"https://web.example.mocklab.io/920990\",\n \"merged_at\" : \"2022-06-03T23:26:56Z\",\n \"diff_url\" : \"https://web.example.mocklab.io/925079\",\n \"url\" : \"https://web.example.mocklab.io/129927\"\n },\n \"closed_at\" : \"2023-04-06T01:02:30Z\",\n \"comments\" : 0,\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347\",\n \"labels\" : [ {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n }, {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n }, {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n } ],\n \"milestone\" : {\n \"creator\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Xiao Kemmer\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"6dhjtrh70vwu7no0fza3mp\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"closed_at\" : \"2013-02-12T13:22:01Z\",\n \"created_at\" : \"2011-04-10T20:09:31Z\",\n \"description\" : \"Tracking milestone for version 1.0\",\n \"closed_issues\" : 8,\n \"title\" : \"v1.0\",\n \"due_on\" : \"2012-10-09T23:39:01Z\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones/1\",\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones/1/labels\",\n \"number\" : 42,\n \"updated_at\" : \"2014-03-03T18:58:10Z\",\n \"html_url\" : \"https://github.com/octocat/Hello-World/milestones/v1.0\",\n \"id\" : 1002604,\n \"state\" : \"open\",\n \"open_issues\" : 4,\n \"node_id\" : \"MDk6TWlsZXN0b25lMTAwMjYwNA==\"\n },\n \"events_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347/events\",\n \"html_url\" : \"https://github.com/octocat/Hello-World/issues/1347\",\n \"assignee\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Malvina Pollich I\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"kqho5vcwk1u000jfmkmqm9guzx3sblu4obf9rz4wkwg4svabbb5kd7q14lfrdbpck6gdhbnu7anc5ymye1p7rezj7ph0qwqeig4ckra28p9wz9ivmu5v7zsh154ombtb5weq6yjnla78yh6ug6r4t533ecli9l3urlv8k8k2ado0q1epndlf5lv0x\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"user\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"yolanda.yundt\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"29jkm06ctpsa6jjccw5zee0cc9cgoks5rt9tvf30czz6j7mufv7rn6oypqnt9bwfrmkh05k5ckkpgjfaenf39s72tbuv4e4hzlzac4ee0virexqjamujx0yxi5kiikvf9p7tdzqncdt4d4gygxkvvebiegaq7p7zjrbipmyp19enx4vu3v8uz\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"node_id\" : \"MDU6SXNzdWUx\"\n },\n \"action\" : \"2hr798a4338mggapl\",\n \"comment\" : {\n \"issue_url\" : \"https://web.example.mocklab.io/862747\",\n \"body_html\" : \"r58uvxfof3mnvlpz8bcvu1vy6aioo3oibgjso3pipcvmumleqim99umj3cjedyjlocegh1ve51xcebkm4fj8bh9j32\",\n \"body_text\" : \"3fz07x5ljlsdqwvfl2ykcxqav2\",\n \"created_at\" : \"2011-04-14T16:00:49Z\",\n \"body\" : \"What version of Safari were you using when you observed this bug?\",\n \"url\" : \"https://api.github.com/repositories/42/issues/comments/1\",\n \"author_association\" : \"OWNER\",\n \"performed_via_github_app\" : {\n \"owner\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Charlene Schroeder\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"2au38k1qo0dbtjxr6wf45k69qi\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"installations_count\" : 5,\n \"created_at\" : \"2017-07-08T16:18:44-04:00\",\n \"description\" : \"The description of the app.\",\n \"client_id\" : \"\\\"Iv1.25b5d1e65ffc4022\\\"\",\n \"external_url\" : \"https://example.com\",\n \"updated_at\" : \"2017-07-08T16:18:44-04:00\",\n \"permissions\" : {\n \"deployments\" : \"write\",\n \"issues\" : \"read\"\n },\n \"html_url\" : \"https://github.com/apps/super-ci\",\n \"name\" : \"Probot Owners\",\n \"pem\" : \"\\\"-----BEGIN RSA PRIVATE KEY-----\\\\nMIIEogIBAAKCAQEArYxrNYD/iT5CZVpRJu4rBKmmze3PVmT/gCo2ATUvDvZTPTey\\\\nxcGJ3vvrJXazKk06pN05TN29o98jrYz4cengG3YGsXPNEpKsIrEl8NhbnxapEnM9\\\\nJCMRe0P5JcPsfZlX6hmiT7136GRWiGOUba2X9+HKh8QJVLG5rM007TBER9/z9mWm\\\\nrJuNh+m5l320oBQY/Qq3A7wzdEfZw8qm/mIN0FCeoXH1L6B8xXWaAYBwhTEh6SSn\\\\nZHlO1Xu1JWDmAvBCi0RO5aRSKM8q9QEkvvHP4yweAtK3N8+aAbZ7ovaDhyGz8r6r\\\\nzhU1b8Uo0Z2ysf503WqzQgIajr7Fry7/kUwpgQIDAQABAoIBADwJp80Ko1xHPZDy\\\\nfcCKBDfIuPvkmSW6KumbsLMaQv1aGdHDwwTGv3t0ixSay8CGlxMRtRDyZPib6SvQ\\\\n6OH/lpfpbMdW2ErkksgtoIKBVrDilfrcAvrNZu7NxRNbhCSvN8q0s4ICecjbbVQh\\\\nnueSdlA6vGXbW58BHMq68uRbHkP+k+mM9U0mDJ1HMch67wlg5GbayVRt63H7R2+r\\\\nVxcna7B80J/lCEjIYZznawgiTvp3MSanTglqAYi+m1EcSsP14bJIB9vgaxS79kTu\\\\noiSo93leJbBvuGo8QEiUqTwMw4tDksmkLsoqNKQ1q9P7LZ9DGcujtPy4EZsamSJT\\\\ny8OJt0ECgYEA2lxOxJsQk2kI325JgKFjo92mQeUObIvPfSNWUIZQDTjniOI6Gv63\\\\nGLWVFrZcvQBWjMEQraJA9xjPbblV8PtfO87MiJGLWCHFxmPz2dzoedN+2Coxom8m\\\\nV95CLz8QUShuao6u/RYcvUaZEoYs5bHcTmy5sBK80JyEmafJPtCQVxMCgYEAy3ar\\\\nZr3yv4xRPEPMat4rseswmuMooSaK3SKub19WFI5IAtB/e7qR1Rj9JhOGcZz+OQrl\\\\nT78O2OFYlgOIkJPvRMrPpK5V9lslc7tz1FSh3BZMRGq5jSyD7ETSOQ0c8T2O/s7v\\\\nbeEPbVbDe4mwvM24XByH0GnWveVxaDl51ABD65sCgYB3ZAspUkOA5egVCh8kNpnd\\\\nSd6SnuQBE3ySRlT2WEnCwP9Ph6oPgn+oAfiPX4xbRqkL8q/k0BdHQ4h+zNwhk7+h\\\\nWtPYRAP1Xxnc/F+jGjb+DVaIaKGU18MWPg7f+FI6nampl3Q0KvfxwX0GdNhtio8T\\\\nTj1E+SnFwh56SRQuxSh2gwKBgHKjlIO5NtNSflsUYFM+hyQiPiqnHzddfhSG+/3o\\\\nm5nNaSmczJesUYreH5San7/YEy2UxAugvP7aSY2MxB+iGsiJ9WD2kZzTUlDZJ7RV\\\\nUzWsoqBR+eZfVJ2FUWWvy8TpSG6trh4dFxImNtKejCR1TREpSiTV3Zb1dmahK9GV\\\\nrK9NAoGAbBxRLoC01xfxCTgt5BDiBcFVh4fp5yYKwavJPLzHSpuDOrrI9jDn1oKN\\\\nonq5sDU1i391zfQvdrbX4Ova48BN+B7p63FocP/MK5tyyBoT8zQEk2+vWDOw7H/Z\\\\nu5dTCPxTIsoIwUw1I+7yIxqJzLPFgR2gVBwY1ra/8iAqCj+zeBw=\\\\n-----END RSA PRIVATE KEY-----\\\\n\\\"\",\n \"webhook_secret\" : \"\\\"6fba8f2fc8a7e8f2cca5577eddd82ca7586b3b6b\\\"\",\n \"client_secret\" : \"\\\"1d4b2097ac622ba702d19de498f005747a8b21d3\\\"\",\n \"id\" : 37,\n \"events\" : [ \"label\", \"deployment\" ],\n \"slug\" : \"probot-owners\",\n \"node_id\" : \"MDExOkludGVncmF0aW9uMQ==\"\n },\n \"updated_at\" : \"2011-04-14T16:00:49Z\",\n \"html_url\" : \"https://web.example.mocklab.io/869848\",\n \"reactions\" : {\n \"confused\" : 6718959010843598170,\n \"-1\" : 9027078445984263366,\n \"+1\" : 5444945117822200072,\n \"total_count\" : 4516877246771080232,\n \"rocket\" : 7549381525034822961,\n \"hooray\" : 8601536040678124009,\n \"eyes\" : 2395818163383219948,\n \"heart\" : 569104898501262347,\n \"laugh\" : 6280518868887978068,\n \"url\" : \"https://web.example.mocklab.io/933450\"\n },\n \"id\" : 42,\n \"user\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"ramiro.volkman\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"kt2152044wlqtj38ixm1gty7680zpvme8nz66f2iaoya8a6ucuq5joi2qotggmgwtb9v\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"node_id\" : \"jd28\"\n }\n },\n \"repo\" : {\n \"name\" : \"Patsy Stark\",\n \"id\" : 6868077505636030494,\n \"url\" : \"https://web.example.mocklab.io/633158\"\n },\n \"created_at\" : \"2022-04-04T02:00:42.002Z\",\n \"id\" : \"5x95\",\n \"type\" : \"3y7w1k98lp7iui21t331anv81gidyze62bga5cmsd4c6tmlv33uncie8wfmn75jpwqiqt8ocphr4ojql2m82bnxiev53imd\"\n}, {\n \"actor\" : {\n \"display_login\" : \"5o0zqebs1ng66zv7aakwjfcntohe88xau24jq0v8eo5b9mdollvmd9cz5yyg6m9psnb9u3achrfnu9s97xvwh3fkrudnn5bqebtg2txp09k2percerd2ro7t4wimc5dvv7a0ogrugk\",\n \"avatar_url\" : \"https://s3.amazonaws.com/uifaces/faces/twitter/kostaspt/128.jpg\",\n \"id\" : 6794781913776099168,\n \"login\" : \"54udi15\",\n \"gravatar_id\" : \"wc0v\",\n \"url\" : \"https://web.example.mocklab.io/980635\"\n },\n \"public\" : true,\n \"org\" : {\n \"display_login\" : \"479bl6\",\n \"avatar_url\" : \"https://s3.amazonaws.com/uifaces/faces/twitter/claudioguglieri/128.jpg\",\n \"id\" : 8291300485720159203,\n \"login\" : \"7z12\",\n \"gravatar_id\" : \"f0gw\",\n \"url\" : \"https://web.example.mocklab.io/874484\"\n },\n \"payload\" : {\n \"pages\" : [ {\n \"summary\" : \"Possimus aperiam sunt debitis laborum qui atque. Est et enim. Iste soluta laudantium magni quasi quia animi. Sit culpa eaque fuga voluptas. Est impedit delectus porro ratione quis deserunt ullam.\",\n \"html_url\" : \"https://web.example.mocklab.io/553974\",\n \"page_name\" : \"Alishia Okuneva\",\n \"action\" : \"3l1oxvs4290cgo4z10ym8ndpws12zrc6f3p68yowzw4shu1utezejuwwomuyrgt7juvd8hjzg6c29vz6h54tjbocaixe953ip4gpme91wknhrlkanj1jdkd5b7p1m188e1vi9gq2hhlp55tm5vnjxcjj5hb8u6u\",\n \"title\" : \"Ad facilis quibusdam enim nam neque.\",\n \"sha\" : \"pxbkhlkiih31l1vn17coajhw27vb00wma6iluhbxj8s28mu168xa16020i31ojo5onx1q1v28es9if3nobo1bor3w1vl9d0etqatk9a58nyk7ycgxfgrm3yxxcwsw6mw73t5dc2qnmu8gef8q9a6\"\n }, {\n \"summary\" : \"Numquam et vel magnam id perferendis. Odio est consequatur est. Repellendus qui eligendi sit et doloremque delectus dolores. Harum quis optio.\",\n \"html_url\" : \"https://web.example.mocklab.io/075612\",\n \"page_name\" : \"Lettie Nicolas\",\n \"action\" : \"i4u3l1boyqb3hjy7jr5k2walldpa62avhxmuuqziaikrrp2wiexcbofm8eowr16uu6zt079aeyedn1r62y7j7jg6pne3bn7hwn0l256rwgt1kiigtgb2ww66um3t28matn1a8mai5id7j1i8gcq38s190030xpz28wqwb08yxln3rt12rqb73psbj1mf7\",\n \"title\" : \"Et non explicabo ullam.\",\n \"sha\" : \"mhmjkgbe28siz94nusv1ujybpws9iqrcvu28d1zlnfpb\"\n }, {\n \"summary\" : \"Quos voluptas est laudantium quia omnis. Dignissimos doloribus sed ut dolorum amet. Aperiam tenetur veniam facilis. Qui laboriosam deleniti mollitia impedit quis accusantium.\",\n \"html_url\" : \"https://web.example.mocklab.io/743104\",\n \"page_name\" : \"Jetta Nienow\",\n \"action\" : \"pf956r8dliflgendv0u2g\",\n \"title\" : \"Iure eos autem quibusdam aliquid dignissimos possimus.\",\n \"sha\" : \"68jkesn48glmhxhzm3i3cn6anoazgwxii98w7j02163jb08aq3vkv9mnbq85mbnlnufrl9l3g4tyr3muj1ddkwahn9ncklxx31cr\"\n }, {\n \"summary\" : \"Nesciunt consequatur odit rerum. Modi ipsam excepturi occaecati atque. Esse temporibus perspiciatis et dolor ullam. Ut sint quam ratione nobis. Eligendi consequatur asperiores vel autem nisi.\",\n \"html_url\" : \"https://web.example.mocklab.io/908074\",\n \"page_name\" : \"Mr. Shelby Fadel\",\n \"action\" : \"fv70bczb4w5pv5a0gfr8ajp\",\n \"title\" : \"Praesentium quia corrupti nihil et autem.\",\n \"sha\" : \"nt8di15wlqdgeplh87dz65dfwhn6rtq5yfwg55re3qya57ae0hxl4n07zc81ie31cqtdk6nko\"\n }, {\n \"summary\" : \"Quis repellendus vel vero sequi debitis. Quo dolor aut eum. Et esse id et nostrum ipsum et quia.\",\n \"html_url\" : \"https://web.example.mocklab.io/373198\",\n \"page_name\" : \"Heidy Rippin\",\n \"action\" : \"as4m8fbirliqdybm7jtq93dlr8xghelkup0qka5jsb487kskj3adnt4hra1dsa7xbe7varv3u7xgy4flxasauhzapc8223c7rnde78fhykx7cm5x92f8ykdagtoshna6k09nrigdkqppxywooaad3xiidmtzfrs2mqxdeke7ylllfvdeh3a1pmyf6ps52\",\n \"title\" : \"Quo alias et quas temporibus dignissimos repellat.\",\n \"sha\" : \"38gulh0bwzn\"\n } ],\n \"issue\" : {\n \"body_html\" : \"r6mg0cdv168q5x1p6obmzh19ezz8lj9qde19djrs5isu60jzbqtc3e9xec43mrp5qnvmi76ca1tjatjfb0x0adq6ame3sudt926vt6cm5fjdjrcghx2z5evo9dcda8x3fns4givgynuca27o1vusa\",\n \"body_text\" : \"mwiu0on1pea5i7ayso9wil7lr21lykz1zh6svb44hcu1zk4uk365bqnc2w\",\n \"assignees\" : [ {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Kirsten Sauer II\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"f3ynd0pl7mnlj29ccm2pjx31ddbci7vxqktgviygu19pnohocf2itebrn2lb84go8kp0uz2fo89x89gwgx246ctsfbc1yfjz4lpo56eeqhvtn6cqtwofm38y86i2f78hm1e4il11nemjcbjxy\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n }, {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Felicitas Collier Sr.\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"9vuzz6tanffgpo4lxl9d52s01k1if96sdh1iwkyyce0h0h5iha59i7xaa18it\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n }, {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Renata Schaden\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"ydvmbqy5n29lv4jflssyge0e0sbkmk90ri7mzw8p1kfu36qprrwjdeldcvu4k6kuvl5lriaf8w173puuai15tj0vyhr71emm2pazjf33vmy0h8mdz3zs69f9vji3xtluy\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n }, {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Karissa Ankunding\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"su7prps2qembr92bkql\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n }, {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Zack Pollich\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"1k3wb4xa81zxv4sgqx4ue7yr699hfnteg0yx5u2jevrduxkwjykcx37dyv2skblf3owdj\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n } ],\n \"created_at\" : \"2011-04-22T13:33:48Z\",\n \"body\" : \"I'm having a problem with this.\",\n \"repository\" : {\n \"allow_forking\" : false,\n \"anonymous_access_enabled\" : false,\n \"is_template\" : true,\n \"stargazers_count\" : 80,\n \"pushed_at\" : \"2011-01-26T19:06:43Z\",\n \"language\" : \"rkdynuqpgos3wo47md46tcqm7h9mzvz1g48fnsy0sem4o97kxta634af8cmesrlqrya2vco1\",\n \"subscription_url\" : \"http://api.github.com/repos/octocat/Hello-World/subscription\",\n \"branches_url\" : \"http://api.github.com/repos/octocat/Hello-World/branches{/branch}\",\n \"allow_rebase_merge\" : true,\n \"issue_comment_url\" : \"http://api.github.com/repos/octocat/Hello-World/issues/comments{/number}\",\n \"labels_url\" : \"http://api.github.com/repos/octocat/Hello-World/labels{/name}\",\n \"permissions\" : {\n \"pull\" : true,\n \"maintain\" : true,\n \"admin\" : false,\n \"triage\" : false,\n \"push\" : false\n },\n \"subscribers_url\" : \"http://api.github.com/repos/octocat/Hello-World/subscribers\",\n \"releases_url\" : \"http://api.github.com/repos/octocat/Hello-World/releases{/id}\",\n \"svn_url\" : \"https://svn.github.com/octocat/Hello-World\",\n \"subscribers_count\" : 6631659238810759778,\n \"id\" : 42,\n \"master_branch\" : \"pfhgoo86qvuzdgirntug613luf3ny4ysrbarxmhzw3msab3g84iz6phlhtg549vzn09o5jhyhm8fn4s34iduszlck95bd8qrd4qe9qenzwhxplrx7gf\",\n \"forks\" : 9103742637905175314,\n \"allow_merge_commit\" : true,\n \"archive_url\" : \"http://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref}\",\n \"git_refs_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/refs{/sha}\",\n \"forks_url\" : \"http://api.github.com/repos/octocat/Hello-World/forks\",\n \"visibility\" : \"vzj71p8rxm9vrl64axev0ks5h58bq0t4yvtpk2kzc110ve8dyylwe0qlcxxj4sghciz7jiivf3g9g6q3jrn3o5mf0md2yeut9jhtrhc89w8js\",\n \"statuses_url\" : \"http://api.github.com/repos/octocat/Hello-World/statuses/{sha}\",\n \"network_count\" : 8700917566450075562,\n \"ssh_url\" : \"git@github.com:octocat/Hello-World.git\",\n \"license\" : {\n \"html_url\" : \"https://web.example.mocklab.io/897090\",\n \"name\" : \"MIT License\",\n \"spdx_id\" : \"MIT\",\n \"key\" : \"mit\",\n \"url\" : \"https://api.github.com/licenses/mit\",\n \"node_id\" : \"MDc6TGljZW5zZW1pdA==\"\n },\n \"full_name\" : \"octocat/Hello-World\",\n \"size\" : 108,\n \"template_repository\" : {\n \"anonymous_access_enabled\" : true,\n \"is_template\" : false,\n \"stargazers_count\" : 5501604080886294875,\n \"pushed_at\" : \"ga5n8cwgns2izh0d292tc41q1f08kfo7pxek2zuirklrbdk09k4hhnm5sapn6tsxul6adikrtkkyh2x3qnsscjax668ax2zt8cazxxzfd699xxbyh2916z5usv7b87dvagxdv9l1ti6ms1bor\",\n \"language\" : \"8op6jaslvbyncbugoxcg5xht8nm7mcz5x61vooba54y3rx03kmli78pgbotxe00hhzqztdirit8n80if8rfulknloizmtl8p7asn0dr4nq4dz2pw1dlvtgpzed6tsty04b6qv3rm39evbvryebdxwyh01ekynu66jfxtfgbnzwl529ylctsl2ohnichq\",\n \"subscription_url\" : \"https://web.example.mocklab.io/472215\",\n \"branches_url\" : \"https://web.example.mocklab.io/010952\",\n \"allow_rebase_merge\" : false,\n \"issue_comment_url\" : \"https://web.example.mocklab.io/275417\",\n \"labels_url\" : \"https://web.example.mocklab.io/304435\",\n \"permissions\" : { },\n \"subscribers_url\" : \"https://web.example.mocklab.io/798925\",\n \"releases_url\" : \"https://web.example.mocklab.io/742056\",\n \"svn_url\" : \"https://web.example.mocklab.io/757199\",\n \"subscribers_count\" : 1374411549875205723,\n \"id\" : 8591227345525634342,\n \"allow_merge_commit\" : false,\n \"archive_url\" : \"https://web.example.mocklab.io/125772\",\n \"git_refs_url\" : \"https://web.example.mocklab.io/688965\",\n \"forks_url\" : \"https://web.example.mocklab.io/323624\",\n \"visibility\" : \"24h014pm2evofzmku4uk4f8k1l63ws3ay\",\n \"statuses_url\" : \"https://web.example.mocklab.io/931569\",\n \"network_count\" : 7477818507928958849,\n \"ssh_url\" : \"https://web.example.mocklab.io/044588\",\n \"full_name\" : \"Miss Mitchell McGlynn\",\n \"size\" : 840650743734000579,\n \"languages_url\" : \"https://web.example.mocklab.io/224366\",\n \"clone_url\" : \"https://web.example.mocklab.io/308186\",\n \"collaborators_url\" : \"https://web.example.mocklab.io/615520\",\n \"html_url\" : \"https://web.example.mocklab.io/140643\",\n \"name\" : \"Miss Columbus O'Conner\",\n \"pulls_url\" : \"https://web.example.mocklab.io/483864\",\n \"default_branch\" : \"1diadwwq0g18e64two66w05odnisr6woqxmblzt1i2845ctkqcdx8jf6wutyf8sj76w0h7x4xb0dj4do3viiwh1v5qg7orap5gd2jtz\",\n \"hooks_url\" : \"https://web.example.mocklab.io/831453\",\n \"trees_url\" : \"https://web.example.mocklab.io/792717\",\n \"tags_url\" : \"https://web.example.mocklab.io/801213\",\n \"contributors_url\" : \"https://web.example.mocklab.io/080818\",\n \"private\" : true,\n \"has_downloads\" : false,\n \"notifications_url\" : \"https://web.example.mocklab.io/932499\",\n \"open_issues_count\" : 2423938110776424089,\n \"created_at\" : \"5lzz30ygpf5cw4wt32tm4ogteef8u4h41s0g6ar097ppzeq6hczud4wlnbylmo45yupde5zhc4idwuuyzs39s9tl1xavlk0kpt2g175kuyw\",\n \"description\" : \"Aperiam sit sint iusto. Consequatur quo possimus ducimus neque. Minima et voluptatem id et omnis omnis. Et odit ipsa. Ut voluptates sint ea laborum placeat aut autem.\",\n \"deployments_url\" : \"https://web.example.mocklab.io/712390\",\n \"keys_url\" : \"https://web.example.mocklab.io/272433\",\n \"has_projects\" : false,\n \"archived\" : true,\n \"has_wiki\" : true,\n \"updated_at\" : \"2022-05-23T08:50:59.006238Z\",\n \"comments_url\" : \"https://web.example.mocklab.io/288387\",\n \"stargazers_url\" : \"https://web.example.mocklab.io/126688\",\n \"disabled\" : true,\n \"delete_branch_on_merge\" : true,\n \"git_url\" : \"https://web.example.mocklab.io/226706\",\n \"has_pages\" : false,\n \"owner\" : { },\n \"allow_squash_merge\" : true,\n \"commits_url\" : \"https://web.example.mocklab.io/478720\",\n \"compare_url\" : \"https://web.example.mocklab.io/278857\",\n \"git_commits_url\" : \"https://web.example.mocklab.io/061040\",\n \"topics\" : [ \"dcguea3f78kc9\", \"wpkml9wby2uxcojqugs264cvaz7bm6keyjs3toma6gq0wz6sdf9kk4q7n4u0cbyw4zz5fothr57d6jlzb\", \"izonzmyczjr5z44c5o6fu0ifjlk3c9tdtqoqw93p8g0l23n6x6n6o8tsrx8eack70821bux9e8gyk9jw7sv9efnuvxhcqqq727qnxtkllibmqntnvdk6xzvhm63wf851h01oquj1ovlmz70exb\", \"njy0063u6yes8ygy8g4gtd4xdk8mk4ggqdrkrcq4t6yvie37hcefsv5v0gisxhf5hwq4ov6b9mwac5z5v0nz4e5b68ysoz9wj5jmb22g68ukd8x3g\", \"fprewcrlv014mm6a9gn5obkwmjjop967si8pvq2edcrmdylnn97k9xk3u7etgp1nswuxumdn9yb0xzluo42d0zrccvxp5tzuorvcmm4t1t3zduuzqrlsdfo7if6catl8f9eji80jetdez4pwun8o1z31xuzym566ndi2myoxzs6ny\" ],\n \"blobs_url\" : \"https://web.example.mocklab.io/999333\",\n \"git_tags_url\" : \"https://web.example.mocklab.io/793843\",\n \"merges_url\" : \"https://web.example.mocklab.io/150202\",\n \"downloads_url\" : \"https://web.example.mocklab.io/086423\",\n \"has_issues\" : true,\n \"url\" : \"https://web.example.mocklab.io/320860\",\n \"contents_url\" : \"https://web.example.mocklab.io/780633\",\n \"mirror_url\" : \"https://web.example.mocklab.io/827442\",\n \"milestones_url\" : \"https://web.example.mocklab.io/289405\",\n \"teams_url\" : \"https://web.example.mocklab.io/272474\",\n \"fork\" : false,\n \"issues_url\" : \"https://web.example.mocklab.io/639840\",\n \"events_url\" : \"https://web.example.mocklab.io/293052\",\n \"issue_events_url\" : \"https://web.example.mocklab.io/725863\",\n \"assignees_url\" : \"https://web.example.mocklab.io/050498\",\n \"watchers_count\" : 3292477251741039437,\n \"forks_count\" : 4477972054754547600,\n \"homepage\" : \"cdzkisjdx07wvqrzd4nthbx6a8mkk9o6fciw2aw8dqz08n5wjo6f67q6ufahvojzt7mxiuqae9leu8plf7kouxqf1knx5o69n2cmqt6vjy1txt06w0tm8vf9mlc5qmxqt6i7zr8f2zn65a23nb2cs1qc78w\",\n \"node_id\" : \"6qa8\"\n },\n \"languages_url\" : \"http://api.github.com/repos/octocat/Hello-World/languages\",\n \"clone_url\" : \"https://github.com/octocat/Hello-World.git\",\n \"collaborators_url\" : \"http://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator}\",\n \"html_url\" : \"https://github.com/octocat/Hello-World\",\n \"name\" : \"Team Environment\",\n \"pulls_url\" : \"http://api.github.com/repos/octocat/Hello-World/pulls{/number}\",\n \"default_branch\" : \"master\",\n \"hooks_url\" : \"http://api.github.com/repos/octocat/Hello-World/hooks\",\n \"trees_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/trees{/sha}\",\n \"tags_url\" : \"http://api.github.com/repos/octocat/Hello-World/tags\",\n \"contributors_url\" : \"http://api.github.com/repos/octocat/Hello-World/contributors\",\n \"private\" : false,\n \"has_downloads\" : true,\n \"notifications_url\" : \"http://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating}\",\n \"open_issues_count\" : 0,\n \"created_at\" : \"2011-01-26T19:01:12Z\",\n \"description\" : \"This your first repo!\",\n \"watchers\" : 1325499302571821430,\n \"deployments_url\" : \"http://api.github.com/repos/octocat/Hello-World/deployments\",\n \"keys_url\" : \"http://api.github.com/repos/octocat/Hello-World/keys{/key_id}\",\n \"has_projects\" : true,\n \"archived\" : true,\n \"has_wiki\" : true,\n \"updated_at\" : \"2011-01-26T19:14:43Z\",\n \"comments_url\" : \"http://api.github.com/repos/octocat/Hello-World/comments{/number}\",\n \"stargazers_url\" : \"http://api.github.com/repos/octocat/Hello-World/stargazers\",\n \"disabled\" : false,\n \"delete_branch_on_merge\" : false,\n \"git_url\" : \"git:github.com/octocat/Hello-World.git\",\n \"has_pages\" : false,\n \"owner\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Rosalva McKenzie\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"dj5gqkllexrxp57\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"allow_squash_merge\" : true,\n \"commits_url\" : \"http://api.github.com/repos/octocat/Hello-World/commits{/sha}\",\n \"compare_url\" : \"http://api.github.com/repos/octocat/Hello-World/compare/{base}...{head}\",\n \"git_commits_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/commits{/sha}\",\n \"topics\" : [ \"4tcfupg2n53yztqhyfj3xkokkow4z2ltaj3wtm7wc9ggkyfpb19xmjr768hrd\", \"h5bumb7a7rxh0vw9hanm0zdxpsdi65nfxliaej28vtlpytfoel0405s1xm94ytkdlhybk2d73vwvul3ixxscdw4v4df2skgjgvj4cicbod5matwy9jw31w31gjpnay7djh6yax70mv12gdi3zekhajfy\", \"m89ln0m7tg0jfuolla0e493au2os9n5s1l46ypw1mnzql9zikmc31d5oyc34j6ng6tmlq6ny3iq8\" ],\n \"blobs_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/blobs{/sha}\",\n \"git_tags_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/tags{/sha}\",\n \"merges_url\" : \"http://api.github.com/repos/octocat/Hello-World/merges\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:42Z\\\"\",\n \"downloads_url\" : \"http://api.github.com/repos/octocat/Hello-World/downloads\",\n \"has_issues\" : true,\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World\",\n \"contents_url\" : \"http://api.github.com/repos/octocat/Hello-World/contents/{+path}\",\n \"mirror_url\" : \"git:git.example.com/octocat/Hello-World\",\n \"milestones_url\" : \"http://api.github.com/repos/octocat/Hello-World/milestones{/number}\",\n \"teams_url\" : \"http://api.github.com/repos/octocat/Hello-World/teams\",\n \"fork\" : false,\n \"issues_url\" : \"http://api.github.com/repos/octocat/Hello-World/issues{/number}\",\n \"events_url\" : \"http://api.github.com/repos/octocat/Hello-World/events\",\n \"issue_events_url\" : \"http://api.github.com/repos/octocat/Hello-World/issues/events{/number}\",\n \"organization\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Mrs. Jacob Waters\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"kprjnr2rpi4a3jwwngfbde0nd3roylbrbfq5pqvrek7f5xhsaq11l3wp7yvneyx9zfwp5ykzzlusei3hr4v16kz4lm54ac0tu0b5ndtv6djt7ev2uyyayetl1qruwsmgt7t4bfj6tv8jo9946o80w4d4okfr0skus9lua6up5cnobc4iluznpm34mq\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"assignees_url\" : \"http://api.github.com/repos/octocat/Hello-World/assignees{/user}\",\n \"open_issues\" : 3461486804791547706,\n \"watchers_count\" : 80,\n \"forks_count\" : 9,\n \"homepage\" : \"https://github.com\",\n \"node_id\" : \"MDEwOlJlcG9zaXRvcnkxMjk2MjY5\"\n },\n \"title\" : \"Found a bug\",\n \"author_association\" : \"OWNER\",\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347/labels{/name}\",\n \"number\" : 1347,\n \"performed_via_github_app\" : {\n \"owner\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Haywood Murray\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"t33d4ndaokech4wisnsnmvavowqvfhp01hzpqn7ki6t8wpwc4837tf7nlzsgjwyj4jm54twffkg37kidrr4f27yrs598ekhwqrew98q54qssempp82zu4vovg99yz1cxi3i75i50hdlw2f1\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"installations_count\" : 5,\n \"created_at\" : \"2017-07-08T16:18:44-04:00\",\n \"description\" : \"The description of the app.\",\n \"client_id\" : \"\\\"Iv1.25b5d1e65ffc4022\\\"\",\n \"external_url\" : \"https://example.com\",\n \"updated_at\" : \"2017-07-08T16:18:44-04:00\",\n \"permissions\" : {\n \"deployments\" : \"write\",\n \"issues\" : \"read\"\n },\n \"html_url\" : \"https://github.com/apps/super-ci\",\n \"name\" : \"Probot Owners\",\n \"pem\" : \"\\\"-----BEGIN RSA PRIVATE KEY-----\\\\nMIIEogIBAAKCAQEArYxrNYD/iT5CZVpRJu4rBKmmze3PVmT/gCo2ATUvDvZTPTey\\\\nxcGJ3vvrJXazKk06pN05TN29o98jrYz4cengG3YGsXPNEpKsIrEl8NhbnxapEnM9\\\\nJCMRe0P5JcPsfZlX6hmiT7136GRWiGOUba2X9+HKh8QJVLG5rM007TBER9/z9mWm\\\\nrJuNh+m5l320oBQY/Qq3A7wzdEfZw8qm/mIN0FCeoXH1L6B8xXWaAYBwhTEh6SSn\\\\nZHlO1Xu1JWDmAvBCi0RO5aRSKM8q9QEkvvHP4yweAtK3N8+aAbZ7ovaDhyGz8r6r\\\\nzhU1b8Uo0Z2ysf503WqzQgIajr7Fry7/kUwpgQIDAQABAoIBADwJp80Ko1xHPZDy\\\\nfcCKBDfIuPvkmSW6KumbsLMaQv1aGdHDwwTGv3t0ixSay8CGlxMRtRDyZPib6SvQ\\\\n6OH/lpfpbMdW2ErkksgtoIKBVrDilfrcAvrNZu7NxRNbhCSvN8q0s4ICecjbbVQh\\\\nnueSdlA6vGXbW58BHMq68uRbHkP+k+mM9U0mDJ1HMch67wlg5GbayVRt63H7R2+r\\\\nVxcna7B80J/lCEjIYZznawgiTvp3MSanTglqAYi+m1EcSsP14bJIB9vgaxS79kTu\\\\noiSo93leJbBvuGo8QEiUqTwMw4tDksmkLsoqNKQ1q9P7LZ9DGcujtPy4EZsamSJT\\\\ny8OJt0ECgYEA2lxOxJsQk2kI325JgKFjo92mQeUObIvPfSNWUIZQDTjniOI6Gv63\\\\nGLWVFrZcvQBWjMEQraJA9xjPbblV8PtfO87MiJGLWCHFxmPz2dzoedN+2Coxom8m\\\\nV95CLz8QUShuao6u/RYcvUaZEoYs5bHcTmy5sBK80JyEmafJPtCQVxMCgYEAy3ar\\\\nZr3yv4xRPEPMat4rseswmuMooSaK3SKub19WFI5IAtB/e7qR1Rj9JhOGcZz+OQrl\\\\nT78O2OFYlgOIkJPvRMrPpK5V9lslc7tz1FSh3BZMRGq5jSyD7ETSOQ0c8T2O/s7v\\\\nbeEPbVbDe4mwvM24XByH0GnWveVxaDl51ABD65sCgYB3ZAspUkOA5egVCh8kNpnd\\\\nSd6SnuQBE3ySRlT2WEnCwP9Ph6oPgn+oAfiPX4xbRqkL8q/k0BdHQ4h+zNwhk7+h\\\\nWtPYRAP1Xxnc/F+jGjb+DVaIaKGU18MWPg7f+FI6nampl3Q0KvfxwX0GdNhtio8T\\\\nTj1E+SnFwh56SRQuxSh2gwKBgHKjlIO5NtNSflsUYFM+hyQiPiqnHzddfhSG+/3o\\\\nm5nNaSmczJesUYreH5San7/YEy2UxAugvP7aSY2MxB+iGsiJ9WD2kZzTUlDZJ7RV\\\\nUzWsoqBR+eZfVJ2FUWWvy8TpSG6trh4dFxImNtKejCR1TREpSiTV3Zb1dmahK9GV\\\\nrK9NAoGAbBxRLoC01xfxCTgt5BDiBcFVh4fp5yYKwavJPLzHSpuDOrrI9jDn1oKN\\\\nonq5sDU1i391zfQvdrbX4Ova48BN+B7p63FocP/MK5tyyBoT8zQEk2+vWDOw7H/Z\\\\nu5dTCPxTIsoIwUw1I+7yIxqJzLPFgR2gVBwY1ra/8iAqCj+zeBw=\\\\n-----END RSA PRIVATE KEY-----\\\\n\\\"\",\n \"webhook_secret\" : \"\\\"6fba8f2fc8a7e8f2cca5577eddd82ca7586b3b6b\\\"\",\n \"client_secret\" : \"\\\"1d4b2097ac622ba702d19de498f005747a8b21d3\\\"\",\n \"id\" : 37,\n \"events\" : [ \"label\", \"deployment\" ],\n \"slug\" : \"probot-owners\",\n \"node_id\" : \"MDExOkludGVncmF0aW9uMQ==\"\n },\n \"updated_at\" : \"2011-04-22T13:33:48Z\",\n \"comments_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347/comments\",\n \"active_lock_reason\" : \"too heated\",\n \"id\" : 1,\n \"repository_url\" : \"https://api.github.com/repos/octocat/Hello-World\",\n \"state\" : \"open\",\n \"locked\" : true,\n \"timeline_url\" : \"https://web.example.mocklab.io/027865\",\n \"pull_request\" : {\n \"patch_url\" : \"https://web.example.mocklab.io/381231\",\n \"html_url\" : \"https://web.example.mocklab.io/381788\",\n \"merged_at\" : \"2023-08-20T23:19:59.008Z\",\n \"diff_url\" : \"https://web.example.mocklab.io/624734\",\n \"url\" : \"https://web.example.mocklab.io/652888\"\n },\n \"closed_at\" : \"2022-04-19T18:20:32.008Z\",\n \"comments\" : 0,\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347\",\n \"labels\" : [ {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n } ],\n \"milestone\" : {\n \"creator\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Jimmie Quigley PhD\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"0yst40vw63b57k2xyk5ig4glrgo9v02k134605sji\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"closed_at\" : \"2013-02-12T13:22:01Z\",\n \"created_at\" : \"2011-04-10T20:09:31Z\",\n \"description\" : \"Tracking milestone for version 1.0\",\n \"closed_issues\" : 8,\n \"title\" : \"v1.0\",\n \"due_on\" : \"2012-10-09T23:39:01Z\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones/1\",\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones/1/labels\",\n \"number\" : 42,\n \"updated_at\" : \"2014-03-03T18:58:10Z\",\n \"html_url\" : \"https://github.com/octocat/Hello-World/milestones/v1.0\",\n \"id\" : 1002604,\n \"state\" : \"open\",\n \"open_issues\" : 4,\n \"node_id\" : \"MDk6TWlsZXN0b25lMTAwMjYwNA==\"\n },\n \"events_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347/events\",\n \"html_url\" : \"https://github.com/octocat/Hello-World/issues/1347\",\n \"assignee\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Adrian Runte\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"7jzyso4ic7shnfneeib4kc36k013k0udzz5mny015vfme6fg6jivfhbhl1wwxmxfpln6nv8kaur3ap4vi7o8t30\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"user\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"bernard.willms\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"1gm18nwli0ana2srix96detc26v4xw2mxh787px2ls4d8jiglosxai9qmyqb6j2wkklce8hibpg1zhlbkhtbdgyz3g8pjyc2kgyu6fjn0y10ndf5fhwhf0rlh91w0jglmz0gvuots4bocepqh991b3dpn1hrv45gybij7dwhufmi3ou9wg5cawfar8oaftrowus0\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"node_id\" : \"MDU6SXNzdWUx\"\n },\n \"action\" : \"4a9q1nqwygvam4ltdyxubnqayiwdlm5bzzv73lh0aznknk9zgcbua9nnqtg27o3l4wus7903sa0x0iqzb7s2w7fqop4wiwqyqfi6l7eu5dk8rvir5s48bluutw\",\n \"comment\" : {\n \"issue_url\" : \"https://web.example.mocklab.io/206090\",\n \"body_html\" : \"lifunoeakqwqn3pspbutzcdes9tduurmwdbxznu9zq00e795ktx0icq8pdbr2bbn4zygetwkwe46wml87jds2x6pee7ngqrlm7pwgucgnuta8erxovfrr0m9z95f588pg6276bhkztxvb30vofioi46bka5a1n12z03urn89is2hbb3nbbyj3dlnlhzwq20ijtbezr\",\n \"body_text\" : \"ms2qvmw5cgs0my0edpsqasm3uerc\",\n \"created_at\" : \"2011-04-14T16:00:49Z\",\n \"body\" : \"What version of Safari were you using when you observed this bug?\",\n \"url\" : \"https://api.github.com/repositories/42/issues/comments/1\",\n \"author_association\" : \"OWNER\",\n \"performed_via_github_app\" : {\n \"owner\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Gerry Hoeger\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"wcuw2y6uu0ifvim3jbtdsa9klg4ho4ffg7g0ij1caz55jo4ilz6cq4linbegatz81usunekfjq4xduqax9cqzt4u18fvsk68qoxqd7z2diggw6q7vsnc2ic09juzufnzu\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"installations_count\" : 5,\n \"created_at\" : \"2017-07-08T16:18:44-04:00\",\n \"description\" : \"The description of the app.\",\n \"client_id\" : \"\\\"Iv1.25b5d1e65ffc4022\\\"\",\n \"external_url\" : \"https://example.com\",\n \"updated_at\" : \"2017-07-08T16:18:44-04:00\",\n \"permissions\" : {\n \"deployments\" : \"write\",\n \"issues\" : \"read\"\n },\n \"html_url\" : \"https://github.com/apps/super-ci\",\n \"name\" : \"Probot Owners\",\n \"pem\" : \"\\\"-----BEGIN RSA PRIVATE KEY-----\\\\nMIIEogIBAAKCAQEArYxrNYD/iT5CZVpRJu4rBKmmze3PVmT/gCo2ATUvDvZTPTey\\\\nxcGJ3vvrJXazKk06pN05TN29o98jrYz4cengG3YGsXPNEpKsIrEl8NhbnxapEnM9\\\\nJCMRe0P5JcPsfZlX6hmiT7136GRWiGOUba2X9+HKh8QJVLG5rM007TBER9/z9mWm\\\\nrJuNh+m5l320oBQY/Qq3A7wzdEfZw8qm/mIN0FCeoXH1L6B8xXWaAYBwhTEh6SSn\\\\nZHlO1Xu1JWDmAvBCi0RO5aRSKM8q9QEkvvHP4yweAtK3N8+aAbZ7ovaDhyGz8r6r\\\\nzhU1b8Uo0Z2ysf503WqzQgIajr7Fry7/kUwpgQIDAQABAoIBADwJp80Ko1xHPZDy\\\\nfcCKBDfIuPvkmSW6KumbsLMaQv1aGdHDwwTGv3t0ixSay8CGlxMRtRDyZPib6SvQ\\\\n6OH/lpfpbMdW2ErkksgtoIKBVrDilfrcAvrNZu7NxRNbhCSvN8q0s4ICecjbbVQh\\\\nnueSdlA6vGXbW58BHMq68uRbHkP+k+mM9U0mDJ1HMch67wlg5GbayVRt63H7R2+r\\\\nVxcna7B80J/lCEjIYZznawgiTvp3MSanTglqAYi+m1EcSsP14bJIB9vgaxS79kTu\\\\noiSo93leJbBvuGo8QEiUqTwMw4tDksmkLsoqNKQ1q9P7LZ9DGcujtPy4EZsamSJT\\\\ny8OJt0ECgYEA2lxOxJsQk2kI325JgKFjo92mQeUObIvPfSNWUIZQDTjniOI6Gv63\\\\nGLWVFrZcvQBWjMEQraJA9xjPbblV8PtfO87MiJGLWCHFxmPz2dzoedN+2Coxom8m\\\\nV95CLz8QUShuao6u/RYcvUaZEoYs5bHcTmy5sBK80JyEmafJPtCQVxMCgYEAy3ar\\\\nZr3yv4xRPEPMat4rseswmuMooSaK3SKub19WFI5IAtB/e7qR1Rj9JhOGcZz+OQrl\\\\nT78O2OFYlgOIkJPvRMrPpK5V9lslc7tz1FSh3BZMRGq5jSyD7ETSOQ0c8T2O/s7v\\\\nbeEPbVbDe4mwvM24XByH0GnWveVxaDl51ABD65sCgYB3ZAspUkOA5egVCh8kNpnd\\\\nSd6SnuQBE3ySRlT2WEnCwP9Ph6oPgn+oAfiPX4xbRqkL8q/k0BdHQ4h+zNwhk7+h\\\\nWtPYRAP1Xxnc/F+jGjb+DVaIaKGU18MWPg7f+FI6nampl3Q0KvfxwX0GdNhtio8T\\\\nTj1E+SnFwh56SRQuxSh2gwKBgHKjlIO5NtNSflsUYFM+hyQiPiqnHzddfhSG+/3o\\\\nm5nNaSmczJesUYreH5San7/YEy2UxAugvP7aSY2MxB+iGsiJ9WD2kZzTUlDZJ7RV\\\\nUzWsoqBR+eZfVJ2FUWWvy8TpSG6trh4dFxImNtKejCR1TREpSiTV3Zb1dmahK9GV\\\\nrK9NAoGAbBxRLoC01xfxCTgt5BDiBcFVh4fp5yYKwavJPLzHSpuDOrrI9jDn1oKN\\\\nonq5sDU1i391zfQvdrbX4Ova48BN+B7p63FocP/MK5tyyBoT8zQEk2+vWDOw7H/Z\\\\nu5dTCPxTIsoIwUw1I+7yIxqJzLPFgR2gVBwY1ra/8iAqCj+zeBw=\\\\n-----END RSA PRIVATE KEY-----\\\\n\\\"\",\n \"webhook_secret\" : \"\\\"6fba8f2fc8a7e8f2cca5577eddd82ca7586b3b6b\\\"\",\n \"client_secret\" : \"\\\"1d4b2097ac622ba702d19de498f005747a8b21d3\\\"\",\n \"id\" : 37,\n \"events\" : [ \"label\", \"deployment\" ],\n \"slug\" : \"probot-owners\",\n \"node_id\" : \"MDExOkludGVncmF0aW9uMQ==\"\n },\n \"updated_at\" : \"2011-04-14T16:00:49Z\",\n \"html_url\" : \"https://web.example.mocklab.io/194438\",\n \"reactions\" : {\n \"confused\" : 5411069406324290559,\n \"-1\" : 4562805144974567888,\n \"+1\" : 5897993725106888316,\n \"total_count\" : 6385551986002517785,\n \"rocket\" : 6620393169563172699,\n \"hooray\" : 8582908449021008623,\n \"eyes\" : 8079367133079589151,\n \"heart\" : 2566816542091272535,\n \"laugh\" : 3802412546935542413,\n \"url\" : \"https://web.example.mocklab.io/729180\"\n },\n \"id\" : 42,\n \"user\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"bud.nicolas\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"p3ig7ku8n8qxdmp89qar90utrqo9ght155tmp1ny0j476q0fp22u6t97nrqv7hwh9ko7vgpmfkz000x2ca5qxzhjzhvw5q0cg87e1lqu1rjkndddngdyn04kj7me2cawve9sy4p55508rxp\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"node_id\" : \"q1em\"\n }\n },\n \"repo\" : {\n \"name\" : \"Cherry Dickinson\",\n \"id\" : 5723087116755819039,\n \"url\" : \"https://web.example.mocklab.io/886079\"\n },\n \"created_at\" : \"2023-02-23T19:47:11.01Z\",\n \"id\" : \"z7y3\",\n \"type\" : \"fc7g6anw6lfwsk6rgbmpg9v283li83c4yfup6ask6kbh7ntbri4jzmvrp3ovadz3xa8tchgjl396mhli1myvqckker4i6lscus0ece7c2ss177cde7pp4laakxahi53hluzmedhf5dqpfjsjni19enhg26dnmnc5c\"\n} ]", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "e2f781c7-c873-45d4-a0e2-288a2ee0f482", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:59.011338Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "activity/list-repo-events", + "schema": { + "items": { + "$ref": "#/components/schemas/event" + }, + "type": "array" + } + } + } + }, + "insertionIndex": 708 + }, + { + "id": "6bd99240-6552-46dc-9f53-8773960c069b", + "name": "Create a repository dispatch event (application/json)", + "request": { + "urlPath": "/repos/9vr4ezdhdkr13wo0nepb89cdtz07h2t2u0rzunr/vbp2b53jvlwo6ak2eevxbycpfkv7scdlyrf61fo9aoz8y79o46sgwzm8indt0rjaglcm6xfhyeig3liybty9bq4a7padgk0dmzw/dispatches", + "method": "POST", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 422, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/155871\",\n \"message\" : \"Deleniti dolorem similique consequuntur illum. Nulla blanditiis quia sunt est sit exercitationem. Eum dicta deserunt.\",\n \"errors\" : [ {\n \"code\" : \"wjj0weeyok8xq20lryl7xjac3lfpr2mjxlduy6d2sb3ale4tc6ii3wbrjgaiqqs97xe5ld8mpszsuv8pne144458fkc7u9p95ir75e7k88go692d1qh8pum021oeawh6wiwtfyvs9jptv9q1iy8qcqm65fgx9uh5zj9chjng3x8qi6ms9qwy2s7cfuev1j\",\n \"field\" : \"ia5tmi834\",\n \"resource\" : \"irwljl8v3tbc9yhfspovedzsoiqalxddgw66k6azg9cbwy78nb1s2cgy9382lhoaivbgsjfmi89sy5n44g4818mtoh2eq0wz7sl41nru478wzozkb6hwxxk4z12rkp5qgcyulqsxfhbzbvz33135iyywn\",\n \"index\" : 7059294143468029812,\n \"message\" : \"Velit consequatur eum blanditiis. Est quo molestias laboriosam quasi tempora ipsum molestias. Porro aut ducimus.\",\n \"value\" : { }\n }, {\n \"code\" : \"mwfb6aaizn76ni1v9khypitisfqw76z1fejeq27udruvhx5y3tzzwu2ai8dbzurl8os1l8ivwaaxzn5kvqcl3209jlbu83o1hod4ubs\",\n \"field\" : \"u9r8jp23thzrruorfldl18fntnz1t7v5e451rpda038qpejkjc2c8sxzav6wynyxr0uuegvsnx7q5u7su1vc3xsobhjio83bqz5ur044v8rrx6eopz9y2ekxcai3uqi\",\n \"resource\" : \"ym4bm0nsophgwxfv1xjxcqomln2h2ifuornwfimksfksa1gkaj2eggj6ne459ds09vbxms05d4xhqde6cjc93f51kregcoxh1jsny2a3ii\",\n \"index\" : 3338254549758558371,\n \"message\" : \"Adipisci praesentium sunt recusandae rerum. Velit aut soluta et soluta dicta animi. Voluptatem officiis culpa voluptatem qui harum ex possimus. Vitae cumque aperiam quod qui facilis sed rerum. Sed eni\",\n \"value\" : { }\n }, {\n \"code\" : \"297dk8idggucn1vb84h35osfio6q5xhvbcb7zkgo1yzi5qy6l3kg9skf7e\",\n \"field\" : \"jl60aub3kq3jdrygxugt3liimlozq10k3zgvnmqk8i9c4g05tmri5zm4yomxs4rgzt06kkjwd2gz9ahpncohh7xzdn0mksjaz05q5dtn7omjz75m209ngzonb8my433af7qyvtpl1b2oyz72f6lnq82j79kdczsoj65n9sb5orjzr0vjyvs15xg5edjlf4d8eld8nhx\",\n \"resource\" : \"0qlnnuev05sdnlgak91cyih7g3il8szr0zd6s47qvgldydaz38d9cs2dmz3qdv5hezi84foimjndlcp066rcvmluydfuovv5\",\n \"index\" : 3339776820966648686,\n \"message\" : \"Voluptas sunt quidem dicta occaecati deleniti est. Sit natus dolorum. Ut ut aliquam veritatis aut. Veniam eveniet ipsum. Sapiente sed quos quod.\",\n \"value\" : { }\n }, {\n \"code\" : \"snaxwnslx9zkyb431u91at3ul893j41ztaie7mk3kobr7iddffkkxzf2ujc3w9th63t0nx8xd035mxd8g47rfznz7ux46p36f89slfhvfb2lkeejw\",\n \"field\" : \"88br8vvtj03pc3wfatmst5146mfzqntmok90fszwrs1z5kdinl1z7odg8xt6e465zldjiyvvcjn7uqr7yx2b3hrfo5mdm8cv5s84cklfx5g7x1cx5k5i5g1g6h2qgbdaf90b3m8z6xeljdvcqfbelimgbav3oha3c3tctggbzg1fna7l0a3dfuaqywa6gez44ni\",\n \"resource\" : \"78dw2155bmffhaww3eifpyuumktkc77yk6htd8mvo7krit9ve35npbrjo647ihw53g4\",\n \"index\" : 3696054937443492307,\n \"message\" : \"Officia quas voluptatibus voluptatem. Aut nihil et aut eligendi. Itaque ut non consequuntur nisi consequatur quos. Rerum ut sit voluptatem eum commodi labore.\",\n \"value\" : { }\n } ]\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "6bd99240-6552-46dc-9f53-8773960c069b", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.939534Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/create-dispatch-event", + "schema": { + "description": "Validation Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "errors": { + "items": { + "properties": { + "code": { + "type": "string" + }, + "field": { + "type": "string" + }, + "index": { + "type": "integer" + }, + "message": { + "type": "string" + }, + "resource": { + "type": "string" + }, + "value": { + "oneOf": [ + { + "nullable": true, + "type": "string" + }, + { + "nullable": true, + "type": "integer" + }, + { + "items": { + "type": "string" + }, + "nullable": true, + "type": "array" + } + ] + } + }, + "required": ["code"], + "type": "object" + }, + "type": "array" + }, + "message": { + "type": "string" + } + }, + "required": ["message", "documentation_url"], + "title": "Validation Error", + "type": "object" + } + } + } + }, + "insertionIndex": 709 + }, + { + "id": "046b1f85-d778-4d47-865d-21edefe1a69f", + "name": "Create a repository dispatch event - 204", + "request": { + "urlPath": "/repos/82lq278oqa2jluddf7xgcygeg3ea0aejnv0qo8nx1cajhxwkvsm93pv1vyanj8nhdooqc1y7kj9boqdx4x74uhc3jus0y432youiy2qerfeldbmwmcfzcjat2xe8j7rrjz9fu2hafae16lxde5j7nfnxwv1c1li9naedci9srul2e8s40uuj1c3w3itc363/mj24665kgnoxs8hlnov0l0aa7z17dkoiay9cqcd12wwp4lecd0it8vx5cxbojvy1zxwah5k4w8g0kyv8dxulcjl581v2hcih71aaiumtbsaamobiaesen055ju3hx7wvqhdgxhepig0v4pvc1psi7bml05l9e86292rnf3w/dispatches", + "method": "POST" + }, + "response": { + "status": 204 + }, + "uuid": "046b1f85-d778-4d47-865d-21edefe1a69f", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.938914Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/create-dispatch-event" + } + } + }, + "insertionIndex": 710 + }, + { + "id": "4e7a334e-1d0b-4fec-b2b9-39cf3030d33a", + "name": "Get a deployment status", + "request": { + "urlPath": "/repos/lmsam9zhkol6o5slcjmedx84vilg15cdf3ae4/p1gep1vx8x60wbt6l4edvwm9zhbg096ifq0krnjguptfl7nzawlcx/deployments/6331897875938030512/statuses/592898957059987668", + "method": "GET" + }, + "response": { + "status": 415, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/325073\",\n \"message\" : \"Pariatur occaecati aut ullam dolorum reprehenderit. Magnam illum voluptatibus nesciunt et consequatur. Placeat tempora voluptatem qui neque officiis voluptatem et.\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "4e7a334e-1d0b-4fec-b2b9-39cf3030d33a", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.93887Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/get-deployment-status", + "schema": { + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": ["message", "documentation_url"], + "type": "object" + } + } + } + }, + "insertionIndex": 711 + }, + { + "id": "7750886d-e3a0-48c3-a70f-bf1a2defc556", + "name": "Get a deployment status", + "request": { + "urlPath": "/repos/wrdtqxmuk4hrh2wsdurdd3u6le040oakh4twvmuh4164zbij0blx1ohgi9sbzdrva26d8lzjkkernk29oai7kmqoi8ouhvg/bo3bfq484f3vshsjk9pf87wlmuyni3tg0lwgm3mwhlzpvdnv4ixtm4mwbnjul1wiswqa04vzfn7tjanjhwqrh3bcemaoi7clzd3o6uzawcyy3i6r7msn25q6rrmaax3fa5q7ztlnqtwlcvp8ngphwit1a0o3pnvv3j32b1vcgdxa/deployments/5481466101142468650/statuses/8707987929589952783", + "method": "GET" + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/468161\",\n \"message\" : \"Exercitationem minima incidunt quam. Odit expedita repudiandae necessitatibus ipsum officia praesentium modi. Consectetur asperiores beatae nulla voluptatibus neque.\",\n \"url\" : \"https://web.example.mocklab.io/725152\",\n \"status\" : \"fbsovmd8pmujson0f92qxafdebnetpnmzq9mzcfiltp3iynjydgw9592uc16iftcei9hxg3qgg147md1t3vtp3r2xtam3ypqzw4pvytfzdboudq5p\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "7750886d-e3a0-48c3-a70f-bf1a2defc556", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.938716Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/get-deployment-status", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 712 + }, + { + "id": "670c5319-7d07-45bb-ba78-3503b92ec1d3", + "name": "Get a deployment status - default", + "request": { + "urlPath": "/repos/indv5kqqr49imujsps4zgz0r8nkakpul9rdzjka5d6ca8s2apwva395bw6qhn84m83301h8jk/qrhyv5lcdvj795hh0t/deployments/2701716401659010317/statuses/302836495024573744", + "method": "GET" + }, + "response": { + "status": 200, + "body": "{\n \"created_at\" : \"2012-07-20T01:19:13Z\",\n \"creator\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"deployment_url\" : \"https://api.github.com/repos/octocat/example/deployments/42\",\n \"description\" : \"Deployment finished successfully.\",\n \"environment\" : \"production\",\n \"environment_url\" : \"https://test-branch.lab.acme.com\",\n \"id\" : 1,\n \"log_url\" : \"https://example.com/deployment/42/output\",\n \"node_id\" : \"MDE2OkRlcGxveW1lbnRTdGF0dXMx\",\n \"repository_url\" : \"https://api.github.com/repos/octocat/example\",\n \"state\" : \"success\",\n \"target_url\" : \"https://example.com/deployment/42/output\",\n \"updated_at\" : \"2012-07-20T01:19:13Z\",\n \"url\" : \"https://api.github.com/repos/octocat/example/deployments/42/statuses/1\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "670c5319-7d07-45bb-ba78-3503b92ec1d3", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.938465Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/get-deployment-status", + "schema": { + "description": "The status of a deployment.", + "properties": { + "created_at": { + "example": "2012-07-20T01:19:13Z", + "format": "date-time", + "type": "string" + }, + "creator": { + "$ref": "#/components/schemas/nullable-simple-user" + }, + "deployment_url": { + "example": "https://api.github.com/repos/octocat/example/deployments/42", + "format": "uri", + "type": "string" + }, + "description": { + "default": "", + "description": "A short description of the status.", + "example": "Deployment finished successfully.", + "maxLength": 140, + "type": "string" + }, + "environment": { + "default": "", + "description": "The environment of the deployment that the status is for.", + "example": "production", + "type": "string" + }, + "environment_url": { + "default": "", + "description": "The URL for accessing your environment.", + "example": "https://staging.example.com/", + "format": "uri", + "type": "string" + }, + "id": { + "example": 1, + "type": "integer" + }, + "log_url": { + "default": "", + "description": "The URL to associate with this status.", + "example": "https://example.com/deployment/42/output", + "format": "uri", + "type": "string" + }, + "node_id": { + "example": "MDE2OkRlcGxveW1lbnRTdGF0dXMx", + "type": "string" + }, + "performed_via_github_app": { + "$ref": "#/components/schemas/nullable-integration" + }, + "repository_url": { + "example": "https://api.github.com/repos/octocat/example", + "format": "uri", + "type": "string" + }, + "state": { + "description": "The state of the status.", + "enum": [ + "error", + "failure", + "inactive", + "pending", + "success", + "queued", + "in_progress" + ], + "example": "success", + "type": "string" + }, + "target_url": { + "default": "", + "description": "Deprecated: the URL to associate with this status.", + "example": "https://example.com/deployment/42/output", + "format": "uri", + "type": "string" + }, + "updated_at": { + "example": "2012-07-20T01:19:13Z", + "format": "date-time", + "type": "string" + }, + "url": { + "example": "https://api.github.com/repos/octocat/example/deployments/42/statuses/1", + "format": "uri", + "type": "string" + } + }, + "required": [ + "id", + "node_id", + "state", + "creator", + "description", + "deployment_url", + "target_url", + "repository_url", + "url", + "created_at", + "updated_at" + ], + "title": "Deployment Status", + "type": "object" + } + } + } + }, + "insertionIndex": 713 + }, + { + "id": "bac0c27d-ae4c-4414-8f23-3d617c50487f", + "name": "Create a deployment status", + "request": { + "urlPath": "/repos/2qt6veqhmpzavjz2csbncu30qvuganx5vwf6qg0nrtkh69nlt8s9xe3meic6ql6aaww8v8763cdf3a6nnlqvizzr0i14pzvq7qkexucq8e62ujjoxw/ev563ox7z7kqrg2ui6t634184lvxoz3kfk773mpzbqy64kys8x4/deployments/6926482909259612521/statuses", + "method": "POST" + }, + "response": { + "status": 422, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/310861\",\n \"message\" : \"Veritatis et id itaque ratione temporibus. Debitis adipisci hic illo repellat tempore fugit. Reprehenderit culpa ratione est maxime. Similique odit id cupiditate autem.\",\n \"errors\" : [ {\n \"code\" : \"dp0nkelpx30pdczu6hpko9eo5nitrje6xz6fm4e\",\n \"field\" : \"ncyiq57nm92h12hwu1v553m9xg3ffjmrfyyks0rj2839n0w2nc4k8u342fa36n5y2yyc93qqh7dypbqz121w0qcjcuh2rymubbk9d9qy3rijez2767omxg0yb1ogtof0yhzx7g0p4ytqy4h748wlis9m89goxdli79r14zsq4gelapjp10\",\n \"resource\" : \"ivlygtxw347goz4fy3tvix6r8fpgdtpj48l3ztnee1xcsdfyaqdy2vo8g6qe72n231s8zv2fs3ad928mpnmq3sh3loor9iw0zjg1kthl46hikc3swvjd\",\n \"index\" : 5115808518787201155,\n \"message\" : \"Harum laudantium rerum doloribus quod consequatur officiis. Perferendis esse rerum et error dolores omnis. Ipsum et eos aut non est similique et.\",\n \"value\" : { }\n }, {\n \"code\" : \"aze8tt5wo7ch50oy96ljxf6alstaxvcazrhoza8zifeia1uszd\",\n \"field\" : \"b5j0h7gf1vbhlfwre7ds95paaviz5oi\",\n \"resource\" : \"6oqtwk985ff2fxfva4x0q0wj7nkfquq9gjn7v5drz9mziz2hj1w2m0h2lehbn74dpk4i69tupvu7a34cqih0839a4et8krio2nurw2y97nzmzwbdy7oysbp5uf5p6yo3izsijfh9i568xewffkbfxdfnm08wwkpttdrz9k0h8zzw463ip4bd925r8jf01l\",\n \"index\" : 6348397312417986723,\n \"message\" : \"Dolore sit doloremque. Ex soluta voluptatem et praesentium libero similique. Qui vero in neque. Ratione rerum qui fugit aut rerum facilis nostrum.\",\n \"value\" : { }\n }, {\n \"code\" : \"11296oovrqfbuim3nqobd3of908jq919svnmd9vzt9jfyti2atxbhd2r68fx95ft7vihjcq83nr5emjt3j2lr72ygqfccyomkdysua5ry08eswpek2bjy2dee0onh0c8q2vhzb0875499w368hvk7p11wf93coez5s6jxmuqfc3motvcocucm13o6s6qra\",\n \"field\" : \"gjkjokfmvwqopm6vkfeu4443rs1ecs66f8byahclam7r4zm73ketc0ppml0f4ddec09zp1tj5rru9oc37x29j9sc2g603gbcz7hr1hc\",\n \"resource\" : \"m0fm\",\n \"index\" : 6364959039934564685,\n \"message\" : \"Nobis suscipit doloribus nihil veniam sapiente et consequatur. Ducimus modi sint. Ut cumque tenetur aut sit recusandae totam quasi. Nesciunt quia error et ratione. Odit dolor dolores quo quisquam odio\",\n \"value\" : { }\n }, {\n \"code\" : \"4pbj3aw9krhrsavb24y3pbpuftafr1gbihd8o22yughqt7pzi728yjel8g\",\n \"field\" : \"uc3rgh8efiw1phafz4otfhfl7swkmzasinwk7xuviosoujn5cz9mhi08mb383m0eexebk4za52qmthoq2c08a9p435kpqr8g99jknfyby0wfgj7nbpllw8j3nj066j5zbs0609v66tnrahb6xe7yut982sjx\",\n \"resource\" : \"kd527tm2adktc6v6ncht4a5i9uomxl046fd9tk5tasob757zmyyqvimmtnqp6bax5v1yv3kb288j631w6jxvc0\",\n \"index\" : 7584076676333905441,\n \"message\" : \"Voluptatem mollitia iusto. Sed vitae facilis at in voluptate saepe. Officia tenetur quod odio architecto repellendus quis id. Eius nihil qui illo. Est iure beatae sunt aspernatur molestiae.\",\n \"value\" : { }\n }, {\n \"code\" : \"wfs5herw54q0yza2tak12qrt31yssxqh4xzy3n4xo6gnmxucsp50ezevuxwxkeft66d3wsm9c9unfy5j19esm95sh2cd2dd5k260x5yzz60wj4yc5\",\n \"field\" : \"rr4kjugp3o1daze43n4czlnfu2fel694edqnfc6qqhj2ye56olub5afun1tz8au7ubp0pxxb7z28xhu7o5i4\",\n \"resource\" : \"yszrpw87soeshh1g5xlrvy37zxwcyrnb3iqpeqld57n2bklsbuhid3gl4ncrcx2ybffenvaqmir83yvb91hhqm7f68206lo3ggr9to9q65fdoi7770ixa2e9t29qjkrqszmmv\",\n \"index\" : 614186403172935171,\n \"message\" : \"Et quia officia tempore officia nesciunt blanditiis. Amet voluptates rem reprehenderit impedit doloremque voluptatum iste. Et dolores vel adipisci et numquam amet ea. Id et quas cupiditate aut. Sint q\",\n \"value\" : { }\n }, {\n \"code\" : \"hdpercrdvh159z2l2r5yyk9vqxv9ps51vjkzrnch618vh9x9jq9cpaw64cwk90au40dciubws1iuxwzpldklx7hrb9labgihkjcy\",\n \"field\" : \"dpjoywseixsih0shthj1u024vkq748iofaimwiawfnatldyzrzul4jowz90vk59n796uar2mlotmpzv6rkniwk99cymvap587mugo5uhnvmzztj3kqbu10xuo5rco4dh2\",\n \"resource\" : \"si4is00t9jvlk0rslxiq05v41wd87k47as9ifbxz8qagtw7elfyorzbe67p5n0xd2uqar2luw6ofl96dbrg2t03itx7gw37muxehpiqokjvvj\",\n \"index\" : 6339389193158914632,\n \"message\" : \"Qui quibusdam ex ipsam et et. Quia necessitatibus perferendis nam ut. Voluptatem pariatur quos est. Iste corrupti soluta consequatur ipsam modi culpa eius. Cupiditate id corporis et.\",\n \"value\" : { }\n }, {\n \"code\" : \"9hfdwrt0lt35r423d57g4i5pedy2lv8a2qa0mojxnksrcz9rmnq0izo3gwsaz8h5oz9x2q1qnw2f4f9zy78nho3zz1p7umisomyfsmlyez\",\n \"field\" : \"vtl43akxb9x1f4clxf8yuaakwewr0esa9qgvanog37v0bk537gtsz735nobdgf2yxcxi4lgk2ubnoy4adnychvjobiuebzbxm6wk7pcc8zef\",\n \"resource\" : \"gi8gjp7vv7hfg30fu7ey4i30l5gpksyqtqbxqhad04pmkfx31drdpui538cn45pi0vjw2quahbsstdz7x6zop9r3b71i1hbvaks04wtl9j4tauauiumgp4tduue\",\n \"index\" : 5588321999505765535,\n \"message\" : \"Harum pariatur hic illo aut illo. In dolorum nesciunt quia non voluptas odit. Molestiae maxime ullam earum consequuntur. Earum suscipit qui sequi nihil excepturi. Quis voluptatem beatae sint.\",\n \"value\" : { }\n } ]\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "bac0c27d-ae4c-4414-8f23-3d617c50487f", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.9383Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/create-deployment-status", + "schema": { + "description": "Validation Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "errors": { + "items": { + "properties": { + "code": { + "type": "string" + }, + "field": { + "type": "string" + }, + "index": { + "type": "integer" + }, + "message": { + "type": "string" + }, + "resource": { + "type": "string" + }, + "value": { + "oneOf": [ + { + "nullable": true, + "type": "string" + }, + { + "nullable": true, + "type": "integer" + }, + { + "items": { + "type": "string" + }, + "nullable": true, + "type": "array" + } + ] + } + }, + "required": ["code"], + "type": "object" + }, + "type": "array" + }, + "message": { + "type": "string" + } + }, + "required": ["message", "documentation_url"], + "title": "Validation Error", + "type": "object" + } + } + } + }, + "insertionIndex": 714 + }, + { + "id": "df72cb6a-a278-4724-84eb-727c03f6abc0", + "name": "Create a deployment status - default", + "request": { + "urlPath": "/repos/z2w59n1mk845mbxyhbbcb69hh3fiwgnm5t38ndznexbtfif4r2syuwl52ty2dvxuo0miocpl3l4eo7ewp7897i3uk3ndwn62dksoisosyhtrfufpaztabir6y0g2buj1jpwa46byt4gur75rbllm05dsdx66mugbvi6b/a9ek02ti04itm3chkh0fqw5n2vggvkjlpb1wa4pmb3fuhp3mrafoia6v41ka6uxe91yz4q6mtiimdc90e9bys8d7bq1dt3nhcm98jz0kuppt8wgqhsr3xpnwgk7toq5iw1z7jrjln4/deployments/1867777035780269287/statuses", + "method": "POST" + }, + "response": { + "status": 201, + "body": "{\n \"created_at\" : \"2012-07-20T01:19:13Z\",\n \"creator\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"deployment_url\" : \"https://api.github.com/repos/octocat/example/deployments/42\",\n \"description\" : \"Deployment finished successfully.\",\n \"environment\" : \"production\",\n \"environment_url\" : \"https://test-branch.lab.acme.com\",\n \"id\" : 1,\n \"log_url\" : \"https://example.com/deployment/42/output\",\n \"node_id\" : \"MDE2OkRlcGxveW1lbnRTdGF0dXMx\",\n \"repository_url\" : \"https://api.github.com/repos/octocat/example\",\n \"state\" : \"success\",\n \"target_url\" : \"https://example.com/deployment/42/output\",\n \"updated_at\" : \"2012-07-20T01:19:13Z\",\n \"url\" : \"https://api.github.com/repos/octocat/example/deployments/42/statuses/1\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "df72cb6a-a278-4724-84eb-727c03f6abc0", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.937449Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/create-deployment-status", + "schema": { + "description": "The status of a deployment.", + "properties": { + "created_at": { + "example": "2012-07-20T01:19:13Z", + "format": "date-time", + "type": "string" + }, + "creator": { + "$ref": "#/components/schemas/nullable-simple-user" + }, + "deployment_url": { + "example": "https://api.github.com/repos/octocat/example/deployments/42", + "format": "uri", + "type": "string" + }, + "description": { + "default": "", + "description": "A short description of the status.", + "example": "Deployment finished successfully.", + "maxLength": 140, + "type": "string" + }, + "environment": { + "default": "", + "description": "The environment of the deployment that the status is for.", + "example": "production", + "type": "string" + }, + "environment_url": { + "default": "", + "description": "The URL for accessing your environment.", + "example": "https://staging.example.com/", + "format": "uri", + "type": "string" + }, + "id": { + "example": 1, + "type": "integer" + }, + "log_url": { + "default": "", + "description": "The URL to associate with this status.", + "example": "https://example.com/deployment/42/output", + "format": "uri", + "type": "string" + }, + "node_id": { + "example": "MDE2OkRlcGxveW1lbnRTdGF0dXMx", + "type": "string" + }, + "performed_via_github_app": { + "$ref": "#/components/schemas/nullable-integration" + }, + "repository_url": { + "example": "https://api.github.com/repos/octocat/example", + "format": "uri", + "type": "string" + }, + "state": { + "description": "The state of the status.", + "enum": [ + "error", + "failure", + "inactive", + "pending", + "success", + "queued", + "in_progress" + ], + "example": "success", + "type": "string" + }, + "target_url": { + "default": "", + "description": "Deprecated: the URL to associate with this status.", + "example": "https://example.com/deployment/42/output", + "format": "uri", + "type": "string" + }, + "updated_at": { + "example": "2012-07-20T01:19:13Z", + "format": "date-time", + "type": "string" + }, + "url": { + "example": "https://api.github.com/repos/octocat/example/deployments/42/statuses/1", + "format": "uri", + "type": "string" + } + }, + "required": [ + "id", + "node_id", + "state", + "creator", + "description", + "deployment_url", + "target_url", + "repository_url", + "url", + "created_at", + "updated_at" + ], + "title": "Deployment Status", + "type": "object" + } + } + } + }, + "insertionIndex": 715 + }, + { + "id": "92c972e3-6749-4bfa-ad51-0f36bcdf3e39", + "name": "List deployment statuses", + "request": { + "urlPath": "/repos/wthvbpcyhc7yoqb3226dusskl5n3rzzlgm7pr2cp2qz7piz7amhzuk0gx9lzwvz6wy8d0xgkf0kuoh3wvchtx493cf1v59ddwa5ft/xvv3s0755qrh3bjobzfk9r5/deployments/5669211187516499059/statuses", + "method": "GET" + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/147380\",\n \"message\" : \"A dolore occaecati aliquam repellat vel autem eos. Et aut tempora molestiae deserunt. Quam est repellendus quis consequuntur. Harum vel fugit enim.\",\n \"url\" : \"https://web.example.mocklab.io/943847\",\n \"status\" : \"v3ynbh4m0s30drur7to9dr6ajnagdpovmc7vwecxf4zz5xbjs60ukk4uha2i4pgbuhbiufh4gq9t4vu8sxy06xxpajum4qjkrzwj5e7cndj3ddv04ufa7b0fwplwkamgmte\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "92c972e3-6749-4bfa-ad51-0f36bcdf3e39", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.937283Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/list-deployment-statuses", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 716 + }, + { + "id": "c4a39639-afd3-4d02-a85f-fafd1ee0113f", + "name": "List deployment statuses - default", + "request": { + "urlPath": "/repos/qdojmz14ahnllzxtt02odx8cavc4evy9qlk9u1y2b67r0wnuis1ujrcp6dnbmeeddbftjeq3omh8e9l3c9/vxj5obn8lw7lntdxm2zioau2qmywscriso9yvhwjclylqnv68rs7c8wm6af56a8wefmhpc35ds2ssmvui5how5c2ctxzic8zj25ep0n53odi3sl01mjlqlwu7n2d5qlvymrfls3uyhr5qfu/deployments/7290004551223393990/statuses", + "method": "GET" + }, + "response": { + "status": 200, + "body": "[ {\n \"created_at\" : \"2012-07-20T01:19:13Z\",\n \"creator\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"deployment_url\" : \"https://api.github.com/repos/octocat/example/deployments/42\",\n \"description\" : \"Deployment finished successfully.\",\n \"environment\" : \"production\",\n \"environment_url\" : \"https://test-branch.lab.acme.com\",\n \"id\" : 1,\n \"log_url\" : \"https://example.com/deployment/42/output\",\n \"node_id\" : \"MDE2OkRlcGxveW1lbnRTdGF0dXMx\",\n \"repository_url\" : \"https://api.github.com/repos/octocat/example\",\n \"state\" : \"success\",\n \"target_url\" : \"https://example.com/deployment/42/output\",\n \"updated_at\" : \"2012-07-20T01:19:13Z\",\n \"url\" : \"https://api.github.com/repos/octocat/example/deployments/42/statuses/1\"\n} ]", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "c4a39639-afd3-4d02-a85f-fafd1ee0113f", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.93705Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/list-deployment-statuses", + "schema": { + "items": { + "$ref": "#/components/schemas/deployment-status" + }, + "type": "array" + } + } + } + }, + "insertionIndex": 717 + }, + { + "id": "9a78ded8-e13d-45ca-a362-73849aac9ffc", + "name": "Get a deployment", + "request": { + "urlPath": "/repos/kgiqci1ggw8whyyukl1x1we8a7xjmxakveorxbn215lnikp4gxio3un4ew31qcn1534197h1aqmkq9ucxkuax/2fcnie5rh6yqsgr2s38qfb3d4s2r5q8qed3c42d9c5ndjj1jvz3d48xj42dswy69x5ap8ipu272905ygjso6vqgsialks89228nykkov9/deployments/8871302976699872795", + "method": "GET" + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/543842\",\n \"message\" : \"Optio delectus quia. Molestias at quaerat. Ut voluptas quasi saepe voluptate qui adipisci dicta. Fugit et tempore rerum voluptatibus voluptate ipsum. Quam modi ad.\",\n \"url\" : \"https://web.example.mocklab.io/096177\",\n \"status\" : \"t2xxij28b8o7pj\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "9a78ded8-e13d-45ca-a362-73849aac9ffc", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.936986Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/get-deployment", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 718 + }, + { + "id": "c7425281-c11f-4f7e-aa68-d5872493b2f4", + "name": "Get a deployment - default", + "request": { + "urlPath": "/repos/swreuk2p2wfhygd33ooxahh5p4m4511i3wetwga9y4guwsna5xya2dpgq3zj4hejl5f17xe7lv31g1urkufv18yn1xtwv9cul2pg7zawlrc8reyckdvkkr1f6gj2nei61gs99vh44hneogmx4julys2rxmttjn28vv0r48gekp1jwpjd280jrxsg20vcb1d4xzdsh67/xj3h4jg5sbhhfyvvz8fjnq1glgrn1pj5d721uevy9v4e8l7r08kpqazvlryf2y2vjzn5a1hrjndetmxahx5tcx3clham4ffedydqofvmtvcykrr6hz1kv1l1y1ataewxrcwvfhm1zc6wfpbotixd5ipw7nvoxswk35ehdoxym4jc4vkdjeld7q7/deployments/7340564514157105868", + "method": "GET" + }, + "response": { + "status": 200, + "body": "{\n \"created_at\" : \"2012-07-20T01:19:13Z\",\n \"creator\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"description\" : \"Deploy request from hubot\",\n \"environment\" : \"production\",\n \"id\" : 1,\n \"node_id\" : \"MDEwOkRlcGxveW1lbnQx\",\n \"original_environment\" : \"staging\",\n \"payload\" : { },\n \"production_environment\" : true,\n \"ref\" : \"topic-branch\",\n \"repository_url\" : \"https://api.github.com/repos/octocat/example\",\n \"sha\" : \"a84d88e7554fc1fa21bcbc4efae3c782a70d2b9d\",\n \"statuses_url\" : \"https://api.github.com/repos/octocat/example/deployments/1/statuses\",\n \"task\" : \"deploy\",\n \"transient_environment\" : false,\n \"updated_at\" : \"2012-07-20T01:19:13Z\",\n \"url\" : \"https://api.github.com/repos/octocat/example/deployments/1\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "c7425281-c11f-4f7e-aa68-d5872493b2f4", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.936736Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/get-deployment", + "schema": { + "description": "A request for a specific ref(branch,sha,tag) to be deployed", + "properties": { + "created_at": { + "example": "2012-07-20T01:19:13Z", + "format": "date-time", + "type": "string" + }, + "creator": { + "$ref": "#/components/schemas/nullable-simple-user" + }, + "description": { + "example": "Deploy request from hubot", + "nullable": true, + "type": "string" + }, + "environment": { + "description": "Name for the target deployment environment.", + "example": "production", + "type": "string" + }, + "id": { + "description": "Unique identifier of the deployment", + "example": 42, + "type": "integer" + }, + "node_id": { + "example": "MDEwOkRlcGxveW1lbnQx", + "type": "string" + }, + "original_environment": { + "example": "staging", + "type": "string" + }, + "payload": { + "oneOf": [ + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "string" + } + ] + }, + "performed_via_github_app": { + "$ref": "#/components/schemas/nullable-integration" + }, + "production_environment": { + "description": "Specifies if the given environment is one that end-users directly interact with. Default: false.", + "example": true, + "type": "boolean" + }, + "ref": { + "description": "The ref to deploy. This can be a branch, tag, or sha.", + "example": "topic-branch", + "type": "string" + }, + "repository_url": { + "example": "https://api.github.com/repos/octocat/example", + "format": "uri", + "type": "string" + }, + "sha": { + "example": "a84d88e7554fc1fa21bcbc4efae3c782a70d2b9d", + "type": "string" + }, + "statuses_url": { + "example": "https://api.github.com/repos/octocat/example/deployments/1/statuses", + "format": "uri", + "type": "string" + }, + "task": { + "description": "Parameter to specify a task to execute", + "example": "deploy", + "type": "string" + }, + "transient_environment": { + "description": "Specifies if the given environment is will no longer exist at some point in the future. Default: false.", + "example": true, + "type": "boolean" + }, + "updated_at": { + "example": "2012-07-20T01:19:13Z", + "format": "date-time", + "type": "string" + }, + "url": { + "example": "https://api.github.com/repos/octocat/example/deployments/1", + "format": "uri", + "type": "string" + } + }, + "required": [ + "id", + "node_id", + "sha", + "ref", + "task", + "environment", + "creator", + "payload", + "description", + "statuses_url", + "repository_url", + "url", + "created_at", + "updated_at" + ], + "title": "Deployment", + "type": "object" + } + } + } + }, + "insertionIndex": 719 + }, + { + "id": "ef86f5a3-42a3-4c59-a34c-8f7b1e7b7720", + "name": "Delete a deployment (application/json)", + "request": { + "urlPath": "/repos/jlknhom40jqq6cnh211uzdknsd7t4mf5smus5qysmmjrjtf2nlelrb6zzomok78i12nlfsrogm0pynethvhgzvoohaza0ny3umco2fioujqvovw45q9pauljdrvqcvli9fljvnvg4twi0kh9t4artrnke71cq24oz74x1r6r2sb/ii1u39uu3cfx7mixy1jj7zxuy8l1xrv8t7syoh9n9dd9zvmlolvi63a1xqdvsxw046hk36hdax3pmh2eqp4965hzphrvsvksm3axcns8mc9p90ua4d2om2dwuh7zplmzq7mk7hechm4gudfzal1waub0rqllwzezncp2tnc52vqyfswqsld/deployments/3273818107999634600", + "method": "DELETE", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 422, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/379373\",\n \"message\" : \"Laboriosam asperiores odio molestiae totam. Non est autem laborum. Est quia ut dolorem. Minus cupiditate molestiae perferendis eius placeat corrupti. Vero sunt eius.\",\n \"errors\" : [ \"qey4aj58idkkrukns3nmakn6t0ts2kkozbbfd386uzgsqkbxcf9y3db6a2zq23w8y7dx1xawlxtxzy4s0jokz207wc0211pr\", \"156dgkyaqfilj2r8i8spg3fc1eo3a5klxskcwrupgqxsu9lgftyly7m2k91q4vt3pvgi8ah1azk03lq838ttpt2v2dcgkko9hv2yr00o1t\", \"7dkzgsfylq4thzrdmxrzm9gfjnp95r8ey895ckkmnnnh5xg08fgewexgf7iudaxjo2ejdncx5bk5jrqk79rz0k077zzqucxroac4asmp6inqjtgticd2s28sauoomjuez0fx4x58yg7f1ymnx6u1mh2b5t1dys2\", \"3ec40vdf83hxw6nn842vhq9l1qb6gdkxipmukv0e534167oqib7hd67snyos122svtwitvg2toslfh8ap76hswctj9nobqhikwta0k3xe2g1zxrf1ma3jw8glf52tm9fsvdypxn0jd5utm95aj8hio9kqshyw9eebr\", \"m01tm0kw1ax6g27aeeq9zk93ypeiygku996jdfvk1eethbjqqmpg1hl1mf4ihcgx0pkjg0ytz1uufztmaa8q2zvznr2pfi0ttffl7s0c7espqwo4lyhz4qv1\", \"8yf7fg0ya2ssc82efexvrpq9hvvmtbhj9vvmxa5shisdu2l0hyjc1vn5sjbeqbj7mzc21v2qwqm8e5t0d3s0rcp0plfk75vrp6z\", \"gp0ub5d5g1325zdtcdc6s6k5slj77jqwqzneqz0irp6\" ]\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "ef86f5a3-42a3-4c59-a34c-8f7b1e7b7720", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.936519Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/delete-deployment", + "schema": { + "description": "Validation Error Simple", + "properties": { + "documentation_url": { + "type": "string" + }, + "errors": { + "items": { + "type": "string" + }, + "type": "array" + }, + "message": { + "type": "string" + } + }, + "required": ["message", "documentation_url"], + "title": "Validation Error Simple", + "type": "object" + } + } + } + }, + "insertionIndex": 720 + }, + { + "id": "f45edd53-d16e-48f4-b188-a13af2231c99", + "name": "Delete a deployment (application/json)", + "request": { + "urlPath": "/repos/d0pvbw8g49s640l7jimn89is1pieqgy1qcega70wtp3mdfc6nzdtllv6plkp3aqgmvckfp6w2m9p2tqfzerf8pke33rlydfbomv508bha7e3ve21ojdp0xdhbsr6ea9esmhpgu232p9l4frlh1jgti3ewxrxxssgbp0rjrb51l8pdnmery/b4elf0z8ixsemyb8sxfewqn2npm6ffp2gdsv00bjg955nr4kp05skkntziapfy14arq28eje2vqnjtu9eestto9h072zd3dozurqb8osrnwy0jd6buw9btke6334/deployments/786955222578264377", + "method": "DELETE", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/488834\",\n \"message\" : \"Est rerum tempore. Nulla quam vel recusandae ut. Ad quo odit. Nihil voluptatibus dolor occaecati. Dicta est nihil et.\",\n \"url\" : \"https://web.example.mocklab.io/060739\",\n \"status\" : \"ajfvbjgv2ts5tup559jis6eiwbft4tbkxn3gty15s9\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "f45edd53-d16e-48f4-b188-a13af2231c99", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.936282Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/delete-deployment", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 721 + }, + { + "id": "128ebd12-1c00-4001-9dc0-b91a72896e69", + "name": "Delete a deployment - 204", + "request": { + "urlPath": "/repos/weedtidlkxyk3pj060fq/n1hxbq0kcm1co627p6w/deployments/9217964429696309740", + "method": "DELETE" + }, + "response": { + "status": 204 + }, + "uuid": "128ebd12-1c00-4001-9dc0-b91a72896e69", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.936025Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/delete-deployment" + } + } + }, + "insertionIndex": 722 + }, + { + "id": "23686245-6dfa-4b57-8f13-80b8db735586", + "name": "Create a deployment (application/json)", + "request": { + "urlPath": "/repos/dajnqpls2ztn6l8jsn2drju2ve0a8z0k2110mctl03zdu94k19w5sh5rh4mshoy/puf/deployments", + "method": "POST", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 422, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/388742\",\n \"message\" : \"Repellat nobis aut. Recusandae corporis libero vitae. Cum sit fuga ut distinctio. Alias aut porro dolor rerum id et.\",\n \"errors\" : [ {\n \"code\" : \"b3yqe2buneam1n5t840ay9ikue7xce6fsemprylt4f07och1hf2y5s400v2nkelp230gl53jpjhrahvroaxz9fcqm2m3q4ru7t41bie1ctoo4xno954hxm71i5311k51wtvd616ffuocq8\",\n \"field\" : \"zb49inq1d22u11drzgkr7kpn6limvngo7jc8zy5kvd3iwvnz201s1s3y2xzdzn4hfgi8boksue08k96awgt5s1312u4j8wb7ko1afk7hcr3khbuch0t\",\n \"resource\" : \"kg81tp3nrv6jqs241tftrrun92zu79v5rkel0pet0i2nu879flazow09sdmo18odes62ihbinvmpez2dkvd4ntly49wfgjuq\",\n \"index\" : 7220602299595294908,\n \"message\" : \"Ut officia autem. Aliquid exercitationem facilis animi sed. Sit nam vitae ratione. Odio atque et doloremque.\",\n \"value\" : { }\n }, {\n \"code\" : \"sswr2hmw9szb26bh9dyohdu0aentzvy73ipd78r8h9gptk5wxtelg557kybk8xm3t4ta99x4n9\",\n \"field\" : \"a54ctldqnq3wwhod5z7ci3dq7086f63pyju57pppg3d8y8c7idyhy9weihwjrezy1jbehoaraj40qz9x5rarx36716ew\",\n \"resource\" : \"3milf04zqyu8pyf7ltv12r5fszipc7ys186cjgxxa0l0t65rs98xcptjhtmkyzslvfhyr4hcexbghv8t68im34yje0kqr6599bfor05hjbt17lj9xeh5l9\",\n \"index\" : 6483090435435785715,\n \"message\" : \"Vel non rerum aut deserunt. Rem hic veritatis voluptas. Et autem excepturi voluptatem natus aut sunt ut.\",\n \"value\" : { }\n }, {\n \"code\" : \"pxvszyq1ryrr77aeddbrm5gmjmcb3ei6r2to1vp56q04u3ta2n5bmv4afdpsli6ol5o248n671o0jkffv473qztgr0okz079wlaxw4cyitjarlcs649aolecmz8lhleogyetq4jbfk4vtb6fon4oqknylmljjx7qplnrh4gfxkled2au8h6u892t\",\n \"field\" : \"7z8pv8k5ve1ubxe7uguxfnl5ect5imc7uu1hsyykinw43biay3pji09l7hqnuxiw4v29rycal88z33zkz41av8st1gizo8rv88n02znhkecawma\",\n \"resource\" : \"ohulwq5ppf5dasq6w54czz9tqhi6wzc06zghradovz63j4cau9h1j5bfszkbmqn5a255ifqjtajqzu5dl0ft67003uojd\",\n \"index\" : 5122042807010688848,\n \"message\" : \"Dolor aut suscipit modi pariatur in minima illo. Non qui dignissimos assumenda. Quia exercitationem consequatur ipsum perferendis.\",\n \"value\" : { }\n }, {\n \"code\" : \"fj10e1h4882yrxtptk3egdooxewhcioeo7iuj3no\",\n \"field\" : \"le556tv29k90mi8lo10c9wh8u9293fl36f8hvjw2zco\",\n \"resource\" : \"kda57mn3hxa6wd2b8vfomj7vu4xh10wkqn\",\n \"index\" : 4731907818597471524,\n \"message\" : \"Eos inventore nesciunt ad sit vel. Ut eum autem. Eaque amet repudiandae ipsum impedit quis et voluptatibus. Saepe voluptate minus quas.\",\n \"value\" : { }\n } ]\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "23686245-6dfa-4b57-8f13-80b8db735586", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.935962Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/create-deployment", + "schema": { + "description": "Validation Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "errors": { + "items": { + "properties": { + "code": { + "type": "string" + }, + "field": { + "type": "string" + }, + "index": { + "type": "integer" + }, + "message": { + "type": "string" + }, + "resource": { + "type": "string" + }, + "value": { + "oneOf": [ + { + "nullable": true, + "type": "string" + }, + { + "nullable": true, + "type": "integer" + }, + { + "items": { + "type": "string" + }, + "nullable": true, + "type": "array" + } + ] + } + }, + "required": ["code"], + "type": "object" + }, + "type": "array" + }, + "message": { + "type": "string" + } + }, + "required": ["message", "documentation_url"], + "title": "Validation Error", + "type": "object" + } + } + } + }, + "insertionIndex": 723 + }, + { + "id": "22294aff-7f78-4f55-8316-cdf4ff7ab31f", + "name": "Create a deployment - 409", + "request": { + "urlPath": "/repos/ei2013ob4cv8q5l1835btww6q7rb7sah7yf6sewbhm30engemzzscj240oem0zmzbzegrqvr4vqrtbbgatvyrk7vdgujr0l0dbxskyta1qzz172pl43hkw8/xq4jlzee7l/deployments", + "method": "POST" + }, + "response": { + "status": 409 + }, + "uuid": "22294aff-7f78-4f55-8316-cdf4ff7ab31f", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.935365Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/create-deployment" + } + } + }, + "insertionIndex": 724 + }, + { + "id": "251aa1f3-0bcb-449e-a26f-72eaea48dd11", + "name": "Create a deployment (application/json) - merged-branch-response", + "request": { + "urlPath": "/repos/74ixo22ymhtih9sr2a20jcea534yyn73jajwvmzuezbzg4xcoedl9huy6f3r4cgdx42861aswxzgtcrk3q927fc0wgnxt04wxlonycyq6rgcr8j3t898/to1ivbv6uyqja72dynsjyiyt018mi/deployments", + "method": "POST", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 202, + "body": "{\n \"message\" : \"Auto-merged master into topic-branch on deployment.\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "251aa1f3-0bcb-449e-a26f-72eaea48dd11", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.935316Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/create-deployment", + "schema": { + "properties": { + "message": { + "type": "string" + } + }, + "type": "object" + } + } + } + }, + "insertionIndex": 725 + }, + { + "id": "7b4d9b36-0cf3-4b05-b45a-de721ac8dd3a", + "name": "Create a deployment (application/json) - simple-example", + "request": { + "urlPath": "/repos/r1vwbmqpe5ikw69a1pod4q9t76qylshudxzbx56usebj8wa98caia394hu4w33b4ev53lo3gqf30u7zuck8yg5f7dh3dm/ex61gspi9rw4krc7xdmgm3umzwdvj9/deployments", + "method": "POST", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 201, + "body": "{\n \"created_at\" : \"2012-07-20T01:19:13Z\",\n \"creator\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"description\" : \"Deploy request from hubot\",\n \"environment\" : \"production\",\n \"id\" : 1,\n \"node_id\" : \"MDEwOkRlcGxveW1lbnQx\",\n \"original_environment\" : \"staging\",\n \"payload\" : { },\n \"production_environment\" : true,\n \"ref\" : \"topic-branch\",\n \"repository_url\" : \"https://api.github.com/repos/octocat/example\",\n \"sha\" : \"a84d88e7554fc1fa21bcbc4efae3c782a70d2b9d\",\n \"statuses_url\" : \"https://api.github.com/repos/octocat/example/deployments/1/statuses\",\n \"task\" : \"deploy\",\n \"transient_environment\" : false,\n \"updated_at\" : \"2012-07-20T01:19:13Z\",\n \"url\" : \"https://api.github.com/repos/octocat/example/deployments/1\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "7b4d9b36-0cf3-4b05-b45a-de721ac8dd3a", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.935217Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/create-deployment", + "schema": { + "description": "A request for a specific ref(branch,sha,tag) to be deployed", + "properties": { + "created_at": { + "example": "2012-07-20T01:19:13Z", + "format": "date-time", + "type": "string" + }, + "creator": { + "$ref": "#/components/schemas/nullable-simple-user" + }, + "description": { + "example": "Deploy request from hubot", + "nullable": true, + "type": "string" + }, + "environment": { + "description": "Name for the target deployment environment.", + "example": "production", + "type": "string" + }, + "id": { + "description": "Unique identifier of the deployment", + "example": 42, + "type": "integer" + }, + "node_id": { + "example": "MDEwOkRlcGxveW1lbnQx", + "type": "string" + }, + "original_environment": { + "example": "staging", + "type": "string" + }, + "payload": { + "oneOf": [ + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "string" + } + ] + }, + "performed_via_github_app": { + "$ref": "#/components/schemas/nullable-integration" + }, + "production_environment": { + "description": "Specifies if the given environment is one that end-users directly interact with. Default: false.", + "example": true, + "type": "boolean" + }, + "ref": { + "description": "The ref to deploy. This can be a branch, tag, or sha.", + "example": "topic-branch", + "type": "string" + }, + "repository_url": { + "example": "https://api.github.com/repos/octocat/example", + "format": "uri", + "type": "string" + }, + "sha": { + "example": "a84d88e7554fc1fa21bcbc4efae3c782a70d2b9d", + "type": "string" + }, + "statuses_url": { + "example": "https://api.github.com/repos/octocat/example/deployments/1/statuses", + "format": "uri", + "type": "string" + }, + "task": { + "description": "Parameter to specify a task to execute", + "example": "deploy", + "type": "string" + }, + "transient_environment": { + "description": "Specifies if the given environment is will no longer exist at some point in the future. Default: false.", + "example": true, + "type": "boolean" + }, + "updated_at": { + "example": "2012-07-20T01:19:13Z", + "format": "date-time", + "type": "string" + }, + "url": { + "example": "https://api.github.com/repos/octocat/example/deployments/1", + "format": "uri", + "type": "string" + } + }, + "required": [ + "id", + "node_id", + "sha", + "ref", + "task", + "environment", + "creator", + "payload", + "description", + "statuses_url", + "repository_url", + "url", + "created_at", + "updated_at" + ], + "title": "Deployment", + "type": "object" + } + } + } + }, + "insertionIndex": 726 + }, + { + "id": "79310942-5159-4983-a814-95cdcf018a22", + "name": "List deployments - default", + "request": { + "urlPath": "/repos/i1lalnc2jp7u5d27h3ji8ku78mum20bfmox8ecv0xfumk2xd5oxzki5trr3vuwfzr0e9c0vqqe6avnyd0n9hlljmbgj2raa4pse8zncq92r9j4wjil3zlhk/u0xq4uz6bt1oj925s299eikhxhwo51b6xyjsjsmlfak1l48lq874n9o2swlm4sbpitkedito60ghmnwpn98ygpz49u8w9xfnmhcxqe8nt8cukbtyt8hjqrrk6petnoy3jd80y2z1uegxdyuewi17o9/deployments", + "method": "GET" + }, + "response": { + "status": 200, + "body": "[ {\n \"created_at\" : \"2012-07-20T01:19:13Z\",\n \"creator\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"description\" : \"Deploy request from hubot\",\n \"environment\" : \"production\",\n \"id\" : 1,\n \"node_id\" : \"MDEwOkRlcGxveW1lbnQx\",\n \"original_environment\" : \"staging\",\n \"payload\" : { },\n \"production_environment\" : true,\n \"ref\" : \"topic-branch\",\n \"repository_url\" : \"https://api.github.com/repos/octocat/example\",\n \"sha\" : \"a84d88e7554fc1fa21bcbc4efae3c782a70d2b9d\",\n \"statuses_url\" : \"https://api.github.com/repos/octocat/example/deployments/1/statuses\",\n \"task\" : \"deploy\",\n \"transient_environment\" : false,\n \"updated_at\" : \"2012-07-20T01:19:13Z\",\n \"url\" : \"https://api.github.com/repos/octocat/example/deployments/1\"\n} ]", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "79310942-5159-4983-a814-95cdcf018a22", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.934982Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/list-deployments", + "schema": { + "items": { + "$ref": "#/components/schemas/deployment" + }, + "type": "array" + } + } + } + }, + "insertionIndex": 727 + }, + { + "id": "8de12c8a-3a4a-4016-aa72-e3f70c5ce516", + "name": "List repository contributors (application/json)", + "request": { + "urlPath": "/repos/bzmu9l5qe95nswj74k0xk55tfo88ez1jw2bh66v491waf9ax4ylilb9iylijysaulj0dpry5e3jpjrqvbgbpiwrguvw5h1a7bell5p0cdx32urzw4xfvqvz20x4uoheilzht23/6xoz8namwk6swulwhd6p4m3pncamb7v059qikipyx1li6m6wpgwuemwpsd0h04k0fg2rkgll7e69gtoh7aato2vdb225wiwruc049kdcl1v0qvfe2kx46r93asm38dcoghgvm6irs/contributors", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/017348\",\n \"message\" : \"Voluptas voluptatibus et dolor facilis aspernatur. Omnis numquam et nulla. Dolor rerum a. Praesentium unde blanditiis. Est commodi nobis laboriosam.\",\n \"url\" : \"https://web.example.mocklab.io/036697\",\n \"status\" : \"ds6t2wm6\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "8de12c8a-3a4a-4016-aa72-e3f70c5ce516", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.934914Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/list-contributors", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 728 + }, + { + "id": "5a8dc5bf-4419-4910-9772-7ae0c426e28a", + "name": "List repository contributors (application/json)", + "request": { + "urlPath": "/repos/zwv7vwsvvl48roo5ikof3vx6gxse4kjoszlw1fpz8fvx6gp1zx6dne29sna4goeoa89sv6v982qmbdkpsr5bd2inuruk37x2f4nezti9shkiteopp7sx6/dbc7p1gp47swpz8vi8siba19ut8alxizb28j9mmnqcpc5poo3tsieh18nzz453m37ikeco9yn8xs5z0jrayv9apildtsmwe7hzmp522onib99nipglp19ts0gk4jdo3p56e0lj94emf38k6rgo21iezz1vzd1mxfrmavzplq01qm29yop333/contributors", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 403, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/244839\",\n \"message\" : \"Molestiae non ut placeat. Temporibus voluptas iure autem voluptates. Ipsam iste temporibus nostrum dolorem pariatur excepturi. Ipsam aliquid quo mollitia hic et asperiores.\",\n \"url\" : \"https://web.example.mocklab.io/544057\",\n \"status\" : \"cbu2s7k017wdg0\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "5a8dc5bf-4419-4910-9772-7ae0c426e28a", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.934681Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/list-contributors", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 729 + }, + { + "id": "00acda05-87ac-4806-bb56-805543fba223", + "name": "List repository contributors - 204", + "request": { + "urlPath": "/repos/qlcd50mayrxzs7rxytpfkmtpll1dd3uxsi9j6vory7yvml4l1af5nuf6ub342ggw0kpbs5r8kctyq7ceizxndb582h2vycbss4i1f721o8w20yf8a2f5r2h0zwl63boco/4wg1ynzjnojkb3zu82f438hp81ecnn8jofxyqyas4kutou11u8/contributors", + "method": "GET" + }, + "response": { + "status": 204 + }, + "uuid": "00acda05-87ac-4806-bb56-805543fba223", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.934444Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/list-contributors" + } + } + }, + "insertionIndex": 730 + }, + { + "id": "5e9397e9-6fc5-4007-8829-b249f99bd231", + "name": "List repository contributors (application/json) - response-if-repository-contains-content", + "request": { + "urlPath": "/repos/9vm2kgoiopystqs9acw2fjdic089vw1lax2wlbnfqd4ioiw1xb0jo9xqko/thta43g63c90c1pm3g2uhr2npmva893fviwwmt84b5ny582tpopco0wbrycwkmctt5bj79ibkob6e1ey52ehsofehl366gomr07i2e3fjlsa6gm5ib1j0gokh5jjpeynlkz901js2020umeh6frs5bh85l/contributors", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 200, + "body": "[ {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"contributions\" : 32,\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n} ]", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "5e9397e9-6fc5-4007-8829-b249f99bd231", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.934398Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/list-contributors", + "schema": { + "items": { + "$ref": "#/components/schemas/contributor" + }, + "type": "array" + } + } + } + }, + "insertionIndex": 731 + }, + { + "id": "f0b69ff5-fddc-4c9e-8b3e-ad7c79eeaa30", + "name": "Create or update file contents", + "request": { + "urlPath": "/repos/4nfvrina35v0fzqfpqso007oes79536r65ui0j9ub0km111mz2awl73bn7fnv58gs555etot911m90iy7e7jhk1yv8j1qawqneolpzrmpd4ej9rhp6l0wwuifdx5sngvqe6g9i6h6k7kqaeb7yl36r1b6ze1mnb9irtkepas5ffbguf12mihnnm/9mtd9rtrvk6l8v0cfxzamu39r78fjcc36ms0seczqozwwugq7dy4cqvv5s05wtpki79pllnxnqgqnzqfa0mha53pq7mj7v5efgk328cxxw9ef5af2km1ij2gr2u600expxvzthu7todtiqw6evg5y3g2f44afwb2rv8coa5r2tl21wo4nkm1ku5pytbuodgb9crf/contents/1v5zy4p5g79jxkyz4to14p9ug9xd7gw87br2eu1hkm2ggw74jj1kaypdxx9zteozvr4ycg1lvjbiqxt6ijollhqa4skic684mxtvwkdwmi52gxbo9qwy99ugs", + "method": "PUT" + }, + "response": { + "status": 422, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/283562\",\n \"message\" : \"Voluptate fugit qui ea. Quia nobis quia ex quia nihil est laboriosam. Cum eum nostrum labore. Velit natus rerum doloremque voluptatem inventore eum culpa.\",\n \"errors\" : [ {\n \"code\" : \"oym2op04yzp\",\n \"field\" : \"grh8dfdjwj3upd3mov03uhqubd10m3bx33cyvar3f2qkslzvj59w2pi5xwuhs8efiy8jfpbxndrviflb8n69eluvzc4r6hqpdg2u36odo\",\n \"resource\" : \"sq596fxo4961ih11su8bfbm2zdrlq\",\n \"index\" : 2361973986456397770,\n \"message\" : \"Voluptas ea veniam dignissimos. Ipsa ducimus eum sit. Et voluptatibus autem sed atque. Blanditiis ipsa ipsa.\",\n \"value\" : { }\n }, {\n \"code\" : \"aqwlxxrxofk6kmsck84lairlmd8xolz8xdyui82mpy8jwqf48kwlmkemy5squtssam1mv6pw5gl9uefhk8vmejixcvjh1vv0um95ij35smgniaq0s0gdxuuaii27rqg2pslk1acz730t02\",\n \"field\" : \"eg7k7j8j1p9z4ryk0iuetejnlb6inqke3av441qp9llidc5th7yj5sxbob8a8jy36il3mbx94hbfb1bxzl3o2\",\n \"resource\" : \"mpjv0remex1n75nvxaq2n7aq6zdzezbrubwbbhhwjs2cah9yebzp1049\",\n \"index\" : 3353411329121340601,\n \"message\" : \"Deleniti ut ut id. Sint et voluptatem vitae mollitia. Quo neque ut aliquid possimus quia. Nisi commodi laudantium.\",\n \"value\" : { }\n }, {\n \"code\" : \"gq3szqcvmslqva7h7\",\n \"field\" : \"vm2q04bod4qmhhi8batglphkfglwmeigshgzmmkmsrr069sfhjr9um29fregjvvt3e3dqb07f050vl2ua8rdvlcn836d5f4vkn1v6spow2zmgy5atn0zy84rj50t19nhc5y70fy0lueh9amq7orxh9rcf4t17\",\n \"resource\" : \"t0rhok0hmn4vbu5tdoxh5gjuxn6tv7oquvcksax9lgkdj5t3np1acxee73s1jgt5nrt4yzczvvsdxybg29yq96dlyqs9oj6omdcwxx8hlt0yyfnayl8w26bovnl91e7rj4qq92epulsyw2errt0mfzp6mcplmn0iftnsuc0un48\",\n \"index\" : 7824811627713009250,\n \"message\" : \"Tenetur quo repudiandae adipisci ex. Suscipit quis occaecati quos et expedita explicabo. Natus nostrum quia amet autem modi hic. Eum voluptate animi perferendis architecto. Sint dolor iste.\",\n \"value\" : { }\n }, {\n \"code\" : \"zusynil6tf5rjoc1j3qd08s7nzs57f0m0gwphpssqf\",\n \"field\" : \"lmsmoogzhigk216bu3rzt0n05egqr9a6691vrcyv2trxs777e0y0upzzp3kkp8yd0cb6a0kylsotjpwj62givk8w0ir0l657ea9wg3q91ok6qw9fc9t9il7qjn3ynoev58199fmrfo56lt3zw6pxetrtdjbu4ot9wxi19r78\",\n \"resource\" : \"hcmu6logsa4fnpsgirayu1w0jx26c1az0154ooavdyofux58jv8rg2zdhr61x5ffbxju1tba26hxxvl10nrktezmyhgrclrt07r55qb07k4sxipaf8in624twlywp9h1tk6dl8ipw7fh68dyixt8qcdl\",\n \"index\" : 8410309257061810742,\n \"message\" : \"Eaque rerum quis aspernatur quos dolorem. Rerum molestiae sit eaque maiores tempora. Accusamus ea est nam tenetur.\",\n \"value\" : { }\n }, {\n \"code\" : \"9dk3n128y8rq6p2pgvgnhndi6lv4l8mno07xt683db26bt6zazq2fs325oc05nali34ln5nawrnm4pw6smvtq29xd6a400w22m3v0a9xukrlas2b3i0n6ogqejxilzjzwtsg0q1ik\",\n \"field\" : \"mirheyjslgme61998n9xvsnjx1\",\n \"resource\" : \"octgrsgi51cki8s96o9u9ubv7tnb19ya\",\n \"index\" : 1272971823287074652,\n \"message\" : \"Fugiat quos consequuntur ab occaecati minima. Est eum blanditiis ullam soluta nihil. Cum dolorum magni vitae earum et. Quibusdam necessitatibus et nostrum impedit et.\",\n \"value\" : { }\n } ]\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "f0b69ff5-fddc-4c9e-8b3e-ad7c79eeaa30", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.934318Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/create-or-update-file-contents", + "schema": { + "description": "Validation Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "errors": { + "items": { + "properties": { + "code": { + "type": "string" + }, + "field": { + "type": "string" + }, + "index": { + "type": "integer" + }, + "message": { + "type": "string" + }, + "resource": { + "type": "string" + }, + "value": { + "oneOf": [ + { + "nullable": true, + "type": "string" + }, + { + "nullable": true, + "type": "integer" + }, + { + "items": { + "type": "string" + }, + "nullable": true, + "type": "array" + } + ] + } + }, + "required": ["code"], + "type": "object" + }, + "type": "array" + }, + "message": { + "type": "string" + } + }, + "required": ["message", "documentation_url"], + "title": "Validation Error", + "type": "object" + } + } + } + }, + "insertionIndex": 732 + }, + { + "id": "ceb00cfd-a366-4a7b-99fd-cb11856da49a", + "name": "Create or update file contents", + "request": { + "urlPath": "/repos/pp20oycln43sndqv763dpwueybu32rdhoplu7yub57z9gedjn1qun87clpts9/0jgz0z2n4ppvpiuzj1smons623o/contents/ncsmukwt1bd12mqc3bhrj4rnlihkd6nt945peip89sl1l6iwjjal6prfk2ccum5mksuf9", + "method": "PUT" + }, + "response": { + "status": 409, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/855227\",\n \"message\" : \"Et repellat officiis. Autem tempora dolore nobis dolor tempora. Repellendus blanditiis qui non. Laudantium corporis qui aliquid. Sapiente nisi ex officia odio quos ut dicta.\",\n \"url\" : \"https://web.example.mocklab.io/393770\",\n \"status\" : \"shizcvjemem1daxh5gyb3bd338qa9xp88aaiu4g22l653w8e9l4xq6pl7vi3akb1chsckurnq01gbkm8y4jncgkmxkxqrvqigv8ljc0lc7vkxvg1eux7l1onr2q8fizcg0x5ztg5\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "ceb00cfd-a366-4a7b-99fd-cb11856da49a", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.933655Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/create-or-update-file-contents", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 733 + }, + { + "id": "c061f049-f8ce-4c0f-9477-8a99540ae433", + "name": "Create or update file contents", + "request": { + "urlPath": "/repos/bsc0rx3qabebpht1oia4fcu5790bi0notg0humpgi4qaxvmu55e42k1cjc8r3w1out0paimjj3mxfl3tsov2fqhuq8dq22mknev9yizdck6k5k8r4aw0zc3nf7kbsa49z1szi5qkmvpk5nhkqeu8kdy5bztumhp/ygxh6kzgibpjothnl67oly0xjsob8w7zo7ap17yf80ej4ftpyiwxz1yecsak3xa7o85xb7gtygyy4c9cga6dv38lgt6oxm3io0ahi38u1c5yom937nnognv9lo6heyiarvajnxzeb78bm90my8t9r336940glen1dcr19j5phei7rnjxnd85cp41r6jo6fm9an37xz/contents/g197kgom145ia0nn9zhpprbe4k62plit54icvg4hmvkokrx34u790zrf5kwttpfww3ulnt29m9z8b45d0cqc2z4z1s0r12cf2phn8d66lte25hs1pamecjjem9nauvhi7jvmvaqddc1q9dxoivf7kzihgbzki63l6ks5a2", + "method": "PUT" + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/191092\",\n \"message\" : \"Provident quod perferendis dolores at natus dolor et. Eaque ex soluta ut. Incidunt et quod eum. Qui vel voluptatibus quia. Quas voluptatum cum quam quis.\",\n \"url\" : \"https://web.example.mocklab.io/640598\",\n \"status\" : \"rpxugjaz27tp7besuv667c33u5b5vl95w306ezh98q5zd414xig0scaf0pq5pectzkax211wn31rrhrhh7y5h55q4b\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "c061f049-f8ce-4c0f-9477-8a99540ae433", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.933416Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/create-or-update-file-contents", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 734 + }, + { + "id": "9a82896e-5a3d-4beb-83d7-ad3785762e07", + "name": "Create or update file contents - example-for-creating-a-file", + "request": { + "urlPath": "/repos/h2mz7i936ajkppv1ucbs55rxcn8dtkz8z13imk/r0fgh1mo4ofw033z7ahyvjgk1j3hjlhbfjjwq5phnwcf0cbq7teyafsh9hhfdiqov352gkmn4ucxalfh1oyig600ckg2o5xoopxhrzysfujauz6yhxy5qy8lr2o1bzha2cjt06gargdhgqkzh23cao1w6xh8qbrs403re013eg/contents/614xc8qp5unzevup4rr47k2yxhqjfr2oe97sdbfae365g38nl7rlyw3zgwbg0keywr04tcgyhnslqf7rpk29dclh4vh5hn15z722dwxj7vj4a2jic545nltzwv0asg7pfqax5ft1uh5ll9gcuamcyqnc012kpy4msmrhc0y2g", + "method": "PUT" + }, + "response": { + "status": 201, + "body": "{\n \"commit\" : {\n \"author\" : {\n \"date\" : \"2014-11-07T22:01:45Z\",\n \"email\" : \"octocat@github.com\",\n \"name\" : \"Monalisa Octocat\"\n },\n \"committer\" : {\n \"date\" : \"2014-11-07T22:01:45Z\",\n \"email\" : \"octocat@github.com\",\n \"name\" : \"Monalisa Octocat\"\n },\n \"html_url\" : \"https://github.com/octocat/Hello-World/git/commit/7638417db6d59f3c431d3e1f261cc637155684cd\",\n \"message\" : \"my commit message\",\n \"node_id\" : \"MDY6Q29tbWl0NzYzODQxN2RiNmQ1OWYzYzQzMWQzZTFmMjYxY2M2MzcxNTU2ODRjZA==\",\n \"parents\" : [ {\n \"html_url\" : \"https://github.com/octocat/Hello-World/git/commit/1acc419d4d6a9ce985db7be48c6349a0475975b5\",\n \"sha\" : \"1acc419d4d6a9ce985db7be48c6349a0475975b5\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/git/commits/1acc419d4d6a9ce985db7be48c6349a0475975b5\"\n } ],\n \"sha\" : \"7638417db6d59f3c431d3e1f261cc637155684cd\",\n \"tree\" : {\n \"sha\" : \"691272480426f78a0138979dd3ce63b77f706feb\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/git/trees/691272480426f78a0138979dd3ce63b77f706feb\"\n },\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/git/commits/7638417db6d59f3c431d3e1f261cc637155684cd\",\n \"verification\" : {\n \"reason\" : \"unsigned\",\n \"verified\" : false\n }\n },\n \"content\" : {\n \"_links\" : {\n \"git\" : \"https://api.github.com/repos/octocat/Hello-World/git/blobs/95b966ae1c166bd92f8ae7d1c313e738c731dfc3\",\n \"html\" : \"https://github.com/octocat/Hello-World/blob/master/notes/hello.txt\",\n \"self\" : \"https://api.github.com/repos/octocat/Hello-World/contents/notes/hello.txt\"\n },\n \"download_url\" : \"https://raw.githubusercontent.com/octocat/HelloWorld/master/notes/hello.txt\",\n \"git_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/blobs/95b966ae1c166bd92f8ae7d1c313e738c731dfc3\",\n \"html_url\" : \"https://github.com/octocat/Hello-World/blob/master/notes/hello.txt\",\n \"name\" : \"hello.txt\",\n \"path\" : \"notes/hello.txt\",\n \"sha\" : \"95b966ae1c166bd92f8ae7d1c313e738c731dfc3\",\n \"size\" : 9,\n \"type\" : \"file\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/contents/notes/hello.txt\"\n }\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "9a82896e-5a3d-4beb-83d7-ad3785762e07", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.933141Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/create-or-update-file-contents", + "schema": { + "description": "File Commit", + "properties": { + "commit": { + "properties": { + "author": { + "properties": { + "date": { + "type": "string" + }, + "email": { + "type": "string" + }, + "name": { + "type": "string" + } + }, + "type": "object" + }, + "committer": { + "properties": { + "date": { + "type": "string" + }, + "email": { + "type": "string" + }, + "name": { + "type": "string" + } + }, + "type": "object" + }, + "html_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "node_id": { + "type": "string" + }, + "parents": { + "items": { + "properties": { + "html_url": { + "type": "string" + }, + "sha": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "sha": { + "type": "string" + }, + "tree": { + "properties": { + "sha": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "type": "object" + }, + "url": { + "type": "string" + }, + "verification": { + "properties": { + "payload": { + "nullable": true, + "type": "string" + }, + "reason": { + "type": "string" + }, + "signature": { + "nullable": true, + "type": "string" + }, + "verified": { + "type": "boolean" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "content": { + "nullable": true, + "properties": { + "_links": { + "properties": { + "git": { + "type": "string" + }, + "html": { + "type": "string" + }, + "self": { + "type": "string" + } + }, + "type": "object" + }, + "download_url": { + "type": "string" + }, + "git_url": { + "type": "string" + }, + "html_url": { + "type": "string" + }, + "name": { + "type": "string" + }, + "path": { + "type": "string" + }, + "sha": { + "type": "string" + }, + "size": { + "type": "integer" + }, + "type": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "type": "object" + } + }, + "required": ["content", "commit"], + "title": "File Commit", + "type": "object" + } + } + } + }, + "insertionIndex": 735 + }, + { + "id": "96ba8ac7-7931-4e98-9df2-dfc79dba14e2", + "name": "Create or update file contents - example-for-updating-a-file", + "request": { + "urlPath": "/repos/5du4c37rruo53aflv89uaj8opyu6m1ypxsi4zuz5ugmwqw3wm9gailzf8756ocsqj0splqr5jj3ekx5jv1rq2n9xyedu8rnf4gxgp6o7l/dkwslbj804iryexsdshshww7cafozffys63nsq699uy/contents/vi71me5pv2qtekaeagdrpmcp7hqu8kcklzy3zc24fzoqddfkw5q3c6wq3xi4qy03nun34vhlzdbqntcg8sflx1nvao78ss22m49y7bqriq6iaqz22ronl7jkc0kh5a4xwl9t6w5j5e3j361ba", + "method": "PUT" + }, + "response": { + "status": 200, + "body": "{\n \"commit\" : {\n \"author\" : {\n \"date\" : \"2014-11-07T22:01:45Z\",\n \"email\" : \"octocat@github.com\",\n \"name\" : \"Monalisa Octocat\"\n },\n \"committer\" : {\n \"date\" : \"2014-11-07T22:01:45Z\",\n \"email\" : \"octocat@github.com\",\n \"name\" : \"Monalisa Octocat\"\n },\n \"html_url\" : \"https://github.com/octocat/Hello-World/git/commit/18a43cd8e1e3a79c786e3d808a73d23b6d212b16\",\n \"message\" : \"my commit message\",\n \"node_id\" : \"MDY6Q29tbWl0MThhNDNjZDhlMWUzYTc5Yzc4NmUzZDgwOGE3M2QyM2I2ZDIxMmIxNg==\",\n \"parents\" : [ {\n \"html_url\" : \"https://github.com/octocat/Hello-World/git/commit/da5a433788da5c255edad7979b328b67d79f53f6\",\n \"sha\" : \"da5a433788da5c255edad7979b328b67d79f53f6\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/git/commits/da5a433788da5c255edad7979b328b67d79f53f6\"\n } ],\n \"sha\" : \"18a43cd8e1e3a79c786e3d808a73d23b6d212b16\",\n \"tree\" : {\n \"sha\" : \"9a21f8e2018f42ffcf369b24d2cd20bc25c9e66f\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/git/trees/9a21f8e2018f42ffcf369b24d2cd20bc25c9e66f\"\n },\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/git/commits/18a43cd8e1e3a79c786e3d808a73d23b6d212b16\",\n \"verification\" : {\n \"reason\" : \"unsigned\",\n \"verified\" : false\n }\n },\n \"content\" : {\n \"_links\" : {\n \"git\" : \"https://api.github.com/repos/octocat/Hello-World/git/blobs/a56507ed892d05a37c6d6128c260937ea4d287bd\",\n \"html\" : \"https://github.com/octocat/Hello-World/blob/master/notes/hello.txt\",\n \"self\" : \"https://api.github.com/repos/octocat/Hello-World/contents/notes/hello.txt\"\n },\n \"download_url\" : \"https://raw.githubusercontent.com/octocat/HelloWorld/master/notes/hello.txt\",\n \"git_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/blobs/a56507ed892d05a37c6d6128c260937ea4d287bd\",\n \"html_url\" : \"https://github.com/octocat/Hello-World/blob/master/notes/hello.txt\",\n \"name\" : \"hello.txt\",\n \"path\" : \"notes/hello.txt\",\n \"sha\" : \"a56507ed892d05a37c6d6128c260937ea4d287bd\",\n \"size\" : 9,\n \"type\" : \"file\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/contents/notes/hello.txt\"\n }\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "96ba8ac7-7931-4e98-9df2-dfc79dba14e2", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.932869Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/create-or-update-file-contents", + "schema": { + "description": "File Commit", + "properties": { + "commit": { + "properties": { + "author": { + "properties": { + "date": { + "type": "string" + }, + "email": { + "type": "string" + }, + "name": { + "type": "string" + } + }, + "type": "object" + }, + "committer": { + "properties": { + "date": { + "type": "string" + }, + "email": { + "type": "string" + }, + "name": { + "type": "string" + } + }, + "type": "object" + }, + "html_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "node_id": { + "type": "string" + }, + "parents": { + "items": { + "properties": { + "html_url": { + "type": "string" + }, + "sha": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "sha": { + "type": "string" + }, + "tree": { + "properties": { + "sha": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "type": "object" + }, + "url": { + "type": "string" + }, + "verification": { + "properties": { + "payload": { + "nullable": true, + "type": "string" + }, + "reason": { + "type": "string" + }, + "signature": { + "nullable": true, + "type": "string" + }, + "verified": { + "type": "boolean" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "content": { + "nullable": true, + "properties": { + "_links": { + "properties": { + "git": { + "type": "string" + }, + "html": { + "type": "string" + }, + "self": { + "type": "string" + } + }, + "type": "object" + }, + "download_url": { + "type": "string" + }, + "git_url": { + "type": "string" + }, + "html_url": { + "type": "string" + }, + "name": { + "type": "string" + }, + "path": { + "type": "string" + }, + "sha": { + "type": "string" + }, + "size": { + "type": "integer" + }, + "type": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "type": "object" + } + }, + "required": ["content", "commit"], + "title": "File Commit", + "type": "object" + } + } + } + }, + "insertionIndex": 736 + }, + { + "id": "91646099-4ce2-4aa2-bdbc-b82aa6e48392", + "name": "Get repository content (application/json)", + "request": { + "urlPath": "/repos/iw5qppevhabxogp8gy7nx5qmfyzllmnyqgdo1n101w5wauwbqpijwop3i5fx70zb3njr4hddnloi02heoinevjkthurmizezu2ak51e9wyp6pton9fkpmedstlvauqit3z590bp9wvpop2i86pjvqbaqx5yrviya1bl4dappq0hsw95p6oxgtwqkekekh/r81j293imsxaftuga8a2l8porh88jz86tbijkl9guwdflj/contents/imp0e8zc7tpfxua4tiaoc7a97rz0g43ykoznt7a9n3nn8ug2s83lnwa1m0h3qdv", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/999321\",\n \"message\" : \"Non omnis tempora ut eveniet consequatur itaque odio. Est quae placeat dolor eveniet molestias et. Nam sit aut quod explicabo inventore eum consequuntur.\",\n \"url\" : \"https://web.example.mocklab.io/818979\",\n \"status\" : \"5oxsoloer5sstsv2gbcrxcfvrq11m1qc37whqqqp3pjqdjt41bj6rynrc70fxpw3zg2842s8yl84fxlt54hysypgejx1v4nguhu50241s55wjonv2hoqjjrqtln\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "91646099-4ce2-4aa2-bdbc-b82aa6e48392", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.932539Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/get-content", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 737 + }, + { + "id": "f215847d-c0b7-47d5-bc29-778a94700b47", + "name": "Get repository content (application/json)", + "request": { + "urlPath": "/repos/c8piprnvkj9ju987tcw0x7t/ep9w9r617r3ifuwh077ajdtq8verhwi1tmpn0lxwct7aw40ddafgbzdgq8dqqimg8sm2m9gffpuq5xyt35bs0ad8mh14sz227wq3zn8ti49e515d0nctpcup53vffsaml2ow97929mmqg0q6apciunbcrudlkv51oy7omqf4qbz2j/contents/j6ksheszep1n77yjymg292ytqt2pdrilq8xn57j7c76c0mskwl2psqbd2t62vi0modobj428u23fgxjbou3an99sc778mwd7mesa495a", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 403, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/113318\",\n \"message\" : \"Doloremque aut doloribus aut tempora maiores qui. Dolorem voluptatem porro pariatur delectus impedit officia aut. Deleniti incidunt cumque laboriosam id voluptatem. At molestiae ipsam.\",\n \"url\" : \"https://web.example.mocklab.io/803549\",\n \"status\" : \"fv173ozj4arwzi2df8uirm29tmafr1e1759kr0c3fbdsf9kz5o1m568ukax7aubzgoodqpfafiztjv4jiv9m7hd7\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "f215847d-c0b7-47d5-bc29-778a94700b47", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.93228Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/get-content", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 738 + }, + { + "id": "72297fe8-af3a-49ba-a2ae-6240eb383cff", + "name": "Get repository content - 302", + "request": { + "urlPath": "/repos/alb16vu1lwgsjx11m1faq580ki56juh4y4lpaq4o0ka48qlfcjppp1f2rb1ywao60f6v3xjngjo826spy88kt29y6wze4up16g0wk7d1sz8zp033f9kbzmfre1ohrwqviepn/hbpn8t2lsnu8p2gihlotdffhkr8ym3nlx2xukhk0l3lexakj9efbs6kvk6pnr6xmj5dfazsk1ytz39wmayozqwchlx8f86nr5v3w93plx7olgjlbg1la3vrnppwolsl54u8uhhkr4fjd2gx/contents/o72byexo4rekifkeutsho", + "method": "GET" + }, + "response": { + "status": 302 + }, + "uuid": "72297fe8-af3a-49ba-a2ae-6240eb383cff", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.931983Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/get-content" + } + } + }, + "insertionIndex": 739 + }, + { + "id": "a3a05879-71f4-4c35-a50d-7948bf58ea3a", + "name": "Get repository content (application/vnd.github.v3.object)", + "request": { + "urlPath": "/repos/7wpb22/c6sj7df11wbk6rx80di6u4rxjevab85x698nn8mphftj6ch6c2vni5i8rz0a6nori5jr8glp3gfewjr045o6gd7igoia0fhzrd8ad1h1kebm7g2ws397oouiixuwg6zbaim2tz15z9ef3mqp3c2qaq8cwx2kgxbv2na1ai6qp3c8/contents/8zg4uec7a51rfns2vi1imgui", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/vnd.github.v3.object" + } + } + }, + "response": { + "status": 200, + "body": "{\n \"path\" : \"z934qmchlhjbhy39ulitc1iu9m7e4z1r2j70db6vmtspjb42q2e3evcu8h4l75rskqopojll7ceafib34gope3y019lx8l18y7pgeges5x6iric7e15ecdm511hekh6f25fml1fsshop4r7r6epog1tgr5907wciad59fmp\",\n \"entries\" : [ {\n \"path\" : \"aerwy51mxjamh\",\n \"size\" : 1728996777793237402,\n \"_links\" : {\n \"git\" : \"wc8t0wqvwrg3mzpjjtep2aqc1ulmj8nykw5jmz1clako6eie4wehhzvhx3\",\n \"self\" : \"h51o92s6vs851tdursv743xbtqqibgan0kn40nzlqs7o5x6tfdpqhrrmd280e6njts\",\n \"html\" : \"z6oqvjsuq3y7s2jq8jelzbebh21xwr5ji07feyqamm2\"\n },\n \"html_url\" : \"https://web.example.mocklab.io/327352\",\n \"download_url\" : \"https://web.example.mocklab.io/818906\",\n \"name\" : \"Tristan Reichel\",\n \"git_url\" : \"https://web.example.mocklab.io/978974\",\n \"type\" : \"nvdgmvzdqnh8utx3llbdtnt7cp104dgm\",\n \"sha\" : \"acyy9tl1dphk6th9uqi8mbp820z3aiaanfz2zqprhsh25it6sbugbivhvaveyijil36nhhdi35jjomyyi4l3r2vdw881d8q7wq2xv3x8fmkhj2kln5z64n05tk9ca744syv1cnhfqefmcm8e\",\n \"content\" : \"Culpa quo ea incidunt optio error eum. Et dolorum reiciendis odit dolores. Mollitia ducimus sit. Ipsam tempore enim voluptas sunt officia cumque.\",\n \"url\" : \"https://web.example.mocklab.io/500288\"\n }, {\n \"path\" : \"9o5zfrbxshptiwfee8oco888m8vn4sh1noon9ss9mwlm5dox02cspd0tuar1xajuraex3bf7mqieos3ki4ht4yvanw54pwtl8dw9w7k906jhxzq38xt69r\",\n \"size\" : 606794709500177609,\n \"_links\" : {\n \"git\" : \"z3qeo1lf21imqq1fge6cdeyebb3zj5virn7zomrwrnqddc0b5rj1ykf3l8vxri596iutahir457fzqqmqdoti96nw7fz08\",\n \"self\" : \"3pw1ynzwttxzmlfkbv8q2ai3a3cxo\",\n \"html\" : \"siooavlyl3ijnzouscntqpqc0j77ga4a0ddrtru8nae8u56u1p0x00bajvneuu2rj6iszyrqxva7sr9iqdx7n09d0mhemj37zbet4sdgqxr4yd0qvcl1ytm2q09pkb716oug366961wfojtvhaytvshgevwsnhxi4fh7m63xaza7yyrgbul8k0pvux2z8hzhvm\"\n },\n \"html_url\" : \"https://web.example.mocklab.io/563249\",\n \"download_url\" : \"https://web.example.mocklab.io/693439\",\n \"name\" : \"Takisha King\",\n \"git_url\" : \"https://web.example.mocklab.io/905964\",\n \"type\" : \"5xbugih7ryg7\",\n \"sha\" : \"rjmqx26iivvpyxsxpxhz9syy3v2z5vu9dp65ycy07avki8sp4lcivvexl7h0qnbl5xld2uk900xd2akqf7voqikd2t52mfnfl41l9l69xab03hs38ob07vm6cnmj1ng0wqoek5e42bhgtvz8d6bzdzldxogfzfr\",\n \"content\" : \"Eos voluptatem ab non magnam minima saepe. Nobis autem quas laboriosam voluptatibus. Voluptatem voluptatem laboriosam quod accusamus et ut repellendus. Dignissimos ipsa corrupti ducimus ipsa occaecati\",\n \"url\" : \"https://web.example.mocklab.io/066233\"\n }, {\n \"path\" : \"t50s1mby0tkly9xizkifuxiv16ok08uirxcl79\",\n \"size\" : 7301377828059962319,\n \"_links\" : {\n \"git\" : \"uwg47\",\n \"self\" : \"2dcmp62erwpl96nmuul3xfoksf6amjcis03dpkiuourhd9o71z6c6bp5dse4y10dfzqb0ybn3kqhvjayiaxne44wvt18zd9wv7ubvft6gcep8i976vyu6y1vg9r1t394dre9h64ufdotf876l3eti4qty8hsvfhk7zav7t\",\n \"html\" : \"3rxbtz72kuz1n2ivdjulfpark2nrnrcqnze7uoyjh65rky71f0fm\"\n },\n \"html_url\" : \"https://web.example.mocklab.io/808531\",\n \"download_url\" : \"https://web.example.mocklab.io/597384\",\n \"name\" : \"Huong Heller PhD\",\n \"git_url\" : \"https://web.example.mocklab.io/883225\",\n \"type\" : \"w20lm2bjjzw52xdaln17s809uk9a21qe5t7425q3voftnrgrlx8j4qys0ddfmfqzcsq6ogjjrf2smuaah6cw93vmsi\",\n \"sha\" : \"oxrh1fhawvcsjmhdr9h7yo1btedxkdx3rl2pipg7dgg80uihqsh29qu97srit884rk08wjj0o9l6d0bkhbeeouvvtcjbf2o5i4yh5utjrd1ot4lhbi0qbhzb1d9fmc02m6il8iiycwu5t1joudr6znwnx49r\",\n \"content\" : \"Culpa pariatur dolor ipsam sit. Cumque dolore libero eveniet. Numquam asperiores sint quibusdam.\",\n \"url\" : \"https://web.example.mocklab.io/367819\"\n }, {\n \"path\" : \"4uxef1c2t8f2og5hzqiy416yvgebgwuziqk9r2kzvn3r8150kdlaqdr90e9ce25u1u8f7hgpj87d9q7w3nuynp70df8rtj391bc3ebd4t95uq3qndk2nci2hl7egcxtlfkh\",\n \"size\" : 4992665689004320495,\n \"_links\" : {\n \"git\" : \"iwk3v8d9i5b94alpk6z6726qgth5ctz7egk4jcvoinw7eim8f\",\n \"self\" : \"n4t7xu1haiwch7k\",\n \"html\" : \"5pifvt8lh5ldtry6cytybh9\"\n },\n \"html_url\" : \"https://web.example.mocklab.io/997413\",\n \"download_url\" : \"https://web.example.mocklab.io/810986\",\n \"name\" : \"Shandra Frami\",\n \"git_url\" : \"https://web.example.mocklab.io/847120\",\n \"type\" : \"6sydzj9wnwtt2qnwvpwlvqrtsnvpqy4vh2we3ectkv9wk4hqotvlt7g4mjn6djwfp4swzn9y0t2gbyra0tj2oehd8hleh740acg2744wpwvmmo3obm\",\n \"sha\" : \"lt4q\",\n \"content\" : \"Et nihil eligendi blanditiis dignissimos. Molestiae et ut voluptatem nobis voluptas ut. Ex rerum qui quia soluta eius officiis et.\",\n \"url\" : \"https://web.example.mocklab.io/832746\"\n }, {\n \"path\" : \"ofq82kz7mv4b09kbkudbdgakrzcd8699wc51ykwzfjl4or4jwyznr1cforf6ieg6iozas7kbf7t3hm7hb3e\",\n \"size\" : 669216352616356253,\n \"_links\" : {\n \"git\" : \"m8zwn33kf0yqgyay9wx0u3kb21244pqe49l06q6q8mzw92o3bz\",\n \"self\" : \"kweo1opzyqz0e7ebbms2ihd97z1r8zgd7r45vkbp5xmqwgtuoc44b2g25bsrzxrtrqrv7ifzsvap6stnv2rds1finam2n04g2ffsrde2diopnywhguw1alblwas1ivzfe8mq9a9pzozj773a324m9o53w6az2eruab70ds22urn9k2awlgqukqnff2a8squp2i\",\n \"html\" : \"8wlddjwk9unrja2e0nb7f4tygc7z33n2pe6yg045rmedm9sdjrymegkt0ccp6kwebto5s07qnvjlnhmq539lpmnhopjs63vghqd9lt48cjs4m1svltl8i6fkflrzuhox8vobklfdf5w5naw\"\n },\n \"html_url\" : \"https://web.example.mocklab.io/260168\",\n \"download_url\" : \"https://web.example.mocklab.io/868514\",\n \"name\" : \"Krishna Connelly\",\n \"git_url\" : \"https://web.example.mocklab.io/974580\",\n \"type\" : \"0cvdc2y09apo1wjtbcoc9yjmvtiweflo2jhwjec26bj7wqoqfv92mgxks3i31hthd4r6i7kw5vaqwnznrigwpuwr\",\n \"sha\" : \"44hhis69ml2m1qqr3me0r7aercwc9jvk9wqnm2hhsrpxpho5nsvimvofnej8o1xy50tuctm39s78pwdczpwtt9dkd1gj5jjx3bg45fp8xe600tp1n9sj91a909\",\n \"content\" : \"Porro excepturi doloremque soluta repellat. Laborum nesciunt totam maxime vero voluptatem error. Tempore sed cupiditate quasi aliquam et alias enim.\",\n \"url\" : \"https://web.example.mocklab.io/996089\"\n } ],\n \"size\" : 3863555537734715217,\n \"_links\" : {\n \"git\" : \"n0w4w8ulmlt96ma396487ujmzccgj3syqzzfp86fiwo00tqtzqa8roj555ssupaaltkl4369zfeelrrrr1n6v7t26y03qh80gkj2qzfy5cztxtba1ppkbjapacursxug7xo7qup7zfzo9i496gbbkual8bml74rohvoiofbrvemvga3\",\n \"self\" : \"wlsx9xcexis9ihf9ejtoyif\",\n \"html\" : \"znyg1oeyal8siggevwl1dsom09jczugu70gcc58566vhsx65e1poix4a7tm9lgl\"\n },\n \"html_url\" : \"https://web.example.mocklab.io/879698\",\n \"download_url\" : \"https://web.example.mocklab.io/736969\",\n \"name\" : \"Ms. Ivy Barton\",\n \"git_url\" : \"https://web.example.mocklab.io/576997\",\n \"type\" : \"20g5pnf6mg09avvnfob76jebmndq8y04org1mzfuuo6d5s2\",\n \"sha\" : \"9vks01o35r0xsxdj5jzxlv7hm2xnuw3eh6l2cyk27uyqabvd1l0g14di3xd1jfywhp6b90u4mvdq3fx3aeu54oo69ksm1pmowcyo03tq1s08\",\n \"url\" : \"https://web.example.mocklab.io/372623\"\n}", + "headers": { + "Content-Type": "application/vnd.github.v3.object" + } + }, + "uuid": "a3a05879-71f4-4c35-a50d-7948bf58ea3a", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.931878Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/get-content", + "schema": { + "description": "Content Tree", + "properties": { + "_links": { + "properties": { + "git": { + "format": "uri", + "nullable": true, + "type": "string" + }, + "html": { + "format": "uri", + "nullable": true, + "type": "string" + }, + "self": { + "format": "uri", + "type": "string" + } + }, + "required": ["git", "html", "self"], + "type": "object" + }, + "download_url": { + "format": "uri", + "nullable": true, + "type": "string" + }, + "entries": { + "items": { + "properties": { + "_links": { + "properties": { + "git": { + "format": "uri", + "nullable": true, + "type": "string" + }, + "html": { + "format": "uri", + "nullable": true, + "type": "string" + }, + "self": { + "format": "uri", + "type": "string" + } + }, + "required": ["git", "html", "self"], + "type": "object" + }, + "content": { + "type": "string" + }, + "download_url": { + "format": "uri", + "nullable": true, + "type": "string" + }, + "git_url": { + "format": "uri", + "nullable": true, + "type": "string" + }, + "html_url": { + "format": "uri", + "nullable": true, + "type": "string" + }, + "name": { + "type": "string" + }, + "path": { + "type": "string" + }, + "sha": { + "type": "string" + }, + "size": { + "type": "integer" + }, + "type": { + "type": "string" + }, + "url": { + "format": "uri", + "type": "string" + } + }, + "required": [ + "_links", + "git_url", + "html_url", + "download_url", + "name", + "path", + "sha", + "size", + "type", + "url" + ], + "type": "object" + }, + "type": "array" + }, + "git_url": { + "format": "uri", + "nullable": true, + "type": "string" + }, + "html_url": { + "format": "uri", + "nullable": true, + "type": "string" + }, + "name": { + "type": "string" + }, + "path": { + "type": "string" + }, + "sha": { + "type": "string" + }, + "size": { + "type": "integer" + }, + "type": { + "type": "string" + }, + "url": { + "format": "uri", + "type": "string" + } + }, + "required": [ + "_links", + "git_url", + "html_url", + "download_url", + "name", + "path", + "sha", + "size", + "type", + "url", + "content", + "encoding" + ], + "title": "Content Tree", + "type": "object" + } + } + } + }, + "insertionIndex": 740 + }, + { + "id": "5526cd6f-2a3a-4fb5-8ae4-07547372cb21", + "name": "Get repository content (application/json) - response-if-content-is-a-symlink", + "request": { + "urlPath": "/repos/4t12med7m5bzp74yl6lk3bt0eew0fmnrptva69an0g5igufo90jstfbq58dwy2irtmt9baqv9a1ehlf65yc7ezy9h2d891ci221f12xeyzr2vbbuih32m82vjblds5gv7kthcq322biab6fifst0p2gu6w5irf9wdsi78vt3d2boac4483xn7l2s/6xfcenkc8wfej9ety2z45c4owxfd2m7fwkyu5x053ehcwqnt3en9pthtccnn06s4lqbjhi0sakdsw75odjuxm3luz5llee4de3ay7ekrmewh6yowlet7evndpxqrm406i8ypm3dsqoy3z5t2uq7fm5vc439rqtfvlwzw0v5t2ra8kdbjp3dn2h55iv8k71ozkwrs8/contents/41opeairy20xaduhc1j5dzozkgwej4no1a5gaabpw17ab8aa8ks42mkv7xprz5ob3bbklt7oy5o545ipbtsdwgsay6xw5rzf82i4uhu09wx545298qipyyew3vhkpi0qaa5cyu49y9c647a", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 200, + "body": "{\n \"_links\" : {\n \"git\" : \"https://api.github.com/repos/octokit/octokit.rb/git/blobs/452a98979c88e093d682cab404a3ec82babebb48\",\n \"html\" : \"https://github.com/octokit/octokit.rb/blob/master/bin/some-symlink\",\n \"self\" : \"https://api.github.com/repos/octokit/octokit.rb/contents/bin/some-symlink\"\n },\n \"download_url\" : \"https://raw.githubusercontent.com/octokit/octokit.rb/master/bin/some-symlink\",\n \"git_url\" : \"https://api.github.com/repos/octokit/octokit.rb/git/blobs/452a98979c88e093d682cab404a3ec82babebb48\",\n \"html_url\" : \"https://github.com/octokit/octokit.rb/blob/master/bin/some-symlink\",\n \"name\" : \"some-symlink\",\n \"path\" : \"bin/some-symlink\",\n \"sha\" : \"452a98979c88e093d682cab404a3ec82babebb48\",\n \"size\" : 23,\n \"target\" : \"/path/to/symlink/target\",\n \"type\" : \"symlink\",\n \"url\" : \"https://api.github.com/repos/octokit/octokit.rb/contents/bin/some-symlink\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "5526cd6f-2a3a-4fb5-8ae4-07547372cb21", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.892847Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/get-content", + "schema": { + "oneOf": [ + { + "$ref": "#/components/schemas/content-directory" + }, + { + "$ref": "#/components/schemas/content-file" + }, + { + "$ref": "#/components/schemas/content-symlink" + }, + { + "$ref": "#/components/schemas/content-submodule" + } + ] + } + } + } + }, + "insertionIndex": 741 + }, + { + "id": "b832b00f-568d-4cc7-8b43-ab727cba94e6", + "name": "Get repository content (application/json) - response-if-content-is-a-submodule", + "request": { + "urlPath": "/repos/8my7ublsr95jvz0bgvmkugqfk2t6d3di3c36vzkhmgilrnfv3zqj7lh3txrs6u/79pkc02186xi73e1u18s1s6dcjedz7lik6ruy83w8ea2ih9ygjiyiiu7s0ly021mh28un4u2huwpmbwuwihtn0ma7raz2vvvp82bdybumxrig8mp68mbwfy4swvmdrzx507j2g3pwoarpqckugtoloebgardmcz5xb5od0ydfy/contents/rf7zvq6jetjzn9oj2g9voalnsftsktpamiodbrbrn85cnfm8nhqyu8uvtsafi91fv1if20szmwa1nwefc8zk3mc1n88wq61xxl3p16qc", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 200, + "body": "{\n \"_links\" : {\n \"git\" : \"https://api.github.com/repos/jquery/qunit/git/trees/6ca3721222109997540bd6d9ccd396902e0ad2f9\",\n \"html\" : \"https://github.com/jquery/qunit/tree/6ca3721222109997540bd6d9ccd396902e0ad2f9\",\n \"self\" : \"https://api.github.com/repos/jquery/jquery/contents/test/qunit?ref=master\"\n },\n \"git_url\" : \"https://api.github.com/repos/jquery/qunit/git/trees/6ca3721222109997540bd6d9ccd396902e0ad2f9\",\n \"html_url\" : \"https://github.com/jquery/qunit/tree/6ca3721222109997540bd6d9ccd396902e0ad2f9\",\n \"name\" : \"qunit\",\n \"path\" : \"test/qunit\",\n \"sha\" : \"6ca3721222109997540bd6d9ccd396902e0ad2f9\",\n \"size\" : 0,\n \"submodule_git_url\" : \"git://github.com/jquery/qunit.git\",\n \"type\" : \"submodule\",\n \"url\" : \"https://api.github.com/repos/jquery/jquery/contents/test/qunit?ref=master\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "b832b00f-568d-4cc7-8b43-ab727cba94e6", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.892782Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/get-content", + "schema": { + "oneOf": [ + { + "$ref": "#/components/schemas/content-directory" + }, + { + "$ref": "#/components/schemas/content-file" + }, + { + "$ref": "#/components/schemas/content-symlink" + }, + { + "$ref": "#/components/schemas/content-submodule" + } + ] + } + } + } + }, + "insertionIndex": 742 + }, + { + "id": "e0d2e987-1630-408b-b6cb-a410aecc5823", + "name": "Get repository content (application/json) - response-if-content-is-a-file", + "request": { + "urlPath": "/repos/v3trl3rz4gi20jf6j0chhfo6jcjwrabzidnclqe8i/5vcajxwuky9v3lgesfjom44yd9w67sapwkf4napnhx853rh8ccr070gbjp8o03axmpggyhlcqwy2ygd6ximp9cheycp8ajv07iue0vfq9s7mtogvmnhmk92s7abmzplnuzz71zs5tlyh94nlop0n/contents/9adg0fbc8qha4gdpa40u0qh2l5qpetqf9bu28664bi31b8i6zu42d96ab1wtkwpphva1oi8k47y31j8nvtliqc30bw8tms7edn6mps3wxdlzkhj1cqs1cmn8f9znvhw7ph0t3otx4ug2g6rl4w04elcuqo09zafz50bdhv75ghk4ytvahbxv", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 200, + "body": "{\n \"_links\" : {\n \"git\" : \"https://api.github.com/repos/octokit/octokit.rb/git/blobs/3d21ec53a331a6f037a91c368710b99387d012c1\",\n \"html\" : \"https://github.com/octokit/octokit.rb/blob/master/README.md\",\n \"self\" : \"https://api.github.com/repos/octokit/octokit.rb/contents/README.md\"\n },\n \"content\" : \"encoded content ...\",\n \"download_url\" : \"https://raw.githubusercontent.com/octokit/octokit.rb/master/README.md\",\n \"encoding\" : \"base64\",\n \"git_url\" : \"https://api.github.com/repos/octokit/octokit.rb/git/blobs/3d21ec53a331a6f037a91c368710b99387d012c1\",\n \"html_url\" : \"https://github.com/octokit/octokit.rb/blob/master/README.md\",\n \"name\" : \"README.md\",\n \"path\" : \"README.md\",\n \"sha\" : \"3d21ec53a331a6f037a91c368710b99387d012c1\",\n \"size\" : 5362,\n \"type\" : \"file\",\n \"url\" : \"https://api.github.com/repos/octokit/octokit.rb/contents/README.md\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "e0d2e987-1630-408b-b6cb-a410aecc5823", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.892719Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/get-content", + "schema": { + "oneOf": [ + { + "$ref": "#/components/schemas/content-directory" + }, + { + "$ref": "#/components/schemas/content-file" + }, + { + "$ref": "#/components/schemas/content-symlink" + }, + { + "$ref": "#/components/schemas/content-submodule" + } + ] + } + } + } + }, + "insertionIndex": 743 + }, + { + "id": "37fc6bec-86bc-493f-9016-50bcc7274513", + "name": "Get repository content (application/json) - response-if-content-is-a-directory", + "request": { + "urlPath": "/repos/0jdiepk2ab3k3xd9m0vam056556xws1y2fmxj3orcyaz6xg7nrzsuo9rv24e4unvvfqnf0eqnb0n2a8jex8sc6jwkjc9yveggwt94cka25qqj7lq5ulooyqtvsdlraoe4iuxkjxsqysh61lgn6cuqbyiwx4lfvkon/hwcl5o2u1apfq9db8njgv/contents/rlh1oxz3qo2ww0hjxm443zvqqgipxqu5vlbpl1ralkxp87c45vi2iojl3s7c9vb7hnp2286cpmbstio9wcr7quodca58o5v67k2pb6y6ww29nt17zpwfog3815sgxxyyjn34o1uf5wkhl7edlaf3smhzv4zs2rsq7n65b06pws530t", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 200, + "body": "[ {\n \"_links\" : {\n \"git\" : \"https://api.github.com/repos/octokit/octokit.rb/git/blobs/fff6fe3a23bf1c8ea0692b4a883af99bee26fd3b\",\n \"html\" : \"https://github.com/octokit/octokit.rb/blob/master/lib/octokit.rb\",\n \"self\" : \"https://api.github.com/repos/octokit/octokit.rb/contents/lib/octokit.rb\"\n },\n \"download_url\" : \"https://raw.githubusercontent.com/octokit/octokit.rb/master/lib/octokit.rb\",\n \"git_url\" : \"https://api.github.com/repos/octokit/octokit.rb/git/blobs/fff6fe3a23bf1c8ea0692b4a883af99bee26fd3b\",\n \"html_url\" : \"https://github.com/octokit/octokit.rb/blob/master/lib/octokit.rb\",\n \"name\" : \"octokit.rb\",\n \"path\" : \"lib/octokit.rb\",\n \"sha\" : \"fff6fe3a23bf1c8ea0692b4a883af99bee26fd3b\",\n \"size\" : 625,\n \"type\" : \"file\",\n \"url\" : \"https://api.github.com/repos/octokit/octokit.rb/contents/lib/octokit.rb\"\n}, {\n \"_links\" : {\n \"git\" : \"https://api.github.com/repos/octokit/octokit.rb/git/trees/a84d88e7554fc1fa21bcbc4efae3c782a70d2b9d\",\n \"html\" : \"https://github.com/octokit/octokit.rb/tree/master/lib/octokit\",\n \"self\" : \"https://api.github.com/repos/octokit/octokit.rb/contents/lib/octokit\"\n },\n \"git_url\" : \"https://api.github.com/repos/octokit/octokit.rb/git/trees/a84d88e7554fc1fa21bcbc4efae3c782a70d2b9d\",\n \"html_url\" : \"https://github.com/octokit/octokit.rb/tree/master/lib/octokit\",\n \"name\" : \"octokit\",\n \"path\" : \"lib/octokit\",\n \"sha\" : \"a84d88e7554fc1fa21bcbc4efae3c782a70d2b9d\",\n \"size\" : 0,\n \"type\" : \"dir\",\n \"url\" : \"https://api.github.com/repos/octokit/octokit.rb/contents/lib/octokit\"\n} ]", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "37fc6bec-86bc-493f-9016-50bcc7274513", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.892654Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/get-content", + "schema": { + "oneOf": [ + { + "$ref": "#/components/schemas/content-directory" + }, + { + "$ref": "#/components/schemas/content-file" + }, + { + "$ref": "#/components/schemas/content-symlink" + }, + { + "$ref": "#/components/schemas/content-submodule" + } + ] + } + } + } + }, + "insertionIndex": 744 + }, + { + "id": "3707bad8-10f0-4d9b-9b06-8d88640a1e1e", + "name": "Delete a file", + "request": { + "urlPath": "/repos/xlxa/nrbk2kdg18lo9lbp681wvjpp726dp6tubb6bfkpaftl9j0acxiu85ciuntfgegll3b2dvjgvm3my5tnbrhylkn4orfucqonmcqf1frj73eyncev38xt214cs6wumknn1lhxkij5u2/contents/l3xe70r09i8ge4ekavkjx6", + "method": "DELETE" + }, + "response": { + "status": 503, + "body": "{\n \"code\" : \"4h0f4u6xvn4vlzx4cen75eia6m2l08g36zccnxmautzh8pohsfjuzp6g114n16x6sp1n58qyiwx3jgwj\",\n \"documentation_url\" : \"https://web.example.mocklab.io/848793\",\n \"message\" : \"Molestias incidunt iste omnis non facilis et. Ex quam praesentium. Dolores eligendi cum. Tempora aut ad. Aliquid perspiciatis quam perspiciatis expedita numquam eligendi.\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "3707bad8-10f0-4d9b-9b06-8d88640a1e1e", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.892561Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/delete-file", + "schema": { + "properties": { + "code": { + "type": "string" + }, + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "type": "object" + } + } + } + }, + "insertionIndex": 745 + }, + { + "id": "4f2fc725-8087-4970-80d5-cc1a005b8c84", + "name": "Delete a file", + "request": { + "urlPath": "/repos/pk2sfyhuf6c5dkpouhsqvr7u6c6bcasxxp7jxp0ig2qn25htpyw429oiam4v55l482so07bcsklt9vxtqp5yiw6/hq67rmsn9em1f/contents/djun2dzcz4zmuq6gps3adryqmu7adzri1b1xvse7t2i5eabxonkwcav9fyoozg6ismp0pve377ivfahjpi85hjjzb5w3wlt4b25m63iwgbwgdou3y8xbsi1vwaof4l8uk86p3acl3dj0cqkc5amxgbn28zogmjj7mj7yoqv2lywaza9iisxu72gnmgfpb5qk", + "method": "DELETE" + }, + "response": { + "status": 422, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/827888\",\n \"message\" : \"Maxime vitae qui culpa dignissimos possimus similique voluptas. Ut repudiandae qui dolores sunt ea veniam maiores. Qui unde hic sed. Autem eius ratione ducimus.\",\n \"errors\" : [ {\n \"code\" : \"hzurteyi8z854crwijilnxy4vmg77rhs60rj2s12ye2aoewck95mbqk5m5wk8y9b7kw2zk100m2kx2jzj8l\",\n \"field\" : \"nu9n9fgvzmxylr8mcppn0ldlk2rgzv3ft6uw3whh82f0lu9xrcxescdcotq9nx1iifxd6fcug8o3uo2yzdtrvz86ucrkk3oq928c33cjtd9lu5cifvnci7ioyctkgboejrx34elm89eo0wpzk05fo\",\n \"resource\" : \"ij1cimqxtetpzu0yf2d281t6yh4ywlfh4tah7\",\n \"index\" : 5667764559722873700,\n \"message\" : \"Consequatur aut delectus inventore sunt fuga sed nobis. Ipsum aliquid et ut quos tempore omnis. Quod velit laboriosam quae.\",\n \"value\" : { }\n }, {\n \"code\" : \"sy0fvwzpm3oz288epos1llejgriw7vs7zk1b4als2omxe9wtdcijdiab80qunly5gymzoq7t1uq0mi5m6onqt2dqjre3l4b09uzmrbykfzb3bswnzumus1dazp59po9j4i4ptqi5a\",\n \"field\" : \"30ayc5t9ym7fnjaglxgmorip8c5v\",\n \"resource\" : \"nx7kb2drqwgmwjb7ju5cn9yfrhtnk887v60vb64nhbktcoju5qyhrta7w0yisn5hc5eewzh12179p6v8h2fmuc2jl6bz4n001fu89q043i8kwfl4wnkdzjaidxtqzujjysosj9mga8c7hun35wwcvgdgo2gr3uwmsr3n6exqzlab0jjkoirgqh9qukr1ua1q2dkeq0zt\",\n \"index\" : 158246330754821259,\n \"message\" : \"Error maxime nisi. Provident voluptates ea sunt vel et. Qui aspernatur consectetur in et. Occaecati asperiores eum totam. Omnis delectus ipsa delectus quas commodi labore.\",\n \"value\" : { }\n }, {\n \"code\" : \"p0fpx1or6gwemh4039oa5hboi3dd7dyl61r09jcq7dky60qxqtvy07s3rha3893fcqcgszm6k83ba6vwz5rp3d5pqjacqdd099mrhgbn3y2xl685yv22sznuxxiwz\",\n \"field\" : \"mp4i8ez0b2qfm9katfofeginx4elhqcwy402oe3y4hvq2bpmwbghnyp5btey4rolkkumhsz\",\n \"resource\" : \"zm7fxa8ao4dnj6hni6lt0mpi86z7ap949ijx8r5r9wbc3fow0octb5c2pn5crvt5wfbr8tbi3z1a1qfbk2uidm299h9cfg5p6erx1zh\",\n \"index\" : 8242849985932630721,\n \"message\" : \"Delectus error omnis adipisci in quis repellat debitis. Dicta eos sed suscipit. Reiciendis possimus quaerat voluptatum praesentium architecto sed. Dolores omnis dolorum perferendis. Eos repellat et et\",\n \"value\" : { }\n }, {\n \"code\" : \"r9tp27xqk2fyfzsumb8bbp33nxohgymht3r5bzkkchw280vhb\",\n \"field\" : \"yjih36exepbuw0rwysa4j6beoowxcw27ou3phtqkl1p5\",\n \"resource\" : \"ukwf3e0lario2rl4vul4o71odbj6ytp4j07noz6px94ds4t8\",\n \"index\" : 4002972276547659286,\n \"message\" : \"Et praesentium corrupti amet. Minima qui et rerum veritatis voluptates et eligendi. Cupiditate laboriosam voluptas inventore.\",\n \"value\" : { }\n }, {\n \"code\" : \"hx387hccgfsq95jtokrw0foi45j1epe0waag3p1yl6r3lv0th56pooqyya9914q0mon6\",\n \"field\" : \"8a5bo8u1vvw5d4fyjwq8apcnhc41ih5h8xafi3f4zbo6l9mkgl9k6g23\",\n \"resource\" : \"9gb8fjaxjdlab6r4bce9nq2nci3v3re9p2dd11z8ltfphhkxebfi91rdkol527r1cbac144vyj97jmz1hixs0shzesh0bizxc2l5jb5j99ngvdlzvaoe7\",\n \"index\" : 8927094437768892860,\n \"message\" : \"Qui velit tempora voluptate ab pariatur et. Minus sed voluptatem aut cupiditate dolore minima. Ex tempora voluptatem assumenda consequuntur reprehenderit totam.\",\n \"value\" : { }\n } ]\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "4f2fc725-8087-4970-80d5-cc1a005b8c84", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.892366Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/delete-file", + "schema": { + "description": "Validation Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "errors": { + "items": { + "properties": { + "code": { + "type": "string" + }, + "field": { + "type": "string" + }, + "index": { + "type": "integer" + }, + "message": { + "type": "string" + }, + "resource": { + "type": "string" + }, + "value": { + "oneOf": [ + { + "nullable": true, + "type": "string" + }, + { + "nullable": true, + "type": "integer" + }, + { + "items": { + "type": "string" + }, + "nullable": true, + "type": "array" + } + ] + } + }, + "required": ["code"], + "type": "object" + }, + "type": "array" + }, + "message": { + "type": "string" + } + }, + "required": ["message", "documentation_url"], + "title": "Validation Error", + "type": "object" + } + } + } + }, + "insertionIndex": 746 + }, + { + "id": "2ee52226-f668-45d9-8041-4f0c154a114d", + "name": "Delete a file", + "request": { + "urlPath": "/repos/qnrtaxn3wq3t2povyml8bvpd92uz1tl5d/38o0030qa3b7h2httfqy6yfdhsky3esks8cpwprme64uatmaxwo7oes8u2fuyisx536x5ckc0hacd361j5q4xt651qbjl2h7m8upzh7vjb4epid683gml4sy4z3b9qnxb83rmikjj50048ku3q9d7xx36un0jvfgpz14hxfpcu6ikop4/contents/3rkb0depcq4n0kv1g5wl9nazh58jz55bcobmqmzjfu4oy6mmm9iykmv385ovzoq3ts9emfweyqhne1meiu362redh7hpp3yntjwe70qa2ru7xks8bkcso1f7t728bwic8247b9jn3w988wz8xkhcqdqc7qct6hdkzvysomt53d7zx5mdlxyv87z0fznr6na85x", + "method": "DELETE" + }, + "response": { + "status": 409, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/215412\",\n \"message\" : \"Molestiae laudantium ad consectetur minima atque sunt qui. Nulla repellat harum reiciendis. Consequatur consequatur similique atque quia. Eaque dolorem dolor est quod quos mollitia. Ut excepturi eveni\",\n \"url\" : \"https://web.example.mocklab.io/207397\",\n \"status\" : \"85bedrfpj7ikbuafly9todzhio5hf2nsh8h3f5k32gpxxu36dmyi1jchx2bp2xab9j9do58xiv3dg10n6lajj2mbp26jy1qfkqae0z9csaslnn8p7qmwv5tkntixwablt121zkl8uqkr9cb1t0qajk307za9gxhc0\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "2ee52226-f668-45d9-8041-4f0c154a114d", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.89172Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/delete-file", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 747 + }, + { + "id": "0da1740f-e63e-4ffc-816a-6517f540dbb7", + "name": "Delete a file", + "request": { + "urlPath": "/repos/73ctqpuky5j5myhjbe0lgnuhdc010e3x1kvwpiefyzwsxqqx5jqb8cvucqiv8bthwxv7ggiqdulvbk1oni7zm8bl00mwbrm9izyx336uf743hgq4g405vflusla4tg7j8ynoyoferu2k464uxpxh2912e6zbzwzdxpx2tts3quf69v79ucmib708fyd/lzwgiqfqr4ycs9665is9jvfbbnodhmgfhspvxx166p852n1fjb1wnzt5rlafe6y26x046b4s5tnoqdfuufoe6fuvdvaxqa0679bxkz1qfg9ttycn9j8f8nozhzg234jemi8fb8smd94sxiqnpusbhfg7yerndj3vcctpscnnj8/contents/g2v2e56pzfs3wzvix0", + "method": "DELETE" + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/327378\",\n \"message\" : \"Sit neque doloribus sint provident repellat et. Enim et omnis et vel. Facere enim eum qui. Voluptate explicabo cupiditate. Voluptatum quam perspiciatis impedit dolorem et aut.\",\n \"url\" : \"https://web.example.mocklab.io/436432\",\n \"status\" : \"41xb9xqhmic4qr\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "0da1740f-e63e-4ffc-816a-6517f540dbb7", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.891475Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/delete-file", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 748 + }, + { + "id": "625d45bb-91c1-4f65-80f9-48a4511dd51f", + "name": "Delete a file - default", + "request": { + "urlPath": "/repos/m0rx7k7ag6kn45hp5lzke8zzkxe5zj3th0x1znexoosy333ahz82wtgbfio7ftq7vua2cjj1fihz5p7lqml6txexv880nb1hf6p7ulmqml11cd6mfwk2da6me6u4zzlj6vo621ipxby5a8n24pfw57ur65qd8/slnmjyjbsmuz8mvt505a1jtstc55yjxs7s52kx36bsb08v1cngdrr4m36ce3hijemytxl4i97jekslvf8l/contents/o29jwprwb26fqa8eb39wbfs", + "method": "DELETE" + }, + "response": { + "status": 200, + "body": "{\n \"commit\" : {\n \"author\" : {\n \"date\" : \"2014-11-07T22:01:45Z\",\n \"email\" : \"octocat@github.com\",\n \"name\" : \"Monalisa Octocat\"\n },\n \"committer\" : {\n \"date\" : \"2014-11-07T22:01:45Z\",\n \"email\" : \"octocat@github.com\",\n \"name\" : \"Monalisa Octocat\"\n },\n \"html_url\" : \"https://github.com/octocat/Hello-World/git/commit/7638417db6d59f3c431d3e1f261cc637155684cd\",\n \"message\" : \"my commit message\",\n \"node_id\" : \"MDY6Q29tbWl0NzYzODQxN2RiNmQ1OWYzYzQzMWQzZTFmMjYxY2M2MzcxNTU2ODRjZA==\",\n \"parents\" : [ {\n \"html_url\" : \"https://github.com/octocat/Hello-World/git/commit/1acc419d4d6a9ce985db7be48c6349a0475975b5\",\n \"sha\" : \"1acc419d4d6a9ce985db7be48c6349a0475975b5\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/git/commits/1acc419d4d6a9ce985db7be48c6349a0475975b5\"\n } ],\n \"sha\" : \"7638417db6d59f3c431d3e1f261cc637155684cd\",\n \"tree\" : {\n \"sha\" : \"691272480426f78a0138979dd3ce63b77f706feb\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/git/trees/691272480426f78a0138979dd3ce63b77f706feb\"\n },\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/git/commits/7638417db6d59f3c431d3e1f261cc637155684cd\",\n \"verification\" : {\n \"reason\" : \"unsigned\",\n \"verified\" : false\n }\n }\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "625d45bb-91c1-4f65-80f9-48a4511dd51f", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.891224Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/delete-file", + "schema": { + "description": "File Commit", + "properties": { + "commit": { + "properties": { + "author": { + "properties": { + "date": { + "type": "string" + }, + "email": { + "type": "string" + }, + "name": { + "type": "string" + } + }, + "type": "object" + }, + "committer": { + "properties": { + "date": { + "type": "string" + }, + "email": { + "type": "string" + }, + "name": { + "type": "string" + } + }, + "type": "object" + }, + "html_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "node_id": { + "type": "string" + }, + "parents": { + "items": { + "properties": { + "html_url": { + "type": "string" + }, + "sha": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "sha": { + "type": "string" + }, + "tree": { + "properties": { + "sha": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "type": "object" + }, + "url": { + "type": "string" + }, + "verification": { + "properties": { + "payload": { + "nullable": true, + "type": "string" + }, + "reason": { + "type": "string" + }, + "signature": { + "nullable": true, + "type": "string" + }, + "verified": { + "type": "boolean" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "content": { + "nullable": true, + "properties": { + "_links": { + "properties": { + "git": { + "type": "string" + }, + "html": { + "type": "string" + }, + "self": { + "type": "string" + } + }, + "type": "object" + }, + "download_url": { + "type": "string" + }, + "git_url": { + "type": "string" + }, + "html_url": { + "type": "string" + }, + "name": { + "type": "string" + }, + "path": { + "type": "string" + }, + "sha": { + "type": "string" + }, + "size": { + "type": "integer" + }, + "type": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "type": "object" + } + }, + "required": ["content", "commit"], + "title": "File Commit", + "type": "object" + } + } + } + }, + "insertionIndex": 749 + }, + { + "id": "59832129-3a9d-47fc-9d94-5b9257f4ba9f", + "name": "Create a content attachment (application/json)", + "request": { + "urlPath": "/repos/l2iv51dwi1hdcxbs9eklmlqwkuj5diliozssoyymd7osp6r8lbm7w7z62pan28m4jbzs0yoqy7dub0u2skruacpgapm8v4wzmirjgq5j4kxlnd0yt9syi1yl2b22k3rutwmhdfoub03whg55ws9mdggi26rmgyjm9/r0is4hlh29ogbet5pm6xtrptuh3az31vvm8x22h18o0h6pzbxsqpdvvef88jnvgzkxzyxn9gt/content_references/7782913641701897218/attachments", + "method": "POST", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 422, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/994799\",\n \"message\" : \"Laboriosam consequatur autem exercitationem illum delectus enim architecto. Distinctio architecto delectus nostrum nihil. Est quam voluptas quas enim.\",\n \"errors\" : [ {\n \"code\" : \"xzk6z00rq5nqu4yxo4fburlw56c2o1xyc260qqu15jof3anc04nlqpeq71y70eet58wqncfvkordr7f04ld0d7c6y5n6nl6jhccktgkq1ksj89bl5py5qyocvuscra0sgm4p8n00f0ixva47yeybjqtoyp0wulg4xj4974avb6y\",\n \"field\" : \"jxixx8bqsoawujdd1f2if4ctfz5ey2qllhf8fapnbham62xyznnrv7ai4\",\n \"resource\" : \"21gt98dljjzzuv2yn8l9g00z9rj4seqc4cnaxfedek8qraa1namre7mf19tu79i42ruzfgearo7zd3jjtsx066pdrnl3b4ck942skntvllzlqysy15zrillvh26nisc8wy\",\n \"index\" : 6019165447716426628,\n \"message\" : \"Quia aut saepe aut sint molestiae rerum. Vel ut neque excepturi maxime. Et molestiae est nulla. Quo vitae et. A rem facilis repellendus voluptatum.\",\n \"value\" : { }\n } ]\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "59832129-3a9d-47fc-9d94-5b9257f4ba9f", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.890777Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "apps/create-content-attachment", + "schema": { + "description": "Validation Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "errors": { + "items": { + "properties": { + "code": { + "type": "string" + }, + "field": { + "type": "string" + }, + "index": { + "type": "integer" + }, + "message": { + "type": "string" + }, + "resource": { + "type": "string" + }, + "value": { + "oneOf": [ + { + "nullable": true, + "type": "string" + }, + { + "nullable": true, + "type": "integer" + }, + { + "items": { + "type": "string" + }, + "nullable": true, + "type": "array" + } + ] + } + }, + "required": ["code"], + "type": "object" + }, + "type": "array" + }, + "message": { + "type": "string" + } + }, + "required": ["message", "documentation_url"], + "title": "Validation Error", + "type": "object" + } + } + } + }, + "insertionIndex": 750 + }, + { + "id": "f0f2e684-65ca-4691-9ac9-cbf99daeefed", + "name": "Create a content attachment (application/json)", + "request": { + "urlPath": "/repos/zgqfeee2l54whj0fyr1hy5ctgyovu1f6p8uw6n6pzofs8jvov8/51x876fol117nasbsu8wqkii4rp625knhcqvkdp5soxlj04n6cjlx1wa93cc6bwpb746ie8hpejtfkyk5nlxoedkv0yvuediv47nyc4hxcugt7nivjuknuefygcmstem08ipxnyw3mr4rzdg4hhyiyivddlx35oc7ze154t74sa3or23hrbz1d5uc9nk25qh/content_references/2397770337076227602/attachments", + "method": "POST", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 415, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/387343\",\n \"message\" : \"Vitae ut iusto possimus maiores qui cumque ut. Laudantium esse ad. Consequatur ducimus iste dolorum id nam. Tempore qui temporibus.\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "f0f2e684-65ca-4691-9ac9-cbf99daeefed", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.890355Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "apps/create-content-attachment", + "schema": { + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": ["message", "documentation_url"], + "type": "object" + } + } + } + }, + "insertionIndex": 751 + }, + { + "id": "8ee21c6d-ad6e-4a93-9fcf-5ee19f92a44f", + "name": "Create a content attachment (application/json)", + "request": { + "urlPath": "/repos/xhgyfiz88ikhwhqfxews4b5xfxkogeznhucmygvnpuzw923pr1xc0g13ztp/ma55bgzu9fgrsoxxzhju68dl/content_references/6383268282793866133/attachments", + "method": "POST", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 410, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/613083\",\n \"message\" : \"Esse atque vero excepturi. Sed vel soluta et dicta eum. Sed modi reiciendis perspiciatis. Molestiae dolor magnam qui minima vero. Occaecati dolores illo aut qui ut placeat.\",\n \"url\" : \"https://web.example.mocklab.io/381961\",\n \"status\" : \"itfkg9uyexxmx4t0xpnx6tc7cdqb0bxqb722oz614oucnujxurpjtoybxs5l654dkmzoerafyxfmepawu0yax1iqzb850fp8seu2fjjftfjia6jn9z4gs6cai95ws\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "8ee21c6d-ad6e-4a93-9fcf-5ee19f92a44f", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.890179Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "apps/create-content-attachment", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 752 + }, + { + "id": "f8cca544-5939-487a-aae7-b0833b321678", + "name": "Create a content attachment (application/json)", + "request": { + "urlPath": "/repos/ja69x5c6sof3olxd01fz07oqeaej36dn8miqrixr59xoxt2drwtrwyu0xpzuze/nbwc8zvzv28gnviq3rr/content_references/7700362419368882982/attachments", + "method": "POST", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/711209\",\n \"message\" : \"Eveniet quia inventore sapiente voluptate dolorum quam magni. Quidem et aut illum. Aut unde optio iste rerum. Velit sequi voluptate tenetur ut nihil. Quo reiciendis qui.\",\n \"url\" : \"https://web.example.mocklab.io/427024\",\n \"status\" : \"r2igia9iqjdwg7kqz5e25kt4p98xofg6c3ab8l4upmiikh9200y8fbmmdl6o3nzyzb09ppvrv8j430e9t8sjspo3a2jhbuonzs924ulpwm39pkk9i162mdvunpx4\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "f8cca544-5939-487a-aae7-b0833b321678", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.889935Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "apps/create-content-attachment", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 753 + }, + { + "id": "a9b27d0e-3784-464e-a26f-9350c5a812e2", + "name": "Create a content attachment (application/json)", + "request": { + "urlPath": "/repos/hk3ck34hx8kthe27vzoslyvdccplrith6rjo2dnbo3kmv0i73qt7g61kg9fo1tq93nipagyghutkdx0divbrhh6mfk34a1xlc9l811dqbi9aekusyl3ao9opl9poeh3w13upx0n0mqzaor/7fnxj4muueihg3ef8ppfv6vm0hncz93ph92gpie3ha5khi91dbt8mhoh2/content_references/7031366944240059542/attachments", + "method": "POST", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 403, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/450271\",\n \"message\" : \"Dolorem animi distinctio maiores. Ex eveniet rerum ut ad et. Tempore in officiis.\",\n \"url\" : \"https://web.example.mocklab.io/858609\",\n \"status\" : \"ut40dza1kw8tmle1kwyci9i3b97o0cu031jf1kzgip83ewncrlv03o9aghuk6z7xe89prj2sjhv71o0kyyit\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "a9b27d0e-3784-464e-a26f-9350c5a812e2", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.889691Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "apps/create-content-attachment", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 754 + }, + { + "id": "62357f29-f34a-4081-9b15-ccc62073415f", + "name": "Create a content attachment - 304", + "request": { + "urlPath": "/repos/q5idx6jc5jmm6mj5qbzi87ku4zh8da7ipae9svn4w5yh8rrgdq5yyxsm9sm3kcq9kloe2jk902ep75u5um5dqkotanqtmh6c5rvzoqnyykmz9iobnr21r80i2kzzrc66rv001s8wa9yh1g4/2g49cp874wpiftz19nkafs9x8msfqyp2bwnbftye7tk9xgxo7ow1uqfc56u82ktd17hpvu5d2o6toqoo1zs70zk9qw9ol7xzk4gvvo9dnkj/content_references/1281191805498814289/attachments", + "method": "POST" + }, + "response": { + "status": 304 + }, + "uuid": "62357f29-f34a-4081-9b15-ccc62073415f", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.889367Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "apps/create-content-attachment" + } + } + }, + "insertionIndex": 755 + }, + { + "id": "1866824d-ed38-4a02-98dc-bbc866ece24d", + "name": "Create a content attachment (application/json) - default", + "request": { + "urlPath": "/repos/bbigoaehfcnntse39wioj1gmgjqny0i4qoa4m6y42ya32qmxak0cm7oe96wimmzl8v5lk3k2xvwp9r2yzobiz093vmo4g9ykultapdhfj7ydbphwhkajagf5vo4608btex/hjr7ho5juqdenddpmjeezt3g3wjppr0c0e4fz177nzw7fgd8smzkvpzmz3m9rrj/content_references/5306217645347106857/attachments", + "method": "POST", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 200, + "body": "{\n \"body\" : \"You have used an email that already exists for the user_email_uniq field.\\n ## DETAILS:\\n\\nThe (email)=(Octocat@github.com) already exists.\\n\\n The error was found in core/models.py in get_or_create_user at line 62.\\n\\n self.save()\",\n \"id\" : 101,\n \"title\" : \"[A-1234] Error found in core/models.py file'\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "1866824d-ed38-4a02-98dc-bbc866ece24d", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.889317Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "apps/create-content-attachment", + "schema": { + "description": "Content Reference attachments allow you to provide context around URLs posted in comments", + "properties": { + "body": { + "description": "The body of the attachment", + "example": "Body of the attachment", + "maxLength": 262144, + "type": "string" + }, + "id": { + "description": "The ID of the attachment", + "example": 21, + "type": "integer" + }, + "node_id": { + "description": "The node_id of the content attachment", + "example": "MDE3OkNvbnRlbnRBdHRhY2htZW50MjE=", + "type": "string" + }, + "title": { + "description": "The title of the attachment", + "example": "Title of the attachment", + "maxLength": 1024, + "type": "string" + } + }, + "required": ["id", "title", "body"], + "title": "ContentReferenceAttachment", + "type": "object" + } + } + } + }, + "insertionIndex": 756 + }, + { + "id": "4e0cc8c6-55e6-43c5-ac2f-3f59b805c754", + "name": "Compare two commits", + "request": { + "urlPath": "/repos/ao5hcmakl9yx21g67qmch6vi4llu083pozjaayvomnxy6phxb0zgexvb6ne2q8u62212zp7spxuaee3slw8xsiw6bn/575zo3npz/compare/e14sxfko1qdwr2vz", + "method": "GET" + }, + "response": { + "status": 500, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/279804\",\n \"message\" : \"Officia omnis ut. Labore dicta commodi culpa officiis quo. Nulla et sint aut debitis. Atque quibusdam aut nobis.\",\n \"url\" : \"https://web.example.mocklab.io/777735\",\n \"status\" : \"u9h2r6jq8x12l8oyjm29tuaiqzitvbjv0zjzzgumy16ybmu61otqxv5t3o3pn0yz079shepdjo4ff7wb87b4wd97liks3j0qjx85rm7tjis\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "4e0cc8c6-55e6-43c5-ac2f-3f59b805c754", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.889193Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/compare-commits", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 757 + }, + { + "id": "a51992b9-941b-45cc-9e4e-54909767b9a5", + "name": "Compare two commits", + "request": { + "urlPath": "/repos/28cyy9s88mjjrgpq350uxda0w7187jsuduohj38voax4mzdcdcegqxghqk445/q9rz19nkzradnibf3vrs3rxmwn5nn/compare/nz3fmnc4wks8n3pu5zq84c1r6c2ow7syiyjzm75cwjhsismh8g0zhnifi5483jrxrk3lvyy5wvs84pz5soo7k77tbglmdykyvlpwuzl1w9h98m0q89r", + "method": "GET" + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/653787\",\n \"message\" : \"Ut modi est quibusdam. Et qui fugit voluptatem est laborum. Quis vel totam. Itaque provident odit harum eos sint ad quae. Similique aperiam sint omnis omnis illum.\",\n \"url\" : \"https://web.example.mocklab.io/636585\",\n \"status\" : \"nhm4zr3dlak2du2hff61afks766ovdntwuyelzdchgzoh7uzazn07knfxmquggz1q24r68mbz7pdstgr0bzkrz2cf4v9lchuo4ozlfgguhdj9j6l4ojl96xq8v46u4wnnhsxc3pzye0wju\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "a51992b9-941b-45cc-9e4e-54909767b9a5", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.888962Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/compare-commits", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 758 + }, + { + "id": "dc5680a3-8a0d-48dc-908a-d5ed2f89b3e1", + "name": "Compare two commits - default", + "request": { + "urlPath": "/repos/jpg2lafl0lazs5tn1f5ywym9hqu8n6qmjjchuxb1auult5kp1ds4oni64iafwq9chfs2bpwxs5s2bnc930aermdje6insqd6fpweck/dzjytk43k3lizl8pc0fstemot1roxntxhtmw0qftem6gapar5v822ilrzexixpmpsu5v5xz2l/compare/nguqfpw7n7w7me09qubz0ag2aaljsy2wfcd899hr252bwiw9voccz7ltmktojtryll5oi4e87pxr9uyveon2utk0268zmabln2xc8qghauymgpi7gn1o87uq10r36ao8inpebnvobxo15x8h2spz6vrj5w", + "method": "GET" + }, + "response": { + "status": 200, + "body": "{\n \"ahead_by\" : 1,\n \"base_commit\" : {\n \"author\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"comments_url\" : \"https://api.github.com/repos/octocat/Hello-World/commits/6dcb09b5b57875f334f61aebed695e2e4193db5e/comments\",\n \"commit\" : {\n \"author\" : {\n \"date\" : \"2011-04-14T16:00:49Z\",\n \"email\" : \"mona@github.com\",\n \"name\" : \"Monalisa Octocat\"\n },\n \"comment_count\" : 0,\n \"committer\" : {\n \"date\" : \"2011-04-14T16:00:49Z\",\n \"email\" : \"mona@github.com\",\n \"name\" : \"Monalisa Octocat\"\n },\n \"message\" : \"Fix all the bugs\",\n \"tree\" : {\n \"sha\" : \"6dcb09b5b57875f334f61aebed695e2e4193db5e\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/tree/6dcb09b5b57875f334f61aebed695e2e4193db5e\"\n },\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/git/commits/6dcb09b5b57875f334f61aebed695e2e4193db5e\",\n \"verification\" : {\n \"reason\" : \"unsigned\",\n \"verified\" : false\n }\n },\n \"committer\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"html_url\" : \"https://github.com/octocat/Hello-World/commit/6dcb09b5b57875f334f61aebed695e2e4193db5e\",\n \"node_id\" : \"MDY6Q29tbWl0NmRjYjA5YjViNTc4NzVmMzM0ZjYxYWViZWQ2OTVlMmU0MTkzZGI1ZQ==\",\n \"parents\" : [ {\n \"sha\" : \"6dcb09b5b57875f334f61aebed695e2e4193db5e\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/commits/6dcb09b5b57875f334f61aebed695e2e4193db5e\"\n } ],\n \"sha\" : \"6dcb09b5b57875f334f61aebed695e2e4193db5e\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/commits/6dcb09b5b57875f334f61aebed695e2e4193db5e\"\n },\n \"behind_by\" : 2,\n \"commits\" : [ {\n \"author\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"comments_url\" : \"https://api.github.com/repos/octocat/Hello-World/commits/6dcb09b5b57875f334f61aebed695e2e4193db5e/comments\",\n \"commit\" : {\n \"author\" : {\n \"date\" : \"2011-04-14T16:00:49Z\",\n \"email\" : \"mona@github.com\",\n \"name\" : \"Monalisa Octocat\"\n },\n \"comment_count\" : 0,\n \"committer\" : {\n \"date\" : \"2011-04-14T16:00:49Z\",\n \"email\" : \"mona@github.com\",\n \"name\" : \"Monalisa Octocat\"\n },\n \"message\" : \"Fix all the bugs\",\n \"tree\" : {\n \"sha\" : \"6dcb09b5b57875f334f61aebed695e2e4193db5e\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/tree/6dcb09b5b57875f334f61aebed695e2e4193db5e\"\n },\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/git/commits/6dcb09b5b57875f334f61aebed695e2e4193db5e\",\n \"verification\" : {\n \"reason\" : \"unsigned\",\n \"verified\" : false\n }\n },\n \"committer\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"html_url\" : \"https://github.com/octocat/Hello-World/commit/6dcb09b5b57875f334f61aebed695e2e4193db5e\",\n \"node_id\" : \"MDY6Q29tbWl0NmRjYjA5YjViNTc4NzVmMzM0ZjYxYWViZWQ2OTVlMmU0MTkzZGI1ZQ==\",\n \"parents\" : [ {\n \"sha\" : \"6dcb09b5b57875f334f61aebed695e2e4193db5e\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/commits/6dcb09b5b57875f334f61aebed695e2e4193db5e\"\n } ],\n \"sha\" : \"6dcb09b5b57875f334f61aebed695e2e4193db5e\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/commits/6dcb09b5b57875f334f61aebed695e2e4193db5e\"\n } ],\n \"diff_url\" : \"https://github.com/octocat/Hello-World/compare/master...topic.diff\",\n \"files\" : [ {\n \"additions\" : 103,\n \"blob_url\" : \"https://github.com/octocat/Hello-World/blob/6dcb09b5b57875f334f61aebed695e2e4193db5e/file1.txt\",\n \"changes\" : 124,\n \"contents_url\" : \"https://api.github.com/repos/octocat/Hello-World/contents/file1.txt?ref=6dcb09b5b57875f334f61aebed695e2e4193db5e\",\n \"deletions\" : 21,\n \"filename\" : \"file1.txt\",\n \"patch\" : \"@@ -132,7 +132,7 @@ module Test @@ -1000,7 +1000,7 @@ module Test\",\n \"raw_url\" : \"https://github.com/octocat/Hello-World/raw/6dcb09b5b57875f334f61aebed695e2e4193db5e/file1.txt\",\n \"sha\" : \"bbcd538c8e72b8c175046e27cc8f907076331401\",\n \"status\" : \"added\"\n } ],\n \"html_url\" : \"https://github.com/octocat/Hello-World/compare/master...topic\",\n \"merge_base_commit\" : {\n \"author\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"comments_url\" : \"https://api.github.com/repos/octocat/Hello-World/commits/6dcb09b5b57875f334f61aebed695e2e4193db5e/comments\",\n \"commit\" : {\n \"author\" : {\n \"date\" : \"2011-04-14T16:00:49Z\",\n \"email\" : \"mona@github.com\",\n \"name\" : \"Monalisa Octocat\"\n },\n \"comment_count\" : 0,\n \"committer\" : {\n \"date\" : \"2011-04-14T16:00:49Z\",\n \"email\" : \"mona@github.com\",\n \"name\" : \"Monalisa Octocat\"\n },\n \"message\" : \"Fix all the bugs\",\n \"tree\" : {\n \"sha\" : \"6dcb09b5b57875f334f61aebed695e2e4193db5e\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/tree/6dcb09b5b57875f334f61aebed695e2e4193db5e\"\n },\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/git/commits/6dcb09b5b57875f334f61aebed695e2e4193db5e\",\n \"verification\" : {\n \"reason\" : \"unsigned\",\n \"verified\" : false\n }\n },\n \"committer\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"html_url\" : \"https://github.com/octocat/Hello-World/commit/6dcb09b5b57875f334f61aebed695e2e4193db5e\",\n \"node_id\" : \"MDY6Q29tbWl0NmRjYjA5YjViNTc4NzVmMzM0ZjYxYWViZWQ2OTVlMmU0MTkzZGI1ZQ==\",\n \"parents\" : [ {\n \"sha\" : \"6dcb09b5b57875f334f61aebed695e2e4193db5e\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/commits/6dcb09b5b57875f334f61aebed695e2e4193db5e\"\n } ],\n \"sha\" : \"6dcb09b5b57875f334f61aebed695e2e4193db5e\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/commits/6dcb09b5b57875f334f61aebed695e2e4193db5e\"\n },\n \"patch_url\" : \"https://github.com/octocat/Hello-World/compare/master...topic.patch\",\n \"permalink_url\" : \"https://github.com/octocat/Hello-World/compare/octocat:bbcd538c8e72b8c175046e27cc8f907076331401...octocat:0328041d1152db8ae77652d1618a02e57f745f17\",\n \"status\" : \"behind\",\n \"total_commits\" : 1,\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/compare/master...topic\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "dc5680a3-8a0d-48dc-908a-d5ed2f89b3e1", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.888713Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/compare-commits", + "schema": { + "description": "Commit Comparison", + "properties": { + "ahead_by": { + "example": 4, + "type": "integer" + }, + "base_commit": { + "$ref": "#/components/schemas/commit" + }, + "behind_by": { + "example": 5, + "type": "integer" + }, + "commits": { + "items": { + "$ref": "#/components/schemas/commit" + }, + "type": "array" + }, + "diff_url": { + "example": "https://github.com/octocat/Hello-World/compare/master...topic.diff", + "format": "uri", + "type": "string" + }, + "files": { + "items": { + "$ref": "#/components/schemas/diff-entry" + }, + "type": "array" + }, + "html_url": { + "example": "https://github.com/octocat/Hello-World/compare/master...topic", + "format": "uri", + "type": "string" + }, + "merge_base_commit": { + "$ref": "#/components/schemas/commit" + }, + "patch_url": { + "example": "https://github.com/octocat/Hello-World/compare/master...topic.patch", + "format": "uri", + "type": "string" + }, + "permalink_url": { + "example": "https://github.com/octocat/Hello-World/compare/octocat:bbcd538c8e72b8c175046e27cc8f907076331401...octocat:0328041d1152db8ae77652d1618a02e57f745f17", + "format": "uri", + "type": "string" + }, + "status": { + "enum": ["diverged", "ahead", "behind", "identical"], + "example": "ahead", + "type": "string" + }, + "total_commits": { + "example": 6, + "type": "integer" + }, + "url": { + "example": "https://api.github.com/repos/octocat/Hello-World/compare/master...topic", + "format": "uri", + "type": "string" + } + }, + "required": [ + "url", + "html_url", + "permalink_url", + "diff_url", + "patch_url", + "base_commit", + "merge_base_commit", + "status", + "ahead_by", + "behind_by", + "total_commits", + "commits" + ], + "title": "Commit Comparison", + "type": "object" + } + } + } + }, + "insertionIndex": 759 + }, + { + "id": "4760228d-0198-48db-a52e-de21210a8cff", + "name": "List commit statuses for a reference", + "request": { + "urlPath": "/repos/xgenuhivhdejucuuo66uz0zmsqmeiqicmn9rmsf7ixfbvgi3556e1yshkqmvgy185iqxenwpqlzqa044zp2n9ir96onhlw7n64idgxmni6ilj5v1oxaoc0d10f2xixtnpl4k63qrwa9ihz5p6rutmr664p/forc34fl62hk9jru4/commits/2rgd68iop6wlvjyroxacikj40ge2ky9r8/statuses", + "method": "GET" + }, + "response": { + "status": 301, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/141907\",\n \"message\" : \"Laboriosam quasi suscipit id tempore. Explicabo magni in nobis aut nesciunt. Laudantium omnis vel nulla. Voluptates est saepe molestias.\",\n \"url\" : \"https://web.example.mocklab.io/614335\",\n \"status\" : \"d2xpbgh0cm95ddfryk4uaj1oevv0ga3zcw2sejxnbkdzzlomg3se8r9tp1bhl86e2zq5oa7wy8lc4oxqap4qzsyx5rf70xedyhbd9a7k1o3cam2x6l\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "4760228d-0198-48db-a52e-de21210a8cff", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.888491Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/list-commit-statuses-for-ref", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 760 + }, + { + "id": "026b1731-0a32-46e5-9c12-98fadfa63093", + "name": "List commit statuses for a reference - default", + "request": { + "urlPath": "/repos/chnqwg6tuk2ty8uvp6bp1pr0wr616ss4fl688ngex93e85x82f2mifxwwp043c658/hj9opofzppcpugbbrkix6vbametqjjbo5lvl49xc9gb3byhf51ewcfpvdyj5v6mp726r578usnwvfh9bbrx2h1n6spgskkc6u2eq4bt7h2e6a4swwaer/commits/9h1r0p7fkdfgjykjbj0acbfv2lu4s8ja0995y7lsdxk2f21syu7tbpshojiujzna5gw6t2evdhcsrmhwd7zunkmnn7rbn8t8/statuses", + "method": "GET" + }, + "response": { + "status": 200, + "body": "[ {\n \"avatar_url\" : \"https://github.com/images/error/hubot_happy.gif\",\n \"context\" : \"continuous-integration/jenkins\",\n \"created_at\" : \"2012-07-20T01:19:13Z\",\n \"creator\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"description\" : \"Build has completed successfully\",\n \"id\" : 1,\n \"node_id\" : \"MDY6U3RhdHVzMQ==\",\n \"state\" : \"success\",\n \"target_url\" : \"https://ci.example.com/1000/output\",\n \"updated_at\" : \"2012-07-20T01:19:13Z\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/statuses/6dcb09b5b57875f334f61aebed695e2e4193db5e\"\n} ]", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "026b1731-0a32-46e5-9c12-98fadfa63093", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.888247Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/list-commit-statuses-for-ref", + "schema": { + "items": { + "$ref": "#/components/schemas/status" + }, + "type": "array" + } + } + } + }, + "insertionIndex": 761 + }, + { + "id": "26d8d38e-a73b-4e5c-aac4-1ac95566e993", + "name": "Get the combined status for a specific reference", + "request": { + "urlPath": "/repos/j3zg51bn8o3cuol5vurnm277k5av6wza2vsu17wfon0hl216998q0p601rxy90rmniij6sl3i2jqpg2xahvatx5sjn8b8idtefk8w7tfdsndverhhg9o1hyli9rbaltawye4a64v6y97nrf2bk2ojm8577p29ygzoresazqvvq/we67imyp23rt1xfz3s3ejeqj17vgsbc8rjxptscbcs8p3bgiocwz1ug0y2ewpa2xzy9lmj/commits/besultabr09kls609fpcw76onxu0et1hcvski4tq6hyg8abz0zwg7y26/status", + "method": "GET" + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/497554\",\n \"message\" : \"Est quia a qui et non. Sequi eos temporibus culpa natus. Eveniet dicta recusandae est velit. Consequatur quod molestiae. Eius ut aut.\",\n \"url\" : \"https://web.example.mocklab.io/074549\",\n \"status\" : \"b2i8u7pwrdhhlmun\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "26d8d38e-a73b-4e5c-aac4-1ac95566e993", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.888165Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/get-combined-status-for-ref", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 762 + }, + { + "id": "899b1739-8f67-4d1b-abd3-0f3ad1e950c4", + "name": "Get the combined status for a specific reference - default", + "request": { + "urlPath": "/repos/5e4bufoa6/krakumcta3iink046gznwmm9a36y3131fy0u5m6z2gam9obu6jf2bglb3sld1x1aej7bncw82mrykm4vj8x2u6rqi86nmy6sbky71n3al0q6zzfb9mls34gtb96b9wnbvgoz2saegy5jrnbm4xcf5mbbt9e5irnmpbzu67ukvkp0appvwx4vlbgueq02x2z3vemlmnec/commits/xzfuwwb1e0sfj6nlw6gqcythy6n6wkbjx741i7i4uz1g/status", + "method": "GET" + }, + "response": { + "status": 200, + "body": "{\n \"commit_url\" : \"https://api.github.com/repos/octocat/Hello-World/6dcb09b5b57875f334f61aebed695e2e4193db5e\",\n \"repository\" : {\n \"archive_url\" : \"https://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref}\",\n \"assignees_url\" : \"https://api.github.com/repos/octocat/Hello-World/assignees{/user}\",\n \"blobs_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/blobs{/sha}\",\n \"branches_url\" : \"https://api.github.com/repos/octocat/Hello-World/branches{/branch}\",\n \"collaborators_url\" : \"https://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator}\",\n \"comments_url\" : \"https://api.github.com/repos/octocat/Hello-World/comments{/number}\",\n \"commits_url\" : \"https://api.github.com/repos/octocat/Hello-World/commits{/sha}\",\n \"compare_url\" : \"https://api.github.com/repos/octocat/Hello-World/compare/{base}...{head}\",\n \"contents_url\" : \"https://api.github.com/repos/octocat/Hello-World/contents/{+path}\",\n \"contributors_url\" : \"https://api.github.com/repos/octocat/Hello-World/contributors\",\n \"deployments_url\" : \"https://api.github.com/repos/octocat/Hello-World/deployments\",\n \"description\" : \"This your first repo!\",\n \"downloads_url\" : \"https://api.github.com/repos/octocat/Hello-World/downloads\",\n \"events_url\" : \"https://api.github.com/repos/octocat/Hello-World/events\",\n \"fork\" : false,\n \"forks_url\" : \"https://api.github.com/repos/octocat/Hello-World/forks\",\n \"full_name\" : \"octocat/Hello-World\",\n \"git_commits_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/commits{/sha}\",\n \"git_refs_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/refs{/sha}\",\n \"git_tags_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/tags{/sha}\",\n \"git_url\" : \"git:github.com/octocat/Hello-World.git\",\n \"hooks_url\" : \"http://api.github.com/repos/octocat/Hello-World/hooks\",\n \"html_url\" : \"https://github.com/octocat/Hello-World\",\n \"id\" : 1296269,\n \"issue_comment_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/comments{/number}\",\n \"issue_events_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/events{/number}\",\n \"issues_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues{/number}\",\n \"keys_url\" : \"https://api.github.com/repos/octocat/Hello-World/keys{/key_id}\",\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World/labels{/name}\",\n \"languages_url\" : \"https://api.github.com/repos/octocat/Hello-World/languages\",\n \"merges_url\" : \"https://api.github.com/repos/octocat/Hello-World/merges\",\n \"milestones_url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones{/number}\",\n \"name\" : \"Hello-World\",\n \"node_id\" : \"MDEwOlJlcG9zaXRvcnkxMjk2MjY5\",\n \"notifications_url\" : \"https://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating}\",\n \"owner\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"private\" : false,\n \"pulls_url\" : \"https://api.github.com/repos/octocat/Hello-World/pulls{/number}\",\n \"releases_url\" : \"https://api.github.com/repos/octocat/Hello-World/releases{/id}\",\n \"ssh_url\" : \"git@github.com:octocat/Hello-World.git\",\n \"stargazers_url\" : \"https://api.github.com/repos/octocat/Hello-World/stargazers\",\n \"statuses_url\" : \"https://api.github.com/repos/octocat/Hello-World/statuses/{sha}\",\n \"subscribers_url\" : \"https://api.github.com/repos/octocat/Hello-World/subscribers\",\n \"subscription_url\" : \"https://api.github.com/repos/octocat/Hello-World/subscription\",\n \"tags_url\" : \"https://api.github.com/repos/octocat/Hello-World/tags\",\n \"teams_url\" : \"https://api.github.com/repos/octocat/Hello-World/teams\",\n \"trees_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/trees{/sha}\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World\"\n },\n \"sha\" : \"6dcb09b5b57875f334f61aebed695e2e4193db5e\",\n \"state\" : \"success\",\n \"statuses\" : [ {\n \"avatar_url\" : \"https://github.com/images/error/hubot_happy.gif\",\n \"context\" : \"continuous-integration/jenkins\",\n \"created_at\" : \"2012-07-20T01:19:13Z\",\n \"description\" : \"Build has completed successfully\",\n \"id\" : 1,\n \"node_id\" : \"MDY6U3RhdHVzMQ==\",\n \"state\" : \"success\",\n \"target_url\" : \"https://ci.example.com/1000/output\",\n \"updated_at\" : \"2012-07-20T01:19:13Z\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/statuses/6dcb09b5b57875f334f61aebed695e2e4193db5e\"\n }, {\n \"avatar_url\" : \"https://github.com/images/error/other_user_happy.gif\",\n \"context\" : \"security/brakeman\",\n \"created_at\" : \"2012-08-20T01:19:13Z\",\n \"description\" : \"Testing has completed successfully\",\n \"id\" : 2,\n \"node_id\" : \"MDY6U3RhdHVzMg==\",\n \"state\" : \"success\",\n \"target_url\" : \"https://ci.example.com/2000/output\",\n \"updated_at\" : \"2012-08-20T01:19:13Z\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/statuses/6dcb09b5b57875f334f61aebed695e2e4193db5e\"\n } ],\n \"total_count\" : 2,\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/6dcb09b5b57875f334f61aebed695e2e4193db5e/status\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "899b1739-8f67-4d1b-abd3-0f3ad1e950c4", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.887917Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/get-combined-status-for-ref", + "schema": { + "description": "Combined Commit Status", + "properties": { + "commit_url": { + "format": "uri", + "type": "string" + }, + "repository": { + "$ref": "#/components/schemas/minimal-repository" + }, + "sha": { + "type": "string" + }, + "state": { + "type": "string" + }, + "statuses": { + "items": { + "$ref": "#/components/schemas/simple-commit-status" + }, + "type": "array" + }, + "total_count": { + "type": "integer" + }, + "url": { + "format": "uri", + "type": "string" + } + }, + "required": [ + "state", + "sha", + "total_count", + "statuses", + "repository", + "commit_url", + "url" + ], + "title": "Combined Commit Status", + "type": "object" + } + } + } + }, + "insertionIndex": 763 + }, + { + "id": "914f6c24-1062-4155-80b3-3ab51d70a3d2", + "name": "List check suites for a Git reference - default", + "request": { + "urlPath": "/repos/rlm20mefoq4sk6nwvqwybc01iqemsorb8rogf97p0orm3y20178xafizac164tijp9ze2x0g2cj2u5tmqwnbteqwirra3e67mcygb7no02cnxqkdlbozdk6skaphv0p3wwi72i5g8ir2fljmu17l9mfu2oysxehnqm2u5fmmpl3xmneddzwqvb8nbja2w/40gwce6bh0r24ccqvgnj7tu0ei7ehoyttrz8x7kmgytvdxw6n7c6chpw/commits/7mpkcpu3la1h7mfwtzm6ahonxeeo9an6efkasrcwz2ygwc7pcrmjjael98g2lklg6bvubpk0y5tmh3ui5gd3l8pj3p0/check-suites", + "method": "GET" + }, + "response": { + "status": 200, + "body": "{\n \"check_suites\" : [ {\n \"after\" : \"d6fde92930d4715a2b49857d24b940956b26d2d3\",\n \"app\" : {\n \"created_at\" : \"2017-07-08T16:18:44-04:00\",\n \"description\" : \"\",\n \"events\" : [ \"push\", \"pull_request\" ],\n \"external_url\" : \"https://example.com\",\n \"html_url\" : \"https://github.com/apps/octoapp\",\n \"id\" : 1,\n \"name\" : \"Octocat App\",\n \"node_id\" : \"MDExOkludGVncmF0aW9uMQ==\",\n \"owner\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"description\" : \"A great organization\",\n \"events_url\" : \"https://api.github.com/orgs/github/events\",\n \"hooks_url\" : \"https://api.github.com/orgs/github/hooks\",\n \"id\" : 1,\n \"issues_url\" : \"https://api.github.com/orgs/github/issues\",\n \"login\" : \"github\",\n \"members_url\" : \"https://api.github.com/orgs/github/members{/member}\",\n \"node_id\" : \"MDEyOk9yZ2FuaXphdGlvbjE=\",\n \"public_members_url\" : \"https://api.github.com/orgs/github/public_members{/member}\",\n \"repos_url\" : \"https://api.github.com/orgs/github/repos\",\n \"url\" : \"https://api.github.com/orgs/github\"\n },\n \"permissions\" : {\n \"contents\" : \"read\",\n \"issues\" : \"write\",\n \"metadata\" : \"read\",\n \"single_file\" : \"write\"\n },\n \"slug\" : \"octoapp\",\n \"updated_at\" : \"2017-07-08T16:18:44-04:00\"\n },\n \"before\" : \"146e867f55c26428e5f9fade55a9bbf5e95a7912\",\n \"conclusion\" : \"neutral\",\n \"head_branch\" : \"master\",\n \"head_sha\" : \"d6fde92930d4715a2b49857d24b940956b26d2d3\",\n \"id\" : 5,\n \"node_id\" : \"MDEwOkNoZWNrU3VpdGU1\",\n \"pull_requests\" : [ ],\n \"repository\" : {\n \"allow_merge_commit\" : true,\n \"allow_rebase_merge\" : true,\n \"allow_squash_merge\" : true,\n \"anonymous_access_enabled\" : false,\n \"archive_url\" : \"https://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref}\",\n \"archived\" : false,\n \"assignees_url\" : \"https://api.github.com/repos/octocat/Hello-World/assignees{/user}\",\n \"blobs_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/blobs{/sha}\",\n \"branches_url\" : \"https://api.github.com/repos/octocat/Hello-World/branches{/branch}\",\n \"clone_url\" : \"https://github.com/octocat/Hello-World.git\",\n \"collaborators_url\" : \"https://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator}\",\n \"comments_url\" : \"https://api.github.com/repos/octocat/Hello-World/comments{/number}\",\n \"commits_url\" : \"https://api.github.com/repos/octocat/Hello-World/commits{/sha}\",\n \"compare_url\" : \"https://api.github.com/repos/octocat/Hello-World/compare/{base}...{head}\",\n \"contents_url\" : \"https://api.github.com/repos/octocat/Hello-World/contents/{+path}\",\n \"contributors_url\" : \"https://api.github.com/repos/octocat/Hello-World/contributors\",\n \"created_at\" : \"2011-01-26T19:01:12Z\",\n \"default_branch\" : \"master\",\n \"delete_branch_on_merge\" : true,\n \"deployments_url\" : \"https://api.github.com/repos/octocat/Hello-World/deployments\",\n \"description\" : \"This your first repo!\",\n \"disabled\" : false,\n \"downloads_url\" : \"https://api.github.com/repos/octocat/Hello-World/downloads\",\n \"events_url\" : \"https://api.github.com/repos/octocat/Hello-World/events\",\n \"fork\" : false,\n \"forks_count\" : 9,\n \"forks_url\" : \"https://api.github.com/repos/octocat/Hello-World/forks\",\n \"full_name\" : \"octocat/Hello-World\",\n \"git_commits_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/commits{/sha}\",\n \"git_refs_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/refs{/sha}\",\n \"git_tags_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/tags{/sha}\",\n \"git_url\" : \"git:github.com/octocat/Hello-World.git\",\n \"has_downloads\" : true,\n \"has_issues\" : true,\n \"has_pages\" : false,\n \"has_projects\" : true,\n \"has_wiki\" : true,\n \"homepage\" : \"https://github.com\",\n \"hooks_url\" : \"https://api.github.com/repos/octocat/Hello-World/hooks\",\n \"html_url\" : \"https://github.com/octocat/Hello-World\",\n \"id\" : 1296269,\n \"is_template\" : true,\n \"issue_comment_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/comments{/number}\",\n \"issue_events_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/events{/number}\",\n \"issues_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues{/number}\",\n \"keys_url\" : \"https://api.github.com/repos/octocat/Hello-World/keys{/key_id}\",\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World/labels{/name}\",\n \"languages_url\" : \"https://api.github.com/repos/octocat/Hello-World/languages\",\n \"merges_url\" : \"https://api.github.com/repos/octocat/Hello-World/merges\",\n \"milestones_url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones{/number}\",\n \"mirror_url\" : \"git:git.example.com/octocat/Hello-World\",\n \"name\" : \"Hello-World\",\n \"network_count\" : 0,\n \"node_id\" : \"MDEwOlJlcG9zaXRvcnkxMjk2MjY5\",\n \"notifications_url\" : \"https://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating}\",\n \"open_issues_count\" : 0,\n \"owner\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"permissions\" : {\n \"admin\" : false,\n \"pull\" : true,\n \"push\" : false\n },\n \"private\" : false,\n \"pulls_url\" : \"https://api.github.com/repos/octocat/Hello-World/pulls{/number}\",\n \"pushed_at\" : \"2011-01-26T19:06:43Z\",\n \"releases_url\" : \"https://api.github.com/repos/octocat/Hello-World/releases{/id}\",\n \"size\" : 108,\n \"ssh_url\" : \"git@github.com:octocat/Hello-World.git\",\n \"stargazers_count\" : 80,\n \"stargazers_url\" : \"https://api.github.com/repos/octocat/Hello-World/stargazers\",\n \"statuses_url\" : \"https://api.github.com/repos/octocat/Hello-World/statuses/{sha}\",\n \"subscribers_count\" : 42,\n \"subscribers_url\" : \"https://api.github.com/repos/octocat/Hello-World/subscribers\",\n \"subscription_url\" : \"https://api.github.com/repos/octocat/Hello-World/subscription\",\n \"svn_url\" : \"https://svn.github.com/octocat/Hello-World\",\n \"tags_url\" : \"https://api.github.com/repos/octocat/Hello-World/tags\",\n \"teams_url\" : \"https://api.github.com/repos/octocat/Hello-World/teams\",\n \"topics\" : [ \"octocat\", \"atom\", \"electron\", \"api\" ],\n \"trees_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/trees{/sha}\",\n \"updated_at\" : \"2011-01-26T19:14:43Z\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World\",\n \"visibility\" : \"public\",\n \"watchers_count\" : 80\n },\n \"status\" : \"completed\",\n \"url\" : \"https://api.github.com/repos/github/hello-world/check-suites/5\"\n } ],\n \"total_count\" : 1\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "914f6c24-1062-4155-80b3-3ab51d70a3d2", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.887768Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "checks/list-suites-for-ref", + "schema": { + "properties": { + "check_suites": { + "items": { + "$ref": "#/components/schemas/check-suite" + }, + "type": "array" + }, + "total_count": { + "type": "integer" + } + }, + "required": ["total_count", "check_suites"], + "type": "object" + } + } + } + }, + "insertionIndex": 764 + }, + { + "id": "b056af1a-3730-4c46-8b56-2f688fa3a587", + "name": "List check runs for a Git reference - default", + "request": { + "urlPath": "/repos/m6fg3cibsrsnum21kijoh54790irkz946vn8hxbro1e59eionc6u2m/1sax9vaxm0924fd8qwgeece3wf8quu5dfaima8kh04avjq3op0xlk6oqbruejl3edx6qnlig6e3vy6dnyf0csufpxoi4iz28i0wu4l38pugff23x5krh3zrve804xywqb9l8h/commits/azb/check-runs", + "method": "GET" + }, + "response": { + "status": 200, + "body": "{\n \"check_runs\" : [ {\n \"app\" : {\n \"created_at\" : \"2017-07-08T16:18:44-04:00\",\n \"description\" : \"\",\n \"events\" : [ \"push\", \"pull_request\" ],\n \"external_url\" : \"https://example.com\",\n \"html_url\" : \"https://github.com/apps/octoapp\",\n \"id\" : 1,\n \"name\" : \"Octocat App\",\n \"node_id\" : \"MDExOkludGVncmF0aW9uMQ==\",\n \"owner\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/orgs/github/events\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"github\",\n \"node_id\" : \"MDEyOk9yZ2FuaXphdGlvbjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/orgs/github/repos\",\n \"site_admin\" : true,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/orgs/github\"\n },\n \"permissions\" : {\n \"contents\" : \"read\",\n \"issues\" : \"write\",\n \"metadata\" : \"read\",\n \"single_file\" : \"write\"\n },\n \"slug\" : \"octoapp\",\n \"updated_at\" : \"2017-07-08T16:18:44-04:00\"\n },\n \"check_suite\" : {\n \"id\" : 5\n },\n \"completed_at\" : \"2018-05-04T01:14:52Z\",\n \"conclusion\" : \"neutral\",\n \"details_url\" : \"https://example.com\",\n \"external_id\" : \"\",\n \"head_sha\" : \"ce587453ced02b1526dfb4cb910479d431683101\",\n \"html_url\" : \"https://github.com/github/hello-world/runs/4\",\n \"id\" : 4,\n \"name\" : \"mighty_readme\",\n \"node_id\" : \"MDg6Q2hlY2tSdW40\",\n \"output\" : {\n \"annotations_count\" : 2,\n \"annotations_url\" : \"https://api.github.com/repos/github/hello-world/check-runs/4/annotations\",\n \"summary\" : \"There are 0 failures, 2 warnings, and 1 notice.\",\n \"text\" : \"You may have some misspelled words on lines 2 and 4. You also may want to add a section in your README about how to install your app.\",\n \"title\" : \"Mighty Readme report\"\n },\n \"pull_requests\" : [ {\n \"base\" : {\n \"ref\" : \"master\",\n \"repo\" : {\n \"id\" : 526,\n \"name\" : \"hello-world\",\n \"url\" : \"https://api.github.com/repos/github/hello-world\"\n },\n \"sha\" : \"e7fdf7640066d71ad16a86fbcbb9c6a10a18af4f\"\n },\n \"head\" : {\n \"ref\" : \"say-hello\",\n \"repo\" : {\n \"id\" : 526,\n \"name\" : \"hello-world\",\n \"url\" : \"https://api.github.com/repos/github/hello-world\"\n },\n \"sha\" : \"3dca65fa3e8d4b3da3f3d056c59aee1c50f41390\"\n },\n \"id\" : 1934,\n \"number\" : 3956,\n \"url\" : \"https://api.github.com/repos/github/hello-world/pulls/1\"\n } ],\n \"started_at\" : \"2018-05-04T01:14:52Z\",\n \"status\" : \"completed\",\n \"url\" : \"https://api.github.com/repos/github/hello-world/check-runs/4\"\n } ],\n \"total_count\" : 1\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "b056af1a-3730-4c46-8b56-2f688fa3a587", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.887668Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "checks/list-for-ref", + "schema": { + "properties": { + "check_runs": { + "items": { + "$ref": "#/components/schemas/check-run" + }, + "type": "array" + }, + "total_count": { + "type": "integer" + } + }, + "required": ["total_count", "check_runs"], + "type": "object" + } + } + } + }, + "insertionIndex": 765 + }, + { + "id": "6048d6d3-70c9-4594-83c7-72214013825a", + "name": "Get a commit", + "request": { + "urlPath": "/repos/yjfqlvj6ube4r0pcqh5j89svtrw6aycm5m777u2t67qgyefqrmck0filejooseypf67tb71f95320d5wjekf1iv4gojj00abji1bq8gwbx8ef7x63ome7h9xf4sdyke3pr86ssjlov6n5yld0t/p8cc84k9v7qtsapmb278a1lrqs4e6348ahgmtgtn85w97dgpfj06jljb3rp6vvqu1nj9zmcb0deepzh/commits/wnopm5m1uz0nwseo92nv2dwk6i2dzjjceap4sp8drd335wf", + "method": "GET" + }, + "response": { + "status": 500, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/178316\",\n \"message\" : \"Porro culpa quia quia. Iste consectetur ad ipsa minima ab quae voluptas. Molestiae soluta doloremque pariatur. Cupiditate vitae vel.\",\n \"url\" : \"https://web.example.mocklab.io/413782\",\n \"status\" : \"en3id3cnnenvdkhskg8iyo4uo42m70rpi9imsn\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "6048d6d3-70c9-4594-83c7-72214013825a", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.887567Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/get-commit", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 766 + }, + { + "id": "5d37fa26-a890-4ef0-804c-e5d3f197ab03", + "name": "Get a commit", + "request": { + "urlPath": "/repos/ynodrj4mg27l2cpr20944pzp53xiuu1k5pof7rhs3iw0bypolvwudvceydxyurf0sop5xcavfk3s3iafd6blad6hm38088z7rjqvqrdrojruz5egsscb4ukj19zez6d/pd1iz6emj7agl9k4nq4ixkiop7p75nlagnd1hmeg4o5a8r82xpdcftutz552jy3u/commits/2lfz08x1rslhrm3nswmsc6mne8wfbgkiubdqj3zm3lq0oww6ravwbmcp04c", + "method": "GET" + }, + "response": { + "status": 422, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/259001\",\n \"message\" : \"Eos voluptas debitis velit similique. Delectus minima distinctio quaerat magni eum. Eaque qui nobis est.\",\n \"errors\" : [ {\n \"code\" : \"a4y1koa1zp4msjwtpd5zkn68njl5tdey0l4f68v4d7u0lprr4l29wrrvhfowdrf5yr4mo0st4z7mhp08uanaodinqntsrdth9a07ca7ohwsx5q7ga6xz6np2riolj33yckud84fhjelca5d458w0crfuskgmchd5bjflifkcbial2e5m69gw7ypp7\",\n \"field\" : \"w7ew5ayfahrikc0ik6oxx74m3b0g5lqp2ztf8trzm1j35pnhec1nuogiuy23al956cv4h9q86fvtshrj5u8fjdbh8l5e0tgpxfctf8\",\n \"resource\" : \"0z6fc0cepp6vyf2bcbgj8veyscbia4s1l2lc65z34t2i6q2h44479guazl9fpd6orfrcfyl5\",\n \"index\" : 6192773528404592499,\n \"message\" : \"Id ut ut consequatur eum fugit rerum. Aut ea accusantium doloribus voluptas. Quasi beatae veritatis. Eum quia et totam et architecto consequatur.\",\n \"value\" : { }\n }, {\n \"code\" : \"c5out80dyw7lql25afrw3sj7q4q3k2ztvobmpwh4shkav5s0xc3us3szlcjz7ehx2tio3r4x2yilfpbexbtox73iby3zsb4n55cj3oe0wyww6t0gjl1dtkh28ip4m3tpj8noqtedcq4t49dwvwnzq9oivj3ehp7lh41muldxslw15dy4cgr8gcke\",\n \"field\" : \"34kvce6idjmk63azs6feb4s7kefpe6bjb71lnsj144g1xh1n0aelgiox46kuq66x4wvyd6p9iww6vb67wx1q15dm9m1pg8i38fbnmw9p32rsp2vp9c30ivecb32frhzbibk0du723m4n62efhy408ymdm48z0l1wycacfsvp6pne33fgpfw2mzazqxmqugku\",\n \"resource\" : \"h2rc0rc2357r8nx2tvk0e247l923546qone2t77xw6so7jdp7xngw05sqj0k70o9y1m8v3earu2ufp2yjwndswvmnqjc6gtaatlajw1hfl51pssom3m5j64pbe6sxrlp17c4zhhwkf4i2k310dumyvc4ziwqku0iuvb6wfd4v\",\n \"index\" : 8085276531166154299,\n \"message\" : \"Aliquid et ab. Harum voluptate dolorem optio. Consequatur magnam reiciendis sit et deserunt voluptas. Voluptas et architecto vel nostrum dolorem molestiae. Deserunt aspernatur vitae sed distinctio dol\",\n \"value\" : { }\n } ]\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "5d37fa26-a890-4ef0-804c-e5d3f197ab03", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.887324Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/get-commit", + "schema": { + "description": "Validation Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "errors": { + "items": { + "properties": { + "code": { + "type": "string" + }, + "field": { + "type": "string" + }, + "index": { + "type": "integer" + }, + "message": { + "type": "string" + }, + "resource": { + "type": "string" + }, + "value": { + "oneOf": [ + { + "nullable": true, + "type": "string" + }, + { + "nullable": true, + "type": "integer" + }, + { + "items": { + "type": "string" + }, + "nullable": true, + "type": "array" + } + ] + } + }, + "required": ["code"], + "type": "object" + }, + "type": "array" + }, + "message": { + "type": "string" + } + }, + "required": ["message", "documentation_url"], + "title": "Validation Error", + "type": "object" + } + } + } + }, + "insertionIndex": 767 + }, + { + "id": "a64a409e-f720-41d0-aaa7-f2597495c98a", + "name": "Get a commit", + "request": { + "urlPath": "/repos/b09tk627hoekb746jg3gbv4dgfi91xeor67oxq4mkb544vla1jd7cmrrqqenzt5l57rnkstnyi7t0231fgorho3hdrrganmcwgx6pptj6v97yw0vhjf2unkzc3ycyi17d1rln7sl/8y6k93qmnjwuzjv3f991/commits/a1hd33fo1ht0sdfyyii3sgzhewy4ysrqd3vwx4cp7do8g1cxgr0pe2cpbll2zupjy0a22jaswuksof7wetolin3p2d7ikencehswecg5aqdhpk8qxdqawg1knb44e2srp47xlyiofrn6ycemgam", + "method": "GET" + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/836406\",\n \"message\" : \"Reprehenderit sit perspiciatis non. Et expedita rerum atque enim. Fugiat quidem est. Expedita rem eum sint id ut.\",\n \"url\" : \"https://web.example.mocklab.io/326225\",\n \"status\" : \"ok38f91639xp3cp59sdjkf6fte03yc353bxsghb98whxta8gw71co0kgze2guezqu4oob2yg1hxt6ocs1i5j4bgm069s\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "a64a409e-f720-41d0-aaa7-f2597495c98a", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.886883Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/get-commit", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 768 + }, + { + "id": "52b09e81-1e50-4ce4-a679-714d9ae3581f", + "name": "Get a commit - default", + "request": { + "urlPath": "/repos/eeq9mlxgcbk9sowrxee27a14zaij5lykhbf4x5fsrhe22zoszmgd3mb2w800adob7pnhe6jpxlhxiwuzu2yw6e54q30qb2jvfgdygmcz8zb2dl61tu6po22wliuv0jqvedvoskq7p4edllt0t9mg1n60zii1d250kk7vcvesjbw2wcm220cvibuw2a/1r6rt2rwkws6c9iwnrw675rcrc0jjk8ike6vkvxo1/commits/1qfjr95ke33bvy0ey3sd4lmll7suueriza4bnmwbfyduzq1pxmoa2n8dlk9mc1v0vhfm1xqhxfh3lt6fqng99xyxy43orp2rgwx9h7a8mcegaz7wj1xezn2l8r22aybcu65lnbqf5xt3h8lhwpy", + "method": "GET" + }, + "response": { + "status": 200, + "body": "{\n \"author\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"comments_url\" : \"https://api.github.com/repos/octocat/Hello-World/commits/6dcb09b5b57875f334f61aebed695e2e4193db5e/comments\",\n \"commit\" : {\n \"author\" : {\n \"date\" : \"2011-04-14T16:00:49Z\",\n \"email\" : \"mona@github.com\",\n \"name\" : \"Monalisa Octocat\"\n },\n \"comment_count\" : 0,\n \"committer\" : {\n \"date\" : \"2011-04-14T16:00:49Z\",\n \"email\" : \"mona@github.com\",\n \"name\" : \"Monalisa Octocat\"\n },\n \"message\" : \"Fix all the bugs\",\n \"tree\" : {\n \"sha\" : \"6dcb09b5b57875f334f61aebed695e2e4193db5e\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/tree/6dcb09b5b57875f334f61aebed695e2e4193db5e\"\n },\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/git/commits/6dcb09b5b57875f334f61aebed695e2e4193db5e\",\n \"verification\" : {\n \"reason\" : \"unsigned\",\n \"verified\" : false\n }\n },\n \"committer\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"files\" : [ {\n \"additions\" : 10,\n \"blob_url\" : \"https://github.com/octocat/Hello-World/blob/7ca483543807a51b6079e54ac4cc392bc29ae284/file1.txt\",\n \"changes\" : 12,\n \"deletions\" : 2,\n \"filename\" : \"file1.txt\",\n \"patch\" : \"@@ -29,7 +29,7 @@\\n.....\",\n \"raw_url\" : \"https://github.com/octocat/Hello-World/raw/7ca483543807a51b6079e54ac4cc392bc29ae284/file1.txt\",\n \"status\" : \"modified\"\n } ],\n \"html_url\" : \"https://github.com/octocat/Hello-World/commit/6dcb09b5b57875f334f61aebed695e2e4193db5e\",\n \"node_id\" : \"MDY6Q29tbWl0NmRjYjA5YjViNTc4NzVmMzM0ZjYxYWViZWQ2OTVlMmU0MTkzZGI1ZQ==\",\n \"parents\" : [ {\n \"sha\" : \"6dcb09b5b57875f334f61aebed695e2e4193db5e\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/commits/6dcb09b5b57875f334f61aebed695e2e4193db5e\"\n } ],\n \"sha\" : \"6dcb09b5b57875f334f61aebed695e2e4193db5e\",\n \"stats\" : {\n \"additions\" : 104,\n \"deletions\" : 4,\n \"total\" : 108\n },\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/commits/6dcb09b5b57875f334f61aebed695e2e4193db5e\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "52b09e81-1e50-4ce4-a679-714d9ae3581f", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.886614Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/get-commit", + "schema": { + "description": "Commit", + "properties": { + "author": { + "$ref": "#/components/schemas/nullable-simple-user" + }, + "comments_url": { + "example": "https://api.github.com/repos/octocat/Hello-World/commits/6dcb09b5b57875f334f61aebed695e2e4193db5e/comments", + "format": "uri", + "type": "string" + }, + "commit": { + "properties": { + "author": { + "$ref": "#/components/schemas/nullable-git-user" + }, + "comment_count": { + "example": 0, + "type": "integer" + }, + "committer": { + "$ref": "#/components/schemas/nullable-git-user" + }, + "message": { + "example": "Fix all the bugs", + "type": "string" + }, + "tree": { + "properties": { + "sha": { + "example": "827efc6d56897b048c772eb4087f854f46256132", + "type": "string" + }, + "url": { + "example": "https://api.github.com/repos/octocat/Hello-World/tree/827efc6d56897b048c772eb4087f854f46256132", + "format": "uri", + "type": "string" + } + }, + "required": ["sha", "url"], + "type": "object" + }, + "url": { + "example": "https://api.github.com/repos/octocat/Hello-World/commits/6dcb09b5b57875f334f61aebed695e2e4193db5e", + "format": "uri", + "type": "string" + }, + "verification": { + "$ref": "#/components/schemas/verification" + } + }, + "required": ["author", "committer", "comment_count", "message", "tree", "url"], + "type": "object" + }, + "committer": { + "$ref": "#/components/schemas/nullable-simple-user" + }, + "files": { + "items": { + "properties": { + "additions": { + "type": "integer" + }, + "blob_url": { + "type": "string" + }, + "changes": { + "type": "integer" + }, + "contents_url": { + "example": "\"https://api.github.com/repos/owner-3d68404b07d25daeb2d4a6bf/AAA_Public_Repo/contents/geometry.js?ref=c3956841a7cb7e8ba4a6fd923568d86958f01573\"", + "type": "string" + }, + "deletions": { + "type": "integer" + }, + "filename": { + "type": "string" + }, + "patch": { + "type": "string" + }, + "previous_filename": { + "example": "\"subdir/before_name.txt\"", + "type": "string" + }, + "raw_url": { + "type": "string" + }, + "sha": { + "example": "\"1e8e60ce9733d5283f7836fa602b6365a66b2567\"", + "type": "string" + }, + "status": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "html_url": { + "example": "https://github.com/octocat/Hello-World/commit/6dcb09b5b57875f334f61aebed695e2e4193db5e", + "format": "uri", + "type": "string" + }, + "node_id": { + "example": "MDY6Q29tbWl0NmRjYjA5YjViNTc4NzVmMzM0ZjYxYWViZWQ2OTVlMmU0MTkzZGI1ZQ==", + "type": "string" + }, + "parents": { + "items": { + "properties": { + "html_url": { + "example": "https://github.com/octocat/Hello-World/commit/7638417db6d59f3c431d3e1f261cc637155684cd", + "format": "uri", + "type": "string" + }, + "sha": { + "example": "7638417db6d59f3c431d3e1f261cc637155684cd", + "type": "string" + }, + "url": { + "example": "https://api.github.com/repos/octocat/Hello-World/commits/7638417db6d59f3c431d3e1f261cc637155684cd", + "format": "uri", + "type": "string" + } + }, + "required": ["sha", "url"], + "type": "object" + }, + "type": "array" + }, + "sha": { + "example": "6dcb09b5b57875f334f61aebed695e2e4193db5e", + "type": "string" + }, + "stats": { + "properties": { + "additions": { + "type": "integer" + }, + "deletions": { + "type": "integer" + }, + "total": { + "type": "integer" + } + }, + "type": "object" + }, + "url": { + "example": "https://api.github.com/repos/octocat/Hello-World/commits/6dcb09b5b57875f334f61aebed695e2e4193db5e", + "format": "uri", + "type": "string" + } + }, + "required": [ + "url", + "sha", + "node_id", + "html_url", + "comments_url", + "commit", + "author", + "committer", + "parents" + ], + "title": "Commit", + "type": "object" + } + } + } + }, + "insertionIndex": 769 + }, + { + "id": "53f64742-e213-4c08-952a-524fe2e3ed95", + "name": "List pull requests associated with a commit", + "request": { + "urlPath": "/repos/ksffmmjlth2q5fua6wqan9iccyj29av86tqd7a8up37nguhukkiq7p4e1ydwvj31y8cljz4jsxrvq3s9fz88bkgrradj2k2qf8qgdl5lhtk3zd4dkmel0aiv9wvougona8epxkws2xdujd/46j6kf2nql0x7co0351mi16oxzng3aryn2zgegfgl6c4ymrovfos9tnlo2ww6lpiuz22i95ymh09yqs2yb0lctbvucvj7zj0eoc3mg4no8bk5w743pc9p3u/commits/gts50mx5sax1w3w147zjouskl6fzubwmflu17ts3nc7zd7dzbwxwtmn7v8v0uxixf4pimzfz14i4agug9h2h3/pulls", + "method": "GET" + }, + "response": { + "status": 415, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/071117\",\n \"message\" : \"Minus quaerat fugiat quas. Nihil deserunt ipsa dolor. Quis ut officiis minima.\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "53f64742-e213-4c08-952a-524fe2e3ed95", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.886213Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/list-pull-requests-associated-with-commit", + "schema": { + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": ["message", "documentation_url"], + "type": "object" + } + } + } + }, + "insertionIndex": 770 + }, + { + "id": "acf7524a-44a2-4bac-8bd1-2f4fae82b257", + "name": "List pull requests associated with a commit - default", + "request": { + "urlPath": "/repos/z7wqdls2yun18kgen4reg17lb2oj805qq2746qapap657i2oab56n9t6k0dec0c2newazquitybx2kvmiqig6rgfuhrs5q0yqw3gpbwt392qsgzatsbbhzmtxnpt98147weujjraw7coxhyacy6w5p0/sfn0w4sa9uxu7qolr2y4k1mmf723g08ck4evfjbgj6a3gi56gm/commits/1bv0pxtdu7637qk7nrwnq7l2hnhymyelzjr5qhije12f6n6jrggldgcf25pe7aqbo67zjsnxvn6yau84wj9829wf31ugwug0y9y3hgwr812zsgbu437eq6ikbbm6wbl1czggov4tr87bz97q5oicgf2w1s9lbtd0ykdznrck68sx81guhv3tpkc/pulls", + "method": "GET" + }, + "response": { + "status": 200, + "body": "[ {\n \"_links\" : {\n \"comments\" : {\n \"href\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347/comments\"\n },\n \"commits\" : {\n \"href\" : \"https://api.github.com/repos/octocat/Hello-World/pulls/1347/commits\"\n },\n \"html\" : {\n \"href\" : \"https://github.com/octocat/Hello-World/pull/1347\"\n },\n \"issue\" : {\n \"href\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347\"\n },\n \"review_comment\" : {\n \"href\" : \"https://api.github.com/repos/octocat/Hello-World/pulls/comments{/number}\"\n },\n \"review_comments\" : {\n \"href\" : \"https://api.github.com/repos/octocat/Hello-World/pulls/1347/comments\"\n },\n \"self\" : {\n \"href\" : \"https://api.github.com/repos/octocat/Hello-World/pulls/1347\"\n },\n \"statuses\" : {\n \"href\" : \"https://api.github.com/repos/octocat/Hello-World/statuses/6dcb09b5b57875f334f61aebed695e2e4193db5e\"\n }\n },\n \"active_lock_reason\" : \"too heated\",\n \"assignee\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"assignees\" : [ {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n }, {\n \"avatar_url\" : \"https://github.com/images/error/hubot_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/hubot/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/hubot/followers\",\n \"following_url\" : \"https://api.github.com/users/hubot/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/hubot/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/hubot\",\n \"id\" : 1,\n \"login\" : \"hubot\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/hubot/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/hubot/received_events\",\n \"repos_url\" : \"https://api.github.com/users/hubot/repos\",\n \"site_admin\" : true,\n \"starred_url\" : \"https://api.github.com/users/hubot/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/hubot/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/hubot\"\n } ],\n \"author_association\" : \"OWNER\",\n \"base\" : {\n \"label\" : \"octocat:master\",\n \"ref\" : \"master\",\n \"repo\" : {\n \"allow_merge_commit\" : true,\n \"allow_rebase_merge\" : true,\n \"allow_squash_merge\" : true,\n \"anonymous_access_enabled\" : false,\n \"archive_url\" : \"https://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref}\",\n \"archived\" : false,\n \"assignees_url\" : \"https://api.github.com/repos/octocat/Hello-World/assignees{/user}\",\n \"blobs_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/blobs{/sha}\",\n \"branches_url\" : \"https://api.github.com/repos/octocat/Hello-World/branches{/branch}\",\n \"clone_url\" : \"https://github.com/octocat/Hello-World.git\",\n \"collaborators_url\" : \"https://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator}\",\n \"comments_url\" : \"https://api.github.com/repos/octocat/Hello-World/comments{/number}\",\n \"commits_url\" : \"https://api.github.com/repos/octocat/Hello-World/commits{/sha}\",\n \"compare_url\" : \"https://api.github.com/repos/octocat/Hello-World/compare/{base}...{head}\",\n \"contents_url\" : \"https://api.github.com/repos/octocat/Hello-World/contents/{+path}\",\n \"contributors_url\" : \"https://api.github.com/repos/octocat/Hello-World/contributors\",\n \"created_at\" : \"2011-01-26T19:01:12Z\",\n \"default_branch\" : \"master\",\n \"delete_branch_on_merge\" : true,\n \"deployments_url\" : \"https://api.github.com/repos/octocat/Hello-World/deployments\",\n \"description\" : \"This your first repo!\",\n \"disabled\" : false,\n \"downloads_url\" : \"https://api.github.com/repos/octocat/Hello-World/downloads\",\n \"events_url\" : \"https://api.github.com/repos/octocat/Hello-World/events\",\n \"fork\" : false,\n \"forks_count\" : 9,\n \"forks_url\" : \"https://api.github.com/repos/octocat/Hello-World/forks\",\n \"full_name\" : \"octocat/Hello-World\",\n \"git_commits_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/commits{/sha}\",\n \"git_refs_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/refs{/sha}\",\n \"git_tags_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/tags{/sha}\",\n \"git_url\" : \"git:github.com/octocat/Hello-World.git\",\n \"has_downloads\" : true,\n \"has_issues\" : true,\n \"has_pages\" : false,\n \"has_projects\" : true,\n \"has_wiki\" : true,\n \"homepage\" : \"https://github.com\",\n \"hooks_url\" : \"https://api.github.com/repos/octocat/Hello-World/hooks\",\n \"html_url\" : \"https://github.com/octocat/Hello-World\",\n \"id\" : 1296269,\n \"is_template\" : true,\n \"issue_comment_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/comments{/number}\",\n \"issue_events_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/events{/number}\",\n \"issues_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues{/number}\",\n \"keys_url\" : \"https://api.github.com/repos/octocat/Hello-World/keys{/key_id}\",\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World/labels{/name}\",\n \"languages_url\" : \"https://api.github.com/repos/octocat/Hello-World/languages\",\n \"merges_url\" : \"https://api.github.com/repos/octocat/Hello-World/merges\",\n \"milestones_url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones{/number}\",\n \"mirror_url\" : \"git:git.example.com/octocat/Hello-World\",\n \"name\" : \"Hello-World\",\n \"network_count\" : 0,\n \"node_id\" : \"MDEwOlJlcG9zaXRvcnkxMjk2MjY5\",\n \"notifications_url\" : \"https://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating}\",\n \"open_issues_count\" : 0,\n \"owner\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"permissions\" : {\n \"admin\" : false,\n \"pull\" : true,\n \"push\" : false\n },\n \"private\" : false,\n \"pulls_url\" : \"https://api.github.com/repos/octocat/Hello-World/pulls{/number}\",\n \"pushed_at\" : \"2011-01-26T19:06:43Z\",\n \"releases_url\" : \"https://api.github.com/repos/octocat/Hello-World/releases{/id}\",\n \"size\" : 108,\n \"ssh_url\" : \"git@github.com:octocat/Hello-World.git\",\n \"stargazers_count\" : 80,\n \"stargazers_url\" : \"https://api.github.com/repos/octocat/Hello-World/stargazers\",\n \"statuses_url\" : \"https://api.github.com/repos/octocat/Hello-World/statuses/{sha}\",\n \"subscribers_count\" : 42,\n \"subscribers_url\" : \"https://api.github.com/repos/octocat/Hello-World/subscribers\",\n \"subscription_url\" : \"https://api.github.com/repos/octocat/Hello-World/subscription\",\n \"svn_url\" : \"https://svn.github.com/octocat/Hello-World\",\n \"tags_url\" : \"https://api.github.com/repos/octocat/Hello-World/tags\",\n \"teams_url\" : \"https://api.github.com/repos/octocat/Hello-World/teams\",\n \"topics\" : [ \"octocat\", \"atom\", \"electron\", \"api\" ],\n \"trees_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/trees{/sha}\",\n \"updated_at\" : \"2011-01-26T19:14:43Z\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World\",\n \"visibility\" : \"public\",\n \"watchers_count\" : 80\n },\n \"sha\" : \"6dcb09b5b57875f334f61aebed695e2e4193db5e\",\n \"user\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n }\n },\n \"body\" : \"Please pull these awesome changes in!\",\n \"closed_at\" : \"2011-01-26T19:01:12Z\",\n \"comments_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347/comments\",\n \"commits_url\" : \"https://api.github.com/repos/octocat/Hello-World/pulls/1347/commits\",\n \"created_at\" : \"2011-01-26T19:01:12Z\",\n \"diff_url\" : \"https://github.com/octocat/Hello-World/pull/1347.diff\",\n \"draft\" : false,\n \"head\" : {\n \"label\" : \"octocat:new-topic\",\n \"ref\" : \"new-topic\",\n \"repo\" : {\n \"allow_merge_commit\" : true,\n \"allow_rebase_merge\" : true,\n \"allow_squash_merge\" : true,\n \"anonymous_access_enabled\" : false,\n \"archive_url\" : \"https://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref}\",\n \"archived\" : false,\n \"assignees_url\" : \"https://api.github.com/repos/octocat/Hello-World/assignees{/user}\",\n \"blobs_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/blobs{/sha}\",\n \"branches_url\" : \"https://api.github.com/repos/octocat/Hello-World/branches{/branch}\",\n \"clone_url\" : \"https://github.com/octocat/Hello-World.git\",\n \"collaborators_url\" : \"https://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator}\",\n \"comments_url\" : \"https://api.github.com/repos/octocat/Hello-World/comments{/number}\",\n \"commits_url\" : \"https://api.github.com/repos/octocat/Hello-World/commits{/sha}\",\n \"compare_url\" : \"https://api.github.com/repos/octocat/Hello-World/compare/{base}...{head}\",\n \"contents_url\" : \"https://api.github.com/repos/octocat/Hello-World/contents/{+path}\",\n \"contributors_url\" : \"https://api.github.com/repos/octocat/Hello-World/contributors\",\n \"created_at\" : \"2011-01-26T19:01:12Z\",\n \"default_branch\" : \"master\",\n \"delete_branch_on_merge\" : true,\n \"deployments_url\" : \"https://api.github.com/repos/octocat/Hello-World/deployments\",\n \"description\" : \"This your first repo!\",\n \"disabled\" : false,\n \"downloads_url\" : \"https://api.github.com/repos/octocat/Hello-World/downloads\",\n \"events_url\" : \"https://api.github.com/repos/octocat/Hello-World/events\",\n \"fork\" : false,\n \"forks_count\" : 9,\n \"forks_url\" : \"https://api.github.com/repos/octocat/Hello-World/forks\",\n \"full_name\" : \"octocat/Hello-World\",\n \"git_commits_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/commits{/sha}\",\n \"git_refs_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/refs{/sha}\",\n \"git_tags_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/tags{/sha}\",\n \"git_url\" : \"git:github.com/octocat/Hello-World.git\",\n \"has_downloads\" : true,\n \"has_issues\" : true,\n \"has_pages\" : false,\n \"has_projects\" : true,\n \"has_wiki\" : true,\n \"homepage\" : \"https://github.com\",\n \"hooks_url\" : \"https://api.github.com/repos/octocat/Hello-World/hooks\",\n \"html_url\" : \"https://github.com/octocat/Hello-World\",\n \"id\" : 1296269,\n \"is_template\" : true,\n \"issue_comment_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/comments{/number}\",\n \"issue_events_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/events{/number}\",\n \"issues_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues{/number}\",\n \"keys_url\" : \"https://api.github.com/repos/octocat/Hello-World/keys{/key_id}\",\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World/labels{/name}\",\n \"languages_url\" : \"https://api.github.com/repos/octocat/Hello-World/languages\",\n \"merges_url\" : \"https://api.github.com/repos/octocat/Hello-World/merges\",\n \"milestones_url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones{/number}\",\n \"mirror_url\" : \"git:git.example.com/octocat/Hello-World\",\n \"name\" : \"Hello-World\",\n \"network_count\" : 0,\n \"node_id\" : \"MDEwOlJlcG9zaXRvcnkxMjk2MjY5\",\n \"notifications_url\" : \"https://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating}\",\n \"open_issues_count\" : 0,\n \"owner\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"permissions\" : {\n \"admin\" : false,\n \"pull\" : true,\n \"push\" : false\n },\n \"private\" : false,\n \"pulls_url\" : \"https://api.github.com/repos/octocat/Hello-World/pulls{/number}\",\n \"pushed_at\" : \"2011-01-26T19:06:43Z\",\n \"releases_url\" : \"https://api.github.com/repos/octocat/Hello-World/releases{/id}\",\n \"size\" : 108,\n \"ssh_url\" : \"git@github.com:octocat/Hello-World.git\",\n \"stargazers_count\" : 80,\n \"stargazers_url\" : \"https://api.github.com/repos/octocat/Hello-World/stargazers\",\n \"statuses_url\" : \"https://api.github.com/repos/octocat/Hello-World/statuses/{sha}\",\n \"subscribers_count\" : 42,\n \"subscribers_url\" : \"https://api.github.com/repos/octocat/Hello-World/subscribers\",\n \"subscription_url\" : \"https://api.github.com/repos/octocat/Hello-World/subscription\",\n \"svn_url\" : \"https://svn.github.com/octocat/Hello-World\",\n \"tags_url\" : \"https://api.github.com/repos/octocat/Hello-World/tags\",\n \"teams_url\" : \"https://api.github.com/repos/octocat/Hello-World/teams\",\n \"topics\" : [ \"octocat\", \"atom\", \"electron\", \"api\" ],\n \"trees_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/trees{/sha}\",\n \"updated_at\" : \"2011-01-26T19:14:43Z\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World\",\n \"visibility\" : \"public\",\n \"watchers_count\" : 80\n },\n \"sha\" : \"6dcb09b5b57875f334f61aebed695e2e4193db5e\",\n \"user\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n }\n },\n \"html_url\" : \"https://github.com/octocat/Hello-World/pull/1347\",\n \"id\" : 1,\n \"issue_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347\",\n \"labels\" : [ {\n \"color\" : \"f29513\",\n \"default\" : true,\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"name\" : \"bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/labels/bug\"\n } ],\n \"locked\" : true,\n \"merge_commit_sha\" : \"e5bd3914e2e596debea16f433f57875b5b90bcd6\",\n \"merged_at\" : \"2011-01-26T19:01:12Z\",\n \"milestone\" : {\n \"closed_at\" : \"2013-02-12T13:22:01Z\",\n \"closed_issues\" : 8,\n \"created_at\" : \"2011-04-10T20:09:31Z\",\n \"creator\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"description\" : \"Tracking milestone for version 1.0\",\n \"due_on\" : \"2012-10-09T23:39:01Z\",\n \"html_url\" : \"https://github.com/octocat/Hello-World/milestones/v1.0\",\n \"id\" : 1002604,\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones/1/labels\",\n \"node_id\" : \"MDk6TWlsZXN0b25lMTAwMjYwNA==\",\n \"number\" : 1,\n \"open_issues\" : 4,\n \"state\" : \"open\",\n \"title\" : \"v1.0\",\n \"updated_at\" : \"2014-03-03T18:58:10Z\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones/1\"\n },\n \"node_id\" : \"MDExOlB1bGxSZXF1ZXN0MQ==\",\n \"number\" : 1347,\n \"patch_url\" : \"https://github.com/octocat/Hello-World/pull/1347.patch\",\n \"requested_reviewers\" : [ {\n \"avatar_url\" : \"https://github.com/images/error/other_user_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/other_user/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/other_user/followers\",\n \"following_url\" : \"https://api.github.com/users/other_user/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/other_user/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/other_user\",\n \"id\" : 1,\n \"login\" : \"other_user\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/other_user/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/other_user/received_events\",\n \"repos_url\" : \"https://api.github.com/users/other_user/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/other_user/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/other_user/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/other_user\"\n } ],\n \"requested_teams\" : [ {\n \"description\" : \"A great team.\",\n \"html_url\" : \"https://github.com/orgs/github/teams/justice-league\",\n \"id\" : 1,\n \"members_url\" : \"https://api.github.com/teams/1/members{/member}\",\n \"name\" : \"Justice League\",\n \"node_id\" : \"MDQ6VGVhbTE=\",\n \"permission\" : \"admin\",\n \"privacy\" : \"closed\",\n \"repositories_url\" : \"https://api.github.com/teams/1/repos\",\n \"slug\" : \"justice-league\",\n \"url\" : \"https://api.github.com/teams/1\"\n } ],\n \"review_comment_url\" : \"https://api.github.com/repos/octocat/Hello-World/pulls/comments{/number}\",\n \"review_comments_url\" : \"https://api.github.com/repos/octocat/Hello-World/pulls/1347/comments\",\n \"state\" : \"open\",\n \"statuses_url\" : \"https://api.github.com/repos/octocat/Hello-World/statuses/6dcb09b5b57875f334f61aebed695e2e4193db5e\",\n \"title\" : \"Amazing new feature\",\n \"updated_at\" : \"2011-01-26T19:01:12Z\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/pulls/1347\",\n \"user\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n }\n} ]", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "acf7524a-44a2-4bac-8bd1-2f4fae82b257", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.886046Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/list-pull-requests-associated-with-commit", + "schema": { + "items": { + "$ref": "#/components/schemas/pull-request-simple" + }, + "type": "array" + } + } + } + }, + "insertionIndex": 771 + }, + { + "id": "a7eb79a8-901c-434f-96bd-b059ca02e2ff", + "name": "Create a commit comment", + "request": { + "urlPath": "/repos/r9o4keplyj6mwld8r4trua9m0g8elyazurpanf6qzqayzn0ol11ottj4htkos9vl1llnqbyx1z/ss4bv7n07c1x4ag3utotue6nm25bnmvqlushqum0jsg2oplnjcym5p421slzykxrj347687oigpjmj5543i13rm4uysas3det92kis4s9z4ka1y4iyllrju3oqb77lbhkukx4ok9w5c34v2jdujrjjrxzja7h8jn2/commits/x703bjfbezu4m9k5nci2nuevy2bb4l8y/comments", + "method": "POST" + }, + "response": { + "status": 422, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/628621\",\n \"message\" : \"Inventore molestias optio iusto voluptatem. Recusandae cum molestiae. Quia similique quia voluptatibus commodi eum ut at. Est praesentium harum dolor sunt consequuntur possimus.\",\n \"errors\" : [ {\n \"code\" : \"sbzmh6nt1s5fjs7egy9pemgvooo3h73lx0127qx8iku6jccrbjhq7affgk08axprok5ot0xru6iccrrvrvhea7emer4vw9rxek6gtdknuok11l6k\",\n \"field\" : \"0p0zmq2ftddjrdx5slbgox2fkuc13t3w2tsre92o2mxvf6lc7j5ln209yvmxsuuy8h9e4mjwjoav852rstlsuvkbjmb72435wrldmw4uv97jyqhwxticv8rx0w7r7vtxnhtf3oihnfmh7jmw36ipt8lfc\",\n \"resource\" : \"xkangepcfrx13nbstma7bom7iea1xeh4yvl1q287npo1e21fwrhm6uflcgj52xec7zyqjatw5svay9fcojtq3ti2tm\",\n \"index\" : 6841575928217565780,\n \"message\" : \"Ut distinctio tenetur corporis corrupti eos. Culpa in quis id est quis. Quas et et iusto repellendus assumenda. Aliquam itaque eum fugit ea debitis et aspernatur. Voluptatem commodi officia officia qu\",\n \"value\" : { }\n }, {\n \"code\" : \"02iinni5rmrl72zq5arndmnx025ac9zzv42nliii5vjmwlm1stedknavwskl953nfs24746ygfz5ekq8ffpnhg4lkrw612rhdqtv5p67qa0742310xzs8pzq4jl2fa2rnmsby89megsr\",\n \"field\" : \"ekx0cdvfee0jfdh2tvewl4xklnot5w5iwy7bclfm5g7zmbo8z0qp6gk4hnxdadbwrrc3d6a43bxgrg6v0rkwglco2m1rxbrj3sbfkisojmqiflphgr6xxldt6bltcn9cop9ahoyq5ibk2szucpwwje7aj6sm741bri9q70ebqfgcobqqadntgeyfxdz586rn\",\n \"resource\" : \"c90ssd41svcb6zdqvfn371vna7ps7bqiy5byuthaapscj8368nys9kgq0io1hke32lynxxqriwimsaiab4zyg6q6y\",\n \"index\" : 2320434690971224987,\n \"message\" : \"Odio ut nemo blanditiis. Est aspernatur ut quam soluta. Maiores atque dolorum sunt. Modi deserunt dolorem qui ad aut in ut.\",\n \"value\" : { }\n }, {\n \"code\" : \"zbgav7xyc438yzp2q1upa5jcilqg0ou0fatatmnxa9dn5pvem2mexxueb788a0kgo1391hcz2fx1bd574okwx8z13k2u24kvt37v5shdvl7re1c0d0tr18x6ucoptibz\",\n \"field\" : \"sl9f0l3uqvzxgyrzmjre17j5oq1z8fm4w8nq7z0yyo9h3zi2lvhej07w7i4nb28timqi99dx25q\",\n \"resource\" : \"pwsqe5z7fjciuhtgtchqaejxn1gvk71to98dkyx1giy5gobrredtm7\",\n \"index\" : 5275966564091442929,\n \"message\" : \"Facere ut animi. Consectetur ea veniam laborum officia ut optio. Repellat incidunt eveniet molestias possimus molestiae.\",\n \"value\" : { }\n } ]\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "a7eb79a8-901c-434f-96bd-b059ca02e2ff", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.885857Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/create-commit-comment", + "schema": { + "description": "Validation Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "errors": { + "items": { + "properties": { + "code": { + "type": "string" + }, + "field": { + "type": "string" + }, + "index": { + "type": "integer" + }, + "message": { + "type": "string" + }, + "resource": { + "type": "string" + }, + "value": { + "oneOf": [ + { + "nullable": true, + "type": "string" + }, + { + "nullable": true, + "type": "integer" + }, + { + "items": { + "type": "string" + }, + "nullable": true, + "type": "array" + } + ] + } + }, + "required": ["code"], + "type": "object" + }, + "type": "array" + }, + "message": { + "type": "string" + } + }, + "required": ["message", "documentation_url"], + "title": "Validation Error", + "type": "object" + } + } + } + }, + "insertionIndex": 772 + }, + { + "id": "42b39987-3091-42d4-8b95-028f3b366f22", + "name": "Create a commit comment", + "request": { + "urlPath": "/repos/nl0twsb7ta0cmghuculqi58ir4ynf9d117glkj5eygezvojp6ex0amco8cgrohx1wrl1cfrbhutox9nz7n7ocaq7tg59pwmzgkxausao1upaxshpafz2m0me569jmbd7vslv0w57jxedgw7jkzla20hppw3gbxgg4il0sqsse87xc1fg0v/n9frt0oumy6hzg2bvewkc9588s4lo0ipeojb2n341c9cxbveo2b56h28m4xcja/commits/p4c97p7wzd361ffwff7ci8gu618e7s68s0xc6cryit2zo3lund46rv032hrvwf2lu8aexky81qlqc68emsmrm/comments", + "method": "POST" + }, + "response": { + "status": 403, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/804996\",\n \"message\" : \"Est aut et illo ut odit totam at. Voluptas alias aliquid temporibus perferendis. Et saepe rem dolores.\",\n \"url\" : \"https://web.example.mocklab.io/659989\",\n \"status\" : \"dve7ba1w8rjikj5jbash\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "42b39987-3091-42d4-8b95-028f3b366f22", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.885355Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/create-commit-comment", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 773 + }, + { + "id": "0008f7e0-88f4-4799-a777-39d72ec2898e", + "name": "Create a commit comment - default", + "request": { + "urlPath": "/repos/lilgptxl1bnnw59flyu1ypebxc8httsed28jmq9hsv35rzpcdpwdngk3l6w7z7/agrxiijiett2mx1q21jm0zc0i5i7riir0pzmvqw3sambt6ehkxgw6rucvtqtqix8/commits/wtpc7lka78fxkybv0l17fo5m5teqorciay6knb0wzgoeyh4d6ar4fhoae2pirzas0iyvr3svdoae27ucdvedxtuhmufqlr2ly62j0tnmgwgdsjyw7mq5taltglqcbtllkto8hhz14h22ffmtz6/comments", + "method": "POST" + }, + "response": { + "status": 201, + "body": "{\n \"author_association\" : \"COLLABORATOR\",\n \"body\" : \"Great stuff\",\n \"commit_id\" : \"6dcb09b5b57875f334f61aebed695e2e4193db5e\",\n \"created_at\" : \"2011-04-14T16:00:49Z\",\n \"html_url\" : \"https://github.com/octocat/Hello-World/commit/6dcb09b5b57875f334f61aebed695e2e4193db5e#commitcomment-1\",\n \"id\" : 1,\n \"line\" : 14,\n \"node_id\" : \"MDEzOkNvbW1pdENvbW1lbnQx\",\n \"path\" : \"file1.txt\",\n \"position\" : 4,\n \"updated_at\" : \"2011-04-14T16:00:49Z\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/comments/1\",\n \"user\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n }\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "0008f7e0-88f4-4799-a777-39d72ec2898e", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.885098Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/create-commit-comment", + "schema": { + "description": "Commit Comment", + "properties": { + "author_association": { + "$ref": "#/components/schemas/author_association" + }, + "body": { + "type": "string" + }, + "commit_id": { + "type": "string" + }, + "created_at": { + "format": "date-time", + "type": "string" + }, + "html_url": { + "format": "uri", + "type": "string" + }, + "id": { + "type": "integer" + }, + "line": { + "nullable": true, + "type": "integer" + }, + "node_id": { + "type": "string" + }, + "path": { + "nullable": true, + "type": "string" + }, + "position": { + "nullable": true, + "type": "integer" + }, + "reactions": { + "$ref": "#/components/schemas/reaction-rollup" + }, + "updated_at": { + "format": "date-time", + "type": "string" + }, + "url": { + "format": "uri", + "type": "string" + }, + "user": { + "$ref": "#/components/schemas/nullable-simple-user" + } + }, + "required": [ + "url", + "html_url", + "id", + "node_id", + "user", + "position", + "line", + "path", + "commit_id", + "body", + "author_association", + "created_at", + "updated_at" + ], + "title": "Commit Comment", + "type": "object" + } + } + } + }, + "insertionIndex": 774 + }, + { + "id": "b94fb48e-cda2-4639-a0ff-c2be597d764e", + "name": "List commit comments - default", + "request": { + "urlPath": "/repos/uegri39ubworctc3yiaqagjxin80c0a13vn5kef0cinx9yecudq3dyac8k21pcrf3ay51gj5qrzx57vogyko99p76ukau7eq41s7c1qcsn0kxt030bsskpp7qix8t8yajhrv5d09fz/79m14t4ukw7vh4lxtg410gam51iyjq4z4vyop9b4x4mzstn15eagrc16pb28lya92zq0fioik6y4xk5w/commits/wuqa9vcnr2ey0wi02fymtnimksfk9of8/comments", + "method": "GET" + }, + "response": { + "status": 200, + "body": "[ {\n \"author_association\" : \"COLLABORATOR\",\n \"body\" : \"Great stuff\",\n \"commit_id\" : \"6dcb09b5b57875f334f61aebed695e2e4193db5e\",\n \"created_at\" : \"2011-04-14T16:00:49Z\",\n \"html_url\" : \"https://github.com/octocat/Hello-World/commit/6dcb09b5b57875f334f61aebed695e2e4193db5e#commitcomment-1\",\n \"id\" : 1,\n \"line\" : 14,\n \"node_id\" : \"MDEzOkNvbW1pdENvbW1lbnQx\",\n \"path\" : \"file1.txt\",\n \"position\" : 4,\n \"updated_at\" : \"2011-04-14T16:00:49Z\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/comments/1\",\n \"user\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n }\n} ]", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "b94fb48e-cda2-4639-a0ff-c2be597d764e", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.884923Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/list-comments-for-commit", + "schema": { + "items": { + "$ref": "#/components/schemas/commit-comment" + }, + "type": "array" + } + } + } + }, + "insertionIndex": 775 + }, + { + "id": "9af59936-2472-41ae-a072-3f3dd4a98eb4", + "name": "List branches for HEAD commit", + "request": { + "urlPath": "/repos/m72cl3pzb823qso173jtgaakhc486og9nt4z3uy5kz4mbo1f4lh5kyjtzqv1ionp1hbg3xsiaoi0b5i27fbc89977gg8mu/fb4ivq94vzo63yh94jxp1kbtybiektllvedginxosbk9c1lj0yvgsb9id7ko11ods4hidmvet7psyzv71wkloz6vm8/commits/qo6zvqirq4n318usdtpsxmmhp41pam9bfm3gysgn9sp6p9cxa5469pdgr5ny1lrkpnyzled2vc4hhrm7aumxz6ekd55o3o3jogh6yrhwih5wurkotc70y97a6fjd35tswx97btxtz2ljjzr2e4b0tfm8fwp7y92bg1hjvzdep0i5bgnc6eyp2yz88k7ji5l5llfuutge/branches-where-head", + "method": "GET" + }, + "response": { + "status": 422, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/281804\",\n \"message\" : \"Voluptatem dolore odit quo voluptatibus dicta quis. Error voluptate voluptates deleniti. Et suscipit ut mollitia minus aut accusantium non. Inventore illum maiores nisi dolorem ex fuga deleniti. Lauda\",\n \"errors\" : [ {\n \"code\" : \"zabj4akf\",\n \"field\" : \"4l7qddxbzhxpyz9m2ri2y6opz9xor43f5ds16qtxymz19oih4tj0n4afe55zh3hy9bbjx5yzdq7c3lxks7l31qj2rp3w1myzmrwgnnrduojsg0ycatbzo4i7cf63dz0z2gbxbi\",\n \"resource\" : \"iwt5p8hbgsakq5219cz7d2imeankn77no5nlwxnxkc66159w07sn53oc2o006c7zemliai655pigcs9yuwqr26dnx1swz98po0sl8civkclsnj4byjxed02x0q8oxdmvrm714zzr4r0aelpol104gpxo293hitny6pgrrzedtgnz9hzz9hc74\",\n \"index\" : 7279930650500451998,\n \"message\" : \"Omnis eaque corporis rerum cum. Ut magnam placeat maxime a libero ratione qui. Iusto tempore nesciunt. Repellendus iure et et et.\",\n \"value\" : { }\n }, {\n \"code\" : \"fpremy0qhtlt8v7ez9xaqx4knp246a8jslr5t0qmz76ldxwjycvhz97ivhejgpec8bkwgv3qmqa02uc4x7am1wqs1n3ylg57\",\n \"field\" : \"eo4h689k4yo53jynyjmw37gfj1zznlcmsnv635ki3aamrpsi5uxol36o48fho02rh2vhq5t1ek46nu22lu0s7f4xm5ng\",\n \"resource\" : \"bowth\",\n \"index\" : 7673652363900876076,\n \"message\" : \"Ut vero quia. Aut voluptatem provident hic corrupti non facere. Quod non aut dicta in rerum occaecati iure. Non adipisci officia exercitationem incidunt eligendi doloremque et.\",\n \"value\" : { }\n }, {\n \"code\" : \"oqmlua8lujtmxhy2sitsh0086r6r6ue9h1p4ngxnly5lnaskpu571qh4jscav9qz15363jllshdaocnszna1x65a0ajf6vpq9nnz02x9xz2f9n6ukw409l282x1ye16o0sntk241chi8h4hiq9ektbsw91t\",\n \"field\" : \"1h3dmg2dvu98g0b4kz022kwbn9mq18tsyo37vhvhoq9xv7tg5iol4adsv1g9n4u5cdwu0ph3gpunil1fqxs\",\n \"resource\" : \"adhjfkrhu30n8\",\n \"index\" : 5855377717078776176,\n \"message\" : \"Et ducimus maxime labore omnis ut doloribus. Iusto ut fugit eos maiores dignissimos iure. Consequatur aut accusantium facere deserunt eos et. Ad quia dolores. Et non non non et odit consequatur quod.\",\n \"value\" : { }\n } ]\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "9af59936-2472-41ae-a072-3f3dd4a98eb4", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.884852Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/list-branches-for-head-commit", + "schema": { + "description": "Validation Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "errors": { + "items": { + "properties": { + "code": { + "type": "string" + }, + "field": { + "type": "string" + }, + "index": { + "type": "integer" + }, + "message": { + "type": "string" + }, + "resource": { + "type": "string" + }, + "value": { + "oneOf": [ + { + "nullable": true, + "type": "string" + }, + { + "nullable": true, + "type": "integer" + }, + { + "items": { + "type": "string" + }, + "nullable": true, + "type": "array" + } + ] + } + }, + "required": ["code"], + "type": "object" + }, + "type": "array" + }, + "message": { + "type": "string" + } + }, + "required": ["message", "documentation_url"], + "title": "Validation Error", + "type": "object" + } + } + } + }, + "insertionIndex": 776 + }, + { + "id": "18a1c82c-1a16-454c-976c-2cc7f87134cf", + "name": "List branches for HEAD commit", + "request": { + "urlPath": "/repos/zrtroty1j4tob6hfssq62h15dswm6geynwlsz4yvov7hc6o8ednka9tsuqrfkkf3e2kl8idzkoggcxo2dk9e22swv/p2cxhou50lrjq9xcxl941z2ryax7tr6bkrueq7uqv74ha/commits/ldigtq9kjla01qa780pt070agmes4pusdslwma/branches-where-head", + "method": "GET" + }, + "response": { + "status": 415, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/963173\",\n \"message\" : \"Quidem sed quia. Quas voluptas minus. Ducimus totam quia nam dolorem et sequi. Sequi consectetur voluptatem pariatur repellat inventore in veniam. In necessitatibus repellat vitae reprehenderit aliqui\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "18a1c82c-1a16-454c-976c-2cc7f87134cf", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.884312Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/list-branches-for-head-commit", + "schema": { + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": ["message", "documentation_url"], + "type": "object" + } + } + } + }, + "insertionIndex": 777 + }, + { + "id": "dbf642e4-20b3-4c9b-92d8-43c809ef1462", + "name": "List branches for HEAD commit - default", + "request": { + "urlPath": "/repos/2a3g65uvd6y17a90nrqbqljwbdt5912ez85i5kdct1sz5wizxti35viw/eacs4/commits/fsafq7bew4g3nm1bgdrb/branches-where-head", + "method": "GET" + }, + "response": { + "status": 200, + "body": "[ {\n \"commit\" : {\n \"sha\" : \"c5b97d5ae6c19d5c5df71a34c7fbeeda2479ccbc\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/commits/c5b97d5ae6c19d5c5df71a34c7fbeeda2479ccbc\"\n },\n \"name\" : \"branch_5\",\n \"protected\" : false\n} ]", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "dbf642e4-20b3-4c9b-92d8-43c809ef1462", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.884141Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/list-branches-for-head-commit", + "schema": { + "items": { + "$ref": "#/components/schemas/branch-short" + }, + "type": "array" + } + } + } + }, + "insertionIndex": 778 + }, + { + "id": "dc91fe0f-b49e-4b01-8c91-3711628aef71", + "name": "List commits (application/json)", + "request": { + "urlPath": "/repos/bw9rbzils3mheovzez8j4yitt5bxi1hlyoxcqky9u0eg8tki4yirf8yd2a80u0spizksxv8izy29qmjuiaqduru0j88b0hg8f9atme7jtzyq9044vbkdjr1lz5loc8lyh6r2kpgptg6h4pccbte46k8wkfh5jt6sn1vbk2a33hy/k434jiilualbvplw1tjbq5jp3a96mkvwss7l1nb5x5j811i5r1ax7mysswxhf8tdaoy181u9xciteyvsnuic5pdpba02o0p544pktj3gw5yn5mea8xks6okbwad5qo50lsyurqpj0211rmwqe7j67o/commits", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 500, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/991454\",\n \"message\" : \"Eaque aspernatur fugiat molestias. Non cum molestiae. Accusamus in architecto quibusdam. Voluptatem illo laboriosam et hic nam. Aut perferendis consequatur et.\",\n \"url\" : \"https://web.example.mocklab.io/144217\",\n \"status\" : \"6c69eysbtu0a2jxxt3lq38yc2fllid7\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "dc91fe0f-b49e-4b01-8c91-3711628aef71", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.884063Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/list-commits", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 779 + }, + { + "id": "bab7a0e5-c38f-4eac-b05e-3fa4e503b5f6", + "name": "List commits (application/json)", + "request": { + "urlPath": "/repos/hpvzabili7f87t5yiz2qgkbddzousjgem3uw0d0ub81qwcupvg6fluywztc9x8gutnwwo0xg7hggch/smgbspn2q4llzn85lm51g2y1ioz6h9fmei7e6kahiwxvz0913gjckloqqeaghiswptp4d5owwggj7dzgkdm2j9jyneae983xlolufcq4glerxew6hrl23dwwvw06m44uzm8sxmanuz4kade4ob906txap6jxokjtpceuq/commits", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 409, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/884146\",\n \"message\" : \"Illum eligendi laudantium. Nulla perferendis deleniti. Tempora vel quasi tempora atque cum.\",\n \"url\" : \"https://web.example.mocklab.io/958785\",\n \"status\" : \"fpsm9nnsixxevbu4u5t616m0vzm9418cua5ckyrmbv69gtkfy\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "bab7a0e5-c38f-4eac-b05e-3fa4e503b5f6", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.883827Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/list-commits", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 780 + }, + { + "id": "ca89d8a8-55ac-4ae9-8c15-234821939ffb", + "name": "List commits (application/json)", + "request": { + "urlPath": "/repos/voui6yfvhsvoq9lvn5ivuopom5t72ejyi/k17h3z5awhaznq0q588fopydd1bwk17qf7qnmxyun8wdmfcsy8qj3n57jhgj742krygminpy/commits", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/106719\",\n \"message\" : \"Qui incidunt sit. Pariatur eaque modi sit in distinctio. Laboriosam eveniet ipsam ipsa et animi et. Eos quibusdam veritatis enim atque.\",\n \"url\" : \"https://web.example.mocklab.io/142449\",\n \"status\" : \"vajqvsduogryju74isxzpiw8efz08qie8yupygb766xylyfk2196byw5puc4rt92g579v4x9h8azaifm47gfdv1pj4lbrff3cve5e7v8rfhixft272jb6l\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "ca89d8a8-55ac-4ae9-8c15-234821939ffb", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.8836Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/list-commits", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 781 + }, + { + "id": "39c7cf36-8fce-464f-b94a-28f1e9835b14", + "name": "List commits (application/scim+json)", + "request": { + "urlPath": "/repos/2n31unii/790izqsjvgpo24hfso0kbcppkxvzvgs/commits", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/scim+json" + } + } + }, + "response": { + "status": 400, + "body": "{\n \"schemas\" : [ \"1voq1dosr6jjsryt4skm8ctzk595sp5560pt7q9qsx2xncnlbk24t45axo6ul6sbgk\", \"mybfwjlru41isz7kz40iqbhwj3lkztfm7gyuy6efcl5l81ale5hdzdgn62u0l6u6twfj74795sr\", \"ujypapc2ghp567\", \"ibfbfgy75o60owj7750t2xkjt3i1z2090pga66yc6yyzhm2phco4nbmp68zu52tffz12ku30dok41e7nawjyzib1s4jgwb3\", \"z51k8n2odw4cmulxaozhb68z0y0zsc1vrvk3r9nfj9r70sza9t042mgj7puiq\" ],\n \"scimType\" : \"pizs29ncun6zdsu8bqbenb03wr9mc0emdemxmtvy7t1jhf2yka8efgrjmb74o6l2ti6mn4dacdekuhd43n5hmadcf28yoi1owjow09w5up1ntb2qw3wfzkrrrgmv7vxbz7qadlpfonb8txmg6duftvsq6ucg1bmxa3x8v4ns41\",\n \"detail\" : \"ew91h3mtcuj90o78tohtvou3w0zlal7sshl8t8cp6dini57lsq33jxcgt8nufyo9poxfnhpy70fhmqfk3rzbbeuaz5m6fg8a41i4uthzg9i7ojrjy1iod9xmfctcjgah1dc21n1g862qksn8y8wjzwm15cvtcee0l7jjd4j\",\n \"documentation_url\" : \"https://web.example.mocklab.io/291839\",\n \"message\" : \"Vel aliquam sapiente aliquam iusto aut. Omnis cum sed inventore hic. Fugit qui facilis est commodi. Nesciunt quia ducimus corrupti ut. Eaque deserunt fugiat nemo sint ad ullam.\",\n \"status\" : 5647163136282487763\n}", + "headers": { + "Content-Type": "application/scim+json" + } + }, + "uuid": "39c7cf36-8fce-464f-b94a-28f1e9835b14", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.883367Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/list-commits", + "schema": { + "description": "Scim Error", + "properties": { + "detail": { + "nullable": true, + "type": "string" + }, + "documentation_url": { + "nullable": true, + "type": "string" + }, + "message": { + "nullable": true, + "type": "string" + }, + "schemas": { + "items": { + "type": "string" + }, + "type": "array" + }, + "scimType": { + "nullable": true, + "type": "string" + }, + "status": { + "type": "integer" + } + }, + "title": "Scim Error", + "type": "object" + } + } + } + }, + "insertionIndex": 782 + }, + { + "id": "782b2fc9-d82b-4a2c-92c9-85dc7a0d74fb", + "name": "List commits (application/json)", + "request": { + "urlPath": "/repos/jsea9g8aglwg9izmuzbrgvc4rl090vz1k0bdrhisdrsm435hci3occlqpdmjycp4y83sv7k4k1voevg887461pvhzfzbx9pgizhv544bapa7fvaekhh3tjqs1856gvj9nmay83fvik8bmd9jf6a1x8rrckwgtvko6w6pek1zsh2chfkkin9lcaczrmxda0e8py4ktjb/aapocaghha5jjj35lgjl1kb8fj5vvbmbenxe461vwxhoxyl0me2nyk362olbwu7mw27celdx38a19q0vng3em0wx2e12cihct0h9s7t7y/commits", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 400, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/940283\",\n \"message\" : \"Commodi et beatae rem sed beatae velit rerum. Dolor ex iure et quidem. Perspiciatis aut consequuntur.\",\n \"url\" : \"https://web.example.mocklab.io/302378\",\n \"status\" : \"eprqra9d2a28gjp6ayv488bpu6u2i1g01b2ovatb2ivnr72ftl2yas104with5hykozb9ixnnrznkr0eld\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "782b2fc9-d82b-4a2c-92c9-85dc7a0d74fb", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.883082Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/list-commits", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 783 + }, + { + "id": "d8ca0686-ada5-4fa9-a0f3-882aa076e7aa", + "name": "List commits (application/json) - default", + "request": { + "urlPath": "/repos/jdrih25gjqc15qkvwtnnae5jwfer5h3p0ta9bvdlamxibkpvkwuf8db7n5at4f6b/7rw4z2dctbmpfgemrd058fe7odcvcoe73dwe144rb99ltuu0k3qer6kb530x9opkqvt16he39cz7ukwhqq70uehr97kr7bvlglrwwe9cbrnae0roqf49p1fajq54t8ovqxvsovwiueirllst7xolg5gs/commits", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 200, + "body": "[ {\n \"author\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"comments_url\" : \"https://api.github.com/repos/octocat/Hello-World/commits/6dcb09b5b57875f334f61aebed695e2e4193db5e/comments\",\n \"commit\" : {\n \"author\" : {\n \"date\" : \"2011-04-14T16:00:49Z\",\n \"email\" : \"support@github.com\",\n \"name\" : \"Monalisa Octocat\"\n },\n \"comment_count\" : 0,\n \"committer\" : {\n \"date\" : \"2011-04-14T16:00:49Z\",\n \"email\" : \"support@github.com\",\n \"name\" : \"Monalisa Octocat\"\n },\n \"message\" : \"Fix all the bugs\",\n \"tree\" : {\n \"sha\" : \"6dcb09b5b57875f334f61aebed695e2e4193db5e\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/tree/6dcb09b5b57875f334f61aebed695e2e4193db5e\"\n },\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/git/commits/6dcb09b5b57875f334f61aebed695e2e4193db5e\",\n \"verification\" : {\n \"reason\" : \"unsigned\",\n \"verified\" : false\n }\n },\n \"committer\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"html_url\" : \"https://github.com/octocat/Hello-World/commit/6dcb09b5b57875f334f61aebed695e2e4193db5e\",\n \"node_id\" : \"MDY6Q29tbWl0NmRjYjA5YjViNTc4NzVmMzM0ZjYxYWViZWQ2OTVlMmU0MTkzZGI1ZQ==\",\n \"parents\" : [ {\n \"sha\" : \"6dcb09b5b57875f334f61aebed695e2e4193db5e\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/commits/6dcb09b5b57875f334f61aebed695e2e4193db5e\"\n } ],\n \"sha\" : \"6dcb09b5b57875f334f61aebed695e2e4193db5e\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/commits/6dcb09b5b57875f334f61aebed695e2e4193db5e\"\n} ]", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "d8ca0686-ada5-4fa9-a0f3-882aa076e7aa", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.882837Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/list-commits", + "schema": { + "items": { + "$ref": "#/components/schemas/commit" + }, + "type": "array" + } + } + } + }, + "insertionIndex": 784 + }, + { + "id": "218cac29-6e07-410f-99ad-b5d9954aa1cd", + "name": "Delete a commit comment reaction - 204", + "request": { + "urlPath": "/repos/r5qjxo3rqtmkolci5ri3mqbsappgr475tudkj5hkejwn8ufxe6sof86xhv8zlvhcz1yywqxdhhv0lkouizi7dj4sseyqe4fkeozvkdzv2z9ima5xig6v006t0fqw5kqi79u8wkiq8/r4x7n53cma40iwd6tyqrch7il80fkminqrg9ltxr3aghcg2r3azub3icgafhijbag836mgall79tf0w7s7vabiy37ent3ve1cq0iu8iicfkdqq2o7ddawbz71oymdj/comments/7548398773523874514/reactions/9206355616167712077", + "method": "DELETE" + }, + "response": { + "status": 204 + }, + "uuid": "218cac29-6e07-410f-99ad-b5d9954aa1cd", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.882758Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "reactions/delete-for-commit-comment" + } + } + }, + "insertionIndex": 785 + }, + { + "id": "d8ad7158-73e6-439d-b732-381e79f313c9", + "name": "Create reaction for a commit comment", + "request": { + "urlPath": "/repos/mhc35qtfaj9lfhjvi5xuda69do4rmq432mfl9r46ospj9khy2qbaobk50ez1g8i5ju17ilb3sl1hv27o97i3e4ktm7nmfn18hfm4uy4n7brdsfdd0nh5z5suprhxuw6t5a5p7ldxz26p30rea0xi17m/wiy62h30dvl7ht0qxtv2wx4z4ltefyj836jhba6ew75ca8grzh0re6t7awv42ll8lqjdq5lwuldvrsi0tv8r5p8gxubha7frtnnh5c49j86cwgdpw4dispsmprmnwq0ob52juu0mnlkjgzhifvvfk6banocs078bf/comments/970842851153206099/reactions", + "method": "POST" + }, + "response": { + "status": 422, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/853368\",\n \"message\" : \"Voluptate ratione est et saepe cupiditate. Quibusdam iure dignissimos omnis eius corporis voluptas at. Sit atque assumenda est pariatur qui et. Magni sit quia inventore sunt porro. Ad placeat eius per\",\n \"errors\" : [ {\n \"code\" : \"238b11bewsci58imvrruhek9lvhlqrtfrz16ny9vtuzz49115rf2ejmj3asmknru96t5n0ebst65m1n85bcdq00u59wf3xby9l4kxtvyakh9vhue5alpel3hfiq2vn1nmc13gkyrqs3df79oomjwe73h2ptw3jh25yku9d86ks1\",\n \"field\" : \"kahk5n188deyay02r606hbkpdhzdvv0p0oznkzmfeotsji03m62j76j8c3swoqc07t3ref9ip19shtgxbxxayc448dn7kxxh6shocsg8kuj6nlbm0pstbthouqyx6oc07q69h5hlr6hta3v0ihjuywnyqbn7qaxtvy97q0dt9667hbi2ui3\",\n \"resource\" : \"mvq8tjbdic4bch0\",\n \"index\" : 2207726112802405243,\n \"message\" : \"Et vero modi ullam. Dolorem rerum doloribus fugit aut autem illo. Omnis dicta ipsum velit facilis omnis. Repellat ipsum architecto.\",\n \"value\" : { }\n }, {\n \"code\" : \"7c190zq84oz0k6wm6w0dqfxc7y7tjo9phjnfpgnwvkggqidzce7qyiyaacdw\",\n \"field\" : \"xxa8tccy013wilt5g3tiu40idx5a0gdt26ry22k7sbnuistb7xv8tr50xdgz5mv5mqcw0s6zw36ol9fl2i7qgl9wrtdvfz3b2n4wk7q4gzqaa8x8rcoiuqum3j956kfw84\",\n \"resource\" : \"apj\",\n \"index\" : 1619297767236271282,\n \"message\" : \"Officia accusamus atque rerum eveniet optio pariatur. Dolorem perferendis ipsa provident nam rem voluptas nihil. Quod harum corporis sed.\",\n \"value\" : { }\n }, {\n \"code\" : \"sryn2losybbcq1tfu78mn76k323plg7v2fnb2vhkh8oz13p8xeto8od\",\n \"field\" : \"cqexcsj61qxppq1b88f50a6cu3vn2wswjaeesux13iak9ogcjaulfgkirc92nnmies1zcitczz65dexqgpzf5k7rn9tlbp83zt0gsbnrpn76h5qfotw8bqpq7djmthzf4tmhum678vcxe01ooij674ezfbvne4fj6cn6tpjwazccrnic2rzzd0c8r6y6chkrpd33una\",\n \"resource\" : \"531ti8y02bep53rcgqkrqnc0ykunyprlh\",\n \"index\" : 8146559560031382197,\n \"message\" : \"Nostrum omnis doloribus id non voluptatem. Eos ut ducimus at cupiditate est ut. Reprehenderit consequatur itaque ipsam. Sint distinctio sunt voluptas ipsam aut sed corporis.\",\n \"value\" : { }\n } ]\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "d8ad7158-73e6-439d-b732-381e79f313c9", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.882705Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "reactions/create-for-commit-comment", + "schema": { + "description": "Validation Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "errors": { + "items": { + "properties": { + "code": { + "type": "string" + }, + "field": { + "type": "string" + }, + "index": { + "type": "integer" + }, + "message": { + "type": "string" + }, + "resource": { + "type": "string" + }, + "value": { + "oneOf": [ + { + "nullable": true, + "type": "string" + }, + { + "nullable": true, + "type": "integer" + }, + { + "items": { + "type": "string" + }, + "nullable": true, + "type": "array" + } + ] + } + }, + "required": ["code"], + "type": "object" + }, + "type": "array" + }, + "message": { + "type": "string" + } + }, + "required": ["message", "documentation_url"], + "title": "Validation Error", + "type": "object" + } + } + } + }, + "insertionIndex": 786 + }, + { + "id": "dac16da6-0a2f-4478-94f0-b06a6f9607bd", + "name": "Create reaction for a commit comment", + "request": { + "urlPath": "/repos/ozzficbr9ymqts1g41p2nfsyx3m61f4hh6pwhz6ofjswmc6e5dm6goueqcnmogwszzh8pik3tct607ij/7mm5o88wb4wr7hldws7p0ygtlrk9px53klnw3k3gybf7v9q0jjugaje0b/comments/8540798828339986117/reactions", + "method": "POST" + }, + "response": { + "status": 415, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/485954\",\n \"message\" : \"Et ea quis nisi sint rem. Nobis beatae dicta aut quis molestiae. Facere sint doloribus.\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "dac16da6-0a2f-4478-94f0-b06a6f9607bd", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.882173Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "reactions/create-for-commit-comment", + "schema": { + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": ["message", "documentation_url"], + "type": "object" + } + } + } + }, + "insertionIndex": 787 + }, + { + "id": "5b199747-b346-4aff-b5b5-626b55ad5363", + "name": "Create reaction for a commit comment - default", + "request": { + "urlPath": "/repos/r16tsklk7kkp8zud6usupfn/nr0ohpl4r1u3xsx6ureycrfrotp28pi9aop007dxs9j5bg6ql34u1gfu84153luwy1xmvg2og8nmvp5i0peb8al71y35tk5h1c3y39ojc4rrcfuefv9weibc31afj9p9arntsauomcabvktizz8pz0/comments/2984712979759176827/reactions", + "method": "POST" + }, + "response": { + "status": 201, + "body": "{\n \"content\" : \"heart\",\n \"created_at\" : \"2016-05-20T20:09:31Z\",\n \"id\" : 1,\n \"node_id\" : \"MDg6UmVhY3Rpb24x\",\n \"user\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n }\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "5b199747-b346-4aff-b5b5-626b55ad5363", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.882024Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "reactions/create-for-commit-comment", + "schema": { + "description": "Reactions to conversations provide a way to help people express their feelings more simply and effectively.", + "properties": { + "content": { + "description": "The reaction to use", + "enum": ["+1", "-1", "laugh", "confused", "heart", "hooray", "rocket", "eyes"], + "example": "heart", + "type": "string" + }, + "created_at": { + "example": "2016-05-20T20:09:31Z", + "format": "date-time", + "type": "string" + }, + "id": { + "example": 1, + "type": "integer" + }, + "node_id": { + "example": "MDg6UmVhY3Rpb24x", + "type": "string" + }, + "user": { + "$ref": "#/components/schemas/nullable-simple-user" + } + }, + "required": ["id", "node_id", "user", "content", "created_at"], + "title": "Reaction", + "type": "object" + } + } + } + }, + "insertionIndex": 788 + }, + { + "id": "3a4cf64f-bb8a-40f4-9f7f-291e2436ba27", + "name": "Create reaction for a commit comment - default", + "request": { + "urlPath": "/repos/xzljwkujagc5v0iz2d4nz214kiq27fcu2qqua7h38ytn541qakilu1gmwgnh80ljhuix9ctoyyyr6zi3au1qzgv7ef1jqaz93c1t6rnish259th6vs0u0ct0lv9hb9hz8be5oce22mnd6e70tq1kkni4/lujx3hgwcmkh6v5z6m4l29orwxlcks2qjnsvqppxfu64rb990nbf1x6yxlrrdpq73k7lwamv9bah9mzkjiyy7oyjowm2uafaxmz7ic3x/comments/3849671233099485940/reactions", + "method": "POST" + }, + "response": { + "status": 200, + "body": "{\n \"content\" : \"heart\",\n \"created_at\" : \"2016-05-20T20:09:31Z\",\n \"id\" : 1,\n \"node_id\" : \"MDg6UmVhY3Rpb24x\",\n \"user\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n }\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "3a4cf64f-bb8a-40f4-9f7f-291e2436ba27", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.88194Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "reactions/create-for-commit-comment", + "schema": { + "description": "Reactions to conversations provide a way to help people express their feelings more simply and effectively.", + "properties": { + "content": { + "description": "The reaction to use", + "enum": ["+1", "-1", "laugh", "confused", "heart", "hooray", "rocket", "eyes"], + "example": "heart", + "type": "string" + }, + "created_at": { + "example": "2016-05-20T20:09:31Z", + "format": "date-time", + "type": "string" + }, + "id": { + "example": 1, + "type": "integer" + }, + "node_id": { + "example": "MDg6UmVhY3Rpb24x", + "type": "string" + }, + "user": { + "$ref": "#/components/schemas/nullable-simple-user" + } + }, + "required": ["id", "node_id", "user", "content", "created_at"], + "title": "Reaction", + "type": "object" + } + } + } + }, + "insertionIndex": 789 + }, + { + "id": "a8cd3644-e501-42ea-8214-c6d03692c6a7", + "name": "List reactions for a commit comment", + "request": { + "urlPath": "/repos/fku06ng6arll6vopkom47up5/vz8kwa4ieitut59731q49ckr9xcdcx0jsl4x78mhrlav7x0u0r/comments/7764372899208006754/reactions", + "method": "GET" + }, + "response": { + "status": 415, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/132143\",\n \"message\" : \"Error consequatur quia qui tempore. Vel itaque debitis. Et sunt ut praesentium.\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "a8cd3644-e501-42ea-8214-c6d03692c6a7", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.881823Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "reactions/list-for-commit-comment", + "schema": { + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": ["message", "documentation_url"], + "type": "object" + } + } + } + }, + "insertionIndex": 790 + }, + { + "id": "012693bc-0b98-4199-8ec5-69ce6cb9117d", + "name": "List reactions for a commit comment", + "request": { + "urlPath": "/repos/560kpvgb4fdzoxownr0oqbvfi7ffavpbbfc8lk5681guowq59n6picn3ssmo4vx1bqgjuvd12y8loy113m16wd6kn1cug8eyoazgng6ai9536i6u8klks2bv6zo9s9ts2sm7v66r/prk036nm5iv974v74oiurhqlb1mlhwrh8h7c47mzgakohg3xgbmyvlw5ev09ps2fzt659fcoblkkckcb1apkjlnky52yhterjk9p35xp9oh0a/comments/5353961760928145621/reactions", + "method": "GET" + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/944507\",\n \"message\" : \"Non dolorem blanditiis. Delectus maiores autem id fugiat sapiente. Et omnis rem.\",\n \"url\" : \"https://web.example.mocklab.io/276241\",\n \"status\" : \"wr49nwqskqr362zc216czlts3gu70k681stmoyu1gm67fuip9w09q\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "012693bc-0b98-4199-8ec5-69ce6cb9117d", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.881651Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "reactions/list-for-commit-comment", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 791 + }, + { + "id": "10066006-5654-4092-9e77-fd5f68b2ccd6", + "name": "List reactions for a commit comment - default", + "request": { + "urlPath": "/repos/72qq11t4ber1kr2t0p0pga2p2ext8bue7ss4w3u5/5oq940lwrd8wn7oh1h435b/comments/8137786152999988187/reactions", + "method": "GET" + }, + "response": { + "status": 200, + "body": "[ {\n \"content\" : \"heart\",\n \"created_at\" : \"2016-05-20T20:09:31Z\",\n \"id\" : 1,\n \"node_id\" : \"MDg6UmVhY3Rpb24x\",\n \"user\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n }\n} ]", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "10066006-5654-4092-9e77-fd5f68b2ccd6", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.881424Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "reactions/list-for-commit-comment", + "schema": { + "items": { + "$ref": "#/components/schemas/reaction" + }, + "type": "array" + } + } + } + }, + "insertionIndex": 792 + }, + { + "id": "df43d162-1010-4558-b543-d71d1445dc7e", + "name": "Update a commit comment", + "request": { + "urlPath": "/repos/if8m7rvbgurvqvmcu7pmpbkaz1b8ny4f3tw37la51xrxch5xdu1xlbjvo7urc2xhxziokl9j8yergm00go9dv34re41ef71216qow1xx1hv2psucnxq7v5054t6zuksq3lsd5jakptjqewolpgejxfmt71z6s17puhbt5hjbs7f75jcwuy20lf23rd19hqugf6/iat882x0zdl7n7upe1dlbv1grzv96euwmekplkli1tqh17hsqwvl75qyj2ab60c3vxrq10zo00no33q7hb7ohli66j78svu9trxb5kb3ln/comments/2387639602056821443", + "method": "PATCH" + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/619698\",\n \"message\" : \"In aut eum alias occaecati dolores qui laudantium. Ut et nisi sapiente. Accusantium illum quos. Sed non quo. Fugit voluptatibus quo eum aliquam itaque commodi unde.\",\n \"url\" : \"https://web.example.mocklab.io/040406\",\n \"status\" : \"bqe4vjl5yljt20itrodw6a3rblxejfizri4r8rt78sao3rhrnqileomut2fp3e09sox2cepgsk0cbmgt2uor2lueoievf54ri7ptt7f3e52xhnu6h0mrmjcq30zckeujmljksvspz2rvm81mvkdahlq66h2g2s31fnnjxkddpgcm2w02sx\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "df43d162-1010-4558-b543-d71d1445dc7e", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.881357Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/update-commit-comment", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 793 + }, + { + "id": "23efc744-3055-4480-b67d-cdd43b3ffefb", + "name": "Update a commit comment - default", + "request": { + "urlPath": "/repos/ygxb7t2uzzl1h7txklvmup5g5g5unt0o9i170cdjbagg13cqkaf00ozpitpapjm3i4eo02r02iqamva54p26fyesl0actmp6ulksjn0ih7fo2mztc6llklhhtb72vii4o7x6dhapw/mtfd8qp1l2tpdvgaqukx6oea2asyxkb4itp8l8400m7lv8nafuygkagn6cegwg0gocw43f1fax3ig4nnv8f6p8ppvtkasl9nsxsq8sj6zs46gq29zubkuh1dwkyhdmv0thccj6n0abckrrsni5dkrd126po72vt8r9ms0hzeb25oxmrm5aec9/comments/6100129654667965775", + "method": "PATCH" + }, + "response": { + "status": 200, + "body": "{\n \"author_association\" : \"COLLABORATOR\",\n \"body\" : \"Nice change\",\n \"commit_id\" : \"6dcb09b5b57875f334f61aebed695e2e4193db5e\",\n \"created_at\" : \"2011-04-14T16:00:49Z\",\n \"html_url\" : \"https://github.com/octocat/Hello-World/commit/6dcb09b5b57875f334f61aebed695e2e4193db5e#commitcomment-1\",\n \"id\" : 1,\n \"line\" : 14,\n \"node_id\" : \"MDEzOkNvbW1pdENvbW1lbnQx\",\n \"path\" : \"file1.txt\",\n \"position\" : 4,\n \"updated_at\" : \"2011-04-14T16:00:49Z\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/comments/1\",\n \"user\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n }\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "23efc744-3055-4480-b67d-cdd43b3ffefb", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.881113Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/update-commit-comment", + "schema": { + "description": "Commit Comment", + "properties": { + "author_association": { + "$ref": "#/components/schemas/author_association" + }, + "body": { + "type": "string" + }, + "commit_id": { + "type": "string" + }, + "created_at": { + "format": "date-time", + "type": "string" + }, + "html_url": { + "format": "uri", + "type": "string" + }, + "id": { + "type": "integer" + }, + "line": { + "nullable": true, + "type": "integer" + }, + "node_id": { + "type": "string" + }, + "path": { + "nullable": true, + "type": "string" + }, + "position": { + "nullable": true, + "type": "integer" + }, + "reactions": { + "$ref": "#/components/schemas/reaction-rollup" + }, + "updated_at": { + "format": "date-time", + "type": "string" + }, + "url": { + "format": "uri", + "type": "string" + }, + "user": { + "$ref": "#/components/schemas/nullable-simple-user" + } + }, + "required": [ + "url", + "html_url", + "id", + "node_id", + "user", + "position", + "line", + "path", + "commit_id", + "body", + "author_association", + "created_at", + "updated_at" + ], + "title": "Commit Comment", + "type": "object" + } + } + } + }, + "insertionIndex": 794 + }, + { + "id": "1c33681b-b779-4ae3-9738-04890147289d", + "name": "Get a commit comment", + "request": { + "urlPath": "/repos/k8womsbw888d7g1k0jqql9k6k8azdokuxk2g3a6bjjynefsduk8cnvnj61izmbo5o4ohl0v/vrl0bu77kb1twdx7gh/comments/4240379353368297525", + "method": "GET" + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/725152\",\n \"message\" : \"Sint tempore repudiandae. Quis illum quia qui iusto labore velit. Eum est omnis deleniti velit asperiores.\",\n \"url\" : \"https://web.example.mocklab.io/274254\",\n \"status\" : \"ibwm30p3s4k6jsae5c6inz6n29av7990g0esjyce8wfjfkzjoyt7nncwk4ph7o712ntozooa1n0r8g72ln1j5hi31f4kq3dmfchjvjgizg6iii1uf4xkghjhkrzcv8nv3m9r3e6i44i4opo7m\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "1c33681b-b779-4ae3-9738-04890147289d", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.880989Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/get-commit-comment", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 795 + }, + { + "id": "7d31381f-740b-402a-927e-d8820ed0181c", + "name": "Get a commit comment - default", + "request": { + "urlPath": "/repos/6110mnifun66qj6lx4wlxdne58f145mwindjtcyy80e14lkno18wkp3iojo3akkuth7fdr7l8hefjmnqusunq5tch08m8w/bry7rjhh8e8e6a0os4v6eo5pwvpe3yat3j3opltosq/comments/6768064293983773222", + "method": "GET" + }, + "response": { + "status": 200, + "body": "{\n \"author_association\" : \"COLLABORATOR\",\n \"body\" : \"Great stuff\",\n \"commit_id\" : \"6dcb09b5b57875f334f61aebed695e2e4193db5e\",\n \"created_at\" : \"2011-04-14T16:00:49Z\",\n \"html_url\" : \"https://github.com/octocat/Hello-World/commit/6dcb09b5b57875f334f61aebed695e2e4193db5e#commitcomment-1\",\n \"id\" : 1,\n \"line\" : 14,\n \"node_id\" : \"MDEzOkNvbW1pdENvbW1lbnQx\",\n \"path\" : \"file1.txt\",\n \"position\" : 4,\n \"updated_at\" : \"2011-04-14T16:00:49Z\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/comments/1\",\n \"user\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n }\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "7d31381f-740b-402a-927e-d8820ed0181c", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.880752Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/get-commit-comment", + "schema": { + "description": "Commit Comment", + "properties": { + "author_association": { + "$ref": "#/components/schemas/author_association" + }, + "body": { + "type": "string" + }, + "commit_id": { + "type": "string" + }, + "created_at": { + "format": "date-time", + "type": "string" + }, + "html_url": { + "format": "uri", + "type": "string" + }, + "id": { + "type": "integer" + }, + "line": { + "nullable": true, + "type": "integer" + }, + "node_id": { + "type": "string" + }, + "path": { + "nullable": true, + "type": "string" + }, + "position": { + "nullable": true, + "type": "integer" + }, + "reactions": { + "$ref": "#/components/schemas/reaction-rollup" + }, + "updated_at": { + "format": "date-time", + "type": "string" + }, + "url": { + "format": "uri", + "type": "string" + }, + "user": { + "$ref": "#/components/schemas/nullable-simple-user" + } + }, + "required": [ + "url", + "html_url", + "id", + "node_id", + "user", + "position", + "line", + "path", + "commit_id", + "body", + "author_association", + "created_at", + "updated_at" + ], + "title": "Commit Comment", + "type": "object" + } + } + } + }, + "insertionIndex": 796 + }, + { + "id": "553851b9-c729-4fe4-b7d6-3df8e2ba212f", + "name": "Delete a commit comment (application/json)", + "request": { + "urlPath": "/repos/d5ip/5je0ppbrv9vvkz18onrf4tio5q71mshbc5vbygsmfwp3q19ux1fnvk94cgl48ww1zsj9gmmdlphjc4bi4tpkp33gj/comments/8720801854984433822", + "method": "DELETE", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/010280\",\n \"message\" : \"Delectus molestiae harum impedit dolores quos voluptas quae. Autem repellat rerum cupiditate blanditiis ullam libero libero. Et minima est sed numquam.\",\n \"url\" : \"https://web.example.mocklab.io/705753\",\n \"status\" : \"nz00qr5w8yijgnsqnh0b083cbcl7348xas8ecrpepotuwhwqlvesxulvh4l5t4hbo\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "553851b9-c729-4fe4-b7d6-3df8e2ba212f", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.880574Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/delete-commit-comment", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 797 + }, + { + "id": "f8048ef7-aeb5-4304-8522-0f5ddd7c713a", + "name": "Delete a commit comment - 204", + "request": { + "urlPath": "/repos/xrdv3ruxs6m3sridl9k2gaj4djaiqng94l6wow0go75smyhyuo5bl6tebsv9tz938rhqycwlyk4q0ocrb12eu11jubtaq/pyk67rd0krpto82js6qwmdnlpiab4bhv05iguhb1pb94gna38le61p3l10c81a89vhgi1azdo8j9m64bey9a9lnjb52hpebky88t8awwrxz7ltxbet7kw5atgw95gkzuwkxsf0b2vgta1j9n4rwlhip8wvj4yk49qs3on2nfn80ff1vzzykcp0c/comments/3490435543507077521", + "method": "DELETE" + }, + "response": { + "status": 204 + }, + "uuid": "f8048ef7-aeb5-4304-8522-0f5ddd7c713a", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.880342Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/delete-commit-comment" + } + } + }, + "insertionIndex": 798 + }, + { + "id": "23fe3a06-6a7c-45d5-bef0-bcc427b7c193", + "name": "List commit comments for a repository - default", + "request": { + "urlPath": "/repos/yd4taefi6oxgiwla5q2hk8rr4ytnboiir5k6hdsltthn/rd1ovzm6ig6gvrakorfwsv6us6i7u8sijaugceizafpsy1oaugv4hrdf7kwy676fmkq7j6dl424b/comments", + "method": "GET" + }, + "response": { + "status": 200, + "body": "[ {\n \"author_association\" : \"COLLABORATOR\",\n \"body\" : \"Great stuff\",\n \"commit_id\" : \"6dcb09b5b57875f334f61aebed695e2e4193db5e\",\n \"created_at\" : \"2011-04-14T16:00:49Z\",\n \"html_url\" : \"https://github.com/octocat/Hello-World/commit/6dcb09b5b57875f334f61aebed695e2e4193db5e#commitcomment-1\",\n \"id\" : 1,\n \"line\" : 14,\n \"node_id\" : \"MDEzOkNvbW1pdENvbW1lbnQx\",\n \"path\" : \"file1.txt\",\n \"position\" : 4,\n \"updated_at\" : \"2011-04-14T16:00:49Z\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/comments/1\",\n \"user\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n }\n} ]", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "23fe3a06-6a7c-45d5-bef0-bcc427b7c193", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.880292Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/list-commit-comments-for-repo", + "schema": { + "items": { + "$ref": "#/components/schemas/commit-comment" + }, + "type": "array" + } + } + } + }, + "insertionIndex": 799 + }, + { + "id": "e9556c5f-c4c9-4112-b36f-59a02ae32dbf", + "name": "Get repository permissions for a user", + "request": { + "urlPath": "/repos/aqpjt3yd49g2521y5vrq7q71ar0j8i7im8pmrma6i2xd4qcwawstz8682o9uc1wvpkfqegepq42nxmtxrh98285c0fvfnv26ycoxt6s7qiz4gagyt86bblah3dfainn3dafb98ikdo3o8bdcznc7z46bzc0tlqo9vck2ih9rv2asa9fg4se354x94yqq7f/h395x92osf46rzjanyjausrd1q18asfi9vv84od4vntlyqa83eejg84kyne/collaborators/wendell.hermann/permission", + "method": "GET" + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/561752\",\n \"message\" : \"Ex atque possimus tempore molestias. In totam dolores sint quia voluptatem. Reiciendis ut atque dignissimos ipsum architecto sint. Velit sint nesciunt.\",\n \"url\" : \"https://web.example.mocklab.io/177269\",\n \"status\" : \"tx7ofxlmtppxg42mk6rmxj5kizpfuey6z30988xq8dqih2az8nynmnnbnw4dvk9saszby6vtkl54os5vyewqp05yz5onk3pcwuq5sryq97mjrai4lrtw7uvzmpblbkxlavqryun3q2hk\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "e9556c5f-c4c9-4112-b36f-59a02ae32dbf", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.880229Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/get-collaborator-permission-level", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 800 + }, + { + "id": "14daead3-bc4b-4f91-ad47-39644ebdb982", + "name": "Get repository permissions for a user - response-if-user-has-admin-permissions", + "request": { + "urlPath": "/repos/5zy49nsywc6gcovi8q1tvhon888w8uoah0a8zgl59xqojhspgizjro1sbqgtk5f2gyco7rfg7clbxwr8hfudcw42p8ik52zhk2wiu99/20z9boiv49jvskqyloz419r64bn5zmotof0y5amrdk9g2vl6603zdlew5ln4otd1ftcmbcpss6u2bc2x6pf8sfx174sd4pcndyp57k1u138khnrewjaah/collaborators/graig.ledner/permission", + "method": "GET" + }, + "response": { + "status": 200, + "body": "{\n \"permission\" : \"admin\",\n \"user\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n }\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "14daead3-bc4b-4f91-ad47-39644ebdb982", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.879961Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/get-collaborator-permission-level", + "schema": { + "description": "Repository Collaborator Permission", + "properties": { + "permission": { + "type": "string" + }, + "user": { + "$ref": "#/components/schemas/nullable-simple-user" + } + }, + "required": ["permission", "user"], + "title": "Repository Collaborator Permission", + "type": "object" + } + } + } + }, + "insertionIndex": 801 + }, + { + "id": "c9b25814-d6d2-459f-a439-e3124a292d47", + "name": "Add a repository collaborator (application/json)", + "request": { + "urlPath": "/repos/4432sf9pchufaaatu9c75bn1zd3gf733s7xxk2x8hi8vc6zl52nna640vanbjlbdz0ne76p8npbefivn1jeidc9dz8nzm5r7xqahqen7s/sgtkouudftvbf3wjz4ek47eiaztlx0fqlthth/collaborators/albert.rippin", + "method": "PUT", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 422, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/542146\",\n \"message\" : \"Tempora beatae sit est ipsum qui eveniet. Quos porro maiores dolores sed alias tempore. Molestiae possimus aspernatur velit. Sit aut dolores fugit voluptatem. Harum sed accusantium.\",\n \"errors\" : [ {\n \"code\" : \"myi4paybmwwcby26711vcsb6jleb2d4vdnpli96mracy208hgeo5fqccqqy4fwwvxcv8ceispylzzd0fod4cepkh9ye6q5xju7uusjfeeng87ry63jfzccj9c9drocxbkpebm65x564pmc1gpr0qaoco3\",\n \"field\" : \"jjs5euegdhq120km5s8iq3mdbqcit4j8kw008wboeobxwamiqcegexd3flaqqnlreo2bme9pplu6u3pcy2lkwtrnfc4tzqzhauqlpm89kf1weldsek7i8xzd0q3vr5wnn0zvc6ye4v2vbhvcevtlindh2c8s2c8w6eft70\",\n \"resource\" : \"b3tp2ww6id32x2orskfu0rost39elxrj\",\n \"index\" : 4972777524716525577,\n \"message\" : \"Natus quis harum necessitatibus. Doloribus reprehenderit est ut distinctio suscipit corporis veritatis. Nihil inventore ut. Placeat omnis ea vero dolorem tempore. Sunt aspernatur omnis nulla iusto.\",\n \"value\" : { }\n }, {\n \"code\" : \"9kzvvgi2il072iuuyf0impoyxly6vexb76vclv5kvdqppkvgj0jdz49ycs7izolrwfstx983frysydvbweqcmdbwskzhepouzu55l5\",\n \"field\" : \"1h1vixct1gvksl3u2iobxb4volbzj979my0289y3kxychksbbma8xg6t4k572ns25j6i68w61r9pfz5cf4kzc1548p\",\n \"resource\" : \"9l4xdwowo7ubgo51icku0yms8gkpzmiuk9toppkzombvz4922a24uvz9ow23xpv0tjxyn6gy2tn7xz95dhp7huqhhim6k47pwrkv7437iqvm7zlm475e4k6fr5watrx7\",\n \"index\" : 7017292983295808968,\n \"message\" : \"Quos aperiam est magnam. Ea maiores et dolorem id quod. Officiis alias minus porro commodi cupiditate. Corrupti voluptatibus sint sed. Eius necessitatibus explicabo similique quis cumque rerum eligend\",\n \"value\" : { }\n }, {\n \"code\" : \"mol2cyvztllbowfbkcz349udv2\",\n \"field\" : \"m0rxuyoafdlh27gijes0dcvqe6koft1k7uu0lk60g3ac2cfgtsbx\",\n \"resource\" : \"pimsem6cud14c78w8sb7zo6umb8gug1ckbxbjei93aziq27q28daevid5q1gtzwnqkvm8qannk11g1vmdxdqdq8krza7rimarn2svhbs790cvux118n36x5nf91z3mpq66ldvdt2re8359539bfmtvsicj7v1ey71b3ep3nia0m7g4asms\",\n \"index\" : 8796007793354238813,\n \"message\" : \"Rerum ea est et id placeat unde. Architecto mollitia quae. Fugit sequi voluptates qui debitis dicta.\",\n \"value\" : { }\n }, {\n \"code\" : \"un5j7oyjxit08eq2nty7vc8n8e3jsmlfgkecl33vgxag10mavux4c4ua9jvi9c4ejmoaqhk2sy1mba9v95r4glsxts6gd7bpd7j486oz5vexj46fg2xaxjemgbihlobrflfbnh0o2212ghmwxyt6phjjlu9usi4rpv12d8jjxeq0emgsprs0jc099x9j\",\n \"field\" : \"sjj2gsf8u0a3p9wm75k3ytnrwcu0hbpggtqf5zfb69\",\n \"resource\" : \"affdnef639fri0rf2r15po57wu4yvkud5urz15iepbaob51mqlxq4bd\",\n \"index\" : 4294482038497218112,\n \"message\" : \"Veniam nihil eum cumque soluta iure. Saepe consequatur et sed consectetur aliquam. Ratione ut et dolorum aut.\",\n \"value\" : { }\n }, {\n \"code\" : \"xx3nz46u4otlc4310y2jb4u7tcryglrkwxkw5w239qejnm00on72gvrulgavxugpi85dn7p15pdsz4lx4yyzcp0kabgw9zqv1s\",\n \"field\" : \"suyt1uvhzbnb4bu31pxdxgqhiwq0nme67no9kdu627tguj7ugxn6c8bt25ol63y63f71cjtenvkm2dalh13yueq9ubldwbdsa0l0dit5y5o1kke7wdhvfzbzkql067b4zgbs7m0uytx5w9o121kbzya9ny3a9\",\n \"resource\" : \"x21bzf17yqhgbrymmec4mv4ihcj5wg7ult0w0jgob2p3vxwvl8ccmlwaoxav1yp2pwujs7rz9s55basnz\",\n \"index\" : 8448112551558978277,\n \"message\" : \"Officiis illo non assumenda dolorem accusamus ducimus voluptatem. Tenetur cumque quia sit. Ratione maiores rerum.\",\n \"value\" : { }\n }, {\n \"code\" : \"cna5gj4j1oanxdnr6lc9xyp4puwramfkka57a5\",\n \"field\" : \"tz4u1hh4fihg9oai0q7s83ex2dc704qjzp4hp4209ajkuw9bv10niyn7e8480ilfq635xb0k8uqwplmtic7gubetytb9gcfi41e9jjud0k5ij4f927foqy0s1259clhyop19dnwezxq5axieiuh9d8vbj4p0g6uvoo8p946lr9jp\",\n \"resource\" : \"msey1tkrj12zn0vqxldutqbklqmi8tqg8vkfbnqxucne7llf1wxxapii1hbw2r7fjwv4szfjbwd734frcb0t06n2gw7hl1jceuep80r3tm45yfpw095wicglin3xlxgatgmaqf2zhzh8lzrrb\",\n \"index\" : 8829532698777919716,\n \"message\" : \"Veritatis et sequi. Eum veritatis et optio temporibus. Nemo doloremque rerum exercitationem eum. Neque eos possimus inventore ratione recusandae. Quia et magnam libero ipsa.\",\n \"value\" : { }\n } ]\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "c9b25814-d6d2-459f-a439-e3124a292d47", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.879848Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/add-collaborator", + "schema": { + "description": "Validation Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "errors": { + "items": { + "properties": { + "code": { + "type": "string" + }, + "field": { + "type": "string" + }, + "index": { + "type": "integer" + }, + "message": { + "type": "string" + }, + "resource": { + "type": "string" + }, + "value": { + "oneOf": [ + { + "nullable": true, + "type": "string" + }, + { + "nullable": true, + "type": "integer" + }, + { + "items": { + "type": "string" + }, + "nullable": true, + "type": "array" + } + ] + } + }, + "required": ["code"], + "type": "object" + }, + "type": "array" + }, + "message": { + "type": "string" + } + }, + "required": ["message", "documentation_url"], + "title": "Validation Error", + "type": "object" + } + } + } + }, + "insertionIndex": 802 + }, + { + "id": "edeec01e-38ff-4423-93ac-fbd993c0d34f", + "name": "Add a repository collaborator (application/json)", + "request": { + "urlPath": "/repos/7y0nc3bdn5g3yjpbhjxzd7pmpbm8bxsvsqq4s1z5l8x6u4om7mbeoxsqwy6dgmh4l5hffz7n81gkua0q4mc7c1xch1mxgiswz35q9m9tqy61ip4yk88ox/oec6hyi03m9raklqbqi2wcxqvoqztoe0lgzwbx7lheuf9lczy22xdlajh1q8mqi7z3ae45yeb61uaddwhz58e5zh7pth9hadf2iau3iqu12vzjt3flnev1bg6mkndbyt942anmrq5lse3wnqtr3uxoyultzg67js0d3/collaborators/reuben.jacobson", + "method": "PUT", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 403, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/921829\",\n \"message\" : \"Sint voluptates dolorum at veritatis sit repellendus beatae. Nobis et non. Rerum ullam debitis dolore quae nemo. Architecto sit laboriosam recusandae impedit reiciendis ipsam. Quis veritatis quos vel.\",\n \"url\" : \"https://web.example.mocklab.io/431015\",\n \"status\" : \"zsgvp2s5gtyz5o6jyizhcz4lzifq8qljapbpoy88rjz3zvrmgz\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "edeec01e-38ff-4423-93ac-fbd993c0d34f", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.879059Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/add-collaborator", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 803 + }, + { + "id": "a8b39dc5-e84c-4799-9865-0f6689f5ba18", + "name": "Add a repository collaborator - 204", + "request": { + "urlPath": "/repos/m5o7yrix8h2c90t5wy0s7xqb8ar8b4oqr46ieuntao0r0zo2bkqth48cjn0dy88ebaxp/gfwenolfzjwv84n27xb457yhbx5vv942odvaob6oyqjr4t4qg6hrfsny3d7plny5zt9y87uby8x0d5uxdqviu3a12mant5v2s0p0b0keh1q06ie500qfretpy4e14up5l9b9fp68siyt8ljtwd962keqhg0m9gle1wzg/collaborators/carl.balistreri", + "method": "PUT" + }, + "response": { + "status": 204 + }, + "uuid": "a8b39dc5-e84c-4799-9865-0f6689f5ba18", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.878799Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/add-collaborator" + } + } + }, + "insertionIndex": 804 + }, + { + "id": "621013d9-cb7b-43a0-a766-ec1d9d70a9f6", + "name": "Add a repository collaborator (application/json) - response-when-a-new-invitation-is-created", + "request": { + "urlPath": "/repos/mbr621d9fc4dqw8wcnwuz9vwslpo5wcij50eswhviossgzaej84rpogieadzva6egd6cjs8f7aigopuejxkwmn1jf4q41g2n50hinmhb5her546weqsj20e47/nhhu20fe2knq0cdlryg7j11q4n655asl3b3xux14/collaborators/ozella.koepp", + "method": "PUT", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 201, + "body": "{\n \"created_at\" : \"2016-06-13T14:52:50-05:00\",\n \"html_url\" : \"https://github.com/octocat/Hello-World/invitations\",\n \"id\" : 1,\n \"invitee\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"inviter\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"node_id\" : \"MDEwOlJlcG9zaXRvcnkxMjk2MjY5\",\n \"permissions\" : \"write\",\n \"repository\" : {\n \"archive_url\" : \"https://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref}\",\n \"assignees_url\" : \"https://api.github.com/repos/octocat/Hello-World/assignees{/user}\",\n \"blobs_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/blobs{/sha}\",\n \"branches_url\" : \"https://api.github.com/repos/octocat/Hello-World/branches{/branch}\",\n \"collaborators_url\" : \"https://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator}\",\n \"comments_url\" : \"https://api.github.com/repos/octocat/Hello-World/comments{/number}\",\n \"commits_url\" : \"https://api.github.com/repos/octocat/Hello-World/commits{/sha}\",\n \"compare_url\" : \"https://api.github.com/repos/octocat/Hello-World/compare/{base}...{head}\",\n \"contents_url\" : \"https://api.github.com/repos/octocat/Hello-World/contents/{+path}\",\n \"contributors_url\" : \"https://api.github.com/repos/octocat/Hello-World/contributors\",\n \"deployments_url\" : \"https://api.github.com/repos/octocat/Hello-World/deployments\",\n \"description\" : \"This your first repo!\",\n \"downloads_url\" : \"https://api.github.com/repos/octocat/Hello-World/downloads\",\n \"events_url\" : \"https://api.github.com/repos/octocat/Hello-World/events\",\n \"fork\" : false,\n \"forks_url\" : \"https://api.github.com/repos/octocat/Hello-World/forks\",\n \"full_name\" : \"octocat/Hello-World\",\n \"git_commits_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/commits{/sha}\",\n \"git_refs_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/refs{/sha}\",\n \"git_tags_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/tags{/sha}\",\n \"git_url\" : \"git:github.com/octocat/Hello-World.git\",\n \"hooks_url\" : \"http://api.github.com/repos/octocat/Hello-World/hooks\",\n \"html_url\" : \"https://github.com/octocat/Hello-World\",\n \"id\" : 1296269,\n \"issue_comment_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/comments{/number}\",\n \"issue_events_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/events{/number}\",\n \"issues_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues{/number}\",\n \"keys_url\" : \"https://api.github.com/repos/octocat/Hello-World/keys{/key_id}\",\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World/labels{/name}\",\n \"languages_url\" : \"https://api.github.com/repos/octocat/Hello-World/languages\",\n \"merges_url\" : \"https://api.github.com/repos/octocat/Hello-World/merges\",\n \"milestones_url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones{/number}\",\n \"name\" : \"Hello-World\",\n \"node_id\" : \"MDEwOlJlcG9zaXRvcnkxMjk2MjY5\",\n \"notifications_url\" : \"https://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating}\",\n \"owner\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"private\" : false,\n \"pulls_url\" : \"https://api.github.com/repos/octocat/Hello-World/pulls{/number}\",\n \"releases_url\" : \"https://api.github.com/repos/octocat/Hello-World/releases{/id}\",\n \"ssh_url\" : \"git@github.com:octocat/Hello-World.git\",\n \"stargazers_url\" : \"https://api.github.com/repos/octocat/Hello-World/stargazers\",\n \"statuses_url\" : \"https://api.github.com/repos/octocat/Hello-World/statuses/{sha}\",\n \"subscribers_url\" : \"https://api.github.com/repos/octocat/Hello-World/subscribers\",\n \"subscription_url\" : \"https://api.github.com/repos/octocat/Hello-World/subscription\",\n \"tags_url\" : \"https://api.github.com/repos/octocat/Hello-World/tags\",\n \"teams_url\" : \"https://api.github.com/repos/octocat/Hello-World/teams\",\n \"trees_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/trees{/sha}\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World\"\n },\n \"url\" : \"https://api.github.com/user/repository_invitations/1296269\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "621013d9-cb7b-43a0-a766-ec1d9d70a9f6", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.878728Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/add-collaborator", + "schema": { + "description": "Repository invitations let you manage who you collaborate with.", + "properties": { + "created_at": { + "example": "2016-06-13T14:52:50-05:00", + "format": "date-time", + "type": "string" + }, + "expired": { + "description": "Whether or not the invitation has expired", + "type": "boolean" + }, + "html_url": { + "example": "https://github.com/octocat/Hello-World/invitations", + "type": "string" + }, + "id": { + "description": "Unique identifier of the repository invitation.", + "example": 42, + "type": "integer" + }, + "invitee": { + "$ref": "#/components/schemas/nullable-simple-user" + }, + "inviter": { + "$ref": "#/components/schemas/nullable-simple-user" + }, + "node_id": { + "type": "string" + }, + "permissions": { + "description": "The permission associated with the invitation.", + "enum": ["read", "write", "admin", "triage", "maintain"], + "example": "read", + "type": "string" + }, + "repository": { + "$ref": "#/components/schemas/minimal-repository" + }, + "url": { + "description": "URL for the repository invitation", + "example": "https://api.github.com/user/repository-invitations/1", + "type": "string" + } + }, + "required": [ + "id", + "node_id", + "permissions", + "inviter", + "invitee", + "repository", + "url", + "html_url", + "created_at" + ], + "title": "Repository Invitation", + "type": "object" + } + } + } + }, + "insertionIndex": 805 + }, + { + "id": "e583f767-e655-4e76-9852-8303801f1ea4", + "name": "Check if a user is a repository collaborator - 404", + "request": { + "urlPath": "/repos/d6flobb13fst9sssnvhk8txz34ju2vf9dni47y485h36eythvx/o30m5b1het9939n4huxpjo3v19fh00888h4580q5rs230soihm7om867gx135orppbxmfb778kryeqynm7vx2o3c9af3w85a69uwewhnpt5xfq1if2d03zm8f67e19nx2x3sbqntqthlxl6l61ic29l1zgj3tbockdzo4iupfp9pc65m1a49i89ll/collaborators/rema.walsh", + "method": "GET" + }, + "response": { + "status": 404 + }, + "uuid": "e583f767-e655-4e76-9852-8303801f1ea4", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.878538Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/check-collaborator" + } + } + }, + "insertionIndex": 806 + }, + { + "id": "64743c1d-aadc-47b5-be2d-59425c10441a", + "name": "Check if a user is a repository collaborator - 204", + "request": { + "urlPath": "/repos/bj8o7kim2pjywuzijcyve70cv4ibp6qjf7bhtr8b98wktd9tng2yt068dwy06a6udo8zmpylhiw4q37qnwt9y19laxq/k57ozcnrwttvyy56eyy4vsqxb2751rdte38kzta04gf4o7pv2q7b0xip3kkdbhxi8bbaaw19d6comn3efytvizhw9iyadx1neslor2xtbeoc3zq5qub4shj3n/collaborators/barbra.zboncak", + "method": "GET" + }, + "response": { + "status": 204 + }, + "uuid": "64743c1d-aadc-47b5-be2d-59425c10441a", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.878476Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/check-collaborator" + } + } + }, + "insertionIndex": 807 + }, + { + "id": "64d05501-5b0b-4087-ad4b-1bc0403d6b90", + "name": "Remove a repository collaborator - 204", + "request": { + "urlPath": "/repos/sxz4ps8zo1tljegso850v3op3m30gux9s1jbu6nkmo7vso5xl310tp0u39iyt7n08lnschdzqec5z14ftv4kkmsfjfmxqk2sxaat7dx2rz880jf0r0fpz783nu6jj9p4h3aoi3vzed2yy01009h806w65q3bs3ms22c6m5a61hv46fm2evrbw9/4zg9c2a5tms7a5o1h90v8p0iyes4pwny6oasvroyhwjhrztyyi5rf/collaborators/loraine.satterfield", + "method": "DELETE" + }, + "response": { + "status": 204 + }, + "uuid": "64d05501-5b0b-4087-ad4b-1bc0403d6b90", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.878416Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/remove-collaborator" + } + } + }, + "insertionIndex": 808 + }, + { + "id": "f24af354-096f-4f15-9903-1888cb03537e", + "name": "List repository collaborators", + "request": { + "urlPath": "/repos/jyk990ua8mdfwo46wqkjdy5dkqxifvziaxdze37wo/0nkc5l1lgyj4e95bvagl9m42obj4230up68u8g3est6knf3ibqxwl84xgopuv9y/collaborators", + "method": "GET" + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/054039\",\n \"message\" : \"Soluta minima nisi. Ut neque sit commodi doloribus dolor sed. Nobis ducimus velit doloribus laboriosam nihil laudantium. Ea doloribus et sed est aperiam.\",\n \"url\" : \"https://web.example.mocklab.io/549542\",\n \"status\" : \"b5ajgmf5x64wwlz14nzj2a64e47np3sqg1dkksy0ceoau1g826lutycj4ctngele3b6qmvcl8xwuu7aec0gojalapzgcj9e6djjhhga7yr3wg0f2ba4t46q4j8t86x0eykz9pfaydjzk95r4ijgd01ipjt08t7ajhby27xgvbhixg0x8ysmf7hy\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "f24af354-096f-4f15-9903-1888cb03537e", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.878339Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/list-collaborators", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 809 + }, + { + "id": "3e546ae9-d01b-4c9b-ad20-58093da2f7b4", + "name": "List repository collaborators - default", + "request": { + "urlPath": "/repos/xioc5cikspxd7zhbw5d17nc22gvjp8/ukgy3rylqk1a/collaborators", + "method": "GET" + }, + "response": { + "status": 200, + "body": "[ {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"permissions\" : {\n \"admin\" : false,\n \"pull\" : true,\n \"push\" : true\n },\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n} ]", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "3e546ae9-d01b-4c9b-ad20-58093da2f7b4", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.87805Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/list-collaborators", + "schema": { + "items": { + "$ref": "#/components/schemas/collaborator" + }, + "type": "array" + } + } + } + }, + "insertionIndex": 810 + }, + { + "id": "a3deca31-2478-4b08-a059-053384d22c7a", + "name": "Rerequest a check suite", + "request": { + "urlPath": "/repos/olq8gswdb1fqjthg8it2n3mbwln/uyu54jknd5yvgy5hn3pel87mrg6lejhx3p1ejn5bqa0tol6v758k4zay1xac0mnzf7smc8r0jt7zidmq51gckyls6xdizgqgna62il8kgkeljbdxbfp96r48d92yrfaf1xsaure4aoycfjvyjrgoh2r1e798gcn6nnl0cxrzf2mj9kgjchwfr8hs1sjhte5nsyx/check-suites/3478130177855558903/rerequest", + "method": "POST" + }, + "response": { + "status": 201, + "body": "{ }", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "a3deca31-2478-4b08-a059-053384d22c7a", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.87799Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "checks/rerequest-suite", + "schema": { + "additionalProperties": false, + "type": "object" + } + } + } + }, + "insertionIndex": 811 + }, + { + "id": "2b9934ff-94a4-42df-b346-265212013018", + "name": "List check runs in a check suite - default", + "request": { + "urlPath": "/repos/u2czfvoc2we9bvb8ly6e3cb0abqverbnyq7gyy9qj3wvibe3rz/vl5wjcvcpwh52m5w2y1osi40f3rdoqzxfa0yljy5/check-suites/7987917869482679152/check-runs", + "method": "GET" + }, + "response": { + "status": 200, + "body": "{\n \"check_runs\" : [ {\n \"app\" : {\n \"created_at\" : \"2017-07-08T16:18:44-04:00\",\n \"description\" : \"\",\n \"events\" : [ \"push\", \"pull_request\" ],\n \"external_url\" : \"https://example.com\",\n \"html_url\" : \"https://github.com/apps/octoapp\",\n \"id\" : 1,\n \"name\" : \"Octocat App\",\n \"node_id\" : \"MDExOkludGVncmF0aW9uMQ==\",\n \"owner\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/orgs/github/events\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"github\",\n \"node_id\" : \"MDEyOk9yZ2FuaXphdGlvbjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/orgs/github/repos\",\n \"site_admin\" : true,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/orgs/github\"\n },\n \"permissions\" : {\n \"contents\" : \"read\",\n \"issues\" : \"write\",\n \"metadata\" : \"read\",\n \"single_file\" : \"write\"\n },\n \"slug\" : \"octoapp\",\n \"updated_at\" : \"2017-07-08T16:18:44-04:00\"\n },\n \"check_suite\" : {\n \"id\" : 5\n },\n \"completed_at\" : \"2018-05-04T01:14:52Z\",\n \"conclusion\" : \"neutral\",\n \"details_url\" : \"https://example.com\",\n \"external_id\" : \"\",\n \"head_sha\" : \"ce587453ced02b1526dfb4cb910479d431683101\",\n \"html_url\" : \"https://github.com/github/hello-world/runs/4\",\n \"id\" : 4,\n \"name\" : \"mighty_readme\",\n \"node_id\" : \"MDg6Q2hlY2tSdW40\",\n \"output\" : {\n \"annotations_count\" : 2,\n \"annotations_url\" : \"https://api.github.com/repos/github/hello-world/check-runs/4/annotations\",\n \"summary\" : \"There are 0 failures, 2 warnings, and 1 notice.\",\n \"text\" : \"You may have some misspelled words on lines 2 and 4. You also may want to add a section in your README about how to install your app.\",\n \"title\" : \"Mighty Readme report\"\n },\n \"pull_requests\" : [ {\n \"base\" : {\n \"ref\" : \"master\",\n \"repo\" : {\n \"id\" : 526,\n \"name\" : \"hello-world\",\n \"url\" : \"https://api.github.com/repos/github/hello-world\"\n },\n \"sha\" : \"e7fdf7640066d71ad16a86fbcbb9c6a10a18af4f\"\n },\n \"head\" : {\n \"ref\" : \"say-hello\",\n \"repo\" : {\n \"id\" : 526,\n \"name\" : \"hello-world\",\n \"url\" : \"https://api.github.com/repos/github/hello-world\"\n },\n \"sha\" : \"3dca65fa3e8d4b3da3f3d056c59aee1c50f41390\"\n },\n \"id\" : 1934,\n \"number\" : 3956,\n \"url\" : \"https://api.github.com/repos/github/hello-world/pulls/1\"\n } ],\n \"started_at\" : \"2018-05-04T01:14:52Z\",\n \"status\" : \"completed\",\n \"url\" : \"https://api.github.com/repos/github/hello-world/check-runs/4\"\n } ],\n \"total_count\" : 1\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "2b9934ff-94a4-42df-b346-265212013018", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.877921Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "checks/list-for-suite", + "schema": { + "properties": { + "check_runs": { + "items": { + "$ref": "#/components/schemas/check-run" + }, + "type": "array" + }, + "total_count": { + "type": "integer" + } + }, + "required": ["total_count", "check_runs"], + "type": "object" + } + } + } + }, + "insertionIndex": 812 + }, + { + "id": "e7ddde48-9c09-4da4-9a93-eba4b5c7aeff", + "name": "Get a check suite - default", + "request": { + "urlPath": "/repos/425k2xdgf9i9u3maclxeojlb1zcmgmldujwkvtuk78t1hpufmh08/xni5u5zhith2lljddk2lo2ay8rzh0teotyc12fbuasjfpipfu3gucyckbi84nt4ssu0403o225o8ny4lg1mfcas3s9ychhgtme1ln04opj7gkwff7/check-suites/2550575855399187997", + "method": "GET" + }, + "response": { + "status": 200, + "body": "{\n \"after\" : \"d6fde92930d4715a2b49857d24b940956b26d2d3\",\n \"app\" : {\n \"created_at\" : \"2017-07-08T16:18:44-04:00\",\n \"description\" : \"\",\n \"events\" : [ \"push\", \"pull_request\" ],\n \"external_url\" : \"https://example.com\",\n \"html_url\" : \"https://github.com/apps/octoapp\",\n \"id\" : 1,\n \"name\" : \"Octocat App\",\n \"node_id\" : \"MDExOkludGVncmF0aW9uMQ==\",\n \"owner\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/orgs/github/events\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"github\",\n \"node_id\" : \"MDEyOk9yZ2FuaXphdGlvbjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/orgs/github/repos\",\n \"site_admin\" : true,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/orgs/github\"\n },\n \"permissions\" : {\n \"contents\" : \"read\",\n \"issues\" : \"write\",\n \"metadata\" : \"read\",\n \"single_file\" : \"write\"\n },\n \"slug\" : \"octoapp\",\n \"updated_at\" : \"2017-07-08T16:18:44-04:00\"\n },\n \"before\" : \"146e867f55c26428e5f9fade55a9bbf5e95a7912\",\n \"check_runs_url\" : \"https://api.github.com/repos/octocat/Hello-World/check-suites/5/check-runs\",\n \"conclusion\" : \"neutral\",\n \"created_at\" : \"2017-07-08T16:18:44-04:00\",\n \"head_branch\" : \"master\",\n \"head_commit\" : {\n \"author\" : {\n \"email\" : \"octocat@nowhere.com\",\n \"name\" : \"The Octocat\"\n },\n \"committer\" : {\n \"email\" : \"octocat@nowhere.com\",\n \"name\" : \"The Octocat\"\n },\n \"id\" : \"7fd1a60b01f91b314f59955a4e4d4e80d8edf11d\",\n \"message\" : \"Merge pull request #6 from Spaceghost/patch-1\\n\\nNew line at end of file.\",\n \"timestamp\" : \"2016-10-10T00:00:00Z\",\n \"tree_id\" : \"7fd1a60b01f91b314f59955a4e4d4e80d8edf11d\"\n },\n \"head_sha\" : \"d6fde92930d4715a2b49857d24b940956b26d2d3\",\n \"id\" : 5,\n \"latest_check_runs_count\" : 1,\n \"node_id\" : \"MDEwOkNoZWNrU3VpdGU1\",\n \"pull_requests\" : [ ],\n \"repository\" : {\n \"anonymous_access_enabled\" : false,\n \"archive_url\" : \"https://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref}\",\n \"archived\" : false,\n \"assignees_url\" : \"https://api.github.com/repos/octocat/Hello-World/assignees{/user}\",\n \"blobs_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/blobs{/sha}\",\n \"branches_url\" : \"https://api.github.com/repos/octocat/Hello-World/branches{/branch}\",\n \"clone_url\" : \"https://github.com/octocat/Hello-World.git\",\n \"collaborators_url\" : \"https://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator}\",\n \"comments_url\" : \"https://api.github.com/repos/octocat/Hello-World/comments{/number}\",\n \"commits_url\" : \"https://api.github.com/repos/octocat/Hello-World/commits{/sha}\",\n \"compare_url\" : \"https://api.github.com/repos/octocat/Hello-World/compare/{base}...{head}\",\n \"contents_url\" : \"https://api.github.com/repos/octocat/Hello-World/contents/{+path}\",\n \"contributors_url\" : \"https://api.github.com/repos/octocat/Hello-World/contributors\",\n \"created_at\" : \"2011-01-26T19:01:12Z\",\n \"default_branch\" : \"master\",\n \"delete_branch_on_merge\" : true,\n \"deployments_url\" : \"https://api.github.com/repos/octocat/Hello-World/deployments\",\n \"description\" : \"This your first repo!\",\n \"disabled\" : false,\n \"downloads_url\" : \"https://api.github.com/repos/octocat/Hello-World/downloads\",\n \"events_url\" : \"https://api.github.com/repos/octocat/Hello-World/events\",\n \"fork\" : false,\n \"forks_count\" : 9,\n \"forks_url\" : \"https://api.github.com/repos/octocat/Hello-World/forks\",\n \"full_name\" : \"octocat/Hello-World\",\n \"git_commits_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/commits{/sha}\",\n \"git_refs_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/refs{/sha}\",\n \"git_tags_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/tags{/sha}\",\n \"git_url\" : \"git:github.com/octocat/Hello-World.git\",\n \"has_downloads\" : true,\n \"has_issues\" : true,\n \"has_pages\" : false,\n \"has_projects\" : true,\n \"has_wiki\" : true,\n \"homepage\" : \"https://github.com\",\n \"hooks_url\" : \"https://api.github.com/repos/octocat/Hello-World/hooks\",\n \"html_url\" : \"https://github.com/octocat/Hello-World\",\n \"id\" : 1296269,\n \"is_template\" : false,\n \"issue_comment_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/comments{/number}\",\n \"issue_events_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/events{/number}\",\n \"issues_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues{/number}\",\n \"keys_url\" : \"https://api.github.com/repos/octocat/Hello-World/keys{/key_id}\",\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World/labels{/name}\",\n \"languages_url\" : \"https://api.github.com/repos/octocat/Hello-World/languages\",\n \"merges_url\" : \"https://api.github.com/repos/octocat/Hello-World/merges\",\n \"milestones_url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones{/number}\",\n \"mirror_url\" : \"git:git.example.com/octocat/Hello-World\",\n \"name\" : \"Hello-World\",\n \"network_count\" : 0,\n \"node_id\" : \"MDEwOlJlcG9zaXRvcnkxMjk2MjY5\",\n \"notifications_url\" : \"https://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating}\",\n \"open_issues_count\" : 0,\n \"owner\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"permissions\" : {\n \"admin\" : false,\n \"pull\" : true,\n \"push\" : false\n },\n \"private\" : false,\n \"pulls_url\" : \"https://api.github.com/repos/octocat/Hello-World/pulls{/number}\",\n \"pushed_at\" : \"2011-01-26T19:06:43Z\",\n \"releases_url\" : \"https://api.github.com/repos/octocat/Hello-World/releases{/id}\",\n \"size\" : 108,\n \"ssh_url\" : \"git@github.com:octocat/Hello-World.git\",\n \"stargazers_count\" : 80,\n \"stargazers_url\" : \"https://api.github.com/repos/octocat/Hello-World/stargazers\",\n \"statuses_url\" : \"https://api.github.com/repos/octocat/Hello-World/statuses/{sha}\",\n \"subscribers_count\" : 42,\n \"subscribers_url\" : \"https://api.github.com/repos/octocat/Hello-World/subscribers\",\n \"subscription_url\" : \"https://api.github.com/repos/octocat/Hello-World/subscription\",\n \"svn_url\" : \"https://svn.github.com/octocat/Hello-World\",\n \"tags_url\" : \"https://api.github.com/repos/octocat/Hello-World/tags\",\n \"teams_url\" : \"https://api.github.com/repos/octocat/Hello-World/teams\",\n \"template_repository\" : {\n \"allow_merge_commit\" : true,\n \"allow_rebase_merge\" : true,\n \"allow_squash_merge\" : true,\n \"archive_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/{archive_format}{/ref}\",\n \"archived\" : false,\n \"assignees_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/assignees{/user}\",\n \"blobs_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/git/blobs{/sha}\",\n \"branches_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/branches{/branch}\",\n \"clone_url\" : \"https://github.com/octocat/Hello-World-Template.git\",\n \"collaborators_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/collaborators{/collaborator}\",\n \"comments_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/comments{/number}\",\n \"commits_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/commits{/sha}\",\n \"compare_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/compare/{base}...{head}\",\n \"contents_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/contents/{+path}\",\n \"contributors_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/contributors\",\n \"created_at\" : \"2011-01-26T19:01:12Z\",\n \"default_branch\" : \"master\",\n \"delete_branch_on_merge\" : true,\n \"deployments_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/deployments\",\n \"description\" : \"This your first repo!\",\n \"disabled\" : false,\n \"downloads_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/downloads\",\n \"events_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/events\",\n \"fork\" : false,\n \"forks\" : 9,\n \"forks_count\" : 9,\n \"forks_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/forks\",\n \"full_name\" : \"octocat/Hello-World-Template\",\n \"git_commits_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/git/commits{/sha}\",\n \"git_refs_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/git/refs{/sha}\",\n \"git_tags_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/git/tags{/sha}\",\n \"git_url\" : \"git:github.com/octocat/Hello-World-Template.git\",\n \"has_downloads\" : true,\n \"has_issues\" : true,\n \"has_pages\" : false,\n \"has_projects\" : true,\n \"has_wiki\" : true,\n \"homepage\" : \"https://github.com\",\n \"hooks_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/hooks\",\n \"html_url\" : \"https://github.com/octocat/Hello-World-Template\",\n \"id\" : 1296269,\n \"is_template\" : true,\n \"issue_comment_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/issues/comments{/number}\",\n \"issue_events_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/issues/events{/number}\",\n \"issues_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/issues{/number}\",\n \"keys_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/keys{/key_id}\",\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/labels{/name}\",\n \"languages_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/languages\",\n \"license\" : {\n \"html_url\" : \"https://api.github.com/licenses/mit\",\n \"key\" : \"mit\",\n \"name\" : \"MIT License\",\n \"node_id\" : \"MDc6TGljZW5zZW1pdA==\",\n \"spdx_id\" : \"MIT\",\n \"url\" : \"https://api.github.com/licenses/mit\"\n },\n \"merges_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/merges\",\n \"milestones_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/milestones{/number}\",\n \"mirror_url\" : \"git:git.example.com/octocat/Hello-World-Template\",\n \"name\" : \"Hello-World-Template\",\n \"network_count\" : 0,\n \"node_id\" : \"MDEwOlJlcG9zaXRvcnkxMjk2MjY5\",\n \"notifications_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/notifications{?since,all,participating}\",\n \"open_issues\" : 0,\n \"open_issues_count\" : 0,\n \"owner\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"permissions\" : {\n \"admin\" : false,\n \"pull\" : true,\n \"push\" : false\n },\n \"private\" : false,\n \"pulls_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/pulls{/number}\",\n \"pushed_at\" : \"2011-01-26T19:06:43Z\",\n \"releases_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/releases{/id}\",\n \"size\" : 108,\n \"ssh_url\" : \"git@github.com:octocat/Hello-World-Template.git\",\n \"stargazers_count\" : 80,\n \"stargazers_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/stargazers\",\n \"statuses_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/statuses/{sha}\",\n \"subscribers_count\" : 42,\n \"subscribers_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/subscribers\",\n \"subscription_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/subscription\",\n \"svn_url\" : \"https://svn.github.com/octocat/Hello-World-Template\",\n \"tags_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/tags\",\n \"teams_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/teams\",\n \"temp_clone_token\" : \"ABTLWHOULUVAXGTRYU7OC2876QJ2O\",\n \"topics\" : [ \"octocat\", \"atom\", \"electron\", \"api\" ],\n \"trees_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/git/trees{/sha}\",\n \"updated_at\" : \"2011-01-26T19:14:43Z\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World-Template\",\n \"visibility\" : \"public\",\n \"watchers\" : 80,\n \"watchers_count\" : 80\n },\n \"topics\" : [ \"octocat\", \"atom\", \"electron\", \"api\" ],\n \"trees_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/trees{/sha}\",\n \"updated_at\" : \"2011-01-26T19:14:43Z\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World\",\n \"visibility\" : \"public\",\n \"watchers_count\" : 80\n },\n \"status\" : \"completed\",\n \"updated_at\" : \"2017-07-08T16:18:44-04:00\",\n \"url\" : \"https://api.github.com/repos/github/hello-world/check-suites/5\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "e7ddde48-9c09-4da4-9a93-eba4b5c7aeff", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.877824Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "checks/get-suite", + "schema": { + "description": "A suite of checks performed on the code of a given code change", + "properties": { + "after": { + "example": "d6fde92930d4715a2b49857d24b940956b26d2d3", + "nullable": true, + "type": "string" + }, + "app": { + "$ref": "#/components/schemas/nullable-integration" + }, + "before": { + "example": "146e867f55c26428e5f9fade55a9bbf5e95a7912", + "nullable": true, + "type": "string" + }, + "check_runs_url": { + "type": "string" + }, + "conclusion": { + "enum": [ + "success", + "failure", + "neutral", + "cancelled", + "skipped", + "timed_out", + "action_required" + ], + "example": "neutral", + "nullable": true, + "type": "string" + }, + "created_at": { + "format": "date-time", + "nullable": true, + "type": "string" + }, + "head_branch": { + "example": "master", + "nullable": true, + "type": "string" + }, + "head_commit": { + "$ref": "#/components/schemas/simple-commit" + }, + "head_sha": { + "description": "The SHA of the head commit that is being checked.", + "example": "009b8a3a9ccbb128af87f9b1c0f4c62e8a304f6d", + "type": "string" + }, + "id": { + "example": 5, + "type": "integer" + }, + "latest_check_runs_count": { + "type": "integer" + }, + "node_id": { + "example": "MDEwOkNoZWNrU3VpdGU1", + "type": "string" + }, + "pull_requests": { + "items": { + "$ref": "#/components/schemas/pull-request-minimal" + }, + "nullable": true, + "type": "array" + }, + "repository": { + "$ref": "#/components/schemas/minimal-repository" + }, + "status": { + "enum": ["queued", "in_progress", "completed"], + "example": "completed", + "nullable": true, + "type": "string" + }, + "updated_at": { + "format": "date-time", + "nullable": true, + "type": "string" + }, + "url": { + "example": "https://api.github.com/repos/github/hello-world/check-suites/5", + "nullable": true, + "type": "string" + } + }, + "required": [ + "id", + "node_id", + "head_branch", + "status", + "conclusion", + "head_sha", + "url", + "before", + "after", + "created_at", + "updated_at", + "app", + "head_commit", + "repository", + "latest_check_runs_count", + "check_runs_url", + "pull_requests" + ], + "title": "CheckSuite", + "type": "object" + } + } + } + }, + "insertionIndex": 813 + }, + { + "id": "a169b4cf-daa3-491e-9298-b0612cebdc03", + "name": "Update repository preferences for check suites - default", + "request": { + "urlPath": "/repos/4e0loqi71gfyypsfk8rflyvtwahwp1ujjreonr548th880b6643k8hbf9bnl1b1f2ioh0mzzv1k1sjutmo4pwu7555kargk5ooizv135kh41oar34wjqrkgvf4o9tudgapfo8btlttwfexp83pk333p28prcxzscwj1ivwqfikqdgwpw8bf0jmv8/3zmn47t8yvq0zycl46cwsdoynoy0i70hae0k9a7wu9h1ee869k8yga7dfpdunb8p1j3azn9jpp1pinlql5onn0wzw240z53eajgyjy3a908bra6pkby3zqf9tocuag14xciw8occkranh6tzmd1i5tovik45342ecn160duzg0u974lrozi808zl/check-suites/preferences", + "method": "PATCH" + }, + "response": { + "status": 200, + "body": "{\n \"preferences\" : {\n \"auto_trigger_checks\" : [ {\n \"app_id\" : 2,\n \"setting\" : true\n }, {\n \"app_id\" : 4,\n \"setting\" : false\n } ]\n },\n \"repository\" : {\n \"anonymous_access_enabled\" : false,\n \"archive_url\" : \"https://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref}\",\n \"archived\" : false,\n \"assignees_url\" : \"https://api.github.com/repos/octocat/Hello-World/assignees{/user}\",\n \"blobs_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/blobs{/sha}\",\n \"branches_url\" : \"https://api.github.com/repos/octocat/Hello-World/branches{/branch}\",\n \"clone_url\" : \"https://github.com/octocat/Hello-World.git\",\n \"collaborators_url\" : \"https://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator}\",\n \"comments_url\" : \"https://api.github.com/repos/octocat/Hello-World/comments{/number}\",\n \"commits_url\" : \"https://api.github.com/repos/octocat/Hello-World/commits{/sha}\",\n \"compare_url\" : \"https://api.github.com/repos/octocat/Hello-World/compare/{base}...{head}\",\n \"contents_url\" : \"https://api.github.com/repos/octocat/Hello-World/contents/{+path}\",\n \"contributors_url\" : \"https://api.github.com/repos/octocat/Hello-World/contributors\",\n \"created_at\" : \"2011-01-26T19:01:12Z\",\n \"default_branch\" : \"master\",\n \"deployments_url\" : \"https://api.github.com/repos/octocat/Hello-World/deployments\",\n \"description\" : \"This your first repo!\",\n \"disabled\" : false,\n \"downloads_url\" : \"https://api.github.com/repos/octocat/Hello-World/downloads\",\n \"events_url\" : \"https://api.github.com/repos/octocat/Hello-World/events\",\n \"fork\" : false,\n \"forks_count\" : 9,\n \"forks_url\" : \"https://api.github.com/repos/octocat/Hello-World/forks\",\n \"full_name\" : \"octocat/Hello-World\",\n \"git_commits_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/commits{/sha}\",\n \"git_refs_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/refs{/sha}\",\n \"git_tags_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/tags{/sha}\",\n \"git_url\" : \"git:github.com/octocat/Hello-World.git\",\n \"has_downloads\" : true,\n \"has_issues\" : true,\n \"has_pages\" : false,\n \"has_projects\" : true,\n \"has_wiki\" : true,\n \"homepage\" : \"https://github.com\",\n \"hooks_url\" : \"https://api.github.com/repos/octocat/Hello-World/hooks\",\n \"html_url\" : \"https://github.com/octocat/Hello-World\",\n \"id\" : 1296269,\n \"is_template\" : false,\n \"issue_comment_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/comments{/number}\",\n \"issue_events_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/events{/number}\",\n \"issues_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues{/number}\",\n \"keys_url\" : \"https://api.github.com/repos/octocat/Hello-World/keys{/key_id}\",\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World/labels{/name}\",\n \"languages_url\" : \"https://api.github.com/repos/octocat/Hello-World/languages\",\n \"merges_url\" : \"https://api.github.com/repos/octocat/Hello-World/merges\",\n \"milestones_url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones{/number}\",\n \"mirror_url\" : \"git:git.example.com/octocat/Hello-World\",\n \"name\" : \"Hello-World\",\n \"node_id\" : \"MDEwOlJlcG9zaXRvcnkxMjk2MjY5\",\n \"notifications_url\" : \"https://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating}\",\n \"open_issues_count\" : 0,\n \"owner\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"permissions\" : {\n \"admin\" : false,\n \"pull\" : true,\n \"push\" : false\n },\n \"private\" : false,\n \"pulls_url\" : \"https://api.github.com/repos/octocat/Hello-World/pulls{/number}\",\n \"pushed_at\" : \"2011-01-26T19:06:43Z\",\n \"releases_url\" : \"https://api.github.com/repos/octocat/Hello-World/releases{/id}\",\n \"size\" : 108,\n \"ssh_url\" : \"git@github.com:octocat/Hello-World.git\",\n \"stargazers_count\" : 80,\n \"stargazers_url\" : \"https://api.github.com/repos/octocat/Hello-World/stargazers\",\n \"statuses_url\" : \"https://api.github.com/repos/octocat/Hello-World/statuses/{sha}\",\n \"subscribers_url\" : \"https://api.github.com/repos/octocat/Hello-World/subscribers\",\n \"subscription_url\" : \"https://api.github.com/repos/octocat/Hello-World/subscription\",\n \"svn_url\" : \"https://svn.github.com/octocat/Hello-World\",\n \"tags_url\" : \"https://api.github.com/repos/octocat/Hello-World/tags\",\n \"teams_url\" : \"https://api.github.com/repos/octocat/Hello-World/teams\",\n \"template_repository\" : {\n \"allow_merge_commit\" : true,\n \"allow_rebase_merge\" : true,\n \"allow_squash_merge\" : true,\n \"archive_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/{archive_format}{/ref}\",\n \"archived\" : false,\n \"assignees_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/assignees{/user}\",\n \"blobs_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/git/blobs{/sha}\",\n \"branches_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/branches{/branch}\",\n \"clone_url\" : \"https://github.com/octocat/Hello-World-Template.git\",\n \"collaborators_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/collaborators{/collaborator}\",\n \"comments_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/comments{/number}\",\n \"commits_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/commits{/sha}\",\n \"compare_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/compare/{base}...{head}\",\n \"contents_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/contents/{+path}\",\n \"contributors_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/contributors\",\n \"created_at\" : \"2011-01-26T19:01:12Z\",\n \"default_branch\" : \"master\",\n \"delete_branch_on_merge\" : true,\n \"deployments_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/deployments\",\n \"description\" : \"This your first repo!\",\n \"disabled\" : false,\n \"downloads_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/downloads\",\n \"events_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/events\",\n \"fork\" : false,\n \"forks\" : 9,\n \"forks_count\" : 9,\n \"forks_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/forks\",\n \"full_name\" : \"octocat/Hello-World-Template\",\n \"git_commits_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/git/commits{/sha}\",\n \"git_refs_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/git/refs{/sha}\",\n \"git_tags_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/git/tags{/sha}\",\n \"git_url\" : \"git:github.com/octocat/Hello-World-Template.git\",\n \"has_downloads\" : true,\n \"has_issues\" : true,\n \"has_pages\" : false,\n \"has_projects\" : true,\n \"has_wiki\" : true,\n \"homepage\" : \"https://github.com\",\n \"hooks_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/hooks\",\n \"html_url\" : \"https://github.com/octocat/Hello-World-Template\",\n \"id\" : 1296269,\n \"is_template\" : true,\n \"issue_comment_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/issues/comments{/number}\",\n \"issue_events_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/issues/events{/number}\",\n \"issues_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/issues{/number}\",\n \"keys_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/keys{/key_id}\",\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/labels{/name}\",\n \"languages_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/languages\",\n \"license\" : {\n \"html_url\" : \"https://api.github.com/licenses/mit\",\n \"key\" : \"mit\",\n \"name\" : \"MIT License\",\n \"node_id\" : \"MDc6TGljZW5zZW1pdA==\",\n \"spdx_id\" : \"MIT\",\n \"url\" : \"https://api.github.com/licenses/mit\"\n },\n \"merges_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/merges\",\n \"milestones_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/milestones{/number}\",\n \"mirror_url\" : \"git:git.example.com/octocat/Hello-World-Template\",\n \"name\" : \"Hello-World-Template\",\n \"network_count\" : 0,\n \"node_id\" : \"MDEwOlJlcG9zaXRvcnkxMjk2MjY5\",\n \"notifications_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/notifications{?since,all,participating}\",\n \"open_issues\" : 0,\n \"open_issues_count\" : 0,\n \"owner\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"permissions\" : {\n \"admin\" : false,\n \"pull\" : true,\n \"push\" : false\n },\n \"private\" : false,\n \"pulls_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/pulls{/number}\",\n \"pushed_at\" : \"2011-01-26T19:06:43Z\",\n \"releases_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/releases{/id}\",\n \"size\" : 108,\n \"ssh_url\" : \"git@github.com:octocat/Hello-World-Template.git\",\n \"stargazers_count\" : 80,\n \"stargazers_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/stargazers\",\n \"statuses_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/statuses/{sha}\",\n \"subscribers_count\" : 42,\n \"subscribers_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/subscribers\",\n \"subscription_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/subscription\",\n \"svn_url\" : \"https://svn.github.com/octocat/Hello-World-Template\",\n \"tags_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/tags\",\n \"teams_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/teams\",\n \"temp_clone_token\" : \"ABTLWHOULUVAXGTRYU7OC2876QJ2O\",\n \"topics\" : [ \"octocat\", \"atom\", \"electron\", \"api\" ],\n \"trees_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/git/trees{/sha}\",\n \"updated_at\" : \"2011-01-26T19:14:43Z\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World-Template\",\n \"visibility\" : \"public\",\n \"watchers\" : 80,\n \"watchers_count\" : 80\n },\n \"topics\" : [ \"octocat\", \"atom\", \"electron\", \"api\" ],\n \"trees_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/trees{/sha}\",\n \"updated_at\" : \"2011-01-26T19:14:43Z\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World\",\n \"visibility\" : \"public\",\n \"watchers_count\" : 80\n }\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "a169b4cf-daa3-491e-9298-b0612cebdc03", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.877652Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "checks/set-suites-preferences", + "schema": { + "description": "Check suite configuration preferences for a repository.", + "properties": { + "preferences": { + "properties": { + "auto_trigger_checks": { + "items": { + "properties": { + "app_id": { + "type": "integer" + }, + "setting": { + "type": "boolean" + } + }, + "required": ["app_id", "setting"], + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "repository": { + "$ref": "#/components/schemas/minimal-repository" + } + }, + "required": ["preferences", "repository"], + "title": "Check Suite Preference", + "type": "object" + } + } + } + }, + "insertionIndex": 814 + }, + { + "id": "ed29bfbf-7550-428a-95d6-b72be2c630c0", + "name": "Create a check suite - default", + "request": { + "urlPath": "/repos/sbputt965xcusauecynwkxnszvx4pqpptltj7j1zng3ogfqfmockh5zeq84bt4aq19jat5yggeokkuhx9mrz4byrnngu78zq1v8ij4ot267v296kyskear467ubi04/dnjnejian8d3jberrz6pelva8zl1i0o3yui846drap4gp/check-suites", + "method": "POST" + }, + "response": { + "status": 201, + "body": "{\n \"after\" : \"d6fde92930d4715a2b49857d24b940956b26d2d3\",\n \"app\" : {\n \"created_at\" : \"2017-07-08T16:18:44-04:00\",\n \"description\" : \"\",\n \"events\" : [ \"push\", \"pull_request\" ],\n \"external_url\" : \"https://example.com\",\n \"html_url\" : \"https://github.com/apps/octoapp\",\n \"id\" : 1,\n \"name\" : \"Octocat App\",\n \"node_id\" : \"MDExOkludGVncmF0aW9uMQ==\",\n \"owner\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/orgs/github/events\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"github\",\n \"node_id\" : \"MDEyOk9yZ2FuaXphdGlvbjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/orgs/github/repos\",\n \"site_admin\" : true,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/orgs/github\"\n },\n \"permissions\" : {\n \"contents\" : \"read\",\n \"issues\" : \"write\",\n \"metadata\" : \"read\",\n \"single_file\" : \"write\"\n },\n \"slug\" : \"octoapp\",\n \"updated_at\" : \"2017-07-08T16:18:44-04:00\"\n },\n \"before\" : \"146e867f55c26428e5f9fade55a9bbf5e95a7912\",\n \"check_runs_url\" : \"https://api.github.com/repos/octocat/Hello-World/check-suites/5/check-runs\",\n \"conclusion\" : \"neutral\",\n \"created_at\" : \"2017-07-08T16:18:44-04:00\",\n \"head_branch\" : \"master\",\n \"head_commit\" : {\n \"author\" : {\n \"email\" : \"octocat@nowhere.com\",\n \"name\" : \"The Octocat\"\n },\n \"committer\" : {\n \"email\" : \"octocat@nowhere.com\",\n \"name\" : \"The Octocat\"\n },\n \"id\" : \"7fd1a60b01f91b314f59955a4e4d4e80d8edf11d\",\n \"message\" : \"Merge pull request #6 from Spaceghost/patch-1\\n\\nNew line at end of file.\",\n \"timestamp\" : \"2016-10-10T00:00:00Z\",\n \"tree_id\" : \"7fd1a60b01f91b314f59955a4e4d4e80d8edf11d\"\n },\n \"head_sha\" : \"d6fde92930d4715a2b49857d24b940956b26d2d3\",\n \"id\" : 5,\n \"latest_check_runs_count\" : 1,\n \"node_id\" : \"MDEwOkNoZWNrU3VpdGU1\",\n \"pull_requests\" : [ ],\n \"repository\" : {\n \"anonymous_access_enabled\" : false,\n \"archive_url\" : \"https://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref}\",\n \"archived\" : false,\n \"assignees_url\" : \"https://api.github.com/repos/octocat/Hello-World/assignees{/user}\",\n \"blobs_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/blobs{/sha}\",\n \"branches_url\" : \"https://api.github.com/repos/octocat/Hello-World/branches{/branch}\",\n \"clone_url\" : \"https://github.com/octocat/Hello-World.git\",\n \"collaborators_url\" : \"https://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator}\",\n \"comments_url\" : \"https://api.github.com/repos/octocat/Hello-World/comments{/number}\",\n \"commits_url\" : \"https://api.github.com/repos/octocat/Hello-World/commits{/sha}\",\n \"compare_url\" : \"https://api.github.com/repos/octocat/Hello-World/compare/{base}...{head}\",\n \"contents_url\" : \"https://api.github.com/repos/octocat/Hello-World/contents/{+path}\",\n \"contributors_url\" : \"https://api.github.com/repos/octocat/Hello-World/contributors\",\n \"created_at\" : \"2011-01-26T19:01:12Z\",\n \"default_branch\" : \"master\",\n \"delete_branch_on_merge\" : true,\n \"deployments_url\" : \"https://api.github.com/repos/octocat/Hello-World/deployments\",\n \"description\" : \"This your first repo!\",\n \"disabled\" : false,\n \"downloads_url\" : \"https://api.github.com/repos/octocat/Hello-World/downloads\",\n \"events_url\" : \"https://api.github.com/repos/octocat/Hello-World/events\",\n \"fork\" : false,\n \"forks_count\" : 9,\n \"forks_url\" : \"https://api.github.com/repos/octocat/Hello-World/forks\",\n \"full_name\" : \"octocat/Hello-World\",\n \"git_commits_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/commits{/sha}\",\n \"git_refs_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/refs{/sha}\",\n \"git_tags_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/tags{/sha}\",\n \"git_url\" : \"git:github.com/octocat/Hello-World.git\",\n \"has_downloads\" : true,\n \"has_issues\" : true,\n \"has_pages\" : false,\n \"has_projects\" : true,\n \"has_wiki\" : true,\n \"homepage\" : \"https://github.com\",\n \"hooks_url\" : \"https://api.github.com/repos/octocat/Hello-World/hooks\",\n \"html_url\" : \"https://github.com/octocat/Hello-World\",\n \"id\" : 1296269,\n \"is_template\" : false,\n \"issue_comment_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/comments{/number}\",\n \"issue_events_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/events{/number}\",\n \"issues_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues{/number}\",\n \"keys_url\" : \"https://api.github.com/repos/octocat/Hello-World/keys{/key_id}\",\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World/labels{/name}\",\n \"languages_url\" : \"https://api.github.com/repos/octocat/Hello-World/languages\",\n \"merges_url\" : \"https://api.github.com/repos/octocat/Hello-World/merges\",\n \"milestones_url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones{/number}\",\n \"mirror_url\" : \"git:git.example.com/octocat/Hello-World\",\n \"name\" : \"Hello-World\",\n \"network_count\" : 0,\n \"node_id\" : \"MDEwOlJlcG9zaXRvcnkxMjk2MjY5\",\n \"notifications_url\" : \"https://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating}\",\n \"open_issues_count\" : 0,\n \"owner\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"permissions\" : {\n \"admin\" : false,\n \"pull\" : true,\n \"push\" : false\n },\n \"private\" : false,\n \"pulls_url\" : \"https://api.github.com/repos/octocat/Hello-World/pulls{/number}\",\n \"pushed_at\" : \"2011-01-26T19:06:43Z\",\n \"releases_url\" : \"https://api.github.com/repos/octocat/Hello-World/releases{/id}\",\n \"size\" : 108,\n \"ssh_url\" : \"git@github.com:octocat/Hello-World.git\",\n \"stargazers_count\" : 80,\n \"stargazers_url\" : \"https://api.github.com/repos/octocat/Hello-World/stargazers\",\n \"statuses_url\" : \"https://api.github.com/repos/octocat/Hello-World/statuses/{sha}\",\n \"subscribers_count\" : 42,\n \"subscribers_url\" : \"https://api.github.com/repos/octocat/Hello-World/subscribers\",\n \"subscription_url\" : \"https://api.github.com/repos/octocat/Hello-World/subscription\",\n \"svn_url\" : \"https://svn.github.com/octocat/Hello-World\",\n \"tags_url\" : \"https://api.github.com/repos/octocat/Hello-World/tags\",\n \"teams_url\" : \"https://api.github.com/repos/octocat/Hello-World/teams\",\n \"template_repository\" : {\n \"allow_merge_commit\" : true,\n \"allow_rebase_merge\" : true,\n \"allow_squash_merge\" : true,\n \"archive_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/{archive_format}{/ref}\",\n \"archived\" : false,\n \"assignees_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/assignees{/user}\",\n \"blobs_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/git/blobs{/sha}\",\n \"branches_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/branches{/branch}\",\n \"clone_url\" : \"https://github.com/octocat/Hello-World-Template.git\",\n \"collaborators_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/collaborators{/collaborator}\",\n \"comments_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/comments{/number}\",\n \"commits_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/commits{/sha}\",\n \"compare_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/compare/{base}...{head}\",\n \"contents_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/contents/{+path}\",\n \"contributors_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/contributors\",\n \"created_at\" : \"2011-01-26T19:01:12Z\",\n \"default_branch\" : \"master\",\n \"delete_branch_on_merge\" : true,\n \"deployments_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/deployments\",\n \"description\" : \"This your first repo!\",\n \"disabled\" : false,\n \"downloads_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/downloads\",\n \"events_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/events\",\n \"fork\" : false,\n \"forks\" : 9,\n \"forks_count\" : 9,\n \"forks_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/forks\",\n \"full_name\" : \"octocat/Hello-World-Template\",\n \"git_commits_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/git/commits{/sha}\",\n \"git_refs_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/git/refs{/sha}\",\n \"git_tags_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/git/tags{/sha}\",\n \"git_url\" : \"git:github.com/octocat/Hello-World-Template.git\",\n \"has_downloads\" : true,\n \"has_issues\" : true,\n \"has_pages\" : false,\n \"has_projects\" : true,\n \"has_wiki\" : true,\n \"homepage\" : \"https://github.com\",\n \"hooks_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/hooks\",\n \"html_url\" : \"https://github.com/octocat/Hello-World-Template\",\n \"id\" : 1296269,\n \"is_template\" : true,\n \"issue_comment_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/issues/comments{/number}\",\n \"issue_events_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/issues/events{/number}\",\n \"issues_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/issues{/number}\",\n \"keys_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/keys{/key_id}\",\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/labels{/name}\",\n \"languages_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/languages\",\n \"license\" : {\n \"html_url\" : \"https://api.github.com/licenses/mit\",\n \"key\" : \"mit\",\n \"name\" : \"MIT License\",\n \"node_id\" : \"MDc6TGljZW5zZW1pdA==\",\n \"spdx_id\" : \"MIT\",\n \"url\" : \"https://api.github.com/licenses/mit\"\n },\n \"merges_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/merges\",\n \"milestones_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/milestones{/number}\",\n \"mirror_url\" : \"git:git.example.com/octocat/Hello-World-Template\",\n \"name\" : \"Hello-World-Template\",\n \"network_count\" : 0,\n \"node_id\" : \"MDEwOlJlcG9zaXRvcnkxMjk2MjY5\",\n \"notifications_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/notifications{?since,all,participating}\",\n \"open_issues\" : 0,\n \"open_issues_count\" : 0,\n \"owner\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"permissions\" : {\n \"admin\" : false,\n \"pull\" : true,\n \"push\" : false\n },\n \"private\" : false,\n \"pulls_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/pulls{/number}\",\n \"pushed_at\" : \"2011-01-26T19:06:43Z\",\n \"releases_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/releases{/id}\",\n \"size\" : 108,\n \"ssh_url\" : \"git@github.com:octocat/Hello-World-Template.git\",\n \"stargazers_count\" : 80,\n \"stargazers_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/stargazers\",\n \"statuses_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/statuses/{sha}\",\n \"subscribers_count\" : 42,\n \"subscribers_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/subscribers\",\n \"subscription_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/subscription\",\n \"svn_url\" : \"https://svn.github.com/octocat/Hello-World-Template\",\n \"tags_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/tags\",\n \"teams_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/teams\",\n \"temp_clone_token\" : \"ABTLWHOULUVAXGTRYU7OC2876QJ2O\",\n \"topics\" : [ \"octocat\", \"atom\", \"electron\", \"api\" ],\n \"trees_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/git/trees{/sha}\",\n \"updated_at\" : \"2011-01-26T19:14:43Z\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World-Template\",\n \"visibility\" : \"public\",\n \"watchers\" : 80,\n \"watchers_count\" : 80\n },\n \"topics\" : [ \"octocat\", \"atom\", \"electron\", \"api\" ],\n \"trees_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/trees{/sha}\",\n \"updated_at\" : \"2011-01-26T19:14:43Z\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World\",\n \"visibility\" : \"public\",\n \"watchers_count\" : 80\n },\n \"status\" : \"completed\",\n \"updated_at\" : \"2017-07-08T16:18:44-04:00\",\n \"url\" : \"https://api.github.com/repos/github/hello-world/check-suites/5\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "ed29bfbf-7550-428a-95d6-b72be2c630c0", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.877509Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "checks/create-suite", + "schema": { + "description": "A suite of checks performed on the code of a given code change", + "properties": { + "after": { + "example": "d6fde92930d4715a2b49857d24b940956b26d2d3", + "nullable": true, + "type": "string" + }, + "app": { + "$ref": "#/components/schemas/nullable-integration" + }, + "before": { + "example": "146e867f55c26428e5f9fade55a9bbf5e95a7912", + "nullable": true, + "type": "string" + }, + "check_runs_url": { + "type": "string" + }, + "conclusion": { + "enum": [ + "success", + "failure", + "neutral", + "cancelled", + "skipped", + "timed_out", + "action_required" + ], + "example": "neutral", + "nullable": true, + "type": "string" + }, + "created_at": { + "format": "date-time", + "nullable": true, + "type": "string" + }, + "head_branch": { + "example": "master", + "nullable": true, + "type": "string" + }, + "head_commit": { + "$ref": "#/components/schemas/simple-commit" + }, + "head_sha": { + "description": "The SHA of the head commit that is being checked.", + "example": "009b8a3a9ccbb128af87f9b1c0f4c62e8a304f6d", + "type": "string" + }, + "id": { + "example": 5, + "type": "integer" + }, + "latest_check_runs_count": { + "type": "integer" + }, + "node_id": { + "example": "MDEwOkNoZWNrU3VpdGU1", + "type": "string" + }, + "pull_requests": { + "items": { + "$ref": "#/components/schemas/pull-request-minimal" + }, + "nullable": true, + "type": "array" + }, + "repository": { + "$ref": "#/components/schemas/minimal-repository" + }, + "status": { + "enum": ["queued", "in_progress", "completed"], + "example": "completed", + "nullable": true, + "type": "string" + }, + "updated_at": { + "format": "date-time", + "nullable": true, + "type": "string" + }, + "url": { + "example": "https://api.github.com/repos/github/hello-world/check-suites/5", + "nullable": true, + "type": "string" + } + }, + "required": [ + "id", + "node_id", + "head_branch", + "status", + "conclusion", + "head_sha", + "url", + "before", + "after", + "created_at", + "updated_at", + "app", + "head_commit", + "repository", + "latest_check_runs_count", + "check_runs_url", + "pull_requests" + ], + "title": "CheckSuite", + "type": "object" + } + } + } + }, + "insertionIndex": 815 + }, + { + "id": "fc8e4845-8214-46a3-9252-c282d36e2478", + "name": "Create a check suite - default", + "request": { + "urlPath": "/repos/1blfdwh6nuo7yzvxtfim6n9w2doklc10rmc8ppdom6r4thxr4tparf2uvnvyv3v1kacnxw2ytvl0hab3fqg2ev5zlxwpakm9ndq5vee2gxdbhn0pfc7e68vut5tesyepp0ikpncy2sk59jwk8h5qalqgm0b7/iwfl6xc5ogym62bwl801jyknbzekx57sbtpg9czc4lv0z64smnixxyd8edpabzmcb9aqriox8x5gwj1c2exxc3vfk13mj32guo0hqf4p05zgb7ym3hatet1x4ekyzlve51eisvu3tlv258pltpposgkknl07p52m49vtg6un7/check-suites", + "method": "POST" + }, + "response": { + "status": 200, + "body": "{\n \"after\" : \"d6fde92930d4715a2b49857d24b940956b26d2d3\",\n \"app\" : {\n \"created_at\" : \"2017-07-08T16:18:44-04:00\",\n \"description\" : \"\",\n \"events\" : [ \"push\", \"pull_request\" ],\n \"external_url\" : \"https://example.com\",\n \"html_url\" : \"https://github.com/apps/octoapp\",\n \"id\" : 1,\n \"name\" : \"Octocat App\",\n \"node_id\" : \"MDExOkludGVncmF0aW9uMQ==\",\n \"owner\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/orgs/github/events\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"github\",\n \"node_id\" : \"MDEyOk9yZ2FuaXphdGlvbjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/orgs/github/repos\",\n \"site_admin\" : true,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/orgs/github\"\n },\n \"permissions\" : {\n \"contents\" : \"read\",\n \"issues\" : \"write\",\n \"metadata\" : \"read\",\n \"single_file\" : \"write\"\n },\n \"slug\" : \"octoapp\",\n \"updated_at\" : \"2017-07-08T16:18:44-04:00\"\n },\n \"before\" : \"146e867f55c26428e5f9fade55a9bbf5e95a7912\",\n \"check_runs_url\" : \"https://api.github.com/repos/octocat/Hello-World/check-suites/5/check-runs\",\n \"conclusion\" : \"neutral\",\n \"created_at\" : \"2017-07-08T16:18:44-04:00\",\n \"head_branch\" : \"master\",\n \"head_commit\" : {\n \"author\" : {\n \"email\" : \"octocat@nowhere.com\",\n \"name\" : \"The Octocat\"\n },\n \"committer\" : {\n \"email\" : \"octocat@nowhere.com\",\n \"name\" : \"The Octocat\"\n },\n \"id\" : \"7fd1a60b01f91b314f59955a4e4d4e80d8edf11d\",\n \"message\" : \"Merge pull request #6 from Spaceghost/patch-1\\n\\nNew line at end of file.\",\n \"timestamp\" : \"2016-10-10T00:00:00Z\",\n \"tree_id\" : \"7fd1a60b01f91b314f59955a4e4d4e80d8edf11d\"\n },\n \"head_sha\" : \"d6fde92930d4715a2b49857d24b940956b26d2d3\",\n \"id\" : 5,\n \"latest_check_runs_count\" : 1,\n \"node_id\" : \"MDEwOkNoZWNrU3VpdGU1\",\n \"pull_requests\" : [ ],\n \"repository\" : {\n \"anonymous_access_enabled\" : false,\n \"archive_url\" : \"https://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref}\",\n \"archived\" : false,\n \"assignees_url\" : \"https://api.github.com/repos/octocat/Hello-World/assignees{/user}\",\n \"blobs_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/blobs{/sha}\",\n \"branches_url\" : \"https://api.github.com/repos/octocat/Hello-World/branches{/branch}\",\n \"clone_url\" : \"https://github.com/octocat/Hello-World.git\",\n \"collaborators_url\" : \"https://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator}\",\n \"comments_url\" : \"https://api.github.com/repos/octocat/Hello-World/comments{/number}\",\n \"commits_url\" : \"https://api.github.com/repos/octocat/Hello-World/commits{/sha}\",\n \"compare_url\" : \"https://api.github.com/repos/octocat/Hello-World/compare/{base}...{head}\",\n \"contents_url\" : \"https://api.github.com/repos/octocat/Hello-World/contents/{+path}\",\n \"contributors_url\" : \"https://api.github.com/repos/octocat/Hello-World/contributors\",\n \"created_at\" : \"2011-01-26T19:01:12Z\",\n \"default_branch\" : \"master\",\n \"delete_branch_on_merge\" : true,\n \"deployments_url\" : \"https://api.github.com/repos/octocat/Hello-World/deployments\",\n \"description\" : \"This your first repo!\",\n \"disabled\" : false,\n \"downloads_url\" : \"https://api.github.com/repos/octocat/Hello-World/downloads\",\n \"events_url\" : \"https://api.github.com/repos/octocat/Hello-World/events\",\n \"fork\" : false,\n \"forks_count\" : 9,\n \"forks_url\" : \"https://api.github.com/repos/octocat/Hello-World/forks\",\n \"full_name\" : \"octocat/Hello-World\",\n \"git_commits_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/commits{/sha}\",\n \"git_refs_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/refs{/sha}\",\n \"git_tags_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/tags{/sha}\",\n \"git_url\" : \"git:github.com/octocat/Hello-World.git\",\n \"has_downloads\" : true,\n \"has_issues\" : true,\n \"has_pages\" : false,\n \"has_projects\" : true,\n \"has_wiki\" : true,\n \"homepage\" : \"https://github.com\",\n \"hooks_url\" : \"https://api.github.com/repos/octocat/Hello-World/hooks\",\n \"html_url\" : \"https://github.com/octocat/Hello-World\",\n \"id\" : 1296269,\n \"is_template\" : false,\n \"issue_comment_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/comments{/number}\",\n \"issue_events_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/events{/number}\",\n \"issues_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues{/number}\",\n \"keys_url\" : \"https://api.github.com/repos/octocat/Hello-World/keys{/key_id}\",\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World/labels{/name}\",\n \"languages_url\" : \"https://api.github.com/repos/octocat/Hello-World/languages\",\n \"merges_url\" : \"https://api.github.com/repos/octocat/Hello-World/merges\",\n \"milestones_url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones{/number}\",\n \"mirror_url\" : \"git:git.example.com/octocat/Hello-World\",\n \"name\" : \"Hello-World\",\n \"network_count\" : 0,\n \"node_id\" : \"MDEwOlJlcG9zaXRvcnkxMjk2MjY5\",\n \"notifications_url\" : \"https://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating}\",\n \"open_issues_count\" : 0,\n \"owner\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"permissions\" : {\n \"admin\" : false,\n \"pull\" : true,\n \"push\" : false\n },\n \"private\" : false,\n \"pulls_url\" : \"https://api.github.com/repos/octocat/Hello-World/pulls{/number}\",\n \"pushed_at\" : \"2011-01-26T19:06:43Z\",\n \"releases_url\" : \"https://api.github.com/repos/octocat/Hello-World/releases{/id}\",\n \"size\" : 108,\n \"ssh_url\" : \"git@github.com:octocat/Hello-World.git\",\n \"stargazers_count\" : 80,\n \"stargazers_url\" : \"https://api.github.com/repos/octocat/Hello-World/stargazers\",\n \"statuses_url\" : \"https://api.github.com/repos/octocat/Hello-World/statuses/{sha}\",\n \"subscribers_count\" : 42,\n \"subscribers_url\" : \"https://api.github.com/repos/octocat/Hello-World/subscribers\",\n \"subscription_url\" : \"https://api.github.com/repos/octocat/Hello-World/subscription\",\n \"svn_url\" : \"https://svn.github.com/octocat/Hello-World\",\n \"tags_url\" : \"https://api.github.com/repos/octocat/Hello-World/tags\",\n \"teams_url\" : \"https://api.github.com/repos/octocat/Hello-World/teams\",\n \"template_repository\" : {\n \"allow_merge_commit\" : true,\n \"allow_rebase_merge\" : true,\n \"allow_squash_merge\" : true,\n \"archive_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/{archive_format}{/ref}\",\n \"archived\" : false,\n \"assignees_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/assignees{/user}\",\n \"blobs_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/git/blobs{/sha}\",\n \"branches_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/branches{/branch}\",\n \"clone_url\" : \"https://github.com/octocat/Hello-World-Template.git\",\n \"collaborators_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/collaborators{/collaborator}\",\n \"comments_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/comments{/number}\",\n \"commits_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/commits{/sha}\",\n \"compare_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/compare/{base}...{head}\",\n \"contents_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/contents/{+path}\",\n \"contributors_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/contributors\",\n \"created_at\" : \"2011-01-26T19:01:12Z\",\n \"default_branch\" : \"master\",\n \"delete_branch_on_merge\" : true,\n \"deployments_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/deployments\",\n \"description\" : \"This your first repo!\",\n \"disabled\" : false,\n \"downloads_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/downloads\",\n \"events_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/events\",\n \"fork\" : false,\n \"forks\" : 9,\n \"forks_count\" : 9,\n \"forks_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/forks\",\n \"full_name\" : \"octocat/Hello-World-Template\",\n \"git_commits_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/git/commits{/sha}\",\n \"git_refs_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/git/refs{/sha}\",\n \"git_tags_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/git/tags{/sha}\",\n \"git_url\" : \"git:github.com/octocat/Hello-World-Template.git\",\n \"has_downloads\" : true,\n \"has_issues\" : true,\n \"has_pages\" : false,\n \"has_projects\" : true,\n \"has_wiki\" : true,\n \"homepage\" : \"https://github.com\",\n \"hooks_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/hooks\",\n \"html_url\" : \"https://github.com/octocat/Hello-World-Template\",\n \"id\" : 1296269,\n \"is_template\" : true,\n \"issue_comment_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/issues/comments{/number}\",\n \"issue_events_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/issues/events{/number}\",\n \"issues_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/issues{/number}\",\n \"keys_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/keys{/key_id}\",\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/labels{/name}\",\n \"languages_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/languages\",\n \"license\" : {\n \"html_url\" : \"https://api.github.com/licenses/mit\",\n \"key\" : \"mit\",\n \"name\" : \"MIT License\",\n \"node_id\" : \"MDc6TGljZW5zZW1pdA==\",\n \"spdx_id\" : \"MIT\",\n \"url\" : \"https://api.github.com/licenses/mit\"\n },\n \"merges_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/merges\",\n \"milestones_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/milestones{/number}\",\n \"mirror_url\" : \"git:git.example.com/octocat/Hello-World-Template\",\n \"name\" : \"Hello-World-Template\",\n \"network_count\" : 0,\n \"node_id\" : \"MDEwOlJlcG9zaXRvcnkxMjk2MjY5\",\n \"notifications_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/notifications{?since,all,participating}\",\n \"open_issues\" : 0,\n \"open_issues_count\" : 0,\n \"owner\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"permissions\" : {\n \"admin\" : false,\n \"pull\" : true,\n \"push\" : false\n },\n \"private\" : false,\n \"pulls_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/pulls{/number}\",\n \"pushed_at\" : \"2011-01-26T19:06:43Z\",\n \"releases_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/releases{/id}\",\n \"size\" : 108,\n \"ssh_url\" : \"git@github.com:octocat/Hello-World-Template.git\",\n \"stargazers_count\" : 80,\n \"stargazers_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/stargazers\",\n \"statuses_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/statuses/{sha}\",\n \"subscribers_count\" : 42,\n \"subscribers_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/subscribers\",\n \"subscription_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/subscription\",\n \"svn_url\" : \"https://svn.github.com/octocat/Hello-World-Template\",\n \"tags_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/tags\",\n \"teams_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/teams\",\n \"temp_clone_token\" : \"ABTLWHOULUVAXGTRYU7OC2876QJ2O\",\n \"topics\" : [ \"octocat\", \"atom\", \"electron\", \"api\" ],\n \"trees_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/git/trees{/sha}\",\n \"updated_at\" : \"2011-01-26T19:14:43Z\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World-Template\",\n \"visibility\" : \"public\",\n \"watchers\" : 80,\n \"watchers_count\" : 80\n },\n \"topics\" : [ \"octocat\", \"atom\", \"electron\", \"api\" ],\n \"trees_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/trees{/sha}\",\n \"updated_at\" : \"2011-01-26T19:14:43Z\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World\",\n \"visibility\" : \"public\",\n \"watchers_count\" : 80\n },\n \"status\" : \"completed\",\n \"updated_at\" : \"2017-07-08T16:18:44-04:00\",\n \"url\" : \"https://api.github.com/repos/github/hello-world/check-suites/5\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "fc8e4845-8214-46a3-9252-c282d36e2478", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.877338Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "checks/create-suite", + "schema": { + "description": "A suite of checks performed on the code of a given code change", + "properties": { + "after": { + "example": "d6fde92930d4715a2b49857d24b940956b26d2d3", + "nullable": true, + "type": "string" + }, + "app": { + "$ref": "#/components/schemas/nullable-integration" + }, + "before": { + "example": "146e867f55c26428e5f9fade55a9bbf5e95a7912", + "nullable": true, + "type": "string" + }, + "check_runs_url": { + "type": "string" + }, + "conclusion": { + "enum": [ + "success", + "failure", + "neutral", + "cancelled", + "skipped", + "timed_out", + "action_required" + ], + "example": "neutral", + "nullable": true, + "type": "string" + }, + "created_at": { + "format": "date-time", + "nullable": true, + "type": "string" + }, + "head_branch": { + "example": "master", + "nullable": true, + "type": "string" + }, + "head_commit": { + "$ref": "#/components/schemas/simple-commit" + }, + "head_sha": { + "description": "The SHA of the head commit that is being checked.", + "example": "009b8a3a9ccbb128af87f9b1c0f4c62e8a304f6d", + "type": "string" + }, + "id": { + "example": 5, + "type": "integer" + }, + "latest_check_runs_count": { + "type": "integer" + }, + "node_id": { + "example": "MDEwOkNoZWNrU3VpdGU1", + "type": "string" + }, + "pull_requests": { + "items": { + "$ref": "#/components/schemas/pull-request-minimal" + }, + "nullable": true, + "type": "array" + }, + "repository": { + "$ref": "#/components/schemas/minimal-repository" + }, + "status": { + "enum": ["queued", "in_progress", "completed"], + "example": "completed", + "nullable": true, + "type": "string" + }, + "updated_at": { + "format": "date-time", + "nullable": true, + "type": "string" + }, + "url": { + "example": "https://api.github.com/repos/github/hello-world/check-suites/5", + "nullable": true, + "type": "string" + } + }, + "required": [ + "id", + "node_id", + "head_branch", + "status", + "conclusion", + "head_sha", + "url", + "before", + "after", + "created_at", + "updated_at", + "app", + "head_commit", + "repository", + "latest_check_runs_count", + "check_runs_url", + "pull_requests" + ], + "title": "CheckSuite", + "type": "object" + } + } + } + }, + "insertionIndex": 816 + }, + { + "id": "4f2dc330-5e74-4bc0-a170-f61b283c72a6", + "name": "List check run annotations - default", + "request": { + "urlPath": "/repos/y72zacg344vve10olyua2porknsnq9sc1mge14cbxas8hji7gthh34oi9l1lx4k6i54adwapqx5rhn2t01jx7pz1r5b0f5sah7mx2o0myrtv76rokquktkp4ijq42c8jewrmf77dxpd9yrmikomwak6tyj36rn4jik6edt/gl1nh9d1mqgw7y6jr3u0mmwydic81fqdqvysbv4og5eow398pswjlvjym0qvdjsfgojq4t95878qgnfokipabtzpl366mpz66jlu29xs8tvrb8cz1ss46cch7syewlsr41qgjontsi0vl5d6ob4iicotnecjwvqtxlzsuun9d6xmvthw9i/check-runs/3665764408323481712/annotations", + "method": "GET" + }, + "response": { + "status": 200, + "body": "[ {\n \"annotation_level\" : \"warning\",\n \"blob_href\" : \"https://api.github.com/repos/github/rest-api-description/git/blobs/abc\",\n \"end_column\" : 10,\n \"end_line\" : 2,\n \"message\" : \"Check your spelling for 'banaas'.\",\n \"path\" : \"README.md\",\n \"raw_details\" : \"Do you mean 'bananas' or 'banana'?\",\n \"start_column\" : 5,\n \"start_line\" : 2,\n \"title\" : \"Spell Checker\"\n} ]", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "4f2dc330-5e74-4bc0-a170-f61b283c72a6", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.877084Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "checks/list-annotations", + "schema": { + "items": { + "$ref": "#/components/schemas/check-annotation" + }, + "type": "array" + } + } + } + }, + "insertionIndex": 817 + }, + { + "id": "872aab04-48ba-4939-8126-b2f364e983c1", + "name": "Update a check run - default", + "request": { + "urlPath": "/repos/xzo8jwdzc5dozvtgtcbsp6d8vzbt40ttcfiufzf48q3gs13m8cbfb2l0yun2x/nk5gbib8477c4zhsp9ytt8lfjla0ty6q7374dpaxe3mjhv0s1cyj1yme9kc4lakqjw9y56n49u05/check-runs/1823695176338321126", + "method": "PATCH" + }, + "response": { + "status": 200, + "body": "{\n \"app\" : {\n \"created_at\" : \"2017-07-08T16:18:44-04:00\",\n \"description\" : \"\",\n \"events\" : [ \"push\", \"pull_request\" ],\n \"external_url\" : \"https://example.com\",\n \"html_url\" : \"https://github.com/apps/octoapp\",\n \"id\" : 1,\n \"name\" : \"Octocat App\",\n \"node_id\" : \"MDExOkludGVncmF0aW9uMQ==\",\n \"owner\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/orgs/github/events\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"github\",\n \"node_id\" : \"MDEyOk9yZ2FuaXphdGlvbjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/orgs/github/repos\",\n \"site_admin\" : true,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/orgs/github\"\n },\n \"permissions\" : {\n \"contents\" : \"read\",\n \"issues\" : \"write\",\n \"metadata\" : \"read\",\n \"single_file\" : \"write\"\n },\n \"slug\" : \"octoapp\",\n \"updated_at\" : \"2017-07-08T16:18:44-04:00\"\n },\n \"check_suite\" : {\n \"id\" : 5\n },\n \"completed_at\" : \"2018-05-04T01:14:52Z\",\n \"conclusion\" : \"neutral\",\n \"details_url\" : \"https://example.com\",\n \"external_id\" : \"\",\n \"head_sha\" : \"ce587453ced02b1526dfb4cb910479d431683101\",\n \"html_url\" : \"https://github.com/github/hello-world/runs/4\",\n \"id\" : 4,\n \"name\" : \"mighty_readme\",\n \"node_id\" : \"MDg6Q2hlY2tSdW40\",\n \"output\" : {\n \"annotations_count\" : 2,\n \"annotations_url\" : \"https://api.github.com/repos/github/hello-world/check-runs/4/annotations\",\n \"summary\" : \"There are 0 failures, 2 warnings, and 1 notice.\",\n \"text\" : \"You may have some misspelled words on lines 2 and 4. You also may want to add a section in your README about how to install your app.\",\n \"title\" : \"Mighty Readme report\"\n },\n \"pull_requests\" : [ {\n \"base\" : {\n \"ref\" : \"master\",\n \"repo\" : {\n \"id\" : 526,\n \"name\" : \"hello-world\",\n \"url\" : \"https://api.github.com/repos/github/hello-world\"\n },\n \"sha\" : \"e7fdf7640066d71ad16a86fbcbb9c6a10a18af4f\"\n },\n \"head\" : {\n \"ref\" : \"say-hello\",\n \"repo\" : {\n \"id\" : 526,\n \"name\" : \"hello-world\",\n \"url\" : \"https://api.github.com/repos/github/hello-world\"\n },\n \"sha\" : \"3dca65fa3e8d4b3da3f3d056c59aee1c50f41390\"\n },\n \"id\" : 1934,\n \"number\" : 3956,\n \"url\" : \"https://api.github.com/repos/github/hello-world/pulls/1\"\n } ],\n \"started_at\" : \"2018-05-04T01:14:52Z\",\n \"status\" : \"completed\",\n \"url\" : \"https://api.github.com/repos/github/hello-world/check-runs/4\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "872aab04-48ba-4939-8126-b2f364e983c1", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.877009Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "checks/update", + "schema": { + "description": "A check performed on the code of a given code change", + "properties": { + "app": { + "$ref": "#/components/schemas/nullable-integration" + }, + "check_suite": { + "nullable": true, + "properties": { + "id": { + "type": "integer" + } + }, + "required": ["id"], + "type": "object" + }, + "completed_at": { + "example": "2018-05-04T01:14:52Z", + "format": "date-time", + "nullable": true, + "type": "string" + }, + "conclusion": { + "enum": [ + "success", + "failure", + "neutral", + "cancelled", + "skipped", + "timed_out", + "action_required" + ], + "example": "neutral", + "nullable": true, + "type": "string" + }, + "deployment": { + "$ref": "#/components/schemas/deployment-simple" + }, + "details_url": { + "example": "https://example.com", + "nullable": true, + "type": "string" + }, + "external_id": { + "example": "42", + "nullable": true, + "type": "string" + }, + "head_sha": { + "description": "The SHA of the commit that is being checked.", + "example": "009b8a3a9ccbb128af87f9b1c0f4c62e8a304f6d", + "type": "string" + }, + "html_url": { + "example": "https://github.com/github/hello-world/runs/4", + "nullable": true, + "type": "string" + }, + "id": { + "description": "The id of the check.", + "example": 21, + "type": "integer" + }, + "name": { + "description": "The name of the check.", + "example": "test-coverage", + "type": "string" + }, + "node_id": { + "example": "MDg6Q2hlY2tSdW40", + "type": "string" + }, + "output": { + "properties": { + "annotations_count": { + "type": "integer" + }, + "annotations_url": { + "format": "uri", + "type": "string" + }, + "summary": { + "nullable": true, + "type": "string" + }, + "text": { + "nullable": true, + "type": "string" + }, + "title": { + "nullable": true, + "type": "string" + } + }, + "required": ["title", "summary", "text", "annotations_count", "annotations_url"], + "type": "object" + }, + "pull_requests": { + "items": { + "$ref": "#/components/schemas/pull-request-minimal" + } + }, + "started_at": { + "example": "2018-05-04T01:14:52Z", + "format": "date-time", + "nullable": true, + "type": "string" + }, + "status": { + "description": "The phase of the lifecycle that the check is currently in.", + "enum": ["queued", "in_progress", "completed"], + "example": "queued", + "type": "string" + }, + "url": { + "example": "https://api.github.com/repos/github/hello-world/check-runs/4", + "type": "string" + } + }, + "required": [ + "id", + "node_id", + "head_sha", + "name", + "url", + "html_url", + "details_url", + "status", + "conclusion", + "started_at", + "completed_at", + "external_id", + "check_suite", + "output", + "app", + "pull_requests" + ], + "title": "CheckRun", + "type": "object" + } + } + } + }, + "insertionIndex": 818 + }, + { + "id": "0dce2096-c228-4763-8f9e-752dc6f81915", + "name": "Get a check run - default", + "request": { + "urlPath": "/repos/nsvvs45po2wi57wzudnhkmtadp2gft7uyu79cxt674rno5irkdxwbo5ow7841tnenkgt093z1ghjz1gli3sn0zednwm1er723ak4is3p78pqqi1ksyxihe/v9cy55a0yqjnmjieo9y54tbpm2k70lsblnjdhi67xgvqz50478rb9bbh6wewyzukt1nrvpi8vw01bo3kliy6ldhwry3u9bfpq4bvqgf2i/check-runs/439802135255151180", + "method": "GET" + }, + "response": { + "status": 200, + "body": "{\n \"app\" : {\n \"created_at\" : \"2017-07-08T16:18:44-04:00\",\n \"description\" : \"\",\n \"events\" : [ \"push\", \"pull_request\" ],\n \"external_url\" : \"https://example.com\",\n \"html_url\" : \"https://github.com/apps/octoapp\",\n \"id\" : 1,\n \"name\" : \"Octocat App\",\n \"node_id\" : \"MDExOkludGVncmF0aW9uMQ==\",\n \"owner\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/orgs/github/events\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"github\",\n \"node_id\" : \"MDEyOk9yZ2FuaXphdGlvbjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/orgs/github/repos\",\n \"site_admin\" : true,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/orgs/github\"\n },\n \"permissions\" : {\n \"contents\" : \"read\",\n \"issues\" : \"write\",\n \"metadata\" : \"read\",\n \"single_file\" : \"write\"\n },\n \"slug\" : \"octoapp\",\n \"updated_at\" : \"2017-07-08T16:18:44-04:00\"\n },\n \"check_suite\" : {\n \"id\" : 5\n },\n \"completed_at\" : \"2018-05-04T01:14:52Z\",\n \"conclusion\" : \"neutral\",\n \"details_url\" : \"https://example.com\",\n \"external_id\" : \"\",\n \"head_sha\" : \"ce587453ced02b1526dfb4cb910479d431683101\",\n \"html_url\" : \"https://github.com/github/hello-world/runs/4\",\n \"id\" : 4,\n \"name\" : \"mighty_readme\",\n \"node_id\" : \"MDg6Q2hlY2tSdW40\",\n \"output\" : {\n \"annotations_count\" : 2,\n \"annotations_url\" : \"https://api.github.com/repos/github/hello-world/check-runs/4/annotations\",\n \"summary\" : \"There are 0 failures, 2 warnings, and 1 notice.\",\n \"text\" : \"You may have some misspelled words on lines 2 and 4. You also may want to add a section in your README about how to install your app.\",\n \"title\" : \"Mighty Readme report\"\n },\n \"pull_requests\" : [ {\n \"base\" : {\n \"ref\" : \"master\",\n \"repo\" : {\n \"id\" : 526,\n \"name\" : \"hello-world\",\n \"url\" : \"https://api.github.com/repos/github/hello-world\"\n },\n \"sha\" : \"e7fdf7640066d71ad16a86fbcbb9c6a10a18af4f\"\n },\n \"head\" : {\n \"ref\" : \"say-hello\",\n \"repo\" : {\n \"id\" : 526,\n \"name\" : \"hello-world\",\n \"url\" : \"https://api.github.com/repos/github/hello-world\"\n },\n \"sha\" : \"3dca65fa3e8d4b3da3f3d056c59aee1c50f41390\"\n },\n \"id\" : 1934,\n \"number\" : 3956,\n \"url\" : \"https://api.github.com/repos/github/hello-world/pulls/1\"\n } ],\n \"started_at\" : \"2018-05-04T01:14:52Z\",\n \"status\" : \"completed\",\n \"url\" : \"https://api.github.com/repos/github/hello-world/check-runs/4\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "0dce2096-c228-4763-8f9e-752dc6f81915", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.876807Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "checks/get", + "schema": { + "description": "A check performed on the code of a given code change", + "properties": { + "app": { + "$ref": "#/components/schemas/nullable-integration" + }, + "check_suite": { + "nullable": true, + "properties": { + "id": { + "type": "integer" + } + }, + "required": ["id"], + "type": "object" + }, + "completed_at": { + "example": "2018-05-04T01:14:52Z", + "format": "date-time", + "nullable": true, + "type": "string" + }, + "conclusion": { + "enum": [ + "success", + "failure", + "neutral", + "cancelled", + "skipped", + "timed_out", + "action_required" + ], + "example": "neutral", + "nullable": true, + "type": "string" + }, + "deployment": { + "$ref": "#/components/schemas/deployment-simple" + }, + "details_url": { + "example": "https://example.com", + "nullable": true, + "type": "string" + }, + "external_id": { + "example": "42", + "nullable": true, + "type": "string" + }, + "head_sha": { + "description": "The SHA of the commit that is being checked.", + "example": "009b8a3a9ccbb128af87f9b1c0f4c62e8a304f6d", + "type": "string" + }, + "html_url": { + "example": "https://github.com/github/hello-world/runs/4", + "nullable": true, + "type": "string" + }, + "id": { + "description": "The id of the check.", + "example": 21, + "type": "integer" + }, + "name": { + "description": "The name of the check.", + "example": "test-coverage", + "type": "string" + }, + "node_id": { + "example": "MDg6Q2hlY2tSdW40", + "type": "string" + }, + "output": { + "properties": { + "annotations_count": { + "type": "integer" + }, + "annotations_url": { + "format": "uri", + "type": "string" + }, + "summary": { + "nullable": true, + "type": "string" + }, + "text": { + "nullable": true, + "type": "string" + }, + "title": { + "nullable": true, + "type": "string" + } + }, + "required": ["title", "summary", "text", "annotations_count", "annotations_url"], + "type": "object" + }, + "pull_requests": { + "items": { + "$ref": "#/components/schemas/pull-request-minimal" + } + }, + "started_at": { + "example": "2018-05-04T01:14:52Z", + "format": "date-time", + "nullable": true, + "type": "string" + }, + "status": { + "description": "The phase of the lifecycle that the check is currently in.", + "enum": ["queued", "in_progress", "completed"], + "example": "queued", + "type": "string" + }, + "url": { + "example": "https://api.github.com/repos/github/hello-world/check-runs/4", + "type": "string" + } + }, + "required": [ + "id", + "node_id", + "head_sha", + "name", + "url", + "html_url", + "details_url", + "status", + "conclusion", + "started_at", + "completed_at", + "external_id", + "check_suite", + "output", + "app", + "pull_requests" + ], + "title": "CheckRun", + "type": "object" + } + } + } + }, + "insertionIndex": 819 + }, + { + "id": "4ecd6663-9c74-4328-b181-41ada2fed0c6", + "name": "Create a check run - example-of-completed-conclusion", + "request": { + "urlPath": "/repos/qcr6s40ydqoukz0a60m6ni5egcnnpcwjlz1gwbjayabqp/pd9ikdodhfbn6yvkuavktqur3neq9hucmkbh3hdo3puiy3pnx6ehahhfhawbkeht8u1c6xroe62uipm7zfez8przvbpf6/check-runs", + "method": "POST" + }, + "response": { + "status": 201, + "body": "{\n \"app\" : {\n \"created_at\" : \"2017-07-08T16:18:44-04:00\",\n \"description\" : \"\",\n \"events\" : [ \"push\", \"pull_request\" ],\n \"external_url\" : \"https://example.com\",\n \"html_url\" : \"https://github.com/apps/octoapp\",\n \"id\" : 1,\n \"name\" : \"Octocat App\",\n \"node_id\" : \"MDExOkludGVncmF0aW9uMQ==\",\n \"owner\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/orgs/github/events\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"github\",\n \"node_id\" : \"MDEyOk9yZ2FuaXphdGlvbjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/orgs/github/repos\",\n \"site_admin\" : true,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/orgs/github\"\n },\n \"permissions\" : {\n \"contents\" : \"read\",\n \"issues\" : \"write\",\n \"metadata\" : \"read\",\n \"single_file\" : \"write\"\n },\n \"slug\" : \"octoapp\",\n \"updated_at\" : \"2017-07-08T16:18:44-04:00\"\n },\n \"check_suite\" : {\n \"id\" : 5\n },\n \"completed_at\" : \"2018-05-04T01:14:52Z\",\n \"conclusion\" : \"neutral\",\n \"details_url\" : \"https://example.com\",\n \"external_id\" : \"\",\n \"head_sha\" : \"ce587453ced02b1526dfb4cb910479d431683101\",\n \"html_url\" : \"https://github.com/github/hello-world/runs/4\",\n \"id\" : 4,\n \"name\" : \"mighty_readme\",\n \"node_id\" : \"MDg6Q2hlY2tSdW40\",\n \"output\" : {\n \"annotations_count\" : 2,\n \"annotations_url\" : \"https://api.github.com/repos/github/hello-world/check-runs/4/annotations\",\n \"summary\" : \"There are 0 failures, 2 warnings, and 1 notice.\",\n \"text\" : \"You may have some misspelled words on lines 2 and 4. You also may want to add a section in your README about how to install your app.\",\n \"title\" : \"Mighty Readme report\"\n },\n \"pull_requests\" : [ {\n \"base\" : {\n \"ref\" : \"master\",\n \"repo\" : {\n \"id\" : 526,\n \"name\" : \"hello-world\",\n \"url\" : \"https://api.github.com/repos/github/hello-world\"\n },\n \"sha\" : \"e7fdf7640066d71ad16a86fbcbb9c6a10a18af4f\"\n },\n \"head\" : {\n \"ref\" : \"say-hello\",\n \"repo\" : {\n \"id\" : 526,\n \"name\" : \"hello-world\",\n \"url\" : \"https://api.github.com/repos/github/hello-world\"\n },\n \"sha\" : \"3dca65fa3e8d4b3da3f3d056c59aee1c50f41390\"\n },\n \"id\" : 1934,\n \"number\" : 3956,\n \"url\" : \"https://api.github.com/repos/github/hello-world/pulls/1\"\n } ],\n \"started_at\" : \"2018-05-04T01:14:52Z\",\n \"status\" : \"completed\",\n \"url\" : \"https://api.github.com/repos/github/hello-world/check-runs/4\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "4ecd6663-9c74-4328-b181-41ada2fed0c6", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.876592Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "checks/create", + "schema": { + "description": "A check performed on the code of a given code change", + "properties": { + "app": { + "$ref": "#/components/schemas/nullable-integration" + }, + "check_suite": { + "nullable": true, + "properties": { + "id": { + "type": "integer" + } + }, + "required": ["id"], + "type": "object" + }, + "completed_at": { + "example": "2018-05-04T01:14:52Z", + "format": "date-time", + "nullable": true, + "type": "string" + }, + "conclusion": { + "enum": [ + "success", + "failure", + "neutral", + "cancelled", + "skipped", + "timed_out", + "action_required" + ], + "example": "neutral", + "nullable": true, + "type": "string" + }, + "deployment": { + "$ref": "#/components/schemas/deployment-simple" + }, + "details_url": { + "example": "https://example.com", + "nullable": true, + "type": "string" + }, + "external_id": { + "example": "42", + "nullable": true, + "type": "string" + }, + "head_sha": { + "description": "The SHA of the commit that is being checked.", + "example": "009b8a3a9ccbb128af87f9b1c0f4c62e8a304f6d", + "type": "string" + }, + "html_url": { + "example": "https://github.com/github/hello-world/runs/4", + "nullable": true, + "type": "string" + }, + "id": { + "description": "The id of the check.", + "example": 21, + "type": "integer" + }, + "name": { + "description": "The name of the check.", + "example": "test-coverage", + "type": "string" + }, + "node_id": { + "example": "MDg6Q2hlY2tSdW40", + "type": "string" + }, + "output": { + "properties": { + "annotations_count": { + "type": "integer" + }, + "annotations_url": { + "format": "uri", + "type": "string" + }, + "summary": { + "nullable": true, + "type": "string" + }, + "text": { + "nullable": true, + "type": "string" + }, + "title": { + "nullable": true, + "type": "string" + } + }, + "required": ["title", "summary", "text", "annotations_count", "annotations_url"], + "type": "object" + }, + "pull_requests": { + "items": { + "$ref": "#/components/schemas/pull-request-minimal" + } + }, + "started_at": { + "example": "2018-05-04T01:14:52Z", + "format": "date-time", + "nullable": true, + "type": "string" + }, + "status": { + "description": "The phase of the lifecycle that the check is currently in.", + "enum": ["queued", "in_progress", "completed"], + "example": "queued", + "type": "string" + }, + "url": { + "example": "https://api.github.com/repos/github/hello-world/check-runs/4", + "type": "string" + } + }, + "required": [ + "id", + "node_id", + "head_sha", + "name", + "url", + "html_url", + "details_url", + "status", + "conclusion", + "started_at", + "completed_at", + "external_id", + "check_suite", + "output", + "app", + "pull_requests" + ], + "title": "CheckRun", + "type": "object" + } + } + } + }, + "insertionIndex": 820 + }, + { + "id": "05b0c6b4-3813-44ca-beb1-f5370549278c", + "name": "Set user access restrictions", + "request": { + "urlPath": "/repos/i1upnxfi2sz8og44sf7cukbc0zwsn3rpt1m777imvl8k8s1milvw20aoahcj5p676mjpf2u67qr6t2b8wmflzvod4r9sycs0pgmuguaat16gnqjo1hv0rh/ys6ggvneu7mkslg9xu3bd1bx1t90rpgs3f9wngyn4lbb74f04jinpvo5ze9vllz3/branches/19w38vj5qpragp0lxobjo80gleit6q6b6ouxxvsffxj1nnofkrb9zwpq0dw5f3mxo43czlmr1gxc4rw5iikxt7g/protection/restrictions/users", + "method": "PUT" + }, + "response": { + "status": 422, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/086049\",\n \"message\" : \"Rem dolores ut. Consequuntur quia autem modi eveniet harum. Sed molestias quibusdam voluptas.\",\n \"errors\" : [ {\n \"code\" : \"griu6szgkvf9ucvakvi2bkgnwh43qjm54nwsslfdbkr64erjw5gucri2wzp1tltv1xvjincpzz4t8xlkjowcts6fbtkpzj7vzx5t5lobqyixnxd4oyih4hogpshpabco5ebw2sx49v9pzrdvgkivrnkqr8icx45zbel7ofqwzz4oezz3q2379wroly12cz9ka3r663\",\n \"field\" : \"pxa6hcjcvszckrjg7mad3n4w6p961c7ew4mu1ets9yyfqo81dapd3bygk271rujp1qtnr0fxiz8\",\n \"resource\" : \"9f6a1yd15edo\",\n \"index\" : 6323365196377663751,\n \"message\" : \"Sunt non cupiditate est voluptate iure. Qui consequatur aspernatur. Voluptas dolores perferendis.\",\n \"value\" : { }\n }, {\n \"code\" : \"gaermn0qdouqx3zot4l2dlf68zjkkgpxu760fcntypm85mnwt3dqhrlujpcozu\",\n \"field\" : \"yl1n8zx66aoro7i9cxbvgbdm0swfp\",\n \"resource\" : \"pqs2y182i96uh2fm9qtz63r9oy3gih00npo7af68649nsgz6z39sr405m78x\",\n \"index\" : 7062087783725791372,\n \"message\" : \"Velit odio ea praesentium sit totam ex ut. Quia blanditiis consequuntur rerum. Eius ea dolor rerum.\",\n \"value\" : { }\n }, {\n \"code\" : \"r79qnajxyifxaagr3ymxuzkd6pv97yak5hy2za6q6ht54bgdjek4rh02ujkk4ci6r5utuuxrzbeqhkur8y208uvkh5muf7mmki7brrd0d3\",\n \"field\" : \"rx7dmvp0zgblh7ncggbisjypbhi5v8jmwm6y4ron0n3a7osfjanhjqgj1d2l0t5s6a80hee8gbgd1dwcl5kiwq6zrc0vwwsh1cil2k18xhgwb3zbmgzemj715wko2hs6hu33uxyp8slcal0n61njtmo6zau0b802m26txicrei6\",\n \"resource\" : \"85zim2rpx0f16vntmmgyhpobjydp6sper5g85fkt4yewbkdfllrle6gcimch1h2zy9j1qlpro10h6kvc7ynacnilu57fla2tzclepucsncuqk898ot0959gyx6sdmxf5yr94qir758z91zyokylpufw89ibt8pnaha7l8ng8w9kcs5\",\n \"index\" : 2952736815323636609,\n \"message\" : \"Quo culpa nisi aut suscipit. Aperiam ipsam necessitatibus. Error eos provident aut consequatur magni. Aut ea corporis.\",\n \"value\" : { }\n }, {\n \"code\" : \"xibnt7fovce84ig0irqlcrvl9pduk116fox0zv6tblil60gfcznu2hqal2lqtd5yneatt66ma7m1smhmv5d54930kz7qwe5hh1qchctr4rbrqgn9dd1j7nugn78ap63y14avkxpqix5jrebh09jdjxfp0wrm80w10xun2ld6m5jg4w71sftpgtebmz9qsvsnh9pgq\",\n \"field\" : \"ezdx8zicpehm00wc962xtyv4ipue37bxpnjh7xb4c5hjjd7rd3qib2u9ro7jsd08buiz5092rgugxt7aqxnja20h644ak3tzvwwlydr5avk283l3fd7ieh8tqb0s7zt33qmej0unhza0z8xby2db4c6t88vwrz11hn07v09mgi2zeg2ux7thn7n18nxeuns3u6nv22l\",\n \"resource\" : \"d57jqex0fgdltujhpjuy0lgvbpwlgt4yi6jonfzs1j0zqvsr1zcr2fo4yo0sp96w1bgi8gin5n5382tzwqpvzkwgtdvupkun6s165ll6tsf9kqdi4av6inqlm6lh9qs7tpe2v6e075m597lvfhjhcwvsbxi3d\",\n \"index\" : 3191302280462109289,\n \"message\" : \"Asperiores aliquid omnis sapiente quam quidem ut debitis. Ipsa corrupti nulla omnis maiores itaque. Laudantium excepturi velit et mollitia beatae est non. Ullam et iusto. Aperiam nam ut et quo digniss\",\n \"value\" : { }\n }, {\n \"code\" : \"vhboy8j00xrncodp9m56qoptpp7fuhy8roudhk6kmz193xpmyvj7lunowv5gkkaaan570e54kn8hunuj3fgn4x4x2a9sw4tj7kg5xbxa\",\n \"field\" : \"t42em6a4xbts94vjf49wnahc0089owr3phjoej94m8e1bfl0a8jjcqcs6xh4e3cu94gn0futb9hoxnntk8w3gb40jbpk44zy9apssm9ls2weuaoxm9qu99gh2mox02brwziiacfjulk3uxs4v6nl24lq47a\",\n \"resource\" : \"56mw5tfi2fkif2597yz8lsqrihbfp16bhxlry48ket0ci6\",\n \"index\" : 815013335550335576,\n \"message\" : \"Nostrum voluptatem vel voluptas nesciunt assumenda aut. Voluptas magnam eum et qui. Itaque sit eius veritatis laboriosam temporibus voluptatem soluta.\",\n \"value\" : { }\n }, {\n \"code\" : \"vj75803eorw1ebb046zeed\",\n \"field\" : \"gih\",\n \"resource\" : \"7jznke32s04x75lmzcy3qhwjws5wo1jn8psone4r1ku82xicfj0cwonn338842\",\n \"index\" : 8614693022134248446,\n \"message\" : \"Mollitia explicabo distinctio minus. Facere explicabo id. Aut voluptate repellendus eligendi. Et velit aut praesentium voluptatem quas sit voluptas.\",\n \"value\" : { }\n }, {\n \"code\" : \"1ybz628229ip3i7lvf4hngwpj7da5okznkb5megx1p4f4jd8oc6lcsucgmcrto93owb05mz22xnhwovamhhdtwrf939defg81b3pa881rg3h0tcj7b2su2lzf9x00np6a8rwcq4elfggimg7htagfp8n9hjkomeqagm0pryyftyikjk3wjjjpgff\",\n \"field\" : \"xryuba3vlx704hony0vwyzbgbz79rsavjkpjwpkly2t0c1qf8vik3t8s26neemu5u9kgbz09cgomcrgoxcrner5clxj2v5v2hgky\",\n \"resource\" : \"zeeevjrnkuxjqvb3354r45e92zog9pkm2s5o7a4c6aief5qk2q5jl6sm66x2dfzpywkwan8kl5c0vcttfmwke038c6x9nvvhpez6zzbt4bj1uf7hifs470235ol8tik60bylyavtcivodxwoypj8x4qxx0bhdeno2ep3vtn8sj4qfs92wvv76x\",\n \"index\" : 7338578160228500523,\n \"message\" : \"Tempore aut ullam eius dolor. Et nisi ut veniam tempora quae et. Ipsam aperiam voluptas ipsam ea omnis odit id. Non culpa optio iusto at. Quod repellat eius voluptatem incidunt autem aut consequatur.\",\n \"value\" : { }\n }, {\n \"code\" : \"ej875bcdl6fkhs4gd7pmzsra4gnms1kvkxh2dr9cly504e8mpctqmeairdpe9xvqon1pblj4guh0lcanlwv3dy0qaembzb9ksye2bqdx44hop29xbnblre091vvyy\",\n \"field\" : \"jzeoiz3oztnwujhung22bx04vz9b7uocrine6a8zk5iwqehc69i3c1lqilwqbtilmihmya6tq7m80w9pu14r9zg1qbjqopio9bs84gfmj7dacrimss109d9oh57flqp8m150zf0hssq7jpc6uhmx1azkd7emiub1ir7ecvsagv14\",\n \"resource\" : \"ltxd5bgu4tjll8xh4yxgkk8z8mrqxg2v5j7f1umm0br9vp6xt3cf47mez631zggyhs7ctqi6pthda9m90dqjqtdl4z8rplfqh49ozn8dsuylbqpi2w04jubf9\",\n \"index\" : 4758997266214912267,\n \"message\" : \"Quibusdam laborum nostrum. Omnis et odio eaque. Voluptas rerum eaque animi. Ut reprehenderit deserunt et earum rerum.\",\n \"value\" : { }\n } ]\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "05b0c6b4-3813-44ca-beb1-f5370549278c", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.876272Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/set-user-access-restrictions", + "schema": { + "description": "Validation Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "errors": { + "items": { + "properties": { + "code": { + "type": "string" + }, + "field": { + "type": "string" + }, + "index": { + "type": "integer" + }, + "message": { + "type": "string" + }, + "resource": { + "type": "string" + }, + "value": { + "oneOf": [ + { + "nullable": true, + "type": "string" + }, + { + "nullable": true, + "type": "integer" + }, + { + "items": { + "type": "string" + }, + "nullable": true, + "type": "array" + } + ] + } + }, + "required": ["code"], + "type": "object" + }, + "type": "array" + }, + "message": { + "type": "string" + } + }, + "required": ["message", "documentation_url"], + "title": "Validation Error", + "type": "object" + } + } + } + }, + "insertionIndex": 821 + }, + { + "id": "0d93b2cf-5c5c-44ef-b869-14e51198488d", + "name": "Set user access restrictions - default", + "request": { + "urlPath": "/repos/64bqzf6vd8pgdjir1pb0m4qz6jrn3t5v8jxo67rg3z6uj7im7bawj5wtxvqvscvjgtic7s7hkhfrs/2lujotimkhiqx5f2pek1p92jxht88r5nj3m1fsug9km71t4sawgd9t5pttcfs0o6xucn2duo4egutdv5ym4wvw3wxufnzb264gjw0oqq9r9zjv9xh10nr5y2l0yrcvf2oo45ueild30m4ydzjfzwoqvkxbaf7tjwxu68snten6asb8awp5xdbbqtdjm36c2ig/branches/hsc9p3ujssalegze923fmrb7qc7fs3jzm1dry96ggr17qjbo78qtpb3i10i5yxamamah148x8u01ldqye59g09syf8vsnyh0efem16ktp6cbnzrhnr34i94k76ze23eddfe/protection/restrictions/users", + "method": "PUT" + }, + "response": { + "status": 200, + "body": "[ {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n} ]", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "0d93b2cf-5c5c-44ef-b869-14e51198488d", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.875349Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/set-user-access-restrictions", + "schema": { + "items": { + "$ref": "#/components/schemas/simple-user" + }, + "type": "array" + } + } + } + }, + "insertionIndex": 822 + }, + { + "id": "04156606-18ff-46b3-bb5d-7fbce3eda101", + "name": "Add user access restrictions", + "request": { + "urlPath": "/repos/y7f5gsjsjxbj9uoenpm4ede47eaf8z7asqevv0zuubs1hsv1pq8ecbqm9bsapbo5vbg55n1xvx591j0ehp4hfd6fr3t7ddmkqsen254hq6n12yw8to02sxyego8rr6xmv3qozvmgn0wffpnbno2/5d1dxpln830gxhlxlqfxta566bip1gus7nx43bnac5we1sbia3q9t1dz3o0m2onjs0xne0lyuqel7ys4414z4lx2p2ug66mpw/branches/w8xq4h2g4y7v96u9yqdn6n98t63wuvlh6jcqrz2a4afpdce1bqe72fy1bcy0lb4soxs8xasg170jxripjsu9n8gkldal36lqan99fs7hghb8hs615zozeovs2g68bcxa6h7572spdfo2eljiy466lu0hz1th9hko9mdkrt69f17f2ncnumb12az0fyl/protection/restrictions/users", + "method": "POST" + }, + "response": { + "status": 422, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/745630\",\n \"message\" : \"At nihil laboriosam laboriosam sequi error quod qui. Omnis earum asperiores in. Veritatis et odio ut voluptatem fugiat. Maxime placeat eos quam. Quis aliquid suscipit quod doloremque et.\",\n \"errors\" : [ {\n \"code\" : \"lhk1n7wm0izuvadqmjsbibnohwowxdf1fujwi9c5tdjipbxjj86ufm3qt8cmtdgkwzyjl1giyk3a36j8x9bx14hk8nemih40cq1wr7d9vsdvd02okw6yr6xd8w40em7keh4e8au2ojgc7dn7v4yl884vr0p5toay\",\n \"field\" : \"4l9muvcnb06rnu6rqtxk5gy4sqmmq1b4jd494rmt6mmo988owj8ubij0ti1m4iyflu30t9wfmiwu7pdi50x730aydrrmjjr20wzcw5cqj8fhldevzch62alcsbkmkpetvoontx7ulgwprm8kovf83rlgaotgbgef3korusajpj\",\n \"resource\" : \"qgoknn1qxpwliimdfs3c49n0puosv3y2c969d26lr1txa63bmfd2s8jdcxvc9v22i3qi03yuh6jxznz8bwkiu9way\",\n \"index\" : 5028413657433825649,\n \"message\" : \"Assumenda et quae placeat omnis reprehenderit. Autem perferendis doloribus. Amet optio dolor. Est et quo repellat commodi a.\",\n \"value\" : { }\n } ]\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "04156606-18ff-46b3-bb5d-7fbce3eda101", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.875277Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/add-user-access-restrictions", + "schema": { + "description": "Validation Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "errors": { + "items": { + "properties": { + "code": { + "type": "string" + }, + "field": { + "type": "string" + }, + "index": { + "type": "integer" + }, + "message": { + "type": "string" + }, + "resource": { + "type": "string" + }, + "value": { + "oneOf": [ + { + "nullable": true, + "type": "string" + }, + { + "nullable": true, + "type": "integer" + }, + { + "items": { + "type": "string" + }, + "nullable": true, + "type": "array" + } + ] + } + }, + "required": ["code"], + "type": "object" + }, + "type": "array" + }, + "message": { + "type": "string" + } + }, + "required": ["message", "documentation_url"], + "title": "Validation Error", + "type": "object" + } + } + } + }, + "insertionIndex": 823 + }, + { + "id": "8ab9307f-eb58-40db-b0d0-93a3ad7e1239", + "name": "Add user access restrictions - default", + "request": { + "urlPath": "/repos/2ayxs6oe7erwegyqzu57ckm3txi4vqqybmdxn8pp2ub53lp50q/40aqk94a55hu22y4x37q93ly97pnrzzy11s3an6ejd5ngc3kpiize2unanyql17wp8wk3tyy03oxqvgmy98pr03pk07ww/branches/mvz9dyedeomvvdcp9scp5yb0xcy1cw9y07dm9u1mfvgn8rzegqf42v5ronaxgtokd8yjx08lsn2o34n1grvr211m9a0bz0dyeahbxb6939olnvivivjwnob1h0rn4uk8yg4yx4or995x8xio61gmv5d7k70qhux0ao9o190v4bbaxwinrjadtf5lspi211do/protection/restrictions/users", + "method": "POST" + }, + "response": { + "status": 200, + "body": "[ {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n} ]", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "8ab9307f-eb58-40db-b0d0-93a3ad7e1239", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.874947Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/add-user-access-restrictions", + "schema": { + "items": { + "$ref": "#/components/schemas/simple-user" + }, + "type": "array" + } + } + } + }, + "insertionIndex": 824 + }, + { + "id": "6bc9d9f7-6593-4d28-912f-998a2ff9bdd7", + "name": "Get users with access to the protected branch", + "request": { + "urlPath": "/repos/3ul8c0dievv35ddxx0mw0a2344s3sfql5t1r1ij55r1yo02i/2n6cec7wje51axaooh6t/branches/macd0bhs5jt7ld0didjas1sypou7u0eqi7igtagyw9e7wsq2j4xegnbr4wmgru28qg9jp/protection/restrictions/users", + "method": "GET" + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/040461\",\n \"message\" : \"Aut minima aliquid modi. Fugiat eveniet maxime. Nam dolorem et deleniti aut dolore amet molestiae. Rerum ea voluptates adipisci. Voluptas est expedita sint qui cumque.\",\n \"url\" : \"https://web.example.mocklab.io/032029\",\n \"status\" : \"4ko7z8lr74h2bjo8knbyyr5bpouk26t4aj3joysannqfiyoaj505r62hneh3q4xz3vrnm7s0wn496880kio7eqi4o6ku48xwxizgsb6daxtt0rhy6ten823o0a3c2a6kethk2plc8s06f1egbq0qova17du1zxvli94m52uzov403i5pp5xjm5hukz5yceoc3xwbc\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "6bc9d9f7-6593-4d28-912f-998a2ff9bdd7", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.874879Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/get-users-with-access-to-protected-branch", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 825 + }, + { + "id": "597141b7-ea9c-41e2-85fb-ab1c4b54101c", + "name": "Get users with access to the protected branch - default", + "request": { + "urlPath": "/repos/i6g9dg1g7ekaoil0/wwxj4tn0jcvkpuaaa1t55k1whblilx0p/branches/m7qa3r9tt1kdehoefjpfiwbssf2aqbgmiqxj03z66m44e827aytzeusozcdwfs32eqz6cszxlswmq02n0vm6v2j3a12rrxxrzlk771oqkb3vlu4mxqn9t9u30spu0hchot7phn5iygmax2cl7jmjwsozp3ye7mjddlt/protection/restrictions/users", + "method": "GET" + }, + "response": { + "status": 200, + "body": "[ {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n} ]", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "597141b7-ea9c-41e2-85fb-ab1c4b54101c", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.874635Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/get-users-with-access-to-protected-branch", + "schema": { + "items": { + "$ref": "#/components/schemas/simple-user" + }, + "type": "array" + } + } + } + }, + "insertionIndex": 826 + }, + { + "id": "4360b755-04fd-4b08-a1ae-9d3ce9e18297", + "name": "Remove user access restrictions", + "request": { + "urlPath": "/repos/scxg/2gouhq4goad6whjht4njfm40b4t5wuosg0l4l76ay/branches/q4j088mf78yqo61tg8znwmhhd09hyz3bp9p6t6d68j3ma96reh8khvdcqdxu7cukn3uwlvn6ergv0wwjxsdbzy7fee8qg7jll5dk6k9x991f3riyv73m3phecy8gnsfnqdw4fgdhnk5zkr0ctkn7qn1s86mc2g1trxlqsve7/protection/restrictions/users", + "method": "DELETE" + }, + "response": { + "status": 422, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/120133\",\n \"message\" : \"Saepe aut molestias. Voluptatum atque animi quis delectus ipsum nihil. Harum quo fuga sint eaque. Quia quae in distinctio quia corporis voluptatem distinctio.\",\n \"errors\" : [ {\n \"code\" : \"v58x1g04trkd6ffo7ze1yb3a1pg441wm6suk00ims7cnn5o91v3q36h47d0ik9a3db0gzftq7sy233zv5yryiimjwo1jri8qbyflnl2e3eynrwtkva3cr7vwgvx\",\n \"field\" : \"h4nrckxorylc65pbie5sujdryjpp5u6kxypfl27zzg0jf6929q2ufu177jhn9pqlg8qsrj1x2eqh7gn54r8praf06ov6wn\",\n \"resource\" : \"47gi4yhw8jamgfww54i6m8wardx3j3bsn1b2sxouqs2nr\",\n \"index\" : 3029373036454598819,\n \"message\" : \"Accusantium nemo mollitia. Omnis eius unde quia porro illo quo eum. Impedit dicta quae voluptatem.\",\n \"value\" : { }\n }, {\n \"code\" : \"dzjxndoinqujx3x9128l\",\n \"field\" : \"v6y99ttb95b342t5wrhfgiul8ns6jbfbpml7o6ob37e58trkf1q7kp8cgdyrpip3fz31qjux90er6xmnsuv0udb6e812i0e9kxcutsoskuq80el4zex2fq8babts7c9ex082snptrqx6be9vzd\",\n \"resource\" : \"e1e7\",\n \"index\" : 8885933543817270163,\n \"message\" : \"Vero dolores eligendi tempore qui. Ut aliquam quae. Consequuntur minima necessitatibus et tempore. Accusantium ad recusandae sint. Aut magnam at omnis quibusdam qui voluptatibus.\",\n \"value\" : { }\n } ]\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "4360b755-04fd-4b08-a1ae-9d3ce9e18297", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.874567Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/remove-user-access-restrictions", + "schema": { + "description": "Validation Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "errors": { + "items": { + "properties": { + "code": { + "type": "string" + }, + "field": { + "type": "string" + }, + "index": { + "type": "integer" + }, + "message": { + "type": "string" + }, + "resource": { + "type": "string" + }, + "value": { + "oneOf": [ + { + "nullable": true, + "type": "string" + }, + { + "nullable": true, + "type": "integer" + }, + { + "items": { + "type": "string" + }, + "nullable": true, + "type": "array" + } + ] + } + }, + "required": ["code"], + "type": "object" + }, + "type": "array" + }, + "message": { + "type": "string" + } + }, + "required": ["message", "documentation_url"], + "title": "Validation Error", + "type": "object" + } + } + } + }, + "insertionIndex": 827 + }, + { + "id": "2335cdb1-259c-4e9f-bd92-03d635b4550d", + "name": "Remove user access restrictions - default", + "request": { + "urlPath": "/repos/p4n3uj40lks9osx4c7/8w00d2rpkcp54h7b9e67zn24nd9rafhqcgpxmnbddhr300j3sdkajekiqe70gdhl84paics734ckwq96yjbrk32lgbey7/branches/drnyu8rbjlu9ixho3vn3e1rgxt3nhuc3uj7hs1w70oaio8zt03ypyqyldppjm0qiwwdf70en3oyjj4qz8qg14jghd83mfrggguti1vdkins1y7vagriawignz220fqhutj6/protection/restrictions/users", + "method": "DELETE" + }, + "response": { + "status": 200, + "body": "[ {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n} ]", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "2335cdb1-259c-4e9f-bd92-03d635b4550d", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.874169Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/remove-user-access-restrictions", + "schema": { + "items": { + "$ref": "#/components/schemas/simple-user" + }, + "type": "array" + } + } + } + }, + "insertionIndex": 828 + }, + { + "id": "f1d55d38-800e-47d7-9ec9-b54bccf0636e", + "name": "Set team access restrictions", + "request": { + "urlPath": "/repos/dv39juay25cr28xqqggmjfziutr2qpfycqfsvvytcp98uoxyff5hzyo87w1dbukotsyw0dyfk5uldftaclambavjs65zkt7rmhbjrm4vvq706yltw0ctyxi/ldptt9uu8rawfc0llcsdzv1x354u06xnyleuje4bb4bqis4f8g2lswirai00z67yw99dsstj3hm0o9h8p12tai0zs5vblloni0k4lppfczaqirui1vdmizrfqq289fzv9b0942leoh1f9qcw83f03ucx0r9fcggc5l9x7fgsssptkeqz2p0fxr25xp0s0/branches/51p40ykzu0o2h67a0f9offr49vam6gkzhcb6jwoo2bvh5qq9990rlpbyf8xxa3opdq3j67xv8hpd2o3u50tjieeq5yinqy03af4nljgbbk15edsdfjz8l66/protection/restrictions/teams", + "method": "PUT" + }, + "response": { + "status": 422, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/764146\",\n \"message\" : \"Iure dignissimos deserunt. Voluptas neque inventore vitae omnis. Dolorum dignissimos at omnis.\",\n \"errors\" : [ {\n \"code\" : \"x4a0hn379r63g4ozbqfoj5jz0r8bthh8jyfkd9hbfmw\",\n \"field\" : \"tqnzpkupcyjdn16\",\n \"resource\" : \"qnlg69zearxzeynh7q64ezr1ixltws26uu2o4tcan7x43pr6l4n6iq3u74r6rnrwa9fjgmom2vf1gdm2lseewwwttyi8rg7tk\",\n \"index\" : 4555126109629917948,\n \"message\" : \"Eum est voluptate velit et et excepturi. Saepe aut et dolores. Explicabo culpa eveniet.\",\n \"value\" : { }\n }, {\n \"code\" : \"xlv4du4c59pxz858g8shyyv1pwakd41r9j0w50olhunedg52d9lqulnaofggcf5nh3a2enibvfz7tnzid26b1acam7oz2a282eqzcgmyy8u4u8klz06tb\",\n \"field\" : \"yxeghz12iv030zq51d4mv684mqxs60duxvlxptwnl9kb8waiy0uue8cm\",\n \"resource\" : \"pcg42kbyyjlmnpj15y3a9grdiivbrav605n1bbwu\",\n \"index\" : 6191172196324179732,\n \"message\" : \"Soluta est placeat distinctio laborum. Fugiat hic qui qui libero. Distinctio voluptatem cumque sapiente ab. At laboriosam non. Ipsam enim veritatis at.\",\n \"value\" : { }\n }, {\n \"code\" : \"rmw5dmqjttx9dnem92hqqdrtpisl2hu997seerdeli5vx2zqalpmqwt9ps1lh4dbh1x2urunwiv6guyw3vl8z0ehle6wmixfz50i5wxnfkwqb6szbhon0a7oipvqky28c2c9i168cwjbh8gkcu27ayc9t0tmnibvyou8lp40drh0zfc4hrou0g5p0g3l\",\n \"field\" : \"kdjlh5oyh2q41fyz98g1l13rm5pxrd26qk3bum57yh908iaxkpzrdv2rf5ue356wsen6qigbkgt3mk5jqmpxxie7r3qzov0idrrsj9mhji1kby3g1rcv2eery\",\n \"resource\" : \"u9rwa21p58ikp7xxa71f3gu643dtrcq07ikz5guya2ude8znqgcmnujhidsm8ubpv813iok\",\n \"index\" : 9031829765083962110,\n \"message\" : \"Reprehenderit ut nemo nemo. Sunt suscipit sunt blanditiis recusandae nihil libero. Laboriosam laudantium omnis vel. Amet libero qui ipsa.\",\n \"value\" : { }\n }, {\n \"code\" : \"fdn9u4jr9dfylz56ksyxuq2vqcrupsx4un9jodandji28w2o37iu7zs6087qoycm1hgnkolh6g4hlgwd2567fcog4l4y0d\",\n \"field\" : \"yfqmx57j16gtzu8q0jlxvesexx2o6ik3fuwxa8b2uditcjlrji7txjy6i525u6lxfyiilgfw32ys332o2wgomz4r8cbzij0ci3ukx1ed88sill8bu5cje2do1nkursapc50l3790tx9zpqfvjwnn61j2zitmcdboxnm8e7bql33rslnesay29vrwr9qf92yk0\",\n \"resource\" : \"y26yfoehdlay3hu06t7n1j74ct5a7l2j0hlctmg5ffn404az0ura86qbg57mwuu9yo8p209\",\n \"index\" : 5469145413920565600,\n \"message\" : \"Odit debitis ut. Repellat magni cum quia. Cum voluptatem magnam. Quis illo enim neque tempore nihil dolorum.\",\n \"value\" : { }\n }, {\n \"code\" : \"ip1hitkw03e5xxp3r\",\n \"field\" : \"2hbsc7463tsyfy4ebkftnqsy7c15h8ig074jbdi1dtd54tgqkvq79as01sghkglpine4o49h7qo4qnesgi\",\n \"resource\" : \"jstc0f9k04s5ev9yv1jufioa9xix8c6cajn1ouxd5rkiijl6bgnyvoyf9xqqqof4w125aczed2lfwfsjfsef77m9qr199pmnk0y895pk1885gjs1olbihqfn\",\n \"index\" : 1005363956562848366,\n \"message\" : \"Rerum voluptatem eius officia soluta natus voluptatem. Maxime officia aspernatur eum nihil ratione assumenda quia. Repellendus sit et sit laudantium. Et dignissimos dolorem. Ut ratione eum ipsa.\",\n \"value\" : { }\n }, {\n \"code\" : \"u118v4kh99v8kim9bhbwe6jy3u0khkuqdazfe9caw6xuxxdolk\",\n \"field\" : \"wddddng7n629350so7dyzm3uxsoqp6gyc2a235j6h0jgafr4jyvv7e69wmckgjtqjijg2ruv5rwgu3i220gne85kfrkrazj\",\n \"resource\" : \"hdgif76qd0e87i4ubx7xzxj4ux3rnksmeibgelewfrz61j83pnzkx814jl6ff3y6aenhb6gz51p4v8wn194vmcs1fy4bwf5bexfn2p1poy3pcpreqgb2w4kdetpty6y9mtqs78g14s3w06ec948diqb6s6cbtrvc9xe2u6h040g6r0826gzv4drbcobadpfpw3xh0\",\n \"index\" : 7547494144904096040,\n \"message\" : \"Qui facere quis. Enim nesciunt voluptatum eos aliquam. Eaque inventore earum voluptas magnam. Est dolorem hic impedit facilis vitae asperiores vel. Dolorum autem voluptas error laboriosam.\",\n \"value\" : { }\n } ]\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "f1d55d38-800e-47d7-9ec9-b54bccf0636e", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.874095Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/set-team-access-restrictions", + "schema": { + "description": "Validation Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "errors": { + "items": { + "properties": { + "code": { + "type": "string" + }, + "field": { + "type": "string" + }, + "index": { + "type": "integer" + }, + "message": { + "type": "string" + }, + "resource": { + "type": "string" + }, + "value": { + "oneOf": [ + { + "nullable": true, + "type": "string" + }, + { + "nullable": true, + "type": "integer" + }, + { + "items": { + "type": "string" + }, + "nullable": true, + "type": "array" + } + ] + } + }, + "required": ["code"], + "type": "object" + }, + "type": "array" + }, + "message": { + "type": "string" + } + }, + "required": ["message", "documentation_url"], + "title": "Validation Error", + "type": "object" + } + } + } + }, + "insertionIndex": 829 + }, + { + "id": "d98adac7-a061-4bc9-bd34-025c848db6fc", + "name": "Set team access restrictions - default", + "request": { + "urlPath": "/repos/dqq6gvqqiw60kqc9ddfc11k737q343pdbk0t7zthedlvgsxtba3yb97ahzv2imd2ads46l5pru50ha4nwwljnfl0j62ligxaxxk7kriia34etszekvkd4avwgenztsqtibjy9w27j/4u6eu612lf1yyjd7cxciv2yhj7n5l1u0wencknla9sgi3b6kr1qotbmzw916wuy8zvyrg66gsb64aea/branches/xhzbhq3gtr9cezpetnn4b5wgg53fmgaun6mna6ig5ipzj8cb04ee1nygaizf4h0q14bgyssuwtzurz2dgoqs02dr8mw1wwfwgyuotg9szmgb7vrtdct7wtwtxc67i147732fr3v22zfg0l03/protection/restrictions/teams", + "method": "PUT" + }, + "response": { + "status": 200, + "body": "[ {\n \"description\" : \"A great team.\",\n \"html_url\" : \"https://github.com/orgs/github/teams/justice-league\",\n \"id\" : 1,\n \"members_url\" : \"https://api.github.com/teams/1/members{/member}\",\n \"name\" : \"Justice League\",\n \"node_id\" : \"MDQ6VGVhbTE=\",\n \"permission\" : \"admin\",\n \"privacy\" : \"closed\",\n \"repositories_url\" : \"https://api.github.com/teams/1/repos\",\n \"slug\" : \"justice-league\",\n \"url\" : \"https://api.github.com/teams/1\"\n} ]", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "d98adac7-a061-4bc9-bd34-025c848db6fc", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.873413Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/set-team-access-restrictions", + "schema": { + "items": { + "$ref": "#/components/schemas/team" + }, + "type": "array" + } + } + } + }, + "insertionIndex": 830 + }, + { + "id": "84bb7b68-7d60-41fe-976b-4e4682ea2dd7", + "name": "Add team access restrictions", + "request": { + "urlPath": "/repos/btagez1lnlv613347n8ec2b8x9t4u55qx658g7rjua9smguzfjfdwgpiou41yh7tws162w4tfxvh7fs2f30c5utp87ng1ty9pf4/pn9hws7l7nwuovrfztt0f8z9pbfa57493h58jncuqwxxa732w61kws5c5z12ogkuv5u6wq4g8drcu7f6hnz2g90dadcleztiqvns5ajhu8njvafbfg594r44lgqrwcx6c4i2722jbv8knx3q591uihilm44va2n8/branches/aypq5ijhss5hh4yhmg766htwvrlb79s998dr8o3l683nzyoa0ftp0axw7cfv6zc8b0z4a8jrgr8icdfb0ds0j6j3/protection/restrictions/teams", + "method": "POST" + }, + "response": { + "status": 422, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/696107\",\n \"message\" : \"Nemo hic culpa a nostrum magni. Illum sit accusamus. Omnis architecto et alias aut omnis.\",\n \"errors\" : [ {\n \"code\" : \"raphuhrutgf6go2z5v8fvholdzjr3m67p\",\n \"field\" : \"626hlk3g1wgjgc56pfh92rd4my5tjpx2ywvk4izti437dptqtmm8zdy1o8e5dm6uidlv48yvo5xxl0z01yu2g0h9649pw6yf1ipcjmqf9m9csja0o8rq0hyddvww4ax8rlqsbzmf4r0smrdy7r6wdg2jjoozk3rg9w1yxgiwbtqe2gffczi1mx3g\",\n \"resource\" : \"ruup4z8rra8te8zy41ztif2cq2ykoyxsmv1deyka88dvjck0ueod0bh07\",\n \"index\" : 4694319864517627525,\n \"message\" : \"Placeat aut illo ut ipsam. Enim in quia perspiciatis natus temporibus suscipit. Pariatur ut exercitationem eveniet sed. Aut quia maiores rerum. Delectus et odio laudantium.\",\n \"value\" : { }\n }, {\n \"code\" : \"0sxzo86daoauttv7mr0m3r7xv5s68pogs1wtwvkfm7pi7rzn3t7b6j1c7bqamdvu69tuyxsgr\",\n \"field\" : \"g3afoidn336o7akujq01auuqkiya0v8hmk4kbi2a5ze9lzndlkssrbos5cv6dqm3tt6wltegu0nzjpf85gqnsujbht3q9tjf15pvepmener4dpqfx5njang8\",\n \"resource\" : \"s9f2r2l0oyl7vdlgzgse2gfvaj85dqvp3oxqt\",\n \"index\" : 60645449251964176,\n \"message\" : \"Perspiciatis ut doloremque amet quia numquam aut. Impedit dignissimos quis. Libero quasi et necessitatibus qui esse optio aut.\",\n \"value\" : { }\n }, {\n \"code\" : \"je1rda1xvpemapasyzcdos4065ok1k4s\",\n \"field\" : \"5b3jlrvpi99wkn830vodbzcme5gvyzxhd5vvf087g3ro6ck9ncf9288ivte86jx9863ntlmqtxajt7p2vapu3wcaufn4dns5ijqepho46k6olhomgm8olc26ircmacce2iuhymifrqog0i0xtep8w36a01bmpty4utmjp5a8ste94h2bfokp1ehqtt5ojntfg3l4cx14\",\n \"resource\" : \"9319ucz2nru2g5kb499ekihjmvme2zixgwq4gxq9qb66545yzbwzn5htw9j36wqws8x31aokvzbaqca55yy5ftr1dtzi1sp9sjowhz6qysf5z0fkxjfb1bduyc245yn452ghoo3z6moxwydg\",\n \"index\" : 3148170436428854005,\n \"message\" : \"Quibusdam id in placeat libero rerum est. Et voluptas debitis ratione qui et voluptas. Maiores eum quaerat ut voluptate quis. Sed quo eos exercitationem quod ducimus totam quia. Laborum vero quisquam \",\n \"value\" : { }\n }, {\n \"code\" : \"da6gvg9lwenuv5nik9lpzmojd84j499s9w8uxjlnxehicvrc4rr6fzr74cqbid626agmpnfcwvcy0jy6a3u7hv1k7spjt5ulupfcorm6ky1vwoeeuii7rxaxdyqjbhrg0opr71ijme33oggahqyyyj6uz8ds2\",\n \"field\" : \"0kpvdpbp4z82rcde5m2vp18ntuo4k4g89ppiwbpt0asubzxgxrt0rzezpznagcux6j1sv596kabjvf99bj1\",\n \"resource\" : \"uyt4bkd39w\",\n \"index\" : 7040910110172620272,\n \"message\" : \"Praesentium eligendi nihil. Laborum ut ut ut. Neque eaque nam. Iure est eius id aut ut.\",\n \"value\" : { }\n }, {\n \"code\" : \"jdh460vt1hiwq0fop2iop1l7ydafzt88m0eqq4sb55fvyqneax3d8td6zcphtwec1zkihgowud1aeq0l58begabej6k58dm251ndbc50a9xomfhwriak56fjqiv36yxiev3vxokz7u0vn8yn88crcvfmix2v2a2lf0s410zy508pb78yvddyn39exnc4gdeahomv50x0\",\n \"field\" : \"onet4pcy17suagwfutia76tuzd0bn45dbywfigu08ll490lpwvifmx9rexhv3xcy5zz2wrasy1op7vr7wj\",\n \"resource\" : \"h5k42a1eitcdxp9asq23875rk9wu8f6bnenhnhrmd35vu53t0sl4\",\n \"index\" : 4742009007612179373,\n \"message\" : \"Inventore vel magni veritatis eius veniam rem quia. In possimus debitis rem et sit et ipsam. Id repellat et vel quos aliquid omnis. Ad id molestiae officia dolorem aspernatur exercitationem.\",\n \"value\" : { }\n }, {\n \"code\" : \"b23dz8wwdvsvt5gu1535la2txp4obzsfq04xbrg02ns8hnro9038ej6hm2nwq7hxpww0ur\",\n \"field\" : \"0zbd7b329z9e40vmmt7wfp5\",\n \"resource\" : \"974umzh6bcnmngqfl5i66c3copq1ygfq5m9zgrkjb8m7zzelifdhd9mbw8qcll5cdk4p0z4h0tjylanb150nf98dyq248wy6w9h8xbwk\",\n \"index\" : 2793248084918090019,\n \"message\" : \"Sed mollitia iste laudantium. Nulla aliquam et excepturi. Ut dolores est aliquam non reiciendis in culpa.\",\n \"value\" : { }\n }, {\n \"code\" : \"t8zx18r31xkpmlwz4z0stpe037etlmxw7eeksyqvp9o4deqw3hv25ltjfffwot1dplx22pf5s7gnwlzq2ijc7t5i4sz41av4phwysezuon924vfjdu60mw5am8ey9fzhbnndz54mbpis64u1fah7kc6rnhn5gxzcqtpupachdqcac4\",\n \"field\" : \"m40bwfsf9yrqctnbd0f1l3i7u5e67za4atfzasqbfrhx8zp941nausa2gl85gwvkcworfu3e5zxpdgqzj3bullgqbissmtpdqd084yuo729zffftk5b15krvxchecmqgu1pt569pl883lvrr\",\n \"resource\" : \"ckbrtfbdifeou75styu4ah42ptobni7qsgf2plhk2vp2s8q684xslsngwpmvpb1hfw6fw1xcykvy6puj43bb96ib5ot5opwb4olyyr0tmmoycdhxz5pvallicidsqc81nsj03odysx4lbx7owo770phn43ugmt6f907jzvhg3h3rxo5\",\n \"index\" : 7580229951596941645,\n \"message\" : \"Voluptatem aut esse id iusto aperiam voluptatem cum. Qui a sed consectetur. Voluptas voluptates aut.\",\n \"value\" : { }\n }, {\n \"code\" : \"snptxynpdy9w31rwii4uwtu2rmzqn2gmbs2a2pwhabwrzpham0a1e5u8ys8ht57hh52nqzdrn2vios5i4ulk6jcnmda5umccn88vn1dy07qdu8khsic1kub5i2e3yxz8tfpq7j08v\",\n \"field\" : \"2antssywvenc1zm12tfyeskz6d4kfdo1p44in5j29kpp83tflq3v89spcwhlg0ji6x4y80zmlim2l25kl8z727d\",\n \"resource\" : \"lcg8igo66im0uu181jqmt9xzy8i\",\n \"index\" : 6204092055159269576,\n \"message\" : \"Quod soluta aut. Laboriosam voluptatem maxime. Quo reiciendis modi veritatis laudantium.\",\n \"value\" : { }\n } ]\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "84bb7b68-7d60-41fe-976b-4e4682ea2dd7", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.873344Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/add-team-access-restrictions", + "schema": { + "description": "Validation Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "errors": { + "items": { + "properties": { + "code": { + "type": "string" + }, + "field": { + "type": "string" + }, + "index": { + "type": "integer" + }, + "message": { + "type": "string" + }, + "resource": { + "type": "string" + }, + "value": { + "oneOf": [ + { + "nullable": true, + "type": "string" + }, + { + "nullable": true, + "type": "integer" + }, + { + "items": { + "type": "string" + }, + "nullable": true, + "type": "array" + } + ] + } + }, + "required": ["code"], + "type": "object" + }, + "type": "array" + }, + "message": { + "type": "string" + } + }, + "required": ["message", "documentation_url"], + "title": "Validation Error", + "type": "object" + } + } + } + }, + "insertionIndex": 831 + }, + { + "id": "66cb2c04-f20f-4a62-8753-3c07194c2aa8", + "name": "Add team access restrictions - default", + "request": { + "urlPath": "/repos/kubzmpilkh28yvmabzllmoxc/zjihpvoegutcwjwzmhup3h7wc79q7qg1iyt3v4a57xggpfcd0t4cl61kfaqajdkropqzdj54apd8yvqouk1v0wrz7c0muaego8lt6wjfw213c6wthk2pwiy80pbc3xt5e7aei0voe0v9dge80rzoh8tgztbjqkau06o8dyuxobxmeim84f4r3vcb8wzsftsnf8s/branches/7asyycgx70cc05lr8mmbun723brglbrg3zuzqduntq91dhmb3byr0d85o5p96k82v1uc2ndoh9pqbvw8aezqn1yy5j3gao5c2fwlejlu8yj4vgw7t4j25xcie8r3md55my0yjbxlmp14z6t7jt/protection/restrictions/teams", + "method": "POST" + }, + "response": { + "status": 200, + "body": "[ {\n \"description\" : \"A great team.\",\n \"html_url\" : \"https://github.com/orgs/github/teams/justice-league\",\n \"id\" : 1,\n \"members_url\" : \"https://api.github.com/teams/1/members{/member}\",\n \"name\" : \"Justice League\",\n \"node_id\" : \"MDQ6VGVhbTE=\",\n \"permission\" : \"admin\",\n \"privacy\" : \"closed\",\n \"repositories_url\" : \"https://api.github.com/teams/1/repos\",\n \"slug\" : \"justice-league\",\n \"url\" : \"https://api.github.com/teams/1\"\n} ]", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "66cb2c04-f20f-4a62-8753-3c07194c2aa8", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.872502Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/add-team-access-restrictions", + "schema": { + "items": { + "$ref": "#/components/schemas/team" + }, + "type": "array" + } + } + } + }, + "insertionIndex": 832 + }, + { + "id": "5bf7185b-3a0d-438e-bf17-96edd8ac17b6", + "name": "Get teams with access to the protected branch", + "request": { + "urlPath": "/repos/d2qo2xdb8bc5miczjja1h0g5r7166yy7hzvermw6y10hh8wfbrtwn9001a7dzu59h9kf7ff9semwc6qw416frosppmqhy40n91ehz1jpne6/3tdnkyqpwn2jn7k7aycby76l8r3divlpz490pyrq06t4wta3rjjkld5ftvux1hwx/branches/b7vd4ttg2p855v7d2nikcix4dm55juh627zrj6ywn07fhgo3fod9s03bo8cohlwu9yasdpe8lu3wzzyuqrl675/protection/restrictions/teams", + "method": "GET" + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/129102\",\n \"message\" : \"Et eveniet cupiditate quia. Ea qui enim. Consequuntur deserunt voluptates quo est.\",\n \"url\" : \"https://web.example.mocklab.io/844533\",\n \"status\" : \"t9i9pv5o0u3ssf6cuk69qmwi4z5nv9oisyki3sl9tuaqh4g088lzk8zhmty0g\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "5bf7185b-3a0d-438e-bf17-96edd8ac17b6", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.872436Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/get-teams-with-access-to-protected-branch", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 833 + }, + { + "id": "eb332594-2b04-492c-a846-b98440a8f1f3", + "name": "Get teams with access to the protected branch - default", + "request": { + "urlPath": "/repos/g7t3vmzyy0pg0k0cvwj9nepyc53jg33kjzc4l2tjfvggqdnzlalbn1bgw0fzdhr7ejvwkpdf0zqmzxtmp2bjx5dfrqfb9co7o/ptmzmr2rn39nyttk75mkur4ybinwov6xps58h54g5fpy8sxxvk9mq1g66711t6j9psnw6kb5052ipxkbr5shpm8ht6t5ntxxgjhc5n1qrnzi0nqxxkpdwd8x14cadnkjm3zu2rke1mcuyij88xov7q37bupyzhjsrr0s4rpq4barjjv34t/branches/sjl0g9tghiq9xaqflpxpr7olbdx78syo1tc2xgjw0rtm4j3rxdfd1ys8gkxkfmyzo49laooq3a6r9a5jhbw5nw3uuogt74k4qknup28mbu5rkrcmyl4dgab2reo0bewi70iaat9ei1b/protection/restrictions/teams", + "method": "GET" + }, + "response": { + "status": 200, + "body": "[ {\n \"description\" : \"A great team.\",\n \"html_url\" : \"https://github.com/orgs/github/teams/justice-league\",\n \"id\" : 1,\n \"members_url\" : \"https://api.github.com/teams/1/members{/member}\",\n \"name\" : \"Justice League\",\n \"node_id\" : \"MDQ6VGVhbTE=\",\n \"permission\" : \"admin\",\n \"privacy\" : \"closed\",\n \"repositories_url\" : \"https://api.github.com/teams/1/repos\",\n \"slug\" : \"justice-league\",\n \"url\" : \"https://api.github.com/teams/1\"\n} ]", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "eb332594-2b04-492c-a846-b98440a8f1f3", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.872194Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/get-teams-with-access-to-protected-branch", + "schema": { + "items": { + "$ref": "#/components/schemas/team" + }, + "type": "array" + } + } + } + }, + "insertionIndex": 834 + }, + { + "id": "bed5eed2-58ab-41ba-bda3-3962041e8311", + "name": "Remove team access restrictions", + "request": { + "urlPath": "/repos/ny8tmcqpxtyphmrzpyswgg534owoq/c69g9gg4ra6njtv6u7x0mesvixc7g64xfwbrxlc6t9e9mqa8qzbxef138uy5lnqugydm93nubhvizglghwzko6nzy6r26bib3kb3q1wvvlap5ffjc497trhuhg0razc9fu617ytdevp5sgp1b5hd4rkdh9swayfjeg4cxxnedd/branches/jbt3v0tb8ay4hnx5oicnfgpzemai5zwa1ckkbutj18jd2/protection/restrictions/teams", + "method": "DELETE" + }, + "response": { + "status": 422, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/956325\",\n \"message\" : \"Voluptas recusandae nihil aut delectus. Error ut commodi. Voluptatem voluptatem quo quas deserunt earum. Est suscipit ad cumque doloribus accusantium.\",\n \"errors\" : [ {\n \"code\" : \"b537qya3aq39kaqmjvr7k86zi852oz2jvdw6juvfqx4acy00hew2vftmsh2jwqyu3difx5thkxifcrbcugja6vmreiahsai99l77t3zcnyh4uwwa6b8zwo\",\n \"field\" : \"d3iy9o\",\n \"resource\" : \"vf1cgd2fbw0pom5sm6v06653xdmmvyn9sr24hi3jcngmx3lip0d3ypljp06g0rn6qh1owzypg8pz21s4o1ap2h046oihyfr\",\n \"index\" : 6218067759449897066,\n \"message\" : \"Maiores perspiciatis voluptas est optio esse. Omnis iure est. Ex in reiciendis occaecati doloribus adipisci voluptates. Eveniet doloremque non ut autem.\",\n \"value\" : { }\n }, {\n \"code\" : \"hgcu3b7z7v43wicv5km2ki22riz0grju7rno04qymnrv482tgytu6iw4zo3qly4v8q3nvr4cpk4f4d4tgf8ecm6d59zx97nzj56smdbgk6030e\",\n \"field\" : \"5h1mxcfqurfgh8o3ik7n7cnndqt0k8u91l4viliet4ja2ymk7292r9sjeiqnr9p8klzx43dohdw6wj4aix95squuilsnizvuvs5tr7bp\",\n \"resource\" : \"ftuf6zlzxvrxvw32o8jt5fpnq9qss1q7anewma3wgfzpu54loy9utadcfv9izeqj4tghefidcg13fqknnlnxiettcl4c64nhb0uzuq20qre2dufha3fr6uk8rlrekj5whuaublpn03w7sy\",\n \"index\" : 2801193628585601988,\n \"message\" : \"Tenetur modi minima natus error fugiat. Omnis porro quo sint facilis est dolor. Nihil porro expedita quae sed.\",\n \"value\" : { }\n }, {\n \"code\" : \"ubue76cd9ynqjo1tk858d844x9vy\",\n \"field\" : \"h3nr051dass7k83ofi8ywgd5jqs117kw6zbklmolf5u862k1yy9j76cquy8o60t53oitnwkwd9xzjj3uj2sqoxprtbberp6ri7prxfgmd0tedsy2jq0rx712vk4s981e8dw4hmgyuadza7nixqr210bdont1q8103wv6u9p1hfbh84ammpjjgj79lfk9f27zvt\",\n \"resource\" : \"15v2y6aazh22a7jkzcd017ya9wu2xbh24cw601krpfc2el2q2lxpylqbam641fg0540i4q3u6sis49mh7p25eve08rjzys3u5pj3luoqfsrc1htr31kwpkws8u693bflg04tb3i7zu5yn37vpob6zejnih378u7zthdb7uldbaax48z2nzi6gsce9c69l6kqpnlvr\",\n \"index\" : 8488231224486027044,\n \"message\" : \"Perferendis qui fugiat ducimus aut. Qui temporibus illum eos dolorum. Earum totam quis totam unde debitis quasi voluptatem. Rerum corporis est commodi atque nihil. Harum facere est eligendi.\",\n \"value\" : { }\n }, {\n \"code\" : \"4hgsz60no0wckdwc2r9guk8d8lkyx1xz41akhvm3us57wg2p8kxhvysjttbd12muu5kwu6n9sg2v94zjo601ayi\",\n \"field\" : \"xsky0527a47fvl8p1vc6yp8chrg0kkq7uit1ku437j2w5e1uhkfjtclf1nxxpms29s3erxau3mx2iiphwj1f7by016lmzl6lq4i3flaxp1vv6xvgnq27ilmif2t8384es7xht2vwio3my6rs9q9pc3tuwp95fk3x7xqx9xtfqfw\",\n \"resource\" : \"ltd9qgip8j6ducotr8emjbfg7bsfu891ad0nquz16\",\n \"index\" : 2861128297477119104,\n \"message\" : \"Ducimus facilis nesciunt est necessitatibus qui et. Dicta consectetur voluptatem soluta labore illum totam. Occaecati consequatur adipisci. Dolore suscipit itaque accusamus dignissimos est. Perspiciat\",\n \"value\" : { }\n } ]\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "bed5eed2-58ab-41ba-bda3-3962041e8311", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.872119Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/remove-team-access-restrictions", + "schema": { + "description": "Validation Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "errors": { + "items": { + "properties": { + "code": { + "type": "string" + }, + "field": { + "type": "string" + }, + "index": { + "type": "integer" + }, + "message": { + "type": "string" + }, + "resource": { + "type": "string" + }, + "value": { + "oneOf": [ + { + "nullable": true, + "type": "string" + }, + { + "nullable": true, + "type": "integer" + }, + { + "items": { + "type": "string" + }, + "nullable": true, + "type": "array" + } + ] + } + }, + "required": ["code"], + "type": "object" + }, + "type": "array" + }, + "message": { + "type": "string" + } + }, + "required": ["message", "documentation_url"], + "title": "Validation Error", + "type": "object" + } + } + } + }, + "insertionIndex": 835 + }, + { + "id": "30dc59dd-7ee9-4a00-bacd-5b0c51c6105a", + "name": "Remove team access restrictions - default", + "request": { + "urlPath": "/repos/c03lau02928curk1gfcgp478vxxu8dcmblpik1wz894v72v4j5ky2hbe4khi2z5i3vhyd/i494zxb02zn6oajln5mj5mj7dobu15oguiee01e9f1fm7mkqfe1cwzuqlmup8kuq9pw9bvfkjh1959pxascf9oy56cl1colr74dflc3rzyjwc0cybzblqm6it8ef2eygnavznfgbqjvx/branches/7hboo0puba316wav90e3tkjqkm2r7j0e4mnjxm6sd4s3uf55lth/protection/restrictions/teams", + "method": "DELETE" + }, + "response": { + "status": 200, + "body": "[ {\n \"description\" : \"A great team.\",\n \"html_url\" : \"https://github.com/orgs/github/teams/justice-league\",\n \"id\" : 1,\n \"members_url\" : \"https://api.github.com/teams/1/members{/member}\",\n \"name\" : \"Justice League\",\n \"node_id\" : \"MDQ6VGVhbTE=\",\n \"permission\" : \"admin\",\n \"privacy\" : \"closed\",\n \"repositories_url\" : \"https://api.github.com/teams/1/repos\",\n \"slug\" : \"justice-league\",\n \"url\" : \"https://api.github.com/teams/1\"\n} ]", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "30dc59dd-7ee9-4a00-bacd-5b0c51c6105a", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.871565Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/remove-team-access-restrictions", + "schema": { + "items": { + "$ref": "#/components/schemas/team" + }, + "type": "array" + } + } + } + }, + "insertionIndex": 836 + }, + { + "id": "842d6521-9ae7-47c3-9b28-3b48d606a527", + "name": "Set app access restrictions", + "request": { + "urlPath": "/repos/ejh6zyo0tlfshgjmh0rtcustfpm55apj3x5wukgy24r01c58ieb9w100rl5hx3widonzxmgeiyxfqvztysjci9tem2/tdptih23hbgrwe8er7hnczmwca3hhyhy6rj309y9zk4cczokf9ekjhn97s8tdqdbit8w5bshoco49f49ihsu9gk2fr/branches/28hr8zqa0up4899j85d0wsfui8ew726ssk3xfldhq87ob5uw6b2egpsjqkvw2ppwu957wkvw1wkdbj0n5kepddzqy97f7paj9jnltq0c6q1jid60rss3acrgo1f92dlvja2skcbxnakal4nf3z0wszghyu6fy9qaiehvypmfm4sjsbxwp27m3udcj2pn06d/protection/restrictions/apps", + "method": "PUT" + }, + "response": { + "status": 422, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/321200\",\n \"message\" : \"Aut et sed ipsum voluptatibus mollitia alias. Odio corporis totam itaque voluptatibus asperiores pariatur. Non eos fugit repellendus nihil quibusdam dolorem. Praesentium quia esse laborum perspiciatis\",\n \"errors\" : [ {\n \"code\" : \"w570ls9onw4jakpuvvxr46ekp83m9rqgf33ayfhh34dlmy2ijy9a864vlh2ljzwapcvy1lnsk3bu2leltuus0jfr7vkp6wrz40zga6otlmeu5vascix20tffo81eekkkyarj6uvon\",\n \"field\" : \"endrm2luwqhku4hkg6s5h5oh35azszfnnh0zfkf3br9r2scpe7kqsjexyt87p0h7umyuh62b2vn9h2idv45remja6y4g2fb5bu7zg7eikvxac89i1ripea3cnmp2y49w71yqvcjwxcziee2ivbcjh167t0g6yhv24vjbbs5o94o29hm1l4idjs8mg\",\n \"resource\" : \"gr0hkim1cnh0ii1dzk8ulwp1110abppvcdx1muam6k6dy6ymjxm3mipcg7zisai0lvmukb2sa9gwp5twdwhen0mmqhxxtgbg1k5ufqqebbqt4j4bpgeyt2at38dekra8dk4ea4elu6ti6fdw3qg9fzrbjibnsjw22kqha79z\",\n \"index\" : 8137164527537258168,\n \"message\" : \"Sint eum officiis praesentium libero sit nulla. Doloremque rem doloremque maxime eaque sed suscipit. Voluptate ex doloremque.\",\n \"value\" : { }\n } ]\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "842d6521-9ae7-47c3-9b28-3b48d606a527", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.871493Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/set-app-access-restrictions", + "schema": { + "description": "Validation Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "errors": { + "items": { + "properties": { + "code": { + "type": "string" + }, + "field": { + "type": "string" + }, + "index": { + "type": "integer" + }, + "message": { + "type": "string" + }, + "resource": { + "type": "string" + }, + "value": { + "oneOf": [ + { + "nullable": true, + "type": "string" + }, + { + "nullable": true, + "type": "integer" + }, + { + "items": { + "type": "string" + }, + "nullable": true, + "type": "array" + } + ] + } + }, + "required": ["code"], + "type": "object" + }, + "type": "array" + }, + "message": { + "type": "string" + } + }, + "required": ["message", "documentation_url"], + "title": "Validation Error", + "type": "object" + } + } + } + }, + "insertionIndex": 837 + }, + { + "id": "32ebfff1-c1fc-40e5-bada-c13d6284e986", + "name": "Set app access restrictions - default", + "request": { + "urlPath": "/repos/4bcmvild7l3pa1znz1pebp6nofld84btbtuvi3pbktma/9m13n3lr02bciv5x72ax3xw8529l3dz0wnanebyl5evrvyyzsv1fpl2e2vsai1760ioo7k63e/branches/wvv6urqp6fcr4wtmmyzeyg01f67ocnxcp1khxtjh50t03wl3k47k491akqt6qrma5seeosupgft9ml0b4e3xkjpiv5ymnmjf8d4cib5hk860ajwjkg1u20tk0q3yz4r43gu5dexicpcuf3a1mxtrmazg4bozmps8lk9n76ar4/protection/restrictions/apps", + "method": "PUT" + }, + "response": { + "status": 200, + "body": "[ {\n \"created_at\" : \"2017-07-08T16:18:44-04:00\",\n \"description\" : \"\",\n \"events\" : [ \"push\", \"pull_request\" ],\n \"external_url\" : \"https://example.com\",\n \"html_url\" : \"https://github.com/apps/octoapp\",\n \"id\" : 1,\n \"name\" : \"Octocat App\",\n \"node_id\" : \"MDExOkludGVncmF0aW9uMQ==\",\n \"owner\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/orgs/github/events\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"github\",\n \"node_id\" : \"MDEyOk9yZ2FuaXphdGlvbjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/orgs/github/repos\",\n \"site_admin\" : true,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/orgs/github\"\n },\n \"permissions\" : {\n \"contents\" : \"read\",\n \"issues\" : \"write\",\n \"metadata\" : \"read\",\n \"single_file\" : \"write\"\n },\n \"slug\" : \"octoapp\",\n \"updated_at\" : \"2017-07-08T16:18:44-04:00\"\n} ]", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "32ebfff1-c1fc-40e5-bada-c13d6284e986", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.871176Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/set-app-access-restrictions", + "schema": { + "items": { + "$ref": "#/components/schemas/integration" + }, + "type": "array" + } + } + } + }, + "insertionIndex": 838 + }, + { + "id": "be1e0f67-c7d9-4b55-baf6-9e24edcbb556", + "name": "Add app access restrictions", + "request": { + "urlPath": "/repos/t9pp12g8yda2nie6w8delv16rgsp12drw27v3yprjvnazps6wmhxoml69bd2s9fern89lo526ho2o0swspx6p1cqiww6juehcm5u2qqenmek5fig2ifu7ao7zjp67g6blch4a7duikrmeffxoal33lvrg844v6ikkpziq4p7e59a8mrs4/btfyhw25kr93t214y7m3fiuvuvft6mrcg75eto5xxxwe4nldmd8f1ralbgrvjjc2tq9vioy0bae0p1hax/branches/2a5pcbihskmy4cbze9qi4msbv6v8pfu/protection/restrictions/apps", + "method": "POST" + }, + "response": { + "status": 422, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/820232\",\n \"message\" : \"Perferendis nisi suscipit ut soluta omnis non amet. Porro atque qui. Soluta iste et sed. Error est vitae fugit eligendi.\",\n \"errors\" : [ {\n \"code\" : \"kx981l4ih1qqucv89vekruhwiibjlkogin0892gdma8x4s63twy1\",\n \"field\" : \"crr6892v281zkznt53qsx10dtun3s1umrmmugrfrjofmqcdfpqcvnmr8025vdltu208stu8up5pkh0\",\n \"resource\" : \"j4gmlz38llj2\",\n \"index\" : 1116211522236645119,\n \"message\" : \"Aut ut alias placeat quis et nostrum eaque. Ut quo maiores ducimus nulla corrupti. Explicabo eveniet similique dolorem facere.\",\n \"value\" : { }\n }, {\n \"code\" : \"d25na4x1i194khxk4xxcqp72r7xc9qa556bsyhi97mvhd6s510z8nzdi97a0d4h1gjrk0cct2ilqem7m025tz0n31n\",\n \"field\" : \"023w9x7zt02mtm7bd826r2wi63wde30ff1rgqno4d4hxuk3x2nphor5p9gqph8t64kjfyqevsz80n5lx0m3lfplg2jcsuhhl45ipdft04rp39wc4rfi7wincx88lt\",\n \"resource\" : \"fcisz4a7e1dna1xo1xvu8i2lujl0ld727f5c8d9cy7v25c6xx286zd25x3nh5yw6cem28fwcc27id\",\n \"index\" : 1654193980511157023,\n \"message\" : \"Praesentium est est voluptatibus quae molestias. Autem omnis assumenda quod voluptas animi fugiat. Qui et vero consequatur odio ipsam cupiditate. Sapiente laudantium exercitationem et ipsam. Eaque dol\",\n \"value\" : { }\n }, {\n \"code\" : \"mvtaqfhc9jgq8lyac230t\",\n \"field\" : \"5ev5sn7idu0khcqhbi3a2rkyd503kjpdu50jpxwirgvg67xa6g8b02x1fo7lv1w7lymcud1ddfkl4si2\",\n \"resource\" : \"wurv4fc1vk6jhxo26pz8kpihwx8gg7449136xjia0i2h1q80lnvwf65faebgoxoccr9fcnejl89nbux08lu1atws6hmitlak57m139hj9plifnxk07gczclenlsb13ieh\",\n \"index\" : 7024388274935920062,\n \"message\" : \"Cumque commodi sit. Et ab at iusto delectus nemo ratione. Suscipit culpa animi voluptas consequatur laboriosam doloribus quia. Est occaecati molestiae. Dolores vero voluptatem quos dolores.\",\n \"value\" : { }\n }, {\n \"code\" : \"qju8pmkfleebihwyijypcd3plo757shwxrhnp1jl25gmyxrjp35078iefo\",\n \"field\" : \"nm15jg2d8orjru55izlo0lqysi2rs8c473p2kik4apq4ktizcpyd5cln739pxoh4x78oqersn8qfg7ijcik566uzc17id9dhmfdzu8o58a60qcdxzjmc9hz7yjlvi0nyemu77oyksm5mastm4o6eg7wumjage\",\n \"resource\" : \"o2c1t501w8p87ohg9bydu3fhdsn35cl6ymko4668x9k1fskthv27z\",\n \"index\" : 6245874856566453979,\n \"message\" : \"Accusamus et harum et eligendi. Sit enim optio dolor dolorem ipsa. Non nostrum quis at tempore tempore. Voluptatem tempore velit ut qui quidem officiis. Excepturi eveniet nulla soluta consequatur assu\",\n \"value\" : { }\n } ]\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "be1e0f67-c7d9-4b55-baf6-9e24edcbb556", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.871103Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/add-app-access-restrictions", + "schema": { + "description": "Validation Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "errors": { + "items": { + "properties": { + "code": { + "type": "string" + }, + "field": { + "type": "string" + }, + "index": { + "type": "integer" + }, + "message": { + "type": "string" + }, + "resource": { + "type": "string" + }, + "value": { + "oneOf": [ + { + "nullable": true, + "type": "string" + }, + { + "nullable": true, + "type": "integer" + }, + { + "items": { + "type": "string" + }, + "nullable": true, + "type": "array" + } + ] + } + }, + "required": ["code"], + "type": "object" + }, + "type": "array" + }, + "message": { + "type": "string" + } + }, + "required": ["message", "documentation_url"], + "title": "Validation Error", + "type": "object" + } + } + } + }, + "insertionIndex": 839 + }, + { + "id": "3733cca5-b506-4261-9b4f-168eeb52cbd5", + "name": "Add app access restrictions - default", + "request": { + "urlPath": "/repos/zni2t40z2gietsrsc8bwfmra9tcp7qp0du9aaqrc4oqvsfxz4jjaeedanrd3h2jxt88vhty8hgvvq4tehmqbqq64szu509iwny4h2ev0d4htos464ugcdpbk24zcxdafiiw/8x7y9ej9w3wskt4cg9wz8o2kjtgm5gfw2mw8yw5u9m9027x4jaeqjjs0c725eqx2qkw4s78vb896ilttca0gdpv7x1ho7q4vi31x303ne8zrgf0bo6amjkyvtj8fssl7r0t0oekko61e9z32qgoeks5dtmlrl90qgim8uvfln2iocry2giz7o3dpd5jr2xvv6de193xx/branches/r1y93h7xalsql66z47w8b6d59px3attm8ntycmkknlszkpcxs038x0qvlr5m6n49sgly7x7hftc17o4l5bnxscq8va3k5eyw3s/protection/restrictions/apps", + "method": "POST" + }, + "response": { + "status": 200, + "body": "[ {\n \"created_at\" : \"2017-07-08T16:18:44-04:00\",\n \"description\" : \"\",\n \"events\" : [ \"push\", \"pull_request\" ],\n \"external_url\" : \"https://example.com\",\n \"html_url\" : \"https://github.com/apps/octoapp\",\n \"id\" : 1,\n \"name\" : \"Octocat App\",\n \"node_id\" : \"MDExOkludGVncmF0aW9uMQ==\",\n \"owner\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/orgs/github/events\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"github\",\n \"node_id\" : \"MDEyOk9yZ2FuaXphdGlvbjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/orgs/github/repos\",\n \"site_admin\" : true,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/orgs/github\"\n },\n \"permissions\" : {\n \"contents\" : \"read\",\n \"issues\" : \"write\",\n \"metadata\" : \"read\",\n \"single_file\" : \"write\"\n },\n \"slug\" : \"octoapp\",\n \"updated_at\" : \"2017-07-08T16:18:44-04:00\"\n} ]", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "3733cca5-b506-4261-9b4f-168eeb52cbd5", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.87055Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/add-app-access-restrictions", + "schema": { + "items": { + "$ref": "#/components/schemas/integration" + }, + "type": "array" + } + } + } + }, + "insertionIndex": 840 + }, + { + "id": "15eb509b-c40c-45e8-b793-523927a12507", + "name": "Get apps with access to the protected branch", + "request": { + "urlPath": "/repos/eor72epctl6tobaeugu67dmz7r2r7zsyzb9gz02vsbxqlvdm0abuj8b2okzkyhmilwxsmdknshhwj0730k8s8c3v5b6sft5aw9hp558z230499rqqf7s2ekrucn8jcwtkww6o5hon4/55kwy5dub7040yz6rp0yntf69qbjf4lk1pqelikkevtsugtphu50u8hmta2suksmik863vikbhgnq32ndzd3w33z3ggq6y9d/branches/jefcaz3sqlx2rpt5kif3btvs9a3ps47uh8fv8uz4vmm43j9h6r4zamaj8biypdeqa8jxu23e4xj6b5x43i30owv59kap2xwoiclm8weuatk05se9ww2y34t35tsn5boquh2ua6wfpjwewbnp8hul9p9l3mkz88q9ev62cwiykksg76cckh7ywc9q8/protection/restrictions/apps", + "method": "GET" + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/774846\",\n \"message\" : \"Esse nam tenetur aut et. Repellendus ut aut. Quia omnis molestias dignissimos. Deleniti laboriosam voluptate pariatur sunt. Similique id iusto.\",\n \"url\" : \"https://web.example.mocklab.io/787318\",\n \"status\" : \"qvzuvhrwmcdwtz3x1bqok50hy60ez0s4l8bj5xtxokczdrxzud4f344wswjf6r3gurb1lo8m4lczobpnjiao7c4gvfwrzxpsg5tq57uv2xf0g2bg3xargmc0lh7e3ohgeh3gldghixnat71jtx3onsnxcc18dqpjm9wdw2xs\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "15eb509b-c40c-45e8-b793-523927a12507", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.870479Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/get-apps-with-access-to-protected-branch", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 841 + }, + { + "id": "c2b4f694-ffd0-4562-9c55-d2b8383faa5a", + "name": "Get apps with access to the protected branch - default", + "request": { + "urlPath": "/repos/xwxajdchothis89ms5b3af0rpjqra7r81fmxi3gqrxope1ya9j2dyrxlq4hcmwhz4t4/wqbhczc40f5ovntoht90213mxk9ejqox0k5tl5ja76r4r5egnjxhabnwsr8l1x91hj4ook94b78lbevl708oqos0nqq2dxjdtfrkm0bspdtoje4wpcxef5fzt58beuwkawn0vuj4oak4vst1tfw1pxahl1hnpumfaif16iq0c54dyt2ok568fd/branches/99wu9d6xxtkfvl4zcuqdjt4l9atm0bj9twry0bwnk400c372mfa86zjzoc033euruklm5e5cf645wsjkaznke5xtxjd1/protection/restrictions/apps", + "method": "GET" + }, + "response": { + "status": 200, + "body": "[ {\n \"created_at\" : \"2017-07-08T16:18:44-04:00\",\n \"description\" : \"\",\n \"events\" : [ \"push\", \"pull_request\" ],\n \"external_url\" : \"https://example.com\",\n \"html_url\" : \"https://github.com/apps/octoapp\",\n \"id\" : 1,\n \"name\" : \"Octocat App\",\n \"node_id\" : \"MDExOkludGVncmF0aW9uMQ==\",\n \"owner\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/orgs/github/events\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"github\",\n \"node_id\" : \"MDEyOk9yZ2FuaXphdGlvbjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/orgs/github/repos\",\n \"site_admin\" : true,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/orgs/github\"\n },\n \"permissions\" : {\n \"contents\" : \"read\",\n \"issues\" : \"write\",\n \"metadata\" : \"read\",\n \"single_file\" : \"write\"\n },\n \"slug\" : \"octoapp\",\n \"updated_at\" : \"2017-07-08T16:18:44-04:00\"\n} ]", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "c2b4f694-ffd0-4562-9c55-d2b8383faa5a", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.870233Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/get-apps-with-access-to-protected-branch", + "schema": { + "items": { + "$ref": "#/components/schemas/integration" + }, + "type": "array" + } + } + } + }, + "insertionIndex": 842 + }, + { + "id": "85ae333a-7fc0-4263-9cd0-81b7787873dd", + "name": "Remove app access restrictions", + "request": { + "urlPath": "/repos/qmachn2cjnjru3rsabpgm100n7gr2yqx965oq11ak2mwcc6ihg1gio0tzowr2bqksf31ta4cyr039xssyvhf48tdsq53nuzz8mbbgb8eeidl3zazru9626i3dbzgt0u8dyd3dw7g0z/khe3yz/branches/ji1iov9oy8ku4cwrtf48nbdqv39mpwtkjopkpxete6fjyldn05mqvct02mplhs0uis65pyn1or5ccirkdz0mguokbijidruq15ao71w16j3yoy39vdffk3idoixtr2dxtw87rq3469n7h/protection/restrictions/apps", + "method": "DELETE" + }, + "response": { + "status": 422, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/610436\",\n \"message\" : \"Tempora animi ea dicta iure. Cumque quia qui ullam maxime dolores laborum. Dolorem enim rerum. Quia sapiente soluta aperiam dignissimos consequuntur delectus.\",\n \"errors\" : [ {\n \"code\" : \"gzmx6hhph0xyrxz7rm7mnfih2ntjstlqf6xx77zeu70djrxdmzaxdkn4lxemful6a75obvk4d4j2bkgpjrkiwc8ucmip8n3iasxgiwfz5vxvu7e3m6ka8ojzmo\",\n \"field\" : \"s5x7xr23cips15xnyl7hnjk66run610wul10sc7az\",\n \"resource\" : \"8fvyamyecq5t2bwfbh0st\",\n \"index\" : 2815903001673538588,\n \"message\" : \"Dolorum porro qui. Doloribus adipisci est voluptates. Esse amet sed consequatur ut aperiam amet. Sit laborum quia quam sed ut aut. Illo fugiat temporibus est adipisci dicta.\",\n \"value\" : { }\n }, {\n \"code\" : \"04u3bj451lrgut9pp2ryta0cldouco8kbkgsujthby5l36cix4iptrjk28uv52noimbvt6bp9taf0esnse4m61spqlse7ulfxpxyl0dscgrwwttdd4eo8j83a646ra75c\",\n \"field\" : \"6u3f8e0mye0zceaaisdev64509332hna4o3xr7frz9737b6ly90sump4e2n0j1n4rtlg3u3hbe5mo0efteaan6jas1r1zjuvzgcd2sq40bo6tc88zbrvl68s2tjiabjmo1d3kthm0jz6usaj5ocv90jmk28oo8n\",\n \"resource\" : \"n3vg8q8mlb3\",\n \"index\" : 5564137327774591732,\n \"message\" : \"Explicabo quia sit animi dolores repellat ipsam. Voluptas vel animi rerum unde. Quidem eligendi sit reiciendis facere aut.\",\n \"value\" : { }\n }, {\n \"code\" : \"c0r46u5qivzq4d9xb8ggf9m6hi8yiw8fckcunwn3r9jhf216npqeuyuw8if8qxjx83nsxpmyp4mxigu9n6fuhxsxp0nnv16if1svabxmrm3m3zo5ye91w6tw107\",\n \"field\" : \"b9c2p134hlr5cjojtoznvrxlzr98fed4hu57ilukvqj014n3t3mwsutoh21smqcnk8k50wsri52t0sy6wq6sr67bgnqglzpqk0tl9\",\n \"resource\" : \"a4dqipqxbo2izm38exgsz9ta3jodvz6siwlsok02xywxdry1ccojfhgdv0xmimc34rutil9cjqw9xol\",\n \"index\" : 1130935150133007252,\n \"message\" : \"Minima recusandae quia ut reiciendis nesciunt vel. Sit blanditiis ut impedit. Ipsum ut et quia quia laboriosam eum.\",\n \"value\" : { }\n }, {\n \"code\" : \"owgm5r8js1zw5h6lobza5q43xm6qtyhjn3aq86jgmo8crfxpwbj6l7cpkbr1t9eukza73nyobe82jall4x4xjfp4xkovczl8gat1l87cxwg2eogh5btqurvls3jtdx2ozk1nz6iu7xqwmknu3lmqrtum97zj1bce2s4qkh1s4phv3timb7gxte1101k1olh\",\n \"field\" : \"do5n9o0u8dbux7f3jgkp0utpexgv2t60fllz4bcrpkwo8sbrsr79nndkm2ydhg36p3o0xrwxs0m4w321zlo8gr5q5j472t1xz6stt9fshfh07ha1t28x1o3jndeg0tunhpt7k4csiw\",\n \"resource\" : \"uknc3ruvc9xrwka7w28408h775uod9hbdct2c6jpldouqxolkkt475oagsaxwkjieyih6yl57bzmet7646vvxujvzrpajp2dy1uchhhdvoatdkeo98mlyop8z35fi3hg1ul5t6ynk8oll2exupmhe1er5sr75yobv8ziz1428urrgv5w\",\n \"index\" : 7727516677057688567,\n \"message\" : \"Quam debitis numquam molestias sit doloremque consequatur. Rem eius quasi qui vero voluptates sed quisquam. Sit asperiores vero quia molestias voluptatem saepe.\",\n \"value\" : { }\n }, {\n \"code\" : \"a8fvvwylfexy2rlbvqi3ovv55xe6m7fvsezk3ogfhasw5v0znwgkhk0kcphcuyifnszaychc6m48y0l9rjf4goyzs38j1z7k4mzxmoh5qsaacfb26ot3ah14dhhtfwm23rblmgrkt6gmsbs9ebd5q9gunpdw14nwopsyblk965\",\n \"field\" : \"o1w9aa5eelm1uiry1ya41r81li3o2t6zi2y9oedrerp44vcv7xruy121mk1kxatld1726jyrxgx1o97875qfu235z8nmnzoh4iwfd5cmpztnipbkasapeylbzskkijarfptcprx7uaz2em0wbfk1k3v82if24uwarylt2pba5f5qodurzi0s13yv9gtunto7og1\",\n \"resource\" : \"tzqbny3lm8iag7s3n0yujw1v9l8kis1qr84xd3sswugtqvqaxhw4db76e7hsmnizgbjswtk8hltuat81x6dafmm65xa4jq29jeod1xwj7u47kib7l1yksnfy1i468pgtmyt5verd0tdaklmhfvdxwde647\",\n \"index\" : 1231420130337335150,\n \"message\" : \"Nisi aut fuga culpa laudantium exercitationem officia. Provident reiciendis libero quibusdam sunt harum illo. Omnis dolor magnam magnam dignissimos cum. Maxime quae distinctio vel deleniti beatae ut p\",\n \"value\" : { }\n }, {\n \"code\" : \"26806imh5gmpzuhhvbqxc8wq733hqfor3ur1vgq59h4qtxvu5bryv13f3s3cvoxv1vryxmh0op3li9h2vbuxl5p55girxdix72m8r01hvkr8w3x73z369rkzjm4cex6x6jlpjfaexybt96ujh3x95vefphx9f\",\n \"field\" : \"tnro4di1ekvb7afz2nbbgpgjgs6w6snp0afurjrna8nlm39grju9iscx82dvqr2yv0i1tcvojl1adwf1h4y3sj4yj5eqoc74mlxf8jhrpwrpaywadp19rwho4yynezhr80o2iy\",\n \"resource\" : \"jfqemn4tg1q2gh04dbrbxyc6peh2vewjtw1bi039vsyvs38nwhpw3le\",\n \"index\" : 7779324757050959751,\n \"message\" : \"Earum qui nihil distinctio incidunt molestiae quod aut. Molestiae et rerum. Qui culpa debitis aliquid. Omnis officiis asperiores ullam dolor iste. Eos enim mollitia dolores.\",\n \"value\" : { }\n }, {\n \"code\" : \"bybkfq4i4nmlmzibvjzmzcgs01drhfmy7aolzqi\",\n \"field\" : \"acq0t6o4byv2yxjtsbgylcg0npo15hk1ydko99uujn7yrrah9a1g1la43q1fippr\",\n \"resource\" : \"ajeu49ja18ec6wqe55ay3ewgpdude7cpebodz93k68oktma4cpj5qdb217olepnpgcd9onqbeva77yu7up9cim7fps41gn2xffdhg583o5dalvjk\",\n \"index\" : 8631568742001742317,\n \"message\" : \"Maiores dolore consequatur laborum. Enim deleniti sequi magnam soluta dolores. Repellat dolore totam est numquam. Vel quo et iure sequi nulla ab.\",\n \"value\" : { }\n }, {\n \"code\" : \"3wzg3pg4eno1kngan2du5vufdueclmrdi0\",\n \"field\" : \"dnvvkq84d2ntahobqvz0fr8mmfwrb6hfqwvtz1wtreifnznaae63nv5c9neisi072nubeu3do2v56e6df6rsyjzxe3c09k0m48r0eam2xw2c6cl1jqk2o0mjwd1gq7b5g004vt7b5mjb5iculj3u95b334avvdk6vyqth6crxndvdo8hejwkxcct4ga9ccnisqko4\",\n \"resource\" : \"s3iw3cyu27g2kcdjnjbhyggfged1dai5jg5nri48ahonpe87t6sysr5wx6yx6pvc1hljo2xgmcv7wzpf\",\n \"index\" : 151242357945716464,\n \"message\" : \"Quia et cupiditate nihil sapiente. Et ea hic voluptatem laboriosam corporis. Totam sunt commodi consequatur tempore qui saepe est. Quod reiciendis consequuntur nemo ut consequatur maiores labore.\",\n \"value\" : { }\n } ]\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "85ae333a-7fc0-4263-9cd0-81b7787873dd", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.87016Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/remove-app-access-restrictions", + "schema": { + "description": "Validation Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "errors": { + "items": { + "properties": { + "code": { + "type": "string" + }, + "field": { + "type": "string" + }, + "index": { + "type": "integer" + }, + "message": { + "type": "string" + }, + "resource": { + "type": "string" + }, + "value": { + "oneOf": [ + { + "nullable": true, + "type": "string" + }, + { + "nullable": true, + "type": "integer" + }, + { + "items": { + "type": "string" + }, + "nullable": true, + "type": "array" + } + ] + } + }, + "required": ["code"], + "type": "object" + }, + "type": "array" + }, + "message": { + "type": "string" + } + }, + "required": ["message", "documentation_url"], + "title": "Validation Error", + "type": "object" + } + } + } + }, + "insertionIndex": 843 + }, + { + "id": "8b8c1320-0015-4a2e-ac5d-5ccb92b3e741", + "name": "Remove app access restrictions - default", + "request": { + "urlPath": "/repos/lhnqsz4fqugbh6myqxlbfjm771khp8kfnwlq3wfsckl28ulahjdnz5jcd28/57d0k03hed34re9px72/branches/oqf0lg5y51u3kgf18uiyslyc51r5lxrn6us5r7egqlai2261quw8n54ny/protection/restrictions/apps", + "method": "DELETE" + }, + "response": { + "status": 200, + "body": "[ {\n \"created_at\" : \"2017-07-08T16:18:44-04:00\",\n \"description\" : \"\",\n \"events\" : [ \"push\", \"pull_request\" ],\n \"external_url\" : \"https://example.com\",\n \"html_url\" : \"https://github.com/apps/octoapp\",\n \"id\" : 1,\n \"name\" : \"Octocat App\",\n \"node_id\" : \"MDExOkludGVncmF0aW9uMQ==\",\n \"owner\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/orgs/github/events\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"github\",\n \"node_id\" : \"MDEyOk9yZ2FuaXphdGlvbjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/orgs/github/repos\",\n \"site_admin\" : true,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/orgs/github\"\n },\n \"permissions\" : {\n \"contents\" : \"read\",\n \"issues\" : \"write\",\n \"metadata\" : \"read\",\n \"single_file\" : \"write\"\n },\n \"slug\" : \"octoapp\",\n \"updated_at\" : \"2017-07-08T16:18:44-04:00\"\n} ]", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "8b8c1320-0015-4a2e-ac5d-5ccb92b3e741", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.869181Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/remove-app-access-restrictions", + "schema": { + "items": { + "$ref": "#/components/schemas/integration" + }, + "type": "array" + } + } + } + }, + "insertionIndex": 844 + }, + { + "id": "32088430-8543-4135-85b5-f1bbd76015e0", + "name": "Get access restrictions", + "request": { + "urlPath": "/repos/23ktyfbt26jmhphf4n8stmr0ko8uzphlsit69uxhrvbkgq0d8bun3e6va186vngfqnasej91qyhrmx7sm5mhxxda6mht8oglltviyeoeti1kk2a52fh4kshf/xb6gsz1atwla36ubnjlgf5yzb8mqla1ptze6i6dyr9xsrxg2ct4x61l6ds5ggmzchhz7j3f4ul46r7gfcfkzqkeutxxstgxy1sjfuutr6fa9mdpotx8ai0a85amu7v3vdu8ig4jtfpfv8iwt4jlu6tg7cck1j/branches/kck96pzb542h5vr2fskjzbo3cpf65f94t5ju3efq5g2bbqrd5rmalvej204ib9u0ob1g5xcjwru771u6vp5gn3vqfwsji584qiqz0jncaxtd6irqqb4x4uck54xjtpldz7y3w6vsl19dqmqk1k9tpu8xdhwzsfb5ias0t7okbkkapawhd93fgew5yi/protection/restrictions", + "method": "GET" + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/867151\",\n \"message\" : \"Eum omnis fuga ratione laboriosam quo animi sint. Quibusdam odio ut totam. Dolore sed eligendi corrupti blanditiis. Placeat et placeat labore non. Odit consequatur dicta aut ut assumenda.\",\n \"url\" : \"https://web.example.mocklab.io/499071\",\n \"status\" : \"a2nguibd6hfp5cknnua2li2ksjgelrqlggtfv028d5sf584ip2999kkvut1ebs8ijousj77936toprsujyid3i2c0k0m3tn58188b5e57isl78zl8tlq7sj57iytroru2ncnk8o\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "32088430-8543-4135-85b5-f1bbd76015e0", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.869105Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/get-access-restrictions", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 845 + }, + { + "id": "ba8ec2b7-e78e-4919-a369-ab1ec8c719f4", + "name": "Get access restrictions - default", + "request": { + "urlPath": "/repos/pfl5dzlqbrs23iy8j8pwsc8cuumku6zib76pixbr7sc2l9rryc3tpowy9gkdbj9bbrlk8stqy7i9me6jx2rqto6z9q37ottaqlstvxvfhpibdqp21b7c9rda0o9uucwy4n5g8rdzkn4wicck2j6d/30o5oo350al66meopt0q7zfv3qaafl3m050bkf1vy0uuqls58q8l3vskrjv9w92mecgrx6iyyt3t923kfcp80y3tlhatadriih72qxotylo4gp7xhmf4o38hf4u7usutsw58o28q0wxilafsokl4hjajy4ti7nkgwi9z17/branches/nk4ri6lg7k5xns5mz97d55bfb5qm41zetetlfabr3v67j5q2i/protection/restrictions", + "method": "GET" + }, + "response": { + "status": 200, + "body": "{\n \"apps\" : [ {\n \"created_at\" : \"2017-07-08T16:18:44-04:00\",\n \"description\" : \"\",\n \"events\" : [ \"push\", \"pull_request\" ],\n \"external_url\" : \"https://example.com\",\n \"html_url\" : \"https://github.com/apps/octoapp\",\n \"id\" : 1,\n \"name\" : \"Octocat App\",\n \"node_id\" : \"MDExOkludGVncmF0aW9uMQ==\",\n \"owner\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"description\" : \"A great organization\",\n \"events_url\" : \"https://api.github.com/orgs/github/events\",\n \"hooks_url\" : \"https://api.github.com/orgs/github/hooks\",\n \"id\" : 1,\n \"issues_url\" : \"https://api.github.com/orgs/github/issues\",\n \"login\" : \"github\",\n \"members_url\" : \"https://api.github.com/orgs/github/members{/member}\",\n \"node_id\" : \"MDEyOk9yZ2FuaXphdGlvbjE=\",\n \"public_members_url\" : \"https://api.github.com/orgs/github/public_members{/member}\",\n \"repos_url\" : \"https://api.github.com/orgs/github/repos\",\n \"url\" : \"https://api.github.com/orgs/github\"\n },\n \"permissions\" : {\n \"contents\" : \"read\",\n \"issues\" : \"write\",\n \"metadata\" : \"read\",\n \"single_file\" : \"write\"\n },\n \"slug\" : \"octoapp\",\n \"updated_at\" : \"2017-07-08T16:18:44-04:00\"\n } ],\n \"apps_url\" : \"https://api.github.com/repos/octocat/Hello-World/branches/master/protection/restrictions/teams\",\n \"teams\" : [ {\n \"description\" : \"A great team.\",\n \"html_url\" : \"https://github.com/orgs/github/teams/justice-league\",\n \"id\" : 1,\n \"members_url\" : \"https://api.github.com/teams/1/members{/member}\",\n \"name\" : \"Justice League\",\n \"node_id\" : \"MDQ6VGVhbTE=\",\n \"permission\" : \"admin\",\n \"privacy\" : \"closed\",\n \"repositories_url\" : \"https://api.github.com/teams/1/repos\",\n \"slug\" : \"justice-league\",\n \"url\" : \"https://api.github.com/teams/1\"\n } ],\n \"teams_url\" : \"https://api.github.com/repos/octocat/Hello-World/branches/master/protection/restrictions/teams\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/branches/master/protection/restrictions\",\n \"users\" : [ {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n } ],\n \"users_url\" : \"https://api.github.com/repos/octocat/Hello-World/branches/master/protection/restrictions/users\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "ba8ec2b7-e78e-4919-a369-ab1ec8c719f4", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.868807Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/get-access-restrictions", + "schema": { + "description": "Branch Restriction Policy", + "properties": { + "apps": { + "items": { + "properties": { + "created_at": { + "type": "string" + }, + "description": { + "type": "string" + }, + "events": { + "items": { + "type": "string" + }, + "type": "array" + }, + "external_url": { + "type": "string" + }, + "html_url": { + "type": "string" + }, + "id": { + "type": "integer" + }, + "name": { + "type": "string" + }, + "node_id": { + "type": "string" + }, + "owner": { + "properties": { + "avatar_url": { + "type": "string" + }, + "description": { + "type": "string" + }, + "events_url": { + "type": "string" + }, + "followers_url": { + "example": "\"https://api.github.com/users/testorg-ea8ec76d71c3af4b/followers\"", + "type": "string" + }, + "following_url": { + "example": "\"https://api.github.com/users/testorg-ea8ec76d71c3af4b/following{/other_user}\"", + "type": "string" + }, + "gists_url": { + "example": "\"https://api.github.com/users/testorg-ea8ec76d71c3af4b/gists{/gist_id}\"", + "type": "string" + }, + "gravatar_id": { + "example": "\"\"", + "type": "string" + }, + "hooks_url": { + "type": "string" + }, + "html_url": { + "example": "\"https://github.com/testorg-ea8ec76d71c3af4b\"", + "type": "string" + }, + "id": { + "type": "integer" + }, + "issues_url": { + "type": "string" + }, + "login": { + "type": "string" + }, + "members_url": { + "type": "string" + }, + "node_id": { + "type": "string" + }, + "organizations_url": { + "example": "\"https://api.github.com/users/testorg-ea8ec76d71c3af4b/orgs\"", + "type": "string" + }, + "public_members_url": { + "type": "string" + }, + "received_events_url": { + "example": "\"https://api.github.com/users/testorg-ea8ec76d71c3af4b/received_events\"", + "type": "string" + }, + "repos_url": { + "type": "string" + }, + "site_admin": { + "example": false, + "type": "boolean" + }, + "starred_url": { + "example": "\"https://api.github.com/users/testorg-ea8ec76d71c3af4b/starred{/owner}{/repo}\"", + "type": "string" + }, + "subscriptions_url": { + "example": "\"https://api.github.com/users/testorg-ea8ec76d71c3af4b/subscriptions\"", + "type": "string" + }, + "type": { + "example": "\"Organization\"", + "type": "string" + }, + "url": { + "type": "string" + } + }, + "type": "object" + }, + "permissions": { + "properties": { + "contents": { + "type": "string" + }, + "issues": { + "type": "string" + }, + "metadata": { + "type": "string" + }, + "single_file": { + "type": "string" + } + }, + "type": "object" + }, + "slug": { + "type": "string" + }, + "updated_at": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "apps_url": { + "format": "uri", + "type": "string" + }, + "teams": { + "items": { + "properties": { + "description": { + "nullable": true, + "type": "string" + }, + "html_url": { + "type": "string" + }, + "id": { + "type": "integer" + }, + "members_url": { + "type": "string" + }, + "name": { + "type": "string" + }, + "node_id": { + "type": "string" + }, + "parent": { + "nullable": true, + "type": "string" + }, + "permission": { + "type": "string" + }, + "privacy": { + "type": "string" + }, + "repositories_url": { + "type": "string" + }, + "slug": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "teams_url": { + "format": "uri", + "type": "string" + }, + "url": { + "format": "uri", + "type": "string" + }, + "users": { + "items": { + "properties": { + "avatar_url": { + "type": "string" + }, + "events_url": { + "type": "string" + }, + "followers_url": { + "type": "string" + }, + "following_url": { + "type": "string" + }, + "gists_url": { + "type": "string" + }, + "gravatar_id": { + "type": "string" + }, + "html_url": { + "type": "string" + }, + "id": { + "type": "integer" + }, + "login": { + "type": "string" + }, + "node_id": { + "type": "string" + }, + "organizations_url": { + "type": "string" + }, + "received_events_url": { + "type": "string" + }, + "repos_url": { + "type": "string" + }, + "site_admin": { + "type": "boolean" + }, + "starred_url": { + "type": "string" + }, + "subscriptions_url": { + "type": "string" + }, + "type": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "users_url": { + "format": "uri", + "type": "string" + } + }, + "required": ["url", "users_url", "teams_url", "apps_url", "users", "teams", "apps"], + "title": "Branch Restriction Policy", + "type": "object" + } + } + } + }, + "insertionIndex": 846 + }, + { + "id": "76a389e2-c7e7-4d30-8e32-97c7bbc13796", + "name": "Delete access restrictions - 204", + "request": { + "urlPath": "/repos/ilfpc3tx6phlms/ztb2g5nscjjnoo2z9zuhxjbwv632o210cceypec6qlszkf8l6ak0u7hrdzfoow9um7xax69q5pw74b/branches/3lb21jeik9cto178jn8/protection/restrictions", + "method": "DELETE" + }, + "response": { + "status": 204 + }, + "uuid": "76a389e2-c7e7-4d30-8e32-97c7bbc13796", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.867965Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/delete-access-restrictions" + } + } + }, + "insertionIndex": 847 + }, + { + "id": "25599232-b736-4582-8179-a3c2ea095697", + "name": "Set status check contexts", + "request": { + "urlPath": "/repos/hlkgmnhj81bde53rmh43a68k1mks42oarleqohvmkbgiavqwmbtnqdzvf49u2ellq2i97c51unpqbv5ipr32sr53h5c8b7sb1ha5ya3gsu2seaa69o6xhwgulwhnc9yww8twtd87cqwlagnawyagwep35y875sbt3/v2r1pr0zozz33vcy81kwg6b99bhnze4b8b70eoprjjyglefuspmgfx8tzwmt8mb5ffc3tjnrdzykx0kj3y2k7g8i6k7kpfe1rqx8ayafxqdessn5awqv7tn4lh/branches/jjxdx2j2nw5pxo38v0esx0imgx0f3aqknn7wxv3mq44jh5thikwrrujazsgs9v5rmh6pb763i3ucznus87a25lhg3n0937hinn0ieunf14br7277pisgeivzu36juirj1mgd/protection/required_status_checks/contexts", + "method": "PUT" + }, + "response": { + "status": 422, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/754138\",\n \"message\" : \"Doloremque eius beatae similique est perferendis. Magnam mollitia saepe architecto. Et aliquam quis odio rerum reiciendis a. Dolorum quibusdam accusamus.\",\n \"errors\" : [ {\n \"code\" : \"uvpvo2i51by24epa5fnez93av4x810zsoa77ey3m67qzvoffmt073125hbjrkclbtrlul8wrynwxvaex76pl2bxd0slpbxh187ohtlsoamfryw8klhnyl1ecpa\",\n \"field\" : \"0jc1ynvswa7qi5itbjm7ea22kw4jf6u2yjt5e02m7bhbkyd9ky25calslmxtgwv5fagyj\",\n \"resource\" : \"l7a3hl5h4k4reok5zmh121jn\",\n \"index\" : 8047323512567932293,\n \"message\" : \"Provident minima similique tempora officia. Aut numquam itaque sunt dolor facilis. Architecto aut officia adipisci aut alias. Quia ex in autem est.\",\n \"value\" : { }\n }, {\n \"code\" : \"883s0uq2t0tjs5g4tf6f2lal62excmmv257z9jy1k6k4df1fo0bv0b5pf0012pdf6rwa9faapmrw4pnxh5vnjymcx0bdazzk6kkvd5pks2zyfbilemmutp13ityi9iz1s7otpah4h5amfotg2\",\n \"field\" : \"fyylodxyxgnmmy8m67lmvrbib7z42j3h8j0yv8r5m1vpy4qbybo7eskf\",\n \"resource\" : \"ipi8uhppeelmkurr00pwsn9fc47i40zslr21u4q7z18htxrrmxvc0pvxlya2pl4nj5ot3ae\",\n \"index\" : 3804214487007598008,\n \"message\" : \"Qui doloribus dolore inventore. Animi ut aut nihil minus voluptatem laudantium necessitatibus. Non et doloribus asperiores qui eum.\",\n \"value\" : { }\n }, {\n \"code\" : \"t1rbeg3w3ne43u6g\",\n \"field\" : \"xuvzdm9tvov0h89k932u7aj5y9noo7ivmeovfcl5w5sbqxpul2kwv3ch9xsq0zx6zd5kgpsvihuxfllro6p1ye96mag421aq36ec3xurwp9h728v7ezvulfzbhv751k4jufx\",\n \"resource\" : \"sf02d8la8r2bb7wffbo36zfxj6471oj2jl93fd7o1kl8nd2kv2htdui7n7uhshls5tznnnyjiyf0tlowkr5nzg86is483q97mt6kkinq2hzayjmbyzhhpqzdac6v2z3symbcf79n7jpopgeylhz35vbck0loa4gvx3t9vdua4aldbj2hpjluifmokss\",\n \"index\" : 377304921009889673,\n \"message\" : \"Voluptas facere iusto tempore commodi aliquid maiores. Aut molestiae dolores dolorum eos. Nulla debitis odio.\",\n \"value\" : { }\n }, {\n \"code\" : \"evu808kvfjitg9aaznhygjkxqmfmh7fofvi8rd5vespeljfslxubemrma\",\n \"field\" : \"g9dns40lfhiwefavtlbl66j0tzhrri13g52axqinmidyqib9xi86b5bs7muwd1ujilrxqu0q5jpbvyhd5h21m94juf7dyr94lso2olcrmae1izmwp2f0rh5q2ne20gxy3cpoqhj56loay5rtx1y6vymlfq47w8ssmv7u4ptlptw485754azi9217lw\",\n \"resource\" : \"7bvbnn6slzbgf9co2pabjpet6a9nlp5dwztiphgauozcj0xfzp5\",\n \"index\" : 3456664331176856124,\n \"message\" : \"Rerum quos autem. Sunt repellat voluptas vel quaerat. Explicabo molestias delectus quo atque aliquid vitae sit. Id quae corrupti nisi.\",\n \"value\" : { }\n } ]\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "25599232-b736-4582-8179-a3c2ea095697", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.86791Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/set-status-check-contexts", + "schema": { + "description": "Validation Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "errors": { + "items": { + "properties": { + "code": { + "type": "string" + }, + "field": { + "type": "string" + }, + "index": { + "type": "integer" + }, + "message": { + "type": "string" + }, + "resource": { + "type": "string" + }, + "value": { + "oneOf": [ + { + "nullable": true, + "type": "string" + }, + { + "nullable": true, + "type": "integer" + }, + { + "items": { + "type": "string" + }, + "nullable": true, + "type": "array" + } + ] + } + }, + "required": ["code"], + "type": "object" + }, + "type": "array" + }, + "message": { + "type": "string" + } + }, + "required": ["message", "documentation_url"], + "title": "Validation Error", + "type": "object" + } + } + } + }, + "insertionIndex": 848 + }, + { + "id": "fb061ede-5c00-4c8f-9634-f56b143e4d7a", + "name": "Set status check contexts", + "request": { + "urlPath": "/repos/yxfhbz6iay5t3grhpfywj8fxypg6rgyiry82cxdt4viuc3w76h40c2qdomwg6zbztf5amahq8h9jd7yjaul8kyzn3jrc1ggw4t2gyd6k6plfv66i1hwx020h5vldl7dgc7nifzfn2e23h5p2nrp7873m4u6ptoid6l1pm9x7wph/4qx3jdaja9mt4eoh9d2v0zcqjt3om9vk6xcvlb740o5fxvs82njladxwz82qyya9c7ngt5i07vd8ws4bhlqft43aawkwfk7fhvm7n2nazaag3i3tukmk/branches/q9q8rd4nldf6jsqkymzj5tixu5fd6i5o0jxzq3chtcwj19ewa5ikp6od2p04779uuoebd09k7qadq3c2gtfr79y8zivy2meoakvqr0wwnd/protection/required_status_checks/contexts", + "method": "PUT" + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/022500\",\n \"message\" : \"Alias repellendus non sequi voluptatem in. Omnis odio dolorem. Saepe vel aliquam. At similique atque harum.\",\n \"url\" : \"https://web.example.mocklab.io/796354\",\n \"status\" : \"nblu0dq1wz5vh7jk4ee9jmioe68qk9vkdf677xpnnosr9a2fbhou6s48a590g0xos6eajrcdnxot7fhgby3bgzdlk\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "fb061ede-5c00-4c8f-9634-f56b143e4d7a", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.867337Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/set-status-check-contexts", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 849 + }, + { + "id": "ce19df49-534f-44fa-946f-e83ad214906a", + "name": "Set status check contexts", + "request": { + "urlPath": "/repos/094gxtwjl8vx0mwgw7conpigpvxl/d1hzqdhda1k0i30xgsx6s6ipwd1eizt34oir3y67xt7xuzeo2vbua4f10yz3gwyxpdbbesc7rkn1s6r64zjk29zh5wgtbe3v9k2hpljjh2eyg/branches/3a54gclbvow8ay6c6vu0p2rxtjypigt64kms7rmhgup19gsdwxb80jtda9d80tb0kq8mc/protection/required_status_checks/contexts", + "method": "PUT" + }, + "response": { + "status": 200, + "body": "[ \"continuous-integration/travis-ci\" ]", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "ce19df49-534f-44fa-946f-e83ad214906a", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.867082Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/set-status-check-contexts", + "schema": { + "items": { + "type": "string" + }, + "type": "array" + } + } + } + }, + "insertionIndex": 850 + }, + { + "id": "13a5511f-2207-41a6-a0a2-65f935f61aea", + "name": "Add status check contexts", + "request": { + "urlPath": "/repos/15tmwive5fo3qy4vkrxf6ojpesk38lva4r43zhtayevlv9zg4gcrywf9z6zwwpv2vb5f9ecejgyyvkk9m884isaimwbz2byqtso6cp0iqc047uv0qwsyykb5dk4ksuho/0mjloi5zkfskpodhuxkf752niw7jxq1siflqpm0jsl/branches/jc0x9nybochs1vjlktbrd4pqbcbgvidn869mjbqze8wyon9f0ly2id08ml2dm3pt9a7czh99wlcwtqv5l58xp5on43xkqhzvkmux0c8ue0rtgzqmrblks07vvdwba6k0uzvvukn1kdz8ueu6u0ivbqf38ez/protection/required_status_checks/contexts", + "method": "POST" + }, + "response": { + "status": 422, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/438909\",\n \"message\" : \"Illo libero omnis. Voluptatem aliquid aut est ipsam aliquam dolorem. Ut omnis minus cumque sint velit dolor rerum. Voluptas at enim.\",\n \"errors\" : [ {\n \"code\" : \"22a0xfub0lzpvijctu48dwnxawczg3m7f0r5247o14vfsggac3qybjn6kvkt5vkxil3bv5vm28fru6pusiemc7fykon8lm0wzigixyemhot1aahhjm8pnu8nchlulc1wu396iozs02spn31i6gtrtrq6agu9dp18j363\",\n \"field\" : \"qxpdqopq3pz8jvugyqcwowmnezzrj0qvi7cn5fgekd9ekh2aztdpcvrny2xmup7v24p74gny3lffqqf9vi8pkmpk08xu8rw6ypu1wq666mqeum8xkbwdx51wy0fma27h6trsp2c\",\n \"resource\" : \"vpno5hxr7l7qxyxoj9aa6j\",\n \"index\" : 6379009707065787211,\n \"message\" : \"Repellendus nostrum quidem. Et ut exercitationem necessitatibus. Explicabo impedit adipisci. Et autem ullam. Et laudantium iste velit quam ducimus.\",\n \"value\" : { }\n }, {\n \"code\" : \"hefzk5zperknmitg3auouew9vk5492huqqgc6pvf1c0ltjhtz\",\n \"field\" : \"df8s38eh720ux657uu7a3clnbv4hzvdotw1ofh4m5qj9tl5hwqaoabfp44ydeil0zf2e1jigi61noi34anzl8mwjezklqn6u2isgoybttakr6yzbos7eqvwgwg5a33qjbg7ke38e\",\n \"resource\" : \"k5bfyumpyaep6fsujhavuzep5acoswer2t8lw1kxw6rvqhy0431z99hh559o3e7igo5p8c53711zizrqz61szd124yhdwx6j1smf\",\n \"index\" : 1505583756391752694,\n \"message\" : \"Illum aut cupiditate corrupti. Omnis et commodi eius nemo. Ratione inventore qui unde repellendus. Perferendis non rerum.\",\n \"value\" : { }\n }, {\n \"code\" : \"eu2iybkwrxcl9w1gvrtirev5cfxbz8eknjvvfdqnu1caele3u0tlzqawmi8szlfkdoiy2c2yse3gyfpmta3nu2g4peux0ysw2s11ndfskzzp10\",\n \"field\" : \"w4wkpcm0iox15v4mprr2r571pt0shoe2t1bqlbv8gdofgzaxy1rfnn8herwmzsx5rcqqed8k6dep6r49zjqhehq75r02wlb\",\n \"resource\" : \"rk4dxuxxpmhbo1b949dgj9yiaojlyqu92rw0t79ykcrkevzd4vn3jb6grl\",\n \"index\" : 528516395352527032,\n \"message\" : \"Autem quibusdam nihil. Nulla sed et autem. Quaerat pariatur sunt. Quo commodi hic. Necessitatibus quo labore a provident.\",\n \"value\" : { }\n }, {\n \"code\" : \"1ceol12tzlqg1j4tm0k1fyyxlbhp8ma9k14sga5ijg60gzeg7sty73wonm4hzsrcw3\",\n \"field\" : \"3mjghmdhrn0ou8jgn0is2enfn5f77gxstvh14x86qjsaorakl6xgjon88yipqqdtn3sy1\",\n \"resource\" : \"eqod1wgjexx8dml5ao4sol919w5c\",\n \"index\" : 4223460271147898031,\n \"message\" : \"Ad qui et quae et. Cumque et omnis quod labore nihil sed. Repellendus nam ex et.\",\n \"value\" : { }\n }, {\n \"code\" : \"vmqtf4ex2ee10ixffyrspw483wfuhvx5vtbl29dd1ax7ne43ujgap2g9fvgtlg06y1sx15j9v9upopczmhzl49wl5vpoo7mrr1mhd8795zcwng4ttyp9vgiekx6cr792vyp0nqzdmps0rzcgyhaw09lq0s6c6tq5hu9y1afpzqmwuewf6rpjgam3esa\",\n \"field\" : \"g7e1u39shx3gvpprry199ivvhsn5thoi6gqo9t0sm1gfq1k6z9b4tog7m57vdktf7an9bo0s448sy7o79b73i7gt5abp11us7ysvhi5lta9hv13l9lajylbay12t7i8838q4mwnmrqskoxooazgen9tly81t1dtkmjo6s7egq5ke26btbl496giqrjf2os\",\n \"resource\" : \"q4ys0u076ldi9axs2y1fb39somkxv3vhywmyea2piyslqrn6m4hrrxjvss41fy1yf4m82wq1bsob5ozvsfbcykqm3sr5mmowrg0uhh7t1cb5hwpg81pw7wjztfigss35jojxxwqjn44639q59\",\n \"index\" : 8789464630453520478,\n \"message\" : \"Quod dolorem voluptas dignissimos et quasi quaerat dolore. Tempore qui exercitationem sed totam voluptate. Ab quidem est et asperiores et in.\",\n \"value\" : { }\n }, {\n \"code\" : \"4grs7do2al6cucql45oymmfqqw9uwlnbjc63bnnbe8xq8ip4ugva0c0hzhry7c6s4l9pw6igduypdzc8sewflfiuatkwecqc069b29cqkvww7s7x7dk6lit4ttd2sjgzeoad57tjpst03xijl03jwjdlyvip\",\n \"field\" : \"d788un9tyug42cjwagwag45umn9ogbtskkztl5wzfytq2yj4d73wpkdtz7qlq6eo4pc31xdkdbb53jqsi02yolotbz7ywiz5saxtcgfkl1gpd77zt2r5y3myu5s34kytzr0j4dvv8teit8nvq38g9m5ok3lv0cc2qho6dqgpddr2y8x7wyocrl\",\n \"resource\" : \"e6iay1lg9ta8xxbnaekuzepm13dp40eh226ppyx1zj6en74z54lcvdeqwxmhbc5mgmyv3l89uni4b9a7bmnsrdkj13lnrd6pylreu3qnortkribaw7euidfkpf98rv19348kzq3s84bg16x4wple65fpui3t06iys6baagw73ualyhy6\",\n \"index\" : 6623183128028743536,\n \"message\" : \"Quia enim magnam aliquam sed debitis. Dolores dolorem libero pariatur. Sint dolore omnis totam sint.\",\n \"value\" : { }\n }, {\n \"code\" : \"dmwwkkvyv0br033k3qfbw1ce66jthm2s03p9u32au7ciuqya0es887hsf08niikuc3ejhcivq8ugelg2wwje01hhgdwbbx2shg4h2g2qlatn50nwjtls30bumdftl2gvntuhx4fxitqdnzoch8cb2xwizhukbg5xmfkk5e929as636fi2l2ypug1ckw\",\n \"field\" : \"9dyqo5bn0rokbk8stu48l0wbo72fw27ie2qjoccf09qhi5yyubpljsqrxzkidu2a34ox5zvgvoy7begslfdmtn8l6v0mvhrs9kp9\",\n \"resource\" : \"r50svttz6x8cecw8nsmxvsijfrz1g52ol3by50aa1n\",\n \"index\" : 4705510339215433715,\n \"message\" : \"Aperiam iure quia delectus quidem labore hic. Ratione autem natus odio amet quia cumque. Vitae repellat et quia.\",\n \"value\" : { }\n } ]\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "13a5511f-2207-41a6-a0a2-65f935f61aea", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.866995Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/add-status-check-contexts", + "schema": { + "description": "Validation Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "errors": { + "items": { + "properties": { + "code": { + "type": "string" + }, + "field": { + "type": "string" + }, + "index": { + "type": "integer" + }, + "message": { + "type": "string" + }, + "resource": { + "type": "string" + }, + "value": { + "oneOf": [ + { + "nullable": true, + "type": "string" + }, + { + "nullable": true, + "type": "integer" + }, + { + "items": { + "type": "string" + }, + "nullable": true, + "type": "array" + } + ] + } + }, + "required": ["code"], + "type": "object" + }, + "type": "array" + }, + "message": { + "type": "string" + } + }, + "required": ["message", "documentation_url"], + "title": "Validation Error", + "type": "object" + } + } + } + }, + "insertionIndex": 851 + }, + { + "id": "7d6a3e34-2311-451c-b2a3-2a1ce803abad", + "name": "Add status check contexts", + "request": { + "urlPath": "/repos/t2uoni4dgtjz56m72l319812zvuto59hso7dtnvbtgw7u8fcd6zbo4ynmqly9jfazuueykcojjamaeb11agaivbxfkuptgmah0uhsx6tpgg7dj2sunyv98oyv0qrncmsmawscnvpn5/03hi091kss6hqhhumc4rl650m1shuym0iva8gz/branches/jpe1bxtinuzuhz09d9s004x7lkqp7jrmpuixrvip4qqnh/protection/required_status_checks/contexts", + "method": "POST" + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/584735\",\n \"message\" : \"Quis nulla totam. Magnam ipsum itaque perspiciatis molestiae eaque necessitatibus enim. Aut in in quae maxime. Error modi ipsam et et corporis quod. Delectus qui odio ea.\",\n \"url\" : \"https://web.example.mocklab.io/154019\",\n \"status\" : \"vxjgtm2ljnncy7bfype42mlu0n5j41spw2luu93kualvwrc06femi673y6v4u9iufnwqj360423lu4gie3hpsq8ne4l39y5j5r91fbjxrivuonjmqdt8v7mdngwjf5yzaw8tp5am0ke62yiko9ozjwwyqsok3y8zhsx\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "7d6a3e34-2311-451c-b2a3-2a1ce803abad", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.866124Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/add-status-check-contexts", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 852 + }, + { + "id": "9d8c7291-b2dc-4f3a-ad03-4fb10518defb", + "name": "Add status check contexts", + "request": { + "urlPath": "/repos/zniyzr6gtr98yt4w1kwn6qewmzxrrhlvktebh3mwlb4b5py17262zlhkew8hsw9cww638npx2etye8kftgick1lq3y4fmhuw/xzo88twx4andnhd0lt66vca8yu9qoz66qxll1702yobhc4lts2brhez38a55gk6k9fi6pril06syu661lhhl5oa2v4sxh35j8zs6lhn6ml2ksiw5qkyhd6v9ko68shkf1zhun06onbx1yo4fkp5e7gj432vtyl2l1e2p69xxwu1vd2ygr/branches/i1uph2eqca626e3ym5xgzon5cw5bbsalt5adtc35mbnlbo0gkfw1r3q3u5uypuep9m5p61o6u2pt6vj2m9l1qtqt07epu7lnpmkxgfhu64v7rnno63f3wkdw9it2w7/protection/required_status_checks/contexts", + "method": "POST" + }, + "response": { + "status": 403, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/987395\",\n \"message\" : \"Omnis sit maiores quia qui. Consequatur consequatur ut error iusto natus ab. Omnis voluptatem quaerat. Est quaerat vel. A consequatur voluptas consequatur aliquam sunt tempora.\",\n \"url\" : \"https://web.example.mocklab.io/500119\",\n \"status\" : \"gbv7jz8y6uhgui39rws9oj7j99rkkyu8ior3jcltcuzt9xiwkeiauyxitrle271fwt0qba65bfv99lyos6zkkr9y58guvryordac9vyzkxxmga6ovnm78aiwo7\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "9d8c7291-b2dc-4f3a-ad03-4fb10518defb", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.865882Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/add-status-check-contexts", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 853 + }, + { + "id": "12c93eea-21a4-4b8b-b115-cbd2bc6886cf", + "name": "Add status check contexts", + "request": { + "urlPath": "/repos/69b6vztz7mkle2dxwks9ilb79we51n7ybg0b3vwvs5n2tjhgp9b6nujqtwirfizt1726/hmr993vgj7wo0llkmk7mq2bfivavtxwn705l01obu4ahm0p9hty4ogykad2oyuepw8q35phn3p7x0dz40p6jumqky9fkxbfayqrgp1x4rh90588iuq0j0yrm3uy4c47odni7v6pyysbzlczlcfey2g6gh83quppev10krv48sa0pk1de2093x6z1boftgh9ryy64xq/branches/uyz0h27meoah53cwkxexwi08kpcaxy4ufesauglznzi2maendcqisv96x6e9esi12xg9gly188igw8dtbef1mwumfw1wzmxtbpj1s3vxs8ytd4volgpy8pdqz7mj1qoq3e0p586ioupbcw4e4is/protection/required_status_checks/contexts", + "method": "POST" + }, + "response": { + "status": 200, + "body": "[ \"continuous-integration/travis-ci\", \"continuous-integration/jenkins\" ]", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "12c93eea-21a4-4b8b-b115-cbd2bc6886cf", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.865627Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/add-status-check-contexts", + "schema": { + "items": { + "type": "string" + }, + "type": "array" + } + } + } + }, + "insertionIndex": 854 + }, + { + "id": "056a5bc4-e0c5-4da9-bc9a-d68060f52e66", + "name": "Get all status check contexts", + "request": { + "urlPath": "/repos/wpq3t1y/83a58h88wh0hi61x4p37lv130ck8h8xli0eum8tn2igpo8cl9vhf6ykzwayshktdrt4qw66p4kspozq8fj8busactj5dtql8nh9bfgd19d7cdypi5c3wpn71idxrh3ggcsrsvh1wpq6js1i9flvsbf6vxuzfkiwqjtl2ji164zowxypvh8rujdxq2/branches/n8p1fy7mytqd8viey9ucnsd7f5fc/protection/required_status_checks/contexts", + "method": "GET" + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/645924\",\n \"message\" : \"Quo aut voluptatem suscipit sit eum eos eligendi. Dolorum et harum qui accusantium eveniet et. Libero vitae id error voluptas. Aut earum earum accusantium ut sed quam. Consequatur reiciendis pariatur \",\n \"url\" : \"https://web.example.mocklab.io/094570\",\n \"status\" : \"61dkokgzy1qhjvk12c7n1h3ojap096k74ln\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "056a5bc4-e0c5-4da9-bc9a-d68060f52e66", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.865548Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/get-all-status-check-contexts", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 855 + }, + { + "id": "4d1eb4a8-6c51-4c75-b490-29a0a3c3c689", + "name": "Get all status check contexts", + "request": { + "urlPath": "/repos/c4fno7snx9hrlp4obii0l2m/6cxhl7td5cgbf31mttaf342kn8t7lmw0oqynpcv09b69uda2b4jgxz00b9z1cz85/branches/wi9retzqxudndqll6h1rdd02h862ykznpwli4hy/protection/required_status_checks/contexts", + "method": "GET" + }, + "response": { + "status": 200, + "body": "[ \"continuous-integration/travis-ci\" ]", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "4d1eb4a8-6c51-4c75-b490-29a0a3c3c689", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.865277Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/get-all-status-check-contexts", + "schema": { + "items": { + "type": "string" + }, + "type": "array" + } + } + } + }, + "insertionIndex": 856 + }, + { + "id": "8cd5c945-4618-426a-ab2c-3086d374ed5d", + "name": "Remove status check contexts", + "request": { + "urlPath": "/repos/jdyt0ngtrnsj07xkb40uzhd5tq7v/8id6dflf27mlg09khjfcx4p2ox1z6zpgizqtgjn17bfvvl6t5tfqv9vy3gaihp75la67foijtp68nc1aye5c7m58t83ie11t6ncmd536n3i0nsua17u6todtg0r3ih/branches/e021486tfffbvh7bdtwlif19e7azvilue2fmgxhrunpthptbv73vq9g4gv1zzyakwven2inmf70dumz0hi467izpfrttjtai4dll6w1a42revh1wjp/protection/required_status_checks/contexts", + "method": "DELETE" + }, + "response": { + "status": 422, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/384024\",\n \"message\" : \"Culpa quaerat libero odio voluptatem. Nihil quasi laudantium. Voluptatum quod harum aut hic non. Consequatur nostrum ea. Possimus exercitationem esse temporibus voluptatibus vel sunt neque.\",\n \"errors\" : [ {\n \"code\" : \"6b44opoixin24hnaak7lc71onxxyzjftstmvt0106ybgtpwxp3an94mk8u55pxjatzfm1rr1riwjlbbces7zgv\",\n \"field\" : \"qbbdx2uytavb42cnl32fdmjnesa6i4hrj2vxm3uwawe60ks21me6serhwn3by6k6q2ozj3wy3lmj8e0lgp05k6zonrmagplfqr0odw3fpl69xq20eeox3qj8\",\n \"resource\" : \"6cl3vlz6t2ubupg1ruhx02fv7gz6atbgbwpt3tapivgir19p0eugupxhn4w2bx3vx8gyf0l27kmceil1pac0qiqfszrzc47dq69dgb1jehrxygmw2oa3xwqym7rl9hu3h8lfm6m5gq3ugamnkf83mctu6mp5x9e8qhzak4o3ejf6wgfqhjfw6p7uv6oq\",\n \"index\" : 1465784445910657315,\n \"message\" : \"Odio voluptatibus reprehenderit nobis voluptatem sequi reiciendis atque. Repellendus magni ad qui. Dicta impedit ea provident ut. Dolores officia ut.\",\n \"value\" : { }\n }, {\n \"code\" : \"8wsbpyoz82glqbjg5la\",\n \"field\" : \"5lncvzo0fbpn5spuivu13hdf91c1hco6zt6p9tme6n884i0zb87vgbva660bt5tlhnw5dupfu62kqjj9bgdexkfqr057esd2zv7w0xokbgjozjx48kbaqym0h73xx7l6h80ul3so11nlk7ojv0hj0048biyxxk5xmr4fxqto0k7lhqxesf\",\n \"resource\" : \"n8lsvsrqe1g79g7uw961qoayun9o8psdqupbcfni4uptihapxwlav8q8qipv8u3bh6x9eyk\",\n \"index\" : 6889874898079555834,\n \"message\" : \"Magni numquam consequatur provident qui vitae explicabo. Beatae rerum quo culpa nobis voluptatibus facilis. Dignissimos vel eius nesciunt et et. Qui eveniet illo et. Sapiente recusandae vero laborum p\",\n \"value\" : { }\n }, {\n \"code\" : \"oik2j4jnm3b0sq96tauav816k56wu1ts3vlt6ax0fisyoe5kor4s81kxaxhflbye0rob3ofb786n3r9f73q691dvkvvcltuwu52rdvoyui4\",\n \"field\" : \"7phdr22ymz7j1ubgwsqv6\",\n \"resource\" : \"f8zwfhl0bvca8g2gw61g8nxdl1g92o6po6fxtjw38mx2946wpwpxw747vudkejfz6dl3plkp6q951chwplhi804v0ggku9lrlqwnuugf3twavo4ybyauzzsshpso71h38be44ouphyq6vae4p9\",\n \"index\" : 6199553018592212633,\n \"message\" : \"Nihil saepe sit. Ab dignissimos et est recusandae. Molestias consequatur et consequatur aut. Autem dolores et saepe.\",\n \"value\" : { }\n }, {\n \"code\" : \"p433soyszrv0gxq82nwfmwnm8larivdb5cb43vrpt11x48u0rn0g2lp4qjno155ggl0no74ky01svib0huj68p221p3e90vz57qpeo1i0asn9m4ncwx0b4752fh216\",\n \"field\" : \"3kbk89mi5df589b1kmfarxezltxh8634143l1h6blou8g7cje0z82oqvuso7vm0w9sj0kgyr89xd3le1xw4pjk014opxw80ybe3kqnffubxcjz14rfn4cq087q1qbj\",\n \"resource\" : \"jjptcxzigsglk6i07u23vlpnl4o8tuaz\",\n \"index\" : 9102060570102971035,\n \"message\" : \"Velit expedita enim omnis eos voluptatibus quis aut. Mollitia unde ipsa. Est ea magnam recusandae alias quas. Perspiciatis est quod laborum delectus eum eos consequuntur. In rerum iste ducimus odio co\",\n \"value\" : { }\n }, {\n \"code\" : \"jafire6l2pognwi7aqv8i9m8mv7z953d4njvnjgdttzwg08v5ft28etoxb65zmoa2tko021f07\",\n \"field\" : \"pdq153wkfw16l9bjomlq6me3gehom1ihrjsid8nbi5wzqul4t2jud4gq13pf6i06zzzzw5lwn3y\",\n \"resource\" : \"thelybift2wcjh8w3sjocn7x3w7itnzb11quhpf4nk2xct8d8lvyr7an4q8gdu\",\n \"index\" : 5694229699968770180,\n \"message\" : \"Et ex et sit unde eos saepe eaque. Aut aliquid incidunt veritatis ut quia illum. Excepturi praesentium facere repudiandae facilis repellendus ea. Eos omnis et. Et tempora ut deserunt repellat eum mole\",\n \"value\" : { }\n }, {\n \"code\" : \"97yybmi644k7mcyulm9vsvtkqkhdvxxkmf2t979yov40zg6treq307sf9u4ggcz3ea8m37cxnebkxfggdyrjmw5zx3ovh2a3cdp9av1up9qwu8grog1zfvun69uw2mo18as3ey66j8wvc566ymin24h0\",\n \"field\" : \"7vzh\",\n \"resource\" : \"feqaqbprm0zdxpwfksrh5ob2gwlrqsjwvhf6lrfatxpc6nd4djy287essclutpxyeu5i5a8n8s\",\n \"index\" : 6287329395295233871,\n \"message\" : \"Iure quia quidem. Omnis nemo autem fugit ex illo fugiat ad. Enim quis veniam quae occaecati ea velit dolore. Praesentium quis autem architecto doloremque cum rerum. A est labore.\",\n \"value\" : { }\n } ]\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "8cd5c945-4618-426a-ab2c-3086d374ed5d", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.8652Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/remove-status-check-contexts", + "schema": { + "description": "Validation Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "errors": { + "items": { + "properties": { + "code": { + "type": "string" + }, + "field": { + "type": "string" + }, + "index": { + "type": "integer" + }, + "message": { + "type": "string" + }, + "resource": { + "type": "string" + }, + "value": { + "oneOf": [ + { + "nullable": true, + "type": "string" + }, + { + "nullable": true, + "type": "integer" + }, + { + "items": { + "type": "string" + }, + "nullable": true, + "type": "array" + } + ] + } + }, + "required": ["code"], + "type": "object" + }, + "type": "array" + }, + "message": { + "type": "string" + } + }, + "required": ["message", "documentation_url"], + "title": "Validation Error", + "type": "object" + } + } + } + }, + "insertionIndex": 857 + }, + { + "id": "c95b8493-a01c-46e9-8cc6-3551ec005d4c", + "name": "Remove status check contexts", + "request": { + "urlPath": "/repos/2t6y0lgh4uorigiw8i4hlpdywr22x22bwc9pd/39g06owavujuqxa6221twl8f9nvnq45px5onz20t0eqgzb7g7a2ek0qd8vlp5h7a3hzre55v2zs20cigz7jrk3j72/branches/kgnbdbj3prgo70yzk3atc5k/protection/required_status_checks/contexts", + "method": "DELETE" + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/313493\",\n \"message\" : \"Aut sint distinctio inventore soluta reiciendis id. Error voluptas qui. Est vero porro laborum et. Est aliquam voluptatem harum dignissimos exercitationem.\",\n \"url\" : \"https://web.example.mocklab.io/521493\",\n \"status\" : \"mp4be97vltj9htkkomcl84zc6a1dw9bpfp3q6u2szkpfk2guipyyh7zgz0w98td0q09qzcy9\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "c95b8493-a01c-46e9-8cc6-3551ec005d4c", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.864462Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/remove-status-check-contexts", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 858 + }, + { + "id": "3765a97f-1735-4dd4-8c68-e54b2a96bf61", + "name": "Remove status check contexts", + "request": { + "urlPath": "/repos/t8hwl8ptanm21d9ywu5y880p7ji6ah651u03mtanob3565a6sstraa5n4cy0y7oam55jz00bov6n65413lo7a0d9d35m9eyckmzgfau8v93fc0qfajaakjinymplyn3vzl6i3fv04yz9a3ybf9rpf6t1rreoqhe6/3erosl/branches/xj9v21a0fxk2tx6pf7qrx3qow2htdjyjkf22geupeeqoi01ltadd8yqep2nymds3vz4rl/protection/required_status_checks/contexts", + "method": "DELETE" + }, + "response": { + "status": 200, + "body": "[ \"continuous-integration/travis-ci\" ]", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "3765a97f-1735-4dd4-8c68-e54b2a96bf61", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.864221Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/remove-status-check-contexts", + "schema": { + "items": { + "type": "string" + }, + "type": "array" + } + } + } + }, + "insertionIndex": 859 + }, + { + "id": "954e8489-173e-4ad8-809a-c2dd06b76826", + "name": "Update status check protection", + "request": { + "urlPath": "/repos/0hychokte4ueidr6bfex27itorlw7tt6ch8z8juipp5xf7xkw2m6lzn4nnttfglv67zv/rrzme11v4hd3rxcdczn64budgw17kmgstpmw9xbdgy78e39vsg4je10n/branches/dc97bqrp1p7drp35uwx4i13qdzsum9o7azefeo4nq510zjemope8kie43f60647ydm38s9gx3f3t3lus9g43e8kez722wqh3iy82g14ufy2h7rr2kis9egge3epofe/protection/required_status_checks", + "method": "PATCH" + }, + "response": { + "status": 422, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/736155\",\n \"message\" : \"Vero est amet. Est quidem quas dolor cum repudiandae et tempore. Facilis consequatur sunt maxime. Qui aspernatur quas veniam possimus esse. Magni sapiente quam.\",\n \"errors\" : [ {\n \"code\" : \"3t80dirnswp4ih4qmjoay9v9h2qzerx4rqg56njg74ixz9edgpjedx7t468cvjymtto0fqxok5jmh8g8xmlihooigq1e7353okkqsr9n75gf4ypgnywf4rdf8fgxy45mkmr7124d9rfyo3tbnd4wgqyitj\",\n \"field\" : \"ixlsrpedvhrhw6sq6hgmx25v0u3uao9id132ieq8wbl1vv8q934kxhbc8ptf9fs6cc9ys0qtjpolzpgay2u0my53zzwbmd789n1uh5ler7mxj89zmqwcs5enynucier0tqto5fvjuj\",\n \"resource\" : \"rwnor8x\",\n \"index\" : 181344664850963400,\n \"message\" : \"Inventore aut et dolor omnis qui. Ea quam explicabo a. Ut magni blanditiis officiis qui porro. Et autem vel est consectetur odit nisi sapiente. Eaque ducimus sequi eius dolores rerum.\",\n \"value\" : { }\n }, {\n \"code\" : \"bgm951d0zaun82w1yk49wiu8s7fuab0f9vbnbsc0i4lbq0efatda6avovshpq166001rgargd9n8zs63gb28iii58itz1xsb67ezq1r72xswzsfuk8vypf43gh5v\",\n \"field\" : \"9ayfapv\",\n \"resource\" : \"8eds2gk7o06oeotsly7i0qe2auua4mbl0297vjtw5h1mj0nuxfqfeiy4t80n\",\n \"index\" : 7032268370890221864,\n \"message\" : \"Dolorem autem molestias. Beatae et laboriosam sint sit optio id et. Placeat asperiores repudiandae error quia omnis voluptas aut. Rerum error accusantium suscipit est et ut et.\",\n \"value\" : { }\n }, {\n \"code\" : \"mwk2gfn7k5li0ibovfkfylcj9qs3pnzi2ob554s5wdyacxq\",\n \"field\" : \"reji7wqg38pqc8e278fvwkphjp86kgmtp6aza26x9aip8xm6k62nwtw9jnm47zjjbguos7uc07cojgx0bo3lsx9nqk5y8ju69jqdgp82kebdiat8hhvidq2fktu76szgr3qi3862dm8v9mouhp9xzxlrx27721iylwnwc5ifvxey7yv9acujpxo5y\",\n \"resource\" : \"4xhwi1z5fn3c7nkbl1wq6mvkxau0h30fuf2d6e525zog5u2nd5p4sslnt280t5ec4uairbj40dxc56kei00s8c7u7jg90zpaepk9szo1btalh2mkk1j4bl3sbzy1ni3h6u1ox2syqbapvut4g17ibgxi7z2kphfczj9625re26\",\n \"index\" : 3817074249032915753,\n \"message\" : \"Mollitia tempore repellendus nemo voluptate. Exercitationem accusantium sit itaque. Voluptate minima sit nam. Dolores eius rerum dolor id quia ipsa. At quasi enim.\",\n \"value\" : { }\n }, {\n \"code\" : \"vkty82frfenhx\",\n \"field\" : \"yt5g62l0871yvlbad64jm1ctcekc3jq01isub0y3cw6lkoq0sg9i1c6yiseor08ugbozk9ako1awxc8itgpm8pxdvl8qmp1hw7xrgn1h\",\n \"resource\" : \"lm78nkmkpvbqc57nifv3eoys2bheclojfx04l4xl2d133d6zo9twjc4mfpbx9a043y0v76yp3mjl74kzyi1mfcip4ykudshkw95txhm0ipvu8il80m294ccxms38wyfyb0wdfjnunj62emlshi673026wy8w\",\n \"index\" : 1226141075588609441,\n \"message\" : \"Debitis sed quo voluptatem labore aut expedita voluptatem. Doloribus qui sit ullam enim aliquid suscipit. Deleniti omnis voluptatem.\",\n \"value\" : { }\n }, {\n \"code\" : \"7a7mgnhar06nxi6r3xdpuoifitbwv2ao3ortb68fl6os78lfuk34j75dy2irhf1v0ok43iw3xz6fc41fen7pjdi42zkem7go1i4swqsayew3f\",\n \"field\" : \"wjy2ymy43har4cccqhjfvp863k0uzdl2aoyd27xe2w806xhkvrziyl9sbp6bvdlz\",\n \"resource\" : \"0qxw8p7yq4ta4fa9cq0ngnxprea7bf5piytz6zlhbykhj6bngl9qqzshjg0iphqgofbkqfv6jplax8tp4whuv3hh1qlfozdxcxa72csqffcyd0vuii4xcmbdtonc7ybn0fa0cepkcylpkyim8eupl07ef15qa5\",\n \"index\" : 7975390579074957344,\n \"message\" : \"Excepturi voluptas et aut quasi atque quia molestiae. Veniam voluptates qui odio et quae sed. Dolorum ratione sed ducimus nisi illum qui molestias.\",\n \"value\" : { }\n }, {\n \"code\" : \"1hnl2ls1ibsandtwfmjnwkwve1b4mxbixca53j7qe2pym0q5vmh3y3c7d2xtuusqyq6nvoxnktlpb8n\",\n \"field\" : \"4sbyy7al1dnxhvvo2h5cdsdbsncek13hh9sxwi26agc1vjd5rr5d41suy7wngaozntva2m\",\n \"resource\" : \"u1jt80om428ewl1sltvi43fnfidd6va30pu7fsje95odnw1gsmoigycc8weqa4ro19s6quose3b559g3cfnhk0hruq5nrio9l8wazebeazfcup5v58byfjym65ew0hleffcyt4qmy26g48gaek7f8xe4\",\n \"index\" : 6651355969683201832,\n \"message\" : \"Earum optio accusamus enim. Et adipisci est nemo ullam dicta. Dolorum aperiam asperiores quam suscipit dicta iusto. Odio recusandae animi odit culpa velit. Qui labore illum.\",\n \"value\" : { }\n }, {\n \"code\" : \"wygg7io0ntixhrk7ifq8vvn7ocuzd\",\n \"field\" : \"ftjx9iiorzfcuiv007bf6b5ek7ah45tzm7futgz3cpy6s53ndeshn4x8es3zcmu7kn87l2c8serplded9k9ht4xmll97gig800inmco0jwu86mgm96qjsdt4dii6a5yiqz9neqmdxabkio4ie35ajohq68wwqrm5mbuypcdlu971yzjle\",\n \"resource\" : \"fquvfajekwrp5ycleubxyfh2vl60gbm34cfws7uhb1vh2uoshfzwxjnokrwy4g3rvx26j7acseukmc3kst9axiponwjnlx5jb5dyszf6hr6tdlg0zkyko1vhm6d8sni9lglan1x4vf7gbtzxtni0gjv4hms6nx4ewd684o5plz3p4rdyqcpcv47xtvy77katdujrnp6j\",\n \"index\" : 2696790373895102636,\n \"message\" : \"Omnis consequatur illum eligendi dicta commodi sed. Repellendus adipisci saepe quia dolores aliquid. Ducimus iste voluptatem. Ab dolor nemo saepe cum quasi. Iure in repellat.\",\n \"value\" : { }\n }, {\n \"code\" : \"1ncknve441d1deo1bx51apwpcs3jnlrq6b50zzqydrxgti70h0t30bfbytkhrkz2a5tacc8lrcg9vd5i8ei5mi9g82b2n4gvwsjkr8op038k2v52770\",\n \"field\" : \"9ohrsoheoe2qtmv59z9yspxv1rhpzf68ic86qnuln62mfw9mh1wjjn2bn7a9o35sjt16kcleiikrf7uaf13rtt7zom7c\",\n \"resource\" : \"jlvmohv3jo1jz3svvv7xf4kqnxfwyiptt2ateseuoe5zl2r6clzjem0rjfhu9ep1s73zjy9zc59rnlycjqjr9\",\n \"index\" : 5256667948256243276,\n \"message\" : \"Dolorem voluptas et a vero omnis. Accusamus et vel id. Doloribus repellendus aut corporis ut iusto. Est maiores unde perferendis reprehenderit.\",\n \"value\" : { }\n } ]\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "954e8489-173e-4ad8-809a-c2dd06b76826", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.864142Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/update-status-check-protection", + "schema": { + "description": "Validation Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "errors": { + "items": { + "properties": { + "code": { + "type": "string" + }, + "field": { + "type": "string" + }, + "index": { + "type": "integer" + }, + "message": { + "type": "string" + }, + "resource": { + "type": "string" + }, + "value": { + "oneOf": [ + { + "nullable": true, + "type": "string" + }, + { + "nullable": true, + "type": "integer" + }, + { + "items": { + "type": "string" + }, + "nullable": true, + "type": "array" + } + ] + } + }, + "required": ["code"], + "type": "object" + }, + "type": "array" + }, + "message": { + "type": "string" + } + }, + "required": ["message", "documentation_url"], + "title": "Validation Error", + "type": "object" + } + } + } + }, + "insertionIndex": 860 + }, + { + "id": "7a3a69e7-14f5-4eb8-a770-db5e8506e0bc", + "name": "Update status check protection", + "request": { + "urlPath": "/repos/bl5ed9vsqv2hbuzina4m407be2wb8aou4foqhye8fb72041vnng6mvsjw6h41ikguduqyko50nphur0ay6t5ndbu4wuxhhyyjb0w72of7kd2yc6b5wd6uoy1ol2ypkp46cjrlk7317ew6ajn82kr3a5vdtokkiifiiyzjbclqtk9ltgy3vov3yupnwalb0xi031/88860vlzag98s4chw5u127jj8j9n1jhsxquvi1uu8zza2s6u302bcz0pph7x5b7s83jemj/branches/9sgp0kx201z6xjdn6bqd269ncevz4dxzzg6fq1jbcx3862vftnjqvzx0zy7m74gn82x49i70b4of1so4ocx988fzfti63oyu2ipqs1nx/protection/required_status_checks", + "method": "PATCH" + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/351962\",\n \"message\" : \"Fugiat numquam alias temporibus. Et eligendi suscipit illum veniam omnis a. Eveniet reprehenderit eligendi ullam facilis voluptatem.\",\n \"url\" : \"https://web.example.mocklab.io/650136\",\n \"status\" : \"fzcua39lrr1mhgv5n74f1y1t9lz39fa2dv3tr8fj0xe9l3l0i5olg5sppokiz9jnl\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "7a3a69e7-14f5-4eb8-a770-db5e8506e0bc", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.863211Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/update-status-check-protection", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 861 + }, + { + "id": "fb6cbc4d-999b-4032-a83e-ddebbf60c143", + "name": "Update status check protection - default", + "request": { + "urlPath": "/repos/97wl4197j4rycp1g1qwfc8z9ebwhyvymv77e7hb9w20gskedq/rdkj27l06raeiv20jk8o7rq4ml81n69q9mh25bxwprc9vfjc0o7a5eobw7dx478wab08gad4owycu2cefjfd6nfad19slmtfblyen1hbz4r35mib7h8l4xjdgjdhoc03kk7qiszrrtgvi3si9/branches/6vgqtu52kx6gzjkj7j5hq5mjill68rbdrm9zww34qcm47f0cur2qtex777uoh8wum5kcsswc3futn2bk1x00cvxo8cxlc2bilza8zrc2669mx0nzfp682seh9k9kvabqy6ipj8fjbyntmq228nhid58nb6bz72mgxol2o7mj6bd9ait4dahmvn4pxaaho/protection/required_status_checks", + "method": "PATCH" + }, + "response": { + "status": 200, + "body": "{\n \"contexts\" : [ \"continuous-integration/travis-ci\" ],\n \"contexts_url\" : \"https://api.github.com/repos/octocat/Hello-World/branches/master/protection/required_status_checks/contexts\",\n \"strict\" : true,\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/branches/master/protection/required_status_checks\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "fb6cbc4d-999b-4032-a83e-ddebbf60c143", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.862971Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/update-status-check-protection", + "schema": { + "description": "Status Check Policy", + "properties": { + "contexts": { + "example": ["continuous-integration/travis-ci"], + "items": { + "type": "string" + }, + "type": "array" + }, + "contexts_url": { + "example": "https://api.github.com/repos/octocat/Hello-World/branches/master/protection/required_status_checks/contexts", + "format": "uri", + "type": "string" + }, + "strict": { + "example": true, + "type": "boolean" + }, + "url": { + "example": "https://api.github.com/repos/octocat/Hello-World/branches/master/protection/required_status_checks", + "format": "uri", + "type": "string" + } + }, + "required": ["url", "contexts_url", "strict", "contexts"], + "title": "Status Check Policy", + "type": "object" + } + } + } + }, + "insertionIndex": 862 + }, + { + "id": "0191da77-e6f6-4bcf-8b8f-3e1e5cc001e9", + "name": "Get status checks protection", + "request": { + "urlPath": "/repos/mgd27gofq7r1i0q401rjm5zmyl1kqt2cajzql10h2nh0z9b1wf0znwkgw0dvtc2tzxs3bx5wn3jsdni73pa9efbkaq6166dd15s3cd16un1h31n/c29gdeqtkrb7jd2f8yj3w2swmrl6tojb4iqtra2rfuey225f2nf5k6y5d4amty7ikx/branches/wo35c0znz7hm05rat7djupgeglwygq/protection/required_status_checks", + "method": "GET" + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/618068\",\n \"message\" : \"Cum suscipit voluptas animi ut. Est sint harum quae. Error tempore ratione deserunt excepturi.\",\n \"url\" : \"https://web.example.mocklab.io/431700\",\n \"status\" : \"9o9v8a4\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "0191da77-e6f6-4bcf-8b8f-3e1e5cc001e9", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.862878Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/get-status-checks-protection", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 863 + }, + { + "id": "c859c51e-a854-470f-893e-7ee0771b4287", + "name": "Get status checks protection - default", + "request": { + "urlPath": "/repos/2hi7uaqllqwjeapjispx1ozrqgfou73dpmkwzfm12ciolclmu1tniv54d5e4ty9f3p5s9ea47l4dlqmvzoezki1luw9wmardo8fgte715bcvlekfpcyo41k6ktipmz0cnaxn5wo3pls954t7otn6xv/b8b4rz3tx08b6osuzd0w55iwtt5l57nbx710h8h7oj54anwgnkaenb9nynajdnf/branches/v4whzpuqgbou2wlj2e4esfo0ljkv40mzkqzed175k06pfgy7my94bi8dzdifxqeyz5os1gid6gwm1ovvol3b4icky/protection/required_status_checks", + "method": "GET" + }, + "response": { + "status": 200, + "body": "{\n \"contexts\" : [ \"continuous-integration/travis-ci\" ],\n \"contexts_url\" : \"https://api.github.com/repos/octocat/Hello-World/branches/master/protection/required_status_checks/contexts\",\n \"strict\" : true,\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/branches/master/protection/required_status_checks\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "c859c51e-a854-470f-893e-7ee0771b4287", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.862653Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/get-status-checks-protection", + "schema": { + "description": "Status Check Policy", + "properties": { + "contexts": { + "example": ["continuous-integration/travis-ci"], + "items": { + "type": "string" + }, + "type": "array" + }, + "contexts_url": { + "example": "https://api.github.com/repos/octocat/Hello-World/branches/master/protection/required_status_checks/contexts", + "format": "uri", + "type": "string" + }, + "strict": { + "example": true, + "type": "boolean" + }, + "url": { + "example": "https://api.github.com/repos/octocat/Hello-World/branches/master/protection/required_status_checks", + "format": "uri", + "type": "string" + } + }, + "required": ["url", "contexts_url", "strict", "contexts"], + "title": "Status Check Policy", + "type": "object" + } + } + } + }, + "insertionIndex": 864 + }, + { + "id": "351b3500-49a3-495c-a772-1e071fefb8da", + "name": "Remove status check protection - 204", + "request": { + "urlPath": "/repos/1zenzmizvg9er6oni27wqxnsz0n8ht6p21pkaotqspj165k7e3yy7a01zemnu1gy9m/0gu89tl5pa9p6w3pwkfxzgo1bz/branches/igzzpn9orrdmghdeldgabqmxopns8wz45ls4bkak/protection/required_status_checks", + "method": "DELETE" + }, + "response": { + "status": 204 + }, + "uuid": "351b3500-49a3-495c-a772-1e071fefb8da", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.862532Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/remove-status-check-protection" + } + } + }, + "insertionIndex": 865 + }, + { + "id": "df08b057-c5cf-4dfb-9616-b1fae62308ee", + "name": "Create commit signature protection", + "request": { + "urlPath": "/repos/riwm7kv4vlw1dciz518qn6z3dy9tpxial96ntw1xqe7haul33du0xn3hlu4wzhje97cqo98206c466e8ih6xviuxds8rim9cq7j228lmp3fgg89tfjx5tp9zf4ryyj7dpzvzudfe0rojitnf0d7gnkf2/vduv41vv4gu1qog1x26cwxs392do3u5myqyg9j4xcex58bng9a893v8cwz7pd0s5cyhmzlhujbflgvdkljhmoi7yx6ikbe/branches/wczkxiziu1754oja2d91dwbr9zt5mv40hvr1qss5rgn5cp83vnewmednnldc4vh6iwv4/protection/required_signatures", + "method": "POST" + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/546257\",\n \"message\" : \"Error quae facere cumque expedita temporibus. Molestiae ullam quis aut sed corrupti. Asperiores iusto quo rem id fugit aut placeat.\",\n \"url\" : \"https://web.example.mocklab.io/340701\",\n \"status\" : \"ynywxhbh7d4sdz8uxq5tdxb7g1kgup0e769atz9rt4ipt7sktoicggs7fplpk1c0l8pnsv\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "df08b057-c5cf-4dfb-9616-b1fae62308ee", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.862482Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/create-commit-signature-protection", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 866 + }, + { + "id": "e43e7437-75fa-4668-9f6e-ff37d95ebbc1", + "name": "Create commit signature protection - default", + "request": { + "urlPath": "/repos/mzjwy4uubmpgwy94gmxwk0ek8sqz8d8sz2miw5ahqi48qxkjbp9lusxwb84m4s4c1h7vmxxi6e175dzdopj3watshqlb2ubvf4hbj6kfkrfm0qudhv9a8e7abrqd3gc47u3hn6uvrxgxuka40ydt5/49thhiuiuetipma6nn1rfzpkw1msxb4hi79e0kvpi7kaeeyd8m4rx5ijk75qyw4px3qx1369bboou1fq6scxn2lwk/branches/2x55varislbvmbvf88xf5vjczyh9jyddryl5hfhpdv0xitpof7nhuvmbvh1zypk4yiezpq9wxtnd1x5im8cbaevj3uwiuoal2kgprm92v6kjn8ggt20gz905o0btzf2yoizp70ng4/protection/required_signatures", + "method": "POST" + }, + "response": { + "status": 200, + "body": "{\n \"enabled\" : true,\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/branches/master/protection/required_signatures\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "e43e7437-75fa-4668-9f6e-ff37d95ebbc1", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.862251Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/create-commit-signature-protection", + "schema": { + "description": "Protected Branch Admin Enforced", + "properties": { + "enabled": { + "example": true, + "type": "boolean" + }, + "url": { + "example": "https://api.github.com/repos/octocat/Hello-World/branches/master/protection/enforce_admins", + "format": "uri", + "type": "string" + } + }, + "required": ["url", "enabled"], + "title": "Protected Branch Admin Enforced", + "type": "object" + } + } + } + }, + "insertionIndex": 867 + }, + { + "id": "ae878344-725b-4865-b918-4c876a5fe522", + "name": "Get commit signature protection", + "request": { + "urlPath": "/repos/40ydvzo33e5kijc9k3a9c1b8spelgel847k1gh34i2ffoniujnp4sbolty3wbacbzirt03r2aukj1v7m8gfrju050/ey38n/branches/9gc37g5hctawbxqy66cft067241mq4rajs1hhesm26a9iwtfgetsxf0ojak615o0uerh7fycz2lp/protection/required_signatures", + "method": "GET" + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/654535\",\n \"message\" : \"Debitis omnis corrupti laboriosam. Rerum mollitia velit provident nobis quod. Est non eius dolores voluptatem modi.\",\n \"url\" : \"https://web.example.mocklab.io/474466\",\n \"status\" : \"0an4a2pwmu3by3mhejnphog4egv6sacgbnzwnroexbfno4gc99zcjh2750bkwqlr0bwwb2tzpn1d6z9bccajx6bg9vnbk\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "ae878344-725b-4865-b918-4c876a5fe522", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.862175Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/get-commit-signature-protection", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 868 + }, + { + "id": "d693aa2b-d199-47a1-be5d-cf29b94b4a58", + "name": "Get commit signature protection - default", + "request": { + "urlPath": "/repos/2pi2f1teuzmhx7md8f3vdqb3mbcdqxzvz0s7b7994/yiensi0f4cyw3h1xvfo73xpkk1aen2cmlvaq1vwv8r3nxmu2dicsnttd45wpf0p0zvbp03xe14fst7ugpicft2tb7w5ookg7e0i1iyh7vfoyebwi2pyhdnktwuvu7ancc1lpd7d0y6zptr/branches/z9vo71iv110ilz7hkqc97mskahm/protection/required_signatures", + "method": "GET" + }, + "response": { + "status": 200, + "body": "{\n \"enabled\" : true,\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/branches/master/protection/required_signatures\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "d693aa2b-d199-47a1-be5d-cf29b94b4a58", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.861938Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/get-commit-signature-protection", + "schema": { + "description": "Protected Branch Admin Enforced", + "properties": { + "enabled": { + "example": true, + "type": "boolean" + }, + "url": { + "example": "https://api.github.com/repos/octocat/Hello-World/branches/master/protection/enforce_admins", + "format": "uri", + "type": "string" + } + }, + "required": ["url", "enabled"], + "title": "Protected Branch Admin Enforced", + "type": "object" + } + } + } + }, + "insertionIndex": 869 + }, + { + "id": "c2f2f095-2f30-4654-9516-39863c46b23f", + "name": "Delete commit signature protection (application/json)", + "request": { + "urlPath": "/repos/xtu9ac4slmylw1sowlnyhngg1dvum7ryysfae32179o65c2adjpgflmf64tts184p6z5r1mo89bb1feg32ji4ggcfdgsm7wvmn4qlq7z74wqawweti2gfxg2e01d325xpftyvj8lu4tlcgsw3bse9f84ihrngdpo36n8ycalg3xokh2l59wl67eznkfzc6plaocpd8q/u61vy0s7w46zxb8fw925brhvpexbsc66ncaegy2a9t7g40r7l0xvk8yxh86olwzqq5dheertlgefh0fc3b8zxgc66n3kbav1sj4f2cv4cjet84cyi/branches/vhntjlxwuhvr1g35pw2ubc8w4121e2dry2avqde450y0dpppgiey0d4dqhst652hmyrv44fvydc0hy1tmf5iq672giud9dp777u8nl0v6y0pfz5n3d8hmwfj23shanvapzia5l5hj2u9pziwkz6jf72nsijimy4y5wv5br6dnw3koywwnx3/protection/required_signatures", + "method": "DELETE", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/188947\",\n \"message\" : \"Iure sed dolorum. Molestiae iusto voluptatem reprehenderit eum. Architecto quis explicabo. Hic velit quam commodi in sed. Odio qui quia minus accusamus enim quidem.\",\n \"url\" : \"https://web.example.mocklab.io/997606\",\n \"status\" : \"feo7y0dwyrf2w5ttjqefdslrsgcwsx7cuamrf0zjoaf59sr9w4j0r7yb69u50gzh2v7ynoebfunrux7wbos0ahfqn18h7nczyba\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "c2f2f095-2f30-4654-9516-39863c46b23f", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.861856Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/delete-commit-signature-protection", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 870 + }, + { + "id": "4cf819d0-c69b-41f8-ba18-2fdbf48ccf1c", + "name": "Delete commit signature protection - 204", + "request": { + "urlPath": "/repos/rjyr64z1lkljl7l8z0bltxex5f4df06earhiuq6upvo9fdgrhfitbbns28yty35bb48crph78pdk4u7ff5z6oepp1krft7h33/vlgekgzjxwv22dr60zo25tcd6ztq1d4yttnvcm4pngf9pok9qbh2bnfpz79pk4drsaw489xskheg1cylnmf0ac83t2r6eginhsb8bduzvbjci7un8cgcvsnnb5lyv72fse8xfh8ymngdgk7l14qufndiq399fud6c1j5c3jpeh7rzyixuif6t8dba9xfv9ogykkl0/branches/if7ifgs42hjmzfyc5ue0t1ico5p7wis1nf5llaupb8hsp0e9k/protection/required_signatures", + "method": "DELETE" + }, + "response": { + "status": 204 + }, + "uuid": "4cf819d0-c69b-41f8-ba18-2fdbf48ccf1c", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.861611Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/delete-commit-signature-protection" + } + } + }, + "insertionIndex": 871 + }, + { + "id": "ffecff15-956f-4aa5-8396-3d02a9543c77", + "name": "Update pull request review protection", + "request": { + "urlPath": "/repos/i44c3lfhtpug3031i4mfiao5gfyoj8yh9syhdnsoncdg4x7b0n5k29lpz6a5brrt6r57vp160gumhj6tiojkgvmwvcwhnhmxdfjqi8swrpnqkm58bfrnc4ozc1ay6je5ayyi9vexqne0kbcrdk9evmz29g72lb4a5xkz0m62byu4upusamdjw/u5wjj3myozgiz4pdhver2/branches/hujaiiqk7robo616u5m8xkazgbroyg14v4sxixbh0qi13ucmg7mo9zt3q3zy0k9xdn4jkc2u9aw2obf4nb75po0x2x0c9znwzxjxb8j2yres7qw6jl2fs8zdducbw2967kadk/protection/required_pull_request_reviews", + "method": "PATCH" + }, + "response": { + "status": 422, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/772498\",\n \"message\" : \"Aut nostrum rerum cupiditate quia dolores minima. Eius consequatur aut vero provident corporis et. Voluptatem sint quam maxime quia animi deleniti.\",\n \"errors\" : [ {\n \"code\" : \"inyzn7tybppoehd5vfjamawxunp5xczxsojwmx4uemhi1zojia9m88d7i1ywzx889gy7sw3746lvbz4o5mnuu03t7gtlhx3jrhlhgvuegddskh82kmzf9srt8srz2hpqfd2mqjch7wxw0ckr2bwwf9gw6iy6\",\n \"field\" : \"dcu7zw2ivybebyuizh9kggce8tzx1qal13qqkkd8a49rtoqvk3ppqaa0clymtimpfi3e4irfpvyagyapt093h50dq0exbk77897do3jb3by9vc5t3\",\n \"resource\" : \"boxzok7txt16i8buq5q2r0xxbnzwr8\",\n \"index\" : 6723528131482220788,\n \"message\" : \"Doloremque quod quia ducimus quidem quae et. Commodi illo excepturi nihil natus. Qui voluptas sed. Accusamus aperiam id debitis doloribus in.\",\n \"value\" : { }\n }, {\n \"code\" : \"mpamqsqk5g3ajlaajy0mdm9g4pbtz8m5ryas32xv1evip70jw469nx\",\n \"field\" : \"l9d69ehvwmsayhair7497dfn6bl47nf2yyys1vnxku55q65vk8670o9fqi9tzpewr7a8z29j5fffjq2qei2h3zshl66oi4181jiqwzrm7d5\",\n \"resource\" : \"h91ox2l309ive40hle1dzrodq7cjtomwxorlp4ewg01pex1w2x323fbrx6edjo4cs0bzz0ug31ux058yw35zrjyhmxzxmkkdp8k4y1ijzvhhg2rrnjewyyvcl8tmx53c2aifyr24f\",\n \"index\" : 6044133027312236363,\n \"message\" : \"Est et itaque assumenda placeat earum soluta. Repellat reprehenderit ad quibusdam ullam sint saepe repellat. Aut distinctio dolorem est.\",\n \"value\" : { }\n }, {\n \"code\" : \"xkaq0gwh1b1p33ef9u35l696hxavfgyvd7uuro0eusx72ebocpovffgyg5zpy3yq8okja9mue3h5b0k2k5wof2vwuy2esdgnqo1sc88iqr323gkfdmx3ds4eugx31n8azyfa23g46l5s9d5hv\",\n \"field\" : \"i8qoofk5gabcp4dxaq44v9evwxyu12ycpfgn9\",\n \"resource\" : \"bggulitmpkf5yi96cwmhd46xi177decxzvu0bs8bqvaxqqc9xmo0n6u65yv7e5knjxddq7a6rdkwwl9a55qjor5n3or06sk0siixynhebww48\",\n \"index\" : 7992387220751623000,\n \"message\" : \"Quasi corrupti dolorem autem ipsam consequatur modi rerum. Qui quo minus perspiciatis. Est omnis exercitationem alias enim qui voluptatum. Magnam a voluptas repellendus necessitatibus. Expedita natus \",\n \"value\" : { }\n }, {\n \"code\" : \"r693zyux7gcnva0mafdov1f\",\n \"field\" : \"zxpnxr03piunuk0r3s2md0zjk0rdikduljyefg2agz2bvoktwbc02oneh7yxcowsjgx1w4pxrk10yxohbsd1zddscfporzvub\",\n \"resource\" : \"j6mknz1slfb7hhx3a0y0p9o3dcapblknw6dtu03wkod32rad8l7t7rzwq97a88fc3tc8tm5an9ucbo5my02svi89sb7cnc6eunwczezqeqrdsrleyzbxs0pt8wu1s45871fqsn\",\n \"index\" : 8020622446827285744,\n \"message\" : \"Aperiam tempore fuga ab illum aspernatur fugit. Perferendis quisquam et labore laboriosam modi maxime ducimus. Ut adipisci doloribus et consequatur. Quia debitis doloremque velit quisquam et.\",\n \"value\" : { }\n }, {\n \"code\" : \"v5vcvff6s0sp2so9c32gyb193djgxxat2tm1v9yvl9p0r4da7ueggd5bxo5k5vprjgs8as885ex2oiu9m9rj0xn5gvxez6tcxs957ziff2qgo5va989j70vpzgfd68l95alsq3ca8t6enbe93b9nvmz\",\n \"field\" : \"i0dra38rrwnhcru3ugwmz23iafy3i8bw35x7dgh6v1d64pemqgmb06ayipqa71r57oyqxdj20ol1p\",\n \"resource\" : \"pkxqfnyhpnflugr6hzi\",\n \"index\" : 974457496017322174,\n \"message\" : \"Qui eveniet ullam doloribus dolorem ducimus est. Enim quia soluta officia. Sint ducimus omnis.\",\n \"value\" : { }\n } ]\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "ffecff15-956f-4aa5-8396-3d02a9543c77", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.861553Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/update-pull-request-review-protection", + "schema": { + "description": "Validation Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "errors": { + "items": { + "properties": { + "code": { + "type": "string" + }, + "field": { + "type": "string" + }, + "index": { + "type": "integer" + }, + "message": { + "type": "string" + }, + "resource": { + "type": "string" + }, + "value": { + "oneOf": [ + { + "nullable": true, + "type": "string" + }, + { + "nullable": true, + "type": "integer" + }, + { + "items": { + "type": "string" + }, + "nullable": true, + "type": "array" + } + ] + } + }, + "required": ["code"], + "type": "object" + }, + "type": "array" + }, + "message": { + "type": "string" + } + }, + "required": ["message", "documentation_url"], + "title": "Validation Error", + "type": "object" + } + } + } + }, + "insertionIndex": 872 + }, + { + "id": "aded80d2-fa4c-4629-a333-f842d1dda75b", + "name": "Update pull request review protection - default", + "request": { + "urlPath": "/repos/218c0lholsxvr6lhe7rqn6p0a8306vzjv4mmyou8nc280kjy6chjr7dpv5nqjpy234tkk8q0bd27dlwkkpav3vudb/4ahmhs0dnanbzgtxdqy0q0ixh1rz27fjmqoz83nqlnlla9uw8oobxinb6bnduife4rmil9s3lmupkajwnta68e5wz9hziv1kgt56jvkgbc1744n1cpsorz4qrzv2fno98wjz3pitzwo8nb/branches/g7pa50l9ej9oqjghj99r9gvu60qx4tnht18pzqrcnbte9njw9s1b1tg0z9idr9r66xzhasngy7yqk79oybzur8cvscs9wa4300gofhs5qeerkf6a2revmkv9ttooji2f7edf/protection/required_pull_request_reviews", + "method": "PATCH" + }, + "response": { + "status": 200, + "body": "{\n \"dismiss_stale_reviews\" : true,\n \"dismissal_restrictions\" : {\n \"teams\" : [ {\n \"description\" : \"A great team.\",\n \"html_url\" : \"https://github.com/orgs/github/teams/justice-league\",\n \"id\" : 1,\n \"members_url\" : \"https://api.github.com/teams/1/members{/member}\",\n \"name\" : \"Justice League\",\n \"node_id\" : \"MDQ6VGVhbTE=\",\n \"permission\" : \"admin\",\n \"privacy\" : \"closed\",\n \"repositories_url\" : \"https://api.github.com/teams/1/repos\",\n \"slug\" : \"justice-league\",\n \"url\" : \"https://api.github.com/teams/1\"\n } ],\n \"teams_url\" : \"https://api.github.com/repos/octocat/Hello-World/branches/master/protection/dismissal_restrictions/teams\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/branches/master/protection/dismissal_restrictions\",\n \"users\" : [ {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n } ],\n \"users_url\" : \"https://api.github.com/repos/octocat/Hello-World/branches/master/protection/dismissal_restrictions/users\"\n },\n \"require_code_owner_reviews\" : true,\n \"required_approving_review_count\" : 2,\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/branches/master/protection/required_pull_request_reviews\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "aded80d2-fa4c-4629-a333-f842d1dda75b", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.860827Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/update-pull-request-review-protection", + "schema": { + "description": "Protected Branch Pull Request Review", + "properties": { + "dismiss_stale_reviews": { + "example": true, + "type": "boolean" + }, + "dismissal_restrictions": { + "properties": { + "teams": { + "description": "The list of teams with review dismissal access.", + "items": { + "$ref": "#/components/schemas/team" + }, + "type": "array" + }, + "teams_url": { + "example": "\"https://api.github.com/repos/the-org/an-org-repo/branches/master/protection/dismissal_restrictions/teams\"", + "type": "string" + }, + "url": { + "example": "\"https://api.github.com/repos/the-org/an-org-repo/branches/master/protection/dismissal_restrictions\"", + "type": "string" + }, + "users": { + "description": "The list of users with review dismissal access.", + "items": { + "$ref": "#/components/schemas/simple-user" + }, + "type": "array" + }, + "users_url": { + "example": "\"https://api.github.com/repos/the-org/an-org-repo/branches/master/protection/dismissal_restrictions/users\"", + "type": "string" + } + }, + "type": "object" + }, + "require_code_owner_reviews": { + "example": true, + "type": "boolean" + }, + "required_approving_review_count": { + "example": 2, + "maximum": 6, + "minimum": 1, + "type": "integer" + }, + "url": { + "example": "https://api.github.com/repos/octocat/Hello-World/branches/master/protection/dismissal_restrictions", + "format": "uri", + "type": "string" + } + }, + "required": ["dismiss_stale_reviews", "require_code_owner_reviews"], + "title": "Protected Branch Pull Request Review", + "type": "object" + } + } + } + }, + "insertionIndex": 873 + }, + { + "id": "bcde43ba-4573-48af-af75-576d92a5c7bc", + "name": "Get pull request review protection - default", + "request": { + "urlPath": "/repos/c4q86u4loagtox9hl359056muc6ivh1llwoaj80bx92mtw28kvas3m7qaygme2w1g0yrtik6p5ougvg2n1u82sfxa25o64ex3cxete5aivlmaist5x48/quc5qceiuusmd/branches/0pqibb1ekx69ql8p/protection/required_pull_request_reviews", + "method": "GET" + }, + "response": { + "status": 200, + "body": "{\n \"dismiss_stale_reviews\" : true,\n \"dismissal_restrictions\" : {\n \"teams\" : [ {\n \"description\" : \"A great team.\",\n \"html_url\" : \"https://github.com/orgs/github/teams/justice-league\",\n \"id\" : 1,\n \"members_url\" : \"https://api.github.com/teams/1/members{/member}\",\n \"name\" : \"Justice League\",\n \"node_id\" : \"MDQ6VGVhbTE=\",\n \"permission\" : \"admin\",\n \"privacy\" : \"closed\",\n \"repositories_url\" : \"https://api.github.com/teams/1/repos\",\n \"slug\" : \"justice-league\",\n \"url\" : \"https://api.github.com/teams/1\"\n } ],\n \"teams_url\" : \"https://api.github.com/repos/octocat/Hello-World/branches/master/protection/dismissal_restrictions/teams\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/branches/master/protection/dismissal_restrictions\",\n \"users\" : [ {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n } ],\n \"users_url\" : \"https://api.github.com/repos/octocat/Hello-World/branches/master/protection/dismissal_restrictions/users\"\n },\n \"require_code_owner_reviews\" : true,\n \"required_approving_review_count\" : 2,\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/branches/master/protection/required_pull_request_reviews\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "bcde43ba-4573-48af-af75-576d92a5c7bc", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.860697Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/get-pull-request-review-protection", + "schema": { + "description": "Protected Branch Pull Request Review", + "properties": { + "dismiss_stale_reviews": { + "example": true, + "type": "boolean" + }, + "dismissal_restrictions": { + "properties": { + "teams": { + "description": "The list of teams with review dismissal access.", + "items": { + "$ref": "#/components/schemas/team" + }, + "type": "array" + }, + "teams_url": { + "example": "\"https://api.github.com/repos/the-org/an-org-repo/branches/master/protection/dismissal_restrictions/teams\"", + "type": "string" + }, + "url": { + "example": "\"https://api.github.com/repos/the-org/an-org-repo/branches/master/protection/dismissal_restrictions\"", + "type": "string" + }, + "users": { + "description": "The list of users with review dismissal access.", + "items": { + "$ref": "#/components/schemas/simple-user" + }, + "type": "array" + }, + "users_url": { + "example": "\"https://api.github.com/repos/the-org/an-org-repo/branches/master/protection/dismissal_restrictions/users\"", + "type": "string" + } + }, + "type": "object" + }, + "require_code_owner_reviews": { + "example": true, + "type": "boolean" + }, + "required_approving_review_count": { + "example": 2, + "maximum": 6, + "minimum": 1, + "type": "integer" + }, + "url": { + "example": "https://api.github.com/repos/octocat/Hello-World/branches/master/protection/dismissal_restrictions", + "format": "uri", + "type": "string" + } + }, + "required": ["dismiss_stale_reviews", "require_code_owner_reviews"], + "title": "Protected Branch Pull Request Review", + "type": "object" + } + } + } + }, + "insertionIndex": 874 + }, + { + "id": "36263965-b801-4540-ab77-a5d0acbae640", + "name": "Delete pull request review protection (application/json)", + "request": { + "urlPath": "/repos/962ze1goneoczdejhp6vtaapu2wfpibwf29sm08wxmfyeqxdhawnfxhd0041ngs8l53yy9x1wfmxoph7jdejebo9muy0fexck5glxe3hh5wg7mj0fi2z54mtfa2rdfu63lbyi86zvl/rcw98ot95ie909xa1a3me2xpag3aqhne0x9dcbnikv42brdx60kz3qhy8mop0pme113intgttqoty1n3tl41mio310pl2qzbgmvkml1eolgqqb58srk9avhxn0jtu0fxwqk8tc6wl2lqz8gvi5btgk71p4tdot38dre1/branches/fmc4n2j7qb1x5jut35vx91amyqsizkos6waisdymwfgupqynvuh6e40zsxl6gjavq8trwg114jlr8bbl3bykj1k937zxjayhiclvorb7ujlos573xvtzyz5k5f1h0gtcv061z6o4t46pj7lie086ygr862ew7gyfd7zqpttwmepy7j2cayyiv/protection/required_pull_request_reviews", + "method": "DELETE", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/532527\",\n \"message\" : \"Quia iusto eum quas facere sit nihil. Perferendis blanditiis consectetur. At doloribus nulla et sint.\",\n \"url\" : \"https://web.example.mocklab.io/190514\",\n \"status\" : \"7d5vzxj30nu9qvw2el6wz5ubujibeg8e5wtq88zsmknoxh99hro6xy6i3gkxgki4i7rjg7czop317r\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "36263965-b801-4540-ab77-a5d0acbae640", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.860513Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/delete-pull-request-review-protection", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 875 + }, + { + "id": "bb6fe58a-ec45-440c-9787-e0294cf77a91", + "name": "Delete pull request review protection - 204", + "request": { + "urlPath": "/repos/lzie335dkxek7d4nws19vtqhjzectvnf05o4x/pfwz6272wae6bwh23ueh551401c0s/branches/zu8wrdpywtim716r1a7l6c83q3sorsgzex7tnt2akgxjj/protection/required_pull_request_reviews", + "method": "DELETE" + }, + "response": { + "status": 204 + }, + "uuid": "bb6fe58a-ec45-440c-9787-e0294cf77a91", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.860272Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/delete-pull-request-review-protection" + } + } + }, + "insertionIndex": 876 + }, + { + "id": "e6e03a24-1455-4d6a-9e96-1fbcd53953ed", + "name": "Set admin branch protection - default", + "request": { + "urlPath": "/repos/p7a46ihmndol1jmvb5oc9psyzne58uht68yrhm99jn59akq8qyac7w0g2vm1k71ko5nu24zjq54muvcuofjn8x4wuwdel969n4pad71hfftu28hw51m9erz6eosao7ghoassavdnrt4s4cszj8dfojxxnlf6ju18ibnymhfp6r/s7is04nt527q0eip4v/branches/yslq4ix0hg066w24rrjnwj7wk891t213vfrwrf2tgsp0nlx3cewwpx2m94/protection/enforce_admins", + "method": "POST" + }, + "response": { + "status": 200, + "body": "{\n \"enabled\" : true,\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/branches/master/protection/enforce_admins\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "e6e03a24-1455-4d6a-9e96-1fbcd53953ed", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.860224Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/set-admin-branch-protection", + "schema": { + "description": "Protected Branch Admin Enforced", + "properties": { + "enabled": { + "example": true, + "type": "boolean" + }, + "url": { + "example": "https://api.github.com/repos/octocat/Hello-World/branches/master/protection/enforce_admins", + "format": "uri", + "type": "string" + } + }, + "required": ["url", "enabled"], + "title": "Protected Branch Admin Enforced", + "type": "object" + } + } + } + }, + "insertionIndex": 877 + }, + { + "id": "5f742519-b429-4aba-850a-53ef5fa43fdf", + "name": "Get admin branch protection - default", + "request": { + "urlPath": "/repos/qqn57u05knz6l53ujb/wz73ulz/branches/jizno5xclz321i5b9f6agbcooo00ffgmsbgkj8s7n3pxdy7ff2ar58sss5e69rgika4itgr1dq76ynpfyamr2369uvkkufl3vsl83hka/protection/enforce_admins", + "method": "GET" + }, + "response": { + "status": 200, + "body": "{\n \"enabled\" : true,\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/branches/master/protection/enforce_admins\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "5f742519-b429-4aba-850a-53ef5fa43fdf", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.86015Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/get-admin-branch-protection", + "schema": { + "description": "Protected Branch Admin Enforced", + "properties": { + "enabled": { + "example": true, + "type": "boolean" + }, + "url": { + "example": "https://api.github.com/repos/octocat/Hello-World/branches/master/protection/enforce_admins", + "format": "uri", + "type": "string" + } + }, + "required": ["url", "enabled"], + "title": "Protected Branch Admin Enforced", + "type": "object" + } + } + } + }, + "insertionIndex": 878 + }, + { + "id": "b5b09ea8-50d7-433c-9ab6-fbb6779f7396", + "name": "Delete admin branch protection (application/json)", + "request": { + "urlPath": "/repos/csf8h2xjbfyvnbrpwlu901lc7y0rtrcc6w/bsxzx9t90swuqtpmj6y4gf2gysjv5m4ekulhiz4y0vomhuxz3bamr7f/branches/uq3bq811f8x52gb7eywunhccjtsbiwackw0rzj7rvu0shem7zxfdi5i0vj1ksjsmmc2foyczbwhrqywmebqlfxbc5e4idhrrce6ly77shety9wpb070zjowjobr76gjhzw4ydpwiljc5u4d79nalqeuulhyx8zw0iknm1wr6tol0ozg578nbnv/protection/enforce_admins", + "method": "DELETE", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/089286\",\n \"message\" : \"Non nesciunt saepe. Dolor eius quaerat dolorum dolor occaecati voluptatibus unde. Sequi nihil iusto est.\",\n \"url\" : \"https://web.example.mocklab.io/489212\",\n \"status\" : \"3mktaqmq353hhdp6ki6bu5gs3eyckgkhs3i\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "b5b09ea8-50d7-433c-9ab6-fbb6779f7396", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.86005Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/delete-admin-branch-protection", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 879 + }, + { + "id": "5c43b268-b1d7-4c64-b1e3-e7a30e1439a9", + "name": "Delete admin branch protection - 204", + "request": { + "urlPath": "/repos/16w5v7midrwtadv1ak7at0r7ygnw2yp988jub6an69sowjwv3sv28pu9pjn4sk2ik7o2da1fh1ajetd0ofi7fsdvyi0n3lfrrvfpqt1ss42qzdgwha0erx4gcitobcxmkl2pdhjr6yxbo2e7ek6jz8eirmywdv8360bsnobhb9hwkf/1551266ymox10ngsdjpeycbujkahtbrw49ay0exgiceokvo6pheyuhaquxq3p967yh2mbfd32sz3i0vg6k6niy948ihnmnqdglles4vdmewayn5ux6myl9brsq/branches/uaodxou35z57w4nhxqenfjk295bfns/protection/enforce_admins", + "method": "DELETE" + }, + "response": { + "status": 204 + }, + "uuid": "5c43b268-b1d7-4c64-b1e3-e7a30e1439a9", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.859827Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/delete-admin-branch-protection" + } + } + }, + "insertionIndex": 880 + }, + { + "id": "4e1dc10f-c6e0-40e7-a08e-ccae6971a406", + "name": "Update branch protection", + "request": { + "urlPath": "/repos/aes0p7lvidj1q2tuem6us91c3tsyq3ttuugkh7j36sn9p8h77ub6wyhhfsfbxvc3k69d6zdm1669zt1ocwiy4ev2bk2ez067uk40lh7r8xr3bz2hr18iryqgqkepue6pm6vmt09r02itaobc21i99hyz3fh2qnu0lp4h30e1nw/241f9pxjyi60vv6icyddnkmkbas2rekrcvxv3no/branches/yzglmoekc0e6uw1d7o2909w8uxu2mixye4px91vxi37d3t3sp2qz57b51wyylz1g2op619oy9yzvaexs5aj5g/protection", + "method": "PUT" + }, + "response": { + "status": 422, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/362957\",\n \"message\" : \"Perspiciatis dolores officia accusamus. Et consequatur ut vitae. Aperiam sit eos qui omnis autem tenetur similique. Distinctio cupiditate a ea. Harum sunt eius quia.\",\n \"errors\" : [ \"5i4mwcqa8q7jm67bzedlljrsien9pkyy1lccgkfpnm3nlcr6v6p1wis1xbzxu8rl181mhriwoncw5i1ywlpj0u5yk2rcrdwil00lihu6dqjfjcnd463brnxt9d7zj4al5b7wfibafdhfil2ppx9l89holyqe69k6gng3d1blimk5ym04\", \"077i0x8jfd6nqo3wyzetbf7cvnzwfftvb7po6hp4sgeybt95d8bqwpgwtmkt86c6kfeerrz44wvzgr939w2mel4txwiaebpncvbl2\" ]\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "4e1dc10f-c6e0-40e7-a08e-ccae6971a406", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.859769Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/update-branch-protection", + "schema": { + "description": "Validation Error Simple", + "properties": { + "documentation_url": { + "type": "string" + }, + "errors": { + "items": { + "type": "string" + }, + "type": "array" + }, + "message": { + "type": "string" + } + }, + "required": ["message", "documentation_url"], + "title": "Validation Error Simple", + "type": "object" + } + } + } + }, + "insertionIndex": 881 + }, + { + "id": "b1595def-962c-439b-85e4-4c18532b273b", + "name": "Update branch protection", + "request": { + "urlPath": "/repos/4lsokbprei57q14q7ea0ezyubizvhilaykd1k55o7i7579knabmjw44vj8i4r5e7us1bdwi2nv80mcz21svp1om0tngwoljxtyk2/wh87dz01gwb1qp0gkl7oz0gyaadhivl1qjgt5eui1to8lr9zq4io8va0tpdikm81105cwqop7m7t0ojh03h0ajhhl1doxm6mxiromia2c6tc8wqacu0aivufsx6idsz0/branches/lyehcxljk86pcuvnc2ivan6vyuifh18ok8qwxbxpyyl9riqsg5060p3t8ybgbdhmuicg1eqlam9rqzywu379j/protection", + "method": "PUT" + }, + "response": { + "status": 415, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/186373\",\n \"message\" : \"Quasi aliquid ipsam consectetur eaque. Maiores quos nihil assumenda sit omnis aperiam. Aut magni voluptatum voluptate error libero et qui. Sit sequi voluptates eligendi vel in.\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "b1595def-962c-439b-85e4-4c18532b273b", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.859554Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/update-branch-protection", + "schema": { + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": ["message", "documentation_url"], + "type": "object" + } + } + } + }, + "insertionIndex": 882 + }, + { + "id": "5d33436b-c647-4e3b-8802-910c720bf854", + "name": "Update branch protection", + "request": { + "urlPath": "/repos/rwcx125sat7o47l9p5gjmtpwvlcrz31uolzo9bgogjtirw6rao2l8g5c4b3obe70jf8t6ic9xxai4fafhrp5df58bxgg3bdspv/5zni4is2ijhz0vasdto7mnjr4air5bc7bzfdl30rsh18y87wqykcbden2nfwf7k9kdhtiyjafix2hrk5gj10tpi46pe0n6j1/branches/z4lc6181xaj2l0lhz0nasldm3638ral9pxtiebq4s1u4z3d9gudbqeuancf8fr1wgl44vpoijn9z3rdlecsjvpa7v3z7/protection", + "method": "PUT" + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/573746\",\n \"message\" : \"Pariatur ex soluta voluptas. Quo aliquid incidunt doloremque. Vel laboriosam non dolor. Et enim non.\",\n \"url\" : \"https://web.example.mocklab.io/094680\",\n \"status\" : \"1b0po5wisgxu59o46sgx4euvyapc8hqwvxxs61a7s7ufqlp9cmd6wwi2wh20mjbk178h6vpmh8nbmuspstbwead6dppo2h15sau3\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "5d33436b-c647-4e3b-8802-910c720bf854", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.859371Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/update-branch-protection", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 883 + }, + { + "id": "00d3da59-8535-42bf-a52c-6fd78cfe02b8", + "name": "Update branch protection", + "request": { + "urlPath": "/repos/zdp6cppqw6gzbjdrcpgufsy73dhvux5jbpp53qte2jeng1xyr51zj6jwgesrtnizmd5qpuldznoppwtm638jru6na5q72eu4zi07m68k3gfga6mvef92h6rf25f7kpl52vfhdpkue72xr1kw2n38r8z8e/bqjahaue4qotonirdmir60qxah8k17x38id7iu0j69zh6z293kfocqljhkyixsn0j89t6fpwovpituz7pbf0g3tbb6t8nwj8y5rce19bi8vtgyvutnonwrqjy02hs5oucg0f5ogmcl82jszsqa2cf28h0cwqfuoug5vbfc94i1os04b7vjn83ka40uf7hq5kgxog/branches/d3x1/protection", + "method": "PUT" + }, + "response": { + "status": 403, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/637389\",\n \"message\" : \"Esse quisquam aliquam. Officia omnis id qui aliquam est blanditiis doloremque. Minus amet porro eum eos ut cumque.\",\n \"url\" : \"https://web.example.mocklab.io/195622\",\n \"status\" : \"j0qv1s1ro8932c3lmzia3nikvasdi\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "00d3da59-8535-42bf-a52c-6fd78cfe02b8", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.859134Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/update-branch-protection", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 884 + }, + { + "id": "9d51a4eb-1d70-412e-aefe-c4cfd86b53d2", + "name": "Update branch protection", + "request": { + "urlPath": "/repos/b21mapzi17ttfipmwq9lmrj77pbgvdjestemysecg5eppswtwj8zpqp8f54fvfsojsppkth1b95g28cvgenqiudmup24yirv1pd1mgw1eiafti519d1h34vc6kbt2tug261z7bar11xczjay2qm07/01b320rv2dz9u4e36kmnpjb3jtjmnojjkmjta2zmcda2taljfg1rzn1ibn3m3he90ljcq5w61fht7y2rxnuinz3gmayxvmmei6tos6g8pso66apo02rbbjwq2yjwbt2hig2gbewrm3zk30bgf51gb7pnoetencbfpom20far6li8v60/branches/jg56ko3gnlx8b43kz55x3nh68k27to6kytjkyggf96y4z2ja1f0hei61vq74rz7m55vvb2msxtpa0310qjxr3p7l0etg8g0dcejux8yrthn530yhsdtcihjqsqrrl7yqajw1vswmemudz9qrnl5f8erkvt0m5f0hk8/protection", + "method": "PUT" + }, + "response": { + "status": 200, + "body": "{\n \"required_pull_request_reviews\" : {\n \"dismissal_restrictions\" : {\n \"teams_url\" : \"https://web.example.mocklab.io/475674\",\n \"teams\" : [ {\n \"parent\" : {\n \"ldap_dn\" : \"uid=example,ou=users,dc=github,dc=com\",\n \"repositories_url\" : \"https://api.github.com/organizations/1/team/1/repos\",\n \"members_url\" : \"https://api.github.com/organizations/1/team/1/members{/member}\",\n \"html_url\" : \"https://github.com/orgs/rails/teams/core\",\n \"name\" : \"Justice League\",\n \"description\" : \"A great team.\",\n \"privacy\" : \"closed\",\n \"permission\" : \"admin\",\n \"id\" : 1,\n \"slug\" : \"justice-league\",\n \"url\" : \"https://api.github.com/organizations/1/team/1\",\n \"node_id\" : \"MDQ6VGVhbTE=\"\n },\n \"repositories_url\" : \"https://web.example.mocklab.io/945801\",\n \"members_url\" : \"https://web.example.mocklab.io/142859\",\n \"description\" : \"Voluptas quae libero tempora. Et eveniet corrupti amet vel est earum sequi. Ipsa id debitis quia cumque.\",\n \"privacy\" : \"0f8a14ruwx0tsaemdwtr4oy4ff433q59o5d8o7y24pnigpjmyfzg7e8bq44rabjaf6dpoprughkvj33042vn11u93vf2xbb6oc7e1qga3jf5b9sn2\",\n \"permission\" : \"o07ctgmujlnsp0krxeqx0ek9fuubcnjqnkxmkjc6gsqf4\",\n \"url\" : \"https://web.example.mocklab.io/793936\",\n \"permissions\" : {\n \"pull\" : false,\n \"maintain\" : true,\n \"admin\" : false,\n \"triage\" : false,\n \"push\" : true\n },\n \"html_url\" : \"https://github.com/orgs/rails/teams/core\",\n \"name\" : \"Ms. Markus Corwin\",\n \"id\" : 2902903085463382902,\n \"slug\" : \"x30r7m97knljtvakm48j2kz83p2gtk0qnon7h\",\n \"node_id\" : \"59s6\"\n }, {\n \"parent\" : {\n \"ldap_dn\" : \"uid=example,ou=users,dc=github,dc=com\",\n \"repositories_url\" : \"https://api.github.com/organizations/1/team/1/repos\",\n \"members_url\" : \"https://api.github.com/organizations/1/team/1/members{/member}\",\n \"html_url\" : \"https://github.com/orgs/rails/teams/core\",\n \"name\" : \"Justice League\",\n \"description\" : \"A great team.\",\n \"privacy\" : \"closed\",\n \"permission\" : \"admin\",\n \"id\" : 1,\n \"slug\" : \"justice-league\",\n \"url\" : \"https://api.github.com/organizations/1/team/1\",\n \"node_id\" : \"MDQ6VGVhbTE=\"\n },\n \"repositories_url\" : \"https://web.example.mocklab.io/724020\",\n \"members_url\" : \"https://web.example.mocklab.io/100960\",\n \"description\" : \"Qui omnis inventore est sapiente doloribus. Consequatur ratione totam ea veniam velit et. Exercitationem quisquam beatae quod dignissimos. Dolores non pariatur aliquid aut velit. Non veritatis volupta\",\n \"privacy\" : \"smobcr1s6xeplb85ubtd2sqmi5wwqax58kl6tftzhffvsd8mkjzavzgxn6hdtsgzr867kpw8mtlo73sutwob9qtdzh2n5z5nxvn5pf2w6ihrxljaj9bc73w9ah9x6x8o0goh576\",\n \"permission\" : \"sv3qc8304dds03gr7xkhh0pdwelt2uic741b6gv6pkmuzj1skoqnooxi0dqekxwcmrh0y1l51tarzuqfro8r5ragbecwbc7o6xpf2fl69vv8ta1lkw9v9qnxm9nht7jt65gtrqrnns0tcpzakxeosjn18mur3rtabsgusj3z6lnmyic5\",\n \"url\" : \"https://web.example.mocklab.io/799292\",\n \"permissions\" : {\n \"pull\" : false,\n \"maintain\" : false,\n \"admin\" : false,\n \"triage\" : false,\n \"push\" : false\n },\n \"html_url\" : \"https://github.com/orgs/rails/teams/core\",\n \"name\" : \"Herman Kovacek DVM\",\n \"id\" : 3637865920141784631,\n \"slug\" : \"sezt1z2g1msj0vwfhpzepto8aqew3df1dd00igz1m41lcwkxd7k6wja20wdkvgjhvmx5tjzyj57vaxw5s9yrzhlvk2cm80t1xezzsi7ub6jeuhslkbwmokul5yur0a174clspfxjaul5oit7su0m0c4acctu0u7xbos82ivwhm0xb2el58\",\n \"node_id\" : \"68v0\"\n }, {\n \"parent\" : {\n \"ldap_dn\" : \"uid=example,ou=users,dc=github,dc=com\",\n \"repositories_url\" : \"https://api.github.com/organizations/1/team/1/repos\",\n \"members_url\" : \"https://api.github.com/organizations/1/team/1/members{/member}\",\n \"html_url\" : \"https://github.com/orgs/rails/teams/core\",\n \"name\" : \"Justice League\",\n \"description\" : \"A great team.\",\n \"privacy\" : \"closed\",\n \"permission\" : \"admin\",\n \"id\" : 1,\n \"slug\" : \"justice-league\",\n \"url\" : \"https://api.github.com/organizations/1/team/1\",\n \"node_id\" : \"MDQ6VGVhbTE=\"\n },\n \"repositories_url\" : \"https://web.example.mocklab.io/983873\",\n \"members_url\" : \"https://web.example.mocklab.io/790487\",\n \"description\" : \"Rem et ut vel recusandae occaecati. Eveniet et aut deleniti quibusdam harum sed. Dolorem officia earum accusamus. Inventore qui est est saepe.\",\n \"privacy\" : \"6w8s7t1yrgu30yydp1mkga4aafjynva4cimy7k0jmvott4xmq0i3vw7g3zdx9\",\n \"permission\" : \"3epq4nzcz4cmszv0pbrd2l5tmvashl9zooprhus2ghz8ximvz28kiv6n3kpviveeg11mq158thnwl06nqt89ya4zlngotv98znpaky53901g2ayg9sfo0638crmndo61zxy9nxsh4a9wuoei1wko9rj0\",\n \"url\" : \"https://web.example.mocklab.io/713423\",\n \"permissions\" : {\n \"pull\" : false,\n \"maintain\" : false,\n \"admin\" : false,\n \"triage\" : false,\n \"push\" : false\n },\n \"html_url\" : \"https://github.com/orgs/rails/teams/core\",\n \"name\" : \"Mrs. Sang Anderson\",\n \"id\" : 5759729469229007096,\n \"slug\" : \"fozk0opkxt4kth9zd3zjlv5fntecssh846kzsbfxqq5uksgwbwzqm6564lcp3vcsjc7vze66freon6sfwcujdvobyxc54vq34a7urz6oqyprgxq8pmxmik5ac8ccd7oqypqpi8xawrzqai5l67gaqoxgzr9e1rl3vlzcmves5hk75ilg2ev8v2jjmqj6c76g0\",\n \"node_id\" : \"u7xp\"\n }, {\n \"parent\" : {\n \"ldap_dn\" : \"uid=example,ou=users,dc=github,dc=com\",\n \"repositories_url\" : \"https://api.github.com/organizations/1/team/1/repos\",\n \"members_url\" : \"https://api.github.com/organizations/1/team/1/members{/member}\",\n \"html_url\" : \"https://github.com/orgs/rails/teams/core\",\n \"name\" : \"Justice League\",\n \"description\" : \"A great team.\",\n \"privacy\" : \"closed\",\n \"permission\" : \"admin\",\n \"id\" : 1,\n \"slug\" : \"justice-league\",\n \"url\" : \"https://api.github.com/organizations/1/team/1\",\n \"node_id\" : \"MDQ6VGVhbTE=\"\n },\n \"repositories_url\" : \"https://web.example.mocklab.io/992225\",\n \"members_url\" : \"https://web.example.mocklab.io/383663\",\n \"description\" : \"Voluptatem et maxime velit. Ullam quisquam tempore quos rem aliquam. Doloremque in ut qui nemo enim. Ducimus quis enim. Itaque et ipsa sed.\",\n \"privacy\" : \"3dq91l87j2ktx74p2rwkv3zpiktfed8wfe6jqzt68katoso6e28e9owyxltsgwysc7m2b0pu9tojyb460fiu0kdifajfno1wp23l2d9bsz\",\n \"permission\" : \"g31cofbtzxbkyuz6ukfzzgwa8ihvfvk5e2a7kvcmfuf2vnruurwaixab7sjan63rfqsodjwh7khfr17meg9u9u1d5tiuztxij20znp\",\n \"url\" : \"https://web.example.mocklab.io/258693\",\n \"permissions\" : {\n \"pull\" : false,\n \"maintain\" : true,\n \"admin\" : true,\n \"triage\" : false,\n \"push\" : true\n },\n \"html_url\" : \"https://github.com/orgs/rails/teams/core\",\n \"name\" : \"Rosaline Sipes\",\n \"id\" : 7233861719939165155,\n \"slug\" : \"ii46y205czq74qi7y36k7ynbtuog44du624aywu0ik4wuugol8cjbd7botws994httao7t19ny2d3y5toery65qvp25qytqd27jpp61i\",\n \"node_id\" : \"ifi6\"\n }, {\n \"parent\" : {\n \"ldap_dn\" : \"uid=example,ou=users,dc=github,dc=com\",\n \"repositories_url\" : \"https://api.github.com/organizations/1/team/1/repos\",\n \"members_url\" : \"https://api.github.com/organizations/1/team/1/members{/member}\",\n \"html_url\" : \"https://github.com/orgs/rails/teams/core\",\n \"name\" : \"Justice League\",\n \"description\" : \"A great team.\",\n \"privacy\" : \"closed\",\n \"permission\" : \"admin\",\n \"id\" : 1,\n \"slug\" : \"justice-league\",\n \"url\" : \"https://api.github.com/organizations/1/team/1\",\n \"node_id\" : \"MDQ6VGVhbTE=\"\n },\n \"repositories_url\" : \"https://web.example.mocklab.io/262078\",\n \"members_url\" : \"https://web.example.mocklab.io/835421\",\n \"description\" : \"Magnam voluptatum expedita omnis nobis earum itaque. Cumque a perspiciatis est et nesciunt culpa. Dolorem ut et non sed. Quas est quae voluptatem veritatis reprehenderit. Rem veritatis qui non velit q\",\n \"privacy\" : \"tnh66qrhsr7tdq0ysr68azfyvbzbrx661kq5b7caqzbd9248wr14a29yccn8vdv6ystowqw90lzamvc2zmfz6sim55xbz1zcbo57fcdrov91tma4cd2044sbys69zcf35vp3y77ref783u120lfn2bx0x7mruqmv4w0yb70312ele4ln6sx86cxyp7hku\",\n \"permission\" : \"wcjx92s7gyd2f42xkd16359me2kd8yebvvu7yavdntcyenwd6iyrslg034j4vcr0m0hil1j1bjkahpikqkwqm1cribdx3gq69rg8mcf3gd14783vkac67m4mt8qebq66rxz7xlo7t6bhb7b0\",\n \"url\" : \"https://web.example.mocklab.io/549387\",\n \"permissions\" : {\n \"pull\" : true,\n \"maintain\" : true,\n \"admin\" : true,\n \"triage\" : false,\n \"push\" : false\n },\n \"html_url\" : \"https://github.com/orgs/rails/teams/core\",\n \"name\" : \"Ivey Stiedemann\",\n \"id\" : 5629249452940699135,\n \"slug\" : \"6zz4h40b9f16xbdh50nub0rjxm7hsjn8fshvi73ow76h479y5orriambmkxj3kp4rigbgyuz8dhz9lhfimess07n1fnxzx5iltoiv3xpjtfztmm3nugxa954i1lx4yoq2h5331we72jz3d\",\n \"node_id\" : \"z732\"\n }, {\n \"parent\" : {\n \"ldap_dn\" : \"uid=example,ou=users,dc=github,dc=com\",\n \"repositories_url\" : \"https://api.github.com/organizations/1/team/1/repos\",\n \"members_url\" : \"https://api.github.com/organizations/1/team/1/members{/member}\",\n \"html_url\" : \"https://github.com/orgs/rails/teams/core\",\n \"name\" : \"Justice League\",\n \"description\" : \"A great team.\",\n \"privacy\" : \"closed\",\n \"permission\" : \"admin\",\n \"id\" : 1,\n \"slug\" : \"justice-league\",\n \"url\" : \"https://api.github.com/organizations/1/team/1\",\n \"node_id\" : \"MDQ6VGVhbTE=\"\n },\n \"repositories_url\" : \"https://web.example.mocklab.io/969653\",\n \"members_url\" : \"https://web.example.mocklab.io/539229\",\n \"description\" : \"Nemo et est. Nam eius delectus. Ut maiores molestiae nostrum dolores pariatur error est.\",\n \"privacy\" : \"fmqyw87p4sfeizuh1x03bv1knu5xanoenmuoz49a4njvypoub3taz8nz49vh0txwnvdhxoulgnow7fuadpzi9613gonkat1nqabmgfbe56cutq0oq9e712xyi3ls2v2qdp8lat\",\n \"permission\" : \"462y\",\n \"url\" : \"https://web.example.mocklab.io/293445\",\n \"permissions\" : {\n \"pull\" : false,\n \"maintain\" : false,\n \"admin\" : true,\n \"triage\" : true,\n \"push\" : true\n },\n \"html_url\" : \"https://github.com/orgs/rails/teams/core\",\n \"name\" : \"Rick Beer\",\n \"id\" : 3827844837093618383,\n \"slug\" : \"rhsvmbw2hw3nrgcye5528qh42duy93h453b22e93bfr29o3k0ncl6a\",\n \"node_id\" : \"7737\"\n }, {\n \"parent\" : {\n \"ldap_dn\" : \"uid=example,ou=users,dc=github,dc=com\",\n \"repositories_url\" : \"https://api.github.com/organizations/1/team/1/repos\",\n \"members_url\" : \"https://api.github.com/organizations/1/team/1/members{/member}\",\n \"html_url\" : \"https://github.com/orgs/rails/teams/core\",\n \"name\" : \"Justice League\",\n \"description\" : \"A great team.\",\n \"privacy\" : \"closed\",\n \"permission\" : \"admin\",\n \"id\" : 1,\n \"slug\" : \"justice-league\",\n \"url\" : \"https://api.github.com/organizations/1/team/1\",\n \"node_id\" : \"MDQ6VGVhbTE=\"\n },\n \"repositories_url\" : \"https://web.example.mocklab.io/299225\",\n \"members_url\" : \"https://web.example.mocklab.io/722768\",\n \"description\" : \"Dolorum fugit unde dolorem qui quia. Aut reiciendis odio eligendi voluptatem et reprehenderit eveniet. Est voluptas laborum ut ut fugit provident. Qui tempore et vel ratione.\",\n \"privacy\" : \"mrhtmlmb4312\",\n \"permission\" : \"h14ohbp2h4ssqi4d8qd4s5xut8jcl65yjfxgzfsqddg7cese4eq878lqdro8mmoo5q6tgvpnfrjstz2m6g3rve3q5xj01pyzwg9sjgqruf\",\n \"url\" : \"https://web.example.mocklab.io/820295\",\n \"permissions\" : {\n \"pull\" : false,\n \"maintain\" : true,\n \"admin\" : false,\n \"triage\" : false,\n \"push\" : true\n },\n \"html_url\" : \"https://github.com/orgs/rails/teams/core\",\n \"name\" : \"Theodore Nitzsche\",\n \"id\" : 4139830325554281928,\n \"slug\" : \"voaxdw\",\n \"node_id\" : \"0p52\"\n } ],\n \"users_url\" : \"https://web.example.mocklab.io/936437\",\n \"url\" : \"https://web.example.mocklab.io/869146\",\n \"users\" : [ {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Tyson Hartmann\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"tfqcdas1mb9w66ouy1j2g4l0dz4l17w\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n }, {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Rima Hills\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"p1l0bba4xdrg9qv40\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n }, {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Angle Weimann\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"3kce95aps9mmctxzj49v0dwjguktyjv0k0iuod0ox09sqkyl9ggfarcqn49egn9pcz3pym78bypy02nycypmpkilo9hmornjz5g0z0aioxqlvyyew13tid4\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n }, {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Chan Walsh\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"ngngnf3pqqu5egkb9h5w1w5fk18zjz5grp6hkbk17yw1mkntulrn4d4w443mcuhqapzfvsaub4muxyp13k94e7izyfwkh1dtftoq2711b4ne1nxv5b918hoxyyfpria0fzzlupi9vodzccjcw2msgnhvvmfr4bvbqb2140cif1aed7kj0nfe0h1w5uqgqe47\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n }, {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Ms. Barbera Abshire\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"y7f9s3rtt5ykvklvbuee3xuoq436fxq2rlqyxvjrtjcuycgic1hgwphbvtum3zo11ehdw9chwthmbiqp5xy0qdi\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n }, {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Roman Hettinger\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"51xnwfe0l9sw8bianmxmzk1ee0zx05igi64mk89ynx88kgdt076kloex\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n }, {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Terrance Lehner\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"emvlsnkwpa5cb0llg0ao2tblgtpw\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n } ]\n },\n \"required_approving_review_count\" : 535469351663030825,\n \"require_code_owner_reviews\" : false,\n \"dismiss_stale_reviews\" : true,\n \"url\" : \"https://web.example.mocklab.io/961887\"\n },\n \"required_conversation_resolution\" : {\n \"enabled\" : false\n },\n \"required_signatures\" : {\n \"enabled\" : true,\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/branches/master/protection/required_signatures\"\n },\n \"required_status_checks\" : {\n \"contexts_url\" : \"https://api.github.com/repos/octocat/Hello-World/branches/master/protection/required_status_checks/contexts\",\n \"contexts\" : [ \"continuous-integration/travis-ci\" ],\n \"strict\" : true,\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/branches/master/protection/required_status_checks\"\n },\n \"required_linear_history\" : {\n \"enabled\" : true\n },\n \"restrictions\" : {\n \"teams_url\" : \"https://web.example.mocklab.io/146808\",\n \"teams\" : [ {\n \"parent\" : \"52b3g8hyxl89rz6w7e39jxpv0j1mjvid2toq29ns4bez4enz5d3zc0bmpnax4mod6l5afb3dgfo79uek\",\n \"repositories_url\" : \"https://web.example.mocklab.io/665345\",\n \"members_url\" : \"https://web.example.mocklab.io/178291\",\n \"html_url\" : \"https://web.example.mocklab.io/644850\",\n \"name\" : \"Sanjuana O'Connell MD\",\n \"description\" : \"Autem odio hic. Voluptatem magnam libero voluptas. Consequatur sunt voluptas incidunt.\",\n \"privacy\" : \"7x3kdvqttg027c0sivvzj8g0kknwzo4sd57hd972u7s6v5qnc5f8\",\n \"permission\" : \"qyjd0iztqmm9fez4e3jhqzks5c4y0w\",\n \"id\" : 1123949900485282814,\n \"slug\" : \"drc7a37qqv4soaujjk3cbrfesq9poi5wftudlj9yl1m1qqc1odhn407wsfulyo68j6pyl6nbre2bhreg5\",\n \"url\" : \"https://web.example.mocklab.io/871852\",\n \"node_id\" : \"7k2n\"\n }, {\n \"parent\" : \"oa7b6tate5wchieq9de32c6w4lphy3xl8axvln7qr1at7mequelqm9aa0klsqil4ol6u4xcrmcuwvlgq66ajmodmns8jr0x2hx0i0rpyimio6ke29b9qoetxuo2hoe4daf9uyqufduilapbhug1g6rhyoa7qlvuycb2m8ho04ycng8c4hk0sm\",\n \"repositories_url\" : \"https://web.example.mocklab.io/811305\",\n \"members_url\" : \"https://web.example.mocklab.io/072214\",\n \"html_url\" : \"https://web.example.mocklab.io/841028\",\n \"name\" : \"Donte Oberbrunner\",\n \"description\" : \"Est odit at molestias aut nulla amet. Aut sunt voluptatem et. Et voluptate aut eius eos occaecati eius recusandae. Sed ut et sequi.\",\n \"privacy\" : \"iez21qmge1i3no0avfpwhbacaszflf2wqwni4cd91awuw43t31aufdc04lq7mt84akxvngj\",\n \"permission\" : \"e6sjouj3q4gfh83njv5n91mq5uolohxrijytqcwv9q4jc7dq5oplrk5dhlzv4ov8\",\n \"id\" : 2320412364734544586,\n \"slug\" : \"zbyzp85qtl3gnpdu3uzlf3\",\n \"url\" : \"https://web.example.mocklab.io/797535\",\n \"node_id\" : \"c8p2\"\n }, {\n \"parent\" : \"hzrdtx7wtt4ap4olm5jwl9qajrybk3q9wjxb63c18n4vwp186xcsrhv5a8az2yt3j7detxhv0unie7v6we4icqlcb4w6gcb55nnka327stkfne79op4qa62lzz2tcc4jn5ustp8nsc01m5r2dowd3nhme\",\n \"repositories_url\" : \"https://web.example.mocklab.io/264794\",\n \"members_url\" : \"https://web.example.mocklab.io/187953\",\n \"html_url\" : \"https://web.example.mocklab.io/609388\",\n \"name\" : \"Jonas Hilpert\",\n \"description\" : \"Asperiores voluptatem et. Nulla est voluptatem ut atque voluptate. Dignissimos et et est est recusandae maiores. Quas quia et suscipit in soluta.\",\n \"privacy\" : \"ui2b5yvd70zoqeh4qne5vqavvd226hhqe0fab49sxj2k31iyxxqv1g9oyprx5abplwafyln2va5j512vo1iomlf9mc1qfd9iikc7epmbjpwa1p7dsu7itakrko1fa3io1jkkytxvf86nztq6rbvh7ys92r\",\n \"permission\" : \"hle2petjw0k949vv0qx9bh2whisotmka6sd0vdof70fn17k7l97tvd4tdv62du1xl3rzmabtd4u3gomeeqxfuk3amv7z58gptyzlvywuph1br0rgn8cvi0sbvudk6o57flare7kh3ib0grdqi4sc5l91cb0zkksqizj5jrr280tyjly3dtokclvf\",\n \"id\" : 157513739751192370,\n \"slug\" : \"19da88evor3gkl9xbqz7znsvrwpupvudeixqdtssu\",\n \"url\" : \"https://web.example.mocklab.io/330541\",\n \"node_id\" : \"d2yn\"\n }, {\n \"parent\" : \"nplouum6vo7xqjkpsx93utl4ib8xe0i6h3bepp343qjwyyqhub7g9owyw346onjxh2a7jzejsslfivojtrkh6ygabplo4s13vszd8nve7setqwcfcd6eg5cx8jn35ax5cbqygerm78m76psc057jrpdzrv6vdqirkluw2n5jty0f25ov\",\n \"repositories_url\" : \"https://web.example.mocklab.io/096505\",\n \"members_url\" : \"https://web.example.mocklab.io/675351\",\n \"html_url\" : \"https://web.example.mocklab.io/636579\",\n \"name\" : \"Jamel Langworth\",\n \"description\" : \"Fuga sit ex dolor expedita molestiae et est. Praesentium vel distinctio reiciendis omnis. Illum eum dolorem consequuntur itaque. In deleniti facere optio veritatis mollitia laborum. Tenetur eveniet de\",\n \"privacy\" : \"zxkxtfhvv6dswdctbt4pqqk4hdunvjhfk4m9pmr2tdbvp01muvf4gmeazpw7ytj0bidt9fewr8xfq3sp2r3hvlr4u40vz84mdk4kdl2rojtbwgojz7mrjfq6a5k8a489ao7ij9i0lri7mzmg99ujta0s9w3xk8clmo7c1v\",\n \"permission\" : \"b06yotlzsisa911b5cgokvm6xak01l4zb2st7lt32z8y0wblduypg4cnu9nq4akyxicpmfg1nz6vn7yip99tzltbrcuttk7xfc2qpw34ub7rzlqpjcu0jfru9o9bovxqb0xgs4pyn9m1fzbrpan25xwabi1i\",\n \"id\" : 7490766601452257912,\n \"slug\" : \"a4tlb388fr2m081qlc796vozdl79jjvoxaf1bgewyn1mnknu75kkqozcgglmiti74sr8z5zmme4a6x55v15ljlz8ij\",\n \"url\" : \"https://web.example.mocklab.io/780634\",\n \"node_id\" : \"w3kl\"\n } ],\n \"users_url\" : \"https://web.example.mocklab.io/266775\",\n \"apps_url\" : \"https://web.example.mocklab.io/170933\",\n \"url\" : \"https://web.example.mocklab.io/556527\",\n \"users\" : [ {\n \"gists_url\" : \"https://web.example.mocklab.io/826865\",\n \"repos_url\" : \"https://web.example.mocklab.io/353193\",\n \"following_url\" : \"https://web.example.mocklab.io/556078\",\n \"starred_url\" : \"https://web.example.mocklab.io/441247\",\n \"followers_url\" : \"https://web.example.mocklab.io/443213\",\n \"login\" : \"qdmo28wq8wavw1fa6daq4l69xgathhveax9p42s8z38tx10h3nob0emmmnzihb42qej61r1ld4p96lfkxf8eigx97un60b9djbddsw6dr6wvz9aofih1w01hu15rgwcuzhrgr3n90mz33mn4y83m4wneebabq8n6pnkhces9g\",\n \"type\" : \"psa28hjnrhcv5ni3lq8o5fio33wgpj9h0cawl7v6r705uqqnh5gd40lb8no3nz8fuwjdqz1ant2uvswwa7w2b1coodq3whk8mszzxyu6fwzi0eyyf6wz4ek5sqgkyjp59s0c44pbqogi5zwfgg\",\n \"url\" : \"https://web.example.mocklab.io/469861\",\n \"subscriptions_url\" : \"https://web.example.mocklab.io/474105\",\n \"received_events_url\" : \"https://web.example.mocklab.io/783022\",\n \"avatar_url\" : \"https://s3.amazonaws.com/uifaces/faces/twitter/gregsqueeb/128.jpg\",\n \"events_url\" : \"https://web.example.mocklab.io/975234\",\n \"html_url\" : \"https://web.example.mocklab.io/306886\",\n \"site_admin\" : true,\n \"id\" : 9021362967469320458,\n \"gravatar_id\" : \"16nx\",\n \"node_id\" : \"5ki4\",\n \"organizations_url\" : \"https://web.example.mocklab.io/825593\"\n }, {\n \"gists_url\" : \"https://web.example.mocklab.io/207601\",\n \"repos_url\" : \"https://web.example.mocklab.io/321746\",\n \"following_url\" : \"https://web.example.mocklab.io/412943\",\n \"starred_url\" : \"https://web.example.mocklab.io/575873\",\n \"followers_url\" : \"https://web.example.mocklab.io/403007\",\n \"login\" : \"cp1izecul0gitj3z77xvbddkhmfphe3er3a1eiuvukhtzmz9x1l1rvvjfud048v9njuygknyjuir6jr4lumvkx2o2vybp7711nlymc19pikluwqn2rddwzlmpkyd5a201dxk0pxrix2fcj469zm4ppgwdyon07xse4c\",\n \"type\" : \"rk0sp0xl5cok8ufjntdj6f0n0i5aww1dnywwjhczx1rjc4w7dook2dmg3wqitgoskibvju582mmc771t1ngxj4v\",\n \"url\" : \"https://web.example.mocklab.io/722266\",\n \"subscriptions_url\" : \"https://web.example.mocklab.io/439746\",\n \"received_events_url\" : \"https://web.example.mocklab.io/215038\",\n \"avatar_url\" : \"https://s3.amazonaws.com/uifaces/faces/twitter/vitorleal/128.jpg\",\n \"events_url\" : \"https://web.example.mocklab.io/442284\",\n \"html_url\" : \"https://web.example.mocklab.io/074300\",\n \"site_admin\" : false,\n \"id\" : 1107433950771491918,\n \"gravatar_id\" : \"133s\",\n \"node_id\" : \"xloi\",\n \"organizations_url\" : \"https://web.example.mocklab.io/248036\"\n } ],\n \"apps\" : [ {\n \"owner\" : {\n \"gists_url\" : \"\\\"https://api.github.com/users/testorg-ea8ec76d71c3af4b/gists{/gist_id}\\\"\",\n \"repos_url\" : \"https://web.example.mocklab.io/143368\",\n \"members_url\" : \"https://web.example.mocklab.io/086874\",\n \"following_url\" : \"\\\"https://api.github.com/users/testorg-ea8ec76d71c3af4b/following{/other_user}\\\"\",\n \"description\" : \"Ad temporibus quos voluptatum possimus ab. Nulla numquam molestias neque porro molestias sunt aut. Repellat aspernatur sunt vel et unde voluptas omnis. Velit omnis praesentium fugiat at voluptates rer\",\n \"starred_url\" : \"\\\"https://api.github.com/users/testorg-ea8ec76d71c3af4b/starred{/owner}{/repo}\\\"\",\n \"followers_url\" : \"\\\"https://api.github.com/users/testorg-ea8ec76d71c3af4b/followers\\\"\",\n \"login\" : \"qejgpmtk5splovl8mnhdqz9bek8fa6cggimy39reak8ux1rutyy2xdqy1ci1sitfbkjbjy38k2qe8o8xo707vwmsk19g\",\n \"type\" : \"\\\"Organization\\\"\",\n \"url\" : \"https://web.example.mocklab.io/014032\",\n \"public_members_url\" : \"https://web.example.mocklab.io/288779\",\n \"subscriptions_url\" : \"\\\"https://api.github.com/users/testorg-ea8ec76d71c3af4b/subscriptions\\\"\",\n \"issues_url\" : \"https://web.example.mocklab.io/506094\",\n \"received_events_url\" : \"\\\"https://api.github.com/users/testorg-ea8ec76d71c3af4b/received_events\\\"\",\n \"avatar_url\" : \"https://s3.amazonaws.com/uifaces/faces/twitter/jeremiespoken/128.jpg\",\n \"events_url\" : \"https://web.example.mocklab.io/983804\",\n \"html_url\" : \"\\\"https://github.com/testorg-ea8ec76d71c3af4b\\\"\",\n \"site_admin\" : false,\n \"hooks_url\" : \"https://web.example.mocklab.io/702792\",\n \"id\" : 2886376646615102610,\n \"gravatar_id\" : \"\\\"\\\"\",\n \"node_id\" : \"1e88\",\n \"organizations_url\" : \"\\\"https://api.github.com/users/testorg-ea8ec76d71c3af4b/orgs\\\"\"\n },\n \"external_url\" : \"https://web.example.mocklab.io/111573\",\n \"updated_at\" : \"2022-08-27T06:05:58.854387Z\",\n \"permissions\" : {\n \"metadata\" : \"vdz56popsfux31ohcdhj9k0jevjl2xpcbpx3g4rkc5tu9t3g\",\n \"single_file\" : \"b99gu2x4idah975du7c3rj66oqnac0apibhv3tkfyvllx1cczt79rix6w19aqe2aahp5edvxozdthgmo2wd7rmdghmqbur412\",\n \"contents\" : \"qknyby4abr1ezk5o7rpsnyeny6y1p0eqb3puls8v6sgkooer9rmj2dlxuze1gb2meubyet537peg5zy8uorl17q0ud5i4aqgnru4pm43qy9u5srtfb2zxt3iuu\",\n \"issues\" : \"4a840mbnfhc0qsefuag94dkz34r8\"\n },\n \"html_url\" : \"https://web.example.mocklab.io/564826\",\n \"name\" : \"Trudie Gottlieb\",\n \"created_at\" : \"6eobnjlel2dbkxnos3sgyuw0zlf3arfo3vzirytcw0ib9ye134nwzruc9x4huek2qovzofybpco2hnfcmncwlpbrnpxefrpcli3rv7gftdkk041yfcrcyg251wp09li1mcv2bjq0ijsflhhtocpqydpurbforej8b773pp662fqd\",\n \"description\" : \"Non dolorum minus hic et sit quia. Tempore dolorem accusantium ut. Odio dolore iste temporibus et. Provident quis delectus deleniti sit. Corrupti quos sunt sed perspiciatis quia.\",\n \"id\" : 1745964224432700215,\n \"events\" : [ \"okjotzv3ptbpdw9qo30zfv30doxx6ek6cnihdmzisdxfjkju9fctti7gb045r5ut38tb728jphby0\", \"ew3w9wa1i63w40r35ohwu34o86q54xrtm1b1ca9vcqfdgqzjlz8nas8jqufvm0sduurzw6q8i\", \"wprpfawwtqqsnz89vssieaeqw53a9svpngo5coas7rxurny53139ktxb5newyms7lvpvpm3k4chhtwz3jb30mjnyk9g1fz28ldylt5p36iy86undhfgd0s6nhlcotol0ys12ictfce68iy6bkdbvxv9i5ojxvk1f1j52dcn6uakj4wrvl20j6kfeir8c3k\", \"qffbzaca1bvw36xrpk7t\", \"upr0ubdar18jdbovyu2yueo9mjccxo6n\", \"vxi0kojbwbis9wvlz4wgc5lpxrn0scshd06mnu94ztjmxt1s8kg0ptr7cd969n3omzbseawsnoe61euzq6vqrm0y17ykenngyehjhohfrw7j366hvbtfgo1q57wyalwqzx4r0qzdwt5y6ucct2y23ey7d2xulpdav0cesqju6ceyeydegjmn4x2wehi6r2aow05m\", \"n8dqyrv1it1s1oe6pm151tbnrmep59hu4chztpuq8i71k4311szxcv4588vnyguxnpy9qsrf5izxy2b9z9x7vj6awi42it73ar61w6ncrbfge4jas6nly49k5471ntvwqnrqo7lx3rpscjr\" ],\n \"slug\" : \"qub8wn1oize0h5o0ikrdkk0jvr38le0op2ufqp3t9q9yrmn5a4kf10cjg3ssbn9jcn6pvjf95ey55ror0q5kt4d8pziv3ins2cs9qzp\",\n \"node_id\" : \"j78m\"\n }, {\n \"owner\" : {\n \"gists_url\" : \"\\\"https://api.github.com/users/testorg-ea8ec76d71c3af4b/gists{/gist_id}\\\"\",\n \"repos_url\" : \"https://web.example.mocklab.io/335369\",\n \"members_url\" : \"https://web.example.mocklab.io/446095\",\n \"following_url\" : \"\\\"https://api.github.com/users/testorg-ea8ec76d71c3af4b/following{/other_user}\\\"\",\n \"description\" : \"Laborum aut molestiae aut aut velit aspernatur. Eveniet iure sint quibusdam est sunt ut. Ipsum ea velit ut vel esse. Ullam cupiditate impedit sit quia repudiandae deserunt. Voluptatem mollitia quos et\",\n \"starred_url\" : \"\\\"https://api.github.com/users/testorg-ea8ec76d71c3af4b/starred{/owner}{/repo}\\\"\",\n \"followers_url\" : \"\\\"https://api.github.com/users/testorg-ea8ec76d71c3af4b/followers\\\"\",\n \"login\" : \"qchuno4r0fddg8gxfl5n9cb0avspe5uq7ptkvtmsok\",\n \"type\" : \"\\\"Organization\\\"\",\n \"url\" : \"https://web.example.mocklab.io/801249\",\n \"public_members_url\" : \"https://web.example.mocklab.io/408712\",\n \"subscriptions_url\" : \"\\\"https://api.github.com/users/testorg-ea8ec76d71c3af4b/subscriptions\\\"\",\n \"issues_url\" : \"https://web.example.mocklab.io/685538\",\n \"received_events_url\" : \"\\\"https://api.github.com/users/testorg-ea8ec76d71c3af4b/received_events\\\"\",\n \"avatar_url\" : \"https://s3.amazonaws.com/uifaces/faces/twitter/vc27/128.jpg\",\n \"events_url\" : \"https://web.example.mocklab.io/204997\",\n \"html_url\" : \"\\\"https://github.com/testorg-ea8ec76d71c3af4b\\\"\",\n \"site_admin\" : false,\n \"hooks_url\" : \"https://web.example.mocklab.io/783743\",\n \"id\" : 4375369074461449821,\n \"gravatar_id\" : \"\\\"\\\"\",\n \"node_id\" : \"5191\",\n \"organizations_url\" : \"\\\"https://api.github.com/users/testorg-ea8ec76d71c3af4b/orgs\\\"\"\n },\n \"external_url\" : \"https://web.example.mocklab.io/217873\",\n \"updated_at\" : \"2023-01-06T06:15:58.85569Z\",\n \"permissions\" : {\n \"metadata\" : \"kissc5gyw1tg0gtzgm42ea8wn56uk9j63ijy06ocqb5zyc6oe172rnrctoeq0jsb0lryvklbgd26ke0js5oc9gecc1lt2apyl7mrad2x9js53i0tfi30h1bcht7ivad9ggu3\",\n \"single_file\" : \"bwa214w2qg085m4pldq4r4uyhh9kra0wxk09fwwlafekgsvjvyxzzx6phrbzl4gdkx09f7mofg2festfw5nx3z7tl4yeb5e0o8rqw67vjydseror48u7m4dsl1vi6he24v3lygq24cc7\",\n \"contents\" : \"dmozmmpff4d1mzlds2wunm2aqgfwibr1g7qeixd7m3t6b40cidy18f0z7e10anbqztttpeo4nwmwrsfwf7fmmssw4jjg045ab8o8mk5h4nlfw2hqa9mlclp7n4r08ttvm8w42wyjz09fgr8mvljavlvdqaj\",\n \"issues\" : \"viiss736m78nxrx31hpq7ycal9k19ybpojz3a2h5aoxm3ueovryt1ao3ymhv4nvhfsdnljpn9djrlsu8ofdrnhkt39exhinc37bofm622ivj5k42sv88t03o5h7bzsg1dhjueis0236cx64\"\n },\n \"html_url\" : \"https://web.example.mocklab.io/033656\",\n \"name\" : \"Tempie Will\",\n \"created_at\" : \"9con8iryi5ozg7fmo52sj\",\n \"description\" : \"Et totam tempore ut maiores eveniet pariatur et. Eligendi voluptate est qui doloremque nihil consequatur odio. Ad aliquam qui illo consequatur quo dolores provident.\",\n \"id\" : 7097889076695790920,\n \"events\" : [ \"p72kca4i9ros1ptmq339d2i2k0xu9si5tl39pacquwxwkfvxl61iukjk4mbk9fedk3ba33og2mdhtfhrnkb832yvpqq992fifpqfmzup9h03daj0grucjxyve8n9ye3g0ia3sdgkp93qrdx\", \"q1g358oethcz5agmd20woxxzkp\", \"ndkm4d3ve7xl1nh85g8szwihbsrphatk9qgkp68nq48vuyw04syxjzvwl9wsticegu8cp8efkv1fv4htg5fgrdr1chtqbrsrkhu8eo1m\", \"oyfnltklryakpoe4yd0qrz9ni666gtex5zzwr86k5lhfzrnlghnx8kxmswfoqzjvqi\" ],\n \"slug\" : \"51z24qvlome8v0ykb0awt7kprf7xyup4b4mqqxns2udac77dsarfycx8w4pvaerqetmwjmizypvd0lebzcj83t\",\n \"node_id\" : \"v72m\"\n }, {\n \"owner\" : {\n \"gists_url\" : \"\\\"https://api.github.com/users/testorg-ea8ec76d71c3af4b/gists{/gist_id}\\\"\",\n \"repos_url\" : \"https://web.example.mocklab.io/815663\",\n \"members_url\" : \"https://web.example.mocklab.io/426731\",\n \"following_url\" : \"\\\"https://api.github.com/users/testorg-ea8ec76d71c3af4b/following{/other_user}\\\"\",\n \"description\" : \"Quasi occaecati ut. Ut ad minima qui ab iusto. Asperiores et dolor quidem rerum sit. Necessitatibus recusandae et quo quo cum. Quia possimus quia soluta.\",\n \"starred_url\" : \"\\\"https://api.github.com/users/testorg-ea8ec76d71c3af4b/starred{/owner}{/repo}\\\"\",\n \"followers_url\" : \"\\\"https://api.github.com/users/testorg-ea8ec76d71c3af4b/followers\\\"\",\n \"login\" : \"cun03d8qlzn1kmsbjc1he72f2sqr5zm2lwu\",\n \"type\" : \"\\\"Organization\\\"\",\n \"url\" : \"https://web.example.mocklab.io/365140\",\n \"public_members_url\" : \"https://web.example.mocklab.io/996385\",\n \"subscriptions_url\" : \"\\\"https://api.github.com/users/testorg-ea8ec76d71c3af4b/subscriptions\\\"\",\n \"issues_url\" : \"https://web.example.mocklab.io/179047\",\n \"received_events_url\" : \"\\\"https://api.github.com/users/testorg-ea8ec76d71c3af4b/received_events\\\"\",\n \"avatar_url\" : \"https://s3.amazonaws.com/uifaces/faces/twitter/wtrsld/128.jpg\",\n \"events_url\" : \"https://web.example.mocklab.io/451364\",\n \"html_url\" : \"\\\"https://github.com/testorg-ea8ec76d71c3af4b\\\"\",\n \"site_admin\" : false,\n \"hooks_url\" : \"https://web.example.mocklab.io/010752\",\n \"id\" : 9037867350958202250,\n \"gravatar_id\" : \"\\\"\\\"\",\n \"node_id\" : \"480h\",\n \"organizations_url\" : \"\\\"https://api.github.com/users/testorg-ea8ec76d71c3af4b/orgs\\\"\"\n },\n \"external_url\" : \"https://web.example.mocklab.io/172017\",\n \"updated_at\" : \"2022-07-05T08:27:58.856737Z\",\n \"permissions\" : {\n \"metadata\" : \"7y6bc2ce78f1b6uf8sqafpjpjl9ikdhum3gnvadxyf70fr\",\n \"single_file\" : \"qinkn2qxsqylptb3q74nl9wygepnmiml9f0dbklmqmak0vj5b9x3e7f323205ckw94wzdjltdbpejjsa7m2snolc40wkmai8qyn6bnixytznzocilp77ugz19c0ix8khvj5zf71c4opa6jy9e6a7dure5gev9y3n0t1m2dox31nfldmjhi96pbjg\",\n \"contents\" : \"49nj9eojb5w6x9qqx23ryqbjwqiqe4kh6wqq01xnpqydf61g9twq7pg4ka6g2uf5tlda18jr49tqqzddfsff42320ak5ywdwbnh56ol1tnhk3qjlbknqgtwhnradq1jsr0nxl07dj8lv7raunbegu\",\n \"issues\" : \"hcqykzaj6xmk3uc2fjs3lfxv7e5tzpc27ptstfx0llhupmeqcosxazgngrcfvbhxs47m0kyzh48996cl959hfnjdn5gd0hbwrxkujokr\"\n },\n \"html_url\" : \"https://web.example.mocklab.io/655019\",\n \"name\" : \"Kristan Blanda Sr.\",\n \"created_at\" : \"0gtmhwijfa925kl20ebqqznh9ao1oi05sczeov8ibf61q31v7ofmcfmdhawvg5ajs075a6wd0oyf3morjfffmglknecq3lkltkgpqmbsomg04sb4rhzwexglqgyaf2weq80n6psxvlmsl2lywwnt\",\n \"description\" : \"Quia ut error neque incidunt voluptas corporis. Autem ea ea aliquam voluptate odio reiciendis. Inventore maiores qui dolor iusto quo reprehenderit.\",\n \"id\" : 5596817467900854290,\n \"events\" : [ \"mul0rw99n2of3dfuop07ce12a31g1sq3lqucrjd1awldz8kppt750u34twomiu7kil6pzksztd3wgx45wr1a5tj89u1fso5rfygveeh952zdicptso42vmz58qat65tdzllphwpyombk8d1x1630jrk75nx266jourg4n84vv9esfkdtm1fthih3f25uogu\", \"w4t64uug5rmvgtre3s0hxwmywfhm5m8lp3q0uz13gdh2yg76w58za5\", \"edbunxpnzfgeiav6gw88f07ekcvysfvkyyah6s15sxuwekylw9xnmma2p47msui8fqx2xykze3hs3kqqiarejfrcm2x0k2gi3ibst5gylmfbqorr2dzx3tmwh69lzq148hlcq6foxdqpuvda0pns1ua2ztkgl488ksqyv\", \"vfv6i0ymsc1vpstmmm9gjh1a1mvwi80ealgnndhnhs9ovsdlj9xg5y2mc5i6iviaqaky7bcf3w2rbrxd6hubenhhm794yzjnpq365svgu9naghrav75m58lxrn93ake2oiqhreutayg2bi1wqe093gjg368ysx1s0ho5pm13fvtyf\", \"v0x5i14xlo47s2k79gycm8og0gpgyd9l9yx1dgpmyu8euo2t68\" ],\n \"slug\" : \"t5903n1at1k3vtnlr9i69igvtoagvw7l0g1s5m7l5lqjx1f67qnetzq0botrbj7nmooqk9h3mis304zm51g0jxkqc4fl28xew5d7u8yto\",\n \"node_id\" : \"46p7\"\n }, {\n \"owner\" : {\n \"gists_url\" : \"\\\"https://api.github.com/users/testorg-ea8ec76d71c3af4b/gists{/gist_id}\\\"\",\n \"repos_url\" : \"https://web.example.mocklab.io/686447\",\n \"members_url\" : \"https://web.example.mocklab.io/593412\",\n \"following_url\" : \"\\\"https://api.github.com/users/testorg-ea8ec76d71c3af4b/following{/other_user}\\\"\",\n \"description\" : \"Saepe molestias et magni ea nisi. Ut nesciunt blanditiis autem. Necessitatibus asperiores sapiente vitae maxime omnis. Ullam voluptatum quos corrupti.\",\n \"starred_url\" : \"\\\"https://api.github.com/users/testorg-ea8ec76d71c3af4b/starred{/owner}{/repo}\\\"\",\n \"followers_url\" : \"\\\"https://api.github.com/users/testorg-ea8ec76d71c3af4b/followers\\\"\",\n \"login\" : \"f25sbdgqyzzrtz0b30dowje8h9w7871gqyn30zq7uin3h5azh8l9v955g66r1pp4zaaox84yiuvllghgvjee6tfksqb441nubcba0culwf5lcjp15k1pqr74aais9gl7tqtgd3ksa\",\n \"type\" : \"\\\"Organization\\\"\",\n \"url\" : \"https://web.example.mocklab.io/983358\",\n \"public_members_url\" : \"https://web.example.mocklab.io/130776\",\n \"subscriptions_url\" : \"\\\"https://api.github.com/users/testorg-ea8ec76d71c3af4b/subscriptions\\\"\",\n \"issues_url\" : \"https://web.example.mocklab.io/971047\",\n \"received_events_url\" : \"\\\"https://api.github.com/users/testorg-ea8ec76d71c3af4b/received_events\\\"\",\n \"avatar_url\" : \"https://s3.amazonaws.com/uifaces/faces/twitter/to_soham/128.jpg\",\n \"events_url\" : \"https://web.example.mocklab.io/818612\",\n \"html_url\" : \"\\\"https://github.com/testorg-ea8ec76d71c3af4b\\\"\",\n \"site_admin\" : false,\n \"hooks_url\" : \"https://web.example.mocklab.io/695465\",\n \"id\" : 3978960008275386103,\n \"gravatar_id\" : \"\\\"\\\"\",\n \"node_id\" : \"lnf6\",\n \"organizations_url\" : \"\\\"https://api.github.com/users/testorg-ea8ec76d71c3af4b/orgs\\\"\"\n },\n \"external_url\" : \"https://web.example.mocklab.io/611473\",\n \"updated_at\" : \"2023-03-01T08:53:58.857767Z\",\n \"permissions\" : {\n \"metadata\" : \"m5stuy7hcuxjegxsxtt5lxux1zi8b0bu6wntymuup5nv3ynf1g9lc0v7wpufc7g8sd2gm96lfdb3xfwt2swg4ryxh22dfnkvd5hbk1engo8rb2mek6wvutc2cxh11wsvdxk8ayqexc10pttmbpjol3ho4qiz5lo8jsc2\",\n \"single_file\" : \"65i886dd1qn5ni9yijd2uyuj46r6eamj5qnn8kqueo1sspzkzfrvm5hwdjwwayc9bxqw9pzs4l6n5zaj1m5ev0eylpagvfm66icsdjxcz5epkcgil5fxrzlm4cx3uxfh1t3c853\",\n \"contents\" : \"joy45zafd5obq9brqwa6wq03xqlpq\",\n \"issues\" : \"3ft0hw2s2pdcnkpsi3t6acj253uhit5dohrq0k41bhbq803s5ffeojtyvh29dcdyfgikb6cqyufyar6ut193956ptqfxfn5ewjo5mo741tiapzf586j6r9qywjhb0egdyu3rh87pmhgnma5qu18jw1za488wth6remdgw1o79fth3et3dn6ang7bc0sjwo814\"\n },\n \"html_url\" : \"https://web.example.mocklab.io/121437\",\n \"name\" : \"Dr. Hulda Sporer\",\n \"created_at\" : \"kfj2i0vv5wubk2zkfp1if5ej\",\n \"description\" : \"Pariatur est et debitis laudantium et. Eveniet nulla nulla quisquam dolore voluptatem ducimus qui. Debitis minus laboriosam nesciunt dolorem eius sunt tenetur.\",\n \"id\" : 5825197683779642606,\n \"events\" : [ \"6qalpjaimagk9gwunjuf49slloyoi332m71jy5dyyzxmw2anveqdn6vkgoejtpki8yjikm842sp741u4vfefpdo3pvz3j2w0ct60avd5ot8nq5ccs\", \"p3gzlq48wvoaxs60ovov1rpf4zoq6yqxzda29tavlqoh2xf2ju8p6lhfoel8rpjdnht44tx65v7oc1k56n0h2nkaga3tnjrgh5nz4e0pce1ci3s1c2s3bk83ixq12dueld6l8gblx6u8zz4vmxsya\", \"ki1hcwi7ddtodlasg7vxr3e6qanqyelzy9mbydtf5er3sjawk7ij1wm79bc40k9gqnwnv07qw3z4f54ihhs1fen3iiteo7np55kdo6jvjuidybzaisvofp39g43\", \"qc4evufpa1caomjpjwt7qc8h2ydv7d4sfcnke9scy4trhh125050g2s9alog9svywgkwwfs2j8jsqtbk6ird7mx6a24mlmpw2g9r9qngucsd3udemo47jkccuynm4b1vp7zl502g3xzl89o4cl\" ],\n \"slug\" : \"i7h1mf42vdelbtrn6vyaheys2x86n24t6dqnyrwklmgbpaid65kqd60c8jo0inu3ysupcu8ma4a7f37oat4snco9i2n73pjz7vmhp0wnv3ml8wdn61hqdkp72k8pmmfmbf5h114nzhdhhdwe6y7ejwpv3pfv6opzx0cjkyon20ifee06nr3qftnk5qd59h3i59\",\n \"node_id\" : \"nha6\"\n } ]\n },\n \"enforce_admins\" : {\n \"enabled\" : true,\n \"url\" : \"https://web.example.mocklab.io/588591\"\n },\n \"allow_deletions\" : {\n \"enabled\" : false\n },\n \"url\" : \"https://web.example.mocklab.io/423387\",\n \"allow_force_pushes\" : {\n \"enabled\" : true\n }\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "9d51a4eb-1d70-412e-aefe-c4cfd86b53d2", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.85883Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/update-branch-protection", + "schema": { + "description": "Branch protections protect branches", + "properties": { + "allow_deletions": { + "additionalProperties": false, + "properties": { + "enabled": { + "type": "boolean" + } + }, + "required": ["enabled"], + "type": "object" + }, + "allow_force_pushes": { + "additionalProperties": false, + "properties": { + "enabled": { + "type": "boolean" + } + }, + "required": ["enabled"], + "type": "object" + }, + "enforce_admins": { + "additionalProperties": false, + "properties": { + "enabled": { + "type": "boolean" + }, + "url": { + "format": "uri", + "type": "string" + } + }, + "required": ["url", "enabled"], + "type": "object" + }, + "required_conversation_resolution": { + "additionalProperties": false, + "properties": { + "enabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "required_linear_history": { + "additionalProperties": false, + "properties": { + "enabled": { + "type": "boolean" + } + }, + "required": ["enabled"], + "type": "object" + }, + "required_pull_request_reviews": { + "properties": { + "dismiss_stale_reviews": { + "type": "boolean" + }, + "dismissal_restrictions": { + "properties": { + "teams": { + "items": { + "$ref": "#/components/schemas/team" + }, + "type": "array" + }, + "teams_url": { + "format": "uri", + "type": "string" + }, + "url": { + "format": "uri", + "type": "string" + }, + "users": { + "items": { + "$ref": "#/components/schemas/simple-user" + }, + "type": "array" + }, + "users_url": { + "format": "uri", + "type": "string" + } + }, + "required": ["url", "users_url", "teams_url", "users", "teams"], + "type": "object" + }, + "require_code_owner_reviews": { + "type": "boolean" + }, + "required_approving_review_count": { + "type": "integer" + }, + "url": { + "format": "uri", + "type": "string" + } + }, + "required": ["url"], + "type": "object" + }, + "required_signatures": { + "properties": { + "enabled": { + "example": true, + "type": "boolean" + }, + "url": { + "example": "https://api.github.com/repos/octocat/Hello-World/branches/master/protection/required_signatures", + "format": "uri", + "type": "string" + } + }, + "required": ["url", "enabled"], + "type": "object" + }, + "required_status_checks": { + "$ref": "#/components/schemas/status-check-policy" + }, + "restrictions": { + "$ref": "#/components/schemas/branch-restriction-policy" + }, + "url": { + "format": "uri", + "type": "string" + } + }, + "required": ["url"], + "title": "Protected Branch", + "type": "object" + } + } + } + }, + "insertionIndex": 885 + }, + { + "id": "8dd79080-5231-4c45-afe3-e415999d547a", + "name": "Get branch protection", + "request": { + "urlPath": "/repos/vpuov2ed47ingi3t8hvvye5rm0mdyqxmv2bvwupayfoljub984gvekgdc9tnjbt8w8t5no2ixwlhfl94mocpjozcds0arxrxwhttlhbxsfvfo7ebizzejzpw4ranmmon/1in62i571uubtp041do4y4ei7n4zh9rsp9332pcoril361638lbdd6ef9efkp2eyou2gibqamt5y8hs51nebnp04ypvgpaf9jzocqkg259zqelednsbumdn49c6twofo/branches/2soelopnyp4j141s24tsdyvl2btjssmzt6yc4zp4ysseddlb3vq033dafgvpv7vztbed7jefl7k1rjbqkf6tgiepxfmpht4p4z1b2qki3nj7v1rdtlgf7um818zaopolpmy0uonz16awxs9ran20a45wdjskdshbo0x4j6uj1mo08khtcesym/protection", + "method": "GET" + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/422347\",\n \"message\" : \"Libero consequatur suscipit id minima culpa maiores fugit. Quo voluptatem sed ex ut eligendi aliquam voluptas. Nostrum sunt et consequatur dolores ea aut optio. Nostrum vel impedit.\",\n \"url\" : \"https://web.example.mocklab.io/412474\",\n \"status\" : \"7m0ac5717jc01aurwdv6mzt6g13x6fxeipve1pfhlqd8l6\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "8dd79080-5231-4c45-afe3-e415999d547a", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.845371Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/get-branch-protection", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 886 + }, + { + "id": "d0ef19fb-4965-4204-b482-22db47c6d21e", + "name": "Get branch protection - default", + "request": { + "urlPath": "/repos/76axmsbt37s37flnxab4zv9y1l7b5niqayq3mnyqonl6cxqy/1viux6qhve/branches/t3y8dqrh/protection", + "method": "GET" + }, + "response": { + "status": 200, + "body": "{\n \"allow_deletions\" : {\n \"enabled\" : true\n },\n \"allow_force_pushes\" : {\n \"enabled\" : true\n },\n \"enforce_admins\" : {\n \"enabled\" : true,\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/branches/master/protection/enforce_admins\"\n },\n \"required_conversation_resolution\" : {\n \"enabled\" : true\n },\n \"required_linear_history\" : {\n \"enabled\" : true\n },\n \"required_pull_request_reviews\" : {\n \"dismiss_stale_reviews\" : true,\n \"dismissal_restrictions\" : {\n \"teams\" : [ {\n \"description\" : \"A great team.\",\n \"html_url\" : \"https://github.com/orgs/github/teams/justice-league\",\n \"id\" : 1,\n \"members_url\" : \"https://api.github.com/teams/1/members{/member}\",\n \"name\" : \"Justice League\",\n \"node_id\" : \"MDQ6VGVhbTE=\",\n \"permission\" : \"admin\",\n \"privacy\" : \"closed\",\n \"repositories_url\" : \"https://api.github.com/teams/1/repos\",\n \"slug\" : \"justice-league\",\n \"url\" : \"https://api.github.com/teams/1\"\n } ],\n \"teams_url\" : \"https://api.github.com/repos/octocat/Hello-World/branches/master/protection/dismissal_restrictions/teams\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/branches/master/protection/dismissal_restrictions\",\n \"users\" : [ {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n } ],\n \"users_url\" : \"https://api.github.com/repos/octocat/Hello-World/branches/master/protection/dismissal_restrictions/users\"\n },\n \"require_code_owner_reviews\" : true,\n \"required_approving_review_count\" : 2,\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/branches/master/protection/required_pull_request_reviews\"\n },\n \"required_status_checks\" : {\n \"contexts\" : [ \"continuous-integration/travis-ci\" ],\n \"contexts_url\" : \"https://api.github.com/repos/octocat/Hello-World/branches/master/protection/required_status_checks/contexts\",\n \"enforcement_level\" : \"non_admins\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/branches/master/protection/required_status_checks\"\n },\n \"restrictions\" : {\n \"apps\" : [ {\n \"created_at\" : \"2017-07-08T16:18:44-04:00\",\n \"description\" : \"\",\n \"events\" : [ \"push\", \"pull_request\" ],\n \"external_url\" : \"https://example.com\",\n \"html_url\" : \"https://github.com/apps/octoapp\",\n \"id\" : 1,\n \"name\" : \"Octocat App\",\n \"node_id\" : \"MDExOkludGVncmF0aW9uMQ==\",\n \"owner\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"description\" : \"A great organization\",\n \"events_url\" : \"https://api.github.com/orgs/github/events\",\n \"hooks_url\" : \"https://api.github.com/orgs/github/hooks\",\n \"id\" : 1,\n \"issues_url\" : \"https://api.github.com/orgs/github/issues\",\n \"login\" : \"github\",\n \"members_url\" : \"https://api.github.com/orgs/github/members{/member}\",\n \"node_id\" : \"MDEyOk9yZ2FuaXphdGlvbjE=\",\n \"public_members_url\" : \"https://api.github.com/orgs/github/public_members{/member}\",\n \"repos_url\" : \"https://api.github.com/orgs/github/repos\",\n \"url\" : \"https://api.github.com/orgs/github\"\n },\n \"permissions\" : {\n \"contents\" : \"read\",\n \"issues\" : \"write\",\n \"metadata\" : \"read\",\n \"single_file\" : \"write\"\n },\n \"slug\" : \"octoapp\",\n \"updated_at\" : \"2017-07-08T16:18:44-04:00\"\n } ],\n \"apps_url\" : \"https://api.github.com/repos/octocat/Hello-World/branches/master/protection/restrictions/teams\",\n \"teams\" : [ {\n \"description\" : \"A great team.\",\n \"html_url\" : \"https://github.com/orgs/github/teams/justice-league\",\n \"id\" : 1,\n \"members_url\" : \"https://api.github.com/teams/1/members{/member}\",\n \"name\" : \"Justice League\",\n \"node_id\" : \"MDQ6VGVhbTE=\",\n \"permission\" : \"admin\",\n \"privacy\" : \"closed\",\n \"repositories_url\" : \"https://api.github.com/teams/1/repos\",\n \"slug\" : \"justice-league\",\n \"url\" : \"https://api.github.com/teams/1\"\n } ],\n \"teams_url\" : \"https://api.github.com/repos/octocat/Hello-World/branches/master/protection/restrictions/teams\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/branches/master/protection/restrictions\",\n \"users\" : [ {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n } ],\n \"users_url\" : \"https://api.github.com/repos/octocat/Hello-World/branches/master/protection/restrictions/users\"\n },\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/branches/master/protection\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "d0ef19fb-4965-4204-b482-22db47c6d21e", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.845119Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/get-branch-protection", + "schema": { + "description": "Branch Protection", + "properties": { + "allow_deletions": { + "properties": { + "enabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "allow_force_pushes": { + "properties": { + "enabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "enforce_admins": { + "$ref": "#/components/schemas/protected-branch-admin-enforced" + }, + "name": { + "example": "\"branch/with/protection\"", + "type": "string" + }, + "protection_url": { + "example": "\"https://api.github.com/repos/owner-79e94e2d36b3fd06a32bb213/AAA_Public_Repo/branches/branch/with/protection/protection\"", + "type": "string" + }, + "required_conversation_resolution": { + "properties": { + "enabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "required_linear_history": { + "properties": { + "enabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "required_pull_request_reviews": { + "$ref": "#/components/schemas/protected-branch-pull-request-review" + }, + "required_signatures": { + "properties": { + "enabled": { + "example": true, + "type": "boolean" + }, + "url": { + "example": "https://api.github.com/repos/octocat/Hello-World/branches/master/protection/required_signatures", + "format": "uri", + "type": "string" + } + }, + "required": ["url", "enabled"], + "type": "object" + }, + "required_status_checks": { + "properties": { + "contexts": { + "items": { + "type": "string" + }, + "type": "array" + }, + "contexts_url": { + "type": "string" + }, + "enforcement_level": { + "type": "string" + }, + "strict": { + "type": "boolean" + }, + "url": { + "type": "string" + } + }, + "required": ["contexts"], + "type": "object" + }, + "restrictions": { + "$ref": "#/components/schemas/branch-restriction-policy" + }, + "url": { + "type": "string" + } + }, + "title": "Branch Protection", + "type": "object" + } + } + } + }, + "insertionIndex": 887 + }, + { + "id": "21e7613d-2eb8-4cfc-bb16-808ea7fb7976", + "name": "Delete branch protection (application/json)", + "request": { + "urlPath": "/repos/qphjzihfp3ym8d7dr5o4te7172754lsyaqlxaei8wbekuyapn9tlkxfnmjlazi2rnagk3ozt4vztqlxy56rmmr94brlz5lguvpac88nfprw4cfmppdfrbx9zgxwd3os5jg4ulx/xml3i1nusrxpc41uq17zccloxwsq7rbg2if1x3664yemxsu827h5nbbg8fgft7s/branches/p7dirziqdrkyeiisw01ec8tbz6ry5qqmutnc/protection", + "method": "DELETE", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 403, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/604819\",\n \"message\" : \"Consequatur sint exercitationem debitis non. Eveniet est commodi sapiente neque voluptate est. Quibusdam id vel.\",\n \"url\" : \"https://web.example.mocklab.io/960046\",\n \"status\" : \"6m4wajxkya56nu4b9loxhmrmz9aq8tbmj9jgp8il32x9ijib72\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "21e7613d-2eb8-4cfc-bb16-808ea7fb7976", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.84482Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/delete-branch-protection", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 888 + }, + { + "id": "68cb61dc-c1a5-4c5b-8d18-4adb19552006", + "name": "Delete branch protection - 204", + "request": { + "urlPath": "/repos/tpy1ucxr3he7tvwstohaga7xnqenwt6mwym41gftsd7/7wd2d4yldshbmx5c4sy1nhxk62t9p0y72nzo5yg3wxzsz7tzsoy3732isxudp9j6rh6ieo5a7a69a4/branches/pm4sn4ohn2jqiu85rm1p9vcsx4kyepz47d7w04o5l62rhn2zuzn2fvc0rzp4ozbwhhlesshuxzsffaipkmum6tuot8rzcxgwvspheunq5mb5evs2ds1yh2tkylm6qa1a69gq4kegkttm8ydunbxpma2o/protection", + "method": "DELETE" + }, + "response": { + "status": 204 + }, + "uuid": "68cb61dc-c1a5-4c5b-8d18-4adb19552006", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.844592Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/delete-branch-protection" + } + } + }, + "insertionIndex": 889 + }, + { + "id": "6493355a-009b-42fc-acc5-d5aa469fa304", + "name": "Get a branch", + "request": { + "urlPath": "/repos/fw8bz0x5arb97vzvab6kyvhsbgxj5pu9r1d7r2l87geo1vc98tv768xymtmgzyhgkufjsvjxu95oxy9qhyllxdvk6zk0itxsbrhjymlxfz0xw5m/qism8dwinb1tyf1xvxpdggiv77q2wbgqrbhkcbhbsvipt8cwltmwcbpyovaryq7q83nhpmire5uwnef2drynza1sb7jxlxnw7dqwgqrq78z/branches/n8ku5lcfnyyxcvn1t3fu5h", + "method": "GET" + }, + "response": { + "status": 415, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/205940\",\n \"message\" : \"Dolores animi rem delectus. Placeat aut cupiditate ut cum unde hic. Occaecati est eius quod excepturi.\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "6493355a-009b-42fc-acc5-d5aa469fa304", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.844535Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/get-branch", + "schema": { + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": ["message", "documentation_url"], + "type": "object" + } + } + } + }, + "insertionIndex": 890 + }, + { + "id": "944c3930-84f2-481e-b7fb-32a6d56c8dce", + "name": "Get a branch", + "request": { + "urlPath": "/repos/qeq4mam5m4kjmutg/w7lq1zgow1lqwldwstplv0iokddxkd88favbo0uthbmkn7e86k3ipqtn6b2vmswvo7gqzklw93w3zx6b8f37vbmqdjp5311q4xvxv1yzxe5oqh4fvl7ebtrgu36ecei1nlu5tkkwk8rrjpleefpoj7891rpfapzk4mvawugbnwo8i78gudj1y1015gips8/branches/foc97tdkyamthn078cfevzjzmyi0navru742hc5ia3eheejrktm97suit672ljj8fnow8oz6hy13aw45wm7329kz522gbmbx49ivsrmrc09rzgcqlq80li1wf2z7xizuup07y03t25w0f8u1fan4yvulb8m9sf08suknw61w1sfodjzult6", + "method": "GET" + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/959303\",\n \"message\" : \"Hic rerum in vel officia sit nihil veritatis. Sit id atque aut dicta voluptas suscipit repellendus. Sit excepturi asperiores. Dolor optio qui officiis saepe adipisci. Dolor quasi voluptates.\",\n \"url\" : \"https://web.example.mocklab.io/678113\",\n \"status\" : \"5wxmync3w58fkecz3vpoidfllggapgr728ztodjyalansmviilnaq041b1a454y2192ncazws4mk826lt6kl3plxia1dqvlytjakf05b5x0an0rntfc\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "944c3930-84f2-481e-b7fb-32a6d56c8dce", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.844358Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/get-branch", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 891 + }, + { + "id": "f2dff3c4-1bd4-4a64-972a-75c682a1a7b6", + "name": "Get a branch", + "request": { + "urlPath": "/repos/otx5pfckh9d2e0tvk9g1931vhwjvxxcuorowdxdkxwybg1jszzs55ti1ms71yulxr6fk3ov5wesydksnitq7hjjyphme05ah8881qxbb7a125zr8e2ofgpr2h2rbqw0xouo7atcne9ihu95gjr332vya0n5ochulm78xb6nk/m42bksr3s9jbh7vy1az2nu260b5n52hkpdqhjqk2i0yl71vy5kc0x33awxikx3x7vw27lsvoethh3a3u4dnbujfb0gh75j3kvm1xra5tf651h35hdr49uph8zjnxan6n31hz2x046qqjpqh45tft1phq6kgfa2fvb/branches/tbbfgfht7lh10whvahuzoki76kbl3w97q99jhp6n7miyld3263r5li5k8pxbr9o2lom6nvd8cgr753rd", + "method": "GET" + }, + "response": { + "status": 301, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/024797\",\n \"message\" : \"Quidem reprehenderit cumque blanditiis quas sed iusto. Officia et neque dolor dicta rem adipisci. Consectetur error a pariatur. Iure aperiam aliquid dolores illo amet voluptas omnis.\",\n \"url\" : \"https://web.example.mocklab.io/091275\",\n \"status\" : \"bg3d\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "f2dff3c4-1bd4-4a64-972a-75c682a1a7b6", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.844113Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/get-branch", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 892 + }, + { + "id": "017889ac-873b-466b-96f8-0e2788a97268", + "name": "Get a branch", + "request": { + "urlPath": "/repos/jn39ief7ykgau0ikbcw1t692d4z837xlp3rl9yw3n25relxd8o7seok9ztumx403i1hstiv15ofvbs3xn15ny4wjf05ycqbt0/oa7n2ve2701vt7gu2f5xndo2hopsuaau9ra2wlq5w5yorcdpx2uc0uq0n8gihfqswavb9wfvbxrgd9q7w6nnqummt1mkv16iwz1h6nvidwt6cecnut7m2rs7bbi7o1g9p6xti0vbkqyrbmcagdv3khrpty6a7e1xgzymafjq24q2/branches/2bi60piub98hn2tm3dt72vuobizvychqo6dcyvw7b5j4gtii2qpgnw316brxdz8ec8sux7lsu4hfb4oetmwf895byhf6p358rgcr0axyhm870mqopn1ngvkws8u2ct02tj00l8w3vwsjro0fho", + "method": "GET" + }, + "response": { + "status": 200, + "body": "{\n \"protected\" : false,\n \"_links\" : {\n \"self\" : \"j8wuutnausea0m4dr8xnqfzxdnf0c7dqmfj1gey008qhd8gwpwgamejr4tn5gdbrt8jqjf0bhpox5bcdn2jh26gv7r1f8q2wm1hrs4khjxahub\",\n \"html\" : \"r8pyhdptysi374ktdbneyda0napxnoasfku2y2edlco1bp12jcou3x1j96hps29m0r27wqv4i2ann9qvo738rx0vv967vxxurawn4oyiivwvdprzd323o2xvx3kkuernjccry0l1oacnqg\"\n },\n \"required_approving_review_count\" : 1,\n \"commit\" : {\n \"committer\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Dr. Jeannie Bechtelar\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"4mcqqq6p151t14qir44157tj4fgu9xryypawkagxismpt2jhwwyko9cz9f9ufcmsnj5dm8kb8h52f4r8birdidm11eyx21l9smdnxu\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"stats\" : {\n \"total\" : 7014247757638524979,\n \"additions\" : 3750523263891272213,\n \"deletions\" : 637569723474846140\n },\n \"author\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Kirsten McKenzie\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"x4pebgq8\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"html_url\" : \"https://github.com/octocat/Hello-World/commit/6dcb09b5b57875f334f61aebed695e2e4193db5e\",\n \"comments_url\" : \"https://api.github.com/repos/octocat/Hello-World/commits/6dcb09b5b57875f334f61aebed695e2e4193db5e/comments\",\n \"commit\" : {\n \"comment_count\" : 0,\n \"committer\" : {\n \"date\" : \"\\\"2007-10-29T02:42:39.000-07:00\\\"\",\n \"name\" : \"\\\"Chris Wanstrath\\\"\",\n \"email\" : \"\\\"chris@ozmm.org\\\"\"\n },\n \"author\" : {\n \"date\" : \"\\\"2007-10-29T02:42:39.000-07:00\\\"\",\n \"name\" : \"\\\"Chris Wanstrath\\\"\",\n \"email\" : \"\\\"chris@ozmm.org\\\"\"\n },\n \"tree\" : {\n \"sha\" : \"827efc6d56897b048c772eb4087f854f46256132\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/tree/827efc6d56897b048c772eb4087f854f46256132\"\n },\n \"message\" : \"Fix all the bugs\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/commits/6dcb09b5b57875f334f61aebed695e2e4193db5e\",\n \"verification\" : {\n \"reason\" : \"2bhly4o3rl84ab247dkgr0zzphcojznar3b0qpl\",\n \"payload\" : \"akq5byvmppst5wrfbtqinhc3ifxe3aj2bzsxie91oa9cxsjth04fmmvrgsor6hby7vzodeaq7srf7ygegtlt037vkhrlpwiih7jpfoii2x0m0vxrwieelrdr6p6wcj09fgcghzeo0737fqgjx5pcyut8yahcczcs\",\n \"signature\" : \"pgufxq7581wncv6lvryg334q1jh64hgd5yt82nu60xa6qfi3b2u80b6u30nhw5yubi8wb7gv6516dnzd44pavj19v7hng6vjohgk915g5c6vzrct9krd5xtd5rijgqdnf\",\n \"verified\" : true\n }\n },\n \"files\" : [ {\n \"patch\" : \"3oh8jkssz1ayne6lpwa3x8q3o1j2cv9cnb1gunjp42o0ihg4e1xgrq4f85cb7lcgyk40qc13pmbl2vtkjml9jz5fm1i7u43jvyu6kr7mtcijho4j1rp\",\n \"filename\" : \"Dione Heller\",\n \"additions\" : 7011088404473149024,\n \"deletions\" : 6489326068764890067,\n \"changes\" : 98823984756573368,\n \"previous_filename\" : \"\\\"subdir/before_name.txt\\\"\",\n \"blob_url\" : \"https://web.example.mocklab.io/334907\",\n \"sha\" : \"\\\"1e8e60ce9733d5283f7836fa602b6365a66b2567\\\"\",\n \"raw_url\" : \"https://web.example.mocklab.io/720733\",\n \"contents_url\" : \"\\\"https://api.github.com/repos/owner-3d68404b07d25daeb2d4a6bf/AAA_Public_Repo/contents/geometry.js?ref=c3956841a7cb7e8ba4a6fd923568d86958f01573\\\"\",\n \"status\" : \"vtcjjm7hzbawoulej14711yg23vfn9p3v5z0d2rj402zgizm2uh32d15lr3xbhp7iyzryzi8sf1x2c5m6rdyj1ej1agcfiz4kncgjyxv9rpuu8853bkdvvw8bwukgvj3pm2372o8m28msfg81pada90z4b7pdhn3hdec77m1fadx5kk3gmw8lrpy\"\n }, {\n \"patch\" : \"0ff7hfl5bm\",\n \"filename\" : \"Nenita Reinger\",\n \"additions\" : 8330259281228577039,\n \"deletions\" : 4345504773991681334,\n \"changes\" : 668314317926470076,\n \"previous_filename\" : \"\\\"subdir/before_name.txt\\\"\",\n \"blob_url\" : \"https://web.example.mocklab.io/550582\",\n \"sha\" : \"\\\"1e8e60ce9733d5283f7836fa602b6365a66b2567\\\"\",\n \"raw_url\" : \"https://web.example.mocklab.io/081374\",\n \"contents_url\" : \"\\\"https://api.github.com/repos/owner-3d68404b07d25daeb2d4a6bf/AAA_Public_Repo/contents/geometry.js?ref=c3956841a7cb7e8ba4a6fd923568d86958f01573\\\"\",\n \"status\" : \"0wuwd2fo9t597bieh6tjt8l0s37e7ylhxg5cp32dci2ch0fb6kz484ojfa604zm9r03hg0f7v0rytuweu3ft9342zfoe0fkhzsmy5ujzxui5r5dk7869901wo4tosn025ct\"\n }, {\n \"patch\" : \"m6qni31cuono1f9w65x0lzavjub0gzaxjrbtxiotw3f734efnw4bokqfuy3mr5ltllyy\",\n \"filename\" : \"Clark Russel\",\n \"additions\" : 8454093489805222701,\n \"deletions\" : 1927203680724457291,\n \"changes\" : 3044575834975186929,\n \"previous_filename\" : \"\\\"subdir/before_name.txt\\\"\",\n \"blob_url\" : \"https://web.example.mocklab.io/030555\",\n \"sha\" : \"\\\"1e8e60ce9733d5283f7836fa602b6365a66b2567\\\"\",\n \"raw_url\" : \"https://web.example.mocklab.io/830855\",\n \"contents_url\" : \"\\\"https://api.github.com/repos/owner-3d68404b07d25daeb2d4a6bf/AAA_Public_Repo/contents/geometry.js?ref=c3956841a7cb7e8ba4a6fd923568d86958f01573\\\"\",\n \"status\" : \"4yz39mwbkrkndnhdj0iwfpb1b6w7kokt2pjnx4pst2wjsx6k52jvd7h8tidtmtfp1qeer3ebakbwv232a0ty8zpm43kl6uclmy4j0v6epp7okbpq8mgeb7e08x\"\n }, {\n \"patch\" : \"luznqyywt75bdlqhpnepz8pedlnqiow8wg0imn31l5sntup8lfk1951yj47944yg6rb0av4pem27tbjeyeiu0939n7xvlzylrrhyaefi7ccwb0y79sw16ptdamdzok1ecslqn5y890usqu1etp0tdnp4jlatv0hw5udafbgtvac5p0x4n9\",\n \"filename\" : \"Miss Isabel Gorczany\",\n \"additions\" : 711221611791056637,\n \"deletions\" : 9214270998582698981,\n \"changes\" : 4717394518569313108,\n \"previous_filename\" : \"\\\"subdir/before_name.txt\\\"\",\n \"blob_url\" : \"https://web.example.mocklab.io/675638\",\n \"sha\" : \"\\\"1e8e60ce9733d5283f7836fa602b6365a66b2567\\\"\",\n \"raw_url\" : \"https://web.example.mocklab.io/385097\",\n \"contents_url\" : \"\\\"https://api.github.com/repos/owner-3d68404b07d25daeb2d4a6bf/AAA_Public_Repo/contents/geometry.js?ref=c3956841a7cb7e8ba4a6fd923568d86958f01573\\\"\",\n \"status\" : \"6sbozicq1x7yfbf7rqbsw79zl25qtk0wg3oufvp4zubqy5jg3vsxh405kqgiwgh9q33btl32qmm75zexsran1duol374sktkwhgntiqjud4rrgmzojsiba2t5hgoxrxiq8nm8xho3j538djt9w6ewwlz4ruakilis2lop\"\n }, {\n \"patch\" : \"4fh68xyqyypkt7wv40dmjee\",\n \"filename\" : \"Andrew O'Connell IV\",\n \"additions\" : 769822503725854054,\n \"deletions\" : 572063452133712850,\n \"changes\" : 4337451888396267613,\n \"previous_filename\" : \"\\\"subdir/before_name.txt\\\"\",\n \"blob_url\" : \"https://web.example.mocklab.io/593345\",\n \"sha\" : \"\\\"1e8e60ce9733d5283f7836fa602b6365a66b2567\\\"\",\n \"raw_url\" : \"https://web.example.mocklab.io/007402\",\n \"contents_url\" : \"\\\"https://api.github.com/repos/owner-3d68404b07d25daeb2d4a6bf/AAA_Public_Repo/contents/geometry.js?ref=c3956841a7cb7e8ba4a6fd923568d86958f01573\\\"\",\n \"status\" : \"34jwgztnk6es8qybv57yca1sarhqztsxsqx97mtc8jii2oemqszrxlwl3gdrw14p0s6y4podrlj24e0xor6mgpdz11jfkynf6z3c84wultsgt8q8vbecjj0vod0z9yd8viz4z53tfzdf66lw\"\n }, {\n \"patch\" : \"okpl2uy01u77eorfb5t5qk6j14fz2vol21qm6bmzg7kpdg7ffw2yfn0cyg1gg6yvvfcw0sonpeejnz8x62itrtcg3nsxv5qtkia6gw2bfjlykwgxkgjbxy9ujjhlsxkrqr8ck4a\",\n \"filename\" : \"Cody Kris\",\n \"additions\" : 3365819188296600041,\n \"deletions\" : 6985875533613368451,\n \"changes\" : 5036055947531992240,\n \"previous_filename\" : \"\\\"subdir/before_name.txt\\\"\",\n \"blob_url\" : \"https://web.example.mocklab.io/399163\",\n \"sha\" : \"\\\"1e8e60ce9733d5283f7836fa602b6365a66b2567\\\"\",\n \"raw_url\" : \"https://web.example.mocklab.io/604196\",\n \"contents_url\" : \"\\\"https://api.github.com/repos/owner-3d68404b07d25daeb2d4a6bf/AAA_Public_Repo/contents/geometry.js?ref=c3956841a7cb7e8ba4a6fd923568d86958f01573\\\"\",\n \"status\" : \"2rofi17unmia05ocre7vbaoxc80ioceime4a2hg5zyadhx3egeiqexlop40qpulp45n6xo0gbzjpjds41tn0qxbf4vnjo9ow99u6z6ptuicnolhvmz5kvmjcs700cj9w0xkowbmu0n67tt0y8zcwhwhrmyk0futvmf2zvn\"\n } ],\n \"sha\" : \"6dcb09b5b57875f334f61aebed695e2e4193db5e\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/commits/6dcb09b5b57875f334f61aebed695e2e4193db5e\",\n \"node_id\" : \"MDY6Q29tbWl0NmRjYjA5YjViNTc4NzVmMzM0ZjYxYWViZWQ2OTVlMmU0MTkzZGI1ZQ==\",\n \"parents\" : [ {\n \"html_url\" : \"https://github.com/octocat/Hello-World/commit/7638417db6d59f3c431d3e1f261cc637155684cd\",\n \"sha\" : \"7638417db6d59f3c431d3e1f261cc637155684cd\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/commits/7638417db6d59f3c431d3e1f261cc637155684cd\"\n }, {\n \"html_url\" : \"https://github.com/octocat/Hello-World/commit/7638417db6d59f3c431d3e1f261cc637155684cd\",\n \"sha\" : \"7638417db6d59f3c431d3e1f261cc637155684cd\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/commits/7638417db6d59f3c431d3e1f261cc637155684cd\"\n }, {\n \"html_url\" : \"https://github.com/octocat/Hello-World/commit/7638417db6d59f3c431d3e1f261cc637155684cd\",\n \"sha\" : \"7638417db6d59f3c431d3e1f261cc637155684cd\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/commits/7638417db6d59f3c431d3e1f261cc637155684cd\"\n }, {\n \"html_url\" : \"https://github.com/octocat/Hello-World/commit/7638417db6d59f3c431d3e1f261cc637155684cd\",\n \"sha\" : \"7638417db6d59f3c431d3e1f261cc637155684cd\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/commits/7638417db6d59f3c431d3e1f261cc637155684cd\"\n }, {\n \"html_url\" : \"https://github.com/octocat/Hello-World/commit/7638417db6d59f3c431d3e1f261cc637155684cd\",\n \"sha\" : \"7638417db6d59f3c431d3e1f261cc637155684cd\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/commits/7638417db6d59f3c431d3e1f261cc637155684cd\"\n }, {\n \"html_url\" : \"https://github.com/octocat/Hello-World/commit/7638417db6d59f3c431d3e1f261cc637155684cd\",\n \"sha\" : \"7638417db6d59f3c431d3e1f261cc637155684cd\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/commits/7638417db6d59f3c431d3e1f261cc637155684cd\"\n }, {\n \"html_url\" : \"https://github.com/octocat/Hello-World/commit/7638417db6d59f3c431d3e1f261cc637155684cd\",\n \"sha\" : \"7638417db6d59f3c431d3e1f261cc637155684cd\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/commits/7638417db6d59f3c431d3e1f261cc637155684cd\"\n }, {\n \"html_url\" : \"https://github.com/octocat/Hello-World/commit/7638417db6d59f3c431d3e1f261cc637155684cd\",\n \"sha\" : \"7638417db6d59f3c431d3e1f261cc637155684cd\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/commits/7638417db6d59f3c431d3e1f261cc637155684cd\"\n } ]\n },\n \"name\" : \"Dr. Bryant Terry\",\n \"pattern\" : \"\\\"mas*\\\"\",\n \"protection\" : {\n \"required_pull_request_reviews\" : {\n \"dismissal_restrictions\" : {\n \"teams_url\" : \"\\\"https://api.github.com/repos/the-org/an-org-repo/branches/master/protection/dismissal_restrictions/teams\\\"\",\n \"teams\" : [ {\n \"parent\" : {\n \"repositories_url\" : \"https://api.github.com/organizations/1/team/1/repos\",\n \"members_url\" : \"https://api.github.com/organizations/1/team/1/members{/member}\",\n \"html_url\" : \"https://github.com/orgs/rails/teams/core\",\n \"name\" : \"Justice League\",\n \"description\" : \"A great team.\",\n \"permission\" : \"admin\",\n \"id\" : 1,\n \"slug\" : \"justice-league\",\n \"url\" : \"https://api.github.com/organizations/1/team/1\",\n \"node_id\" : \"MDQ6VGVhbTE=\"\n },\n \"repositories_url\" : \"https://web.example.mocklab.io/239340\",\n \"members_url\" : \"https://web.example.mocklab.io/994505\",\n \"description\" : \"Omnis necessitatibus quia doloribus. Nihil earum autem saepe. Numquam sequi ut. Illo voluptas ut facilis qui sit officiis doloribus.\",\n \"privacy\" : \"9rt79nzewvhxbqxjjicolq2i6b47g8bhog4x0rkib2g6nnjzu0k8yvyrsri78z4bsohtym5tgzmyf0bnspvgso90a0oj7bv11lwetnetckez55n99ni34e5toda3k95s7lok7nrrxsg7jpwyypgt1xwpe81sgwyk3e1bh5obtapimg2utnxms0c55flhml6\",\n \"permission\" : \"26ypo6o3coz1ppa4gp6ssf4nzpmri8h41gdearrfrpb\",\n \"url\" : \"https://web.example.mocklab.io/542383\",\n \"permissions\" : {\n \"pull\" : true,\n \"maintain\" : false,\n \"admin\" : true,\n \"triage\" : true,\n \"push\" : true\n },\n \"html_url\" : \"https://github.com/orgs/rails/teams/core\",\n \"name\" : \"Elisabeth Nienow\",\n \"id\" : 7572594584245775685,\n \"slug\" : \"oyji3bl9n5hc5e731azzich1y9xh2n7iz3zd84g50jo6noavlzbajsdiicuka89rh50213n0p0ojfclm1eilqqzk1bfc7lqtefqxsjh2p\",\n \"node_id\" : \"8qvl\"\n }, {\n \"parent\" : {\n \"repositories_url\" : \"https://api.github.com/organizations/1/team/1/repos\",\n \"members_url\" : \"https://api.github.com/organizations/1/team/1/members{/member}\",\n \"html_url\" : \"https://github.com/orgs/rails/teams/core\",\n \"name\" : \"Justice League\",\n \"description\" : \"A great team.\",\n \"permission\" : \"admin\",\n \"id\" : 1,\n \"slug\" : \"justice-league\",\n \"url\" : \"https://api.github.com/organizations/1/team/1\",\n \"node_id\" : \"MDQ6VGVhbTE=\"\n },\n \"repositories_url\" : \"https://web.example.mocklab.io/732424\",\n \"members_url\" : \"https://web.example.mocklab.io/768057\",\n \"description\" : \"Qui minus earum ratione blanditiis et. Ea pariatur cum nihil at. Id nam commodi ab laboriosam repellat.\",\n \"privacy\" : \"x5fiejoa4cmuw4gfhqyvr8eyaumcn72zyvvmcmmj5m7ar22s57vgevavak2fofniqfvpi22h6uexukau2nj4n0tzgz9vrl84mhwlj6ifr9j3y0\",\n \"permission\" : \"vdhwhrc3nvijv6f1fb4symmaztpq7j7g2zyqqyiaotg9f18yjef537a0s0zseie5gs\",\n \"url\" : \"https://web.example.mocklab.io/632285\",\n \"permissions\" : {\n \"pull\" : false,\n \"maintain\" : true,\n \"admin\" : true,\n \"triage\" : true,\n \"push\" : true\n },\n \"html_url\" : \"https://github.com/orgs/rails/teams/core\",\n \"name\" : \"Gaston Fadel\",\n \"id\" : 1921889972726968767,\n \"slug\" : \"z2thbhtud8p2syidrzwfy55pon65btdf212kekuk4sx4fyrfr98ildysp7sfbu09jrdz9y8k0c1fedbm5j8792ipj8c8mld60fkibbrjbk6nthdqmrmivxm0cniornuvymlipoh4ffugdyipqv5uilyexgybqfvnp0ipmkr02y\",\n \"node_id\" : \"if2v\"\n } ],\n \"users_url\" : \"\\\"https://api.github.com/repos/the-org/an-org-repo/branches/master/protection/dismissal_restrictions/users\\\"\",\n \"url\" : \"\\\"https://api.github.com/repos/the-org/an-org-repo/branches/master/protection/dismissal_restrictions\\\"\",\n \"users\" : [ {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Jeffie Willms\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"5oabvmkbh5jd6uq9jnrqdhlrlwkm1p3g7nnyx9cuzbd2vw5uy1h1rwunxkfyed44185zgam8nim20woqgja24zfzy22c6alcctmjkjn2x8d2wqtwwuez41wdpxurif4lbovbp6t6ndammu2dbi2dby9c02f1i\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n }, {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Bok Fisher\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"4ko1hu118mmow67emt8uh6i2e6vma0pvmwmaji7yw3njdmnkan1cd8yrl2aov627fdo2tfnpnbo8swfmak8t32uk936xpu4a3wkodm0km6mq9ys5rxj1pwpfzl1azqibi0rbeke1g3jf1rgjohvfz602b39mxg5fb21m9zunib85ny6vadggnsmtkdg\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n }, {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Stanley Kris\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"x232mptvgsupyz7wfe60c1cgdhz15j4a1eraubasf2tm9fjxi9mx9e1mlbqfiso2knw5qcst3cdl1fx6rd1dl8t12om8yb5l8wuhv7cwog8piip7233afyhljc5cd7utvh5m4u9h95tnk1\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n }, {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Edmundo Tromp\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"y6gcv0qw6v3zfff9f024jyfhijnccwhjdllcunezolhy03oasbbb9lyhw5s3e4k6sw32dfegsvxgxcpwvzzmomr631ozn31vgn97aqc2yqb3bmzpuxpu9p5oozh06lka\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n }, {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Miss Joya Kirlin\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"kgn2rh7kh3ulnl9z3lguk17y4vaguqnbs5cmkmhj38nunh3dtr6hbt56wzyzy454t5ut563qqvyxyu2jxpfioo5cjo8uh12c62u9skirbedtewelsaxd153pvd600ayp89ztktpmucqqd04q1k5u9orkd86lz2i3ai3h9bo8ucfw2x2zt9nek66no79lyll4\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n } ]\n },\n \"required_approving_review_count\" : 2,\n \"require_code_owner_reviews\" : true,\n \"dismiss_stale_reviews\" : true,\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/branches/master/protection/dismissal_restrictions\"\n },\n \"required_signatures\" : {\n \"enabled\" : true,\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/branches/master/protection/required_signatures\"\n },\n \"required_status_checks\" : {\n \"enforcement_level\" : \"zos1vtogi2cxff\",\n \"contexts_url\" : \"https://web.example.mocklab.io/925952\",\n \"contexts\" : [ \"s5z4n5rypf0epfg8stxe5v61aen91nwv9cxv09kmh1vwza0nkmca0rkdiahvp7isl5rciutrmeg2ypyklb15xdpwohedkj1mtzhv3af4zuiftiefsza14d51pyqxmebibroog3i10cmqm84yckl88z58sj2li\", \"l08ct024yuhw12vystsrhhfmtb80tamot119cxce4dtqz3d5o8fj4ve4gmi87ylqqfr809nyhlqsnjlu3twjuhb1010aag3rwc0yef7e0f8m6wztukfcwt2iff49qct5j2ifpp44p3c8jw62vq166t5qzgc6y63q\" ],\n \"strict\" : true,\n \"url\" : \"https://web.example.mocklab.io/235506\"\n },\n \"required_linear_history\" : {\n \"enabled\" : false\n },\n \"restrictions\" : {\n \"teams_url\" : \"https://web.example.mocklab.io/900342\",\n \"teams\" : [ {\n \"parent\" : \"1jmsx89kypk6xvrmoeoe3u1usn94eob633sylpuhr0p4pzuwl9ge6i67zz4uepmlfaj1jcov6q7ndlbb20adhtbef9z06ui71b390xn0j5ghr67yxlobcgyezlqfokik\",\n \"repositories_url\" : \"https://web.example.mocklab.io/195034\",\n \"members_url\" : \"https://web.example.mocklab.io/901460\",\n \"html_url\" : \"https://web.example.mocklab.io/802676\",\n \"name\" : \"Jeanie Ritchie\",\n \"description\" : \"Impedit corporis eos eius et quasi. Dolore sunt dolorum. Beatae dicta voluptas. Facere exercitationem suscipit omnis et labore magnam.\",\n \"privacy\" : \"477l1k3qc34j044g4ffemz2cun3ns4szvqi3qo9y16p4jyg18g7s6f3wep9\",\n \"permission\" : \"a1tw4r5vfznywun6fc8p79t2cooirznwobfq7c\",\n \"id\" : 6383041816625703257,\n \"slug\" : \"inv2a03ylc8uwnmrd2rh3po6nlkdlexwtcmf0an27qtfiilug68mildu6vbsl4f9g86imb777h7vqumfjtfkcwqkye51gkwy\",\n \"url\" : \"https://web.example.mocklab.io/349391\",\n \"node_id\" : \"6qby\"\n }, {\n \"parent\" : \"xe483b55hqgvjpflz8jkf4upzr71ylmagnby3qhhi040s8optg13bc4041s6kkljfeyz45msdt2magmhmwa8m7kolpfap3kef7tppx7a1pkpfiio6vggrp6smyhle92bjqzngx46jjz1u5jvsazt88nd2fm3zaep0vdpkpxhfk3eua5uge5tgm6j69lh0vvll\",\n \"repositories_url\" : \"https://web.example.mocklab.io/765532\",\n \"members_url\" : \"https://web.example.mocklab.io/519479\",\n \"html_url\" : \"https://web.example.mocklab.io/730831\",\n \"name\" : \"Toby Hettinger\",\n \"description\" : \"Enim porro accusamus esse ipsa alias earum. Enim deleniti incidunt quos impedit maiores voluptas. Voluptas non cumque et est laboriosam ipsa.\",\n \"privacy\" : \"iwustpruqxfm5h0a7lrnvdv8j5ho8zb97cgfmunu1586m4gl53wzqv7ppa1yeatwy51kbsxqhsxjbdjg7yt5etdz453kseolhmngna6ghbo2dwrkbtqhbtjb5lmln5hgesoavymyla8nr46rbgjojl6gx3m6h8o9n9o066l354miav97h01m\",\n \"permission\" : \"1nz6qpy0xunnnmryiktljkq0tl9r0zx1qhlpd8w\",\n \"id\" : 1457359043638078987,\n \"slug\" : \"saxdal5g3bhb61acsis19h60u4mnozcz98mmgvu3gzohkwsh9jgbtfzksikxepybndtyvzfkjn75qdm5554zt2gc9xgjgo5cel3nt5f04kx6aqcp0d894hv4fsp4cwvznmozseu3jhy79iygfay97g31t5gvjln7la7oogf3d34\",\n \"url\" : \"https://web.example.mocklab.io/566059\",\n \"node_id\" : \"e66s\"\n }, {\n \"parent\" : \"fudyfv81k5edc1zh4w86tjac629dnet40b54uxygjva7stv47vqcfbhpqoqb5ixrv2278h74x51z1d77y279esu2ijbmqnc6vi4rdcxmgyalrglg4q893m9ad78dpxdasho92\",\n \"repositories_url\" : \"https://web.example.mocklab.io/827948\",\n \"members_url\" : \"https://web.example.mocklab.io/708778\",\n \"html_url\" : \"https://web.example.mocklab.io/261701\",\n \"name\" : \"Milly Doyle MD\",\n \"description\" : \"Consequuntur cumque non ipsa sequi qui eaque. Ut ullam corrupti aut numquam. Vel cum aut non qui. Quis soluta ut.\",\n \"privacy\" : \"0duj6h267hytg5ooukgdty4e4i5pphoj1o1zq0typ4og1d9gqerszp6otq\",\n \"permission\" : \"p9dbm96rdw0zay0jrsl7iti895dcks1oosddi7ddibaoxbsjebb4chsgug1zqyoecdur7ejtsqydm6munbxvhsm0voyjrs704\",\n \"id\" : 1610594302915982864,\n \"slug\" : \"o46wozwlfifiqeuzsn8w5lvdrix8slylj0giyzi1oufc4lu7ijjwi8l0uzwmu5f2koixztiob5176btjirp7gmjcy2ishxo3irp15gif1l4l3megjdimt3cj7bkil9qhtkx72pdq1cmwn81eezqjaoob0q2lmqznych1tn48wb1e2deoue8\",\n \"url\" : \"https://web.example.mocklab.io/207161\",\n \"node_id\" : \"2z9w\"\n }, {\n \"parent\" : \"5mxf6u8vh7v5f0y6nflxb303ug9dhuf4z98lk4czls1u5lfaz1x184\",\n \"repositories_url\" : \"https://web.example.mocklab.io/044895\",\n \"members_url\" : \"https://web.example.mocklab.io/144084\",\n \"html_url\" : \"https://web.example.mocklab.io/478042\",\n \"name\" : \"Thresa Welch\",\n \"description\" : \"Odio rem fugiat aperiam exercitationem sed. Debitis et et. Quia consequuntur soluta mollitia.\",\n \"privacy\" : \"l6jxzz3e8gnnz4kr6qebgo49xrwy9i9efb7009godsd8ifrrxglbvn73q\",\n \"permission\" : \"ajpm5bsovy4hwv9lmfadaah5ylryh3zo8qlltlvwfz8quj1rhvujm8pvhgy2dvnodoeqyg1tatmipdhj8xcb512cdq7e9fkpnna4wviokkgruf4ejtn3qv3p27oej2qf35v2pqdxxr07w3nre6uud8t282f\",\n \"id\" : 1693879322248712440,\n \"slug\" : \"rpyqe7j85ae6imn5fzobec5zcxynkvsobuql9us9g7dnqc9zt8hn6ov8aorwhxkyl\",\n \"url\" : \"https://web.example.mocklab.io/152662\",\n \"node_id\" : \"s4n8\"\n }, {\n \"parent\" : \"pzfzzikvlcr3s8wmp9qq30mwj1bm22cct0dgd58j19sgjm1vh6g4yvcjope038hpw2jf5116yeupo18x9hjjso6c8cnd9uvwmr8e2txtq8guky633ebb2ccuuejkw7qf4x94de6cerbkzo\",\n \"repositories_url\" : \"https://web.example.mocklab.io/609164\",\n \"members_url\" : \"https://web.example.mocklab.io/702920\",\n \"html_url\" : \"https://web.example.mocklab.io/512030\",\n \"name\" : \"Dwain Kohler V\",\n \"description\" : \"Consequuntur debitis ipsum nihil. Illum et cumque et. Quia dolor et veniam voluptas voluptas fugiat ad. Eaque natus consequatur dicta.\",\n \"privacy\" : \"eem2khvoh5j22xk4qwvnuascxqlybbfdsd\",\n \"permission\" : \"90uer4h5zqmsgkjkd373cnlnmmd1lfrrur5cebnix6qbr3uwsmlyery7kbz1538709v1sqcx96egiy9conpx0cwj5azxv6tcc12z0bov0dgs3073qov0azmnx7juhit69jgn6gt3t8q3w7k5ahf25mcfb1pgp9ltthqhivddeeqp0udm\",\n \"id\" : 4888414689273691255,\n \"slug\" : \"n88e5mi9v7d1nbdbk6eezexwspswc91kkkfn5jqlrrtsla9nqgbeqirou111n7igfmp6vvjx62wc9x8ssfeg4qpqbwohyb4w1eq5eku7kcg5rux4js2ddpd41h6x1b6lan2gaziy7wwpsbs6q2v8l9e291ppglw55xk1go7\",\n \"url\" : \"https://web.example.mocklab.io/680717\",\n \"node_id\" : \"3t4a\"\n } ],\n \"users_url\" : \"https://web.example.mocklab.io/026695\",\n \"apps_url\" : \"https://web.example.mocklab.io/817525\",\n \"url\" : \"https://web.example.mocklab.io/453980\",\n \"users\" : [ {\n \"gists_url\" : \"https://web.example.mocklab.io/124079\",\n \"repos_url\" : \"https://web.example.mocklab.io/738528\",\n \"following_url\" : \"https://web.example.mocklab.io/925028\",\n \"starred_url\" : \"https://web.example.mocklab.io/401025\",\n \"followers_url\" : \"https://web.example.mocklab.io/679612\",\n \"login\" : \"6mak5xlzbvmeyp24awzu5ho4j0bx2so5f1uzvdqzl5g2t3dtaym1dxtocmvhu02m0ys3ww5s5ra7\",\n \"type\" : \"6m5fq8ingjrq141lwmsparbdhbmkkfst1neo8pkegkh2b4p6plrtewp26n2jfoqljkt37q53jzikfr2v8ayxdw04d6teupnrnm05bp7j20xymg7n7q3wnvp3q2tjdnu6yppg\",\n \"url\" : \"https://web.example.mocklab.io/672426\",\n \"subscriptions_url\" : \"https://web.example.mocklab.io/104923\",\n \"received_events_url\" : \"https://web.example.mocklab.io/583270\",\n \"avatar_url\" : \"https://s3.amazonaws.com/uifaces/faces/twitter/uxpiper/128.jpg\",\n \"events_url\" : \"https://web.example.mocklab.io/855191\",\n \"html_url\" : \"https://web.example.mocklab.io/677787\",\n \"site_admin\" : false,\n \"id\" : 2926553570870413708,\n \"gravatar_id\" : \"8emr\",\n \"node_id\" : \"4lj3\",\n \"organizations_url\" : \"https://web.example.mocklab.io/208251\"\n }, {\n \"gists_url\" : \"https://web.example.mocklab.io/730883\",\n \"repos_url\" : \"https://web.example.mocklab.io/050953\",\n \"following_url\" : \"https://web.example.mocklab.io/265925\",\n \"starred_url\" : \"https://web.example.mocklab.io/706150\",\n \"followers_url\" : \"https://web.example.mocklab.io/947711\",\n \"login\" : \"8q55vscag\",\n \"type\" : \"cd74hzw3lbqd40v8hwwxfr5s21e6l6ycq0su6xl192oj5bmdjkn9by7eigimrd5c27pir5vxuqvc1nj8p3kj7p7wmi1212xvqef668e22cnxfmati8rt2pptqsvpwh4nked3zzesnf9i4dqodwg8d7bh2hdxglrf2afs\",\n \"url\" : \"https://web.example.mocklab.io/971463\",\n \"subscriptions_url\" : \"https://web.example.mocklab.io/299183\",\n \"received_events_url\" : \"https://web.example.mocklab.io/504800\",\n \"avatar_url\" : \"https://s3.amazonaws.com/uifaces/faces/twitter/divya/128.jpg\",\n \"events_url\" : \"https://web.example.mocklab.io/300430\",\n \"html_url\" : \"https://web.example.mocklab.io/006916\",\n \"site_admin\" : true,\n \"id\" : 7183380732404816135,\n \"gravatar_id\" : \"2v26\",\n \"node_id\" : \"f928\",\n \"organizations_url\" : \"https://web.example.mocklab.io/861235\"\n }, {\n \"gists_url\" : \"https://web.example.mocklab.io/271158\",\n \"repos_url\" : \"https://web.example.mocklab.io/471257\",\n \"following_url\" : \"https://web.example.mocklab.io/855132\",\n \"starred_url\" : \"https://web.example.mocklab.io/540634\",\n \"followers_url\" : \"https://web.example.mocklab.io/775737\",\n \"login\" : \"kbujfgpfj408yz248dp1s1ks1z9vqoo5mvkks9ujumhyda9u56cm3cvftrxdqcjnc\",\n \"type\" : \"o47rwu2ur9myzdfvsm8cvkgbyi4l0tqy92e5yxamru1qio1vsd9mncmtyjye2xoud32rt8sng7jxbuu5ex2wps1idplhvaarybpwd5k9n8blm7aajlr0ji3vk58ucr91om\",\n \"url\" : \"https://web.example.mocklab.io/323721\",\n \"subscriptions_url\" : \"https://web.example.mocklab.io/475979\",\n \"received_events_url\" : \"https://web.example.mocklab.io/877343\",\n \"avatar_url\" : \"https://s3.amazonaws.com/uifaces/faces/twitter/kolmarlopez/128.jpg\",\n \"events_url\" : \"https://web.example.mocklab.io/325673\",\n \"html_url\" : \"https://web.example.mocklab.io/832131\",\n \"site_admin\" : true,\n \"id\" : 8538387011113310879,\n \"gravatar_id\" : \"56af\",\n \"node_id\" : \"r5uy\",\n \"organizations_url\" : \"https://web.example.mocklab.io/107035\"\n }, {\n \"gists_url\" : \"https://web.example.mocklab.io/378227\",\n \"repos_url\" : \"https://web.example.mocklab.io/755673\",\n \"following_url\" : \"https://web.example.mocklab.io/115224\",\n \"starred_url\" : \"https://web.example.mocklab.io/071087\",\n \"followers_url\" : \"https://web.example.mocklab.io/656611\",\n \"login\" : \"v79ok0izxp2zciqfbzcsbezk4nxc6vi09m36tit0u6pjylpll8pesq3zcts62z5uohqqo9rncf5fv0k4aisuv4cwyavplria03juvb\",\n \"type\" : \"yv189fc7kp4a2t5a0w0mmq78htb03kcwn4ookjb3lezujdscr7dssw1f0o1ar43g1zb4a3mfcg0tsrwq5w80ixzog5i3996iwinedi76653y7ovuftawch4z1jchzndc9vkpepehaq4tynhmgnbbmp1ruk9en0xks0moi2p\",\n \"url\" : \"https://web.example.mocklab.io/804830\",\n \"subscriptions_url\" : \"https://web.example.mocklab.io/619570\",\n \"received_events_url\" : \"https://web.example.mocklab.io/778693\",\n \"avatar_url\" : \"https://s3.amazonaws.com/uifaces/faces/twitter/nessoila/128.jpg\",\n \"events_url\" : \"https://web.example.mocklab.io/298215\",\n \"html_url\" : \"https://web.example.mocklab.io/496980\",\n \"site_admin\" : true,\n \"id\" : 2061459715524319294,\n \"gravatar_id\" : \"2k92\",\n \"node_id\" : \"4ev0\",\n \"organizations_url\" : \"https://web.example.mocklab.io/966230\"\n }, {\n \"gists_url\" : \"https://web.example.mocklab.io/345899\",\n \"repos_url\" : \"https://web.example.mocklab.io/300704\",\n \"following_url\" : \"https://web.example.mocklab.io/792855\",\n \"starred_url\" : \"https://web.example.mocklab.io/436488\",\n \"followers_url\" : \"https://web.example.mocklab.io/191977\",\n \"login\" : \"ln8lyr0x5fmo54w28ddbm7e3t\",\n \"type\" : \"5gu8p7jssf1grxq0rkbzbvs0wfzqqq3f3pk08uwr0fyag0vk13mqqrhwlyex1dsxmayb0wqwz80fs3umal46kkprruc2gtmkappc6ddm8mn1f6nieow2ui4d40y1j87zj\",\n \"url\" : \"https://web.example.mocklab.io/924012\",\n \"subscriptions_url\" : \"https://web.example.mocklab.io/717944\",\n \"received_events_url\" : \"https://web.example.mocklab.io/919213\",\n \"avatar_url\" : \"https://s3.amazonaws.com/uifaces/faces/twitter/canapud/128.jpg\",\n \"events_url\" : \"https://web.example.mocklab.io/325250\",\n \"html_url\" : \"https://web.example.mocklab.io/637660\",\n \"site_admin\" : false,\n \"id\" : 2486751073545528597,\n \"gravatar_id\" : \"ov97\",\n \"node_id\" : \"d537\",\n \"organizations_url\" : \"https://web.example.mocklab.io/394389\"\n } ],\n \"apps\" : [ {\n \"owner\" : {\n \"gists_url\" : \"\\\"https://api.github.com/users/testorg-ea8ec76d71c3af4b/gists{/gist_id}\\\"\",\n \"repos_url\" : \"https://web.example.mocklab.io/171955\",\n \"members_url\" : \"https://web.example.mocklab.io/169980\",\n \"following_url\" : \"\\\"https://api.github.com/users/testorg-ea8ec76d71c3af4b/following{/other_user}\\\"\",\n \"description\" : \"Asperiores ratione dolor totam corporis facilis ipsum. Vero et ad laboriosam qui eveniet. Eaque debitis quis dolor non sapiente. Nisi aperiam quam et quo magni.\",\n \"starred_url\" : \"\\\"https://api.github.com/users/testorg-ea8ec76d71c3af4b/starred{/owner}{/repo}\\\"\",\n \"followers_url\" : \"\\\"https://api.github.com/users/testorg-ea8ec76d71c3af4b/followers\\\"\",\n \"login\" : \"4e5yq1kyr77hwunbnejc1xakmnptkpjw4u1ss0s0ztwe20zl9go5y7rwqvrdm0ycsr4cc5y9qdivi3ug4oqmin41rzyjpc1rnki4ipznapl09zrgkiqpitxfi148h6u998obxnh8e73df1k1p3n5pyl4syljypsuutdhh\",\n \"type\" : \"\\\"Organization\\\"\",\n \"url\" : \"https://web.example.mocklab.io/919899\",\n \"public_members_url\" : \"https://web.example.mocklab.io/720422\",\n \"subscriptions_url\" : \"\\\"https://api.github.com/users/testorg-ea8ec76d71c3af4b/subscriptions\\\"\",\n \"issues_url\" : \"https://web.example.mocklab.io/953630\",\n \"received_events_url\" : \"\\\"https://api.github.com/users/testorg-ea8ec76d71c3af4b/received_events\\\"\",\n \"avatar_url\" : \"https://s3.amazonaws.com/uifaces/faces/twitter/alexivanichkin/128.jpg\",\n \"events_url\" : \"https://web.example.mocklab.io/849032\",\n \"html_url\" : \"\\\"https://github.com/testorg-ea8ec76d71c3af4b\\\"\",\n \"site_admin\" : false,\n \"hooks_url\" : \"https://web.example.mocklab.io/809255\",\n \"id\" : 6377850374115523461,\n \"gravatar_id\" : \"\\\"\\\"\",\n \"node_id\" : \"6s3t\",\n \"organizations_url\" : \"\\\"https://api.github.com/users/testorg-ea8ec76d71c3af4b/orgs\\\"\"\n },\n \"external_url\" : \"https://web.example.mocklab.io/079491\",\n \"updated_at\" : \"2022-05-22T07:14:58.840933Z\",\n \"permissions\" : {\n \"metadata\" : \"u41v811lm8g1czcak11vf4\",\n \"single_file\" : \"e3mx8dxrkj2dx23wn81anes4f6gd364hw3cjuwvxn3zj7unf72ire2mklzlsv91cdlzxzd51iisse\",\n \"contents\" : \"rmlltemdw2ocm0vdx1lgebexv0t5rbwrwdlord5okpc2tunys3v163elvtuscgykbsd118\",\n \"issues\" : \"gui0w8c635bi4dxzpwl\"\n },\n \"html_url\" : \"https://web.example.mocklab.io/335047\",\n \"name\" : \"Numbers Gleason\",\n \"created_at\" : \"ygeha02b27fcddynueriveaikltadsaxullkfpjg9yi54917amea9bvxtkr15079k52a0utvzy3mm5debj22y5f9opil9a050k5d9i8xk1ca8i4uwh2n1xii0n2a8uh8rifwcek144pdhvcxcsukza4w5g89beepjvrgy9l1bopkjduoi4rpo\",\n \"description\" : \"Nesciunt nihil ut consequatur enim adipisci deserunt. Adipisci eum ut dolorum quia tempora et maxime. Et iste qui minima eos commodi et. Autem aut quos et dolorem. Qui deserunt architecto.\",\n \"id\" : 301436780539678179,\n \"events\" : [ \"7cjea2pszgclyf49j2p423tqj86bigbn5rm228co0u5d70s34jel7lvpcrtitepol8uoufx72g3gg2dfeo96nh46zbwaus4ouy2ci970307un8dlp1ba0n7yoc2aatyclyzqtkachyoym4742honfbmhzxb499srckgmd\", \"s81em5g4gwkof5aooto6h9r6zco6rq3rm0aem298ufam9bv5ct8tas8u6ltwhqkk5lao2w08yxqwowwyr8twmn2fd9s7d82mp3ddhx1zh5t94bkb2e48ra0cpu1vxeh3jul4hj5wngmas5f4os1s58mjdbx1cl9i6j0a4ae5m4nui61lxh7k2ag3t0cd5gafj9a37k\", \"raaqs16kndq3dukcmkzidx96q9u14gq1y7d9nbve5zmfjw53rolnr9jabggehr8qqzy18ui3mckx7x1j3lt3oo41lhnrq2e6jtzqnfyvlekm28vgjr4e2v8xrp5ccaohi7skpd7o8w6g9a3eexhk49rreirds2j6fsvb44xk8ptxqexo5het6jyy2llecfq61reop\", \"nm3wuqm0ekuicaj\", \"y165ksfv72e9ki4qnrrrpkw56kisxex3hco12qwc1b9vtzjsqv7cshatdsj3g19qh9rc7wbex6yaql9tlezmvtjwgwls87y74s7a66cvl81q706pcklena\", \"rl6ggcto7v6j7lo2e0xk2igsqdmx0ehn3pd418o17ixomeeoulybi06ni3k714yi3o1w0xegjkq1q2qcziensmouh7e0iakg7ljuno53eui6swiyfsex5eqozswiasi7g5m7jrv5dos3szlzera\", \"nb8uyh6gwi3go7pbd\" ],\n \"slug\" : \"dazfejhnc5p520zm54t76i6adya7ymkfefk7xz87vcpdqd0p3b\",\n \"node_id\" : \"dhy9\"\n }, {\n \"owner\" : {\n \"gists_url\" : \"\\\"https://api.github.com/users/testorg-ea8ec76d71c3af4b/gists{/gist_id}\\\"\",\n \"repos_url\" : \"https://web.example.mocklab.io/713242\",\n \"members_url\" : \"https://web.example.mocklab.io/725631\",\n \"following_url\" : \"\\\"https://api.github.com/users/testorg-ea8ec76d71c3af4b/following{/other_user}\\\"\",\n \"description\" : \"Rerum in quo illo eum. Sed occaecati natus modi cum ut alias. Vitae aspernatur hic nobis dignissimos. Quam adipisci fugit animi nulla sapiente vel.\",\n \"starred_url\" : \"\\\"https://api.github.com/users/testorg-ea8ec76d71c3af4b/starred{/owner}{/repo}\\\"\",\n \"followers_url\" : \"\\\"https://api.github.com/users/testorg-ea8ec76d71c3af4b/followers\\\"\",\n \"login\" : \"7lhjb6vixlj5ld2mcz9p1gdpn7r2dicdmx5ion4vaf2rzze5nnk\",\n \"type\" : \"\\\"Organization\\\"\",\n \"url\" : \"https://web.example.mocklab.io/403945\",\n \"public_members_url\" : \"https://web.example.mocklab.io/247873\",\n \"subscriptions_url\" : \"\\\"https://api.github.com/users/testorg-ea8ec76d71c3af4b/subscriptions\\\"\",\n \"issues_url\" : \"https://web.example.mocklab.io/980412\",\n \"received_events_url\" : \"\\\"https://api.github.com/users/testorg-ea8ec76d71c3af4b/received_events\\\"\",\n \"avatar_url\" : \"https://s3.amazonaws.com/uifaces/faces/twitter/isacosta/128.jpg\",\n \"events_url\" : \"https://web.example.mocklab.io/702385\",\n \"html_url\" : \"\\\"https://github.com/testorg-ea8ec76d71c3af4b\\\"\",\n \"site_admin\" : false,\n \"hooks_url\" : \"https://web.example.mocklab.io/133093\",\n \"id\" : 6781592542592590425,\n \"gravatar_id\" : \"\\\"\\\"\",\n \"node_id\" : \"9471\",\n \"organizations_url\" : \"\\\"https://api.github.com/users/testorg-ea8ec76d71c3af4b/orgs\\\"\"\n },\n \"external_url\" : \"https://web.example.mocklab.io/269546\",\n \"updated_at\" : \"2022-08-02T09:20:58.841979Z\",\n \"permissions\" : {\n \"metadata\" : \"299jc1z9z5ipree34jic8zupyho5m5ocw4xhjlp2r6s7b66cl9fjvudigxhbs1bu618gs7980nqc9m134y6j7h87hbelkm3tblb9zd8xqvqgf2rbd9rqu675wix0slg10nmo0h1pse6bgxtt34dhubfqizjrurv31wycjd4mm9nto5yrzvq02ijd3\",\n \"single_file\" : \"spfkwpl7yx5c03thjh2jny2ht9ywu5z8cq8tehstjzi\",\n \"contents\" : \"b6jk1vwbb9i5ez5q6aa25n2mlf21owif1avb2ipfh26as3j36155z8raw0uqhu144mo8odp\",\n \"issues\" : \"91kng1z0hx2z3gtbm0sxkop9eigsldhv5jjva3ayu\"\n },\n \"html_url\" : \"https://web.example.mocklab.io/471937\",\n \"name\" : \"Amiee Labadie\",\n \"created_at\" : \"zzkpwgzflfv8nhlqh94bzw1zagc7905qz2x2t4o4fpcl\",\n \"description\" : \"Unde et architecto soluta. Vero aut illum tempore eos. Consectetur facere at.\",\n \"id\" : 7903477273384482396,\n \"events\" : [ \"rgziqfiixiozpprpqdap4bhqbe6tbwo8q4znifmrpy180ojnc1pyr36omgagelat96dfrz9atoua8ssng5hrl0k1wewh0lq6fgrffbk76bbr5khna7pexeompcl4sz1cdn3ezx19nxjt3pu45gylbetvwuilg3mz67yosvixtwnfeek56gkuy03\", \"b6hfrl3zsytf24lys4qh6ljbxqzsmfkdcy1y6p0c1msouk4qdyv73z5tqg3sf1mmbig0va493bh1u\", \"6m3up1g7eew0de1bb6vrdzn4ave5slec1b0cgdp\" ],\n \"slug\" : \"fsl6ts65gkt2bb0t4f1knsbf9qepyvksnc2gbgjjdjsej4ygf3lc3ih4aib4un9u9hf8iavh4tg9913jt6351dgfk3rxu187sz3vsi9dip5wz0si2ovmp7emjn1f0qfddqgc6wh52r6b3t0dnxccv55nq\",\n \"node_id\" : \"r6zc\"\n }, {\n \"owner\" : {\n \"gists_url\" : \"\\\"https://api.github.com/users/testorg-ea8ec76d71c3af4b/gists{/gist_id}\\\"\",\n \"repos_url\" : \"https://web.example.mocklab.io/199583\",\n \"members_url\" : \"https://web.example.mocklab.io/334978\",\n \"following_url\" : \"\\\"https://api.github.com/users/testorg-ea8ec76d71c3af4b/following{/other_user}\\\"\",\n \"description\" : \"Perferendis amet ab nobis est. Nam id eos. Praesentium aperiam consequuntur. Beatae sit error. Distinctio nisi consequuntur eos sed sequi possimus ipsam.\",\n \"starred_url\" : \"\\\"https://api.github.com/users/testorg-ea8ec76d71c3af4b/starred{/owner}{/repo}\\\"\",\n \"followers_url\" : \"\\\"https://api.github.com/users/testorg-ea8ec76d71c3af4b/followers\\\"\",\n \"login\" : \"2jv8eqoam0g24idx7ovd22ykvobedoh330jxusco\",\n \"type\" : \"\\\"Organization\\\"\",\n \"url\" : \"https://web.example.mocklab.io/815146\",\n \"public_members_url\" : \"https://web.example.mocklab.io/864463\",\n \"subscriptions_url\" : \"\\\"https://api.github.com/users/testorg-ea8ec76d71c3af4b/subscriptions\\\"\",\n \"issues_url\" : \"https://web.example.mocklab.io/026086\",\n \"received_events_url\" : \"\\\"https://api.github.com/users/testorg-ea8ec76d71c3af4b/received_events\\\"\",\n \"avatar_url\" : \"https://s3.amazonaws.com/uifaces/faces/twitter/charliecwaite/128.jpg\",\n \"events_url\" : \"https://web.example.mocklab.io/915690\",\n \"html_url\" : \"\\\"https://github.com/testorg-ea8ec76d71c3af4b\\\"\",\n \"site_admin\" : false,\n \"hooks_url\" : \"https://web.example.mocklab.io/356239\",\n \"id\" : 1524830048090369868,\n \"gravatar_id\" : \"\\\"\\\"\",\n \"node_id\" : \"0px5\",\n \"organizations_url\" : \"\\\"https://api.github.com/users/testorg-ea8ec76d71c3af4b/orgs\\\"\"\n },\n \"external_url\" : \"https://web.example.mocklab.io/880653\",\n \"updated_at\" : \"2022-07-21T08:53:58.842946Z\",\n \"permissions\" : {\n \"metadata\" : \"lvs7lynspwgg5ub52h7fzrpizm1p0uja5unw6j4a1ziq89aqsml45gy1kck066cwmp87qhm7ygjqbxonkh6x486ovx1fq5mzadzjl45hhi59xsfmruhxb31zfh4bs8xonxy8a39526y\",\n \"single_file\" : \"qta65usm4vthfdinz3r5d5ybezbdhs11dxinykj57q76zddrdzvay9239s00xyh8z5do4xdufbwcdqxl0p7fq8jmndzh9n47py3v6le18yuxn0s7u3wurvx5v3kgjelfq5k6stq1\",\n \"contents\" : \"nfj8hrcuhg2g97wwhgo9aq0xga1zlsasme2y7pol8l3qr1cnrl7mqy0tik6v26dhfi6wrfvnz5ahocu08yd9\",\n \"issues\" : \"ntpqy\"\n },\n \"html_url\" : \"https://web.example.mocklab.io/521496\",\n \"name\" : \"Dr. Kaycee Borer\",\n \"created_at\" : \"6ogtbk9u9opu01rf8gwu9iezszsilw307dapi9x2oh5h8fw97fbb4tmykarznire6bap\",\n \"description\" : \"Voluptas dicta recusandae sed fuga sapiente. Minus nihil et est doloribus inventore nobis voluptatem. Numquam non rerum aut sunt libero accusamus ducimus. Repudiandae dicta explicabo possimus suscipit\",\n \"id\" : 195956381964876905,\n \"events\" : [ \"251fjg1iheay30\", \"ksi0bkso\", \"hq1hbj4t5y69ed9km7vg3j2mif\" ],\n \"slug\" : \"mce43e8fkh8l585b4kcgiwzwl08eeq6bs340xz1\",\n \"node_id\" : \"3xz3\"\n } ]\n },\n \"enforce_admins\" : {\n \"enabled\" : true,\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/branches/master/protection/enforce_admins\"\n },\n \"enabled\" : true,\n \"url\" : \"https://web.example.mocklab.io/771211\",\n \"allow_force_pushes\" : {\n \"enabled\" : false\n },\n \"required_conversation_resolution\" : {\n \"enabled\" : true\n },\n \"name\" : \"\\\"branch/with/protection\\\"\",\n \"allow_deletions\" : {\n \"enabled\" : false\n },\n \"protection_url\" : \"\\\"https://api.github.com/repos/owner-79e94e2d36b3fd06a32bb213/AAA_Public_Repo/branches/branch/with/protection/protection\\\"\"\n },\n \"protection_url\" : \"https://web.example.mocklab.io/574555\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "017889ac-873b-466b-96f8-0e2788a97268", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.84382Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/get-branch", + "schema": { + "description": "Branch With Protection", + "properties": { + "_links": { + "properties": { + "html": { + "type": "string" + }, + "self": { + "format": "uri", + "type": "string" + } + }, + "required": ["html", "self"], + "type": "object" + }, + "commit": { + "$ref": "#/components/schemas/commit" + }, + "name": { + "type": "string" + }, + "pattern": { + "example": "\"mas*\"", + "type": "string" + }, + "protected": { + "type": "boolean" + }, + "protection": { + "$ref": "#/components/schemas/branch-protection" + }, + "protection_url": { + "format": "uri", + "type": "string" + }, + "required_approving_review_count": { + "example": 1, + "type": "integer" + } + }, + "required": ["name", "commit", "_links", "protection", "protected", "protection_url"], + "title": "Branch With Protection", + "type": "object" + } + } + } + }, + "insertionIndex": 893 + }, + { + "id": "72dbd29e-04bc-4e40-8d60-c1e6141e3420", + "name": "List branches", + "request": { + "urlPath": "/repos/ne8200jzcwk9lcpmyad76c2sf89n72yvp6mc/oen3lp9ztcs3e5s1ixpz42j8z6hj5rx52a0kv5g028sysivpm3lw1pfndxmi1zcwlxfewgeaq8bfiaybaqg4w91i7tzyr5pfm9otdyt3zerrtev90hfg4ypt5j52ws2cbnd62an1fc38xt0h5w5vqrzzch7q09plmk5svsqx1sk4m07c6f/branches", + "method": "GET" + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/607881\",\n \"message\" : \"Quod modi unde et. Blanditiis est nostrum explicabo repellendus magnam doloremque atque. Et eaque voluptas numquam velit fuga itaque non. Tempora sunt aut est.\",\n \"url\" : \"https://web.example.mocklab.io/479885\",\n \"status\" : \"85pxfyrplli5lrjwuzuxa49tflftgds8yri\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "72dbd29e-04bc-4e40-8d60-c1e6141e3420", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.830071Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/list-branches", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 894 + }, + { + "id": "fa30bd79-a742-4772-8399-6a4dc6b81fc8", + "name": "List branches - default", + "request": { + "urlPath": "/repos/eqws0y2q2oklo719bob3t10ndz93d5/ay6vyt65tt8952qeqtbp54tkv79zwjwmt321dk5suavq15d00qacmqopl5eu1pd2oatq2m52nui4gvyjp3tg4xtyiscjrgvwnrl2mm9op80dv9lm7kk5zsaxuwj2jp0q6dzdk9iu8i9iht1yjxfrirket/branches", + "method": "GET" + }, + "response": { + "status": 200, + "body": "[ {\n \"commit\" : {\n \"sha\" : \"c5b97d5ae6c19d5c5df71a34c7fbeeda2479ccbc\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/commits/c5b97d5ae6c19d5c5df71a34c7fbeeda2479ccbc\"\n },\n \"name\" : \"master\",\n \"protected\" : true,\n \"protection\" : {\n \"required_status_checks\" : {\n \"contexts\" : [ \"ci-test\", \"linter\" ],\n \"enforcement_level\" : \"non_admins\"\n }\n },\n \"protection_url\" : \"https://api.github.com/repos/octocat/hello-world/branches/master/protection\"\n} ]", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "fa30bd79-a742-4772-8399-6a4dc6b81fc8", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.82985Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/list-branches", + "schema": { + "items": { + "$ref": "#/components/schemas/short-branch" + }, + "type": "array" + } + } + } + }, + "insertionIndex": 895 + }, + { + "id": "d82fd5a9-01c8-41e2-b43b-0656d2e1f8ea", + "name": "Check if a user can be assigned (application/json)", + "request": { + "urlPath": "/repos/ipyk2itvczd3z2ymv299l0ra6ye886ywpa9a50agzt17gt4hcuy2ro0brhpgspgy965ubjtdsj7u0d3tg7belnhylmv51giyqxenagt63tbyw4lyskldz6pqbtya8cdkl7ctb6q7m684qe1j3fnrw84kuqk3r07q6rj96t4vq8wl4q7myzgsqmjbq1lp09e/yre3n2rbjq7t9xqyr4wipsu4is2ag2w962bavpcwhst9051oyzca0erezaiv8dath3y32mxw54zlioarq6f6njep2tbf2h7b0i30vdvn1msp4roqtqvofloqop0kl27s7iqnjbaiy4o19wg1acnefzkkhxs49h4rmt0ew39kcob1mteh473usiw092opf58d1l7r5/assignees/3y9qnl496cmpo65k2zr3a4u7vn36s28dya68hraqrvac0udleyz59zm3zodctwfqdt1asdmu68s0upv1k7uhxvac9prg09uyjplx4cje5ywyhnc5wisr44p2e1ic8f6ju8iwvnx0dd5pxdksdrhwhp8tlw44yuyrwsojf8", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/759388\",\n \"message\" : \"Sunt vitae non non placeat impedit omnis similique. Dolores id et ipsa reprehenderit voluptatem dolorem. Numquam eum qui facere eum sit.\",\n \"url\" : \"https://web.example.mocklab.io/590120\",\n \"status\" : \"9j7zioklv73yt230q94ry5qclc57sahrj7urck963ddsu8tlkvzw9o3ggmy320i2neq1rszmrrfy97tla7q98pv551dr3hyohzluaruh5dsvuz0198eax7iajjthsxzsxs\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "d82fd5a9-01c8-41e2-b43b-0656d2e1f8ea", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.829782Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "issues/check-user-can-be-assigned", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 896 + }, + { + "id": "666a7142-46a8-4973-adf2-9a19b922ff4a", + "name": "Check if a user can be assigned - 204", + "request": { + "urlPath": "/repos/spnx5m4kkgfp/ip8rt9iwmddkxer5gifyqc0u4wd4h8qg2j8yqxslkond3y124zm2mxrirvvmfsjy2b74o5t1kpt0nfcfyb7sal47d4zrdwe2ztjfeijvq60ssqhnusm0hwncr5uzw7hcs9ame319xtgq866j9gb77wlioc0q/assignees/bjc7154n56kvmmsdj3v1n3nf8vmz1nv1bnsf4t7ub9dm", + "method": "GET" + }, + "response": { + "status": 204 + }, + "uuid": "666a7142-46a8-4973-adf2-9a19b922ff4a", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.829545Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "issues/check-user-can-be-assigned" + } + } + }, + "insertionIndex": 897 + }, + { + "id": "83e67feb-dfad-4b93-9424-39cdec3f8f15", + "name": "List assignees", + "request": { + "urlPath": "/repos/x2qslohzivakywpcxvwotw9b8g587meb96goc0lhs6waaf24fs8knxt7hdzdlcb9lliw/xkq9004kn0lz1m6vo7dxik1rk1lbw2uzuwe6nrzhljxmjvfhlmogelpnmeh2206rvf6bzfhl8xlxra6w15t5kwrkozr7p1cdarqdwf0zxavudahunokh59wh1g8kolm9whpbr3v8gdd4esyw7u9629bbank4nlz6kd19awf4ww73o7g929sy9kcpy77cxozxkbs7z5/assignees", + "method": "GET" + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/284586\",\n \"message\" : \"Consequatur dolor dolorem quos impedit est consectetur aliquid. Modi doloremque veniam sit consequatur ea debitis repellendus. Omnis suscipit dolore modi inventore nemo.\",\n \"url\" : \"https://web.example.mocklab.io/691107\",\n \"status\" : \"jidtd8pum1kzaawg8p2ddicz7f8cxc4xufesm6ne357vjrxxc5yol6zjj7g8sebm3374ivfvyty55f0ke2vlaehmicr4yf7rp9ici34wrh6bosi00n2d98fjqr4y6l0jrn1457vqawdufy32c1l61zky5czs1yqvfj2crio0uw5b6buhc8y1\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "83e67feb-dfad-4b93-9424-39cdec3f8f15", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.829495Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "issues/list-assignees", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 898 + }, + { + "id": "5759720b-61c4-4a5c-9748-5a65c2032095", + "name": "List assignees - default", + "request": { + "urlPath": "/repos/o20xq5f5yattre0v1227z18kgma1nva6zik3hapnaabxg6cwz7kapyuovxwkwme055lrf9kuces55mq8mt2cs00vbnydjj0upkc54eeqff0ky5s08inn8mvxpg9zsuzjcvgd8a6ip/ksqye7i3mlflr92jpotsuktazyx2mjg1ft02e2auipy6s4iwc2z95rtuwe1uafdtu237z87koqvv3fddo7oihmcrzuw2stnz573csdx53g5qapjq2ak4otrt2g3qml6zw9klhhm5qfi7w0ra6ivlx6mvjhfcrrtpmmajf7vbqk1hqay7ot51s20f362/assignees", + "method": "GET" + }, + "response": { + "status": 200, + "body": "[ {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n} ]", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "5759720b-61c4-4a5c-9748-5a65c2032095", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.829269Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "issues/list-assignees", + "schema": { + "items": { + "$ref": "#/components/schemas/simple-user" + }, + "type": "array" + } + } + } + }, + "insertionIndex": 899 + }, + { + "id": "510b7716-2b1d-49d6-987c-dd846cec56e8", + "name": "Update a repository", + "request": { + "urlPath": "/repos/xgq1ypfdmc9bmzns15ot6q1wq8/ks14ys7goy24khe03fnt3s3anl6f5q9j9kfial2ra2fhhvasvokrss6wiio4nrnr4mhrhc3x2", + "method": "PATCH" + }, + "response": { + "status": 422, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/098605\",\n \"message\" : \"Ut deserunt est quo aliquid. Nemo alias et nobis nisi est quod. Assumenda quis eum quia. Voluptatem aut voluptatem incidunt.\",\n \"errors\" : [ {\n \"code\" : \"9g27hask5a56htudlxu8pfe5jnfadkd5p74c3mdcqu69nqjdrba5lpackr45zbrqva3rta8str1dyojs9jsiu0bf\",\n \"field\" : \"k9mnibbp1y7cdvww5apoxaw1maa3wvfi03jzvo9mk9ms6lqpj50klkzbp39i20bhows63pdychabi9eb5ycwt1hjqjzwt013apkpca36zuyv1quq10puwgs81y73x74won8rbg3ujsvoyxwhaqskfye43ct59fnr5xnosjca73osq1u689ohqekde\",\n \"resource\" : \"qybs0lqb48ysejzfdbvhkfn8i0bm\",\n \"index\" : 1587220288028620684,\n \"message\" : \"Magni ut quia ipsam. Quidem sed laudantium maiores deserunt. Animi assumenda qui. A commodi alias sed et aut.\",\n \"value\" : { }\n }, {\n \"code\" : \"yl24ibotlit27ri6ygxjmr7ndv1ceuzbluj2lyomz653awqphtix5akms00ubkmx7hegd72ofohiwnps7ulhz6l5s5iw5qh40c072eewk99rnhmo32owphtqmau9wthn3aifx3rlghdy5ipjr10id1s3tpb2a5tj55yowbp7kfpa5nfgw5965h27ivunxrmeit\",\n \"field\" : \"qvn7bn0rv8y9jm2pvlq2j5d9g\",\n \"resource\" : \"aktdbrwpe4vblgrc2nqh60ihfcaprcyw4twbcsi56i00gzpx4qby2cwnrfcvh665v0i3wp6a8ggguv9721gfmfs4l79mc692p5oamzqgqs13rhkos1apn1a80xnbgfbfgw0b2d6bes\",\n \"index\" : 1256994559986135734,\n \"message\" : \"Aut eligendi dolorem maiores cum quia et repellendus. Id nisi cupiditate voluptatem doloribus quod quaerat fugiat. Dolorem laboriosam qui necessitatibus id. Ullam ut repudiandae placeat architecto con\",\n \"value\" : { }\n }, {\n \"code\" : \"d06t0edsg0dvaae6xn92tqjf61bab9wm0k43q3316gsfhl3jvcf7uqbjqroirflgznktfc5q8dt9f0xj7mlzfokfgfiv8kau191r9obprpt88glsw5rm40k11dxuiohoen4yhg15f605c95o3ugacumn8aop17gif4ha8scdnwpjb3r\",\n \"field\" : \"y4pq175wh9lw17wgmyen\",\n \"resource\" : \"qgxumdo1gv1xo2jn\",\n \"index\" : 618916910726463112,\n \"message\" : \"Qui rerum ea doloribus aut. Voluptas excepturi sed. Omnis ex est.\",\n \"value\" : { }\n }, {\n \"code\" : \"sytbsgqvbohlmo4cfna\",\n \"field\" : \"41sbibb3qxyqhbz4pqqcjbl95g5qsc81o207vumy44or4ulrksb6bro847phvifbors1kgiagt4pu8mdvpq2bf9j3a5dw2m5h5s6no\",\n \"resource\" : \"xx7u5iohkn4q8jty0jteoiezapiy8jkgmqa1vny01k42ettpyxzgcjh2gdq7gsyqmeg1nlwj2d0xamf9zkek3kz3uwwx8msi3xdz2mi\",\n \"index\" : 8356534730567735709,\n \"message\" : \"Error maxime quasi nesciunt. Cupiditate consequatur iste reiciendis distinctio est unde et. Repudiandae unde qui.\",\n \"value\" : { }\n } ]\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "510b7716-2b1d-49d6-987c-dd846cec56e8", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.829194Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/update", + "schema": { + "description": "Validation Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "errors": { + "items": { + "properties": { + "code": { + "type": "string" + }, + "field": { + "type": "string" + }, + "index": { + "type": "integer" + }, + "message": { + "type": "string" + }, + "resource": { + "type": "string" + }, + "value": { + "oneOf": [ + { + "nullable": true, + "type": "string" + }, + { + "nullable": true, + "type": "integer" + }, + { + "items": { + "type": "string" + }, + "nullable": true, + "type": "array" + } + ] + } + }, + "required": ["code"], + "type": "object" + }, + "type": "array" + }, + "message": { + "type": "string" + } + }, + "required": ["message", "documentation_url"], + "title": "Validation Error", + "type": "object" + } + } + } + }, + "insertionIndex": 900 + }, + { + "id": "600312e7-74d4-4e5e-bf5b-53533519fd1e", + "name": "Update a repository", + "request": { + "urlPath": "/repos/z3n0xlwx80ud61v83ffldta3if0ddlsngzcu8186aw/qmjzykt43jjkd7umcbyrb5zljre4d2kjxaxxae2y76witzdote2jdt8qave6w333txb415s3mhb9ldie9y5i4cpt291xg0b9y", + "method": "PATCH" + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/338457\",\n \"message\" : \"Quae voluptatem sequi ut. Et quia dolorum voluptatum. Molestias et libero laboriosam reiciendis tempore similique ad. Sit occaecati praesentium.\",\n \"url\" : \"https://web.example.mocklab.io/888788\",\n \"status\" : \"5w6gqfyn9cojpopkdinh6\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "600312e7-74d4-4e5e-bf5b-53533519fd1e", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.828548Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/update", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 901 + }, + { + "id": "8f9b9778-c0d4-4e64-812f-d8184204bb1e", + "name": "Update a repository", + "request": { + "urlPath": "/repos/tww47q8x0odlgb4crs0xqbnt8d/rqeilqnzltd3rrszizmyblfn8wf0wvjdtl0s3s8sd7f4y8k0f1e8ca2uslyq5fm9567egh2qrnsszctsjahceofc1yls5ohaq1b211oegurdfc7vi4sgqzem6", + "method": "PATCH" + }, + "response": { + "status": 403, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/996248\",\n \"message\" : \"Reiciendis quasi expedita. Sunt enim velit neque voluptatum officiis. Quia accusantium recusandae vitae. Aspernatur cupiditate et corrupti id. Non temporibus magnam error eligendi unde cupiditate sit.\",\n \"url\" : \"https://web.example.mocklab.io/712206\",\n \"status\" : \"5mf3arec97vk\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "8f9b9778-c0d4-4e64-812f-d8184204bb1e", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.828326Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/update", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 902 + }, + { + "id": "e5784549-001c-4ad1-9622-10a6517f4c8c", + "name": "Update a repository", + "request": { + "urlPath": "/repos/wqo82ejzri0htqzv3x79n7w6k9zi1snnpwu1yc2iys2v0jjxkr4wmpdir6h7fkzojev35lfzmcwx3jof8a9xg4jef5s8j9ls2kqk1vvjx0yh424g7vzj3ny27epfnblcfqcpn0mhnojpc8lpmiaklnvvrbo1czji431qy28erdsujyx5z3dufeow3202hfsirc87czm/sxm34w6wagnifi5kzxma35s9i8wbryk94fguukq92v6o8iuffuropic5xfo96wocyvylkvsh4lsi6iuwnjusgop7vjit480f", + "method": "PATCH" + }, + "response": { + "status": 307, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/547537\",\n \"message\" : \"In iusto error ea exercitationem. Est quas voluptatibus sint. Sit architecto eaque explicabo nemo cumque.\",\n \"url\" : \"https://web.example.mocklab.io/202452\",\n \"status\" : \"drfpwuufzs\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "e5784549-001c-4ad1-9622-10a6517f4c8c", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.828111Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/update", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 903 + }, + { + "id": "75866397-6083-4324-88c5-986631b8437b", + "name": "Update a repository - default", + "request": { + "urlPath": "/repos/7eh4vshjr0sn60bufps9fcq4nlb8rn8odk5b9cxpv8tgfhho2oo450sgfw98x6w1qxaf54ffd8p4jkwqoovekn6h4p38ki4dfdrkn2qpa8ye/2yrl7j98htql65fb50a51grl1jeypx3tdqs4jhr4zte9jngc59el1q3aryjtfiyy515xs1a3zdgz6nfqbj1v84rlqs", + "method": "PATCH" + }, + "response": { + "status": 200, + "body": "{\n \"allow_forking\" : true,\n \"allow_merge_commit\" : true,\n \"allow_rebase_merge\" : true,\n \"allow_squash_merge\" : true,\n \"anonymous_access_enabled\" : false,\n \"archive_url\" : \"https://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref}\",\n \"archived\" : false,\n \"assignees_url\" : \"https://api.github.com/repos/octocat/Hello-World/assignees{/user}\",\n \"blobs_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/blobs{/sha}\",\n \"branches_url\" : \"https://api.github.com/repos/octocat/Hello-World/branches{/branch}\",\n \"clone_url\" : \"https://github.com/octocat/Hello-World.git\",\n \"collaborators_url\" : \"https://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator}\",\n \"comments_url\" : \"https://api.github.com/repos/octocat/Hello-World/comments{/number}\",\n \"commits_url\" : \"https://api.github.com/repos/octocat/Hello-World/commits{/sha}\",\n \"compare_url\" : \"https://api.github.com/repos/octocat/Hello-World/compare/{base}...{head}\",\n \"contents_url\" : \"https://api.github.com/repos/octocat/Hello-World/contents/{+path}\",\n \"contributors_url\" : \"https://api.github.com/repos/octocat/Hello-World/contributors\",\n \"created_at\" : \"2011-01-26T19:01:12Z\",\n \"default_branch\" : \"master\",\n \"delete_branch_on_merge\" : true,\n \"deployments_url\" : \"https://api.github.com/repos/octocat/Hello-World/deployments\",\n \"description\" : \"This your first repo!\",\n \"disabled\" : false,\n \"downloads_url\" : \"https://api.github.com/repos/octocat/Hello-World/downloads\",\n \"events_url\" : \"https://api.github.com/repos/octocat/Hello-World/events\",\n \"fork\" : false,\n \"forks\" : 9,\n \"forks_count\" : 9,\n \"forks_url\" : \"https://api.github.com/repos/octocat/Hello-World/forks\",\n \"full_name\" : \"octocat/Hello-World\",\n \"git_commits_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/commits{/sha}\",\n \"git_refs_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/refs{/sha}\",\n \"git_tags_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/tags{/sha}\",\n \"git_url\" : \"git:github.com/octocat/Hello-World.git\",\n \"has_downloads\" : true,\n \"has_issues\" : true,\n \"has_pages\" : false,\n \"has_projects\" : true,\n \"has_wiki\" : true,\n \"homepage\" : \"https://github.com\",\n \"hooks_url\" : \"https://api.github.com/repos/octocat/Hello-World/hooks\",\n \"html_url\" : \"https://github.com/octocat/Hello-World\",\n \"id\" : 1296269,\n \"is_template\" : false,\n \"issue_comment_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/comments{/number}\",\n \"issue_events_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/events{/number}\",\n \"issues_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues{/number}\",\n \"keys_url\" : \"https://api.github.com/repos/octocat/Hello-World/keys{/key_id}\",\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World/labels{/name}\",\n \"languages_url\" : \"https://api.github.com/repos/octocat/Hello-World/languages\",\n \"license\" : {\n \"html_url\" : \"https://github.com/licenses/mit\",\n \"key\" : \"mit\",\n \"name\" : \"MIT License\",\n \"node_id\" : \"MDc6TGljZW5zZW1pdA==\",\n \"spdx_id\" : \"MIT\",\n \"url\" : \"https://api.github.com/licenses/mit\"\n },\n \"merges_url\" : \"https://api.github.com/repos/octocat/Hello-World/merges\",\n \"milestones_url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones{/number}\",\n \"mirror_url\" : \"git:git.example.com/octocat/Hello-World\",\n \"name\" : \"Hello-World\",\n \"network_count\" : 0,\n \"node_id\" : \"MDEwOlJlcG9zaXRvcnkxMjk2MjY5\",\n \"notifications_url\" : \"https://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating}\",\n \"open_issues\" : 0,\n \"open_issues_count\" : 0,\n \"organization\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"Organization\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"owner\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"parent\" : {\n \"allow_merge_commit\" : true,\n \"allow_rebase_merge\" : true,\n \"allow_squash_merge\" : true,\n \"anonymous_access_enabled\" : false,\n \"archive_url\" : \"https://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref}\",\n \"archived\" : false,\n \"assignees_url\" : \"https://api.github.com/repos/octocat/Hello-World/assignees{/user}\",\n \"blobs_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/blobs{/sha}\",\n \"branches_url\" : \"https://api.github.com/repos/octocat/Hello-World/branches{/branch}\",\n \"clone_url\" : \"https://github.com/octocat/Hello-World.git\",\n \"collaborators_url\" : \"https://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator}\",\n \"comments_url\" : \"https://api.github.com/repos/octocat/Hello-World/comments{/number}\",\n \"commits_url\" : \"https://api.github.com/repos/octocat/Hello-World/commits{/sha}\",\n \"compare_url\" : \"https://api.github.com/repos/octocat/Hello-World/compare/{base}...{head}\",\n \"contents_url\" : \"https://api.github.com/repos/octocat/Hello-World/contents/{+path}\",\n \"contributors_url\" : \"https://api.github.com/repos/octocat/Hello-World/contributors\",\n \"created_at\" : \"2011-01-26T19:01:12Z\",\n \"default_branch\" : \"master\",\n \"delete_branch_on_merge\" : true,\n \"deployments_url\" : \"https://api.github.com/repos/octocat/Hello-World/deployments\",\n \"description\" : \"This your first repo!\",\n \"disabled\" : false,\n \"downloads_url\" : \"https://api.github.com/repos/octocat/Hello-World/downloads\",\n \"events_url\" : \"https://api.github.com/repos/octocat/Hello-World/events\",\n \"fork\" : false,\n \"forks\" : 1,\n \"forks_count\" : 9,\n \"forks_url\" : \"https://api.github.com/repos/octocat/Hello-World/forks\",\n \"full_name\" : \"octocat/Hello-World\",\n \"git_commits_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/commits{/sha}\",\n \"git_refs_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/refs{/sha}\",\n \"git_tags_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/tags{/sha}\",\n \"git_url\" : \"git:github.com/octocat/Hello-World.git\",\n \"has_downloads\" : true,\n \"has_issues\" : true,\n \"has_pages\" : false,\n \"has_projects\" : true,\n \"has_wiki\" : true,\n \"homepage\" : \"https://github.com\",\n \"hooks_url\" : \"https://api.github.com/repos/octocat/Hello-World/hooks\",\n \"html_url\" : \"https://github.com/octocat/Hello-World\",\n \"id\" : 1296269,\n \"is_template\" : true,\n \"issue_comment_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/comments{/number}\",\n \"issue_events_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/events{/number}\",\n \"issues_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues{/number}\",\n \"keys_url\" : \"https://api.github.com/repos/octocat/Hello-World/keys{/key_id}\",\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World/labels{/name}\",\n \"languages_url\" : \"https://api.github.com/repos/octocat/Hello-World/languages\",\n \"license\" : {\n \"html_url\" : \"https://api.github.com/licenses/mit\",\n \"key\" : \"mit\",\n \"name\" : \"MIT License\",\n \"node_id\" : \"MDc6TGljZW5zZW1pdA==\",\n \"spdx_id\" : \"MIT\",\n \"url\" : \"https://api.github.com/licenses/mit\"\n },\n \"merges_url\" : \"https://api.github.com/repos/octocat/Hello-World/merges\",\n \"milestones_url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones{/number}\",\n \"mirror_url\" : \"git:git.example.com/octocat/Hello-World\",\n \"name\" : \"Hello-World\",\n \"network_count\" : 0,\n \"node_id\" : \"MDEwOlJlcG9zaXRvcnkxMjk2MjY5\",\n \"notifications_url\" : \"https://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating}\",\n \"open_issues\" : 1,\n \"open_issues_count\" : 0,\n \"owner\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"permissions\" : {\n \"admin\" : false,\n \"pull\" : true,\n \"push\" : false\n },\n \"private\" : false,\n \"pulls_url\" : \"https://api.github.com/repos/octocat/Hello-World/pulls{/number}\",\n \"pushed_at\" : \"2011-01-26T19:06:43Z\",\n \"releases_url\" : \"https://api.github.com/repos/octocat/Hello-World/releases{/id}\",\n \"size\" : 108,\n \"ssh_url\" : \"git@github.com:octocat/Hello-World.git\",\n \"stargazers_count\" : 80,\n \"stargazers_url\" : \"https://api.github.com/repos/octocat/Hello-World/stargazers\",\n \"statuses_url\" : \"https://api.github.com/repos/octocat/Hello-World/statuses/{sha}\",\n \"subscribers_count\" : 42,\n \"subscribers_url\" : \"https://api.github.com/repos/octocat/Hello-World/subscribers\",\n \"subscription_url\" : \"https://api.github.com/repos/octocat/Hello-World/subscription\",\n \"svn_url\" : \"https://svn.github.com/octocat/Hello-World\",\n \"tags_url\" : \"https://api.github.com/repos/octocat/Hello-World/tags\",\n \"teams_url\" : \"https://api.github.com/repos/octocat/Hello-World/teams\",\n \"topics\" : [ \"octocat\", \"atom\", \"electron\", \"api\" ],\n \"trees_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/trees{/sha}\",\n \"updated_at\" : \"2011-01-26T19:14:43Z\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World\",\n \"visibility\" : \"public\",\n \"watchers\" : 1,\n \"watchers_count\" : 80\n },\n \"permissions\" : {\n \"admin\" : false,\n \"pull\" : true,\n \"push\" : false\n },\n \"private\" : false,\n \"pulls_url\" : \"https://api.github.com/repos/octocat/Hello-World/pulls{/number}\",\n \"pushed_at\" : \"2011-01-26T19:06:43Z\",\n \"releases_url\" : \"https://api.github.com/repos/octocat/Hello-World/releases{/id}\",\n \"size\" : 108,\n \"source\" : {\n \"allow_merge_commit\" : true,\n \"allow_rebase_merge\" : true,\n \"allow_squash_merge\" : true,\n \"anonymous_access_enabled\" : false,\n \"archive_url\" : \"https://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref}\",\n \"archived\" : false,\n \"assignees_url\" : \"https://api.github.com/repos/octocat/Hello-World/assignees{/user}\",\n \"blobs_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/blobs{/sha}\",\n \"branches_url\" : \"https://api.github.com/repos/octocat/Hello-World/branches{/branch}\",\n \"clone_url\" : \"https://github.com/octocat/Hello-World.git\",\n \"collaborators_url\" : \"https://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator}\",\n \"comments_url\" : \"https://api.github.com/repos/octocat/Hello-World/comments{/number}\",\n \"commits_url\" : \"https://api.github.com/repos/octocat/Hello-World/commits{/sha}\",\n \"compare_url\" : \"https://api.github.com/repos/octocat/Hello-World/compare/{base}...{head}\",\n \"contents_url\" : \"https://api.github.com/repos/octocat/Hello-World/contents/{+path}\",\n \"contributors_url\" : \"https://api.github.com/repos/octocat/Hello-World/contributors\",\n \"created_at\" : \"2011-01-26T19:01:12Z\",\n \"default_branch\" : \"master\",\n \"delete_branch_on_merge\" : true,\n \"deployments_url\" : \"https://api.github.com/repos/octocat/Hello-World/deployments\",\n \"description\" : \"This your first repo!\",\n \"disabled\" : false,\n \"downloads_url\" : \"https://api.github.com/repos/octocat/Hello-World/downloads\",\n \"events_url\" : \"https://api.github.com/repos/octocat/Hello-World/events\",\n \"fork\" : false,\n \"forks\" : 1,\n \"forks_count\" : 9,\n \"forks_url\" : \"https://api.github.com/repos/octocat/Hello-World/forks\",\n \"full_name\" : \"octocat/Hello-World\",\n \"git_commits_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/commits{/sha}\",\n \"git_refs_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/refs{/sha}\",\n \"git_tags_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/tags{/sha}\",\n \"git_url\" : \"git:github.com/octocat/Hello-World.git\",\n \"has_downloads\" : true,\n \"has_issues\" : true,\n \"has_pages\" : false,\n \"has_projects\" : true,\n \"has_wiki\" : true,\n \"homepage\" : \"https://github.com\",\n \"hooks_url\" : \"https://api.github.com/repos/octocat/Hello-World/hooks\",\n \"html_url\" : \"https://github.com/octocat/Hello-World\",\n \"id\" : 1296269,\n \"is_template\" : true,\n \"issue_comment_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/comments{/number}\",\n \"issue_events_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/events{/number}\",\n \"issues_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues{/number}\",\n \"keys_url\" : \"https://api.github.com/repos/octocat/Hello-World/keys{/key_id}\",\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World/labels{/name}\",\n \"languages_url\" : \"https://api.github.com/repos/octocat/Hello-World/languages\",\n \"license\" : {\n \"html_url\" : \"https://api.github.com/licenses/mit\",\n \"key\" : \"mit\",\n \"name\" : \"MIT License\",\n \"node_id\" : \"MDc6TGljZW5zZW1pdA==\",\n \"spdx_id\" : \"MIT\",\n \"url\" : \"https://api.github.com/licenses/mit\"\n },\n \"merges_url\" : \"https://api.github.com/repos/octocat/Hello-World/merges\",\n \"milestones_url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones{/number}\",\n \"mirror_url\" : \"git:git.example.com/octocat/Hello-World\",\n \"name\" : \"Hello-World\",\n \"network_count\" : 0,\n \"node_id\" : \"MDEwOlJlcG9zaXRvcnkxMjk2MjY5\",\n \"notifications_url\" : \"https://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating}\",\n \"open_issues\" : 1,\n \"open_issues_count\" : 0,\n \"owner\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"permissions\" : {\n \"admin\" : false,\n \"pull\" : true,\n \"push\" : false\n },\n \"private\" : false,\n \"pulls_url\" : \"https://api.github.com/repos/octocat/Hello-World/pulls{/number}\",\n \"pushed_at\" : \"2011-01-26T19:06:43Z\",\n \"releases_url\" : \"https://api.github.com/repos/octocat/Hello-World/releases{/id}\",\n \"size\" : 108,\n \"ssh_url\" : \"git@github.com:octocat/Hello-World.git\",\n \"stargazers_count\" : 80,\n \"stargazers_url\" : \"https://api.github.com/repos/octocat/Hello-World/stargazers\",\n \"statuses_url\" : \"https://api.github.com/repos/octocat/Hello-World/statuses/{sha}\",\n \"subscribers_count\" : 42,\n \"subscribers_url\" : \"https://api.github.com/repos/octocat/Hello-World/subscribers\",\n \"subscription_url\" : \"https://api.github.com/repos/octocat/Hello-World/subscription\",\n \"svn_url\" : \"https://svn.github.com/octocat/Hello-World\",\n \"tags_url\" : \"https://api.github.com/repos/octocat/Hello-World/tags\",\n \"teams_url\" : \"https://api.github.com/repos/octocat/Hello-World/teams\",\n \"topics\" : [ \"octocat\", \"atom\", \"electron\", \"api\" ],\n \"trees_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/trees{/sha}\",\n \"updated_at\" : \"2011-01-26T19:14:43Z\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World\",\n \"visibility\" : \"public\",\n \"watchers\" : 1,\n \"watchers_count\" : 80\n },\n \"ssh_url\" : \"git@github.com:octocat/Hello-World.git\",\n \"stargazers_count\" : 80,\n \"stargazers_url\" : \"https://api.github.com/repos/octocat/Hello-World/stargazers\",\n \"statuses_url\" : \"https://api.github.com/repos/octocat/Hello-World/statuses/{sha}\",\n \"subscribers_count\" : 42,\n \"subscribers_url\" : \"https://api.github.com/repos/octocat/Hello-World/subscribers\",\n \"subscription_url\" : \"https://api.github.com/repos/octocat/Hello-World/subscription\",\n \"svn_url\" : \"https://svn.github.com/octocat/Hello-World\",\n \"tags_url\" : \"https://api.github.com/repos/octocat/Hello-World/tags\",\n \"teams_url\" : \"https://api.github.com/repos/octocat/Hello-World/teams\",\n \"template_repository\" : {\n \"allow_merge_commit\" : true,\n \"allow_rebase_merge\" : true,\n \"allow_squash_merge\" : true,\n \"archive_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/{archive_format}{/ref}\",\n \"archived\" : false,\n \"assignees_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/assignees{/user}\",\n \"blobs_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/git/blobs{/sha}\",\n \"branches_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/branches{/branch}\",\n \"clone_url\" : \"https://github.com/octocat/Hello-World-Template.git\",\n \"collaborators_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/collaborators{/collaborator}\",\n \"comments_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/comments{/number}\",\n \"commits_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/commits{/sha}\",\n \"compare_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/compare/{base}...{head}\",\n \"contents_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/contents/{+path}\",\n \"contributors_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/contributors\",\n \"created_at\" : \"2011-01-26T19:01:12Z\",\n \"default_branch\" : \"master\",\n \"delete_branch_on_merge\" : true,\n \"deployments_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/deployments\",\n \"description\" : \"This your first repo!\",\n \"disabled\" : false,\n \"downloads_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/downloads\",\n \"events_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/events\",\n \"fork\" : false,\n \"forks\" : 9,\n \"forks_count\" : 9,\n \"forks_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/forks\",\n \"full_name\" : \"octocat/Hello-World-Template\",\n \"git_commits_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/git/commits{/sha}\",\n \"git_refs_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/git/refs{/sha}\",\n \"git_tags_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/git/tags{/sha}\",\n \"git_url\" : \"git:github.com/octocat/Hello-World-Template.git\",\n \"has_downloads\" : true,\n \"has_issues\" : true,\n \"has_pages\" : false,\n \"has_projects\" : true,\n \"has_wiki\" : true,\n \"homepage\" : \"https://github.com\",\n \"hooks_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/hooks\",\n \"html_url\" : \"https://github.com/octocat/Hello-World-Template\",\n \"id\" : 1296269,\n \"is_template\" : true,\n \"issue_comment_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/issues/comments{/number}\",\n \"issue_events_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/issues/events{/number}\",\n \"issues_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/issues{/number}\",\n \"keys_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/keys{/key_id}\",\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/labels{/name}\",\n \"languages_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/languages\",\n \"license\" : {\n \"html_url\" : \"https://api.github.com/licenses/mit\",\n \"key\" : \"mit\",\n \"name\" : \"MIT License\",\n \"node_id\" : \"MDc6TGljZW5zZW1pdA==\",\n \"spdx_id\" : \"MIT\",\n \"url\" : \"https://api.github.com/licenses/mit\"\n },\n \"merges_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/merges\",\n \"milestones_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/milestones{/number}\",\n \"mirror_url\" : \"git:git.example.com/octocat/Hello-World-Template\",\n \"name\" : \"Hello-World-Template\",\n \"network_count\" : 0,\n \"node_id\" : \"MDEwOlJlcG9zaXRvcnkxMjk2MjY5\",\n \"notifications_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/notifications{?since,all,participating}\",\n \"open_issues\" : 0,\n \"open_issues_count\" : 0,\n \"owner\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"permissions\" : {\n \"admin\" : false,\n \"pull\" : true,\n \"push\" : false\n },\n \"private\" : false,\n \"pulls_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/pulls{/number}\",\n \"pushed_at\" : \"2011-01-26T19:06:43Z\",\n \"releases_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/releases{/id}\",\n \"size\" : 108,\n \"ssh_url\" : \"git@github.com:octocat/Hello-World-Template.git\",\n \"stargazers_count\" : 80,\n \"stargazers_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/stargazers\",\n \"statuses_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/statuses/{sha}\",\n \"subscribers_count\" : 42,\n \"subscribers_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/subscribers\",\n \"subscription_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/subscription\",\n \"svn_url\" : \"https://svn.github.com/octocat/Hello-World-Template\",\n \"tags_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/tags\",\n \"teams_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/teams\",\n \"temp_clone_token\" : \"ABTLWHOULUVAXGTRYU7OC2876QJ2O\",\n \"topics\" : [ \"octocat\", \"atom\", \"electron\", \"api\" ],\n \"trees_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/git/trees{/sha}\",\n \"updated_at\" : \"2011-01-26T19:14:43Z\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World-Template\",\n \"visibility\" : \"public\",\n \"watchers\" : 80,\n \"watchers_count\" : 80\n },\n \"topics\" : [ \"octocat\", \"atom\", \"electron\", \"api\" ],\n \"trees_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/trees{/sha}\",\n \"updated_at\" : \"2011-01-26T19:14:43Z\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World\",\n \"visibility\" : \"public\",\n \"watchers\" : 80,\n \"watchers_count\" : 80\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "75866397-6083-4324-88c5-986631b8437b", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.827822Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/update", + "schema": { + "description": "Full Repository", + "properties": { + "allow_forking": { + "example": true, + "type": "boolean" + }, + "allow_merge_commit": { + "example": true, + "type": "boolean" + }, + "allow_rebase_merge": { + "example": true, + "type": "boolean" + }, + "allow_squash_merge": { + "example": true, + "type": "boolean" + }, + "anonymous_access_enabled": { + "default": true, + "description": "Whether anonymous git access is allowed.", + "type": "boolean" + }, + "archive_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref}", + "type": "string" + }, + "archived": { + "type": "boolean" + }, + "assignees_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/assignees{/user}", + "type": "string" + }, + "blobs_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/git/blobs{/sha}", + "type": "string" + }, + "branches_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/branches{/branch}", + "type": "string" + }, + "clone_url": { + "example": "https://github.com/octocat/Hello-World.git", + "type": "string" + }, + "code_of_conduct": { + "$ref": "#/components/schemas/code-of-conduct-simple" + }, + "collaborators_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator}", + "type": "string" + }, + "comments_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/comments{/number}", + "type": "string" + }, + "commits_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/commits{/sha}", + "type": "string" + }, + "compare_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/compare/{base}...{head}", + "type": "string" + }, + "contents_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/contents/{+path}", + "type": "string" + }, + "contributors_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/contributors", + "format": "uri", + "type": "string" + }, + "created_at": { + "example": "2011-01-26T19:01:12Z", + "format": "date-time", + "type": "string" + }, + "default_branch": { + "example": "master", + "type": "string" + }, + "delete_branch_on_merge": { + "example": false, + "type": "boolean" + }, + "deployments_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/deployments", + "format": "uri", + "type": "string" + }, + "description": { + "example": "This your first repo!", + "nullable": true, + "type": "string" + }, + "disabled": { + "description": "Returns whether or not this repository disabled.", + "type": "boolean" + }, + "downloads_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/downloads", + "format": "uri", + "type": "string" + }, + "events_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/events", + "format": "uri", + "type": "string" + }, + "fork": { + "type": "boolean" + }, + "forks": { + "type": "integer" + }, + "forks_count": { + "example": 9, + "type": "integer" + }, + "forks_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/forks", + "format": "uri", + "type": "string" + }, + "full_name": { + "example": "octocat/Hello-World", + "type": "string" + }, + "git_commits_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/git/commits{/sha}", + "type": "string" + }, + "git_refs_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/git/refs{/sha}", + "type": "string" + }, + "git_tags_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/git/tags{/sha}", + "type": "string" + }, + "git_url": { + "example": "git:github.com/octocat/Hello-World.git", + "type": "string" + }, + "has_downloads": { + "example": true, + "type": "boolean" + }, + "has_issues": { + "example": true, + "type": "boolean" + }, + "has_pages": { + "type": "boolean" + }, + "has_projects": { + "example": true, + "type": "boolean" + }, + "has_wiki": { + "example": true, + "type": "boolean" + }, + "homepage": { + "example": "https://github.com", + "format": "uri", + "nullable": true, + "type": "string" + }, + "hooks_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/hooks", + "format": "uri", + "type": "string" + }, + "html_url": { + "example": "https://github.com/octocat/Hello-World", + "format": "uri", + "type": "string" + }, + "id": { + "example": 1296269, + "type": "integer" + }, + "is_template": { + "example": true, + "type": "boolean" + }, + "issue_comment_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/issues/comments{/number}", + "type": "string" + }, + "issue_events_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/issues/events{/number}", + "type": "string" + }, + "issues_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/issues{/number}", + "type": "string" + }, + "keys_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/keys{/key_id}", + "type": "string" + }, + "labels_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/labels{/name}", + "type": "string" + }, + "language": { + "nullable": true, + "type": "string" + }, + "languages_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/languages", + "format": "uri", + "type": "string" + }, + "license": { + "$ref": "#/components/schemas/nullable-license-simple" + }, + "master_branch": { + "type": "string" + }, + "merges_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/merges", + "format": "uri", + "type": "string" + }, + "milestones_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/milestones{/number}", + "type": "string" + }, + "mirror_url": { + "example": "git:git.example.com/octocat/Hello-World", + "format": "uri", + "nullable": true, + "type": "string" + }, + "name": { + "example": "Hello-World", + "type": "string" + }, + "network_count": { + "example": 0, + "type": "integer" + }, + "node_id": { + "example": "MDEwOlJlcG9zaXRvcnkxMjk2MjY5", + "type": "string" + }, + "notifications_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating}", + "type": "string" + }, + "open_issues": { + "type": "integer" + }, + "open_issues_count": { + "example": 0, + "type": "integer" + }, + "organization": { + "$ref": "#/components/schemas/nullable-simple-user" + }, + "owner": { + "$ref": "#/components/schemas/simple-user" + }, + "parent": { + "$ref": "#/components/schemas/repository" + }, + "permissions": { + "properties": { + "admin": { + "type": "boolean" + }, + "maintain": { + "type": "boolean" + }, + "pull": { + "type": "boolean" + }, + "push": { + "type": "boolean" + }, + "triage": { + "type": "boolean" + } + }, + "required": ["admin", "pull", "push"], + "type": "object" + }, + "private": { + "type": "boolean" + }, + "pulls_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/pulls{/number}", + "type": "string" + }, + "pushed_at": { + "example": "2011-01-26T19:06:43Z", + "format": "date-time", + "type": "string" + }, + "releases_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/releases{/id}", + "type": "string" + }, + "size": { + "example": 108, + "type": "integer" + }, + "source": { + "$ref": "#/components/schemas/repository" + }, + "ssh_url": { + "example": "git@github.com:octocat/Hello-World.git", + "type": "string" + }, + "stargazers_count": { + "example": 80, + "type": "integer" + }, + "stargazers_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/stargazers", + "format": "uri", + "type": "string" + }, + "statuses_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/statuses/{sha}", + "type": "string" + }, + "subscribers_count": { + "example": 42, + "type": "integer" + }, + "subscribers_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/subscribers", + "format": "uri", + "type": "string" + }, + "subscription_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/subscription", + "format": "uri", + "type": "string" + }, + "svn_url": { + "example": "https://svn.github.com/octocat/Hello-World", + "format": "uri", + "type": "string" + }, + "tags_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/tags", + "format": "uri", + "type": "string" + }, + "teams_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/teams", + "format": "uri", + "type": "string" + }, + "template_repository": { + "$ref": "#/components/schemas/nullable-repository" + }, + "topics": { + "example": ["octocat", "atom", "electron", "API"], + "items": { + "type": "string" + }, + "type": "array" + }, + "trees_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/git/trees{/sha}", + "type": "string" + }, + "updated_at": { + "example": "2011-01-26T19:14:43Z", + "format": "date-time", + "type": "string" + }, + "url": { + "example": "https://api.github.com/repos/octocat/Hello-World", + "format": "uri", + "type": "string" + }, + "visibility": { + "description": "The repository visibility: public, private, or internal.", + "example": "public", + "type": "string" + }, + "watchers": { + "type": "integer" + }, + "watchers_count": { + "example": 80, + "type": "integer" + } + }, + "required": [ + "archive_url", + "assignees_url", + "blobs_url", + "branches_url", + "collaborators_url", + "comments_url", + "commits_url", + "compare_url", + "contents_url", + "contributors_url", + "deployments_url", + "description", + "downloads_url", + "events_url", + "fork", + "forks_url", + "full_name", + "git_commits_url", + "git_refs_url", + "git_tags_url", + "hooks_url", + "html_url", + "id", + "node_id", + "issue_comment_url", + "issue_events_url", + "issues_url", + "keys_url", + "labels_url", + "languages_url", + "merges_url", + "milestones_url", + "name", + "notifications_url", + "owner", + "private", + "pulls_url", + "releases_url", + "stargazers_url", + "statuses_url", + "subscribers_url", + "subscription_url", + "tags_url", + "teams_url", + "trees_url", + "url", + "clone_url", + "default_branch", + "forks", + "forks_count", + "git_url", + "has_downloads", + "has_issues", + "has_projects", + "has_wiki", + "has_pages", + "homepage", + "language", + "archived", + "disabled", + "mirror_url", + "open_issues", + "open_issues_count", + "license", + "pushed_at", + "size", + "ssh_url", + "stargazers_count", + "svn_url", + "watchers", + "watchers_count", + "created_at", + "updated_at", + "network_count", + "subscribers_count" + ], + "title": "Full Repository", + "type": "object" + } + } + } + }, + "insertionIndex": 904 + }, + { + "id": "c0b665c5-b187-457a-9e26-9b3b109411a5", + "name": "Get a repository", + "request": { + "urlPath": "/repos/j71djzwa0asgguleiysl83ixjayjdc4yhxwv6k81uca199qjy2sm3sfjcnlqfsn97bttf8syv/q7p5xz4tgk4gf3vun7od43xyxxgc559yxaco4xkmm437q6tg32kpmm2b3dbh95mh3qjf26ublqz85dexd0j09d8vz2qerqgsiw2ims42lq5d3qz31hkxs7yxnak278p7demt5zg168clth5j4d8ocoteurxloasho1b5", + "method": "GET" + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/163657\",\n \"message\" : \"Amet et quae. Eum tempora sit accusantium accusantium enim dolor earum. Iusto quis consequuntur neque quo autem et. Et voluptate voluptatem aut.\",\n \"url\" : \"https://web.example.mocklab.io/857228\",\n \"status\" : \"px382d8bov6njkoikapbv280vdrq5qks5qli1imug2x4czyg5v56jl6lybbil8sb8b8srr0yw9fjo82jk5xgvx12o8odas4rqv1zqwrol10kzmqcrs0xv085o4ms0sfu4\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "c0b665c5-b187-457a-9e26-9b3b109411a5", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.827073Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/get", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 905 + }, + { + "id": "1a0d32a2-c9c1-466f-ad99-719db15a2fb3", + "name": "Get a repository", + "request": { + "urlPath": "/repos/kieewsdtupyg022zpk501t5sfy1pwo7qcugbn0jhzx7qm4vuwulp1l8p00kg8qenp241mxm7hr873j28/nwvlai22880a1", + "method": "GET" + }, + "response": { + "status": 403, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/122167\",\n \"message\" : \"Rerum optio commodi est molestias eveniet et qui. Sequi rem fugit molestiae libero amet voluptatem. Voluptas ad aut rerum reiciendis molestiae. Saepe esse atque.\",\n \"url\" : \"https://web.example.mocklab.io/689458\",\n \"status\" : \"2hh1ld8itvr54y6ldyvcgxr8ouvpjphkt1l6byrir8jsrtx1bzvsdus4rcyla8s57t7mog7umh6ochtn7uzmm0judhirjq291omka5v08q8yti28oum7ettr2cja57ney6uuq2jqw8kqlswym89fff04964zzeg3fwpwcjjhzqfzjmkeie4xjg6fil\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "1a0d32a2-c9c1-466f-ad99-719db15a2fb3", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.826839Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/get", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 906 + }, + { + "id": "72308df8-695a-419a-a0d1-6a9fc128e6bc", + "name": "Get a repository", + "request": { + "urlPath": "/repos/h178wdhxk3/bklpi8bb9wwoorllyzpg7e2co4nwrb93yn7in67yy0navlawekk0po", + "method": "GET" + }, + "response": { + "status": 301, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/676353\",\n \"message\" : \"Recusandae voluptate corporis ut ea beatae. Expedita alias necessitatibus veritatis. Sit laborum et magni dolorem quam itaque voluptatem.\",\n \"url\" : \"https://web.example.mocklab.io/063211\",\n \"status\" : \"aeegxfpqxghso6ec6tsy0mqeymuu2u5lb1wz50ae5hxqxgj6nrpb6cm7f5abe0mitg5y2we0cf5452gfzrqaozbodmnjim18h649uih1y1s7nulbn807q9g9765bguer5sdcbq345sn40izv98up4o7\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "72308df8-695a-419a-a0d1-6a9fc128e6bc", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.826619Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/get", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 907 + }, + { + "id": "0f05ceb5-a60e-4efc-bb73-d6c6112e165b", + "name": "Get a repository - response-with-scarlet-witch-preview-media-type", + "request": { + "urlPath": "/repos/yni22b5melcx1as9n2q6w1z0gtrjaffl3binrf8er5vxloundk3epms71016xf23suxbtm4th7tsp6ipxbkny7bfxrhzuc4z0qy/4popxzow31jggv596ofly2lcjnwgt4p2g982v0y9lnpp6idbwug4bhslwa1", + "method": "GET" + }, + "response": { + "status": 200, + "body": "{\n \"allow_merge_commit\" : true,\n \"allow_rebase_merge\" : true,\n \"allow_squash_merge\" : true,\n \"anonymous_access_enabled\" : false,\n \"archive_url\" : \"https://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref}\",\n \"archived\" : false,\n \"assignees_url\" : \"https://api.github.com/repos/octocat/Hello-World/assignees{/user}\",\n \"blobs_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/blobs{/sha}\",\n \"branches_url\" : \"https://api.github.com/repos/octocat/Hello-World/branches{/branch}\",\n \"clone_url\" : \"https://github.com/octocat/Hello-World.git\",\n \"code_of_conduct\" : {\n \"html_url\" : \"https://github.com/github/docs/blob/main/CODE_OF_CONDUCT.md\",\n \"key\" : \"other\",\n \"name\" : \"Other\",\n \"url\" : \"https://api.github.com/repos/github/docs/community/code_of_conduct\"\n },\n \"collaborators_url\" : \"https://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator}\",\n \"comments_url\" : \"https://api.github.com/repos/octocat/Hello-World/comments{/number}\",\n \"commits_url\" : \"https://api.github.com/repos/octocat/Hello-World/commits{/sha}\",\n \"compare_url\" : \"https://api.github.com/repos/octocat/Hello-World/compare/{base}...{head}\",\n \"contents_url\" : \"https://api.github.com/repos/octocat/Hello-World/contents/{+path}\",\n \"contributors_url\" : \"https://api.github.com/repos/octocat/Hello-World/contributors\",\n \"created_at\" : \"2011-01-26T19:01:12Z\",\n \"default_branch\" : \"master\",\n \"delete_branch_on_merge\" : true,\n \"deployments_url\" : \"https://api.github.com/repos/octocat/Hello-World/deployments\",\n \"description\" : \"This your first repo!\",\n \"disabled\" : false,\n \"downloads_url\" : \"https://api.github.com/repos/octocat/Hello-World/downloads\",\n \"events_url\" : \"https://api.github.com/repos/octocat/Hello-World/events\",\n \"fork\" : false,\n \"forks\" : 9,\n \"forks_count\" : 9,\n \"forks_url\" : \"https://api.github.com/repos/octocat/Hello-World/forks\",\n \"full_name\" : \"octocat/Hello-World\",\n \"git_commits_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/commits{/sha}\",\n \"git_refs_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/refs{/sha}\",\n \"git_tags_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/tags{/sha}\",\n \"git_url\" : \"git:github.com/octocat/Hello-World.git\",\n \"has_downloads\" : true,\n \"has_issues\" : true,\n \"has_pages\" : false,\n \"has_projects\" : true,\n \"has_wiki\" : true,\n \"homepage\" : \"https://github.com\",\n \"hooks_url\" : \"https://api.github.com/repos/octocat/Hello-World/hooks\",\n \"html_url\" : \"https://github.com/octocat/Hello-World\",\n \"id\" : 1296269,\n \"is_template\" : false,\n \"issue_comment_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/comments{/number}\",\n \"issue_events_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/events{/number}\",\n \"issues_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues{/number}\",\n \"keys_url\" : \"https://api.github.com/repos/octocat/Hello-World/keys{/key_id}\",\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World/labels{/name}\",\n \"languages_url\" : \"https://api.github.com/repos/octocat/Hello-World/languages\",\n \"license\" : {\n \"key\" : \"mit\",\n \"name\" : \"MIT License\",\n \"node_id\" : \"MDc6TGljZW5zZW1pdA==\",\n \"spdx_id\" : \"MIT\",\n \"url\" : \"https://api.github.com/licenses/mit\"\n },\n \"merges_url\" : \"https://api.github.com/repos/octocat/Hello-World/merges\",\n \"milestones_url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones{/number}\",\n \"mirror_url\" : \"git:git.example.com/octocat/Hello-World\",\n \"name\" : \"Hello-World\",\n \"network_count\" : 0,\n \"node_id\" : \"MDEwOlJlcG9zaXRvcnkxMjk2MjY5\",\n \"notifications_url\" : \"https://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating}\",\n \"open_issues\" : 0,\n \"open_issues_count\" : 0,\n \"organization\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"Organization\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"owner\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"parent\" : {\n \"allow_merge_commit\" : true,\n \"allow_rebase_merge\" : true,\n \"allow_squash_merge\" : true,\n \"anonymous_access_enabled\" : false,\n \"archive_url\" : \"https://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref}\",\n \"archived\" : false,\n \"assignees_url\" : \"https://api.github.com/repos/octocat/Hello-World/assignees{/user}\",\n \"blobs_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/blobs{/sha}\",\n \"branches_url\" : \"https://api.github.com/repos/octocat/Hello-World/branches{/branch}\",\n \"clone_url\" : \"https://github.com/octocat/Hello-World.git\",\n \"collaborators_url\" : \"https://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator}\",\n \"comments_url\" : \"https://api.github.com/repos/octocat/Hello-World/comments{/number}\",\n \"commits_url\" : \"https://api.github.com/repos/octocat/Hello-World/commits{/sha}\",\n \"compare_url\" : \"https://api.github.com/repos/octocat/Hello-World/compare/{base}...{head}\",\n \"contents_url\" : \"https://api.github.com/repos/octocat/Hello-World/contents/{+path}\",\n \"contributors_url\" : \"https://api.github.com/repos/octocat/Hello-World/contributors\",\n \"created_at\" : \"2011-01-26T19:01:12Z\",\n \"default_branch\" : \"master\",\n \"delete_branch_on_merge\" : true,\n \"deployments_url\" : \"https://api.github.com/repos/octocat/Hello-World/deployments\",\n \"description\" : \"This your first repo!\",\n \"disabled\" : false,\n \"downloads_url\" : \"https://api.github.com/repos/octocat/Hello-World/downloads\",\n \"events_url\" : \"https://api.github.com/repos/octocat/Hello-World/events\",\n \"fork\" : false,\n \"forks\" : 1,\n \"forks_count\" : 9,\n \"forks_url\" : \"https://api.github.com/repos/octocat/Hello-World/forks\",\n \"full_name\" : \"octocat/Hello-World\",\n \"git_commits_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/commits{/sha}\",\n \"git_refs_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/refs{/sha}\",\n \"git_tags_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/tags{/sha}\",\n \"git_url\" : \"git:github.com/octocat/Hello-World.git\",\n \"has_downloads\" : true,\n \"has_issues\" : true,\n \"has_pages\" : false,\n \"has_projects\" : true,\n \"has_wiki\" : true,\n \"homepage\" : \"https://github.com\",\n \"hooks_url\" : \"https://api.github.com/repos/octocat/Hello-World/hooks\",\n \"html_url\" : \"https://github.com/octocat/Hello-World\",\n \"id\" : 1296269,\n \"is_template\" : true,\n \"issue_comment_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/comments{/number}\",\n \"issue_events_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/events{/number}\",\n \"issues_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues{/number}\",\n \"keys_url\" : \"https://api.github.com/repos/octocat/Hello-World/keys{/key_id}\",\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World/labels{/name}\",\n \"languages_url\" : \"https://api.github.com/repos/octocat/Hello-World/languages\",\n \"license\" : {\n \"html_url\" : \"https://api.github.com/licenses/mit\",\n \"key\" : \"mit\",\n \"name\" : \"MIT License\",\n \"node_id\" : \"MDc6TGljZW5zZW1pdA==\",\n \"spdx_id\" : \"MIT\",\n \"url\" : \"https://api.github.com/licenses/mit\"\n },\n \"merges_url\" : \"https://api.github.com/repos/octocat/Hello-World/merges\",\n \"milestones_url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones{/number}\",\n \"mirror_url\" : \"git:git.example.com/octocat/Hello-World\",\n \"name\" : \"Hello-World\",\n \"network_count\" : 0,\n \"node_id\" : \"MDEwOlJlcG9zaXRvcnkxMjk2MjY5\",\n \"notifications_url\" : \"https://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating}\",\n \"open_issues\" : 1,\n \"open_issues_count\" : 0,\n \"owner\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"permissions\" : {\n \"admin\" : false,\n \"pull\" : true,\n \"push\" : false\n },\n \"private\" : false,\n \"pulls_url\" : \"https://api.github.com/repos/octocat/Hello-World/pulls{/number}\",\n \"pushed_at\" : \"2011-01-26T19:06:43Z\",\n \"releases_url\" : \"https://api.github.com/repos/octocat/Hello-World/releases{/id}\",\n \"size\" : 108,\n \"ssh_url\" : \"git@github.com:octocat/Hello-World.git\",\n \"stargazers_count\" : 80,\n \"stargazers_url\" : \"https://api.github.com/repos/octocat/Hello-World/stargazers\",\n \"statuses_url\" : \"https://api.github.com/repos/octocat/Hello-World/statuses/{sha}\",\n \"subscribers_count\" : 42,\n \"subscribers_url\" : \"https://api.github.com/repos/octocat/Hello-World/subscribers\",\n \"subscription_url\" : \"https://api.github.com/repos/octocat/Hello-World/subscription\",\n \"svn_url\" : \"https://svn.github.com/octocat/Hello-World\",\n \"tags_url\" : \"https://api.github.com/repos/octocat/Hello-World/tags\",\n \"teams_url\" : \"https://api.github.com/repos/octocat/Hello-World/teams\",\n \"topics\" : [ \"octocat\", \"atom\", \"electron\", \"api\" ],\n \"trees_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/trees{/sha}\",\n \"updated_at\" : \"2011-01-26T19:14:43Z\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World\",\n \"visibility\" : \"public\",\n \"watchers\" : 1,\n \"watchers_count\" : 80\n },\n \"permissions\" : {\n \"admin\" : false,\n \"pull\" : true,\n \"push\" : false\n },\n \"private\" : false,\n \"pulls_url\" : \"https://api.github.com/repos/octocat/Hello-World/pulls{/number}\",\n \"pushed_at\" : \"2011-01-26T19:06:43Z\",\n \"releases_url\" : \"https://api.github.com/repos/octocat/Hello-World/releases{/id}\",\n \"size\" : 108,\n \"source\" : {\n \"allow_merge_commit\" : true,\n \"allow_rebase_merge\" : true,\n \"allow_squash_merge\" : true,\n \"anonymous_access_enabled\" : false,\n \"archive_url\" : \"https://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref}\",\n \"archived\" : false,\n \"assignees_url\" : \"https://api.github.com/repos/octocat/Hello-World/assignees{/user}\",\n \"blobs_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/blobs{/sha}\",\n \"branches_url\" : \"https://api.github.com/repos/octocat/Hello-World/branches{/branch}\",\n \"clone_url\" : \"https://github.com/octocat/Hello-World.git\",\n \"collaborators_url\" : \"https://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator}\",\n \"comments_url\" : \"https://api.github.com/repos/octocat/Hello-World/comments{/number}\",\n \"commits_url\" : \"https://api.github.com/repos/octocat/Hello-World/commits{/sha}\",\n \"compare_url\" : \"https://api.github.com/repos/octocat/Hello-World/compare/{base}...{head}\",\n \"contents_url\" : \"https://api.github.com/repos/octocat/Hello-World/contents/{+path}\",\n \"contributors_url\" : \"https://api.github.com/repos/octocat/Hello-World/contributors\",\n \"created_at\" : \"2011-01-26T19:01:12Z\",\n \"default_branch\" : \"master\",\n \"delete_branch_on_merge\" : true,\n \"deployments_url\" : \"https://api.github.com/repos/octocat/Hello-World/deployments\",\n \"description\" : \"This your first repo!\",\n \"disabled\" : false,\n \"downloads_url\" : \"https://api.github.com/repos/octocat/Hello-World/downloads\",\n \"events_url\" : \"https://api.github.com/repos/octocat/Hello-World/events\",\n \"fork\" : false,\n \"forks\" : 1,\n \"forks_count\" : 9,\n \"forks_url\" : \"https://api.github.com/repos/octocat/Hello-World/forks\",\n \"full_name\" : \"octocat/Hello-World\",\n \"git_commits_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/commits{/sha}\",\n \"git_refs_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/refs{/sha}\",\n \"git_tags_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/tags{/sha}\",\n \"git_url\" : \"git:github.com/octocat/Hello-World.git\",\n \"has_downloads\" : true,\n \"has_issues\" : true,\n \"has_pages\" : false,\n \"has_projects\" : true,\n \"has_wiki\" : true,\n \"homepage\" : \"https://github.com\",\n \"hooks_url\" : \"https://api.github.com/repos/octocat/Hello-World/hooks\",\n \"html_url\" : \"https://github.com/octocat/Hello-World\",\n \"id\" : 1296269,\n \"is_template\" : true,\n \"issue_comment_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/comments{/number}\",\n \"issue_events_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/events{/number}\",\n \"issues_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues{/number}\",\n \"keys_url\" : \"https://api.github.com/repos/octocat/Hello-World/keys{/key_id}\",\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World/labels{/name}\",\n \"languages_url\" : \"https://api.github.com/repos/octocat/Hello-World/languages\",\n \"license\" : {\n \"html_url\" : \"https://api.github.com/licenses/mit\",\n \"key\" : \"mit\",\n \"name\" : \"MIT License\",\n \"node_id\" : \"MDc6TGljZW5zZW1pdA==\",\n \"spdx_id\" : \"MIT\",\n \"url\" : \"https://api.github.com/licenses/mit\"\n },\n \"merges_url\" : \"https://api.github.com/repos/octocat/Hello-World/merges\",\n \"milestones_url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones{/number}\",\n \"mirror_url\" : \"git:git.example.com/octocat/Hello-World\",\n \"name\" : \"Hello-World\",\n \"network_count\" : 0,\n \"node_id\" : \"MDEwOlJlcG9zaXRvcnkxMjk2MjY5\",\n \"notifications_url\" : \"https://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating}\",\n \"open_issues\" : 1,\n \"open_issues_count\" : 0,\n \"owner\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"permissions\" : {\n \"admin\" : false,\n \"pull\" : true,\n \"push\" : false\n },\n \"private\" : false,\n \"pulls_url\" : \"https://api.github.com/repos/octocat/Hello-World/pulls{/number}\",\n \"pushed_at\" : \"2011-01-26T19:06:43Z\",\n \"releases_url\" : \"https://api.github.com/repos/octocat/Hello-World/releases{/id}\",\n \"size\" : 108,\n \"ssh_url\" : \"git@github.com:octocat/Hello-World.git\",\n \"stargazers_count\" : 80,\n \"stargazers_url\" : \"https://api.github.com/repos/octocat/Hello-World/stargazers\",\n \"statuses_url\" : \"https://api.github.com/repos/octocat/Hello-World/statuses/{sha}\",\n \"subscribers_count\" : 42,\n \"subscribers_url\" : \"https://api.github.com/repos/octocat/Hello-World/subscribers\",\n \"subscription_url\" : \"https://api.github.com/repos/octocat/Hello-World/subscription\",\n \"svn_url\" : \"https://svn.github.com/octocat/Hello-World\",\n \"tags_url\" : \"https://api.github.com/repos/octocat/Hello-World/tags\",\n \"teams_url\" : \"https://api.github.com/repos/octocat/Hello-World/teams\",\n \"topics\" : [ \"octocat\", \"atom\", \"electron\", \"api\" ],\n \"trees_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/trees{/sha}\",\n \"updated_at\" : \"2011-01-26T19:14:43Z\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World\",\n \"visibility\" : \"public\",\n \"watchers\" : 1,\n \"watchers_count\" : 80\n },\n \"ssh_url\" : \"git@github.com:octocat/Hello-World.git\",\n \"stargazers_count\" : 80,\n \"stargazers_url\" : \"https://api.github.com/repos/octocat/Hello-World/stargazers\",\n \"statuses_url\" : \"https://api.github.com/repos/octocat/Hello-World/statuses/{sha}\",\n \"subscribers_count\" : 42,\n \"subscribers_url\" : \"https://api.github.com/repos/octocat/Hello-World/subscribers\",\n \"subscription_url\" : \"https://api.github.com/repos/octocat/Hello-World/subscription\",\n \"svn_url\" : \"https://svn.github.com/octocat/Hello-World\",\n \"tags_url\" : \"https://api.github.com/repos/octocat/Hello-World/tags\",\n \"teams_url\" : \"https://api.github.com/repos/octocat/Hello-World/teams\",\n \"template_repository\" : {\n \"allow_merge_commit\" : true,\n \"allow_rebase_merge\" : true,\n \"allow_squash_merge\" : true,\n \"archive_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/{archive_format}{/ref}\",\n \"archived\" : false,\n \"assignees_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/assignees{/user}\",\n \"blobs_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/git/blobs{/sha}\",\n \"branches_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/branches{/branch}\",\n \"clone_url\" : \"https://github.com/octocat/Hello-World-Template.git\",\n \"collaborators_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/collaborators{/collaborator}\",\n \"comments_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/comments{/number}\",\n \"commits_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/commits{/sha}\",\n \"compare_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/compare/{base}...{head}\",\n \"contents_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/contents/{+path}\",\n \"contributors_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/contributors\",\n \"created_at\" : \"2011-01-26T19:01:12Z\",\n \"default_branch\" : \"master\",\n \"delete_branch_on_merge\" : true,\n \"deployments_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/deployments\",\n \"description\" : \"This your first repo!\",\n \"disabled\" : false,\n \"downloads_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/downloads\",\n \"events_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/events\",\n \"fork\" : false,\n \"forks\" : 9,\n \"forks_count\" : 9,\n \"forks_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/forks\",\n \"full_name\" : \"octocat/Hello-World-Template\",\n \"git_commits_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/git/commits{/sha}\",\n \"git_refs_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/git/refs{/sha}\",\n \"git_tags_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/git/tags{/sha}\",\n \"git_url\" : \"git:github.com/octocat/Hello-World-Template.git\",\n \"has_downloads\" : true,\n \"has_issues\" : true,\n \"has_pages\" : false,\n \"has_projects\" : true,\n \"has_wiki\" : true,\n \"homepage\" : \"https://github.com\",\n \"hooks_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/hooks\",\n \"html_url\" : \"https://github.com/octocat/Hello-World-Template\",\n \"id\" : 1296269,\n \"is_template\" : true,\n \"issue_comment_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/issues/comments{/number}\",\n \"issue_events_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/issues/events{/number}\",\n \"issues_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/issues{/number}\",\n \"keys_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/keys{/key_id}\",\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/labels{/name}\",\n \"languages_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/languages\",\n \"license\" : {\n \"html_url\" : \"https://api.github.com/licenses/mit\",\n \"key\" : \"mit\",\n \"name\" : \"MIT License\",\n \"node_id\" : \"MDc6TGljZW5zZW1pdA==\",\n \"spdx_id\" : \"MIT\",\n \"url\" : \"https://api.github.com/licenses/mit\"\n },\n \"merges_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/merges\",\n \"milestones_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/milestones{/number}\",\n \"mirror_url\" : \"git:git.example.com/octocat/Hello-World-Template\",\n \"name\" : \"Hello-World-Template\",\n \"network_count\" : 0,\n \"node_id\" : \"MDEwOlJlcG9zaXRvcnkxMjk2MjY5\",\n \"notifications_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/notifications{?since,all,participating}\",\n \"open_issues\" : 0,\n \"open_issues_count\" : 0,\n \"owner\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"permissions\" : {\n \"admin\" : false,\n \"pull\" : true,\n \"push\" : false\n },\n \"private\" : false,\n \"pulls_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/pulls{/number}\",\n \"pushed_at\" : \"2011-01-26T19:06:43Z\",\n \"releases_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/releases{/id}\",\n \"size\" : 108,\n \"ssh_url\" : \"git@github.com:octocat/Hello-World-Template.git\",\n \"stargazers_count\" : 80,\n \"stargazers_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/stargazers\",\n \"statuses_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/statuses/{sha}\",\n \"subscribers_count\" : 42,\n \"subscribers_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/subscribers\",\n \"subscription_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/subscription\",\n \"svn_url\" : \"https://svn.github.com/octocat/Hello-World-Template\",\n \"tags_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/tags\",\n \"teams_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/teams\",\n \"temp_clone_token\" : \"ABTLWHOULUVAXGTRYU7OC2876QJ2O\",\n \"topics\" : [ \"octocat\", \"atom\", \"electron\", \"api\" ],\n \"trees_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/git/trees{/sha}\",\n \"updated_at\" : \"2011-01-26T19:14:43Z\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World-Template\",\n \"visibility\" : \"public\",\n \"watchers\" : 80,\n \"watchers_count\" : 80\n },\n \"topics\" : [ \"octocat\", \"atom\", \"electron\", \"api\" ],\n \"trees_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/trees{/sha}\",\n \"updated_at\" : \"2011-01-26T19:14:43Z\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World\",\n \"visibility\" : \"public\",\n \"watchers\" : 80,\n \"watchers_count\" : 80\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "0f05ceb5-a60e-4efc-bb73-d6c6112e165b", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.826313Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/get", + "schema": { + "description": "Full Repository", + "properties": { + "allow_forking": { + "example": true, + "type": "boolean" + }, + "allow_merge_commit": { + "example": true, + "type": "boolean" + }, + "allow_rebase_merge": { + "example": true, + "type": "boolean" + }, + "allow_squash_merge": { + "example": true, + "type": "boolean" + }, + "anonymous_access_enabled": { + "default": true, + "description": "Whether anonymous git access is allowed.", + "type": "boolean" + }, + "archive_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref}", + "type": "string" + }, + "archived": { + "type": "boolean" + }, + "assignees_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/assignees{/user}", + "type": "string" + }, + "blobs_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/git/blobs{/sha}", + "type": "string" + }, + "branches_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/branches{/branch}", + "type": "string" + }, + "clone_url": { + "example": "https://github.com/octocat/Hello-World.git", + "type": "string" + }, + "code_of_conduct": { + "$ref": "#/components/schemas/code-of-conduct-simple" + }, + "collaborators_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator}", + "type": "string" + }, + "comments_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/comments{/number}", + "type": "string" + }, + "commits_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/commits{/sha}", + "type": "string" + }, + "compare_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/compare/{base}...{head}", + "type": "string" + }, + "contents_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/contents/{+path}", + "type": "string" + }, + "contributors_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/contributors", + "format": "uri", + "type": "string" + }, + "created_at": { + "example": "2011-01-26T19:01:12Z", + "format": "date-time", + "type": "string" + }, + "default_branch": { + "example": "master", + "type": "string" + }, + "delete_branch_on_merge": { + "example": false, + "type": "boolean" + }, + "deployments_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/deployments", + "format": "uri", + "type": "string" + }, + "description": { + "example": "This your first repo!", + "nullable": true, + "type": "string" + }, + "disabled": { + "description": "Returns whether or not this repository disabled.", + "type": "boolean" + }, + "downloads_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/downloads", + "format": "uri", + "type": "string" + }, + "events_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/events", + "format": "uri", + "type": "string" + }, + "fork": { + "type": "boolean" + }, + "forks": { + "type": "integer" + }, + "forks_count": { + "example": 9, + "type": "integer" + }, + "forks_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/forks", + "format": "uri", + "type": "string" + }, + "full_name": { + "example": "octocat/Hello-World", + "type": "string" + }, + "git_commits_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/git/commits{/sha}", + "type": "string" + }, + "git_refs_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/git/refs{/sha}", + "type": "string" + }, + "git_tags_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/git/tags{/sha}", + "type": "string" + }, + "git_url": { + "example": "git:github.com/octocat/Hello-World.git", + "type": "string" + }, + "has_downloads": { + "example": true, + "type": "boolean" + }, + "has_issues": { + "example": true, + "type": "boolean" + }, + "has_pages": { + "type": "boolean" + }, + "has_projects": { + "example": true, + "type": "boolean" + }, + "has_wiki": { + "example": true, + "type": "boolean" + }, + "homepage": { + "example": "https://github.com", + "format": "uri", + "nullable": true, + "type": "string" + }, + "hooks_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/hooks", + "format": "uri", + "type": "string" + }, + "html_url": { + "example": "https://github.com/octocat/Hello-World", + "format": "uri", + "type": "string" + }, + "id": { + "example": 1296269, + "type": "integer" + }, + "is_template": { + "example": true, + "type": "boolean" + }, + "issue_comment_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/issues/comments{/number}", + "type": "string" + }, + "issue_events_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/issues/events{/number}", + "type": "string" + }, + "issues_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/issues{/number}", + "type": "string" + }, + "keys_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/keys{/key_id}", + "type": "string" + }, + "labels_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/labels{/name}", + "type": "string" + }, + "language": { + "nullable": true, + "type": "string" + }, + "languages_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/languages", + "format": "uri", + "type": "string" + }, + "license": { + "$ref": "#/components/schemas/nullable-license-simple" + }, + "master_branch": { + "type": "string" + }, + "merges_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/merges", + "format": "uri", + "type": "string" + }, + "milestones_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/milestones{/number}", + "type": "string" + }, + "mirror_url": { + "example": "git:git.example.com/octocat/Hello-World", + "format": "uri", + "nullable": true, + "type": "string" + }, + "name": { + "example": "Hello-World", + "type": "string" + }, + "network_count": { + "example": 0, + "type": "integer" + }, + "node_id": { + "example": "MDEwOlJlcG9zaXRvcnkxMjk2MjY5", + "type": "string" + }, + "notifications_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating}", + "type": "string" + }, + "open_issues": { + "type": "integer" + }, + "open_issues_count": { + "example": 0, + "type": "integer" + }, + "organization": { + "$ref": "#/components/schemas/nullable-simple-user" + }, + "owner": { + "$ref": "#/components/schemas/simple-user" + }, + "parent": { + "$ref": "#/components/schemas/repository" + }, + "permissions": { + "properties": { + "admin": { + "type": "boolean" + }, + "maintain": { + "type": "boolean" + }, + "pull": { + "type": "boolean" + }, + "push": { + "type": "boolean" + }, + "triage": { + "type": "boolean" + } + }, + "required": ["admin", "pull", "push"], + "type": "object" + }, + "private": { + "type": "boolean" + }, + "pulls_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/pulls{/number}", + "type": "string" + }, + "pushed_at": { + "example": "2011-01-26T19:06:43Z", + "format": "date-time", + "type": "string" + }, + "releases_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/releases{/id}", + "type": "string" + }, + "size": { + "example": 108, + "type": "integer" + }, + "source": { + "$ref": "#/components/schemas/repository" + }, + "ssh_url": { + "example": "git@github.com:octocat/Hello-World.git", + "type": "string" + }, + "stargazers_count": { + "example": 80, + "type": "integer" + }, + "stargazers_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/stargazers", + "format": "uri", + "type": "string" + }, + "statuses_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/statuses/{sha}", + "type": "string" + }, + "subscribers_count": { + "example": 42, + "type": "integer" + }, + "subscribers_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/subscribers", + "format": "uri", + "type": "string" + }, + "subscription_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/subscription", + "format": "uri", + "type": "string" + }, + "svn_url": { + "example": "https://svn.github.com/octocat/Hello-World", + "format": "uri", + "type": "string" + }, + "tags_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/tags", + "format": "uri", + "type": "string" + }, + "teams_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/teams", + "format": "uri", + "type": "string" + }, + "template_repository": { + "$ref": "#/components/schemas/nullable-repository" + }, + "topics": { + "example": ["octocat", "atom", "electron", "API"], + "items": { + "type": "string" + }, + "type": "array" + }, + "trees_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/git/trees{/sha}", + "type": "string" + }, + "updated_at": { + "example": "2011-01-26T19:14:43Z", + "format": "date-time", + "type": "string" + }, + "url": { + "example": "https://api.github.com/repos/octocat/Hello-World", + "format": "uri", + "type": "string" + }, + "visibility": { + "description": "The repository visibility: public, private, or internal.", + "example": "public", + "type": "string" + }, + "watchers": { + "type": "integer" + }, + "watchers_count": { + "example": 80, + "type": "integer" + } + }, + "required": [ + "archive_url", + "assignees_url", + "blobs_url", + "branches_url", + "collaborators_url", + "comments_url", + "commits_url", + "compare_url", + "contents_url", + "contributors_url", + "deployments_url", + "description", + "downloads_url", + "events_url", + "fork", + "forks_url", + "full_name", + "git_commits_url", + "git_refs_url", + "git_tags_url", + "hooks_url", + "html_url", + "id", + "node_id", + "issue_comment_url", + "issue_events_url", + "issues_url", + "keys_url", + "labels_url", + "languages_url", + "merges_url", + "milestones_url", + "name", + "notifications_url", + "owner", + "private", + "pulls_url", + "releases_url", + "stargazers_url", + "statuses_url", + "subscribers_url", + "subscription_url", + "tags_url", + "teams_url", + "trees_url", + "url", + "clone_url", + "default_branch", + "forks", + "forks_count", + "git_url", + "has_downloads", + "has_issues", + "has_projects", + "has_wiki", + "has_pages", + "homepage", + "language", + "archived", + "disabled", + "mirror_url", + "open_issues", + "open_issues_count", + "license", + "pushed_at", + "size", + "ssh_url", + "stargazers_count", + "svn_url", + "watchers", + "watchers_count", + "created_at", + "updated_at", + "network_count", + "subscribers_count" + ], + "title": "Full Repository", + "type": "object" + } + } + } + }, + "insertionIndex": 908 + }, + { + "id": "cc62bcc6-675a-4570-ad7c-34f3b448d703", + "name": "Get a repository - default-response", + "request": { + "urlPath": "/repos/j9618yvjmtxylruazr9crmuhrlejui7dqttrn6co445jyboqjz81huf4qwkgg7rjlh8styp9fj2hjp3imkl/mwg5at6ye4ly48npkooqq65xlb4xugk0bmwv767hkfh5ho1gafi5xgh3jcy1g5jy8zrwz5q3ja2z5wqqarvgtax5ruoeb4oc82augkon65tj047787hjx", + "method": "GET" + }, + "response": { + "status": 200, + "body": "{\n \"allow_merge_commit\" : true,\n \"allow_rebase_merge\" : true,\n \"allow_squash_merge\" : true,\n \"anonymous_access_enabled\" : false,\n \"archive_url\" : \"https://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref}\",\n \"archived\" : false,\n \"assignees_url\" : \"https://api.github.com/repos/octocat/Hello-World/assignees{/user}\",\n \"blobs_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/blobs{/sha}\",\n \"branches_url\" : \"https://api.github.com/repos/octocat/Hello-World/branches{/branch}\",\n \"clone_url\" : \"https://github.com/octocat/Hello-World.git\",\n \"collaborators_url\" : \"https://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator}\",\n \"comments_url\" : \"https://api.github.com/repos/octocat/Hello-World/comments{/number}\",\n \"commits_url\" : \"https://api.github.com/repos/octocat/Hello-World/commits{/sha}\",\n \"compare_url\" : \"https://api.github.com/repos/octocat/Hello-World/compare/{base}...{head}\",\n \"contents_url\" : \"https://api.github.com/repos/octocat/Hello-World/contents/{+path}\",\n \"contributors_url\" : \"https://api.github.com/repos/octocat/Hello-World/contributors\",\n \"created_at\" : \"2011-01-26T19:01:12Z\",\n \"default_branch\" : \"master\",\n \"delete_branch_on_merge\" : true,\n \"deployments_url\" : \"https://api.github.com/repos/octocat/Hello-World/deployments\",\n \"description\" : \"This your first repo!\",\n \"disabled\" : false,\n \"downloads_url\" : \"https://api.github.com/repos/octocat/Hello-World/downloads\",\n \"events_url\" : \"https://api.github.com/repos/octocat/Hello-World/events\",\n \"fork\" : false,\n \"forks\" : 9,\n \"forks_count\" : 9,\n \"forks_url\" : \"https://api.github.com/repos/octocat/Hello-World/forks\",\n \"full_name\" : \"octocat/Hello-World\",\n \"git_commits_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/commits{/sha}\",\n \"git_refs_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/refs{/sha}\",\n \"git_tags_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/tags{/sha}\",\n \"git_url\" : \"git:github.com/octocat/Hello-World.git\",\n \"has_downloads\" : true,\n \"has_issues\" : true,\n \"has_pages\" : false,\n \"has_projects\" : true,\n \"has_wiki\" : true,\n \"homepage\" : \"https://github.com\",\n \"hooks_url\" : \"https://api.github.com/repos/octocat/Hello-World/hooks\",\n \"html_url\" : \"https://github.com/octocat/Hello-World\",\n \"id\" : 1296269,\n \"is_template\" : false,\n \"issue_comment_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/comments{/number}\",\n \"issue_events_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/events{/number}\",\n \"issues_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues{/number}\",\n \"keys_url\" : \"https://api.github.com/repos/octocat/Hello-World/keys{/key_id}\",\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World/labels{/name}\",\n \"languages_url\" : \"https://api.github.com/repos/octocat/Hello-World/languages\",\n \"license\" : {\n \"key\" : \"mit\",\n \"name\" : \"MIT License\",\n \"node_id\" : \"MDc6TGljZW5zZW1pdA==\",\n \"spdx_id\" : \"MIT\",\n \"url\" : \"https://api.github.com/licenses/mit\"\n },\n \"merges_url\" : \"https://api.github.com/repos/octocat/Hello-World/merges\",\n \"milestones_url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones{/number}\",\n \"mirror_url\" : \"git:git.example.com/octocat/Hello-World\",\n \"name\" : \"Hello-World\",\n \"network_count\" : 0,\n \"node_id\" : \"MDEwOlJlcG9zaXRvcnkxMjk2MjY5\",\n \"notifications_url\" : \"https://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating}\",\n \"open_issues\" : 0,\n \"open_issues_count\" : 0,\n \"organization\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"Organization\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"owner\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"parent\" : {\n \"allow_merge_commit\" : true,\n \"allow_rebase_merge\" : true,\n \"allow_squash_merge\" : true,\n \"anonymous_access_enabled\" : false,\n \"archive_url\" : \"https://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref}\",\n \"archived\" : false,\n \"assignees_url\" : \"https://api.github.com/repos/octocat/Hello-World/assignees{/user}\",\n \"blobs_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/blobs{/sha}\",\n \"branches_url\" : \"https://api.github.com/repos/octocat/Hello-World/branches{/branch}\",\n \"clone_url\" : \"https://github.com/octocat/Hello-World.git\",\n \"collaborators_url\" : \"https://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator}\",\n \"comments_url\" : \"https://api.github.com/repos/octocat/Hello-World/comments{/number}\",\n \"commits_url\" : \"https://api.github.com/repos/octocat/Hello-World/commits{/sha}\",\n \"compare_url\" : \"https://api.github.com/repos/octocat/Hello-World/compare/{base}...{head}\",\n \"contents_url\" : \"https://api.github.com/repos/octocat/Hello-World/contents/{+path}\",\n \"contributors_url\" : \"https://api.github.com/repos/octocat/Hello-World/contributors\",\n \"created_at\" : \"2011-01-26T19:01:12Z\",\n \"default_branch\" : \"master\",\n \"delete_branch_on_merge\" : true,\n \"deployments_url\" : \"https://api.github.com/repos/octocat/Hello-World/deployments\",\n \"description\" : \"This your first repo!\",\n \"disabled\" : false,\n \"downloads_url\" : \"https://api.github.com/repos/octocat/Hello-World/downloads\",\n \"events_url\" : \"https://api.github.com/repos/octocat/Hello-World/events\",\n \"fork\" : false,\n \"forks\" : 1,\n \"forks_count\" : 9,\n \"forks_url\" : \"https://api.github.com/repos/octocat/Hello-World/forks\",\n \"full_name\" : \"octocat/Hello-World\",\n \"git_commits_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/commits{/sha}\",\n \"git_refs_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/refs{/sha}\",\n \"git_tags_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/tags{/sha}\",\n \"git_url\" : \"git:github.com/octocat/Hello-World.git\",\n \"has_downloads\" : true,\n \"has_issues\" : true,\n \"has_pages\" : false,\n \"has_projects\" : true,\n \"has_wiki\" : true,\n \"homepage\" : \"https://github.com\",\n \"hooks_url\" : \"https://api.github.com/repos/octocat/Hello-World/hooks\",\n \"html_url\" : \"https://github.com/octocat/Hello-World\",\n \"id\" : 1296269,\n \"is_template\" : true,\n \"issue_comment_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/comments{/number}\",\n \"issue_events_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/events{/number}\",\n \"issues_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues{/number}\",\n \"keys_url\" : \"https://api.github.com/repos/octocat/Hello-World/keys{/key_id}\",\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World/labels{/name}\",\n \"languages_url\" : \"https://api.github.com/repos/octocat/Hello-World/languages\",\n \"license\" : {\n \"html_url\" : \"https://api.github.com/licenses/mit\",\n \"key\" : \"mit\",\n \"name\" : \"MIT License\",\n \"node_id\" : \"MDc6TGljZW5zZW1pdA==\",\n \"spdx_id\" : \"MIT\",\n \"url\" : \"https://api.github.com/licenses/mit\"\n },\n \"merges_url\" : \"https://api.github.com/repos/octocat/Hello-World/merges\",\n \"milestones_url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones{/number}\",\n \"mirror_url\" : \"git:git.example.com/octocat/Hello-World\",\n \"name\" : \"Hello-World\",\n \"network_count\" : 0,\n \"node_id\" : \"MDEwOlJlcG9zaXRvcnkxMjk2MjY5\",\n \"notifications_url\" : \"https://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating}\",\n \"open_issues\" : 1,\n \"open_issues_count\" : 0,\n \"owner\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"permissions\" : {\n \"admin\" : false,\n \"pull\" : true,\n \"push\" : false\n },\n \"private\" : false,\n \"pulls_url\" : \"https://api.github.com/repos/octocat/Hello-World/pulls{/number}\",\n \"pushed_at\" : \"2011-01-26T19:06:43Z\",\n \"releases_url\" : \"https://api.github.com/repos/octocat/Hello-World/releases{/id}\",\n \"size\" : 108,\n \"ssh_url\" : \"git@github.com:octocat/Hello-World.git\",\n \"stargazers_count\" : 80,\n \"stargazers_url\" : \"https://api.github.com/repos/octocat/Hello-World/stargazers\",\n \"statuses_url\" : \"https://api.github.com/repos/octocat/Hello-World/statuses/{sha}\",\n \"subscribers_count\" : 42,\n \"subscribers_url\" : \"https://api.github.com/repos/octocat/Hello-World/subscribers\",\n \"subscription_url\" : \"https://api.github.com/repos/octocat/Hello-World/subscription\",\n \"svn_url\" : \"https://svn.github.com/octocat/Hello-World\",\n \"tags_url\" : \"https://api.github.com/repos/octocat/Hello-World/tags\",\n \"teams_url\" : \"https://api.github.com/repos/octocat/Hello-World/teams\",\n \"topics\" : [ \"octocat\", \"atom\", \"electron\", \"api\" ],\n \"trees_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/trees{/sha}\",\n \"updated_at\" : \"2011-01-26T19:14:43Z\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World\",\n \"visibility\" : \"public\",\n \"watchers\" : 1,\n \"watchers_count\" : 80\n },\n \"permissions\" : {\n \"admin\" : false,\n \"pull\" : true,\n \"push\" : false\n },\n \"private\" : false,\n \"pulls_url\" : \"https://api.github.com/repos/octocat/Hello-World/pulls{/number}\",\n \"pushed_at\" : \"2011-01-26T19:06:43Z\",\n \"releases_url\" : \"https://api.github.com/repos/octocat/Hello-World/releases{/id}\",\n \"size\" : 108,\n \"source\" : {\n \"allow_merge_commit\" : true,\n \"allow_rebase_merge\" : true,\n \"allow_squash_merge\" : true,\n \"anonymous_access_enabled\" : false,\n \"archive_url\" : \"https://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref}\",\n \"archived\" : false,\n \"assignees_url\" : \"https://api.github.com/repos/octocat/Hello-World/assignees{/user}\",\n \"blobs_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/blobs{/sha}\",\n \"branches_url\" : \"https://api.github.com/repos/octocat/Hello-World/branches{/branch}\",\n \"clone_url\" : \"https://github.com/octocat/Hello-World.git\",\n \"collaborators_url\" : \"https://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator}\",\n \"comments_url\" : \"https://api.github.com/repos/octocat/Hello-World/comments{/number}\",\n \"commits_url\" : \"https://api.github.com/repos/octocat/Hello-World/commits{/sha}\",\n \"compare_url\" : \"https://api.github.com/repos/octocat/Hello-World/compare/{base}...{head}\",\n \"contents_url\" : \"https://api.github.com/repos/octocat/Hello-World/contents/{+path}\",\n \"contributors_url\" : \"https://api.github.com/repos/octocat/Hello-World/contributors\",\n \"created_at\" : \"2011-01-26T19:01:12Z\",\n \"default_branch\" : \"master\",\n \"delete_branch_on_merge\" : true,\n \"deployments_url\" : \"https://api.github.com/repos/octocat/Hello-World/deployments\",\n \"description\" : \"This your first repo!\",\n \"disabled\" : false,\n \"downloads_url\" : \"https://api.github.com/repos/octocat/Hello-World/downloads\",\n \"events_url\" : \"https://api.github.com/repos/octocat/Hello-World/events\",\n \"fork\" : false,\n \"forks\" : 1,\n \"forks_count\" : 9,\n \"forks_url\" : \"https://api.github.com/repos/octocat/Hello-World/forks\",\n \"full_name\" : \"octocat/Hello-World\",\n \"git_commits_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/commits{/sha}\",\n \"git_refs_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/refs{/sha}\",\n \"git_tags_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/tags{/sha}\",\n \"git_url\" : \"git:github.com/octocat/Hello-World.git\",\n \"has_downloads\" : true,\n \"has_issues\" : true,\n \"has_pages\" : false,\n \"has_projects\" : true,\n \"has_wiki\" : true,\n \"homepage\" : \"https://github.com\",\n \"hooks_url\" : \"https://api.github.com/repos/octocat/Hello-World/hooks\",\n \"html_url\" : \"https://github.com/octocat/Hello-World\",\n \"id\" : 1296269,\n \"is_template\" : true,\n \"issue_comment_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/comments{/number}\",\n \"issue_events_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/events{/number}\",\n \"issues_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues{/number}\",\n \"keys_url\" : \"https://api.github.com/repos/octocat/Hello-World/keys{/key_id}\",\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World/labels{/name}\",\n \"languages_url\" : \"https://api.github.com/repos/octocat/Hello-World/languages\",\n \"license\" : {\n \"html_url\" : \"https://api.github.com/licenses/mit\",\n \"key\" : \"mit\",\n \"name\" : \"MIT License\",\n \"node_id\" : \"MDc6TGljZW5zZW1pdA==\",\n \"spdx_id\" : \"MIT\",\n \"url\" : \"https://api.github.com/licenses/mit\"\n },\n \"merges_url\" : \"https://api.github.com/repos/octocat/Hello-World/merges\",\n \"milestones_url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones{/number}\",\n \"mirror_url\" : \"git:git.example.com/octocat/Hello-World\",\n \"name\" : \"Hello-World\",\n \"network_count\" : 0,\n \"node_id\" : \"MDEwOlJlcG9zaXRvcnkxMjk2MjY5\",\n \"notifications_url\" : \"https://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating}\",\n \"open_issues\" : 1,\n \"open_issues_count\" : 0,\n \"owner\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"permissions\" : {\n \"admin\" : false,\n \"pull\" : true,\n \"push\" : false\n },\n \"private\" : false,\n \"pulls_url\" : \"https://api.github.com/repos/octocat/Hello-World/pulls{/number}\",\n \"pushed_at\" : \"2011-01-26T19:06:43Z\",\n \"releases_url\" : \"https://api.github.com/repos/octocat/Hello-World/releases{/id}\",\n \"size\" : 108,\n \"ssh_url\" : \"git@github.com:octocat/Hello-World.git\",\n \"stargazers_count\" : 80,\n \"stargazers_url\" : \"https://api.github.com/repos/octocat/Hello-World/stargazers\",\n \"statuses_url\" : \"https://api.github.com/repos/octocat/Hello-World/statuses/{sha}\",\n \"subscribers_count\" : 42,\n \"subscribers_url\" : \"https://api.github.com/repos/octocat/Hello-World/subscribers\",\n \"subscription_url\" : \"https://api.github.com/repos/octocat/Hello-World/subscription\",\n \"svn_url\" : \"https://svn.github.com/octocat/Hello-World\",\n \"tags_url\" : \"https://api.github.com/repos/octocat/Hello-World/tags\",\n \"teams_url\" : \"https://api.github.com/repos/octocat/Hello-World/teams\",\n \"topics\" : [ \"octocat\", \"atom\", \"electron\", \"api\" ],\n \"trees_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/trees{/sha}\",\n \"updated_at\" : \"2011-01-26T19:14:43Z\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World\",\n \"visibility\" : \"public\",\n \"watchers\" : 1,\n \"watchers_count\" : 80\n },\n \"ssh_url\" : \"git@github.com:octocat/Hello-World.git\",\n \"stargazers_count\" : 80,\n \"stargazers_url\" : \"https://api.github.com/repos/octocat/Hello-World/stargazers\",\n \"statuses_url\" : \"https://api.github.com/repos/octocat/Hello-World/statuses/{sha}\",\n \"subscribers_count\" : 42,\n \"subscribers_url\" : \"https://api.github.com/repos/octocat/Hello-World/subscribers\",\n \"subscription_url\" : \"https://api.github.com/repos/octocat/Hello-World/subscription\",\n \"svn_url\" : \"https://svn.github.com/octocat/Hello-World\",\n \"tags_url\" : \"https://api.github.com/repos/octocat/Hello-World/tags\",\n \"teams_url\" : \"https://api.github.com/repos/octocat/Hello-World/teams\",\n \"template_repository\" : {\n \"allow_merge_commit\" : true,\n \"allow_rebase_merge\" : true,\n \"allow_squash_merge\" : true,\n \"archive_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/{archive_format}{/ref}\",\n \"archived\" : false,\n \"assignees_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/assignees{/user}\",\n \"blobs_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/git/blobs{/sha}\",\n \"branches_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/branches{/branch}\",\n \"clone_url\" : \"https://github.com/octocat/Hello-World-Template.git\",\n \"collaborators_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/collaborators{/collaborator}\",\n \"comments_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/comments{/number}\",\n \"commits_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/commits{/sha}\",\n \"compare_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/compare/{base}...{head}\",\n \"contents_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/contents/{+path}\",\n \"contributors_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/contributors\",\n \"created_at\" : \"2011-01-26T19:01:12Z\",\n \"default_branch\" : \"master\",\n \"delete_branch_on_merge\" : true,\n \"deployments_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/deployments\",\n \"description\" : \"This your first repo!\",\n \"disabled\" : false,\n \"downloads_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/downloads\",\n \"events_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/events\",\n \"fork\" : false,\n \"forks\" : 9,\n \"forks_count\" : 9,\n \"forks_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/forks\",\n \"full_name\" : \"octocat/Hello-World-Template\",\n \"git_commits_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/git/commits{/sha}\",\n \"git_refs_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/git/refs{/sha}\",\n \"git_tags_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/git/tags{/sha}\",\n \"git_url\" : \"git:github.com/octocat/Hello-World-Template.git\",\n \"has_downloads\" : true,\n \"has_issues\" : true,\n \"has_pages\" : false,\n \"has_projects\" : true,\n \"has_wiki\" : true,\n \"homepage\" : \"https://github.com\",\n \"hooks_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/hooks\",\n \"html_url\" : \"https://github.com/octocat/Hello-World-Template\",\n \"id\" : 1296269,\n \"is_template\" : true,\n \"issue_comment_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/issues/comments{/number}\",\n \"issue_events_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/issues/events{/number}\",\n \"issues_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/issues{/number}\",\n \"keys_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/keys{/key_id}\",\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/labels{/name}\",\n \"languages_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/languages\",\n \"license\" : {\n \"html_url\" : \"https://api.github.com/licenses/mit\",\n \"key\" : \"mit\",\n \"name\" : \"MIT License\",\n \"node_id\" : \"MDc6TGljZW5zZW1pdA==\",\n \"spdx_id\" : \"MIT\",\n \"url\" : \"https://api.github.com/licenses/mit\"\n },\n \"merges_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/merges\",\n \"milestones_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/milestones{/number}\",\n \"mirror_url\" : \"git:git.example.com/octocat/Hello-World-Template\",\n \"name\" : \"Hello-World-Template\",\n \"network_count\" : 0,\n \"node_id\" : \"MDEwOlJlcG9zaXRvcnkxMjk2MjY5\",\n \"notifications_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/notifications{?since,all,participating}\",\n \"open_issues\" : 0,\n \"open_issues_count\" : 0,\n \"owner\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"permissions\" : {\n \"admin\" : false,\n \"pull\" : true,\n \"push\" : false\n },\n \"private\" : false,\n \"pulls_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/pulls{/number}\",\n \"pushed_at\" : \"2011-01-26T19:06:43Z\",\n \"releases_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/releases{/id}\",\n \"size\" : 108,\n \"ssh_url\" : \"git@github.com:octocat/Hello-World-Template.git\",\n \"stargazers_count\" : 80,\n \"stargazers_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/stargazers\",\n \"statuses_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/statuses/{sha}\",\n \"subscribers_count\" : 42,\n \"subscribers_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/subscribers\",\n \"subscription_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/subscription\",\n \"svn_url\" : \"https://svn.github.com/octocat/Hello-World-Template\",\n \"tags_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/tags\",\n \"teams_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/teams\",\n \"temp_clone_token\" : \"ABTLWHOULUVAXGTRYU7OC2876QJ2O\",\n \"topics\" : [ \"octocat\", \"atom\", \"electron\", \"api\" ],\n \"trees_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/git/trees{/sha}\",\n \"updated_at\" : \"2011-01-26T19:14:43Z\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World-Template\",\n \"visibility\" : \"public\",\n \"watchers\" : 80,\n \"watchers_count\" : 80\n },\n \"topics\" : [ \"octocat\", \"atom\", \"electron\", \"api\" ],\n \"trees_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/trees{/sha}\",\n \"updated_at\" : \"2011-01-26T19:14:43Z\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World\",\n \"visibility\" : \"public\",\n \"watchers\" : 80,\n \"watchers_count\" : 80\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "cc62bcc6-675a-4570-ad7c-34f3b448d703", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.825683Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/get", + "schema": { + "description": "Full Repository", + "properties": { + "allow_forking": { + "example": true, + "type": "boolean" + }, + "allow_merge_commit": { + "example": true, + "type": "boolean" + }, + "allow_rebase_merge": { + "example": true, + "type": "boolean" + }, + "allow_squash_merge": { + "example": true, + "type": "boolean" + }, + "anonymous_access_enabled": { + "default": true, + "description": "Whether anonymous git access is allowed.", + "type": "boolean" + }, + "archive_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref}", + "type": "string" + }, + "archived": { + "type": "boolean" + }, + "assignees_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/assignees{/user}", + "type": "string" + }, + "blobs_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/git/blobs{/sha}", + "type": "string" + }, + "branches_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/branches{/branch}", + "type": "string" + }, + "clone_url": { + "example": "https://github.com/octocat/Hello-World.git", + "type": "string" + }, + "code_of_conduct": { + "$ref": "#/components/schemas/code-of-conduct-simple" + }, + "collaborators_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator}", + "type": "string" + }, + "comments_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/comments{/number}", + "type": "string" + }, + "commits_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/commits{/sha}", + "type": "string" + }, + "compare_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/compare/{base}...{head}", + "type": "string" + }, + "contents_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/contents/{+path}", + "type": "string" + }, + "contributors_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/contributors", + "format": "uri", + "type": "string" + }, + "created_at": { + "example": "2011-01-26T19:01:12Z", + "format": "date-time", + "type": "string" + }, + "default_branch": { + "example": "master", + "type": "string" + }, + "delete_branch_on_merge": { + "example": false, + "type": "boolean" + }, + "deployments_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/deployments", + "format": "uri", + "type": "string" + }, + "description": { + "example": "This your first repo!", + "nullable": true, + "type": "string" + }, + "disabled": { + "description": "Returns whether or not this repository disabled.", + "type": "boolean" + }, + "downloads_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/downloads", + "format": "uri", + "type": "string" + }, + "events_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/events", + "format": "uri", + "type": "string" + }, + "fork": { + "type": "boolean" + }, + "forks": { + "type": "integer" + }, + "forks_count": { + "example": 9, + "type": "integer" + }, + "forks_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/forks", + "format": "uri", + "type": "string" + }, + "full_name": { + "example": "octocat/Hello-World", + "type": "string" + }, + "git_commits_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/git/commits{/sha}", + "type": "string" + }, + "git_refs_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/git/refs{/sha}", + "type": "string" + }, + "git_tags_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/git/tags{/sha}", + "type": "string" + }, + "git_url": { + "example": "git:github.com/octocat/Hello-World.git", + "type": "string" + }, + "has_downloads": { + "example": true, + "type": "boolean" + }, + "has_issues": { + "example": true, + "type": "boolean" + }, + "has_pages": { + "type": "boolean" + }, + "has_projects": { + "example": true, + "type": "boolean" + }, + "has_wiki": { + "example": true, + "type": "boolean" + }, + "homepage": { + "example": "https://github.com", + "format": "uri", + "nullable": true, + "type": "string" + }, + "hooks_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/hooks", + "format": "uri", + "type": "string" + }, + "html_url": { + "example": "https://github.com/octocat/Hello-World", + "format": "uri", + "type": "string" + }, + "id": { + "example": 1296269, + "type": "integer" + }, + "is_template": { + "example": true, + "type": "boolean" + }, + "issue_comment_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/issues/comments{/number}", + "type": "string" + }, + "issue_events_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/issues/events{/number}", + "type": "string" + }, + "issues_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/issues{/number}", + "type": "string" + }, + "keys_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/keys{/key_id}", + "type": "string" + }, + "labels_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/labels{/name}", + "type": "string" + }, + "language": { + "nullable": true, + "type": "string" + }, + "languages_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/languages", + "format": "uri", + "type": "string" + }, + "license": { + "$ref": "#/components/schemas/nullable-license-simple" + }, + "master_branch": { + "type": "string" + }, + "merges_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/merges", + "format": "uri", + "type": "string" + }, + "milestones_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/milestones{/number}", + "type": "string" + }, + "mirror_url": { + "example": "git:git.example.com/octocat/Hello-World", + "format": "uri", + "nullable": true, + "type": "string" + }, + "name": { + "example": "Hello-World", + "type": "string" + }, + "network_count": { + "example": 0, + "type": "integer" + }, + "node_id": { + "example": "MDEwOlJlcG9zaXRvcnkxMjk2MjY5", + "type": "string" + }, + "notifications_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating}", + "type": "string" + }, + "open_issues": { + "type": "integer" + }, + "open_issues_count": { + "example": 0, + "type": "integer" + }, + "organization": { + "$ref": "#/components/schemas/nullable-simple-user" + }, + "owner": { + "$ref": "#/components/schemas/simple-user" + }, + "parent": { + "$ref": "#/components/schemas/repository" + }, + "permissions": { + "properties": { + "admin": { + "type": "boolean" + }, + "maintain": { + "type": "boolean" + }, + "pull": { + "type": "boolean" + }, + "push": { + "type": "boolean" + }, + "triage": { + "type": "boolean" + } + }, + "required": ["admin", "pull", "push"], + "type": "object" + }, + "private": { + "type": "boolean" + }, + "pulls_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/pulls{/number}", + "type": "string" + }, + "pushed_at": { + "example": "2011-01-26T19:06:43Z", + "format": "date-time", + "type": "string" + }, + "releases_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/releases{/id}", + "type": "string" + }, + "size": { + "example": 108, + "type": "integer" + }, + "source": { + "$ref": "#/components/schemas/repository" + }, + "ssh_url": { + "example": "git@github.com:octocat/Hello-World.git", + "type": "string" + }, + "stargazers_count": { + "example": 80, + "type": "integer" + }, + "stargazers_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/stargazers", + "format": "uri", + "type": "string" + }, + "statuses_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/statuses/{sha}", + "type": "string" + }, + "subscribers_count": { + "example": 42, + "type": "integer" + }, + "subscribers_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/subscribers", + "format": "uri", + "type": "string" + }, + "subscription_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/subscription", + "format": "uri", + "type": "string" + }, + "svn_url": { + "example": "https://svn.github.com/octocat/Hello-World", + "format": "uri", + "type": "string" + }, + "tags_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/tags", + "format": "uri", + "type": "string" + }, + "teams_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/teams", + "format": "uri", + "type": "string" + }, + "template_repository": { + "$ref": "#/components/schemas/nullable-repository" + }, + "topics": { + "example": ["octocat", "atom", "electron", "API"], + "items": { + "type": "string" + }, + "type": "array" + }, + "trees_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/git/trees{/sha}", + "type": "string" + }, + "updated_at": { + "example": "2011-01-26T19:14:43Z", + "format": "date-time", + "type": "string" + }, + "url": { + "example": "https://api.github.com/repos/octocat/Hello-World", + "format": "uri", + "type": "string" + }, + "visibility": { + "description": "The repository visibility: public, private, or internal.", + "example": "public", + "type": "string" + }, + "watchers": { + "type": "integer" + }, + "watchers_count": { + "example": 80, + "type": "integer" + } + }, + "required": [ + "archive_url", + "assignees_url", + "blobs_url", + "branches_url", + "collaborators_url", + "comments_url", + "commits_url", + "compare_url", + "contents_url", + "contributors_url", + "deployments_url", + "description", + "downloads_url", + "events_url", + "fork", + "forks_url", + "full_name", + "git_commits_url", + "git_refs_url", + "git_tags_url", + "hooks_url", + "html_url", + "id", + "node_id", + "issue_comment_url", + "issue_events_url", + "issues_url", + "keys_url", + "labels_url", + "languages_url", + "merges_url", + "milestones_url", + "name", + "notifications_url", + "owner", + "private", + "pulls_url", + "releases_url", + "stargazers_url", + "statuses_url", + "subscribers_url", + "subscription_url", + "tags_url", + "teams_url", + "trees_url", + "url", + "clone_url", + "default_branch", + "forks", + "forks_count", + "git_url", + "has_downloads", + "has_issues", + "has_projects", + "has_wiki", + "has_pages", + "homepage", + "language", + "archived", + "disabled", + "mirror_url", + "open_issues", + "open_issues_count", + "license", + "pushed_at", + "size", + "ssh_url", + "stargazers_count", + "svn_url", + "watchers", + "watchers_count", + "created_at", + "updated_at", + "network_count", + "subscribers_count" + ], + "title": "Full Repository", + "type": "object" + } + } + } + }, + "insertionIndex": 909 + }, + { + "id": "73a4e45e-ffb1-46d2-8b8b-29376fe35f03", + "name": "Delete a repository (application/json)", + "request": { + "urlPath": "/repos/1jzenlz1e04v5ykjy9wqe7v13cmk7f4xas6um/0dlqvrp7y5zx7d9opjam7frubfnmjc2ijgba330wm4b548rp01btb0rja9dzuw34j612yj59kybrh33sibi777amc01bbz998eped50y18omjme8r71vxv5rjyzhz8r2dmdazfwsfaxql5c6i7ao14wjalvjlvdes04u9ha7bsyy45h", + "method": "DELETE", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/725582\",\n \"message\" : \"Est repellendus accusantium labore pariatur hic ut asperiores. Est dolor et quidem. Itaque ipsam at animi ea blanditiis. Dolorum quas aut vero magni sint et eos.\",\n \"url\" : \"https://web.example.mocklab.io/185498\",\n \"status\" : \"wrq8402mrqvvgy8ie8473fk8j0wwiyqnuw3x6p2w\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "73a4e45e-ffb1-46d2-8b8b-29376fe35f03", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.824505Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/delete", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 910 + }, + { + "id": "c49d8e4c-38f6-4371-845a-f213e0b1cd85", + "name": "Delete a repository (application/json)", + "request": { + "urlPath": "/repos/l1mqwune1sh5oslw3eo95u501ouwhfz0sj5kj1uwjwbrbfck8zfy667rvlgs4a4v8vq2gofk5ziqyjl89methtg9uum34giwnowzsnyi6tgyoo5jbuwew9uoup9k69pekafd7ezq28kmeu8hss2p7kb7jf/i4arx94avp8r6dvjokyk5b1cw1qv9b3bqhacw9rc5yflw60", + "method": "DELETE", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 403, + "body": "{\n \"documentation_url\" : \"https://docs.github.com/enterprise-server@2.21/rest/reference/repos#delete-a-repository\",\n \"message\" : \"Organization members cannot delete repositories.\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "c49d8e4c-38f6-4371-845a-f213e0b1cd85", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.824281Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/delete", + "schema": { + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "type": "object" + } + } + } + }, + "insertionIndex": 911 + }, + { + "id": "dd298f22-106e-46ad-9b99-47c25429140a", + "name": "Delete a repository (application/json)", + "request": { + "urlPath": "/repos/r6e454us9u17x3zfhhxbu3eecbrqx1gd0uf5dnlcren/zha2fe9a1p8sfat28qzbix5q5c3noep89qjxtk6kadko4lzp79wmvdyv3kj6o6zwmwswdorly7wy4wqonayfsfxdehd1ilwz1a5l835ut75v14yo2yh4qxmpz46byiwtih5zyqmi4wzll7r0etro019v805dvpfsy40l64oqdvt0", + "method": "DELETE", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 307, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/708614\",\n \"message\" : \"Id et ut reprehenderit molestiae sunt dolorem. Vero harum nam et accusantium voluptatum. Corporis sequi amet numquam modi reiciendis. Dolor et aliquam.\",\n \"url\" : \"https://web.example.mocklab.io/727354\",\n \"status\" : \"2kjjuqaofw7s240basyfupq0dft0lxi2xbsiaruv4mae6sh2bns55gtusnqc9y0npp5md5qizor32dk1cpptsqkmocv7iiynvmmwhh0wp9pa56ii0t95vcyc9jk2zfcl2qpj8mjilji3q4ef3er0ztrvesxqysb6308mo8v4k9ka7dwpb8h2mif8sj2um\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "dd298f22-106e-46ad-9b99-47c25429140a", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.824207Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/delete", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 912 + }, + { + "id": "d02c7c29-8edf-4bc6-aca7-4dd230b7b82c", + "name": "Delete a repository - 204", + "request": { + "urlPath": "/repos/tkt6ry3li5o9xd06rps9rtm3etb3rla27zbq9554g4p2r819a32oh4fcms2jzv00lhd0392f5sh2yzemovrf0plagdahak504zp1kxvhvoump3cyp8je48lpr1qcy91ifkikgo7qf15ugxav4qp31a7ll091x8ji3tszscjzcfiynft0yafo/0ta18grm84nbbh105e5ffm4y4n10ow3j9m3x2r0kg4m69hbl3vtshth0t0un22q7ui1353n", + "method": "DELETE" + }, + "response": { + "status": 204 + }, + "uuid": "d02c7c29-8edf-4bc6-aca7-4dd230b7b82c", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.823988Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/delete" + } + } + }, + "insertionIndex": 913 + }, + { + "id": "72415cde-93b8-4e81-8a83-094cb3c7348c", + "name": "Delete a reaction (Legacy) (application/json)", + "request": { + "urlPath": "/reactions/3486880388035733448", + "method": "DELETE", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 415, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/681618\",\n \"message\" : \"Id nemo consequuntur ullam aut nesciunt qui. Est quam excepturi quod dolorum at harum repudiandae. Omnis praesentium nihil sit. Omnis est sit veniam deserunt eveniet qui.\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "72415cde-93b8-4e81-8a83-094cb3c7348c", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.823934Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "reactions/delete-legacy", + "schema": { + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": ["message", "documentation_url"], + "type": "object" + } + } + } + }, + "insertionIndex": 914 + }, + { + "id": "f692f9e1-8f5e-4588-81f5-10106f436291", + "name": "Delete a reaction (Legacy) (application/json)", + "request": { + "urlPath": "/reactions/5138250168573715820", + "method": "DELETE", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 410, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/345599\",\n \"message\" : \"Voluptatem quo sunt et aut voluptas autem qui. Deleniti odio in ex ut voluptas ea aut. Harum fuga vitae sed possimus enim unde minima.\",\n \"url\" : \"https://web.example.mocklab.io/086890\",\n \"status\" : \"qqsfq0utdmkww4zd5s7cn5cvnrlcbzi7vaxwlfwib2mt7lmexdykhoexd75v0bey52fktwmdn411tpw4ppboz926zfdr01d5vflzalmdk7hie6bsknfa9fdqaq70xlww34zoxwiqgfrqperf2410\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "f692f9e1-8f5e-4588-81f5-10106f436291", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.823793Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "reactions/delete-legacy", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 915 + }, + { + "id": "8e9f6082-e269-4c42-8a58-175e18820539", + "name": "Delete a reaction (Legacy) (application/json)", + "request": { + "urlPath": "/reactions/7052500485565429485", + "method": "DELETE", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 403, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/766221\",\n \"message\" : \"Asperiores provident doloribus. Cupiditate est totam nihil aut. Itaque non quis repudiandae.\",\n \"url\" : \"https://web.example.mocklab.io/238700\",\n \"status\" : \"qn4s39qym9rhgx0l4brmnty8tts3deduchdv1waymsxn38wjume7etyb0h2ivf0zvyf9z3tppogofjgkjykoqotgfdbb0a2jj7eufij058ii244uukpi8lcldztl75egvruq35pdex5fhy1tlvlgf7xonnz60zs8gmjgq0nmyimbdwub94njuwklxisc\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "8e9f6082-e269-4c42-8a58-175e18820539", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.82357Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "reactions/delete-legacy", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 916 + }, + { + "id": "d391b717-fc66-4bc2-a967-cd992bef0cd8", + "name": "Delete a reaction (Legacy) (application/json)", + "request": { + "urlPath": "/reactions/5305022293896300558", + "method": "DELETE", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 401, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/414662\",\n \"message\" : \"Nam recusandae neque voluptatem dolor. Dolorem perspiciatis libero ut et harum possimus. Illum temporibus sit sunt repellendus tempore.\",\n \"url\" : \"https://web.example.mocklab.io/328991\",\n \"status\" : \"s5mgsiajw19jd0pfk3wos32jxksq0zycndmp19lxjjr8ur389ltwc\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "d391b717-fc66-4bc2-a967-cd992bef0cd8", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.823363Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "reactions/delete-legacy", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 917 + }, + { + "id": "56e49fc3-c92d-4be9-8887-6d2532648c0a", + "name": "Delete a reaction (Legacy) - 304", + "request": { + "urlPath": "/reactions/4279539286163182138", + "method": "DELETE" + }, + "response": { + "status": 304 + }, + "uuid": "56e49fc3-c92d-4be9-8887-6d2532648c0a", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.823164Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "reactions/delete-legacy" + } + } + }, + "insertionIndex": 918 + }, + { + "id": "c2467b95-c274-4bfe-8a3e-e81ace59086c", + "name": "Delete a reaction (Legacy) - 204", + "request": { + "urlPath": "/reactions/5504238253073602048", + "method": "DELETE" + }, + "response": { + "status": 204 + }, + "uuid": "c2467b95-c274-4bfe-8a3e-e81ace59086c", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.823146Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "reactions/delete-legacy" + } + } + }, + "insertionIndex": 919 + }, + { + "id": "002052eb-88bb-4d53-8f70-fd225039c296", + "name": "Get rate limit status for the authenticated user (application/json)", + "request": { + "urlPath": "/rate_limit", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/061260\",\n \"message\" : \"In aut et. Tempore sint optio. Et fuga iste blanditiis aliquam.\",\n \"url\" : \"https://web.example.mocklab.io/993310\",\n \"status\" : \"fe66hvypvroe2lukei1c\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "002052eb-88bb-4d53-8f70-fd225039c296", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.82311Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "rate-limit/get", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 920 + }, + { + "id": "fe1367fd-93a0-4191-81dc-c5693d30d923", + "name": "Get rate limit status for the authenticated user - 304", + "request": { + "urlPath": "/rate_limit", + "method": "GET" + }, + "response": { + "status": 304 + }, + "uuid": "fe1367fd-93a0-4191-81dc-c5693d30d923", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.82292Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "rate-limit/get" + } + } + }, + "insertionIndex": 921 + }, + { + "id": "6b9cee9e-d0c4-4a97-be10-90a61d454d0b", + "name": "Get rate limit status for the authenticated user (application/json) - default", + "request": { + "urlPath": "/rate_limit", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 200, + "body": "{\n \"rate\" : {\n \"limit\" : 5000,\n \"remaining\" : 4999,\n \"reset\" : 1372700873,\n \"used\" : 1\n },\n \"resources\" : {\n \"code_scanning_upload\" : {\n \"limit\" : 500,\n \"remaining\" : 499,\n \"reset\" : 1551806725,\n \"used\" : 1\n },\n \"core\" : {\n \"limit\" : 5000,\n \"remaining\" : 4999,\n \"reset\" : 1372700873,\n \"used\" : 1\n },\n \"graphql\" : {\n \"limit\" : 5000,\n \"remaining\" : 4993,\n \"reset\" : 1372700389,\n \"used\" : 7\n },\n \"integration_manifest\" : {\n \"limit\" : 5000,\n \"remaining\" : 4999,\n \"reset\" : 1551806725,\n \"used\" : 1\n },\n \"search\" : {\n \"limit\" : 30,\n \"remaining\" : 18,\n \"reset\" : 1372697452,\n \"used\" : 12\n }\n }\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "6b9cee9e-d0c4-4a97-be10-90a61d454d0b", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.822892Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "rate-limit/get", + "schema": { + "description": "Rate Limit Overview", + "properties": { + "rate": { + "$ref": "#/components/schemas/rate-limit" + }, + "resources": { + "properties": { + "code_scanning_upload": { + "$ref": "#/components/schemas/rate-limit" + }, + "core": { + "$ref": "#/components/schemas/rate-limit" + }, + "graphql": { + "$ref": "#/components/schemas/rate-limit" + }, + "integration_manifest": { + "$ref": "#/components/schemas/rate-limit" + }, + "search": { + "$ref": "#/components/schemas/rate-limit" + }, + "source_import": { + "$ref": "#/components/schemas/rate-limit" + } + }, + "required": ["core", "search"], + "type": "object" + } + }, + "required": ["rate", "resources"], + "title": "Rate Limit Overview", + "type": "object" + } + } + } + }, + "insertionIndex": 922 + }, + { + "id": "ac6b44c4-2996-415e-b77c-ed22fbd8990e", + "name": "Create a project column (application/json)", + "request": { + "urlPath": "/projects/5075001535129865073/columns", + "method": "POST", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 422, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/058806\",\n \"message\" : \"Eius dolore voluptatibus dolor commodi id. Corrupti id consequatur harum ut ut sit itaque. Aliquam cumque est molestiae et recusandae mollitia. Necessitatibus repellat ipsam sed cum architecto. Dolore\",\n \"errors\" : [ \"p04ektvbonffqoxr7h32taqnm9wl7yt5oqjbn8n6uhnsv0p9z\" ]\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "ac6b44c4-2996-415e-b77c-ed22fbd8990e", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.822823Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "projects/create-column", + "schema": { + "description": "Validation Error Simple", + "properties": { + "documentation_url": { + "type": "string" + }, + "errors": { + "items": { + "type": "string" + }, + "type": "array" + }, + "message": { + "type": "string" + } + }, + "required": ["message", "documentation_url"], + "title": "Validation Error Simple", + "type": "object" + } + } + } + }, + "insertionIndex": 923 + }, + { + "id": "e406dc94-ca4f-47ab-bfd0-e53f92a70a8e", + "name": "Create a project column (application/json)", + "request": { + "urlPath": "/projects/619178013711454511/columns", + "method": "POST", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 403, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/610604\",\n \"message\" : \"Sed pariatur illo. Necessitatibus blanditiis dolorem et. Qui repellendus aut voluptatum autem nihil suscipit ab. Ipsam velit dolor. Mollitia vero nemo accusamus ut rerum assumenda.\",\n \"url\" : \"https://web.example.mocklab.io/590804\",\n \"status\" : \"lsu7cu2ncajb2rfds6ropk3qh7hxxibk3nbu6mbh8wa6ux5d2wh99ymgnni2qpwn65am4oar47clar7nx8fup9mlaqzgaq2lhs70dcfnoitr28zrsa8n7gegz31f40ar6mid9nvrz7p5a9j04m1ciojmxw3n3kb4t0zo44hbqk0x7hrn4oal2jnapf711hy2jn58\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "e406dc94-ca4f-47ab-bfd0-e53f92a70a8e", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.822635Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "projects/create-column", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 924 + }, + { + "id": "e136bc52-1f6b-4147-bb0d-1fa5be1fc164", + "name": "Create a project column (application/json)", + "request": { + "urlPath": "/projects/4537280827159348256/columns", + "method": "POST", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 401, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/895559\",\n \"message\" : \"Expedita beatae sit sint quia autem reiciendis minima. Nihil velit officiis quam eligendi minima quia. Quisquam blanditiis laboriosam qui. Alias libero aspernatur. Molestias praesentium earum beatae m\",\n \"url\" : \"https://web.example.mocklab.io/955314\",\n \"status\" : \"u54w5gndpxw0oq1i71tifu8ze8v5gum5t6bbyo4lpelmtp3k88tnvgimkjzxzrvixvlfc2q00odd0p8e0tl2au13dyc0a0crregm\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "e136bc52-1f6b-4147-bb0d-1fa5be1fc164", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.822427Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "projects/create-column", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 925 + }, + { + "id": "c15cabd0-49c5-4c2d-9d4b-d532d621e478", + "name": "Create a project column - 304", + "request": { + "urlPath": "/projects/5617367493881471323/columns", + "method": "POST" + }, + "response": { + "status": 304 + }, + "uuid": "c15cabd0-49c5-4c2d-9d4b-d532d621e478", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.822228Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "projects/create-column" + } + } + }, + "insertionIndex": 926 + }, + { + "id": "0dc719b5-7487-471d-b846-7f26185e7e8a", + "name": "Create a project column (application/json)", + "request": { + "urlPath": "/projects/3993343214296108453/columns", + "method": "POST", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 201, + "body": "{\n \"cards_url\" : \"https://api.github.com/projects/columns/367/cards\",\n \"created_at\" : \"2016-09-05T14:18:44Z\",\n \"id\" : 367,\n \"name\" : \"To Do\",\n \"node_id\" : \"MDEzOlByb2plY3RDb2x1bW4zNjc=\",\n \"project_url\" : \"https://api.github.com/projects/120\",\n \"updated_at\" : \"2016-09-05T14:22:28Z\",\n \"url\" : \"https://api.github.com/projects/columns/367\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "0dc719b5-7487-471d-b846-7f26185e7e8a", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.822199Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "projects/create-column", + "schema": { + "description": "Project columns contain cards of work.", + "properties": { + "cards_url": { + "example": "https://api.github.com/projects/columns/367/cards", + "format": "uri", + "type": "string" + }, + "created_at": { + "example": "2016-09-05T14:18:44Z", + "format": "date-time", + "type": "string" + }, + "id": { + "description": "The unique identifier of the project column", + "example": 42, + "type": "integer" + }, + "name": { + "description": "Name of the project column", + "example": "Remaining tasks", + "type": "string" + }, + "node_id": { + "example": "MDEzOlByb2plY3RDb2x1bW4zNjc=", + "type": "string" + }, + "project_url": { + "example": "https://api.github.com/projects/120", + "format": "uri", + "type": "string" + }, + "updated_at": { + "example": "2016-09-05T14:22:28Z", + "format": "date-time", + "type": "string" + }, + "url": { + "example": "https://api.github.com/projects/columns/367", + "format": "uri", + "type": "string" + } + }, + "required": [ + "id", + "node_id", + "url", + "project_url", + "cards_url", + "name", + "created_at", + "updated_at" + ], + "title": "Project Column", + "type": "object" + } + } + } + }, + "insertionIndex": 927 + }, + { + "id": "1c4d3112-c0d2-4a33-be2c-9d59e35cb47b", + "name": "List project columns (application/json)", + "request": { + "urlPath": "/projects/3850408157171098399/columns", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 403, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/516514\",\n \"message\" : \"Molestiae inventore suscipit vitae nihil recusandae. Laboriosam et sunt et autem porro reprehenderit nihil. Sunt quaerat aperiam est. Impedit animi sunt minima doloremque occaecati natus.\",\n \"url\" : \"https://web.example.mocklab.io/187144\",\n \"status\" : \"p2q10qoxv48aqeak3mrgk7uxc5x2hfbifnkrtq1f8i35gi3pfab4bpbzxoqt78iky7r137oxh872mxruz7xiyyxy69bl6h4p3x2to99fghalj2xnq0i8dzdrzs0le6j4p7iqzl68pnxu3tu6hvaxxz1pq10lm\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "1c4d3112-c0d2-4a33-be2c-9d59e35cb47b", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.822072Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "projects/list-columns", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 928 + }, + { + "id": "5658a85c-63e1-4e22-8afb-4d3e375d9cf4", + "name": "List project columns (application/json)", + "request": { + "urlPath": "/projects/1912590333044583466/columns", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 401, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/342173\",\n \"message\" : \"Earum voluptatum rerum facilis maxime. Enim illum quia officiis. Aut numquam quo ut mollitia quam laborum quia. Ducimus ut distinctio. Qui odit beatae non et aut.\",\n \"url\" : \"https://web.example.mocklab.io/579774\",\n \"status\" : \"0kyukhasb90zorjtw98ddkhsf6uy\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "5658a85c-63e1-4e22-8afb-4d3e375d9cf4", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.821862Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "projects/list-columns", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 929 + }, + { + "id": "15b11950-3544-4eb8-8239-d9cf8d892ac4", + "name": "List project columns - 304", + "request": { + "urlPath": "/projects/8306907701781199123/columns", + "method": "GET" + }, + "response": { + "status": 304 + }, + "uuid": "15b11950-3544-4eb8-8239-d9cf8d892ac4", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.821663Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "projects/list-columns" + } + } + }, + "insertionIndex": 930 + }, + { + "id": "b247063c-8ec5-4266-9e1e-ef685fb10083", + "name": "List project columns (application/json) - default", + "request": { + "urlPath": "/projects/4696566104917364404/columns", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 200, + "body": "[ {\n \"cards_url\" : \"https://api.github.com/projects/columns/367/cards\",\n \"created_at\" : \"2016-09-05T14:18:44Z\",\n \"id\" : 367,\n \"name\" : \"To Do\",\n \"node_id\" : \"MDEzOlByb2plY3RDb2x1bW4zNjc=\",\n \"project_url\" : \"https://api.github.com/projects/120\",\n \"updated_at\" : \"2016-09-05T14:22:28Z\",\n \"url\" : \"https://api.github.com/projects/columns/367\"\n} ]", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "b247063c-8ec5-4266-9e1e-ef685fb10083", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.821638Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "projects/list-columns", + "schema": { + "items": { + "$ref": "#/components/schemas/project-column" + }, + "type": "array" + } + } + } + }, + "insertionIndex": 931 + }, + { + "id": "625736ee-6195-4842-926b-1d1f6ac28541", + "name": "Get project permission for a user (application/json)", + "request": { + "urlPath": "/projects/9175921232040453192/collaborators/masako.ondricka/permission", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 422, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/562794\",\n \"message\" : \"Alias dolores excepturi odio eum. Recusandae explicabo expedita minus qui sed aut. Labore et vel reprehenderit. Et architecto eligendi et consequatur.\",\n \"errors\" : [ {\n \"code\" : \"p22tlojxn4o8tazvi6puh6rawgyxt0r4t10yfygvxvue3a1hqlyszqolcfwjgvswk64lz0xmq\",\n \"field\" : \"jtepqhk10ika3tviobkci9jakdun5kmvjoeuw0kqqmwixrk74jy7wp5hp7ywbz64suaaxi4ty7ahomg5uoimwfgutovvfy1vhbkx98nokg6tfxhfjzayi2g7pbjkak1pbl6vcy5ujt4sa2n5b08640yvc0zun9cpe1u8v\",\n \"resource\" : \"qqqtmuq8jm3g2v9nrvo8\",\n \"index\" : 3662691085014476312,\n \"message\" : \"Sit aliquam architecto vel. Sequi id nihil quis. Animi sit in molestiae molestias ad. Quasi optio repellendus fugit. Cum maiores dolor officiis consequuntur voluptatum velit architecto.\",\n \"value\" : { }\n }, {\n \"code\" : \"debxb719pdhw3ssdep0qz3y1a1c1igejaavb1tu49k6slgozm4rcubzylm39fz43acrmt5qgnwl63kkzxyus1ss6jbusvv3jrmchwrqs2bh8xpgw12ib40mswo8zs39n8utkhes6ibm82q0kvq5k1ftu8pyx2k07paf3mblo32dt7kk94sq3y6p\",\n \"field\" : \"boysn35zd1knoazxss5y6y8rlr2j63w1paxwnbw2hpnh32chy0qr72h2\",\n \"resource\" : \"m11c9nk2jbq5id6ehqhch7p8rwpi93yn7nxyirp13tcwjriqbx4s0fccpme6kco9o5gl76mt5o1y1svroekn1w0ti313uq5bkeuhdmzevrn24nou2lum9\",\n \"index\" : 364031062569668018,\n \"message\" : \"Eum ut ratione. Sunt distinctio libero dolorem atque. Soluta asperiores saepe ipsa consequatur consequatur unde vel. Nobis sapiente voluptatem sed quidem ut. Accusantium non enim quae ratione.\",\n \"value\" : { }\n }, {\n \"code\" : \"f1ojo5cz05b14bpshlg6l\",\n \"field\" : \"ng8eag82lwc2tzhcs0eblzaro66ejc55ir1ulu5aciq4qvrdv7afx20knslhdoegvv4vc6yaaxnbx0xvuoi9gf9wxe5tubfqlbl772sbzeyj5nha54d9skt21zmherrng0gbiky8i95w38ji739ej3bz1\",\n \"resource\" : \"8shijjbicatl4odqgizidvj7l5z8wkmv9t9yt5skuz6rgoiy5mhsnwx\",\n \"index\" : 8036535407862470373,\n \"message\" : \"Magni voluptatibus dolorem molestiae voluptatem quasi unde aut. Quis rerum eos omnis labore. Nulla enim ut quam optio et. Ducimus eos nulla repellat. Non cupiditate alias dolore consequatur rerum.\",\n \"value\" : { }\n }, {\n \"code\" : \"i7fz77fgtkj4l06oidj7n45w24zxvxr6tedemb8l5v6jpxtg1ejhihmu2v1ivauxx5gk61ugbb3lfzlyfpeb5u1bne2nkd5nv\",\n \"field\" : \"v5bouknrjf8a90prbbc95ijpjknw7r755yzom40mxh1szupsrroeuxol3ro1p08hse4vvhov9xte3mkrc0o445a4v3n84hv86grx13htuibn4pr0li7v270yvpth22ik56gpsukwdy7x4ysobwu6n4irl8p0jna5oymh3vqdpy22ddd2wasz6d8cb9hxhhwm3\",\n \"resource\" : \"ju9pu2mahfosmwzwuyglq7upuivixmdjfsyzm8tzfwafyxm7m1tcle13m44nt0uy34opvwp5vwfbr2yh9j6jwlenzvus7w5792g1jf4i9ga2smyxzat96w54obg2glrgcy96zkb0au832p7owshy9kp1hoa3w89yk9gdaka\",\n \"index\" : 4897880333781786306,\n \"message\" : \"Illo id sint magni ipsam est repellat facilis. Laborum pariatur omnis quae deserunt. Est aut reiciendis aliquid atque est maxime. Quasi odio suscipit. Ut sed nihil ipsum dolore.\",\n \"value\" : { }\n }, {\n \"code\" : \"nfowm7ou331knz6gh8eqi9cwao4ufwh11o4uo9n8vusynwsoct4lientk9exy9502xge7t6t5stfwrvnbvyvwocrc9d9mlpk\",\n \"field\" : \"x1t37l7mttp9l2fbnxmy2e5\",\n \"resource\" : \"gfadnn8il8eclmjmglkd3iaroktuxydqqm5712fyhavhbfo2sr1hfrxjnrxkq8nja4\",\n \"index\" : 5647081870079215571,\n \"message\" : \"Magni consequatur maxime earum. Aut et et eum. Corporis itaque et.\",\n \"value\" : { }\n }, {\n \"code\" : \"55aanog6mq0gdds45ihbsb1rvr4hheq2hd\",\n \"field\" : \"k8ct44ub2cajo39fdltb37tgp0sqxtsvbiva01fzlvi5w996qpaq47hjn3r0q6nmix7k2x7we4p8r4gqdouwn1m7838jn9cgm5toxlatxbci80f2nijmuwb9lnd2pyuwnil9l4jdq1xrjl5gv7wv91tpy341z2hkgskfm3jqk55aoannvs58yb8v3r3sthvq\",\n \"resource\" : \"txowkrc65cstfbarwqefdr5judaj9lpztvlljlqtkawmtxzt4xsechgj8pcah7qwv9gru8asql9pslgag63gdek484aqp1v5y66euvma3tk6tpcyodlmw\",\n \"index\" : 6081067306175261685,\n \"message\" : \"Aliquid aut dolore error voluptatem. Labore et eius eligendi ipsa fugiat. Aut inventore corrupti aut saepe. Qui animi fuga sed. Vel dolore cumque vero sit dolore.\",\n \"value\" : { }\n }, {\n \"code\" : \"jzb6alpgire2318nvrs\",\n \"field\" : \"tomscxpy5swlizradz7w68mpc4zhycjdmnple339f7ljz7\",\n \"resource\" : \"alvreicv8owe0r0xyn2t7c19kw9p963ug8wi3urs82sdfdeuqotme4v8eoeet4kekg92evxf5qiadhty34vf1kuwu0mda3q8jw4xqiql13ybasleumwcjyrlf07t7uob9u0lrysp93p2506u10g998iezgsp92wk2sifijxg98th2b759wveuuufo363r6zq6jc8ep\",\n \"index\" : 3149483564537351826,\n \"message\" : \"Quae quibusdam error. Et sit aut. Laboriosam rem architecto occaecati.\",\n \"value\" : { }\n }, {\n \"code\" : \"k1ooud49zip69okp4n0cvl99suwtgpxi2pie6hp4619vpu6mkwrone\",\n \"field\" : \"5xosnl90xqhfsazl3zbqgiv3169wrohf60uxte1hy2letq7j0jyi60o4yv3hp4ur5bo68mrvslim8bq2xifrcf7w3v0rfujz4ballotn0p\",\n \"resource\" : \"9oa0avaioukyxsuc94ixqk3zablmae6lhqxmr27hw5ff5ss49a0mt81lq8h\",\n \"index\" : 1851449272932926405,\n \"message\" : \"Architecto inventore assumenda architecto ut sequi. Ut sequi voluptas quas ea consequatur. Aliquam dolor nemo porro.\",\n \"value\" : { }\n } ]\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "625736ee-6195-4842-926b-1d1f6ac28541", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.821587Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "projects/get-permission-for-user", + "schema": { + "description": "Validation Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "errors": { + "items": { + "properties": { + "code": { + "type": "string" + }, + "field": { + "type": "string" + }, + "index": { + "type": "integer" + }, + "message": { + "type": "string" + }, + "resource": { + "type": "string" + }, + "value": { + "oneOf": [ + { + "nullable": true, + "type": "string" + }, + { + "nullable": true, + "type": "integer" + }, + { + "items": { + "type": "string" + }, + "nullable": true, + "type": "array" + } + ] + } + }, + "required": ["code"], + "type": "object" + }, + "type": "array" + }, + "message": { + "type": "string" + } + }, + "required": ["message", "documentation_url"], + "title": "Validation Error", + "type": "object" + } + } + } + }, + "insertionIndex": 932 + }, + { + "id": "b0b8cd61-e0dc-4f12-9f83-8e9de4649de7", + "name": "Get project permission for a user (application/json)", + "request": { + "urlPath": "/projects/239298524872595213/collaborators/kati.schiller/permission", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 415, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/083713\",\n \"message\" : \"Voluptatum tempore at sed sunt. Ipsa nihil enim magni in neque illo. Quae beatae velit aut aut. Rerum doloremque sint iste enim. Eos est dolore sed recusandae excepturi nam exercitationem.\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "b0b8cd61-e0dc-4f12-9f83-8e9de4649de7", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.820763Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "projects/get-permission-for-user", + "schema": { + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": ["message", "documentation_url"], + "type": "object" + } + } + } + }, + "insertionIndex": 933 + }, + { + "id": "c2275290-7b1b-4655-a75b-a73bd6599b51", + "name": "Get project permission for a user (application/json)", + "request": { + "urlPath": "/projects/6656195841871824758/collaborators/maximo.lakin/permission", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/524253\",\n \"message\" : \"Numquam animi vitae. Soluta quidem autem accusantium voluptatum libero est. Occaecati sint tempora. Modi non cum error est incidunt harum ipsum. Consectetur eos ad.\",\n \"url\" : \"https://web.example.mocklab.io/773158\",\n \"status\" : \"ojqhcjdzx2pd074f5agef312fzvyo5u11xdrsoyxer7ikh2v8jntqb42mnuuz8n1bn0wlrrolmk66y9wqkgpznhl9as8adua16c3kqqdpmx77nfgzuw15hygxwiw6vielq8p139a87wqfs6iuvpymzxagufhukq7ehwi3jd1dqwqldjudehcia\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "c2275290-7b1b-4655-a75b-a73bd6599b51", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.820607Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "projects/get-permission-for-user", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 934 + }, + { + "id": "dacc7e69-4f64-4fe1-bb0d-6d6c0147c7dd", + "name": "Get project permission for a user (application/json)", + "request": { + "urlPath": "/projects/6818931762262644095/collaborators/steve.krajcik/permission", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 403, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/923574\",\n \"message\" : \"Expedita rerum ut. Dolore placeat officiis aut porro expedita minus dolores. Et tempora nostrum sint amet quia. Voluptas et deserunt. Voluptas dolorem praesentium.\",\n \"url\" : \"https://web.example.mocklab.io/179121\",\n \"status\" : \"9nh3dxuayfckpnkfsfwjr2p2dwpj1hfaizj0xzmw1dapmcis3rqux3i45n93h\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "dacc7e69-4f64-4fe1-bb0d-6d6c0147c7dd", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.820383Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "projects/get-permission-for-user", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 935 + }, + { + "id": "78190c17-5f37-4e31-8816-ac055c136a2b", + "name": "Get project permission for a user (application/json)", + "request": { + "urlPath": "/projects/1486351393018363633/collaborators/thalia.hegmann/permission", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 401, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/880134\",\n \"message\" : \"Corporis voluptas voluptas quo incidunt accusamus. Vel praesentium non repudiandae dolorem. Culpa minima architecto enim. Nam laborum qui placeat et doloremque. Nam accusamus quia nisi iure.\",\n \"url\" : \"https://web.example.mocklab.io/129390\",\n \"status\" : \"64s8x5kit9tv95i817bheh452ft0x0u5vp0yembpwpnvt1esbhwd8b2a24lb7s2q76bkui1mjw6qjzqz7yilsq5v59yfhb4c4kg8fu6wzcrhpw\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "78190c17-5f37-4e31-8816-ac055c136a2b", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.820159Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "projects/get-permission-for-user", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 936 + }, + { + "id": "e01a147d-0c4b-4faa-8841-cca8ae305908", + "name": "Get project permission for a user - 304", + "request": { + "urlPath": "/projects/3006649998107283075/collaborators/jeffrey.buckridge/permission", + "method": "GET" + }, + "response": { + "status": 304 + }, + "uuid": "e01a147d-0c4b-4faa-8841-cca8ae305908", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.819938Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "projects/get-permission-for-user" + } + } + }, + "insertionIndex": 937 + }, + { + "id": "9a894824-74f9-4a27-9532-5f673258c938", + "name": "Get project permission for a user (application/json) - default", + "request": { + "urlPath": "/projects/5359725164459530330/collaborators/jeff.pfannerstill/permission", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 200, + "body": "{\n \"permission\" : \"admin\",\n \"user\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n }\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "9a894824-74f9-4a27-9532-5f673258c938", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.819892Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "projects/get-permission-for-user", + "schema": { + "description": "Repository Collaborator Permission", + "properties": { + "permission": { + "type": "string" + }, + "user": { + "$ref": "#/components/schemas/nullable-simple-user" + } + }, + "required": ["permission", "user"], + "title": "Repository Collaborator Permission", + "type": "object" + } + } + } + }, + "insertionIndex": 938 + }, + { + "id": "f5891d72-070b-4acb-ab8d-24696d8aa18d", + "name": "Add project collaborator (application/json)", + "request": { + "urlPath": "/projects/6751172300667764587/collaborators/mabel.rutherford", + "method": "PUT", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 422, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/777026\",\n \"message\" : \"Magnam sequi quia. Temporibus animi sunt laudantium eligendi incidunt debitis. Et in quia non modi debitis excepturi. Adipisci totam porro non molestiae odio dolorem. Molestiae vero similique nostrum \",\n \"errors\" : [ {\n \"code\" : \"bbqxxp4ptlzq2cwcmcxegp2gxmkc23j5ycwwdnsdtite4trzbm542se491jcnoxxac4kxzqqe1ycirkpqy3ng9is5o0d35aeqdj9nrhicgzg8r7aw1pd715xvq2yhx8w32dg4c\",\n \"field\" : \"0ya5pr78u6cl2hrzey8xbpiijvmsbp\",\n \"resource\" : \"nt3mef1si33faloympukuxpt6q1y0e7zs8pko7hrsgn68wrslfi9qoy3z5kd5hj3m5zo0h3d92eixh8rjl8djiiz9ezkjpay12ahacencvac5dj78p643794n82va5ugahj46hb0as4l0vgc2piacw8bdlg6jqqk0z7r439my5foizw56awcwsab53ulsv\",\n \"index\" : 1641997614020525832,\n \"message\" : \"Officiis mollitia et. Amet sit voluptatem et ad aut quia. Qui hic numquam et expedita quis quisquam. Non ex aperiam voluptatum voluptatem.\",\n \"value\" : { }\n }, {\n \"code\" : \"jzinb6pyjjn75s7ujybfu9fvomn7tp9nfy1xv2qxg0r2nryisc0qlk65pqs2p31nvou9nygur1126mj9p69cyobqb8pek7jzdz0um71l8gqthbkbh0m1t0l4keu51wson0w4tfmuj3dyxxm0va59e9u5mu455bddvs1cge31\",\n \"field\" : \"f0wzgmk4eupa2m01ettdr5vx8vo1r4\",\n \"resource\" : \"2r361yi39x1ezue55dzbhd5zvcrodquevj1qzssx36thj9j42pl3yi3s85yl18i0anug2ma14fgtwc2j\",\n \"index\" : 8814966879690706717,\n \"message\" : \"Consequatur deleniti nisi dicta quaerat debitis est. Quis qui inventore voluptas velit dolorum hic eaque. Nihil amet in illum sit suscipit.\",\n \"value\" : { }\n }, {\n \"code\" : \"o052riopdd1cp5cmz\",\n \"field\" : \"2xdjfc8kqdjox2iyd99e7wosv4pphb26hdyhmg4v3r9xopstc8vhsoo2f6tqspqc6o2uesd18hxhkkfksbuko9r9te79mbuwl6l87nvi0kmgiw9mck5fq4tdsovlde6qu7lewa26nepihtc4cecfzs2ho4jvugupyjk9exyk1k8sjali4xobnuqjxtxmkhda062\",\n \"resource\" : \"pk495phhfv4j66kbnkliyb3sbxozllub11gucsh5yhi8nadrg5iebyb98u8lsrs694o68fpbb2utpsgbvqxg7nce9wzvrgxcpoz7lvdspeioer7vdv2oaqcr23xsv2dr63ikurefgpv4l31ui81f44iuxf2wq64zj31558apljgt6x\",\n \"index\" : 864986686982174050,\n \"message\" : \"Consequatur voluptatem illum quia adipisci consequatur similique. Quisquam explicabo quia. Enim aspernatur ducimus saepe recusandae et voluptates. Molestiae animi architecto et aliquid ut voluptatem m\",\n \"value\" : { }\n }, {\n \"code\" : \"2h2lybt24vh6vnap412t49xvl77b1b3xur4ao1kkxy0zaaeikpyauv4l76kqo640\",\n \"field\" : \"fwsr199djx6j4pnia2fxl0fdyjv1qmoa5d4rjih1egpi7p4w1785ce6gnklr1xj9e6k82y011defm1f1axtn4hw968z8be7iwfidy1zrxui1vc9a9m80vsy6kw90\",\n \"resource\" : \"5676gq6nboyqj4xr5plwjhv7cqyss0pzztwx18lb6bdlcs1gayeyr2dz0sgtvw7x7hahtcdrw8yst7\",\n \"index\" : 8775808748588180316,\n \"message\" : \"Et blanditiis et sint laboriosam eos ut. Voluptatum voluptas nostrum ipsa aperiam possimus sit est. Voluptatem recusandae qui omnis et. Sapiente nulla beatae.\",\n \"value\" : { }\n }, {\n \"code\" : \"ya47did2wh2r3jg640frufma5hasysds051g4gq8helk5z0ais71gggicayrdmrxqelf1t9y86kuqilm5j7n6awv2xk5tu91wsrl9wfbf4twrg0vyywu9fidvdmo7ky3acvurlf8nuu9butcmooucx8dzl\",\n \"field\" : \"w2dw8gjvnp39wgekhrhym1x5rl5vtrfyppjvmben101t2wh3mvko3fncxq56tnbk73999p4fmzesdpge33i84qq170rgs9xlon4rpedzf58d2hz6lrr1s6yw3r2wopmy0df49mtezq86hhikroiwfn06lwgqzax9i9b5js46z3lz291eut8\",\n \"resource\" : \"ac5inbm3tcyudu6uarbpbto2w74m7rkvskdsz8uuab55vp0s8i8eu\",\n \"index\" : 1462122992185941534,\n \"message\" : \"Ut illo voluptas consequuntur debitis. Repudiandae saepe quasi quia voluptatem. Asperiores magni at. Error porro quisquam molestiae consequatur non deleniti ullam.\",\n \"value\" : { }\n }, {\n \"code\" : \"e78rdrgoqwp13phgyswra3p2gewdr1r0vj4m172wm08rtgz97272a8ecq810tj0o1x4cfs7qvu8bvyqsmbwy3us5zj5pgiyf77sgwerwlbqoxfp5c4pxl2vtny1u51ur1qhbkmia0pxqeyjwnnjq8jq8mxgnwlcmnjqr6\",\n \"field\" : \"yxd1wzcrnhhqjkcocr9198ev8ob2mst6jxpa7uwvgksysfqrv40vjjrdg05h3y0lagzilb6blt6htd8j07apy34he2kx9i5w4sij23rc1qrrn7924o0jt4d4ps8626b7xvsjy\",\n \"resource\" : \"q5lsupy2u32d9ncdg2tfbyjpsfjpf6mejndqxarob6w3cqtgepjgd5x9gstqzjqswc5k6v3zvaj5xq596iij2avfbtlu77f8wyp5ohkeggmztr4mrhbanxgj7sxs4fl7n0kxw33spe290aa7tjx8vfywtje0t6kgpi6oem8qam2ol3eatig63wkci\",\n \"index\" : 6918760991051531751,\n \"message\" : \"Doloribus quaerat reprehenderit eaque. Ut animi ut vel dolores aut quo. Qui culpa recusandae et unde neque cumque atque. Officia quia id dolore velit libero delectus distinctio.\",\n \"value\" : { }\n }, {\n \"code\" : \"ksmvylf1uneuizyqs9ddrsqnnj6btnmydd7ej1qgtp8f7fp14cah5mhm0sgzbw129ycc6phs6j20ryh18m7pqlgsr7bki03j288g7qv5m8cbeu23b9yig46gijln3hrjd8\",\n \"field\" : \"tx7tp23dscue5ou2a9emysy2tcwbf7dvtgonhtkwtxk3j5frcn55f0bzlt7roz0a93qlfblo1mcuw81lnn0rcbdfw4jem1r9whmzbqqpjboi\",\n \"resource\" : \"ktlaxliwuixx7944yfuc2f679rd1xoh3hguzx59ij1xtu1l95vp2iohnlikcrnj08rcqc4yw31rwh8qr59wsy1d530b4jnml9d98vpybzltfka1oxlz6zqlue4guy9fupwb0wwbnbr5cm80iu3h56o15\",\n \"index\" : 8603029610673000246,\n \"message\" : \"Ea sit ab distinctio rerum magnam earum quos. Earum nesciunt quos expedita labore unde. Minima dolorem animi maiores voluptatem.\",\n \"value\" : { }\n }, {\n \"code\" : \"pg1ejara705ctxj5yjgobm11z3nmsok1\",\n \"field\" : \"fs3t06iz64qmgg58maipn9y3kt3nim5352nm8qjw0hyb8zr38a0lenmdjfydrwv6ro8dciojghcfn971sjwpp5p160ohssa1ni44q82zf1gb0vhu8j2mohrh19hmauonnht56pwgrnc3gd8w2e\",\n \"resource\" : \"9vakvv3s1cno3m69afbpleaa5wsz91mwcy6el0eo1p78dalhfxpdv4v4vfrefwoucqznjguuaf1m4iv226ldr30s8i9no9mui95du3cc43c9\",\n \"index\" : 8996293430350951890,\n \"message\" : \"Tenetur qui laborum reiciendis doloribus ea mollitia consequuntur. Exercitationem provident ea aspernatur autem consequatur. Perferendis quos quibusdam hic. Tenetur ducimus voluptatum nihil molestiae \",\n \"value\" : { }\n } ]\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "f5891d72-070b-4acb-ab8d-24696d8aa18d", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.819801Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "projects/add-collaborator", + "schema": { + "description": "Validation Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "errors": { + "items": { + "properties": { + "code": { + "type": "string" + }, + "field": { + "type": "string" + }, + "index": { + "type": "integer" + }, + "message": { + "type": "string" + }, + "resource": { + "type": "string" + }, + "value": { + "oneOf": [ + { + "nullable": true, + "type": "string" + }, + { + "nullable": true, + "type": "integer" + }, + { + "items": { + "type": "string" + }, + "nullable": true, + "type": "array" + } + ] + } + }, + "required": ["code"], + "type": "object" + }, + "type": "array" + }, + "message": { + "type": "string" + } + }, + "required": ["message", "documentation_url"], + "title": "Validation Error", + "type": "object" + } + } + } + }, + "insertionIndex": 939 + }, + { + "id": "f9a81e4b-a133-4947-b3e3-951b5e1f7bc2", + "name": "Add project collaborator (application/json)", + "request": { + "urlPath": "/projects/5886325514311679641/collaborators/thresa.satterfield", + "method": "PUT", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 415, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/834509\",\n \"message\" : \"Aut aspernatur nihil. Voluptatem incidunt id aliquam. Sint suscipit fuga molestiae. Eos assumenda provident culpa. Officia aliquid quidem pariatur vel omnis similique.\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "f9a81e4b-a133-4947-b3e3-951b5e1f7bc2", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.818938Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "projects/add-collaborator", + "schema": { + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": ["message", "documentation_url"], + "type": "object" + } + } + } + }, + "insertionIndex": 940 + }, + { + "id": "debd6848-13ae-41e6-9814-d35800d93110", + "name": "Add project collaborator (application/json)", + "request": { + "urlPath": "/projects/8892882724472835096/collaborators/chi.kihn", + "method": "PUT", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/994150\",\n \"message\" : \"Et in quo nam accusamus recusandae et. Voluptas ea vel quis necessitatibus voluptate dolores ut. Veniam dolores totam.\",\n \"url\" : \"https://web.example.mocklab.io/452177\",\n \"status\" : \"ah9inawhtic0ftdqgt3hb815hgmz6una0j0vd7p1fs17bvf7k36t6vrsjn9udzp27ufbm5twsxrmgslv78m5na2t2uuys4f\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "debd6848-13ae-41e6-9814-d35800d93110", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.818786Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "projects/add-collaborator", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 941 + }, + { + "id": "9700665b-493a-4ecf-b9cb-1f34f50765bb", + "name": "Add project collaborator (application/json)", + "request": { + "urlPath": "/projects/985489490734849764/collaborators/adam.waelchi", + "method": "PUT", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 403, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/890832\",\n \"message\" : \"Modi sed fugiat sapiente quae cum sint voluptates. Neque sint ut magnam eos. Et sed voluptatum est distinctio mollitia. Ut laborum harum dolore atque voluptates optio.\",\n \"url\" : \"https://web.example.mocklab.io/512115\",\n \"status\" : \"50f872law99dg6m3jqfpiogt0b8383kx7d8py35djncpg4tdau42xf5pfaubvofbrmq7jadejn17rs5udqksjh4goco975ls795gpl4xe18p4exu2k3xij9kfj6wfipit3x70a3b6pm64r6zr852vw79gl40zjwpznerp4mr17eqi6gq20ufso36jbulc152n8\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "9700665b-493a-4ecf-b9cb-1f34f50765bb", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.818561Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "projects/add-collaborator", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 942 + }, + { + "id": "0f8fc134-0c4d-4ead-8c3e-36c23b2a87bd", + "name": "Add project collaborator (application/json)", + "request": { + "urlPath": "/projects/8237822967749101320/collaborators/van.erdman", + "method": "PUT", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 401, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/188732\",\n \"message\" : \"Inventore eaque quae officiis corrupti aliquam quidem pariatur. Ipsam nobis tenetur praesentium. Pariatur aut numquam nihil. Ut qui corporis ipsam et.\",\n \"url\" : \"https://web.example.mocklab.io/579501\",\n \"status\" : \"9usbueinyxxjsp922z9zx9ts2f5hr6nk30og654hu7p7g2f3rmagcx3g7i86t4k0v1zlb68s6g5haxvy5h0vnt1b\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "0f8fc134-0c4d-4ead-8c3e-36c23b2a87bd", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.818332Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "projects/add-collaborator", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 943 + }, + { + "id": "4406745a-9001-43e8-aa07-00c0398cb7f9", + "name": "Add project collaborator - 304", + "request": { + "urlPath": "/projects/513647521398013917/collaborators/soledad.batz", + "method": "PUT" + }, + "response": { + "status": 304 + }, + "uuid": "4406745a-9001-43e8-aa07-00c0398cb7f9", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.818117Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "projects/add-collaborator" + } + } + }, + "insertionIndex": 944 + }, + { + "id": "dc57f80d-9d18-4354-bbe4-19e8dbcd7011", + "name": "Add project collaborator - 204", + "request": { + "urlPath": "/projects/7629135605472445572/collaborators/zenaida.wyman", + "method": "PUT" + }, + "response": { + "status": 204 + }, + "uuid": "dc57f80d-9d18-4354-bbe4-19e8dbcd7011", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.818079Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "projects/add-collaborator" + } + } + }, + "insertionIndex": 945 + }, + { + "id": "7afbce08-1c6c-4c55-b926-b243df368652", + "name": "Remove user as a collaborator (application/json)", + "request": { + "urlPath": "/projects/6806489516467274879/collaborators/yajaira.hintz", + "method": "DELETE", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 422, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/145097\",\n \"message\" : \"Earum rerum perferendis minus velit commodi illum. Explicabo ullam debitis. Repudiandae omnis voluptates ut. Aut qui labore. Alias nesciunt qui ut optio quas tempore.\",\n \"errors\" : [ {\n \"code\" : \"oqfc416qn1fz3yk5fv5echv3bnkzl90wbwkf9ttf3r9wca7yfiptb57xi523qavjxo7hrm03api5alnwvv014outaaqeez2l8r0g1gggkylzh\",\n \"field\" : \"79l7d4fj5vz3rnv0cvu6w3xntko9ovyfmf90osgkku4n7yvknv63uaq7qc8kgsex0el2ijag37ulv2d0viznl155vrc6pkp8z694f8jwt2wpb93440ax86qr6fql1xjbdq0ga5xqez6vf\",\n \"resource\" : \"ccvr6zin5x2px2jl3ak5v2fp821f9srk5otxhd1aub5p6lbiv92izkpige4kwnn21gjiqw8yalhcn8\",\n \"index\" : 3808884604567052604,\n \"message\" : \"Itaque repudiandae autem facilis sed voluptatum laudantium impedit. Ea harum commodi quidem. Ducimus est est dolores.\",\n \"value\" : { }\n }, {\n \"code\" : \"apz4i4vl5gqazgnhhlnco90xdwc4mvszyco9jwxatg6fkia1frahj7nzu52rluoa69224pqnhmlxai465w948kanuvie6dptlgn4dbp6113yccpql7pulovk8qn1qrttzeffx14h5i8gvgrr61\",\n \"field\" : \"zx8thvnjwgf6dxxzllyj51nomf432895t5z5592s9mztuxasgraakaw64uy8yq0jurms0rtxdagknrrzfarq0nxoyyyl4kcwwnzllzzgnm5iveloexdqz210pz04bmsxtmvpk34bldlrqnbr4\",\n \"resource\" : \"982su7sbok8cih924s4pjrn7e0g5bd1u7kefthjfi34e2pvx4i4p39hm9bxipw8e5lo17mhh0rkfbt2wtqtphptgv2kl6qg02fxh227gfhnlytqtzuffub9tgk1irer9vyx\",\n \"index\" : 8462834787205975541,\n \"message\" : \"Aut laborum ullam. Ex reiciendis pariatur consequatur. Perferendis qui sunt natus at unde.\",\n \"value\" : { }\n }, {\n \"code\" : \"3q1qaogfollqor23y45noglx8zdjcbn9bvikv9s5znz5fiatmw1zwvrviz540xnzd71zqnho9z9ho8p8f4e9r6k0ho693vxmus8eeof4um20jge3xrza9xlo2qduj7i4quaibev98ogcx8lfnem3asd4xgm2j40noqi3hvsc94l5wn7yu01pyb0f\",\n \"field\" : \"bk72xsop89vz2uzc4srlnesxm00rfk36x8t4assqrhk0phsld\",\n \"resource\" : \"0c8ujftg8ggsrntlcfxwzl4pw4y8uhg3ou4y46ku0ev6gzl0ax85bzddywa652bbtxbkjkbx65rhbfq5rm9ue2o0g0gdmddrvhrx3h4h6udaajuhfhlgwevavambvj6vyprpdlhu8k3we3nbqr6v260fl9ep4ewrq9bj048psffdlmiqobqarwsk42b6irxf\",\n \"index\" : 3990746353215167989,\n \"message\" : \"Quod enim sit ducimus. Odio impedit eaque rem. Consequatur sequi molestias sunt. Inventore omnis quas et sint quia sunt.\",\n \"value\" : { }\n }, {\n \"code\" : \"n7yml4qs6lpetjtv5ck21wa8jrvrqbayi6i4glz0ajkbolrda5t9kianxw15fnqsap9a7ao4xv9kxxy07zinhkxhqk3roktyol1w3gu\",\n \"field\" : \"ljolgfkpp92zas3x3in9cnmszwlptd01fz92hgy86o3ckwctn6zhlhjoq90llvp2zag22slqvrkorpqg00ry89e9yckmwfacxvisdo9vfndvfeyrx7fnm647fhekfbuleo2hsfemyipul\",\n \"resource\" : \"d1mm2namsd8m0x2lf1jnnl1xz6zyeg3zuxhspsyrthv1gn27jcg70sexr99xxu049gkv1qsjlykqnux6mcfuoixfg9alqp9b22o7j6rvk\",\n \"index\" : 2099658468503576983,\n \"message\" : \"Vel dolor et quidem illo. Facere dolor blanditiis aspernatur ex eaque quidem sit. Possimus nobis provident. Et ut animi.\",\n \"value\" : { }\n } ]\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "7afbce08-1c6c-4c55-b926-b243df368652", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.818026Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "projects/remove-collaborator", + "schema": { + "description": "Validation Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "errors": { + "items": { + "properties": { + "code": { + "type": "string" + }, + "field": { + "type": "string" + }, + "index": { + "type": "integer" + }, + "message": { + "type": "string" + }, + "resource": { + "type": "string" + }, + "value": { + "oneOf": [ + { + "nullable": true, + "type": "string" + }, + { + "nullable": true, + "type": "integer" + }, + { + "items": { + "type": "string" + }, + "nullable": true, + "type": "array" + } + ] + } + }, + "required": ["code"], + "type": "object" + }, + "type": "array" + }, + "message": { + "type": "string" + } + }, + "required": ["message", "documentation_url"], + "title": "Validation Error", + "type": "object" + } + } + } + }, + "insertionIndex": 946 + }, + { + "id": "ee26cc4f-cdec-4eec-9cdd-3c10c04be569", + "name": "Remove user as a collaborator (application/json)", + "request": { + "urlPath": "/projects/4774869498489634605/collaborators/yon.rowe", + "method": "DELETE", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 415, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/709913\",\n \"message\" : \"Sapiente et vel qui. Molestias eum beatae autem. Odio architecto a provident harum ipsam suscipit.\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "ee26cc4f-cdec-4eec-9cdd-3c10c04be569", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.817492Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "projects/remove-collaborator", + "schema": { + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": ["message", "documentation_url"], + "type": "object" + } + } + } + }, + "insertionIndex": 947 + }, + { + "id": "c2afda22-f0f1-4196-b374-6ab0999921eb", + "name": "Remove user as a collaborator (application/json)", + "request": { + "urlPath": "/projects/7962254647905484357/collaborators/sheldon.casper", + "method": "DELETE", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/939427\",\n \"message\" : \"Ut est eaque molestiae rem dolor perspiciatis quasi. Beatae cum et. Minima quidem aspernatur molestias. Libero culpa distinctio. Minus consequuntur vel sint ducimus.\",\n \"url\" : \"https://web.example.mocklab.io/017972\",\n \"status\" : \"lw1c60ne8608241pllesfuq52ijwgdp5bpx598zz2i9t147mqjxorbob6btcy2nswho99vbjna9hbrznnmskkpotqft1z19s2jhr2ehywu9s2od0w2k1lxgdrlinorv7npczfszfr7hrq4cpyroqcj2d21k3l8tziqqit66b2nbd96ytn\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "c2afda22-f0f1-4196-b374-6ab0999921eb", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.817345Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "projects/remove-collaborator", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 948 + }, + { + "id": "cd1c9f16-a91a-40e1-9de1-6b466ad91269", + "name": "Remove user as a collaborator (application/json)", + "request": { + "urlPath": "/projects/5935829808169767312/collaborators/mirella.emmerich", + "method": "DELETE", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 403, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/568992\",\n \"message\" : \"Veniam sapiente nesciunt voluptatem asperiores. Non qui doloribus aspernatur rerum sit ut. Et nihil debitis dolorum. Ea quia odit dolor sit et iure.\",\n \"url\" : \"https://web.example.mocklab.io/698953\",\n \"status\" : \"hjwhe7wyzhqqdm61lmpgzbp0ti6kxuxnr04ablzc8a2c\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "cd1c9f16-a91a-40e1-9de1-6b466ad91269", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.817118Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "projects/remove-collaborator", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 949 + }, + { + "id": "33d08f1c-efbd-4bbb-869d-b605c983aea9", + "name": "Remove user as a collaborator (application/json)", + "request": { + "urlPath": "/projects/2446721171699345191/collaborators/jadwiga.rowe", + "method": "DELETE", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 401, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/589577\",\n \"message\" : \"Sit alias quia et reiciendis mollitia corrupti. Adipisci rerum facilis. Doloribus est rem tempore.\",\n \"url\" : \"https://web.example.mocklab.io/502787\",\n \"status\" : \"ngtrmcyzsqm5u26p8j4qhc19g858r744ih3n0douvgoyy27c069bb5rhnwgxunwc12o9kn4r7nlahva9fji76lpthbdciyng8or8oix3kfi4o9rmoehyb02hfdbvl5z2om5p22303dz1fae1bbjh4125kn3e1crgk4qrjvi\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "33d08f1c-efbd-4bbb-869d-b605c983aea9", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.81689Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "projects/remove-collaborator", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 950 + }, + { + "id": "0b7912bf-3544-4244-a8f0-0b7ecf742faa", + "name": "Remove user as a collaborator - 304", + "request": { + "urlPath": "/projects/8118033372719696697/collaborators/magali.sanford", + "method": "DELETE" + }, + "response": { + "status": 304 + }, + "uuid": "0b7912bf-3544-4244-a8f0-0b7ecf742faa", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.816668Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "projects/remove-collaborator" + } + } + }, + "insertionIndex": 951 + }, + { + "id": "147623a9-7c3d-487a-996a-f8f90fb10484", + "name": "Remove user as a collaborator - 204", + "request": { + "urlPath": "/projects/791004483972700664/collaborators/evette.lesch", + "method": "DELETE" + }, + "response": { + "status": 204 + }, + "uuid": "147623a9-7c3d-487a-996a-f8f90fb10484", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.81663Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "projects/remove-collaborator" + } + } + }, + "insertionIndex": 952 + }, + { + "id": "5b285aec-b756-478b-813d-aa7fc0a2e61e", + "name": "List project collaborators (application/json)", + "request": { + "urlPath": "/projects/782551731892450200/collaborators", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 422, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/038729\",\n \"message\" : \"Et quis porro molestias maiores quibusdam repudiandae et. Qui odio veritatis asperiores dolorem. Eveniet ut est praesentium magnam. Soluta cupiditate ex modi qui quibusdam vel. Ab repellendus officia.\",\n \"errors\" : [ {\n \"code\" : \"k327moqz6nfle7nw3f9syaaanvalz373gztuscraubxbvnnllqfou3ovslrhg8iquukgo7npeea66jv60pgqulvl7ek72cczi3nusty85k8hyfk5i5g1svou7zssjtsoo70jt9\",\n \"field\" : \"jlch32uz9d8v4g3ht1hcauut0keuhkktmc964plvsmn8ljos18hzghmwgjjav0bln8oc896qh4c51q8uxb4juelcoq52af\",\n \"resource\" : \"f8ptivwj5x0w03j9drxgsdew32wvjti70q75nd3b6hu5s6tlokpnysvopuq5j96gq0emjadg3tg4udsk0\",\n \"index\" : 4858785071900027282,\n \"message\" : \"Odio sunt ut placeat qui fugiat. Placeat aut sit. Voluptate excepturi quo assumenda autem deleniti.\",\n \"value\" : { }\n }, {\n \"code\" : \"07vu8fd2\",\n \"field\" : \"ju194m895cyyhhaex3k\",\n \"resource\" : \"7i730y0edocvmjb4o46rnldga0av5xepm5ffwjllwxialgv5bpsp444j0318s4m7mldkkpf6mw43m34dvi7yhvqmgzq2o9rd6f5u22jj9uqph2cuzu7y\",\n \"index\" : 7502245550769595682,\n \"message\" : \"Perferendis et et vel est aut. Repudiandae mollitia sapiente soluta repellendus minus. Qui harum aliquid illum quos quis atque. Qui fugit soluta et necessitatibus exercitationem.\",\n \"value\" : { }\n } ]\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "5b285aec-b756-478b-813d-aa7fc0a2e61e", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.816556Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "projects/list-collaborators", + "schema": { + "description": "Validation Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "errors": { + "items": { + "properties": { + "code": { + "type": "string" + }, + "field": { + "type": "string" + }, + "index": { + "type": "integer" + }, + "message": { + "type": "string" + }, + "resource": { + "type": "string" + }, + "value": { + "oneOf": [ + { + "nullable": true, + "type": "string" + }, + { + "nullable": true, + "type": "integer" + }, + { + "items": { + "type": "string" + }, + "nullable": true, + "type": "array" + } + ] + } + }, + "required": ["code"], + "type": "object" + }, + "type": "array" + }, + "message": { + "type": "string" + } + }, + "required": ["message", "documentation_url"], + "title": "Validation Error", + "type": "object" + } + } + } + }, + "insertionIndex": 953 + }, + { + "id": "27ed655b-0ea5-4bea-902a-ed1baf514184", + "name": "List project collaborators (application/json)", + "request": { + "urlPath": "/projects/2641712245285132468/collaborators", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 415, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/240962\",\n \"message\" : \"Sint nulla et vel voluptatem. Soluta repudiandae tenetur molestias consectetur doloribus totam voluptates. Reprehenderit velit qui quae fugit. Nemo perspiciatis ut vel voluptas.\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "27ed655b-0ea5-4bea-902a-ed1baf514184", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.816114Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "projects/list-collaborators", + "schema": { + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": ["message", "documentation_url"], + "type": "object" + } + } + } + }, + "insertionIndex": 954 + }, + { + "id": "78547c14-00ac-4315-b03b-fc81441e090f", + "name": "List project collaborators (application/json)", + "request": { + "urlPath": "/projects/5942999481210089784/collaborators", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/449312\",\n \"message\" : \"Qui aliquid ea ut. Qui ut assumenda error nisi. Commodi et corrupti ut et aut sint ut.\",\n \"url\" : \"https://web.example.mocklab.io/047634\",\n \"status\" : \"nkuyyrnjqfx8sj27pi1bjnc9sw89zrvbd6o676\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "78547c14-00ac-4315-b03b-fc81441e090f", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.815958Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "projects/list-collaborators", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 955 + }, + { + "id": "42517093-6e6d-47c7-b1be-e644fb5a8b7f", + "name": "List project collaborators (application/json)", + "request": { + "urlPath": "/projects/2799541422246389506/collaborators", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 403, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/569676\",\n \"message\" : \"A cupiditate nulla modi ipsa aspernatur non. Optio sed odio quidem reiciendis quae vel. Laudantium in qui natus necessitatibus quibusdam. Enim nobis deleniti est magnam ea. Praesentium distinctio sed \",\n \"url\" : \"https://web.example.mocklab.io/556045\",\n \"status\" : \"d03kvwil6i1aox032q2uxx6y9kburgo1iu5atfoovclvstlgf7h054v8xylsffrtg8hp07iurfj8gyj40pz20s7jzup86avuh43rn9xv3tds7rkw5w3\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "42517093-6e6d-47c7-b1be-e644fb5a8b7f", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.815754Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "projects/list-collaborators", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 956 + }, + { + "id": "cd4f8493-305b-45dd-ae33-8d0d537440ac", + "name": "List project collaborators (application/json)", + "request": { + "urlPath": "/projects/1211534131026668579/collaborators", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 401, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/567983\",\n \"message\" : \"Voluptas iure qui ut omnis quisquam ab. Ea quaerat aut facilis sint eveniet aperiam. Quos officiis non tenetur ut voluptate.\",\n \"url\" : \"https://web.example.mocklab.io/865533\",\n \"status\" : \"v0yf7hvnmroi282f20yrpofikkt5iau5mr8840sila199i2\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "cd4f8493-305b-45dd-ae33-8d0d537440ac", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.815546Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "projects/list-collaborators", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 957 + }, + { + "id": "8911e29e-24d2-451b-a574-ecc9bc1c1075", + "name": "List project collaborators - 304", + "request": { + "urlPath": "/projects/8218209540944263282/collaborators", + "method": "GET" + }, + "response": { + "status": 304 + }, + "uuid": "8911e29e-24d2-451b-a574-ecc9bc1c1075", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.815339Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "projects/list-collaborators" + } + } + }, + "insertionIndex": 958 + }, + { + "id": "388211b9-db53-4306-a0a9-54844b44f454", + "name": "List project collaborators (application/json) - default", + "request": { + "urlPath": "/projects/1185809541194636309/collaborators", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 200, + "body": "[ {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n} ]", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "388211b9-db53-4306-a0a9-54844b44f454", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.815313Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "projects/list-collaborators", + "schema": { + "items": { + "$ref": "#/components/schemas/simple-user" + }, + "type": "array" + } + } + } + }, + "insertionIndex": 959 + }, + { + "id": "aef7f881-ee8e-4ec2-87c6-2e0fa7368312", + "name": "Update a project (application/json)", + "request": { + "urlPath": "/projects/5312238794966276849", + "method": "PATCH", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 422, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/593718\",\n \"message\" : \"Ratione possimus sed ex officia quia impedit. Enim est reprehenderit possimus quis ullam. Recusandae beatae explicabo voluptas est qui.\",\n \"errors\" : [ \"08nedyl78oojqiwxc0nm2se0istxgxf20vxne7m0f7cv0xyowopa0gyx6xe5smhjmjcimeme5jv9ns8extjafvulg0vn6wjxv3ugxf8xjsoqdbp4n4l6f8rj3v1phvomq3t0b78wpd0jbcphdt63c4vogxwlfk1n8u2a\", \"5w8f6gwggz4aprjqsxolcdzpfpj8ivel4kyqzx7m6cmllzby\", \"b98y9unxhd9p4qekmnvdcwy9uup8vfi21r6we2dfcqb4m3rtoa43av0puneqiyw48mvt5ikviizf8gzeunswgslernuz3ojwin8ajl9931l31zettwjaqfmq55nzhozoeavrb479nylflfns79225onbkec210s6wdy36w33j9gpxjcy2l405b808cm3em550\" ]\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "aef7f881-ee8e-4ec2-87c6-2e0fa7368312", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.815256Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "projects/update", + "schema": { + "description": "Validation Error Simple", + "properties": { + "documentation_url": { + "type": "string" + }, + "errors": { + "items": { + "type": "string" + }, + "type": "array" + }, + "message": { + "type": "string" + } + }, + "required": ["message", "documentation_url"], + "title": "Validation Error Simple", + "type": "object" + } + } + } + }, + "insertionIndex": 960 + }, + { + "id": "221cdebb-6a56-4625-b16c-d2ee5b15d6eb", + "name": "Update a project (application/json)", + "request": { + "urlPath": "/projects/4974464201489077295", + "method": "PATCH", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 410, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/121418\",\n \"message\" : \"Qui dolore aut. Aliquam nam recusandae qui rem molestiae quidem. Et eos iusto possimus facilis quidem odit voluptate.\",\n \"url\" : \"https://web.example.mocklab.io/531461\",\n \"status\" : \"65ovn986unjltxcljrcl18i1iaf3649j7yebbhp0ywcd1fy2xepceeokrgedr3joz11jat1i24kqsvnz89128a7kfrgfih03d2wv9jjmqknxtocdc16e41yqlli8czawz9g1bdp277pqt4o2htfxa8vclzipd16fozifp0torursnxto3mcjd50kmzzl4nkk0o\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "221cdebb-6a56-4625-b16c-d2ee5b15d6eb", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.815081Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "projects/update", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 961 + }, + { + "id": "4078b098-345b-474b-be03-f5dc2633829d", + "name": "Update a project - 404", + "request": { + "urlPath": "/projects/8353780337364929207", + "method": "PATCH" + }, + "response": { + "status": 404 + }, + "uuid": "4078b098-345b-474b-be03-f5dc2633829d", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.814877Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "projects/update" + } + } + }, + "insertionIndex": 962 + }, + { + "id": "2098db87-35e0-407b-9f31-2ecd4915abda", + "name": "Update a project (application/json)", + "request": { + "urlPath": "/projects/5597205240826685171", + "method": "PATCH", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 403, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/209434\",\n \"message\" : \"Ipsa exercitationem eaque. Facilis qui reiciendis quo quia velit reprehenderit. Quod deserunt doloremque. Fugiat non id soluta amet doloremque.\",\n \"errors\" : [ \"x9ib1t2kdc9jba659i82zd0820yzfcfjny90ti3ppnzvogeu2zkuwnlco5c767y7p83he1y4dyyprd5p5ncdvsaz8aw4tnayxonfpauh520pc1zagfaju2eeh7isl4mqcl32t5bil23mn5v6bv1rg3a3wdi8t772xkh1i6alkbd2cjd8vi8\", \"rwna484t8mzgma65o3u8slijsic57y0snqegy5fw2ajfyv758oq1f5xvshsjyncg7vw0jxc95e9h8tffh28xyeajz7w5pq9qvmfdbgkx0mfxyeq1o4wpq8yfspqx2f09\", \"j3r3v0lp2b109dhtzq5\", \"899xzt4q0zrzelh7lbddbqobi1j9klhw50i4yljy3a1yuuj1wl8bd72isq8a12xgifw6d04doaar4zqckamwypjyc3l8dginfmf2spuj1np23zw7yhn\", \"23tanegvd4qncj3m8dpez3bqun9r0o760ni1h4bx7vk2udwt8rb6spm1y5lwpvs3na1kd8grhqnhw75ecqz8n9fzfhpzqlbsmqjb9v15uo8dt9fzli146p0qlqs8cn4z6d39ntsna5b94yg2zprx76rj4hzglszeh6byl271mpf6hfep1\" ]\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "2098db87-35e0-407b-9f31-2ecd4915abda", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.814851Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "projects/update", + "schema": { + "properties": { + "documentation_url": { + "type": "string" + }, + "errors": { + "items": { + "type": "string" + }, + "type": "array" + }, + "message": { + "type": "string" + } + }, + "type": "object" + } + } + } + }, + "insertionIndex": 963 + }, + { + "id": "1dfbab64-1b44-4d0c-a91b-26ee7edd5b1a", + "name": "Update a project (application/json)", + "request": { + "urlPath": "/projects/3054420124354493431", + "method": "PATCH", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 401, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/490214\",\n \"message\" : \"Qui molestiae assumenda aliquid blanditiis harum voluptas. Molestiae aut aut consequatur. Aspernatur tempore et velit dolore eveniet.\",\n \"url\" : \"https://web.example.mocklab.io/419311\",\n \"status\" : \"y236x1gr36y081oajct4hbq9bv3ro6tewdyr2qb3cleo0bpwtfolwejxh906i03auxvpcf6c732j26uqhhkmi6sybrft19zg1met0ojgs7s4rem5ozf1osumsdat04odhhfm84ysn4d3x2uamnvd978khfa5buzt2ku\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "1dfbab64-1b44-4d0c-a91b-26ee7edd5b1a", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.814649Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "projects/update", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 964 + }, + { + "id": "cf266c5e-4d9f-4a26-941a-9f7c072da8ef", + "name": "Update a project - 304", + "request": { + "urlPath": "/projects/451675188253135276", + "method": "PATCH" + }, + "response": { + "status": 304 + }, + "uuid": "cf266c5e-4d9f-4a26-941a-9f7c072da8ef", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.814452Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "projects/update" + } + } + }, + "insertionIndex": 965 + }, + { + "id": "b8670388-5112-4277-bc61-e0d87fdf3d76", + "name": "Update a project (application/json) - default", + "request": { + "urlPath": "/projects/5011117268116410422", + "method": "PATCH", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 200, + "body": "{\n \"body\" : \"Developer documentation project for the developer site.\",\n \"columns_url\" : \"https://api.github.com/projects/1002604/columns\",\n \"created_at\" : \"2011-04-10T20:09:31Z\",\n \"creator\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"html_url\" : \"https://github.com/api-playground/projects-test/projects/1\",\n \"id\" : 1002604,\n \"name\" : \"Projects Documentation\",\n \"node_id\" : \"MDc6UHJvamVjdDEwMDI2MDQ=\",\n \"number\" : 1,\n \"owner_url\" : \"https://api.github.com/repos/api-playground/projects-test\",\n \"state\" : \"open\",\n \"updated_at\" : \"2014-03-03T18:58:10Z\",\n \"url\" : \"https://api.github.com/projects/1002604\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "b8670388-5112-4277-bc61-e0d87fdf3d76", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.814422Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "projects/update", + "schema": { + "description": "Projects are a way to organize columns and cards of work.", + "properties": { + "body": { + "description": "Body of the project", + "example": "This project represents the sprint of the first week in January", + "nullable": true, + "type": "string" + }, + "columns_url": { + "example": "https://api.github.com/projects/1002604/columns", + "format": "uri", + "type": "string" + }, + "created_at": { + "example": "2011-04-10T20:09:31Z", + "format": "date-time", + "type": "string" + }, + "creator": { + "$ref": "#/components/schemas/nullable-simple-user" + }, + "html_url": { + "example": "https://github.com/api-playground/projects-test/projects/12", + "format": "uri", + "type": "string" + }, + "id": { + "example": 1002604, + "type": "integer" + }, + "name": { + "description": "Name of the project", + "example": "Week One Sprint", + "type": "string" + }, + "node_id": { + "example": "MDc6UHJvamVjdDEwMDI2MDQ=", + "type": "string" + }, + "number": { + "example": 1, + "type": "integer" + }, + "organization_permission": { + "description": "The baseline permission that all organization members have on this project. Only present if owner is an organization.", + "enum": ["read", "write", "admin", "none"], + "type": "string" + }, + "owner_url": { + "example": "https://api.github.com/repos/api-playground/projects-test", + "format": "uri", + "type": "string" + }, + "private": { + "description": "Whether or not this project can be seen by everyone. Only present if owner is an organization.", + "type": "boolean" + }, + "state": { + "description": "State of the project; either 'open' or 'closed'", + "example": "open", + "type": "string" + }, + "updated_at": { + "example": "2014-03-03T18:58:10Z", + "format": "date-time", + "type": "string" + }, + "url": { + "example": "https://api.github.com/projects/1002604", + "format": "uri", + "type": "string" + } + }, + "required": [ + "id", + "node_id", + "number", + "name", + "body", + "state", + "url", + "html_url", + "owner_url", + "creator", + "columns_url", + "created_at", + "updated_at" + ], + "title": "Project", + "type": "object" + } + } + } + }, + "insertionIndex": 966 + }, + { + "id": "2c2e4dd8-f6fa-4b75-9f07-c9d76cc1ff90", + "name": "Get a project (application/json)", + "request": { + "urlPath": "/projects/974619233175886868", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 403, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/338810\",\n \"message\" : \"Rerum sunt voluptas eos excepturi voluptatum tenetur. Vel eos velit. Distinctio ducimus laborum optio officiis error. Voluptatem ratione nam ut impedit quia tenetur. Natus dolorum id vel est et aut cu\",\n \"url\" : \"https://web.example.mocklab.io/176260\",\n \"status\" : \"imeync8ilqzjawdodbx06fnbtwe5niq9u73yjuucj1jljgvkatx6m1tgd99pqaktcfwwcwagft9eydaoytoog109rxby1ablnz0rcz1ymhk4ywr96mc4ccotlncr\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "2c2e4dd8-f6fa-4b75-9f07-c9d76cc1ff90", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.814294Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "projects/get", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 967 + }, + { + "id": "46d49ccb-7c8d-4506-9d2f-a25269b99bd3", + "name": "Get a project (application/json)", + "request": { + "urlPath": "/projects/1226205594981050603", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 401, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/063167\",\n \"message\" : \"Ad ut vel enim voluptatum incidunt. Id quia doloremque. Esse sint alias ex explicabo.\",\n \"url\" : \"https://web.example.mocklab.io/832655\",\n \"status\" : \"sr7j8ds63uv4vk8adm0756jg96g8t9jfcxqp02ef08edbakr5usfiivdvaknl47qqub53dq1gnw6inc6m5rw0ufprhtrokx922ef57wrozhepj4jz5q17j8ro3zw1mzs\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "46d49ccb-7c8d-4506-9d2f-a25269b99bd3", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.814076Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "projects/get", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 968 + }, + { + "id": "ec1f43dc-ac68-4d93-9703-54e5730e8087", + "name": "Get a project - 304", + "request": { + "urlPath": "/projects/5014706755829051734", + "method": "GET" + }, + "response": { + "status": 304 + }, + "uuid": "ec1f43dc-ac68-4d93-9703-54e5730e8087", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.813879Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "projects/get" + } + } + }, + "insertionIndex": 969 + }, + { + "id": "09efd318-9e4c-49ac-8888-b7a948f0b850", + "name": "Get a project (application/json) - default", + "request": { + "urlPath": "/projects/2968466642322535597", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 200, + "body": "{\n \"body\" : \"Developer documentation project for the developer site.\",\n \"columns_url\" : \"https://api.github.com/projects/1002604/columns\",\n \"created_at\" : \"2011-04-10T20:09:31Z\",\n \"creator\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"html_url\" : \"https://github.com/api-playground/projects-test/projects/1\",\n \"id\" : 1002604,\n \"name\" : \"Projects Documentation\",\n \"node_id\" : \"MDc6UHJvamVjdDEwMDI2MDQ=\",\n \"number\" : 1,\n \"owner_url\" : \"https://api.github.com/repos/api-playground/projects-test\",\n \"state\" : \"open\",\n \"updated_at\" : \"2014-03-03T18:58:10Z\",\n \"url\" : \"https://api.github.com/projects/1002604\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "09efd318-9e4c-49ac-8888-b7a948f0b850", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.813849Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "projects/get", + "schema": { + "description": "Projects are a way to organize columns and cards of work.", + "properties": { + "body": { + "description": "Body of the project", + "example": "This project represents the sprint of the first week in January", + "nullable": true, + "type": "string" + }, + "columns_url": { + "example": "https://api.github.com/projects/1002604/columns", + "format": "uri", + "type": "string" + }, + "created_at": { + "example": "2011-04-10T20:09:31Z", + "format": "date-time", + "type": "string" + }, + "creator": { + "$ref": "#/components/schemas/nullable-simple-user" + }, + "html_url": { + "example": "https://github.com/api-playground/projects-test/projects/12", + "format": "uri", + "type": "string" + }, + "id": { + "example": 1002604, + "type": "integer" + }, + "name": { + "description": "Name of the project", + "example": "Week One Sprint", + "type": "string" + }, + "node_id": { + "example": "MDc6UHJvamVjdDEwMDI2MDQ=", + "type": "string" + }, + "number": { + "example": 1, + "type": "integer" + }, + "organization_permission": { + "description": "The baseline permission that all organization members have on this project. Only present if owner is an organization.", + "enum": ["read", "write", "admin", "none"], + "type": "string" + }, + "owner_url": { + "example": "https://api.github.com/repos/api-playground/projects-test", + "format": "uri", + "type": "string" + }, + "private": { + "description": "Whether or not this project can be seen by everyone. Only present if owner is an organization.", + "type": "boolean" + }, + "state": { + "description": "State of the project; either 'open' or 'closed'", + "example": "open", + "type": "string" + }, + "updated_at": { + "example": "2014-03-03T18:58:10Z", + "format": "date-time", + "type": "string" + }, + "url": { + "example": "https://api.github.com/projects/1002604", + "format": "uri", + "type": "string" + } + }, + "required": [ + "id", + "node_id", + "number", + "name", + "body", + "state", + "url", + "html_url", + "owner_url", + "creator", + "columns_url", + "created_at", + "updated_at" + ], + "title": "Project", + "type": "object" + } + } + } + }, + "insertionIndex": 970 + }, + { + "id": "8b1ef040-bb13-476b-b83b-0cdee9956b96", + "name": "Delete a project (application/json)", + "request": { + "urlPath": "/projects/1629533630815654829", + "method": "DELETE", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 410, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/826364\",\n \"message\" : \"Illum deleniti temporibus perferendis aperiam ut sed. Ut veniam cupiditate provident aspernatur libero vel voluptatem. Non nostrum nihil aut. Ea quia vitae magni aliquam aut alias. Ex dolores consequa\",\n \"url\" : \"https://web.example.mocklab.io/384170\",\n \"status\" : \"qclckrmj9eamly33ai9y0qlx3uxqyoyz6hqphndfekv3bzab3cn29er66dhanfr8345gld\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "8b1ef040-bb13-476b-b83b-0cdee9956b96", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.813647Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "projects/delete", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 971 + }, + { + "id": "b178420e-19db-42c0-b5d7-5f50afb28921", + "name": "Delete a project (application/json)", + "request": { + "urlPath": "/projects/4996126996476336528", + "method": "DELETE", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/610228\",\n \"message\" : \"Optio illum magni et natus id illum voluptatem. A quos eaque. Voluptatem possimus facilis.\",\n \"url\" : \"https://web.example.mocklab.io/978550\",\n \"status\" : \"eslrow0hschmswdvkrxfa1zwu9jo0glti5fapaybpdz8fpgpj4dwi1tro3643ga0ysbk16edfpnik51\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "b178420e-19db-42c0-b5d7-5f50afb28921", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.813435Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "projects/delete", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 972 + }, + { + "id": "29dbd494-763f-4852-9a37-87619bdc1c2a", + "name": "Delete a project (application/json)", + "request": { + "urlPath": "/projects/3808301832754944740", + "method": "DELETE", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 403, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/228153\",\n \"message\" : \"Voluptates aut ut corporis. Rerum voluptatem omnis ab enim qui. Magnam quo aspernatur enim tempora consequatur minus sint. Explicabo nobis itaque officiis dicta laboriosam rerum. Excepturi minus volup\",\n \"errors\" : [ \"d9x5j0lxfr18opak0xds3yuca1sq6x8ayuhaseubk9i5ejyhq08p6j3cw0gtgh8s9khkzvvngxn3w96mj5p276qiwyfxfvfw2uokak40kuxwqscf5lwpotjao01ks3sfmtnc78dj6un6fa3\", \"deiwl2yr1be1a3mepr6vnwpkbnlmq2ugr1z51269t2\", \"kfqces3o33jaz28vf7xqhwcfn0uxlvfmpmfwmh25ku9h3m1pbkms1ukp5h6achl0shf9ih\", \"mtiqe995v3rqmk4t6r5wzlnjnh5f0c0khcxdiw25nmao40m0332fvumtus9b3xskt\", \"691224wb3z3fgxeorb0gfwei49liie5vqkcqda4lnv84tam8so2iz3uer4bly97lp5q7nok47n0tpvvm2nzvv1othiyyba9g3a1te2owrjido52ayjkm20zrdydc4yh6xahjjr\", \"fd5telzdircu9m82moda6cm9b801lq0bhj99frb4wwxrixkmsy02pyolgea2u910xyvwldk3xy9h8tx3mvueuucwm2omu48let7wn88u5ungfn093ytde5f1sjs9prsywl9ftdla30lffztkswjtog79v\", \"zebxwzwup0xfrf70r80slbv2ldfxb\", \"nfq3zf1gqkzxkaadftsxubrzegye39bdpg1ise13t6p3i6qgdtjtbc9bc7aewj61ltq86651cioxfgqqc05ln8wshtaqxy0ygb77dvpd646e9g3nwuqlactx3g\" ]\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "29dbd494-763f-4852-9a37-87619bdc1c2a", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.813232Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "projects/delete", + "schema": { + "properties": { + "documentation_url": { + "type": "string" + }, + "errors": { + "items": { + "type": "string" + }, + "type": "array" + }, + "message": { + "type": "string" + } + }, + "type": "object" + } + } + } + }, + "insertionIndex": 973 + }, + { + "id": "90a390c2-2212-4f02-8fd5-cf20830ca973", + "name": "Delete a project (application/json)", + "request": { + "urlPath": "/projects/4795529743204384265", + "method": "DELETE", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 401, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/678965\",\n \"message\" : \"Laudantium quas sed omnis quis animi et qui. Quis molestiae aperiam. Repellendus aut quasi omnis occaecati ea porro sunt.\",\n \"url\" : \"https://web.example.mocklab.io/837637\",\n \"status\" : \"w0y1v8r3727rww0\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "90a390c2-2212-4f02-8fd5-cf20830ca973", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.813017Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "projects/delete", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 974 + }, + { + "id": "e0a8408b-28f9-4a96-9d2b-0f255ef37569", + "name": "Delete a project - 304", + "request": { + "urlPath": "/projects/3278515959780773954", + "method": "DELETE" + }, + "response": { + "status": 304 + }, + "uuid": "e0a8408b-28f9-4a96-9d2b-0f255ef37569", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.81282Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "projects/delete" + } + } + }, + "insertionIndex": 975 + }, + { + "id": "18ec247a-68ff-4dd0-8405-633059407f77", + "name": "Delete a project - 204", + "request": { + "urlPath": "/projects/2146430127742000971", + "method": "DELETE" + }, + "response": { + "status": 204 + }, + "uuid": "18ec247a-68ff-4dd0-8405-633059407f77", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.812803Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "projects/delete" + } + } + }, + "insertionIndex": 976 + }, + { + "id": "fad21ef5-8b0d-4a75-b1af-cbcab646dc25", + "name": "Move a project column (application/json)", + "request": { + "urlPath": "/projects/columns/3317526743260170742/moves", + "method": "POST", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 422, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/456199\",\n \"message\" : \"Odit qui magnam. Ratione debitis sit sunt similique a a. Est optio maiores. Voluptatem doloremque rerum et nulla molestias modi. Perspiciatis voluptas in doloribus quibusdam non ut.\",\n \"errors\" : [ \"4j11kqwc040uocco3mn69hz3i9nvwxc2w14ii1snkq8b6nt9zo2v3rw7wr9uwe8sz8kld235bx98l3u99t484cenx1jqkjr0szpyusla6bdwwr75f0a5lgmpc\", \"c68sgx3f8hvcpo14vgogdhsce27yaobp32q8twvuy3kzwvh1chdaw1aj5nnyv15sfl2xapa189t1s87kc0esdgxgw8ajv4eqfo2888adsoma61t3x8115fmzp6jczb6kjjxt3d914os5lgwoxyq2379o6bynjf5xzhcjunwg6gmn67zuulbv8657d7wxu\", \"zxlrxsn7cxwuyby6ubuxwi7q6x8ynmwagi9r57fyxji7a8p3cb7l2baa4brvfdx0\", \"gdklcxu340hbgzorq7iy02z\", \"zsig05qjd8urt1xg3502wjn1whfe0q7axnpdilw9g2g52v6tdy9xukje0gtd6gzb443u6x37h73surl52g5u8ctw742yfyxfzv4fqha3nyqdnoxo1tig4zmn5o9m1zvwvw64rmh9m1mu2eekbndhwjxzjqbe3jcv0bbaesh6rabho9wbr\", \"hght39ewt3f01z3\" ]\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "fad21ef5-8b0d-4a75-b1af-cbcab646dc25", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.812766Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "projects/move-column", + "schema": { + "description": "Validation Error Simple", + "properties": { + "documentation_url": { + "type": "string" + }, + "errors": { + "items": { + "type": "string" + }, + "type": "array" + }, + "message": { + "type": "string" + } + }, + "required": ["message", "documentation_url"], + "title": "Validation Error Simple", + "type": "object" + } + } + } + }, + "insertionIndex": 977 + }, + { + "id": "3fcc4530-d669-41b9-96cf-d0e1dc35ccdc", + "name": "Move a project column (application/json)", + "request": { + "urlPath": "/projects/columns/8631302816804710962/moves", + "method": "POST", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 403, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/576299\",\n \"message\" : \"Ea quos voluptatem deleniti tempora aliquid quam. Quis rem numquam voluptatem et temporibus. Iste reiciendis dolores illo repellendus laborum.\",\n \"url\" : \"https://web.example.mocklab.io/259535\",\n \"status\" : \"28sqypvhc1iz90c88i6go1ygffw0mlmawcus1qjkp19hrr22l6pr9o98cvna7yt914xcdryl02e85g7nmw3gc0ojbm2swfe5n0vx08zzr\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "3fcc4530-d669-41b9-96cf-d0e1dc35ccdc", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.812551Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "projects/move-column", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 978 + }, + { + "id": "6519e61c-1739-4629-b8b3-9510bc99be82", + "name": "Move a project column (application/json)", + "request": { + "urlPath": "/projects/columns/371831672356291139/moves", + "method": "POST", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 401, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/902408\",\n \"message\" : \"Est amet voluptatibus quia quia aperiam dicta ipsam. Aut sunt nobis velit. Veritatis incidunt et. Nobis similique tenetur vitae.\",\n \"url\" : \"https://web.example.mocklab.io/329844\",\n \"status\" : \"ldtbsuhbqaamhiinti0vdsvfimfel51kcd43xw8ljtpzz7p1k78j9nzs2zve1y1j7qyswxf7xab\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "6519e61c-1739-4629-b8b3-9510bc99be82", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.81235Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "projects/move-column", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 979 + }, + { + "id": "689253b1-d8ec-46fd-98c7-0a86ae941619", + "name": "Move a project column - 304", + "request": { + "urlPath": "/projects/columns/7069421588772040382/moves", + "method": "POST" + }, + "response": { + "status": 304 + }, + "uuid": "689253b1-d8ec-46fd-98c7-0a86ae941619", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.81215Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "projects/move-column" + } + } + }, + "insertionIndex": 980 + }, + { + "id": "943a1e43-febe-4b01-aeb1-58fa58ee39e0", + "name": "Move a project column (application/json)", + "request": { + "urlPath": "/projects/columns/2757788208853100109/moves", + "method": "POST", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 201, + "body": "{ }", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "943a1e43-febe-4b01-aeb1-58fa58ee39e0", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.812126Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "projects/move-column", + "schema": { + "additionalProperties": false, + "type": "object" + } + } + } + }, + "insertionIndex": 981 + }, + { + "id": "55fafe34-b81f-43ed-815a-085e883e791d", + "name": "Create a project card (application/json)", + "request": { + "urlPath": "/projects/columns/7871492403509101922/cards", + "method": "POST", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 503, + "body": "{\n \"code\" : \"65l4wnoexibxfxiuj93b1r7nm2sxg4389dt0mfyrj8qvstvf2qxxbolg4l9cqo\",\n \"documentation_url\" : \"https://web.example.mocklab.io/538666\",\n \"message\" : \"Mollitia aut officiis nobis aliquam. Dignissimos quae quam ea ea. Consequatur officia nisi. Saepe cumque nemo aut.\",\n \"errors\" : [ {\n \"code\" : \"r603883difn9ma31hqyc5f9ewgmqab7mgpylytz2psyyt8g4fa8gr7px\",\n \"message\" : \"Esse tenetur aut pariatur eum accusamus sed ut. Aut et aut velit laboriosam. Provident exercitationem sunt iure et repellendus error.\"\n }, {\n \"code\" : \"qabefcyg5j1gc5ybwwew4ejytfyz9f9nrqfkbl\",\n \"message\" : \"Sed consequatur exercitationem ducimus repudiandae earum repellat. Praesentium officia alias nisi reiciendis est omnis beatae. Autem praesentium quisquam quos cumque voluptatem et quasi.\"\n } ]\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "55fafe34-b81f-43ed-815a-085e883e791d", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.812071Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "projects/create-card", + "schema": { + "properties": { + "code": { + "type": "string" + }, + "documentation_url": { + "type": "string" + }, + "errors": { + "items": { + "properties": { + "code": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "message": { + "type": "string" + } + }, + "type": "object" + } + } + } + }, + "insertionIndex": 982 + }, + { + "id": "a6610788-eb37-4e3c-9dab-76097ca5f5ee", + "name": "Create a project card (application/json)", + "request": { + "urlPath": "/projects/columns/8484675758688878516/cards", + "method": "POST", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 422, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/811719\",\n \"message\" : \"Sunt labore eveniet voluptatibus vitae aperiam autem aperiam. Ullam dicta corporis dolorum aut consequuntur aut. Cumque quis explicabo et. Quis harum culpa deserunt maxime temporibus. Suscipit magni l\",\n \"errors\" : [ {\n \"code\" : \"q9y7r1sj2lnhoe2yp1dhp5s4e5gq9\",\n \"field\" : \"oosa5efcyq65wgsr1gfr5d7zamellumfmdo7oshrf0yv742ci11lvxyrmcp2c5t7rlkvnxh7z79ovwwt85ibn0hrnt1ct26gy9zxklgrnwj8j3txezzyb88ledpww9gfg\",\n \"resource\" : \"bbgszffd1rekwznuhvqxf500i0tc1dksf04xjfgrjrpnfg0f4k33focek45s48oba3rqj3x5qn3dzflv0ihok72pwp6g9nqjp5wgnxcqw3cwjolk15mcv4chyn1w5zaa61kai7a7z1l\",\n \"index\" : 8551616242138192510,\n \"message\" : \"Enim dignissimos error repellat explicabo. Sed est sit sint. Suscipit corporis enim unde nam natus et. Consequatur et fugiat reprehenderit necessitatibus ut quidem. Suscipit vel voluptate quidem aut a\",\n \"value\" : { }\n } ]\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "a6610788-eb37-4e3c-9dab-76097ca5f5ee", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.811769Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "projects/create-card", + "schema": { + "oneOf": [ + { + "$ref": "#/components/schemas/validation-error" + }, + { + "$ref": "#/components/schemas/validation-error-simple" + } + ] + } + } + } + }, + "insertionIndex": 983 + }, + { + "id": "aea86239-29c0-4f27-b985-5bf09df63eea", + "name": "Create a project card (application/json)", + "request": { + "urlPath": "/projects/columns/7016773358586335614/cards", + "method": "POST", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 403, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/798722\",\n \"message\" : \"Ipsa occaecati quia doloribus non. Iusto molestiae similique dolorum. Distinctio eum vel dolores autem. Est est omnis consequatur eos perspiciatis. Sit dolores voluptatem magnam.\",\n \"url\" : \"https://web.example.mocklab.io/888256\",\n \"status\" : \"7s04umyzirizxs4rf6rwn61py8apjiez45jdwc7l2g0z7ktgd1xkm1is8voojjpbpgwyqimtn1uueiawokf\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "aea86239-29c0-4f27-b985-5bf09df63eea", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.811528Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "projects/create-card", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 984 + }, + { + "id": "89e4ad8d-84f3-400a-bc6c-0b1c38c6b9a1", + "name": "Create a project card (application/json)", + "request": { + "urlPath": "/projects/columns/5234372598842795355/cards", + "method": "POST", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 401, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/516461\",\n \"message\" : \"Rerum labore ratione dolor molestiae est sapiente. Non ea doloribus fugit vero. Et est sapiente soluta ex consectetur quia et. Aperiam debitis eveniet asperiores. Temporibus eos alias et voluptatem et\",\n \"url\" : \"https://web.example.mocklab.io/330092\",\n \"status\" : \"3lu65l8\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "89e4ad8d-84f3-400a-bc6c-0b1c38c6b9a1", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.811321Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "projects/create-card", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 985 + }, + { + "id": "e6fc6fec-c3ad-4012-8818-a1bdb3726063", + "name": "Create a project card - 304", + "request": { + "urlPath": "/projects/columns/4837976407497824133/cards", + "method": "POST" + }, + "response": { + "status": 304 + }, + "uuid": "e6fc6fec-c3ad-4012-8818-a1bdb3726063", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.81112Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "projects/create-card" + } + } + }, + "insertionIndex": 986 + }, + { + "id": "7dc1b83a-a84e-4140-95e9-26bcb7ca95fd", + "name": "Create a project card (application/json) - default", + "request": { + "urlPath": "/projects/columns/8023247369474499054/cards", + "method": "POST", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 201, + "body": "{\n \"archived\" : false,\n \"column_url\" : \"https://api.github.com/projects/columns/367\",\n \"content_url\" : \"https://api.github.com/repos/api-playground/projects-test/issues/3\",\n \"created_at\" : \"2016-09-05T14:21:06Z\",\n \"creator\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"id\" : 1478,\n \"node_id\" : \"MDExOlByb2plY3RDYXJkMTQ3OA==\",\n \"note\" : \"Add payload for delete Project column\",\n \"project_url\" : \"https://api.github.com/projects/120\",\n \"updated_at\" : \"2016-09-05T14:20:22Z\",\n \"url\" : \"https://api.github.com/projects/columns/cards/1478\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "7dc1b83a-a84e-4140-95e9-26bcb7ca95fd", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.81109Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "projects/create-card", + "schema": { + "description": "Project cards represent a scope of work.", + "properties": { + "archived": { + "description": "Whether or not the card is archived", + "example": false, + "type": "boolean" + }, + "column_name": { + "type": "string" + }, + "column_url": { + "example": "https://api.github.com/projects/columns/367", + "format": "uri", + "type": "string" + }, + "content_url": { + "example": "https://api.github.com/repos/api-playground/projects-test/issues/3", + "format": "uri", + "type": "string" + }, + "created_at": { + "example": "2016-09-05T14:21:06Z", + "format": "date-time", + "type": "string" + }, + "creator": { + "$ref": "#/components/schemas/nullable-simple-user" + }, + "id": { + "description": "The project card's ID", + "example": 42, + "type": "integer" + }, + "node_id": { + "example": "MDExOlByb2plY3RDYXJkMTQ3OA==", + "type": "string" + }, + "note": { + "example": "Add payload for delete Project column", + "nullable": true, + "type": "string" + }, + "project_id": { + "type": "string" + }, + "project_url": { + "example": "https://api.github.com/projects/120", + "format": "uri", + "type": "string" + }, + "updated_at": { + "example": "2016-09-05T14:20:22Z", + "format": "date-time", + "type": "string" + }, + "url": { + "example": "https://api.github.com/projects/columns/cards/1478", + "format": "uri", + "type": "string" + } + }, + "required": [ + "id", + "node_id", + "note", + "url", + "column_url", + "project_url", + "creator", + "created_at", + "updated_at" + ], + "title": "Project Card", + "type": "object" + } + } + } + }, + "insertionIndex": 987 + }, + { + "id": "27885801-3016-4137-8ce7-2ed9ef7c13a3", + "name": "List project cards (application/json)", + "request": { + "urlPath": "/projects/columns/7347992817802640514/cards", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 403, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/031567\",\n \"message\" : \"Iste omnis iure ratione ipsam. Impedit temporibus in beatae ratione repellat dolorem delectus. Nam dolor enim velit non id aut.\",\n \"url\" : \"https://web.example.mocklab.io/919316\",\n \"status\" : \"6w02kp7q3n6h8wi0k257smsdgkjocqmgl8lkn2onv77xx4tzs5s118yvu9sbz7af7j72ejj8s50vmzk6hxbtia4viae1fw5vto894aik4jkrkoix31es2mosgax7rtddx4bd5\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "27885801-3016-4137-8ce7-2ed9ef7c13a3", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.810939Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "projects/list-cards", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 988 + }, + { + "id": "e06c30a1-32cd-4156-8e90-feeea569b91b", + "name": "List project cards (application/json)", + "request": { + "urlPath": "/projects/columns/39168678556920231/cards", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 401, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/506248\",\n \"message\" : \"Sit neque ipsum. Ut sunt nostrum doloribus id incidunt. Dolores sint eligendi. Doloribus fuga aspernatur aliquid quaerat quo. Debitis sed et odit quam corrupti nam.\",\n \"url\" : \"https://web.example.mocklab.io/606863\",\n \"status\" : \"0bsdhqmypnqrmirjd1pbz7c1xj8i502oi1vqsak2llewgcdtp417me1ox3g7xx92v6iuz9p1d7cy0ts4ofl07az56fgi9onrz4jqzbip8os0ha6s1mb3nfrp010cp078lpzhkb11bspb5zom92n8isgm4dc9h39n9dp8mroc5c8a6038aqve03hplp\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "e06c30a1-32cd-4156-8e90-feeea569b91b", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.810731Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "projects/list-cards", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 989 + }, + { + "id": "9fd4a30f-e939-4054-b55c-87cfcdb8e170", + "name": "List project cards - 304", + "request": { + "urlPath": "/projects/columns/2262365525456243778/cards", + "method": "GET" + }, + "response": { + "status": 304 + }, + "uuid": "9fd4a30f-e939-4054-b55c-87cfcdb8e170", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.810531Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "projects/list-cards" + } + } + }, + "insertionIndex": 990 + }, + { + "id": "a419750d-c29e-478b-af9c-6f5cf5990121", + "name": "List project cards (application/json) - default", + "request": { + "urlPath": "/projects/columns/458354271504626774/cards", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 200, + "body": "[ {\n \"archived\" : false,\n \"column_url\" : \"https://api.github.com/projects/columns/367\",\n \"content_url\" : \"https://api.github.com/repos/api-playground/projects-test/issues/3\",\n \"created_at\" : \"2016-09-05T14:21:06Z\",\n \"creator\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"id\" : 1478,\n \"node_id\" : \"MDExOlByb2plY3RDYXJkMTQ3OA==\",\n \"note\" : \"Add payload for delete Project column\",\n \"project_url\" : \"https://api.github.com/projects/120\",\n \"updated_at\" : \"2016-09-05T14:20:22Z\",\n \"url\" : \"https://api.github.com/projects/columns/cards/1478\"\n} ]", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "a419750d-c29e-478b-af9c-6f5cf5990121", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.810505Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "projects/list-cards", + "schema": { + "items": { + "$ref": "#/components/schemas/project-card" + }, + "type": "array" + } + } + } + }, + "insertionIndex": 991 + }, + { + "id": "7fb6e438-20d7-42f7-be93-cdcfaf2f9361", + "name": "Update an existing project column (application/json)", + "request": { + "urlPath": "/projects/columns/5844084250845834228", + "method": "PATCH", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 403, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/966856\",\n \"message\" : \"Sunt magni et est. Consectetur dolor sequi architecto vero inventore similique iste. Rerum est error illum repudiandae voluptas ab.\",\n \"url\" : \"https://web.example.mocklab.io/566825\",\n \"status\" : \"9cx6hljl1fv8nscu7a1078gi41d9cumkdi4e29cyxnf1l6j6ze07pi45mo8uxr7ah5smm7sb6td\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "7fb6e438-20d7-42f7-be93-cdcfaf2f9361", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.810452Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "projects/update-column", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 992 + }, + { + "id": "a997fddb-ab33-45cd-904a-5b4b3ec3d578", + "name": "Update an existing project column (application/json)", + "request": { + "urlPath": "/projects/columns/6523675474823807854", + "method": "PATCH", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 401, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/512585\",\n \"message\" : \"Quo vel a ea ipsum eligendi nam. Non officiis mollitia et sed aut sit sunt. A laudantium esse.\",\n \"url\" : \"https://web.example.mocklab.io/542493\",\n \"status\" : \"bgcd2zwasdjpr4u18z6x2oau5f3m90fjd5vywpqzaxcmy2o9d28uno7sajwlyz\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "a997fddb-ab33-45cd-904a-5b4b3ec3d578", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.810247Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "projects/update-column", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 993 + }, + { + "id": "c89af612-fae9-4e4c-879c-3fcf429e7bf5", + "name": "Update an existing project column - 304", + "request": { + "urlPath": "/projects/columns/8448493789350408145", + "method": "PATCH" + }, + "response": { + "status": 304 + }, + "uuid": "c89af612-fae9-4e4c-879c-3fcf429e7bf5", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.810049Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "projects/update-column" + } + } + }, + "insertionIndex": 994 + }, + { + "id": "4158f5cb-d876-481b-988a-6035e6814ef1", + "name": "Update an existing project column (application/json) - default", + "request": { + "urlPath": "/projects/columns/7049813788803230055", + "method": "PATCH", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 200, + "body": "{\n \"cards_url\" : \"https://api.github.com/projects/columns/367/cards\",\n \"created_at\" : \"2016-09-05T14:18:44Z\",\n \"id\" : 367,\n \"name\" : \"To Do\",\n \"node_id\" : \"MDEzOlByb2plY3RDb2x1bW4zNjc=\",\n \"project_url\" : \"https://api.github.com/projects/120\",\n \"updated_at\" : \"2016-09-05T14:22:28Z\",\n \"url\" : \"https://api.github.com/projects/columns/367\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "4158f5cb-d876-481b-988a-6035e6814ef1", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.810022Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "projects/update-column", + "schema": { + "description": "Project columns contain cards of work.", + "properties": { + "cards_url": { + "example": "https://api.github.com/projects/columns/367/cards", + "format": "uri", + "type": "string" + }, + "created_at": { + "example": "2016-09-05T14:18:44Z", + "format": "date-time", + "type": "string" + }, + "id": { + "description": "The unique identifier of the project column", + "example": 42, + "type": "integer" + }, + "name": { + "description": "Name of the project column", + "example": "Remaining tasks", + "type": "string" + }, + "node_id": { + "example": "MDEzOlByb2plY3RDb2x1bW4zNjc=", + "type": "string" + }, + "project_url": { + "example": "https://api.github.com/projects/120", + "format": "uri", + "type": "string" + }, + "updated_at": { + "example": "2016-09-05T14:22:28Z", + "format": "date-time", + "type": "string" + }, + "url": { + "example": "https://api.github.com/projects/columns/367", + "format": "uri", + "type": "string" + } + }, + "required": [ + "id", + "node_id", + "url", + "project_url", + "cards_url", + "name", + "created_at", + "updated_at" + ], + "title": "Project Column", + "type": "object" + } + } + } + }, + "insertionIndex": 995 + }, + { + "id": "21b6e735-3a79-4cf7-825e-943157783191", + "name": "Get a project column (application/json)", + "request": { + "urlPath": "/projects/columns/2725123966731144862", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/191456\",\n \"message\" : \"Velit soluta vero voluptate quod ut odit. Quia architecto eum repellat officiis aspernatur. Aliquam consequuntur ullam mollitia.\",\n \"url\" : \"https://web.example.mocklab.io/812346\",\n \"status\" : \"gqv5wh9e01otavfvmm6tk70b24cavlkc3d07f54wibx0q8tq2anvogxy9eqjlw8rg3mqp0smvas0yz9upyb84g17xezoszsdzn1vx3t4jgsz5crnjgxpcw065b4pvzlmb6c4rtjdh\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "21b6e735-3a79-4cf7-825e-943157783191", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.809939Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "projects/get-column", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 996 + }, + { + "id": "b17192f8-bbff-47c0-ad14-8443b0305e9f", + "name": "Get a project column (application/json)", + "request": { + "urlPath": "/projects/columns/6463160626120390050", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 403, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/116445\",\n \"message\" : \"Temporibus labore quasi labore laborum. Quaerat enim inventore. Porro similique iste velit praesentium cupiditate harum sunt. Dolorem deserunt beatae. Perspiciatis qui dicta corporis.\",\n \"url\" : \"https://web.example.mocklab.io/953962\",\n \"status\" : \"s3nlvcbsw7b6vrka6jeiek6e7zar7miqfv9v7cbbrj692idiu8k16qseu4irh0zfy1sno5jcudewo33uwjxzijzuzsbgchf6bz096sroyh99k\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "b17192f8-bbff-47c0-ad14-8443b0305e9f", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.809734Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "projects/get-column", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 997 + }, + { + "id": "4edd4223-43ce-406f-882e-5478149e6023", + "name": "Get a project column (application/json)", + "request": { + "urlPath": "/projects/columns/6825350671417494447", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 401, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/538308\",\n \"message\" : \"Voluptates voluptatem modi. Nostrum nobis sunt provident id dolor vel. Velit ut nisi assumenda.\",\n \"url\" : \"https://web.example.mocklab.io/411305\",\n \"status\" : \"dedu1ltv2dtjgjfmsz9o8whi4h6o0boeeios0gv0f8u2zkc0747ctclkj4qspabqrsn7ctme9v6occ2bwqjvp33jtdo8uf55gu4vco048fc4eudradguv631md9ta8moa41ypl3q8g93prhxnmipniw0mf0\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "4edd4223-43ce-406f-882e-5478149e6023", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.809522Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "projects/get-column", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 998 + }, + { + "id": "9d6b45e2-97b5-4929-98c9-65535b0dd7b6", + "name": "Get a project column - 304", + "request": { + "urlPath": "/projects/columns/7126004409430257727", + "method": "GET" + }, + "response": { + "status": 304 + }, + "uuid": "9d6b45e2-97b5-4929-98c9-65535b0dd7b6", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.809331Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "projects/get-column" + } + } + }, + "insertionIndex": 999 + }, + { + "id": "a386f586-8ae8-4cbb-abe0-19b0c031ebef", + "name": "Get a project column (application/json) - default", + "request": { + "urlPath": "/projects/columns/6283168730343911409", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 200, + "body": "{\n \"cards_url\" : \"https://api.github.com/projects/columns/367/cards\",\n \"created_at\" : \"2016-09-05T14:18:44Z\",\n \"id\" : 367,\n \"name\" : \"To Do\",\n \"node_id\" : \"MDEzOlByb2plY3RDb2x1bW4zNjc=\",\n \"project_url\" : \"https://api.github.com/projects/120\",\n \"updated_at\" : \"2016-09-05T14:22:28Z\",\n \"url\" : \"https://api.github.com/projects/columns/367\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "a386f586-8ae8-4cbb-abe0-19b0c031ebef", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.809303Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "projects/get-column", + "schema": { + "description": "Project columns contain cards of work.", + "properties": { + "cards_url": { + "example": "https://api.github.com/projects/columns/367/cards", + "format": "uri", + "type": "string" + }, + "created_at": { + "example": "2016-09-05T14:18:44Z", + "format": "date-time", + "type": "string" + }, + "id": { + "description": "The unique identifier of the project column", + "example": 42, + "type": "integer" + }, + "name": { + "description": "Name of the project column", + "example": "Remaining tasks", + "type": "string" + }, + "node_id": { + "example": "MDEzOlByb2plY3RDb2x1bW4zNjc=", + "type": "string" + }, + "project_url": { + "example": "https://api.github.com/projects/120", + "format": "uri", + "type": "string" + }, + "updated_at": { + "example": "2016-09-05T14:22:28Z", + "format": "date-time", + "type": "string" + }, + "url": { + "example": "https://api.github.com/projects/columns/367", + "format": "uri", + "type": "string" + } + }, + "required": [ + "id", + "node_id", + "url", + "project_url", + "cards_url", + "name", + "created_at", + "updated_at" + ], + "title": "Project Column", + "type": "object" + } + } + } + }, + "insertionIndex": 1000 + }, + { + "id": "a089f61a-80e4-443e-b33f-de013361df3f", + "name": "Delete a project column (application/json)", + "request": { + "urlPath": "/projects/columns/7137383818638337717", + "method": "DELETE", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 403, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/838537\",\n \"message\" : \"In dolorem omnis dolorum quia. Corrupti sunt sint odit eveniet dolor eum sequi. Perferendis modi voluptatibus quisquam est. Provident officia itaque repudiandae odit ullam et quas. Vitae ipsum ducimus\",\n \"url\" : \"https://web.example.mocklab.io/578322\",\n \"status\" : \"18g701zqc8i7u4hoearizw04e60ogc9m\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "a089f61a-80e4-443e-b33f-de013361df3f", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.809169Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "projects/delete-column", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 1001 + }, + { + "id": "aec4730b-accb-4995-b4a9-a185d621f395", + "name": "Delete a project column (application/json)", + "request": { + "urlPath": "/projects/columns/1919797483700499026", + "method": "DELETE", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 401, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/230764\",\n \"message\" : \"Qui omnis ipsum eaque. Dolores ratione ullam sed sit. Delectus nulla et perspiciatis consectetur facilis.\",\n \"url\" : \"https://web.example.mocklab.io/083631\",\n \"status\" : \"j02jkgmnqqk93ywzbnnzk594op1e69fdgah866xaxucv7xc5f\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "aec4730b-accb-4995-b4a9-a185d621f395", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.808954Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "projects/delete-column", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 1002 + }, + { + "id": "1be4789d-e694-4824-b723-fbfc39d7ef68", + "name": "Delete a project column - 304", + "request": { + "urlPath": "/projects/columns/2954590148234626818", + "method": "DELETE" + }, + "response": { + "status": 304 + }, + "uuid": "1be4789d-e694-4824-b723-fbfc39d7ef68", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.808754Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "projects/delete-column" + } + } + }, + "insertionIndex": 1003 + }, + { + "id": "aebebc91-a883-4867-8972-162c6a8dccaa", + "name": "Delete a project column - 204", + "request": { + "urlPath": "/projects/columns/3580917692916958959", + "method": "DELETE" + }, + "response": { + "status": 204 + }, + "uuid": "aebebc91-a883-4867-8972-162c6a8dccaa", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.808736Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "projects/delete-column" + } + } + }, + "insertionIndex": 1004 + }, + { + "id": "126d0b45-66c2-4a52-9477-8a131b705dfb", + "name": "Move a project card (application/json)", + "request": { + "urlPath": "/projects/columns/cards/8069738723446389465/moves", + "method": "POST", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 503, + "body": "{\n \"code\" : \"8n7bdqx1kf220mrav0yv29ookljrnlprfvynxa2fgpacmztrhyg3apo3sa0o7518nydlfnl82vwp0n68c8ufjcm4dqh6oh634lynvik52ppgdxwqtzmt7rgeq4l3h98o7qbnga1mlf\",\n \"documentation_url\" : \"https://web.example.mocklab.io/208397\",\n \"message\" : \"Sed assumenda est id. Culpa ut molestias maxime similique quae facere sunt. Libero voluptates qui nulla vero suscipit qui.\",\n \"errors\" : [ {\n \"code\" : \"q8jztxsnyx10qxmi1pf8ykna1a2twq0ujgkd2lm5luqlp4f7ydb990327fje76xmdckn469cz8hw5t5yfbv1a3ec\",\n \"message\" : \"Id sit deleniti aut exercitationem aliquid sint. Cupiditate consequatur quis repellat aut. Ipsam aut sint esse et natus eaque omnis. Et est illo ut ab aliquam. Quo distinctio dolores molestiae ipsa ra\"\n }, {\n \"code\" : \"j9fbitvjyq023sky0mwt2ci6tbeswm00pu4ajru612akob1kwk26nxrz4sr5cd10vq0h70zldp8zlfg8qz58ybp62a34fisxb4g0u4ax7kigqenugz6wvvq89n8f4d398ymiso32jjs5fi855jnr9j3o7tgcv77glms5yzxm0\",\n \"message\" : \"Architecto velit maiores ut aut est molestiae voluptas. Dolorem qui illum consequatur itaque at. Velit et et dolore.\"\n }, {\n \"code\" : \"oo9ewjrklg9o4snl3ueq99m4y0lygm5tynd4i7qljipvuk69i073i8ij13q25wpyyf8lvjkkcb82fdt34dldgusilop0ki4r0aux7gi40kggblwjnnszqvr4i6ejf893\",\n \"message\" : \"Ut et eum doloremque aperiam repellat at. Sunt repellat rerum. Repellendus vel libero inventore voluptatem vel unde sunt.\"\n }, {\n \"code\" : \"21t41wa84hhsdiu7x12nyzqqt3f3vm2iq4wbkuo91gej634to9gphw1s98zs5waj19fmvolt61nrtwbm9coddjlq\",\n \"message\" : \"Tenetur nulla autem qui facilis dolores velit. Molestiae nemo est ipsam quis qui beatae veritatis. Nisi id assumenda accusamus qui. Fuga voluptas dolores. Veniam molestias et quos adipisci quisquam be\"\n }, {\n \"code\" : \"6g378wpq97dn1sobd59r2n4vu1hk7q5ammcpl5k2a2pus2mqr9htc8fjvyv06xhqvk3ldugrkil8zq548fxc3vdrbem52n1rgztuswdnr7pw28nwy0t97l3be2rylxykxal1yrkoceszl43wnq7qc6rvxtqz13in7h9\",\n \"message\" : \"Blanditiis sit voluptate molestiae libero aut voluptas et. Accusantium qui veritatis consectetur. Assumenda incidunt et perferendis soluta.\"\n }, {\n \"code\" : \"yat4h648\",\n \"message\" : \"Aperiam ea tempora amet praesentium impedit ipsum. Non atque autem. Quasi fugiat quis voluptas possimus voluptatum. Magni quo dolores labore. Ex omnis aliquam molestiae molestiae quo.\"\n }, {\n \"code\" : \"qutiwh306eg6cphhkph4jd35tl6jsoriki7jto3tf5pzjpb1smwelu87p0\",\n \"message\" : \"Ut non ex quasi ad possimus. Recusandae qui dignissimos commodi consectetur. Neque ut repellendus.\"\n } ]\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "126d0b45-66c2-4a52-9477-8a131b705dfb", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.808702Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "projects/move-card", + "schema": { + "properties": { + "code": { + "type": "string" + }, + "documentation_url": { + "type": "string" + }, + "errors": { + "items": { + "properties": { + "code": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "message": { + "type": "string" + } + }, + "type": "object" + } + } + } + }, + "insertionIndex": 1005 + }, + { + "id": "cbfcb9da-18ee-4bd4-a8c5-c102ef3b4f0b", + "name": "Move a project card (application/json)", + "request": { + "urlPath": "/projects/columns/cards/3146473840320910375/moves", + "method": "POST", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 422, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/212263\",\n \"message\" : \"Commodi saepe est earum tempore fuga. Fugiat rem sapiente deserunt. Et aut atque expedita. Vel ipsum aut eum.\",\n \"errors\" : [ {\n \"code\" : \"4qawxsa97cwhkwzz84vb0cjp4i9y2kr8t9o0dends9ou528cdr403ybqaspoe9bw3k4jeinnfv0pxshplepjxgga7ya0awimfy3u28e70hbgbwuy903b2fqwp\",\n \"field\" : \"u4d2fn660jlq3yk3nu1fr4dqwkn5dbhya1i4d67oa59l8jrm9zi84yp66ue0scmi7v8aqpkmpo3he18t2pt6y63qkjk4hc6193rpu3g3uj7ks51x61kttomhe6z3xg1ys8no1enb97tvmxex8bewtxyo3whj3uat34ven9lnpo9q9bvh\",\n \"resource\" : \"d34wy39f73i6kz4toareckb57ilpfovv3v347gr51mih94k\",\n \"index\" : 7294535765985777692,\n \"message\" : \"Illum quis nemo reiciendis. Et incidunt eveniet qui odit et quaerat. Quo quo consequatur delectus commodi illo.\",\n \"value\" : { }\n }, {\n \"code\" : \"f0x2vzp3t7hq8yid3q4wxe99wchefiffqjz81y44tgqjijcbix0uzubwkyolq491i7h0w6zty\",\n \"field\" : \"0sh7e9hxc8lea6pfr40x3108ey85r36rd42qi66ydcui66726s90vxrrzekdd2cfy1cn7hjabdqkn\",\n \"resource\" : \"r0qc9bfpgyyp4uvrdwbt11t\",\n \"index\" : 5848066379117356755,\n \"message\" : \"Architecto molestias eos atque harum ullam. A delectus ut. Cumque est voluptate rerum consequatur. Libero sed aut est ut.\",\n \"value\" : { }\n }, {\n \"code\" : \"97eildglqczvy10xczlf8devts85twkv245x62n21crevi87deks\",\n \"field\" : \"ltrf9cxy2duycf2c7ovel4q0dewfiv63cprd0xsqmxss8ejny5hfo1koty3qytb9ohgtgwz4rmq96od4sxakjwigp99jfdrudp515m3vb1iye657x7we8\",\n \"resource\" : \"1xl52hg6wp83b64e5by70qbunca5nsl0t8npdx2fhrxn7mndq7jxoaf325reh2m583oafz11n8zlp4fupltv3rhmko2rv2mucx59bv3eeqlmguwr2lp0kz4bdykc1zpurbp2rddo697xtmqip5xdow2r12sqikaob4w5817if0mng6ciuooi2058cpqdfizj2c\",\n \"index\" : 5942719744901376414,\n \"message\" : \"Aliquid sed odit perspiciatis rerum non omnis optio. Labore quas consequatur sapiente fugit quam. Esse deserunt libero. Quia recusandae illo eos aspernatur. Consequuntur consequatur reiciendis.\",\n \"value\" : { }\n }, {\n \"code\" : \"hez6uifrbqzyzx4ltetlkdtb75mldyrjgj93tg2o45ymr7r3utlddv05xbvhw85q0o9pob6y\",\n \"field\" : \"ntmdm25kvlj5brg1bp6i85z0lqfdh5a0dmo0cgjg5iji2vlnq1x2ty1\",\n \"resource\" : \"d8n5iy0eddplbs5w4y6fmfxnso0y6qukzgqgfjch7vuzty6el1qku70k254fysxgiaz96s4oi2wks5ow7906f6pyctfmg1qyyx09pizq7k9tft\",\n \"index\" : 3145525322824950339,\n \"message\" : \"Incidunt sed odit expedita. Totam aut ut dignissimos excepturi. Tempore dolor facilis quia culpa. Dolores eum similique. Distinctio qui possimus.\",\n \"value\" : { }\n } ]\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "cbfcb9da-18ee-4bd4-a8c5-c102ef3b4f0b", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.808145Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "projects/move-card", + "schema": { + "description": "Validation Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "errors": { + "items": { + "properties": { + "code": { + "type": "string" + }, + "field": { + "type": "string" + }, + "index": { + "type": "integer" + }, + "message": { + "type": "string" + }, + "resource": { + "type": "string" + }, + "value": { + "oneOf": [ + { + "nullable": true, + "type": "string" + }, + { + "nullable": true, + "type": "integer" + }, + { + "items": { + "type": "string" + }, + "nullable": true, + "type": "array" + } + ] + } + }, + "required": ["code"], + "type": "object" + }, + "type": "array" + }, + "message": { + "type": "string" + } + }, + "required": ["message", "documentation_url"], + "title": "Validation Error", + "type": "object" + } + } + } + }, + "insertionIndex": 1006 + }, + { + "id": "7a272ed1-8e6a-45da-aff7-6403c3d15841", + "name": "Move a project card (application/json)", + "request": { + "urlPath": "/projects/columns/cards/4789485577935488695/moves", + "method": "POST", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 403, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/228104\",\n \"message\" : \"Molestiae similique sit voluptates. Temporibus error facilis in asperiores sequi necessitatibus. Incidunt sed eum voluptas at. Maxime a perspiciatis expedita et doloribus amet voluptas.\",\n \"errors\" : [ {\n \"code\" : \"zvx83wwfp1isyhoqzolf78yg6j5yshfykxk4tzl1jhee2tkl94zrfxwvmwwj29gpfwahbsuupx6qbng0o5t9kqfncz0bei7\",\n \"field\" : \"shn2ghtz5ehg6mp\",\n \"resource\" : \"dg8lmeltpkagvghgohng7fkwkp\",\n \"message\" : \"Et tenetur ullam quis odit. Consequatur aspernatur ut at voluptatem necessitatibus nesciunt illo. Quia eum aut illum facilis doloribus occaecati et. Est itaque possimus.\"\n }, {\n \"code\" : \"1kpgj1edyr8xf80o31a8\",\n \"field\" : \"ihuqlpak0xm7qhy9iw53jrw6zu2kmfh6g3nz6dzw8ie4rrf02y7j0shsc4idilxswe79xf9a753ijfipv8d3gw\",\n \"resource\" : \"hptbijfi19x0jy5jf59qruum5mispqclu9cmxcijokto9g5cvcmqid9pknsbj15qjw4ssfthd8ufwczqm4d\",\n \"message\" : \"Quis reiciendis laudantium magnam excepturi ut illum. Voluptatem architecto ipsum voluptatem sequi. Incidunt ut ut aut voluptatem unde.\"\n }, {\n \"code\" : \"hz8ybkb94atrodkwrleyv0ksnf86stlsjt8riq\",\n \"field\" : \"k8y6o0mh88sgpim81n6del2zq8exi5x53j32\",\n \"resource\" : \"fqamp8hc8rls754o4b86x40ra6mfnehl7f6ujr2orpeqzbgfj30j5ujl3qn72hnw80idzocwbwdqmzprcealash1bylldllky5f3dka61h63kcdj0063hr1twp11eb2faf4nwnpxt3\",\n \"message\" : \"Facilis molestiae blanditiis aliquid culpa dolorem. Officia et delectus ad sed dolor voluptas sapiente. Id officiis non rerum assumenda odio.\"\n }, {\n \"code\" : \"ib1bljs4q8alrud5rl01tg0f8j3yly6mpd15mql1ned6146l2vqctx04qefcgnxw99yiiyixgfbcv14ajpw3lmn0s1c95hzc4z26s175n21pstcza3akewp1gafkf16vfmk4lvaoetlyw9i5a15yby1\",\n \"field\" : \"dogtprkw3jltaze20dgmm2bb3natslwm83hlsnrpwragqr0gdxblzf1kjxddd3r0ooezb23clcjxi2y22jfqg6\",\n \"resource\" : \"fiktz1qppqhqi1s5k2ytgi671mzm4\",\n \"message\" : \"Numquam maxime rem ullam id nesciunt hic est. Voluptates sequi nemo non. Tempore amet sit facilis. Id quasi non ut laudantium.\"\n }, {\n \"code\" : \"52mvhunhjqde4vn8xcmxfxuhzhl5u09wrbai6ali6pglmq1qgyvr734sfitedjsx4vz83y0ocx9gumaowg5kpad1hsgz61nlhsd7rlv\",\n \"field\" : \"xbkuda35nec7ukvqtyyylqbf1dbpp8z0th28d78gm3h68zveuxvk8pndj869xt3zky0fssvdl0rgde21k8ipbx7a88sj97mjq9i7twholdad215nsw4qapj0869kag1hxnnmbqhqpxy51cix6h7nirkmamxfl2qsbjprlg7qyhr3wz0y1i4c6ehd36jeprpko\",\n \"resource\" : \"x9sv4gc8rf3d8j4ob4t3i96fn0j2rrkopmb685rb2vk3aoc90sp5p1sjqf6sfdte9ncof65k2zr1krwadafwl8vktlmkwtxfyfthqrah8jcsanw73a9o3lsivad9ghv2gvk1rcfi0xjq5\",\n \"message\" : \"Similique recusandae est est atque. Consectetur eveniet qui. Maiores enim quis asperiores ea reprehenderit blanditiis amet.\"\n }, {\n \"code\" : \"unh6ijufdioyo567ipw7lufpramtais061ghfjggmabqvt25p6cqz63psezsctvhw5jmswfeb46msf45lu32k4ytff31gn19ui65opn4sqkwtic2qy812loywlem7kwwku6xpideyt7hz2m1kxc42fhyrgxoh06bc6fw5zj5goz2mka5okfbgkythz4ga0ld\",\n \"field\" : \"68hwr73vgmjzosfco6r6ur6ndx9txiemimdwh8ykj12q7q82bkkjnh0yuzvz52wvi1btypn2jgs8y1jgppxol2t4m53egputi4of23del5\",\n \"resource\" : \"60scqknttpfgrv6kxnsgso66ng7n78xofd8mpj4gdgwhbqw5rnjgpaqyfiibt7lrg986r1sem33tkqufskuhki3on0x9axm0ip6i48nz5c8\",\n \"message\" : \"Asperiores et molestias ea ipsa. Inventore omnis perferendis sequi. Temporibus adipisci quas quasi et quod placeat. Doloribus alias ducimus corporis dicta. Non dicta quo quidem corrupti.\"\n } ]\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "7a272ed1-8e6a-45da-aff7-6403c3d15841", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.807544Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "projects/move-card", + "schema": { + "properties": { + "documentation_url": { + "type": "string" + }, + "errors": { + "items": { + "properties": { + "code": { + "type": "string" + }, + "field": { + "type": "string" + }, + "message": { + "type": "string" + }, + "resource": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "message": { + "type": "string" + } + }, + "type": "object" + } + } + } + }, + "insertionIndex": 1007 + }, + { + "id": "4bb885df-10a6-4558-bbc2-2a286f2ba660", + "name": "Move a project card (application/json)", + "request": { + "urlPath": "/projects/columns/cards/3726781394139911172/moves", + "method": "POST", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 401, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/585294\",\n \"message\" : \"Impedit provident quia dolore sed. Veniam quia sunt delectus voluptate reprehenderit cupiditate libero. Assumenda quia deleniti modi. Minus nam non quis ea unde hic natus.\",\n \"url\" : \"https://web.example.mocklab.io/772641\",\n \"status\" : \"7kh3q60rg6a4rvzatpy67mh0zucnrpoon2klzpgdrn38sqf0jtvw99hq6p5sz4vwgwpo711p3l7fsnamsmtxbjwccndytb61qj585ycy1kaxkab73m8irnnj6waod6u6kh3yu77ysg\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "4bb885df-10a6-4558-bbc2-2a286f2ba660", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.806934Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "projects/move-card", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 1008 + }, + { + "id": "f388b387-49a5-4529-b688-afde714d69ef", + "name": "Move a project card - 304", + "request": { + "urlPath": "/projects/columns/cards/128200705767179304/moves", + "method": "POST" + }, + "response": { + "status": 304 + }, + "uuid": "f388b387-49a5-4529-b688-afde714d69ef", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.806728Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "projects/move-card" + } + } + }, + "insertionIndex": 1009 + }, + { + "id": "345fcc7e-ff2e-4bad-bc52-98419fce4305", + "name": "Move a project card (application/json)", + "request": { + "urlPath": "/projects/columns/cards/7239672495954995738/moves", + "method": "POST", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 201, + "body": "{ }", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "345fcc7e-ff2e-4bad-bc52-98419fce4305", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.806703Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "projects/move-card", + "schema": { + "additionalProperties": false, + "type": "object" + } + } + } + }, + "insertionIndex": 1010 + }, + { + "id": "72d65039-ba74-45de-8e8e-c7ef0404bddb", + "name": "Update an existing project card (application/json)", + "request": { + "urlPath": "/projects/columns/cards/5247800780482576793", + "method": "PATCH", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 422, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/790929\",\n \"message\" : \"Velit dolorem est. Est ut suscipit qui rerum nihil. Vel illo autem voluptate et enim. Vel est atque.\",\n \"errors\" : [ \"yva5swsu19q654z3ss0pljwxleszd1wow7qd7n4betscs2i48qaxgc5tqh0l6j3wu9ky6kerps90gk6bexkkcqb90ufkpblgiayksnt8m64y42f24w\", \"739gq05wjsaf3ksf6gu39finsz90e2bng872w1p28fhxi1dk1\", \"stqerxtlw29mzxz85vsu855gma9zcpz62bqmsvio9xmut1d5ifynwcu5yip7lg5vb5ocw4q8xqyarc1jow93hntxnhqc84hszqockvkl58p9xzxfab70ov3gerwy92msx0yjmtsf4n7j2l5d9st6fz6lzne952pslmh3o0qtrqv1gjzkdb37c0xxhr61m\" ]\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "72d65039-ba74-45de-8e8e-c7ef0404bddb", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.806645Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "projects/update-card", + "schema": { + "description": "Validation Error Simple", + "properties": { + "documentation_url": { + "type": "string" + }, + "errors": { + "items": { + "type": "string" + }, + "type": "array" + }, + "message": { + "type": "string" + } + }, + "required": ["message", "documentation_url"], + "title": "Validation Error Simple", + "type": "object" + } + } + } + }, + "insertionIndex": 1011 + }, + { + "id": "2981d1f7-698a-4f10-84ab-483da84dba1d", + "name": "Update an existing project card (application/json)", + "request": { + "urlPath": "/projects/columns/cards/6594379565003062965", + "method": "PATCH", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/715133\",\n \"message\" : \"Hic aperiam libero voluptatem numquam. Ad et iste qui veritatis. Distinctio hic error ratione quo corrupti minus veniam. At animi qui aperiam cum iste ex corrupti. Inventore temporibus eos optio moles\",\n \"url\" : \"https://web.example.mocklab.io/254456\",\n \"status\" : \"ygfdnenxzm4g48a8k3151e1k3lmzpv47vr09hw31a3pw4u6qzopkl0aowpu3kb67dttklsm\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "2981d1f7-698a-4f10-84ab-483da84dba1d", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.806457Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "projects/update-card", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 1012 + }, + { + "id": "3b4c6b53-fcc3-456f-b0a6-edcefb820e61", + "name": "Update an existing project card (application/json)", + "request": { + "urlPath": "/projects/columns/cards/1178479979106478829", + "method": "PATCH", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 403, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/466296\",\n \"message\" : \"Et sint sapiente voluptatem. Nam iste omnis impedit qui. Quo consequatur odio laborum.\",\n \"url\" : \"https://web.example.mocklab.io/386808\",\n \"status\" : \"snz1pjcc8tzdsmc\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "3b4c6b53-fcc3-456f-b0a6-edcefb820e61", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.806244Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "projects/update-card", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 1013 + }, + { + "id": "30073ba2-55cc-48e0-9ac1-f6c17af858a4", + "name": "Update an existing project card (application/json)", + "request": { + "urlPath": "/projects/columns/cards/6786609600017457822", + "method": "PATCH", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 401, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/260930\",\n \"message\" : \"Aut amet tempora magni placeat voluptatem. Culpa repudiandae nobis aut maiores quia qui et. Quasi est veniam fugit veniam quia dolor esse. Ratione nesciunt blanditiis quia. Libero quae tenetur dolor e\",\n \"url\" : \"https://web.example.mocklab.io/248026\",\n \"status\" : \"thydeph2bgxqohcm8t285mavzp4n3xvohevq42vkibplhq6l041ksotqmsmzqx2lybtt5azrnkejxbihfpe0rfu7hfgotw4rkpu7ulmcuig9sr80hk91lqecl9cswwawj3csmmbub1kb1noaaajyejcgw3wwwxc6r9q723\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "30073ba2-55cc-48e0-9ac1-f6c17af858a4", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.806042Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "projects/update-card", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 1014 + }, + { + "id": "54d3f245-890d-439a-84e7-cbebf1d836f6", + "name": "Update an existing project card - 304", + "request": { + "urlPath": "/projects/columns/cards/7140355085407754347", + "method": "PATCH" + }, + "response": { + "status": 304 + }, + "uuid": "54d3f245-890d-439a-84e7-cbebf1d836f6", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.805837Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "projects/update-card" + } + } + }, + "insertionIndex": 1015 + }, + { + "id": "a09aca75-835c-4e7a-a6ff-98b4a03e87d4", + "name": "Update an existing project card (application/json) - default", + "request": { + "urlPath": "/projects/columns/cards/3438363385375924626", + "method": "PATCH", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 200, + "body": "{\n \"archived\" : false,\n \"column_url\" : \"https://api.github.com/projects/columns/367\",\n \"content_url\" : \"https://api.github.com/repos/api-playground/projects-test/issues/3\",\n \"created_at\" : \"2016-09-05T14:21:06Z\",\n \"creator\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"id\" : 1478,\n \"node_id\" : \"MDExOlByb2plY3RDYXJkMTQ3OA==\",\n \"note\" : \"Add payload for delete Project column\",\n \"project_url\" : \"https://api.github.com/projects/120\",\n \"updated_at\" : \"2016-09-05T14:20:22Z\",\n \"url\" : \"https://api.github.com/projects/columns/cards/1478\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "a09aca75-835c-4e7a-a6ff-98b4a03e87d4", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.805807Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "projects/update-card", + "schema": { + "description": "Project cards represent a scope of work.", + "properties": { + "archived": { + "description": "Whether or not the card is archived", + "example": false, + "type": "boolean" + }, + "column_name": { + "type": "string" + }, + "column_url": { + "example": "https://api.github.com/projects/columns/367", + "format": "uri", + "type": "string" + }, + "content_url": { + "example": "https://api.github.com/repos/api-playground/projects-test/issues/3", + "format": "uri", + "type": "string" + }, + "created_at": { + "example": "2016-09-05T14:21:06Z", + "format": "date-time", + "type": "string" + }, + "creator": { + "$ref": "#/components/schemas/nullable-simple-user" + }, + "id": { + "description": "The project card's ID", + "example": 42, + "type": "integer" + }, + "node_id": { + "example": "MDExOlByb2plY3RDYXJkMTQ3OA==", + "type": "string" + }, + "note": { + "example": "Add payload for delete Project column", + "nullable": true, + "type": "string" + }, + "project_id": { + "type": "string" + }, + "project_url": { + "example": "https://api.github.com/projects/120", + "format": "uri", + "type": "string" + }, + "updated_at": { + "example": "2016-09-05T14:20:22Z", + "format": "date-time", + "type": "string" + }, + "url": { + "example": "https://api.github.com/projects/columns/cards/1478", + "format": "uri", + "type": "string" + } + }, + "required": [ + "id", + "node_id", + "note", + "url", + "column_url", + "project_url", + "creator", + "created_at", + "updated_at" + ], + "title": "Project Card", + "type": "object" + } + } + } + }, + "insertionIndex": 1016 + }, + { + "id": "74847b3e-f665-4f34-b349-23686d46a83d", + "name": "Get a project card (application/json)", + "request": { + "urlPath": "/projects/columns/cards/3560499299579383865", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/339570\",\n \"message\" : \"Ex sunt tenetur aut nihil. Adipisci vel accusamus itaque unde. Placeat iure iusto rerum quo repudiandae aut eum. Et architecto consectetur odit magnam. Doloribus quaerat illo quidem quia tempore ut om\",\n \"url\" : \"https://web.example.mocklab.io/705640\",\n \"status\" : \"lqq99e84wc297d22pehg21rhuesr4bmvfe9kaofqwrm2y63qa92z4ocbktcao2jov94oj6sc877yv7nhaqwhdyyg2bkc6zvut4j\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "74847b3e-f665-4f34-b349-23686d46a83d", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.805698Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "projects/get-card", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 1017 + }, + { + "id": "b7460cbb-88c3-427a-b040-958608ab70c8", + "name": "Get a project card (application/json)", + "request": { + "urlPath": "/projects/columns/cards/3900914104582388106", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 403, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/422184\",\n \"message\" : \"Tempora nam eaque enim quos beatae. Aut sit tenetur impedit asperiores beatae recusandae. Eius ut nesciunt recusandae voluptatem. Facere voluptatem deleniti vero. Autem nemo recusandae blanditiis dict\",\n \"url\" : \"https://web.example.mocklab.io/336691\",\n \"status\" : \"kzcvjyxzhxevq34fcyxb623sajvf32912t5lp3o9x7hdts92fny9575ccxdizz9w3q4lkk7mv5r3i359q1gg8dba81c7q7502lln71vhlfcz5p3viwavdkb4ca505qdyfod4r08jhud3ppua9g5qd9q7q2j38bdm2ekjkkz41ghabd\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "b7460cbb-88c3-427a-b040-958608ab70c8", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.805488Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "projects/get-card", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 1018 + }, + { + "id": "54b59ccc-6568-42e0-9cea-b2ff9ba760a6", + "name": "Get a project card (application/json)", + "request": { + "urlPath": "/projects/columns/cards/3151524242474592036", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 401, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/596118\",\n \"message\" : \"Praesentium rerum sed natus reprehenderit quos. Eius maiores dolore nemo commodi nisi. Doloribus qui sunt blanditiis suscipit repudiandae ea quasi. Vel voluptates at et voluptas beatae libero. Unde nu\",\n \"url\" : \"https://web.example.mocklab.io/315813\",\n \"status\" : \"7xcojbr40d5pchyha\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "54b59ccc-6568-42e0-9cea-b2ff9ba760a6", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.805278Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "projects/get-card", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 1019 + }, + { + "id": "bd9a5850-101a-4dd5-966c-c6e56a6e76a9", + "name": "Get a project card - 304", + "request": { + "urlPath": "/projects/columns/cards/4048669463952696373", + "method": "GET" + }, + "response": { + "status": 304 + }, + "uuid": "bd9a5850-101a-4dd5-966c-c6e56a6e76a9", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.805065Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "projects/get-card" + } + } + }, + "insertionIndex": 1020 + }, + { + "id": "188705f2-31f3-441f-a9a5-696d7062e017", + "name": "Get a project card (application/json) - default", + "request": { + "urlPath": "/projects/columns/cards/4773326455855683769", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 200, + "body": "{\n \"archived\" : false,\n \"column_url\" : \"https://api.github.com/projects/columns/367\",\n \"content_url\" : \"https://api.github.com/repos/api-playground/projects-test/issues/3\",\n \"created_at\" : \"2016-09-05T14:21:06Z\",\n \"creator\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"id\" : 1478,\n \"node_id\" : \"MDExOlByb2plY3RDYXJkMTQ3OA==\",\n \"note\" : \"Add payload for delete Project column\",\n \"project_url\" : \"https://api.github.com/projects/120\",\n \"updated_at\" : \"2016-09-05T14:20:22Z\",\n \"url\" : \"https://api.github.com/projects/columns/cards/1478\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "188705f2-31f3-441f-a9a5-696d7062e017", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.805035Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "projects/get-card", + "schema": { + "description": "Project cards represent a scope of work.", + "properties": { + "archived": { + "description": "Whether or not the card is archived", + "example": false, + "type": "boolean" + }, + "column_name": { + "type": "string" + }, + "column_url": { + "example": "https://api.github.com/projects/columns/367", + "format": "uri", + "type": "string" + }, + "content_url": { + "example": "https://api.github.com/repos/api-playground/projects-test/issues/3", + "format": "uri", + "type": "string" + }, + "created_at": { + "example": "2016-09-05T14:21:06Z", + "format": "date-time", + "type": "string" + }, + "creator": { + "$ref": "#/components/schemas/nullable-simple-user" + }, + "id": { + "description": "The project card's ID", + "example": 42, + "type": "integer" + }, + "node_id": { + "example": "MDExOlByb2plY3RDYXJkMTQ3OA==", + "type": "string" + }, + "note": { + "example": "Add payload for delete Project column", + "nullable": true, + "type": "string" + }, + "project_id": { + "type": "string" + }, + "project_url": { + "example": "https://api.github.com/projects/120", + "format": "uri", + "type": "string" + }, + "updated_at": { + "example": "2016-09-05T14:20:22Z", + "format": "date-time", + "type": "string" + }, + "url": { + "example": "https://api.github.com/projects/columns/cards/1478", + "format": "uri", + "type": "string" + } + }, + "required": [ + "id", + "node_id", + "note", + "url", + "column_url", + "project_url", + "creator", + "created_at", + "updated_at" + ], + "title": "Project Card", + "type": "object" + } + } + } + }, + "insertionIndex": 1021 + }, + { + "id": "ef0769e0-da8b-4cc5-ad5b-803c66be51db", + "name": "Delete a project card (application/json)", + "request": { + "urlPath": "/projects/columns/cards/8142619020555958510", + "method": "DELETE", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/645828\",\n \"message\" : \"Alias voluptatem doloribus. Aut aperiam omnis in. Voluptas quod nam possimus itaque. Modi aspernatur minima odio aliquid eligendi iure. Fugit tempora laboriosam impedit aperiam doloribus qui incidunt.\",\n \"url\" : \"https://web.example.mocklab.io/159804\",\n \"status\" : \"ssu8kcxrpg2nd21luen\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "ef0769e0-da8b-4cc5-ad5b-803c66be51db", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.804877Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "projects/delete-card", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 1022 + }, + { + "id": "a449614b-5eba-40de-8b7d-a72f7e510ea7", + "name": "Delete a project card (application/json)", + "request": { + "urlPath": "/projects/columns/cards/8912010656052351592", + "method": "DELETE", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 403, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/009605\",\n \"message\" : \"Ex pariatur qui porro. Aspernatur culpa neque dolore ipsam. Qui voluptates tenetur quia sed in. Harum non aperiam culpa magnam molestias laboriosam odio.\",\n \"errors\" : [ \"0v4y95x3ddod9kzj2v93zd1ep51vssyp00rnjns1rw2946c1zc85wgpya498idzhwmg2muybxc5c5bm79snn13u2uopugyvym5hriaknffbj1mlokawoe9pana22jga4r0kioj1p1bn07f1x4s\" ]\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "a449614b-5eba-40de-8b7d-a72f7e510ea7", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.804665Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "projects/delete-card", + "schema": { + "properties": { + "documentation_url": { + "type": "string" + }, + "errors": { + "items": { + "type": "string" + }, + "type": "array" + }, + "message": { + "type": "string" + } + }, + "type": "object" + } + } + } + }, + "insertionIndex": 1023 + }, + { + "id": "edfa39e0-a677-4fe5-88c0-3cf6574b8ac8", + "name": "Delete a project card (application/json)", + "request": { + "urlPath": "/projects/columns/cards/553023227249680624", + "method": "DELETE", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 401, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/408137\",\n \"message\" : \"Non placeat aut harum sint. Sequi aliquam maiores explicabo voluptatum. Aliquam quaerat nam nulla.\",\n \"url\" : \"https://web.example.mocklab.io/477833\",\n \"status\" : \"imvntwg45bbotl4gsn4ezdo3a12ywn8svmxgwlarbxi\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "edfa39e0-a677-4fe5-88c0-3cf6574b8ac8", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.804469Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "projects/delete-card", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 1024 + }, + { + "id": "fd7c8d1b-303c-41d1-814a-96da51306bf2", + "name": "Delete a project card - 304", + "request": { + "urlPath": "/projects/columns/cards/400323667799648373", + "method": "DELETE" + }, + "response": { + "status": 304 + }, + "uuid": "fd7c8d1b-303c-41d1-814a-96da51306bf2", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.804157Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "projects/delete-card" + } + } + }, + "insertionIndex": 1025 + }, + { + "id": "d9b0b37a-a050-4cfa-b6b0-29dc06e1313b", + "name": "Delete a project card - 204", + "request": { + "urlPath": "/projects/columns/cards/3981089433613964908", + "method": "DELETE" + }, + "response": { + "status": 204 + }, + "uuid": "d9b0b37a-a050-4cfa-b6b0-29dc06e1313b", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.804139Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "projects/delete-card" + } + } + }, + "insertionIndex": 1026 + }, + { + "id": "812cdb69-f7c1-48a7-8996-4220945faba5", + "name": "List child teams - response-if-child-teams-exist", + "request": { + "urlPath": "/orgs/1krg/teams/21mwx97p8wknghjwu4cyf7ayvg6de0v9xgbou384u8x8hao6mhsamjvimdtskdmi6q6l7y8esboyn4l0ics56jurwkaf6qidzycbonef2eb1xt9ao6gukplpzb0p5fszaws94073s8e7r32c7hxa7/teams", + "method": "GET" + }, + "response": { + "status": 200, + "body": "[ {\n \"description\" : \"Started it all.\",\n \"html_url\" : \"https://github.com/orgs/rails/teams/core\",\n \"id\" : 2,\n \"members_url\" : \"https://api.github.com/teams/2/members{/member}\",\n \"name\" : \"Original Roster\",\n \"node_id\" : \"MDQ6VGVhbTI=\",\n \"parent\" : {\n \"description\" : \"A great team.\",\n \"html_url\" : \"https://github.com/orgs/github/teams/justice-league\",\n \"id\" : 1,\n \"members_url\" : \"https://api.github.com/teams/1/members{/member}\",\n \"name\" : \"Justice League\",\n \"node_id\" : \"MDQ6VGVhbTE=\",\n \"permission\" : \"admin\",\n \"privacy\" : \"closed\",\n \"repositories_url\" : \"https://api.github.com/teams/1/repos\",\n \"slug\" : \"justice-league\",\n \"url\" : \"https://api.github.com/teams/1\"\n },\n \"permission\" : \"admin\",\n \"privacy\" : \"closed\",\n \"repositories_url\" : \"https://api.github.com/teams/2/repos\",\n \"slug\" : \"original-roster\",\n \"url\" : \"https://api.github.com/teams/2\"\n} ]", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "812cdb69-f7c1-48a7-8996-4220945faba5", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.804108Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "teams/list-child-in-org", + "schema": { + "items": { + "$ref": "#/components/schemas/team" + }, + "type": "array" + } + } + } + }, + "insertionIndex": 1027 + }, + { + "id": "d9f3406c-77b4-431f-964a-410cefb29d7a", + "name": "Add or update team repository permissions - 204", + "request": { + "urlPath": "/orgs/kw9dpo5sn1jyn43kj82x82dk5rpod0c4hw7589rjzk9rxdackskerx10xn2ain72whew835x76twerlomb9ftk21ejjif2o9iy6spvq13dgwhw2kaclkza4ue6gal1puv1vbg0rgjet2ubvrmg1pg/teams/b0bp7v0d90p78f1358txqz3gf8pmwqsdyc73ta8oaq7ez67uofqu9pccyyn8mpdupzrzxor2kw64xm9dk752889w0mcbt6wscpb9jmcenqy9eyq/repos/bidbm4tj6cyk5dmzvwzhtss41nie0ycskf1epm1x837f8zm3py2ky6joyzt9jsqc4rd7maj06xdppkevlkr3b6lkq0juwhtlk/czckxulqz80qs55s6s0k6u", + "method": "PUT" + }, + "response": { + "status": 204 + }, + "uuid": "d9f3406c-77b4-431f-964a-410cefb29d7a", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.804043Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "teams/add-or-update-repo-permissions-in-org" + } + } + }, + "insertionIndex": 1028 + }, + { + "id": "a97f5bd1-c211-4db4-bbd3-14f8b0ca0d82", + "name": "Check team permissions for a repository - 404", + "request": { + "urlPath": "/orgs/h0630ky1utmj8zxh3cm9emkz9qu0rf59iydjs2wrqoewztic6jakue6k0hwk8ykx9fnvle8jssumm67nxoz2uvmpjrfi2igz0p338dwm5gyx7a8wjn49xkq6jngrcz31eauz1tygwy9tj95p8rp3t28kieq7f2vi8m7v/teams/c6goz5zkkiiih6gk/repos/5pyra8c98k68v623xee0qssl4cjeieig0vpwqfrfv4priv57rb0dkf3t6dei3eu1jgn5672nxjl1h3ram0vrfug5i9csuy9zc4h595mcnf2k929km3tufww9ry9dz84yz78hc9mf5rc4dnlhfz9rcq6lb5x4jqe2/yby7ci1kfd94qi2i1vj3yoh148z3wusytnk85vm1eizormdirrim4uojdren7yddeg2fws3ubdlikjwt1afpyy0z4ukczskm6mruabkqwpg2o7hpzoiexuu8005wtw32s1cn3addgago982m58uj1s77ty48suksok1sjk20ouso50pac7cq2vpfoc24q2", + "method": "GET" + }, + "response": { + "status": 404 + }, + "uuid": "a97f5bd1-c211-4db4-bbd3-14f8b0ca0d82", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.803985Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "teams/check-permissions-for-repo-in-org" + } + } + }, + "insertionIndex": 1029 + }, + { + "id": "9515cf0d-3212-43fe-bd8b-f87a4a9e36c3", + "name": "Check team permissions for a repository - 204", + "request": { + "urlPath": "/orgs/depyvnysvma5zh7oy8p487xdhrw7frl2c5wc1xcmguwqgn6x62km2l7zp56odo9uvmpdc9v2ze8og/teams/i15havoa3cxr0ub12fxp0m2stmj98j70zbxhhazyimrm6m2bda9n6kgzrfbtaytsa7f2v91epv80gc0m606k2e7k8xb5x80j1xs4555lozdv2rqtr0bsfyqiush836lbu2a/repos/em5sbx5t2m6d02elxndw3htltycy0661jlusb4q71s7103w1xnsgqxr6zfwtjr5pagwhdye7sis08slf9670ymp5zjix5cxt8b013q4ni9fn4cxrpixdy3kjpqkf4oe18eqagtt4gh5/5dtk58gt0brtvsf52d5ogigcpphjqnluj", + "method": "GET" + }, + "response": { + "status": 204 + }, + "uuid": "9515cf0d-3212-43fe-bd8b-f87a4a9e36c3", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.803929Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "teams/check-permissions-for-repo-in-org" + } + } + }, + "insertionIndex": 1030 + }, + { + "id": "13c28065-8ef4-40e6-88ae-afb46e5e05fc", + "name": "Check team permissions for a repository (application/json) - alternative-response-with-repository-permissions", + "request": { + "urlPath": "/orgs/r7cbx329yrbh6wa7zxr3zotyvlldzye25je6d3th78dwof3kfryoh4ax39q/teams/hlnmi9yyzicgm8yhmw7v3jegk8u2db6zn79x9jwle29alh5dhleh5qba4emf7jbcwlngr4o0prsecxmamxc6htb5fjdup1dc9necqz115l9b99h24j5iwhnp9jtpx4vlr22sehkd1xldfxz2tfpwhqma6vxwmx69v4s8xml8rxylaw753dpks8tch6/repos/v4n6wbxq43tvhmynsg9c2u99haornhnxptwybunm2pokop4bw67ftf3w9jgqmkljl5ga0zbkxrq2661zwq1sgc7i5zdsbpqmyl65/kkxl7bdww3wlxi6wpb4h4ds74w72c52vbxbkam890n6trao737e6fp1js9puyiebqtuc64n9t69jvsuxwr6h934ofvmy121pqiw4bznf3gdesb700fse28lxm", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 200, + "body": "{\n \"allow_merge_commit\" : true,\n \"allow_rebase_merge\" : true,\n \"allow_squash_merge\" : true,\n \"anonymous_access_enabled\" : false,\n \"archive_url\" : \"https://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref}\",\n \"archived\" : false,\n \"assignees_url\" : \"https://api.github.com/repos/octocat/Hello-World/assignees{/user}\",\n \"blobs_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/blobs{/sha}\",\n \"branches_url\" : \"https://api.github.com/repos/octocat/Hello-World/branches{/branch}\",\n \"clone_url\" : \"https://github.com/octocat/Hello-World.git\",\n \"collaborators_url\" : \"https://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator}\",\n \"comments_url\" : \"https://api.github.com/repos/octocat/Hello-World/comments{/number}\",\n \"commits_url\" : \"https://api.github.com/repos/octocat/Hello-World/commits{/sha}\",\n \"compare_url\" : \"https://api.github.com/repos/octocat/Hello-World/compare/{base}...{head}\",\n \"contents_url\" : \"https://api.github.com/repos/octocat/Hello-World/contents/{+path}\",\n \"contributors_url\" : \"https://api.github.com/repos/octocat/Hello-World/contributors\",\n \"created_at\" : \"2011-01-26T19:01:12Z\",\n \"default_branch\" : \"master\",\n \"delete_branch_on_merge\" : true,\n \"deployments_url\" : \"https://api.github.com/repos/octocat/Hello-World/deployments\",\n \"description\" : \"This your first repo!\",\n \"disabled\" : false,\n \"downloads_url\" : \"https://api.github.com/repos/octocat/Hello-World/downloads\",\n \"events_url\" : \"https://api.github.com/repos/octocat/Hello-World/events\",\n \"fork\" : false,\n \"forks\" : 1,\n \"forks_count\" : 9,\n \"forks_url\" : \"https://api.github.com/repos/octocat/Hello-World/forks\",\n \"full_name\" : \"octocat/Hello-World\",\n \"git_commits_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/commits{/sha}\",\n \"git_refs_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/refs{/sha}\",\n \"git_tags_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/tags{/sha}\",\n \"git_url\" : \"git:github.com/octocat/Hello-World.git\",\n \"has_downloads\" : true,\n \"has_issues\" : true,\n \"has_pages\" : false,\n \"has_projects\" : true,\n \"has_wiki\" : true,\n \"homepage\" : \"https://github.com\",\n \"hooks_url\" : \"https://api.github.com/repos/octocat/Hello-World/hooks\",\n \"html_url\" : \"https://github.com/octocat/Hello-World\",\n \"id\" : 1296269,\n \"is_template\" : false,\n \"issue_comment_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/comments{/number}\",\n \"issue_events_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/events{/number}\",\n \"issues_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues{/number}\",\n \"keys_url\" : \"https://api.github.com/repos/octocat/Hello-World/keys{/key_id}\",\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World/labels{/name}\",\n \"languages_url\" : \"https://api.github.com/repos/octocat/Hello-World/languages\",\n \"license\" : {\n \"html_url\" : \"https://api.github.com/licenses/mit\",\n \"key\" : \"mit\",\n \"name\" : \"MIT License\",\n \"node_id\" : \"MDc6TGljZW5zZW1pdA==\",\n \"spdx_id\" : \"MIT\",\n \"url\" : \"https://api.github.com/licenses/mit\"\n },\n \"merges_url\" : \"https://api.github.com/repos/octocat/Hello-World/merges\",\n \"milestones_url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones{/number}\",\n \"mirror_url\" : \"git:git.example.com/octocat/Hello-World\",\n \"name\" : \"Hello-World\",\n \"network_count\" : 0,\n \"node_id\" : \"MDEwOlJlcG9zaXRvcnkxMjk2MjY5\",\n \"notifications_url\" : \"https://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating}\",\n \"open_issues\" : 1,\n \"open_issues_count\" : 0,\n \"owner\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"permissions\" : {\n \"admin\" : false,\n \"pull\" : true,\n \"push\" : false\n },\n \"private\" : false,\n \"pulls_url\" : \"https://api.github.com/repos/octocat/Hello-World/pulls{/number}\",\n \"pushed_at\" : \"2011-01-26T19:06:43Z\",\n \"releases_url\" : \"https://api.github.com/repos/octocat/Hello-World/releases{/id}\",\n \"size\" : 108,\n \"ssh_url\" : \"git@github.com:octocat/Hello-World.git\",\n \"stargazers_count\" : 80,\n \"stargazers_url\" : \"https://api.github.com/repos/octocat/Hello-World/stargazers\",\n \"statuses_url\" : \"https://api.github.com/repos/octocat/Hello-World/statuses/{sha}\",\n \"subscribers_count\" : 42,\n \"subscribers_url\" : \"https://api.github.com/repos/octocat/Hello-World/subscribers\",\n \"subscription_url\" : \"https://api.github.com/repos/octocat/Hello-World/subscription\",\n \"svn_url\" : \"https://svn.github.com/octocat/Hello-World\",\n \"tags_url\" : \"https://api.github.com/repos/octocat/Hello-World/tags\",\n \"teams_url\" : \"https://api.github.com/repos/octocat/Hello-World/teams\",\n \"template_repository\" : {\n \"allow_merge_commit\" : true,\n \"allow_rebase_merge\" : true,\n \"allow_squash_merge\" : true,\n \"archive_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/{archive_format}{/ref}\",\n \"archived\" : false,\n \"assignees_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/assignees{/user}\",\n \"blobs_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/git/blobs{/sha}\",\n \"branches_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/branches{/branch}\",\n \"clone_url\" : \"https://github.com/octocat/Hello-World-Template.git\",\n \"collaborators_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/collaborators{/collaborator}\",\n \"comments_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/comments{/number}\",\n \"commits_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/commits{/sha}\",\n \"compare_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/compare/{base}...{head}\",\n \"contents_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/contents/{+path}\",\n \"contributors_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/contributors\",\n \"created_at\" : \"2011-01-26T19:01:12Z\",\n \"default_branch\" : \"master\",\n \"delete_branch_on_merge\" : true,\n \"deployments_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/deployments\",\n \"description\" : \"This your first repo!\",\n \"disabled\" : false,\n \"downloads_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/downloads\",\n \"events_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/events\",\n \"fork\" : false,\n \"forks\" : 9,\n \"forks_count\" : 9,\n \"forks_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/forks\",\n \"full_name\" : \"octocat/Hello-World-Template\",\n \"git_commits_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/git/commits{/sha}\",\n \"git_refs_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/git/refs{/sha}\",\n \"git_tags_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/git/tags{/sha}\",\n \"git_url\" : \"git:github.com/octocat/Hello-World-Template.git\",\n \"has_downloads\" : true,\n \"has_issues\" : true,\n \"has_pages\" : false,\n \"has_projects\" : true,\n \"has_wiki\" : true,\n \"homepage\" : \"https://github.com\",\n \"hooks_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/hooks\",\n \"html_url\" : \"https://github.com/octocat/Hello-World-Template\",\n \"id\" : 1296269,\n \"is_template\" : true,\n \"issue_comment_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/issues/comments{/number}\",\n \"issue_events_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/issues/events{/number}\",\n \"issues_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/issues{/number}\",\n \"keys_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/keys{/key_id}\",\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/labels{/name}\",\n \"languages_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/languages\",\n \"license\" : {\n \"html_url\" : \"https://api.github.com/licenses/mit\",\n \"key\" : \"mit\",\n \"name\" : \"MIT License\",\n \"node_id\" : \"MDc6TGljZW5zZW1pdA==\",\n \"spdx_id\" : \"MIT\",\n \"url\" : \"https://api.github.com/licenses/mit\"\n },\n \"merges_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/merges\",\n \"milestones_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/milestones{/number}\",\n \"mirror_url\" : \"git:git.example.com/octocat/Hello-World-Template\",\n \"name\" : \"Hello-World-Template\",\n \"network_count\" : 0,\n \"node_id\" : \"MDEwOlJlcG9zaXRvcnkxMjk2MjY5\",\n \"notifications_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/notifications{?since,all,participating}\",\n \"open_issues\" : 0,\n \"open_issues_count\" : 0,\n \"owner\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"permissions\" : {\n \"admin\" : false,\n \"pull\" : true,\n \"push\" : false\n },\n \"private\" : false,\n \"pulls_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/pulls{/number}\",\n \"pushed_at\" : \"2011-01-26T19:06:43Z\",\n \"releases_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/releases{/id}\",\n \"size\" : 108,\n \"ssh_url\" : \"git@github.com:octocat/Hello-World-Template.git\",\n \"stargazers_count\" : 80,\n \"stargazers_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/stargazers\",\n \"statuses_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/statuses/{sha}\",\n \"subscribers_count\" : 42,\n \"subscribers_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/subscribers\",\n \"subscription_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/subscription\",\n \"svn_url\" : \"https://svn.github.com/octocat/Hello-World-Template\",\n \"tags_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/tags\",\n \"teams_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/teams\",\n \"temp_clone_token\" : \"ABTLWHOULUVAXGTRYU7OC2876QJ2O\",\n \"topics\" : [ \"octocat\", \"atom\", \"electron\", \"api\" ],\n \"trees_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/git/trees{/sha}\",\n \"updated_at\" : \"2011-01-26T19:14:43Z\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World-Template\",\n \"visibility\" : \"public\",\n \"watchers\" : 80,\n \"watchers_count\" : 80\n },\n \"topics\" : [ \"octocat\", \"atom\", \"electron\", \"api\" ],\n \"trees_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/trees{/sha}\",\n \"updated_at\" : \"2011-01-26T19:14:43Z\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World\",\n \"visibility\" : \"public\",\n \"watchers\" : 1,\n \"watchers_count\" : 80\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "13c28065-8ef4-40e6-88ae-afb46e5e05fc", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.80381Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "teams/check-permissions-for-repo-in-org", + "schema": { + "description": "A team's access to a repository.", + "properties": { + "allow_forking": { + "default": false, + "description": "Whether to allow forking this repo", + "example": false, + "type": "boolean" + }, + "allow_merge_commit": { + "default": true, + "description": "Whether to allow merge commits for pull requests.", + "example": true, + "type": "boolean" + }, + "allow_rebase_merge": { + "default": true, + "description": "Whether to allow rebase merges for pull requests.", + "example": true, + "type": "boolean" + }, + "allow_squash_merge": { + "default": true, + "description": "Whether to allow squash merges for pull requests.", + "example": true, + "type": "boolean" + }, + "anonymous_access_enabled": { + "type": "boolean" + }, + "archive_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref}", + "type": "string" + }, + "archived": { + "default": false, + "description": "Whether the repository is archived.", + "type": "boolean" + }, + "assignees_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/assignees{/user}", + "type": "string" + }, + "blobs_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/git/blobs{/sha}", + "type": "string" + }, + "branches_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/branches{/branch}", + "type": "string" + }, + "clone_url": { + "example": "https://github.com/octocat/Hello-World.git", + "type": "string" + }, + "collaborators_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator}", + "type": "string" + }, + "comments_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/comments{/number}", + "type": "string" + }, + "commits_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/commits{/sha}", + "type": "string" + }, + "compare_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/compare/{base}...{head}", + "type": "string" + }, + "contents_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/contents/{+path}", + "type": "string" + }, + "contributors_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/contributors", + "format": "uri", + "type": "string" + }, + "created_at": { + "example": "2011-01-26T19:01:12Z", + "format": "date-time", + "nullable": true, + "type": "string" + }, + "default_branch": { + "description": "The default branch of the repository.", + "example": "master", + "type": "string" + }, + "delete_branch_on_merge": { + "default": false, + "description": "Whether to delete head branches when pull requests are merged", + "example": false, + "type": "boolean" + }, + "deployments_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/deployments", + "format": "uri", + "type": "string" + }, + "description": { + "example": "This your first repo!", + "nullable": true, + "type": "string" + }, + "disabled": { + "description": "Returns whether or not this repository disabled.", + "type": "boolean" + }, + "downloads_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/downloads", + "format": "uri", + "type": "string" + }, + "events_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/events", + "format": "uri", + "type": "string" + }, + "fork": { + "type": "boolean" + }, + "forks": { + "type": "integer" + }, + "forks_count": { + "example": 9, + "type": "integer" + }, + "forks_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/forks", + "format": "uri", + "type": "string" + }, + "full_name": { + "example": "octocat/Hello-World", + "type": "string" + }, + "git_commits_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/git/commits{/sha}", + "type": "string" + }, + "git_refs_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/git/refs{/sha}", + "type": "string" + }, + "git_tags_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/git/tags{/sha}", + "type": "string" + }, + "git_url": { + "example": "git:github.com/octocat/Hello-World.git", + "type": "string" + }, + "has_downloads": { + "default": true, + "description": "Whether downloads are enabled.", + "example": true, + "type": "boolean" + }, + "has_issues": { + "default": true, + "description": "Whether issues are enabled.", + "example": true, + "type": "boolean" + }, + "has_pages": { + "type": "boolean" + }, + "has_projects": { + "default": true, + "description": "Whether projects are enabled.", + "example": true, + "type": "boolean" + }, + "has_wiki": { + "default": true, + "description": "Whether the wiki is enabled.", + "example": true, + "type": "boolean" + }, + "homepage": { + "example": "https://github.com", + "format": "uri", + "nullable": true, + "type": "string" + }, + "hooks_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/hooks", + "format": "uri", + "type": "string" + }, + "html_url": { + "example": "https://github.com/octocat/Hello-World", + "format": "uri", + "type": "string" + }, + "id": { + "description": "Unique identifier of the repository", + "example": 42, + "type": "integer" + }, + "is_template": { + "default": false, + "description": "Whether this repository acts as a template that can be used to generate new repositories.", + "example": true, + "type": "boolean" + }, + "issue_comment_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/issues/comments{/number}", + "type": "string" + }, + "issue_events_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/issues/events{/number}", + "type": "string" + }, + "issues_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/issues{/number}", + "type": "string" + }, + "keys_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/keys{/key_id}", + "type": "string" + }, + "labels_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/labels{/name}", + "type": "string" + }, + "language": { + "nullable": true, + "type": "string" + }, + "languages_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/languages", + "format": "uri", + "type": "string" + }, + "license": { + "$ref": "#/components/schemas/nullable-license-simple" + }, + "master_branch": { + "type": "string" + }, + "merges_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/merges", + "format": "uri", + "type": "string" + }, + "milestones_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/milestones{/number}", + "type": "string" + }, + "mirror_url": { + "example": "git:git.example.com/octocat/Hello-World", + "format": "uri", + "nullable": true, + "type": "string" + }, + "name": { + "description": "The name of the repository.", + "example": "Team Environment", + "type": "string" + }, + "network_count": { + "type": "integer" + }, + "node_id": { + "example": "MDEwOlJlcG9zaXRvcnkxMjk2MjY5", + "type": "string" + }, + "notifications_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating}", + "type": "string" + }, + "open_issues": { + "type": "integer" + }, + "open_issues_count": { + "example": 0, + "type": "integer" + }, + "owner": { + "$ref": "#/components/schemas/nullable-simple-user" + }, + "permissions": { + "properties": { + "admin": { + "type": "boolean" + }, + "maintain": { + "type": "boolean" + }, + "pull": { + "type": "boolean" + }, + "push": { + "type": "boolean" + }, + "triage": { + "type": "boolean" + } + }, + "required": ["admin", "pull", "push"], + "type": "object" + }, + "private": { + "default": false, + "description": "Whether the repository is private or public.", + "type": "boolean" + }, + "pulls_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/pulls{/number}", + "type": "string" + }, + "pushed_at": { + "example": "2011-01-26T19:06:43Z", + "format": "date-time", + "nullable": true, + "type": "string" + }, + "releases_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/releases{/id}", + "type": "string" + }, + "size": { + "example": 108, + "type": "integer" + }, + "ssh_url": { + "example": "git@github.com:octocat/Hello-World.git", + "type": "string" + }, + "stargazers_count": { + "example": 80, + "type": "integer" + }, + "stargazers_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/stargazers", + "format": "uri", + "type": "string" + }, + "statuses_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/statuses/{sha}", + "type": "string" + }, + "subscribers_count": { + "type": "integer" + }, + "subscribers_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/subscribers", + "format": "uri", + "type": "string" + }, + "subscription_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/subscription", + "format": "uri", + "type": "string" + }, + "svn_url": { + "example": "https://svn.github.com/octocat/Hello-World", + "format": "uri", + "type": "string" + }, + "tags_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/tags", + "format": "uri", + "type": "string" + }, + "teams_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/teams", + "format": "uri", + "type": "string" + }, + "template_repository": { + "$ref": "#/components/schemas/nullable-repository" + }, + "topics": { + "items": { + "type": "string" + }, + "type": "array" + }, + "trees_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/git/trees{/sha}", + "type": "string" + }, + "updated_at": { + "example": "2011-01-26T19:14:43Z", + "format": "date-time", + "nullable": true, + "type": "string" + }, + "url": { + "example": "https://api.github.com/repos/octocat/Hello-World", + "format": "uri", + "type": "string" + }, + "visibility": { + "default": "public", + "description": "The repository visibility: public, private, or internal.", + "type": "string" + }, + "watchers": { + "type": "integer" + }, + "watchers_count": { + "example": 80, + "type": "integer" + } + }, + "required": [ + "archive_url", + "assignees_url", + "blobs_url", + "branches_url", + "collaborators_url", + "comments_url", + "commits_url", + "compare_url", + "contents_url", + "contributors_url", + "deployments_url", + "description", + "downloads_url", + "events_url", + "fork", + "forks_url", + "full_name", + "git_commits_url", + "git_refs_url", + "git_tags_url", + "hooks_url", + "html_url", + "id", + "node_id", + "issue_comment_url", + "issue_events_url", + "issues_url", + "keys_url", + "labels_url", + "languages_url", + "merges_url", + "milestones_url", + "name", + "notifications_url", + "owner", + "private", + "pulls_url", + "releases_url", + "stargazers_url", + "statuses_url", + "subscribers_url", + "subscription_url", + "tags_url", + "teams_url", + "trees_url", + "url", + "clone_url", + "default_branch", + "forks", + "forks_count", + "git_url", + "has_downloads", + "has_issues", + "has_projects", + "has_wiki", + "has_pages", + "homepage", + "language", + "archived", + "disabled", + "mirror_url", + "open_issues", + "open_issues_count", + "license", + "pushed_at", + "size", + "ssh_url", + "stargazers_count", + "svn_url", + "watchers", + "watchers_count", + "created_at", + "updated_at" + ], + "title": "Team Repository", + "type": "object" + } + } + } + }, + "insertionIndex": 1031 + }, + { + "id": "bbc60aa6-b9fd-4670-8cb0-a61a1f751fd3", + "name": "Remove a repository from a team - 204", + "request": { + "urlPath": "/orgs/ev7hwdtciot2voew5vblgj2uvr6s48syh72q355f0gw2m01l6lq078ajalqdb9c8nec9m1j76tgwlijsjtybf/teams/rv577vyur9s78pia094ilvhajl8jz9fzgl5448b3l48ppj3o76yvf51v64fi4sxtva6et9z5hrdd3tn4noi3c5p7yyac4jho0v2az21xl0jzfh4j/repos/6lr3bot7z8bixjdigcagyv0/jes0ayymu96y4qrv890z7cuzh4hyqzgiu21juhyiuq3embap1b9h1jmb9jwa3sue6vyb", + "method": "DELETE" + }, + "response": { + "status": 204 + }, + "uuid": "bbc60aa6-b9fd-4670-8cb0-a61a1f751fd3", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.802679Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "teams/remove-repo-in-org" + } + } + }, + "insertionIndex": 1032 + }, + { + "id": "e1428883-d7ad-461a-880f-e67c4e7c3810", + "name": "List team repositories - default", + "request": { + "urlPath": "/orgs/x6h44xrcv04duj06o255t7h1rmj241b8d18324zf17ildkgzku9qj1n1uq71jbhrbn6icxcg78hxlsijqf78i78dvzmax53gdgg51we0sgthu6xus177ucroin06pl5295vex90hawemyra37tlc31hwrtppn9qlg1hst3agzxcfjrc4ralfydlbqd5ekhi0lj8s/teams/nllx8an0g5owimg3gqqjiovh5hxrslrxpvyvmtly0qqwmt4infqxlhek6jr29xgsjtuec12j8v8a2eghsxaxusdh536wlsogrws9p11b43iundo49371dnu2b1ziskx3imo5y30v7nuj0m4vwu0v1o7c20xwd3dwter6e29xjem26147j1un/repos", + "method": "GET" + }, + "response": { + "status": 200, + "body": "[ {\n \"archive_url\" : \"https://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref}\",\n \"archived\" : false,\n \"assignees_url\" : \"https://api.github.com/repos/octocat/Hello-World/assignees{/user}\",\n \"blobs_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/blobs{/sha}\",\n \"branches_url\" : \"https://api.github.com/repos/octocat/Hello-World/branches{/branch}\",\n \"clone_url\" : \"https://github.com/octocat/Hello-World.git\",\n \"collaborators_url\" : \"https://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator}\",\n \"comments_url\" : \"https://api.github.com/repos/octocat/Hello-World/comments{/number}\",\n \"commits_url\" : \"https://api.github.com/repos/octocat/Hello-World/commits{/sha}\",\n \"compare_url\" : \"https://api.github.com/repos/octocat/Hello-World/compare/{base}...{head}\",\n \"contents_url\" : \"https://api.github.com/repos/octocat/Hello-World/contents/{+path}\",\n \"contributors_url\" : \"https://api.github.com/repos/octocat/Hello-World/contributors\",\n \"created_at\" : \"2011-01-26T19:01:12Z\",\n \"default_branch\" : \"master\",\n \"deployments_url\" : \"https://api.github.com/repos/octocat/Hello-World/deployments\",\n \"description\" : \"This your first repo!\",\n \"disabled\" : false,\n \"downloads_url\" : \"https://api.github.com/repos/octocat/Hello-World/downloads\",\n \"events_url\" : \"https://api.github.com/repos/octocat/Hello-World/events\",\n \"fork\" : false,\n \"forks_count\" : 9,\n \"forks_url\" : \"https://api.github.com/repos/octocat/Hello-World/forks\",\n \"full_name\" : \"octocat/Hello-World\",\n \"git_commits_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/commits{/sha}\",\n \"git_refs_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/refs{/sha}\",\n \"git_tags_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/tags{/sha}\",\n \"git_url\" : \"git:github.com/octocat/Hello-World.git\",\n \"has_downloads\" : true,\n \"has_issues\" : true,\n \"has_pages\" : false,\n \"has_projects\" : true,\n \"has_wiki\" : true,\n \"homepage\" : \"https://github.com\",\n \"hooks_url\" : \"https://api.github.com/repos/octocat/Hello-World/hooks\",\n \"html_url\" : \"https://github.com/octocat/Hello-World\",\n \"id\" : 1296269,\n \"is_template\" : false,\n \"issue_comment_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/comments{/number}\",\n \"issue_events_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/events{/number}\",\n \"issues_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues{/number}\",\n \"keys_url\" : \"https://api.github.com/repos/octocat/Hello-World/keys{/key_id}\",\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World/labels{/name}\",\n \"languages_url\" : \"https://api.github.com/repos/octocat/Hello-World/languages\",\n \"merges_url\" : \"https://api.github.com/repos/octocat/Hello-World/merges\",\n \"milestones_url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones{/number}\",\n \"mirror_url\" : \"git:git.example.com/octocat/Hello-World\",\n \"name\" : \"Hello-World\",\n \"node_id\" : \"MDEwOlJlcG9zaXRvcnkxMjk2MjY5\",\n \"notifications_url\" : \"https://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating}\",\n \"open_issues_count\" : 0,\n \"owner\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"permissions\" : {\n \"admin\" : false,\n \"pull\" : true,\n \"push\" : false\n },\n \"private\" : false,\n \"pulls_url\" : \"https://api.github.com/repos/octocat/Hello-World/pulls{/number}\",\n \"pushed_at\" : \"2011-01-26T19:06:43Z\",\n \"releases_url\" : \"https://api.github.com/repos/octocat/Hello-World/releases{/id}\",\n \"size\" : 108,\n \"ssh_url\" : \"git@github.com:octocat/Hello-World.git\",\n \"stargazers_count\" : 80,\n \"stargazers_url\" : \"https://api.github.com/repos/octocat/Hello-World/stargazers\",\n \"statuses_url\" : \"https://api.github.com/repos/octocat/Hello-World/statuses/{sha}\",\n \"subscribers_url\" : \"https://api.github.com/repos/octocat/Hello-World/subscribers\",\n \"subscription_url\" : \"https://api.github.com/repos/octocat/Hello-World/subscription\",\n \"svn_url\" : \"https://svn.github.com/octocat/Hello-World\",\n \"tags_url\" : \"https://api.github.com/repos/octocat/Hello-World/tags\",\n \"teams_url\" : \"https://api.github.com/repos/octocat/Hello-World/teams\",\n \"template_repository\" : {\n \"allow_merge_commit\" : true,\n \"allow_rebase_merge\" : true,\n \"allow_squash_merge\" : true,\n \"archive_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/{archive_format}{/ref}\",\n \"archived\" : false,\n \"assignees_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/assignees{/user}\",\n \"blobs_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/git/blobs{/sha}\",\n \"branches_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/branches{/branch}\",\n \"clone_url\" : \"https://github.com/octocat/Hello-World-Template.git\",\n \"collaborators_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/collaborators{/collaborator}\",\n \"comments_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/comments{/number}\",\n \"commits_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/commits{/sha}\",\n \"compare_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/compare/{base}...{head}\",\n \"contents_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/contents/{+path}\",\n \"contributors_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/contributors\",\n \"created_at\" : \"2011-01-26T19:01:12Z\",\n \"default_branch\" : \"master\",\n \"delete_branch_on_merge\" : true,\n \"deployments_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/deployments\",\n \"description\" : \"This your first repo!\",\n \"disabled\" : false,\n \"downloads_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/downloads\",\n \"events_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/events\",\n \"fork\" : false,\n \"forks\" : 9,\n \"forks_count\" : 9,\n \"forks_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/forks\",\n \"full_name\" : \"octocat/Hello-World-Template\",\n \"git_commits_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/git/commits{/sha}\",\n \"git_refs_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/git/refs{/sha}\",\n \"git_tags_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/git/tags{/sha}\",\n \"git_url\" : \"git:github.com/octocat/Hello-World-Template.git\",\n \"has_downloads\" : true,\n \"has_issues\" : true,\n \"has_pages\" : false,\n \"has_projects\" : true,\n \"has_wiki\" : true,\n \"homepage\" : \"https://github.com\",\n \"hooks_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/hooks\",\n \"html_url\" : \"https://github.com/octocat/Hello-World-Template\",\n \"id\" : 1296269,\n \"is_template\" : true,\n \"issue_comment_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/issues/comments{/number}\",\n \"issue_events_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/issues/events{/number}\",\n \"issues_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/issues{/number}\",\n \"keys_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/keys{/key_id}\",\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/labels{/name}\",\n \"languages_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/languages\",\n \"license\" : {\n \"html_url\" : \"https://api.github.com/licenses/mit\",\n \"key\" : \"mit\",\n \"name\" : \"MIT License\",\n \"node_id\" : \"MDc6TGljZW5zZW1pdA==\",\n \"spdx_id\" : \"MIT\",\n \"url\" : \"https://api.github.com/licenses/mit\"\n },\n \"merges_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/merges\",\n \"milestones_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/milestones{/number}\",\n \"mirror_url\" : \"git:git.example.com/octocat/Hello-World-Template\",\n \"name\" : \"Hello-World-Template\",\n \"network_count\" : 0,\n \"node_id\" : \"MDEwOlJlcG9zaXRvcnkxMjk2MjY5\",\n \"notifications_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/notifications{?since,all,participating}\",\n \"open_issues\" : 0,\n \"open_issues_count\" : 0,\n \"owner\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"permissions\" : {\n \"admin\" : false,\n \"pull\" : true,\n \"push\" : false\n },\n \"private\" : false,\n \"pulls_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/pulls{/number}\",\n \"pushed_at\" : \"2011-01-26T19:06:43Z\",\n \"releases_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/releases{/id}\",\n \"size\" : 108,\n \"ssh_url\" : \"git@github.com:octocat/Hello-World-Template.git\",\n \"stargazers_count\" : 80,\n \"stargazers_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/stargazers\",\n \"statuses_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/statuses/{sha}\",\n \"subscribers_count\" : 42,\n \"subscribers_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/subscribers\",\n \"subscription_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/subscription\",\n \"svn_url\" : \"https://svn.github.com/octocat/Hello-World-Template\",\n \"tags_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/tags\",\n \"teams_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/teams\",\n \"temp_clone_token\" : \"ABTLWHOULUVAXGTRYU7OC2876QJ2O\",\n \"topics\" : [ \"octocat\", \"atom\", \"electron\", \"api\" ],\n \"trees_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/git/trees{/sha}\",\n \"updated_at\" : \"2011-01-26T19:14:43Z\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World-Template\",\n \"visibility\" : \"public\",\n \"watchers\" : 80,\n \"watchers_count\" : 80\n },\n \"topics\" : [ \"octocat\", \"atom\", \"electron\", \"api\" ],\n \"trees_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/trees{/sha}\",\n \"updated_at\" : \"2011-01-26T19:14:43Z\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World\",\n \"visibility\" : \"public\",\n \"watchers_count\" : 80\n} ]", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "e1428883-d7ad-461a-880f-e67c4e7c3810", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.802615Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "teams/list-repos-in-org", + "schema": { + "items": { + "$ref": "#/components/schemas/minimal-repository" + }, + "type": "array" + } + } + } + }, + "insertionIndex": 1033 + }, + { + "id": "23b108f5-e60a-47aa-956b-ea038d27c525", + "name": "Add or update team project permissions (application/json) - response-if-the-project-is-not-owned-by-the-organization", + "request": { + "urlPath": "/orgs/tpdx0hwagd3qxyb1b74b1jvtls3etic6nxar67ths23c8ngm5gb260x9udpjcr7ursf4zkzjfnle4x26gfjm/teams/nifygs7aph5c6r9i4wayk0dgpkvksdqfdj1lngq7k95oyo3q2p2j0vzfxiq3hk5xkx0fo8piqz4limsu4ldlr197mpt6g2x8iwkhbcvor4tewl0tvpfc8c7fottzwfywyp2jt43nzf14b5vvl05lx5tz31xfu3ze0z5pyrshqhr6l6c5ce24ucv3f5ydddx40f/projects/5691772346146306452", + "method": "PUT", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 403, + "body": "{\n \"documentation_url\" : \"https://docs.github.com/enterprise-server@2.21/rest/reference/teams#add-or-update-team-project-permissions\",\n \"message\" : \"Must have admin rights to Repository.\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "23b108f5-e60a-47aa-956b-ea038d27c525", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.802486Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "teams/add-or-update-project-permissions-in-org", + "schema": { + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "type": "object" + } + } + } + }, + "insertionIndex": 1034 + }, + { + "id": "58859011-bbdc-42d2-9586-7408c53b1b06", + "name": "Add or update team project permissions - 204", + "request": { + "urlPath": "/orgs/v5hds2dgdgpkvvy7zyuxf8tczt4xmmv08ofu8en2vi8x8e5v3q97h2r7pbzyh3bfwj3jgwj6mxav21qfd024kx1ne4v3rt7/teams/xb3qef5fn55lljwcg1hoez6mydcynb70o2ayws173ck3r5x4dpjd0955l4yfulzqcb08k/projects/2886686165464937877", + "method": "PUT" + }, + "response": { + "status": 204 + }, + "uuid": "58859011-bbdc-42d2-9586-7408c53b1b06", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.80241Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "teams/add-or-update-project-permissions-in-org" + } + } + }, + "insertionIndex": 1035 + }, + { + "id": "8c71dd76-a922-40c9-8623-8c566d63ea60", + "name": "Check team permissions for a project - 404", + "request": { + "urlPath": "/orgs/mnkhikszzblvwtswpq0tawzz07fteqgopxytug0hyd13ozsecbcnkn5tbu5otivnoy102w6fami/teams/nv5x926eaciuh5xiyoaz73pzddk8bz71xg4qb3gb9v10djdon40kqs4kot29yrly27hgcla8csbhmq6sqvk56wr3i5gnyez5enel9zies456j25hhm7uhd8095dzi0tl61nwyl280rit23f7a4ozhgpw7jt7opnnhpl07r8zlsnb156noeowfqwan/projects/3797976611430744923", + "method": "GET" + }, + "response": { + "status": 404 + }, + "uuid": "8c71dd76-a922-40c9-8623-8c566d63ea60", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.802369Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "teams/check-permissions-for-project-in-org" + } + } + }, + "insertionIndex": 1036 + }, + { + "id": "66474828-e98c-4d2f-8895-50907923f334", + "name": "Check team permissions for a project (application/json) - default", + "request": { + "urlPath": "/orgs/ba3z6zan6x/teams/01gnnqrqzxpb6baituxr2akzb7idm3yu8wmqfv1f44pd3ap97froq5af91w4odnsuomh0d3wwpbw8v5lpzdy04qy8abf2ufjt1jwgptubfwzj23uv6bzwh4s3jz8ewzsyyqjd50k4fozz4qt0f0te55j4nscuan1oonluagi8pyg4ffdxqeh2x8t4/projects/8799296629801749011", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 200, + "body": "{\n \"body\" : \"High-level roadmap for the upcoming year.\",\n \"columns_url\" : \"https://api.github.com/projects/1002605/columns\",\n \"created_at\" : \"2011-04-11T20:09:31Z\",\n \"creator\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"html_url\" : \"https://github.com/orgs/api-playground/projects/1\",\n \"id\" : 1002605,\n \"name\" : \"Organization Roadmap\",\n \"node_id\" : \"MDc6UHJvamVjdDEwMDI2MDU=\",\n \"number\" : 1,\n \"organization_permission\" : \"write\",\n \"owner_url\" : \"https://api.github.com/orgs/octocat\",\n \"permissions\" : {\n \"admin\" : false,\n \"read\" : true,\n \"write\" : true\n },\n \"private\" : false,\n \"state\" : \"open\",\n \"updated_at\" : \"2014-03-04T18:58:10Z\",\n \"url\" : \"https://api.github.com/projects/1002605\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "66474828-e98c-4d2f-8895-50907923f334", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.802318Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "teams/check-permissions-for-project-in-org", + "schema": { + "description": "A team's access to a project.", + "properties": { + "body": { + "nullable": true, + "type": "string" + }, + "columns_url": { + "type": "string" + }, + "created_at": { + "type": "string" + }, + "creator": { + "$ref": "#/components/schemas/simple-user" + }, + "html_url": { + "type": "string" + }, + "id": { + "type": "integer" + }, + "name": { + "type": "string" + }, + "node_id": { + "type": "string" + }, + "number": { + "type": "integer" + }, + "organization_permission": { + "description": "The organization permission for this project. Only present when owner is an organization.", + "type": "string" + }, + "owner_url": { + "type": "string" + }, + "permissions": { + "properties": { + "admin": { + "type": "boolean" + }, + "read": { + "type": "boolean" + }, + "write": { + "type": "boolean" + } + }, + "required": ["read", "write", "admin"], + "type": "object" + }, + "private": { + "description": "Whether the project is private or not. Only present when owner is an organization.", + "type": "boolean" + }, + "state": { + "type": "string" + }, + "updated_at": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "required": [ + "owner_url", + "url", + "html_url", + "columns_url", + "id", + "node_id", + "name", + "body", + "number", + "state", + "creator", + "created_at", + "updated_at", + "permissions" + ], + "title": "Team Project", + "type": "object" + } + } + } + }, + "insertionIndex": 1037 + }, + { + "id": "0ccd5ef2-971b-414b-a8b8-25eed891d720", + "name": "Remove a project from a team - 204", + "request": { + "urlPath": "/orgs/d07wc873mvjj1n0jcvzn9yirdh6fp7nrpozrxp9c864vkk8ax2gxav2a9byakwm044f7r88zjzs/teams/spnxs5ydjqggl5e29om7bsudb7cb7uza97n1b0j4swplwb82b2qjepklj1rhxug799hz8onh4r8d1wn222ygx6fluez9zrhek90biqvd5suh5e2d115146huq0n15wkvplk12l78mrp7fr64in3lmhkv05ve4it/projects/8529253272500545095", + "method": "DELETE" + }, + "response": { + "status": 204 + }, + "uuid": "0ccd5ef2-971b-414b-a8b8-25eed891d720", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.802082Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "teams/remove-project-in-org" + } + } + }, + "insertionIndex": 1038 + }, + { + "id": "2b6a4f6c-f7ef-4b58-9d70-2732efe87910", + "name": "List team projects - default", + "request": { + "urlPath": "/orgs/89hlap6zbjefhi8zz89wck5xke3fcpf7496gxfcnd7ld01k4bwgisz60t0e7sbclspiuvg6t7g07cbuc7sq2e9uac54lg6g7a4us8u0l9pdykzeqhyy384plprlxx14bneel1p8v2mvlgnbkzaj9sqijsotolpjj37e5533rnvyogglc5/teams/gj2ou2y8lx2wmsxetth7bo5q6echlixqs0ypckiajelbycil8rcg4kc887wqsj9geuqawywepxr7xayu793ywmz6ipl9hyy6v9omupg49n3zw4lzen9uu6tlu8h8bl4aptoqkvi0l7h8mbnvdov7sjbgm6aknifvlfouj15eztxqggkas042mftv8/projects", + "method": "GET" + }, + "response": { + "status": 200, + "body": "[ {\n \"body\" : \"High-level roadmap for the upcoming year.\",\n \"columns_url\" : \"https://api.github.com/projects/1002605/columns\",\n \"created_at\" : \"2011-04-11T20:09:31Z\",\n \"creator\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"html_url\" : \"https://github.com/orgs/api-playground/projects/1\",\n \"id\" : 1002605,\n \"name\" : \"Organization Roadmap\",\n \"node_id\" : \"MDc6UHJvamVjdDEwMDI2MDU=\",\n \"number\" : 1,\n \"organization_permission\" : \"write\",\n \"owner_url\" : \"https://api.github.com/orgs/octocat\",\n \"permissions\" : {\n \"admin\" : false,\n \"read\" : true,\n \"write\" : true\n },\n \"private\" : false,\n \"state\" : \"open\",\n \"updated_at\" : \"2014-03-04T18:58:10Z\",\n \"url\" : \"https://api.github.com/projects/1002605\"\n} ]", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "2b6a4f6c-f7ef-4b58-9d70-2732efe87910", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.802038Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "teams/list-projects-in-org", + "schema": { + "items": { + "$ref": "#/components/schemas/team-project" + }, + "type": "array" + } + } + } + }, + "insertionIndex": 1039 + }, + { + "id": "5d6bdf8b-5190-4fbc-a011-5c08587ec870", + "name": "Add or update team membership for a user - 422", + "request": { + "urlPath": "/orgs/e5l97wnlfl2osslqh76hd5x80owk98hjhx78oyvqh1ahpyh7956gd1bo3b8e0ltylu658awx6o/teams/u7xrria94xpa03cjp8o7nzrtpbhhnr4y1jraxvnicbiettc5f8r26a2um1aeczek2fpmq/memberships/adrian.prosacco", + "method": "PUT" + }, + "response": { + "status": 422 + }, + "uuid": "5d6bdf8b-5190-4fbc-a011-5c08587ec870", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.80197Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "teams/add-or-update-membership-for-user-in-org" + } + } + }, + "insertionIndex": 1040 + }, + { + "id": "af962b7d-8b15-4dc2-805c-d6a71fa40040", + "name": "Add or update team membership for a user - 403", + "request": { + "urlPath": "/orgs/0ggiohlf2u0lnn56n97gtky40ndxf53vj7r1nsg3jwswy65ful61huxlk05wppr0a9z4iy41tzicb/teams/l53uf8jf6ndydwa85ripjeemwrdbyqdrohht55j5zfjsgp2d3gp87zrlk627b5a7sfn9pv05i2e3w7k1fdmaen5snytu3fqolfkxdh94jwubyr7cdy9hl1i8m3f4kp/memberships/ammie.jakubowski", + "method": "PUT" + }, + "response": { + "status": 403 + }, + "uuid": "af962b7d-8b15-4dc2-805c-d6a71fa40040", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.801917Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "teams/add-or-update-membership-for-user-in-org" + } + } + }, + "insertionIndex": 1041 + }, + { + "id": "5f0d6829-253b-4f7b-94ae-ca0dc7222d9f", + "name": "Add or update team membership for a user (application/json) - response-if-users-membership-with-team-is-now-pending", + "request": { + "urlPath": "/orgs/lyf8svw5x9l4h9pa4etd1c4xqv533h5qcxinwxl7zj9etg1itlczg0tcyk9qqwlqjmhtcfniyn2ahgz87h9ghu9e8t5tovm6i850jmeowq962avmrkhq0mozkn0edgadn56hycuvn0p4khtz76zj8sqx392w5l7r4q77970fnt/teams/ih3glo8gtb583pfk2v5ep69gus2k5n8o7po2uc4u9p/memberships/tambra.kilback", + "method": "PUT", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 200, + "body": "{\n \"role\" : \"member\",\n \"state\" : \"pending\",\n \"url\" : \"https://api.github.com/teams/1/memberships/octocat\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "5f0d6829-253b-4f7b-94ae-ca0dc7222d9f", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.801852Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "teams/add-or-update-membership-for-user-in-org", + "schema": { + "description": "Team Membership", + "properties": { + "role": { + "default": "member", + "description": "The role of the user in the team.", + "enum": ["member", "maintainer"], + "example": "member", + "type": "string" + }, + "state": { + "description": "The state of the user's membership in the team.", + "enum": ["active", "pending"], + "type": "string" + }, + "url": { + "format": "uri", + "type": "string" + } + }, + "required": ["role", "state", "url"], + "title": "Team Membership", + "type": "object" + } + } + } + }, + "insertionIndex": 1042 + }, + { + "id": "2e5ef55b-6e07-4b12-8559-5ce8a24cd366", + "name": "Get team membership for a user - 404", + "request": { + "urlPath": "/orgs/p672ex0efjat6l72kwdhud05cwpxv3k9za3ftbbnqcslnnnm5scy76awoctnfiz2xlokgj9qy4ha6b1opyps6y0nm13rq5j3byvvottusgcijqr1n8nib96u4scx1oc49akqpjqsno/teams/av63tpuh/memberships/sid.luettgen", + "method": "GET" + }, + "response": { + "status": 404 + }, + "uuid": "2e5ef55b-6e07-4b12-8559-5ce8a24cd366", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.801758Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "teams/get-membership-for-user-in-org" + } + } + }, + "insertionIndex": 1043 + }, + { + "id": "2b6b7ee6-8967-4b74-9a45-ba95ad52213b", + "name": "Get team membership for a user (application/json) - response-if-user-is-a-team-maintainer", + "request": { + "urlPath": "/orgs/vlxm2hu3wdbo02zktbrbdi1cb6b8zozttp5f6epvrn4my650z3nizparx0ri76ytgq7944la42g4szl4jxgs37d2u5hcg98t3a4h92um6ns3u7z2leymf78pm2cmc2vfe8oadiol9c7l0gs4e1c0c3vcayc9dg25thad86rp6gmmejakumnt6lgjxdf5/teams/h2hgjtwwh2tkzgqffmdzkghewferqogw6piyefjfheiteckfsjzdpl9hmoesywjtroxsyymg6ufrd/memberships/maya.bernier", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 200, + "body": "{\n \"role\" : \"maintainer\",\n \"state\" : \"active\",\n \"url\" : \"https://api.github.com/teams/1/memberships/octocat\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "2b6b7ee6-8967-4b74-9a45-ba95ad52213b", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.801694Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "teams/get-membership-for-user-in-org", + "schema": { + "description": "Team Membership", + "properties": { + "role": { + "default": "member", + "description": "The role of the user in the team.", + "enum": ["member", "maintainer"], + "example": "member", + "type": "string" + }, + "state": { + "description": "The state of the user's membership in the team.", + "enum": ["active", "pending"], + "type": "string" + }, + "url": { + "format": "uri", + "type": "string" + } + }, + "required": ["role", "state", "url"], + "title": "Team Membership", + "type": "object" + } + } + } + }, + "insertionIndex": 1044 + }, + { + "id": "d778c7d3-d043-42f0-9230-ea5fb8faa144", + "name": "Remove team membership for a user - 403", + "request": { + "urlPath": "/orgs/3p3uc6vgnxe0g77980kqvuvyu5cck8jysxuq44abh4n84a5ahchtnbtp4e9gzab7ru26iw31vz5d20wtz40xbkktnwhvpu5k1iy5svg4hhxz6nq8mxzo52vcgjdcn7trpscrvlw3yr/teams/0p4kyn95uotkh4ug1u918sd174o4rkc4j82oo0ld6tqj9u5zhpz2ycfifpokplndl86i4bl4zwqyv716dnqakzun52/memberships/odilia.strosin", + "method": "DELETE" + }, + "response": { + "status": 403 + }, + "uuid": "d778c7d3-d043-42f0-9230-ea5fb8faa144", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.801586Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "teams/remove-membership-for-user-in-org" + } + } + }, + "insertionIndex": 1045 + }, + { + "id": "42731695-4d84-4792-ad15-9283e8641dce", + "name": "Remove team membership for a user - 204", + "request": { + "urlPath": "/orgs/qf7w3mwm6l9rojof7g40nsruwyyi6rhh0hjo0cbgjsrz1si2zuxn98nqo495lqlw8am3f7dcr709t15nw73om0wbh16r4ln9qnwzgdiiezdk4x3xj12zg56kuxkrrif0koguq9/teams/69qtm39eob1a37ql4lqhs91r9rzj9vr12b0u4lkspaszaeqqw5qmirwx3yoqkusszu7avwn0ottovh5ov7tzbiqqg7lqwup7d0/memberships/foster.quitzon", + "method": "DELETE" + }, + "response": { + "status": 204 + }, + "uuid": "42731695-4d84-4792-ad15-9283e8641dce", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.801528Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "teams/remove-membership-for-user-in-org" + } + } + }, + "insertionIndex": 1046 + }, + { + "id": "d4a683c1-f9e8-4b79-b6c2-659aacbe744f", + "name": "List team members - default", + "request": { + "urlPath": "/orgs/4wtm03khap6ot0bcsgj1ewrgq05u9sa2icxl6aulck8vrzktqn8w9udnsjun1rteyyr7gcwfq8du4nsl1et17ia2z8glrcd4tnkzvu48bsqgmr1h4qz1gjexfz44mkpjlk4hi71zjr/teams/zyc4y7kkeqv5n99c3mlhzahjaitt9iyahp4rpb90rym8yfrje4b0nd7ctrbmp5hceqdqbp9idt89tws6/members", + "method": "GET" + }, + "response": { + "status": 200, + "body": "[ {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n} ]", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "d4a683c1-f9e8-4b79-b6c2-659aacbe744f", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.801434Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "teams/list-members-in-org", + "schema": { + "items": { + "$ref": "#/components/schemas/simple-user" + }, + "type": "array" + } + } + } + }, + "insertionIndex": 1047 + }, + { + "id": "4ee98aee-b070-4f8f-a680-92ff62afbd0d", + "name": "Delete team discussion reaction - 204", + "request": { + "urlPath": "/orgs/7jbzi2eb8cz1oe3y8pdws2gz5k8wzr3v0t20o9a236pbldyxez2n1iso3hs4j03w4zv5r8za93nj9xqql5z4vku1g58xchbmn3uz0mc01q754ijtxd4zpw6wfj5ol7m0ib/teams/4bkw4f1bjdl41ejml060mmvgo7vjpabijnoskkq197gg9wd0hzye68gfr3bzlaizeiez83kx3tqga85dwj2o89p9ys8dh/discussions/6232133105550260701/reactions/2501892023254819941", + "method": "DELETE" + }, + "response": { + "status": 204 + }, + "uuid": "4ee98aee-b070-4f8f-a680-92ff62afbd0d", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.801373Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "reactions/delete-for-team-discussion" + } + } + }, + "insertionIndex": 1048 + }, + { + "id": "b3452366-c77d-4737-a97a-836273b85e48", + "name": "Create reaction for a team discussion - default", + "request": { + "urlPath": "/orgs/p8owrq3m0ol5watdbnp9pocbwzq011f84uldmlwpca65az8puvsbwwrnrdrpqg69wtrdd6berz3tufxdwqx9djr3qiqgtuvh19kvhcw30et0imitahzormel6gs5r65ugb1/teams/ohbkbndsapzcwng1hg1tdu9rdkh15lwqlun7fol8nr30v0flgee6t1w3rcwry8eykuiv4up1brix7rf6vvzlzrql54wwiou9t8yup1iy10c6o450m2w98w26ow1kp3es7648a9q7hjpxa2gkh8lwywl9wn7qgqdqv08nzqw097xk57s5fc5k3vi20t/discussions/7725270015857524913/reactions", + "method": "POST" + }, + "response": { + "status": 201, + "body": "{\n \"content\" : \"heart\",\n \"created_at\" : \"2016-05-20T20:09:31Z\",\n \"id\" : 1,\n \"node_id\" : \"MDg6UmVhY3Rpb24x\",\n \"user\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n }\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "b3452366-c77d-4737-a97a-836273b85e48", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.801327Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "reactions/create-for-team-discussion-in-org", + "schema": { + "description": "Reactions to conversations provide a way to help people express their feelings more simply and effectively.", + "properties": { + "content": { + "description": "The reaction to use", + "enum": ["+1", "-1", "laugh", "confused", "heart", "hooray", "rocket", "eyes"], + "example": "heart", + "type": "string" + }, + "created_at": { + "example": "2016-05-20T20:09:31Z", + "format": "date-time", + "type": "string" + }, + "id": { + "example": 1, + "type": "integer" + }, + "node_id": { + "example": "MDg6UmVhY3Rpb24x", + "type": "string" + }, + "user": { + "$ref": "#/components/schemas/nullable-simple-user" + } + }, + "required": ["id", "node_id", "user", "content", "created_at"], + "title": "Reaction", + "type": "object" + } + } + } + }, + "insertionIndex": 1049 + }, + { + "id": "f9b214cc-232b-458e-ab9e-8fd5286f07d0", + "name": "Create reaction for a team discussion - default", + "request": { + "urlPath": "/orgs/v0p6fvgknu85vg3gk38wwwf0tsa2y7r8j2xnx2no1tgm7kivpm2mu9kt1vgihkg6yru7z7affppn4fu07raxh67e24917akcbovbw96vhgk4o97s59s6t6cmpn6vox4rw43mxta6ng3mxtar4j8/teams/o4ijjtt3jja264jt7ec76uocftvo89028/discussions/7761198142396526793/reactions", + "method": "POST" + }, + "response": { + "status": 200, + "body": "{\n \"content\" : \"heart\",\n \"created_at\" : \"2016-05-20T20:09:31Z\",\n \"id\" : 1,\n \"node_id\" : \"MDg6UmVhY3Rpb24x\",\n \"user\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n }\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "f9b214cc-232b-458e-ab9e-8fd5286f07d0", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.801244Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "reactions/create-for-team-discussion-in-org", + "schema": { + "description": "Reactions to conversations provide a way to help people express their feelings more simply and effectively.", + "properties": { + "content": { + "description": "The reaction to use", + "enum": ["+1", "-1", "laugh", "confused", "heart", "hooray", "rocket", "eyes"], + "example": "heart", + "type": "string" + }, + "created_at": { + "example": "2016-05-20T20:09:31Z", + "format": "date-time", + "type": "string" + }, + "id": { + "example": 1, + "type": "integer" + }, + "node_id": { + "example": "MDg6UmVhY3Rpb24x", + "type": "string" + }, + "user": { + "$ref": "#/components/schemas/nullable-simple-user" + } + }, + "required": ["id", "node_id", "user", "content", "created_at"], + "title": "Reaction", + "type": "object" + } + } + } + }, + "insertionIndex": 1050 + }, + { + "id": "0bb68b33-d459-49c0-8317-21c4e2890d8a", + "name": "List reactions for a team discussion - default", + "request": { + "urlPath": "/orgs/0080y28v3th1c6mzaqsw6joehqy2g1vu3115t4ncts8d4k9s70c9/teams/xf5uuxag6/discussions/675145892290153279/reactions", + "method": "GET" + }, + "response": { + "status": 200, + "body": "[ {\n \"content\" : \"heart\",\n \"created_at\" : \"2016-05-20T20:09:31Z\",\n \"id\" : 1,\n \"node_id\" : \"MDg6UmVhY3Rpb24x\",\n \"user\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n }\n} ]", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "0bb68b33-d459-49c0-8317-21c4e2890d8a", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.80116Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "reactions/list-for-team-discussion-in-org", + "schema": { + "items": { + "$ref": "#/components/schemas/reaction" + }, + "type": "array" + } + } + } + }, + "insertionIndex": 1051 + }, + { + "id": "cc31dedb-0337-4c0a-8518-493656df92dc", + "name": "Delete team discussion comment reaction - 204", + "request": { + "urlPath": "/orgs/vlojkkkx4009wnkke4v9ke9wb8am08qkhil25wa7dc7m2inr4sk76diahuas8ws74n3g162tt9wm40x93vxtdwz6gvqblpjsnbi4zjkb4nwqumrkivxzkfgw9/teams/0ape8gkoqlgr46noaaupf9q2pxp2ipxvfzx75t38sszych99g5mg5ht4nvl9wljnpwatjwjg7j4i5vhyoyhdyp73kh08tae1c1cu0qxbnsj8bl0qqdbwam5bcxkux2yhynvgaz8g4lwc7z1jhuk2bonv3drodqefwxfzla59d8bkgc1f3poufaws083xot6iu/discussions/3991464890685094584/comments/7846333394919212348/reactions/7798637627376597633", + "method": "DELETE" + }, + "response": { + "status": 204 + }, + "uuid": "cc31dedb-0337-4c0a-8518-493656df92dc", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.801105Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "reactions/delete-for-team-discussion-comment" + } + } + }, + "insertionIndex": 1052 + }, + { + "id": "802e3db2-dc36-4e80-9ba8-4b35750c55e4", + "name": "Create reaction for a team discussion comment - default", + "request": { + "urlPath": "/orgs/xv8150be3epgt1zkwyxiqdblursh7pyws6903r0of5ll1fu0rrsqec1xpjrtqib2jdk9rcbuvi0y1d8b5mvyk036p9un0h4qr445jzxdm76yxaujtiqam4promnm36vbjjey2d4kgha1hb381p5i6hjas2gexc/teams/ctqs94o1zlmq61z5v3968g34g7v681t9bttpbiam/discussions/705692322351601655/comments/7749762304537133266/reactions", + "method": "POST" + }, + "response": { + "status": 201, + "body": "{\n \"content\" : \"heart\",\n \"created_at\" : \"2016-05-20T20:09:31Z\",\n \"id\" : 1,\n \"node_id\" : \"MDg6UmVhY3Rpb24x\",\n \"user\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n }\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "802e3db2-dc36-4e80-9ba8-4b35750c55e4", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.801052Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "reactions/create-for-team-discussion-comment-in-org", + "schema": { + "description": "Reactions to conversations provide a way to help people express their feelings more simply and effectively.", + "properties": { + "content": { + "description": "The reaction to use", + "enum": ["+1", "-1", "laugh", "confused", "heart", "hooray", "rocket", "eyes"], + "example": "heart", + "type": "string" + }, + "created_at": { + "example": "2016-05-20T20:09:31Z", + "format": "date-time", + "type": "string" + }, + "id": { + "example": 1, + "type": "integer" + }, + "node_id": { + "example": "MDg6UmVhY3Rpb24x", + "type": "string" + }, + "user": { + "$ref": "#/components/schemas/nullable-simple-user" + } + }, + "required": ["id", "node_id", "user", "content", "created_at"], + "title": "Reaction", + "type": "object" + } + } + } + }, + "insertionIndex": 1053 + }, + { + "id": "65380e95-ecf6-4e99-89d0-60c221c7c802", + "name": "Create reaction for a team discussion comment - default", + "request": { + "urlPath": "/orgs/mfxjvex6dtnvqns4vvgo1fbe8327tqd649ovr9j9b4bd953no5fgxqhz3aydzlnglkh3l2nckdspqadlxjsapy2m0a0r5haa8tap89zx654alzdoc85wcprpff35av94y05ngqtvqf4pzu0rud8wy9s8b417sp4nnb3i9x9bb/teams/gcx3nfgjflb1qde04hqagn7zj1ea3lloi7u29h1p8ql1ouqvcmkhz71oay1sujblcb/discussions/1039341329231501185/comments/532141904109777067/reactions", + "method": "POST" + }, + "response": { + "status": 200, + "body": "{\n \"content\" : \"heart\",\n \"created_at\" : \"2016-05-20T20:09:31Z\",\n \"id\" : 1,\n \"node_id\" : \"MDg6UmVhY3Rpb24x\",\n \"user\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n }\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "65380e95-ecf6-4e99-89d0-60c221c7c802", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.80097Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "reactions/create-for-team-discussion-comment-in-org", + "schema": { + "description": "Reactions to conversations provide a way to help people express their feelings more simply and effectively.", + "properties": { + "content": { + "description": "The reaction to use", + "enum": ["+1", "-1", "laugh", "confused", "heart", "hooray", "rocket", "eyes"], + "example": "heart", + "type": "string" + }, + "created_at": { + "example": "2016-05-20T20:09:31Z", + "format": "date-time", + "type": "string" + }, + "id": { + "example": 1, + "type": "integer" + }, + "node_id": { + "example": "MDg6UmVhY3Rpb24x", + "type": "string" + }, + "user": { + "$ref": "#/components/schemas/nullable-simple-user" + } + }, + "required": ["id", "node_id", "user", "content", "created_at"], + "title": "Reaction", + "type": "object" + } + } + } + }, + "insertionIndex": 1054 + }, + { + "id": "9280b314-665a-4068-894c-8e35df0e6ddc", + "name": "List reactions for a team discussion comment - default", + "request": { + "urlPath": "/orgs/ssjs1d5vwtlh2ttllb9aufumj9yq64khwhmtms45aozxmmm8xe5ovyfdgipbkitqmgtovswm68a1jxpfpt0qt1s51ftad07p5vkuzivetnhv0wfnofo41ca6uopekczyaomecec9moaa7hxer0trv2zkcefof4bxvz858kffxrbc7lpqtlcbvstb2wofdw56v25u5/teams/fz75lq0ywdkw0/discussions/556594828500000552/comments/1371509401125449634/reactions", + "method": "GET" + }, + "response": { + "status": 200, + "body": "[ {\n \"content\" : \"heart\",\n \"created_at\" : \"2016-05-20T20:09:31Z\",\n \"id\" : 1,\n \"node_id\" : \"MDg6UmVhY3Rpb24x\",\n \"user\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n }\n} ]", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "9280b314-665a-4068-894c-8e35df0e6ddc", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.80086Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "reactions/list-for-team-discussion-comment-in-org", + "schema": { + "items": { + "$ref": "#/components/schemas/reaction" + }, + "type": "array" + } + } + } + }, + "insertionIndex": 1055 + }, + { + "id": "b7b2f71c-3047-42ea-b44b-745f879bf374", + "name": "Update a discussion comment - default", + "request": { + "urlPath": "/orgs/nnnh007i5gbq5hgro2n1qjl870zoqq8bc40u0hmqm7yax4ahitoxj4m7cylvhai5cemqvsqd755hgqujmo12wxl3v14suf8/teams/h367ue39wcsefp9zreci3gyl88bo2lpi5wkcsssov1pcsm44ajsn170u96zn57m5zeip4w3wv55wbaiq13curpx73116h61o5lmr8qgm2khn81iq1f1crnif0t8ssyjb4udi6l6d4xtebncp2bf9z5266saic36afpra9z9d2chspc1ivhm1e/discussions/7005341151706819163/comments/8220665683501334160", + "method": "PATCH" + }, + "response": { + "status": 200, + "body": "{\n \"author\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"body\" : \"Do you like pineapples?\",\n \"body_html\" : \"

Do you like pineapples?

\",\n \"body_version\" : \"e6907b24d9c93cc0c5024a7af5888116\",\n \"created_at\" : \"2018-01-15T23:53:58Z\",\n \"discussion_url\" : \"https://api.github.com/teams/2403582/discussions/1\",\n \"html_url\" : \"https://github.com/orgs/github/teams/justice-league/discussions/1/comments/1\",\n \"last_edited_at\" : \"2018-01-26T18:22:20Z\",\n \"node_id\" : \"MDIxOlRlYW1EaXNjdXNzaW9uQ29tbWVudDE=\",\n \"number\" : 1,\n \"reactions\" : {\n \"+1\" : 3,\n \"-1\" : 1,\n \"confused\" : 0,\n \"eyes\" : 1,\n \"heart\" : 1,\n \"hooray\" : 0,\n \"laugh\" : 0,\n \"rocket\" : 1,\n \"total_count\" : 5,\n \"url\" : \"https://api.github.com/teams/2403582/discussions/1/reactions\"\n },\n \"updated_at\" : \"2018-01-26T18:22:20Z\",\n \"url\" : \"https://api.github.com/teams/2403582/discussions/1/comments/1\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "b7b2f71c-3047-42ea-b44b-745f879bf374", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.800791Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "teams/update-discussion-comment-in-org", + "schema": { + "description": "A reply to a discussion within a team.", + "properties": { + "author": { + "$ref": "#/components/schemas/nullable-simple-user" + }, + "body": { + "description": "The main text of the comment.", + "example": "I agree with this suggestion.", + "type": "string" + }, + "body_html": { + "example": "

Do you like apples?

", + "type": "string" + }, + "body_version": { + "description": "The current version of the body content. If provided, this update operation will be rejected if the given version does not match the latest version on the server.", + "example": "0307116bbf7ced493b8d8a346c650b71", + "type": "string" + }, + "created_at": { + "example": "2018-01-15T23:53:58Z", + "format": "date-time", + "type": "string" + }, + "discussion_url": { + "example": "https://api.github.com/organizations/1/team/2403582/discussions/1", + "format": "uri", + "type": "string" + }, + "html_url": { + "example": "https://github.com/orgs/github/teams/justice-league/discussions/1/comments/1", + "format": "uri", + "type": "string" + }, + "last_edited_at": { + "format": "date-time", + "nullable": true, + "type": "string" + }, + "node_id": { + "example": "MDIxOlRlYW1EaXNjdXNzaW9uQ29tbWVudDE=", + "type": "string" + }, + "number": { + "description": "The unique sequence number of a team discussion comment.", + "example": 42, + "type": "integer" + }, + "reactions": { + "$ref": "#/components/schemas/reaction-rollup" + }, + "updated_at": { + "example": "2018-01-15T23:53:58Z", + "format": "date-time", + "type": "string" + }, + "url": { + "example": "https://api.github.com/organizations/1/team/2403582/discussions/1/comments/1", + "format": "uri", + "type": "string" + } + }, + "required": [ + "author", + "body", + "body_html", + "body_version", + "created_at", + "last_edited_at", + "discussion_url", + "html_url", + "node_id", + "number", + "updated_at", + "url" + ], + "title": "Team Discussion Comment", + "type": "object" + } + } + } + }, + "insertionIndex": 1056 + }, + { + "id": "b8dbfdff-ef16-4616-8fd2-b0303186a40f", + "name": "Get a discussion comment - default", + "request": { + "urlPath": "/orgs/diipie95jpxhhfi4dc175ujvg7f40qxrwhoqollvh2e0eu1zh1s3wifdjh/teams/pi3f4hg37tl5ow5m3dpnz0xkvb/discussions/3593712975459334074/comments/4844412346803867412", + "method": "GET" + }, + "response": { + "status": 200, + "body": "{\n \"author\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"body\" : \"Do you like apples?\",\n \"body_html\" : \"

Do you like apples?

\",\n \"body_version\" : \"5eb32b219cdc6a5a9b29ba5d6caa9c51\",\n \"created_at\" : \"2018-01-15T23:53:58Z\",\n \"discussion_url\" : \"https://api.github.com/teams/2403582/discussions/1\",\n \"html_url\" : \"https://github.com/orgs/github/teams/justice-league/discussions/1/comments/1\",\n \"node_id\" : \"MDIxOlRlYW1EaXNjdXNzaW9uQ29tbWVudDE=\",\n \"number\" : 1,\n \"reactions\" : {\n \"+1\" : 3,\n \"-1\" : 1,\n \"confused\" : 0,\n \"eyes\" : 1,\n \"heart\" : 1,\n \"hooray\" : 0,\n \"laugh\" : 0,\n \"rocket\" : 1,\n \"total_count\" : 5,\n \"url\" : \"https://api.github.com/teams/2403582/discussions/1/reactions\"\n },\n \"updated_at\" : \"2018-01-15T23:53:58Z\",\n \"url\" : \"https://api.github.com/teams/2403582/discussions/1/comments/1\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "b8dbfdff-ef16-4616-8fd2-b0303186a40f", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.800658Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "teams/get-discussion-comment-in-org", + "schema": { + "description": "A reply to a discussion within a team.", + "properties": { + "author": { + "$ref": "#/components/schemas/nullable-simple-user" + }, + "body": { + "description": "The main text of the comment.", + "example": "I agree with this suggestion.", + "type": "string" + }, + "body_html": { + "example": "

Do you like apples?

", + "type": "string" + }, + "body_version": { + "description": "The current version of the body content. If provided, this update operation will be rejected if the given version does not match the latest version on the server.", + "example": "0307116bbf7ced493b8d8a346c650b71", + "type": "string" + }, + "created_at": { + "example": "2018-01-15T23:53:58Z", + "format": "date-time", + "type": "string" + }, + "discussion_url": { + "example": "https://api.github.com/organizations/1/team/2403582/discussions/1", + "format": "uri", + "type": "string" + }, + "html_url": { + "example": "https://github.com/orgs/github/teams/justice-league/discussions/1/comments/1", + "format": "uri", + "type": "string" + }, + "last_edited_at": { + "format": "date-time", + "nullable": true, + "type": "string" + }, + "node_id": { + "example": "MDIxOlRlYW1EaXNjdXNzaW9uQ29tbWVudDE=", + "type": "string" + }, + "number": { + "description": "The unique sequence number of a team discussion comment.", + "example": 42, + "type": "integer" + }, + "reactions": { + "$ref": "#/components/schemas/reaction-rollup" + }, + "updated_at": { + "example": "2018-01-15T23:53:58Z", + "format": "date-time", + "type": "string" + }, + "url": { + "example": "https://api.github.com/organizations/1/team/2403582/discussions/1/comments/1", + "format": "uri", + "type": "string" + } + }, + "required": [ + "author", + "body", + "body_html", + "body_version", + "created_at", + "last_edited_at", + "discussion_url", + "html_url", + "node_id", + "number", + "updated_at", + "url" + ], + "title": "Team Discussion Comment", + "type": "object" + } + } + } + }, + "insertionIndex": 1057 + }, + { + "id": "972cdc13-d2a0-4797-9ca6-e8d35abe0b81", + "name": "Delete a discussion comment - 204", + "request": { + "urlPath": "/orgs/8l4ma0fst3h13md41bjbziypvhfpsr8mf7sccc087jb/teams/gxa21hswwhkpkret4ly86g9bcny8dhz6ma2ebhyiirfkzolopbi6xg6uxrdekcgi0tsflnw6idmmyp55itav2ay45b041cwac/discussions/1374991096326239504/comments/6191491614997849657", + "method": "DELETE" + }, + "response": { + "status": 204 + }, + "uuid": "972cdc13-d2a0-4797-9ca6-e8d35abe0b81", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.800535Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "teams/delete-discussion-comment-in-org" + } + } + }, + "insertionIndex": 1058 + }, + { + "id": "b3c4e44a-833b-40ba-8f12-d4a26cc76c4d", + "name": "Create a discussion comment - default", + "request": { + "urlPath": "/orgs/qvbtwo762gudh84eifcrgltpf2bnetpd4v6hf7hhy7yuuxqywp605yx8mlo2rs8hc98pkn0eue1hts/teams/t12wsqsk4a51xu7jc3ibjbwuroryp3kij0c/discussions/5583561615956755529/comments", + "method": "POST" + }, + "response": { + "status": 201, + "body": "{\n \"author\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"body\" : \"Do you like apples?\",\n \"body_html\" : \"

Do you like apples?

\",\n \"body_version\" : \"5eb32b219cdc6a5a9b29ba5d6caa9c51\",\n \"created_at\" : \"2018-01-15T23:53:58Z\",\n \"discussion_url\" : \"https://api.github.com/teams/2403582/discussions/1\",\n \"html_url\" : \"https://github.com/orgs/github/teams/justice-league/discussions/1/comments/1\",\n \"node_id\" : \"MDIxOlRlYW1EaXNjdXNzaW9uQ29tbWVudDE=\",\n \"number\" : 1,\n \"reactions\" : {\n \"+1\" : 3,\n \"-1\" : 1,\n \"confused\" : 0,\n \"eyes\" : 1,\n \"heart\" : 1,\n \"hooray\" : 0,\n \"laugh\" : 0,\n \"rocket\" : 1,\n \"total_count\" : 5,\n \"url\" : \"https://api.github.com/teams/2403582/discussions/1/reactions\"\n },\n \"updated_at\" : \"2018-01-15T23:53:58Z\",\n \"url\" : \"https://api.github.com/teams/2403582/discussions/1/comments/1\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "b3c4e44a-833b-40ba-8f12-d4a26cc76c4d", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.800485Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "teams/create-discussion-comment-in-org", + "schema": { + "description": "A reply to a discussion within a team.", + "properties": { + "author": { + "$ref": "#/components/schemas/nullable-simple-user" + }, + "body": { + "description": "The main text of the comment.", + "example": "I agree with this suggestion.", + "type": "string" + }, + "body_html": { + "example": "

Do you like apples?

", + "type": "string" + }, + "body_version": { + "description": "The current version of the body content. If provided, this update operation will be rejected if the given version does not match the latest version on the server.", + "example": "0307116bbf7ced493b8d8a346c650b71", + "type": "string" + }, + "created_at": { + "example": "2018-01-15T23:53:58Z", + "format": "date-time", + "type": "string" + }, + "discussion_url": { + "example": "https://api.github.com/organizations/1/team/2403582/discussions/1", + "format": "uri", + "type": "string" + }, + "html_url": { + "example": "https://github.com/orgs/github/teams/justice-league/discussions/1/comments/1", + "format": "uri", + "type": "string" + }, + "last_edited_at": { + "format": "date-time", + "nullable": true, + "type": "string" + }, + "node_id": { + "example": "MDIxOlRlYW1EaXNjdXNzaW9uQ29tbWVudDE=", + "type": "string" + }, + "number": { + "description": "The unique sequence number of a team discussion comment.", + "example": 42, + "type": "integer" + }, + "reactions": { + "$ref": "#/components/schemas/reaction-rollup" + }, + "updated_at": { + "example": "2018-01-15T23:53:58Z", + "format": "date-time", + "type": "string" + }, + "url": { + "example": "https://api.github.com/organizations/1/team/2403582/discussions/1/comments/1", + "format": "uri", + "type": "string" + } + }, + "required": [ + "author", + "body", + "body_html", + "body_version", + "created_at", + "last_edited_at", + "discussion_url", + "html_url", + "node_id", + "number", + "updated_at", + "url" + ], + "title": "Team Discussion Comment", + "type": "object" + } + } + } + }, + "insertionIndex": 1059 + }, + { + "id": "8465dcb7-3c0c-4981-aca9-a5cd1d4ff1d7", + "name": "List discussion comments - default", + "request": { + "urlPath": "/orgs/yonb8p8w9jqrjj8rxqqr9z0ypkjstu4f07cgtzn0x382ihez6cm9i5uy7oe18x2nxq0f41g9dgapshqgs53knpn823snbj2eydruwsbd1mckpumpgcewkv1rgxosahmr5pugiz3tlh3shmss4sa1kcaxgib0v2jg0sdmxfe4ahmcv6l7a70cwo3w2qwtkrhz1rq/teams/ygc4hfpmbyv8gruezjasetdbpgtwefp7g2q6c26k3eqe55whs0ae8j2024dilogho7msjdqx4qcp7a43zcm2oiu4mgxkif9c0xj4yhaf/discussions/5559090156320667946/comments", + "method": "GET" + }, + "response": { + "status": 200, + "body": "[ {\n \"author\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"body\" : \"Do you like apples?\",\n \"body_html\" : \"

Do you like apples?

\",\n \"body_version\" : \"5eb32b219cdc6a5a9b29ba5d6caa9c51\",\n \"created_at\" : \"2018-01-15T23:53:58Z\",\n \"discussion_url\" : \"https://api.github.com/teams/2403582/discussions/1\",\n \"html_url\" : \"https://github.com/orgs/github/teams/justice-league/discussions/1/comments/1\",\n \"node_id\" : \"MDIxOlRlYW1EaXNjdXNzaW9uQ29tbWVudDE=\",\n \"number\" : 1,\n \"reactions\" : {\n \"+1\" : 3,\n \"-1\" : 1,\n \"confused\" : 0,\n \"eyes\" : 1,\n \"heart\" : 1,\n \"hooray\" : 0,\n \"laugh\" : 0,\n \"rocket\" : 1,\n \"total_count\" : 5,\n \"url\" : \"https://api.github.com/teams/2403582/discussions/1/reactions\"\n },\n \"updated_at\" : \"2018-01-15T23:53:58Z\",\n \"url\" : \"https://api.github.com/teams/2403582/discussions/1/comments/1\"\n} ]", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "8465dcb7-3c0c-4981-aca9-a5cd1d4ff1d7", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.800304Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "teams/list-discussion-comments-in-org", + "schema": { + "items": { + "$ref": "#/components/schemas/team-discussion-comment" + }, + "type": "array" + } + } + } + }, + "insertionIndex": 1060 + }, + { + "id": "40b0a8cc-fd08-4651-a52a-3781b7731828", + "name": "Update a discussion - default", + "request": { + "urlPath": "/orgs/thp6p74l04xgnhc8xkaln6epmojk8rjenx40uey1epbsck7vangsnz94l028ixdwfk/teams/6nadbjk9ed3z6mslkmaj25pe9gnl6t5uv7erzfbg7gb9x9ehnlab4ip60i609qmkaln40t1qwv979xjzzkow9zehw6kug6tes5o6qeeplol2/discussions/7623360360356713739", + "method": "PATCH" + }, + "response": { + "status": 200, + "body": "{\n \"author\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"body\" : \"Hi! This is an area for us to collaborate as a team.\",\n \"body_html\" : \"

Hi! This is an area for us to collaborate as a team

\",\n \"body_version\" : \"0d495416a700fb06133c612575d92bfb\",\n \"comments_count\" : 1,\n \"comments_url\" : \"https://api.github.com/teams/2343027/discussions/1/comments\",\n \"created_at\" : \"2018-01-25T18:56:31Z\",\n \"html_url\" : \"https://github.com/orgs/github/teams/justice-league/discussions/1\",\n \"last_edited_at\" : \"2018-01-26T18:22:20Z\",\n \"node_id\" : \"MDE0OlRlYW1EaXNjdXNzaW9uMQ==\",\n \"number\" : 1,\n \"pinned\" : false,\n \"private\" : false,\n \"reactions\" : {\n \"+1\" : 3,\n \"-1\" : 1,\n \"confused\" : 0,\n \"eyes\" : 1,\n \"heart\" : 1,\n \"hooray\" : 0,\n \"laugh\" : 0,\n \"rocket\" : 1,\n \"total_count\" : 5,\n \"url\" : \"https://api.github.com/teams/2343027/discussions/1/reactions\"\n },\n \"team_url\" : \"https://api.github.com/teams/2343027\",\n \"title\" : \"Welcome to our first team post\",\n \"updated_at\" : \"2018-01-26T18:22:20Z\",\n \"url\" : \"https://api.github.com/teams/2343027/discussions/1\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "40b0a8cc-fd08-4651-a52a-3781b7731828", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.800229Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "teams/update-discussion-in-org", + "schema": { + "description": "A team discussion is a persistent record of a free-form conversation within a team.", + "properties": { + "author": { + "$ref": "#/components/schemas/nullable-simple-user" + }, + "body": { + "description": "The main text of the discussion.", + "example": "Please suggest improvements to our workflow in comments.", + "type": "string" + }, + "body_html": { + "example": "

Hi! This is an area for us to collaborate as a team

", + "type": "string" + }, + "body_version": { + "description": "The current version of the body content. If provided, this update operation will be rejected if the given version does not match the latest version on the server.", + "example": "0307116bbf7ced493b8d8a346c650b71", + "type": "string" + }, + "comments_count": { + "example": 0, + "type": "integer" + }, + "comments_url": { + "example": "https://api.github.com/organizations/1/team/2343027/discussions/1/comments", + "format": "uri", + "type": "string" + }, + "created_at": { + "example": "2018-01-25T18:56:31Z", + "format": "date-time", + "type": "string" + }, + "html_url": { + "example": "https://github.com/orgs/github/teams/justice-league/discussions/1", + "format": "uri", + "type": "string" + }, + "last_edited_at": { + "format": "date-time", + "nullable": true, + "type": "string" + }, + "node_id": { + "example": "MDE0OlRlYW1EaXNjdXNzaW9uMQ==", + "type": "string" + }, + "number": { + "description": "The unique sequence number of a team discussion.", + "example": 42, + "type": "integer" + }, + "pinned": { + "description": "Whether or not this discussion should be pinned for easy retrieval.", + "example": true, + "type": "boolean" + }, + "private": { + "description": "Whether or not this discussion should be restricted to team members and organization administrators.", + "example": true, + "type": "boolean" + }, + "reactions": { + "$ref": "#/components/schemas/reaction-rollup" + }, + "team_url": { + "example": "https://api.github.com/organizations/1/team/2343027", + "format": "uri", + "type": "string" + }, + "title": { + "description": "The title of the discussion.", + "example": "How can we improve our workflow?", + "type": "string" + }, + "updated_at": { + "example": "2018-01-25T18:56:31Z", + "format": "date-time", + "type": "string" + }, + "url": { + "example": "https://api.github.com/organizations/1/team/2343027/discussions/1", + "format": "uri", + "type": "string" + } + }, + "required": [ + "author", + "body", + "body_html", + "body_version", + "comments_count", + "comments_url", + "created_at", + "last_edited_at", + "html_url", + "pinned", + "private", + "node_id", + "number", + "team_url", + "title", + "updated_at", + "url" + ], + "title": "Team Discussion", + "type": "object" + } + } + } + }, + "insertionIndex": 1061 + }, + { + "id": "14075db4-6979-4616-ac5c-7b76ff1b3660", + "name": "Get a discussion - default", + "request": { + "urlPath": "/orgs/le7p079f5zf5zdayi0th82m06gt8m3r0zh5cw9nfexcwthkmn9ejq07vcp3jtcbsgx/teams/8ugu72m714fc5s6xleo35d3oixde68f8v6qzb1930gtmmg/discussions/3687345735635862168", + "method": "GET" + }, + "response": { + "status": 200, + "body": "{\n \"author\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"body\" : \"Hi! This is an area for us to collaborate as a team.\",\n \"body_html\" : \"

Hi! This is an area for us to collaborate as a team

\",\n \"body_version\" : \"0d495416a700fb06133c612575d92bfb\",\n \"comments_count\" : 0,\n \"comments_url\" : \"https://api.github.com/teams/2343027/discussions/1/comments\",\n \"created_at\" : \"2018-01-25T18:56:31Z\",\n \"html_url\" : \"https://github.com/orgs/github/teams/justice-league/discussions/1\",\n \"node_id\" : \"MDE0OlRlYW1EaXNjdXNzaW9uMQ==\",\n \"number\" : 1,\n \"pinned\" : false,\n \"private\" : false,\n \"reactions\" : {\n \"+1\" : 3,\n \"-1\" : 1,\n \"confused\" : 0,\n \"eyes\" : 1,\n \"heart\" : 1,\n \"hooray\" : 0,\n \"laugh\" : 0,\n \"rocket\" : 1,\n \"total_count\" : 5,\n \"url\" : \"https://api.github.com/teams/2343027/discussions/1/reactions\"\n },\n \"team_url\" : \"https://api.github.com/teams/2343027\",\n \"title\" : \"Our first team post\",\n \"updated_at\" : \"2018-01-25T18:56:31Z\",\n \"url\" : \"https://api.github.com/teams/2343027/discussions/1\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "14075db4-6979-4616-ac5c-7b76ff1b3660", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.80006Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "teams/get-discussion-in-org", + "schema": { + "description": "A team discussion is a persistent record of a free-form conversation within a team.", + "properties": { + "author": { + "$ref": "#/components/schemas/nullable-simple-user" + }, + "body": { + "description": "The main text of the discussion.", + "example": "Please suggest improvements to our workflow in comments.", + "type": "string" + }, + "body_html": { + "example": "

Hi! This is an area for us to collaborate as a team

", + "type": "string" + }, + "body_version": { + "description": "The current version of the body content. If provided, this update operation will be rejected if the given version does not match the latest version on the server.", + "example": "0307116bbf7ced493b8d8a346c650b71", + "type": "string" + }, + "comments_count": { + "example": 0, + "type": "integer" + }, + "comments_url": { + "example": "https://api.github.com/organizations/1/team/2343027/discussions/1/comments", + "format": "uri", + "type": "string" + }, + "created_at": { + "example": "2018-01-25T18:56:31Z", + "format": "date-time", + "type": "string" + }, + "html_url": { + "example": "https://github.com/orgs/github/teams/justice-league/discussions/1", + "format": "uri", + "type": "string" + }, + "last_edited_at": { + "format": "date-time", + "nullable": true, + "type": "string" + }, + "node_id": { + "example": "MDE0OlRlYW1EaXNjdXNzaW9uMQ==", + "type": "string" + }, + "number": { + "description": "The unique sequence number of a team discussion.", + "example": 42, + "type": "integer" + }, + "pinned": { + "description": "Whether or not this discussion should be pinned for easy retrieval.", + "example": true, + "type": "boolean" + }, + "private": { + "description": "Whether or not this discussion should be restricted to team members and organization administrators.", + "example": true, + "type": "boolean" + }, + "reactions": { + "$ref": "#/components/schemas/reaction-rollup" + }, + "team_url": { + "example": "https://api.github.com/organizations/1/team/2343027", + "format": "uri", + "type": "string" + }, + "title": { + "description": "The title of the discussion.", + "example": "How can we improve our workflow?", + "type": "string" + }, + "updated_at": { + "example": "2018-01-25T18:56:31Z", + "format": "date-time", + "type": "string" + }, + "url": { + "example": "https://api.github.com/organizations/1/team/2343027/discussions/1", + "format": "uri", + "type": "string" + } + }, + "required": [ + "author", + "body", + "body_html", + "body_version", + "comments_count", + "comments_url", + "created_at", + "last_edited_at", + "html_url", + "pinned", + "private", + "node_id", + "number", + "team_url", + "title", + "updated_at", + "url" + ], + "title": "Team Discussion", + "type": "object" + } + } + } + }, + "insertionIndex": 1062 + }, + { + "id": "000db347-62f3-4d48-acd1-f86120a9f635", + "name": "Delete a discussion - 204", + "request": { + "urlPath": "/orgs/475c3kk8lifd46a6/teams/p2cndbnvtzxsepch7r0bymavt0v/discussions/8736428896298846230", + "method": "DELETE" + }, + "response": { + "status": 204 + }, + "uuid": "000db347-62f3-4d48-acd1-f86120a9f635", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.799912Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "teams/delete-discussion-in-org" + } + } + }, + "insertionIndex": 1063 + }, + { + "id": "e343e6f9-a2f9-4d44-92d1-a513bed5e8b5", + "name": "Create a discussion - default", + "request": { + "urlPath": "/orgs/24xx270bbb06mn9jduekua0xkcf7ep4vyimul/teams/3vbmgn6vc3uyoivg4l475hsn82dzcqwpd1tmtjc5g85kftsspka5jyeh6ozogv72fh4oeeadulzo84z7mf04fnxc9cqwelh0f4tkunpua4vup3qp2hdh0/discussions", + "method": "POST" + }, + "response": { + "status": 201, + "body": "{\n \"author\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"body\" : \"Hi! This is an area for us to collaborate as a team.\",\n \"body_html\" : \"

Hi! This is an area for us to collaborate as a team

\",\n \"body_version\" : \"0d495416a700fb06133c612575d92bfb\",\n \"comments_count\" : 0,\n \"comments_url\" : \"https://api.github.com/teams/2343027/discussions/1/comments\",\n \"created_at\" : \"2018-01-25T18:56:31Z\",\n \"html_url\" : \"https://github.com/orgs/github/teams/justice-league/discussions/1\",\n \"node_id\" : \"MDE0OlRlYW1EaXNjdXNzaW9uMQ==\",\n \"number\" : 1,\n \"pinned\" : false,\n \"private\" : false,\n \"reactions\" : {\n \"+1\" : 3,\n \"-1\" : 1,\n \"confused\" : 0,\n \"eyes\" : 1,\n \"heart\" : 1,\n \"hooray\" : 0,\n \"laugh\" : 0,\n \"rocket\" : 1,\n \"total_count\" : 5,\n \"url\" : \"https://api.github.com/teams/2343027/discussions/1/reactions\"\n },\n \"team_url\" : \"https://api.github.com/teams/2343027\",\n \"title\" : \"Our first team post\",\n \"updated_at\" : \"2018-01-25T18:56:31Z\",\n \"url\" : \"https://api.github.com/teams/2343027/discussions/1\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "e343e6f9-a2f9-4d44-92d1-a513bed5e8b5", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.799862Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "teams/create-discussion-in-org", + "schema": { + "description": "A team discussion is a persistent record of a free-form conversation within a team.", + "properties": { + "author": { + "$ref": "#/components/schemas/nullable-simple-user" + }, + "body": { + "description": "The main text of the discussion.", + "example": "Please suggest improvements to our workflow in comments.", + "type": "string" + }, + "body_html": { + "example": "

Hi! This is an area for us to collaborate as a team

", + "type": "string" + }, + "body_version": { + "description": "The current version of the body content. If provided, this update operation will be rejected if the given version does not match the latest version on the server.", + "example": "0307116bbf7ced493b8d8a346c650b71", + "type": "string" + }, + "comments_count": { + "example": 0, + "type": "integer" + }, + "comments_url": { + "example": "https://api.github.com/organizations/1/team/2343027/discussions/1/comments", + "format": "uri", + "type": "string" + }, + "created_at": { + "example": "2018-01-25T18:56:31Z", + "format": "date-time", + "type": "string" + }, + "html_url": { + "example": "https://github.com/orgs/github/teams/justice-league/discussions/1", + "format": "uri", + "type": "string" + }, + "last_edited_at": { + "format": "date-time", + "nullable": true, + "type": "string" + }, + "node_id": { + "example": "MDE0OlRlYW1EaXNjdXNzaW9uMQ==", + "type": "string" + }, + "number": { + "description": "The unique sequence number of a team discussion.", + "example": 42, + "type": "integer" + }, + "pinned": { + "description": "Whether or not this discussion should be pinned for easy retrieval.", + "example": true, + "type": "boolean" + }, + "private": { + "description": "Whether or not this discussion should be restricted to team members and organization administrators.", + "example": true, + "type": "boolean" + }, + "reactions": { + "$ref": "#/components/schemas/reaction-rollup" + }, + "team_url": { + "example": "https://api.github.com/organizations/1/team/2343027", + "format": "uri", + "type": "string" + }, + "title": { + "description": "The title of the discussion.", + "example": "How can we improve our workflow?", + "type": "string" + }, + "updated_at": { + "example": "2018-01-25T18:56:31Z", + "format": "date-time", + "type": "string" + }, + "url": { + "example": "https://api.github.com/organizations/1/team/2343027/discussions/1", + "format": "uri", + "type": "string" + } + }, + "required": [ + "author", + "body", + "body_html", + "body_version", + "comments_count", + "comments_url", + "created_at", + "last_edited_at", + "html_url", + "pinned", + "private", + "node_id", + "number", + "team_url", + "title", + "updated_at", + "url" + ], + "title": "Team Discussion", + "type": "object" + } + } + } + }, + "insertionIndex": 1064 + }, + { + "id": "ca2cbfeb-9065-4eef-ba5d-6ed0707dbd47", + "name": "List discussions - default", + "request": { + "urlPath": "/orgs/btnswmjggo796r2iq6sxdnarswn9m3odk8u3057vk3bstoq8sxtekoherdbzvq9zhx6ooii6bdh7qbvmn1g9vzq6fyo0kkt8rdyu2nx6tndzg3zafxm24anpo9r4l3bbgyn74af5fc2jd34vy5ng0yqar1rqikbqv/teams/fb54c2d7aqxf5z6p05c2l2d65j367qfxifof8i7ie45ijii/discussions", + "method": "GET" + }, + "response": { + "status": 200, + "body": "[ {\n \"author\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"body\" : \"Hi! This is an area for us to collaborate as a team.\",\n \"body_html\" : \"

Hi! This is an area for us to collaborate as a team

\",\n \"body_version\" : \"0d495416a700fb06133c612575d92bfb\",\n \"comments_count\" : 0,\n \"comments_url\" : \"https://api.github.com/teams/2343027/discussions/1/comments\",\n \"created_at\" : \"2018-01-25T18:56:31Z\",\n \"html_url\" : \"https://github.com/orgs/github/teams/justice-league/discussions/1\",\n \"node_id\" : \"MDE0OlRlYW1EaXNjdXNzaW9uMQ==\",\n \"number\" : 1,\n \"pinned\" : false,\n \"private\" : false,\n \"reactions\" : {\n \"+1\" : 3,\n \"-1\" : 1,\n \"confused\" : 0,\n \"eyes\" : 1,\n \"heart\" : 1,\n \"hooray\" : 0,\n \"laugh\" : 0,\n \"rocket\" : 1,\n \"total_count\" : 5,\n \"url\" : \"https://api.github.com/teams/2343027/discussions/1/reactions\"\n },\n \"team_url\" : \"https://api.github.com/teams/2343027\",\n \"title\" : \"Our first team post\",\n \"updated_at\" : \"2018-01-25T18:56:31Z\",\n \"url\" : \"https://api.github.com/teams/2343027/discussions/1\"\n} ]", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "ca2cbfeb-9065-4eef-ba5d-6ed0707dbd47", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.799628Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "teams/list-discussions-in-org", + "schema": { + "items": { + "$ref": "#/components/schemas/team-discussion" + }, + "type": "array" + } + } + } + }, + "insertionIndex": 1065 + }, + { + "id": "497b8639-c2d3-44fa-8328-10a1722b4098", + "name": "Update a team - default", + "request": { + "urlPath": "/orgs/o7ei9myd8zkhf2gs8cppybia9ww98zhzlxradzxjy6vsnv4cgz0swd83w9c2xu32l86hiqjbwaodmrxb5270defc9i3x28gfnbu10a4qt8gi7dvvuft3e38a4iftbb0u5bzgc02rv01qq61lx7u2m6vwdbveqmm6holx5rb342ppkpk7c6y9lhjz0n33cdbzl2430j3y/teams/hv7d527qi3700a8ntj3l4sddyd5ts85d4f0dxr55uvcn4uatv6ymy6r9fbm1j3ajjybsny3a0bkwyh78lbe91o2xsvozlj1u8590bss210l5a74hadj2vmmttizt1k5r249n18skoewcq8pym98tp4jmzz8ly", + "method": "PATCH" + }, + "response": { + "status": 201, + "body": "{\n \"created_at\" : \"2017-07-14T16:53:42Z\",\n \"description\" : \"A great team.\",\n \"html_url\" : \"https://github.com/orgs/github/teams/justice-league\",\n \"id\" : 1,\n \"ldap_dn\" : \"uid=asdf,ou=users,dc=github,dc=com\",\n \"members_count\" : 3,\n \"members_url\" : \"https://api.github.com/teams/1/members{/member}\",\n \"name\" : \"Justice League\",\n \"node_id\" : \"MDQ6VGVhbTE=\",\n \"organization\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"blog\" : \"https://github.com/blog\",\n \"company\" : \"GitHub\",\n \"created_at\" : \"2008-01-14T04:33:35Z\",\n \"description\" : \"A great organization\",\n \"email\" : \"octocat@github.com\",\n \"events_url\" : \"https://api.github.com/orgs/github/events\",\n \"followers\" : 20,\n \"following\" : 0,\n \"has_organization_projects\" : true,\n \"has_repository_projects\" : true,\n \"hooks_url\" : \"https://api.github.com/orgs/github/hooks\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"issues_url\" : \"https://api.github.com/orgs/github/issues\",\n \"location\" : \"San Francisco\",\n \"login\" : \"github\",\n \"members_url\" : \"https://api.github.com/orgs/github/members{/member}\",\n \"name\" : \"github\",\n \"node_id\" : \"MDEyOk9yZ2FuaXphdGlvbjE=\",\n \"public_gists\" : 1,\n \"public_members_url\" : \"https://api.github.com/orgs/github/public_members{/member}\",\n \"public_repos\" : 2,\n \"repos_url\" : \"https://api.github.com/orgs/github/repos\",\n \"type\" : \"Organization\",\n \"updated_at\" : \"2017-08-17T12:37:15Z\",\n \"url\" : \"https://api.github.com/orgs/github\"\n },\n \"permission\" : \"admin\",\n \"privacy\" : \"closed\",\n \"repos_count\" : 10,\n \"repositories_url\" : \"https://api.github.com/teams/1/repos\",\n \"slug\" : \"justice-league\",\n \"updated_at\" : \"2017-08-17T12:37:15Z\",\n \"url\" : \"https://api.github.com/teams/1\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "497b8639-c2d3-44fa-8328-10a1722b4098", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.799553Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "teams/update-in-org", + "schema": { + "description": "Groups of organization members that gives permissions on specified repositories.", + "properties": { + "created_at": { + "example": "2017-07-14T16:53:42Z", + "format": "date-time", + "type": "string" + }, + "description": { + "example": "A great team.", + "nullable": true, + "type": "string" + }, + "html_url": { + "example": "https://github.com/orgs/rails/teams/core", + "format": "uri", + "type": "string" + }, + "id": { + "description": "Unique identifier of the team", + "example": 42, + "type": "integer" + }, + "ldap_dn": { + "description": "Distinguished Name (DN) that team maps to within LDAP environment", + "example": "uid=example,ou=users,dc=github,dc=com", + "type": "string" + }, + "members_count": { + "example": 3, + "type": "integer" + }, + "members_url": { + "example": "https://api.github.com/organizations/1/team/1/members{/member}", + "type": "string" + }, + "name": { + "description": "Name of the team", + "example": "Developers", + "type": "string" + }, + "node_id": { + "example": "MDQ6VGVhbTE=", + "type": "string" + }, + "organization": { + "$ref": "#/components/schemas/organization-full" + }, + "parent": { + "$ref": "#/components/schemas/nullable-team-simple" + }, + "permission": { + "description": "Permission that the team will have for its repositories", + "example": "push", + "type": "string" + }, + "privacy": { + "description": "The level of privacy this team should have", + "enum": ["closed", "secret"], + "example": "closed", + "type": "string" + }, + "repos_count": { + "example": 10, + "type": "integer" + }, + "repositories_url": { + "example": "https://api.github.com/organizations/1/team/1/repos", + "format": "uri", + "type": "string" + }, + "slug": { + "example": "justice-league", + "type": "string" + }, + "updated_at": { + "example": "2017-08-17T12:37:15Z", + "format": "date-time", + "type": "string" + }, + "url": { + "description": "URL for the team", + "example": "https://api.github.com/organizations/1/team/1", + "format": "uri", + "type": "string" + } + }, + "required": [ + "id", + "node_id", + "url", + "members_url", + "name", + "description", + "permission", + "html_url", + "repositories_url", + "slug", + "created_at", + "updated_at", + "members_count", + "repos_count", + "organization" + ], + "title": "Full Team", + "type": "object" + } + } + } + }, + "insertionIndex": 1066 + }, + { + "id": "1af63069-4819-43eb-9885-ad33f79f95f0", + "name": "Get a team by name", + "request": { + "urlPath": "/orgs/0llqx0rejf0uifde6bpvlo082w9y1z0x300iaszqag82eikji7j8voxmm30q24k3s5lj9ke8z8f6mjyfiu4/teams/w5si8oluho073ux6anom1hf2ywqaiaeglc8b7jppiwjro9b1m8v37d0zazodn41wosie", + "method": "GET" + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/402857\",\n \"message\" : \"Porro corrupti consequuntur odit dolores praesentium consequatur voluptatem. Eos corrupti mollitia voluptatem. Cumque quod rem deleniti alias sunt.\",\n \"url\" : \"https://web.example.mocklab.io/600569\",\n \"status\" : \"4ot39cm7t2ptmqf38t5c7xmvgqdywpjee426mdka01fzyh50abus0ftjc8ci5fsgp30rl06817cveuaz8pem60owgj3vkph82lncnxiyx1n5ky9xxk4gc5yntpyfn0fikua7unw3cynx9gihdoxsxdkwi8pobmcwwim3jqagdcx7m9apyxis3gwb0x3hlqz0apnsaim\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "1af63069-4819-43eb-9885-ad33f79f95f0", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.799397Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "teams/get-by-name", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 1067 + }, + { + "id": "7ad43e22-47a8-41e0-8b19-a74e20a7d612", + "name": "Get a team by name - default", + "request": { + "urlPath": "/orgs/vm72tc5plblm3hgnz6mk5i6e4dd1962eae9ul2aaj7/teams/oo9vis62vr3ekg802wlqlvyvtij7oufno25usdfl2n71no1m38irlmi5mm1d2twzz9ct2y8hytrf", + "method": "GET" + }, + "response": { + "status": 200, + "body": "{\n \"created_at\" : \"2017-07-14T16:53:42Z\",\n \"description\" : \"A great team.\",\n \"html_url\" : \"https://github.com/orgs/github/teams/justice-league\",\n \"id\" : 1,\n \"ldap_dn\" : \"uid=asdf,ou=users,dc=github,dc=com\",\n \"members_count\" : 3,\n \"members_url\" : \"https://api.github.com/teams/1/members{/member}\",\n \"name\" : \"Justice League\",\n \"node_id\" : \"MDQ6VGVhbTE=\",\n \"organization\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"blog\" : \"https://github.com/blog\",\n \"company\" : \"GitHub\",\n \"created_at\" : \"2008-01-14T04:33:35Z\",\n \"description\" : \"A great organization\",\n \"email\" : \"octocat@github.com\",\n \"events_url\" : \"https://api.github.com/orgs/github/events\",\n \"followers\" : 20,\n \"following\" : 0,\n \"has_organization_projects\" : true,\n \"has_repository_projects\" : true,\n \"hooks_url\" : \"https://api.github.com/orgs/github/hooks\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"issues_url\" : \"https://api.github.com/orgs/github/issues\",\n \"location\" : \"San Francisco\",\n \"login\" : \"github\",\n \"members_url\" : \"https://api.github.com/orgs/github/members{/member}\",\n \"name\" : \"github\",\n \"node_id\" : \"MDEyOk9yZ2FuaXphdGlvbjE=\",\n \"public_gists\" : 1,\n \"public_members_url\" : \"https://api.github.com/orgs/github/public_members{/member}\",\n \"public_repos\" : 2,\n \"repos_url\" : \"https://api.github.com/orgs/github/repos\",\n \"type\" : \"Organization\",\n \"updated_at\" : \"2017-08-17T12:37:15Z\",\n \"url\" : \"https://api.github.com/orgs/github\"\n },\n \"permission\" : \"admin\",\n \"privacy\" : \"closed\",\n \"repos_count\" : 10,\n \"repositories_url\" : \"https://api.github.com/teams/1/repos\",\n \"slug\" : \"justice-league\",\n \"updated_at\" : \"2017-08-17T12:37:15Z\",\n \"url\" : \"https://api.github.com/teams/1\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "7ad43e22-47a8-41e0-8b19-a74e20a7d612", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.799166Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "teams/get-by-name", + "schema": { + "description": "Groups of organization members that gives permissions on specified repositories.", + "properties": { + "created_at": { + "example": "2017-07-14T16:53:42Z", + "format": "date-time", + "type": "string" + }, + "description": { + "example": "A great team.", + "nullable": true, + "type": "string" + }, + "html_url": { + "example": "https://github.com/orgs/rails/teams/core", + "format": "uri", + "type": "string" + }, + "id": { + "description": "Unique identifier of the team", + "example": 42, + "type": "integer" + }, + "ldap_dn": { + "description": "Distinguished Name (DN) that team maps to within LDAP environment", + "example": "uid=example,ou=users,dc=github,dc=com", + "type": "string" + }, + "members_count": { + "example": 3, + "type": "integer" + }, + "members_url": { + "example": "https://api.github.com/organizations/1/team/1/members{/member}", + "type": "string" + }, + "name": { + "description": "Name of the team", + "example": "Developers", + "type": "string" + }, + "node_id": { + "example": "MDQ6VGVhbTE=", + "type": "string" + }, + "organization": { + "$ref": "#/components/schemas/organization-full" + }, + "parent": { + "$ref": "#/components/schemas/nullable-team-simple" + }, + "permission": { + "description": "Permission that the team will have for its repositories", + "example": "push", + "type": "string" + }, + "privacy": { + "description": "The level of privacy this team should have", + "enum": ["closed", "secret"], + "example": "closed", + "type": "string" + }, + "repos_count": { + "example": 10, + "type": "integer" + }, + "repositories_url": { + "example": "https://api.github.com/organizations/1/team/1/repos", + "format": "uri", + "type": "string" + }, + "slug": { + "example": "justice-league", + "type": "string" + }, + "updated_at": { + "example": "2017-08-17T12:37:15Z", + "format": "date-time", + "type": "string" + }, + "url": { + "description": "URL for the team", + "example": "https://api.github.com/organizations/1/team/1", + "format": "uri", + "type": "string" + } + }, + "required": [ + "id", + "node_id", + "url", + "members_url", + "name", + "description", + "permission", + "html_url", + "repositories_url", + "slug", + "created_at", + "updated_at", + "members_count", + "repos_count", + "organization" + ], + "title": "Full Team", + "type": "object" + } + } + } + }, + "insertionIndex": 1068 + }, + { + "id": "788b88c2-7912-47e6-9d79-b691106a3b3a", + "name": "Delete a team - 204", + "request": { + "urlPath": "/orgs/a9jq47km4hcwtcj8w7vb0a5zbwgxk0i1v0j7135lr1zum5alrwp7p1d7o910y31m9895w2p06k0mpwxr1sgpmqimwifm8u1zkt1lb5v7gpgkfvkberukh4bmczuaqjfurkcbssgm4sv9nfm3xyddd0hl89zllay84ws1f3ghlhmk18/teams/8p6o2uamu295ylp6mex6ep", + "method": "DELETE" + }, + "response": { + "status": 204 + }, + "uuid": "788b88c2-7912-47e6-9d79-b691106a3b3a", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.799006Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "teams/delete-in-org" + } + } + }, + "insertionIndex": 1069 + }, + { + "id": "f0e50d15-0e42-47d8-a447-188af5d1b030", + "name": "Create a team", + "request": { + "urlPath": "/orgs/r2e9mx54e67i75b5pz6iobas9uemopfxwg4dxu1g5wr4roke4y1nwe20dt5aqrb7zqgx90qgjqd80pntzwr6d8oaho8q30mg8021pnr1fv3wmwrhec5ck5/teams", + "method": "POST" + }, + "response": { + "status": 422, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/328485\",\n \"message\" : \"Minima facere tempora natus facere voluptatem. Consequatur et maiores facere voluptatem. Et eveniet eaque. Consequatur velit amet cupiditate adipisci aliquam.\",\n \"errors\" : [ {\n \"code\" : \"iaqe8cz4wn21sesaq3wigijfmxms\",\n \"field\" : \"khv5yyjwz2bcxnle28a118f97a221lglcsvhlmlmoao06h5ry9j85tdf4yknzz8g90vkfebq3vhrl86jd9v0w89xu6qapj8ovljmxk3jwes6vmlcf35kjjlintn3zlwoai4quu3pb24d74zfgoxdi7ni13s1y0v0\",\n \"resource\" : \"241v9wmjkvc5advmdqsfrhpsh1lpdt2tiblda2itgyxyzj4w0fb8cluzyx3904c0g68mk4mev1tvixgi3ha14iiewvjnkbm5lbtwmqjh9k5jr86c6ri7292q3wzub7494cct5jdruno2tgl5prepb9nr8yibafyx4o6lp8c8jq7xtw6y\",\n \"index\" : 5221451559230772182,\n \"message\" : \"Quidem accusantium vero consequuntur. Temporibus ab architecto necessitatibus. Voluptatum saepe voluptas unde aliquam quis.\",\n \"value\" : { }\n }, {\n \"code\" : \"1zryhcdndoct5leo9wswy7fljl3ntswqru19i2qv571uh454ce8ggb0vn3ti5ct7xlwg5o77ait4tnq5xqwk1s7zdc4pdou5qyioee5sz5g8nv3gvrzpabg7ujn2qitnn8gkpvmv0\",\n \"field\" : \"salrnchffqoj2elc9olp6yqo7rmdt9907ctfuen05l62ws20q8r2ggdnekywxfnvfgj94vgut2sr3ex6h19qcpqet62bgiruw6axie164if2ncsrpdvphzh0cxu3azm66i2xv8uw41proxw7z6jgsqhfnynzmio31w\",\n \"resource\" : \"xhppfez7pms60eczirf5v7sb8cym8d6woo5q16a4j64i99ugkw0nlh0zsf58bv3p43ry7nids13oabuyd3lyi1dawxsi1xzhn0bmadmb0pcmtjohxtl4s1drkf1ein757kl9dbfx7ql6p47d62efwkrri5jp2qm7s55ksb0nw9\",\n \"index\" : 7117717946654996952,\n \"message\" : \"Atque voluptatibus tempora illum temporibus sed et. Ut et fugit. Molestiae tempore vel aut non consequuntur omnis.\",\n \"value\" : { }\n } ]\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "f0e50d15-0e42-47d8-a447-188af5d1b030", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.798953Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "teams/create", + "schema": { + "description": "Validation Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "errors": { + "items": { + "properties": { + "code": { + "type": "string" + }, + "field": { + "type": "string" + }, + "index": { + "type": "integer" + }, + "message": { + "type": "string" + }, + "resource": { + "type": "string" + }, + "value": { + "oneOf": [ + { + "nullable": true, + "type": "string" + }, + { + "nullable": true, + "type": "integer" + }, + { + "items": { + "type": "string" + }, + "nullable": true, + "type": "array" + } + ] + } + }, + "required": ["code"], + "type": "object" + }, + "type": "array" + }, + "message": { + "type": "string" + } + }, + "required": ["message", "documentation_url"], + "title": "Validation Error", + "type": "object" + } + } + } + }, + "insertionIndex": 1070 + }, + { + "id": "f6ce5239-af78-479e-b896-75b50db293e2", + "name": "Create a team", + "request": { + "urlPath": "/orgs/4m31pygrwj44cqqc9e80wrab2uw/teams", + "method": "POST" + }, + "response": { + "status": 403, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/778474\",\n \"message\" : \"Possimus ex debitis. Omnis occaecati est et rerum. Aut modi in illo qui ullam.\",\n \"url\" : \"https://web.example.mocklab.io/949465\",\n \"status\" : \"7joabnd6efnrdbmk9qf6q8owly4vontm6d77p26jqbydr0jv9y74ble6j9p421gsjnrotbc6fjy6mcxkhz60gvsjjv1z3fnebkuspqmb7bn41etpmh7lfsow\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "f6ce5239-af78-479e-b896-75b50db293e2", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.79858Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "teams/create", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 1071 + }, + { + "id": "5e1fc653-1e99-41a3-b68c-5944b92d7755", + "name": "Create a team - default", + "request": { + "urlPath": "/orgs/9rkrn9c7o34rk27uw9orrrmw75nu53kun3zbnbkzotmdw85pthpeygr9z5k19kgl8h8qy4jywlvfdj43j5j2r6hi1uj7heqgsjc06w922v1hcr7gnfbbmm0mye0ebnin523ql4zojy6jjqmjtwieby9e/teams", + "method": "POST" + }, + "response": { + "status": 201, + "body": "{\n \"created_at\" : \"2017-07-14T16:53:42Z\",\n \"description\" : \"A great team.\",\n \"html_url\" : \"https://github.com/orgs/github/teams/justice-league\",\n \"id\" : 1,\n \"ldap_dn\" : \"uid=asdf,ou=users,dc=github,dc=com\",\n \"members_count\" : 3,\n \"members_url\" : \"https://api.github.com/teams/1/members{/member}\",\n \"name\" : \"Justice League\",\n \"node_id\" : \"MDQ6VGVhbTE=\",\n \"organization\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"blog\" : \"https://github.com/blog\",\n \"company\" : \"GitHub\",\n \"created_at\" : \"2008-01-14T04:33:35Z\",\n \"description\" : \"A great organization\",\n \"email\" : \"octocat@github.com\",\n \"events_url\" : \"https://api.github.com/orgs/github/events\",\n \"followers\" : 20,\n \"following\" : 0,\n \"has_organization_projects\" : true,\n \"has_repository_projects\" : true,\n \"hooks_url\" : \"https://api.github.com/orgs/github/hooks\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"issues_url\" : \"https://api.github.com/orgs/github/issues\",\n \"location\" : \"San Francisco\",\n \"login\" : \"github\",\n \"members_url\" : \"https://api.github.com/orgs/github/members{/member}\",\n \"name\" : \"github\",\n \"node_id\" : \"MDEyOk9yZ2FuaXphdGlvbjE=\",\n \"public_gists\" : 1,\n \"public_members_url\" : \"https://api.github.com/orgs/github/public_members{/member}\",\n \"public_repos\" : 2,\n \"repos_url\" : \"https://api.github.com/orgs/github/repos\",\n \"type\" : \"Organization\",\n \"updated_at\" : \"2017-08-17T12:37:15Z\",\n \"url\" : \"https://api.github.com/orgs/github\"\n },\n \"permission\" : \"admin\",\n \"privacy\" : \"closed\",\n \"repos_count\" : 10,\n \"repositories_url\" : \"https://api.github.com/teams/1/repos\",\n \"slug\" : \"justice-league\",\n \"updated_at\" : \"2017-08-17T12:37:15Z\",\n \"url\" : \"https://api.github.com/teams/1\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "5e1fc653-1e99-41a3-b68c-5944b92d7755", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.798362Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "teams/create", + "schema": { + "description": "Groups of organization members that gives permissions on specified repositories.", + "properties": { + "created_at": { + "example": "2017-07-14T16:53:42Z", + "format": "date-time", + "type": "string" + }, + "description": { + "example": "A great team.", + "nullable": true, + "type": "string" + }, + "html_url": { + "example": "https://github.com/orgs/rails/teams/core", + "format": "uri", + "type": "string" + }, + "id": { + "description": "Unique identifier of the team", + "example": 42, + "type": "integer" + }, + "ldap_dn": { + "description": "Distinguished Name (DN) that team maps to within LDAP environment", + "example": "uid=example,ou=users,dc=github,dc=com", + "type": "string" + }, + "members_count": { + "example": 3, + "type": "integer" + }, + "members_url": { + "example": "https://api.github.com/organizations/1/team/1/members{/member}", + "type": "string" + }, + "name": { + "description": "Name of the team", + "example": "Developers", + "type": "string" + }, + "node_id": { + "example": "MDQ6VGVhbTE=", + "type": "string" + }, + "organization": { + "$ref": "#/components/schemas/organization-full" + }, + "parent": { + "$ref": "#/components/schemas/nullable-team-simple" + }, + "permission": { + "description": "Permission that the team will have for its repositories", + "example": "push", + "type": "string" + }, + "privacy": { + "description": "The level of privacy this team should have", + "enum": ["closed", "secret"], + "example": "closed", + "type": "string" + }, + "repos_count": { + "example": 10, + "type": "integer" + }, + "repositories_url": { + "example": "https://api.github.com/organizations/1/team/1/repos", + "format": "uri", + "type": "string" + }, + "slug": { + "example": "justice-league", + "type": "string" + }, + "updated_at": { + "example": "2017-08-17T12:37:15Z", + "format": "date-time", + "type": "string" + }, + "url": { + "description": "URL for the team", + "example": "https://api.github.com/organizations/1/team/1", + "format": "uri", + "type": "string" + } + }, + "required": [ + "id", + "node_id", + "url", + "members_url", + "name", + "description", + "permission", + "html_url", + "repositories_url", + "slug", + "created_at", + "updated_at", + "members_count", + "repos_count", + "organization" + ], + "title": "Full Team", + "type": "object" + } + } + } + }, + "insertionIndex": 1072 + }, + { + "id": "d9b24497-407c-4a3c-83a5-ad3abef61ab5", + "name": "List teams", + "request": { + "urlPath": "/orgs/ueuz12nmcnozve2qt87rzt1epjpsqnbd67ujrfepzuh5muccs4jq75oby4gixpfdltfjte9corw4ef2fp69cnkj67q/teams", + "method": "GET" + }, + "response": { + "status": 403, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/229375\",\n \"message\" : \"Quia aperiam reiciendis debitis repudiandae ut et magnam. Veniam inventore sunt iste eius nostrum asperiores sed. Nihil natus deleniti similique aperiam at numquam. Accusamus molestias atque nemo eos.\",\n \"url\" : \"https://web.example.mocklab.io/132670\",\n \"status\" : \"b6rnu8g1z0teal4sezohdawrsjqmqle6v54ztyl8jo3tfeziynlape7pvpjsy4ub8gapg24hxezpnwmbsq8lb28p9saaw4pfxccyh3fi4qcuzemx15mq8610qiucbkmgyxqgsmg01o7suihxfei97hneyt98sslgjn5mn7sr6kq\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "d9b24497-407c-4a3c-83a5-ad3abef61ab5", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.798128Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "teams/list", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 1073 + }, + { + "id": "7437cd69-ca48-4139-9ff4-b01f7680e504", + "name": "List teams - default", + "request": { + "urlPath": "/orgs/golmhnksq2ju90u7wg1afe370q4x/teams", + "method": "GET" + }, + "response": { + "status": 200, + "body": "[ {\n \"description\" : \"A great team.\",\n \"html_url\" : \"https://github.com/orgs/github/teams/justice-league\",\n \"id\" : 1,\n \"members_url\" : \"https://api.github.com/teams/1/members{/member}\",\n \"name\" : \"Justice League\",\n \"node_id\" : \"MDQ6VGVhbTE=\",\n \"permission\" : \"admin\",\n \"privacy\" : \"closed\",\n \"repositories_url\" : \"https://api.github.com/teams/1/repos\",\n \"slug\" : \"justice-league\",\n \"url\" : \"https://api.github.com/teams/1\"\n} ]", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "7437cd69-ca48-4139-9ff4-b01f7680e504", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.797912Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "teams/list", + "schema": { + "items": { + "$ref": "#/components/schemas/team" + }, + "type": "array" + } + } + } + }, + "insertionIndex": 1074 + }, + { + "id": "4755c5a4-a39d-431b-b623-6f2d765c4cf9", + "name": "Create an organization repository", + "request": { + "urlPath": "/orgs/qwuzwx1f9kfx9rhaffb3gsn/repos", + "method": "POST" + }, + "response": { + "status": 422, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/418936\",\n \"message\" : \"Sit optio qui neque molestias ut enim. Odit at architecto libero et fugiat quae. Eaque nam laboriosam corrupti vitae eligendi.\",\n \"errors\" : [ {\n \"code\" : \"gzdmlwkc09sa0rz8ozml\",\n \"field\" : \"ng9izun4iloool7l217zokizszz8h5z1lehfh4b3es8x9lh7gb5plipqobml1c4qksjk9nxrw6crhkglemket94l55vt29whxywhepbmxejtkvqyr20w1j51rm9rfm1tn709q1woseq15dcuzdwcx6zpcuxpe9lfan\",\n \"resource\" : \"i8juz8w7dt6d71s3qdwj6z6jqit8s04j\",\n \"index\" : 6677101033106456014,\n \"message\" : \"Minima reprehenderit corrupti officiis harum. Quo distinctio aut cupiditate est reprehenderit. Molestiae tempora magni molestiae eum aut.\",\n \"value\" : { }\n }, {\n \"code\" : \"nq0yzr3h5kzl54trmeoyec1kp08rwkgw7rifyhb1hx8m7fn3ul142jiks29t5eh0wcyigb6lrfjnt8hfd5gjnto1ew\",\n \"field\" : \"d0r4z7gm6kp9sdqz78njzkv4jb6igx6lhh86ff5sd6zwpn3ulmgpgixdgdx3ldgt6abs5\",\n \"resource\" : \"395y2nimoo5mrk5sitvxut8uu1v1x5e2z\",\n \"index\" : 414421794308815279,\n \"message\" : \"Et vel cum. Aut eos aut ea autem et. Similique labore incidunt rem. Et voluptatum vero nisi nam qui eum et.\",\n \"value\" : { }\n } ]\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "4755c5a4-a39d-431b-b623-6f2d765c4cf9", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.797852Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/create-in-org", + "schema": { + "description": "Validation Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "errors": { + "items": { + "properties": { + "code": { + "type": "string" + }, + "field": { + "type": "string" + }, + "index": { + "type": "integer" + }, + "message": { + "type": "string" + }, + "resource": { + "type": "string" + }, + "value": { + "oneOf": [ + { + "nullable": true, + "type": "string" + }, + { + "nullable": true, + "type": "integer" + }, + { + "items": { + "type": "string" + }, + "nullable": true, + "type": "array" + } + ] + } + }, + "required": ["code"], + "type": "object" + }, + "type": "array" + }, + "message": { + "type": "string" + } + }, + "required": ["message", "documentation_url"], + "title": "Validation Error", + "type": "object" + } + } + } + }, + "insertionIndex": 1075 + }, + { + "id": "4fb0e3ca-fb0e-44b2-91bf-4a90d5d72df1", + "name": "Create an organization repository", + "request": { + "urlPath": "/orgs/a5y061thfisf9rveeofa5x0ixvejhgk34haoh8o3p0wuujh3cy7eg8fzshm8du2agyqk87zsqf9rrjkgbfcpfgrp02dabhbfyoh25lrl6czunecdqy22vhe9mjbjjqfmaykk1qu9antnoe4311ynsr7qkwzd52qgltukki5g1n4qgfqmk18u/repos", + "method": "POST" + }, + "response": { + "status": 403, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/435121\",\n \"message\" : \"Fugiat quasi nulla repellat nostrum. Aut mollitia reiciendis provident illum qui. Molestiae voluptatibus illo quo sunt.\",\n \"url\" : \"https://web.example.mocklab.io/892137\",\n \"status\" : \"hm7hos8iq1vud49622o5x3jwsnbnq1brlsdm3jwxavzcxh0pr1i3v3kal8v67p08ocb40hgcuxc12hjpmhxuv38vynx15q7sc1p8cswn47swgns3jee4tid6xp6xafevcgll\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "4fb0e3ca-fb0e-44b2-91bf-4a90d5d72df1", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.797387Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/create-in-org", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 1076 + }, + { + "id": "6a49455f-8ff1-41f4-b0da-a507377d03ba", + "name": "Create an organization repository - default", + "request": { + "urlPath": "/orgs/3y53fc8cljdirkxk168r6e2f1jszx5yeo565t6bj97z0nlvehlcm23rbnxq9vzbgnwutgznu6cuepur535ekqdb6ar4w6/repos", + "method": "POST" + }, + "response": { + "status": 201, + "body": "{\n \"allow_merge_commit\" : true,\n \"allow_rebase_merge\" : true,\n \"allow_squash_merge\" : true,\n \"anonymous_access_enabled\" : false,\n \"archive_url\" : \"https://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref}\",\n \"archived\" : false,\n \"assignees_url\" : \"https://api.github.com/repos/octocat/Hello-World/assignees{/user}\",\n \"blobs_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/blobs{/sha}\",\n \"branches_url\" : \"https://api.github.com/repos/octocat/Hello-World/branches{/branch}\",\n \"clone_url\" : \"https://github.com/octocat/Hello-World.git\",\n \"collaborators_url\" : \"https://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator}\",\n \"comments_url\" : \"https://api.github.com/repos/octocat/Hello-World/comments{/number}\",\n \"commits_url\" : \"https://api.github.com/repos/octocat/Hello-World/commits{/sha}\",\n \"compare_url\" : \"https://api.github.com/repos/octocat/Hello-World/compare/{base}...{head}\",\n \"contents_url\" : \"https://api.github.com/repos/octocat/Hello-World/contents/{+path}\",\n \"contributors_url\" : \"https://api.github.com/repos/octocat/Hello-World/contributors\",\n \"created_at\" : \"2011-01-26T19:01:12Z\",\n \"default_branch\" : \"master\",\n \"delete_branch_on_merge\" : true,\n \"deployments_url\" : \"https://api.github.com/repos/octocat/Hello-World/deployments\",\n \"description\" : \"This your first repo!\",\n \"disabled\" : false,\n \"downloads_url\" : \"https://api.github.com/repos/octocat/Hello-World/downloads\",\n \"events_url\" : \"https://api.github.com/repos/octocat/Hello-World/events\",\n \"fork\" : false,\n \"forks\" : 9,\n \"forks_count\" : 9,\n \"forks_url\" : \"https://api.github.com/repos/octocat/Hello-World/forks\",\n \"full_name\" : \"octocat/Hello-World\",\n \"git_commits_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/commits{/sha}\",\n \"git_refs_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/refs{/sha}\",\n \"git_tags_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/tags{/sha}\",\n \"git_url\" : \"git:github.com/octocat/Hello-World.git\",\n \"has_downloads\" : true,\n \"has_issues\" : true,\n \"has_pages\" : false,\n \"has_projects\" : true,\n \"has_wiki\" : true,\n \"homepage\" : \"https://github.com\",\n \"hooks_url\" : \"https://api.github.com/repos/octocat/Hello-World/hooks\",\n \"html_url\" : \"https://github.com/octocat/Hello-World\",\n \"id\" : 1296269,\n \"is_template\" : true,\n \"issue_comment_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/comments{/number}\",\n \"issue_events_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/events{/number}\",\n \"issues_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues{/number}\",\n \"keys_url\" : \"https://api.github.com/repos/octocat/Hello-World/keys{/key_id}\",\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World/labels{/name}\",\n \"languages_url\" : \"https://api.github.com/repos/octocat/Hello-World/languages\",\n \"license\" : {\n \"html_url\" : \"https://api.github.com/licenses/mit\",\n \"key\" : \"mit\",\n \"name\" : \"MIT License\",\n \"node_id\" : \"MDc6TGljZW5zZW1pdA==\",\n \"spdx_id\" : \"MIT\",\n \"url\" : \"https://api.github.com/licenses/mit\"\n },\n \"merges_url\" : \"https://api.github.com/repos/octocat/Hello-World/merges\",\n \"milestones_url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones{/number}\",\n \"mirror_url\" : \"git:git.example.com/octocat/Hello-World\",\n \"name\" : \"Hello-World\",\n \"network_count\" : 0,\n \"node_id\" : \"MDEwOlJlcG9zaXRvcnkxMjk2MjY5\",\n \"notifications_url\" : \"https://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating}\",\n \"open_issues\" : 0,\n \"open_issues_count\" : 0,\n \"owner\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"permissions\" : {\n \"admin\" : false,\n \"pull\" : true,\n \"push\" : false\n },\n \"private\" : false,\n \"pulls_url\" : \"https://api.github.com/repos/octocat/Hello-World/pulls{/number}\",\n \"pushed_at\" : \"2011-01-26T19:06:43Z\",\n \"releases_url\" : \"https://api.github.com/repos/octocat/Hello-World/releases{/id}\",\n \"size\" : 108,\n \"ssh_url\" : \"git@github.com:octocat/Hello-World.git\",\n \"stargazers_count\" : 80,\n \"stargazers_url\" : \"https://api.github.com/repos/octocat/Hello-World/stargazers\",\n \"statuses_url\" : \"https://api.github.com/repos/octocat/Hello-World/statuses/{sha}\",\n \"subscribers_count\" : 42,\n \"subscribers_url\" : \"https://api.github.com/repos/octocat/Hello-World/subscribers\",\n \"subscription_url\" : \"https://api.github.com/repos/octocat/Hello-World/subscription\",\n \"svn_url\" : \"https://svn.github.com/octocat/Hello-World\",\n \"tags_url\" : \"https://api.github.com/repos/octocat/Hello-World/tags\",\n \"teams_url\" : \"https://api.github.com/repos/octocat/Hello-World/teams\",\n \"topics\" : [ \"octocat\", \"atom\", \"electron\", \"api\" ],\n \"trees_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/trees{/sha}\",\n \"updated_at\" : \"2011-01-26T19:14:43Z\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World\",\n \"visibility\" : \"public\",\n \"watchers\" : 80,\n \"watchers_count\" : 80\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "6a49455f-8ff1-41f4-b0da-a507377d03ba", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.797045Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/create-in-org", + "schema": { + "description": "A git repository", + "properties": { + "allow_forking": { + "description": "Whether to allow forking this repo", + "type": "boolean" + }, + "allow_merge_commit": { + "default": true, + "description": "Whether to allow merge commits for pull requests.", + "example": true, + "type": "boolean" + }, + "allow_rebase_merge": { + "default": true, + "description": "Whether to allow rebase merges for pull requests.", + "example": true, + "type": "boolean" + }, + "allow_squash_merge": { + "default": true, + "description": "Whether to allow squash merges for pull requests.", + "example": true, + "type": "boolean" + }, + "anonymous_access_enabled": { + "type": "boolean" + }, + "archive_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref}", + "type": "string" + }, + "archived": { + "default": false, + "description": "Whether the repository is archived.", + "type": "boolean" + }, + "assignees_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/assignees{/user}", + "type": "string" + }, + "blobs_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/git/blobs{/sha}", + "type": "string" + }, + "branches_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/branches{/branch}", + "type": "string" + }, + "clone_url": { + "example": "https://github.com/octocat/Hello-World.git", + "type": "string" + }, + "collaborators_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator}", + "type": "string" + }, + "comments_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/comments{/number}", + "type": "string" + }, + "commits_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/commits{/sha}", + "type": "string" + }, + "compare_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/compare/{base}...{head}", + "type": "string" + }, + "contents_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/contents/{+path}", + "type": "string" + }, + "contributors_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/contributors", + "format": "uri", + "type": "string" + }, + "created_at": { + "example": "2011-01-26T19:01:12Z", + "format": "date-time", + "nullable": true, + "type": "string" + }, + "default_branch": { + "description": "The default branch of the repository.", + "example": "master", + "type": "string" + }, + "delete_branch_on_merge": { + "default": false, + "description": "Whether to delete head branches when pull requests are merged", + "example": false, + "type": "boolean" + }, + "deployments_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/deployments", + "format": "uri", + "type": "string" + }, + "description": { + "example": "This your first repo!", + "nullable": true, + "type": "string" + }, + "disabled": { + "description": "Returns whether or not this repository disabled.", + "type": "boolean" + }, + "downloads_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/downloads", + "format": "uri", + "type": "string" + }, + "events_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/events", + "format": "uri", + "type": "string" + }, + "fork": { + "type": "boolean" + }, + "forks": { + "type": "integer" + }, + "forks_count": { + "example": 9, + "type": "integer" + }, + "forks_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/forks", + "format": "uri", + "type": "string" + }, + "full_name": { + "example": "octocat/Hello-World", + "type": "string" + }, + "git_commits_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/git/commits{/sha}", + "type": "string" + }, + "git_refs_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/git/refs{/sha}", + "type": "string" + }, + "git_tags_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/git/tags{/sha}", + "type": "string" + }, + "git_url": { + "example": "git:github.com/octocat/Hello-World.git", + "type": "string" + }, + "has_downloads": { + "default": true, + "description": "Whether downloads are enabled.", + "example": true, + "type": "boolean" + }, + "has_issues": { + "default": true, + "description": "Whether issues are enabled.", + "example": true, + "type": "boolean" + }, + "has_pages": { + "type": "boolean" + }, + "has_projects": { + "default": true, + "description": "Whether projects are enabled.", + "example": true, + "type": "boolean" + }, + "has_wiki": { + "default": true, + "description": "Whether the wiki is enabled.", + "example": true, + "type": "boolean" + }, + "homepage": { + "example": "https://github.com", + "format": "uri", + "nullable": true, + "type": "string" + }, + "hooks_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/hooks", + "format": "uri", + "type": "string" + }, + "html_url": { + "example": "https://github.com/octocat/Hello-World", + "format": "uri", + "type": "string" + }, + "id": { + "description": "Unique identifier of the repository", + "example": 42, + "type": "integer" + }, + "is_template": { + "default": false, + "description": "Whether this repository acts as a template that can be used to generate new repositories.", + "example": true, + "type": "boolean" + }, + "issue_comment_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/issues/comments{/number}", + "type": "string" + }, + "issue_events_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/issues/events{/number}", + "type": "string" + }, + "issues_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/issues{/number}", + "type": "string" + }, + "keys_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/keys{/key_id}", + "type": "string" + }, + "labels_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/labels{/name}", + "type": "string" + }, + "language": { + "nullable": true, + "type": "string" + }, + "languages_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/languages", + "format": "uri", + "type": "string" + }, + "license": { + "$ref": "#/components/schemas/nullable-license-simple" + }, + "master_branch": { + "type": "string" + }, + "merges_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/merges", + "format": "uri", + "type": "string" + }, + "milestones_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/milestones{/number}", + "type": "string" + }, + "mirror_url": { + "example": "git:git.example.com/octocat/Hello-World", + "format": "uri", + "nullable": true, + "type": "string" + }, + "name": { + "description": "The name of the repository.", + "example": "Team Environment", + "type": "string" + }, + "network_count": { + "type": "integer" + }, + "node_id": { + "example": "MDEwOlJlcG9zaXRvcnkxMjk2MjY5", + "type": "string" + }, + "notifications_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating}", + "type": "string" + }, + "open_issues": { + "type": "integer" + }, + "open_issues_count": { + "example": 0, + "type": "integer" + }, + "organization": { + "$ref": "#/components/schemas/nullable-simple-user" + }, + "owner": { + "$ref": "#/components/schemas/simple-user" + }, + "permissions": { + "properties": { + "admin": { + "type": "boolean" + }, + "maintain": { + "type": "boolean" + }, + "pull": { + "type": "boolean" + }, + "push": { + "type": "boolean" + }, + "triage": { + "type": "boolean" + } + }, + "required": ["admin", "pull", "push"], + "type": "object" + }, + "private": { + "default": false, + "description": "Whether the repository is private or public.", + "type": "boolean" + }, + "pulls_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/pulls{/number}", + "type": "string" + }, + "pushed_at": { + "example": "2011-01-26T19:06:43Z", + "format": "date-time", + "nullable": true, + "type": "string" + }, + "releases_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/releases{/id}", + "type": "string" + }, + "size": { + "example": 108, + "type": "integer" + }, + "ssh_url": { + "example": "git@github.com:octocat/Hello-World.git", + "type": "string" + }, + "stargazers_count": { + "example": 80, + "type": "integer" + }, + "stargazers_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/stargazers", + "format": "uri", + "type": "string" + }, + "starred_at": { + "example": "\"2020-07-09T00:17:42Z\"", + "type": "string" + }, + "statuses_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/statuses/{sha}", + "type": "string" + }, + "subscribers_count": { + "type": "integer" + }, + "subscribers_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/subscribers", + "format": "uri", + "type": "string" + }, + "subscription_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/subscription", + "format": "uri", + "type": "string" + }, + "svn_url": { + "example": "https://svn.github.com/octocat/Hello-World", + "format": "uri", + "type": "string" + }, + "tags_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/tags", + "format": "uri", + "type": "string" + }, + "teams_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/teams", + "format": "uri", + "type": "string" + }, + "template_repository": { + "nullable": true, + "properties": { + "allow_merge_commit": { + "type": "boolean" + }, + "allow_rebase_merge": { + "type": "boolean" + }, + "allow_squash_merge": { + "type": "boolean" + }, + "anonymous_access_enabled": { + "type": "boolean" + }, + "archive_url": { + "type": "string" + }, + "archived": { + "type": "boolean" + }, + "assignees_url": { + "type": "string" + }, + "blobs_url": { + "type": "string" + }, + "branches_url": { + "type": "string" + }, + "clone_url": { + "type": "string" + }, + "collaborators_url": { + "type": "string" + }, + "comments_url": { + "type": "string" + }, + "commits_url": { + "type": "string" + }, + "compare_url": { + "type": "string" + }, + "contents_url": { + "type": "string" + }, + "contributors_url": { + "type": "string" + }, + "created_at": { + "type": "string" + }, + "default_branch": { + "type": "string" + }, + "delete_branch_on_merge": { + "type": "boolean" + }, + "deployments_url": { + "type": "string" + }, + "description": { + "type": "string" + }, + "disabled": { + "type": "boolean" + }, + "downloads_url": { + "type": "string" + }, + "events_url": { + "type": "string" + }, + "fork": { + "type": "boolean" + }, + "forks_count": { + "type": "integer" + }, + "forks_url": { + "type": "string" + }, + "full_name": { + "type": "string" + }, + "git_commits_url": { + "type": "string" + }, + "git_refs_url": { + "type": "string" + }, + "git_tags_url": { + "type": "string" + }, + "git_url": { + "type": "string" + }, + "has_downloads": { + "type": "boolean" + }, + "has_issues": { + "type": "boolean" + }, + "has_pages": { + "type": "boolean" + }, + "has_projects": { + "type": "boolean" + }, + "has_wiki": { + "type": "boolean" + }, + "homepage": { + "type": "string" + }, + "hooks_url": { + "type": "string" + }, + "html_url": { + "type": "string" + }, + "id": { + "type": "integer" + }, + "is_template": { + "type": "boolean" + }, + "issue_comment_url": { + "type": "string" + }, + "issue_events_url": { + "type": "string" + }, + "issues_url": { + "type": "string" + }, + "keys_url": { + "type": "string" + }, + "labels_url": { + "type": "string" + }, + "language": { + "type": "string" + }, + "languages_url": { + "type": "string" + }, + "merges_url": { + "type": "string" + }, + "milestones_url": { + "type": "string" + }, + "mirror_url": { + "type": "string" + }, + "name": { + "type": "string" + }, + "network_count": { + "type": "integer" + }, + "node_id": { + "type": "string" + }, + "notifications_url": { + "type": "string" + }, + "open_issues_count": { + "type": "integer" + }, + "owner": { + "properties": { + "avatar_url": { + "type": "string" + }, + "events_url": { + "type": "string" + }, + "followers_url": { + "type": "string" + }, + "following_url": { + "type": "string" + }, + "gists_url": { + "type": "string" + }, + "gravatar_id": { + "type": "string" + }, + "html_url": { + "type": "string" + }, + "id": { + "type": "integer" + }, + "login": { + "type": "string" + }, + "node_id": { + "type": "string" + }, + "organizations_url": { + "type": "string" + }, + "received_events_url": { + "type": "string" + }, + "repos_url": { + "type": "string" + }, + "site_admin": { + "type": "boolean" + }, + "starred_url": { + "type": "string" + }, + "subscriptions_url": { + "type": "string" + }, + "type": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "type": "object" + }, + "permissions": { + "properties": { + "admin": { + "type": "boolean" + }, + "maintain": { + "type": "boolean" + }, + "pull": { + "type": "boolean" + }, + "push": { + "type": "boolean" + }, + "triage": { + "type": "boolean" + } + }, + "type": "object" + }, + "private": { + "type": "boolean" + }, + "pulls_url": { + "type": "string" + }, + "pushed_at": { + "type": "string" + }, + "releases_url": { + "type": "string" + }, + "size": { + "type": "integer" + }, + "ssh_url": { + "type": "string" + }, + "stargazers_count": { + "type": "integer" + }, + "stargazers_url": { + "type": "string" + }, + "statuses_url": { + "type": "string" + }, + "subscribers_count": { + "type": "integer" + }, + "subscribers_url": { + "type": "string" + }, + "subscription_url": { + "type": "string" + }, + "svn_url": { + "type": "string" + }, + "tags_url": { + "type": "string" + }, + "teams_url": { + "type": "string" + }, + "topics": { + "items": { + "type": "string" + }, + "type": "array" + }, + "trees_url": { + "type": "string" + }, + "updated_at": { + "type": "string" + }, + "url": { + "type": "string" + }, + "visibility": { + "type": "string" + }, + "watchers_count": { + "type": "integer" + } + }, + "type": "object" + }, + "topics": { + "items": { + "type": "string" + }, + "type": "array" + }, + "trees_url": { + "example": "http://api.github.com/repos/octocat/Hello-World/git/trees{/sha}", + "type": "string" + }, + "updated_at": { + "example": "2011-01-26T19:14:43Z", + "format": "date-time", + "nullable": true, + "type": "string" + }, + "url": { + "example": "https://api.github.com/repos/octocat/Hello-World", + "format": "uri", + "type": "string" + }, + "visibility": { + "default": "public", + "description": "The repository visibility: public, private, or internal.", + "type": "string" + }, + "watchers": { + "type": "integer" + }, + "watchers_count": { + "example": 80, + "type": "integer" + } + }, + "required": [ + "archive_url", + "assignees_url", + "blobs_url", + "branches_url", + "collaborators_url", + "comments_url", + "commits_url", + "compare_url", + "contents_url", + "contributors_url", + "deployments_url", + "description", + "downloads_url", + "events_url", + "fork", + "forks_url", + "full_name", + "git_commits_url", + "git_refs_url", + "git_tags_url", + "hooks_url", + "html_url", + "id", + "node_id", + "issue_comment_url", + "issue_events_url", + "issues_url", + "keys_url", + "labels_url", + "languages_url", + "merges_url", + "milestones_url", + "name", + "notifications_url", + "owner", + "private", + "pulls_url", + "releases_url", + "stargazers_url", + "statuses_url", + "subscribers_url", + "subscription_url", + "tags_url", + "teams_url", + "trees_url", + "url", + "clone_url", + "default_branch", + "forks", + "forks_count", + "git_url", + "has_downloads", + "has_issues", + "has_projects", + "has_wiki", + "has_pages", + "homepage", + "language", + "archived", + "disabled", + "mirror_url", + "open_issues", + "open_issues_count", + "license", + "pushed_at", + "size", + "ssh_url", + "stargazers_count", + "svn_url", + "watchers", + "watchers_count", + "created_at", + "updated_at" + ], + "title": "Repository", + "type": "object" + } + } + } + }, + "insertionIndex": 1077 + }, + { + "id": "389a8a3f-948c-48ee-ba84-11c00ca57375", + "name": "List organization repositories - default", + "request": { + "urlPath": "/orgs/uhnycq3yjkjv4raniqchqfzpd9t5monu8hxitm1el42wgnnny7aj0fyhlk0rx0xwf8j3yfnuow286z44odxlhjoeo6ytvpnhp606zupf/repos", + "method": "GET" + }, + "response": { + "status": 200, + "body": "[ {\n \"archive_url\" : \"https://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref}\",\n \"archived\" : false,\n \"assignees_url\" : \"https://api.github.com/repos/octocat/Hello-World/assignees{/user}\",\n \"blobs_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/blobs{/sha}\",\n \"branches_url\" : \"https://api.github.com/repos/octocat/Hello-World/branches{/branch}\",\n \"clone_url\" : \"https://github.com/octocat/Hello-World.git\",\n \"collaborators_url\" : \"https://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator}\",\n \"comments_url\" : \"https://api.github.com/repos/octocat/Hello-World/comments{/number}\",\n \"commits_url\" : \"https://api.github.com/repos/octocat/Hello-World/commits{/sha}\",\n \"compare_url\" : \"https://api.github.com/repos/octocat/Hello-World/compare/{base}...{head}\",\n \"contents_url\" : \"https://api.github.com/repos/octocat/Hello-World/contents/{+path}\",\n \"contributors_url\" : \"https://api.github.com/repos/octocat/Hello-World/contributors\",\n \"created_at\" : \"2011-01-26T19:01:12Z\",\n \"default_branch\" : \"master\",\n \"deployments_url\" : \"https://api.github.com/repos/octocat/Hello-World/deployments\",\n \"description\" : \"This your first repo!\",\n \"disabled\" : false,\n \"downloads_url\" : \"https://api.github.com/repos/octocat/Hello-World/downloads\",\n \"events_url\" : \"https://api.github.com/repos/octocat/Hello-World/events\",\n \"fork\" : false,\n \"forks_count\" : 9,\n \"forks_url\" : \"https://api.github.com/repos/octocat/Hello-World/forks\",\n \"full_name\" : \"octocat/Hello-World\",\n \"git_commits_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/commits{/sha}\",\n \"git_refs_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/refs{/sha}\",\n \"git_tags_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/tags{/sha}\",\n \"git_url\" : \"git:github.com/octocat/Hello-World.git\",\n \"has_downloads\" : true,\n \"has_issues\" : true,\n \"has_pages\" : false,\n \"has_projects\" : true,\n \"has_wiki\" : true,\n \"homepage\" : \"https://github.com\",\n \"hooks_url\" : \"https://api.github.com/repos/octocat/Hello-World/hooks\",\n \"html_url\" : \"https://github.com/octocat/Hello-World\",\n \"id\" : 1296269,\n \"is_template\" : false,\n \"issue_comment_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/comments{/number}\",\n \"issue_events_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/events{/number}\",\n \"issues_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues{/number}\",\n \"keys_url\" : \"https://api.github.com/repos/octocat/Hello-World/keys{/key_id}\",\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World/labels{/name}\",\n \"languages_url\" : \"https://api.github.com/repos/octocat/Hello-World/languages\",\n \"merges_url\" : \"https://api.github.com/repos/octocat/Hello-World/merges\",\n \"milestones_url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones{/number}\",\n \"mirror_url\" : \"git:git.example.com/octocat/Hello-World\",\n \"name\" : \"Hello-World\",\n \"node_id\" : \"MDEwOlJlcG9zaXRvcnkxMjk2MjY5\",\n \"notifications_url\" : \"https://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating}\",\n \"open_issues_count\" : 0,\n \"owner\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"permissions\" : {\n \"admin\" : false,\n \"pull\" : true,\n \"push\" : false\n },\n \"private\" : false,\n \"pulls_url\" : \"https://api.github.com/repos/octocat/Hello-World/pulls{/number}\",\n \"pushed_at\" : \"2011-01-26T19:06:43Z\",\n \"releases_url\" : \"https://api.github.com/repos/octocat/Hello-World/releases{/id}\",\n \"size\" : 108,\n \"ssh_url\" : \"git@github.com:octocat/Hello-World.git\",\n \"stargazers_count\" : 80,\n \"stargazers_url\" : \"https://api.github.com/repos/octocat/Hello-World/stargazers\",\n \"statuses_url\" : \"https://api.github.com/repos/octocat/Hello-World/statuses/{sha}\",\n \"subscribers_url\" : \"https://api.github.com/repos/octocat/Hello-World/subscribers\",\n \"subscription_url\" : \"https://api.github.com/repos/octocat/Hello-World/subscription\",\n \"svn_url\" : \"https://svn.github.com/octocat/Hello-World\",\n \"tags_url\" : \"https://api.github.com/repos/octocat/Hello-World/tags\",\n \"teams_url\" : \"https://api.github.com/repos/octocat/Hello-World/teams\",\n \"template_repository\" : {\n \"allow_merge_commit\" : true,\n \"allow_rebase_merge\" : true,\n \"allow_squash_merge\" : true,\n \"archive_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/{archive_format}{/ref}\",\n \"archived\" : false,\n \"assignees_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/assignees{/user}\",\n \"blobs_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/git/blobs{/sha}\",\n \"branches_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/branches{/branch}\",\n \"clone_url\" : \"https://github.com/octocat/Hello-World-Template.git\",\n \"collaborators_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/collaborators{/collaborator}\",\n \"comments_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/comments{/number}\",\n \"commits_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/commits{/sha}\",\n \"compare_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/compare/{base}...{head}\",\n \"contents_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/contents/{+path}\",\n \"contributors_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/contributors\",\n \"created_at\" : \"2011-01-26T19:01:12Z\",\n \"default_branch\" : \"master\",\n \"delete_branch_on_merge\" : true,\n \"deployments_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/deployments\",\n \"description\" : \"This your first repo!\",\n \"disabled\" : false,\n \"downloads_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/downloads\",\n \"events_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/events\",\n \"fork\" : false,\n \"forks\" : 9,\n \"forks_count\" : 9,\n \"forks_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/forks\",\n \"full_name\" : \"octocat/Hello-World-Template\",\n \"git_commits_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/git/commits{/sha}\",\n \"git_refs_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/git/refs{/sha}\",\n \"git_tags_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/git/tags{/sha}\",\n \"git_url\" : \"git:github.com/octocat/Hello-World-Template.git\",\n \"has_downloads\" : true,\n \"has_issues\" : true,\n \"has_pages\" : false,\n \"has_projects\" : true,\n \"has_wiki\" : true,\n \"homepage\" : \"https://github.com\",\n \"hooks_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/hooks\",\n \"html_url\" : \"https://github.com/octocat/Hello-World-Template\",\n \"id\" : 1296269,\n \"is_template\" : true,\n \"issue_comment_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/issues/comments{/number}\",\n \"issue_events_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/issues/events{/number}\",\n \"issues_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/issues{/number}\",\n \"keys_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/keys{/key_id}\",\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/labels{/name}\",\n \"languages_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/languages\",\n \"license\" : {\n \"html_url\" : \"https://api.github.com/licenses/mit\",\n \"key\" : \"mit\",\n \"name\" : \"MIT License\",\n \"node_id\" : \"MDc6TGljZW5zZW1pdA==\",\n \"spdx_id\" : \"MIT\",\n \"url\" : \"https://api.github.com/licenses/mit\"\n },\n \"merges_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/merges\",\n \"milestones_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/milestones{/number}\",\n \"mirror_url\" : \"git:git.example.com/octocat/Hello-World-Template\",\n \"name\" : \"Hello-World-Template\",\n \"network_count\" : 0,\n \"node_id\" : \"MDEwOlJlcG9zaXRvcnkxMjk2MjY5\",\n \"notifications_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/notifications{?since,all,participating}\",\n \"open_issues\" : 0,\n \"open_issues_count\" : 0,\n \"owner\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"permissions\" : {\n \"admin\" : false,\n \"pull\" : true,\n \"push\" : false\n },\n \"private\" : false,\n \"pulls_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/pulls{/number}\",\n \"pushed_at\" : \"2011-01-26T19:06:43Z\",\n \"releases_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/releases{/id}\",\n \"size\" : 108,\n \"ssh_url\" : \"git@github.com:octocat/Hello-World-Template.git\",\n \"stargazers_count\" : 80,\n \"stargazers_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/stargazers\",\n \"statuses_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/statuses/{sha}\",\n \"subscribers_count\" : 42,\n \"subscribers_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/subscribers\",\n \"subscription_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/subscription\",\n \"svn_url\" : \"https://svn.github.com/octocat/Hello-World-Template\",\n \"tags_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/tags\",\n \"teams_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/teams\",\n \"temp_clone_token\" : \"ABTLWHOULUVAXGTRYU7OC2876QJ2O\",\n \"topics\" : [ \"octocat\", \"atom\", \"electron\", \"api\" ],\n \"trees_url\" : \"https://api.github.com/repos/octocat/Hello-World-Template/git/trees{/sha}\",\n \"updated_at\" : \"2011-01-26T19:14:43Z\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World-Template\",\n \"visibility\" : \"public\",\n \"watchers\" : 80,\n \"watchers_count\" : 80\n },\n \"topics\" : [ \"octocat\", \"atom\", \"electron\", \"api\" ],\n \"trees_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/trees{/sha}\",\n \"updated_at\" : \"2011-01-26T19:14:43Z\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World\",\n \"visibility\" : \"public\",\n \"watchers_count\" : 80\n} ]", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "389a8a3f-948c-48ee-ba84-11c00ca57375", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.795102Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "repos/list-for-org", + "schema": { + "items": { + "$ref": "#/components/schemas/minimal-repository" + }, + "type": "array" + } + } + } + }, + "insertionIndex": 1078 + }, + { + "id": "42ec2c1a-b5d7-4bec-a877-7ee30a7b11d9", + "name": "Set public organization membership for the authenticated user (application/json)", + "request": { + "urlPath": "/orgs/fl6udids7dft761v4b4fe36s6sdfl4idaakjxsuf0tfisdxik4eeiook6s31/public_members/chung.pacocha", + "method": "PUT", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 403, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/235713\",\n \"message\" : \"Reprehenderit ut quis quidem voluptatem. Rerum voluptatem repellat beatae ad. Quam aut illo adipisci veniam. Et voluptatum nesciunt sit.\",\n \"url\" : \"https://web.example.mocklab.io/750509\",\n \"status\" : \"eqg0djgxxdwtzwmiamwh45\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "42ec2c1a-b5d7-4bec-a877-7ee30a7b11d9", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.79499Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "orgs/set-public-membership-for-authenticated-user", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 1079 + }, + { + "id": "58edd5a4-9471-4403-8103-9da66f6132a1", + "name": "Set public organization membership for the authenticated user - 204", + "request": { + "urlPath": "/orgs/vf1lap9t6q2ap7tcah2ic90xgp2n7fsizhpckbpibozdvgy58zqh9o29e8ojbmu5o9k4h8nuaqhyt5yl8ufozb5xaau4gupik3kztr7cdsrr22hsldq3lwg2t1jthpt93g7j62qgchr2a3oq8dvyq6obm9insajsfzz9xksrlmsglgyg5l20wl/public_members/kirstie.boehm", + "method": "PUT" + }, + "response": { + "status": 204 + }, + "uuid": "58edd5a4-9471-4403-8103-9da66f6132a1", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.79476Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "orgs/set-public-membership-for-authenticated-user" + } + } + }, + "insertionIndex": 1080 + }, + { + "id": "1b2c758c-7952-44cf-a4b9-fb883b35f28a", + "name": "Check public organization membership for a user - 404", + "request": { + "urlPath": "/orgs/ev4uzkkeyr2xg48n42dq8larbvvhb81bmejlasufi3f6yfjhr9d27mw7ww323gw0p/public_members/agueda.cummings", + "method": "GET" + }, + "response": { + "status": 404 + }, + "uuid": "1b2c758c-7952-44cf-a4b9-fb883b35f28a", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.794708Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "orgs/check-public-membership-for-user" + } + } + }, + "insertionIndex": 1081 + }, + { + "id": "bd8ea468-9f57-423b-87c4-2a512d1742d9", + "name": "Check public organization membership for a user - 204", + "request": { + "urlPath": "/orgs/ve9hioir0k3andpmcbc1x6r56e4zsucgbsw6um3iav/public_members/tessie.gutmann", + "method": "GET" + }, + "response": { + "status": 204 + }, + "uuid": "bd8ea468-9f57-423b-87c4-2a512d1742d9", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.794663Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "orgs/check-public-membership-for-user" + } + } + }, + "insertionIndex": 1082 + }, + { + "id": "6edb2b87-72ce-43f8-b0c2-8d0fb67b3058", + "name": "Remove public organization membership for the authenticated user - 204", + "request": { + "urlPath": "/orgs/izh9tt3itxnmtzwdw74xpli3yoz1fq794nm4ncxl1tspbn1e/public_members/leonie.reichert", + "method": "DELETE" + }, + "response": { + "status": 204 + }, + "uuid": "6edb2b87-72ce-43f8-b0c2-8d0fb67b3058", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.794613Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "orgs/remove-public-membership-for-authenticated-user" + } + } + }, + "insertionIndex": 1083 + }, + { + "id": "bea1667b-a291-4feb-be4b-bb65b8044b3c", + "name": "List public organization members - default", + "request": { + "urlPath": "/orgs/s3pki14aajx1fw2wwbnyhia7505oqllgcocamcuy88hf6okv2c03p8z7qq1awls3fnf3firr1k3xr8ivnmrhwe151e1iqvltc9vzl6jb2c64zosoto9xe6sx1rs50ahqg0nnkpjvzbvkgcby3ql62y1n6lgmpzbmqyde0g9/public_members", + "method": "GET" + }, + "response": { + "status": 200, + "body": "[ {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n} ]", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "bea1667b-a291-4feb-be4b-bb65b8044b3c", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.794552Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "orgs/list-public-members", + "schema": { + "items": { + "$ref": "#/components/schemas/simple-user" + }, + "type": "array" + } + } + } + }, + "insertionIndex": 1084 + }, + { + "id": "89def205-f56d-4803-9f95-dcaa8825c2e7", + "name": "Create an organization project", + "request": { + "urlPath": "/orgs/6tes1ixltoyshdykknjwovjdj1haarykgajksiuxwf3m9w2dw5mrcq4gtpyot6j09l1fptrd2pllood30f0omp2isn7xsabwp6gym7f5nzl8km55494qfm1p0ubsj98v3y7pkzidzgvwf9txknkijnl3mqreix0gn887ji1xv0mxvwydhiiritje5bjm5ea1yhkw34i/projects", + "method": "POST" + }, + "response": { + "status": 422, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/351188\",\n \"message\" : \"Vel suscipit quos illo doloribus perferendis assumenda. Totam impedit eum itaque porro quia non ipsam. Expedita et atque dolor mollitia molestiae porro amet. Rerum laudantium ut aliquid. Ad doloribus \",\n \"errors\" : [ \"qbo64ztjknt6nu4uqq0ni8c346nwkbpvp3tmsbvfv5svptbbge9qmw7qw0uik7snf506tkqsu5jn56lmfz0xt0kzu7eftci2skz7vwnz4zdo4rm0iav6v8dkyqbke593n1wpy\", \"h08oi5ow\", \"v1eu9ljb4xdoe5eq7rz7re58oxwe17421cunkhpy96m28d5c3z5eougzmalq14v8f1f5yel7otweno4bp92w79juizxevm3mevc7e\", \"ulkvtgp8go2jy2d8dt10ajy6ioyqgsg4uokfmbt0sbz3lgegg04nb27uq0ncvrqz1one6qldxvhnyurfheobxl2lpl6ziq3fgcx0zz8weh2v7dstfihghyyxeeypni\", \"glcx35q0qdorq\" ]\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "89def205-f56d-4803-9f95-dcaa8825c2e7", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.794495Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "projects/create-for-org", + "schema": { + "description": "Validation Error Simple", + "properties": { + "documentation_url": { + "type": "string" + }, + "errors": { + "items": { + "type": "string" + }, + "type": "array" + }, + "message": { + "type": "string" + } + }, + "required": ["message", "documentation_url"], + "title": "Validation Error Simple", + "type": "object" + } + } + } + }, + "insertionIndex": 1085 + }, + { + "id": "5a61c802-6f70-4c12-9e84-2d43d715cfc8", + "name": "Create an organization project", + "request": { + "urlPath": "/orgs/8oai3fzwmnik4azidh2i1feq7vtgyv5nolq/projects", + "method": "POST" + }, + "response": { + "status": 410, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/226384\",\n \"message\" : \"Tempora cumque est. Veritatis consequuntur architecto aut. In libero maiores ut.\",\n \"url\" : \"https://web.example.mocklab.io/258541\",\n \"status\" : \"jy2sljif37cvj90nfebwcnmn8ic34837x5jh1j5wqk3oigic28ibxm60y1ygj0lecfxruh34cexiphqxyrk9fchtheoxugsnt3ry1hxlhbwryp0v168m1akpg\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "5a61c802-6f70-4c12-9e84-2d43d715cfc8", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.794292Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "projects/create-for-org", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 1086 + }, + { + "id": "0fba2b51-451e-400b-8761-f612f8c7c997", + "name": "Create an organization project", + "request": { + "urlPath": "/orgs/933f9ifnjstzgvyve2ngensg3korfyxi6ufo4ag5b004f3utjfn7y3t0amlvsrwr4y8uk2fp2p0j3d9qwupxn9o4ya5ykqc9xt1lhrp6cahw9j41teqivdzbnacpc16z34u1a/projects", + "method": "POST" + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/993676\",\n \"message\" : \"Ipsum consequatur ducimus consequatur sunt. Eligendi dolores molestiae et aut adipisci veniam aut. Modi perspiciatis eum recusandae dolorum veritatis doloremque incidunt. Magni qui nihil in dolore. Su\",\n \"url\" : \"https://web.example.mocklab.io/603301\",\n \"status\" : \"g2h5epilaq3d1qwupljtjnqtiktzaab4owipn5s989ubr8baddas7bxvt8m7gms1lcb4et1yo0h6tovhd2qz7hmp42tlqy3ic6n5giakgq9rp9vy8rjr3egxk1q0mqxjtea0w4bge28t58so435zrdjwdhw47tio8kc\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "0fba2b51-451e-400b-8761-f612f8c7c997", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.794082Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "projects/create-for-org", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 1087 + }, + { + "id": "cca3678f-5823-4992-bed4-e5c6854d5ad9", + "name": "Create an organization project", + "request": { + "urlPath": "/orgs/i146slfn3wn30dddk9tpuxr0a38fcqabbydylmyz3kas5vgl5ose23tp1i6azgysp4yldprv2ihxwvmdhqcbkgj4odv213rjk3y1lyz/projects", + "method": "POST" + }, + "response": { + "status": 403, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/318897\",\n \"message\" : \"Rerum et sed. Voluptas provident optio harum ipsa et eum. Porro voluptas alias est.\",\n \"url\" : \"https://web.example.mocklab.io/687261\",\n \"status\" : \"me8\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "cca3678f-5823-4992-bed4-e5c6854d5ad9", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.793855Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "projects/create-for-org", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 1088 + }, + { + "id": "66a547a4-2130-414e-8fa2-7dd7d021d553", + "name": "Create an organization project", + "request": { + "urlPath": "/orgs/b63kcpje2btt5xsirzsg2a896r082a62s5ogiy5vfvnvkkkmzo9ptxh1tzw3g09x5x1mftpupaqnyh5ki4nfhcrn7m/projects", + "method": "POST" + }, + "response": { + "status": 401, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/760238\",\n \"message\" : \"Inventore autem expedita aperiam quam blanditiis. Nihil harum consequatur. Magnam voluptatibus et dolorem. Rem saepe et magnam laborum praesentium ea.\",\n \"url\" : \"https://web.example.mocklab.io/093534\",\n \"status\" : \"dkhad14ir67jowuwj3m91lwg1ucciyc6ahld6zm7sz9e9iuhvm9ahxw2zxnp9p9o6e0ab94ikk9jfgwujpdc4mecm5qcs7dpopxuh6ggcd\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "66a547a4-2130-414e-8fa2-7dd7d021d553", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.793641Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "projects/create-for-org", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 1089 + }, + { + "id": "d3fd27ea-e17b-489f-933e-96bec5bc62b9", + "name": "Create an organization project - default", + "request": { + "urlPath": "/orgs/8ugwk1xqpf1tht1pjjrylj7kha8jan8to9eap7qfmz3nld1m4p5fjlehc0bmkcrhvndaxxk4f/projects", + "method": "POST" + }, + "response": { + "status": 201, + "body": "{\n \"body\" : \"High-level roadmap for the upcoming year.\",\n \"columns_url\" : \"https://api.github.com/projects/1002605/columns\",\n \"created_at\" : \"2011-04-11T20:09:31Z\",\n \"creator\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"html_url\" : \"https://github.com/orgs/api-playground/projects/1\",\n \"id\" : 1002605,\n \"name\" : \"Organization Roadmap\",\n \"node_id\" : \"MDc6UHJvamVjdDEwMDI2MDU=\",\n \"number\" : 1,\n \"owner_url\" : \"https://api.github.com/orgs/octocat\",\n \"state\" : \"open\",\n \"updated_at\" : \"2014-03-04T18:58:10Z\",\n \"url\" : \"https://api.github.com/projects/1002605\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "d3fd27ea-e17b-489f-933e-96bec5bc62b9", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.793391Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "projects/create-for-org", + "schema": { + "description": "Projects are a way to organize columns and cards of work.", + "properties": { + "body": { + "description": "Body of the project", + "example": "This project represents the sprint of the first week in January", + "nullable": true, + "type": "string" + }, + "columns_url": { + "example": "https://api.github.com/projects/1002604/columns", + "format": "uri", + "type": "string" + }, + "created_at": { + "example": "2011-04-10T20:09:31Z", + "format": "date-time", + "type": "string" + }, + "creator": { + "$ref": "#/components/schemas/nullable-simple-user" + }, + "html_url": { + "example": "https://github.com/api-playground/projects-test/projects/12", + "format": "uri", + "type": "string" + }, + "id": { + "example": 1002604, + "type": "integer" + }, + "name": { + "description": "Name of the project", + "example": "Week One Sprint", + "type": "string" + }, + "node_id": { + "example": "MDc6UHJvamVjdDEwMDI2MDQ=", + "type": "string" + }, + "number": { + "example": 1, + "type": "integer" + }, + "organization_permission": { + "description": "The baseline permission that all organization members have on this project. Only present if owner is an organization.", + "enum": ["read", "write", "admin", "none"], + "type": "string" + }, + "owner_url": { + "example": "https://api.github.com/repos/api-playground/projects-test", + "format": "uri", + "type": "string" + }, + "private": { + "description": "Whether or not this project can be seen by everyone. Only present if owner is an organization.", + "type": "boolean" + }, + "state": { + "description": "State of the project; either 'open' or 'closed'", + "example": "open", + "type": "string" + }, + "updated_at": { + "example": "2014-03-03T18:58:10Z", + "format": "date-time", + "type": "string" + }, + "url": { + "example": "https://api.github.com/projects/1002604", + "format": "uri", + "type": "string" + } + }, + "required": [ + "id", + "node_id", + "number", + "name", + "body", + "state", + "url", + "html_url", + "owner_url", + "creator", + "columns_url", + "created_at", + "updated_at" + ], + "title": "Project", + "type": "object" + } + } + } + }, + "insertionIndex": 1090 + }, + { + "id": "fbb5538c-a6ff-4c35-893a-125034771a1c", + "name": "List organization projects", + "request": { + "urlPath": "/orgs/w67a9ji2u3cqjhjv5aycltcv161bqmqx9bc67oe9c5syftgmwvnmrzs3t2akyac1ua2j2l8ci9axcejbw4yb3fcy3jhyl96f6uoisqewwbl6e0wlphgx9ee4bwxta0r2x3rn2vl4zxpvcr4w3556/projects", + "method": "GET" + }, + "response": { + "status": 422, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/472495\",\n \"message\" : \"Neque eaque culpa commodi. Rerum fuga sed dolor eaque et nihil vel. Facere deserunt similique. Voluptatem dolor nam ea impedit.\",\n \"errors\" : [ \"sur193am2jed13zr0fq0r0p7ltqlw8x23lcjatq6tl9xw7il72dbayxwyf67oj7hyy3p4acqslb9fymj4plse3lwxq2iy30ruhd19leiorf41hpeyt\", \"eac6m1cfwl9lg5ecztel4ie8v0osl8nhpv342u3pl2w7nnsm8l3ubrb5ejvt07b32i2ck8h6nkoccobc2br2tjn23ymzcfjffdzij3bicsqxgvv2\", \"77epypw4qal0mmf0\", \"a71vaacodnj2j0st6rufi1q05kd4glp4logsvlo6k9xvaexf2kh67920iw76zvrzaa3qxkp9v1s72hgza1i9545y85gc0c0drnrilr7gawlxmt044mygpl7vpn\", \"gadsufkt7s48lpu9fc6cm2x82pzjt60wvsoz1r9rksyutqiebi9rdw73n1z5j1crm2wzlk9cdlya\" ]\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "fbb5538c-a6ff-4c35-893a-125034771a1c", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.793173Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "projects/list-for-org", + "schema": { + "description": "Validation Error Simple", + "properties": { + "documentation_url": { + "type": "string" + }, + "errors": { + "items": { + "type": "string" + }, + "type": "array" + }, + "message": { + "type": "string" + } + }, + "required": ["message", "documentation_url"], + "title": "Validation Error Simple", + "type": "object" + } + } + } + }, + "insertionIndex": 1091 + }, + { + "id": "73f93271-69c4-41c9-a07a-fac10e8dcc67", + "name": "List organization projects - default", + "request": { + "urlPath": "/orgs/yifx9picijcictz1couqc3dtltgvdl94wh6vith7m4ajbxvq8coqf0qs7iu1egj3ufkq86dmjaxnrn04mmb994ts45a4n3ghk9h7y231x47y5puc21rd5w1nsj03f7rji2h1hwulw66jphwhnxh8r87kmr1/projects", + "method": "GET" + }, + "response": { + "status": 200, + "body": "[ {\n \"body\" : \"High-level roadmap for the upcoming year.\",\n \"columns_url\" : \"https://api.github.com/projects/1002605/columns\",\n \"created_at\" : \"2011-04-11T20:09:31Z\",\n \"creator\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"html_url\" : \"https://github.com/orgs/api-playground/projects/1\",\n \"id\" : 1002605,\n \"name\" : \"Organization Roadmap\",\n \"node_id\" : \"MDc6UHJvamVjdDEwMDI2MDU=\",\n \"number\" : 1,\n \"owner_url\" : \"https://api.github.com/orgs/octocat\",\n \"state\" : \"open\",\n \"updated_at\" : \"2014-03-04T18:58:10Z\",\n \"url\" : \"https://api.github.com/projects/1002605\"\n} ]", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "73f93271-69c4-41c9-a07a-fac10e8dcc67", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.792947Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "projects/list-for-org", + "schema": { + "items": { + "$ref": "#/components/schemas/project" + }, + "type": "array" + } + } + } + }, + "insertionIndex": 1092 + }, + { + "id": "7f61f292-1ad7-4599-bcd6-cf5e92907a26", + "name": "Update pre-receive hook enforcement for an organization - default", + "request": { + "urlPath": "/orgs/6wnfbsl/pre-receive-hooks/4616361261537246400", + "method": "PATCH" + }, + "response": { + "status": 200, + "body": "{\n \"allow_downstream_configuration\" : false,\n \"configuration_url\" : \"https://github.example.com/api/v3/orgs/octocat/pre-receive-hooks/42\",\n \"enforcement\" : \"enabled\",\n \"id\" : 42,\n \"name\" : \"Check Commits\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "7f61f292-1ad7-4599-bcd6-cf5e92907a26", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.792882Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "enterprise-admin/update-pre-receive-hook-enforcement-for-org", + "schema": { + "properties": { + "allow_downstream_configuration": { + "type": "boolean" + }, + "configuration_url": { + "type": "string" + }, + "enforcement": { + "type": "string" + }, + "id": { + "type": "integer" + }, + "name": { + "type": "string" + } + }, + "type": "object" + } + } + } + }, + "insertionIndex": 1093 + }, + { + "id": "c933e5cd-bc50-448d-ae01-59edf2807f72", + "name": "Get a pre-receive hook for an organization - default", + "request": { + "urlPath": "/orgs/znz52wg8deak35qh1box65wc985u0qa4byej/pre-receive-hooks/3589462493550590161", + "method": "GET" + }, + "response": { + "status": 200, + "body": "{\n \"allow_downstream_configuration\" : true,\n \"configuration_url\" : \"https://github.example.com/api/v3/admin/pre-receive-hooks/42\",\n \"enforcement\" : \"disabled\",\n \"id\" : 42,\n \"name\" : \"Check Commits\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "c933e5cd-bc50-448d-ae01-59edf2807f72", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.792814Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "enterprise-admin/get-pre-receive-hook-for-org", + "schema": { + "properties": { + "allow_downstream_configuration": { + "type": "boolean" + }, + "configuration_url": { + "type": "string" + }, + "enforcement": { + "type": "string" + }, + "id": { + "type": "integer" + }, + "name": { + "type": "string" + } + }, + "type": "object" + } + } + } + }, + "insertionIndex": 1094 + }, + { + "id": "b296247b-f7c6-45a4-a438-450823b8db9c", + "name": "Remove pre-receive hook enforcement for an organization - default", + "request": { + "urlPath": "/orgs/7rr51za04w4r/pre-receive-hooks/7268216757645073018", + "method": "DELETE" + }, + "response": { + "status": 200, + "body": "{\n \"allow_downstream_configuration\" : true,\n \"configuration_url\" : \"https://github.example.com/api/v3/admin/pre-receive-hooks/42\",\n \"enforcement\" : \"disabled\",\n \"id\" : 42,\n \"name\" : \"Check Commits\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "b296247b-f7c6-45a4-a438-450823b8db9c", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.792746Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "enterprise-admin/remove-pre-receive-hook-enforcement-for-org", + "schema": { + "properties": { + "allow_downstream_configuration": { + "type": "boolean" + }, + "configuration_url": { + "type": "string" + }, + "enforcement": { + "type": "string" + }, + "id": { + "type": "integer" + }, + "name": { + "type": "string" + } + }, + "type": "object" + } + } + } + }, + "insertionIndex": 1095 + }, + { + "id": "a2332d94-edae-435f-9bfe-6f4586f82209", + "name": "List pre-receive hooks for an organization - default", + "request": { + "urlPath": "/orgs/mrhr90qbbgv6cyk8iwrmufveop04q2voph5lyhktjdbmq93pbs4kzmab6yh3xq3m5fce8o9qp6is4bua05ubcuy5ld7t/pre-receive-hooks", + "method": "GET" + }, + "response": { + "status": 200, + "body": "[ {\n \"allow_downstream_configuration\" : true,\n \"configuration_url\" : \"https://github.example.com/api/v3/admin/pre-receive-hooks/42\",\n \"enforcement\" : \"disabled\",\n \"id\" : 42,\n \"name\" : \"Check Commits\"\n} ]", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "a2332d94-edae-435f-9bfe-6f4586f82209", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.792646Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "enterprise-admin/list-pre-receive-hooks-for-org", + "schema": { + "items": { + "$ref": "#/components/schemas/org-pre-receive-hook" + }, + "type": "array" + } + } + } + }, + "insertionIndex": 1096 + }, + { + "id": "f1764fde-046a-45a0-b6a8-133294717c08", + "name": "Convert an organization member to outside collaborator (application/json)", + "request": { + "urlPath": "/orgs/fa9o2q5pzoervootjopb96e00s2j3a2zvamz09kyty368pgc23m0gp9ca7vcuivotlr5mdxxk8qud2u7tjxo9sj7y4442n7tmw0bv7xe2yubas9ckdpcjr0zgwkat5yz1ddgnb38ox348mattnkinp7a3azeznmz8qfg7h0dyztte6t823dmv7cdc2t1mul7ph08/outside_collaborators/edmundo.konopelski", + "method": "PUT", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/431082\",\n \"message\" : \"Blanditiis voluptatibus et sed magnam maiores. Vero esse commodi perferendis ut porro ab. Qui omnis et. Sit aspernatur fugiat voluptatibus quas qui. Non accusantium aperiam expedita quod fugit volupta\",\n \"url\" : \"https://web.example.mocklab.io/084074\",\n \"status\" : \"a2ykxyqxqc5fl1ivlb74h7gnuhs7d1xbbya5p0wbt2j58zemwkea63o1lamzx25p\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "f1764fde-046a-45a0-b6a8-133294717c08", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.792584Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "orgs/convert-member-to-outside-collaborator", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 1097 + }, + { + "id": "d71dfdd6-0a48-40f4-9175-84f397c884b6", + "name": "Convert an organization member to outside collaborator - 403", + "request": { + "urlPath": "/orgs/41trynle81jni866zyrr3ru1wzbabrgqz0pwlf3aeo2wmk9sptca1gu4wadtstseyw7736ik1ggjilv/outside_collaborators/rikki.buckridge", + "method": "PUT" + }, + "response": { + "status": 403 + }, + "uuid": "d71dfdd6-0a48-40f4-9175-84f397c884b6", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.792334Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "orgs/convert-member-to-outside-collaborator" + } + } + }, + "insertionIndex": 1098 + }, + { + "id": "cb900c01-83c7-47f8-851c-2033485d4cb2", + "name": "Convert an organization member to outside collaborator - 204", + "request": { + "urlPath": "/orgs/zvb8wyiecgpfnoovb1t0txvhs1d5h0q3yxzmo/outside_collaborators/mariette.hessel", + "method": "PUT" + }, + "response": { + "status": 204 + }, + "uuid": "cb900c01-83c7-47f8-851c-2033485d4cb2", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.792287Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "orgs/convert-member-to-outside-collaborator" + } + } + }, + "insertionIndex": 1099 + }, + { + "id": "b3044a13-2a74-4626-aeb4-9b924dab1e02", + "name": "Convert an organization member to outside collaborator (application/json)", + "request": { + "urlPath": "/orgs/c8xqmpc2gmu2b7xncp6tq21ora5wz7014we/outside_collaborators/joel.mills", + "method": "PUT", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 202, + "body": "{ }", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "b3044a13-2a74-4626-aeb4-9b924dab1e02", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.792233Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "orgs/convert-member-to-outside-collaborator", + "schema": { + "additionalProperties": false, + "type": "object" + } + } + } + }, + "insertionIndex": 1100 + }, + { + "id": "6432b81e-9014-49ff-ad88-c8e84745c772", + "name": "Remove outside collaborator from an organization (application/json) - response-if-user-is-a-member-of-the-organization", + "request": { + "urlPath": "/orgs/d0408w4u8f32nkf3qzmuevq4w884yhwitui3iszrm53excvmrf9xdp7rgmxwdwj6xgf8bwhi4trl7884ux8uyfi76d5l3jp6sw69tq6zyrzpqd0onygk17flmzi8s31fvo4x35ud9bm5ub1mg7ajyt4s5d5ao684hxh1831tp829fouc0mj0hszumvx2o8gr/outside_collaborators/zaida.block", + "method": "DELETE", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 422, + "body": "{\n \"documentation_url\" : \"https://docs.github.com/enterprise-server@2.21/rest/reference/orgs#remove-outside-collaborator\",\n \"message\" : \"You cannot specify an organization member to remove as an outside collaborator.\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "6432b81e-9014-49ff-ad88-c8e84745c772", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.792148Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "orgs/remove-outside-collaborator", + "schema": { + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "type": "object" + } + } + } + }, + "insertionIndex": 1101 + }, + { + "id": "ea080846-38ca-43d8-88f3-7b294d59a390", + "name": "Remove outside collaborator from an organization - 204", + "request": { + "urlPath": "/orgs/3wh78ouvo5v3b52t43if0r8jl119bmalzvv8aaq5ojn7qb9un5s3yr2a1sirdocp20mc4knpcvpc8zrxietx0slo1zycxdyyqevsvez32peqef781eiwycib3igoah60lpcjpcoc8/outside_collaborators/phil.walsh", + "method": "DELETE" + }, + "response": { + "status": 204 + }, + "uuid": "ea080846-38ca-43d8-88f3-7b294d59a390", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.792045Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "orgs/remove-outside-collaborator" + } + } + }, + "insertionIndex": 1102 + }, + { + "id": "923f16e8-5f76-4362-9625-908859e44532", + "name": "List outside collaborators for an organization - default", + "request": { + "urlPath": "/orgs/rywcnw7snab8rgu3hsus9yyo7hrml91f68x9x7jjk8x38f652etcwwakuur31l1k2wyy4bjtz430/outside_collaborators", + "method": "GET" + }, + "response": { + "status": 200, + "body": "[ {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n} ]", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "923f16e8-5f76-4362-9625-908859e44532", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.79199Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "orgs/list-outside-collaborators", + "schema": { + "items": { + "$ref": "#/components/schemas/simple-user" + }, + "type": "array" + } + } + } + }, + "insertionIndex": 1103 + }, + { + "id": "bb27e0e0-4816-4bcd-b0d2-b8e18725aa62", + "name": "Set organization membership for a user", + "request": { + "urlPath": "/orgs/rxwvjcjz214mm7x24wadf8ej8hyec3x6zpehc6aut76i72983oqqwwmedy5jq0j57cqj9c7iasz0spj0xogqytl87duu3frb5eugqd23xex6dlt9jtzfa3socihpigf4fndmty23ar2e71lsjyfbr7z6hh76vbwlejzsdm4/memberships/jefferey.auer", + "method": "PUT" + }, + "response": { + "status": 422, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/941420\",\n \"message\" : \"Quis et dolorem odio illo quos sed. Veniam velit ex nisi qui fugit recusandae. Et eveniet sunt dolorem velit odit ut. Eius explicabo animi odio omnis.\",\n \"errors\" : [ {\n \"code\" : \"8fd4gaofr2tinyljr2ir3gztwi0c4\",\n \"field\" : \"p6ac7bu726ygwkfrc2a9zk11vf7z60714bb48sqxhe6vcakrd7e26wspw18d94j5xww7q17h2c4yjgfg1ec7s5d8qfv1t9maaa9sp49dhzjo8q48czp5qn4i7k2upd564ka4uyzj6fr608y2qbosfafg9pk1q2kevvcfgvb9dhgfbe7uc\",\n \"resource\" : \"2fclkbgwbe5l6iv0fy1dmj43kor203es162o3q7y041ijmwozhrsz087ngq27kt0rsbgunhhdqgtw0egpfwaxdpsvdqywwul596kolpiin6m68bknjyekpzj9jktblk1xszdezx6qkc88ufc3iw1lf9m23i89p0vx5bbnbfqrcsczm08nu6q0lcvo8uymumnf55q\",\n \"index\" : 2164549912785037484,\n \"message\" : \"Ut praesentium est sit. Eligendi tempore eveniet dolore hic non eius. Quibusdam officia sed rerum.\",\n \"value\" : { }\n }, {\n \"code\" : \"i6vgwpetyj97lnodmbzxsmn3upv380dkmayf1gj71yny2v2dlqnzcjqk0xs9bj47upss8s139a84v1zhnc00\",\n \"field\" : \"l7alr7thes5kqqe70vzzxw1vxwuidn5t0w1e9ydsa\",\n \"resource\" : \"piaiiemgl8dy9z9vtjck9a8rhxs782qfaiihil2bcfn8bnxxbnr0lvif4jw2csln6f6ac9uxrfa2n1dj6rd4tzm4ge0fdvfcplfyjqadyx0jmii9m03893zd7ok1rqsfr02ow5p090k6\",\n \"index\" : 1072568751933557807,\n \"message\" : \"Autem explicabo doloremque non voluptas. Tempore eos voluptas laborum ipsam nam esse. Asperiores qui distinctio et nihil impedit beatae.\",\n \"value\" : { }\n }, {\n \"code\" : \"fewc87jgjn7d5rq4tozvcfe939s0w56sinztdyt0jutc62co24443v3pnsfzafppwsncio6oytdt1vi70yzlf914dpk2e76bng78gjhrklmr1cft96d1\",\n \"field\" : \"0k3z2qvyigtpg7j2nirlg7auxjfz7553nzpyhuu7b1rhs7jhk6wndbm34s082zmdn22sc4wxtro3ypfqbkixr4waqbwx0v62uoqz3wye8p6n5vr3wbum140fv9tuprglediczi0og41bejh2fkn744dqbdx4udmc1ypnsy\",\n \"resource\" : \"teyeb80jsbtk5zhsijcmljvepnb9b\",\n \"index\" : 909556822905725121,\n \"message\" : \"Eaque rerum deleniti vel fugiat. Minima nostrum voluptas laboriosam sunt officiis. Ut distinctio iure. Quos quaerat repellat distinctio asperiores corrupti odio ut.\",\n \"value\" : { }\n }, {\n \"code\" : \"wz5b6fk9xgg75hm8atywdeo12lcg3vxmm0uf1cdw76a927c\",\n \"field\" : \"8xd1s04sibf359feb8nk2d2gopdv6g\",\n \"resource\" : \"99d17dsndpgtrpabhlh0yd07yck7zx4vjb276tvdog64xtp1dbpvvraxxsoi76d8ini3vgkugypp3o82ji7x4t8qs2bybhqmnen1aazi1cwhfk6ie63juge40hoy1iaitvzx7n5nbupvzj067y9pkk8v02lc8x\",\n \"index\" : 2712640085123157888,\n \"message\" : \"Aut assumenda quisquam. Voluptas qui sapiente modi repellat. Labore autem sed unde sunt voluptas.\",\n \"value\" : { }\n }, {\n \"code\" : \"d13n5758pjwslyb62ec61ngtzb6y2ncd91o7xdolkg2me07sa3mnmeo4wf\",\n \"field\" : \"uutpdxanivhj4o01gs3ijscneuysnpgdyfo2p04x2jihr187zq0wk8z1hsoq2cozi7wilnm7ckhm33tdlugevfo4bch7be67rzkhgi40r5i\",\n \"resource\" : \"08gvug9csf59rmfqfoq64kvn678iazroaci2m4ncemyu0hm\",\n \"index\" : 7395914643234368450,\n \"message\" : \"Aut minima et perspiciatis ducimus quasi dolorem. Voluptatem quod et repellendus non qui ratione esse. Sed quisquam possimus.\",\n \"value\" : { }\n }, {\n \"code\" : \"o4y7w3mlqvru6b760vww5wcjwqa0h74h11iaufwwdk5elesubrkzduopt9onzbwlv12bkh4hqr0h7cwzl59vkuca7c1vpk49me6z9vkzdnc0zq1ynehwvymaoflxkcrl7\",\n \"field\" : \"p9gux4sitamadvagrmxin03pe99qu2ecf8b0t023dk46af4k5xwdyu6umict51didsoha830islxdnh9p0bbfeawq2gkd3xwta269ofhte9uzkmg0m2l0nn99zl8dgns5tv1hk9eiqs1emyji2eesyffc3v4afrfl9edybq395\",\n \"resource\" : \"swi4nyo5t8hrlv1gw9pzkzr6nywss79yxtfzm9tp5thc\",\n \"index\" : 7437798114109157991,\n \"message\" : \"Voluptatem molestiae odio officiis voluptatem pariatur assumenda ut. Error est quo. Cumque recusandae id voluptates aut reprehenderit libero.\",\n \"value\" : { }\n }, {\n \"code\" : \"2y58p2ba0hsv5djeh3k0hem0hh5x0d86w1hafjhxwo33k3mogeqkjil6iz38c1zep5qgjnt27x8fmdn1sxo\",\n \"field\" : \"yk88k7docebwrijs6t6v3v44uy88ep6mo7dkais1tnipdlbx6zjw5aw9l00gwfvg6hjwge973o5h4f2jo28axor900xqdhtg9mzq\",\n \"resource\" : \"ija1p8zeze32ml7otnkdkk328089x89ap9bthh9q62muct9kb0ot71uigfmzcyhlnr0gp6e8u1024608r8i9pm2y1amipin952vm5iq73x3i4fnyov4io2n2mtwsux3i7udc95u84fximsyyj92p6eixt7jsu6eokj581sw71c\",\n \"index\" : 244408716522828405,\n \"message\" : \"Ducimus tempora nisi et illum. Magni minus natus nihil quo quae eos dicta. Porro cupiditate ut ex libero maxime dolor. Non vero nobis inventore iste totam nisi dolores. Sit alias dolor non voluptatibu\",\n \"value\" : { }\n }, {\n \"code\" : \"i997xyz5yrpnopy6azt1nfmvds401x0mcf4h0\",\n \"field\" : \"506grmw27h79ztj0qxjnbc826azc2pa8f7f29rojpfnghctsb9unjve2ei3h7ekz59lknss7phovmoglnqw30vtnqh33qxlh02f14df\",\n \"resource\" : \"yfslum99ft00jhz3db8ffx4k1vi4pkrb5zd895xrmfu70hksme\",\n \"index\" : 6271744067268283830,\n \"message\" : \"Ut rerum occaecati. Praesentium qui sit. Ut nemo ex quidem. Voluptate enim provident in tempore.\",\n \"value\" : { }\n } ]\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "bb27e0e0-4816-4bcd-b0d2-b8e18725aa62", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.791929Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "orgs/set-membership-for-user", + "schema": { + "description": "Validation Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "errors": { + "items": { + "properties": { + "code": { + "type": "string" + }, + "field": { + "type": "string" + }, + "index": { + "type": "integer" + }, + "message": { + "type": "string" + }, + "resource": { + "type": "string" + }, + "value": { + "oneOf": [ + { + "nullable": true, + "type": "string" + }, + { + "nullable": true, + "type": "integer" + }, + { + "items": { + "type": "string" + }, + "nullable": true, + "type": "array" + } + ] + } + }, + "required": ["code"], + "type": "object" + }, + "type": "array" + }, + "message": { + "type": "string" + } + }, + "required": ["message", "documentation_url"], + "title": "Validation Error", + "type": "object" + } + } + } + }, + "insertionIndex": 1104 + }, + { + "id": "1a55c71e-aeb0-470f-9308-79c7db28a9d2", + "name": "Set organization membership for a user", + "request": { + "urlPath": "/orgs/nd4flf3cmvujejctfsfo6suvj3/memberships/lola.stiedemann", + "method": "PUT" + }, + "response": { + "status": 403, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/411470\",\n \"message\" : \"Unde deleniti consequatur cupiditate corporis. Cumque maiores nesciunt adipisci recusandae. Similique dolorem temporibus.\",\n \"url\" : \"https://web.example.mocklab.io/837622\",\n \"status\" : \"nly6ft07a9uwcjyw9iz5n0yvsxou28uwrg07s972ihcqowl9joi0riuicm9w9he7de6xoqshxt4rayibi3o5brdyvllzkie5lqd4xwp8r1atffminjdq7s3lg6xac4byuylwowhv3cxucjcyxbc32kssd9llyubt59\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "1a55c71e-aeb0-470f-9308-79c7db28a9d2", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.791078Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "orgs/set-membership-for-user", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 1105 + }, + { + "id": "be1af5fc-c85c-4e84-96a9-724116973e07", + "name": "Set organization membership for a user - response-if-user-already-had-membership-with-organization", + "request": { + "urlPath": "/orgs/jny5r/memberships/victorina.romaguera", + "method": "PUT" + }, + "response": { + "status": 200, + "body": "{\n \"organization\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"description\" : \"A great organization\",\n \"events_url\" : \"https://api.github.com/orgs/github/events\",\n \"hooks_url\" : \"https://api.github.com/orgs/github/hooks\",\n \"id\" : 1,\n \"issues_url\" : \"https://api.github.com/orgs/github/issues\",\n \"login\" : \"github\",\n \"members_url\" : \"https://api.github.com/orgs/github/members{/member}\",\n \"node_id\" : \"MDEyOk9yZ2FuaXphdGlvbjE=\",\n \"public_members_url\" : \"https://api.github.com/orgs/github/public_members{/member}\",\n \"repos_url\" : \"https://api.github.com/orgs/github/repos\",\n \"url\" : \"https://api.github.com/orgs/github\"\n },\n \"organization_url\" : \"https://api.github.com/orgs/octocat\",\n \"role\" : \"admin\",\n \"state\" : \"active\",\n \"url\" : \"https://api.github.com/orgs/octocat/memberships/defunkt\",\n \"user\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n }\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "be1af5fc-c85c-4e84-96a9-724116973e07", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.790837Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "orgs/set-membership-for-user", + "schema": { + "description": "Org Membership", + "properties": { + "organization": { + "$ref": "#/components/schemas/organization-simple" + }, + "organization_url": { + "example": "https://api.github.com/orgs/octocat", + "format": "uri", + "type": "string" + }, + "permissions": { + "properties": { + "can_create_repository": { + "type": "boolean" + } + }, + "required": ["can_create_repository"], + "type": "object" + }, + "role": { + "description": "The user's membership type in the organization.", + "enum": ["admin", "member", "billing_manager"], + "example": "admin", + "type": "string" + }, + "state": { + "description": "The state of the member in the organization. The `pending` state indicates the user has not yet accepted an invitation.", + "enum": ["active", "pending"], + "example": "active", + "type": "string" + }, + "url": { + "example": "https://api.github.com/orgs/octocat/memberships/defunkt", + "format": "uri", + "type": "string" + }, + "user": { + "$ref": "#/components/schemas/nullable-simple-user" + } + }, + "required": ["state", "role", "organization_url", "url", "organization", "user"], + "title": "Org Membership", + "type": "object" + } + } + } + }, + "insertionIndex": 1106 + }, + { + "id": "79fedcad-d80d-44a8-b91b-6381f11090fc", + "name": "Get organization membership for a user", + "request": { + "urlPath": "/orgs/hjp4mlss6wnc4jrarue9khllcc4khtgk2hghkvhk/memberships/brett.douglas", + "method": "GET" + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/343168\",\n \"message\" : \"Quia dolorum ut deserunt nihil laudantium doloremque. Doloremque doloribus laudantium id perspiciatis. Officia quam sit. Ut nisi itaque.\",\n \"url\" : \"https://web.example.mocklab.io/501927\",\n \"status\" : \"qg7drgwmjszd7ny1qnndjdpwqtq7lw8wrfxwklyf4svjelifxefjuiji1kwrqcktp\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "79fedcad-d80d-44a8-b91b-6381f11090fc", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.790732Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "orgs/get-membership-for-user", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 1107 + }, + { + "id": "4edfb71f-47be-402a-a07c-ded3871e9316", + "name": "Get organization membership for a user", + "request": { + "urlPath": "/orgs/9x7bbm4w1zbfaxijo6dovit6cpwh3s213vv63sw927hlousldknrstkn0g6q3q0qefem9r4jinz76dn1pir258df9/memberships/sergio.romaguera", + "method": "GET" + }, + "response": { + "status": 403, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/104602\",\n \"message\" : \"Nemo vel dolores sit perspiciatis sed. Iste commodi aut mollitia omnis qui voluptate praesentium. Perferendis dolor sint exercitationem modi. Qui dolor quidem vitae ipsa impedit voluptatibus. Dolor re\",\n \"url\" : \"https://web.example.mocklab.io/540472\",\n \"status\" : \"xdbn94bf7j8jull7wtfvc2utvfaqgqjyt5apfz5v29z0h560pppeclrgyiiks71apell\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "4edfb71f-47be-402a-a07c-ded3871e9316", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.790509Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "orgs/get-membership-for-user", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 1108 + }, + { + "id": "108d1f55-52cb-49ce-ac30-a92d8573e1b9", + "name": "Get organization membership for a user - response-if-user-has-an-active-admin-membership-with-organization", + "request": { + "urlPath": "/orgs/m2dhekl9tct9qbmqdhpjo752eqplc9an4f2odkyz1cm8j7qrcgm0t7fob1xcsogx6snl0a6makzhim0paofh8g2gcacceoy7gsjfsr15fsxxu8qcddriu5rmkypdwoqc68n3dll3e0z7bwpo3sbqipy7b9l62y98cv19i80qmi9om09t381u11vxhh743gv3ry/memberships/raven.kris", + "method": "GET" + }, + "response": { + "status": 200, + "body": "{\n \"organization\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"description\" : \"A great organization\",\n \"events_url\" : \"https://api.github.com/orgs/github/events\",\n \"hooks_url\" : \"https://api.github.com/orgs/github/hooks\",\n \"id\" : 1,\n \"issues_url\" : \"https://api.github.com/orgs/github/issues\",\n \"login\" : \"github\",\n \"members_url\" : \"https://api.github.com/orgs/github/members{/member}\",\n \"node_id\" : \"MDEyOk9yZ2FuaXphdGlvbjE=\",\n \"public_members_url\" : \"https://api.github.com/orgs/github/public_members{/member}\",\n \"repos_url\" : \"https://api.github.com/orgs/github/repos\",\n \"url\" : \"https://api.github.com/orgs/github\"\n },\n \"organization_url\" : \"https://api.github.com/orgs/octocat\",\n \"role\" : \"admin\",\n \"state\" : \"active\",\n \"url\" : \"https://api.github.com/orgs/octocat/memberships/defunkt\",\n \"user\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n }\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "108d1f55-52cb-49ce-ac30-a92d8573e1b9", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.790271Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "orgs/get-membership-for-user", + "schema": { + "description": "Org Membership", + "properties": { + "organization": { + "$ref": "#/components/schemas/organization-simple" + }, + "organization_url": { + "example": "https://api.github.com/orgs/octocat", + "format": "uri", + "type": "string" + }, + "permissions": { + "properties": { + "can_create_repository": { + "type": "boolean" + } + }, + "required": ["can_create_repository"], + "type": "object" + }, + "role": { + "description": "The user's membership type in the organization.", + "enum": ["admin", "member", "billing_manager"], + "example": "admin", + "type": "string" + }, + "state": { + "description": "The state of the member in the organization. The `pending` state indicates the user has not yet accepted an invitation.", + "enum": ["active", "pending"], + "example": "active", + "type": "string" + }, + "url": { + "example": "https://api.github.com/orgs/octocat/memberships/defunkt", + "format": "uri", + "type": "string" + }, + "user": { + "$ref": "#/components/schemas/nullable-simple-user" + } + }, + "required": ["state", "role", "organization_url", "url", "organization", "user"], + "title": "Org Membership", + "type": "object" + } + } + } + }, + "insertionIndex": 1109 + }, + { + "id": "c47da8c7-1378-48bb-a925-f3b70a84fd5e", + "name": "Remove organization membership for a user (application/json)", + "request": { + "urlPath": "/orgs/44pab0xboha51c/memberships/pearle.schoen", + "method": "DELETE", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/015394\",\n \"message\" : \"Vel laudantium qui. Dolorem labore natus ullam. Voluptate autem voluptate.\",\n \"url\" : \"https://web.example.mocklab.io/152421\",\n \"status\" : \"m0nz0dw5shuti9itk8mm14oaer7gbqgfx9m7sowkobe2qlfuwkhbrx7n8expla14nbff9kih1ez7qezdmulae3ywtwpomc3a1yk2xyozvwk9sm165b6ucbzd4yblmog5q3z0dxt70bwrn7iflj4ewlyd17n1t37wzg0\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "c47da8c7-1378-48bb-a925-f3b70a84fd5e", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.790123Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "orgs/remove-membership-for-user", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 1110 + }, + { + "id": "b234eccb-2e7f-4f1a-805b-c9ccafc76043", + "name": "Remove organization membership for a user (application/json)", + "request": { + "urlPath": "/orgs/qpvapf01ujj27acwn7j0agg28vijtej/memberships/verlie.greenfelder", + "method": "DELETE", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 403, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/058187\",\n \"message\" : \"Dignissimos dolorem aut nam rerum. Repudiandae dolore quo quaerat. Quis vel minus vitae.\",\n \"url\" : \"https://web.example.mocklab.io/131265\",\n \"status\" : \"hi5r363dzmk0i1lpbmjszu64qql22m8aw5p1adpwyyip67q6x0rvbcz1xs4tzdtrb7blequff6\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "b234eccb-2e7f-4f1a-805b-c9ccafc76043", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.789895Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "orgs/remove-membership-for-user", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 1111 + }, + { + "id": "81618df6-74fa-4cbc-a880-4a50ba69f52f", + "name": "Remove organization membership for a user - 204", + "request": { + "urlPath": "/orgs/balwe5wrxy7avxrbfgyhxipujjewt4knpzimzizeyhuzol7h3f2c1rs4yfeqfb57r3sfhvzpvrkh24idosq8tmrus9i5gjq459nbbimy/memberships/dan.ebert", + "method": "DELETE" + }, + "response": { + "status": 204 + }, + "uuid": "81618df6-74fa-4cbc-a880-4a50ba69f52f", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.789673Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "orgs/remove-membership-for-user" + } + } + }, + "insertionIndex": 1112 + }, + { + "id": "b18284ef-4853-4bae-b084-139a136395b7", + "name": "Check organization membership for a user - 404", + "request": { + "urlPath": "/orgs/3kg7azhx6g7k5tyr5iisb82cobkwmee3aqb06gpkewb11bc2m9qiso0989sjis98rneh5ga4w58ea94a35kjfhusosugso4lwb46o0yocxk9egvcqqv5ncs2ge2tgbsk2/members/delphine.herzog", + "method": "GET" + }, + "response": { + "status": 404 + }, + "uuid": "b18284ef-4853-4bae-b084-139a136395b7", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.789623Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "orgs/check-membership-for-user" + } + } + }, + "insertionIndex": 1113 + }, + { + "id": "144fd3a8-e4dd-4806-b2f3-417a603f1f30", + "name": "Check organization membership for a user - 302", + "request": { + "urlPath": "/orgs/y84dymop3wda56r2w295ewb4a87rc6xc4iny9121jdb4oaf3d3/members/haley.stroman", + "method": "GET" + }, + "response": { + "status": 302 + }, + "uuid": "144fd3a8-e4dd-4806-b2f3-417a603f1f30", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.789576Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "orgs/check-membership-for-user" + } + } + }, + "insertionIndex": 1114 + }, + { + "id": "af150b6d-0910-4113-a8a4-4adbfde2c6e9", + "name": "Check organization membership for a user - 204", + "request": { + "urlPath": "/orgs/3g90hdz1sfebqc8yknimosmhl0ih2nmb7zdifrd2nadmw6v/members/lesha.sanford", + "method": "GET" + }, + "response": { + "status": 204 + }, + "uuid": "af150b6d-0910-4113-a8a4-4adbfde2c6e9", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.78953Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "orgs/check-membership-for-user" + } + } + }, + "insertionIndex": 1115 + }, + { + "id": "9cc95788-1c88-49d4-96dc-317421a6e1df", + "name": "Remove an organization member (application/json)", + "request": { + "urlPath": "/orgs/frboqv20w35kkegwpto4wvz2u3mhv386ezvxa3zoqyzsnm3da1wttqzpmc40vfrxy9egl9nwnke4tc2wjyw3i7kjovgusn9ck2o2ern5yxsvu3iofv99oq7xesicvykbo4uet1qck9jifoz/members/otha.runolfsson", + "method": "DELETE", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 403, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/193118\",\n \"message\" : \"Maxime soluta delectus ut accusamus velit minima. Rerum doloremque ex. Et mollitia quaerat dolores nostrum quo animi fugit. Commodi porro eum sequi quibusdam commodi.\",\n \"url\" : \"https://web.example.mocklab.io/043034\",\n \"status\" : \"p1w2ql2okyq5wxp0h1epo2m7ax5kshe757guozkrdqikns0rnr39grys3qgtb8qom76hr4r7fe672snkdnt862y4sh2xouj956k0w10j0pv8e93ud7zp5u5ahuvbj2x144lryhboass2yxrucwn0lb9ma1l198nd8p\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "9cc95788-1c88-49d4-96dc-317421a6e1df", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.789472Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "orgs/remove-member", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 1116 + }, + { + "id": "d00bbe0b-86b8-40de-aa6d-4e313eedaf5a", + "name": "Remove an organization member - 204", + "request": { + "urlPath": "/orgs/ao6voq4xfuz51ubgd1v9b73uyl1xdtnzs2p8j59hf45wwgiz5v3sjq9feukc5eg9rpjug2ex3gchvhyy1b9187uqn2bw4lc69gh9dvrti9rwqbax5ebultkr9xsg8yi127iksb9/members/eldon.bradtke", + "method": "DELETE" + }, + "response": { + "status": 204 + }, + "uuid": "d00bbe0b-86b8-40de-aa6d-4e313eedaf5a", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.789239Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "orgs/remove-member" + } + } + }, + "insertionIndex": 1117 + }, + { + "id": "0cdb9001-dfd0-402b-9390-52b3769aad8f", + "name": "List organization members (application/json)", + "request": { + "urlPath": "/orgs/9mtdf2u71oyfzx2m9m3jpp5as6x67fq7yxlna3vw2gdwrt6r6h0l9y042pqasd6xawc2677hdpg71orio5ejmyesj5/members", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 422, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/125655\",\n \"message\" : \"Delectus omnis aliquid omnis libero voluptatum est. Ipsum non et ea eos dolores officiis. Minus nihil quibusdam similique reiciendis. Qui in voluptatem quos occaecati. Et vero velit eos mollitia.\",\n \"errors\" : [ {\n \"code\" : \"2dlp1sbmpvip7eil86zu3ovfpuiv14esak1jhje2r4tl8i3d8526yq3on6dltxpqycvfgdlhy2h9hitjk\",\n \"field\" : \"ao8y7batn791tfiofpy1t4ntue3tw0ipu0djtzad3xuaoexbc3a7fmazzbh471w91t9ua9awjk0wo2ou6o335a886l84\",\n \"resource\" : \"ludwg9e2iny5ouoy4qpck\",\n \"index\" : 7832616265259584049,\n \"message\" : \"Quae blanditiis dolor. Ex qui temporibus. Qui possimus aut omnis et et possimus. Et deserunt voluptatem eum.\",\n \"value\" : { }\n }, {\n \"code\" : \"bdv4o3lz1hwws4nz925jn1sm1y1n87649a0s5wiwmv7fyhw06hqxsvqeq4wrmsy6ol11fx\",\n \"field\" : \"5kvz1gmrsubbnts3xejtrw2j388iys7zey7sbmxxoa1dvamd9cbnbxvr5uuztqsutdgkjrxwxftbd7agrl5em3nqb7g6kbkoddh7r7uxhdlcqs7qpsyhupqhl4tj3h8i5hycatbm6qf5tw7f2ll54hr7rs11w90tjx3km76xifrqvtkd1tye\",\n \"resource\" : \"g7ayyhpwj3okjakorejjp90g4ihoy5rud944gqp2hl3rcey4poyxrxyj98ugvws6u37f8dpn2gowscsmpo7nx3\",\n \"index\" : 8232507400240910295,\n \"message\" : \"Dolor vel occaecati aut vero sed dolorem. Nostrum facere sint molestiae. Voluptas quo molestiae error.\",\n \"value\" : { }\n }, {\n \"code\" : \"zi48zx4n3bj175pmele05gxd7mv2huwojxuwvkbhyhshxz4ll517f407ci0qo85yalcmc92uhgbsibszddcxhocoyuq68n9xoxoe\",\n \"field\" : \"ier6ef30x4ka0nli21f5m973w5zlpmm48ctfotpznps3jswqtnfb9txgqdcsj1nzdrdh0wg6t9qhaqksuf34761jqv5qirmeac2ntaebkavongxx0nz49uvqtnuwnft5qt5ll094fvqev0nvn53uff03auh6wzo4ad\",\n \"resource\" : \"vtlq82a082a4t5126ywoznfb0i0jk4v4mflzz545c09nncxm4mal9jlmngxtyustpt3x2rcnjmy5lmcs738mlnkfs1kkdt655e2irnutqyfensz7nuqv1oj\",\n \"index\" : 8546152647510560207,\n \"message\" : \"Architecto praesentium non excepturi totam mollitia molestiae eum. Voluptas voluptas totam. Dolorem molestiae et dolorum qui sunt non. Provident dolorem non sapiente sint.\",\n \"value\" : { }\n }, {\n \"code\" : \"fiquektv9hgfkzrxls162t12anld86l0538rwuf6pdvd75mt7rftpijtiv8rh1koj5bt272b1rslyqrunc03zjdq8vs4smkixj30cev0nqvhf4v2k7p\",\n \"field\" : \"gq46s7ku3bo4i6k375fmx6zs5hjafbohkky785j9vpk515jv00ctvkzl1rs7eyrn2sbfk4uxrcyghu3g0p9zb111pwlwh9pd6ji6l89hl4j3v9gz40mypxyqixffb5n2nsm26tld6fjzu5n70ivb58aqsl29fwsu6lxxiv5ihaq06g4ovb0h4mggypeybrdxyitoj\",\n \"resource\" : \"tm3xvtwznc2ewz8bq813czyvroiih6y38b6vyad02g41al23evt061dm7x2a6ypowts8ooufo0ywc0ns9q6togicnvc05quwjuxvcjbqhio2uhyo4lwrbfwqtfcnqpi8b5806uc200ej60gma1rlawfqfjlwr018dqrsjy7bec5cqo41\",\n \"index\" : 1762330978989292148,\n \"message\" : \"Aspernatur enim iusto qui non rerum minima. Iusto sunt cupiditate et harum aperiam labore. Ratione nobis ea at.\",\n \"value\" : { }\n } ]\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "0cdb9001-dfd0-402b-9390-52b3769aad8f", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.789166Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "orgs/list-members", + "schema": { + "description": "Validation Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "errors": { + "items": { + "properties": { + "code": { + "type": "string" + }, + "field": { + "type": "string" + }, + "index": { + "type": "integer" + }, + "message": { + "type": "string" + }, + "resource": { + "type": "string" + }, + "value": { + "oneOf": [ + { + "nullable": true, + "type": "string" + }, + { + "nullable": true, + "type": "integer" + }, + { + "items": { + "type": "string" + }, + "nullable": true, + "type": "array" + } + ] + } + }, + "required": ["code"], + "type": "object" + }, + "type": "array" + }, + "message": { + "type": "string" + } + }, + "required": ["message", "documentation_url"], + "title": "Validation Error", + "type": "object" + } + } + } + }, + "insertionIndex": 1118 + }, + { + "id": "3919ea48-34aa-474d-8b6a-77e0463aa770", + "name": "List organization members - 302", + "request": { + "urlPath": "/orgs/3yzdj7/members", + "method": "GET" + }, + "response": { + "status": 302 + }, + "uuid": "3919ea48-34aa-474d-8b6a-77e0463aa770", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.788649Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "orgs/list-members" + } + } + }, + "insertionIndex": 1119 + }, + { + "id": "869e7a82-4f99-406f-a3e1-5f93b52be369", + "name": "List organization members (application/json) - default", + "request": { + "urlPath": "/orgs/h10xnr6vzcfjwrc7p324n9f0cpvn2g25e4clgcsr7u0wm4tl67281f3m57ka181z8i5a2bvbpxm7bf4zrsqz6jmmavkpt31norr1jz37yz1gbc5efhb6n7c73hddub1qdaidy857lyzn2w/members", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 200, + "body": "[ {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n} ]", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "869e7a82-4f99-406f-a3e1-5f93b52be369", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.788616Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "orgs/list-members", + "schema": { + "items": { + "$ref": "#/components/schemas/simple-user" + }, + "type": "array" + } + } + } + }, + "insertionIndex": 1120 + }, + { + "id": "9edf16f2-c32b-46e6-b598-003cda1b50ac", + "name": "List organization issues assigned to the authenticated user", + "request": { + "urlPath": "/orgs/cewrfymbpgtdwcs5jui0exgxev5srkvhskualk7metvmjzq645f10bmnz2tn5no11urabee3f6ixc8jes2a54r84cjwzybmttglrmdsxyha2yr0ccizozlb4zviyitur3xvhar/issues", + "method": "GET" + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/871172\",\n \"message\" : \"Dolor facere unde atque dolores et corrupti delectus. Repellat aut ut qui. Distinctio nihil perspiciatis exercitationem inventore commodi est.\",\n \"url\" : \"https://web.example.mocklab.io/642453\",\n \"status\" : \"3xzqmdac1t0165amwtsm88ansbspkfhgbtjhwmz2b3eb3v66hsacn46hc0nleoa12et2uita4f9fqs8pv55sud0jvttuna2y8t6ve4dz0q3l84khmvhn09fc3jg25lvf8mi174zhko85jnjx\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "9edf16f2-c32b-46e6-b598-003cda1b50ac", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.788562Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "issues/list-for-org", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 1121 + }, + { + "id": "4f719ca2-4518-44c3-af47-27aad588e80a", + "name": "List organization issues assigned to the authenticated user - default", + "request": { + "urlPath": "/orgs/5dwuh8k1ql7shxi63ni7svep07xnabgdkn0f0ppsqhcobt3h2sezua177bpa91t7k2femzzyo2g68ylcnw8q4wz9tfzwa7erkp8fr63h8pgammytzfyto00fvlu0xxszckk/issues", + "method": "GET" + }, + "response": { + "status": 200, + "body": "[ {\n \"active_lock_reason\" : \"too heated\",\n \"assignee\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"assignees\" : [ {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n } ],\n \"author_association\" : \"COLLABORATOR\",\n \"body\" : \"I'm having a problem with this.\",\n \"comments\" : 0,\n \"comments_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347/comments\",\n \"created_at\" : \"2011-04-22T13:33:48Z\",\n \"events_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347/events\",\n \"html_url\" : \"https://github.com/octocat/Hello-World/issues/1347\",\n \"id\" : 1,\n \"labels\" : [ {\n \"color\" : \"f29513\",\n \"default\" : true,\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"name\" : \"bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/labels/bug\"\n } ],\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347/labels{/name}\",\n \"locked\" : true,\n \"milestone\" : {\n \"closed_at\" : \"2013-02-12T13:22:01Z\",\n \"closed_issues\" : 8,\n \"created_at\" : \"2011-04-10T20:09:31Z\",\n \"creator\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"description\" : \"Tracking milestone for version 1.0\",\n \"due_on\" : \"2012-10-09T23:39:01Z\",\n \"html_url\" : \"https://github.com/octocat/Hello-World/milestones/v1.0\",\n \"id\" : 1002604,\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones/1/labels\",\n \"node_id\" : \"MDk6TWlsZXN0b25lMTAwMjYwNA==\",\n \"number\" : 1,\n \"open_issues\" : 4,\n \"state\" : \"open\",\n \"title\" : \"v1.0\",\n \"updated_at\" : \"2014-03-03T18:58:10Z\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones/1\"\n },\n \"node_id\" : \"MDU6SXNzdWUx\",\n \"number\" : 1347,\n \"pull_request\" : {\n \"diff_url\" : \"https://github.com/octocat/Hello-World/pull/1347.diff\",\n \"html_url\" : \"https://github.com/octocat/Hello-World/pull/1347\",\n \"patch_url\" : \"https://github.com/octocat/Hello-World/pull/1347.patch\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/pulls/1347\"\n },\n \"repository\" : {\n \"allow_merge_commit\" : true,\n \"allow_rebase_merge\" : true,\n \"allow_squash_merge\" : true,\n \"archive_url\" : \"https://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref}\",\n \"archived\" : false,\n \"assignees_url\" : \"https://api.github.com/repos/octocat/Hello-World/assignees{/user}\",\n \"blobs_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/blobs{/sha}\",\n \"branches_url\" : \"https://api.github.com/repos/octocat/Hello-World/branches{/branch}\",\n \"clone_url\" : \"https://github.com/octocat/Hello-World.git\",\n \"collaborators_url\" : \"https://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator}\",\n \"comments_url\" : \"https://api.github.com/repos/octocat/Hello-World/comments{/number}\",\n \"commits_url\" : \"https://api.github.com/repos/octocat/Hello-World/commits{/sha}\",\n \"compare_url\" : \"https://api.github.com/repos/octocat/Hello-World/compare/{base}...{head}\",\n \"contents_url\" : \"https://api.github.com/repos/octocat/Hello-World/contents/{+path}\",\n \"contributors_url\" : \"https://api.github.com/repos/octocat/Hello-World/contributors\",\n \"created_at\" : \"2011-01-26T19:01:12Z\",\n \"default_branch\" : \"master\",\n \"delete_branch_on_merge\" : true,\n \"deployments_url\" : \"https://api.github.com/repos/octocat/Hello-World/deployments\",\n \"description\" : \"This your first repo!\",\n \"disabled\" : false,\n \"downloads_url\" : \"https://api.github.com/repos/octocat/Hello-World/downloads\",\n \"events_url\" : \"https://api.github.com/repos/octocat/Hello-World/events\",\n \"fork\" : false,\n \"forks\" : 1,\n \"forks_count\" : 9,\n \"forks_url\" : \"https://api.github.com/repos/octocat/Hello-World/forks\",\n \"full_name\" : \"octocat/Hello-World\",\n \"git_commits_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/commits{/sha}\",\n \"git_refs_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/refs{/sha}\",\n \"git_tags_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/tags{/sha}\",\n \"git_url\" : \"git:github.com/octocat/Hello-World.git\",\n \"has_downloads\" : true,\n \"has_issues\" : true,\n \"has_pages\" : false,\n \"has_projects\" : true,\n \"has_wiki\" : true,\n \"homepage\" : \"https://github.com\",\n \"hooks_url\" : \"https://api.github.com/repos/octocat/Hello-World/hooks\",\n \"html_url\" : \"https://github.com/octocat/Hello-World\",\n \"id\" : 1296269,\n \"is_template\" : true,\n \"issue_comment_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/comments{/number}\",\n \"issue_events_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/events{/number}\",\n \"issues_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues{/number}\",\n \"keys_url\" : \"https://api.github.com/repos/octocat/Hello-World/keys{/key_id}\",\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World/labels{/name}\",\n \"languages_url\" : \"https://api.github.com/repos/octocat/Hello-World/languages\",\n \"license\" : {\n \"html_url\" : \"https://github.com/licenses/mit\",\n \"key\" : \"mit\",\n \"name\" : \"MIT License\",\n \"node_id\" : \"MDc6TGljZW5zZW1pdA==\",\n \"spdx_id\" : \"MIT\",\n \"url\" : \"https://api.github.com/licenses/mit\"\n },\n \"merges_url\" : \"https://api.github.com/repos/octocat/Hello-World/merges\",\n \"milestones_url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones{/number}\",\n \"mirror_url\" : \"git:git.example.com/octocat/Hello-World\",\n \"name\" : \"Hello-World\",\n \"network_count\" : 0,\n \"node_id\" : \"MDEwOlJlcG9zaXRvcnkxMjk2MjY5\",\n \"notifications_url\" : \"https://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating}\",\n \"open_issues\" : 1,\n \"open_issues_count\" : 0,\n \"owner\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"permissions\" : {\n \"admin\" : false,\n \"pull\" : true,\n \"push\" : false\n },\n \"private\" : false,\n \"pulls_url\" : \"https://api.github.com/repos/octocat/Hello-World/pulls{/number}\",\n \"pushed_at\" : \"2011-01-26T19:06:43Z\",\n \"releases_url\" : \"https://api.github.com/repos/octocat/Hello-World/releases{/id}\",\n \"size\" : 108,\n \"ssh_url\" : \"git@github.com:octocat/Hello-World.git\",\n \"stargazers_count\" : 80,\n \"stargazers_url\" : \"https://api.github.com/repos/octocat/Hello-World/stargazers\",\n \"statuses_url\" : \"https://api.github.com/repos/octocat/Hello-World/statuses/{sha}\",\n \"subscribers_count\" : 42,\n \"subscribers_url\" : \"https://api.github.com/repos/octocat/Hello-World/subscribers\",\n \"subscription_url\" : \"https://api.github.com/repos/octocat/Hello-World/subscription\",\n \"svn_url\" : \"https://svn.github.com/octocat/Hello-World\",\n \"tags_url\" : \"https://api.github.com/repos/octocat/Hello-World/tags\",\n \"teams_url\" : \"https://api.github.com/repos/octocat/Hello-World/teams\",\n \"temp_clone_token\" : \"ABTLWHOULUVAXGTRYU7OC2876QJ2O\",\n \"topics\" : [ \"octocat\", \"atom\", \"electron\", \"api\" ],\n \"trees_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/trees{/sha}\",\n \"updated_at\" : \"2011-01-26T19:14:43Z\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World\",\n \"visibility\" : \"public\",\n \"watchers\" : 1,\n \"watchers_count\" : 80\n },\n \"repository_url\" : \"https://api.github.com/repos/octocat/Hello-World\",\n \"state\" : \"open\",\n \"title\" : \"Found a bug\",\n \"updated_at\" : \"2011-04-22T13:33:48Z\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347\",\n \"user\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n }\n} ]", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "4f719ca2-4518-44c3-af47-27aad588e80a", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.788348Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "issues/list-for-org", + "schema": { + "items": { + "$ref": "#/components/schemas/issue" + }, + "type": "array" + } + } + } + }, + "insertionIndex": 1122 + }, + { + "id": "2e2ac117-3a00-472a-bb54-1ed42cde0205", + "name": "List app installations for an organization - default", + "request": { + "urlPath": "/orgs/zdgx14oclnmmwqxwxuvxkjsz5kkuepkbia1zab7makx3x4jq7vq9jpr89hmnera/installations", + "method": "GET" + }, + "response": { + "status": 200, + "body": "{\n \"installations\" : [ {\n \"access_tokens_url\" : \"https://api.github.com/app/installations/25381/access_tokens\",\n \"account\" : {\n \"avatar_url\" : \"https://avatars3.githubusercontent.com/u/6811672?v=4\",\n \"events_url\" : \"https://api.github.com/users/octo-org/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octo-org/followers\",\n \"following_url\" : \"https://api.github.com/users/octo-org/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octo-org/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octo-org\",\n \"id\" : 6811672,\n \"login\" : \"octo-org\",\n \"node_id\" : \"MDEyOk9yZ2FuaXphdGlvbjY4MTE2NzI=\",\n \"organizations_url\" : \"https://api.github.com/users/octo-org/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octo-org/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octo-org/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octo-org/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octo-org/subscriptions\",\n \"type\" : \"Organization\",\n \"url\" : \"https://api.github.com/users/octo-org\"\n },\n \"app_id\" : 2218,\n \"app_slug\" : \"github-actions\",\n \"created_at\" : \"2017-05-16T08:47:09.000-07:00\",\n \"events\" : [ \"deployment\", \"deployment_status\" ],\n \"html_url\" : \"https://github.com/organizations/octo-org/settings/installations/25381\",\n \"id\" : 25381,\n \"permissions\" : {\n \"deployments\" : \"write\",\n \"metadata\" : \"read\",\n \"pull_requests\" : \"read\",\n \"statuses\" : \"read\"\n },\n \"repositories_url\" : \"https://api.github.com/installation/repositories\",\n \"repository_selection\" : \"selected\",\n \"single_file_name\" : \"config.yml\",\n \"target_id\" : 6811672,\n \"target_type\" : \"Organization\",\n \"updated_at\" : \"2017-06-06T11:23:23.000-07:00\"\n } ],\n \"total_count\" : 1\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "2e2ac117-3a00-472a-bb54-1ed42cde0205", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.788238Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "orgs/list-app-installations", + "schema": { + "properties": { + "installations": { + "items": { + "$ref": "#/components/schemas/installation-ghes-2" + }, + "type": "array" + }, + "total_count": { + "type": "integer" + } + }, + "required": ["total_count", "installations"], + "type": "object" + } + } + } + }, + "insertionIndex": 1123 + }, + { + "id": "80242d0b-457f-440a-86d4-dc65fb9a1d39", + "name": "Get an organization installation for the authenticated app - default", + "request": { + "urlPath": "/orgs/eok3xe37x47g5d3th0t5ah3cu9ywpyv/installation", + "method": "GET" + }, + "response": { + "status": 200, + "body": "{\n \"access_tokens_url\" : \"https://api.github.com/installations/1/access_tokens\",\n \"account\" : {\n \"avatar_url\" : \"https://github.com/images/error/hubot_happy.gif\",\n \"events_url\" : \"https://api.github.com/orgs/github/events\",\n \"followers_url\" : \"https://api.github.com/users/github/followers\",\n \"following_url\" : \"https://api.github.com/users/github/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/github/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/github\",\n \"id\" : 1,\n \"login\" : \"github\",\n \"node_id\" : \"MDEyOk9yZ2FuaXphdGlvbjE=\",\n \"organizations_url\" : \"https://api.github.com/users/github/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/github/received_events\",\n \"repos_url\" : \"https://api.github.com/orgs/github/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/github/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/github/subscriptions\",\n \"type\" : \"Organization\",\n \"url\" : \"https://api.github.com/orgs/github\"\n },\n \"app_id\" : 1,\n \"app_slug\" : \"github-actions\",\n \"created_at\" : \"2018-02-09T20:51:14Z\",\n \"events\" : [ \"push\", \"pull_request\" ],\n \"html_url\" : \"https://github.com/organizations/github/settings/installations/1\",\n \"id\" : 1,\n \"permissions\" : {\n \"checks\" : \"write\",\n \"contents\" : \"read\",\n \"metadata\" : \"read\"\n },\n \"repositories_url\" : \"https://api.github.com/installation/repositories\",\n \"repository_selection\" : \"all\",\n \"single_file_name\" : \"config.yml\",\n \"target_id\" : 1,\n \"target_type\" : \"Organization\",\n \"updated_at\" : \"2018-02-09T20:51:14Z\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "80242d0b-457f-440a-86d4-dc65fb9a1d39", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.788152Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "apps/get-org-installation", + "schema": { + "description": "Installation", + "properties": { + "access_tokens_url": { + "example": "https://api.github.com/installations/1/access_tokens", + "format": "uri", + "type": "string" + }, + "account": { + "anyOf": [ + { + "$ref": "#/components/schemas/simple-user" + }, + { + "$ref": "#/components/schemas/enterprise" + } + ], + "nullable": true + }, + "app_id": { + "example": 1, + "type": "integer" + }, + "app_slug": { + "example": "github-actions", + "type": "string" + }, + "contact_email": { + "example": "\"test_13f1e99741e3e004@d7e1eb0bc0a1ba12.com\"", + "nullable": true, + "type": "string" + }, + "created_at": { + "format": "date-time", + "type": "string" + }, + "events": { + "items": { + "type": "string" + }, + "type": "array" + }, + "html_url": { + "example": "https://github.com/organizations/github/settings/installations/1", + "format": "uri", + "type": "string" + }, + "id": { + "description": "The ID of the installation.", + "example": 1, + "type": "integer" + }, + "permissions": { + "example": { + "deployments": "write", + "issues": "read" + }, + "properties": { + "checks": { + "type": "string" + }, + "contents": { + "type": "string" + }, + "deployments": { + "type": "string" + }, + "issues": { + "example": "\"read\"", + "type": "string" + }, + "metadata": { + "type": "string" + }, + "organization_administration": { + "example": "\"read\"", + "type": "string" + }, + "pull_requests": { + "type": "string" + }, + "statuses": { + "type": "string" + } + }, + "type": "object" + }, + "repositories_url": { + "example": "https://api.github.com/installation/repositories", + "format": "uri", + "type": "string" + }, + "repository_selection": { + "description": "Describe whether all repositories have been selected or there's a selection involved", + "enum": ["all", "selected"], + "type": "string" + }, + "single_file_name": { + "example": "config.yaml", + "nullable": true, + "type": "string" + }, + "suspended_at": { + "format": "date-time", + "nullable": true, + "type": "string" + }, + "suspended_by": { + "$ref": "#/components/schemas/nullable-simple-user" + }, + "target_id": { + "description": "The ID of the user or organization this token is being scoped to.", + "type": "integer" + }, + "target_type": { + "example": "Organization", + "type": "string" + }, + "updated_at": { + "format": "date-time", + "type": "string" + } + }, + "required": [ + "id", + "app_id", + "app_slug", + "target_id", + "target_type", + "single_file_name", + "repository_selection", + "access_tokens_url", + "html_url", + "repositories_url", + "events", + "account", + "permissions", + "created_at", + "updated_at" + ], + "title": "Installation", + "type": "object" + } + } + } + }, + "insertionIndex": 1124 + }, + { + "id": "b1d0110e-65bd-4545-bb6d-528a1dabd728", + "name": "Ping an organization webhook (application/json)", + "request": { + "urlPath": "/orgs/680vv1lvvutfi3vw3hpghtkbuu46okhu4cgrtebuda/hooks/2416068591082651767/pings", + "method": "POST", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/690309\",\n \"message\" : \"Illo qui vel. Non iure excepturi. Voluptas id commodi minima harum aut dolorem voluptate.\",\n \"url\" : \"https://web.example.mocklab.io/315330\",\n \"status\" : \"0b062nuimlk1wv2r4pmfb9emnqpd1fs3g4h6z4s046z11x8yt61ql9bbf0o60t0f2bvy2b65oy7z8z2bqsmnh96a9z2lr8epup59h2y6ddc00xxt3qae0elitw0uihen1w8\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "b1d0110e-65bd-4545-bb6d-528a1dabd728", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.787845Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "orgs/ping-webhook", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 1125 + }, + { + "id": "91e701e1-f448-4afc-a639-411cbbedb0f1", + "name": "Ping an organization webhook - 204", + "request": { + "urlPath": "/orgs/1tfb9m87iz7lwh47g466g4vpsrex2qy91dh3ag2i08lrnsmnn4e3r8qzsegtkbshtcr633g48itqpvtca3g9y7ruc3iygy4vbaeg3uxa1764c07532pjn71j4786zdq844vwit5qgae/hooks/6191911867510931396/pings", + "method": "POST" + }, + "response": { + "status": 204 + }, + "uuid": "91e701e1-f448-4afc-a639-411cbbedb0f1", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.787647Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "orgs/ping-webhook" + } + } + }, + "insertionIndex": 1126 + }, + { + "id": "9aadc636-599e-4cd4-a334-87b5868c2f3a", + "name": "Update an organization webhook", + "request": { + "urlPath": "/orgs/qd82k49i1ab6bdgy9ly3lyu26d8g5s8wgengo208k3o166tg068r7089q2obu9rkrbapewiuxqog1sr33o6l3o7it6o7pkoie8q4cyricgaqxvlm47u7bx0fgxwhezg/hooks/3301705876619231870", + "method": "PATCH" + }, + "response": { + "status": 422, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/658411\",\n \"message\" : \"Repudiandae est saepe ipsum sint nisi soluta. Dolorum tempore molestiae natus nulla eum earum. Placeat dolorem omnis ipsum. Tempora delectus labore.\",\n \"errors\" : [ {\n \"code\" : \"wj61jdr3kaj9n14lx4k9dvh1n21ayrdzam5bz2th18rwp02v0hyubetjz7af0d1iyqgaw5x8118hsbj3zhlh8qtxpgudrd15yjlm3yat218bugbygwl2pakadrb2tl1osa5ju10rl30cig1fl4mr4tbiqx3\",\n \"field\" : \"bf1m8qoglrfah32q1psm9ygq7reldkpmfps31rhof8b3ok8gg9j1kaxjp8n3ttwr7b0d3q33dityz7cmaixe29p1dsvcph2ub5tz13rp9pdi8v37duyhe2x8df4kg9qfrjbhjg82xt74eqcp6oibgvhnr28ki462a26wyzneyrf\",\n \"resource\" : \"ic5rj5muvjith0s7v8pggu65b6vf3bcisetfq0mjgkkpvx4rmjpcv6wx01gact4udlbnr6z4mre8xqlveze1vfxz4lz3z5486isiyewslt\",\n \"index\" : 8373696542237160929,\n \"message\" : \"Facilis blanditiis repudiandae quas. Sequi sint ut temporibus sunt aut. Dolores voluptas consequuntur facilis quod laborum nulla. Aperiam corporis est quis dolorem molestiae. Molestiae odio reprehende\",\n \"value\" : { }\n }, {\n \"code\" : \"vde03b6jgb4g6zpuvrioxsi73gsj8jrwdolu1sysvl2ia8n78bytq1b0cr46ygg9mbuctpyree2euhll28hxubr1309jto463oxe7mead41r0oo1ufg3qjlosovtc6wr35h9bb2rx3f2er1wwjacblpjk2m2kjm4y5iwhnf4ytnuab7waw43b\",\n \"field\" : \"okzrgb3ozcwts03e94cqj2q4woxlaougqfm5twzgh64r3a0bm6jk2ul96a46qqhg566ah9bjwo\",\n \"resource\" : \"x52k5ck65dwprwnc6qy97zv2artejky58dok6jo8w5j9n98mwafc45kdd\",\n \"index\" : 1603669018670019875,\n \"message\" : \"Repudiandae neque natus. Iusto animi nam. Numquam in tempore laudantium amet. Temporibus exercitationem molestiae voluptatem ullam incidunt.\",\n \"value\" : { }\n }, {\n \"code\" : \"raqe9ejx20uqcp9kodecnwy1f7yxe4tmu42bqvou8w76skhhc8bzqan4wo8g3doice1y4hera4q6n858dauc548g75ce\",\n \"field\" : \"retiqo2v12kc9aw0xbn3l7fnl5q4eb9qfrl10j21khm2mk5jwx4i7mqj2on21uswlm0yfb70zx4hxogsfy20s5hqconzolghem2bwml4612itwuzeq1xdwg8cgworqdva4v09ylisqcokraxj3kd8zequdbtvg5qo3rnohyd2z1txd154qxfby\",\n \"resource\" : \"2h2znt9s94b2n4gkoqlqierd05234knbb6cai6w6qwds83jejezu30aa79l4b25ao4sgum2n72nqefxbv4uzqw9fz9ucx3lecs3p6ywkh90ohas2shq5sdaj3xhi6bo2zs1u5dksrr1ft7cw7h3h7vw7pl5ajhtrrt9pdg9x9mexrbj5\",\n \"index\" : 7841293147445655427,\n \"message\" : \"Voluptatem minima et vero nam voluptates qui. Officiis rem necessitatibus ex. Autem voluptatem vel possimus voluptas vel.\",\n \"value\" : { }\n }, {\n \"code\" : \"ckssdx8c6dc1gj9c521j80jvhlyf7q8b4kh5px187i2jesb1monig16nzsfc84qbbm51z8y8i508jkf61ytbxfok3h\",\n \"field\" : \"qd9xypil54oav877z6gx1za7shu71t43kav64nj2vjprba3k8p2zavygzemyjd6c0wqu92okfwdx0uou03kvpat32vf78lj8yez2z2tyum0kmcbaof6wfw6oq01kk6wcpdfalzfss96rtcruo9kjm96crsofoexzeow5wdxikj782q40j3l0\",\n \"resource\" : \"b6gg9e7vpmqg4jvmiq1lmcbqwc3e0o9rxhmvjk6mohtm52jah1442j30ra7nn3j9ptqb7pz0cbgzo5fuezzv6k7satkgjzyddnldv27v6z1q65z0ixdd46witbvywjqd61189ye1a96oelx6ty4\",\n \"index\" : 8877522709007791590,\n \"message\" : \"Animi eos explicabo voluptas et minima ex. Consequatur fugiat et ab similique explicabo. Et deserunt commodi dignissimos dicta. Et ut ad vel et tempore dolorem est. Et cum velit est voluptas.\",\n \"value\" : { }\n } ]\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "9aadc636-599e-4cd4-a334-87b5868c2f3a", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.787608Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "orgs/update-webhook", + "schema": { + "description": "Validation Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "errors": { + "items": { + "properties": { + "code": { + "type": "string" + }, + "field": { + "type": "string" + }, + "index": { + "type": "integer" + }, + "message": { + "type": "string" + }, + "resource": { + "type": "string" + }, + "value": { + "oneOf": [ + { + "nullable": true, + "type": "string" + }, + { + "nullable": true, + "type": "integer" + }, + { + "items": { + "type": "string" + }, + "nullable": true, + "type": "array" + } + ] + } + }, + "required": ["code"], + "type": "object" + }, + "type": "array" + }, + "message": { + "type": "string" + } + }, + "required": ["message", "documentation_url"], + "title": "Validation Error", + "type": "object" + } + } + } + }, + "insertionIndex": 1127 + }, + { + "id": "b6496686-0a14-4743-b08a-eb33751204dc", + "name": "Update an organization webhook", + "request": { + "urlPath": "/orgs/izezn8/hooks/3349081781173142482", + "method": "PATCH" + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/055420\",\n \"message\" : \"In sunt accusantium illo qui quisquam hic quis. Repudiandae exercitationem iure rem. Magnam nobis nam. Ea non error beatae quisquam molestiae qui. Qui ut quam cupiditate unde.\",\n \"url\" : \"https://web.example.mocklab.io/202806\",\n \"status\" : \"vn7studasf4a48qnp53hd7vj3bwff0wyi2q5mzelvssq4vtkhtg3vzodffvio58cfvjdprxvkbnasv7l1khe5s90b7vwn1106ipd7blbwx0rf8b0kryfkwmeko\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "b6496686-0a14-4743-b08a-eb33751204dc", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.787089Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "orgs/update-webhook", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 1128 + }, + { + "id": "9e6fec1e-e751-4343-85f9-e54af5e0aa4d", + "name": "Update an organization webhook - default", + "request": { + "urlPath": "/orgs/imyk4n6r7g1vuk5t7bjhfjoz10gvjv0/hooks/3614187076580413481", + "method": "PATCH" + }, + "response": { + "status": 200, + "body": "{\n \"active\" : true,\n \"config\" : {\n \"content_type\" : \"json\",\n \"url\" : \"http://example.com\"\n },\n \"created_at\" : \"2011-09-06T17:26:27Z\",\n \"events\" : [ \"pull_request\" ],\n \"id\" : 1,\n \"name\" : \"web\",\n \"ping_url\" : \"https://api.github.com/orgs/octocat/hooks/1/pings\",\n \"type\" : \"Organization\",\n \"updated_at\" : \"2011-09-06T20:39:23Z\",\n \"url\" : \"https://api.github.com/orgs/octocat/hooks/1\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "9e6fec1e-e751-4343-85f9-e54af5e0aa4d", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.786874Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "orgs/update-webhook", + "schema": { + "description": "Org Hook", + "properties": { + "active": { + "example": true, + "type": "boolean" + }, + "config": { + "properties": { + "content_type": { + "example": "\"form\"", + "type": "string" + }, + "insecure_ssl": { + "example": "\"0\"", + "type": "string" + }, + "secret": { + "example": "\"********\"", + "type": "string" + }, + "url": { + "example": "\"http://example.com/2\"", + "type": "string" + } + }, + "type": "object" + }, + "created_at": { + "example": "2011-09-06T17:26:27Z", + "format": "date-time", + "type": "string" + }, + "events": { + "example": ["push", "pull_request"], + "items": { + "type": "string" + }, + "type": "array" + }, + "id": { + "example": 1, + "type": "integer" + }, + "name": { + "example": "web", + "type": "string" + }, + "ping_url": { + "example": "https://api.github.com/orgs/octocat/hooks/1/pings", + "format": "uri", + "type": "string" + }, + "type": { + "type": "string" + }, + "updated_at": { + "example": "2011-09-06T20:39:23Z", + "format": "date-time", + "type": "string" + }, + "url": { + "example": "https://api.github.com/orgs/octocat/hooks/1", + "format": "uri", + "type": "string" + } + }, + "required": [ + "id", + "url", + "type", + "name", + "active", + "events", + "config", + "ping_url", + "created_at", + "updated_at" + ], + "title": "Org Hook", + "type": "object" + } + } + } + }, + "insertionIndex": 1129 + }, + { + "id": "c3bd3773-2345-4c46-814a-0a46a27ddde4", + "name": "Get an organization webhook", + "request": { + "urlPath": "/orgs/n10c5d10hx10hmwk9qh41lu6sytfy2xvmb9v16llgnz146tmp4fs853rek5531huwpglthg0u2zlhh7jacfonji0bquo94w6pxzh71n15cxrpy9sz434116y9svgfre4khg6b6e9gvx9nh7gyeuk7ns5lqsgav3/hooks/8749274071564982495", + "method": "GET" + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/051660\",\n \"message\" : \"Ea dolore mollitia magni nostrum amet. Nostrum vel qui sed ullam enim autem. Explicabo ad excepturi maiores est sint qui ratione. Occaecati alias labore. Id eligendi sit voluptatem debitis ut facilis.\",\n \"url\" : \"https://web.example.mocklab.io/859791\",\n \"status\" : \"4194805icwickmry53xbzw3wgsgqegc0xw7n47idi3j5hn2abm\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "c3bd3773-2345-4c46-814a-0a46a27ddde4", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.786747Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "orgs/get-webhook", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 1130 + }, + { + "id": "3b21e663-aae5-4428-bcc9-f3f978ee19d3", + "name": "Get an organization webhook - default", + "request": { + "urlPath": "/orgs/7ckbu11qmjuv0ynyg5qs3jl77ckbhekme9ry7qkbo0q437pin8doovz3edmm3czmtlmvpnezl9fxti23bq5pkm5lb1am5qbhnlco5514b4w3azm582mfpcbhb8xytnob421xu37cl4xox1dc6wdm1ch6gqq7dj2ksuegeuesvlfq61/hooks/233499844572889009", + "method": "GET" + }, + "response": { + "status": 200, + "body": "{\n \"active\" : true,\n \"config\" : {\n \"content_type\" : \"json\",\n \"url\" : \"http://example.com\"\n },\n \"created_at\" : \"2011-09-06T17:26:27Z\",\n \"events\" : [ \"push\", \"pull_request\" ],\n \"id\" : 1,\n \"name\" : \"web\",\n \"ping_url\" : \"https://api.github.com/orgs/octocat/hooks/1/pings\",\n \"type\" : \"Organization\",\n \"updated_at\" : \"2011-09-06T20:39:23Z\",\n \"url\" : \"https://api.github.com/orgs/octocat/hooks/1\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "3b21e663-aae5-4428-bcc9-f3f978ee19d3", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.786525Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "orgs/get-webhook", + "schema": { + "description": "Org Hook", + "properties": { + "active": { + "example": true, + "type": "boolean" + }, + "config": { + "properties": { + "content_type": { + "example": "\"form\"", + "type": "string" + }, + "insecure_ssl": { + "example": "\"0\"", + "type": "string" + }, + "secret": { + "example": "\"********\"", + "type": "string" + }, + "url": { + "example": "\"http://example.com/2\"", + "type": "string" + } + }, + "type": "object" + }, + "created_at": { + "example": "2011-09-06T17:26:27Z", + "format": "date-time", + "type": "string" + }, + "events": { + "example": ["push", "pull_request"], + "items": { + "type": "string" + }, + "type": "array" + }, + "id": { + "example": 1, + "type": "integer" + }, + "name": { + "example": "web", + "type": "string" + }, + "ping_url": { + "example": "https://api.github.com/orgs/octocat/hooks/1/pings", + "format": "uri", + "type": "string" + }, + "type": { + "type": "string" + }, + "updated_at": { + "example": "2011-09-06T20:39:23Z", + "format": "date-time", + "type": "string" + }, + "url": { + "example": "https://api.github.com/orgs/octocat/hooks/1", + "format": "uri", + "type": "string" + } + }, + "required": [ + "id", + "url", + "type", + "name", + "active", + "events", + "config", + "ping_url", + "created_at", + "updated_at" + ], + "title": "Org Hook", + "type": "object" + } + } + } + }, + "insertionIndex": 1131 + }, + { + "id": "4265a33d-c973-400b-9ca9-7e9a36128459", + "name": "Delete an organization webhook (application/json)", + "request": { + "urlPath": "/orgs/sb53f8xorgp0surcwkqh7cj6raacg4s5yjm2bp0y9h9s2fvtetbziz2deevxqdkqusdgfngrek3v815oatn0w90uzmzbam1f6c4bjy1h1iblsxpoe8qmfc9yrqz521twg5n4zgfbfekashb9wbvck2dwdn35gbyrrj7jaaa6uhry5vrskqr1/hooks/5417462846636695153", + "method": "DELETE", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/531988\",\n \"message\" : \"Omnis aut quibusdam sunt. Et in est dolorem pariatur. Voluptates alias veritatis est nemo.\",\n \"url\" : \"https://web.example.mocklab.io/847344\",\n \"status\" : \"bhy14fgpjvkn43dw3s4q3llttafv7ljn1zxbdxxr755uhl04mwclup566lqyqr1o2aeknvysvim9rw\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "4265a33d-c973-400b-9ca9-7e9a36128459", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.786388Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "orgs/delete-webhook", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 1132 + }, + { + "id": "7fc127a5-c959-4969-914e-347deef92f79", + "name": "Delete an organization webhook - 204", + "request": { + "urlPath": "/orgs/zzebeivpgjajw9cc23mz715a8f7istlbpb453vy6ssd1gh0ngj6t6gml4vta6m0irynj1xj81w7jdom0ot97krkvrpk7k7zye30sssmrvcgkd9rkuv4ns4m4mgjqmc03tnufv4k830zl67oq7u6j4885gt72k1h4gm5mvavu8z5j5srbel/hooks/775391020050601507", + "method": "DELETE" + }, + "response": { + "status": 204 + }, + "uuid": "7fc127a5-c959-4969-914e-347deef92f79", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.786183Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "orgs/delete-webhook" + } + } + }, + "insertionIndex": 1133 + }, + { + "id": "e48badad-2044-4d14-97b9-0b918afe0713", + "name": "Create an organization webhook", + "request": { + "urlPath": "/orgs/3eumzedf8jnt3y9eeii6l9220lhf7kgepirlk35l861jisi212nf29p59g2sg52c3fxyhox22xytyynvbkj2vzq1mu7bfycg52w74soyye0nq1lcjvux2c4qe6ckgpbr8d82jdqifak/hooks", + "method": "POST" + }, + "response": { + "status": 422, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/194401\",\n \"message\" : \"Et ut dignissimos perspiciatis facere consequatur quia. Quas quidem esse neque et. Numquam voluptas unde deleniti incidunt tempora soluta explicabo. Optio aut omnis id nam. Sit consequatur voluptates \",\n \"errors\" : [ {\n \"code\" : \"u3q9o4a321kb2sf3cro6vy20bqzyyey2gud6owx14wgyk9f2w7y610uhm1lwcytsfqz2s66m9l9lbli449yicytnm57wtr9844dcc96m0tr7b7gubn7vl8me6dyat8i9euqsvb792aehcllh5zitwiyem1dhk2wte\",\n \"field\" : \"jbcmb1l5y2naind2wwrekrr6re6pqt4pwvvich6qlyjl22diyd8unu7bfxg2tykvoemjatyho9k816upvejshgda31p2sbsc\",\n \"resource\" : \"ytl9k185l56sok34sw4ihdzdukby6czjl8ano86r6iunjs01l\",\n \"index\" : 8453884055783237096,\n \"message\" : \"Ut modi corrupti sint est laboriosam aperiam. Facere et veniam recusandae culpa iure. Officiis nemo beatae tempore. Pariatur esse est mollitia qui. Ex id fugit ut aut id commodi.\",\n \"value\" : { }\n }, {\n \"code\" : \"3zxlxtpwhme2tcmupkss2vmxmqko4wkttzzwyha6i1zkxl2j71jdqbyv6522js87717zizqw74mogxioltaooyrqh9g0t4qjv5ymil0dk6pdlf65djlpz1\",\n \"field\" : \"yu4kcexuj32ok06205x33zq9ehd7qi39kgblh4abj6es9s9ok1d6krrx3ylwt9oggjge67vc91eszmsgw84muum4oulda7w2xnb3zbd2ufkiaq99wdz0ywrx61yc4qrn0zznkhfrquy4eo0o4tuwphj99\",\n \"resource\" : \"lqk12yaq2ijhkg1pp7x6yxbx4cybpcc8wixyqodq11z2msjm8x8yke5okejozolzb8jeuuz8f2xbrdjxce2a9f1nij0p7k84lpa096h1e1qv5pf44ugr53i3tgpcqcqz90ajsru\",\n \"index\" : 3087669284974012332,\n \"message\" : \"Libero non amet et. Voluptatem delectus itaque alias id voluptatum. Et id rerum aut quam. Voluptas et sapiente. Aliquid in ab eligendi.\",\n \"value\" : { }\n }, {\n \"code\" : \"5lqenlfyj8oyuzrrd7qpfz8j2ve3elf3ocgvvnztqaa7pkefqzxcb951ujb4y9fpytew952mopf8bqbv\",\n \"field\" : \"kf787jakr9ym4iyuoktnrimoxim2uyua7wa5ndsmdy7fczc837ekkwq2vvq2gdnetnekq08pchaylksbqmiir8pvfppilzrxy3npm200bymdvryzb4w\",\n \"resource\" : \"9nd69pfncvmiyvtpm6k0ug\",\n \"index\" : 4507658009675903280,\n \"message\" : \"Sunt consequatur tenetur quia quam dolorem voluptas sunt. Ipsam ut illum ducimus. Accusamus labore nostrum ut iusto aut magni similique. Dicta ut eaque qui error. Vero et quo labore itaque.\",\n \"value\" : { }\n } ]\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "e48badad-2044-4d14-97b9-0b918afe0713", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.786139Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "orgs/create-webhook", + "schema": { + "description": "Validation Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "errors": { + "items": { + "properties": { + "code": { + "type": "string" + }, + "field": { + "type": "string" + }, + "index": { + "type": "integer" + }, + "message": { + "type": "string" + }, + "resource": { + "type": "string" + }, + "value": { + "oneOf": [ + { + "nullable": true, + "type": "string" + }, + { + "nullable": true, + "type": "integer" + }, + { + "items": { + "type": "string" + }, + "nullable": true, + "type": "array" + } + ] + } + }, + "required": ["code"], + "type": "object" + }, + "type": "array" + }, + "message": { + "type": "string" + } + }, + "required": ["message", "documentation_url"], + "title": "Validation Error", + "type": "object" + } + } + } + }, + "insertionIndex": 1134 + }, + { + "id": "21129e9a-4fe7-4239-a830-31cd15633f79", + "name": "Create an organization webhook", + "request": { + "urlPath": "/orgs/0s3t43ivkws673p9e65dxkvlhvmzslx6v0d/hooks", + "method": "POST" + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/921726\",\n \"message\" : \"Soluta rem sed. Itaque beatae beatae officia. Unde odit non sunt quis vitae. Ut velit autem.\",\n \"url\" : \"https://web.example.mocklab.io/117378\",\n \"status\" : \"1xi5utwx9juw2vfogyn77hfnssk84z6gz9uao8ygdpxw71ynhl1avu81n8a\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "21129e9a-4fe7-4239-a830-31cd15633f79", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.785608Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "orgs/create-webhook", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 1135 + }, + { + "id": "76c6ff43-428f-47aa-a519-4f9738e489b4", + "name": "Create an organization webhook - default", + "request": { + "urlPath": "/orgs/lj5df1y7veapfce666g485egolz32j2peqee9zcwonwgebnen3gkfom8ghvth9lobuiv2p4f6e7st1n12r77qzouuc6vcj5e1jcxelo6mnft3ps9j24knl3rr8d5aqf9ap1i4r3iy6dz9k02p07vrrzbsvbptmbvc40cgmov47tret56vxt/hooks", + "method": "POST" + }, + "response": { + "status": 201, + "body": "{\n \"active\" : true,\n \"config\" : {\n \"content_type\" : \"json\",\n \"url\" : \"http://example.com\"\n },\n \"created_at\" : \"2011-09-06T17:26:27Z\",\n \"events\" : [ \"push\", \"pull_request\" ],\n \"id\" : 1,\n \"name\" : \"web\",\n \"ping_url\" : \"https://api.github.com/orgs/octocat/hooks/1/pings\",\n \"type\" : \"Organization\",\n \"updated_at\" : \"2011-09-06T20:39:23Z\",\n \"url\" : \"https://api.github.com/orgs/octocat/hooks/1\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "76c6ff43-428f-47aa-a519-4f9738e489b4", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.785392Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "orgs/create-webhook", + "schema": { + "description": "Org Hook", + "properties": { + "active": { + "example": true, + "type": "boolean" + }, + "config": { + "properties": { + "content_type": { + "example": "\"form\"", + "type": "string" + }, + "insecure_ssl": { + "example": "\"0\"", + "type": "string" + }, + "secret": { + "example": "\"********\"", + "type": "string" + }, + "url": { + "example": "\"http://example.com/2\"", + "type": "string" + } + }, + "type": "object" + }, + "created_at": { + "example": "2011-09-06T17:26:27Z", + "format": "date-time", + "type": "string" + }, + "events": { + "example": ["push", "pull_request"], + "items": { + "type": "string" + }, + "type": "array" + }, + "id": { + "example": 1, + "type": "integer" + }, + "name": { + "example": "web", + "type": "string" + }, + "ping_url": { + "example": "https://api.github.com/orgs/octocat/hooks/1/pings", + "format": "uri", + "type": "string" + }, + "type": { + "type": "string" + }, + "updated_at": { + "example": "2011-09-06T20:39:23Z", + "format": "date-time", + "type": "string" + }, + "url": { + "example": "https://api.github.com/orgs/octocat/hooks/1", + "format": "uri", + "type": "string" + } + }, + "required": [ + "id", + "url", + "type", + "name", + "active", + "events", + "config", + "ping_url", + "created_at", + "updated_at" + ], + "title": "Org Hook", + "type": "object" + } + } + } + }, + "insertionIndex": 1136 + }, + { + "id": "0450c003-56d0-4418-bb02-bd0e9457f2db", + "name": "List organization webhooks", + "request": { + "urlPath": "/orgs/11llkg9xeq72tc1eo/hooks", + "method": "GET" + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/886678\",\n \"message\" : \"Non commodi odio culpa modi et rem. Est animi labore excepturi provident veniam quia. Velit quaerat autem temporibus dolore possimus sed. Id culpa sunt eaque. Est fugit quis incidunt voluptas.\",\n \"url\" : \"https://web.example.mocklab.io/180245\",\n \"status\" : \"lgi39haq2qpyjyxy9tiqef7o3rdg0k4951a2y3fngs7p3dkpfrsi3szy3edcluef7vjyw0rjvocbuhn9p1m3ji3uyk387de1tdfvrk1oxarfnil6xmgyfq8863y1h8oqltteb9t8suetzvr34m\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "0450c003-56d0-4418-bb02-bd0e9457f2db", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.785184Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "orgs/list-webhooks", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 1137 + }, + { + "id": "9dbc119a-cd1e-4152-a3b9-4375c8560398", + "name": "List organization webhooks - default", + "request": { + "urlPath": "/orgs/ykzcf150ffrxye5s4mn8v7c9qtxgqwf8rk77eju9x85vk7f81zu79j0k4qaoydcsswg9mum89d5tom0aj9bilm0zm8rpbnixlxfy81gclywnezc6wbp2k391z8d1fphmue8udiohc2ih2mnhf7mfp09y4uvq335nsxu588i/hooks", + "method": "GET" + }, + "response": { + "status": 200, + "body": "[ {\n \"active\" : true,\n \"config\" : {\n \"content_type\" : \"json\",\n \"url\" : \"http://example.com\"\n },\n \"created_at\" : \"2011-09-06T17:26:27Z\",\n \"events\" : [ \"push\", \"pull_request\" ],\n \"id\" : 1,\n \"name\" : \"web\",\n \"ping_url\" : \"https://api.github.com/orgs/octocat/hooks/1/pings\",\n \"type\" : \"Organization\",\n \"updated_at\" : \"2011-09-06T20:39:23Z\",\n \"url\" : \"https://api.github.com/orgs/octocat/hooks/1\"\n} ]", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "9dbc119a-cd1e-4152-a3b9-4375c8560398", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.784934Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "orgs/list-webhooks", + "schema": { + "items": { + "$ref": "#/components/schemas/org-hook" + }, + "type": "array" + } + } + } + }, + "insertionIndex": 1138 + }, + { + "id": "7b690938-085b-4da1-a1f4-698a676487f5", + "name": "List public organization events", + "request": { + "urlPath": "/orgs/g02pp066qoyithcjevhd6m1wfii3c4x51k39n9apybljhx69/events", + "method": "GET" + }, + "response": { + "status": 200, + "body": "[ {\n \"actor\" : {\n \"display_login\" : \"ntdq8t6ie867se2yq962r9b1j8qqdpf6cwl95d9ajfqkz0sjszq6sx2x68nig2yz1fmiiuek92xgn1lwpuhr04y1d3l1jbaw2j8vllprx9ftm7tqw5ghu61pvfstxkjlbnpn40aoybnymgsz1qzcn0gjgs7n0utfl5iio1t2pl6unj6v8z5vvpo5pjynyn8lv2ebxqi\",\n \"avatar_url\" : \"https://s3.amazonaws.com/uifaces/faces/twitter/iamkarna/128.jpg\",\n \"id\" : 3062215945973601635,\n \"login\" : \"943dl3cog9whm6mxyotfmy7o7rf4snpaeb86qrkhj0yn2gaggz8b3q7zxfy5j4vd2v6fsrsxx635s6zrmbulb6nlpxwp53wrs717md3lbfprwssstvep5od9mr7sc8qc80gzq2d1g4kbihhiob22r29msf99urbsv4caeq2xk8aqumyhfbrk709a4ou0o7l2w6h5\",\n \"gravatar_id\" : \"3b99\",\n \"url\" : \"https://web.example.mocklab.io/773995\"\n },\n \"public\" : false,\n \"org\" : {\n \"display_login\" : \"ko3q4v136nscd3y7nt3hio2rgamjgch288gqsay28b72feutwcq85wyyw00fmnw60s2mo711s40kep8f7poj305lod5ajouok\",\n \"avatar_url\" : \"https://s3.amazonaws.com/uifaces/faces/twitter/samuelkraft/128.jpg\",\n \"id\" : 5106192730732972640,\n \"login\" : \"bbgklhmy2bzsxyoz3wca5co5qqb94ymzuvl2j5emxsuzdknvgin0cx0y2lcd7d7slcv4szsle6q04x9m72vh48sfwgjoso52x0d9fx71gmtv4f08kwvpsyvg2pc4zejhx6tr68r87vcp3i6x0t86qf2l4qud7850xv0u7fd9chfum4l8ioa1kafj1reemm0h6dxnr\",\n \"gravatar_id\" : \"70j3\",\n \"url\" : \"https://web.example.mocklab.io/885950\"\n },\n \"payload\" : {\n \"pages\" : [ {\n \"summary\" : \"Perferendis omnis aperiam sed libero repellat. Iusto quidem autem non quidem minus. Corrupti suscipit nesciunt molestiae nesciunt eos porro.\",\n \"html_url\" : \"https://web.example.mocklab.io/109567\",\n \"page_name\" : \"Lewis Roob V\",\n \"action\" : \"woee71fbxnht2486apb0lss946bz8pspiz32mbm32eifz1g12mvjwhyycq7nms0phozwrw9m9n746zoit77cjvp5v91rcewvpi4ng0d56vug8q\",\n \"title\" : \"Explicabo illum et sit soluta voluptatibus.\",\n \"sha\" : \"updzp8hejwlkzkkhzgr2ryagaevf8ewekbvnbahr23hs6rczqiyrnruooxmdz8u3opo6mvmyc6toridphx9gl2t8fhv8q10izi8\"\n }, {\n \"summary\" : \"Ipsam est voluptatum totam commodi magnam voluptas quia. Qui ullam cupiditate. Enim ab illo laboriosam aut incidunt. Ex voluptatem delectus doloribus sed debitis inventore.\",\n \"html_url\" : \"https://web.example.mocklab.io/226727\",\n \"page_name\" : \"Lupe Howe\",\n \"action\" : \"auxgvvnnx1nbp6n6rqhv182y8hixipvvbo51ooual1atfq3ezk8impgorp206ps8zmc2v6b4am5z7zm343lib46czplmnlhuio7uz0mnnlti1mkda0f78n71xr7y48o08hhddbvxkwx\",\n \"title\" : \"Facilis corporis facilis.\",\n \"sha\" : \"6zfey543d9t6itv6ect4d15c7hv9uyb3aa7gc33wskqo2aaj72rg269uqj1tjt7x9jxek7bfnfu0rh3vljze9r1ruq5i3i307mr1sacr53e630f5skn3o0d7zay2cjb2jqnhaqusbq7aappxzdp729zmza268a8xmgiqdwyn1ovouy6z6pfxzqmtwagata\"\n }, {\n \"summary\" : \"Fugit sed eos error non debitis. Et quaerat esse itaque aperiam ratione sequi. Ut voluptas id libero repellendus exercitationem et ut. Sed doloribus optio illo nam. Rerum quam provident debitis hic.\",\n \"html_url\" : \"https://web.example.mocklab.io/703132\",\n \"page_name\" : \"Angelo Schowalter\",\n \"action\" : \"erts99rvtrir0xym4lom91st75rzh206h0ims5lbirusnwqa50w22gicmup1ba18dcw99rl6d20s9mxa2hi1bqkpn14f2ieobandzq1t3doxitmvmuig97ljj6qhe2wzb0rfknc\",\n \"title\" : \"Et incidunt velit suscipit aut et sit.\",\n \"sha\" : \"ibdefy7hbenpdiohr15dtzotx40rlhnloi9i7w83x7pll0hu4ulls7sce1axpv6xwmuxe2zqaio1h3wd4m0qf0764g0tebute8kczj8omcauhfifp6msnvjwfabsxzrb1f7bjpvsdtb8sjft9pr8nk6rbueq52lp3r0m1ykizkhfm562pf4qkb5ec9p2j3gd41yki4\"\n }, {\n \"summary\" : \"Nihil sint debitis facilis unde unde maxime. Quas dolores occaecati ipsum rerum et ut. Libero maxime quia adipisci non voluptatem aut. Consequatur magni unde quae necessitatibus illum molestiae tempor\",\n \"html_url\" : \"https://web.example.mocklab.io/410277\",\n \"page_name\" : \"Mr. Stefan Botsford\",\n \"action\" : \"59d61pe3s51m32wt0krcnxdmde1pknip1ocfn4rfpqqloczkzg6p0v7ig08cmqks42jqfvo8\",\n \"title\" : \"Praesentium nobis repellat accusantium maiores vel explicabo.\",\n \"sha\" : \"ljzhace193gh45yhy37d489tcioc2r7gw0frk4mv4rd4dmv3xgybswr42y23o48g8t6d\"\n } ],\n \"issue\" : {\n \"body_html\" : \"l6h558yj221i3rh4x90p24viik7soitizy94khry9yedcuzomd430sxtkycxpff4ocg634nb8bw43u4ytwwehtsklwrr6uh0xab7q\",\n \"body_text\" : \"qdsy5rol7htmsqes8ajg1nwshtpux8svf0ikk9371nqbx1kd11pbpvcrn7plgqaeah15xsq8ra4\",\n \"assignees\" : [ {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Oralia Mann II\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"cg92ze81qncnvw95v9qi5vpvzaa6ahlb0ftd7m87gn9et42n02eri0ugx5pcfqe0jw7md8goeydk28wyr379n9aymdq41df9bizemh8wuznr3b89og8ctm06da4u9pzbiue1101sysx5jl1dnhg4r3uz33z6u2f1t52vjhjw3zusqu9d42hedt5upp3w5xqh0oh8rg\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n }, {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Lashaunda Emmerich\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"o4mvo0dll6b99c9wi0q\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n }, {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Samira Murazik DVM\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"agp8sn21syjlnw9bcsc5vaezmszsyaonah5q3phi4mms9fp48e3wjsl8tmyknv84fxnjxqenrvmmb352rik34t6mgztanbinthxuz7n3v4hktgqgwb58f0oh2a99lengvo91fw7bkmuac179stc5\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n }, {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Lakita Corwin DDS\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"msywxsu4iy4mnpmfk6t5sdr721f1dp5o22yfw24pj36n\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n } ],\n \"created_at\" : \"2011-04-22T13:33:48Z\",\n \"body\" : \"I'm having a problem with this.\",\n \"repository\" : {\n \"allow_forking\" : true,\n \"anonymous_access_enabled\" : true,\n \"is_template\" : true,\n \"stargazers_count\" : 80,\n \"pushed_at\" : \"2011-01-26T19:06:43Z\",\n \"language\" : \"sqv2mozppmfy8mnmlk9d382706ikbc0aq1iafxlw1kwviybajprcwf0iji4wstjmye0jkmw739511qmvtzmev7mfx1hsudbp692nlap2f727dy0tty2uawwirm8vvnww08y7txg7hrwf1n5tlpobjmhgpw4lr3lqi16zcwhc4ct4t\",\n \"subscription_url\" : \"http://api.github.com/repos/octocat/Hello-World/subscription\",\n \"branches_url\" : \"http://api.github.com/repos/octocat/Hello-World/branches{/branch}\",\n \"allow_rebase_merge\" : true,\n \"issue_comment_url\" : \"http://api.github.com/repos/octocat/Hello-World/issues/comments{/number}\",\n \"labels_url\" : \"http://api.github.com/repos/octocat/Hello-World/labels{/name}\",\n \"permissions\" : {\n \"pull\" : true,\n \"maintain\" : true,\n \"admin\" : false,\n \"triage\" : true,\n \"push\" : false\n },\n \"subscribers_url\" : \"http://api.github.com/repos/octocat/Hello-World/subscribers\",\n \"releases_url\" : \"http://api.github.com/repos/octocat/Hello-World/releases{/id}\",\n \"svn_url\" : \"https://svn.github.com/octocat/Hello-World\",\n \"subscribers_count\" : 4860552174821981025,\n \"id\" : 42,\n \"master_branch\" : \"7rimh9bzghxq8r716cqa3xjcfpqsb0pyh0ecste8bhnh5v2pjpbujiyemueyl19e3uksqwljdobn3a9v03s15cm884sgxgs8v784cqox1aimmhdkf83kcqpm73dyf0uqkutyyejzbj8si42gy5emd1d3mzzlhlf\",\n \"forks\" : 5653784612843174848,\n \"allow_merge_commit\" : true,\n \"archive_url\" : \"http://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref}\",\n \"git_refs_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/refs{/sha}\",\n \"forks_url\" : \"http://api.github.com/repos/octocat/Hello-World/forks\",\n \"visibility\" : \"sy4cucmynsxneaymfzqxoeni4n0umc6w4b6unm3z6ulxsrfxw3bci64tn1tucu5inzzojhw5ihroeldj6wrecbiscp6y6cb4la4jg3t1en0gvwsmhygnl7z5ckoomdwmqpwiusu5vi8uqz5ne2ni6s22awrn6gpkf7963a0b\",\n \"statuses_url\" : \"http://api.github.com/repos/octocat/Hello-World/statuses/{sha}\",\n \"network_count\" : 594736888840070198,\n \"ssh_url\" : \"git@github.com:octocat/Hello-World.git\",\n \"license\" : {\n \"html_url\" : \"https://web.example.mocklab.io/481554\",\n \"name\" : \"MIT License\",\n \"spdx_id\" : \"MIT\",\n \"key\" : \"mit\",\n \"url\" : \"https://api.github.com/licenses/mit\",\n \"node_id\" : \"MDc6TGljZW5zZW1pdA==\"\n },\n \"full_name\" : \"octocat/Hello-World\",\n \"size\" : 108,\n \"template_repository\" : {\n \"anonymous_access_enabled\" : false,\n \"is_template\" : false,\n \"stargazers_count\" : 2698786097161860370,\n \"pushed_at\" : \"na3a7ucu7stbbat2ng2fefco4jmuah7lgemzptr9g63736otw3heposwc5sa8b3kore1amxk1xr082dger7w2izuzafiuu3p5ow8s68pnttq6lxnuqo4x0y4tz1s63o7lhyi28g9eud66976nikeff1r6ywmq5t89rx1gd2cipzw7noh714fnzzfadbothvy54d9f\",\n \"language\" : \"s5dn6p9r04it5xb5edsfb5uocl0g6ca1azlymkr1s3hnokrgiwikpzyynv4glevx8mvdmd2cf5zqpuhiybufusdv7lt8\",\n \"subscription_url\" : \"https://web.example.mocklab.io/970703\",\n \"branches_url\" : \"https://web.example.mocklab.io/646108\",\n \"allow_rebase_merge\" : true,\n \"issue_comment_url\" : \"https://web.example.mocklab.io/593555\",\n \"labels_url\" : \"https://web.example.mocklab.io/225472\",\n \"permissions\" : { },\n \"subscribers_url\" : \"https://web.example.mocklab.io/507171\",\n \"releases_url\" : \"https://web.example.mocklab.io/167005\",\n \"svn_url\" : \"https://web.example.mocklab.io/792549\",\n \"subscribers_count\" : 3005678043974582793,\n \"id\" : 4571531403683829376,\n \"allow_merge_commit\" : true,\n \"archive_url\" : \"https://web.example.mocklab.io/639018\",\n \"git_refs_url\" : \"https://web.example.mocklab.io/268564\",\n \"forks_url\" : \"https://web.example.mocklab.io/068007\",\n \"visibility\" : \"0jgrygr0a5anf72eukz1mh8n2qsr1lkcfaj7g9xu4cgrr7uzq2w5dn3qvu3i1aw3klkzj7jocd5zvls5l72a3bho0iycvyw9zhz2l26rf85ss1b00r7ojia\",\n \"statuses_url\" : \"https://web.example.mocklab.io/545760\",\n \"network_count\" : 4116697202297048830,\n \"ssh_url\" : \"https://web.example.mocklab.io/597012\",\n \"full_name\" : \"Sue Grimes\",\n \"size\" : 7779134993527201620,\n \"languages_url\" : \"https://web.example.mocklab.io/576814\",\n \"clone_url\" : \"https://web.example.mocklab.io/609063\",\n \"collaborators_url\" : \"https://web.example.mocklab.io/312209\",\n \"html_url\" : \"https://web.example.mocklab.io/798200\",\n \"name\" : \"Ronald Boyle\",\n \"pulls_url\" : \"https://web.example.mocklab.io/527343\",\n \"default_branch\" : \"a2zklq5zgh\",\n \"hooks_url\" : \"https://web.example.mocklab.io/180978\",\n \"trees_url\" : \"https://web.example.mocklab.io/469145\",\n \"tags_url\" : \"https://web.example.mocklab.io/471136\",\n \"contributors_url\" : \"https://web.example.mocklab.io/805600\",\n \"private\" : true,\n \"has_downloads\" : true,\n \"notifications_url\" : \"https://web.example.mocklab.io/126572\",\n \"open_issues_count\" : 2644930539877870017,\n \"created_at\" : \"1bfhof2609z7u3pch8e4yhqdcrfo70eyzwz4lfgkixm4v1ilsz2i4meuie8\",\n \"description\" : \"Quis id eveniet doloribus animi iure eos. Accusamus temporibus dolore quia odit vitae dolore nostrum. Voluptas illo et consectetur qui iste in. Iusto similique sed.\",\n \"deployments_url\" : \"https://web.example.mocklab.io/959703\",\n \"keys_url\" : \"https://web.example.mocklab.io/230538\",\n \"has_projects\" : false,\n \"archived\" : false,\n \"has_wiki\" : false,\n \"updated_at\" : \"2022-07-19T07:11:58.773431Z\",\n \"comments_url\" : \"https://web.example.mocklab.io/498456\",\n \"stargazers_url\" : \"https://web.example.mocklab.io/311816\",\n \"disabled\" : false,\n \"delete_branch_on_merge\" : false,\n \"git_url\" : \"https://web.example.mocklab.io/786429\",\n \"has_pages\" : true,\n \"owner\" : { },\n \"allow_squash_merge\" : false,\n \"commits_url\" : \"https://web.example.mocklab.io/381389\",\n \"compare_url\" : \"https://web.example.mocklab.io/562537\",\n \"git_commits_url\" : \"https://web.example.mocklab.io/950550\",\n \"topics\" : [ \"jtw1z8ux7ca357t1uprkcy9uw36r5pzknp36f1\", \"uaies6v5o04pr112u0osrzqmr7slqm63vlhlj5flpnaawlpyp3rajtyctaf5rqertt4yart0s0cv6lxe35nsx3z035tfnemdtq76kiaimvfvd3kud79mds8lhtevans0lgltjv0e3huvcwy3er1yrmp7x51031seko3a1a9mp46i1w3jezih7\", \"bmnagvzasl903bz1qrwkii8anwmgpofy94jxmdzhkx26792tuvuo121m9e2cqiv9bshiw4a3cp65jywpi0t2vlf741jszlxrsziu6c4l4deq08i2oewuu7eamyqft4lnr0sof\", \"zy46vc55jm8rqoxrlr455ka18fdg6xttg9nscyofzvujgajxnbx62llmztsh7e0czm3xaff5jk3s13dpc7llua95c8bzk59ltd069rpvqblavsn1f\", \"gxdnkw5vi133cxrvp7dpbi8lez8pi6gnpa5lv\" ],\n \"blobs_url\" : \"https://web.example.mocklab.io/449376\",\n \"git_tags_url\" : \"https://web.example.mocklab.io/324680\",\n \"merges_url\" : \"https://web.example.mocklab.io/644043\",\n \"downloads_url\" : \"https://web.example.mocklab.io/187535\",\n \"has_issues\" : false,\n \"url\" : \"https://web.example.mocklab.io/286364\",\n \"contents_url\" : \"https://web.example.mocklab.io/973904\",\n \"mirror_url\" : \"https://web.example.mocklab.io/347291\",\n \"milestones_url\" : \"https://web.example.mocklab.io/639576\",\n \"teams_url\" : \"https://web.example.mocklab.io/050747\",\n \"fork\" : true,\n \"issues_url\" : \"https://web.example.mocklab.io/164837\",\n \"events_url\" : \"https://web.example.mocklab.io/078675\",\n \"issue_events_url\" : \"https://web.example.mocklab.io/108639\",\n \"assignees_url\" : \"https://web.example.mocklab.io/965221\",\n \"watchers_count\" : 8787803032038941017,\n \"forks_count\" : 3391245916909772083,\n \"homepage\" : \"x598rb\",\n \"node_id\" : \"ngtx\"\n },\n \"languages_url\" : \"http://api.github.com/repos/octocat/Hello-World/languages\",\n \"clone_url\" : \"https://github.com/octocat/Hello-World.git\",\n \"collaborators_url\" : \"http://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator}\",\n \"html_url\" : \"https://github.com/octocat/Hello-World\",\n \"name\" : \"Team Environment\",\n \"pulls_url\" : \"http://api.github.com/repos/octocat/Hello-World/pulls{/number}\",\n \"default_branch\" : \"master\",\n \"hooks_url\" : \"http://api.github.com/repos/octocat/Hello-World/hooks\",\n \"trees_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/trees{/sha}\",\n \"tags_url\" : \"http://api.github.com/repos/octocat/Hello-World/tags\",\n \"contributors_url\" : \"http://api.github.com/repos/octocat/Hello-World/contributors\",\n \"private\" : false,\n \"has_downloads\" : true,\n \"notifications_url\" : \"http://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating}\",\n \"open_issues_count\" : 0,\n \"created_at\" : \"2011-01-26T19:01:12Z\",\n \"description\" : \"This your first repo!\",\n \"watchers\" : 8672153172280099883,\n \"deployments_url\" : \"http://api.github.com/repos/octocat/Hello-World/deployments\",\n \"keys_url\" : \"http://api.github.com/repos/octocat/Hello-World/keys{/key_id}\",\n \"has_projects\" : true,\n \"archived\" : true,\n \"has_wiki\" : true,\n \"updated_at\" : \"2011-01-26T19:14:43Z\",\n \"comments_url\" : \"http://api.github.com/repos/octocat/Hello-World/comments{/number}\",\n \"stargazers_url\" : \"http://api.github.com/repos/octocat/Hello-World/stargazers\",\n \"disabled\" : true,\n \"delete_branch_on_merge\" : false,\n \"git_url\" : \"git:github.com/octocat/Hello-World.git\",\n \"has_pages\" : true,\n \"owner\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Claud Padberg III\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"e7tbq1yygn0achlr31u4dujksmb7vc9wl6hk6kil8b85cdld1ktiquuvz979k8xs639o\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"allow_squash_merge\" : true,\n \"commits_url\" : \"http://api.github.com/repos/octocat/Hello-World/commits{/sha}\",\n \"compare_url\" : \"http://api.github.com/repos/octocat/Hello-World/compare/{base}...{head}\",\n \"git_commits_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/commits{/sha}\",\n \"topics\" : [ \"m0wjem27smlyu8h05yi391t0554s40rijkcdpmcoaseic4gkh7u6qsppgplgr8ifnvgtqiemg2bbtckevthj0lrpmzewm6tzz9ftppp9fxmu9xaaiwkb9gv4v3crz6mzq3blakrp6ssevz9cax7tn01ua1v9wefkp3lutf2udbc0pxx8wfleg3xsbiifntzhzk9\", \"u0adfyjyxiqq3do5wfpveisqw\", \"caxq1v8wq8si3d0budaqibwb6azn02puzgvu9y19qvzlimcfdv515obucq24dqj22bsgwmwn70qe5inum3lj1jmw2lmqr\", \"ohjjjmhettvgnypu5ld6g73wfny5q6kkm18vtg4hdj1us9vrky64qjv89k9pna3xb6qxzj942s53ny45g5q262aaqd7t09\", \"6vgtb1xn277icjr89jksy7s0szjahi7m6t2anwnpbz8xbm0o7zp\", \"0m85ithwclpbs447cg0r8a04s9xexebdapztl76ecvybtooxdf9xkqygfp0rcm277di17264vi7xenp0mtvlhrj93k9gdzff6e4nrbblxq1pr4k7w1alye57pjgknzkeovm27jcmflfjoszfmsbs19dr4mm1ndr0\" ],\n \"blobs_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/blobs{/sha}\",\n \"git_tags_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/tags{/sha}\",\n \"merges_url\" : \"http://api.github.com/repos/octocat/Hello-World/merges\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:42Z\\\"\",\n \"downloads_url\" : \"http://api.github.com/repos/octocat/Hello-World/downloads\",\n \"has_issues\" : true,\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World\",\n \"contents_url\" : \"http://api.github.com/repos/octocat/Hello-World/contents/{+path}\",\n \"mirror_url\" : \"git:git.example.com/octocat/Hello-World\",\n \"milestones_url\" : \"http://api.github.com/repos/octocat/Hello-World/milestones{/number}\",\n \"teams_url\" : \"http://api.github.com/repos/octocat/Hello-World/teams\",\n \"fork\" : false,\n \"issues_url\" : \"http://api.github.com/repos/octocat/Hello-World/issues{/number}\",\n \"events_url\" : \"http://api.github.com/repos/octocat/Hello-World/events\",\n \"issue_events_url\" : \"http://api.github.com/repos/octocat/Hello-World/issues/events{/number}\",\n \"organization\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Taylor Lehner I\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"ntevehumyvbcpc2uqy72a3g5iqbkj5ellst8uefi72ax8neq9x0olco6zvmdpwx0\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"assignees_url\" : \"http://api.github.com/repos/octocat/Hello-World/assignees{/user}\",\n \"open_issues\" : 7088715185438883992,\n \"watchers_count\" : 80,\n \"forks_count\" : 9,\n \"homepage\" : \"https://github.com\",\n \"node_id\" : \"MDEwOlJlcG9zaXRvcnkxMjk2MjY5\"\n },\n \"title\" : \"Found a bug\",\n \"author_association\" : \"OWNER\",\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347/labels{/name}\",\n \"number\" : 1347,\n \"performed_via_github_app\" : {\n \"owner\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Mrs. Viva Anderson\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"rlw08rgw38r7ds1meq9yhov9btx5w6wal6ol9cadn3f5iq19fybjwd2uih76q2q2id4wbmgfm8gvmhewp5v5hwthrdplbhru6l5ccc88e0vjo1qpx7qivmq7rxmg37d5u3efpm07ab76z2rwm2\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"installations_count\" : 5,\n \"created_at\" : \"2017-07-08T16:18:44-04:00\",\n \"description\" : \"The description of the app.\",\n \"client_id\" : \"\\\"Iv1.25b5d1e65ffc4022\\\"\",\n \"external_url\" : \"https://example.com\",\n \"updated_at\" : \"2017-07-08T16:18:44-04:00\",\n \"permissions\" : {\n \"deployments\" : \"write\",\n \"issues\" : \"read\"\n },\n \"html_url\" : \"https://github.com/apps/super-ci\",\n \"name\" : \"Probot Owners\",\n \"pem\" : \"\\\"-----BEGIN RSA PRIVATE KEY-----\\\\nMIIEogIBAAKCAQEArYxrNYD/iT5CZVpRJu4rBKmmze3PVmT/gCo2ATUvDvZTPTey\\\\nxcGJ3vvrJXazKk06pN05TN29o98jrYz4cengG3YGsXPNEpKsIrEl8NhbnxapEnM9\\\\nJCMRe0P5JcPsfZlX6hmiT7136GRWiGOUba2X9+HKh8QJVLG5rM007TBER9/z9mWm\\\\nrJuNh+m5l320oBQY/Qq3A7wzdEfZw8qm/mIN0FCeoXH1L6B8xXWaAYBwhTEh6SSn\\\\nZHlO1Xu1JWDmAvBCi0RO5aRSKM8q9QEkvvHP4yweAtK3N8+aAbZ7ovaDhyGz8r6r\\\\nzhU1b8Uo0Z2ysf503WqzQgIajr7Fry7/kUwpgQIDAQABAoIBADwJp80Ko1xHPZDy\\\\nfcCKBDfIuPvkmSW6KumbsLMaQv1aGdHDwwTGv3t0ixSay8CGlxMRtRDyZPib6SvQ\\\\n6OH/lpfpbMdW2ErkksgtoIKBVrDilfrcAvrNZu7NxRNbhCSvN8q0s4ICecjbbVQh\\\\nnueSdlA6vGXbW58BHMq68uRbHkP+k+mM9U0mDJ1HMch67wlg5GbayVRt63H7R2+r\\\\nVxcna7B80J/lCEjIYZznawgiTvp3MSanTglqAYi+m1EcSsP14bJIB9vgaxS79kTu\\\\noiSo93leJbBvuGo8QEiUqTwMw4tDksmkLsoqNKQ1q9P7LZ9DGcujtPy4EZsamSJT\\\\ny8OJt0ECgYEA2lxOxJsQk2kI325JgKFjo92mQeUObIvPfSNWUIZQDTjniOI6Gv63\\\\nGLWVFrZcvQBWjMEQraJA9xjPbblV8PtfO87MiJGLWCHFxmPz2dzoedN+2Coxom8m\\\\nV95CLz8QUShuao6u/RYcvUaZEoYs5bHcTmy5sBK80JyEmafJPtCQVxMCgYEAy3ar\\\\nZr3yv4xRPEPMat4rseswmuMooSaK3SKub19WFI5IAtB/e7qR1Rj9JhOGcZz+OQrl\\\\nT78O2OFYlgOIkJPvRMrPpK5V9lslc7tz1FSh3BZMRGq5jSyD7ETSOQ0c8T2O/s7v\\\\nbeEPbVbDe4mwvM24XByH0GnWveVxaDl51ABD65sCgYB3ZAspUkOA5egVCh8kNpnd\\\\nSd6SnuQBE3ySRlT2WEnCwP9Ph6oPgn+oAfiPX4xbRqkL8q/k0BdHQ4h+zNwhk7+h\\\\nWtPYRAP1Xxnc/F+jGjb+DVaIaKGU18MWPg7f+FI6nampl3Q0KvfxwX0GdNhtio8T\\\\nTj1E+SnFwh56SRQuxSh2gwKBgHKjlIO5NtNSflsUYFM+hyQiPiqnHzddfhSG+/3o\\\\nm5nNaSmczJesUYreH5San7/YEy2UxAugvP7aSY2MxB+iGsiJ9WD2kZzTUlDZJ7RV\\\\nUzWsoqBR+eZfVJ2FUWWvy8TpSG6trh4dFxImNtKejCR1TREpSiTV3Zb1dmahK9GV\\\\nrK9NAoGAbBxRLoC01xfxCTgt5BDiBcFVh4fp5yYKwavJPLzHSpuDOrrI9jDn1oKN\\\\nonq5sDU1i391zfQvdrbX4Ova48BN+B7p63FocP/MK5tyyBoT8zQEk2+vWDOw7H/Z\\\\nu5dTCPxTIsoIwUw1I+7yIxqJzLPFgR2gVBwY1ra/8iAqCj+zeBw=\\\\n-----END RSA PRIVATE KEY-----\\\\n\\\"\",\n \"webhook_secret\" : \"\\\"6fba8f2fc8a7e8f2cca5577eddd82ca7586b3b6b\\\"\",\n \"client_secret\" : \"\\\"1d4b2097ac622ba702d19de498f005747a8b21d3\\\"\",\n \"id\" : 37,\n \"events\" : [ \"label\", \"deployment\" ],\n \"slug\" : \"probot-owners\",\n \"node_id\" : \"MDExOkludGVncmF0aW9uMQ==\"\n },\n \"updated_at\" : \"2011-04-22T13:33:48Z\",\n \"comments_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347/comments\",\n \"active_lock_reason\" : \"too heated\",\n \"id\" : 1,\n \"repository_url\" : \"https://api.github.com/repos/octocat/Hello-World\",\n \"state\" : \"open\",\n \"locked\" : true,\n \"timeline_url\" : \"https://web.example.mocklab.io/074109\",\n \"pull_request\" : {\n \"patch_url\" : \"https://web.example.mocklab.io/823305\",\n \"html_url\" : \"https://web.example.mocklab.io/257035\",\n \"merged_at\" : \"2023-03-12T05:10:33.775Z\",\n \"diff_url\" : \"https://web.example.mocklab.io/721613\",\n \"url\" : \"https://web.example.mocklab.io/206188\"\n },\n \"closed_at\" : \"2022-08-24T21:31:56.775Z\",\n \"comments\" : 0,\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347\",\n \"labels\" : [ {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n }, {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n }, {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n }, {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n }, {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n }, {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n }, {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n } ],\n \"milestone\" : {\n \"creator\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Cecilia Ernser\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"agzshfygtbjlgkktwf7tx5elcylazd3bszi2n0tryxkj8krrrva94v1oz9gsf6k1cl6dp7ood3i4a0ynxzl08p27rq8lrqr88wk12l4ffzfn4ge1hmnnzswr7fgbh650mmneiubj2nb9babvla8grchprugl5t78dhj1jxyubdp\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"closed_at\" : \"2013-02-12T13:22:01Z\",\n \"created_at\" : \"2011-04-10T20:09:31Z\",\n \"description\" : \"Tracking milestone for version 1.0\",\n \"closed_issues\" : 8,\n \"title\" : \"v1.0\",\n \"due_on\" : \"2012-10-09T23:39:01Z\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones/1\",\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones/1/labels\",\n \"number\" : 42,\n \"updated_at\" : \"2014-03-03T18:58:10Z\",\n \"html_url\" : \"https://github.com/octocat/Hello-World/milestones/v1.0\",\n \"id\" : 1002604,\n \"state\" : \"open\",\n \"open_issues\" : 4,\n \"node_id\" : \"MDk6TWlsZXN0b25lMTAwMjYwNA==\"\n },\n \"events_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347/events\",\n \"html_url\" : \"https://github.com/octocat/Hello-World/issues/1347\",\n \"assignee\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Miss Arnoldo Ratke\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"h5gxsi2ittntafhbf7qe0ov6apwuf4zm2c8s19vqhuu2\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"user\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"barbie.bradtke\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"zecditpaloiptqxziwb7intcltkozs21hjrfyr20lh984zo1dc4u1ydfh3yqlwp2tv0eb75w7u8vu3ey6tq0755dysywndhoxywwv90q30mjiq52rc9nlgrtbf707nkvfi66gqynqq3kiowafdcpin9chmm7fuggex3ojw2\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"node_id\" : \"MDU6SXNzdWUx\"\n },\n \"action\" : \"lh4qnchcp1vrsla7p\",\n \"comment\" : {\n \"issue_url\" : \"https://web.example.mocklab.io/488482\",\n \"body_html\" : \"1t2tb7kx8j15jft72ozx0qx2pn0c3wrhynkq0ango1k7ugsissf4b\",\n \"body_text\" : \"4weix5lwzmara8l54e7em\",\n \"created_at\" : \"2011-04-14T16:00:49Z\",\n \"body\" : \"What version of Safari were you using when you observed this bug?\",\n \"url\" : \"https://api.github.com/repositories/42/issues/comments/1\",\n \"author_association\" : \"OWNER\",\n \"performed_via_github_app\" : {\n \"owner\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Virgina Walsh\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"dm2ou7auvtdskdp6dsdciy31dqh14rx7kydnc0h8jx8q1xp6madbtq\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"installations_count\" : 5,\n \"created_at\" : \"2017-07-08T16:18:44-04:00\",\n \"description\" : \"The description of the app.\",\n \"client_id\" : \"\\\"Iv1.25b5d1e65ffc4022\\\"\",\n \"external_url\" : \"https://example.com\",\n \"updated_at\" : \"2017-07-08T16:18:44-04:00\",\n \"permissions\" : {\n \"deployments\" : \"write\",\n \"issues\" : \"read\"\n },\n \"html_url\" : \"https://github.com/apps/super-ci\",\n \"name\" : \"Probot Owners\",\n \"pem\" : \"\\\"-----BEGIN RSA PRIVATE KEY-----\\\\nMIIEogIBAAKCAQEArYxrNYD/iT5CZVpRJu4rBKmmze3PVmT/gCo2ATUvDvZTPTey\\\\nxcGJ3vvrJXazKk06pN05TN29o98jrYz4cengG3YGsXPNEpKsIrEl8NhbnxapEnM9\\\\nJCMRe0P5JcPsfZlX6hmiT7136GRWiGOUba2X9+HKh8QJVLG5rM007TBER9/z9mWm\\\\nrJuNh+m5l320oBQY/Qq3A7wzdEfZw8qm/mIN0FCeoXH1L6B8xXWaAYBwhTEh6SSn\\\\nZHlO1Xu1JWDmAvBCi0RO5aRSKM8q9QEkvvHP4yweAtK3N8+aAbZ7ovaDhyGz8r6r\\\\nzhU1b8Uo0Z2ysf503WqzQgIajr7Fry7/kUwpgQIDAQABAoIBADwJp80Ko1xHPZDy\\\\nfcCKBDfIuPvkmSW6KumbsLMaQv1aGdHDwwTGv3t0ixSay8CGlxMRtRDyZPib6SvQ\\\\n6OH/lpfpbMdW2ErkksgtoIKBVrDilfrcAvrNZu7NxRNbhCSvN8q0s4ICecjbbVQh\\\\nnueSdlA6vGXbW58BHMq68uRbHkP+k+mM9U0mDJ1HMch67wlg5GbayVRt63H7R2+r\\\\nVxcna7B80J/lCEjIYZznawgiTvp3MSanTglqAYi+m1EcSsP14bJIB9vgaxS79kTu\\\\noiSo93leJbBvuGo8QEiUqTwMw4tDksmkLsoqNKQ1q9P7LZ9DGcujtPy4EZsamSJT\\\\ny8OJt0ECgYEA2lxOxJsQk2kI325JgKFjo92mQeUObIvPfSNWUIZQDTjniOI6Gv63\\\\nGLWVFrZcvQBWjMEQraJA9xjPbblV8PtfO87MiJGLWCHFxmPz2dzoedN+2Coxom8m\\\\nV95CLz8QUShuao6u/RYcvUaZEoYs5bHcTmy5sBK80JyEmafJPtCQVxMCgYEAy3ar\\\\nZr3yv4xRPEPMat4rseswmuMooSaK3SKub19WFI5IAtB/e7qR1Rj9JhOGcZz+OQrl\\\\nT78O2OFYlgOIkJPvRMrPpK5V9lslc7tz1FSh3BZMRGq5jSyD7ETSOQ0c8T2O/s7v\\\\nbeEPbVbDe4mwvM24XByH0GnWveVxaDl51ABD65sCgYB3ZAspUkOA5egVCh8kNpnd\\\\nSd6SnuQBE3ySRlT2WEnCwP9Ph6oPgn+oAfiPX4xbRqkL8q/k0BdHQ4h+zNwhk7+h\\\\nWtPYRAP1Xxnc/F+jGjb+DVaIaKGU18MWPg7f+FI6nampl3Q0KvfxwX0GdNhtio8T\\\\nTj1E+SnFwh56SRQuxSh2gwKBgHKjlIO5NtNSflsUYFM+hyQiPiqnHzddfhSG+/3o\\\\nm5nNaSmczJesUYreH5San7/YEy2UxAugvP7aSY2MxB+iGsiJ9WD2kZzTUlDZJ7RV\\\\nUzWsoqBR+eZfVJ2FUWWvy8TpSG6trh4dFxImNtKejCR1TREpSiTV3Zb1dmahK9GV\\\\nrK9NAoGAbBxRLoC01xfxCTgt5BDiBcFVh4fp5yYKwavJPLzHSpuDOrrI9jDn1oKN\\\\nonq5sDU1i391zfQvdrbX4Ova48BN+B7p63FocP/MK5tyyBoT8zQEk2+vWDOw7H/Z\\\\nu5dTCPxTIsoIwUw1I+7yIxqJzLPFgR2gVBwY1ra/8iAqCj+zeBw=\\\\n-----END RSA PRIVATE KEY-----\\\\n\\\"\",\n \"webhook_secret\" : \"\\\"6fba8f2fc8a7e8f2cca5577eddd82ca7586b3b6b\\\"\",\n \"client_secret\" : \"\\\"1d4b2097ac622ba702d19de498f005747a8b21d3\\\"\",\n \"id\" : 37,\n \"events\" : [ \"label\", \"deployment\" ],\n \"slug\" : \"probot-owners\",\n \"node_id\" : \"MDExOkludGVncmF0aW9uMQ==\"\n },\n \"updated_at\" : \"2011-04-14T16:00:49Z\",\n \"html_url\" : \"https://web.example.mocklab.io/637464\",\n \"reactions\" : {\n \"confused\" : 3201231455909214485,\n \"-1\" : 2973989029280655046,\n \"+1\" : 3555795584738178671,\n \"total_count\" : 8862908056600823873,\n \"rocket\" : 8598169059431639787,\n \"hooray\" : 8374861187810391057,\n \"eyes\" : 135078317979817569,\n \"heart\" : 3083205300441678787,\n \"laugh\" : 2313138913361377410,\n \"url\" : \"https://web.example.mocklab.io/556328\"\n },\n \"id\" : 42,\n \"user\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"willard.dickinson\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"km7pakzgc9afh1hrr2jdl1gfxn6c\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"node_id\" : \"5hdy\"\n }\n },\n \"repo\" : {\n \"name\" : \"Tiana Becker\",\n \"id\" : 1407477453458069389,\n \"url\" : \"https://web.example.mocklab.io/174607\"\n },\n \"created_at\" : \"2023-11-10T03:39:55.777Z\",\n \"id\" : \"ifm7\",\n \"type\" : \"9ckgfa9e8fyx43kjwfx549dkgzadlebjjn2lodwdgjat5q79bqhpwib9tek7o1uamk91jy6ei29pvredva1f2rmu0q4v6xi8y0uomkq4x86pnqw3qr9xnb4yk43cdhr7lqhup3c7pbp5g3143c8sy6y6u34z31139bx7y7gw3cw1wfd3b6agxc180t5hkh4fl3\"\n}, {\n \"actor\" : {\n \"display_login\" : \"pq9e8md2ij3reehpbvlm7jylyei2xudut05ss4kza8e8xivgp45o0dn5umcyrb3hazgmyw3z3gcx8abwpwmmlo2m9jjdzmljuxgmyraf63tibswtq8jqi8zyvwbt9i6rqc2q5zvftg9fg6\",\n \"avatar_url\" : \"https://s3.amazonaws.com/uifaces/faces/twitter/happypeter1983/128.jpg\",\n \"id\" : 5638048093383145628,\n \"login\" : \"ncwmdky93u5kzcffzf6z4xf19ds5ct18bsdvl6fbw5cv7lthcoxenlxv3ktsrn29afjckx8vwcxzmlluijaxcxeenxdekiiaoakkvm95c4yn2o25l71fl0dkdcwqgiml9sqsgpz9w4ggq6dwlsyag0b\",\n \"gravatar_id\" : \"a3p2\",\n \"url\" : \"https://web.example.mocklab.io/409615\"\n },\n \"public\" : false,\n \"org\" : {\n \"display_login\" : \"49seond6lxf47lj2jq0to351wsitqiu82p2nkt8zhy7ru2n7box0eaa8pk1migiv1fkggqvos6lmoagsjmqkeq3sghfhncws7jbcx2hdbig6guw3olkqp66vw0cn7dkpw2340wmqt41nhal3lca9bc\",\n \"avatar_url\" : \"https://s3.amazonaws.com/uifaces/faces/twitter/marrimo/128.jpg\",\n \"id\" : 5237388281540976705,\n \"login\" : \"xg9ff3w8nycv46kr4zibg86vguljabt2w8kxrcyzvjy0ob9qva9ezm18n0ptpyie08sl75od7nt84an1btwg6s6l969g1v27wumzqgqezgfnt49ngi1ik5hysvhgyf07f4cjd0j9ufrll8t81uhhaxy855\",\n \"gravatar_id\" : \"5r50\",\n \"url\" : \"https://web.example.mocklab.io/253261\"\n },\n \"payload\" : {\n \"pages\" : [ {\n \"summary\" : \"Odit rerum consectetur. Similique aut fugiat autem. Cupiditate numquam reiciendis accusamus nemo et maxime. Quam eum aut.\",\n \"html_url\" : \"https://web.example.mocklab.io/738766\",\n \"page_name\" : \"Gregg Schmidt\",\n \"action\" : \"cil5fwo4lqd0y8gkho2xe8qbesiuopnjn2yiyintg228rpuxeaxycmpi5oxodmx\",\n \"title\" : \"Iure eum nesciunt molestiae impedit ducimus.\",\n \"sha\" : \"i5i1r15scbli7xr09rsltnihpjhtdijadr7n5z589xn54l09uj9xm7tql9nmpef5i6ysydzzeiu5gegdoei0w8vq3dxunxc612agu2vr5lsewkjkq9u8ir1r19z1qu6tb0jlcs8qom40zftiwjtydg38lda2uj9o6ghplx065u\"\n }, {\n \"summary\" : \"Error aut quia aut velit. Dolor facilis laboriosam ad quod aperiam non velit. Hic voluptas tempora praesentium non provident aperiam. Voluptas dolorem in. Aut numquam qui nobis sed.\",\n \"html_url\" : \"https://web.example.mocklab.io/861172\",\n \"page_name\" : \"Dr. Minh VonRueden\",\n \"action\" : \"6hwf68s8qp40ora6t4xvdif0hbi83ixdwi6ia3wdjkpfuibtl4zudc2jmz0en1nyiqa51yv9ekzawvc1zm1h9kuiww7np889a6j7zpihek3hmgi14ha663gjks9p0ljrxis7df4wg18zp74hs5ljtrz1lbvxuqx360vm56p6kuo\",\n \"title\" : \"Nemo at deleniti incidunt culpa iure et.\",\n \"sha\" : \"qg78zu1d8tinx3gemygpzixaptlljlnm1iznvmombcg4gdh8rivq4a5brraqp62up8fgzcassiuvt5eeeis8wrqbvfa5u7rtgt\"\n }, {\n \"summary\" : \"Voluptatem provident sunt earum. Quasi aliquid ut aut sunt eum. Perspiciatis voluptas similique quo. Corporis illum reprehenderit aut. Laboriosam velit minus occaecati doloribus omnis porro et.\",\n \"html_url\" : \"https://web.example.mocklab.io/269955\",\n \"page_name\" : \"Bryan Carter\",\n \"action\" : \"8nsazyccgpbiqq4vo6wnn11dpqm3pzyafvu3hdx4qxv5ehej1qhq3z6fd2gtlyi62ocqjy0b3n84k4e7ppgndzk79fd1pp8jjy5w5gox3fxyqxmvssxcsg9sdcs7zhy32ayhr4w\",\n \"title\" : \"Odit soluta odit omnis nihil animi sed.\",\n \"sha\" : \"jpjkvsi5b4p520m1m83h1c3olzblc162vo7hlvmss8i94mer73qhysp5ftl6rl7j7durmp7h6bjwp5h5z3iijy7vyg6sz3uxydln0u30lata1f45fol60waddobnpzu1t0kld7yuk9dbliip6xx2djh\"\n }, {\n \"summary\" : \"Vel officiis voluptate cumque repellat. Harum minus vel. Nihil vero nesciunt veniam ipsum. Voluptatem voluptates eveniet et officia laborum at tempora. Eum illum aut exercitationem quisquam.\",\n \"html_url\" : \"https://web.example.mocklab.io/264383\",\n \"page_name\" : \"Mrs. Collette Rempel\",\n \"action\" : \"p8l58ualgpy3jm9h7y8isn5l50uofkrm7sq9y5eqfu7eugh5drvu091rmpj1eqi803cvavyen2q97qjy843c1rn7i0ajzx4g\",\n \"title\" : \"Temporibus ut magnam dolores quia eum quaerat.\",\n \"sha\" : \"bhmj24j0nugci0hek0ka913j9zffthieg4vfxhm3o8o89gk34n4jcm7d75hh4he3k03vtjayl39pzp2dlfemf1kqrq11z53qz3v5wd4d2jeeoszbki9yp3pgqig4qjxo1iern7hgzsfn0\"\n }, {\n \"summary\" : \"Dolor alias ut at commodi illum in architecto. Quas incidunt dicta qui tempore sit a possimus. Veniam tempore fugit enim. Ut blanditiis rerum corrupti.\",\n \"html_url\" : \"https://web.example.mocklab.io/860194\",\n \"page_name\" : \"Lizabeth Kub\",\n \"action\" : \"gf7s0vkguil41uirwnl4ymq9u736s0aevjzw758ym6360tri1ltyp6qzq13i5yi6voxvqgco1o3y0bue9h2\",\n \"title\" : \"Eum autem consequatur qui corrupti saepe reiciendis aut.\",\n \"sha\" : \"bvrcgwhhrevxpph32941r49zrzesav7qa2frq24kce0uec1lxw7hu221qz5mi6h4sa6tuggipnmwhsl8ghjacmb57yqbmokh259q73yhm9f9j6scpwd8a573i8hnz28\"\n } ],\n \"issue\" : {\n \"body_html\" : \"ga7esmnw2p95et0avwmpqrab8lyp9d77c6om94g83f4pzu9xya719qu4gty0ieix7zzeo9c6r8uico0b9k06mau504i8cam00uzduycamnh09jmvct05vt11y83g3drsju0pffntg582ov6fg1rew94ath8uk39tso38m3cxl5890gqvvd\",\n \"body_text\" : \"2yhgirulpkbprufkccl81wclrmec1vyc105ostm\",\n \"assignees\" : [ {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Brianna Kertzmann\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"6d6ctqovnyta18fxxb45731fz8jeyiq6cpeqj4o5fd91c67pdzwyf1t1tmxvniu9yih37nd5l3aqkdkd8nbd3p7c34t88\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n } ],\n \"created_at\" : \"2011-04-22T13:33:48Z\",\n \"body\" : \"I'm having a problem with this.\",\n \"repository\" : {\n \"allow_forking\" : false,\n \"anonymous_access_enabled\" : false,\n \"is_template\" : true,\n \"stargazers_count\" : 80,\n \"pushed_at\" : \"2011-01-26T19:06:43Z\",\n \"language\" : \"nxq18iq2nqgh6ss03i14uynsdegyfx8ey980y8nxq4s11gdpvae8r973puvulsxeuxhmipr6bn477ejt5z46vgks1hpufz4vc50lfpeazu\",\n \"subscription_url\" : \"http://api.github.com/repos/octocat/Hello-World/subscription\",\n \"branches_url\" : \"http://api.github.com/repos/octocat/Hello-World/branches{/branch}\",\n \"allow_rebase_merge\" : true,\n \"issue_comment_url\" : \"http://api.github.com/repos/octocat/Hello-World/issues/comments{/number}\",\n \"labels_url\" : \"http://api.github.com/repos/octocat/Hello-World/labels{/name}\",\n \"permissions\" : {\n \"pull\" : false,\n \"maintain\" : false,\n \"admin\" : true,\n \"triage\" : true,\n \"push\" : true\n },\n \"subscribers_url\" : \"http://api.github.com/repos/octocat/Hello-World/subscribers\",\n \"releases_url\" : \"http://api.github.com/repos/octocat/Hello-World/releases{/id}\",\n \"svn_url\" : \"https://svn.github.com/octocat/Hello-World\",\n \"subscribers_count\" : 7444031316196730896,\n \"id\" : 42,\n \"master_branch\" : \"a2rmtygczzdcc3pv548f7yyy7il1nc5te5g602je6kagu5w6gt4a52kznevlemy6xh2hm3u35g1nbh8g8p6k29gtxaoxxthyr5ax5ph2sxqejfxdpzc3vce7y6ei948z8mfzhdjkis97kguzr0ly4yxe4\",\n \"forks\" : 4728751228379898844,\n \"allow_merge_commit\" : true,\n \"archive_url\" : \"http://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref}\",\n \"git_refs_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/refs{/sha}\",\n \"forks_url\" : \"http://api.github.com/repos/octocat/Hello-World/forks\",\n \"visibility\" : \"f3ku8xe22yqt8zpwdpvq5h1o7v0hk0xfm9f14xdc2ct5hjet5gnbn7l3m77di29lcrym5qz26n115x\",\n \"statuses_url\" : \"http://api.github.com/repos/octocat/Hello-World/statuses/{sha}\",\n \"network_count\" : 2885616699552893476,\n \"ssh_url\" : \"git@github.com:octocat/Hello-World.git\",\n \"license\" : {\n \"html_url\" : \"https://web.example.mocklab.io/911163\",\n \"name\" : \"MIT License\",\n \"spdx_id\" : \"MIT\",\n \"key\" : \"mit\",\n \"url\" : \"https://api.github.com/licenses/mit\",\n \"node_id\" : \"MDc6TGljZW5zZW1pdA==\"\n },\n \"full_name\" : \"octocat/Hello-World\",\n \"size\" : 108,\n \"template_repository\" : {\n \"anonymous_access_enabled\" : true,\n \"is_template\" : false,\n \"stargazers_count\" : 3280501063301293298,\n \"pushed_at\" : \"35m0koaq28vxj\",\n \"language\" : \"g5kaomnvx8npogzvmx167hi2qj0tfwpc4k8bqb4k3dk8iam675lg1n7sq0x0hdhvvl9xcz99eazydsofy0cbp6b912zpyileq4vduform9cqcoo1eb6mqdx5i\",\n \"subscription_url\" : \"https://web.example.mocklab.io/363340\",\n \"branches_url\" : \"https://web.example.mocklab.io/749796\",\n \"allow_rebase_merge\" : false,\n \"issue_comment_url\" : \"https://web.example.mocklab.io/691163\",\n \"labels_url\" : \"https://web.example.mocklab.io/125572\",\n \"permissions\" : { },\n \"subscribers_url\" : \"https://web.example.mocklab.io/857646\",\n \"releases_url\" : \"https://web.example.mocklab.io/954774\",\n \"svn_url\" : \"https://web.example.mocklab.io/106688\",\n \"subscribers_count\" : 31540480345675813,\n \"id\" : 4860019826533409601,\n \"allow_merge_commit\" : false,\n \"archive_url\" : \"https://web.example.mocklab.io/905694\",\n \"git_refs_url\" : \"https://web.example.mocklab.io/898792\",\n \"forks_url\" : \"https://web.example.mocklab.io/483919\",\n \"visibility\" : \"6d6mxxzzyllqve47ghhid3z22jml8490qm\",\n \"statuses_url\" : \"https://web.example.mocklab.io/065916\",\n \"network_count\" : 7287928770399785654,\n \"ssh_url\" : \"https://web.example.mocklab.io/179727\",\n \"full_name\" : \"Tracy Herman\",\n \"size\" : 8861689539638752917,\n \"languages_url\" : \"https://web.example.mocklab.io/594019\",\n \"clone_url\" : \"https://web.example.mocklab.io/617390\",\n \"collaborators_url\" : \"https://web.example.mocklab.io/234428\",\n \"html_url\" : \"https://web.example.mocklab.io/465962\",\n \"name\" : \"Rupert Auer III\",\n \"pulls_url\" : \"https://web.example.mocklab.io/014368\",\n \"default_branch\" : \"rspr6on2pief791lkveqz38a2ho8x1zsc0m6rr5fssu9nzhi31lmqd6q39nnsg0muq8ux3kfd\",\n \"hooks_url\" : \"https://web.example.mocklab.io/356097\",\n \"trees_url\" : \"https://web.example.mocklab.io/539469\",\n \"tags_url\" : \"https://web.example.mocklab.io/063886\",\n \"contributors_url\" : \"https://web.example.mocklab.io/719384\",\n \"private\" : false,\n \"has_downloads\" : false,\n \"notifications_url\" : \"https://web.example.mocklab.io/843344\",\n \"open_issues_count\" : 3599333100020455923,\n \"created_at\" : \"ptshme1ctdgpi8buost4eybmkjf4tmb\",\n \"description\" : \"Autem veniam magnam repellendus. Veniam rerum dolorem corporis ipsa. Eaque quis perspiciatis aspernatur dolorem. Aut incidunt id. Magni omnis quo error fugit nam suscipit quia.\",\n \"deployments_url\" : \"https://web.example.mocklab.io/610663\",\n \"keys_url\" : \"https://web.example.mocklab.io/041240\",\n \"has_projects\" : false,\n \"archived\" : true,\n \"has_wiki\" : true,\n \"updated_at\" : \"2022-08-15T06:48:58.780881Z\",\n \"comments_url\" : \"https://web.example.mocklab.io/809174\",\n \"stargazers_url\" : \"https://web.example.mocklab.io/052906\",\n \"disabled\" : true,\n \"delete_branch_on_merge\" : false,\n \"git_url\" : \"https://web.example.mocklab.io/365643\",\n \"has_pages\" : false,\n \"owner\" : { },\n \"allow_squash_merge\" : false,\n \"commits_url\" : \"https://web.example.mocklab.io/395358\",\n \"compare_url\" : \"https://web.example.mocklab.io/523383\",\n \"git_commits_url\" : \"https://web.example.mocklab.io/999731\",\n \"topics\" : [ \"lwsc6\", \"2kcd2k73wf5ptz6lgme4mbcv3el3oa2rui4mdzkya2ztj58ispcojwgwdolw4xrhyfldtf3mxsrs2y46qhq5bkcgakajk4k7j6v0hd9fufhoo17n612itbfrnack0zquwkf2u30ar4yzfhu0py3lmqr6blijk\", \"n31aom\", \"0le97n48g6ivsgb04nxs9kmkl9zlkkmkgjj6rljj2ncac3l6xpezpnmdd1t14fpuf7h0juj3hnv40uho7o66y0g4zeb6msbnqdfojs5fwh0xt77kb6ch5kleojkkft2r49enym3nbiv\" ],\n \"blobs_url\" : \"https://web.example.mocklab.io/164876\",\n \"git_tags_url\" : \"https://web.example.mocklab.io/809197\",\n \"merges_url\" : \"https://web.example.mocklab.io/681779\",\n \"downloads_url\" : \"https://web.example.mocklab.io/710630\",\n \"has_issues\" : false,\n \"url\" : \"https://web.example.mocklab.io/285334\",\n \"contents_url\" : \"https://web.example.mocklab.io/168515\",\n \"mirror_url\" : \"https://web.example.mocklab.io/215720\",\n \"milestones_url\" : \"https://web.example.mocklab.io/220204\",\n \"teams_url\" : \"https://web.example.mocklab.io/950898\",\n \"fork\" : true,\n \"issues_url\" : \"https://web.example.mocklab.io/670030\",\n \"events_url\" : \"https://web.example.mocklab.io/555756\",\n \"issue_events_url\" : \"https://web.example.mocklab.io/939780\",\n \"assignees_url\" : \"https://web.example.mocklab.io/066190\",\n \"watchers_count\" : 4009529354419169805,\n \"forks_count\" : 3133049865848382290,\n \"homepage\" : \"zt9px9dl11s4eoni0zdlcogpkfmtm2cqt3xq60lq1jlpkr8pl3p3fysvohf6uipxnqyn01uixpczcprc9p4w5wryidka2rjq94v4ux0y395uwvo7ylybgrunv1\",\n \"node_id\" : \"ip1r\"\n },\n \"languages_url\" : \"http://api.github.com/repos/octocat/Hello-World/languages\",\n \"clone_url\" : \"https://github.com/octocat/Hello-World.git\",\n \"collaborators_url\" : \"http://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator}\",\n \"html_url\" : \"https://github.com/octocat/Hello-World\",\n \"name\" : \"Team Environment\",\n \"pulls_url\" : \"http://api.github.com/repos/octocat/Hello-World/pulls{/number}\",\n \"default_branch\" : \"master\",\n \"hooks_url\" : \"http://api.github.com/repos/octocat/Hello-World/hooks\",\n \"trees_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/trees{/sha}\",\n \"tags_url\" : \"http://api.github.com/repos/octocat/Hello-World/tags\",\n \"contributors_url\" : \"http://api.github.com/repos/octocat/Hello-World/contributors\",\n \"private\" : true,\n \"has_downloads\" : true,\n \"notifications_url\" : \"http://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating}\",\n \"open_issues_count\" : 0,\n \"created_at\" : \"2011-01-26T19:01:12Z\",\n \"description\" : \"This your first repo!\",\n \"watchers\" : 3754359486777456689,\n \"deployments_url\" : \"http://api.github.com/repos/octocat/Hello-World/deployments\",\n \"keys_url\" : \"http://api.github.com/repos/octocat/Hello-World/keys{/key_id}\",\n \"has_projects\" : true,\n \"archived\" : true,\n \"has_wiki\" : true,\n \"updated_at\" : \"2011-01-26T19:14:43Z\",\n \"comments_url\" : \"http://api.github.com/repos/octocat/Hello-World/comments{/number}\",\n \"stargazers_url\" : \"http://api.github.com/repos/octocat/Hello-World/stargazers\",\n \"disabled\" : false,\n \"delete_branch_on_merge\" : false,\n \"git_url\" : \"git:github.com/octocat/Hello-World.git\",\n \"has_pages\" : true,\n \"owner\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Denny Fadel\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"4qkzh27o3zt1tmvlw9smn3ess6jr4roru49o4yj49g6fbouihfapl4kkp2sh78wnnf16da4rd10l4ooa4s4oboxv9y7v40o0tuzei7mgishh9231i7fifvyes9bq70gx8ewkx0aq9g5bv9tyewn4j\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"allow_squash_merge\" : true,\n \"commits_url\" : \"http://api.github.com/repos/octocat/Hello-World/commits{/sha}\",\n \"compare_url\" : \"http://api.github.com/repos/octocat/Hello-World/compare/{base}...{head}\",\n \"git_commits_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/commits{/sha}\",\n \"topics\" : [ \"mz5lryhwejt2p4mm6svfngje5trhsm2r91s1bn0e06ze3q5em38nqzrw9k80ddfhnavo2t4xdlj6t3ljj8q6bu3ml4oaxtsscrer9lwqiojmv2zgx5b1x4lw8vqie5oo06p8zvdlr4dntky0k0q6bi9lg44oqy3ge\", \"2dk5fthmnm3nf1uvltgq5h53vze6u4xqzh95s79sovwat026mxmd7cfy2dmo4p7mh6gblsg50mrs837wu57njg4x2vei03pf01xl1n7bh9pgzq2c1t4w5k2omnzh4ft0ovb6txuvh62qfshb8t0ooobe3ogvxoomyq6ft5g\", \"h33hodxf4eifkdd4cetryxal8teqy5nvpgr7zty6ftwvele4ofekda393sqrkxca6kus70cjwp7ei9gy0odlz4iw7iim8a1g9peftue9wa89x5sru2abqz41z3hard1ncaq59apw50x4zdixnj2uzfx23gvlsule48vuy61cwghvz4le\", \"iqz7y6d6ehfhgy4m6z447977ixikrzwaw9sldc6rg581lnf8hmn1mizgvizo6nwkohm99o69hpt67cq7k2cz\", \"rjyctfhk8n0a0bmg672uguf3zqr17w5eld1h3yl9yp5phv5wiebglmgil4j8rad3qb9koko30chgdl3f4sv5mj1cw9\", \"8jwymwv3fva\", \"tkb4b0wx0d\" ],\n \"blobs_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/blobs{/sha}\",\n \"git_tags_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/tags{/sha}\",\n \"merges_url\" : \"http://api.github.com/repos/octocat/Hello-World/merges\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:42Z\\\"\",\n \"downloads_url\" : \"http://api.github.com/repos/octocat/Hello-World/downloads\",\n \"has_issues\" : true,\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World\",\n \"contents_url\" : \"http://api.github.com/repos/octocat/Hello-World/contents/{+path}\",\n \"mirror_url\" : \"git:git.example.com/octocat/Hello-World\",\n \"milestones_url\" : \"http://api.github.com/repos/octocat/Hello-World/milestones{/number}\",\n \"teams_url\" : \"http://api.github.com/repos/octocat/Hello-World/teams\",\n \"fork\" : false,\n \"issues_url\" : \"http://api.github.com/repos/octocat/Hello-World/issues{/number}\",\n \"events_url\" : \"http://api.github.com/repos/octocat/Hello-World/events\",\n \"issue_events_url\" : \"http://api.github.com/repos/octocat/Hello-World/issues/events{/number}\",\n \"organization\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Granville Corwin IV\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"0jxst0csiviu1slt90\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"assignees_url\" : \"http://api.github.com/repos/octocat/Hello-World/assignees{/user}\",\n \"open_issues\" : 3906080243715185158,\n \"watchers_count\" : 80,\n \"forks_count\" : 9,\n \"homepage\" : \"https://github.com\",\n \"node_id\" : \"MDEwOlJlcG9zaXRvcnkxMjk2MjY5\"\n },\n \"title\" : \"Found a bug\",\n \"author_association\" : \"OWNER\",\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347/labels{/name}\",\n \"number\" : 1347,\n \"performed_via_github_app\" : {\n \"owner\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Rema Ebert\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"wg3vllvpt3kc8\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"installations_count\" : 5,\n \"created_at\" : \"2017-07-08T16:18:44-04:00\",\n \"description\" : \"The description of the app.\",\n \"client_id\" : \"\\\"Iv1.25b5d1e65ffc4022\\\"\",\n \"external_url\" : \"https://example.com\",\n \"updated_at\" : \"2017-07-08T16:18:44-04:00\",\n \"permissions\" : {\n \"deployments\" : \"write\",\n \"issues\" : \"read\"\n },\n \"html_url\" : \"https://github.com/apps/super-ci\",\n \"name\" : \"Probot Owners\",\n \"pem\" : \"\\\"-----BEGIN RSA PRIVATE KEY-----\\\\nMIIEogIBAAKCAQEArYxrNYD/iT5CZVpRJu4rBKmmze3PVmT/gCo2ATUvDvZTPTey\\\\nxcGJ3vvrJXazKk06pN05TN29o98jrYz4cengG3YGsXPNEpKsIrEl8NhbnxapEnM9\\\\nJCMRe0P5JcPsfZlX6hmiT7136GRWiGOUba2X9+HKh8QJVLG5rM007TBER9/z9mWm\\\\nrJuNh+m5l320oBQY/Qq3A7wzdEfZw8qm/mIN0FCeoXH1L6B8xXWaAYBwhTEh6SSn\\\\nZHlO1Xu1JWDmAvBCi0RO5aRSKM8q9QEkvvHP4yweAtK3N8+aAbZ7ovaDhyGz8r6r\\\\nzhU1b8Uo0Z2ysf503WqzQgIajr7Fry7/kUwpgQIDAQABAoIBADwJp80Ko1xHPZDy\\\\nfcCKBDfIuPvkmSW6KumbsLMaQv1aGdHDwwTGv3t0ixSay8CGlxMRtRDyZPib6SvQ\\\\n6OH/lpfpbMdW2ErkksgtoIKBVrDilfrcAvrNZu7NxRNbhCSvN8q0s4ICecjbbVQh\\\\nnueSdlA6vGXbW58BHMq68uRbHkP+k+mM9U0mDJ1HMch67wlg5GbayVRt63H7R2+r\\\\nVxcna7B80J/lCEjIYZznawgiTvp3MSanTglqAYi+m1EcSsP14bJIB9vgaxS79kTu\\\\noiSo93leJbBvuGo8QEiUqTwMw4tDksmkLsoqNKQ1q9P7LZ9DGcujtPy4EZsamSJT\\\\ny8OJt0ECgYEA2lxOxJsQk2kI325JgKFjo92mQeUObIvPfSNWUIZQDTjniOI6Gv63\\\\nGLWVFrZcvQBWjMEQraJA9xjPbblV8PtfO87MiJGLWCHFxmPz2dzoedN+2Coxom8m\\\\nV95CLz8QUShuao6u/RYcvUaZEoYs5bHcTmy5sBK80JyEmafJPtCQVxMCgYEAy3ar\\\\nZr3yv4xRPEPMat4rseswmuMooSaK3SKub19WFI5IAtB/e7qR1Rj9JhOGcZz+OQrl\\\\nT78O2OFYlgOIkJPvRMrPpK5V9lslc7tz1FSh3BZMRGq5jSyD7ETSOQ0c8T2O/s7v\\\\nbeEPbVbDe4mwvM24XByH0GnWveVxaDl51ABD65sCgYB3ZAspUkOA5egVCh8kNpnd\\\\nSd6SnuQBE3ySRlT2WEnCwP9Ph6oPgn+oAfiPX4xbRqkL8q/k0BdHQ4h+zNwhk7+h\\\\nWtPYRAP1Xxnc/F+jGjb+DVaIaKGU18MWPg7f+FI6nampl3Q0KvfxwX0GdNhtio8T\\\\nTj1E+SnFwh56SRQuxSh2gwKBgHKjlIO5NtNSflsUYFM+hyQiPiqnHzddfhSG+/3o\\\\nm5nNaSmczJesUYreH5San7/YEy2UxAugvP7aSY2MxB+iGsiJ9WD2kZzTUlDZJ7RV\\\\nUzWsoqBR+eZfVJ2FUWWvy8TpSG6trh4dFxImNtKejCR1TREpSiTV3Zb1dmahK9GV\\\\nrK9NAoGAbBxRLoC01xfxCTgt5BDiBcFVh4fp5yYKwavJPLzHSpuDOrrI9jDn1oKN\\\\nonq5sDU1i391zfQvdrbX4Ova48BN+B7p63FocP/MK5tyyBoT8zQEk2+vWDOw7H/Z\\\\nu5dTCPxTIsoIwUw1I+7yIxqJzLPFgR2gVBwY1ra/8iAqCj+zeBw=\\\\n-----END RSA PRIVATE KEY-----\\\\n\\\"\",\n \"webhook_secret\" : \"\\\"6fba8f2fc8a7e8f2cca5577eddd82ca7586b3b6b\\\"\",\n \"client_secret\" : \"\\\"1d4b2097ac622ba702d19de498f005747a8b21d3\\\"\",\n \"id\" : 37,\n \"events\" : [ \"label\", \"deployment\" ],\n \"slug\" : \"probot-owners\",\n \"node_id\" : \"MDExOkludGVncmF0aW9uMQ==\"\n },\n \"updated_at\" : \"2011-04-22T13:33:48Z\",\n \"comments_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347/comments\",\n \"active_lock_reason\" : \"too heated\",\n \"id\" : 1,\n \"repository_url\" : \"https://api.github.com/repos/octocat/Hello-World\",\n \"state\" : \"open\",\n \"locked\" : true,\n \"timeline_url\" : \"https://web.example.mocklab.io/559073\",\n \"pull_request\" : {\n \"patch_url\" : \"https://web.example.mocklab.io/172566\",\n \"html_url\" : \"https://web.example.mocklab.io/760683\",\n \"merged_at\" : \"2022-06-10T23:12:20.783Z\",\n \"diff_url\" : \"https://web.example.mocklab.io/953154\",\n \"url\" : \"https://web.example.mocklab.io/437534\"\n },\n \"closed_at\" : \"2023-10-04T05:38:02.783Z\",\n \"comments\" : 0,\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347\",\n \"labels\" : [ {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n } ],\n \"milestone\" : {\n \"creator\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Lizzie Rath\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"7xl17gzbq06wd4c1q4ie3y82g02jgtmwkqvk275lda81ugv0jjimwprkq063z7ki98qipa0b4zspw8x0wms\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"closed_at\" : \"2013-02-12T13:22:01Z\",\n \"created_at\" : \"2011-04-10T20:09:31Z\",\n \"description\" : \"Tracking milestone for version 1.0\",\n \"closed_issues\" : 8,\n \"title\" : \"v1.0\",\n \"due_on\" : \"2012-10-09T23:39:01Z\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones/1\",\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones/1/labels\",\n \"number\" : 42,\n \"updated_at\" : \"2014-03-03T18:58:10Z\",\n \"html_url\" : \"https://github.com/octocat/Hello-World/milestones/v1.0\",\n \"id\" : 1002604,\n \"state\" : \"open\",\n \"open_issues\" : 4,\n \"node_id\" : \"MDk6TWlsZXN0b25lMTAwMjYwNA==\"\n },\n \"events_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347/events\",\n \"html_url\" : \"https://github.com/octocat/Hello-World/issues/1347\",\n \"assignee\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Mrs. Kyle Johnston\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"d940i6yftecoctgcsqkub3toq75nremsfe2x58r3u74215zzy3vp3o9glhybl0j97f\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"user\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"shon.pagac\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"is9j9vygl5yabc2x4wroqgsx07novmqgotyikn6fzqie48c5n5cuoukqowfhzegndnwfzcb3xic155nhmq4cs3w968jaydd2hje2t1y3zp77ubwzg6ahq5q6e2a9333owpdr3yt\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"node_id\" : \"MDU6SXNzdWUx\"\n },\n \"action\" : \"edvig2dsl7eibdwldle438fmtysaw0sl7q4b51c5su1lqja38anh0xi3fl3t07p2do8tctzn7ghx0b4zfrk29syffc82hluat9ry5tmh8iwvx8z19o20zig5mxbskr0jbkxy4yst7j0mykmhbqde973nfaofnpar6tebdoxmayjbl\",\n \"comment\" : {\n \"issue_url\" : \"https://web.example.mocklab.io/944265\",\n \"body_html\" : \"nelwqtjt7t4hb85qj42itqea1pkws0qg4y6fdsoryg2ndd8rint6uq60dc2ftbye2lknkuvqclyz4frbkpycp4yqia012hoo3tydkp6f1qzxgy5xjw11ft0bofxonvf3h1znpw3a5gh2lri9qcrafsh0jzxfysw6\",\n \"body_text\" : \"fdw62yblfxg1y779\",\n \"created_at\" : \"2011-04-14T16:00:49Z\",\n \"body\" : \"What version of Safari were you using when you observed this bug?\",\n \"url\" : \"https://api.github.com/repositories/42/issues/comments/1\",\n \"author_association\" : \"OWNER\",\n \"performed_via_github_app\" : {\n \"owner\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Jospeh Daugherty DDS\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"4izdef30n4c1v\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"installations_count\" : 5,\n \"created_at\" : \"2017-07-08T16:18:44-04:00\",\n \"description\" : \"The description of the app.\",\n \"client_id\" : \"\\\"Iv1.25b5d1e65ffc4022\\\"\",\n \"external_url\" : \"https://example.com\",\n \"updated_at\" : \"2017-07-08T16:18:44-04:00\",\n \"permissions\" : {\n \"deployments\" : \"write\",\n \"issues\" : \"read\"\n },\n \"html_url\" : \"https://github.com/apps/super-ci\",\n \"name\" : \"Probot Owners\",\n \"pem\" : \"\\\"-----BEGIN RSA PRIVATE KEY-----\\\\nMIIEogIBAAKCAQEArYxrNYD/iT5CZVpRJu4rBKmmze3PVmT/gCo2ATUvDvZTPTey\\\\nxcGJ3vvrJXazKk06pN05TN29o98jrYz4cengG3YGsXPNEpKsIrEl8NhbnxapEnM9\\\\nJCMRe0P5JcPsfZlX6hmiT7136GRWiGOUba2X9+HKh8QJVLG5rM007TBER9/z9mWm\\\\nrJuNh+m5l320oBQY/Qq3A7wzdEfZw8qm/mIN0FCeoXH1L6B8xXWaAYBwhTEh6SSn\\\\nZHlO1Xu1JWDmAvBCi0RO5aRSKM8q9QEkvvHP4yweAtK3N8+aAbZ7ovaDhyGz8r6r\\\\nzhU1b8Uo0Z2ysf503WqzQgIajr7Fry7/kUwpgQIDAQABAoIBADwJp80Ko1xHPZDy\\\\nfcCKBDfIuPvkmSW6KumbsLMaQv1aGdHDwwTGv3t0ixSay8CGlxMRtRDyZPib6SvQ\\\\n6OH/lpfpbMdW2ErkksgtoIKBVrDilfrcAvrNZu7NxRNbhCSvN8q0s4ICecjbbVQh\\\\nnueSdlA6vGXbW58BHMq68uRbHkP+k+mM9U0mDJ1HMch67wlg5GbayVRt63H7R2+r\\\\nVxcna7B80J/lCEjIYZznawgiTvp3MSanTglqAYi+m1EcSsP14bJIB9vgaxS79kTu\\\\noiSo93leJbBvuGo8QEiUqTwMw4tDksmkLsoqNKQ1q9P7LZ9DGcujtPy4EZsamSJT\\\\ny8OJt0ECgYEA2lxOxJsQk2kI325JgKFjo92mQeUObIvPfSNWUIZQDTjniOI6Gv63\\\\nGLWVFrZcvQBWjMEQraJA9xjPbblV8PtfO87MiJGLWCHFxmPz2dzoedN+2Coxom8m\\\\nV95CLz8QUShuao6u/RYcvUaZEoYs5bHcTmy5sBK80JyEmafJPtCQVxMCgYEAy3ar\\\\nZr3yv4xRPEPMat4rseswmuMooSaK3SKub19WFI5IAtB/e7qR1Rj9JhOGcZz+OQrl\\\\nT78O2OFYlgOIkJPvRMrPpK5V9lslc7tz1FSh3BZMRGq5jSyD7ETSOQ0c8T2O/s7v\\\\nbeEPbVbDe4mwvM24XByH0GnWveVxaDl51ABD65sCgYB3ZAspUkOA5egVCh8kNpnd\\\\nSd6SnuQBE3ySRlT2WEnCwP9Ph6oPgn+oAfiPX4xbRqkL8q/k0BdHQ4h+zNwhk7+h\\\\nWtPYRAP1Xxnc/F+jGjb+DVaIaKGU18MWPg7f+FI6nampl3Q0KvfxwX0GdNhtio8T\\\\nTj1E+SnFwh56SRQuxSh2gwKBgHKjlIO5NtNSflsUYFM+hyQiPiqnHzddfhSG+/3o\\\\nm5nNaSmczJesUYreH5San7/YEy2UxAugvP7aSY2MxB+iGsiJ9WD2kZzTUlDZJ7RV\\\\nUzWsoqBR+eZfVJ2FUWWvy8TpSG6trh4dFxImNtKejCR1TREpSiTV3Zb1dmahK9GV\\\\nrK9NAoGAbBxRLoC01xfxCTgt5BDiBcFVh4fp5yYKwavJPLzHSpuDOrrI9jDn1oKN\\\\nonq5sDU1i391zfQvdrbX4Ova48BN+B7p63FocP/MK5tyyBoT8zQEk2+vWDOw7H/Z\\\\nu5dTCPxTIsoIwUw1I+7yIxqJzLPFgR2gVBwY1ra/8iAqCj+zeBw=\\\\n-----END RSA PRIVATE KEY-----\\\\n\\\"\",\n \"webhook_secret\" : \"\\\"6fba8f2fc8a7e8f2cca5577eddd82ca7586b3b6b\\\"\",\n \"client_secret\" : \"\\\"1d4b2097ac622ba702d19de498f005747a8b21d3\\\"\",\n \"id\" : 37,\n \"events\" : [ \"label\", \"deployment\" ],\n \"slug\" : \"probot-owners\",\n \"node_id\" : \"MDExOkludGVncmF0aW9uMQ==\"\n },\n \"updated_at\" : \"2011-04-14T16:00:49Z\",\n \"html_url\" : \"https://web.example.mocklab.io/639561\",\n \"reactions\" : {\n \"confused\" : 7133124330096488548,\n \"-1\" : 7696916945780118679,\n \"+1\" : 3587337086051749813,\n \"total_count\" : 4487877615410922756,\n \"rocket\" : 8685659719901380412,\n \"hooray\" : 3287171219918939126,\n \"eyes\" : 939386589772812683,\n \"heart\" : 5957363650365869934,\n \"laugh\" : 6998153813517499675,\n \"url\" : \"https://web.example.mocklab.io/926112\"\n },\n \"id\" : 42,\n \"user\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"delia.runte\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"4kudpxk27gjqew8vlaen3nngm55smrsf20tvw5qajp87bxy6011yjenwdztmaztnrlt75y0wbpvfixsg00jc2bwd3th5qz85ryn17dyxfitq\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"node_id\" : \"513r\"\n }\n },\n \"repo\" : {\n \"name\" : \"Marybelle Wunsch\",\n \"id\" : 5713256717476180784,\n \"url\" : \"https://web.example.mocklab.io/046366\"\n },\n \"created_at\" : \"2023-10-14T08:17:14.784Z\",\n \"id\" : \"7gay\",\n \"type\" : \"8w9q8oth09tara00tcr3u54f29gugzrdbwe8jctb0pxcxu6scuxu67j0k2x87z4i14nd1ctb5n5zofgee6smz9rw8ywc2hcn3emtjjzde3oizoqody4j725w7ax7oeydosgo1dt08lbdkpkv54h6pb801b34ttu8l8ob3zvpi9uxu7vuv5mlpidjxfgrhz\"\n} ]", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "7b690938-085b-4da1-a1f4-698a676487f5", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.784854Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "activity/list-public-org-events", + "schema": { + "items": { + "$ref": "#/components/schemas/event" + }, + "type": "array" + } + } + } + }, + "insertionIndex": 1139 + }, + { + "id": "09ab34fe-4fb4-4007-8f54-dee937226b02", + "name": "Update an organization", + "request": { + "urlPath": "/orgs/njhcp", + "method": "PATCH" + }, + "response": { + "status": 422, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/834230\",\n \"message\" : \"Et ducimus quasi et magnam commodi vel temporibus. Tempore id esse dolor. Beatae quas totam perferendis. Maxime eligendi in laborum deleniti ut quia. Repudiandae neque omnis voluptatem esse architecto\",\n \"errors\" : [ {\n \"code\" : \"byw8wo08kkwizm5ivbnr2w250co1f03lyfgu0dhe6xbwpexs7ouxg05loegr04us7onc87yxqgx\",\n \"field\" : \"5soj0i0je4e3yusun7fybdnktqh95tr6xl6ll19nl0\",\n \"resource\" : \"dbo1l7a\",\n \"index\" : 3105560398769469243,\n \"message\" : \"Quis dolorem eos cupiditate repudiandae aut sed dignissimos. Vero quo possimus sunt fugit. Et reprehenderit in hic.\",\n \"value\" : { }\n }, {\n \"code\" : \"aufz6nx6h774xbala7bq749ezmk7nx1poa3cejk2rtkymx4wv1r6lyz0rbn28msqx2vhd1ail0nizi6sau9l3wjslni36sqifgfmz43j92fvb9wi32xmx9f7n3oxm91e0310c4b5uuo10eyha549hyol8rxtfgj\",\n \"field\" : \"owbcmvfi45b2aal71nik\",\n \"resource\" : \"mkpd9yxm12nhnt1ogviwct627xh5smdiblv45nk2ctl0y6l74t7e27eyc3aotxaip1dxaz27sce1i2hb5wt3zdo88oi0lq2y7k1bswpnhjx5jp2s4glwbasg0b4xls9dxvxbmjzocv3k2b4mlmisl0qrqxgnwzrv69ltxstenzqxz3y19yp056t3k46\",\n \"index\" : 7877558940366481087,\n \"message\" : \"Voluptatibus eum possimus deserunt officia voluptate sapiente error. Consectetur blanditiis ipsa. Provident eius aliquam qui non culpa. Reiciendis qui labore minus.\",\n \"value\" : { }\n }, {\n \"code\" : \"siddxrb20\",\n \"field\" : \"xb7z2un93gbamqso2bu8jau3j07q9q3cbk51zylx6szby1acig68smh2v8zlqa4omy7gwz2pbd99dmfx8wgm1lp4tkfjpqrvw9qifuhis9st0m9fwb8m7k9tb56xhac6eht9digjnnk\",\n \"resource\" : \"7gtreyu4ztp6agx73olnp51pm248ts79mfwoev6vjx52ym668\",\n \"index\" : 1022908132929507259,\n \"message\" : \"Voluptatem cum laudantium. Omnis sit hic temporibus. Aspernatur corrupti eaque blanditiis. Facere mollitia cupiditate omnis expedita. Laboriosam id quaerat commodi porro fuga amet.\",\n \"value\" : { }\n }, {\n \"code\" : \"dxxl39sqi3c5e8el03gzahv6jt0sgor0kpkxpjvcc7h2bd0clogw6ug1lv581lmt0o2tvgqaz0j1gfgkxy9wj48qzi53gshqlqnyp0kkg8lxyl3js17mu8ozh0uhttdevyru2s7n0nju83leegiimkkhrf6yodqiqmqyy3we9ftwihmv7sfokrvawokqizbm2kdv2\",\n \"field\" : \"87pbxxdwi66284jaxxfj2wlj0dgundk2fxtiyazb4x3o3d62624c0uh29z4s6swenhsb29uim347eyzfc6tyj8r6hqx5iz3la2c7hfh9tozqw6ic5y3ma3og828nr02ehu7y2rlz\",\n \"resource\" : \"nx14foh0jhu1g2sss18f4ffb6zrsccwfdvvu7ex9jx2x64vxwzf6fesspgrfzqms0qgcy7bvw8j3no28jk0kjol8wyu1kxjt7mabvg8m2dxyhy9l30goven6evdzn09m2bdusrsq10tryks7d7yrgoiwzknz74lnhdc1ecnqhtutu7\",\n \"index\" : 5379747049442040884,\n \"message\" : \"Sunt occaecati soluta quidem amet soluta voluptatem ducimus. Libero nihil eos odio laudantium eius fugit. A odio vitae.\",\n \"value\" : { }\n }, {\n \"code\" : \"r4zjf9ra3bjr473zhh5axwpmkbjbx8q237xy88h2wqim67b5x6hgyvk95no7kwqunjbz310vywuxbw5lrefu70dciecpr6rz90yb394066z3ecxnp0n1f9km31bc3dnjrpde591n9ai40givxw19b7zzo0ahcj3cva00kfn7d4hm8slm9jqdn2k719w05uqxvj\",\n \"field\" : \"wbjt9rdh6dqhntrghfv2tmhhkiorer5cvzr6\",\n \"resource\" : \"ehyopt9owkn1pk1uydczqv2b8fe9uege13ud4er13bt0z08tbvho94szjnk1e723a6ub0pu854b1iox5t4z4seteh7soeq8kero16eew245nwqxgwmufl4qowg97jljq51xp9qs1g7vnsbzm4iywqha1xdkxfdqwih5dojns1kc1\",\n \"index\" : 1060073247726770436,\n \"message\" : \"Iusto illum porro dolorum cum ipsum aut consequatur. Recusandae velit quaerat nobis suscipit recusandae. Enim saepe molestias rerum qui commodi ut.\",\n \"value\" : { }\n }, {\n \"code\" : \"vucw7pmefv164hkccpupr47o58xhjezdwq3k1ez9hqikk9ezedbvcptbqcn14e39oj7kagz18ipwrj742k27y5kp7r0dv7y4x934qkuqs9p6mnr742od01ky7\",\n \"field\" : \"iy5pgwswsw7heaoear0ylhn8a2ix6k11x64skfreg2jul1lpwuaxz3xluxb5f2pyn851lmkzc28eldxx7wyliot0k8hdny525kpgppheteyd5mm2c2s4kmkio8ivlpxq55jp4t0sajru7t1ppgps3vryzpy1qgkpd49skkjfr84bdknd8ltvcu89o\",\n \"resource\" : \"e72wptn179k0dv8a9qdhxxrjkhkcupwmv2xepzx71om1trksd428wo4rbxhxct40tcprc365inxgjftq5crdffn774ty3i67smpskmeghbq7xyawhxe7uiyniuqxcwzzorf16qxq3sfj1du4ros48dqwvegfs7phq0bmp5k7m5kk7ijkxw3eqsrtvl08\",\n \"index\" : 611669566552218968,\n \"message\" : \"Officiis porro dolore. Ad praesentium iusto. Culpa deserunt repellendus. Modi temporibus vero deserunt provident fugiat inventore tempora.\",\n \"value\" : { }\n } ]\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "09ab34fe-4fb4-4007-8f54-dee937226b02", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.769596Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "orgs/update", + "schema": { + "oneOf": [ + { + "$ref": "#/components/schemas/validation-error" + }, + { + "$ref": "#/components/schemas/validation-error-simple" + } + ] + } + } + } + }, + "insertionIndex": 1140 + }, + { + "id": "89ceb4a5-0fbe-46a8-906d-47a71728e884", + "name": "Update an organization", + "request": { + "urlPath": "/orgs/e3luhsk1qlsk3mg0vrntd8xi57nm0a8bx4wszjx2z5irwos4ia5p3xnztcppd0hcib6q67yi9vxb7j5z45tmohw8ulmje2626wosak4tg1dobknt9xai8v7dhwutffqeoj2qzdtft5h3aq2nsg14z0k4trohsju8538x5q7r0of2z5vhlbjsh", + "method": "PATCH" + }, + "response": { + "status": 415, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/165568\",\n \"message\" : \"Commodi sed dignissimos et fuga error sed ut. Neque quidem est cum quasi nihil. Natus iure in.\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "89ceb4a5-0fbe-46a8-906d-47a71728e884", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.768975Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "orgs/update", + "schema": { + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": ["message", "documentation_url"], + "type": "object" + } + } + } + }, + "insertionIndex": 1141 + }, + { + "id": "fa8a8c75-ea1f-46c8-bb8e-cafecbde35b7", + "name": "Update an organization", + "request": { + "urlPath": "/orgs/nbndd95tkyoc6evg08jkfil9xx3ha71l3t6w8qewaz4zk0hez5c3q6dakg1kd6jbzzhxoibey4594t8pdkqmo5v8dlgmipsgqozrlj756y9m95s588lt8d79p47u86886ssmtin8sgedbrcadp1viogn9u7a846n2314vfvsmabvf", + "method": "PATCH" + }, + "response": { + "status": 409, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/677224\",\n \"message\" : \"Dignissimos nulla aut ea officia ipsum quae aspernatur. Incidunt et eius voluptates quo enim. Illum praesentium ea dolore optio ipsam.\",\n \"url\" : \"https://web.example.mocklab.io/946477\",\n \"status\" : \"lgkrqp14oskqy8du0zmp3e6l8zn6um5ma14f9l3ex3ui\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "fa8a8c75-ea1f-46c8-bb8e-cafecbde35b7", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.768823Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "orgs/update", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 1142 + }, + { + "id": "00a257c2-226e-4dea-911f-2ce9645da209", + "name": "Update an organization - default", + "request": { + "urlPath": "/orgs/a64ssle9pecf7rg8pww12zygaqf27p7b3v9p4l649qnn7ngssunifnb06n7jm1695vg46ajdm2ximof0afjvd560mfg8n52rkgm8gbaxls", + "method": "PATCH" + }, + "response": { + "status": 200, + "body": "{\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"billing_email\" : \"mona@github.com\",\n \"blog\" : \"https://github.com/blog\",\n \"collaborators\" : 8,\n \"company\" : \"GitHub\",\n \"created_at\" : \"2008-01-14T04:33:35Z\",\n \"default_repository_permission\" : \"read\",\n \"description\" : \"A great organization\",\n \"disk_usage\" : 10000,\n \"email\" : \"octocat@github.com\",\n \"events_url\" : \"https://api.github.com/orgs/github/events\",\n \"followers\" : 20,\n \"following\" : 0,\n \"has_organization_projects\" : true,\n \"has_repository_projects\" : true,\n \"hooks_url\" : \"https://api.github.com/orgs/github/hooks\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"issues_url\" : \"https://api.github.com/orgs/github/issues\",\n \"location\" : \"San Francisco\",\n \"login\" : \"github\",\n \"members_allowed_repository_creation_type\" : \"all\",\n \"members_can_create_internal_repositories\" : false,\n \"members_can_create_pages\" : true,\n \"members_can_create_private_pages\" : true,\n \"members_can_create_private_repositories\" : false,\n \"members_can_create_public_pages\" : true,\n \"members_can_create_public_repositories\" : false,\n \"members_can_create_repositories\" : true,\n \"members_url\" : \"https://api.github.com/orgs/github/members{/member}\",\n \"name\" : \"github\",\n \"node_id\" : \"MDEyOk9yZ2FuaXphdGlvbjE=\",\n \"owned_private_repos\" : 100,\n \"plan\" : {\n \"name\" : \"Medium\",\n \"private_repos\" : 20,\n \"space\" : 400\n },\n \"private_gists\" : 81,\n \"public_gists\" : 1,\n \"public_members_url\" : \"https://api.github.com/orgs/github/public_members{/member}\",\n \"public_repos\" : 2,\n \"repos_url\" : \"https://api.github.com/orgs/github/repos\",\n \"total_private_repos\" : 100,\n \"two_factor_requirement_enabled\" : true,\n \"type\" : \"Organization\",\n \"updated_at\" : \"2014-03-03T18:58:10Z\",\n \"url\" : \"https://api.github.com/orgs/github\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "00a257c2-226e-4dea-911f-2ce9645da209", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.768586Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "orgs/update", + "schema": { + "description": "Organization Full", + "properties": { + "avatar_url": { + "example": "https://github.com/images/error/octocat_happy.gif", + "type": "string" + }, + "billing_email": { + "example": "org@example.com", + "format": "email", + "nullable": true, + "type": "string" + }, + "blog": { + "example": "https://github.com/blog", + "format": "uri", + "type": "string" + }, + "collaborators": { + "example": 8, + "nullable": true, + "type": "integer" + }, + "company": { + "example": "GitHub", + "type": "string" + }, + "created_at": { + "example": "2008-01-14T04:33:35Z", + "format": "date-time", + "type": "string" + }, + "default_repository_permission": { + "nullable": true, + "type": "string" + }, + "description": { + "example": "A great organization", + "nullable": true, + "type": "string" + }, + "disk_usage": { + "example": 10000, + "nullable": true, + "type": "integer" + }, + "email": { + "example": "octocat@github.com", + "format": "email", + "type": "string" + }, + "events_url": { + "example": "https://api.github.com/orgs/github/events", + "format": "uri", + "type": "string" + }, + "followers": { + "example": 20, + "type": "integer" + }, + "following": { + "example": 0, + "type": "integer" + }, + "has_organization_projects": { + "example": true, + "type": "boolean" + }, + "has_repository_projects": { + "example": true, + "type": "boolean" + }, + "hooks_url": { + "example": "https://api.github.com/orgs/github/hooks", + "type": "string" + }, + "html_url": { + "example": "https://github.com/octocat", + "format": "uri", + "type": "string" + }, + "id": { + "example": 1, + "type": "integer" + }, + "issues_url": { + "example": "https://api.github.com/orgs/github/issues", + "type": "string" + }, + "location": { + "example": "San Francisco", + "type": "string" + }, + "login": { + "example": "github", + "type": "string" + }, + "members_allowed_repository_creation_type": { + "example": "all", + "type": "string" + }, + "members_can_create_internal_repositories": { + "example": true, + "type": "boolean" + }, + "members_can_create_pages": { + "example": true, + "type": "boolean" + }, + "members_can_create_private_pages": { + "example": true, + "type": "boolean" + }, + "members_can_create_private_repositories": { + "example": true, + "type": "boolean" + }, + "members_can_create_public_pages": { + "example": true, + "type": "boolean" + }, + "members_can_create_public_repositories": { + "example": true, + "type": "boolean" + }, + "members_can_create_repositories": { + "example": true, + "nullable": true, + "type": "boolean" + }, + "members_url": { + "example": "https://api.github.com/orgs/github/members{/member}", + "type": "string" + }, + "name": { + "example": "github", + "type": "string" + }, + "node_id": { + "example": "MDEyOk9yZ2FuaXphdGlvbjE=", + "type": "string" + }, + "owned_private_repos": { + "example": 100, + "type": "integer" + }, + "plan": { + "properties": { + "filled_seats": { + "type": "integer" + }, + "name": { + "type": "string" + }, + "private_repos": { + "type": "integer" + }, + "seats": { + "type": "integer" + }, + "space": { + "type": "integer" + } + }, + "required": ["name", "space", "private_repos"], + "type": "object" + }, + "private_gists": { + "example": 81, + "nullable": true, + "type": "integer" + }, + "public_gists": { + "example": 1, + "type": "integer" + }, + "public_members_url": { + "example": "https://api.github.com/orgs/github/public_members{/member}", + "type": "string" + }, + "public_repos": { + "example": 2, + "type": "integer" + }, + "repos_url": { + "example": "https://api.github.com/orgs/github/repos", + "format": "uri", + "type": "string" + }, + "total_private_repos": { + "example": 100, + "type": "integer" + }, + "two_factor_requirement_enabled": { + "example": true, + "nullable": true, + "type": "boolean" + }, + "type": { + "example": "Organization", + "type": "string" + }, + "updated_at": { + "format": "date-time", + "type": "string" + }, + "url": { + "example": "https://api.github.com/orgs/github", + "format": "uri", + "type": "string" + } + }, + "required": [ + "login", + "url", + "id", + "node_id", + "repos_url", + "events_url", + "hooks_url", + "issues_url", + "members_url", + "public_members_url", + "avatar_url", + "description", + "html_url", + "has_organization_projects", + "has_repository_projects", + "public_repos", + "public_gists", + "followers", + "following", + "type", + "created_at", + "updated_at" + ], + "title": "Organization Full", + "type": "object" + } + } + } + }, + "insertionIndex": 1143 + }, + { + "id": "f5f01562-bc57-42e3-9ca7-85d5c42710a2", + "name": "Get an organization", + "request": { + "urlPath": "/orgs/lofjlqg53k3xj4tz6m6olfe2btocl07rdlyvzin576hylqepwio3vzkgittxokvltncdiylhm3eh14", + "method": "GET" + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/884852\",\n \"message\" : \"Voluptatem sequi et consequuntur. At rerum modi et minima enim omnis. Possimus deserunt eum sit vel maiores. Odio repellendus voluptatem molestias nemo sed nostrum ut. Aut quod tempora qui quas sunt.\",\n \"url\" : \"https://web.example.mocklab.io/294774\",\n \"status\" : \"z2vce30j2ad3rewokffjw46q57j1cl2zhu8uu7cytflt3bblh2tl9i859g7cs9v0mhtdf4yrjci2p2q06mtmqaj9ese04zl2c3yd4dji4fwlwixurx02wtzscekv8xl88qf69ma60egulvjmbxd51inquv27iemrucskr80wqmoh7pddgiw\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "f5f01562-bc57-42e3-9ca7-85d5c42710a2", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.768248Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "orgs/get", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 1144 + }, + { + "id": "49fa1b31-0cda-4b8c-b21a-bdcf78d33300", + "name": "Get an organization - default-response", + "request": { + "urlPath": "/orgs/rc0zdqwf0jed9uu87jg2lzfldwvl9ubqozq7o9ltulaqzhf17zxibi5f532n0s5wlltomf9khexs00uspsr11yh5rg9voa1e1y291eet00uowhy9k746bszd4nuwkqtfo30v2pjmzy2y7enhhnd5p8rs3xizels1rjcd5v8w7dh11b9qns9fmm2z1lc7t6f3tqykixp0", + "method": "GET" + }, + "response": { + "status": 200, + "body": "{\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"billing_email\" : \"mona@github.com\",\n \"blog\" : \"https://github.com/blog\",\n \"collaborators\" : 8,\n \"company\" : \"GitHub\",\n \"created_at\" : \"2008-01-14T04:33:35Z\",\n \"default_repository_permission\" : \"read\",\n \"description\" : \"A great organization\",\n \"disk_usage\" : 10000,\n \"email\" : \"octocat@github.com\",\n \"events_url\" : \"https://api.github.com/orgs/github/events\",\n \"followers\" : 20,\n \"following\" : 0,\n \"has_organization_projects\" : true,\n \"has_repository_projects\" : true,\n \"hooks_url\" : \"https://api.github.com/orgs/github/hooks\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"is_verified\" : true,\n \"issues_url\" : \"https://api.github.com/orgs/github/issues\",\n \"location\" : \"San Francisco\",\n \"login\" : \"github\",\n \"members_allowed_repository_creation_type\" : \"all\",\n \"members_can_create_internal_repositories\" : false,\n \"members_can_create_pages\" : true,\n \"members_can_create_private_repositories\" : false,\n \"members_can_create_public_repositories\" : false,\n \"members_can_create_repositories\" : true,\n \"members_url\" : \"https://api.github.com/orgs/github/members{/member}\",\n \"name\" : \"github\",\n \"node_id\" : \"MDEyOk9yZ2FuaXphdGlvbjE=\",\n \"owned_private_repos\" : 100,\n \"plan\" : {\n \"filled_seats\" : 4,\n \"name\" : \"Medium\",\n \"private_repos\" : 20,\n \"seats\" : 5,\n \"space\" : 400\n },\n \"private_gists\" : 81,\n \"public_gists\" : 1,\n \"public_members_url\" : \"https://api.github.com/orgs/github/public_members{/member}\",\n \"public_repos\" : 2,\n \"repos_url\" : \"https://api.github.com/orgs/github/repos\",\n \"total_private_repos\" : 100,\n \"twitter_username\" : \"github\",\n \"two_factor_requirement_enabled\" : true,\n \"type\" : \"Organization\",\n \"updated_at\" : \"2014-03-03T18:58:10Z\",\n \"url\" : \"https://api.github.com/orgs/github\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "49fa1b31-0cda-4b8c-b21a-bdcf78d33300", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.768013Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "orgs/get", + "schema": { + "description": "Organization Full", + "properties": { + "avatar_url": { + "example": "https://github.com/images/error/octocat_happy.gif", + "type": "string" + }, + "billing_email": { + "example": "org@example.com", + "format": "email", + "nullable": true, + "type": "string" + }, + "blog": { + "example": "https://github.com/blog", + "format": "uri", + "type": "string" + }, + "collaborators": { + "example": 8, + "nullable": true, + "type": "integer" + }, + "company": { + "example": "GitHub", + "type": "string" + }, + "created_at": { + "example": "2008-01-14T04:33:35Z", + "format": "date-time", + "type": "string" + }, + "default_repository_permission": { + "nullable": true, + "type": "string" + }, + "description": { + "example": "A great organization", + "nullable": true, + "type": "string" + }, + "disk_usage": { + "example": 10000, + "nullable": true, + "type": "integer" + }, + "email": { + "example": "octocat@github.com", + "format": "email", + "type": "string" + }, + "events_url": { + "example": "https://api.github.com/orgs/github/events", + "format": "uri", + "type": "string" + }, + "followers": { + "example": 20, + "type": "integer" + }, + "following": { + "example": 0, + "type": "integer" + }, + "has_organization_projects": { + "example": true, + "type": "boolean" + }, + "has_repository_projects": { + "example": true, + "type": "boolean" + }, + "hooks_url": { + "example": "https://api.github.com/orgs/github/hooks", + "type": "string" + }, + "html_url": { + "example": "https://github.com/octocat", + "format": "uri", + "type": "string" + }, + "id": { + "example": 1, + "type": "integer" + }, + "issues_url": { + "example": "https://api.github.com/orgs/github/issues", + "type": "string" + }, + "location": { + "example": "San Francisco", + "type": "string" + }, + "login": { + "example": "github", + "type": "string" + }, + "members_allowed_repository_creation_type": { + "example": "all", + "type": "string" + }, + "members_can_create_internal_repositories": { + "example": true, + "type": "boolean" + }, + "members_can_create_pages": { + "example": true, + "type": "boolean" + }, + "members_can_create_private_pages": { + "example": true, + "type": "boolean" + }, + "members_can_create_private_repositories": { + "example": true, + "type": "boolean" + }, + "members_can_create_public_pages": { + "example": true, + "type": "boolean" + }, + "members_can_create_public_repositories": { + "example": true, + "type": "boolean" + }, + "members_can_create_repositories": { + "example": true, + "nullable": true, + "type": "boolean" + }, + "members_url": { + "example": "https://api.github.com/orgs/github/members{/member}", + "type": "string" + }, + "name": { + "example": "github", + "type": "string" + }, + "node_id": { + "example": "MDEyOk9yZ2FuaXphdGlvbjE=", + "type": "string" + }, + "owned_private_repos": { + "example": 100, + "type": "integer" + }, + "plan": { + "properties": { + "filled_seats": { + "type": "integer" + }, + "name": { + "type": "string" + }, + "private_repos": { + "type": "integer" + }, + "seats": { + "type": "integer" + }, + "space": { + "type": "integer" + } + }, + "required": ["name", "space", "private_repos"], + "type": "object" + }, + "private_gists": { + "example": 81, + "nullable": true, + "type": "integer" + }, + "public_gists": { + "example": 1, + "type": "integer" + }, + "public_members_url": { + "example": "https://api.github.com/orgs/github/public_members{/member}", + "type": "string" + }, + "public_repos": { + "example": 2, + "type": "integer" + }, + "repos_url": { + "example": "https://api.github.com/orgs/github/repos", + "format": "uri", + "type": "string" + }, + "total_private_repos": { + "example": 100, + "type": "integer" + }, + "two_factor_requirement_enabled": { + "example": true, + "nullable": true, + "type": "boolean" + }, + "type": { + "example": "Organization", + "type": "string" + }, + "updated_at": { + "format": "date-time", + "type": "string" + }, + "url": { + "example": "https://api.github.com/orgs/github", + "format": "uri", + "type": "string" + } + }, + "required": [ + "login", + "url", + "id", + "node_id", + "repos_url", + "events_url", + "hooks_url", + "issues_url", + "members_url", + "public_members_url", + "avatar_url", + "description", + "html_url", + "has_organization_projects", + "has_repository_projects", + "public_repos", + "public_gists", + "followers", + "following", + "type", + "created_at", + "updated_at" + ], + "title": "Organization Full", + "type": "object" + } + } + } + }, + "insertionIndex": 1145 + }, + { + "id": "dadbb525-a57e-40c4-a74d-287722c52a06", + "name": "List organizations - 304", + "request": { + "urlPath": "/organizations", + "method": "GET" + }, + "response": { + "status": 304 + }, + "uuid": "dadbb525-a57e-40c4-a74d-287722c52a06", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.767458Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "orgs/list" + } + } + }, + "insertionIndex": 1146 + }, + { + "id": "d581f0a5-6f3f-4049-8377-a3240442cf1e", + "name": "List organizations (application/json) - default", + "request": { + "urlPath": "/organizations", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 200, + "body": "[ {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"description\" : \"A great organization\",\n \"events_url\" : \"https://api.github.com/orgs/github/events\",\n \"hooks_url\" : \"https://api.github.com/orgs/github/hooks\",\n \"id\" : 1,\n \"issues_url\" : \"https://api.github.com/orgs/github/issues\",\n \"login\" : \"github\",\n \"members_url\" : \"https://api.github.com/orgs/github/members{/member}\",\n \"node_id\" : \"MDEyOk9yZ2FuaXphdGlvbjE=\",\n \"public_members_url\" : \"https://api.github.com/orgs/github/public_members{/member}\",\n \"repos_url\" : \"https://api.github.com/orgs/github/repos\",\n \"url\" : \"https://api.github.com/orgs/github\"\n} ]", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "d581f0a5-6f3f-4049-8377-a3240442cf1e", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.767436Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "orgs/list", + "schema": { + "items": { + "$ref": "#/components/schemas/organization-simple" + }, + "type": "array" + } + } + } + }, + "insertionIndex": 1147 + }, + { + "id": "0a05bd4b-8c18-40d2-af0d-511e37d4bcb6", + "name": "Get Octocat", + "request": { + "urlPath": "/octocat", + "method": "GET" + }, + "response": { + "status": 200, + "body": "\"hsxaiwkjuq0zst1d3zz91zk438ijzgcmteyop0duac9uuhhq1jplqh8a6oh7st5lr27\"", + "headers": { + "Content-Type": "application/octocat-stream" + } + }, + "uuid": "0a05bd4b-8c18-40d2-af0d-511e37d4bcb6", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.767396Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "meta/get-octocat", + "schema": { + "type": "string" + } + } + } + }, + "insertionIndex": 1148 + }, + { + "id": "3f356f9f-d9ea-4e50-83d6-c256a2c57001", + "name": "Set a thread subscription (application/json)", + "request": { + "urlPath": "/notifications/threads/3622894716789929691/subscription", + "method": "PUT", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 403, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/413254\",\n \"message\" : \"Voluptates est odio. Dolores porro suscipit et est. Quasi corrupti repellendus aperiam non.\",\n \"url\" : \"https://web.example.mocklab.io/652567\",\n \"status\" : \"mu3yizsp2irkzhe194doue7i3amhsf669powtwsu33e91ox0hzahko3l5l1j7tp5f4zgol53ljm9tzik29b1k\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "3f356f9f-d9ea-4e50-83d6-c256a2c57001", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.767346Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "activity/set-thread-subscription", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 1149 + }, + { + "id": "14254646-8804-4e38-b60f-6189c3663c8d", + "name": "Set a thread subscription (application/json)", + "request": { + "urlPath": "/notifications/threads/1377647633094136362/subscription", + "method": "PUT", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 401, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/654870\",\n \"message\" : \"Dignissimos temporibus nulla iusto. Est et quia non omnis quasi. Et dolor inventore facilis magni et. Sit officia doloremque excepturi porro voluptatum fuga. Sunt placeat quis voluptatem.\",\n \"url\" : \"https://web.example.mocklab.io/909375\",\n \"status\" : \"uo4cnppbdn4gvrdsvm5c35acy7cz7apsmysno2qlqkifnj337jxmrqcemahufc412gkw5f657yc9g08t8s2wyowoxm1gy11s102pvvu31vtr2pa9bvjwnf9qr1m0c0hb4s4owztabd36tbh8zptpu4eo7spjd5uaix77lqbfy6wlth\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "14254646-8804-4e38-b60f-6189c3663c8d", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.767142Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "activity/set-thread-subscription", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 1150 + }, + { + "id": "ae49f4c3-2f81-4f21-a7a3-44aa32777dac", + "name": "Set a thread subscription - 304", + "request": { + "urlPath": "/notifications/threads/2221591873701546270/subscription", + "method": "PUT" + }, + "response": { + "status": 304 + }, + "uuid": "ae49f4c3-2f81-4f21-a7a3-44aa32777dac", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.766938Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "activity/set-thread-subscription" + } + } + }, + "insertionIndex": 1151 + }, + { + "id": "7806a87b-2ec4-407b-8085-196ee04daf92", + "name": "Set a thread subscription (application/json) - default", + "request": { + "urlPath": "/notifications/threads/6516137765604183579/subscription", + "method": "PUT", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 200, + "body": "{\n \"created_at\" : \"2012-10-06T21:34:12Z\",\n \"ignored\" : false,\n \"subscribed\" : true,\n \"thread_url\" : \"https://api.github.com/notifications/threads/1\",\n \"url\" : \"https://api.github.com/notifications/threads/1/subscription\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "7806a87b-2ec4-407b-8085-196ee04daf92", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.766911Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "activity/set-thread-subscription", + "schema": { + "description": "Thread Subscription", + "properties": { + "created_at": { + "example": "2012-10-06T21:34:12Z", + "format": "date-time", + "nullable": true, + "type": "string" + }, + "ignored": { + "type": "boolean" + }, + "reason": { + "nullable": true, + "type": "string" + }, + "repository_url": { + "example": "https://api.github.com/repos/1", + "format": "uri", + "type": "string" + }, + "subscribed": { + "example": true, + "type": "boolean" + }, + "thread_url": { + "example": "https://api.github.com/notifications/threads/1", + "format": "uri", + "type": "string" + }, + "url": { + "example": "https://api.github.com/notifications/threads/1/subscription", + "format": "uri", + "type": "string" + } + }, + "required": ["created_at", "ignored", "reason", "url", "subscribed"], + "title": "Thread Subscription", + "type": "object" + } + } + } + }, + "insertionIndex": 1152 + }, + { + "id": "d0de5b42-61a0-4344-ad5a-9b6f1bb9ef81", + "name": "Get a thread subscription for the authenticated user (application/json)", + "request": { + "urlPath": "/notifications/threads/1847868923830799546/subscription", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 403, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/607546\",\n \"message\" : \"Quia provident velit aspernatur quo itaque saepe sunt. Quibusdam iusto cupiditate laudantium vitae id molestias eum. Soluta occaecati saepe ut quam. Dolorem cumque quibusdam minus voluptatibus pariatu\",\n \"url\" : \"https://web.example.mocklab.io/680983\",\n \"status\" : \"po2j4d9arnujteku7b73gnocaru8bueosvc9b1piiyqe8snn0\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "d0de5b42-61a0-4344-ad5a-9b6f1bb9ef81", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.766832Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "activity/get-thread-subscription-for-authenticated-user", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 1153 + }, + { + "id": "e8b61e94-957a-4260-82ff-7eaf25c9eff4", + "name": "Get a thread subscription for the authenticated user (application/json)", + "request": { + "urlPath": "/notifications/threads/5764680930072116187/subscription", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 401, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/369128\",\n \"message\" : \"Qui nemo est quo explicabo saepe enim neque. Dolore aliquam asperiores. Numquam deserunt rerum qui impedit. Aut expedita accusamus. Non ut eaque excepturi et ut sed.\",\n \"url\" : \"https://web.example.mocklab.io/453847\",\n \"status\" : \"wdjpt174446txzdvk3rdyxed8414pbdmeobidqzk8obzn7034zi7ch4nrrmdq5vb5wjyz6h56b28gndcz40aye141lzg8gcrd1nh29nzmyemv2gkhc8d0rqtvb7sah2fi1wiv\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "e8b61e94-957a-4260-82ff-7eaf25c9eff4", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.766625Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "activity/get-thread-subscription-for-authenticated-user", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 1154 + }, + { + "id": "fd61eb09-41d9-4266-a6d6-db855305f84c", + "name": "Get a thread subscription for the authenticated user - 304", + "request": { + "urlPath": "/notifications/threads/905826221346431360/subscription", + "method": "GET" + }, + "response": { + "status": 304 + }, + "uuid": "fd61eb09-41d9-4266-a6d6-db855305f84c", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.766425Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "activity/get-thread-subscription-for-authenticated-user" + } + } + }, + "insertionIndex": 1155 + }, + { + "id": "01cdbc80-63ab-4722-a0a8-20227a820363", + "name": "Get a thread subscription for the authenticated user (application/json) - default", + "request": { + "urlPath": "/notifications/threads/1405944959905553363/subscription", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 200, + "body": "{\n \"created_at\" : \"2012-10-06T21:34:12Z\",\n \"ignored\" : false,\n \"subscribed\" : true,\n \"thread_url\" : \"https://api.github.com/notifications/threads/1\",\n \"url\" : \"https://api.github.com/notifications/threads/1/subscription\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "01cdbc80-63ab-4722-a0a8-20227a820363", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.766395Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "activity/get-thread-subscription-for-authenticated-user", + "schema": { + "description": "Thread Subscription", + "properties": { + "created_at": { + "example": "2012-10-06T21:34:12Z", + "format": "date-time", + "nullable": true, + "type": "string" + }, + "ignored": { + "type": "boolean" + }, + "reason": { + "nullable": true, + "type": "string" + }, + "repository_url": { + "example": "https://api.github.com/repos/1", + "format": "uri", + "type": "string" + }, + "subscribed": { + "example": true, + "type": "boolean" + }, + "thread_url": { + "example": "https://api.github.com/notifications/threads/1", + "format": "uri", + "type": "string" + }, + "url": { + "example": "https://api.github.com/notifications/threads/1/subscription", + "format": "uri", + "type": "string" + } + }, + "required": ["created_at", "ignored", "reason", "url", "subscribed"], + "title": "Thread Subscription", + "type": "object" + } + } + } + }, + "insertionIndex": 1156 + }, + { + "id": "0bcffccf-85fb-4e73-a9fd-4d1f53f9b5fd", + "name": "Delete a thread subscription (application/json)", + "request": { + "urlPath": "/notifications/threads/129370934832131116/subscription", + "method": "DELETE", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 403, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/450766\",\n \"message\" : \"Hic voluptatem ab quam vero quia. Id voluptatibus aut est. Autem laborum accusamus.\",\n \"url\" : \"https://web.example.mocklab.io/493381\",\n \"status\" : \"t4dmsh1yn3ynh2ce7eollcmegixv44k2gyc3lmxxgyh2r3z22xpb6z3o0bpc6z3e0vfi8vvvj2elo5vzkxp5179gfa4elxk5ook4g0dprepfqzb\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "0bcffccf-85fb-4e73-a9fd-4d1f53f9b5fd", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.766293Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "activity/delete-thread-subscription", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 1157 + }, + { + "id": "37cd2a7a-a93a-4c5b-a4bf-c822c944e724", + "name": "Delete a thread subscription (application/json)", + "request": { + "urlPath": "/notifications/threads/6553771366407794953/subscription", + "method": "DELETE", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 401, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/429879\",\n \"message\" : \"Aspernatur aliquam atque. Sed maiores voluptatum aspernatur. Vel sit est illo ipsam et. Ex illum voluptas sed facere officiis. Aut odio ullam quas eligendi.\",\n \"url\" : \"https://web.example.mocklab.io/187797\",\n \"status\" : \"e99pf8256emc607xxyysxilklz9u98ip354co9o4xnhvf7xuzxkm8h3w2lj2zkxf2sbu1ocup4cf0xbkpszrvnyph13jwkeywlv2p3zww8ddd58jsgy251e46e8ncg1cxcea4zlk4na\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "37cd2a7a-a93a-4c5b-a4bf-c822c944e724", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.766093Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "activity/delete-thread-subscription", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 1158 + }, + { + "id": "f74d9b3d-eb83-42d0-9568-70b6966e5067", + "name": "Delete a thread subscription - 304", + "request": { + "urlPath": "/notifications/threads/4693833947944320227/subscription", + "method": "DELETE" + }, + "response": { + "status": 304 + }, + "uuid": "f74d9b3d-eb83-42d0-9568-70b6966e5067", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.765895Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "activity/delete-thread-subscription" + } + } + }, + "insertionIndex": 1159 + }, + { + "id": "c7355191-b65c-46c2-bb54-4755a3848c98", + "name": "Delete a thread subscription - 204", + "request": { + "urlPath": "/notifications/threads/3058208966002701714/subscription", + "method": "DELETE" + }, + "response": { + "status": 204 + }, + "uuid": "c7355191-b65c-46c2-bb54-4755a3848c98", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.765877Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "activity/delete-thread-subscription" + } + } + }, + "insertionIndex": 1160 + }, + { + "id": "d8f629f2-b634-49f6-b9f7-6426b857d21a", + "name": "Mark a thread as read (application/json)", + "request": { + "urlPath": "/notifications/threads/3879546699363054196", + "method": "PATCH", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 403, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/442553\",\n \"message\" : \"Dolorem rerum officiis voluptas dolorem. Nihil eaque ex omnis a. Sequi pariatur sint neque. Omnis cum repellat quod sunt numquam iure. Minus maiores odio.\",\n \"url\" : \"https://web.example.mocklab.io/181387\",\n \"status\" : \"ic21ckh16nwvpgn4j315r8fpvkf8dct5ebaiv320mk47lc27egy840wdhilzp5au6trsqw017\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "d8f629f2-b634-49f6-b9f7-6426b857d21a", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.765846Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "activity/mark-thread-as-read", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 1161 + }, + { + "id": "8e2312ab-6b23-4fcc-ad64-45109c0112c0", + "name": "Mark a thread as read - 304", + "request": { + "urlPath": "/notifications/threads/1525206272590206484", + "method": "PATCH" + }, + "response": { + "status": 304 + }, + "uuid": "8e2312ab-6b23-4fcc-ad64-45109c0112c0", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.765649Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "activity/mark-thread-as-read" + } + } + }, + "insertionIndex": 1162 + }, + { + "id": "5ca5465d-dee2-4755-bad3-e217da531374", + "name": "Mark a thread as read - 205", + "request": { + "urlPath": "/notifications/threads/8206094375293047633", + "method": "PATCH" + }, + "response": { + "status": 205 + }, + "uuid": "5ca5465d-dee2-4755-bad3-e217da531374", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.765631Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "activity/mark-thread-as-read" + } + } + }, + "insertionIndex": 1163 + }, + { + "id": "2bc0c6d3-97eb-4d74-9efd-96f074ef622e", + "name": "Get a thread (application/json)", + "request": { + "urlPath": "/notifications/threads/4173788444859754692", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 403, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/567059\",\n \"message\" : \"Dolorum sit nam quia. Natus ea perspiciatis suscipit cum sit atque est. Facere sapiente a explicabo explicabo omnis fuga. Voluptas aperiam quo doloribus.\",\n \"url\" : \"https://web.example.mocklab.io/908907\",\n \"status\" : \"69n1cnk2mbgvgnkw4247uytkefpf4h7orkd1onmu5ilq6phqsqrllym4p63ze1zz4ym6z0iidc5npoy5i3vqm5somhu6zp6e7iesayax4yd6cyzc4wn10jmq1mulalqmddfis1w3g4z785juv97jj0xd6lg0b808z6jwe\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "2bc0c6d3-97eb-4d74-9efd-96f074ef622e", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.765599Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "activity/get-thread", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 1164 + }, + { + "id": "536eb68a-f9e2-4aae-93fd-85f78eccba05", + "name": "Get a thread (application/json)", + "request": { + "urlPath": "/notifications/threads/7923215554405700365", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 401, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/414020\",\n \"message\" : \"Pariatur officia eos eos et dolor occaecati. Sunt laboriosam et ipsam recusandae ut. Provident architecto recusandae nihil qui vel molestiae. Dolor voluptate neque nisi est.\",\n \"url\" : \"https://web.example.mocklab.io/418289\",\n \"status\" : \"sl5xveq0qubiecx4vc5yswzsgddgbgjog4ttr2upgxsumzdrfx9s1jn5ycqsd90m4cahf5rgns3jkr5xpgcol2v0bh4onw668n8u3yafu9kune2g8paav3m3ue138khwovvzgmukzbn6fdb61o7yn7g846fllig8o3rg89k90msrxj2gcu8tp\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "536eb68a-f9e2-4aae-93fd-85f78eccba05", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.765396Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "activity/get-thread", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 1165 + }, + { + "id": "c3b9af4d-cbd2-4873-8700-2987c23e6692", + "name": "Get a thread - 304", + "request": { + "urlPath": "/notifications/threads/5144517455357602610", + "method": "GET" + }, + "response": { + "status": 304 + }, + "uuid": "c3b9af4d-cbd2-4873-8700-2987c23e6692", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.765201Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "activity/get-thread" + } + } + }, + "insertionIndex": 1166 + }, + { + "id": "7abab5dd-3e14-4177-b28d-609f8c84025e", + "name": "Get a thread (application/json) - default", + "request": { + "urlPath": "/notifications/threads/5014929162160806783", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 200, + "body": "{\n \"id\" : \"1\",\n \"last_read_at\" : \"2014-11-07T22:01:45Z\",\n \"reason\" : \"subscribed\",\n \"repository\" : {\n \"archive_url\" : \"https://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref}\",\n \"assignees_url\" : \"https://api.github.com/repos/octocat/Hello-World/assignees{/user}\",\n \"blobs_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/blobs{/sha}\",\n \"branches_url\" : \"https://api.github.com/repos/octocat/Hello-World/branches{/branch}\",\n \"collaborators_url\" : \"https://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator}\",\n \"comments_url\" : \"https://api.github.com/repos/octocat/Hello-World/comments{/number}\",\n \"commits_url\" : \"https://api.github.com/repos/octocat/Hello-World/commits{/sha}\",\n \"compare_url\" : \"https://api.github.com/repos/octocat/Hello-World/compare/{base}...{head}\",\n \"contents_url\" : \"https://api.github.com/repos/octocat/Hello-World/contents/{+path}\",\n \"contributors_url\" : \"https://api.github.com/repos/octocat/Hello-World/contributors\",\n \"deployments_url\" : \"https://api.github.com/repos/octocat/Hello-World/deployments\",\n \"description\" : \"This your first repo!\",\n \"downloads_url\" : \"https://api.github.com/repos/octocat/Hello-World/downloads\",\n \"events_url\" : \"https://api.github.com/repos/octocat/Hello-World/events\",\n \"fork\" : false,\n \"forks_url\" : \"https://api.github.com/repos/octocat/Hello-World/forks\",\n \"full_name\" : \"octocat/Hello-World\",\n \"git_commits_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/commits{/sha}\",\n \"git_refs_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/refs{/sha}\",\n \"git_tags_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/tags{/sha}\",\n \"git_url\" : \"git:github.com/octocat/Hello-World.git\",\n \"hooks_url\" : \"http://api.github.com/repos/octocat/Hello-World/hooks\",\n \"html_url\" : \"https://github.com/octocat/Hello-World\",\n \"id\" : 1296269,\n \"issue_comment_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/comments{/number}\",\n \"issue_events_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/events{/number}\",\n \"issues_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues{/number}\",\n \"keys_url\" : \"https://api.github.com/repos/octocat/Hello-World/keys{/key_id}\",\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World/labels{/name}\",\n \"languages_url\" : \"https://api.github.com/repos/octocat/Hello-World/languages\",\n \"merges_url\" : \"https://api.github.com/repos/octocat/Hello-World/merges\",\n \"milestones_url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones{/number}\",\n \"name\" : \"Hello-World\",\n \"node_id\" : \"MDEwOlJlcG9zaXRvcnkxMjk2MjY5\",\n \"notifications_url\" : \"https://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating}\",\n \"owner\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"private\" : false,\n \"pulls_url\" : \"https://api.github.com/repos/octocat/Hello-World/pulls{/number}\",\n \"releases_url\" : \"https://api.github.com/repos/octocat/Hello-World/releases{/id}\",\n \"ssh_url\" : \"git@github.com:octocat/Hello-World.git\",\n \"stargazers_url\" : \"https://api.github.com/repos/octocat/Hello-World/stargazers\",\n \"statuses_url\" : \"https://api.github.com/repos/octocat/Hello-World/statuses/{sha}\",\n \"subscribers_url\" : \"https://api.github.com/repos/octocat/Hello-World/subscribers\",\n \"subscription_url\" : \"https://api.github.com/repos/octocat/Hello-World/subscription\",\n \"tags_url\" : \"https://api.github.com/repos/octocat/Hello-World/tags\",\n \"teams_url\" : \"https://api.github.com/repos/octocat/Hello-World/teams\",\n \"trees_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/trees{/sha}\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World\"\n },\n \"subject\" : {\n \"latest_comment_url\" : \"https://api.github.com/repos/octokit/octokit.rb/issues/comments/123\",\n \"title\" : \"Greetings\",\n \"type\" : \"Issue\",\n \"url\" : \"https://api.github.com/repos/octokit/octokit.rb/issues/123\"\n },\n \"subscription_url\" : \"https://api.github.com/notifications/threads/1/subscription\",\n \"unread\" : true,\n \"updated_at\" : \"2014-11-07T22:01:45Z\",\n \"url\" : \"https://api.github.com/notifications/threads/1\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "7abab5dd-3e14-4177-b28d-609f8c84025e", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.765171Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "activity/get-thread", + "schema": { + "description": "Thread", + "properties": { + "id": { + "type": "string" + }, + "last_read_at": { + "nullable": true, + "type": "string" + }, + "reason": { + "type": "string" + }, + "repository": { + "$ref": "#/components/schemas/minimal-repository" + }, + "subject": { + "properties": { + "latest_comment_url": { + "type": "string" + }, + "title": { + "type": "string" + }, + "type": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "required": ["title", "url", "latest_comment_url", "type"], + "type": "object" + }, + "subscription_url": { + "example": "https://api.github.com/notifications/threads/2/subscription", + "type": "string" + }, + "unread": { + "type": "boolean" + }, + "updated_at": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "required": [ + "id", + "unread", + "reason", + "updated_at", + "last_read_at", + "subject", + "repository", + "url", + "subscription_url" + ], + "title": "Thread", + "type": "object" + } + } + } + }, + "insertionIndex": 1167 + }, + { + "id": "1a4336f8-66fa-43e7-8c11-e3fef7a13ffa", + "name": "Mark notifications as read (application/json)", + "request": { + "urlPath": "/notifications", + "method": "PUT", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 403, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/437688\",\n \"message\" : \"Soluta ipsum voluptatem amet repudiandae rerum quo non. Nulla quo aut et eum. A sunt qui.\",\n \"url\" : \"https://web.example.mocklab.io/908943\",\n \"status\" : \"23zsydjq21v05dip45fy8ffswu0iyppue0o6q2kb24g0sjzds1esjtol2w3ib0h6qwkkqzm5bu0t4l3zjy7botx9cwbmaime8zn65fu7eo50boeqh4eouydn5lycz6varlxb\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "1a4336f8-66fa-43e7-8c11-e3fef7a13ffa", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.764986Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "activity/mark-notifications-as-read", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 1168 + }, + { + "id": "0104ea16-25c2-4c8a-bb30-86d2b0bf6ec0", + "name": "Mark notifications as read (application/json)", + "request": { + "urlPath": "/notifications", + "method": "PUT", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 401, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/453605\",\n \"message\" : \"Et commodi praesentium et tempore quisquam et est. Et quia asperiores est. Eos velit impedit voluptatum aliquam et. Maiores ut qui.\",\n \"url\" : \"https://web.example.mocklab.io/662734\",\n \"status\" : \"vc3ps3af9tizljc00d8m1ii955offphy2zllwk1mx6fnzcxryx3ufrm138bruaehx595h94bm0bp4panu7p3plhwfac8t2h47nf68qghyb9kg4l6z6v8y6i6mapregkbssurxjcz45utzn9zpy\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "0104ea16-25c2-4c8a-bb30-86d2b0bf6ec0", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.764782Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "activity/mark-notifications-as-read", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 1169 + }, + { + "id": "427963b8-a792-48c5-95bc-5be55f3a4a5c", + "name": "Mark notifications as read - 304", + "request": { + "urlPath": "/notifications", + "method": "PUT" + }, + "response": { + "status": 304 + }, + "uuid": "427963b8-a792-48c5-95bc-5be55f3a4a5c", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.76458Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "activity/mark-notifications-as-read" + } + } + }, + "insertionIndex": 1170 + }, + { + "id": "6e8f423f-a674-418a-857a-3175c02225a2", + "name": "Mark notifications as read - 205", + "request": { + "urlPath": "/notifications", + "method": "PUT" + }, + "response": { + "status": 205 + }, + "uuid": "6e8f423f-a674-418a-857a-3175c02225a2", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.764565Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "activity/mark-notifications-as-read" + } + } + }, + "insertionIndex": 1171 + }, + { + "id": "7e472fd4-f680-45f0-b785-c90af8f2fe3d", + "name": "Mark notifications as read (application/json)", + "request": { + "urlPath": "/notifications", + "method": "PUT", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 202, + "body": "{\n \"message\" : \"Et numquam sequi dolore. Labore et rerum ut accusantium alias nihil voluptas. Molestiae corrupti dicta possimus molestiae et quidem. Id optio aperiam quis est.\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "7e472fd4-f680-45f0-b785-c90af8f2fe3d", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.764542Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "activity/mark-notifications-as-read", + "schema": { + "properties": { + "message": { + "type": "string" + } + }, + "type": "object" + } + } + } + }, + "insertionIndex": 1172 + }, + { + "id": "c1536e61-614c-4068-87b2-247305b661bd", + "name": "List notifications for the authenticated user (application/json)", + "request": { + "urlPath": "/notifications", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 422, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/699301\",\n \"message\" : \"Et voluptas fugiat. Aspernatur est explicabo quas amet in ab dignissimos. Saepe impedit ut beatae consequatur et ducimus consequatur. Quidem quos repellat minima placeat in aut facilis. Consectetur be\",\n \"errors\" : [ {\n \"code\" : \"zm7yby84e940njt9hrqouw04j3xfe81zcgz7n00uzhzmlhjbgja3ekehck4yulig66xkr0vchmi8omnx7dfj48g5umrdylm5uhxofwburpfrhgs1tmjlwejfkrwuoi9908bdgmvpz9njjd33s53xuoebnz91qvwxfo619ggr273cyjn5tjvaikiuzzj0bk\",\n \"field\" : \"me4tft0h2brzk0kbuhjof9i043p7ybw4z6h3w5toflz\",\n \"resource\" : \"2jo5be3uqf54o8zvncqd9u74td3aqvdmc7yy4yv9g2izyavwf218bv627eboied0y9it99tv8j9iugwexofta4becxslo7tnst4on1m5s4sljsz8k\",\n \"index\" : 4805091085415705618,\n \"message\" : \"Vel asperiores aliquam aut voluptatibus. Necessitatibus excepturi excepturi magnam possimus nostrum excepturi voluptatum. Et qui sed repellendus.\",\n \"value\" : { }\n }, {\n \"code\" : \"irr8z9z4h5nwd2h0kf625ha9tkji3agc38xwlnoc0nyx5d30nyx5vf9kp1lahe785ztnyjqnlcz5kech4l7tqevwv784mut2u7np068t7ck2uvp66wm3uqwy154g04vvrp7qaz3fte02w71nnnp9ylbh10tar3xyp2h6pq\",\n \"field\" : \"jgmoqnqcmh0i2z2eirljn5lk396vdrvzozdn21poxq3igp6s3tyujip0uu3q1kp7plwf1bstsxjdj5hvxmlkeulrnxjt4n8emzo14pgy8shial17wz6rm0rsbsfax5zoh0chiv6zkpkbaebl9gyxl7pfc8r7u72u0ednlak5\",\n \"resource\" : \"951j4b\",\n \"index\" : 6723274543722937030,\n \"message\" : \"Recusandae nemo officia suscipit asperiores recusandae. Sit libero quis fugiat ea itaque accusantium. Labore quae voluptas. Mollitia rerum soluta enim asperiores laborum quasi. Dolor tempore in volupt\",\n \"value\" : { }\n }, {\n \"code\" : \"waj8z5wc5wynudswqqhvhwneagar7yvhgirpgfxeqb70ccfme5r\",\n \"field\" : \"tvqxd2h7n0xgvhdbb5fa8b5cqd6l7wgn8nta3sasejgglc3mgg2ggzw3wdxwogoeoul63s4vzzgk26b3o\",\n \"resource\" : \"0lereum5l7521bjpoxa0q2wbe9ycgc0f32wisi1kdb0wl9hl9l0w4lsm4jms0obhbdzk26psnwlpi1mj0\",\n \"index\" : 3885836068985415704,\n \"message\" : \"Explicabo neque nam esse. Error occaecati asperiores. Omnis nisi autem sint repellendus recusandae. Culpa magni eos consequuntur quibusdam dolorem.\",\n \"value\" : { }\n }, {\n \"code\" : \"6itmr39hbi73wwpdbqdswpbyxo6m1ik2kuwh4hvj3xv42o557dhfadw8jju8kcqfwtngln5erd\",\n \"field\" : \"5hg7wu7as77ejv1fvabs0xqnun647qiyntqk00ayta8c7shh4m4ukf0z1ilru73jgx3oma7ajyx6meo8\",\n \"resource\" : \"yn8m7uiobabgm\",\n \"index\" : 5082855018035019146,\n \"message\" : \"Et exercitationem iure. Rem quod corporis doloribus ducimus. Nostrum ut incidunt magnam natus id. Sint illum non.\",\n \"value\" : { }\n } ]\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "c1536e61-614c-4068-87b2-247305b661bd", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.76445Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "activity/list-notifications-for-authenticated-user", + "schema": { + "description": "Validation Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "errors": { + "items": { + "properties": { + "code": { + "type": "string" + }, + "field": { + "type": "string" + }, + "index": { + "type": "integer" + }, + "message": { + "type": "string" + }, + "resource": { + "type": "string" + }, + "value": { + "oneOf": [ + { + "nullable": true, + "type": "string" + }, + { + "nullable": true, + "type": "integer" + }, + { + "items": { + "type": "string" + }, + "nullable": true, + "type": "array" + } + ] + } + }, + "required": ["code"], + "type": "object" + }, + "type": "array" + }, + "message": { + "type": "string" + } + }, + "required": ["message", "documentation_url"], + "title": "Validation Error", + "type": "object" + } + } + } + }, + "insertionIndex": 1173 + }, + { + "id": "051b4fb3-0007-4152-9c40-031c9ca6968f", + "name": "List notifications for the authenticated user (application/json)", + "request": { + "urlPath": "/notifications", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 403, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/513851\",\n \"message\" : \"Repellat quos rem natus ea deserunt eaque. Facilis omnis atque nihil. Voluptatum sed qui. Similique vel sint et rerum accusamus ipsam. Modi id omnis sunt et odit delectus dolor.\",\n \"url\" : \"https://web.example.mocklab.io/764534\",\n \"status\" : \"knvzfnforwq6bfczm2fd2lu27gtuc2kzn39zzt8pki71m7bil4mhpzlc3zeitug3w1zh34857pl7x1pggqnqixur3rykp81pispaj9dsg7bhqfuefn\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "051b4fb3-0007-4152-9c40-031c9ca6968f", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.763858Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "activity/list-notifications-for-authenticated-user", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 1174 + }, + { + "id": "a664b9d5-a331-44b6-b532-6696eb76e191", + "name": "List notifications for the authenticated user (application/json)", + "request": { + "urlPath": "/notifications", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 401, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/420594\",\n \"message\" : \"Numquam nostrum rerum. Rerum vitae consequatur architecto autem. Et unde minima sit.\",\n \"url\" : \"https://web.example.mocklab.io/138808\",\n \"status\" : \"mru4suucajf15xm2i8lah2prtlmq81nk6vrsuc0qd90427xgfjej7vnl2wgld934ep63c6waparolbzwn64dj7ejqdeub2k57irsfi63rnpfqhpyamx3u70kqnshgyiqc6ptvqu51cxj15hbmi1bryfotjv2hjdk59lcfcw\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "a664b9d5-a331-44b6-b532-6696eb76e191", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.763649Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "activity/list-notifications-for-authenticated-user", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 1175 + }, + { + "id": "941985a7-0f13-4cc6-956d-89f13c56edfb", + "name": "List notifications for the authenticated user - 304", + "request": { + "urlPath": "/notifications", + "method": "GET" + }, + "response": { + "status": 304 + }, + "uuid": "941985a7-0f13-4cc6-956d-89f13c56edfb", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.763453Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "activity/list-notifications-for-authenticated-user" + } + } + }, + "insertionIndex": 1176 + }, + { + "id": "19da116a-83ac-4cdc-9591-3c72afdf6bf9", + "name": "List notifications for the authenticated user (application/json) - default", + "request": { + "urlPath": "/notifications", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 200, + "body": "[ {\n \"id\" : \"1\",\n \"last_read_at\" : \"2014-11-07T22:01:45Z\",\n \"reason\" : \"subscribed\",\n \"repository\" : {\n \"archive_url\" : \"https://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref}\",\n \"assignees_url\" : \"https://api.github.com/repos/octocat/Hello-World/assignees{/user}\",\n \"blobs_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/blobs{/sha}\",\n \"branches_url\" : \"https://api.github.com/repos/octocat/Hello-World/branches{/branch}\",\n \"collaborators_url\" : \"https://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator}\",\n \"comments_url\" : \"https://api.github.com/repos/octocat/Hello-World/comments{/number}\",\n \"commits_url\" : \"https://api.github.com/repos/octocat/Hello-World/commits{/sha}\",\n \"compare_url\" : \"https://api.github.com/repos/octocat/Hello-World/compare/{base}...{head}\",\n \"contents_url\" : \"https://api.github.com/repos/octocat/Hello-World/contents/{+path}\",\n \"contributors_url\" : \"https://api.github.com/repos/octocat/Hello-World/contributors\",\n \"deployments_url\" : \"https://api.github.com/repos/octocat/Hello-World/deployments\",\n \"description\" : \"This your first repo!\",\n \"downloads_url\" : \"https://api.github.com/repos/octocat/Hello-World/downloads\",\n \"events_url\" : \"https://api.github.com/repos/octocat/Hello-World/events\",\n \"fork\" : false,\n \"forks_url\" : \"https://api.github.com/repos/octocat/Hello-World/forks\",\n \"full_name\" : \"octocat/Hello-World\",\n \"git_commits_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/commits{/sha}\",\n \"git_refs_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/refs{/sha}\",\n \"git_tags_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/tags{/sha}\",\n \"git_url\" : \"git:github.com/octocat/Hello-World.git\",\n \"hooks_url\" : \"http://api.github.com/repos/octocat/Hello-World/hooks\",\n \"html_url\" : \"https://github.com/octocat/Hello-World\",\n \"id\" : 1296269,\n \"issue_comment_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/comments{/number}\",\n \"issue_events_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/events{/number}\",\n \"issues_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues{/number}\",\n \"keys_url\" : \"https://api.github.com/repos/octocat/Hello-World/keys{/key_id}\",\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World/labels{/name}\",\n \"languages_url\" : \"https://api.github.com/repos/octocat/Hello-World/languages\",\n \"merges_url\" : \"https://api.github.com/repos/octocat/Hello-World/merges\",\n \"milestones_url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones{/number}\",\n \"name\" : \"Hello-World\",\n \"node_id\" : \"MDEwOlJlcG9zaXRvcnkxMjk2MjY5\",\n \"notifications_url\" : \"https://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating}\",\n \"owner\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"private\" : false,\n \"pulls_url\" : \"https://api.github.com/repos/octocat/Hello-World/pulls{/number}\",\n \"releases_url\" : \"https://api.github.com/repos/octocat/Hello-World/releases{/id}\",\n \"ssh_url\" : \"git@github.com:octocat/Hello-World.git\",\n \"stargazers_url\" : \"https://api.github.com/repos/octocat/Hello-World/stargazers\",\n \"statuses_url\" : \"https://api.github.com/repos/octocat/Hello-World/statuses/{sha}\",\n \"subscribers_url\" : \"https://api.github.com/repos/octocat/Hello-World/subscribers\",\n \"subscription_url\" : \"https://api.github.com/repos/octocat/Hello-World/subscription\",\n \"tags_url\" : \"https://api.github.com/repos/octocat/Hello-World/tags\",\n \"teams_url\" : \"https://api.github.com/repos/octocat/Hello-World/teams\",\n \"trees_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/trees{/sha}\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World\"\n },\n \"subject\" : {\n \"latest_comment_url\" : \"https://api.github.com/repos/octokit/octokit.rb/issues/comments/123\",\n \"title\" : \"Greetings\",\n \"type\" : \"Issue\",\n \"url\" : \"https://api.github.com/repos/octokit/octokit.rb/issues/123\"\n },\n \"subscription_url\" : \"https://api.github.com/notifications/threads/1/subscription\",\n \"unread\" : true,\n \"updated_at\" : \"2014-11-07T22:01:45Z\",\n \"url\" : \"https://api.github.com/notifications/threads/1\"\n} ]", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "19da116a-83ac-4cdc-9591-3c72afdf6bf9", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.763428Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "activity/list-notifications-for-authenticated-user", + "schema": { + "items": { + "$ref": "#/components/schemas/thread" + }, + "type": "array" + } + } + } + }, + "insertionIndex": 1177 + }, + { + "id": "ce8c2f76-8e90-41f9-9203-eaee719a96b3", + "name": "List public events for a network of repositories (application/json)", + "request": { + "urlPath": "/networks/usqbuog721c3nlxyvlxpjdv827vxus39kx73gz5jgy0bmw0w9aznzemn3ba4huqbguncsefi8sz1kqw66hxs4x46yb6r3gdhzj9bb3b6x72y113ydmw1q795d2ha/h78d2cnvscz1j3c1yy884zp4fd9pi1i46k7suy62w70csdj21db7vrb7zdjqa7n8c6rf24f30lfwdw8bgb9zbso7kxxms8pexydx86ymaxh1xfjyf57wwzhqx2j0nkjgwb8vwvyng/events", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/009995\",\n \"message\" : \"Sed corporis illum consequatur ullam inventore mollitia aut. Magnam quibusdam voluptatum distinctio quidem at. Maxime officia nisi officiis.\",\n \"url\" : \"https://web.example.mocklab.io/772088\",\n \"status\" : \"ry5meybx9zw4685ckzuv46mqmkdsr2st8w4kqybbm7w0rla1v5k4qyshn93oynqnyqrooeltolpx17yjhsalickm4wdirju0pnz7ir7mg6xtqmjcdomrbse0c1vu6dxfkkw537xmetexc6pew3sd1x4skqpbo\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "ce8c2f76-8e90-41f9-9203-eaee719a96b3", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.763349Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "activity/list-public-events-for-repo-network", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 1178 + }, + { + "id": "54849d67-402f-4b66-b6c3-86d776f7ccfe", + "name": "List public events for a network of repositories (application/json)", + "request": { + "urlPath": "/networks/rncghbwql03x2odd61xy1bku7vwg7dh5c4vhkknu5nwarhufhyaskqi6y29gl6q9bzoly95nox92gjka5ctugkip2tz2pme9j0hbt03hu7ye4i33ol15d8v2jmo1y2k06v9vzn9o6c/47wpndnp2b0x13q0tlg3dpi2byc0w1jy597o104d0njwtlitsyubq7/events", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 403, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/924374\",\n \"message\" : \"At soluta optio tenetur quo. Repudiandae omnis mollitia. Ipsum exercitationem soluta provident maxime. Dolor a numquam eos.\",\n \"url\" : \"https://web.example.mocklab.io/161466\",\n \"status\" : \"341g9utyfnpkspd0q08ujjwkcr38sa30btgxajn1\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "54849d67-402f-4b66-b6c3-86d776f7ccfe", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.763124Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "activity/list-public-events-for-repo-network", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 1179 + }, + { + "id": "d03d0eb7-b4dd-4c3b-9c0f-3db5cbebdc8d", + "name": "List public events for a network of repositories - 304", + "request": { + "urlPath": "/networks/u4wblxe877f3a544hq8azwiibmsgeqh9wk9idbhxx1meys2bl4qc54j38ckpm1ebjgbs86uzpq09ebbt69a0pi1we00sb247x7nu54dgdg7t5cnu2lu90uetwfxexqrjluk0se5u8mpywl1zid68p8bi43hqd6ncmjftu5oby5ij6732mksh1b/3h7090lhbhj3l1frh2y1rq8rmlapeoqk6bue6e3rp1xkwlkta3h5pj7mw11qbdoewuvx2v35ju66tw8kyps4ilpyc8cec4jdy58go3ctbk8x2gyqn1599f6bgujm81ejnwrop9z0z3xeejfne8q4imndikq5b89yxzn/events", + "method": "GET" + }, + "response": { + "status": 304 + }, + "uuid": "d03d0eb7-b4dd-4c3b-9c0f-3db5cbebdc8d", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.762907Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "activity/list-public-events-for-repo-network" + } + } + }, + "insertionIndex": 1180 + }, + { + "id": "d74a4021-b5d2-4a1d-8763-ffeefab3896d", + "name": "List public events for a network of repositories (application/json)", + "request": { + "urlPath": "/networks/r0epbaxb3lp2d61ubjre5xwc1n61nw2o8uql7a8szg5z92ulxtl87hktdri14xywt1j6xral0tbawmj5eet8asd1kyivabx6m1j3e6v4jceqevz7we/0pkplgm8ccwbu09k4blhzabyz4am88zf2z42if7cmsiaek7826iqghu7a0xwdb3qhnugk7tjnnzj57brruda580iyl062rg31nszdt4jmvh7a9i0w6j9yy2zivuk5nlvvmjnc05yg/events", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 301, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/566563\",\n \"message\" : \"Doloribus mollitia adipisci. Excepturi qui autem in nihil aut. Doloremque iure facilis voluptatibus consequatur.\",\n \"url\" : \"https://web.example.mocklab.io/110717\",\n \"status\" : \"yeog446bwbygd1796ife8llkb99r73zvy7ckkvekozqm6op0zokeeeqyz35pq8\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "d74a4021-b5d2-4a1d-8763-ffeefab3896d", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.762857Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "activity/list-public-events-for-repo-network", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 1181 + }, + { + "id": "49c492d5-7123-4bc3-a38b-67ea7a921b03", + "name": "List public events for a network of repositories (application/json)", + "request": { + "urlPath": "/networks/ercrlbv8kk45pqstsdltms9bpyr77al36akmk0uza2u960nlb06yamak662nxoqbpuk2qgqeudka077x7yp6imyms64vyw6dyvzfj/viouttus641t9kqfhq0dzw1qylno5qqxz2endes3zuavpnp47lafcyl61eio125hgwa71xuxt2tyv1hz90rjpg6057hqh42wkdy7y37nxyt/events", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 200, + "body": "[ {\n \"actor\" : {\n \"display_login\" : \"db39hp4dpe1rvi562kxa4lz6sogetmyrr9m0oy26y8usjtpriz7hybrt5e4onqckhi8txuak88ps7b5sv2j08n8st2i72onm6hrklqclylxrj6wtyml3irpwv8ojjp3hr2lwa45599q0xdf4m2peodb4sbozg3li4r82yec6h8b4rk174zf1f7xw\",\n \"avatar_url\" : \"https://s3.amazonaws.com/uifaces/faces/twitter/jcubic/128.jpg\",\n \"id\" : 4045646653696502715,\n \"login\" : \"eerq568mkvt6yrexz17rdru5dqilbknjxt6z0w8gpczomkyd1c286zbn2th29p0mota5wyf1zrox8l5br2pp3w1uzhh8kgmc5q55anluz980do4ajjhheqzy\",\n \"gravatar_id\" : \"dm1l\",\n \"url\" : \"https://web.example.mocklab.io/700912\"\n },\n \"public\" : true,\n \"org\" : {\n \"display_login\" : \"8vabblkvlv2gh63y3e2szbl8ov48xssezh77ilq1yldb64gi8ds1xzax04oj6gpok6a48b2mzm8kwcxajga9oj7zjihm2pzk8t7l\",\n \"avatar_url\" : \"https://s3.amazonaws.com/uifaces/faces/twitter/noxdzine/128.jpg\",\n \"id\" : 2029778924867816951,\n \"login\" : \"l2y8ua96fr31ubjbwff3jpbg890c5bwggme\",\n \"gravatar_id\" : \"97tv\",\n \"url\" : \"https://web.example.mocklab.io/696598\"\n },\n \"payload\" : {\n \"pages\" : [ {\n \"summary\" : \"Quis enim rerum rem et. Velit veniam aut aut alias ipsum fugiat nesciunt. Quia rem vel molestias iure. Temporibus ad tempora aliquam. Iusto in aliquam aut qui enim hic.\",\n \"html_url\" : \"https://web.example.mocklab.io/170392\",\n \"page_name\" : \"Ms. Shenika Lesch\",\n \"action\" : \"yiecdrfsm9w8x9qip48hy6yib09x41tudaw9y4lfzvxjbp7x8v3a94gls4jv55bu5a88ht5epvxovtbt1il7k4rip9uo20faioev89cal91zyjvhu4onievxi66mslcs37y\",\n \"title\" : \"Consequuntur et voluptatem et iste dolorum.\",\n \"sha\" : \"bpyes89dza38yhkm2lfykrlffyvk4bu2y2trt96nd00ufa52ff63yjb8oop0n04bqjno40jpd275gp5d3nv107yi50g767xh77b51d6kclatn4i3bgzhdq3t678xajntqz9ho9oqgxli56vh60tnv6gwf1y6nkz2rmum\"\n }, {\n \"summary\" : \"Voluptatem ea laudantium nisi omnis nobis. Sint voluptatem voluptates accusamus nostrum. Nisi velit laborum labore. Molestiae doloribus quod voluptatum porro non.\",\n \"html_url\" : \"https://web.example.mocklab.io/461748\",\n \"page_name\" : \"Sergio Hane\",\n \"action\" : \"u2i9j7sg\",\n \"title\" : \"Officiis inventore voluptatem nihil eaque.\",\n \"sha\" : \"95vusoggomwwumtmrcym7w7ckry3jzwjd624f46e2am0osso36pldse4cbfh9ofwvj4zwodejb01a75r0bcy0wiicmvvhiaun12\"\n }, {\n \"summary\" : \"Ipsum eos rerum aut rerum autem et. Tempore deserunt corporis sed corporis. Voluptatem nam ratione aliquid tenetur odit mollitia.\",\n \"html_url\" : \"https://web.example.mocklab.io/547538\",\n \"page_name\" : \"Elliott Krajcik\",\n \"action\" : \"jqv8o0lutqmvzizd13wq1nlii2zehf1ermr71nxl3rhhroojp0m1gfg38usa4pg844ttjzzmyb6n4hnrj5hsan7wh7e464lf49x3xkk0ryuq0z2uk7v4e2m02a9\",\n \"title\" : \"Laboriosam nisi aspernatur quaerat autem.\",\n \"sha\" : \"ktukdrciixfzqwphqnaxq99tox5mesnugnj1rnq6bx9uoch8jiojjkptyhtto2wlojoqxqwgj6tpqfmbmhdrervqunhm0ve82yk6eu7c0e11k9hopu7oypg6gfby9qrxf9992w6u47fy7p559nznfnfqcphgudfmff60p3qm4v9ea8io6amva5l2u55c\"\n }, {\n \"summary\" : \"Recusandae voluptates culpa quis explicabo sint non. Corrupti quo aut recusandae. Doloribus eum saepe. Nostrum provident id voluptatem qui.\",\n \"html_url\" : \"https://web.example.mocklab.io/074511\",\n \"page_name\" : \"Ms. Reanna Flatley\",\n \"action\" : \"vvu5spoi6erty91f2a7d2h651nq1a4b6fu15alw1xcieu5jdel62fr2fzzq6lrue82r73tl81c7zglhoebquv26fybabw1shes6a0harbt0dcabw353pun4m4444rhfjt60374kaylr7nzcxkabg5ep6ysrmyhngdqb9z32oojqqkdwj\",\n \"title\" : \"Ipsa quis qui qui non.\",\n \"sha\" : \"wxhp1cmwqrvzgxv84brvkeqx0i5ppk2rbruelnhswbqxcssgb3li0gq58uwm9vykv4r80l3ie3eyogts81al5v22q7acqc8rq7stsyvel3fp87\"\n }, {\n \"summary\" : \"Ex explicabo perferendis. Quaerat dolor eveniet eaque quaerat sunt ex ut. Maxime nulla pariatur non dolor sint quos. Suscipit aut molestias autem deserunt aut nihil minus. Ut eum cupiditate.\",\n \"html_url\" : \"https://web.example.mocklab.io/365999\",\n \"page_name\" : \"Joel Gibson Jr.\",\n \"action\" : \"230pvhsuqfom6rrp430\",\n \"title\" : \"Qui laborum nam.\",\n \"sha\" : \"nccizps5y37krm8otw431wyigrxqnqswdi\"\n }, {\n \"summary\" : \"Soluta ipsum eos accusantium. Corporis consequatur commodi. Quae provident vel nihil est. Blanditiis minima corrupti placeat facilis et.\",\n \"html_url\" : \"https://web.example.mocklab.io/692079\",\n \"page_name\" : \"Daryl Abbott\",\n \"action\" : \"6l8fl0gat58nt28y5qwswp1jsp8ucte66rbqipspchpdqpkmy6cqs4xsnj\",\n \"title\" : \"Quos et vitae sed.\",\n \"sha\" : \"a8kldyb3bhngo6d1ifih9fvx0tyufbkc2qmbh87ihn8f6lddnqkf0hjqrs5evnxvxn0qs83fw0mpo4g9lyjwnpj4osfvr2jzfm26xw4i8ox2ofy7lmwpbif6nqs5duvlagkpo39o4\"\n }, {\n \"summary\" : \"Officia omnis eum quia. Unde dolore qui. Sit veniam molestiae. Dicta dolores cum molestiae minus ad vero omnis.\",\n \"html_url\" : \"https://web.example.mocklab.io/296338\",\n \"page_name\" : \"Alisha Schimmel\",\n \"action\" : \"g8mdwrcmu6iphki8ycvaftmqz3nnv3qmejegm502y2xflnt6owvihm3jcbopyzjb2el2g9npqn8j9t203ae7fh6krhkukwodlf0kguc6tr161mk80xvm7hcpchqioesdjcrhppl0ksb6pe7v4kent4hejj8v28khkwfp4\",\n \"title\" : \"Ea necessitatibus vero at aspernatur voluptatem facere illum.\",\n \"sha\" : \"hv4gvcwjig4j4t5ei6ceqm6lep99445u19tr3tbt856gc0bdjnwxk4enm5lxaxi9m18flhkonekl4s0iexheozhn2kb4agz80hbfr0vbdr3zdjfwgza59c8uakv396ii7fxqcr4z4nyzvgdb4mhzcm3c1i2cmm4wn02mple3t71v44egw2e2ktywhxishc0tbzee1yd\"\n } ],\n \"issue\" : {\n \"body_html\" : \"rz5fqyh4m7jt79m8lxsfnzispbic15nswjwtv0pwp5y634te\",\n \"body_text\" : \"tarvpg9v79ad4n36zbobgeq9if1ar7uc51kfmbrjo244js95t9i4x1aojp4jz5nnxc5\",\n \"assignees\" : [ {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Dr. Randee Lang\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"6d9xyqp0wqut5a2tb28xtaqru22fegtqg61621gmz3rls2vjravk95uc\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n }, {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Allen Kilback\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"85pf9lxe74waryeq1h2zmzi855a5owejmap1mqquva5jrznc7rr7ou2yhqab62qh81m5jx1bo7xbsevgn9456h5nkwjvz0r03bc0x5bxm0c3v4q714x7u79nywcot2x7pokzwmao9ops0s44h7lilxl7sa24i40j5stokxz9ag483tqfon9anlgipyod7qp70\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n }, {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Liane Hayes III\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"xhaz88tixu2797jkv4snem94a1bewgvu3msdkrohldba63g3sfoxg9ctcjfhpgn315eirmhbes4h2fbfv7ahdh8qlrvs6ac6eb54s8hk76iy6cfdg05iitx6cdtclhm1vof4jp3q9ghz9gx3263zobdglcq5ljmigfdm897z0x\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n }, {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Laurette Hermiston Jr.\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"nmjracryra25fsqoeyu\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n } ],\n \"created_at\" : \"2011-04-22T13:33:48Z\",\n \"body\" : \"I'm having a problem with this.\",\n \"repository\" : {\n \"allow_forking\" : true,\n \"anonymous_access_enabled\" : false,\n \"is_template\" : true,\n \"stargazers_count\" : 80,\n \"pushed_at\" : \"2011-01-26T19:06:43Z\",\n \"language\" : \"70tepw8l5zp92iow0q0wf49mzth99paw9ad065ixco55djv2klxx2f3v2o1d1xxgnv8e9nil0q19i2my56wstp1f0jnrt8scod3j6y4dwi6umu7\",\n \"subscription_url\" : \"http://api.github.com/repos/octocat/Hello-World/subscription\",\n \"branches_url\" : \"http://api.github.com/repos/octocat/Hello-World/branches{/branch}\",\n \"allow_rebase_merge\" : true,\n \"issue_comment_url\" : \"http://api.github.com/repos/octocat/Hello-World/issues/comments{/number}\",\n \"labels_url\" : \"http://api.github.com/repos/octocat/Hello-World/labels{/name}\",\n \"permissions\" : {\n \"pull\" : true,\n \"maintain\" : false,\n \"admin\" : true,\n \"triage\" : true,\n \"push\" : true\n },\n \"subscribers_url\" : \"http://api.github.com/repos/octocat/Hello-World/subscribers\",\n \"releases_url\" : \"http://api.github.com/repos/octocat/Hello-World/releases{/id}\",\n \"svn_url\" : \"https://svn.github.com/octocat/Hello-World\",\n \"subscribers_count\" : 5287758002437733007,\n \"id\" : 42,\n \"master_branch\" : \"417750zzp0iw3qsf75hega4h78tq0gdxng1vrjwlm8ax28y8wr2v4ny\",\n \"forks\" : 9015014108501834515,\n \"allow_merge_commit\" : true,\n \"archive_url\" : \"http://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref}\",\n \"git_refs_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/refs{/sha}\",\n \"forks_url\" : \"http://api.github.com/repos/octocat/Hello-World/forks\",\n \"visibility\" : \"4yvenko5sbvmyntrb49vyj2p2uarneag6eudbjg3r7dpoebkrm37pjuwbq8x5sx1ribrm4mah7u2jp439t03pb7jfhmjljtnu5y7ogyhulvuh68bjaa8ac70vudjbkiwo1rppr05jk1q4crqdpr05pw8e71rnvpos\",\n \"statuses_url\" : \"http://api.github.com/repos/octocat/Hello-World/statuses/{sha}\",\n \"network_count\" : 7874384714604601866,\n \"ssh_url\" : \"git@github.com:octocat/Hello-World.git\",\n \"license\" : {\n \"html_url\" : \"https://web.example.mocklab.io/056481\",\n \"name\" : \"MIT License\",\n \"spdx_id\" : \"MIT\",\n \"key\" : \"mit\",\n \"url\" : \"https://api.github.com/licenses/mit\",\n \"node_id\" : \"MDc6TGljZW5zZW1pdA==\"\n },\n \"full_name\" : \"octocat/Hello-World\",\n \"size\" : 108,\n \"template_repository\" : {\n \"anonymous_access_enabled\" : true,\n \"is_template\" : false,\n \"stargazers_count\" : 8403853504829443250,\n \"pushed_at\" : \"cvlap3z0fur8y6no2d0mmls82uu2srhxlmj7y\",\n \"language\" : \"sz7zdsujr39enxbyp38jnsmjjyxh1zg2y7gtznjhqa2uwurwfkvcfzkqs5bt609yudzb18oa876fmh6sin6gw65fndufnt1qkuw4vqhkgqp8uhd80whld8sjmwew3qll7piiul3uby0ibgqmlggs7d1ot2kot0c3owfz\",\n \"subscription_url\" : \"https://web.example.mocklab.io/858147\",\n \"branches_url\" : \"https://web.example.mocklab.io/956307\",\n \"allow_rebase_merge\" : false,\n \"issue_comment_url\" : \"https://web.example.mocklab.io/788768\",\n \"labels_url\" : \"https://web.example.mocklab.io/332584\",\n \"permissions\" : { },\n \"subscribers_url\" : \"https://web.example.mocklab.io/431003\",\n \"releases_url\" : \"https://web.example.mocklab.io/938759\",\n \"svn_url\" : \"https://web.example.mocklab.io/554565\",\n \"subscribers_count\" : 2852931907164041146,\n \"id\" : 5736109988329712233,\n \"allow_merge_commit\" : false,\n \"archive_url\" : \"https://web.example.mocklab.io/663287\",\n \"git_refs_url\" : \"https://web.example.mocklab.io/455426\",\n \"forks_url\" : \"https://web.example.mocklab.io/569177\",\n \"visibility\" : \"y6m8k45ho1ffhyhmrmza0245lm8mminvvtizeyeyegy7fwshln9pfxk0hicxl3pmz6a8ofi5xu526initnnut96zj2yyc3aar7o5rkixgagqyxaymemwprdu46uxia5zahp\",\n \"statuses_url\" : \"https://web.example.mocklab.io/786370\",\n \"network_count\" : 4883556514709139366,\n \"ssh_url\" : \"https://web.example.mocklab.io/527129\",\n \"full_name\" : \"Myrtice Corwin IV\",\n \"size\" : 5650908259207819466,\n \"languages_url\" : \"https://web.example.mocklab.io/692443\",\n \"clone_url\" : \"https://web.example.mocklab.io/017514\",\n \"collaborators_url\" : \"https://web.example.mocklab.io/432946\",\n \"html_url\" : \"https://web.example.mocklab.io/368969\",\n \"name\" : \"Darell Bode MD\",\n \"pulls_url\" : \"https://web.example.mocklab.io/518203\",\n \"default_branch\" : \"xtx883wxqquczcqhx2o0jqjv2wo4gr5pd4brt\",\n \"hooks_url\" : \"https://web.example.mocklab.io/363154\",\n \"trees_url\" : \"https://web.example.mocklab.io/805912\",\n \"tags_url\" : \"https://web.example.mocklab.io/177103\",\n \"contributors_url\" : \"https://web.example.mocklab.io/620721\",\n \"private\" : true,\n \"has_downloads\" : true,\n \"notifications_url\" : \"https://web.example.mocklab.io/974542\",\n \"open_issues_count\" : 643614876957791319,\n \"created_at\" : \"xkr6roj\",\n \"description\" : \"Odit magni fuga eos temporibus. Suscipit sed dolor sed et asperiores. Ad iusto esse unde et repudiandae id sit.\",\n \"deployments_url\" : \"https://web.example.mocklab.io/691207\",\n \"keys_url\" : \"https://web.example.mocklab.io/370645\",\n \"has_projects\" : false,\n \"archived\" : true,\n \"has_wiki\" : false,\n \"updated_at\" : \"2022-08-09T07:03:58.733586Z\",\n \"comments_url\" : \"https://web.example.mocklab.io/673870\",\n \"stargazers_url\" : \"https://web.example.mocklab.io/690216\",\n \"disabled\" : true,\n \"delete_branch_on_merge\" : false,\n \"git_url\" : \"https://web.example.mocklab.io/148228\",\n \"has_pages\" : true,\n \"owner\" : { },\n \"allow_squash_merge\" : true,\n \"commits_url\" : \"https://web.example.mocklab.io/295248\",\n \"compare_url\" : \"https://web.example.mocklab.io/765879\",\n \"git_commits_url\" : \"https://web.example.mocklab.io/814115\",\n \"topics\" : [ \"lwrkk72geklmingbovjc4rfydhgr9vj2hs9p98p8bsruat6srihezmvf7oh99n45si0tsgfj7yz0su0ub\", \"tp1nae7m320a29u6tmr263h199u7qgghz2rm12rg31xoywzr14kfzcnn7lvb5jfn1jreolf3j5yhxbt9ug2wi8a3cml73fptbn4phl3ltuchhhnsa691ghbto6rzd81adfbtx7n48y64yye40het1hmymgut3x8q\", \"hiouzi0egaygw82cj8n9ks7b625wg72k5ds4mf4v91eu6vbdlzvf73h5up0859znd95g3lsilm1kzlxyfxa9qdkuww7xi43wzikpksg3ldtduhcf3xgo8ehpwria0a6eo8r13ozvqt\", \"83ene7vwb6antt7tk7p5chdz6nmkzhw2j02u5noo4fy6zctqvnkqd1gdftm4jb2mrghepyrwbgub3a425dcwu607sej68y77cg2hba5hk62cbzzducshyv59ui6vnmlqj7u8jdydz4lmtst8fhl82t0gocnctfh2ej8rxtyg9f0h9f8mmbys6q3v3ttb5mjjjll\", \"6nqeio4a7hyd9ceituhepchydisd3mwqrcoyhft8nfvdky3bvhhl6avlipwv0o366a8m0o99fz3e06cgi5lr9mlaqgplkyc1hcqqv1wq7ji5g09x2tyfxa1bchryawi2nni8tnhdw2d65jirzxjmyct2bkfba2ypkh5e3ilwk120udu4kiscdxuipw4vt8\" ],\n \"blobs_url\" : \"https://web.example.mocklab.io/274784\",\n \"git_tags_url\" : \"https://web.example.mocklab.io/891110\",\n \"merges_url\" : \"https://web.example.mocklab.io/491816\",\n \"downloads_url\" : \"https://web.example.mocklab.io/780354\",\n \"has_issues\" : false,\n \"url\" : \"https://web.example.mocklab.io/278867\",\n \"contents_url\" : \"https://web.example.mocklab.io/838420\",\n \"mirror_url\" : \"https://web.example.mocklab.io/031791\",\n \"milestones_url\" : \"https://web.example.mocklab.io/345727\",\n \"teams_url\" : \"https://web.example.mocklab.io/113689\",\n \"fork\" : true,\n \"issues_url\" : \"https://web.example.mocklab.io/756515\",\n \"events_url\" : \"https://web.example.mocklab.io/269360\",\n \"issue_events_url\" : \"https://web.example.mocklab.io/569897\",\n \"assignees_url\" : \"https://web.example.mocklab.io/980254\",\n \"watchers_count\" : 4869695653177387254,\n \"forks_count\" : 3736871215669090324,\n \"homepage\" : \"esiy5e8yx6v1z5e8yifd0u6fbbpui7kxhx4wgyh59xarwyqh1t1torc08m6iz9cg3w76jllw40iq3eyuvkaagxne7ieh4px1ztvc4n5zbnolbmjt2s912bgb7rrimax2qcri5rrnmk8xupz5dwf6bip2pif9vtf6jx06jad2zp5dadgap0kwrjs30m6ocyz1\",\n \"node_id\" : \"h71b\"\n },\n \"languages_url\" : \"http://api.github.com/repos/octocat/Hello-World/languages\",\n \"clone_url\" : \"https://github.com/octocat/Hello-World.git\",\n \"collaborators_url\" : \"http://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator}\",\n \"html_url\" : \"https://github.com/octocat/Hello-World\",\n \"name\" : \"Team Environment\",\n \"pulls_url\" : \"http://api.github.com/repos/octocat/Hello-World/pulls{/number}\",\n \"default_branch\" : \"master\",\n \"hooks_url\" : \"http://api.github.com/repos/octocat/Hello-World/hooks\",\n \"trees_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/trees{/sha}\",\n \"tags_url\" : \"http://api.github.com/repos/octocat/Hello-World/tags\",\n \"contributors_url\" : \"http://api.github.com/repos/octocat/Hello-World/contributors\",\n \"private\" : true,\n \"has_downloads\" : true,\n \"notifications_url\" : \"http://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating}\",\n \"open_issues_count\" : 0,\n \"created_at\" : \"2011-01-26T19:01:12Z\",\n \"description\" : \"This your first repo!\",\n \"watchers\" : 6966596578709213154,\n \"deployments_url\" : \"http://api.github.com/repos/octocat/Hello-World/deployments\",\n \"keys_url\" : \"http://api.github.com/repos/octocat/Hello-World/keys{/key_id}\",\n \"has_projects\" : true,\n \"archived\" : true,\n \"has_wiki\" : true,\n \"updated_at\" : \"2011-01-26T19:14:43Z\",\n \"comments_url\" : \"http://api.github.com/repos/octocat/Hello-World/comments{/number}\",\n \"stargazers_url\" : \"http://api.github.com/repos/octocat/Hello-World/stargazers\",\n \"disabled\" : true,\n \"delete_branch_on_merge\" : false,\n \"git_url\" : \"git:github.com/octocat/Hello-World.git\",\n \"has_pages\" : false,\n \"owner\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Jae Daugherty\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"l3r1js6ndkae8gcgxojbjke5mvzk6shp76r9hj0yd5nl3uj70afizb5i7961g8morr90afhm9tgjqtnsqw9e8lhpakb7gv9k1bjhwzei34ma3lvf92\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"allow_squash_merge\" : true,\n \"commits_url\" : \"http://api.github.com/repos/octocat/Hello-World/commits{/sha}\",\n \"compare_url\" : \"http://api.github.com/repos/octocat/Hello-World/compare/{base}...{head}\",\n \"git_commits_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/commits{/sha}\",\n \"topics\" : [ \"a9ys2kfa3nfq9fa7a9yj8b3a572ot59ozddyzz8wszvlql8uohaph96dt34cgerdmua1aw25tggula8tr0kz2q2worr5sgh4l3nbuu3cl49jztgcj5mdvylkcr9u0dwf7m\", \"3xgu8j0bst26fud4o1fmi8mo7xyf5vsk7ir98wdv3sp4zqwcp5qm01c3dsoh9qdfpisz11zv5kq80ilneqiq1b0zw9zdh0uk91nz32r59r00f3brywqagyb0sfryklz3zfl5pqbpxugkz4r2vr3r68p1t8h9zk\", \"sx3prtafk12saxcnrib8c00qm93ze3q3abe1uxxc52p5nwsr44t3487mb82ilw24it8x0uk21mtrxd99drxld4559c00ay6ph3rw9ug7qw6i6ckezn7jsnog9zhgatprjbhjqutyet5glncq6k7\", \"m8s7dtmwshm6dgc2\", \"1p0ymx6eby89xu14gryv1ekiud4qgdlvk327qp9aeywuwii73fy3ro9rdwqlfw7qhjieif64\", \"hnfzjzdkmbxjmo1e6r71ab3qutbe880ll5zkvfismc98hsozkg6g9bw7s95ps17orpvxttdgahfdakwabhc4i93u6vva7o4zvkodj3f7hlif1bjpya8avbigbit6ulv8ultt\", \"bf9mn4735nv7t6xit1xwdai4as19h28cghfcqgdg08j\" ],\n \"blobs_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/blobs{/sha}\",\n \"git_tags_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/tags{/sha}\",\n \"merges_url\" : \"http://api.github.com/repos/octocat/Hello-World/merges\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:42Z\\\"\",\n \"downloads_url\" : \"http://api.github.com/repos/octocat/Hello-World/downloads\",\n \"has_issues\" : true,\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World\",\n \"contents_url\" : \"http://api.github.com/repos/octocat/Hello-World/contents/{+path}\",\n \"mirror_url\" : \"git:git.example.com/octocat/Hello-World\",\n \"milestones_url\" : \"http://api.github.com/repos/octocat/Hello-World/milestones{/number}\",\n \"teams_url\" : \"http://api.github.com/repos/octocat/Hello-World/teams\",\n \"fork\" : false,\n \"issues_url\" : \"http://api.github.com/repos/octocat/Hello-World/issues{/number}\",\n \"events_url\" : \"http://api.github.com/repos/octocat/Hello-World/events\",\n \"issue_events_url\" : \"http://api.github.com/repos/octocat/Hello-World/issues/events{/number}\",\n \"organization\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Mr. Bertram Nienow\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"6ain75rqdx3pjcms2ybgw12isgbg0ewiyie78ufqi1wkxt49vdlwqcfvktj8zgn61do8zf\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"assignees_url\" : \"http://api.github.com/repos/octocat/Hello-World/assignees{/user}\",\n \"open_issues\" : 2466324331679026655,\n \"watchers_count\" : 80,\n \"forks_count\" : 9,\n \"homepage\" : \"https://github.com\",\n \"node_id\" : \"MDEwOlJlcG9zaXRvcnkxMjk2MjY5\"\n },\n \"title\" : \"Found a bug\",\n \"author_association\" : \"OWNER\",\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347/labels{/name}\",\n \"number\" : 1347,\n \"performed_via_github_app\" : {\n \"owner\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Mrs. Chance Dach\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"0oc97rfmbr3jtgsywp3ilpreq4rlmzvxed9pqy7rcw7nagsufixvzvps0p9pattvkwxs1agn8x837bqwshdi3giqkkd7tjrmszl33t6t1fmcsd15d5vy88hkaph3ipgenhat4xvchxxxil\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"installations_count\" : 5,\n \"created_at\" : \"2017-07-08T16:18:44-04:00\",\n \"description\" : \"The description of the app.\",\n \"client_id\" : \"\\\"Iv1.25b5d1e65ffc4022\\\"\",\n \"external_url\" : \"https://example.com\",\n \"updated_at\" : \"2017-07-08T16:18:44-04:00\",\n \"permissions\" : {\n \"deployments\" : \"write\",\n \"issues\" : \"read\"\n },\n \"html_url\" : \"https://github.com/apps/super-ci\",\n \"name\" : \"Probot Owners\",\n \"pem\" : \"\\\"-----BEGIN RSA PRIVATE KEY-----\\\\nMIIEogIBAAKCAQEArYxrNYD/iT5CZVpRJu4rBKmmze3PVmT/gCo2ATUvDvZTPTey\\\\nxcGJ3vvrJXazKk06pN05TN29o98jrYz4cengG3YGsXPNEpKsIrEl8NhbnxapEnM9\\\\nJCMRe0P5JcPsfZlX6hmiT7136GRWiGOUba2X9+HKh8QJVLG5rM007TBER9/z9mWm\\\\nrJuNh+m5l320oBQY/Qq3A7wzdEfZw8qm/mIN0FCeoXH1L6B8xXWaAYBwhTEh6SSn\\\\nZHlO1Xu1JWDmAvBCi0RO5aRSKM8q9QEkvvHP4yweAtK3N8+aAbZ7ovaDhyGz8r6r\\\\nzhU1b8Uo0Z2ysf503WqzQgIajr7Fry7/kUwpgQIDAQABAoIBADwJp80Ko1xHPZDy\\\\nfcCKBDfIuPvkmSW6KumbsLMaQv1aGdHDwwTGv3t0ixSay8CGlxMRtRDyZPib6SvQ\\\\n6OH/lpfpbMdW2ErkksgtoIKBVrDilfrcAvrNZu7NxRNbhCSvN8q0s4ICecjbbVQh\\\\nnueSdlA6vGXbW58BHMq68uRbHkP+k+mM9U0mDJ1HMch67wlg5GbayVRt63H7R2+r\\\\nVxcna7B80J/lCEjIYZznawgiTvp3MSanTglqAYi+m1EcSsP14bJIB9vgaxS79kTu\\\\noiSo93leJbBvuGo8QEiUqTwMw4tDksmkLsoqNKQ1q9P7LZ9DGcujtPy4EZsamSJT\\\\ny8OJt0ECgYEA2lxOxJsQk2kI325JgKFjo92mQeUObIvPfSNWUIZQDTjniOI6Gv63\\\\nGLWVFrZcvQBWjMEQraJA9xjPbblV8PtfO87MiJGLWCHFxmPz2dzoedN+2Coxom8m\\\\nV95CLz8QUShuao6u/RYcvUaZEoYs5bHcTmy5sBK80JyEmafJPtCQVxMCgYEAy3ar\\\\nZr3yv4xRPEPMat4rseswmuMooSaK3SKub19WFI5IAtB/e7qR1Rj9JhOGcZz+OQrl\\\\nT78O2OFYlgOIkJPvRMrPpK5V9lslc7tz1FSh3BZMRGq5jSyD7ETSOQ0c8T2O/s7v\\\\nbeEPbVbDe4mwvM24XByH0GnWveVxaDl51ABD65sCgYB3ZAspUkOA5egVCh8kNpnd\\\\nSd6SnuQBE3ySRlT2WEnCwP9Ph6oPgn+oAfiPX4xbRqkL8q/k0BdHQ4h+zNwhk7+h\\\\nWtPYRAP1Xxnc/F+jGjb+DVaIaKGU18MWPg7f+FI6nampl3Q0KvfxwX0GdNhtio8T\\\\nTj1E+SnFwh56SRQuxSh2gwKBgHKjlIO5NtNSflsUYFM+hyQiPiqnHzddfhSG+/3o\\\\nm5nNaSmczJesUYreH5San7/YEy2UxAugvP7aSY2MxB+iGsiJ9WD2kZzTUlDZJ7RV\\\\nUzWsoqBR+eZfVJ2FUWWvy8TpSG6trh4dFxImNtKejCR1TREpSiTV3Zb1dmahK9GV\\\\nrK9NAoGAbBxRLoC01xfxCTgt5BDiBcFVh4fp5yYKwavJPLzHSpuDOrrI9jDn1oKN\\\\nonq5sDU1i391zfQvdrbX4Ova48BN+B7p63FocP/MK5tyyBoT8zQEk2+vWDOw7H/Z\\\\nu5dTCPxTIsoIwUw1I+7yIxqJzLPFgR2gVBwY1ra/8iAqCj+zeBw=\\\\n-----END RSA PRIVATE KEY-----\\\\n\\\"\",\n \"webhook_secret\" : \"\\\"6fba8f2fc8a7e8f2cca5577eddd82ca7586b3b6b\\\"\",\n \"client_secret\" : \"\\\"1d4b2097ac622ba702d19de498f005747a8b21d3\\\"\",\n \"id\" : 37,\n \"events\" : [ \"label\", \"deployment\" ],\n \"slug\" : \"probot-owners\",\n \"node_id\" : \"MDExOkludGVncmF0aW9uMQ==\"\n },\n \"updated_at\" : \"2011-04-22T13:33:48Z\",\n \"comments_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347/comments\",\n \"active_lock_reason\" : \"too heated\",\n \"id\" : 1,\n \"repository_url\" : \"https://api.github.com/repos/octocat/Hello-World\",\n \"state\" : \"open\",\n \"locked\" : true,\n \"timeline_url\" : \"https://web.example.mocklab.io/682517\",\n \"pull_request\" : {\n \"patch_url\" : \"https://web.example.mocklab.io/530347\",\n \"html_url\" : \"https://web.example.mocklab.io/040252\",\n \"merged_at\" : \"2024-02-17T08:16:58.736Z\",\n \"diff_url\" : \"https://web.example.mocklab.io/457021\",\n \"url\" : \"https://web.example.mocklab.io/350391\"\n },\n \"closed_at\" : \"2023-11-23T02:53:15.736Z\",\n \"comments\" : 0,\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347\",\n \"labels\" : [ {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n }, {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n }, {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n }, {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n } ],\n \"milestone\" : {\n \"creator\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Alfredia Weimann\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"5kbtdrr41wso3gsyjsybsbmsza8t6ivujm3qpecw0zbjq121l7nkh6aua1fr3y0l22tww2rk97fkdka9aaiwqhglda69191nyi3v90yjcqh43h81rv4fr3ytuxovwteno0mvv8riiy0h05tq34l5ddfkm66hr\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"closed_at\" : \"2013-02-12T13:22:01Z\",\n \"created_at\" : \"2011-04-10T20:09:31Z\",\n \"description\" : \"Tracking milestone for version 1.0\",\n \"closed_issues\" : 8,\n \"title\" : \"v1.0\",\n \"due_on\" : \"2012-10-09T23:39:01Z\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones/1\",\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones/1/labels\",\n \"number\" : 42,\n \"updated_at\" : \"2014-03-03T18:58:10Z\",\n \"html_url\" : \"https://github.com/octocat/Hello-World/milestones/v1.0\",\n \"id\" : 1002604,\n \"state\" : \"open\",\n \"open_issues\" : 4,\n \"node_id\" : \"MDk6TWlsZXN0b25lMTAwMjYwNA==\"\n },\n \"events_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347/events\",\n \"html_url\" : \"https://github.com/octocat/Hello-World/issues/1347\",\n \"assignee\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Miss Doloris Lueilwitz\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"9rjbe71p09fo58wdtcmadux3el1z8jnkbsdgk1byphrhf360pn8qeix1v92eu1orbv5plvntyv2rtyqn5a2kv3qq9u3k52xb93qqc1haevimme1x5szkdnu0cbx4a6b8k0g6an9mxqu5znj22d4izsy6wsmnc5xaejnyioyfbf7d4p32um\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"user\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"otto.nitzsche\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"0vzyvwknz51oxsy5rifeqe8dlg6nalmw68u19m6ms7ajcxh88yhivtuenyxtafdib04bh3ryd1oo2hstimy\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"node_id\" : \"MDU6SXNzdWUx\"\n },\n \"action\" : \"5h7lxr14s1ag5hf1ejqukcz2h1upqqqjilzzuxl27zm2mwz2i7zc9vgalc6wiuluqm6ig1ndqweqxyixjqlhxtwlvgvu97kmssomzzr1owm4m\",\n \"comment\" : {\n \"issue_url\" : \"https://web.example.mocklab.io/743649\",\n \"body_html\" : \"awzaxpcjm15xof32tmq5aocsth7zav66i3w8c47kdk5ccu5uj7d3pa0o5svrsmkqrkjrkidr2mv649p2ox0c6tdwlfwrweuudzbvmuvpefcet49s8iz8g4drp75oe8i3ksp4d5x7wfvx6iy9bwcs8\",\n \"body_text\" : \"ggf1l5b46qahwk3v9ugpi354kdlga0ctmn3ptpwedk2qejmfh3twprjrzxc1t9ic3mqc8g8g0c2gzvgw5ljo0ztks9is9i518pceskp1shmyzhtu763e2hznrzuaieo878ewpt8mjqjot\",\n \"created_at\" : \"2011-04-14T16:00:49Z\",\n \"body\" : \"What version of Safari were you using when you observed this bug?\",\n \"url\" : \"https://api.github.com/repositories/42/issues/comments/1\",\n \"author_association\" : \"OWNER\",\n \"performed_via_github_app\" : {\n \"owner\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Michal Abernathy\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"znj2a8wz9jekv1sp6e2rxh3szcn0eogckvvpbqz4p6vydq6fh6l09coq80x96syka11tlcnh0p36kl6100c1114im7cvl2k5ejig0pg0y8fu9ofz3n7mfc769\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"installations_count\" : 5,\n \"created_at\" : \"2017-07-08T16:18:44-04:00\",\n \"description\" : \"The description of the app.\",\n \"client_id\" : \"\\\"Iv1.25b5d1e65ffc4022\\\"\",\n \"external_url\" : \"https://example.com\",\n \"updated_at\" : \"2017-07-08T16:18:44-04:00\",\n \"permissions\" : {\n \"deployments\" : \"write\",\n \"issues\" : \"read\"\n },\n \"html_url\" : \"https://github.com/apps/super-ci\",\n \"name\" : \"Probot Owners\",\n \"pem\" : \"\\\"-----BEGIN RSA PRIVATE KEY-----\\\\nMIIEogIBAAKCAQEArYxrNYD/iT5CZVpRJu4rBKmmze3PVmT/gCo2ATUvDvZTPTey\\\\nxcGJ3vvrJXazKk06pN05TN29o98jrYz4cengG3YGsXPNEpKsIrEl8NhbnxapEnM9\\\\nJCMRe0P5JcPsfZlX6hmiT7136GRWiGOUba2X9+HKh8QJVLG5rM007TBER9/z9mWm\\\\nrJuNh+m5l320oBQY/Qq3A7wzdEfZw8qm/mIN0FCeoXH1L6B8xXWaAYBwhTEh6SSn\\\\nZHlO1Xu1JWDmAvBCi0RO5aRSKM8q9QEkvvHP4yweAtK3N8+aAbZ7ovaDhyGz8r6r\\\\nzhU1b8Uo0Z2ysf503WqzQgIajr7Fry7/kUwpgQIDAQABAoIBADwJp80Ko1xHPZDy\\\\nfcCKBDfIuPvkmSW6KumbsLMaQv1aGdHDwwTGv3t0ixSay8CGlxMRtRDyZPib6SvQ\\\\n6OH/lpfpbMdW2ErkksgtoIKBVrDilfrcAvrNZu7NxRNbhCSvN8q0s4ICecjbbVQh\\\\nnueSdlA6vGXbW58BHMq68uRbHkP+k+mM9U0mDJ1HMch67wlg5GbayVRt63H7R2+r\\\\nVxcna7B80J/lCEjIYZznawgiTvp3MSanTglqAYi+m1EcSsP14bJIB9vgaxS79kTu\\\\noiSo93leJbBvuGo8QEiUqTwMw4tDksmkLsoqNKQ1q9P7LZ9DGcujtPy4EZsamSJT\\\\ny8OJt0ECgYEA2lxOxJsQk2kI325JgKFjo92mQeUObIvPfSNWUIZQDTjniOI6Gv63\\\\nGLWVFrZcvQBWjMEQraJA9xjPbblV8PtfO87MiJGLWCHFxmPz2dzoedN+2Coxom8m\\\\nV95CLz8QUShuao6u/RYcvUaZEoYs5bHcTmy5sBK80JyEmafJPtCQVxMCgYEAy3ar\\\\nZr3yv4xRPEPMat4rseswmuMooSaK3SKub19WFI5IAtB/e7qR1Rj9JhOGcZz+OQrl\\\\nT78O2OFYlgOIkJPvRMrPpK5V9lslc7tz1FSh3BZMRGq5jSyD7ETSOQ0c8T2O/s7v\\\\nbeEPbVbDe4mwvM24XByH0GnWveVxaDl51ABD65sCgYB3ZAspUkOA5egVCh8kNpnd\\\\nSd6SnuQBE3ySRlT2WEnCwP9Ph6oPgn+oAfiPX4xbRqkL8q/k0BdHQ4h+zNwhk7+h\\\\nWtPYRAP1Xxnc/F+jGjb+DVaIaKGU18MWPg7f+FI6nampl3Q0KvfxwX0GdNhtio8T\\\\nTj1E+SnFwh56SRQuxSh2gwKBgHKjlIO5NtNSflsUYFM+hyQiPiqnHzddfhSG+/3o\\\\nm5nNaSmczJesUYreH5San7/YEy2UxAugvP7aSY2MxB+iGsiJ9WD2kZzTUlDZJ7RV\\\\nUzWsoqBR+eZfVJ2FUWWvy8TpSG6trh4dFxImNtKejCR1TREpSiTV3Zb1dmahK9GV\\\\nrK9NAoGAbBxRLoC01xfxCTgt5BDiBcFVh4fp5yYKwavJPLzHSpuDOrrI9jDn1oKN\\\\nonq5sDU1i391zfQvdrbX4Ova48BN+B7p63FocP/MK5tyyBoT8zQEk2+vWDOw7H/Z\\\\nu5dTCPxTIsoIwUw1I+7yIxqJzLPFgR2gVBwY1ra/8iAqCj+zeBw=\\\\n-----END RSA PRIVATE KEY-----\\\\n\\\"\",\n \"webhook_secret\" : \"\\\"6fba8f2fc8a7e8f2cca5577eddd82ca7586b3b6b\\\"\",\n \"client_secret\" : \"\\\"1d4b2097ac622ba702d19de498f005747a8b21d3\\\"\",\n \"id\" : 37,\n \"events\" : [ \"label\", \"deployment\" ],\n \"slug\" : \"probot-owners\",\n \"node_id\" : \"MDExOkludGVncmF0aW9uMQ==\"\n },\n \"updated_at\" : \"2011-04-14T16:00:49Z\",\n \"html_url\" : \"https://web.example.mocklab.io/117340\",\n \"reactions\" : {\n \"confused\" : 3949229673829285535,\n \"-1\" : 2742112057548670783,\n \"+1\" : 1791444334985107718,\n \"total_count\" : 1017379044576155788,\n \"rocket\" : 35711335057945407,\n \"hooray\" : 8100235972418112348,\n \"eyes\" : 2001414184332567932,\n \"heart\" : 2864903321328955863,\n \"laugh\" : 6110968555591293754,\n \"url\" : \"https://web.example.mocklab.io/086391\"\n },\n \"id\" : 42,\n \"user\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"johnson.ebert\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"8aph4xtiu1qlc1igj9fd7bs9xhhei2w61x6so\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"node_id\" : \"5320\"\n }\n },\n \"repo\" : {\n \"name\" : \"Raisa D'Amore\",\n \"id\" : 8752896116559749673,\n \"url\" : \"https://web.example.mocklab.io/996966\"\n },\n \"created_at\" : \"2023-10-11T19:20:18.737Z\",\n \"id\" : \"yavr\",\n \"type\" : \"rd04pv09gtb8ofjd4gzkesgo631fwyfd7wgyqu6n5gth646ddag73t6qjgduoyktf82c46h50h92tfflrxk9veqyaxvzv1t861mqy\"\n}, {\n \"actor\" : {\n \"display_login\" : \"1txhzunkh0gxr4ctrizjjpy39okb723og10cdv1oxi8xunqex6vc9025ll5jc0i492alxsv89u5n2edqucopwk08xpeobdle5vvvs8tnr0e3114j1634cxbcft1wwrbjypthu8vxtrwxg8llb1\",\n \"avatar_url\" : \"https://s3.amazonaws.com/uifaces/faces/twitter/macxim/128.jpg\",\n \"id\" : 8331515151122840238,\n \"login\" : \"pn2z9o9h9xubqkz2fsv8sa790f8r69iuafefm77wkf32ucg\",\n \"gravatar_id\" : \"mt99\",\n \"url\" : \"https://web.example.mocklab.io/182523\"\n },\n \"public\" : true,\n \"org\" : {\n \"display_login\" : \"frh5fv699ilzz3389iv1s7myu25gph4az38q09dlmvyoxq9hh16zf5w9ya9r8\",\n \"avatar_url\" : \"https://s3.amazonaws.com/uifaces/faces/twitter/iamkarna/128.jpg\",\n \"id\" : 740123596549904909,\n \"login\" : \"08wzhegxtdb0eh783jaar40affhjfbnpjc807jg1wufiefiznt9s2gh322z6eq9qmpjzwsy0spfrtbkuqd5piooktw2678ygeip3jn5gikq3t970wctuay0xn2miaj0zm79pea9nt5h1cx5tf4ua0vi20f9\",\n \"gravatar_id\" : \"gm2m\",\n \"url\" : \"https://web.example.mocklab.io/281346\"\n },\n \"payload\" : {\n \"pages\" : [ {\n \"summary\" : \"Omnis est asperiores omnis. Et quae sit fugiat. Adipisci inventore aut ipsam. Hic et fuga et quaerat libero cupiditate. Porro est id dicta quae.\",\n \"html_url\" : \"https://web.example.mocklab.io/950199\",\n \"page_name\" : \"Will Gleichner\",\n \"action\" : \"awdd2ikhdhf9hy6mmyp8el78gq642znvutvoxbbro1s6jpa0zrk4uom2exna4dqola7poyqge25jesstc5fkxdfs939iems7xqy9kuzsnamrkwwm53jsngce2bxnsamzw1r7x48fky6m68mbqry9sk3mz06pxcx\",\n \"title\" : \"Qui quas ab perspiciatis a sequi.\",\n \"sha\" : \"srhmiyawswud0mdh60p6d6ctxgwyd5glz55d\"\n }, {\n \"summary\" : \"Iste voluptatem qui impedit aut. Et dolor suscipit. Quo corrupti nihil omnis ea sunt vel. Autem qui consequuntur enim exercitationem quo aut. Odit illum sunt ut sit ea laudantium dolor.\",\n \"html_url\" : \"https://web.example.mocklab.io/958026\",\n \"page_name\" : \"Timothy Considine\",\n \"action\" : \"97of96sshnfjxs6wrky8xhz57fyunyx9qoxuldq7ow8q875kvk76ne4ev7xhe71z23vx51ra8wm6zor957fvhj6dfrvbqi71znxpy77rl1lfawy0mo960j43e7xgw8bfgc8hb3dcj5q6o7c5\",\n \"title\" : \"Qui velit id iure pariatur.\",\n \"sha\" : \"07j123hdb6didfns8dh6r4pzxr6291xvbkrf2ksy2w4ojs4hgrdurboiivh131edhf8eyl941wpplhy8d846ovf3xw8hz9bqmv2cxuz2lnb5kv7g4k9evu1fm23e2786fhsb\"\n }, {\n \"summary\" : \"At non est expedita laboriosam modi non soluta. Id asperiores corrupti. Eius sunt unde aut consequatur doloribus quod qui. Eos quia recusandae.\",\n \"html_url\" : \"https://web.example.mocklab.io/886474\",\n \"page_name\" : \"Norman Thiel\",\n \"action\" : \"e6ta7onzqvdruij5349d2brakxq99lxm\",\n \"title\" : \"Odit rerum beatae praesentium beatae dolorem cupiditate dolor.\",\n \"sha\" : \"93pf7j43zkb51k26mjk9qqwlzsjefep2yh6tnwgde\"\n }, {\n \"summary\" : \"Quas iusto nobis tenetur vel unde ab. Necessitatibus atque dicta totam commodi. Accusamus ad et cumque error et. Sequi dolor quo recusandae nihil natus.\",\n \"html_url\" : \"https://web.example.mocklab.io/057363\",\n \"page_name\" : \"Jeffry Labadie\",\n \"action\" : \"dn3lwn5vkyi8rkswp0e9wnan6s1z9mb0ln18kuacy1lg4t9u0eahg2cykbjqh2afr8q6frm2bkvwdpiiuejqcy3fq0yjk7\",\n \"title\" : \"Quod et sed dignissimos et.\",\n \"sha\" : \"w9bvwfzlzl0lyoxxbygviwerr679b5r0idpa2bz8t2cv9ewpw9nmc69wdg1ty12dz\"\n }, {\n \"summary\" : \"Nihil aut voluptas qui molestiae. Officiis blanditiis ipsam. Incidunt aut doloribus mollitia natus.\",\n \"html_url\" : \"https://web.example.mocklab.io/317578\",\n \"page_name\" : \"Daina Bechtelar\",\n \"action\" : \"qpfmymt7044fju4at18fqpllxsc6rdxvytz5n2wvps981d28zf4vndxmxpyz\",\n \"title\" : \"Quo tenetur iusto esse illo harum eos neque.\",\n \"sha\" : \"ty7dubf1m9t34y53ye2yajo4n3gol9o6gjdwbp98hg53m6k34u360ghefi6ht24yr8qbqwea04i76d68bw4ghdmp2krtezl5wcalrjokcaj8p5j1w4kfy4zv\"\n }, {\n \"summary\" : \"Officiis non velit dicta perspiciatis maiores cupiditate sapiente. Neque reprehenderit et. Nihil ut quo amet ad enim veniam. Aut quos qui voluptatem est incidunt.\",\n \"html_url\" : \"https://web.example.mocklab.io/420615\",\n \"page_name\" : \"Luther Considine\",\n \"action\" : \"ggrad07hs5139qknam74u6obwxlk0zeckp035pv59q8zd8un46usn039hnsdi81mnqcbw8v6unceusiu8z05pxdf7gq56d7oglo2e10q7xhbbgw9gy005myhrfnjprp3c8w9gniznqrf0xretiy3yjhntwuvlx6bzmt7dv7vocq0lebuzzapkzih8gxallfwdjx8mxq\",\n \"title\" : \"Cum blanditiis qui maxime quia quia sit cumque.\",\n \"sha\" : \"ba336avv39bxl5jlvllfgi26zyi8adeldv0sv4q6uipapgwk3garyjpxyyl\"\n }, {\n \"summary\" : \"Error magnam facere. Quis molestias debitis consequatur. Et id sapiente adipisci voluptatem veniam.\",\n \"html_url\" : \"https://web.example.mocklab.io/387037\",\n \"page_name\" : \"Lisha Kunde III\",\n \"action\" : \"5es1v81fu82jry1vvfc536we26xn3kjtm79a60cq9dnspaivkip27g7kn2o4lvlr4xn48ajaekxr3\",\n \"title\" : \"Aut consectetur itaque ut neque.\",\n \"sha\" : \"twcg8e316gvakuwnqpz5m5zxjxmdk25amvgjoobmd9l5tvullm\"\n }, {\n \"summary\" : \"Et neque deserunt quaerat dolorem nihil corrupti odio. Doloremque omnis odit sunt possimus repellat quia. Quidem voluptatem quod reprehenderit vero sunt. Dicta minus doloribus laboriosam beatae atque \",\n \"html_url\" : \"https://web.example.mocklab.io/935130\",\n \"page_name\" : \"Beata Klein IV\",\n \"action\" : \"zsex0qzy5gdo6cfsb7wezivkacy4drhj8hpjuxfdu2zweoxn4hf5qcntqutbv192gylhzmcsrtb5fojzqmy7rdbitzbfxc5v93af9hrple1o17ru24bbices\",\n \"title\" : \"Porro labore voluptatem et.\",\n \"sha\" : \"46pun23k7nzp682g0\"\n } ],\n \"issue\" : {\n \"body_html\" : \"p4oifu0n4d71rhxsz998qx957hlt413ry1xgb5upm3otjhs9irlqa56rzmiw51lm441xdowc7oxcem34lt12boxr5nw1ngiuxevktvlrynj3tl\",\n \"body_text\" : \"b2hco1vevsdifz6odhbk3bpmqxvumi2e13ojal716wj4krj0512r\",\n \"assignees\" : [ {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Loren Mohr\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"wnl8x03pm60h2xjk1aoqu3jhopqvuszpir\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n }, {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Mr. Marge Schroeder\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"pf770v2kja2qp5yl2k8ae4dfwbc\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n }, {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Gerry Grady DDS\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"hu8pcbun0itgc6fixse08s4wtubkr3chv611r7l6gfkevfhiavknvzwbzni5p\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n }, {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Dudley Littel\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"be1hibjvp5tyjw8gaah6tl641sezazzj5rjzg5bl\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n }, {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Patrick Harris III\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"7cuxconh5yrjs137mkuod4c0oedesx93m5o0sbbxk1fgxeue4rcrmp6l5wvu8px4p7nzbs6uxe8692hut5ls4\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n }, {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Mr. Rolland Marks\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"fenpkpub671zrnoyd2xnlmx0mrhxd7mf6wqd81qnhouryczfa8mdjfaa5uc1q3nbi3eqkxlnsy81h9\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n }, {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Boyd Bins DVM\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"bhyphohbk3cqga8ubivl1i94z8fkuekjqq7arz35k5inpx9w7a50v4uxtcp6tuok7vvlv43n7kqbe4io7wq0iy76w68gd9a8ng0i2oa6nc\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n }, {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Bobby King\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"96oftr3m60fdhkghox6y85aqldyg03eo7dohv5tevvxexg8uhpn9eg3clreppdefszq3l4p8b6rk\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n } ],\n \"created_at\" : \"2011-04-22T13:33:48Z\",\n \"body\" : \"I'm having a problem with this.\",\n \"repository\" : {\n \"allow_forking\" : true,\n \"anonymous_access_enabled\" : false,\n \"is_template\" : true,\n \"stargazers_count\" : 80,\n \"pushed_at\" : \"2011-01-26T19:06:43Z\",\n \"language\" : \"atgu7qs3doo\",\n \"subscription_url\" : \"http://api.github.com/repos/octocat/Hello-World/subscription\",\n \"branches_url\" : \"http://api.github.com/repos/octocat/Hello-World/branches{/branch}\",\n \"allow_rebase_merge\" : true,\n \"issue_comment_url\" : \"http://api.github.com/repos/octocat/Hello-World/issues/comments{/number}\",\n \"labels_url\" : \"http://api.github.com/repos/octocat/Hello-World/labels{/name}\",\n \"permissions\" : {\n \"pull\" : false,\n \"maintain\" : false,\n \"admin\" : false,\n \"triage\" : false,\n \"push\" : false\n },\n \"subscribers_url\" : \"http://api.github.com/repos/octocat/Hello-World/subscribers\",\n \"releases_url\" : \"http://api.github.com/repos/octocat/Hello-World/releases{/id}\",\n \"svn_url\" : \"https://svn.github.com/octocat/Hello-World\",\n \"subscribers_count\" : 7847403473145448939,\n \"id\" : 42,\n \"master_branch\" : \"bz7mzal8isimq57pn2nxmelfq840qvbe68v0sx27r\",\n \"forks\" : 2737939674067589737,\n \"allow_merge_commit\" : true,\n \"archive_url\" : \"http://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref}\",\n \"git_refs_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/refs{/sha}\",\n \"forks_url\" : \"http://api.github.com/repos/octocat/Hello-World/forks\",\n \"visibility\" : \"gveqnqvxk89mr7720i0nqcu5qskj4340h818myh841z5xzxtfexdoiq6a92z13qdzwqu8l8djibaxrlu1metwlcwz6tfk0sze6w6e1mjj2i6p6tmmy7d950t9xxbmykqvpgnfxkwatjkhl7c7zfc0xtimdp\",\n \"statuses_url\" : \"http://api.github.com/repos/octocat/Hello-World/statuses/{sha}\",\n \"network_count\" : 1236798603704980386,\n \"ssh_url\" : \"git@github.com:octocat/Hello-World.git\",\n \"license\" : {\n \"html_url\" : \"https://web.example.mocklab.io/448451\",\n \"name\" : \"MIT License\",\n \"spdx_id\" : \"MIT\",\n \"key\" : \"mit\",\n \"url\" : \"https://api.github.com/licenses/mit\",\n \"node_id\" : \"MDc6TGljZW5zZW1pdA==\"\n },\n \"full_name\" : \"octocat/Hello-World\",\n \"size\" : 108,\n \"template_repository\" : {\n \"anonymous_access_enabled\" : true,\n \"is_template\" : true,\n \"stargazers_count\" : 5878801413289476485,\n \"pushed_at\" : \"ljfdyqzyeurs6e15t7lf7zrkdbgcasgb8l73ljc3x7wyxof95eafbnarod15tpvqzm6az33kmrx94vsf8d1d4wtrn88wudr8zx9dtufas3bpo10eumdp3y3fei125gra4s7vasw08\",\n \"language\" : \"q2i98bom3qhp4wp3zr0i3fg6ckh3lxg9lgzzxipm33mjzav6rfozq33pyklyi3w5zybs\",\n \"subscription_url\" : \"https://web.example.mocklab.io/147535\",\n \"branches_url\" : \"https://web.example.mocklab.io/412866\",\n \"allow_rebase_merge\" : true,\n \"issue_comment_url\" : \"https://web.example.mocklab.io/758466\",\n \"labels_url\" : \"https://web.example.mocklab.io/845208\",\n \"permissions\" : { },\n \"subscribers_url\" : \"https://web.example.mocklab.io/319546\",\n \"releases_url\" : \"https://web.example.mocklab.io/639630\",\n \"svn_url\" : \"https://web.example.mocklab.io/899800\",\n \"subscribers_count\" : 826191779462908108,\n \"id\" : 4096602389527806119,\n \"allow_merge_commit\" : false,\n \"archive_url\" : \"https://web.example.mocklab.io/389399\",\n \"git_refs_url\" : \"https://web.example.mocklab.io/002629\",\n \"forks_url\" : \"https://web.example.mocklab.io/213909\",\n \"visibility\" : \"b4a057y79290f14bcisz0ejqpd3mxpw5hz\",\n \"statuses_url\" : \"https://web.example.mocklab.io/436557\",\n \"network_count\" : 3702013226731903009,\n \"ssh_url\" : \"https://web.example.mocklab.io/764023\",\n \"full_name\" : \"Winford Hahn\",\n \"size\" : 5466035800764835755,\n \"languages_url\" : \"https://web.example.mocklab.io/173326\",\n \"clone_url\" : \"https://web.example.mocklab.io/537997\",\n \"collaborators_url\" : \"https://web.example.mocklab.io/616036\",\n \"html_url\" : \"https://web.example.mocklab.io/406123\",\n \"name\" : \"Jordan Bahringer\",\n \"pulls_url\" : \"https://web.example.mocklab.io/239863\",\n \"default_branch\" : \"vbm0q0ttxkf7nkdj9xsqq937tzcuiu5860nlv0u6qh357utqs4rkpzocwl7mgwnnrri07d1lwm298ai1g83cosevhxz6hbig34rbj3q8hy0yygm56gjqyzdr4u9ew1s7mgzejpren5adk0ed8gn8getzl58p\",\n \"hooks_url\" : \"https://web.example.mocklab.io/468157\",\n \"trees_url\" : \"https://web.example.mocklab.io/592083\",\n \"tags_url\" : \"https://web.example.mocklab.io/587824\",\n \"contributors_url\" : \"https://web.example.mocklab.io/529190\",\n \"private\" : false,\n \"has_downloads\" : true,\n \"notifications_url\" : \"https://web.example.mocklab.io/258482\",\n \"open_issues_count\" : 3412832316029994758,\n \"created_at\" : \"hp75e8bimg7vl8a3sg23aq6jbkwtlcg3957k3qg442hl66ubay85huh2r9o9a148kf5hq234hnr1tekaocjxwqowqjq203952eu2i0z5d2532u0futzky76tuspa2eqz6qmfvw4n9rzrahru5uo1v7vd772i8mjt2w1651f7tjdg7b47d6uuvrwly6amerpvjkbawhb\",\n \"description\" : \"Non vel in excepturi a non explicabo sed. Quis harum eum repudiandae rem quos. Tenetur in molestiae et. Aspernatur debitis pariatur enim et explicabo.\",\n \"deployments_url\" : \"https://web.example.mocklab.io/317096\",\n \"keys_url\" : \"https://web.example.mocklab.io/822213\",\n \"has_projects\" : true,\n \"archived\" : true,\n \"has_wiki\" : true,\n \"updated_at\" : \"2023-02-21T09:17:58.742575Z\",\n \"comments_url\" : \"https://web.example.mocklab.io/075253\",\n \"stargazers_url\" : \"https://web.example.mocklab.io/255808\",\n \"disabled\" : true,\n \"delete_branch_on_merge\" : true,\n \"git_url\" : \"https://web.example.mocklab.io/589200\",\n \"has_pages\" : true,\n \"owner\" : { },\n \"allow_squash_merge\" : true,\n \"commits_url\" : \"https://web.example.mocklab.io/874379\",\n \"compare_url\" : \"https://web.example.mocklab.io/631871\",\n \"git_commits_url\" : \"https://web.example.mocklab.io/690374\",\n \"topics\" : [ \"veqexempnvs0q4o1j3134eypl56ks41wqun0i02qdvj3xwaoef9prw4c5am201v6u6mrcf2npp62d71xh5c9xx7kiyovq6835ze5zqi04xfpnserchf3og6r8iamrkxnho9z5f3epq3qtb4vmoaaybaxux5l0ptmyiepb550l0fblj8vwutvm5pg5wu67iptdsgua\", \"avqw4y6kwlhzjtzv3x92fq2qbjfdrak2xjs3jvns305o9uy6zy4y8a4rcp12tkhtn6m9531har1ejujo8secc66jza6dliq8\", \"2vqcobw6y9d1ixfgsudctjnwilstpdx7kwk65b1u5lhdaw8b3z1sabm0e29oqdzjzivs2sm\", \"213bf1yb97rldysc2e5vm9u0vw0nyw7so1n5e95vbii48kvxj6wuhojbvrcs0b0tay6fetqq2qp3ut2na403ofhshyvej6l8fqtf4ep1sjsim67uu4mlmwqi1fcrygwbnnnnr06crd82pq4xn2xkwvrecnk\", \"5oi5b3234zwlar63flhm091k7a4orzuzxepo9tchr9vuc8ys1imaaw4kxatyms0z8skgd657u8mh6le08y8u6dd45u8zz7w5knmc4nbggpu\", \"3jlocgf5ereldnneg5hmeier1k4r9anu17kyr4xlyszmq8t9vs4h2da7wi05lisqy08eot3r2ki2xozrf3yr9ybkqwg8tijoyxawawx869c1rtptjknxb36utm4o5yuz5ns8e8qzhs43v1s3t4s8tfycen1hirzoji4iimvs9dq4tk08ofziib9ap\", \"3t1tit5hm55bxl1vio7zeueooprvbby1gqb2ab0yjeguoqp0kt5da\", \"hfkkv97qlzrp4zwk3ppqraoolf3lb13a5hx6ng4jpgbg078k7q4bd9dv22dx63snfiybeks\" ],\n \"blobs_url\" : \"https://web.example.mocklab.io/660921\",\n \"git_tags_url\" : \"https://web.example.mocklab.io/375340\",\n \"merges_url\" : \"https://web.example.mocklab.io/960179\",\n \"downloads_url\" : \"https://web.example.mocklab.io/317425\",\n \"has_issues\" : false,\n \"url\" : \"https://web.example.mocklab.io/012747\",\n \"contents_url\" : \"https://web.example.mocklab.io/235665\",\n \"mirror_url\" : \"https://web.example.mocklab.io/717486\",\n \"milestones_url\" : \"https://web.example.mocklab.io/484523\",\n \"teams_url\" : \"https://web.example.mocklab.io/576907\",\n \"fork\" : true,\n \"issues_url\" : \"https://web.example.mocklab.io/344140\",\n \"events_url\" : \"https://web.example.mocklab.io/106412\",\n \"issue_events_url\" : \"https://web.example.mocklab.io/755679\",\n \"assignees_url\" : \"https://web.example.mocklab.io/968112\",\n \"watchers_count\" : 4736022131927022278,\n \"forks_count\" : 4341837032185038654,\n \"homepage\" : \"y5bn44rmrwyj88xyezwmx734ff0kxxz7w80y8aauxq5\",\n \"node_id\" : \"y1ku\"\n },\n \"languages_url\" : \"http://api.github.com/repos/octocat/Hello-World/languages\",\n \"clone_url\" : \"https://github.com/octocat/Hello-World.git\",\n \"collaborators_url\" : \"http://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator}\",\n \"html_url\" : \"https://github.com/octocat/Hello-World\",\n \"name\" : \"Team Environment\",\n \"pulls_url\" : \"http://api.github.com/repos/octocat/Hello-World/pulls{/number}\",\n \"default_branch\" : \"master\",\n \"hooks_url\" : \"http://api.github.com/repos/octocat/Hello-World/hooks\",\n \"trees_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/trees{/sha}\",\n \"tags_url\" : \"http://api.github.com/repos/octocat/Hello-World/tags\",\n \"contributors_url\" : \"http://api.github.com/repos/octocat/Hello-World/contributors\",\n \"private\" : false,\n \"has_downloads\" : true,\n \"notifications_url\" : \"http://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating}\",\n \"open_issues_count\" : 0,\n \"created_at\" : \"2011-01-26T19:01:12Z\",\n \"description\" : \"This your first repo!\",\n \"watchers\" : 3500008919013580292,\n \"deployments_url\" : \"http://api.github.com/repos/octocat/Hello-World/deployments\",\n \"keys_url\" : \"http://api.github.com/repos/octocat/Hello-World/keys{/key_id}\",\n \"has_projects\" : true,\n \"archived\" : true,\n \"has_wiki\" : true,\n \"updated_at\" : \"2011-01-26T19:14:43Z\",\n \"comments_url\" : \"http://api.github.com/repos/octocat/Hello-World/comments{/number}\",\n \"stargazers_url\" : \"http://api.github.com/repos/octocat/Hello-World/stargazers\",\n \"disabled\" : false,\n \"delete_branch_on_merge\" : false,\n \"git_url\" : \"git:github.com/octocat/Hello-World.git\",\n \"has_pages\" : true,\n \"owner\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Val Gorczany Jr.\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"wrsmdgc53zcfqqcbv003d819hr558jewvneqavy6uotmrq5ua5hlsa2zrbc2lu7ws447htyg\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"allow_squash_merge\" : true,\n \"commits_url\" : \"http://api.github.com/repos/octocat/Hello-World/commits{/sha}\",\n \"compare_url\" : \"http://api.github.com/repos/octocat/Hello-World/compare/{base}...{head}\",\n \"git_commits_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/commits{/sha}\",\n \"topics\" : [ \"76fmoykjazwi2a36frghod33ykun8ipd9spqfg47qt3h73suv1j5spt0gh1r5p365uqbhzu293faldp4fwhw6fo5e6na5jvzeb8l5ume\", \"1xnhdojukzzu6uviy6g5efutm6l5tgqun7r0qxybgcocb1paouczue80fev09f05nc00zb6h0szchdszco7c9j61fn0bd56lnyavk9uzkbb7r6ul9nk95rjpg5cr3qwji1go\" ],\n \"blobs_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/blobs{/sha}\",\n \"git_tags_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/tags{/sha}\",\n \"merges_url\" : \"http://api.github.com/repos/octocat/Hello-World/merges\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:42Z\\\"\",\n \"downloads_url\" : \"http://api.github.com/repos/octocat/Hello-World/downloads\",\n \"has_issues\" : true,\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World\",\n \"contents_url\" : \"http://api.github.com/repos/octocat/Hello-World/contents/{+path}\",\n \"mirror_url\" : \"git:git.example.com/octocat/Hello-World\",\n \"milestones_url\" : \"http://api.github.com/repos/octocat/Hello-World/milestones{/number}\",\n \"teams_url\" : \"http://api.github.com/repos/octocat/Hello-World/teams\",\n \"fork\" : false,\n \"issues_url\" : \"http://api.github.com/repos/octocat/Hello-World/issues{/number}\",\n \"events_url\" : \"http://api.github.com/repos/octocat/Hello-World/events\",\n \"issue_events_url\" : \"http://api.github.com/repos/octocat/Hello-World/issues/events{/number}\",\n \"organization\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Efrain Halvorson\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"96ee1nw9ko0gujrp05uid7glyfqq492v1x69dezm8\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"assignees_url\" : \"http://api.github.com/repos/octocat/Hello-World/assignees{/user}\",\n \"open_issues\" : 3903115981968557338,\n \"watchers_count\" : 80,\n \"forks_count\" : 9,\n \"homepage\" : \"https://github.com\",\n \"node_id\" : \"MDEwOlJlcG9zaXRvcnkxMjk2MjY5\"\n },\n \"title\" : \"Found a bug\",\n \"author_association\" : \"OWNER\",\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347/labels{/name}\",\n \"number\" : 1347,\n \"performed_via_github_app\" : {\n \"owner\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Darrin Sipes\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"k8biq724vrc8ipwfz2kqj4j3wq7uiwo3tpppiofw93s4deu3c1v1xhx0kcailpmjmqk8728aof\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"installations_count\" : 5,\n \"created_at\" : \"2017-07-08T16:18:44-04:00\",\n \"description\" : \"The description of the app.\",\n \"client_id\" : \"\\\"Iv1.25b5d1e65ffc4022\\\"\",\n \"external_url\" : \"https://example.com\",\n \"updated_at\" : \"2017-07-08T16:18:44-04:00\",\n \"permissions\" : {\n \"deployments\" : \"write\",\n \"issues\" : \"read\"\n },\n \"html_url\" : \"https://github.com/apps/super-ci\",\n \"name\" : \"Probot Owners\",\n \"pem\" : \"\\\"-----BEGIN RSA PRIVATE KEY-----\\\\nMIIEogIBAAKCAQEArYxrNYD/iT5CZVpRJu4rBKmmze3PVmT/gCo2ATUvDvZTPTey\\\\nxcGJ3vvrJXazKk06pN05TN29o98jrYz4cengG3YGsXPNEpKsIrEl8NhbnxapEnM9\\\\nJCMRe0P5JcPsfZlX6hmiT7136GRWiGOUba2X9+HKh8QJVLG5rM007TBER9/z9mWm\\\\nrJuNh+m5l320oBQY/Qq3A7wzdEfZw8qm/mIN0FCeoXH1L6B8xXWaAYBwhTEh6SSn\\\\nZHlO1Xu1JWDmAvBCi0RO5aRSKM8q9QEkvvHP4yweAtK3N8+aAbZ7ovaDhyGz8r6r\\\\nzhU1b8Uo0Z2ysf503WqzQgIajr7Fry7/kUwpgQIDAQABAoIBADwJp80Ko1xHPZDy\\\\nfcCKBDfIuPvkmSW6KumbsLMaQv1aGdHDwwTGv3t0ixSay8CGlxMRtRDyZPib6SvQ\\\\n6OH/lpfpbMdW2ErkksgtoIKBVrDilfrcAvrNZu7NxRNbhCSvN8q0s4ICecjbbVQh\\\\nnueSdlA6vGXbW58BHMq68uRbHkP+k+mM9U0mDJ1HMch67wlg5GbayVRt63H7R2+r\\\\nVxcna7B80J/lCEjIYZznawgiTvp3MSanTglqAYi+m1EcSsP14bJIB9vgaxS79kTu\\\\noiSo93leJbBvuGo8QEiUqTwMw4tDksmkLsoqNKQ1q9P7LZ9DGcujtPy4EZsamSJT\\\\ny8OJt0ECgYEA2lxOxJsQk2kI325JgKFjo92mQeUObIvPfSNWUIZQDTjniOI6Gv63\\\\nGLWVFrZcvQBWjMEQraJA9xjPbblV8PtfO87MiJGLWCHFxmPz2dzoedN+2Coxom8m\\\\nV95CLz8QUShuao6u/RYcvUaZEoYs5bHcTmy5sBK80JyEmafJPtCQVxMCgYEAy3ar\\\\nZr3yv4xRPEPMat4rseswmuMooSaK3SKub19WFI5IAtB/e7qR1Rj9JhOGcZz+OQrl\\\\nT78O2OFYlgOIkJPvRMrPpK5V9lslc7tz1FSh3BZMRGq5jSyD7ETSOQ0c8T2O/s7v\\\\nbeEPbVbDe4mwvM24XByH0GnWveVxaDl51ABD65sCgYB3ZAspUkOA5egVCh8kNpnd\\\\nSd6SnuQBE3ySRlT2WEnCwP9Ph6oPgn+oAfiPX4xbRqkL8q/k0BdHQ4h+zNwhk7+h\\\\nWtPYRAP1Xxnc/F+jGjb+DVaIaKGU18MWPg7f+FI6nampl3Q0KvfxwX0GdNhtio8T\\\\nTj1E+SnFwh56SRQuxSh2gwKBgHKjlIO5NtNSflsUYFM+hyQiPiqnHzddfhSG+/3o\\\\nm5nNaSmczJesUYreH5San7/YEy2UxAugvP7aSY2MxB+iGsiJ9WD2kZzTUlDZJ7RV\\\\nUzWsoqBR+eZfVJ2FUWWvy8TpSG6trh4dFxImNtKejCR1TREpSiTV3Zb1dmahK9GV\\\\nrK9NAoGAbBxRLoC01xfxCTgt5BDiBcFVh4fp5yYKwavJPLzHSpuDOrrI9jDn1oKN\\\\nonq5sDU1i391zfQvdrbX4Ova48BN+B7p63FocP/MK5tyyBoT8zQEk2+vWDOw7H/Z\\\\nu5dTCPxTIsoIwUw1I+7yIxqJzLPFgR2gVBwY1ra/8iAqCj+zeBw=\\\\n-----END RSA PRIVATE KEY-----\\\\n\\\"\",\n \"webhook_secret\" : \"\\\"6fba8f2fc8a7e8f2cca5577eddd82ca7586b3b6b\\\"\",\n \"client_secret\" : \"\\\"1d4b2097ac622ba702d19de498f005747a8b21d3\\\"\",\n \"id\" : 37,\n \"events\" : [ \"label\", \"deployment\" ],\n \"slug\" : \"probot-owners\",\n \"node_id\" : \"MDExOkludGVncmF0aW9uMQ==\"\n },\n \"updated_at\" : \"2011-04-22T13:33:48Z\",\n \"comments_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347/comments\",\n \"active_lock_reason\" : \"too heated\",\n \"id\" : 1,\n \"repository_url\" : \"https://api.github.com/repos/octocat/Hello-World\",\n \"state\" : \"open\",\n \"locked\" : true,\n \"timeline_url\" : \"https://web.example.mocklab.io/698727\",\n \"pull_request\" : {\n \"patch_url\" : \"https://web.example.mocklab.io/330092\",\n \"html_url\" : \"https://web.example.mocklab.io/529170\",\n \"merged_at\" : \"2022-09-03T12:37:01.744Z\",\n \"diff_url\" : \"https://web.example.mocklab.io/328832\",\n \"url\" : \"https://web.example.mocklab.io/252067\"\n },\n \"closed_at\" : \"2023-09-04T04:15:52.745Z\",\n \"comments\" : 0,\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347\",\n \"labels\" : [ {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n }, {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n } ],\n \"milestone\" : {\n \"creator\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Keith Bogisich\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"mcdrjn5cxb185v0cm1cpv0bydn64xs9e7pmmwxk36l0tyly25pbnk02jzketwqvm21t992evdqi74ftq4aid2ycz8mjzitsbyf5u15g\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"closed_at\" : \"2013-02-12T13:22:01Z\",\n \"created_at\" : \"2011-04-10T20:09:31Z\",\n \"description\" : \"Tracking milestone for version 1.0\",\n \"closed_issues\" : 8,\n \"title\" : \"v1.0\",\n \"due_on\" : \"2012-10-09T23:39:01Z\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones/1\",\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones/1/labels\",\n \"number\" : 42,\n \"updated_at\" : \"2014-03-03T18:58:10Z\",\n \"html_url\" : \"https://github.com/octocat/Hello-World/milestones/v1.0\",\n \"id\" : 1002604,\n \"state\" : \"open\",\n \"open_issues\" : 4,\n \"node_id\" : \"MDk6TWlsZXN0b25lMTAwMjYwNA==\"\n },\n \"events_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347/events\",\n \"html_url\" : \"https://github.com/octocat/Hello-World/issues/1347\",\n \"assignee\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Eloise Wiza PhD\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"8rzuypcoyxkk5b35y8iivxfmjg8c5oaduvuw53q2w7xofd8ft1mrnfx0tun1s9o2ursh5o5hrq39c60o6tlhlzmtfv2h3vprqgv97jo2wzfsnvpjvbpkgz52dso6js7hc13wvikk4hgk8l8omsk4ut7yihtxz7cm6uq1wn5a11avt6dz9b10b3oswhhls8pke06\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"user\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"philip.gutmann\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"f8jcbpl1yhn5mvgq1u42a4tyqc21380l1qgfxrddbfjgo0hba1gace4udakd4am66hxwh6j0h9gr1u5lohtnyvuuiy0cya862wwl2db8vokapancj7wd3u1p6hz5gfchl7oa81\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"node_id\" : \"MDU6SXNzdWUx\"\n },\n \"action\" : \"6pnu9dtpipv4ja1bcy2ce8xnqxaqtvq4jxn0ci8zvv452wdtrjffuo2b4smm4pn4l86hzi4\",\n \"comment\" : {\n \"issue_url\" : \"https://web.example.mocklab.io/523959\",\n \"body_html\" : \"j36ptw5y625ca73zfb7wb5i9u77wobgnvj49jx7c7mi7c5muefo0bctd1loa821vt0jze1az5v9dpm2zwdshz1ssoyll2f2\",\n \"body_text\" : \"p33jkvdkibajteblxgaajsiymaocqw90ogvxstahafvu34slbmzm8rto9xzb6ikktbncaprypthz4zhv9aa2tumk6udf7qab16pxf19pg8fd6t0obpu8rbshgs5hyk2hvp4yn0q8examrcs6uubtuxhvbp00igqc\",\n \"created_at\" : \"2011-04-14T16:00:49Z\",\n \"body\" : \"What version of Safari were you using when you observed this bug?\",\n \"url\" : \"https://api.github.com/repositories/42/issues/comments/1\",\n \"author_association\" : \"OWNER\",\n \"performed_via_github_app\" : {\n \"owner\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Danuta Waters Jr.\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"9kma4tnaiffxcdsfrcgqmwt1ujnl4znyhjhlw4yb460mob8nq9vbgghvee6w0ialz4d41qs7qt7b6w48w3hllsmzbqu1pisi8r122fl07wg161834tl8wik6hjxw1h8v7wiwl2md4pv3welifbkxbkwa1e\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"installations_count\" : 5,\n \"created_at\" : \"2017-07-08T16:18:44-04:00\",\n \"description\" : \"The description of the app.\",\n \"client_id\" : \"\\\"Iv1.25b5d1e65ffc4022\\\"\",\n \"external_url\" : \"https://example.com\",\n \"updated_at\" : \"2017-07-08T16:18:44-04:00\",\n \"permissions\" : {\n \"deployments\" : \"write\",\n \"issues\" : \"read\"\n },\n \"html_url\" : \"https://github.com/apps/super-ci\",\n \"name\" : \"Probot Owners\",\n \"pem\" : \"\\\"-----BEGIN RSA PRIVATE KEY-----\\\\nMIIEogIBAAKCAQEArYxrNYD/iT5CZVpRJu4rBKmmze3PVmT/gCo2ATUvDvZTPTey\\\\nxcGJ3vvrJXazKk06pN05TN29o98jrYz4cengG3YGsXPNEpKsIrEl8NhbnxapEnM9\\\\nJCMRe0P5JcPsfZlX6hmiT7136GRWiGOUba2X9+HKh8QJVLG5rM007TBER9/z9mWm\\\\nrJuNh+m5l320oBQY/Qq3A7wzdEfZw8qm/mIN0FCeoXH1L6B8xXWaAYBwhTEh6SSn\\\\nZHlO1Xu1JWDmAvBCi0RO5aRSKM8q9QEkvvHP4yweAtK3N8+aAbZ7ovaDhyGz8r6r\\\\nzhU1b8Uo0Z2ysf503WqzQgIajr7Fry7/kUwpgQIDAQABAoIBADwJp80Ko1xHPZDy\\\\nfcCKBDfIuPvkmSW6KumbsLMaQv1aGdHDwwTGv3t0ixSay8CGlxMRtRDyZPib6SvQ\\\\n6OH/lpfpbMdW2ErkksgtoIKBVrDilfrcAvrNZu7NxRNbhCSvN8q0s4ICecjbbVQh\\\\nnueSdlA6vGXbW58BHMq68uRbHkP+k+mM9U0mDJ1HMch67wlg5GbayVRt63H7R2+r\\\\nVxcna7B80J/lCEjIYZznawgiTvp3MSanTglqAYi+m1EcSsP14bJIB9vgaxS79kTu\\\\noiSo93leJbBvuGo8QEiUqTwMw4tDksmkLsoqNKQ1q9P7LZ9DGcujtPy4EZsamSJT\\\\ny8OJt0ECgYEA2lxOxJsQk2kI325JgKFjo92mQeUObIvPfSNWUIZQDTjniOI6Gv63\\\\nGLWVFrZcvQBWjMEQraJA9xjPbblV8PtfO87MiJGLWCHFxmPz2dzoedN+2Coxom8m\\\\nV95CLz8QUShuao6u/RYcvUaZEoYs5bHcTmy5sBK80JyEmafJPtCQVxMCgYEAy3ar\\\\nZr3yv4xRPEPMat4rseswmuMooSaK3SKub19WFI5IAtB/e7qR1Rj9JhOGcZz+OQrl\\\\nT78O2OFYlgOIkJPvRMrPpK5V9lslc7tz1FSh3BZMRGq5jSyD7ETSOQ0c8T2O/s7v\\\\nbeEPbVbDe4mwvM24XByH0GnWveVxaDl51ABD65sCgYB3ZAspUkOA5egVCh8kNpnd\\\\nSd6SnuQBE3ySRlT2WEnCwP9Ph6oPgn+oAfiPX4xbRqkL8q/k0BdHQ4h+zNwhk7+h\\\\nWtPYRAP1Xxnc/F+jGjb+DVaIaKGU18MWPg7f+FI6nampl3Q0KvfxwX0GdNhtio8T\\\\nTj1E+SnFwh56SRQuxSh2gwKBgHKjlIO5NtNSflsUYFM+hyQiPiqnHzddfhSG+/3o\\\\nm5nNaSmczJesUYreH5San7/YEy2UxAugvP7aSY2MxB+iGsiJ9WD2kZzTUlDZJ7RV\\\\nUzWsoqBR+eZfVJ2FUWWvy8TpSG6trh4dFxImNtKejCR1TREpSiTV3Zb1dmahK9GV\\\\nrK9NAoGAbBxRLoC01xfxCTgt5BDiBcFVh4fp5yYKwavJPLzHSpuDOrrI9jDn1oKN\\\\nonq5sDU1i391zfQvdrbX4Ova48BN+B7p63FocP/MK5tyyBoT8zQEk2+vWDOw7H/Z\\\\nu5dTCPxTIsoIwUw1I+7yIxqJzLPFgR2gVBwY1ra/8iAqCj+zeBw=\\\\n-----END RSA PRIVATE KEY-----\\\\n\\\"\",\n \"webhook_secret\" : \"\\\"6fba8f2fc8a7e8f2cca5577eddd82ca7586b3b6b\\\"\",\n \"client_secret\" : \"\\\"1d4b2097ac622ba702d19de498f005747a8b21d3\\\"\",\n \"id\" : 37,\n \"events\" : [ \"label\", \"deployment\" ],\n \"slug\" : \"probot-owners\",\n \"node_id\" : \"MDExOkludGVncmF0aW9uMQ==\"\n },\n \"updated_at\" : \"2011-04-14T16:00:49Z\",\n \"html_url\" : \"https://web.example.mocklab.io/249873\",\n \"reactions\" : {\n \"confused\" : 564148359957496061,\n \"-1\" : 3173753878802289966,\n \"+1\" : 7719272778648679583,\n \"total_count\" : 2344917168074367271,\n \"rocket\" : 3737613094125141363,\n \"hooray\" : 3080717992073083667,\n \"eyes\" : 1208149829389635707,\n \"heart\" : 4729816211826689104,\n \"laugh\" : 3065120983723805736,\n \"url\" : \"https://web.example.mocklab.io/311995\"\n },\n \"id\" : 42,\n \"user\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"teodora.jacobson\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"bpjrs8i3mj2eo3y3qa91q3jf7teav\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"node_id\" : \"lqrf\"\n }\n },\n \"repo\" : {\n \"name\" : \"Erika Stiedemann\",\n \"id\" : 7142210998975214375,\n \"url\" : \"https://web.example.mocklab.io/427578\"\n },\n \"created_at\" : \"2023-10-17T06:05:14.746Z\",\n \"id\" : \"nc7m\",\n \"type\" : \"sx7m32svzzjks3m31qu2q7f1n165etag5mf1mk4djf3omc7eqetp9b5je64yjxz08fvfpjj9rh587fhloto5b2rvg6bxo9q6d9p23cb8jh9ythfbnf2h8h06v3u45dw620kj92timv\"\n}, {\n \"actor\" : {\n \"display_login\" : \"z39c6jdwcrt1qm7zeqd13gbhkynvrbfwn9s7w51dzzqmvg3cee17iz32nqrqp0nsonny\",\n \"avatar_url\" : \"https://s3.amazonaws.com/uifaces/faces/twitter/lu4sh1i/128.jpg\",\n \"id\" : 5834116160737253311,\n \"login\" : \"89l6m5vctccn5w8ovxftxose6wb52hyu28ni45hiu48srmyx870a6tbct710d1gdfi1pkvp3ar26gr5jp9x09y2hgwzmki4z5pgwsx10uqhc7\",\n \"gravatar_id\" : \"jb4z\",\n \"url\" : \"https://web.example.mocklab.io/922697\"\n },\n \"public\" : false,\n \"org\" : {\n \"display_login\" : \"xzqnx49c56yc6clb0zlddt84ofmpi3z0warp8hajngvyk4xwkn1oii0z9afisktiqrw3bc3j0xsmvslvbmtbowv2eqcz0354cm7b623x21ydzf7eyyt\",\n \"avatar_url\" : \"https://s3.amazonaws.com/uifaces/faces/twitter/brenton_clarke/128.jpg\",\n \"id\" : 1268046728030912246,\n \"login\" : \"e1g7ftbkvodrw3m5h1q8kcaaswwn8mj3sp6n9noeo2ztcbmd09f55cau5c7qiko2pjk5atwflt974k9ndi3aftyroxaz0sj9ajmmtum9byc7mcw5jfti8iqdxwv4k5fqj6sz3qaqe8k6g46q3to6u506ep3ed9owb\",\n \"gravatar_id\" : \"wnh8\",\n \"url\" : \"https://web.example.mocklab.io/381744\"\n },\n \"payload\" : {\n \"pages\" : [ {\n \"summary\" : \"Voluptates voluptatibus laboriosam rerum repellat rem ad. Quis eaque beatae iure eum. Soluta vel eum nihil explicabo sapiente voluptas. Iure accusamus at sint minima aliquam deserunt. Similique ipsum \",\n \"html_url\" : \"https://web.example.mocklab.io/453189\",\n \"page_name\" : \"Natasha Graham PhD\",\n \"action\" : \"tdvglylvdx9tf1gv11c1f1ijd5t0ydsz6s4z3l8vz72fytr5oge0t1xd1j5n3r259g4mre14a3yj3gou8qx1r4c\",\n \"title\" : \"Iusto aut quod placeat iste qui.\",\n \"sha\" : \"pe7ix9sdcn2b3uhc36xr37ym5esdybdf9fm5obv58j7f7dxunuwh4wulz28fjpu0mbnuqa23xsgcuavr50sef2qj05iu666q7g6kayrbf7xddp3b6lhe7k52o0i5zrf1d9pcym9p7ntbtthadbaqzg7ssaotic4tevy14b498sh9gr18rtgioogbs87le89bhpegqq\"\n }, {\n \"summary\" : \"Velit adipisci voluptatem ad beatae. Nobis et vel qui dicta architecto sit. Adipisci illo quod temporibus.\",\n \"html_url\" : \"https://web.example.mocklab.io/707596\",\n \"page_name\" : \"Timothy Smitham\",\n \"action\" : \"hwuc6dpmtg1fy7a54agu18wdr5nmbutbops6ugsce\",\n \"title\" : \"Ad amet natus.\",\n \"sha\" : \"gou50n66eg0aocbyhap9n8bx3aim2uqkavdel4dw8akhcixe9mg0fiq82bae\"\n } ],\n \"issue\" : {\n \"body_html\" : \"o3g4zamj3fvs154d1hyt71o8izuusmgmyvyzeu0iro\",\n \"body_text\" : \"vp9tjtqxmktvoe6mpm0jvsios8985082vhfj6v9jk9h49phraq2qag7n9tk2wdao6dmsf2kk2gcpsas4s0bd6b1bhrja0jvxoyvq5ejr0hgxi5cpzp0gw6lnis2i9lnqxo4fx4utmgbravc1roj7i83b9ha8mfh\",\n \"assignees\" : [ {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Malcolm Ankunding\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"u8o1z1u876dckq9ne7xnnb5vk5gsmhkphzmevsnywwdw18rsoemogfh5awc14tnyex9gzw2thw2yhnxfluc0k25julzpt8ksw8sbf4ruwscmp0blm\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n }, {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Brigitte Runte\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"n1ufda1jd1mvsulrdx89zjkhjw21ah00j6tjna48bey3rb6yib5fhsfe91kyyy\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n }, {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Dr. Arline Hyatt\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"nop6z7bt5l5wk89mipvewx4yzn6igut3q6i1dd16z4ay7s094rljnkjopg\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n }, {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Rudy Will I\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"ssjlcs3vgrpm0hz1cfr8d3\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n }, {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Larue Monahan\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"f3xk7hvft0dtp95rb9lnafnqcj9hif0litfm12w902ikmorrz5q5tl1gkv52pvn1wdzyag89u425g5kg4y2aqno8izuzrikv5vpqni\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n }, {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Mrs. Rickey Stehr\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"9yk0dvvdbs7rxi04jn6nyjn7r8ybe2smdldnuqztr5kk1saz4l83xdjmxx2emfg1k3lsk1os1awxnex3dz6juhqixf8abzkl97zgiralvr8h\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n }, {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Broderick Abernathy DDS\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"ix4houa95vvcjhagc3pdkfp0t4w2ws5in2e2ldvdel3f1o5a4u2sfu\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n }, {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Tom Senger\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"g2kpmkbzwxh7z8sb54ydfnksvn8uhz8kq0r65jqph0t3hzcfamu\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n } ],\n \"created_at\" : \"2011-04-22T13:33:48Z\",\n \"body\" : \"I'm having a problem with this.\",\n \"repository\" : {\n \"allow_forking\" : false,\n \"anonymous_access_enabled\" : false,\n \"is_template\" : true,\n \"stargazers_count\" : 80,\n \"pushed_at\" : \"2011-01-26T19:06:43Z\",\n \"language\" : \"c9h2fiuxekkr9sjomgqmg9ce7worifetjjusdp0n8lvg0qyw4ph4bu4nq5f\",\n \"subscription_url\" : \"http://api.github.com/repos/octocat/Hello-World/subscription\",\n \"branches_url\" : \"http://api.github.com/repos/octocat/Hello-World/branches{/branch}\",\n \"allow_rebase_merge\" : true,\n \"issue_comment_url\" : \"http://api.github.com/repos/octocat/Hello-World/issues/comments{/number}\",\n \"labels_url\" : \"http://api.github.com/repos/octocat/Hello-World/labels{/name}\",\n \"permissions\" : {\n \"pull\" : false,\n \"maintain\" : true,\n \"admin\" : false,\n \"triage\" : true,\n \"push\" : false\n },\n \"subscribers_url\" : \"http://api.github.com/repos/octocat/Hello-World/subscribers\",\n \"releases_url\" : \"http://api.github.com/repos/octocat/Hello-World/releases{/id}\",\n \"svn_url\" : \"https://svn.github.com/octocat/Hello-World\",\n \"subscribers_count\" : 12600526675372119,\n \"id\" : 42,\n \"master_branch\" : \"cs0r830cmjl56wiq3twh2wpvf5kogja1lecob9yrk8sv1m1c0kc2ha1a38xz71mwqkdahzd479ljata\",\n \"forks\" : 1668311972034912560,\n \"allow_merge_commit\" : true,\n \"archive_url\" : \"http://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref}\",\n \"git_refs_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/refs{/sha}\",\n \"forks_url\" : \"http://api.github.com/repos/octocat/Hello-World/forks\",\n \"visibility\" : \"1p4hbn1saxa7bbch5c3d7hvdnfgknhcmdgg2whjtb9sun8jbd7dpwspo5kama0mitxc3jhu3fszylx5u1mrghquq8xms83s7nzmhqs7qfdd39\",\n \"statuses_url\" : \"http://api.github.com/repos/octocat/Hello-World/statuses/{sha}\",\n \"network_count\" : 4743699436333811696,\n \"ssh_url\" : \"git@github.com:octocat/Hello-World.git\",\n \"license\" : {\n \"html_url\" : \"https://web.example.mocklab.io/375880\",\n \"name\" : \"MIT License\",\n \"spdx_id\" : \"MIT\",\n \"key\" : \"mit\",\n \"url\" : \"https://api.github.com/licenses/mit\",\n \"node_id\" : \"MDc6TGljZW5zZW1pdA==\"\n },\n \"full_name\" : \"octocat/Hello-World\",\n \"size\" : 108,\n \"template_repository\" : {\n \"anonymous_access_enabled\" : true,\n \"is_template\" : false,\n \"stargazers_count\" : 2013426165896674991,\n \"pushed_at\" : \"hhrz6hqfw69yt8mtpfult746c9e4dpleqg1d801j1upm9fhn25v8y6qfuf90zzf3di5qlxvqlv0ic248wg81i2d4wkufn3ktunk07s0rfpwsl0z5kx607qsmvghgzwydfld9fdvmw\",\n \"language\" : \"xme8ix56rtd3gbv3gd42bf7x2qfdzs2g23tu3kc9lg2ichst1i7p8ho0e37ckvzqfz16ni45wjuvcwidn5yqbxv6lpvouorlfure4c0q3etimc1q21sl3io7dnob97u7yofqcu4snyiyjt9u37ycz6k7tmylpyotxm0bd4k76ud06ii\",\n \"subscription_url\" : \"https://web.example.mocklab.io/151012\",\n \"branches_url\" : \"https://web.example.mocklab.io/982820\",\n \"allow_rebase_merge\" : true,\n \"issue_comment_url\" : \"https://web.example.mocklab.io/526274\",\n \"labels_url\" : \"https://web.example.mocklab.io/548753\",\n \"permissions\" : { },\n \"subscribers_url\" : \"https://web.example.mocklab.io/833407\",\n \"releases_url\" : \"https://web.example.mocklab.io/848792\",\n \"svn_url\" : \"https://web.example.mocklab.io/888827\",\n \"subscribers_count\" : 3486646896549414376,\n \"id\" : 4850287145383538141,\n \"allow_merge_commit\" : true,\n \"archive_url\" : \"https://web.example.mocklab.io/542834\",\n \"git_refs_url\" : \"https://web.example.mocklab.io/298677\",\n \"forks_url\" : \"https://web.example.mocklab.io/279696\",\n \"visibility\" : \"qjhhf4gbh04k5c3ta8dv1\",\n \"statuses_url\" : \"https://web.example.mocklab.io/333025\",\n \"network_count\" : 8423151347546343966,\n \"ssh_url\" : \"https://web.example.mocklab.io/110526\",\n \"full_name\" : \"Sheryl D'Amore\",\n \"size\" : 2313198342315956273,\n \"languages_url\" : \"https://web.example.mocklab.io/459773\",\n \"clone_url\" : \"https://web.example.mocklab.io/130103\",\n \"collaborators_url\" : \"https://web.example.mocklab.io/812608\",\n \"html_url\" : \"https://web.example.mocklab.io/471401\",\n \"name\" : \"Fidel Rodriguez\",\n \"pulls_url\" : \"https://web.example.mocklab.io/142331\",\n \"default_branch\" : \"wglhnnrw5r54wwfojj47ua4qfykhcor3x3jw4wqd2spydb8x9msk9up55gbhc21in853sg76p0lqbu88ri5mp\",\n \"hooks_url\" : \"https://web.example.mocklab.io/595036\",\n \"trees_url\" : \"https://web.example.mocklab.io/250296\",\n \"tags_url\" : \"https://web.example.mocklab.io/966421\",\n \"contributors_url\" : \"https://web.example.mocklab.io/044439\",\n \"private\" : false,\n \"has_downloads\" : true,\n \"notifications_url\" : \"https://web.example.mocklab.io/219033\",\n \"open_issues_count\" : 8962617237156045047,\n \"created_at\" : \"8hpqijcp0m3tdgpu98ymvmyfnjrqlghse5bnonlamhsby41xrex6o38x\",\n \"description\" : \"Dolorem atque dolorum iusto adipisci eaque ab. Nesciunt nisi hic. Aut corrupti aspernatur omnis. Eaque adipisci quo enim quo. Sunt quo in et ut ipsa officiis praesentium.\",\n \"deployments_url\" : \"https://web.example.mocklab.io/560682\",\n \"keys_url\" : \"https://web.example.mocklab.io/701320\",\n \"has_projects\" : false,\n \"archived\" : false,\n \"has_wiki\" : true,\n \"updated_at\" : \"2022-12-28T09:23:58.750238Z\",\n \"comments_url\" : \"https://web.example.mocklab.io/440512\",\n \"stargazers_url\" : \"https://web.example.mocklab.io/955964\",\n \"disabled\" : true,\n \"delete_branch_on_merge\" : true,\n \"git_url\" : \"https://web.example.mocklab.io/385139\",\n \"has_pages\" : false,\n \"owner\" : { },\n \"allow_squash_merge\" : false,\n \"commits_url\" : \"https://web.example.mocklab.io/801521\",\n \"compare_url\" : \"https://web.example.mocklab.io/637098\",\n \"git_commits_url\" : \"https://web.example.mocklab.io/535910\",\n \"topics\" : [ \"hwlteholjnn02uk6plp79nnabt0jzorp3hbdcunkc99tobxacxhdmbfkc3rin6zxt65xebh7ycp32fxoapj1s3c9ohxhh\", \"j0ef1jlx515p9jhbck8u1x8q9t60v417oq2895ayhwg7zq6b8jb150qxyqiijhzlkaxbx6jfnkik7\", \"hv8mwyde22m242hg8g5sjs7ksbowm5h0nwzzxkxr2l0awoinsq3ffu897avtfegtuh187ts5bdvgpxr42v3h997hssrqh4x6193oi78ripnpr9xiqokfl8o6ks\" ],\n \"blobs_url\" : \"https://web.example.mocklab.io/711780\",\n \"git_tags_url\" : \"https://web.example.mocklab.io/141576\",\n \"merges_url\" : \"https://web.example.mocklab.io/181716\",\n \"downloads_url\" : \"https://web.example.mocklab.io/152725\",\n \"has_issues\" : true,\n \"url\" : \"https://web.example.mocklab.io/578913\",\n \"contents_url\" : \"https://web.example.mocklab.io/859100\",\n \"mirror_url\" : \"https://web.example.mocklab.io/250390\",\n \"milestones_url\" : \"https://web.example.mocklab.io/555975\",\n \"teams_url\" : \"https://web.example.mocklab.io/276787\",\n \"fork\" : true,\n \"issues_url\" : \"https://web.example.mocklab.io/182279\",\n \"events_url\" : \"https://web.example.mocklab.io/778847\",\n \"issue_events_url\" : \"https://web.example.mocklab.io/222867\",\n \"assignees_url\" : \"https://web.example.mocklab.io/730119\",\n \"watchers_count\" : 7589671638571957850,\n \"forks_count\" : 8028978822809796496,\n \"homepage\" : \"sug96c3gua6u2jchfppn6zryg7zohv0cer404r36puzyylqq3gvlznk9ze8k3vljnskqxq6w1f8q1dfjngjwsudn43yucnzs0cofrlue4hivbnvm1q3c8cq\",\n \"node_id\" : \"t092\"\n },\n \"languages_url\" : \"http://api.github.com/repos/octocat/Hello-World/languages\",\n \"clone_url\" : \"https://github.com/octocat/Hello-World.git\",\n \"collaborators_url\" : \"http://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator}\",\n \"html_url\" : \"https://github.com/octocat/Hello-World\",\n \"name\" : \"Team Environment\",\n \"pulls_url\" : \"http://api.github.com/repos/octocat/Hello-World/pulls{/number}\",\n \"default_branch\" : \"master\",\n \"hooks_url\" : \"http://api.github.com/repos/octocat/Hello-World/hooks\",\n \"trees_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/trees{/sha}\",\n \"tags_url\" : \"http://api.github.com/repos/octocat/Hello-World/tags\",\n \"contributors_url\" : \"http://api.github.com/repos/octocat/Hello-World/contributors\",\n \"private\" : false,\n \"has_downloads\" : true,\n \"notifications_url\" : \"http://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating}\",\n \"open_issues_count\" : 0,\n \"created_at\" : \"2011-01-26T19:01:12Z\",\n \"description\" : \"This your first repo!\",\n \"watchers\" : 3461771771108090745,\n \"deployments_url\" : \"http://api.github.com/repos/octocat/Hello-World/deployments\",\n \"keys_url\" : \"http://api.github.com/repos/octocat/Hello-World/keys{/key_id}\",\n \"has_projects\" : true,\n \"archived\" : false,\n \"has_wiki\" : true,\n \"updated_at\" : \"2011-01-26T19:14:43Z\",\n \"comments_url\" : \"http://api.github.com/repos/octocat/Hello-World/comments{/number}\",\n \"stargazers_url\" : \"http://api.github.com/repos/octocat/Hello-World/stargazers\",\n \"disabled\" : true,\n \"delete_branch_on_merge\" : false,\n \"git_url\" : \"git:github.com/octocat/Hello-World.git\",\n \"has_pages\" : true,\n \"owner\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Hoa Armstrong\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"sm6emsaiwr9etvfvntkhdr8ecmkm9wddn1de5qq882jwa6u7wf042tsik7zomae217rylq5za99d3m1pw5t4vijlag1wsjhrowjvcqbasjfdfhut4c38dubqk7p63333mq7r9mlf00xp7\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"allow_squash_merge\" : true,\n \"commits_url\" : \"http://api.github.com/repos/octocat/Hello-World/commits{/sha}\",\n \"compare_url\" : \"http://api.github.com/repos/octocat/Hello-World/compare/{base}...{head}\",\n \"git_commits_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/commits{/sha}\",\n \"topics\" : [ \"mjburaprw23j3p14s0om08thzbshr4tlvrgrux15klja3963c0kcm4pmkzrg6797wncgzjgo2siebg7x01tszc1l9ynq6frfjbj0i6fafgtzoq\", \"vdale6xc6nnr2tqo6phyisvs1v\" ],\n \"blobs_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/blobs{/sha}\",\n \"git_tags_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/tags{/sha}\",\n \"merges_url\" : \"http://api.github.com/repos/octocat/Hello-World/merges\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:42Z\\\"\",\n \"downloads_url\" : \"http://api.github.com/repos/octocat/Hello-World/downloads\",\n \"has_issues\" : true,\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World\",\n \"contents_url\" : \"http://api.github.com/repos/octocat/Hello-World/contents/{+path}\",\n \"mirror_url\" : \"git:git.example.com/octocat/Hello-World\",\n \"milestones_url\" : \"http://api.github.com/repos/octocat/Hello-World/milestones{/number}\",\n \"teams_url\" : \"http://api.github.com/repos/octocat/Hello-World/teams\",\n \"fork\" : false,\n \"issues_url\" : \"http://api.github.com/repos/octocat/Hello-World/issues{/number}\",\n \"events_url\" : \"http://api.github.com/repos/octocat/Hello-World/events\",\n \"issue_events_url\" : \"http://api.github.com/repos/octocat/Hello-World/issues/events{/number}\",\n \"organization\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Joesph Kohler\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"2mtr9u12ace2uo14v2zkmybefq03urnxy84sopi62g22wakm08c2mskd8w3jpvvopooxpsp19ewnd95nq6pr6lpkafu2xund2x6q5yd2nrhdexynb0h9afdfuvp7kkh69cl2r1rsgiwnbuhnx0wgbv6nay9nnozw28ye0f3dc7d2nbf9ag\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"assignees_url\" : \"http://api.github.com/repos/octocat/Hello-World/assignees{/user}\",\n \"open_issues\" : 7075040441708881312,\n \"watchers_count\" : 80,\n \"forks_count\" : 9,\n \"homepage\" : \"https://github.com\",\n \"node_id\" : \"MDEwOlJlcG9zaXRvcnkxMjk2MjY5\"\n },\n \"title\" : \"Found a bug\",\n \"author_association\" : \"OWNER\",\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347/labels{/name}\",\n \"number\" : 1347,\n \"performed_via_github_app\" : {\n \"owner\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Miss Christiana Trantow\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"lywjackf2ecfpibydolb0p6ijds1vb1kskwrznzt3obykk8b850az4z27roge2jjgdav0kfwi79b7\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"installations_count\" : 5,\n \"created_at\" : \"2017-07-08T16:18:44-04:00\",\n \"description\" : \"The description of the app.\",\n \"client_id\" : \"\\\"Iv1.25b5d1e65ffc4022\\\"\",\n \"external_url\" : \"https://example.com\",\n \"updated_at\" : \"2017-07-08T16:18:44-04:00\",\n \"permissions\" : {\n \"deployments\" : \"write\",\n \"issues\" : \"read\"\n },\n \"html_url\" : \"https://github.com/apps/super-ci\",\n \"name\" : \"Probot Owners\",\n \"pem\" : \"\\\"-----BEGIN RSA PRIVATE KEY-----\\\\nMIIEogIBAAKCAQEArYxrNYD/iT5CZVpRJu4rBKmmze3PVmT/gCo2ATUvDvZTPTey\\\\nxcGJ3vvrJXazKk06pN05TN29o98jrYz4cengG3YGsXPNEpKsIrEl8NhbnxapEnM9\\\\nJCMRe0P5JcPsfZlX6hmiT7136GRWiGOUba2X9+HKh8QJVLG5rM007TBER9/z9mWm\\\\nrJuNh+m5l320oBQY/Qq3A7wzdEfZw8qm/mIN0FCeoXH1L6B8xXWaAYBwhTEh6SSn\\\\nZHlO1Xu1JWDmAvBCi0RO5aRSKM8q9QEkvvHP4yweAtK3N8+aAbZ7ovaDhyGz8r6r\\\\nzhU1b8Uo0Z2ysf503WqzQgIajr7Fry7/kUwpgQIDAQABAoIBADwJp80Ko1xHPZDy\\\\nfcCKBDfIuPvkmSW6KumbsLMaQv1aGdHDwwTGv3t0ixSay8CGlxMRtRDyZPib6SvQ\\\\n6OH/lpfpbMdW2ErkksgtoIKBVrDilfrcAvrNZu7NxRNbhCSvN8q0s4ICecjbbVQh\\\\nnueSdlA6vGXbW58BHMq68uRbHkP+k+mM9U0mDJ1HMch67wlg5GbayVRt63H7R2+r\\\\nVxcna7B80J/lCEjIYZznawgiTvp3MSanTglqAYi+m1EcSsP14bJIB9vgaxS79kTu\\\\noiSo93leJbBvuGo8QEiUqTwMw4tDksmkLsoqNKQ1q9P7LZ9DGcujtPy4EZsamSJT\\\\ny8OJt0ECgYEA2lxOxJsQk2kI325JgKFjo92mQeUObIvPfSNWUIZQDTjniOI6Gv63\\\\nGLWVFrZcvQBWjMEQraJA9xjPbblV8PtfO87MiJGLWCHFxmPz2dzoedN+2Coxom8m\\\\nV95CLz8QUShuao6u/RYcvUaZEoYs5bHcTmy5sBK80JyEmafJPtCQVxMCgYEAy3ar\\\\nZr3yv4xRPEPMat4rseswmuMooSaK3SKub19WFI5IAtB/e7qR1Rj9JhOGcZz+OQrl\\\\nT78O2OFYlgOIkJPvRMrPpK5V9lslc7tz1FSh3BZMRGq5jSyD7ETSOQ0c8T2O/s7v\\\\nbeEPbVbDe4mwvM24XByH0GnWveVxaDl51ABD65sCgYB3ZAspUkOA5egVCh8kNpnd\\\\nSd6SnuQBE3ySRlT2WEnCwP9Ph6oPgn+oAfiPX4xbRqkL8q/k0BdHQ4h+zNwhk7+h\\\\nWtPYRAP1Xxnc/F+jGjb+DVaIaKGU18MWPg7f+FI6nampl3Q0KvfxwX0GdNhtio8T\\\\nTj1E+SnFwh56SRQuxSh2gwKBgHKjlIO5NtNSflsUYFM+hyQiPiqnHzddfhSG+/3o\\\\nm5nNaSmczJesUYreH5San7/YEy2UxAugvP7aSY2MxB+iGsiJ9WD2kZzTUlDZJ7RV\\\\nUzWsoqBR+eZfVJ2FUWWvy8TpSG6trh4dFxImNtKejCR1TREpSiTV3Zb1dmahK9GV\\\\nrK9NAoGAbBxRLoC01xfxCTgt5BDiBcFVh4fp5yYKwavJPLzHSpuDOrrI9jDn1oKN\\\\nonq5sDU1i391zfQvdrbX4Ova48BN+B7p63FocP/MK5tyyBoT8zQEk2+vWDOw7H/Z\\\\nu5dTCPxTIsoIwUw1I+7yIxqJzLPFgR2gVBwY1ra/8iAqCj+zeBw=\\\\n-----END RSA PRIVATE KEY-----\\\\n\\\"\",\n \"webhook_secret\" : \"\\\"6fba8f2fc8a7e8f2cca5577eddd82ca7586b3b6b\\\"\",\n \"client_secret\" : \"\\\"1d4b2097ac622ba702d19de498f005747a8b21d3\\\"\",\n \"id\" : 37,\n \"events\" : [ \"label\", \"deployment\" ],\n \"slug\" : \"probot-owners\",\n \"node_id\" : \"MDExOkludGVncmF0aW9uMQ==\"\n },\n \"updated_at\" : \"2011-04-22T13:33:48Z\",\n \"comments_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347/comments\",\n \"active_lock_reason\" : \"too heated\",\n \"id\" : 1,\n \"repository_url\" : \"https://api.github.com/repos/octocat/Hello-World\",\n \"state\" : \"open\",\n \"locked\" : true,\n \"timeline_url\" : \"https://web.example.mocklab.io/259811\",\n \"pull_request\" : {\n \"patch_url\" : \"https://web.example.mocklab.io/097779\",\n \"html_url\" : \"https://web.example.mocklab.io/275099\",\n \"merged_at\" : \"2022-07-09T05:17:27.752Z\",\n \"diff_url\" : \"https://web.example.mocklab.io/815631\",\n \"url\" : \"https://web.example.mocklab.io/401709\"\n },\n \"closed_at\" : \"2022-12-27T12:50:31.752Z\",\n \"comments\" : 0,\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347\",\n \"labels\" : [ {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n }, {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n }, {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n }, {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n }, {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n }, {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n }, {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n }, {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n } ],\n \"milestone\" : {\n \"creator\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Justine Botsford\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"bdcv0k8csikeh0icjcttdhmw\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"closed_at\" : \"2013-02-12T13:22:01Z\",\n \"created_at\" : \"2011-04-10T20:09:31Z\",\n \"description\" : \"Tracking milestone for version 1.0\",\n \"closed_issues\" : 8,\n \"title\" : \"v1.0\",\n \"due_on\" : \"2012-10-09T23:39:01Z\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones/1\",\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones/1/labels\",\n \"number\" : 42,\n \"updated_at\" : \"2014-03-03T18:58:10Z\",\n \"html_url\" : \"https://github.com/octocat/Hello-World/milestones/v1.0\",\n \"id\" : 1002604,\n \"state\" : \"open\",\n \"open_issues\" : 4,\n \"node_id\" : \"MDk6TWlsZXN0b25lMTAwMjYwNA==\"\n },\n \"events_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347/events\",\n \"html_url\" : \"https://github.com/octocat/Hello-World/issues/1347\",\n \"assignee\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Conrad Dach III\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"uy4rlw7nl\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"user\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"kurtis.hammes\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"51hp5126wv6kjoch9sclzzd1bhwiwqtn6pimbuob7wzuygwzg0ulg8yjmecgbe76g5dxss9j7hmssl5kpxuxeu4jwhr71d8zqkwklxhrojmq2rm25r1aqfrzue2kpnnrtngxoe96gpprd20sg7z8vu01gz5ng44gtplt3fcgso5dsue3a5kv5nehd9w\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"node_id\" : \"MDU6SXNzdWUx\"\n },\n \"action\" : \"ws3wfoxzo63pjwwevnu88a8877saveed635787g5oy6xodrp0fi88unszb60ninh2h90kcdsw40vlpinutev9ub6kblcar8paoz7vw9k0f9dzc\",\n \"comment\" : {\n \"issue_url\" : \"https://web.example.mocklab.io/713941\",\n \"body_html\" : \"wrh4ku1k7pacx0\",\n \"body_text\" : \"k8mcdh3qwwrzilcuy8ehhzcyrrabtg0eqpm6ichcd8tml9d5nhtg9w75ivmfabnu4ch3th0pvyalgo3hif0nhy4144uqsfhma92uzkopqjz4j7b5ocs8xo\",\n \"created_at\" : \"2011-04-14T16:00:49Z\",\n \"body\" : \"What version of Safari were you using when you observed this bug?\",\n \"url\" : \"https://api.github.com/repositories/42/issues/comments/1\",\n \"author_association\" : \"OWNER\",\n \"performed_via_github_app\" : {\n \"owner\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Van Jones DVM\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"9qnz8gocmz0ofm66iy1pifk19ac7orbieih0a3auf3yl2qpy2jc953izv6o9kjqlkqqcehsdrpxa4bnhab1mj860223xxxu0iz8ugh7t0k660nll9hcfthtowl2vixhrmcqvb1ne8w4uvg2cn2ud2obf6nwasu9e3qdz7r8smyz\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"installations_count\" : 5,\n \"created_at\" : \"2017-07-08T16:18:44-04:00\",\n \"description\" : \"The description of the app.\",\n \"client_id\" : \"\\\"Iv1.25b5d1e65ffc4022\\\"\",\n \"external_url\" : \"https://example.com\",\n \"updated_at\" : \"2017-07-08T16:18:44-04:00\",\n \"permissions\" : {\n \"deployments\" : \"write\",\n \"issues\" : \"read\"\n },\n \"html_url\" : \"https://github.com/apps/super-ci\",\n \"name\" : \"Probot Owners\",\n \"pem\" : \"\\\"-----BEGIN RSA PRIVATE KEY-----\\\\nMIIEogIBAAKCAQEArYxrNYD/iT5CZVpRJu4rBKmmze3PVmT/gCo2ATUvDvZTPTey\\\\nxcGJ3vvrJXazKk06pN05TN29o98jrYz4cengG3YGsXPNEpKsIrEl8NhbnxapEnM9\\\\nJCMRe0P5JcPsfZlX6hmiT7136GRWiGOUba2X9+HKh8QJVLG5rM007TBER9/z9mWm\\\\nrJuNh+m5l320oBQY/Qq3A7wzdEfZw8qm/mIN0FCeoXH1L6B8xXWaAYBwhTEh6SSn\\\\nZHlO1Xu1JWDmAvBCi0RO5aRSKM8q9QEkvvHP4yweAtK3N8+aAbZ7ovaDhyGz8r6r\\\\nzhU1b8Uo0Z2ysf503WqzQgIajr7Fry7/kUwpgQIDAQABAoIBADwJp80Ko1xHPZDy\\\\nfcCKBDfIuPvkmSW6KumbsLMaQv1aGdHDwwTGv3t0ixSay8CGlxMRtRDyZPib6SvQ\\\\n6OH/lpfpbMdW2ErkksgtoIKBVrDilfrcAvrNZu7NxRNbhCSvN8q0s4ICecjbbVQh\\\\nnueSdlA6vGXbW58BHMq68uRbHkP+k+mM9U0mDJ1HMch67wlg5GbayVRt63H7R2+r\\\\nVxcna7B80J/lCEjIYZznawgiTvp3MSanTglqAYi+m1EcSsP14bJIB9vgaxS79kTu\\\\noiSo93leJbBvuGo8QEiUqTwMw4tDksmkLsoqNKQ1q9P7LZ9DGcujtPy4EZsamSJT\\\\ny8OJt0ECgYEA2lxOxJsQk2kI325JgKFjo92mQeUObIvPfSNWUIZQDTjniOI6Gv63\\\\nGLWVFrZcvQBWjMEQraJA9xjPbblV8PtfO87MiJGLWCHFxmPz2dzoedN+2Coxom8m\\\\nV95CLz8QUShuao6u/RYcvUaZEoYs5bHcTmy5sBK80JyEmafJPtCQVxMCgYEAy3ar\\\\nZr3yv4xRPEPMat4rseswmuMooSaK3SKub19WFI5IAtB/e7qR1Rj9JhOGcZz+OQrl\\\\nT78O2OFYlgOIkJPvRMrPpK5V9lslc7tz1FSh3BZMRGq5jSyD7ETSOQ0c8T2O/s7v\\\\nbeEPbVbDe4mwvM24XByH0GnWveVxaDl51ABD65sCgYB3ZAspUkOA5egVCh8kNpnd\\\\nSd6SnuQBE3ySRlT2WEnCwP9Ph6oPgn+oAfiPX4xbRqkL8q/k0BdHQ4h+zNwhk7+h\\\\nWtPYRAP1Xxnc/F+jGjb+DVaIaKGU18MWPg7f+FI6nampl3Q0KvfxwX0GdNhtio8T\\\\nTj1E+SnFwh56SRQuxSh2gwKBgHKjlIO5NtNSflsUYFM+hyQiPiqnHzddfhSG+/3o\\\\nm5nNaSmczJesUYreH5San7/YEy2UxAugvP7aSY2MxB+iGsiJ9WD2kZzTUlDZJ7RV\\\\nUzWsoqBR+eZfVJ2FUWWvy8TpSG6trh4dFxImNtKejCR1TREpSiTV3Zb1dmahK9GV\\\\nrK9NAoGAbBxRLoC01xfxCTgt5BDiBcFVh4fp5yYKwavJPLzHSpuDOrrI9jDn1oKN\\\\nonq5sDU1i391zfQvdrbX4Ova48BN+B7p63FocP/MK5tyyBoT8zQEk2+vWDOw7H/Z\\\\nu5dTCPxTIsoIwUw1I+7yIxqJzLPFgR2gVBwY1ra/8iAqCj+zeBw=\\\\n-----END RSA PRIVATE KEY-----\\\\n\\\"\",\n \"webhook_secret\" : \"\\\"6fba8f2fc8a7e8f2cca5577eddd82ca7586b3b6b\\\"\",\n \"client_secret\" : \"\\\"1d4b2097ac622ba702d19de498f005747a8b21d3\\\"\",\n \"id\" : 37,\n \"events\" : [ \"label\", \"deployment\" ],\n \"slug\" : \"probot-owners\",\n \"node_id\" : \"MDExOkludGVncmF0aW9uMQ==\"\n },\n \"updated_at\" : \"2011-04-14T16:00:49Z\",\n \"html_url\" : \"https://web.example.mocklab.io/739462\",\n \"reactions\" : {\n \"confused\" : 4422899955887359934,\n \"-1\" : 5543107231703934150,\n \"+1\" : 1387672255631496775,\n \"total_count\" : 7298528479882218677,\n \"rocket\" : 6652529678444844455,\n \"hooray\" : 6655509406775775005,\n \"eyes\" : 824341833826329807,\n \"heart\" : 8974387706787720144,\n \"laugh\" : 4605623245478333405,\n \"url\" : \"https://web.example.mocklab.io/723233\"\n },\n \"id\" : 42,\n \"user\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"dionne.russel\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"jd7wsiqbrfksz2g9lkms7i0cetop14ia7onld64g6w2sz6qibs9p465k9981tgnl8am2\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"node_id\" : \"c74o\"\n }\n },\n \"repo\" : {\n \"name\" : \"Mrs. Antonio Gorczany\",\n \"id\" : 4793429590588971967,\n \"url\" : \"https://web.example.mocklab.io/858670\"\n },\n \"created_at\" : \"2022-06-25T09:05:33.753Z\",\n \"id\" : \"59f5\",\n \"type\" : \"u2ujy6mc7z5i4aa54j0f2gq00rlqmu6np0jd2a6exzxzam2v3b3cml3a7jnbtkns925i7s01lw6yg1cvigwmaim\"\n}, {\n \"actor\" : {\n \"display_login\" : \"yq57veqb83cuuq3bjkq0fmj27i25tuu5t7m9wxyqf6ku\",\n \"avatar_url\" : \"https://s3.amazonaws.com/uifaces/faces/twitter/danro/128.jpg\",\n \"id\" : 3418361886744924765,\n \"login\" : \"vr2erflyjiz3rs6hohz7mr2gilq02s2uyabv0h0t3icqwsmrdtqdrs5ny3v68oanv76nugchupkgw2zvnx74wntliv1e7k\",\n \"gravatar_id\" : \"5fn0\",\n \"url\" : \"https://web.example.mocklab.io/578507\"\n },\n \"public\" : false,\n \"org\" : {\n \"display_login\" : \"hyqtgve3pv7xxbon9d95aj9f3piy6t5rs3c7459d63qihr5ft7f6zbwsxabnqd9zwrvvz1pdl9dc5btbi0r2uvzlbn2hl6moxr5t3qc0zqpory1idlo07f2shwchq38bo1bii11ng0md9rfucs3yae6\",\n \"avatar_url\" : \"https://s3.amazonaws.com/uifaces/faces/twitter/mizhgan/128.jpg\",\n \"id\" : 4173138224253227397,\n \"login\" : \"wb20sz8zntd5ryrhq1mh5n3j6bwql6ixoxtrq6kbusbytht3xzsbul9owh2kb36azjf\",\n \"gravatar_id\" : \"l4u7\",\n \"url\" : \"https://web.example.mocklab.io/665659\"\n },\n \"payload\" : {\n \"pages\" : [ {\n \"summary\" : \"Ratione quo sequi qui dignissimos delectus. Architecto omnis error quis odit. Quas molestiae nesciunt qui. Iusto aperiam laborum iusto iusto exercitationem voluptatem ut.\",\n \"html_url\" : \"https://web.example.mocklab.io/466194\",\n \"page_name\" : \"Ms. Louella Beahan\",\n \"action\" : \"4xfxikyotr4lyyvfygkunizb8ljyjma49tu6hh4t9rwx02nudk926svl7go9jlszfdyk2tfx8dcaqm05wnooq3o8jmrh0itj5mtb5o5wyhouwimlg4oh7j4pt\",\n \"title\" : \"Voluptatem tenetur nam dolor ab tenetur.\",\n \"sha\" : \"7w429y6ozv04zti6psvd8sdftmwl8cam0cdrlnlh1ba3j75ulwrqwbvout1jue5wjldinhr6iijwb3pj8t80pcabgxo2k8emoxdzcjg8t45iy5lbb9n2b8nlbr5qs6yozvvf7qmn8qnigoik6xah0z1qm\"\n }, {\n \"summary\" : \"Tempora velit est doloremque quo. Magnam sequi quas aut. Quas maiores mollitia.\",\n \"html_url\" : \"https://web.example.mocklab.io/321909\",\n \"page_name\" : \"Cathern Beer\",\n \"action\" : \"wdusi\",\n \"title\" : \"Temporibus ullam qui quo at.\",\n \"sha\" : \"hpmf0oi4shsdv91zldrw3mt8g6aiijd2mz0xu18w7ao6n6v9twtgkfrqbru3abuei7sjrm2zfzrgb2lf6ncuuatuo5hgk7djqyyuflmteghgwcjho6amqos0nlc0pvubk3m1rcpy6zna\"\n }, {\n \"summary\" : \"Atque ipsam laborum ipsam. Aut ad eum et cupiditate omnis maxime. Animi itaque qui aut dignissimos est. Molestiae optio sunt voluptatem deserunt sit fuga et. Laudantium repellat quo quia commodi.\",\n \"html_url\" : \"https://web.example.mocklab.io/582749\",\n \"page_name\" : \"Zenaida Shields\",\n \"action\" : \"t5af40cuy9qtlmo5g63u3v3lnvbkpf5245nl208ms2hciqz2u39f5ezogkjl809otkjnmyex94ndbhe2qisbfkhv1345oecbzs9x\",\n \"title\" : \"Eum dolorem eligendi est voluptate natus id.\",\n \"sha\" : \"dxhnldvp3vitlnrqf639sxh68ljmncgvzb09utqlr7kjbx1hdsrm7y41ls6vvqkgi6lzwr88hp9gvsnl69fvdo9u5zmxz3t0ey0vnqogtyi85rwl6t2zm8mdxy4nkegfrwmdk423ux1e9nh70\"\n }, {\n \"summary\" : \"Quam qui nisi laudantium. Mollitia veniam explicabo aut consectetur maiores. Officiis id vel. Nostrum et quis possimus aut quisquam ad.\",\n \"html_url\" : \"https://web.example.mocklab.io/619534\",\n \"page_name\" : \"Mr. Sanjuanita O'Connell\",\n \"action\" : \"ce9dig8rytcglbh8yssf0mzmrmi2mq99kw8vlo791u0wf02403a\",\n \"title\" : \"Eaque officia reprehenderit ut earum non.\",\n \"sha\" : \"t9g52snkc7ajr1cg6x8mhkzjvxz12dsrzu6bkehhc0tt1zd252qfz96gi7wyotwehie4vb3dazo11crr7meyt27kh7et0ldj1d5ile3fbxuxoplkh3y2rw8xwduk8j06\"\n }, {\n \"summary\" : \"Sit itaque labore est quia. In ut facere nesciunt aut ut velit. Dolor sint beatae. Placeat cumque necessitatibus qui. Sit corporis qui perspiciatis.\",\n \"html_url\" : \"https://web.example.mocklab.io/679516\",\n \"page_name\" : \"Jamie Grady\",\n \"action\" : \"uto0tlzb2m5snc1thezhpfmms10nr9kds9o2qyn8vvb0tvw36z8jxrs3mjcwqcck1tawlboq04mnxz1nkqd3cu\",\n \"title\" : \"Quae quisquam sapiente similique enim.\",\n \"sha\" : \"ore08iqlbr2gbh0eal5os6qn03dztju65cu8bl\"\n }, {\n \"summary\" : \"Et voluptatem libero aliquam sed porro quis consequatur. Harum enim harum eos suscipit eligendi ut dolore. Inventore esse omnis sunt id. Harum illum nihil voluptate eum consectetur. Ducimus dolores et\",\n \"html_url\" : \"https://web.example.mocklab.io/625105\",\n \"page_name\" : \"Brandon Shields Jr.\",\n \"action\" : \"u7q6c4rmddadeyuz6h7n6t9ij3qiusv6qfj4dr4ex4i4iml2euuq8tfda4621yeh7el9phklnczalbsi0gwuv3bp0oqkm36y09s9k3fobwmk5l3il85yfvnmauyv6nyturo3ui2xgh0qmwjm1a144925bj\",\n \"title\" : \"Voluptates voluptatem ex velit impedit error.\",\n \"sha\" : \"5cm38t0df5r\"\n }, {\n \"summary\" : \"Et tempore non aut. Necessitatibus laboriosam expedita sed unde. Eos eligendi est quia consequatur. Aperiam quis ea aspernatur. Nulla accusantium rem ullam aut earum totam suscipit.\",\n \"html_url\" : \"https://web.example.mocklab.io/764697\",\n \"page_name\" : \"Gay Tromp\",\n \"action\" : \"679ggop52dijdoit0b08ld3r3y9wgdtyw8b2izrti2e88tl7hmywvtxfwlv7kkr08dbdp6im80gisvlql74awl9et0y9gvcexrgnf7ovtwth9s8v13ml2wfyfynaneoydq452ksk1xp0baj1k1kmedgt9f0lxxbmx5\",\n \"title\" : \"Soluta ut aliquid ratione exercitationem.\",\n \"sha\" : \"56v1ggtpky0oxuvr5hpcepsay2vej9vdk1njr318tt5ecfq6c4oo004y8fjsw91rco394cdyklad5c10u4whdsteu3x9i3e7qe5b3b3ay\"\n } ],\n \"issue\" : {\n \"body_html\" : \"w1019u98lx7km3841mftwpuxths3dwi1i43zqfiigeh1o9gt3cf4d4g4ge59axqgr0cbkin2sdu1tyo6nyleifkrpn6co3x8ukmxwir5358d9k6ivf75q1ey8o3cyk619uptp7veqnojqqzh965bxfde5swxkipsyo\",\n \"body_text\" : \"6xwacbpboiyy2q3y1zd6lgcjdvq0fk1jg7o9jy4le1qx82i2bw2su0grsmb4gi53ggfuc3uzvuhwpj8ceqkhoue1c7qi28ok6z9hvc4bf3t2yqok03fbabt3pcriqhx01gurxla86nwo2r4uitb6426z3ny\",\n \"assignees\" : [ {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Antonia Schowalter MD\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"ymzdiuns3a54pt1luqxien23nggczmd8ouiagw2s45c8n9gcjede8aqe0s344u31l7o33w8xza7q3zexlei2lcxrvogxxfavl66xj7isv2qm\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n } ],\n \"created_at\" : \"2011-04-22T13:33:48Z\",\n \"body\" : \"I'm having a problem with this.\",\n \"repository\" : {\n \"allow_forking\" : false,\n \"anonymous_access_enabled\" : false,\n \"is_template\" : true,\n \"stargazers_count\" : 80,\n \"pushed_at\" : \"2011-01-26T19:06:43Z\",\n \"language\" : \"p2qzfpyg05c9cw0wpl0j43ace5fbof0svg0xzbapfh85b9q42guqr8x12nmrb824opcx5s33qtb60rddkzcztm9sxaayc338x8d01ita1ut8k6ul4k26jvgje0n\",\n \"subscription_url\" : \"http://api.github.com/repos/octocat/Hello-World/subscription\",\n \"branches_url\" : \"http://api.github.com/repos/octocat/Hello-World/branches{/branch}\",\n \"allow_rebase_merge\" : true,\n \"issue_comment_url\" : \"http://api.github.com/repos/octocat/Hello-World/issues/comments{/number}\",\n \"labels_url\" : \"http://api.github.com/repos/octocat/Hello-World/labels{/name}\",\n \"permissions\" : {\n \"pull\" : false,\n \"maintain\" : true,\n \"admin\" : false,\n \"triage\" : true,\n \"push\" : false\n },\n \"subscribers_url\" : \"http://api.github.com/repos/octocat/Hello-World/subscribers\",\n \"releases_url\" : \"http://api.github.com/repos/octocat/Hello-World/releases{/id}\",\n \"svn_url\" : \"https://svn.github.com/octocat/Hello-World\",\n \"subscribers_count\" : 8280968257192321043,\n \"id\" : 42,\n \"master_branch\" : \"penr7aybdheamkzlidfjjz01gmhpj6vqoc8n7d8914c3kj2xcu2lloai2yge5my09p13i9kbzvri1hm6pojaogoi1c4kvua18x7t27ghnis36dt06m2yjwd\",\n \"forks\" : 4149969138860323607,\n \"allow_merge_commit\" : true,\n \"archive_url\" : \"http://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref}\",\n \"git_refs_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/refs{/sha}\",\n \"forks_url\" : \"http://api.github.com/repos/octocat/Hello-World/forks\",\n \"visibility\" : \"cmk9svcw6dci4r9yf8b87ndosiptwxlihtvki0wbe3e36mkvt1np21mysvyddd4bh6dpnrtlwnz0j9ddxy349rm5k44snijnic5t\",\n \"statuses_url\" : \"http://api.github.com/repos/octocat/Hello-World/statuses/{sha}\",\n \"network_count\" : 7612604846478251820,\n \"ssh_url\" : \"git@github.com:octocat/Hello-World.git\",\n \"license\" : {\n \"html_url\" : \"https://web.example.mocklab.io/008791\",\n \"name\" : \"MIT License\",\n \"spdx_id\" : \"MIT\",\n \"key\" : \"mit\",\n \"url\" : \"https://api.github.com/licenses/mit\",\n \"node_id\" : \"MDc6TGljZW5zZW1pdA==\"\n },\n \"full_name\" : \"octocat/Hello-World\",\n \"size\" : 108,\n \"template_repository\" : {\n \"anonymous_access_enabled\" : false,\n \"is_template\" : true,\n \"stargazers_count\" : 5459056296198612326,\n \"pushed_at\" : \"jyad0edptwrru\",\n \"language\" : \"gu9m7t6mkxirj4jbxzfenx119gfxvlzsgehv1rbxi3csv9aiw7nb36om6s9ueg1flc2y5wgqiubtyqsfxittkg93ikmoqwrr4t\",\n \"subscription_url\" : \"https://web.example.mocklab.io/128124\",\n \"branches_url\" : \"https://web.example.mocklab.io/569438\",\n \"allow_rebase_merge\" : false,\n \"issue_comment_url\" : \"https://web.example.mocklab.io/331042\",\n \"labels_url\" : \"https://web.example.mocklab.io/209139\",\n \"permissions\" : { },\n \"subscribers_url\" : \"https://web.example.mocklab.io/695840\",\n \"releases_url\" : \"https://web.example.mocklab.io/539650\",\n \"svn_url\" : \"https://web.example.mocklab.io/798467\",\n \"subscribers_count\" : 3764462046608259487,\n \"id\" : 6515340315589449098,\n \"allow_merge_commit\" : true,\n \"archive_url\" : \"https://web.example.mocklab.io/353155\",\n \"git_refs_url\" : \"https://web.example.mocklab.io/293332\",\n \"forks_url\" : \"https://web.example.mocklab.io/141850\",\n \"visibility\" : \"qjc9rkzp5ip4jb31d\",\n \"statuses_url\" : \"https://web.example.mocklab.io/833864\",\n \"network_count\" : 4461512185001471969,\n \"ssh_url\" : \"https://web.example.mocklab.io/094786\",\n \"full_name\" : \"Klara Kshlerin\",\n \"size\" : 6420560956899785504,\n \"languages_url\" : \"https://web.example.mocklab.io/024427\",\n \"clone_url\" : \"https://web.example.mocklab.io/001601\",\n \"collaborators_url\" : \"https://web.example.mocklab.io/744099\",\n \"html_url\" : \"https://web.example.mocklab.io/028760\",\n \"name\" : \"Dr. Doyle Kiehn\",\n \"pulls_url\" : \"https://web.example.mocklab.io/879877\",\n \"default_branch\" : \"jdfmndbzrq99bse6e0kes616sh1qr8jv3xriwhqkofn30paa6h0eudulxfrnpcpnczszf99xgd6c7ckvebjdg4qd0u5sj3b9j96l0fnu2r0mh5sohtlj5616uvb1eg\",\n \"hooks_url\" : \"https://web.example.mocklab.io/927871\",\n \"trees_url\" : \"https://web.example.mocklab.io/080383\",\n \"tags_url\" : \"https://web.example.mocklab.io/741356\",\n \"contributors_url\" : \"https://web.example.mocklab.io/727613\",\n \"private\" : true,\n \"has_downloads\" : true,\n \"notifications_url\" : \"https://web.example.mocklab.io/672307\",\n \"open_issues_count\" : 1006222055884323398,\n \"created_at\" : \"xqztvzfjxjm14pbaa5m5dt9noa8pgb0vnhprhsvdzdh5p5hlhxw8aoryszxpcgopkb61uy8ydvd2asxqlnttc389lzpnfewz8l7eiq55j6m7od\",\n \"description\" : \"Non a modi est vero at vitae. Placeat a amet harum dignissimos architecto iure. Est enim enim laudantium molestias. Cum ut eos. Occaecati et aperiam dignissimos.\",\n \"deployments_url\" : \"https://web.example.mocklab.io/585602\",\n \"keys_url\" : \"https://web.example.mocklab.io/120740\",\n \"has_projects\" : true,\n \"archived\" : false,\n \"has_wiki\" : false,\n \"updated_at\" : \"2022-03-31T07:11:58.758124Z\",\n \"comments_url\" : \"https://web.example.mocklab.io/835628\",\n \"stargazers_url\" : \"https://web.example.mocklab.io/373340\",\n \"disabled\" : true,\n \"delete_branch_on_merge\" : true,\n \"git_url\" : \"https://web.example.mocklab.io/503490\",\n \"has_pages\" : false,\n \"owner\" : { },\n \"allow_squash_merge\" : true,\n \"commits_url\" : \"https://web.example.mocklab.io/533636\",\n \"compare_url\" : \"https://web.example.mocklab.io/400548\",\n \"git_commits_url\" : \"https://web.example.mocklab.io/142260\",\n \"topics\" : [ \"rvb5de7yme3vzhnu0i9ngfnzn4rclkxi6u7aw28eon8lpu1std3e\", \"mior419ivdz4pi1003mlw82ck2n96vm38r4ooa2ofp53y67r5fzx57nv6q9jewbuec0nahd1vkkw270d08roastfiaa5jyugj\", \"3af3wk0qbdbf6l6benpp2isr46gaazghmiozfhz7231i8hj8jcjnxqhdpkggst4lowcb1rreae88n8aw4d32swdqswz9w3redel2qffrh88bua6mp4dy03fgpq2brldz1v9cn5xy8vd7hm48sk5kmtwxvazl04bafmm2f9qjbuzjw5fcntbnybva3hv07wxtgyuki2\", \"8o37u3xe8etvozw6mwthqd95ezxxkggacuqqqbw2brl3zyn0m286jakafl4bi0wtt6yixuv8owg0udidh56yezhicsbe7i3kosznkyyvn790qby\" ],\n \"blobs_url\" : \"https://web.example.mocklab.io/864735\",\n \"git_tags_url\" : \"https://web.example.mocklab.io/196780\",\n \"merges_url\" : \"https://web.example.mocklab.io/529620\",\n \"downloads_url\" : \"https://web.example.mocklab.io/535406\",\n \"has_issues\" : true,\n \"url\" : \"https://web.example.mocklab.io/021632\",\n \"contents_url\" : \"https://web.example.mocklab.io/715733\",\n \"mirror_url\" : \"https://web.example.mocklab.io/455067\",\n \"milestones_url\" : \"https://web.example.mocklab.io/769254\",\n \"teams_url\" : \"https://web.example.mocklab.io/926799\",\n \"fork\" : true,\n \"issues_url\" : \"https://web.example.mocklab.io/978588\",\n \"events_url\" : \"https://web.example.mocklab.io/967858\",\n \"issue_events_url\" : \"https://web.example.mocklab.io/502148\",\n \"assignees_url\" : \"https://web.example.mocklab.io/949545\",\n \"watchers_count\" : 8211086782549242311,\n \"forks_count\" : 6484001842477023602,\n \"homepage\" : \"px26wivdhsgpv4q5u\",\n \"node_id\" : \"s7g7\"\n },\n \"languages_url\" : \"http://api.github.com/repos/octocat/Hello-World/languages\",\n \"clone_url\" : \"https://github.com/octocat/Hello-World.git\",\n \"collaborators_url\" : \"http://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator}\",\n \"html_url\" : \"https://github.com/octocat/Hello-World\",\n \"name\" : \"Team Environment\",\n \"pulls_url\" : \"http://api.github.com/repos/octocat/Hello-World/pulls{/number}\",\n \"default_branch\" : \"master\",\n \"hooks_url\" : \"http://api.github.com/repos/octocat/Hello-World/hooks\",\n \"trees_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/trees{/sha}\",\n \"tags_url\" : \"http://api.github.com/repos/octocat/Hello-World/tags\",\n \"contributors_url\" : \"http://api.github.com/repos/octocat/Hello-World/contributors\",\n \"private\" : false,\n \"has_downloads\" : true,\n \"notifications_url\" : \"http://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating}\",\n \"open_issues_count\" : 0,\n \"created_at\" : \"2011-01-26T19:01:12Z\",\n \"description\" : \"This your first repo!\",\n \"watchers\" : 4143154957966185534,\n \"deployments_url\" : \"http://api.github.com/repos/octocat/Hello-World/deployments\",\n \"keys_url\" : \"http://api.github.com/repos/octocat/Hello-World/keys{/key_id}\",\n \"has_projects\" : true,\n \"archived\" : false,\n \"has_wiki\" : true,\n \"updated_at\" : \"2011-01-26T19:14:43Z\",\n \"comments_url\" : \"http://api.github.com/repos/octocat/Hello-World/comments{/number}\",\n \"stargazers_url\" : \"http://api.github.com/repos/octocat/Hello-World/stargazers\",\n \"disabled\" : true,\n \"delete_branch_on_merge\" : false,\n \"git_url\" : \"git:github.com/octocat/Hello-World.git\",\n \"has_pages\" : true,\n \"owner\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Ms. Brice Parker\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"92zzts2p3mktvyd1qcad7e4v61hticic1snyvth2zxpsafzx2sy0oqbzw0tt120m3ira45823yughouqnmjiuf0d6n561zx2jpmbzg86lgke4hiz8r9vcpbc6u6bn6ttulp92jf1zwvefqvoqeab44olb8aw\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"allow_squash_merge\" : true,\n \"commits_url\" : \"http://api.github.com/repos/octocat/Hello-World/commits{/sha}\",\n \"compare_url\" : \"http://api.github.com/repos/octocat/Hello-World/compare/{base}...{head}\",\n \"git_commits_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/commits{/sha}\",\n \"topics\" : [ \"liftvi7lrywjej9r8vk60rwlel558wuxx5l0v6mgxyyg03mjzcndla1kv3dg4uenc2zx2pznqpdrjgysjtet7nqpa99wffyxf1yztpobk3p5vizr0y2wka58ws8x8zie4tms4pzfq0krz93wfuaresgio3mchuejlueu3diwtffjdl4mf\", \"2cg9mqms7l1rtnpirzhgcp9211j3nsz3xwghraspl78gvgxh3z3ga4z011otsjz9ct5ac6j25r0hwvufbcaqsnw4ur0jcuysshp7r7mhvylsqzkx8ggalvq76pbsdk9ekr57is5ym4y47wci98fdk2vg5sgkemrs9ys1ry0q7a92trhj\", \"5letd2cll62jj4unxeyssv7hp0sm0rxyyiwdfurvioog997g4qma57fgeqixwdizpcz\", \"vw0rgty07i4bs3fpwezjwijihvvy6960vrynfa3rmfdwepaioes79anry5w99qvqzsvhcx8eyzs5be605qt1zhyd2ouxi8z4vvuf87xh32qabbc6sla4m1kdl46wro\", \"fgxfpgk5oskmq6pg\", \"0wg1ku7qk9q5g3sg6xtpq86rjui8ef5rpwq7n8g5u8\", \"80rdgjyzot7d29l3ads81kp0r95m7gjpt4c2ra8kxobzcryxjkrrs1xgtpdl61q5bbfw79voticjseosqvg8ygzliyn3ku5rh7bh9lu2a35szm8us6gj0ufyocgwnn\", \"cf3o818vsv9\" ],\n \"blobs_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/blobs{/sha}\",\n \"git_tags_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/tags{/sha}\",\n \"merges_url\" : \"http://api.github.com/repos/octocat/Hello-World/merges\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:42Z\\\"\",\n \"downloads_url\" : \"http://api.github.com/repos/octocat/Hello-World/downloads\",\n \"has_issues\" : true,\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World\",\n \"contents_url\" : \"http://api.github.com/repos/octocat/Hello-World/contents/{+path}\",\n \"mirror_url\" : \"git:git.example.com/octocat/Hello-World\",\n \"milestones_url\" : \"http://api.github.com/repos/octocat/Hello-World/milestones{/number}\",\n \"teams_url\" : \"http://api.github.com/repos/octocat/Hello-World/teams\",\n \"fork\" : true,\n \"issues_url\" : \"http://api.github.com/repos/octocat/Hello-World/issues{/number}\",\n \"events_url\" : \"http://api.github.com/repos/octocat/Hello-World/events\",\n \"issue_events_url\" : \"http://api.github.com/repos/octocat/Hello-World/issues/events{/number}\",\n \"organization\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Ashly Fadel Jr.\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"l6l730y1cnnmhgxl4su7c2xjeta23wkgbd40a1\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"assignees_url\" : \"http://api.github.com/repos/octocat/Hello-World/assignees{/user}\",\n \"open_issues\" : 8851937408120937602,\n \"watchers_count\" : 80,\n \"forks_count\" : 9,\n \"homepage\" : \"https://github.com\",\n \"node_id\" : \"MDEwOlJlcG9zaXRvcnkxMjk2MjY5\"\n },\n \"title\" : \"Found a bug\",\n \"author_association\" : \"OWNER\",\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347/labels{/name}\",\n \"number\" : 1347,\n \"performed_via_github_app\" : {\n \"owner\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Anita Steuber\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"nj477meik0reye7cbc71p0tlldv3gztthmlz6h8awerwandr1rwhqgwl1ljz3t774r\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"installations_count\" : 5,\n \"created_at\" : \"2017-07-08T16:18:44-04:00\",\n \"description\" : \"The description of the app.\",\n \"client_id\" : \"\\\"Iv1.25b5d1e65ffc4022\\\"\",\n \"external_url\" : \"https://example.com\",\n \"updated_at\" : \"2017-07-08T16:18:44-04:00\",\n \"permissions\" : {\n \"deployments\" : \"write\",\n \"issues\" : \"read\"\n },\n \"html_url\" : \"https://github.com/apps/super-ci\",\n \"name\" : \"Probot Owners\",\n \"pem\" : \"\\\"-----BEGIN RSA PRIVATE KEY-----\\\\nMIIEogIBAAKCAQEArYxrNYD/iT5CZVpRJu4rBKmmze3PVmT/gCo2ATUvDvZTPTey\\\\nxcGJ3vvrJXazKk06pN05TN29o98jrYz4cengG3YGsXPNEpKsIrEl8NhbnxapEnM9\\\\nJCMRe0P5JcPsfZlX6hmiT7136GRWiGOUba2X9+HKh8QJVLG5rM007TBER9/z9mWm\\\\nrJuNh+m5l320oBQY/Qq3A7wzdEfZw8qm/mIN0FCeoXH1L6B8xXWaAYBwhTEh6SSn\\\\nZHlO1Xu1JWDmAvBCi0RO5aRSKM8q9QEkvvHP4yweAtK3N8+aAbZ7ovaDhyGz8r6r\\\\nzhU1b8Uo0Z2ysf503WqzQgIajr7Fry7/kUwpgQIDAQABAoIBADwJp80Ko1xHPZDy\\\\nfcCKBDfIuPvkmSW6KumbsLMaQv1aGdHDwwTGv3t0ixSay8CGlxMRtRDyZPib6SvQ\\\\n6OH/lpfpbMdW2ErkksgtoIKBVrDilfrcAvrNZu7NxRNbhCSvN8q0s4ICecjbbVQh\\\\nnueSdlA6vGXbW58BHMq68uRbHkP+k+mM9U0mDJ1HMch67wlg5GbayVRt63H7R2+r\\\\nVxcna7B80J/lCEjIYZznawgiTvp3MSanTglqAYi+m1EcSsP14bJIB9vgaxS79kTu\\\\noiSo93leJbBvuGo8QEiUqTwMw4tDksmkLsoqNKQ1q9P7LZ9DGcujtPy4EZsamSJT\\\\ny8OJt0ECgYEA2lxOxJsQk2kI325JgKFjo92mQeUObIvPfSNWUIZQDTjniOI6Gv63\\\\nGLWVFrZcvQBWjMEQraJA9xjPbblV8PtfO87MiJGLWCHFxmPz2dzoedN+2Coxom8m\\\\nV95CLz8QUShuao6u/RYcvUaZEoYs5bHcTmy5sBK80JyEmafJPtCQVxMCgYEAy3ar\\\\nZr3yv4xRPEPMat4rseswmuMooSaK3SKub19WFI5IAtB/e7qR1Rj9JhOGcZz+OQrl\\\\nT78O2OFYlgOIkJPvRMrPpK5V9lslc7tz1FSh3BZMRGq5jSyD7ETSOQ0c8T2O/s7v\\\\nbeEPbVbDe4mwvM24XByH0GnWveVxaDl51ABD65sCgYB3ZAspUkOA5egVCh8kNpnd\\\\nSd6SnuQBE3ySRlT2WEnCwP9Ph6oPgn+oAfiPX4xbRqkL8q/k0BdHQ4h+zNwhk7+h\\\\nWtPYRAP1Xxnc/F+jGjb+DVaIaKGU18MWPg7f+FI6nampl3Q0KvfxwX0GdNhtio8T\\\\nTj1E+SnFwh56SRQuxSh2gwKBgHKjlIO5NtNSflsUYFM+hyQiPiqnHzddfhSG+/3o\\\\nm5nNaSmczJesUYreH5San7/YEy2UxAugvP7aSY2MxB+iGsiJ9WD2kZzTUlDZJ7RV\\\\nUzWsoqBR+eZfVJ2FUWWvy8TpSG6trh4dFxImNtKejCR1TREpSiTV3Zb1dmahK9GV\\\\nrK9NAoGAbBxRLoC01xfxCTgt5BDiBcFVh4fp5yYKwavJPLzHSpuDOrrI9jDn1oKN\\\\nonq5sDU1i391zfQvdrbX4Ova48BN+B7p63FocP/MK5tyyBoT8zQEk2+vWDOw7H/Z\\\\nu5dTCPxTIsoIwUw1I+7yIxqJzLPFgR2gVBwY1ra/8iAqCj+zeBw=\\\\n-----END RSA PRIVATE KEY-----\\\\n\\\"\",\n \"webhook_secret\" : \"\\\"6fba8f2fc8a7e8f2cca5577eddd82ca7586b3b6b\\\"\",\n \"client_secret\" : \"\\\"1d4b2097ac622ba702d19de498f005747a8b21d3\\\"\",\n \"id\" : 37,\n \"events\" : [ \"label\", \"deployment\" ],\n \"slug\" : \"probot-owners\",\n \"node_id\" : \"MDExOkludGVncmF0aW9uMQ==\"\n },\n \"updated_at\" : \"2011-04-22T13:33:48Z\",\n \"comments_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347/comments\",\n \"active_lock_reason\" : \"too heated\",\n \"id\" : 1,\n \"repository_url\" : \"https://api.github.com/repos/octocat/Hello-World\",\n \"state\" : \"open\",\n \"locked\" : true,\n \"timeline_url\" : \"https://web.example.mocklab.io/764342\",\n \"pull_request\" : {\n \"patch_url\" : \"https://web.example.mocklab.io/440606\",\n \"html_url\" : \"https://web.example.mocklab.io/823887\",\n \"merged_at\" : \"2023-05-25T00:35:54.76Z\",\n \"diff_url\" : \"https://web.example.mocklab.io/157668\",\n \"url\" : \"https://web.example.mocklab.io/436393\"\n },\n \"closed_at\" : \"2024-03-12T12:30:58.76Z\",\n \"comments\" : 0,\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347\",\n \"labels\" : [ {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n }, {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n }, {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n }, {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n }, {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n }, {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n }, {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n }, {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n } ],\n \"milestone\" : {\n \"creator\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Martha Hermann Jr.\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"vshl5bl7zs1403ncv6rqchgvasb6ye3zirkkf8gc6wo71fza35altxsxhoxfh5\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"closed_at\" : \"2013-02-12T13:22:01Z\",\n \"created_at\" : \"2011-04-10T20:09:31Z\",\n \"description\" : \"Tracking milestone for version 1.0\",\n \"closed_issues\" : 8,\n \"title\" : \"v1.0\",\n \"due_on\" : \"2012-10-09T23:39:01Z\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones/1\",\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones/1/labels\",\n \"number\" : 42,\n \"updated_at\" : \"2014-03-03T18:58:10Z\",\n \"html_url\" : \"https://github.com/octocat/Hello-World/milestones/v1.0\",\n \"id\" : 1002604,\n \"state\" : \"open\",\n \"open_issues\" : 4,\n \"node_id\" : \"MDk6TWlsZXN0b25lMTAwMjYwNA==\"\n },\n \"events_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347/events\",\n \"html_url\" : \"https://github.com/octocat/Hello-World/issues/1347\",\n \"assignee\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Jerica Hoppe DVM\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"pxqifuq8mrts864ujktdw9ba8ojg88g9pflz2cqpagdp612eja9awgkl37pn6ei8yocjgi5wsdcusy8e17kpt6a21oy7l2iifkghdsc74b4qyfy6nkegr1awzgy\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"user\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"bernard.beer\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"swp5tf839du2ytmtpqo6wj5pab49tt6zwz36vqnyzav5f4l8cekyu31c05rtv79p4fuxis8qfhpoi\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"node_id\" : \"MDU6SXNzdWUx\"\n },\n \"action\" : \"hcajhpx0936hf5xgp4yk2050xb7vfi4efb2yzsqf5izq0vcbh63a2wpfa1sukig66dhiqziwct12xmbw56jk1zhvcaccwla60w5f5m1jml3wd6t3l0kh98bavyrqfrauruxpkyenv9c8dgvalfjdh\",\n \"comment\" : {\n \"issue_url\" : \"https://web.example.mocklab.io/721309\",\n \"body_html\" : \"srk2ysstt43tbezsbu9lahw34cynih8g9qjmzktupzruprs21zkvazi1r6kyi2q2teiqpdixxdfoq8jackf4o20q0cgd173xwg7ohpyu45ropsh8z8wbew56jbpn8ayo54vqxf24brze6npxr0hxeuiirileciwv55e5fr0a1kz2t1vgwjneq961xaewcjz\",\n \"body_text\" : \"r2dobl5ef4lfl64jxpsvftfm05jj0kjwcq117mcqig9y1c3kd18w1tg25eeryi5iok27xynfz4kgh62ji3gnw6s1961voy77b6t95u\",\n \"created_at\" : \"2011-04-14T16:00:49Z\",\n \"body\" : \"What version of Safari were you using when you observed this bug?\",\n \"url\" : \"https://api.github.com/repositories/42/issues/comments/1\",\n \"author_association\" : \"OWNER\",\n \"performed_via_github_app\" : {\n \"owner\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Graciela Breitenberg\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"ysq588510m3aissx2jrvbcbq7hrtok3dzte261w0xscb17s1gvl64m2z0bkwyqxs0ynw5mss3j31v0l88lmspic330779u6sg55ulikop6lxzwjke4vcn8vdd3qxg\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"installations_count\" : 5,\n \"created_at\" : \"2017-07-08T16:18:44-04:00\",\n \"description\" : \"The description of the app.\",\n \"client_id\" : \"\\\"Iv1.25b5d1e65ffc4022\\\"\",\n \"external_url\" : \"https://example.com\",\n \"updated_at\" : \"2017-07-08T16:18:44-04:00\",\n \"permissions\" : {\n \"deployments\" : \"write\",\n \"issues\" : \"read\"\n },\n \"html_url\" : \"https://github.com/apps/super-ci\",\n \"name\" : \"Probot Owners\",\n \"pem\" : \"\\\"-----BEGIN RSA PRIVATE KEY-----\\\\nMIIEogIBAAKCAQEArYxrNYD/iT5CZVpRJu4rBKmmze3PVmT/gCo2ATUvDvZTPTey\\\\nxcGJ3vvrJXazKk06pN05TN29o98jrYz4cengG3YGsXPNEpKsIrEl8NhbnxapEnM9\\\\nJCMRe0P5JcPsfZlX6hmiT7136GRWiGOUba2X9+HKh8QJVLG5rM007TBER9/z9mWm\\\\nrJuNh+m5l320oBQY/Qq3A7wzdEfZw8qm/mIN0FCeoXH1L6B8xXWaAYBwhTEh6SSn\\\\nZHlO1Xu1JWDmAvBCi0RO5aRSKM8q9QEkvvHP4yweAtK3N8+aAbZ7ovaDhyGz8r6r\\\\nzhU1b8Uo0Z2ysf503WqzQgIajr7Fry7/kUwpgQIDAQABAoIBADwJp80Ko1xHPZDy\\\\nfcCKBDfIuPvkmSW6KumbsLMaQv1aGdHDwwTGv3t0ixSay8CGlxMRtRDyZPib6SvQ\\\\n6OH/lpfpbMdW2ErkksgtoIKBVrDilfrcAvrNZu7NxRNbhCSvN8q0s4ICecjbbVQh\\\\nnueSdlA6vGXbW58BHMq68uRbHkP+k+mM9U0mDJ1HMch67wlg5GbayVRt63H7R2+r\\\\nVxcna7B80J/lCEjIYZznawgiTvp3MSanTglqAYi+m1EcSsP14bJIB9vgaxS79kTu\\\\noiSo93leJbBvuGo8QEiUqTwMw4tDksmkLsoqNKQ1q9P7LZ9DGcujtPy4EZsamSJT\\\\ny8OJt0ECgYEA2lxOxJsQk2kI325JgKFjo92mQeUObIvPfSNWUIZQDTjniOI6Gv63\\\\nGLWVFrZcvQBWjMEQraJA9xjPbblV8PtfO87MiJGLWCHFxmPz2dzoedN+2Coxom8m\\\\nV95CLz8QUShuao6u/RYcvUaZEoYs5bHcTmy5sBK80JyEmafJPtCQVxMCgYEAy3ar\\\\nZr3yv4xRPEPMat4rseswmuMooSaK3SKub19WFI5IAtB/e7qR1Rj9JhOGcZz+OQrl\\\\nT78O2OFYlgOIkJPvRMrPpK5V9lslc7tz1FSh3BZMRGq5jSyD7ETSOQ0c8T2O/s7v\\\\nbeEPbVbDe4mwvM24XByH0GnWveVxaDl51ABD65sCgYB3ZAspUkOA5egVCh8kNpnd\\\\nSd6SnuQBE3ySRlT2WEnCwP9Ph6oPgn+oAfiPX4xbRqkL8q/k0BdHQ4h+zNwhk7+h\\\\nWtPYRAP1Xxnc/F+jGjb+DVaIaKGU18MWPg7f+FI6nampl3Q0KvfxwX0GdNhtio8T\\\\nTj1E+SnFwh56SRQuxSh2gwKBgHKjlIO5NtNSflsUYFM+hyQiPiqnHzddfhSG+/3o\\\\nm5nNaSmczJesUYreH5San7/YEy2UxAugvP7aSY2MxB+iGsiJ9WD2kZzTUlDZJ7RV\\\\nUzWsoqBR+eZfVJ2FUWWvy8TpSG6trh4dFxImNtKejCR1TREpSiTV3Zb1dmahK9GV\\\\nrK9NAoGAbBxRLoC01xfxCTgt5BDiBcFVh4fp5yYKwavJPLzHSpuDOrrI9jDn1oKN\\\\nonq5sDU1i391zfQvdrbX4Ova48BN+B7p63FocP/MK5tyyBoT8zQEk2+vWDOw7H/Z\\\\nu5dTCPxTIsoIwUw1I+7yIxqJzLPFgR2gVBwY1ra/8iAqCj+zeBw=\\\\n-----END RSA PRIVATE KEY-----\\\\n\\\"\",\n \"webhook_secret\" : \"\\\"6fba8f2fc8a7e8f2cca5577eddd82ca7586b3b6b\\\"\",\n \"client_secret\" : \"\\\"1d4b2097ac622ba702d19de498f005747a8b21d3\\\"\",\n \"id\" : 37,\n \"events\" : [ \"label\", \"deployment\" ],\n \"slug\" : \"probot-owners\",\n \"node_id\" : \"MDExOkludGVncmF0aW9uMQ==\"\n },\n \"updated_at\" : \"2011-04-14T16:00:49Z\",\n \"html_url\" : \"https://web.example.mocklab.io/037791\",\n \"reactions\" : {\n \"confused\" : 5815776160870121534,\n \"-1\" : 5680060033060825542,\n \"+1\" : 2269910465597342002,\n \"total_count\" : 6318196788995077451,\n \"rocket\" : 5333041961107602758,\n \"hooray\" : 7528483969834877944,\n \"eyes\" : 4864250670147981728,\n \"heart\" : 317714875916752613,\n \"laugh\" : 5802522122981332680,\n \"url\" : \"https://web.example.mocklab.io/597383\"\n },\n \"id\" : 42,\n \"user\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"tracey.bins\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"8wjgjcxw76ehhkelq10hswnkcn9hnhz8dhxuaimk1v9vfes2kmyrtjc7yg9t0fm7r\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"node_id\" : \"ja8i\"\n }\n },\n \"repo\" : {\n \"name\" : \"Pandora Ziemann\",\n \"id\" : 5013573995201660417,\n \"url\" : \"https://web.example.mocklab.io/153514\"\n },\n \"created_at\" : \"2023-11-09T19:01:49.761Z\",\n \"id\" : \"mueo\",\n \"type\" : \"i71x691juo3hlvx3wgm1c506n1wjb9y06aamnz71scee27mp1s05spu9t3379r2oxxn7i2az3exnlg3pjz03zr8m5xc64knwjr2bjtk8moh9njypujg6u0qpopffzhla9qpul8fa5cxe8r8u6irv9f0mx91b2y4zt2o5lw8jt5580xc00228vxyh8ch0bus6d5dy397\"\n} ]", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "49c492d5-7123-4bc3-a38b-67ea7a921b03", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.762565Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "activity/list-public-events-for-repo-network", + "schema": { + "items": { + "$ref": "#/components/schemas/event" + }, + "type": "array" + } + } + } + }, + "insertionIndex": 1182 + }, + { + "id": "adefd112-809b-41d4-b759-16ce253cb65a", + "name": "Get GitHub Enterprise Server meta information - 304", + "request": { + "urlPath": "/meta", + "method": "GET" + }, + "response": { + "status": 304 + }, + "uuid": "adefd112-809b-41d4-b759-16ce253cb65a", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.729013Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "meta/get" + } + } + }, + "insertionIndex": 1183 + }, + { + "id": "73ab2ab5-9dde-49aa-8743-09fb532b11d9", + "name": "Get GitHub Enterprise Server meta information (application/json) - default", + "request": { + "urlPath": "/meta", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 200, + "body": "{\n \"dependabot\" : [ \"54.158.161.132\" ],\n \"installed_version\" : \"2.21.0\",\n \"packages\" : [ \"192.30.252.0/22\" ],\n \"verifiable_password_authentication\" : true\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "73ab2ab5-9dde-49aa-8743-09fb532b11d9", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.728989Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "meta/get", + "schema": { + "description": "Api Overview", + "properties": { + "dependabot": { + "example": ["192.168.7.15/32", "192.168.7.16/32"], + "items": { + "type": "string" + }, + "type": "array" + }, + "installed_version": { + "example": "2.21.0", + "type": "string" + }, + "packages": { + "example": ["13.65.0.0/16", "157.55.204.33/32", "2a01:111:f403:f90c::/62"], + "items": { + "type": "string" + }, + "type": "array" + }, + "verifiable_password_authentication": { + "example": true, + "type": "boolean" + } + }, + "required": ["verifiable_password_authentication"], + "title": "Api Overview", + "type": "object" + } + } + } + }, + "insertionIndex": 1184 + }, + { + "id": "756902b6-68a0-41db-ab3d-b3ee7dedc274", + "name": "Render a Markdown document in raw mode - 304", + "request": { + "urlPath": "/markdown/raw", + "method": "POST" + }, + "response": { + "status": 304 + }, + "uuid": "756902b6-68a0-41db-ab3d-b3ee7dedc274", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.728895Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "markdown/render-raw" + } + } + }, + "insertionIndex": 1185 + }, + { + "id": "d0686033-8d5a-4d84-b1b0-1e6da889966f", + "name": "Render a Markdown document in raw mode (text/html)", + "request": { + "urlPath": "/markdown/raw", + "method": "POST", + "headers": { + "Accept": { + "contains": "text/html" + } + } + }, + "response": { + "status": 200, + "body": "\"uxnempxiuvpt4kkm1lgdkh38c8yl8l8svnnhvfhsf5s5wwcm42zc2cw36s9rmxuocs5kzl3dow7as68n87q5l6h7vaowyht6zaal28pp9t9k55wocxuamrj8xh61\"", + "headers": { + "Content-Type": "text/html" + } + }, + "uuid": "d0686033-8d5a-4d84-b1b0-1e6da889966f", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.728872Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "markdown/render-raw", + "schema": { + "type": "string" + } + } + } + }, + "insertionIndex": 1186 + }, + { + "id": "83771818-faa1-4aa6-bd7d-09fc6f56c100", + "name": "Render a Markdown document - 304", + "request": { + "urlPath": "/markdown", + "method": "POST" + }, + "response": { + "status": 304 + }, + "uuid": "83771818-faa1-4aa6-bd7d-09fc6f56c100", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.728832Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "markdown/render" + } + } + }, + "insertionIndex": 1187 + }, + { + "id": "7891fd50-062c-48c6-adb0-af532ce7ff48", + "name": "Render a Markdown document (text/html)", + "request": { + "urlPath": "/markdown", + "method": "POST", + "headers": { + "Accept": { + "contains": "text/html" + } + } + }, + "response": { + "status": 200, + "body": "\"lpdorfaugpfg1a4vnswnhvjslau8ckvt0npxpule4mgjsi6iy8nswslzuxxvj3brjj9riebjw42jz2c7fs9zg9gobgbhjfs0vc9pegspelyhdgiaia5xxpvnezpv0wr9y52vgnsb4s38v0ruvwn96c0q\"", + "headers": { + "Content-Type": "text/html" + } + }, + "uuid": "7891fd50-062c-48c6-adb0-af532ce7ff48", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.728809Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "markdown/render", + "schema": { + "type": "string" + } + } + } + }, + "insertionIndex": 1188 + }, + { + "id": "1772a017-fbef-4ed3-89fe-74d58f0a34f6", + "name": "Get a license (application/json)", + "request": { + "urlPath": "/licenses/i0eb4qq3wd0", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/941474\",\n \"message\" : \"Nisi libero velit illum. Nobis nihil autem ratione molestias cumque et corporis. Aperiam est quibusdam cum architecto dolor facere.\",\n \"url\" : \"https://web.example.mocklab.io/841691\",\n \"status\" : \"fqr8lslcv0cajnye3uezqnnc7ru9gvzleld3rfsw5fhjdyxskv2z8pz62lj6516jxtgohtzttdczkt19o0aqrn2owgdxzytte85yrt6zr6h9gv2xjmp082u974rrp7m7kxsl4ztgvy91g1os9zk9edh6i1yq9aqjzojhtd4z65vz5f7p\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "1772a017-fbef-4ed3-89fe-74d58f0a34f6", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.728758Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "licenses/get", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 1189 + }, + { + "id": "1d058086-de87-4f84-8674-5dd5dc984f7b", + "name": "Get a license (application/json)", + "request": { + "urlPath": "/licenses/qce2crrpuzd6u41gwvq6cpotn9k87hnzkl80yseno3hc80k7lkwjrxnwhcbz92s1h6p9ls", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 403, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/014181\",\n \"message\" : \"Aut similique reiciendis optio ut debitis. Tempora eveniet porro sequi. Impedit est fugit ab voluptate et ut quia. At possimus autem et minus. Eos sapiente deleniti aspernatur velit quia.\",\n \"url\" : \"https://web.example.mocklab.io/848279\",\n \"status\" : \"5rtdtagv9cau1upnaqr87sd38mxmf0ou\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "1d058086-de87-4f84-8674-5dd5dc984f7b", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.728534Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "licenses/get", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 1190 + }, + { + "id": "0d7bd788-bb90-4831-aa36-b8956e3a5459", + "name": "Get a license - 304", + "request": { + "urlPath": "/licenses/ne1dectq35kjtxsv71c6zony", + "method": "GET" + }, + "response": { + "status": 304 + }, + "uuid": "0d7bd788-bb90-4831-aa36-b8956e3a5459", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.728291Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "licenses/get" + } + } + }, + "insertionIndex": 1191 + }, + { + "id": "2fe196d5-b575-43ab-b9a1-4feea4c6a0e6", + "name": "Get a license (application/json) - default", + "request": { + "urlPath": "/licenses/kaplzurskfhihzcc4l3yqpv078q950glgvyr2hg835u25rgdvg8b07td3w2dycr70s8g7bdeufmnwohwk49jmrdcyevx33ud2c0nqp6cyttamajpqt91bkwmg208e15ro7q63jrgekuj6ti1d", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 200, + "body": "{\n \"body\" : \"\\n\\nThe MIT License (MIT)\\n\\nCopyright (c) [year] [fullname]\\n\\nPermission is hereby granted, free of charge, to any person obtaining a copy\\nof this software and associated documentation files (the \\\"Software\\\"), to deal\\nin the Software without restriction, including without limitation the rights\\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\\ncopies of the Software, and to permit persons to whom the Software is\\nfurnished to do so, subject to the following conditions:\\n\\nThe above copyright notice and this permission notice shall be included in all\\ncopies or substantial portions of the Software.\\n\\nTHE SOFTWARE IS PROVIDED \\\"AS IS\\\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\\nSOFTWARE.\\n\",\n \"conditions\" : [ \"include-copyright\" ],\n \"description\" : \"A permissive license that is short and to the point. It lets people do anything with your code with proper attribution and without warranty.\",\n \"featured\" : true,\n \"html_url\" : \"http://choosealicense.com/licenses/mit/\",\n \"implementation\" : \"Create a text file (typically named LICENSE or LICENSE.txt) in the root of your source code and copy the text of the license into the file. Replace [year] with the current year and [fullname] with the name (or names) of the copyright holders.\",\n \"key\" : \"mit\",\n \"limitations\" : [ \"no-liability\" ],\n \"name\" : \"MIT License\",\n \"node_id\" : \"MDc6TGljZW5zZW1pdA==\",\n \"permissions\" : [ \"commercial-use\", \"modifications\", \"distribution\", \"sublicense\", \"private-use\" ],\n \"spdx_id\" : \"MIT\",\n \"url\" : \"https://api.github.com/licenses/mit\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "2fe196d5-b575-43ab-b9a1-4feea4c6a0e6", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.728249Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "licenses/get", + "schema": { + "description": "License", + "properties": { + "body": { + "example": "\n\nThe MIT License (MIT)\n\nCopyright (c) [year] [fullname]\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n", + "type": "string" + }, + "conditions": { + "example": ["include-copyright"], + "items": { + "type": "string" + }, + "type": "array" + }, + "description": { + "example": "A permissive license that is short and to the point. It lets people do anything with your code with proper attribution and without warranty.", + "type": "string" + }, + "featured": { + "example": true, + "type": "boolean" + }, + "html_url": { + "example": "http://choosealicense.com/licenses/mit/", + "format": "uri", + "type": "string" + }, + "implementation": { + "example": "Create a text file (typically named LICENSE or LICENSE.txt) in the root of your source code and copy the text of the license into the file. Replace [year] with the current year and [fullname] with the name (or names) of the copyright holders.", + "type": "string" + }, + "key": { + "example": "mit", + "type": "string" + }, + "limitations": { + "example": ["no-liability"], + "items": { + "type": "string" + }, + "type": "array" + }, + "name": { + "example": "MIT License", + "type": "string" + }, + "node_id": { + "example": "MDc6TGljZW5zZW1pdA==", + "type": "string" + }, + "permissions": { + "example": [ + "commercial-use", + "modifications", + "distribution", + "sublicense", + "private-use" + ], + "items": { + "type": "string" + }, + "type": "array" + }, + "spdx_id": { + "example": "MIT", + "nullable": true, + "type": "string" + }, + "url": { + "example": "https://api.github.com/licenses/mit", + "format": "uri", + "nullable": true, + "type": "string" + } + }, + "required": [ + "key", + "name", + "url", + "spdx_id", + "node_id", + "html_url", + "description", + "implementation", + "permissions", + "conditions", + "limitations", + "body", + "featured" + ], + "title": "License", + "type": "object" + } + } + } + }, + "insertionIndex": 1192 + }, + { + "id": "7a1b8f6e-589e-433e-8466-95b459766721", + "name": "Get all commonly used licenses - 304", + "request": { + "urlPath": "/licenses", + "method": "GET" + }, + "response": { + "status": 304 + }, + "uuid": "7a1b8f6e-589e-433e-8466-95b459766721", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.728007Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "licenses/get-all-commonly-used" + } + } + }, + "insertionIndex": 1193 + }, + { + "id": "460e3fce-21cd-46a5-a3a7-6a9fbc961c94", + "name": "Get all commonly used licenses (application/json) - default", + "request": { + "urlPath": "/licenses", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 200, + "body": "[ {\n \"key\" : \"mit\",\n \"name\" : \"MIT License\",\n \"node_id\" : \"MDc6TGljZW5zZW1pdA==\",\n \"spdx_id\" : \"MIT\",\n \"url\" : \"https://api.github.com/licenses/mit\"\n}, {\n \"key\" : \"lgpl-3.0\",\n \"name\" : \"GNU Lesser General Public License v3.0\",\n \"node_id\" : \"MDc6TGljZW5zZW1pdA==\",\n \"spdx_id\" : \"LGPL-3.0\",\n \"url\" : \"https://api.github.com/licenses/lgpl-3.0\"\n}, {\n \"key\" : \"mpl-2.0\",\n \"name\" : \"Mozilla Public License 2.0\",\n \"node_id\" : \"MDc6TGljZW5zZW1pdA==\",\n \"spdx_id\" : \"MPL-2.0\",\n \"url\" : \"https://api.github.com/licenses/mpl-2.0\"\n}, {\n \"key\" : \"agpl-3.0\",\n \"name\" : \"GNU Affero General Public License v3.0\",\n \"node_id\" : \"MDc6TGljZW5zZW1pdA==\",\n \"spdx_id\" : \"AGPL-3.0\",\n \"url\" : \"https://api.github.com/licenses/agpl-3.0\"\n}, {\n \"key\" : \"unlicense\",\n \"name\" : \"The Unlicense\",\n \"node_id\" : \"MDc6TGljZW5zZW1pdA==\",\n \"spdx_id\" : \"Unlicense\",\n \"url\" : \"https://api.github.com/licenses/unlicense\"\n}, {\n \"key\" : \"apache-2.0\",\n \"name\" : \"Apache License 2.0\",\n \"node_id\" : \"MDc6TGljZW5zZW1pdA==\",\n \"spdx_id\" : \"Apache-2.0\",\n \"url\" : \"https://api.github.com/licenses/apache-2.0\"\n}, {\n \"key\" : \"gpl-3.0\",\n \"name\" : \"GNU General Public License v3.0\",\n \"node_id\" : \"MDc6TGljZW5zZW1pdA==\",\n \"spdx_id\" : \"GPL-3.0\",\n \"url\" : \"https://api.github.com/licenses/gpl-3.0\"\n} ]", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "460e3fce-21cd-46a5-a3a7-6a9fbc961c94", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.727984Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "licenses/get-all-commonly-used", + "schema": { + "items": { + "$ref": "#/components/schemas/license-simple" + }, + "type": "array" + } + } + } + }, + "insertionIndex": 1194 + }, + { + "id": "c8d1249b-8862-4935-b493-eae4eb92cabb", + "name": "List issues assigned to the authenticated user (application/json)", + "request": { + "urlPath": "/issues", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 422, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/681202\",\n \"message\" : \"Sunt id vitae quae ut. Aliquid quam in labore mollitia. Optio ut qui sit voluptatem facilis.\",\n \"errors\" : [ {\n \"code\" : \"gtesliejzpgbvx70te7m42r8yvlpha65s45gkod2a\",\n \"field\" : \"0go9g8tymqpqe6nms9fol05nf8wfuvyj3wwdnpa4xeehxrr42m2fbjk5f1u5jqya447rmadgf6azhwphw1pe4feoogh\",\n \"resource\" : \"u9bp79y\",\n \"index\" : 2558314717934580456,\n \"message\" : \"Unde dolores qui. Soluta numquam consequatur voluptas explicabo libero placeat deserunt. Explicabo consequuntur est corporis voluptates aut. Illo maxime consequatur quo aut.\",\n \"value\" : { }\n }, {\n \"code\" : \"s2i1rkjefit6ofpbq76ll26eq0xenag9mg3lmdlxob5smoqtipnb2j2sfgguk37xhki61qdyqxpskk3k\",\n \"field\" : \"nzkrsdx3ct5swd7jqt3m4r0m8wlye0xovzx08\",\n \"resource\" : \"e77glc3kbzmhr1l6j2j8nkehf26f8yrfjv6hpq9ppdr4xt31ttw5i3rydlnl0gx1yjbh8ru814ovefprnmnxh2twwc13qctsfib5g69l7bhr1hno3dpnja4e31obccitcpa56jcd4vso31aprdxiepglu9pafaqz\",\n \"index\" : 2132841241289791509,\n \"message\" : \"Rerum voluptas voluptas occaecati alias dolores atque animi. Vitae sed ullam tempore recusandae voluptatem quia. Eligendi eos et et et. Tempora impedit vitae.\",\n \"value\" : { }\n } ]\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "c8d1249b-8862-4935-b493-eae4eb92cabb", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.72793Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "issues/list", + "schema": { + "description": "Validation Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "errors": { + "items": { + "properties": { + "code": { + "type": "string" + }, + "field": { + "type": "string" + }, + "index": { + "type": "integer" + }, + "message": { + "type": "string" + }, + "resource": { + "type": "string" + }, + "value": { + "oneOf": [ + { + "nullable": true, + "type": "string" + }, + { + "nullable": true, + "type": "integer" + }, + { + "items": { + "type": "string" + }, + "nullable": true, + "type": "array" + } + ] + } + }, + "required": ["code"], + "type": "object" + }, + "type": "array" + }, + "message": { + "type": "string" + } + }, + "required": ["message", "documentation_url"], + "title": "Validation Error", + "type": "object" + } + } + } + }, + "insertionIndex": 1195 + }, + { + "id": "20a3f8d1-af5d-465a-a952-f0ee56e24c6a", + "name": "List issues assigned to the authenticated user (application/json)", + "request": { + "urlPath": "/issues", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/135105\",\n \"message\" : \"Aliquid voluptatem non repudiandae qui dolores qui laborum. Sint ipsa labore. Exercitationem voluptatibus iure hic ad. Libero est non. Ut voluptatem quas impedit exercitationem velit.\",\n \"url\" : \"https://web.example.mocklab.io/306083\",\n \"status\" : \"c9y50dr9eukjcxw7xz751eu7dw3yf9w8f8fj5zbpy0akirqghtfr71u8jw81no7kd6m21x5cbe3exjb56cnfy4jeeofbxqgn1rwphty6vnk\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "20a3f8d1-af5d-465a-a952-f0ee56e24c6a", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.727523Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "issues/list", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 1196 + }, + { + "id": "10836c68-d3f3-4a68-9651-952d6889d853", + "name": "List issues assigned to the authenticated user - 304", + "request": { + "urlPath": "/issues", + "method": "GET" + }, + "response": { + "status": 304 + }, + "uuid": "10836c68-d3f3-4a68-9651-952d6889d853", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.727309Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "issues/list" + } + } + }, + "insertionIndex": 1197 + }, + { + "id": "7061fcd8-1053-4281-8a6c-50dd5ffe9c5c", + "name": "List issues assigned to the authenticated user (application/json) - default", + "request": { + "urlPath": "/issues", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 200, + "body": "[ {\n \"active_lock_reason\" : \"too heated\",\n \"assignee\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"assignees\" : [ {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n } ],\n \"author_association\" : \"COLLABORATOR\",\n \"body\" : \"I'm having a problem with this.\",\n \"comments\" : 0,\n \"comments_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347/comments\",\n \"created_at\" : \"2011-04-22T13:33:48Z\",\n \"events_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347/events\",\n \"html_url\" : \"https://github.com/octocat/Hello-World/issues/1347\",\n \"id\" : 1,\n \"labels\" : [ {\n \"color\" : \"f29513\",\n \"default\" : true,\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"name\" : \"bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/labels/bug\"\n } ],\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347/labels{/name}\",\n \"locked\" : true,\n \"milestone\" : {\n \"closed_at\" : \"2013-02-12T13:22:01Z\",\n \"closed_issues\" : 8,\n \"created_at\" : \"2011-04-10T20:09:31Z\",\n \"creator\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"description\" : \"Tracking milestone for version 1.0\",\n \"due_on\" : \"2012-10-09T23:39:01Z\",\n \"html_url\" : \"https://github.com/octocat/Hello-World/milestones/v1.0\",\n \"id\" : 1002604,\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones/1/labels\",\n \"node_id\" : \"MDk6TWlsZXN0b25lMTAwMjYwNA==\",\n \"number\" : 1,\n \"open_issues\" : 4,\n \"state\" : \"open\",\n \"title\" : \"v1.0\",\n \"updated_at\" : \"2014-03-03T18:58:10Z\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones/1\"\n },\n \"node_id\" : \"MDU6SXNzdWUx\",\n \"number\" : 1347,\n \"pull_request\" : {\n \"diff_url\" : \"https://github.com/octocat/Hello-World/pull/1347.diff\",\n \"html_url\" : \"https://github.com/octocat/Hello-World/pull/1347\",\n \"patch_url\" : \"https://github.com/octocat/Hello-World/pull/1347.patch\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/pulls/1347\"\n },\n \"repository\" : {\n \"allow_merge_commit\" : true,\n \"allow_rebase_merge\" : true,\n \"allow_squash_merge\" : true,\n \"archive_url\" : \"https://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref}\",\n \"archived\" : false,\n \"assignees_url\" : \"https://api.github.com/repos/octocat/Hello-World/assignees{/user}\",\n \"blobs_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/blobs{/sha}\",\n \"branches_url\" : \"https://api.github.com/repos/octocat/Hello-World/branches{/branch}\",\n \"clone_url\" : \"https://github.com/octocat/Hello-World.git\",\n \"collaborators_url\" : \"https://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator}\",\n \"comments_url\" : \"https://api.github.com/repos/octocat/Hello-World/comments{/number}\",\n \"commits_url\" : \"https://api.github.com/repos/octocat/Hello-World/commits{/sha}\",\n \"compare_url\" : \"https://api.github.com/repos/octocat/Hello-World/compare/{base}...{head}\",\n \"contents_url\" : \"https://api.github.com/repos/octocat/Hello-World/contents/{+path}\",\n \"contributors_url\" : \"https://api.github.com/repos/octocat/Hello-World/contributors\",\n \"created_at\" : \"2011-01-26T19:01:12Z\",\n \"default_branch\" : \"master\",\n \"delete_branch_on_merge\" : true,\n \"deployments_url\" : \"https://api.github.com/repos/octocat/Hello-World/deployments\",\n \"description\" : \"This your first repo!\",\n \"disabled\" : false,\n \"downloads_url\" : \"https://api.github.com/repos/octocat/Hello-World/downloads\",\n \"events_url\" : \"https://api.github.com/repos/octocat/Hello-World/events\",\n \"fork\" : false,\n \"forks\" : 1,\n \"forks_count\" : 9,\n \"forks_url\" : \"https://api.github.com/repos/octocat/Hello-World/forks\",\n \"full_name\" : \"octocat/Hello-World\",\n \"git_commits_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/commits{/sha}\",\n \"git_refs_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/refs{/sha}\",\n \"git_tags_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/tags{/sha}\",\n \"git_url\" : \"git:github.com/octocat/Hello-World.git\",\n \"has_downloads\" : true,\n \"has_issues\" : true,\n \"has_pages\" : false,\n \"has_projects\" : true,\n \"has_wiki\" : true,\n \"homepage\" : \"https://github.com\",\n \"hooks_url\" : \"https://api.github.com/repos/octocat/Hello-World/hooks\",\n \"html_url\" : \"https://github.com/octocat/Hello-World\",\n \"id\" : 1296269,\n \"is_template\" : true,\n \"issue_comment_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/comments{/number}\",\n \"issue_events_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/events{/number}\",\n \"issues_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues{/number}\",\n \"keys_url\" : \"https://api.github.com/repos/octocat/Hello-World/keys{/key_id}\",\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World/labels{/name}\",\n \"languages_url\" : \"https://api.github.com/repos/octocat/Hello-World/languages\",\n \"license\" : {\n \"html_url\" : \"https://github.com/licenses/mit\",\n \"key\" : \"mit\",\n \"name\" : \"MIT License\",\n \"node_id\" : \"MDc6TGljZW5zZW1pdA==\",\n \"spdx_id\" : \"MIT\",\n \"url\" : \"https://api.github.com/licenses/mit\"\n },\n \"merges_url\" : \"https://api.github.com/repos/octocat/Hello-World/merges\",\n \"milestones_url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones{/number}\",\n \"mirror_url\" : \"git:git.example.com/octocat/Hello-World\",\n \"name\" : \"Hello-World\",\n \"network_count\" : 0,\n \"node_id\" : \"MDEwOlJlcG9zaXRvcnkxMjk2MjY5\",\n \"notifications_url\" : \"https://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating}\",\n \"open_issues\" : 1,\n \"open_issues_count\" : 0,\n \"owner\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"permissions\" : {\n \"admin\" : false,\n \"pull\" : true,\n \"push\" : false\n },\n \"private\" : false,\n \"pulls_url\" : \"https://api.github.com/repos/octocat/Hello-World/pulls{/number}\",\n \"pushed_at\" : \"2011-01-26T19:06:43Z\",\n \"releases_url\" : \"https://api.github.com/repos/octocat/Hello-World/releases{/id}\",\n \"size\" : 108,\n \"ssh_url\" : \"git@github.com:octocat/Hello-World.git\",\n \"stargazers_count\" : 80,\n \"stargazers_url\" : \"https://api.github.com/repos/octocat/Hello-World/stargazers\",\n \"statuses_url\" : \"https://api.github.com/repos/octocat/Hello-World/statuses/{sha}\",\n \"subscribers_count\" : 42,\n \"subscribers_url\" : \"https://api.github.com/repos/octocat/Hello-World/subscribers\",\n \"subscription_url\" : \"https://api.github.com/repos/octocat/Hello-World/subscription\",\n \"svn_url\" : \"https://svn.github.com/octocat/Hello-World\",\n \"tags_url\" : \"https://api.github.com/repos/octocat/Hello-World/tags\",\n \"teams_url\" : \"https://api.github.com/repos/octocat/Hello-World/teams\",\n \"temp_clone_token\" : \"ABTLWHOULUVAXGTRYU7OC2876QJ2O\",\n \"topics\" : [ \"octocat\", \"atom\", \"electron\", \"api\" ],\n \"trees_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/trees{/sha}\",\n \"updated_at\" : \"2011-01-26T19:14:43Z\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World\",\n \"visibility\" : \"public\",\n \"watchers\" : 1,\n \"watchers_count\" : 80\n },\n \"repository_url\" : \"https://api.github.com/repos/octocat/Hello-World\",\n \"state\" : \"open\",\n \"title\" : \"Found a bug\",\n \"updated_at\" : \"2011-04-22T13:33:48Z\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347\",\n \"user\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n }\n} ]", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "7061fcd8-1053-4281-8a6c-50dd5ffe9c5c", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.727283Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "issues/list", + "schema": { + "items": { + "$ref": "#/components/schemas/issue" + }, + "type": "array" + } + } + } + }, + "insertionIndex": 1198 + }, + { + "id": "ab9cc1cd-49c4-45e0-80db-4b8f61c279f9", + "name": "Revoke an installation access token - 204", + "request": { + "urlPath": "/installation/token", + "method": "DELETE" + }, + "response": { + "status": 204 + }, + "uuid": "ab9cc1cd-49c4-45e0-80db-4b8f61c279f9", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.727179Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "apps/revoke-installation-access-token" + } + } + }, + "insertionIndex": 1199 + }, + { + "id": "435d03f7-f911-456e-9383-be104becace0", + "name": "List repositories accessible to the app installation (application/json)", + "request": { + "urlPath": "/installation/repositories", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 403, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/068796\",\n \"message\" : \"Iure odit aut illum et. Doloribus molestiae et voluptatem enim nobis. Voluptas cupiditate dolore iusto corrupti beatae totam libero. Molestiae numquam dolorum voluptas inventore.\",\n \"url\" : \"https://web.example.mocklab.io/627938\",\n \"status\" : \"l2tqso3oopupxi8664j5cemktxezaz4gwfobh1aszqcteyfdwicb3ua5631ocb2hado6016n4a9d2u1t035qunz8ryhkjwn9s6bd5nfuhg5tu1cti03m6j8gqlbq53pnbwozon4orm1mtssul0suqcbl82mlju1jpsfoqaayjesycqjnz5ecz\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "435d03f7-f911-456e-9383-be104becace0", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.727151Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "apps/list-repos-accessible-to-installation", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 1200 + }, + { + "id": "3e55e0a1-7088-4ab0-ae42-286218279ea4", + "name": "List repositories accessible to the app installation (application/json)", + "request": { + "urlPath": "/installation/repositories", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 401, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/440306\",\n \"message\" : \"Ex optio consectetur consequatur sequi. Iure repudiandae aperiam commodi eum nisi totam at. Ut incidunt dolores adipisci sed itaque. Magnam eos ea occaecati.\",\n \"url\" : \"https://web.example.mocklab.io/596820\",\n \"status\" : \"o9taedp9iwoedvuhqcadr7yonflm74m4p4g063skjowd7t9tl2z9u75t70oajvaj7usf8udurcxjwyq34p74wn79jsuut7y8jzcn4fac5jxi0x11al9ur1du8dc287m8dfiwlhd6ujmsvifz4yy05oy9qkpqdfuek9wvdgl7dfpc5qb768ukblaa81nbig7fpzrqvtu\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "3e55e0a1-7088-4ab0-ae42-286218279ea4", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.726934Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "apps/list-repos-accessible-to-installation", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 1201 + }, + { + "id": "62912220-ce1c-46d0-8629-0abd3ce82cdf", + "name": "List repositories accessible to the app installation - 304", + "request": { + "urlPath": "/installation/repositories", + "method": "GET" + }, + "response": { + "status": 304 + }, + "uuid": "62912220-ce1c-46d0-8629-0abd3ce82cdf", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.726722Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "apps/list-repos-accessible-to-installation" + } + } + }, + "insertionIndex": 1202 + }, + { + "id": "f0429b59-a084-473d-a393-6717789a7625", + "name": "List repositories accessible to the app installation (application/json) - default", + "request": { + "urlPath": "/installation/repositories", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 200, + "body": "{\n \"repositories\" : [ {\n \"allow_merge_commit\" : true,\n \"allow_rebase_merge\" : true,\n \"allow_squash_merge\" : true,\n \"archive_url\" : \"https://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref}\",\n \"archived\" : false,\n \"assignees_url\" : \"https://api.github.com/repos/octocat/Hello-World/assignees{/user}\",\n \"blobs_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/blobs{/sha}\",\n \"branches_url\" : \"https://api.github.com/repos/octocat/Hello-World/branches{/branch}\",\n \"clone_url\" : \"https://github.com/octocat/Hello-World.git\",\n \"collaborators_url\" : \"https://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator}\",\n \"comments_url\" : \"https://api.github.com/repos/octocat/Hello-World/comments{/number}\",\n \"commits_url\" : \"https://api.github.com/repos/octocat/Hello-World/commits{/sha}\",\n \"compare_url\" : \"https://api.github.com/repos/octocat/Hello-World/compare/{base}...{head}\",\n \"contents_url\" : \"https://api.github.com/repos/octocat/Hello-World/contents/{+path}\",\n \"contributors_url\" : \"https://api.github.com/repos/octocat/Hello-World/contributors\",\n \"created_at\" : \"2011-01-26T19:01:12Z\",\n \"default_branch\" : \"master\",\n \"delete_branch_on_merge\" : true,\n \"deployments_url\" : \"https://api.github.com/repos/octocat/Hello-World/deployments\",\n \"description\" : \"This your first repo!\",\n \"disabled\" : false,\n \"downloads_url\" : \"https://api.github.com/repos/octocat/Hello-World/downloads\",\n \"events_url\" : \"https://api.github.com/repos/octocat/Hello-World/events\",\n \"fork\" : false,\n \"forks\" : 1,\n \"forks_count\" : 9,\n \"forks_url\" : \"https://api.github.com/repos/octocat/Hello-World/forks\",\n \"full_name\" : \"octocat/Hello-World\",\n \"git_commits_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/commits{/sha}\",\n \"git_refs_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/refs{/sha}\",\n \"git_tags_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/tags{/sha}\",\n \"git_url\" : \"git:github.com/octocat/Hello-World.git\",\n \"has_downloads\" : true,\n \"has_issues\" : true,\n \"has_pages\" : false,\n \"has_projects\" : true,\n \"has_wiki\" : true,\n \"homepage\" : \"https://github.com\",\n \"hooks_url\" : \"https://api.github.com/repos/octocat/Hello-World/hooks\",\n \"html_url\" : \"https://github.com/octocat/Hello-World\",\n \"id\" : 1296269,\n \"is_template\" : true,\n \"issue_comment_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/comments{/number}\",\n \"issue_events_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/events{/number}\",\n \"issues_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues{/number}\",\n \"keys_url\" : \"https://api.github.com/repos/octocat/Hello-World/keys{/key_id}\",\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World/labels{/name}\",\n \"languages_url\" : \"https://api.github.com/repos/octocat/Hello-World/languages\",\n \"license\" : {\n \"html_url\" : \"https://github.com/licenses/mit\",\n \"key\" : \"mit\",\n \"name\" : \"MIT License\",\n \"node_id\" : \"MDc6TGljZW5zZW1pdA==\",\n \"spdx_id\" : \"MIT\",\n \"url\" : \"https://api.github.com/licenses/mit\"\n },\n \"merges_url\" : \"https://api.github.com/repos/octocat/Hello-World/merges\",\n \"milestones_url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones{/number}\",\n \"mirror_url\" : \"git:git.example.com/octocat/Hello-World\",\n \"name\" : \"Hello-World\",\n \"network_count\" : 0,\n \"node_id\" : \"MDEwOlJlcG9zaXRvcnkxMjk2MjY5\",\n \"notifications_url\" : \"https://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating}\",\n \"open_issues\" : 1,\n \"open_issues_count\" : 0,\n \"owner\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"private\" : false,\n \"pulls_url\" : \"https://api.github.com/repos/octocat/Hello-World/pulls{/number}\",\n \"pushed_at\" : \"2011-01-26T19:06:43Z\",\n \"releases_url\" : \"https://api.github.com/repos/octocat/Hello-World/releases{/id}\",\n \"size\" : 108,\n \"ssh_url\" : \"git@github.com:octocat/Hello-World.git\",\n \"stargazers_count\" : 80,\n \"stargazers_url\" : \"https://api.github.com/repos/octocat/Hello-World/stargazers\",\n \"statuses_url\" : \"https://api.github.com/repos/octocat/Hello-World/statuses/{sha}\",\n \"subscribers_count\" : 42,\n \"subscribers_url\" : \"https://api.github.com/repos/octocat/Hello-World/subscribers\",\n \"subscription_url\" : \"https://api.github.com/repos/octocat/Hello-World/subscription\",\n \"svn_url\" : \"https://svn.github.com/octocat/Hello-World\",\n \"tags_url\" : \"https://api.github.com/repos/octocat/Hello-World/tags\",\n \"teams_url\" : \"https://api.github.com/repos/octocat/Hello-World/teams\",\n \"temp_clone_token\" : \"ABTLWHOULUVAXGTRYU7OC2876QJ2O\",\n \"topics\" : [ \"octocat\", \"atom\", \"electron\", \"api\" ],\n \"trees_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/trees{/sha}\",\n \"updated_at\" : \"2011-01-26T19:14:43Z\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World\",\n \"visibility\" : \"public\",\n \"watchers\" : 1,\n \"watchers_count\" : 80\n } ],\n \"total_count\" : 1\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "f0429b59-a084-473d-a393-6717789a7625", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.726695Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "apps/list-repos-accessible-to-installation", + "schema": { + "properties": { + "repositories": { + "items": { + "$ref": "#/components/schemas/repository" + }, + "type": "array" + }, + "repository_selection": { + "example": "selected", + "type": "string" + }, + "total_count": { + "type": "integer" + } + }, + "required": ["total_count", "repositories"], + "type": "object" + } + } + } + }, + "insertionIndex": 1203 + }, + { + "id": "a0adcaba-b355-4eb8-9af1-a324c8931e1e", + "name": "Get a gitignore template - 304", + "request": { + "urlPath": "/gitignore/templates/Milan+Kiehn+MD", + "method": "GET" + }, + "response": { + "status": 304 + }, + "uuid": "a0adcaba-b355-4eb8-9af1-a324c8931e1e", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.726595Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "gitignore/get-template" + } + } + }, + "insertionIndex": 1204 + }, + { + "id": "63fa969d-453c-4dd4-8071-eedbfd7f0d8d", + "name": "Get a gitignore template (application/json) - default", + "request": { + "urlPath": "/gitignore/templates/Daniel+Oberbrunner", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 200, + "body": "{\n \"name\" : \"C\",\n \"source\" : \"# Object files\\n*.o\\n\\n# Libraries\\n*.lib\\n*.a\\n\\n# Shared objects (inc. Windows DLLs)\\n*.dll\\n*.so\\n*.so.*\\n*.dylib\\n\\n# Executables\\n*.exe\\n*.out\\n*.app\\n\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "63fa969d-453c-4dd4-8071-eedbfd7f0d8d", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.726529Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "gitignore/get-template", + "schema": { + "description": "Gitignore Template", + "properties": { + "name": { + "example": "C", + "type": "string" + }, + "source": { + "example": "# Object files\n*.o\n\n# Libraries\n*.lib\n*.a\n\n# Shared objects (inc. Windows DLLs)\n*.dll\n*.so\n*.so.*\n*.dylib\n\n# Executables\n*.exe\n*.out\n*.app\n", + "type": "string" + } + }, + "required": ["name", "source"], + "title": "Gitignore Template", + "type": "object" + } + } + } + }, + "insertionIndex": 1205 + }, + { + "id": "eefd5be1-2f73-40c5-ba4f-949631f8dceb", + "name": "Get all gitignore templates - 304", + "request": { + "urlPath": "/gitignore/templates", + "method": "GET" + }, + "response": { + "status": 304 + }, + "uuid": "eefd5be1-2f73-40c5-ba4f-949631f8dceb", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.726415Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "gitignore/get-all-templates" + } + } + }, + "insertionIndex": 1206 + }, + { + "id": "8df66fad-26d5-4cd5-8a58-db88cb97cd41", + "name": "Get all gitignore templates (application/json)", + "request": { + "urlPath": "/gitignore/templates", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 200, + "body": "[ \"Actionscript\", \"Android\", \"AppceleratorTitanium\", \"Autotools\", \"Bancha\", \"C\", \"C++\" ]", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "8df66fad-26d5-4cd5-8a58-db88cb97cd41", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.726391Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "gitignore/get-all-templates", + "schema": { + "items": { + "type": "string" + }, + "type": "array" + } + } + } + }, + "insertionIndex": 1207 + }, + { + "id": "3428615b-2ca0-42de-84b7-13c081f353c8", + "name": "Get a gist revision", + "request": { + "urlPath": "/gists/56z9/nrj32dok9eoq78au7icgemh1o4luhvltt5iu20mflg2w5g3vocsdadmr3on04mu7l2st2fzd61ak52tg68ok72475nbe1w50pwr5p4zyyxe18y6xcbxqlyf3tiwsgyxi4q9u0h5729ykpk36czhylqv", + "method": "GET" + }, + "response": { + "status": 422, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/450595\",\n \"message\" : \"Aperiam fugiat culpa ipsa eaque sequi vitae. Provident ut aperiam id. Excepturi minima et rerum et perspiciatis officia. Quaerat dolores quia.\",\n \"errors\" : [ {\n \"code\" : \"e7shox54qlltx9eq1xc8gi7nk97fzz6r\",\n \"field\" : \"y85abqyjvdyrl0cllrewd9499gzpdfagvt61oeqqxgxl604qvzdhogftjk5e5md0i55cunswkkbfr7wvctt8uc7ypk5quubqqxzbu7ul28pimagbw0agdl3joqy954\",\n \"resource\" : \"nbfxo7yiluwt2hlsr4bqu2bwi5o76wbwho238w6bjhwalqfz6xc2jv4sh7bvfjan26id7u9ygyuct8kkxqd7dqh0cwujqc6clegqsb1wfdbivq4ioishvz1kxeh1\",\n \"index\" : 1182456420184423712,\n \"message\" : \"Occaecati ut sunt aut sapiente. Tenetur enim consequatur labore non qui autem corporis. Esse officiis deleniti assumenda eaque.\",\n \"value\" : { }\n }, {\n \"code\" : \"lj3kglvwtyzg00ikkm8h8g0zboqfuvr9c5xzyaor1mrshf1hyaouusvfdscbkb9u9kc7tufykzuupyg7uhsev676gokjmr1ii8mh5yt1sb3u7z6uls46npsyf1s4hxilk2h062pg5dsl\",\n \"field\" : \"eg6va2gvy1lu96h4y2jktkuu9tvsnp9e10ot87y8tgw92y5yq6afuj2sgklk6ctu7lkhz99nwdhr58yrfsk9z682ogmaevjbkyt0rdfdnhs1j479dxpw4j\",\n \"resource\" : \"dsmmb8wt9ugku06r2vh014dp277xpgji6qqfwnavnmvya7g4ytm5030fe9ovyj23\",\n \"index\" : 9134848875409220259,\n \"message\" : \"Odio rerum nihil incidunt est eveniet et. Repellat fuga fugiat. Eveniet assumenda deserunt sint laboriosam voluptas autem. Suscipit ut ea dicta eos repellat.\",\n \"value\" : { }\n }, {\n \"code\" : \"h45l3600vv2cx2inisprbpe0cf81wqf7zov9omycq0krr86spwsdpygxth9itm4p36fi12gmw8p021abbgeel4ntnwq8m6sicxo01va6bfjrd2v8ghsavrx9twru9c3lqrfwpvnz0tlw1ehxophymy89fp14b4l0lb7g8axageg8x67gsu51v1\",\n \"field\" : \"73xpa0vzqzqz12d68ijxznza3m80wo62j15rrtpvjuf2001ilqc6hxn9wwcireyqq14k0oc65woxzcl68bi08ru6cr1u36pwhj8dyuj9kd7flkc0k3n3rdzc\",\n \"resource\" : \"vlzt23z89s5o8hxoon2u1smsw\",\n \"index\" : 7115175815609836345,\n \"message\" : \"Temporibus voluptatem aut nihil voluptas. Eligendi dolorem dolorum id deleniti est blanditiis enim. Quia reiciendis id.\",\n \"value\" : { }\n }, {\n \"code\" : \"p5wvhyoavqcx7vmaci67z7f7bnyd\",\n \"field\" : \"uiqoux7qsh1gpj6y7rzjcr599ztoxu0b3tue8ktau3m2ln367h8zqaczvvwnr5z2fx60w52mstspp2h7zjvpmzpd2ie9qullp5xkgio51efb86kbgznv6p862tm7cxft96b0\",\n \"resource\" : \"k2z3r7sarj564sfw2vtu2pud2dvcyluckkeobu1uxyn12dxr5lbi6ueal5aenzosa\",\n \"index\" : 5271981334501900757,\n \"message\" : \"Numquam iure vel sint magni sunt impedit similique. Dolores cum in vitae quis quis eum. Aspernatur similique dolorem molestiae a neque.\",\n \"value\" : { }\n }, {\n \"code\" : \"re73cik20syr47a8eoz81ty9ae2dzsydm32td1bt2twiev6ao1ikl36fevru6b7al9zd9enm9ktncxcehonllr24po1cfe4v07v3kz8y2si26901cmr0bypyccduikld0mey20en09esfvfwq6dkav8oqb3p7qy9ogf2y3xqjgedxqstydbfh\",\n \"field\" : \"1wqsq4pwzt4l56363rmxog0k8i90wprucxztbrm0vmrkr8rnincf9q4qc\",\n \"resource\" : \"ve5a3e7ppyy8vgq8yqvklq6k7jpjbe3dacdr07ofjpqpt50w885g1s4gblzzeam80j0acwpbykw9qwon1wbryhu1iy37z5kszqq2u58ly47nkxmizzdx3xn5gnlxakf1flekwkol86lg9jy318\",\n \"index\" : 5513643284012699377,\n \"message\" : \"Dolorum magni sapiente blanditiis qui ea. Consequatur a autem voluptatem. Dolore ut est odio dolor impedit. Ipsam rerum harum et. Dolores qui porro aut deserunt explicabo qui vitae.\",\n \"value\" : { }\n }, {\n \"code\" : \"rb2hgtzcfs24eti8xhw7kw55x3igw1b7vyhmncbomm0e5auh\",\n \"field\" : \"ksdaymfhq0a1020h7\",\n \"resource\" : \"bp6mrrrtblhz44paljsw0jjul\",\n \"index\" : 2877418737213974743,\n \"message\" : \"Fugit nulla laborum dolor est quo perferendis harum. Et iste molestiae voluptate vitae quos delectus dolorem. Tempore ea unde molestias nam qui excepturi autem. In repudiandae deleniti nihil. Voluptas\",\n \"value\" : { }\n }, {\n \"code\" : \"yjh8ye8erqzut4ev8fjuop9lz50o7cf0qzu59h4cha2zcwnpbt7xnyriunyggwq72xjvx5pkpqiwy15mdfpy52vjwxowgklgnww02xy8bouzy7dfy1ix9oih6kwf0mui0682sevlq5ja\",\n \"field\" : \"fyvfeyu8jqg7uobkdotftzd0ux9eaj3bs5kyhydq0yubulq09i4wy5b12fduy4qlfo1ixfdrx2peu0ek45xovz5w3as4yq6dc1scc6agfiq6wh5h7ptz88fc1swts4ecn5nace89h69pup3buisy1sne7b363yu9esmqfkwp91yyjfq5ws6cugna6oe8ipiu81v\",\n \"resource\" : \"kmax08krlukjc6h5na53jrc98k\",\n \"index\" : 6298608006862620031,\n \"message\" : \"Est cumque non est aut reiciendis molestiae. Nisi libero minus officiis odio eum sunt. Sint quibusdam qui id velit corporis id. Accusantium sed ipsam ut.\",\n \"value\" : { }\n } ]\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "3428615b-2ca0-42de-84b7-13c081f353c8", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.726337Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "gists/get-revision", + "schema": { + "description": "Validation Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "errors": { + "items": { + "properties": { + "code": { + "type": "string" + }, + "field": { + "type": "string" + }, + "index": { + "type": "integer" + }, + "message": { + "type": "string" + }, + "resource": { + "type": "string" + }, + "value": { + "oneOf": [ + { + "nullable": true, + "type": "string" + }, + { + "nullable": true, + "type": "integer" + }, + { + "items": { + "type": "string" + }, + "nullable": true, + "type": "array" + } + ] + } + }, + "required": ["code"], + "type": "object" + }, + "type": "array" + }, + "message": { + "type": "string" + } + }, + "required": ["message", "documentation_url"], + "title": "Validation Error", + "type": "object" + } + } + } + }, + "insertionIndex": 1208 + }, + { + "id": "4364e015-510c-43c8-a84d-7e8083edb54d", + "name": "Get a gist revision", + "request": { + "urlPath": "/gists/xpi3/rola2dwo2t7d7aockndbqn2hybxohwdl69yxdnw8gmixz0kat4mkx5t7fujmxmdt2phoa9i9nfqjciem1f1umkv7tnl8nyi9bvon8mlqo8a25xb", + "method": "GET" + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/598643\",\n \"message\" : \"Iste iusto earum sint. Recusandae fuga voluptatibus. Qui expedita iste similique in.\",\n \"url\" : \"https://web.example.mocklab.io/656082\",\n \"status\" : \"e6sxwplgqy7ls15q4o9cqi4dgv3pdvere4k4tqu09hhqa5njyn6fac9itjge28jio4ud2lcpl6eh7hwuedzd2mug4r6wojs6hpz153wbc7fqzf3jy\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "4364e015-510c-43c8-a84d-7e8083edb54d", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.725457Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "gists/get-revision", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 1209 + }, + { + "id": "e6f4a044-8ffd-4a0c-acb5-ec9020c322a2", + "name": "Get a gist revision", + "request": { + "urlPath": "/gists/y9sz/wktzgw9ww9ps4kir234yn3jyflgbvl", + "method": "GET" + }, + "response": { + "status": 403, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/548196\",\n \"message\" : \"Veniam autem velit non dolore quo quia sed. Magnam eligendi laborum maiores ullam et blanditiis ea. Nisi sunt pariatur natus quas saepe ut. Voluptatem et aut nobis illo quis. Quia delectus ab sint.\",\n \"url\" : \"https://web.example.mocklab.io/543269\",\n \"status\" : \"uazuj9gennm6oz8x0p4etz5fap1kn674m4w7aqvnh6fatddebqo08revasgxjnd85moz6zso75165n14za1obmbaraqt0800nk3rpk6dliben49ygrw\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "e6f4a044-8ffd-4a0c-acb5-ec9020c322a2", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.725191Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "gists/get-revision", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 1210 + }, + { + "id": "debb457c-df02-43ef-80e0-320e56fc3e77", + "name": "Get a gist revision - default", + "request": { + "urlPath": "/gists/w1bt/sc1n0cyc7kwgyfc33l2kh07prtrq5bl08vsnv778ujbtbfknriuhg47meyu9crm6tfm2nxtvkvnmwlvqzjf2dvusoj8hmxxl0t0jykqqwm8yj22m23m0ozhcjw1n2fdm8ohy21d3fy5y2mo6kynmdyd8bewqxq9y2ci1", + "method": "GET" + }, + "response": { + "status": 200, + "body": "{\n \"comments\" : 0,\n \"comments_url\" : \"https://api.github.com/gists/aa5a315d61ae9438b18d/comments/\",\n \"commits_url\" : \"https://api.github.com/gists/aa5a315d61ae9438b18d/commits\",\n \"created_at\" : \"2010-04-14T02:15:15Z\",\n \"description\" : \"Hello World Examples\",\n \"forks_url\" : \"https://api.github.com/gists/aa5a315d61ae9438b18d/forks\",\n \"git_pull_url\" : \"https://gist.github.com/aa5a315d61ae9438b18d.git\",\n \"git_push_url\" : \"https://gist.github.com/aa5a315d61ae9438b18d.git\",\n \"html_url\" : \"https://gist.github.com/aa5a315d61ae9438b18d\",\n \"id\" : \"aa5a315d61ae9438b18d\",\n \"node_id\" : \"MDQ6R2lzdGFhNWEzMTVkNjFhZTk0MzhiMThk\",\n \"updated_at\" : \"2011-06-20T11:34:15Z\",\n \"url\" : \"https://api.github.com/gists/aa5a315d61ae9438b18d\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "debb457c-df02-43ef-80e0-320e56fc3e77", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.724884Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "gists/get-revision", + "schema": { + "description": "Gist Simple", + "properties": { + "comments": { + "type": "integer" + }, + "comments_url": { + "type": "string" + }, + "commits_url": { + "type": "string" + }, + "created_at": { + "type": "string" + }, + "description": { + "nullable": true, + "type": "string" + }, + "files": { + "additionalProperties": { + "nullable": true, + "properties": { + "content": { + "type": "string" + }, + "filename": { + "type": "string" + }, + "language": { + "type": "string" + }, + "raw_url": { + "type": "string" + }, + "size": { + "type": "integer" + }, + "truncated": { + "type": "boolean" + }, + "type": { + "type": "string" + } + }, + "type": "object" + }, + "type": "object" + }, + "fork_of": { + "description": "Gist", + "nullable": true, + "properties": { + "comments": { + "type": "integer" + }, + "comments_url": { + "format": "uri", + "type": "string" + }, + "commits_url": { + "format": "uri", + "type": "string" + }, + "created_at": { + "format": "date-time", + "type": "string" + }, + "description": { + "nullable": true, + "type": "string" + }, + "files": { + "additionalProperties": { + "properties": { + "filename": { + "type": "string" + }, + "language": { + "type": "string" + }, + "raw_url": { + "type": "string" + }, + "size": { + "type": "integer" + }, + "type": { + "type": "string" + } + }, + "type": "object" + }, + "type": "object" + }, + "forks": { + "type": "array" + }, + "forks_url": { + "format": "uri", + "type": "string" + }, + "git_pull_url": { + "format": "uri", + "type": "string" + }, + "git_push_url": { + "format": "uri", + "type": "string" + }, + "history": { + "type": "array" + }, + "html_url": { + "format": "uri", + "type": "string" + }, + "id": { + "type": "string" + }, + "node_id": { + "type": "string" + }, + "owner": { + "$ref": "#/components/schemas/nullable-simple-user" + }, + "public": { + "type": "boolean" + }, + "truncated": { + "type": "boolean" + }, + "updated_at": { + "format": "date-time", + "type": "string" + }, + "url": { + "format": "uri", + "type": "string" + }, + "user": { + "$ref": "#/components/schemas/nullable-simple-user" + } + }, + "required": [ + "id", + "node_id", + "url", + "forks_url", + "commits_url", + "git_pull_url", + "git_push_url", + "html_url", + "comments_url", + "public", + "description", + "comments", + "user", + "files", + "created_at", + "updated_at" + ], + "title": "Gist", + "type": "object" + }, + "forks": { + "deprecated": true, + "items": { + "properties": { + "created_at": { + "format": "date-time", + "type": "string" + }, + "id": { + "type": "string" + }, + "updated_at": { + "format": "date-time", + "type": "string" + }, + "url": { + "format": "uri", + "type": "string" + }, + "user": { + "$ref": "#/components/schemas/public-user" + } + }, + "type": "object" + }, + "nullable": true, + "type": "array" + }, + "forks_url": { + "type": "string" + }, + "git_pull_url": { + "type": "string" + }, + "git_push_url": { + "type": "string" + }, + "history": { + "deprecated": true, + "items": { + "$ref": "#/components/schemas/gist-history" + }, + "nullable": true, + "type": "array" + }, + "html_url": { + "type": "string" + }, + "id": { + "type": "string" + }, + "node_id": { + "type": "string" + }, + "owner": { + "$ref": "#/components/schemas/simple-user" + }, + "public": { + "type": "boolean" + }, + "truncated": { + "type": "boolean" + }, + "updated_at": { + "type": "string" + }, + "url": { + "type": "string" + }, + "user": { + "nullable": true, + "type": "string" + } + }, + "title": "Gist Simple", + "type": "object" + } + } + } + }, + "insertionIndex": 1211 + }, + { + "id": "2fe82199-07d3-4788-bb39-a6674782ade4", + "name": "Star a gist (application/json)", + "request": { + "urlPath": "/gists/1p0i/star", + "method": "PUT", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/735138\",\n \"message\" : \"Magni omnis odit earum. Qui nam non quis et est quis. Et sed hic nihil non at sed. Quia ipsa laborum nemo tempore.\",\n \"url\" : \"https://web.example.mocklab.io/811631\",\n \"status\" : \"0os4u318b22w1fpx58atm6s1r6j98clphbjqd5d7x2qm4zjqepjm9lw86u1sdzvp3urv1emf52ks23i26wb4o1zq8hf\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "2fe82199-07d3-4788-bb39-a6674782ade4", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.724159Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "gists/star", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 1212 + }, + { + "id": "b8f43d97-1ada-4f86-a7b1-9fddf18f4cac", + "name": "Star a gist (application/json)", + "request": { + "urlPath": "/gists/10rz/star", + "method": "PUT", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 403, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/488556\",\n \"message\" : \"Sint laudantium et rem ex repudiandae. Et quia commodi inventore. Animi rerum error maxime consequatur voluptatibus a. Minima quis consequatur inventore et eos quasi. Voluptatem occaecati qui ratione \",\n \"url\" : \"https://web.example.mocklab.io/709872\",\n \"status\" : \"ebwxdnkvk7wb01jee5lswwn0c2i0fmgripkda96khgs592sf\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "b8f43d97-1ada-4f86-a7b1-9fddf18f4cac", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.723889Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "gists/star", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 1213 + }, + { + "id": "2faf5b50-dbc0-43e9-84f9-5dcffd01c0d2", + "name": "Star a gist - 304", + "request": { + "urlPath": "/gists/i3u1/star", + "method": "PUT" + }, + "response": { + "status": 304 + }, + "uuid": "2faf5b50-dbc0-43e9-84f9-5dcffd01c0d2", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.723625Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "gists/star" + } + } + }, + "insertionIndex": 1214 + }, + { + "id": "978e3eb8-fa0c-42a2-8ccb-828bd0c75fef", + "name": "Star a gist - 204", + "request": { + "urlPath": "/gists/r88w/star", + "method": "PUT" + }, + "response": { + "status": 204 + }, + "uuid": "978e3eb8-fa0c-42a2-8ccb-828bd0c75fef", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.723543Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "gists/star" + } + } + }, + "insertionIndex": 1215 + }, + { + "id": "9a0f4ad5-1a5d-47da-a721-5e40db6125c3", + "name": "Check if a gist is starred (application/json)", + "request": { + "urlPath": "/gists/1pv7/star", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 404, + "body": "{ }", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "9a0f4ad5-1a5d-47da-a721-5e40db6125c3", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.723454Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "gists/check-is-starred", + "schema": { + "additionalProperties": false, + "type": "object" + } + } + } + }, + "insertionIndex": 1216 + }, + { + "id": "242b4a5f-6965-4ae2-a3d0-144e0a77665c", + "name": "Check if a gist is starred (application/json)", + "request": { + "urlPath": "/gists/z4zp/star", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 403, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/663777\",\n \"message\" : \"Laudantium esse quisquam voluptate quos sint ipsam fugiat. Hic non quisquam id. Quibusdam necessitatibus rerum deserunt illum.\",\n \"url\" : \"https://web.example.mocklab.io/683792\",\n \"status\" : \"raz79z48i\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "242b4a5f-6965-4ae2-a3d0-144e0a77665c", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.723341Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "gists/check-is-starred", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 1217 + }, + { + "id": "41af9ceb-795f-437e-8878-9fae36444fbf", + "name": "Check if a gist is starred - 304", + "request": { + "urlPath": "/gists/g435/star", + "method": "GET" + }, + "response": { + "status": 304 + }, + "uuid": "41af9ceb-795f-437e-8878-9fae36444fbf", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.723081Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "gists/check-is-starred" + } + } + }, + "insertionIndex": 1218 + }, + { + "id": "9fc94f08-58b4-4281-971e-6ca9adcec049", + "name": "Check if a gist is starred - 204", + "request": { + "urlPath": "/gists/z6xx/star", + "method": "GET" + }, + "response": { + "status": 204 + }, + "uuid": "9fc94f08-58b4-4281-971e-6ca9adcec049", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.723Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "gists/check-is-starred" + } + } + }, + "insertionIndex": 1219 + }, + { + "id": "511f212c-04ee-465f-b1c2-18b5d5db9f1f", + "name": "Unstar a gist (application/json)", + "request": { + "urlPath": "/gists/134z/star", + "method": "DELETE", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/408234\",\n \"message\" : \"Corrupti qui ullam. Et atque itaque. Dolor qui error.\",\n \"url\" : \"https://web.example.mocklab.io/757471\",\n \"status\" : \"hzgpk0akoiexay6xtmv50yslc6gl95euioe2hrhn11lb66va8dew8ohe0ay72j2o7jxdismec6kg1z311g238bb8z1u\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "511f212c-04ee-465f-b1c2-18b5d5db9f1f", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.722908Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "gists/unstar", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 1220 + }, + { + "id": "bff45a40-1454-4526-844e-22c643309047", + "name": "Unstar a gist (application/json)", + "request": { + "urlPath": "/gists/r133/star", + "method": "DELETE", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 403, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/355710\",\n \"message\" : \"Sunt non alias qui sit omnis vel. Aut voluptatem et. Hic est quod sed illo eum quos. Ipsa voluptas nostrum molestias placeat non maxime. Sunt voluptatem odio pariatur libero minus est rerum.\",\n \"url\" : \"https://web.example.mocklab.io/163079\",\n \"status\" : \"jqyknttk66hunok40xcd6sykjf2ifxpawhr\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "bff45a40-1454-4526-844e-22c643309047", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.722627Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "gists/unstar", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 1221 + }, + { + "id": "1a0d8cdc-5bc2-40dd-bc41-8608d8a5420d", + "name": "Unstar a gist - 304", + "request": { + "urlPath": "/gists/kdn2/star", + "method": "DELETE" + }, + "response": { + "status": 304 + }, + "uuid": "1a0d8cdc-5bc2-40dd-bc41-8608d8a5420d", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.72233Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "gists/unstar" + } + } + }, + "insertionIndex": 1222 + }, + { + "id": "9c2ec549-304d-4c45-baa1-81d6a1eb45e8", + "name": "Unstar a gist - 204", + "request": { + "urlPath": "/gists/k7fr/star", + "method": "DELETE" + }, + "response": { + "status": 204 + }, + "uuid": "9c2ec549-304d-4c45-baa1-81d6a1eb45e8", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.722247Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "gists/unstar" + } + } + }, + "insertionIndex": 1223 + }, + { + "id": "61f8853a-3b4f-4a57-a7d0-238e7e01a8bc", + "name": "Fork a gist (application/json)", + "request": { + "urlPath": "/gists/0z85/forks", + "method": "POST", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 422, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/878528\",\n \"message\" : \"Eaque qui provident tempora quod labore sint quas. Quos consequuntur itaque nobis fugiat explicabo. Id quas animi.\",\n \"errors\" : [ {\n \"code\" : \"swz9dy4ulour41fnkmcy7tqg9n2ohgo5rtlr92qetktxgzb3x4n28o7i989bg21n4uyx1einf40oh91sq3vobkzqavdinlyp2lajw04cn7vvmrun1f87jqbhq0wwcv4e\",\n \"field\" : \"52np6lg88locr7cxqcgokhdpw7o1payrrqj33eo1xuxkxe8zbil6sd7u6hgmkt11k9tqinpvq78bpq97pkamrw32fhg3je0gt4hx74xq8ovjdf2dxsit6kd56gav87ial2rs1tmv62kojcixuy2aqqer490q9a3twvq0elj88\",\n \"resource\" : \"kctsl0zwtit0ogv23qgca1cnwr2uzk31dculgthvrbal6uc1xxx8easyz24kvjnn035lax5udszesowt32rgfu5\",\n \"index\" : 4296944838714387545,\n \"message\" : \"Minus rerum voluptatibus voluptatibus error. Voluptatem perspiciatis quod in assumenda et dolor corporis. Quam ut illo dolores aut ipsa aperiam doloribus. Quasi veniam incidunt dolorem et voluptatum d\",\n \"value\" : { }\n }, {\n \"code\" : \"1amujme3zjtdmzfbwka9t8t0akseb13kinpvazhsrnsds4r9rr8wxo3nodyyl4eyv1bdgf7astnmsx\",\n \"field\" : \"2h59aoj7ohtfx26hy2mokjzsmvlju3395o9vom2sb8fsi5x2z1x1g7bwqj2yj5xq98t4vunkx120g3wkvje3yvep6bscmgdxm6cnd\",\n \"resource\" : \"7im0zfyo40ikw3f2x49z7kony5809yq3fv2dbh74rgpfdbj87a81dbgeqrhsjbfwn6as9mujb4usyqydrkueszcl85h5ni1i3cmchzwssnrlxukh0fh\",\n \"index\" : 4187148048254906297,\n \"message\" : \"Veritatis mollitia soluta rerum. Voluptatibus voluptas dolores itaque magnam. Reprehenderit qui amet numquam sit expedita.\",\n \"value\" : { }\n }, {\n \"code\" : \"fxxzeansfnmzp6e2iy9amxplyrvn401mmzieano7laz21qhrznagzkqf4655sz8bip3n9y7ht71lidwoskkmzws1u2ntrffy8djfda0h7znng\",\n \"field\" : \"kbdziqdqpj77vdie8155rvwdbkushh7lt91rrqxwdbaqne5lupz8xc4syt0r2pdilf1uxmue5g1itp7x17vc7csa3294vwkqspxdg2uwt6oiux4axnz95y72vu8f564xm8oqd3ni\",\n \"resource\" : \"dal5bqvnhxtx4spjep59ptebn0h3hslc9flyzlx8lng1m71rpcom3hpiqtad6yio3hi8lud10idnf541z9ifqhjfr2t0euocn2qtju4n7h281v39zwnontyfx2wdjmgs6ozkrd0uty\",\n \"index\" : 7559089169500387169,\n \"message\" : \"Qui in iste perferendis sunt consequatur sed ut. Nihil laudantium explicabo velit amet soluta sed a. Optio totam laboriosam architecto eos cupiditate rerum. Velit ratione sit omnis dolores nihil delen\",\n \"value\" : { }\n }, {\n \"code\" : \"7bzpnyn8nmvwb3602mbbf8auulx1a8lx43dx8wj4c7feabokzk5buw91xh7qw7565vsxxjq1avk40971t5t8pjsuz5cvwevrqtfpc8ffth6866pfatwoxrlhttgnherdv0m9yj0a1wydkqfc4w\",\n \"field\" : \"nyll91cwb5cu7bl0k37wg7jt27fk8xtix3xey5krydqfh934xayc44ygb7bpklly4ekyegtzbxw93z7da3meqidhtodxqbu5fsnzymzffgfsqauzi8ky9dcwbmtwe740gd9rl3f34jloxtw80l7oh6nrkrjmxqffq9xkw0pg2qsa\",\n \"resource\" : \"8q7lauggb3xdsw60rx6ymoxjiz7i4wo597kge2upf3suiy9wliz5kj69ghvs3wq3l42q6hijn4luwsnh34gf2qng3yvrllulzd9y998inahuma54m40ta9030eg80g2eolvkmgtpel4g4rydqzgkntt4e9pei4\",\n \"index\" : 2864526391468215191,\n \"message\" : \"Rem vero autem est veniam laborum eveniet voluptatem. Nostrum doloribus voluptas enim qui. Fugiat aut ea dolorem sint quo assumenda veniam.\",\n \"value\" : { }\n } ]\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "61f8853a-3b4f-4a57-a7d0-238e7e01a8bc", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.722134Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "gists/fork", + "schema": { + "description": "Validation Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "errors": { + "items": { + "properties": { + "code": { + "type": "string" + }, + "field": { + "type": "string" + }, + "index": { + "type": "integer" + }, + "message": { + "type": "string" + }, + "resource": { + "type": "string" + }, + "value": { + "oneOf": [ + { + "nullable": true, + "type": "string" + }, + { + "nullable": true, + "type": "integer" + }, + { + "items": { + "type": "string" + }, + "nullable": true, + "type": "array" + } + ] + } + }, + "required": ["code"], + "type": "object" + }, + "type": "array" + }, + "message": { + "type": "string" + } + }, + "required": ["message", "documentation_url"], + "title": "Validation Error", + "type": "object" + } + } + } + }, + "insertionIndex": 1224 + }, + { + "id": "ee00257f-4811-48cc-a122-281ec370bb1e", + "name": "Fork a gist (application/json)", + "request": { + "urlPath": "/gists/10qe/forks", + "method": "POST", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/910325\",\n \"message\" : \"Quam placeat quis et et et dolore. Voluptatem incidunt quis sunt. Officiis sint quis autem quia enim. Velit sed ut rerum sed qui dignissimos. Debitis non quia nihil.\",\n \"url\" : \"https://web.example.mocklab.io/313310\",\n \"status\" : \"isx402nfy47vjbzq4pcju8ef9wlhss5ymbwgagkw0n0npz4a5kp6guavyguaowbypcxzxuslihyo8vte3z23p0fe1t704h0giryi92bu72fuim20lzgxpr6yl0w247niyss1qp67vvl0lxon7fulo31\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "ee00257f-4811-48cc-a122-281ec370bb1e", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.721391Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "gists/fork", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 1225 + }, + { + "id": "5ddcb7e5-8f3e-400b-bbb7-ccedf8be2e5f", + "name": "Fork a gist (application/json)", + "request": { + "urlPath": "/gists/6990/forks", + "method": "POST", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 403, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/753368\",\n \"message\" : \"Aliquid ut quis magnam perspiciatis itaque dolores. Illum esse eum qui quo hic ullam. Totam aut officiis ipsum sit necessitatibus.\",\n \"url\" : \"https://web.example.mocklab.io/562120\",\n \"status\" : \"npsgknyuysxwrll3vunqx139lhuyovh5t45drbje1e8t6x924vknazm3brm5zvkjywwa0rmtrphiouox9o8dkuqsdpanquwrcp72sz7afsxlqcueiwgcbz1q\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "5ddcb7e5-8f3e-400b-bbb7-ccedf8be2e5f", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.721089Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "gists/fork", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 1226 + }, + { + "id": "eccad36c-b777-4381-abb4-b0b18b8d734c", + "name": "Fork a gist - 304", + "request": { + "urlPath": "/gists/7074/forks", + "method": "POST" + }, + "response": { + "status": 304 + }, + "uuid": "eccad36c-b777-4381-abb4-b0b18b8d734c", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.720808Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "gists/fork" + } + } + }, + "insertionIndex": 1227 + }, + { + "id": "f2b253bb-76c3-4753-a4d7-38917c8724e4", + "name": "Fork a gist (application/json) - default", + "request": { + "urlPath": "/gists/9i11/forks", + "method": "POST", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 201, + "body": "{\n \"comments\" : 0,\n \"comments_url\" : \"https://api.github.com/gists/aa5a315d61ae9438b18d/comments/\",\n \"commits_url\" : \"https://api.github.com/gists/aa5a315d61ae9438b18d/commits\",\n \"created_at\" : \"2010-04-14T02:15:15Z\",\n \"description\" : \"Hello World Examples\",\n \"files\" : {\n \"hello_world.rb\" : {\n \"filename\" : \"hello_world.rb\",\n \"language\" : \"Ruby\",\n \"raw_url\" : \"https://gist.githubusercontent.com/octocat/6cad326836d38bd3a7ae/raw/db9c55113504e46fa076e7df3a04ce592e2e86d8/hello_world.rb\",\n \"size\" : 167,\n \"type\" : \"application/x-ruby\"\n }\n },\n \"forks_url\" : \"https://api.github.com/gists/aa5a315d61ae9438b18d/forks\",\n \"git_pull_url\" : \"https://gist.github.com/aa5a315d61ae9438b18d.git\",\n \"git_push_url\" : \"https://gist.github.com/aa5a315d61ae9438b18d.git\",\n \"html_url\" : \"https://gist.github.com/aa5a315d61ae9438b18d\",\n \"id\" : \"aa5a315d61ae9438b18d\",\n \"node_id\" : \"MDQ6R2lzdGFhNWEzMTVkNjFhZTk0MzhiMThk\",\n \"owner\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"public\" : true,\n \"truncated\" : false,\n \"updated_at\" : \"2011-06-20T11:34:15Z\",\n \"url\" : \"https://api.github.com/gists/aa5a315d61ae9438b18d\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "f2b253bb-76c3-4753-a4d7-38917c8724e4", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.720706Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "gists/fork", + "schema": { + "description": "Base Gist", + "properties": { + "comments": { + "type": "integer" + }, + "comments_url": { + "format": "uri", + "type": "string" + }, + "commits_url": { + "format": "uri", + "type": "string" + }, + "created_at": { + "format": "date-time", + "type": "string" + }, + "description": { + "nullable": true, + "type": "string" + }, + "files": { + "additionalProperties": { + "properties": { + "filename": { + "type": "string" + }, + "language": { + "type": "string" + }, + "raw_url": { + "type": "string" + }, + "size": { + "type": "integer" + }, + "type": { + "type": "string" + } + }, + "type": "object" + }, + "type": "object" + }, + "forks": { + "type": "array" + }, + "forks_url": { + "format": "uri", + "type": "string" + }, + "git_pull_url": { + "format": "uri", + "type": "string" + }, + "git_push_url": { + "format": "uri", + "type": "string" + }, + "history": { + "type": "array" + }, + "html_url": { + "format": "uri", + "type": "string" + }, + "id": { + "type": "string" + }, + "node_id": { + "type": "string" + }, + "owner": { + "$ref": "#/components/schemas/simple-user" + }, + "public": { + "type": "boolean" + }, + "truncated": { + "type": "boolean" + }, + "updated_at": { + "format": "date-time", + "type": "string" + }, + "url": { + "format": "uri", + "type": "string" + }, + "user": { + "$ref": "#/components/schemas/nullable-simple-user" + } + }, + "required": [ + "id", + "node_id", + "url", + "forks_url", + "commits_url", + "git_pull_url", + "git_push_url", + "html_url", + "comments_url", + "public", + "description", + "comments", + "user", + "files", + "created_at", + "updated_at" + ], + "title": "Base Gist", + "type": "object" + } + } + } + }, + "insertionIndex": 1228 + }, + { + "id": "3b327efc-e904-456f-ba32-0745364a2647", + "name": "List gist forks (application/json)", + "request": { + "urlPath": "/gists/kbr3/forks", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/031053\",\n \"message\" : \"Officiis odio neque laboriosam. Et quo blanditiis ratione non quae quia. Suscipit odio quam eius aut natus suscipit eos.\",\n \"url\" : \"https://web.example.mocklab.io/790678\",\n \"status\" : \"0hf8zywoqjutlatw69l27fe0nhqurew9gltkgvtgaapx8n3jk53i7raky4s5qf4potfsvba2zpu56x910mc6jx3y19264\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "3b327efc-e904-456f-ba32-0745364a2647", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.720368Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "gists/list-forks", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 1229 + }, + { + "id": "0d4482e2-417f-404a-9839-663b467f3957", + "name": "List gist forks (application/json)", + "request": { + "urlPath": "/gists/680b/forks", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 403, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/161632\",\n \"message\" : \"Sint quaerat saepe occaecati sint. Repellat nostrum sed quis perspiciatis autem. Modi aut et dolores qui sint. Soluta fuga dolores unde quasi quia. Est reprehenderit doloribus eaque animi.\",\n \"url\" : \"https://web.example.mocklab.io/212796\",\n \"status\" : \"ecxc7217jgflqt1i3nxp26h8wsv0hlz6t0jdvysggrvrvz32i0zmsngdidshlrvglay3sxmdzsnoq35nwchetud4frzek1gu2osve0i7k313z77\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "0d4482e2-417f-404a-9839-663b467f3957", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.720079Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "gists/list-forks", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 1230 + }, + { + "id": "787f9fae-aecd-4720-b1db-c9a070c3ecfd", + "name": "List gist forks - 304", + "request": { + "urlPath": "/gists/k7fq/forks", + "method": "GET" + }, + "response": { + "status": 304 + }, + "uuid": "787f9fae-aecd-4720-b1db-c9a070c3ecfd", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.719793Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "gists/list-forks" + } + } + }, + "insertionIndex": 1231 + }, + { + "id": "5ba6969b-429d-4c92-a67f-e414c82b0ed3", + "name": "List gist forks (application/json) - default", + "request": { + "urlPath": "/gists/6kz9/forks", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 200, + "body": "[ {\n \"comments\" : 1,\n \"comments_url\" : \"https://api.github.com/gists/aa5a315d61ae9438b18d/comments/\",\n \"commits_url\" : \"https://api.github.com/gists/aa5a315d61ae9438b18d/commits\",\n \"created_at\" : \"2010-04-14T02:15:15Z\",\n \"description\" : \"Hello World Examples\",\n \"files\" : {\n \"hello_world.rb\" : {\n \"filename\" : \"hello_world.rb\",\n \"language\" : \"Ruby\",\n \"raw_url\" : \"https://gist.githubusercontent.com/octocat/6cad326836d38bd3a7ae/raw/db9c55113504e46fa076e7df3a04ce592e2e86d8/hello_world.rb\",\n \"size\" : 167,\n \"type\" : \"application/x-ruby\"\n }\n },\n \"forks_url\" : \"https://api.github.com/gists/aa5a315d61ae9438b18d/forks\",\n \"git_pull_url\" : \"https://gist.github.com/aa5a315d61ae9438b18d.git\",\n \"git_push_url\" : \"https://gist.github.com/aa5a315d61ae9438b18d.git\",\n \"html_url\" : \"https://gist.github.com/aa5a315d61ae9438b18d\",\n \"id\" : \"aa5a315d61ae9438b18d\",\n \"node_id\" : \"MDQ6R2lzdGFhNWEzMTVkNjFhZTk0MzhiMThk\",\n \"owner\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"public\" : true,\n \"updated_at\" : \"2011-06-20T11:34:15Z\",\n \"url\" : \"https://api.github.com/gists/aa5a315d61ae9438b18d\"\n} ]", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "5ba6969b-429d-4c92-a67f-e414c82b0ed3", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.719699Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "gists/list-forks", + "schema": { + "items": { + "$ref": "#/components/schemas/gist-simple" + }, + "type": "array" + } + } + } + }, + "insertionIndex": 1232 + }, + { + "id": "8c965577-0b56-42c7-870a-2949e68d44c7", + "name": "List gist commits (application/json)", + "request": { + "urlPath": "/gists/f552/commits", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/664825\",\n \"message\" : \"A vero sunt et rerum ea aliquam. Odit nostrum velit similique magnam nostrum. Et omnis rerum illum optio facilis aperiam. Aut blanditiis enim sit ad. Ea praesentium et commodi assumenda facilis animi.\",\n \"url\" : \"https://web.example.mocklab.io/616515\",\n \"status\" : \"7hgwcuk07so\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "8c965577-0b56-42c7-870a-2949e68d44c7", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.719582Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "gists/list-commits", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 1233 + }, + { + "id": "835269b7-2d3c-4b2e-866c-0ccbb6514bc7", + "name": "List gist commits (application/json)", + "request": { + "urlPath": "/gists/ion1/commits", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 403, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/261944\",\n \"message\" : \"Deleniti sit ea ratione pariatur pariatur adipisci. Qui incidunt voluptatem velit unde dignissimos natus quisquam. Ratione qui blanditiis minima et perspiciatis. Illo debitis sunt qui.\",\n \"url\" : \"https://web.example.mocklab.io/520120\",\n \"status\" : \"9mog2uhuwf7bs4fpzqfoj886\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "835269b7-2d3c-4b2e-866c-0ccbb6514bc7", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.719302Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "gists/list-commits", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 1234 + }, + { + "id": "e24d8003-2c1a-4a77-b5a5-8fe2edfbe356", + "name": "List gist commits - 304", + "request": { + "urlPath": "/gists/65h7/commits", + "method": "GET" + }, + "response": { + "status": 304 + }, + "uuid": "e24d8003-2c1a-4a77-b5a5-8fe2edfbe356", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.719042Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "gists/list-commits" + } + } + }, + "insertionIndex": 1235 + }, + { + "id": "26f8a2e4-cb08-483e-9eb3-b05e6c4a8393", + "name": "List gist commits (application/json) - default", + "request": { + "urlPath": "/gists/ndb3/commits", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 200, + "body": "[ {\n \"change_status\" : {\n \"additions\" : 180,\n \"deletions\" : 0,\n \"total\" : 180\n },\n \"committed_at\" : \"2010-04-14T02:15:15Z\",\n \"url\" : \"https://api.github.com/gists/aa5a315d61ae9438b18d/57a7f021a713b1c5a6a199b54cc514735d2d462f\",\n \"user\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"version\" : \"57a7f021a713b1c5a6a199b54cc514735d2d462f\"\n} ]", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "26f8a2e4-cb08-483e-9eb3-b05e6c4a8393", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.718952Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "gists/list-commits", + "schema": { + "items": { + "$ref": "#/components/schemas/gist-commit" + }, + "type": "array" + } + } + } + }, + "insertionIndex": 1236 + }, + { + "id": "609e97dc-979c-4d6d-8003-5766c95bef1b", + "name": "Update a gist comment", + "request": { + "urlPath": "/gists/72mf/comments/7533774423477187715", + "method": "PATCH" + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/429777\",\n \"message\" : \"Accusamus est impedit ad eos suscipit iure. Occaecati quis optio eveniet. Dignissimos et esse. Nam culpa dolores aperiam non. Quisquam voluptas quo.\",\n \"url\" : \"https://web.example.mocklab.io/208727\",\n \"status\" : \"0c29x9psim3guhozzxtxg1s0a8rosfgzw735ozoinxf55pip862k6m2fkniohf8bkst8i8e3m1pioasstpqj5x60xshvvaeptmsqjtowyc2zz0bjzm9ct27h1v7j88muif0u4794otwvqbubdwn1uxy85emlnll5dj0hb8y3w688hvue5k3rx2mp5m\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "609e97dc-979c-4d6d-8003-5766c95bef1b", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.718838Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "gists/update-comment", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 1237 + }, + { + "id": "f359399e-354b-4e4c-a7c3-07eb83eb707b", + "name": "Update a gist comment - default", + "request": { + "urlPath": "/gists/24j9/comments/4356149385451168369", + "method": "PATCH" + }, + "response": { + "status": 200, + "body": "{\n \"author_association\" : \"COLLABORATOR\",\n \"body\" : \"Just commenting for the sake of commenting\",\n \"created_at\" : \"2011-04-18T23:23:56Z\",\n \"id\" : 1,\n \"node_id\" : \"MDExOkdpc3RDb21tZW50MQ==\",\n \"updated_at\" : \"2011-04-18T23:23:56Z\",\n \"url\" : \"https://api.github.com/gists/a6db0bec360bb87e9418/comments/1\",\n \"user\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n }\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "f359399e-354b-4e4c-a7c3-07eb83eb707b", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.718569Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "gists/update-comment", + "schema": { + "description": "A comment made to a gist.", + "properties": { + "author_association": { + "$ref": "#/components/schemas/author_association" + }, + "body": { + "description": "The comment text.", + "example": "Body of the attachment", + "maxLength": 65535, + "type": "string" + }, + "created_at": { + "example": "2011-04-18T23:23:56Z", + "format": "date-time", + "type": "string" + }, + "id": { + "example": 1, + "type": "integer" + }, + "node_id": { + "example": "MDExOkdpc3RDb21tZW50MQ==", + "type": "string" + }, + "updated_at": { + "example": "2011-04-18T23:23:56Z", + "format": "date-time", + "type": "string" + }, + "url": { + "example": "https://api.github.com/gists/a6db0bec360bb87e9418/comments/1", + "format": "uri", + "type": "string" + }, + "user": { + "$ref": "#/components/schemas/nullable-simple-user" + } + }, + "required": [ + "url", + "id", + "node_id", + "user", + "body", + "author_association", + "created_at", + "updated_at" + ], + "title": "Gist Comment", + "type": "object" + } + } + } + }, + "insertionIndex": 1238 + }, + { + "id": "e40b0362-3614-4942-bc49-a3eaf0109d93", + "name": "Get a gist comment (application/json)", + "request": { + "urlPath": "/gists/r8r1/comments/2732723474690148700", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/177325\",\n \"message\" : \"Eius et modi voluptatem voluptatem doloribus omnis. Eaque itaque deleniti dolores nesciunt rem. Id non eius et qui sequi. Et nam mollitia laudantium est fugit facilis. Eos ut tempora et in recusandae.\",\n \"url\" : \"https://web.example.mocklab.io/567245\",\n \"status\" : \"5m8oc1rglnvz3un81yplycml44lgtkgcrycg3jv1hjphelgry4mmkc16hiux6ujfvre0160jf91sib3kuc6x9qc9ukrsq4iqx0a382x5dkxsv2b2eza2nc9rc96mqapwgmzi8aq\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "e40b0362-3614-4942-bc49-a3eaf0109d93", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.718427Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "gists/get-comment", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 1239 + }, + { + "id": "d9928d25-ab34-4ddb-8d05-18eeb35c0249", + "name": "Get a gist comment (application/json)", + "request": { + "urlPath": "/gists/d7nq/comments/1066389132613215715", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 403, + "body": "{\n \"block\" : {\n \"reason\" : \"jdb5igupcdnt1ezizvb5qzp1o6t19rbbuq2c1m7hhpkf1w0jsidcqem5i5z0nm2xyckpj61mw7lw4twijsc37su1rbr84d6zam8b9bk1t1x7nn5dhsn66gxpk0lc2gyrrpc3hcsfryldunp62ufkxng1000czub80rp442y66fphwdz3ki8pwlld7jtp9szplqmf\",\n \"html_url\" : \"https://web.example.mocklab.io/500292\",\n \"created_at\" : \"015fs3coqe7r33b5wvuwmtjolhzu3az8xgq6opr2bf982fr9ccueznigpntcnp7hg6b5vwzlnbbh121phv\"\n },\n \"documentation_url\" : \"https://web.example.mocklab.io/364050\",\n \"message\" : \"A reprehenderit et cum modi. Nesciunt voluptatem sapiente. Voluptatem est impedit tempore aut quidem est quo. Molestiae facilis esse.\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "d9928d25-ab34-4ddb-8d05-18eeb35c0249", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.718145Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "gists/get-comment", + "schema": { + "properties": { + "block": { + "properties": { + "created_at": { + "type": "string" + }, + "html_url": { + "nullable": true, + "type": "string" + }, + "reason": { + "type": "string" + } + }, + "type": "object" + }, + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "type": "object" + } + } + } + }, + "insertionIndex": 1240 + }, + { + "id": "a8779529-06a6-4738-b3da-f7e0c7631fd5", + "name": "Get a gist comment - 304", + "request": { + "urlPath": "/gists/80z7/comments/7916157213106582939", + "method": "GET" + }, + "response": { + "status": 304 + }, + "uuid": "a8779529-06a6-4738-b3da-f7e0c7631fd5", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.717808Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "gists/get-comment" + } + } + }, + "insertionIndex": 1241 + }, + { + "id": "be6e819e-3949-4394-a793-4d8a35843321", + "name": "Get a gist comment (application/json) - default", + "request": { + "urlPath": "/gists/ca11/comments/1162813893831434743", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 200, + "body": "{\n \"author_association\" : \"COLLABORATOR\",\n \"body\" : \"Just commenting for the sake of commenting\",\n \"created_at\" : \"2011-04-18T23:23:56Z\",\n \"id\" : 1,\n \"node_id\" : \"MDExOkdpc3RDb21tZW50MQ==\",\n \"updated_at\" : \"2011-04-18T23:23:56Z\",\n \"url\" : \"https://api.github.com/gists/a6db0bec360bb87e9418/comments/1\",\n \"user\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n }\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "be6e819e-3949-4394-a793-4d8a35843321", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.717715Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "gists/get-comment", + "schema": { + "description": "A comment made to a gist.", + "properties": { + "author_association": { + "$ref": "#/components/schemas/author_association" + }, + "body": { + "description": "The comment text.", + "example": "Body of the attachment", + "maxLength": 65535, + "type": "string" + }, + "created_at": { + "example": "2011-04-18T23:23:56Z", + "format": "date-time", + "type": "string" + }, + "id": { + "example": 1, + "type": "integer" + }, + "node_id": { + "example": "MDExOkdpc3RDb21tZW50MQ==", + "type": "string" + }, + "updated_at": { + "example": "2011-04-18T23:23:56Z", + "format": "date-time", + "type": "string" + }, + "url": { + "example": "https://api.github.com/gists/a6db0bec360bb87e9418/comments/1", + "format": "uri", + "type": "string" + }, + "user": { + "$ref": "#/components/schemas/nullable-simple-user" + } + }, + "required": [ + "url", + "id", + "node_id", + "user", + "body", + "author_association", + "created_at", + "updated_at" + ], + "title": "Gist Comment", + "type": "object" + } + } + } + }, + "insertionIndex": 1242 + }, + { + "id": "548d6a2c-c7a3-456c-8398-a541de8dca61", + "name": "Delete a gist comment (application/json)", + "request": { + "urlPath": "/gists/v53i/comments/6677533343575016857", + "method": "DELETE", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/214759\",\n \"message\" : \"At quo et doloribus veniam. Reprehenderit eos deleniti laudantium ratione velit sit. Nisi cupiditate at minima aspernatur fugit sint. Et praesentium rerum architecto dicta eaque modi.\",\n \"url\" : \"https://web.example.mocklab.io/444205\",\n \"status\" : \"9sztl6tznpfc9fnhdq4w6u2rqq9aqvhi\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "548d6a2c-c7a3-456c-8398-a541de8dca61", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.717568Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "gists/delete-comment", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 1243 + }, + { + "id": "1b587164-07ff-4cba-8091-b30952e6953a", + "name": "Delete a gist comment (application/json)", + "request": { + "urlPath": "/gists/a38b/comments/3696714725105014059", + "method": "DELETE", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 403, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/168061\",\n \"message\" : \"Voluptas ipsam eligendi voluptatibus commodi. Dolorum ut nemo ipsum qui sequi ullam. Ipsam ad qui aut assumenda. Porro in voluptatem nihil voluptates commodi. Numquam modi labore doloribus.\",\n \"url\" : \"https://web.example.mocklab.io/060892\",\n \"status\" : \"gaucry4mojgjjnrnzfm6arcjd9f9isqt44of2gtklqqdjxpl1t6hhxgg5px7h6enz3remdspotdnez84e7w1nrxnmjffoo8ktlj\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "1b587164-07ff-4cba-8091-b30952e6953a", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.717292Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "gists/delete-comment", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 1244 + }, + { + "id": "041f7e53-bcbb-44f9-a33e-a97441af4dda", + "name": "Delete a gist comment - 304", + "request": { + "urlPath": "/gists/e4m2/comments/8283105737792574572", + "method": "DELETE" + }, + "response": { + "status": 304 + }, + "uuid": "041f7e53-bcbb-44f9-a33e-a97441af4dda", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.717026Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "gists/delete-comment" + } + } + }, + "insertionIndex": 1245 + }, + { + "id": "e335f1d9-548d-40b0-b3f8-a96196ee2654", + "name": "Delete a gist comment - 204", + "request": { + "urlPath": "/gists/7019/comments/3866848987017529619", + "method": "DELETE" + }, + "response": { + "status": 204 + }, + "uuid": "e335f1d9-548d-40b0-b3f8-a96196ee2654", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.716944Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "gists/delete-comment" + } + } + }, + "insertionIndex": 1246 + }, + { + "id": "63a75193-a6c4-4f73-9a63-411d9db9d17b", + "name": "Create a gist comment (application/json)", + "request": { + "urlPath": "/gists/q2vj/comments", + "method": "POST", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/867158\",\n \"message\" : \"Accusantium velit quia fuga facilis quos modi tempore. Sed quia fugiat ab est accusamus. Officiis aperiam ut ut non libero. Illum ducimus qui quo. Nihil commodi est dolor sunt molestiae hic.\",\n \"url\" : \"https://web.example.mocklab.io/299365\",\n \"status\" : \"74mmau8m87p3gs7wvlneja\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "63a75193-a6c4-4f73-9a63-411d9db9d17b", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.716844Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "gists/create-comment", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 1247 + }, + { + "id": "7f9e4d32-79a8-4679-90f9-5fbf14c35787", + "name": "Create a gist comment (application/json)", + "request": { + "urlPath": "/gists/8t07/comments", + "method": "POST", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 403, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/853661\",\n \"message\" : \"Est tenetur sequi similique error ut deleniti maxime. Quam est molestiae ea. Hic nostrum saepe est ut consequuntur iste dignissimos.\",\n \"url\" : \"https://web.example.mocklab.io/320904\",\n \"status\" : \"yjls3qjggnwokv9k8hkc8byusz6vxdwu8v8c10x7uqg4zi97qfif3zrj661hepr12ue7bjm2l5axjohcl8bahzonzyb1ia75ckg0ewcchj6t1sf033szy6sr3nnjb25ybsocimtmuxttsixyga1w\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "7f9e4d32-79a8-4679-90f9-5fbf14c35787", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.716574Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "gists/create-comment", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 1248 + }, + { + "id": "ce00341e-aab4-49e4-a50a-49b699d7f7e0", + "name": "Create a gist comment - 304", + "request": { + "urlPath": "/gists/dpua/comments", + "method": "POST" + }, + "response": { + "status": 304 + }, + "uuid": "ce00341e-aab4-49e4-a50a-49b699d7f7e0", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.716307Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "gists/create-comment" + } + } + }, + "insertionIndex": 1249 + }, + { + "id": "efd8740e-c60d-4364-aaa0-7a17e04771e5", + "name": "Create a gist comment (application/json) - default", + "request": { + "urlPath": "/gists/b1po/comments", + "method": "POST", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 201, + "body": "{\n \"author_association\" : \"COLLABORATOR\",\n \"body\" : \"Just commenting for the sake of commenting\",\n \"created_at\" : \"2011-04-18T23:23:56Z\",\n \"id\" : 1,\n \"node_id\" : \"MDExOkdpc3RDb21tZW50MQ==\",\n \"updated_at\" : \"2011-04-18T23:23:56Z\",\n \"url\" : \"https://api.github.com/gists/a6db0bec360bb87e9418/comments/1\",\n \"user\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n }\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "efd8740e-c60d-4364-aaa0-7a17e04771e5", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.716215Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "gists/create-comment", + "schema": { + "description": "A comment made to a gist.", + "properties": { + "author_association": { + "$ref": "#/components/schemas/author_association" + }, + "body": { + "description": "The comment text.", + "example": "Body of the attachment", + "maxLength": 65535, + "type": "string" + }, + "created_at": { + "example": "2011-04-18T23:23:56Z", + "format": "date-time", + "type": "string" + }, + "id": { + "example": 1, + "type": "integer" + }, + "node_id": { + "example": "MDExOkdpc3RDb21tZW50MQ==", + "type": "string" + }, + "updated_at": { + "example": "2011-04-18T23:23:56Z", + "format": "date-time", + "type": "string" + }, + "url": { + "example": "https://api.github.com/gists/a6db0bec360bb87e9418/comments/1", + "format": "uri", + "type": "string" + }, + "user": { + "$ref": "#/components/schemas/nullable-simple-user" + } + }, + "required": [ + "url", + "id", + "node_id", + "user", + "body", + "author_association", + "created_at", + "updated_at" + ], + "title": "Gist Comment", + "type": "object" + } + } + } + }, + "insertionIndex": 1250 + }, + { + "id": "b2893e0e-15a1-4f75-a154-ac76189cebe8", + "name": "List gist comments (application/json)", + "request": { + "urlPath": "/gists/7q96/comments", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/438849\",\n \"message\" : \"Soluta voluptatem necessitatibus ut. Ut aut enim amet consequatur repellat unde laborum. Ut modi eum explicabo et tempore ut nihil. Sed dolorem et ut. Est sint est.\",\n \"url\" : \"https://web.example.mocklab.io/104163\",\n \"status\" : \"gf2yh0rfebctbji5lti9jxf75sq2xhuncicp3icu386aevv7th3mhr4wiz29y5r758x564j7s5hxrghuqm2alvqd3c1trwq0txf65zx17fp\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "b2893e0e-15a1-4f75-a154-ac76189cebe8", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.71603Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "gists/list-comments", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 1251 + }, + { + "id": "56162ab4-5bb5-4b7a-b89c-754370103afc", + "name": "List gist comments (application/json)", + "request": { + "urlPath": "/gists/2265/comments", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 403, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/602304\",\n \"message\" : \"Adipisci porro quam est adipisci dolorem. Ex laudantium autem quasi. Recusandae et accusantium recusandae aliquam.\",\n \"url\" : \"https://web.example.mocklab.io/556014\",\n \"status\" : \"6jkwxm1ex2nauif1unk0sqwam45jaqa2ljgd593ptru57ue0d4kz9e1l4uk5u722h1azoic2jr4ngp\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "56162ab4-5bb5-4b7a-b89c-754370103afc", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.71576Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "gists/list-comments", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 1252 + }, + { + "id": "f47f5e62-79d4-4cf1-8396-e6b19d27248c", + "name": "List gist comments - 304", + "request": { + "urlPath": "/gists/1x32/comments", + "method": "GET" + }, + "response": { + "status": 304 + }, + "uuid": "f47f5e62-79d4-4cf1-8396-e6b19d27248c", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.715495Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "gists/list-comments" + } + } + }, + "insertionIndex": 1253 + }, + { + "id": "54733e2c-cc87-4b9a-b6da-52b9ecb0df91", + "name": "List gist comments (application/json) - default", + "request": { + "urlPath": "/gists/z94r/comments", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 200, + "body": "[ {\n \"author_association\" : \"COLLABORATOR\",\n \"body\" : \"Just commenting for the sake of commenting\",\n \"created_at\" : \"2011-04-18T23:23:56Z\",\n \"id\" : 1,\n \"node_id\" : \"MDExOkdpc3RDb21tZW50MQ==\",\n \"updated_at\" : \"2011-04-18T23:23:56Z\",\n \"url\" : \"https://api.github.com/gists/a6db0bec360bb87e9418/comments/1\",\n \"user\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n }\n} ]", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "54733e2c-cc87-4b9a-b6da-52b9ecb0df91", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.715407Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "gists/list-comments", + "schema": { + "items": { + "$ref": "#/components/schemas/gist-comment" + }, + "type": "array" + } + } + } + }, + "insertionIndex": 1254 + }, + { + "id": "b53324da-8ad1-4448-927b-e4e8656e7f68", + "name": "Update a gist", + "request": { + "urlPath": "/gists/px2o", + "method": "PATCH" + }, + "response": { + "status": 422, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/176440\",\n \"message\" : \"Necessitatibus velit neque quas reprehenderit est magnam. Ut esse occaecati. Architecto facilis commodi debitis excepturi a quia.\",\n \"errors\" : [ {\n \"code\" : \"69o4npdnyy2wxrbwdes45lheutohqapb68xkmf0h8rgf200bpgjvb7ancak9tefugk9f4ibcgu3hhi5ztdeu6s824922q84xj35c4ipxstlvdauu5qy28sfoc06l1bskssr7y\",\n \"field\" : \"o8ur0ufqjaf1eami0tnmuhz9qhfmn1y9cwqkn42xifqyu7fshd9mufr23u7azyfo6ds\",\n \"resource\" : \"rkj4m6111ykmo27zxrpcixg0iw7ocjvy32ehotpho0ooxtwci98lkzxgt6h3o0bf1lmbv6gfgst5xdtsv2ery8zt2ojagxevzozskce3jqxlvcuw2loozk7e1q9zljk0rx27m8p2etbf0ulbh8c9bkdsls0hq5gnaqazt4ngpu7hndsyttkab6o2\",\n \"index\" : 3748019752216615642,\n \"message\" : \"Voluptatem reiciendis soluta omnis vel odio facere sint. Autem expedita iure ratione est. Ut saepe ut voluptatibus eos. Error reprehenderit cum. Soluta non voluptatem quibusdam sed aut aut exercitatio\",\n \"value\" : { }\n }, {\n \"code\" : \"e3emigd3axpdz4sd0gyep3kj9vcw489xu6jxbm7envu7rkwzblsw3j0lhd6w81ixzo3zim5sumqm1uc5c3fw1gwv09hyi3y5qf96fwmtgtmtmhkytae2qhmqts6k8ys4d9qcq52vbhtuam8e1g2yri5al2loyyvvre6ueod1h2cbtqhigbq844hiibl4ys9glz0oh5rw\",\n \"field\" : \"yjiw04qmlea0czy5htjo443mkxztaxoc35cwajogv7bp48i0zekau86r3u7267e85hxkcueczacvq7rzu26terbkhhn2vbj7jjhc0u\",\n \"resource\" : \"lzzxp9azmmunzigh14s7i0adsawhrxrhj12k71tluakw0120nci1t18fda1vthuj6zit7gt\",\n \"index\" : 4680138768979916171,\n \"message\" : \"Corporis voluptatibus expedita omnis. Placeat qui ipsum quo eligendi. Quo non provident adipisci aliquid iusto.\",\n \"value\" : { }\n }, {\n \"code\" : \"p0dpcyo3ixpnquanh66zrztzhdb80dytb048z\",\n \"field\" : \"xp4ivanv85egjkd3sjjtro0ifnr664pydd93aztmmm0py3m25m02jokoahto6v5vs5wzsjhhnw42owmirnyqgd5i3bg0ckvweg9d16sxsai53uegamrfu2qd5g09oj95iwc1d3g1h6gclqt0prcb\",\n \"resource\" : \"xzpdw5pjsp6o9kc15zdcf0br79a\",\n \"index\" : 5481719800931668522,\n \"message\" : \"Explicabo aut voluptatem unde quo dolorem et. Sunt perspiciatis pariatur. Illo officiis enim dolorem ut.\",\n \"value\" : { }\n }, {\n \"code\" : \"yw2ch05oexauxec0z7816lu06togc13sxshyg5o36k5h\",\n \"field\" : \"9gi7z3k0ktpuou4q4zdqbh3jsn1o3h2z5lrwz48yahc2rp1zq3wv5g9djfc0q7o1ul5u8xl1wmj7ne2qgt575hsuz22ggwof62vtlryasogr4sqke0kq0sjnccrpuoe53ah561903fr5z0u8giqsdujk60jpes\",\n \"resource\" : \"kah7o57giqcytsvbzs43creuo3odzj91xcn50ttq7hlizxt3t4\",\n \"index\" : 3286647165363968342,\n \"message\" : \"Rerum dolorum dolore quidem sint facere magnam. Sint id atque aut. Dolorem quidem omnis illum nesciunt eum recusandae tempore. Laborum cumque aut perferendis ducimus nihil.\",\n \"value\" : { }\n }, {\n \"code\" : \"eko7ttcy8bybxhuz6javzjhfy1tsr9y8evomj6fksnuhd0d8hdk0hfda0s997gti6dsy\",\n \"field\" : \"y2z4rew0y2su9ne4rp8xkq3ba7e8pm7lr16z7c3ahr7lzfyf67g0fzj7ljx0pajnuumfrdtim\",\n \"resource\" : \"57j9tdw448mh359usqbjtns92w70xne2gktrhqyk2ysl225sxbur8vsutit1qmyx8mres0rmtq\",\n \"index\" : 3256838599885408995,\n \"message\" : \"Autem qui eaque accusamus et. Commodi nam corporis vitae dolor architecto iure sit. Quis sunt modi. Dolores eligendi amet veritatis quod qui.\",\n \"value\" : { }\n } ]\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "b53324da-8ad1-4448-927b-e4e8656e7f68", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.715287Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "gists/update", + "schema": { + "description": "Validation Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "errors": { + "items": { + "properties": { + "code": { + "type": "string" + }, + "field": { + "type": "string" + }, + "index": { + "type": "integer" + }, + "message": { + "type": "string" + }, + "resource": { + "type": "string" + }, + "value": { + "oneOf": [ + { + "nullable": true, + "type": "string" + }, + { + "nullable": true, + "type": "integer" + }, + { + "items": { + "type": "string" + }, + "nullable": true, + "type": "array" + } + ] + } + }, + "required": ["code"], + "type": "object" + }, + "type": "array" + }, + "message": { + "type": "string" + } + }, + "required": ["message", "documentation_url"], + "title": "Validation Error", + "type": "object" + } + } + } + }, + "insertionIndex": 1255 + }, + { + "id": "44a689d0-e2ee-42d3-8663-7b4e19b8954d", + "name": "Update a gist", + "request": { + "urlPath": "/gists/28a8", + "method": "PATCH" + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/589848\",\n \"message\" : \"Numquam dignissimos vel aperiam magni at sunt praesentium. Omnis voluptatum doloremque dolorem. Facilis non cupiditate temporibus voluptas quia cumque et. Eos voluptate quia debitis quidem.\",\n \"url\" : \"https://web.example.mocklab.io/125683\",\n \"status\" : \"r8wd8w84qh1tb1t2sk6fcvnxiw4b74jkjd7455jkerth71hpu7k2ycygxs3i0yzcuouk9kb6tpdzmjfiyglj6pnyxh6rfqb8vu9q\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "44a689d0-e2ee-42d3-8663-7b4e19b8954d", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.714573Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "gists/update", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 1256 + }, + { + "id": "9589df7c-e0c1-46db-9b4e-1d03c8e5bfa6", + "name": "Update a gist - default", + "request": { + "urlPath": "/gists/z45c", + "method": "PATCH" + }, + "response": { + "status": 200, + "body": "{\n \"comments\" : 0,\n \"comments_url\" : \"https://api.github.com/gists/aa5a315d61ae9438b18d/comments/\",\n \"commits_url\" : \"https://api.github.com/gists/aa5a315d61ae9438b18d/commits\",\n \"created_at\" : \"2010-04-14T02:15:15Z\",\n \"description\" : \"Hello World Examples\",\n \"forks_url\" : \"https://api.github.com/gists/aa5a315d61ae9438b18d/forks\",\n \"git_pull_url\" : \"https://gist.github.com/aa5a315d61ae9438b18d.git\",\n \"git_push_url\" : \"https://gist.github.com/aa5a315d61ae9438b18d.git\",\n \"html_url\" : \"https://gist.github.com/aa5a315d61ae9438b18d\",\n \"id\" : \"aa5a315d61ae9438b18d\",\n \"node_id\" : \"MDQ6R2lzdGFhNWEzMTVkNjFhZTk0MzhiMThk\",\n \"updated_at\" : \"2011-06-20T11:34:15Z\",\n \"url\" : \"https://api.github.com/gists/aa5a315d61ae9438b18d\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "9589df7c-e0c1-46db-9b4e-1d03c8e5bfa6", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.714286Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "gists/update", + "schema": { + "description": "Gist Simple", + "properties": { + "comments": { + "type": "integer" + }, + "comments_url": { + "type": "string" + }, + "commits_url": { + "type": "string" + }, + "created_at": { + "type": "string" + }, + "description": { + "nullable": true, + "type": "string" + }, + "files": { + "additionalProperties": { + "nullable": true, + "properties": { + "content": { + "type": "string" + }, + "filename": { + "type": "string" + }, + "language": { + "type": "string" + }, + "raw_url": { + "type": "string" + }, + "size": { + "type": "integer" + }, + "truncated": { + "type": "boolean" + }, + "type": { + "type": "string" + } + }, + "type": "object" + }, + "type": "object" + }, + "fork_of": { + "description": "Gist", + "nullable": true, + "properties": { + "comments": { + "type": "integer" + }, + "comments_url": { + "format": "uri", + "type": "string" + }, + "commits_url": { + "format": "uri", + "type": "string" + }, + "created_at": { + "format": "date-time", + "type": "string" + }, + "description": { + "nullable": true, + "type": "string" + }, + "files": { + "additionalProperties": { + "properties": { + "filename": { + "type": "string" + }, + "language": { + "type": "string" + }, + "raw_url": { + "type": "string" + }, + "size": { + "type": "integer" + }, + "type": { + "type": "string" + } + }, + "type": "object" + }, + "type": "object" + }, + "forks": { + "type": "array" + }, + "forks_url": { + "format": "uri", + "type": "string" + }, + "git_pull_url": { + "format": "uri", + "type": "string" + }, + "git_push_url": { + "format": "uri", + "type": "string" + }, + "history": { + "type": "array" + }, + "html_url": { + "format": "uri", + "type": "string" + }, + "id": { + "type": "string" + }, + "node_id": { + "type": "string" + }, + "owner": { + "$ref": "#/components/schemas/nullable-simple-user" + }, + "public": { + "type": "boolean" + }, + "truncated": { + "type": "boolean" + }, + "updated_at": { + "format": "date-time", + "type": "string" + }, + "url": { + "format": "uri", + "type": "string" + }, + "user": { + "$ref": "#/components/schemas/nullable-simple-user" + } + }, + "required": [ + "id", + "node_id", + "url", + "forks_url", + "commits_url", + "git_pull_url", + "git_push_url", + "html_url", + "comments_url", + "public", + "description", + "comments", + "user", + "files", + "created_at", + "updated_at" + ], + "title": "Gist", + "type": "object" + }, + "forks": { + "deprecated": true, + "items": { + "properties": { + "created_at": { + "format": "date-time", + "type": "string" + }, + "id": { + "type": "string" + }, + "updated_at": { + "format": "date-time", + "type": "string" + }, + "url": { + "format": "uri", + "type": "string" + }, + "user": { + "$ref": "#/components/schemas/public-user" + } + }, + "type": "object" + }, + "nullable": true, + "type": "array" + }, + "forks_url": { + "type": "string" + }, + "git_pull_url": { + "type": "string" + }, + "git_push_url": { + "type": "string" + }, + "history": { + "deprecated": true, + "items": { + "$ref": "#/components/schemas/gist-history" + }, + "nullable": true, + "type": "array" + }, + "html_url": { + "type": "string" + }, + "id": { + "type": "string" + }, + "node_id": { + "type": "string" + }, + "owner": { + "$ref": "#/components/schemas/simple-user" + }, + "public": { + "type": "boolean" + }, + "truncated": { + "type": "boolean" + }, + "updated_at": { + "type": "string" + }, + "url": { + "type": "string" + }, + "user": { + "nullable": true, + "type": "string" + } + }, + "title": "Gist Simple", + "type": "object" + } + } + } + }, + "insertionIndex": 1257 + }, + { + "id": "f15483b3-eba7-43ae-9748-a6a32a030065", + "name": "Get a gist (application/json)", + "request": { + "urlPath": "/gists/fnfj", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/430939\",\n \"message\" : \"Voluptatibus cupiditate est provident. Soluta at voluptatem blanditiis quod. Enim enim numquam fuga. Tempora deserunt repudiandae. Aperiam quod similique corrupti non.\",\n \"url\" : \"https://web.example.mocklab.io/549351\",\n \"status\" : \"2i353mv3mkcjirolt8rfhsm8ixnzrqk29\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "f15483b3-eba7-43ae-9748-a6a32a030065", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.713822Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "gists/get", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 1258 + }, + { + "id": "b6fa3bef-e560-4e5e-9e4e-106d6400525b", + "name": "Get a gist (application/json)", + "request": { + "urlPath": "/gists/blw0", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 403, + "body": "{\n \"block\" : {\n \"reason\" : \"pwujnyi8cybz6kfwwx8frpi7x9bipmtnrgod167wtvx7myt557v4v3ag4ymw8g384pcnhqfngaqvptzh219vcya994d0p5x1q8hw0eszjv1kg1vpziin6w5evyhbf1gjvok09ujix36uz22vkabxsntbp0x0\",\n \"html_url\" : \"https://web.example.mocklab.io/582009\",\n \"created_at\" : \"kalykyc72am7rox4l6ymvpwa3bygt3y8c3tmxc52rumf3n5o7pq3b06qxu5913y6y61ind\"\n },\n \"documentation_url\" : \"https://web.example.mocklab.io/873303\",\n \"message\" : \"Voluptates et alias reprehenderit non quo. Neque ut id rerum. Et vitae vel.\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "b6fa3bef-e560-4e5e-9e4e-106d6400525b", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.713539Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "gists/get", + "schema": { + "properties": { + "block": { + "properties": { + "created_at": { + "type": "string" + }, + "html_url": { + "nullable": true, + "type": "string" + }, + "reason": { + "type": "string" + } + }, + "type": "object" + }, + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "type": "object" + } + } + } + }, + "insertionIndex": 1259 + }, + { + "id": "047934c6-8131-4375-8054-24bb2fbdff96", + "name": "Get a gist - 304", + "request": { + "urlPath": "/gists/1v64", + "method": "GET" + }, + "response": { + "status": 304 + }, + "uuid": "047934c6-8131-4375-8054-24bb2fbdff96", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.713187Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "gists/get" + } + } + }, + "insertionIndex": 1260 + }, + { + "id": "8c053012-0d68-4cbe-bf5b-f8137e6c6b83", + "name": "Get a gist (application/json) - default", + "request": { + "urlPath": "/gists/8260", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 200, + "body": "{\n \"comments\" : 0,\n \"comments_url\" : \"https://api.github.com/gists/aa5a315d61ae9438b18d/comments/\",\n \"commits_url\" : \"https://api.github.com/gists/aa5a315d61ae9438b18d/commits\",\n \"created_at\" : \"2010-04-14T02:15:15Z\",\n \"description\" : \"Hello World Examples\",\n \"forks_url\" : \"https://api.github.com/gists/aa5a315d61ae9438b18d/forks\",\n \"git_pull_url\" : \"https://gist.github.com/aa5a315d61ae9438b18d.git\",\n \"git_push_url\" : \"https://gist.github.com/aa5a315d61ae9438b18d.git\",\n \"html_url\" : \"https://gist.github.com/aa5a315d61ae9438b18d\",\n \"id\" : \"aa5a315d61ae9438b18d\",\n \"node_id\" : \"MDQ6R2lzdGFhNWEzMTVkNjFhZTk0MzhiMThk\",\n \"updated_at\" : \"2011-06-20T11:34:15Z\",\n \"url\" : \"https://api.github.com/gists/aa5a315d61ae9438b18d\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "8c053012-0d68-4cbe-bf5b-f8137e6c6b83", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.713083Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "gists/get", + "schema": { + "description": "Gist Simple", + "properties": { + "comments": { + "type": "integer" + }, + "comments_url": { + "type": "string" + }, + "commits_url": { + "type": "string" + }, + "created_at": { + "type": "string" + }, + "description": { + "nullable": true, + "type": "string" + }, + "files": { + "additionalProperties": { + "nullable": true, + "properties": { + "content": { + "type": "string" + }, + "filename": { + "type": "string" + }, + "language": { + "type": "string" + }, + "raw_url": { + "type": "string" + }, + "size": { + "type": "integer" + }, + "truncated": { + "type": "boolean" + }, + "type": { + "type": "string" + } + }, + "type": "object" + }, + "type": "object" + }, + "fork_of": { + "description": "Gist", + "nullable": true, + "properties": { + "comments": { + "type": "integer" + }, + "comments_url": { + "format": "uri", + "type": "string" + }, + "commits_url": { + "format": "uri", + "type": "string" + }, + "created_at": { + "format": "date-time", + "type": "string" + }, + "description": { + "nullable": true, + "type": "string" + }, + "files": { + "additionalProperties": { + "properties": { + "filename": { + "type": "string" + }, + "language": { + "type": "string" + }, + "raw_url": { + "type": "string" + }, + "size": { + "type": "integer" + }, + "type": { + "type": "string" + } + }, + "type": "object" + }, + "type": "object" + }, + "forks": { + "type": "array" + }, + "forks_url": { + "format": "uri", + "type": "string" + }, + "git_pull_url": { + "format": "uri", + "type": "string" + }, + "git_push_url": { + "format": "uri", + "type": "string" + }, + "history": { + "type": "array" + }, + "html_url": { + "format": "uri", + "type": "string" + }, + "id": { + "type": "string" + }, + "node_id": { + "type": "string" + }, + "owner": { + "$ref": "#/components/schemas/nullable-simple-user" + }, + "public": { + "type": "boolean" + }, + "truncated": { + "type": "boolean" + }, + "updated_at": { + "format": "date-time", + "type": "string" + }, + "url": { + "format": "uri", + "type": "string" + }, + "user": { + "$ref": "#/components/schemas/nullable-simple-user" + } + }, + "required": [ + "id", + "node_id", + "url", + "forks_url", + "commits_url", + "git_pull_url", + "git_push_url", + "html_url", + "comments_url", + "public", + "description", + "comments", + "user", + "files", + "created_at", + "updated_at" + ], + "title": "Gist", + "type": "object" + }, + "forks": { + "deprecated": true, + "items": { + "properties": { + "created_at": { + "format": "date-time", + "type": "string" + }, + "id": { + "type": "string" + }, + "updated_at": { + "format": "date-time", + "type": "string" + }, + "url": { + "format": "uri", + "type": "string" + }, + "user": { + "$ref": "#/components/schemas/public-user" + } + }, + "type": "object" + }, + "nullable": true, + "type": "array" + }, + "forks_url": { + "type": "string" + }, + "git_pull_url": { + "type": "string" + }, + "git_push_url": { + "type": "string" + }, + "history": { + "deprecated": true, + "items": { + "$ref": "#/components/schemas/gist-history" + }, + "nullable": true, + "type": "array" + }, + "html_url": { + "type": "string" + }, + "id": { + "type": "string" + }, + "node_id": { + "type": "string" + }, + "owner": { + "$ref": "#/components/schemas/simple-user" + }, + "public": { + "type": "boolean" + }, + "truncated": { + "type": "boolean" + }, + "updated_at": { + "type": "string" + }, + "url": { + "type": "string" + }, + "user": { + "nullable": true, + "type": "string" + } + }, + "title": "Gist Simple", + "type": "object" + } + } + } + }, + "insertionIndex": 1261 + }, + { + "id": "86b5b6b9-9c2d-49a5-afcc-003da97ae8e9", + "name": "Delete a gist (application/json)", + "request": { + "urlPath": "/gists/b3th", + "method": "DELETE", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/796851\",\n \"message\" : \"Nihil libero inventore illum sunt. Nihil dolore dicta repudiandae perferendis consequuntur ut. Recusandae libero officia harum ut et. Quas quia voluptatem delectus ut voluptate qui. Nemo quas omnis.\",\n \"url\" : \"https://web.example.mocklab.io/073017\",\n \"status\" : \"31efs398etmk\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "86b5b6b9-9c2d-49a5-afcc-003da97ae8e9", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.712531Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "gists/delete", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 1262 + }, + { + "id": "62a3ba99-bf38-420f-b2a3-6a9100ca4d31", + "name": "Delete a gist (application/json)", + "request": { + "urlPath": "/gists/2iq2", + "method": "DELETE", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 403, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/202212\",\n \"message\" : \"Aut voluptatem incidunt ipsum consequuntur. Placeat laboriosam omnis delectus esse impedit. Consectetur quae asperiores modi aut. Modi fugit eos ea voluptatibus debitis rerum voluptatem.\",\n \"url\" : \"https://web.example.mocklab.io/729811\",\n \"status\" : \"fafbdvkza1vbli89slgv9j5mq51ihyi3e004qvw66dsoa8cq8mb8qc0173sh2jdpwhe2wp2dqd71lqzeux9ntla1334vvalxujds\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "62a3ba99-bf38-420f-b2a3-6a9100ca4d31", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.712253Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "gists/delete", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 1263 + }, + { + "id": "17bb281d-a429-4e86-9a62-3a01c17b55c3", + "name": "Delete a gist - 304", + "request": { + "urlPath": "/gists/q0ws", + "method": "DELETE" + }, + "response": { + "status": 304 + }, + "uuid": "17bb281d-a429-4e86-9a62-3a01c17b55c3", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.711953Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "gists/delete" + } + } + }, + "insertionIndex": 1264 + }, + { + "id": "26ab947a-a6d1-49cd-b272-551cfb3c9463", + "name": "Delete a gist - 204", + "request": { + "urlPath": "/gists/3q4k", + "method": "DELETE" + }, + "response": { + "status": 204 + }, + "uuid": "26ab947a-a6d1-49cd-b272-551cfb3c9463", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.711869Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "gists/delete" + } + } + }, + "insertionIndex": 1265 + }, + { + "id": "35d94c31-d9b7-41d3-aebc-38d86ad4f0fe", + "name": "List starred gists (application/json)", + "request": { + "urlPath": "/gists/starred", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 403, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/621611\",\n \"message\" : \"Enim vero consequatur enim ut nesciunt ut. Temporibus fuga ipsam quaerat. Non delectus et necessitatibus. A quia qui doloremque ut ea asperiores.\",\n \"url\" : \"https://web.example.mocklab.io/004728\",\n \"status\" : \"bmoqldslk04k5z0sao8x40f32dls7vnni5on3a877ka2458gfte8n044vu8vttohev6i2pydwztj31zxzon333obxd8e1kxyoj8mbh1qfbuasob\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "35d94c31-d9b7-41d3-aebc-38d86ad4f0fe", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.711748Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "gists/list-starred", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 1266 + }, + { + "id": "2417f9e2-03cf-44fc-91d5-ec1eb4c36822", + "name": "List starred gists (application/json)", + "request": { + "urlPath": "/gists/starred", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 401, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/775635\",\n \"message\" : \"Libero accusantium quas doloremque. Fugit tempora inventore porro. Ut quae corporis tempore iste debitis aliquam iste.\",\n \"url\" : \"https://web.example.mocklab.io/683587\",\n \"status\" : \"9s7ocrcvo5nr0chyk8mk75il45qgl0q9jyopytnh0p994djsc6i6zqvpiz8p83jrah05hu7o52snyxzsejw5fc31gsec3jb1lhh3q2\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "2417f9e2-03cf-44fc-91d5-ec1eb4c36822", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.711536Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "gists/list-starred", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 1267 + }, + { + "id": "131ad476-097b-45b9-b0fe-7da720c40615", + "name": "List starred gists - 304", + "request": { + "urlPath": "/gists/starred", + "method": "GET" + }, + "response": { + "status": 304 + }, + "uuid": "131ad476-097b-45b9-b0fe-7da720c40615", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.711348Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "gists/list-starred" + } + } + }, + "insertionIndex": 1268 + }, + { + "id": "26db4875-bdb7-4187-98ce-31677112e4ca", + "name": "List starred gists (application/json) - default", + "request": { + "urlPath": "/gists/starred", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 200, + "body": "[ {\n \"comments\" : 0,\n \"comments_url\" : \"https://api.github.com/gists/aa5a315d61ae9438b18d/comments/\",\n \"commits_url\" : \"https://api.github.com/gists/aa5a315d61ae9438b18d/commits\",\n \"created_at\" : \"2010-04-14T02:15:15Z\",\n \"description\" : \"Hello World Examples\",\n \"files\" : {\n \"hello_world.rb\" : {\n \"filename\" : \"hello_world.rb\",\n \"language\" : \"Ruby\",\n \"raw_url\" : \"https://gist.githubusercontent.com/octocat/6cad326836d38bd3a7ae/raw/db9c55113504e46fa076e7df3a04ce592e2e86d8/hello_world.rb\",\n \"size\" : 167,\n \"type\" : \"application/x-ruby\"\n }\n },\n \"forks_url\" : \"https://api.github.com/gists/aa5a315d61ae9438b18d/forks\",\n \"git_pull_url\" : \"https://gist.github.com/aa5a315d61ae9438b18d.git\",\n \"git_push_url\" : \"https://gist.github.com/aa5a315d61ae9438b18d.git\",\n \"html_url\" : \"https://gist.github.com/aa5a315d61ae9438b18d\",\n \"id\" : \"aa5a315d61ae9438b18d\",\n \"node_id\" : \"MDQ6R2lzdGFhNWEzMTVkNjFhZTk0MzhiMThk\",\n \"owner\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"public\" : true,\n \"truncated\" : false,\n \"updated_at\" : \"2011-06-20T11:34:15Z\",\n \"url\" : \"https://api.github.com/gists/aa5a315d61ae9438b18d\"\n} ]", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "26db4875-bdb7-4187-98ce-31677112e4ca", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.711325Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "gists/list-starred", + "schema": { + "items": { + "$ref": "#/components/schemas/base-gist" + }, + "type": "array" + } + } + } + }, + "insertionIndex": 1269 + }, + { + "id": "4c2f2fe6-8a2f-4a55-b2a5-4c9ed3088e57", + "name": "List public gists (application/json)", + "request": { + "urlPath": "/gists/public", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 422, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/658057\",\n \"message\" : \"Ducimus consequatur dolores odit tempore qui neque. Est aut ab aut totam in. Quo tempora sed aperiam modi. Eveniet omnis tenetur eos.\",\n \"errors\" : [ {\n \"code\" : \"9b9bqauguht9503rajtxum1gojla0qe0r8x3pp8munra5d1sbegftrlnenpanstmssnwk\",\n \"field\" : \"82xguo9uzyw5ctnumzwsdudulyeqdv5q7uhyfpbn424ft9vrdf\",\n \"resource\" : \"jm9dpwj0t8enop26nixvffqnspxqyakqstxopd4pgzrv39lpg6dh5wyh71xxyzten2ad2t87yofuwkxu5i42pjjm5tpo0mlba1ofd7wwaghjdcens5fu61zjvmhosqc4n2wy9b7egf1aqqo2vllh\",\n \"index\" : 746368128840758182,\n \"message\" : \"In quos natus rem deserunt temporibus dolor. Iusto est est officia voluptatem qui nihil voluptas. Debitis sint et et dolor exercitationem.\",\n \"value\" : { }\n }, {\n \"code\" : \"xoq6m5i06\",\n \"field\" : \"slyszzvhi\",\n \"resource\" : \"3hwi785n2mlzrvuhckmckjaky53nmofdmyasqzx5tl1g7at6bk42ypm17oi720y4s0tbotd20ho7cpsk0a\",\n \"index\" : 7941067082184596962,\n \"message\" : \"Recusandae omnis dolores quidem atque impedit incidunt et. Cum aliquam voluptates. Hic eaque provident ut. Qui sunt ullam enim facere minima.\",\n \"value\" : { }\n }, {\n \"code\" : \"3bdt66nfj2n0g17mvwz13wl2q0mvtl0w41fv4btczfivcyh2c0vk92aopkto73r1et14r62oi7azg6bqhsc0h33vhtzbf2712mr856winpz5e83uxg7g6gczlxszydpbzxgqj41sf6gg0ibroik9ety8tm38l\",\n \"field\" : \"125zkij26o16ltfayyq007plz30e5js8dlvcwddv57kq0odm4g2l7h45b5ka6maoau57zronep3wpf5u9th2bvy1rcxvm6okkte7anaw2an0le1\",\n \"resource\" : \"79m9n3og8z8j3gqg2l3rw5i3vjsp2plodstgpwpn5y7e6saoshv2\",\n \"index\" : 4208128005639339217,\n \"message\" : \"Nesciunt fuga dolore animi dolor. Nihil et non tenetur sed voluptatem perferendis. Praesentium ratione fugiat fugiat labore. Exercitationem fuga velit animi aut.\",\n \"value\" : { }\n }, {\n \"code\" : \"h8qsnjeshzf7ziti2rqpcm6osw11n1lvvy3d6rx9qdqxt2jncuzdj6ibwoau4pzmanssdobb78aklj5er2288cj292ianl130c6chgonaj4qy6y4lsz2058ogwuyrnun4wn1y93hkgaqwxbhrkuvmbaa\",\n \"field\" : \"11rfqngzhdgclj2tgfscwb6nkzd59bfk3ap1j1vuerls7ygmqk51houapjmmycitus16vu6v0j2cthxzesecz2ri94cynerigq9vo33dq9n9wloanm5rnmak3oocmc7klq369z8xd4495pibi08ge7m3como1jpqy2kl6qsnke02ex0k6ssdmebtrx\",\n \"resource\" : \"gvjcxlw82459msjocjhkv3j6xa8qo4aqfvvu0dhqvzz5bh3vsqopnahkv3l0a5iwyqyc6ngrrlwbswq1xmfm1v7gnwbyb79hjfy8sdn30r8mh5cg7631407x1k6\",\n \"index\" : 9003886303135123352,\n \"message\" : \"Et qui doloremque. Rerum nemo non quaerat adipisci distinctio aperiam. Et velit aut non dicta rem necessitatibus. Reiciendis nisi iste eligendi quaerat et porro. Minus dolorum pariatur.\",\n \"value\" : { }\n }, {\n \"code\" : \"67rbhaj2a6sna2hjp9d6do4bkrf2lbbrivhh81i8wtquaij4g501wef3bahpfjc2\",\n \"field\" : \"no3b3fhypzk86q8be1bc2x8mve3u5bhi3yulzcbqeq7dixi6804jzsl73spqbzc8k3zaij1rd42wa65k63rng\",\n \"resource\" : \"kdpem55bv2vpoxv1n9r18gf2ccw1odmnalhu29fg4szl8bp1g1izirtqcvo3151gmx04neyzt309n364xhvv97\",\n \"index\" : 697012403137487128,\n \"message\" : \"Assumenda autem est pariatur officia veniam reiciendis occaecati. Eveniet quod non. Omnis vel ex et quaerat beatae dolor. Error iste est facere est.\",\n \"value\" : { }\n } ]\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "4c2f2fe6-8a2f-4a55-b2a5-4c9ed3088e57", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.711274Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "gists/list-public", + "schema": { + "description": "Validation Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "errors": { + "items": { + "properties": { + "code": { + "type": "string" + }, + "field": { + "type": "string" + }, + "index": { + "type": "integer" + }, + "message": { + "type": "string" + }, + "resource": { + "type": "string" + }, + "value": { + "oneOf": [ + { + "nullable": true, + "type": "string" + }, + { + "nullable": true, + "type": "integer" + }, + { + "items": { + "type": "string" + }, + "nullable": true, + "type": "array" + } + ] + } + }, + "required": ["code"], + "type": "object" + }, + "type": "array" + }, + "message": { + "type": "string" + } + }, + "required": ["message", "documentation_url"], + "title": "Validation Error", + "type": "object" + } + } + } + }, + "insertionIndex": 1270 + }, + { + "id": "1e9ff774-b3f7-48de-aff1-4292cb725d95", + "name": "List public gists (application/json)", + "request": { + "urlPath": "/gists/public", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 403, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/260248\",\n \"message\" : \"Et animi est quibusdam. Omnis laboriosam alias temporibus rerum. Corporis voluptatem recusandae ratione est enim cupiditate et. Qui sit quia non recusandae eos voluptate.\",\n \"url\" : \"https://web.example.mocklab.io/869939\",\n \"status\" : \"hv3k8rhyd618j0zt60ld4u335szshm6loio0trxogz4d3w908gf1pzkwh6qtrjeflf8o7q3f6urdcvt1ajavixhze7b7t1otti8unrnkgrnu85wx9mfwmmsiie1pcwd7o2m04ukuebitnmivh080wjboz\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "1e9ff774-b3f7-48de-aff1-4292cb725d95", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.710699Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "gists/list-public", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 1271 + }, + { + "id": "eaa20ee5-4488-4f6d-9ad5-83714fc528d8", + "name": "List public gists - 304", + "request": { + "urlPath": "/gists/public", + "method": "GET" + }, + "response": { + "status": 304 + }, + "uuid": "eaa20ee5-4488-4f6d-9ad5-83714fc528d8", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.710497Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "gists/list-public" + } + } + }, + "insertionIndex": 1272 + }, + { + "id": "b309e329-adc0-49c8-bb53-67b978f40bb9", + "name": "List public gists (application/json) - default", + "request": { + "urlPath": "/gists/public", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 200, + "body": "[ {\n \"comments\" : 0,\n \"comments_url\" : \"https://api.github.com/gists/aa5a315d61ae9438b18d/comments/\",\n \"commits_url\" : \"https://api.github.com/gists/aa5a315d61ae9438b18d/commits\",\n \"created_at\" : \"2010-04-14T02:15:15Z\",\n \"description\" : \"Hello World Examples\",\n \"files\" : {\n \"hello_world.rb\" : {\n \"filename\" : \"hello_world.rb\",\n \"language\" : \"Ruby\",\n \"raw_url\" : \"https://gist.githubusercontent.com/octocat/6cad326836d38bd3a7ae/raw/db9c55113504e46fa076e7df3a04ce592e2e86d8/hello_world.rb\",\n \"size\" : 167,\n \"type\" : \"application/x-ruby\"\n }\n },\n \"forks_url\" : \"https://api.github.com/gists/aa5a315d61ae9438b18d/forks\",\n \"git_pull_url\" : \"https://gist.github.com/aa5a315d61ae9438b18d.git\",\n \"git_push_url\" : \"https://gist.github.com/aa5a315d61ae9438b18d.git\",\n \"html_url\" : \"https://gist.github.com/aa5a315d61ae9438b18d\",\n \"id\" : \"aa5a315d61ae9438b18d\",\n \"node_id\" : \"MDQ6R2lzdGFhNWEzMTVkNjFhZTk0MzhiMThk\",\n \"owner\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"public\" : true,\n \"truncated\" : false,\n \"updated_at\" : \"2011-06-20T11:34:15Z\",\n \"url\" : \"https://api.github.com/gists/aa5a315d61ae9438b18d\"\n} ]", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "b309e329-adc0-49c8-bb53-67b978f40bb9", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.710475Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "gists/list-public", + "schema": { + "items": { + "$ref": "#/components/schemas/base-gist" + }, + "type": "array" + } + } + } + }, + "insertionIndex": 1273 + }, + { + "id": "bac6ef09-b5db-4c29-9b4a-465b1ed51698", + "name": "Create a gist (application/json)", + "request": { + "urlPath": "/gists", + "method": "POST", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 422, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/926864\",\n \"message\" : \"Consectetur ad atque saepe. Aliquam consequatur ut alias odit voluptas. Ut optio ut. Dignissimos eum eum. Ad nisi nihil quis id omnis impedit sed.\",\n \"errors\" : [ {\n \"code\" : \"w9hnoo0xit6fy57dna9wh2heyu69abr3bk0mkq5lqpj425dwa2xvyw1f3m3xyykew6kynywhxyevg3y4dumhzece4ssls4ho6ylvbr452fz5q4ps7knm3fu3aox1m77oieqx\",\n \"field\" : \"tga1wu84y5s17p0ktqe6eomry8u97gttxfhjzgx80b7kr6vyk5sryonuay7rmzk8bck0mogj9fzm7da9pdslp0lbthiu00sg1j7k51t6wp8swowo6rmr\",\n \"resource\" : \"hy2en6kmlcao6inewphgfiqr9bh4j71vcp6x76iqwzo4arhl8jfg2n7335mt9g8np32eih7k5clc7m20ng2sicgopv5szexe8t5a18xxpg0re4aiqlzc9ct245ohb9qio9g0g22xomza15e1gx125knerz9fickcdmzh\",\n \"index\" : 5839699542673370780,\n \"message\" : \"Aperiam voluptas voluptate aut minima magni quo voluptas. Vitae nihil qui hic perspiciatis quae. Optio necessitatibus tempora.\",\n \"value\" : { }\n }, {\n \"code\" : \"es0px7ii2phvtdbxpv97wzwu3kppnque8gn9kojeafmlx50nrz9cbed56ncq7uuwbkhu87vvihwejvhmr8v3cdnxstts7f1x90m1kvw4zzue157m92x70wf869pze2jqovryd6om9igcq5235alaartw2jam5hglmljhe6gb0122wc6y7wupvq0b9cu2r5kgxeu5\",\n \"field\" : \"ca388orde5l25byzusa8kmf4u\",\n \"resource\" : \"fgx33gt1yn5p1fxnfjhocbonfi\",\n \"index\" : 3005885711943134667,\n \"message\" : \"Corrupti explicabo nisi quod omnis. Molestias voluptatem dolorem voluptatem quidem. Ratione vero sunt. Excepturi quae sed est magnam ea voluptates nihil. Vel ut autem veritatis.\",\n \"value\" : { }\n }, {\n \"code\" : \"7qjun1vwxokm46679scxztrbtdcful6cs\",\n \"field\" : \"f7abpsox1hx65ffjdzqz425h7ocm6bswh8gvx1wd3idc8y9lt2h5r9g1v0aivs86n2jzgzl\",\n \"resource\" : \"98c24lnud5riq47lqrrpu15hemjzg8bbqk8ezy9vnbd4491dyl57oo5o5i4nw5sr7va445xyromqgohzlnvyo3dz79qtl7uo05h1td76o0dk6tpnelkuztq1\",\n \"index\" : 8488572824584852317,\n \"message\" : \"Nisi sunt sed modi earum qui repudiandae possimus. Cumque nobis veritatis voluptate debitis veritatis omnis. Vel cupiditate minus nostrum ut quod est.\",\n \"value\" : { }\n }, {\n \"code\" : \"jsgb8bp6qd6z1mvb2pd3qzm9i30nmxx1vuqjnap8op5dq\",\n \"field\" : \"zsh2kazt7dq8vupgf8m0ovh103e\",\n \"resource\" : \"z0iki98sj27josoyr3xxomoabxpadyxrr0zx9096mh4rhbpgx0ss\",\n \"index\" : 5692609098239447649,\n \"message\" : \"Consequuntur suscipit est. Officiis tenetur sint voluptas. Tempora natus beatae sit ab. Voluptates molestiae voluptas facere et et. Quos sit non quasi accusantium recusandae.\",\n \"value\" : { }\n }, {\n \"code\" : \"pfv4y6ls9pcmnfn1owcbh6ka9y30qxjjzu3xxpfa3cn0zn21cxyghbp1gxyn1023i0vr4lwewprw08oj8plkdjbngc81s5sczhrus5w4geouu7l4ve7zqgappxqc6yvymnbuttbvzh3a5bevrtjxu0pnzhu28bbsn8kjdqwwcw2kytnx2mpahj54ds\",\n \"field\" : \"hqro6h3y8neizsnfgyd7uqwax8v5ifrev6uu35irhno1c8slyrjaj7tofsui1ljbv8ytlvd7dixalu\",\n \"resource\" : \"2pos93gfgwxq3oycil95bd9vqve0xb4ptory4zvxzmt1ssn8u5izdzpaubxb357r7iuspk4f4p55w6birzka3cpjnaq913g58wp1oes4otxyedagt7nic70ersyhl1ix9bq1tkpucye23mj311cj1pwvld5f1yl0tdglbysj18j7fs4rul3el1\",\n \"index\" : 1705677558105272912,\n \"message\" : \"Eligendi corporis deleniti. Officia iusto asperiores voluptas. Dolores modi nulla eaque. Tempora quo vero non et ut numquam.\",\n \"value\" : { }\n } ]\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "bac6ef09-b5db-4c29-9b4a-465b1ed51698", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.710424Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "gists/create", + "schema": { + "description": "Validation Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "errors": { + "items": { + "properties": { + "code": { + "type": "string" + }, + "field": { + "type": "string" + }, + "index": { + "type": "integer" + }, + "message": { + "type": "string" + }, + "resource": { + "type": "string" + }, + "value": { + "oneOf": [ + { + "nullable": true, + "type": "string" + }, + { + "nullable": true, + "type": "integer" + }, + { + "items": { + "type": "string" + }, + "nullable": true, + "type": "array" + } + ] + } + }, + "required": ["code"], + "type": "object" + }, + "type": "array" + }, + "message": { + "type": "string" + } + }, + "required": ["message", "documentation_url"], + "title": "Validation Error", + "type": "object" + } + } + } + }, + "insertionIndex": 1274 + }, + { + "id": "ab02ae37-1e7e-4aee-be3d-dd40d4594305", + "name": "Create a gist (application/json)", + "request": { + "urlPath": "/gists", + "method": "POST", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/751424\",\n \"message\" : \"Optio earum veniam placeat alias aut beatae quas. Quibusdam atque saepe inventore excepturi. Molestiae perspiciatis sed itaque nihil.\",\n \"url\" : \"https://web.example.mocklab.io/992049\",\n \"status\" : \"hn2whvnw72xbzgvx1qcaecw2y81pteqqscbv\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "ab02ae37-1e7e-4aee-be3d-dd40d4594305", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.70974Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "gists/create", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 1275 + }, + { + "id": "c4359192-29e8-4c0f-93a4-01e6d78c5056", + "name": "Create a gist (application/json)", + "request": { + "urlPath": "/gists", + "method": "POST", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 403, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/849001\",\n \"message\" : \"Sint modi sunt incidunt enim consequatur labore. Commodi corrupti velit. Molestiae consequatur aut ut dolores aut eaque. Veritatis doloribus et consequatur sequi.\",\n \"url\" : \"https://web.example.mocklab.io/892565\",\n \"status\" : \"dpylufiwa0il1ia4jerilv78m8jvwfp1h6itrzs13l1pyl9ti393st1vxv3sy5ewxlngx9re65s4iwd2odztwcmbju1r15rkpevzym\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "c4359192-29e8-4c0f-93a4-01e6d78c5056", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.709535Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "gists/create", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 1276 + }, + { + "id": "14cd7abc-3011-4dc5-9a25-a6f01d254ed1", + "name": "Create a gist - 304", + "request": { + "urlPath": "/gists", + "method": "POST" + }, + "response": { + "status": 304 + }, + "uuid": "14cd7abc-3011-4dc5-9a25-a6f01d254ed1", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.709327Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "gists/create" + } + } + }, + "insertionIndex": 1277 + }, + { + "id": "2fe25e6a-c8a5-4c8e-a0d7-762e59e63d5b", + "name": "Create a gist (application/json) - default", + "request": { + "urlPath": "/gists", + "method": "POST", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 201, + "body": "{\n \"comments\" : 0,\n \"comments_url\" : \"https://api.github.com/gists/aa5a315d61ae9438b18d/comments/\",\n \"commits_url\" : \"https://api.github.com/gists/aa5a315d61ae9438b18d/commits\",\n \"created_at\" : \"2010-04-14T02:15:15Z\",\n \"description\" : \"Hello World Examples\",\n \"forks_url\" : \"https://api.github.com/gists/aa5a315d61ae9438b18d/forks\",\n \"git_pull_url\" : \"https://gist.github.com/aa5a315d61ae9438b18d.git\",\n \"git_push_url\" : \"https://gist.github.com/aa5a315d61ae9438b18d.git\",\n \"html_url\" : \"https://gist.github.com/aa5a315d61ae9438b18d\",\n \"id\" : \"aa5a315d61ae9438b18d\",\n \"node_id\" : \"MDQ6R2lzdGFhNWEzMTVkNjFhZTk0MzhiMThk\",\n \"updated_at\" : \"2011-06-20T11:34:15Z\",\n \"url\" : \"https://api.github.com/gists/aa5a315d61ae9438b18d\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "2fe25e6a-c8a5-4c8e-a0d7-762e59e63d5b", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.70929Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "gists/create", + "schema": { + "description": "Gist Simple", + "properties": { + "comments": { + "type": "integer" + }, + "comments_url": { + "type": "string" + }, + "commits_url": { + "type": "string" + }, + "created_at": { + "type": "string" + }, + "description": { + "nullable": true, + "type": "string" + }, + "files": { + "additionalProperties": { + "nullable": true, + "properties": { + "content": { + "type": "string" + }, + "filename": { + "type": "string" + }, + "language": { + "type": "string" + }, + "raw_url": { + "type": "string" + }, + "size": { + "type": "integer" + }, + "truncated": { + "type": "boolean" + }, + "type": { + "type": "string" + } + }, + "type": "object" + }, + "type": "object" + }, + "fork_of": { + "description": "Gist", + "nullable": true, + "properties": { + "comments": { + "type": "integer" + }, + "comments_url": { + "format": "uri", + "type": "string" + }, + "commits_url": { + "format": "uri", + "type": "string" + }, + "created_at": { + "format": "date-time", + "type": "string" + }, + "description": { + "nullable": true, + "type": "string" + }, + "files": { + "additionalProperties": { + "properties": { + "filename": { + "type": "string" + }, + "language": { + "type": "string" + }, + "raw_url": { + "type": "string" + }, + "size": { + "type": "integer" + }, + "type": { + "type": "string" + } + }, + "type": "object" + }, + "type": "object" + }, + "forks": { + "type": "array" + }, + "forks_url": { + "format": "uri", + "type": "string" + }, + "git_pull_url": { + "format": "uri", + "type": "string" + }, + "git_push_url": { + "format": "uri", + "type": "string" + }, + "history": { + "type": "array" + }, + "html_url": { + "format": "uri", + "type": "string" + }, + "id": { + "type": "string" + }, + "node_id": { + "type": "string" + }, + "owner": { + "$ref": "#/components/schemas/nullable-simple-user" + }, + "public": { + "type": "boolean" + }, + "truncated": { + "type": "boolean" + }, + "updated_at": { + "format": "date-time", + "type": "string" + }, + "url": { + "format": "uri", + "type": "string" + }, + "user": { + "$ref": "#/components/schemas/nullable-simple-user" + } + }, + "required": [ + "id", + "node_id", + "url", + "forks_url", + "commits_url", + "git_pull_url", + "git_push_url", + "html_url", + "comments_url", + "public", + "description", + "comments", + "user", + "files", + "created_at", + "updated_at" + ], + "title": "Gist", + "type": "object" + }, + "forks": { + "deprecated": true, + "items": { + "properties": { + "created_at": { + "format": "date-time", + "type": "string" + }, + "id": { + "type": "string" + }, + "updated_at": { + "format": "date-time", + "type": "string" + }, + "url": { + "format": "uri", + "type": "string" + }, + "user": { + "$ref": "#/components/schemas/public-user" + } + }, + "type": "object" + }, + "nullable": true, + "type": "array" + }, + "forks_url": { + "type": "string" + }, + "git_pull_url": { + "type": "string" + }, + "git_push_url": { + "type": "string" + }, + "history": { + "deprecated": true, + "items": { + "$ref": "#/components/schemas/gist-history" + }, + "nullable": true, + "type": "array" + }, + "html_url": { + "type": "string" + }, + "id": { + "type": "string" + }, + "node_id": { + "type": "string" + }, + "owner": { + "$ref": "#/components/schemas/simple-user" + }, + "public": { + "type": "boolean" + }, + "truncated": { + "type": "boolean" + }, + "updated_at": { + "type": "string" + }, + "url": { + "type": "string" + }, + "user": { + "nullable": true, + "type": "string" + } + }, + "title": "Gist Simple", + "type": "object" + } + } + } + }, + "insertionIndex": 1278 + }, + { + "id": "302dee09-0aa4-4fd8-9130-d405cdda07ff", + "name": "List gists for the authenticated user (application/json)", + "request": { + "urlPath": "/gists", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 403, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/078064\",\n \"message\" : \"Autem aperiam ipsam hic nihil dolor voluptate suscipit. Minima omnis quo provident sit explicabo labore. Error expedita illum dolor quia earum quis accusantium. Omnis sapiente et quos corrupti aut vol\",\n \"url\" : \"https://web.example.mocklab.io/082268\",\n \"status\" : \"xvlptq8rlwe6ded7iefsjw1f4q5mjo0a4mt0uf25hyda4ool2qlslc8s17293o\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "302dee09-0aa4-4fd8-9130-d405cdda07ff", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.708675Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "gists/list", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 1279 + }, + { + "id": "83fe8177-4143-4127-b86a-1b948ed86917", + "name": "List gists for the authenticated user - 304", + "request": { + "urlPath": "/gists", + "method": "GET" + }, + "response": { + "status": 304 + }, + "uuid": "83fe8177-4143-4127-b86a-1b948ed86917", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.708457Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "gists/list" + } + } + }, + "insertionIndex": 1280 + }, + { + "id": "259b759f-1728-41f5-8ef9-13ad00b5930c", + "name": "List gists for the authenticated user (application/json) - default", + "request": { + "urlPath": "/gists", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 200, + "body": "[ {\n \"comments\" : 0,\n \"comments_url\" : \"https://api.github.com/gists/aa5a315d61ae9438b18d/comments/\",\n \"commits_url\" : \"https://api.github.com/gists/aa5a315d61ae9438b18d/commits\",\n \"created_at\" : \"2010-04-14T02:15:15Z\",\n \"description\" : \"Hello World Examples\",\n \"files\" : {\n \"hello_world.rb\" : {\n \"filename\" : \"hello_world.rb\",\n \"language\" : \"Ruby\",\n \"raw_url\" : \"https://gist.githubusercontent.com/octocat/6cad326836d38bd3a7ae/raw/db9c55113504e46fa076e7df3a04ce592e2e86d8/hello_world.rb\",\n \"size\" : 167,\n \"type\" : \"application/x-ruby\"\n }\n },\n \"forks_url\" : \"https://api.github.com/gists/aa5a315d61ae9438b18d/forks\",\n \"git_pull_url\" : \"https://gist.github.com/aa5a315d61ae9438b18d.git\",\n \"git_push_url\" : \"https://gist.github.com/aa5a315d61ae9438b18d.git\",\n \"html_url\" : \"https://gist.github.com/aa5a315d61ae9438b18d\",\n \"id\" : \"aa5a315d61ae9438b18d\",\n \"node_id\" : \"MDQ6R2lzdGFhNWEzMTVkNjFhZTk0MzhiMThk\",\n \"owner\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"public\" : true,\n \"truncated\" : false,\n \"updated_at\" : \"2011-06-20T11:34:15Z\",\n \"url\" : \"https://api.github.com/gists/aa5a315d61ae9438b18d\"\n} ]", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "259b759f-1728-41f5-8ef9-13ad00b5930c", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.708434Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "gists/list", + "schema": { + "items": { + "$ref": "#/components/schemas/base-gist" + }, + "type": "array" + } + } + } + }, + "insertionIndex": 1281 + }, + { + "id": "3ee23cfe-094b-46f2-bcdf-a7a6aeee7420", + "name": "Get feeds - default", + "request": { + "urlPath": "/feeds", + "method": "GET" + }, + "response": { + "status": 200, + "body": "{\n \"_links\" : {\n \"current_user\" : {\n \"href\" : \"https://github.com/octocat.private?token=abc123\",\n \"type\" : \"application/atom+xml\"\n },\n \"current_user_actor\" : {\n \"href\" : \"https://github.com/octocat.private.actor?token=abc123\",\n \"type\" : \"application/atom+xml\"\n },\n \"current_user_organization\" : {\n \"href\" : \"\",\n \"type\" : \"\"\n },\n \"current_user_organizations\" : [ {\n \"href\" : \"https://github.com/organizations/github/octocat.private.atom?token=abc123\",\n \"type\" : \"application/atom+xml\"\n } ],\n \"current_user_public\" : {\n \"href\" : \"https://github.com/octocat\",\n \"type\" : \"application/atom+xml\"\n },\n \"timeline\" : {\n \"href\" : \"https://github.com/timeline\",\n \"type\" : \"application/atom+xml\"\n },\n \"user\" : {\n \"href\" : \"https://github.com/{user}\",\n \"type\" : \"application/atom+xml\"\n }\n },\n \"current_user_actor_url\" : \"https://github.com/octocat.private.actor?token=abc123\",\n \"current_user_organization_url\" : \"\",\n \"current_user_organization_urls\" : [ \"https://github.com/organizations/github/octocat.private.atom?token=abc123\" ],\n \"current_user_public_url\" : \"https://github.com/octocat\",\n \"current_user_url\" : \"https://github.com/octocat.private?token=abc123\",\n \"timeline_url\" : \"https://github.com/timeline\",\n \"user_url\" : \"https://github.com/{user}\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "3ee23cfe-094b-46f2-bcdf-a7a6aeee7420", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.708382Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "activity/get-feeds", + "schema": { + "description": "Feed", + "properties": { + "_links": { + "properties": { + "current_user": { + "$ref": "#/components/schemas/link-with-type" + }, + "current_user_actor": { + "$ref": "#/components/schemas/link-with-type" + }, + "current_user_organization": { + "$ref": "#/components/schemas/link-with-type" + }, + "current_user_organizations": { + "items": { + "$ref": "#/components/schemas/link-with-type" + }, + "type": "array" + }, + "current_user_public": { + "$ref": "#/components/schemas/link-with-type" + }, + "security_advisories": { + "$ref": "#/components/schemas/link-with-type" + }, + "timeline": { + "$ref": "#/components/schemas/link-with-type" + }, + "user": { + "$ref": "#/components/schemas/link-with-type" + } + }, + "required": ["timeline", "user"], + "type": "object" + }, + "current_user_actor_url": { + "example": "https://github.com/octocat.private.actor?token=abc123", + "type": "string" + }, + "current_user_organization_url": { + "example": "https://github.com/octocat-org", + "type": "string" + }, + "current_user_organization_urls": { + "example": [ + "https://github.com/organizations/github/octocat.private.atom?token=abc123" + ], + "items": { + "format": "uri", + "type": "string" + }, + "type": "array" + }, + "current_user_public_url": { + "example": "https://github.com/octocat", + "type": "string" + }, + "current_user_url": { + "example": "https://github.com/octocat.private?token=abc123", + "type": "string" + }, + "timeline_url": { + "example": "https://github.com/timeline", + "type": "string" + }, + "user_url": { + "example": "https://github.com/{user}", + "type": "string" + } + }, + "required": ["_links", "timeline_url", "user_url"], + "title": "Feed", + "type": "object" + } + } + } + }, + "insertionIndex": 1282 + }, + { + "id": "e8aed6c0-063f-46f6-8662-747a2cb8686f", + "name": "List public events (application/json)", + "request": { + "urlPath": "/events", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 503, + "body": "{\n \"code\" : \"r94mqccr79m64r6nneoghrp4n163cuen975i4tzsqtvc3r8e4s6gld1kz0832i2oraxjnq943g27poub5hokpp2e37f0cknxa\",\n \"documentation_url\" : \"https://web.example.mocklab.io/606883\",\n \"message\" : \"Velit nostrum dolores velit. Vitae iusto sunt autem et dolorem blanditiis ab. Suscipit cum itaque minus corrupti impedit odit vero. Sint sed dolores.\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "e8aed6c0-063f-46f6-8662-747a2cb8686f", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.708201Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "activity/list-public-events", + "schema": { + "properties": { + "code": { + "type": "string" + }, + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "type": "object" + } + } + } + }, + "insertionIndex": 1283 + }, + { + "id": "92b4c274-8cb3-440a-8d99-ab1fec771bf4", + "name": "List public events (application/json)", + "request": { + "urlPath": "/events", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 403, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/257278\",\n \"message\" : \"Vel nemo numquam qui voluptatem omnis. Eos praesentium aliquam. Repellat consequatur consequatur maiores optio rerum sit. Sint amet quia qui aspernatur ad. Dolore enim nostrum qui modi impedit.\",\n \"url\" : \"https://web.example.mocklab.io/615308\",\n \"status\" : \"mxts2q9xp0m7s243q5ti7s\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "92b4c274-8cb3-440a-8d99-ab1fec771bf4", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.708007Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "activity/list-public-events", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 1284 + }, + { + "id": "c42613ee-462c-43e7-a378-0b5d46cb385b", + "name": "List public events - 304", + "request": { + "urlPath": "/events", + "method": "GET" + }, + "response": { + "status": 304 + }, + "uuid": "c42613ee-462c-43e7-a378-0b5d46cb385b", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.707639Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "activity/list-public-events" + } + } + }, + "insertionIndex": 1285 + }, + { + "id": "bc0945ae-c326-4803-bd14-ffef1f2c418d", + "name": "List public events (application/json)", + "request": { + "urlPath": "/events", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 200, + "body": "[ {\n \"actor\" : {\n \"display_login\" : \"2w8dvr7mli7c694n2le4tk9n0u5znvajg8ty3h14awp5gv7g9kjgsia76c627quxvo727f36xzthavyh4xfx1d\",\n \"avatar_url\" : \"https://s3.amazonaws.com/uifaces/faces/twitter/instalox/128.jpg\",\n \"id\" : 1667435636004440078,\n \"login\" : \"ugdtqhsf\",\n \"gravatar_id\" : \"m1cp\",\n \"url\" : \"https://web.example.mocklab.io/892543\"\n },\n \"public\" : false,\n \"org\" : {\n \"display_login\" : \"m19amglosrzp0z8vcu8n9chw4wacawor3iipur5zyaye2vws5e4zgkg4658dz77g2\",\n \"avatar_url\" : \"https://s3.amazonaws.com/uifaces/faces/twitter/m4rio/128.jpg\",\n \"id\" : 1780968502541851491,\n \"login\" : \"vjtdvxlyhi1vt\",\n \"gravatar_id\" : \"ee8q\",\n \"url\" : \"https://web.example.mocklab.io/014696\"\n },\n \"payload\" : {\n \"pages\" : [ {\n \"summary\" : \"Dolorem repellendus enim modi atque voluptatibus odit. Qui sit vitae et dolor. Veniam aut sint tempora reiciendis dolores ut.\",\n \"html_url\" : \"https://web.example.mocklab.io/828223\",\n \"page_name\" : \"Gilbert Johns\",\n \"action\" : \"9v09x9w20axsdwom4b06mlzcag0wcov547zvkbifz8i2urj4tzk0334aokuoftnh4pt0wu4ug0399wg9pv5n7zgs12o3nuuwhpa291uczotl2qa2z8oku6mryogh6fpwyewwzstt6mc292eqwo50lf7i2f7umii2f2p6nksc\",\n \"title\" : \"Autem culpa delectus.\",\n \"sha\" : \"5wmlu6bjnjzapso5w6tf4y14i74xlu1qiaglhgvflm4akveihal87o7d7pyqdz4l42jgwv5duwztbqajda3mruej87i9gg0172hejkt7df6cv7ysxkycqntaalh12awg8s6yir342pd20rpu\"\n }, {\n \"summary\" : \"Id qui numquam reiciendis pariatur sed. Voluptatem libero explicabo similique nisi aut. A eum soluta eligendi. Dolores doloribus id rerum eaque quae.\",\n \"html_url\" : \"https://web.example.mocklab.io/005739\",\n \"page_name\" : \"Curtis Moore\",\n \"action\" : \"txe88ioq2zbib7y0oaeu7kk7az0xt41ueoujnwj07bh5hw3rerywl9gfyo9rtqqr6rvsm6h03bxqk3s8ohos2hkcnklt8zgljhgt588ya4uegihvh0pvhbxjlzg6jvpnurlox2n5kec720d53y\",\n \"title\" : \"Est optio rerum voluptatibus facilis debitis.\",\n \"sha\" : \"cimzm7w0qyuk83k0y5xkxs\"\n }, {\n \"summary\" : \"Natus omnis laudantium ipsum. Optio est dolorum nemo quos ad. Voluptates dolorem laudantium qui et accusantium. Eligendi fugit quis eveniet.\",\n \"html_url\" : \"https://web.example.mocklab.io/223098\",\n \"page_name\" : \"Emerald Hirthe\",\n \"action\" : \"9d15kc66qo2a78w1iw9qo2ge\",\n \"title\" : \"Sapiente amet aut.\",\n \"sha\" : \"lxb9d2hj62t15yvoyz4xz4ijhujl5om2cp2flcf3cr3lpdanq6yve6ui75q9fegkn3zb\"\n }, {\n \"summary\" : \"Facere sed ipsum. Velit corporis occaecati architecto. Voluptates praesentium voluptates nisi rerum. Quos sint consectetur laudantium quo explicabo.\",\n \"html_url\" : \"https://web.example.mocklab.io/596435\",\n \"page_name\" : \"Jefferey Waelchi\",\n \"action\" : \"23leq6wz4t0grgufyh7lmgjy8f37x4m8rri8xiqymuc2g4kthmfm0dadg4gilj38ge7khc4mikhevjfchshm4eb77c2tw7azcc7pyc96uiapsl7kv409yjumuiv5f085peyg0r7qfl4raa0hv541jf\",\n \"title\" : \"Atque deleniti qui atque voluptas optio aut.\",\n \"sha\" : \"jyl4jggbpczohxvfpey676ahkly9rzmz\"\n }, {\n \"summary\" : \"Sequi corrupti temporibus. Nobis corporis asperiores natus repellendus. Adipisci illum mollitia esse officia similique. Eum accusantium expedita enim voluptatem. Tempore alias velit ut aut quia.\",\n \"html_url\" : \"https://web.example.mocklab.io/371035\",\n \"page_name\" : \"Kathaleen Pollich DDS\",\n \"action\" : \"h6udalk08rqw62z1tkq8y3cagz3mc7boest7tkx4wiq8cwmzy2075qdhlhhvvrb3p4ec27fvnhxdd7rcfg8bpya0rg0xw6zretv4y6485ddy27sgppk1lgaju3kva0cx5v7g8omeiss5v8z0iiz9e\",\n \"title\" : \"Incidunt est nihil.\",\n \"sha\" : \"224y3m1e1m7d5pq33z0mntfet3puwzvar5rskhggfw5a\"\n }, {\n \"summary\" : \"Et dicta quam saepe velit placeat aperiam. Velit labore corporis molestias voluptas. Voluptas molestiae ratione inventore veniam porro.\",\n \"html_url\" : \"https://web.example.mocklab.io/155868\",\n \"page_name\" : \"Debbi Kerluke Sr.\",\n \"action\" : \"isby84hd34a0blpuyj7xyzjtsxlam0eqcw\",\n \"title\" : \"Aut est quas et illo iusto sit.\",\n \"sha\" : \"8pvoy9k3bm5xqli0p3rtof37l1drhg7394wc3jnhnnapdy785w47ilift3y1ljngladqei7070dacxkgun23c\"\n } ],\n \"issue\" : {\n \"body_html\" : \"t75fko20sx6y94nr6c7ww6f7re3bikafu1uk6vm9yqgxures3eovtjxm4qkkdhebr4pawbbg6b5ykin46f7agzue0eqnedij17zq845svqe6dw7qci2\",\n \"body_text\" : \"t7thk8zr5wl3tb5cpbm7vhwwojdtqw4cpz7o1w1vmpqbhhj6v3zhlm1gayb4h33nqmw60r9hz6ye3r0w5pwn1sg96vrxjg\",\n \"assignees\" : [ {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Carmine Schiller\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"sjctf9ty27wguy1cmj18e2i5xqprmp67n856ffokz1exwpirjq5m1yu1qbgtmsz18uzojy3giiy4n9kxjkjuiftaneq3ggwo1u3sm9iaeycmyb4mrveipo52hhq9heb7\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n }, {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Miss Emiko Bins\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"nv6mt2hkigw8fdm26ix0wf9apr3psoohg3f7hlbyxseaeywbku0gz2yw385f1p7dwgowdwksfjmwqq\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n }, {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Keven Schaden\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"20xejm8wmcc76802d10ddmi1\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n }, {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Mr. Elva Mertz\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"q398jf74rswl03103wsgxizhcqmyrmdomdkcjbozzyfcixbnrarai33d76fcgp1g31wufe4rq47ewyx52om4ldhcenpy4t3kteil3g92m97yi35aozbmmr53twvdyn8m5etqy4t6pl08izxh2xpql2fld3t4znpwy0lv1a10qs0\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n }, {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Otto Langworth\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"juuor72z72umrqqpteewhzsfoxs0fljdil7hedqqkhehoemdbycbhgjo26zhwpjjiwojphth4tqhpbt3vzjsbt5y499pvgpxopz4mcshyguqzse3i9kj2w4gyut50gzz6g9ekfeplvr99daz4o1p6s9w8gbr8bakxbzk029\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n }, {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Garret Gerhold III\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"mtyaf70c6xobvcuhsf11813lfdz8r8um68er9jskus4qpw7z2q53jntqvwyvcm0pakfn2xwj2hvwei5ok0c55loktblsxs3\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n }, {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Ernesto Lindgren\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"8ifxp38xjl\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n }, {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Claude Nikolaus\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"7jj7g9qf5w5dhdj11irdqidps3ktcop4gpe2fbckgps8ktgptcj00gios9bp1gwzshs7m7yyyg7ut7f356g6ybzriffo7t02aexczlbygmy\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n } ],\n \"created_at\" : \"2011-04-22T13:33:48Z\",\n \"body\" : \"I'm having a problem with this.\",\n \"repository\" : {\n \"allow_forking\" : true,\n \"anonymous_access_enabled\" : true,\n \"is_template\" : true,\n \"stargazers_count\" : 80,\n \"pushed_at\" : \"2011-01-26T19:06:43Z\",\n \"language\" : \"toxqtu968z6cvqvl7izqauvqtfejld9erxjj4ae6mshjber50w89l86nc6ylb7tovmwhb2klrdrao7kppk1wqb4kgi31wvtvie7m0y0yf6pgy0os20vr7w17xhme96x0f4g9ddg2\",\n \"subscription_url\" : \"http://api.github.com/repos/octocat/Hello-World/subscription\",\n \"branches_url\" : \"http://api.github.com/repos/octocat/Hello-World/branches{/branch}\",\n \"allow_rebase_merge\" : true,\n \"issue_comment_url\" : \"http://api.github.com/repos/octocat/Hello-World/issues/comments{/number}\",\n \"labels_url\" : \"http://api.github.com/repos/octocat/Hello-World/labels{/name}\",\n \"permissions\" : {\n \"pull\" : true,\n \"maintain\" : true,\n \"admin\" : true,\n \"triage\" : false,\n \"push\" : true\n },\n \"subscribers_url\" : \"http://api.github.com/repos/octocat/Hello-World/subscribers\",\n \"releases_url\" : \"http://api.github.com/repos/octocat/Hello-World/releases{/id}\",\n \"svn_url\" : \"https://svn.github.com/octocat/Hello-World\",\n \"subscribers_count\" : 9137363674868018211,\n \"id\" : 42,\n \"master_branch\" : \"zozxwinfg95b3\",\n \"forks\" : 8213691720925858369,\n \"allow_merge_commit\" : true,\n \"archive_url\" : \"http://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref}\",\n \"git_refs_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/refs{/sha}\",\n \"forks_url\" : \"http://api.github.com/repos/octocat/Hello-World/forks\",\n \"visibility\" : \"i9tmgz2o0nu84tfppezbwi2w55yh6z25l4w6nbg3ejv7vfpdp2jnh3c8v0nc5biyfbfykncex8knfql1zlh3u7zmb9a2tzg2dltkqsutbvu8j2ty15g9ya5a5q02xd6lmsij1dar2qdg1h34l4ddyr78p14wi4mnafrcnvwp53sdm44fis71q3h\",\n \"statuses_url\" : \"http://api.github.com/repos/octocat/Hello-World/statuses/{sha}\",\n \"network_count\" : 5916080091514612792,\n \"ssh_url\" : \"git@github.com:octocat/Hello-World.git\",\n \"license\" : {\n \"html_url\" : \"https://web.example.mocklab.io/314775\",\n \"name\" : \"MIT License\",\n \"spdx_id\" : \"MIT\",\n \"key\" : \"mit\",\n \"url\" : \"https://api.github.com/licenses/mit\",\n \"node_id\" : \"MDc6TGljZW5zZW1pdA==\"\n },\n \"full_name\" : \"octocat/Hello-World\",\n \"size\" : 108,\n \"template_repository\" : {\n \"anonymous_access_enabled\" : false,\n \"is_template\" : false,\n \"stargazers_count\" : 7202383399540272458,\n \"pushed_at\" : \"7h6p5brpocusukbmu0aynv382k0bx94mj9p0obc6lnhv1zm2nrgbhdw\",\n \"language\" : \"we2s1rreghpv908lueh4d4o1jxrw7xbqdvjsfbvcuoo2adsin4ygsslwas7ai527wjh6fl427z0vidfnwj6lygqe1wmod6pi82kmu0e7qh3zis\",\n \"subscription_url\" : \"https://web.example.mocklab.io/252195\",\n \"branches_url\" : \"https://web.example.mocklab.io/506923\",\n \"allow_rebase_merge\" : false,\n \"issue_comment_url\" : \"https://web.example.mocklab.io/747955\",\n \"labels_url\" : \"https://web.example.mocklab.io/855742\",\n \"permissions\" : { },\n \"subscribers_url\" : \"https://web.example.mocklab.io/497091\",\n \"releases_url\" : \"https://web.example.mocklab.io/653876\",\n \"svn_url\" : \"https://web.example.mocklab.io/320195\",\n \"subscribers_count\" : 8295993099150726980,\n \"id\" : 1896169166633836143,\n \"allow_merge_commit\" : true,\n \"archive_url\" : \"https://web.example.mocklab.io/750416\",\n \"git_refs_url\" : \"https://web.example.mocklab.io/986937\",\n \"forks_url\" : \"https://web.example.mocklab.io/542910\",\n \"visibility\" : \"ld0qeqixmjxfedjwees5wpn6v2hj5\",\n \"statuses_url\" : \"https://web.example.mocklab.io/188252\",\n \"network_count\" : 6154981166345335589,\n \"ssh_url\" : \"https://web.example.mocklab.io/211231\",\n \"full_name\" : \"Nelson Stanton\",\n \"size\" : 1499240398957279322,\n \"languages_url\" : \"https://web.example.mocklab.io/763770\",\n \"clone_url\" : \"https://web.example.mocklab.io/425555\",\n \"collaborators_url\" : \"https://web.example.mocklab.io/536787\",\n \"html_url\" : \"https://web.example.mocklab.io/519065\",\n \"name\" : \"Shelby Kulas\",\n \"pulls_url\" : \"https://web.example.mocklab.io/864386\",\n \"default_branch\" : \"ksfabteuu1qz3iq9e421pbq9u2oqbqdi5x3pfmo3\",\n \"hooks_url\" : \"https://web.example.mocklab.io/149477\",\n \"trees_url\" : \"https://web.example.mocklab.io/275866\",\n \"tags_url\" : \"https://web.example.mocklab.io/444275\",\n \"contributors_url\" : \"https://web.example.mocklab.io/524007\",\n \"private\" : false,\n \"has_downloads\" : false,\n \"notifications_url\" : \"https://web.example.mocklab.io/197501\",\n \"open_issues_count\" : 520014554423074433,\n \"created_at\" : \"65tlxc0v3ka3ydawk1878vp7mt861knlfl2lca3enfiy3i7rt2ezgkr5y54919x8qgrt9apkbh76xb0bfnr82tqpzmca4vqaw5ttu9inz26ey0ppylbn3rj3x1gu77grct7wknuy\",\n \"description\" : \"Numquam non deserunt dolorem ut at. Natus aliquam et error. Iure deserunt nostrum inventore.\",\n \"deployments_url\" : \"https://web.example.mocklab.io/770757\",\n \"keys_url\" : \"https://web.example.mocklab.io/021331\",\n \"has_projects\" : false,\n \"archived\" : true,\n \"has_wiki\" : true,\n \"updated_at\" : \"2023-03-16T05:56:58.663864Z\",\n \"comments_url\" : \"https://web.example.mocklab.io/634393\",\n \"stargazers_url\" : \"https://web.example.mocklab.io/467162\",\n \"disabled\" : true,\n \"delete_branch_on_merge\" : true,\n \"git_url\" : \"https://web.example.mocklab.io/687652\",\n \"has_pages\" : true,\n \"owner\" : { },\n \"allow_squash_merge\" : false,\n \"commits_url\" : \"https://web.example.mocklab.io/492286\",\n \"compare_url\" : \"https://web.example.mocklab.io/221791\",\n \"git_commits_url\" : \"https://web.example.mocklab.io/233167\",\n \"topics\" : [ \"fj1ss4zmpm4crzj2y8hc5lrzl6pywsium2jjoi72ezl1c8il17n0flke3m3evdy776bweo15ajhkfm5xg5y6he8fs2yq7pnfk3521tu13wsithja56ch2d2yi32i04vlnphh5a9xagei1s4kdjznq1c\", \"pckfz40731cn2j0g1sywhepqx3kb6okneyre0679dba4kpdrtt52bww2jyaep1une32\", \"aq9h1f0pnoldf335a4zx1yndgil379370cnpwbbuhry1yh319xwld84vfu5abzwq5pjefflinxffxlnt16pk38teo4no2lrkpwpg9see4rmr4uqhm0ytivb3vzd28nsk49aybi6oukpx56pet63d7lx0ofi84pay3h5t8ylmv1ro5r\", \"7chsxxw4iibv5e6ztcnt6lpgkcg1pqo9p2j6khzxxch5f6b5y6pszylag\" ],\n \"blobs_url\" : \"https://web.example.mocklab.io/811288\",\n \"git_tags_url\" : \"https://web.example.mocklab.io/720344\",\n \"merges_url\" : \"https://web.example.mocklab.io/023843\",\n \"downloads_url\" : \"https://web.example.mocklab.io/941636\",\n \"has_issues\" : true,\n \"url\" : \"https://web.example.mocklab.io/311317\",\n \"contents_url\" : \"https://web.example.mocklab.io/798287\",\n \"mirror_url\" : \"https://web.example.mocklab.io/885826\",\n \"milestones_url\" : \"https://web.example.mocklab.io/281844\",\n \"teams_url\" : \"https://web.example.mocklab.io/367121\",\n \"fork\" : false,\n \"issues_url\" : \"https://web.example.mocklab.io/386208\",\n \"events_url\" : \"https://web.example.mocklab.io/687869\",\n \"issue_events_url\" : \"https://web.example.mocklab.io/922545\",\n \"assignees_url\" : \"https://web.example.mocklab.io/470861\",\n \"watchers_count\" : 4661371826403235098,\n \"forks_count\" : 155379585978200294,\n \"homepage\" : \"1f4tmgohxny5hnlkjixunz53c7nskci3w33d3ytnvovz4a5t\",\n \"node_id\" : \"6u71\"\n },\n \"languages_url\" : \"http://api.github.com/repos/octocat/Hello-World/languages\",\n \"clone_url\" : \"https://github.com/octocat/Hello-World.git\",\n \"collaborators_url\" : \"http://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator}\",\n \"html_url\" : \"https://github.com/octocat/Hello-World\",\n \"name\" : \"Team Environment\",\n \"pulls_url\" : \"http://api.github.com/repos/octocat/Hello-World/pulls{/number}\",\n \"default_branch\" : \"master\",\n \"hooks_url\" : \"http://api.github.com/repos/octocat/Hello-World/hooks\",\n \"trees_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/trees{/sha}\",\n \"tags_url\" : \"http://api.github.com/repos/octocat/Hello-World/tags\",\n \"contributors_url\" : \"http://api.github.com/repos/octocat/Hello-World/contributors\",\n \"private\" : false,\n \"has_downloads\" : true,\n \"notifications_url\" : \"http://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating}\",\n \"open_issues_count\" : 0,\n \"created_at\" : \"2011-01-26T19:01:12Z\",\n \"description\" : \"This your first repo!\",\n \"watchers\" : 1094569774205265286,\n \"deployments_url\" : \"http://api.github.com/repos/octocat/Hello-World/deployments\",\n \"keys_url\" : \"http://api.github.com/repos/octocat/Hello-World/keys{/key_id}\",\n \"has_projects\" : true,\n \"archived\" : false,\n \"has_wiki\" : true,\n \"updated_at\" : \"2011-01-26T19:14:43Z\",\n \"comments_url\" : \"http://api.github.com/repos/octocat/Hello-World/comments{/number}\",\n \"stargazers_url\" : \"http://api.github.com/repos/octocat/Hello-World/stargazers\",\n \"disabled\" : true,\n \"delete_branch_on_merge\" : false,\n \"git_url\" : \"git:github.com/octocat/Hello-World.git\",\n \"has_pages\" : false,\n \"owner\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Mandy Barrows\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"p82eaby3g5nn93nu09vl88zcywfu0qfqe027fji3tbs1elh9p7yhdad5ppfxk2avkdqg6x87of2xbqj988gwbok1wpl3fwkj9y3powdw8oeq0xt31odde9wgqxn8u67kv50joshmlo38067ix7gcp65u3y9cgoc49xap7fo9jmqcof1widtp56\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"allow_squash_merge\" : true,\n \"commits_url\" : \"http://api.github.com/repos/octocat/Hello-World/commits{/sha}\",\n \"compare_url\" : \"http://api.github.com/repos/octocat/Hello-World/compare/{base}...{head}\",\n \"git_commits_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/commits{/sha}\",\n \"topics\" : [ \"e9gqtv46immaly7f7u3gdfrvvl3m1p13btzhjb4bsxizvqlc5wc8rug1p0t6fp2zf9m3h9lz9\", \"p39ylxioj67471c4lfus0u75wottr2zqhlq2\" ],\n \"blobs_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/blobs{/sha}\",\n \"git_tags_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/tags{/sha}\",\n \"merges_url\" : \"http://api.github.com/repos/octocat/Hello-World/merges\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:42Z\\\"\",\n \"downloads_url\" : \"http://api.github.com/repos/octocat/Hello-World/downloads\",\n \"has_issues\" : true,\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World\",\n \"contents_url\" : \"http://api.github.com/repos/octocat/Hello-World/contents/{+path}\",\n \"mirror_url\" : \"git:git.example.com/octocat/Hello-World\",\n \"milestones_url\" : \"http://api.github.com/repos/octocat/Hello-World/milestones{/number}\",\n \"teams_url\" : \"http://api.github.com/repos/octocat/Hello-World/teams\",\n \"fork\" : true,\n \"issues_url\" : \"http://api.github.com/repos/octocat/Hello-World/issues{/number}\",\n \"events_url\" : \"http://api.github.com/repos/octocat/Hello-World/events\",\n \"issue_events_url\" : \"http://api.github.com/repos/octocat/Hello-World/issues/events{/number}\",\n \"organization\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Sibyl Morar\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"3el7c0tta5s7u52xn2kpnj1tcnevnk\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"assignees_url\" : \"http://api.github.com/repos/octocat/Hello-World/assignees{/user}\",\n \"open_issues\" : 4290154548325401205,\n \"watchers_count\" : 80,\n \"forks_count\" : 9,\n \"homepage\" : \"https://github.com\",\n \"node_id\" : \"MDEwOlJlcG9zaXRvcnkxMjk2MjY5\"\n },\n \"title\" : \"Found a bug\",\n \"author_association\" : \"OWNER\",\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347/labels{/name}\",\n \"number\" : 1347,\n \"performed_via_github_app\" : {\n \"owner\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Cedric Schowalter\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"36qhkt5ywrlju3\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"installations_count\" : 5,\n \"created_at\" : \"2017-07-08T16:18:44-04:00\",\n \"description\" : \"The description of the app.\",\n \"client_id\" : \"\\\"Iv1.25b5d1e65ffc4022\\\"\",\n \"external_url\" : \"https://example.com\",\n \"updated_at\" : \"2017-07-08T16:18:44-04:00\",\n \"permissions\" : {\n \"deployments\" : \"write\",\n \"issues\" : \"read\"\n },\n \"html_url\" : \"https://github.com/apps/super-ci\",\n \"name\" : \"Probot Owners\",\n \"pem\" : \"\\\"-----BEGIN RSA PRIVATE KEY-----\\\\nMIIEogIBAAKCAQEArYxrNYD/iT5CZVpRJu4rBKmmze3PVmT/gCo2ATUvDvZTPTey\\\\nxcGJ3vvrJXazKk06pN05TN29o98jrYz4cengG3YGsXPNEpKsIrEl8NhbnxapEnM9\\\\nJCMRe0P5JcPsfZlX6hmiT7136GRWiGOUba2X9+HKh8QJVLG5rM007TBER9/z9mWm\\\\nrJuNh+m5l320oBQY/Qq3A7wzdEfZw8qm/mIN0FCeoXH1L6B8xXWaAYBwhTEh6SSn\\\\nZHlO1Xu1JWDmAvBCi0RO5aRSKM8q9QEkvvHP4yweAtK3N8+aAbZ7ovaDhyGz8r6r\\\\nzhU1b8Uo0Z2ysf503WqzQgIajr7Fry7/kUwpgQIDAQABAoIBADwJp80Ko1xHPZDy\\\\nfcCKBDfIuPvkmSW6KumbsLMaQv1aGdHDwwTGv3t0ixSay8CGlxMRtRDyZPib6SvQ\\\\n6OH/lpfpbMdW2ErkksgtoIKBVrDilfrcAvrNZu7NxRNbhCSvN8q0s4ICecjbbVQh\\\\nnueSdlA6vGXbW58BHMq68uRbHkP+k+mM9U0mDJ1HMch67wlg5GbayVRt63H7R2+r\\\\nVxcna7B80J/lCEjIYZznawgiTvp3MSanTglqAYi+m1EcSsP14bJIB9vgaxS79kTu\\\\noiSo93leJbBvuGo8QEiUqTwMw4tDksmkLsoqNKQ1q9P7LZ9DGcujtPy4EZsamSJT\\\\ny8OJt0ECgYEA2lxOxJsQk2kI325JgKFjo92mQeUObIvPfSNWUIZQDTjniOI6Gv63\\\\nGLWVFrZcvQBWjMEQraJA9xjPbblV8PtfO87MiJGLWCHFxmPz2dzoedN+2Coxom8m\\\\nV95CLz8QUShuao6u/RYcvUaZEoYs5bHcTmy5sBK80JyEmafJPtCQVxMCgYEAy3ar\\\\nZr3yv4xRPEPMat4rseswmuMooSaK3SKub19WFI5IAtB/e7qR1Rj9JhOGcZz+OQrl\\\\nT78O2OFYlgOIkJPvRMrPpK5V9lslc7tz1FSh3BZMRGq5jSyD7ETSOQ0c8T2O/s7v\\\\nbeEPbVbDe4mwvM24XByH0GnWveVxaDl51ABD65sCgYB3ZAspUkOA5egVCh8kNpnd\\\\nSd6SnuQBE3ySRlT2WEnCwP9Ph6oPgn+oAfiPX4xbRqkL8q/k0BdHQ4h+zNwhk7+h\\\\nWtPYRAP1Xxnc/F+jGjb+DVaIaKGU18MWPg7f+FI6nampl3Q0KvfxwX0GdNhtio8T\\\\nTj1E+SnFwh56SRQuxSh2gwKBgHKjlIO5NtNSflsUYFM+hyQiPiqnHzddfhSG+/3o\\\\nm5nNaSmczJesUYreH5San7/YEy2UxAugvP7aSY2MxB+iGsiJ9WD2kZzTUlDZJ7RV\\\\nUzWsoqBR+eZfVJ2FUWWvy8TpSG6trh4dFxImNtKejCR1TREpSiTV3Zb1dmahK9GV\\\\nrK9NAoGAbBxRLoC01xfxCTgt5BDiBcFVh4fp5yYKwavJPLzHSpuDOrrI9jDn1oKN\\\\nonq5sDU1i391zfQvdrbX4Ova48BN+B7p63FocP/MK5tyyBoT8zQEk2+vWDOw7H/Z\\\\nu5dTCPxTIsoIwUw1I+7yIxqJzLPFgR2gVBwY1ra/8iAqCj+zeBw=\\\\n-----END RSA PRIVATE KEY-----\\\\n\\\"\",\n \"webhook_secret\" : \"\\\"6fba8f2fc8a7e8f2cca5577eddd82ca7586b3b6b\\\"\",\n \"client_secret\" : \"\\\"1d4b2097ac622ba702d19de498f005747a8b21d3\\\"\",\n \"id\" : 37,\n \"events\" : [ \"label\", \"deployment\" ],\n \"slug\" : \"probot-owners\",\n \"node_id\" : \"MDExOkludGVncmF0aW9uMQ==\"\n },\n \"updated_at\" : \"2011-04-22T13:33:48Z\",\n \"comments_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347/comments\",\n \"active_lock_reason\" : \"too heated\",\n \"id\" : 1,\n \"repository_url\" : \"https://api.github.com/repos/octocat/Hello-World\",\n \"state\" : \"open\",\n \"locked\" : true,\n \"timeline_url\" : \"https://web.example.mocklab.io/787877\",\n \"pull_request\" : {\n \"patch_url\" : \"https://web.example.mocklab.io/447866\",\n \"html_url\" : \"https://web.example.mocklab.io/230654\",\n \"merged_at\" : \"2022-12-13T11:45:29.666Z\",\n \"diff_url\" : \"https://web.example.mocklab.io/871790\",\n \"url\" : \"https://web.example.mocklab.io/933064\"\n },\n \"closed_at\" : \"2023-11-19T22:15:17.666Z\",\n \"comments\" : 0,\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347\",\n \"labels\" : [ {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n }, {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n }, {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n }, {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n }, {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n }, {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n }, {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n }, {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n } ],\n \"milestone\" : {\n \"creator\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Ms. Yasuko Lehner\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"4tg42n4rendb4oy9qfidzd17ncc13apopryad2hljtxf8agqwpwm33t9tbcqt6anlu9izwgg73jqpotgv1trke9pcaxwga1hn8yh39uj3v0o196nefvw2l1w1gjz6hd7obt5rw6fazkp1hyomb015wxewsicukehspl4ip8wkhiex55z6w96g86vszxtk2kmu7r9kwcl\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"closed_at\" : \"2013-02-12T13:22:01Z\",\n \"created_at\" : \"2011-04-10T20:09:31Z\",\n \"description\" : \"Tracking milestone for version 1.0\",\n \"closed_issues\" : 8,\n \"title\" : \"v1.0\",\n \"due_on\" : \"2012-10-09T23:39:01Z\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones/1\",\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones/1/labels\",\n \"number\" : 42,\n \"updated_at\" : \"2014-03-03T18:58:10Z\",\n \"html_url\" : \"https://github.com/octocat/Hello-World/milestones/v1.0\",\n \"id\" : 1002604,\n \"state\" : \"open\",\n \"open_issues\" : 4,\n \"node_id\" : \"MDk6TWlsZXN0b25lMTAwMjYwNA==\"\n },\n \"events_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347/events\",\n \"html_url\" : \"https://github.com/octocat/Hello-World/issues/1347\",\n \"assignee\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Eugene Jerde\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"pgryvi4k7ch89fgokvu1ll70\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"user\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"evan.hayes\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"ig33acn3oqoprtc9gsmeg8oqruigzxml5hpd37bzv1wi0qrbf75p1dnj87ogbhyagjcg5cy7je1vwuiow55dy6b84x9\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"node_id\" : \"MDU6SXNzdWUx\"\n },\n \"action\" : \"7puw04qyu4z1n3bvem4skzq\",\n \"comment\" : {\n \"issue_url\" : \"https://web.example.mocklab.io/418970\",\n \"body_html\" : \"7p1d21qvv75qd411g9jeub4094lmkg74eylzz3b3s294jexj9iiitc2zfgyzpttyp007ogmh7nhmxfr1dnyjy5fisg6y1a91qwr6xj3b9jab0nh7kncpsep7jo5e95e3l89b23jv90fjk1j1bm0jhrn5pgy4jg96\",\n \"body_text\" : \"e1915aylwlw75vaw09g9l4ppec8j6s2xisejtztnj4pu2rs30k5f1la5iqxg4zekvhkqm9wx4iv6ly3jjxso1ylid6re\",\n \"created_at\" : \"2011-04-14T16:00:49Z\",\n \"body\" : \"What version of Safari were you using when you observed this bug?\",\n \"url\" : \"https://api.github.com/repositories/42/issues/comments/1\",\n \"author_association\" : \"OWNER\",\n \"performed_via_github_app\" : {\n \"owner\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Wiley Bartoletti\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"pw7bbhlry0rylpmi87ff6ie4nmx9bb1muixbiw78uf\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"installations_count\" : 5,\n \"created_at\" : \"2017-07-08T16:18:44-04:00\",\n \"description\" : \"The description of the app.\",\n \"client_id\" : \"\\\"Iv1.25b5d1e65ffc4022\\\"\",\n \"external_url\" : \"https://example.com\",\n \"updated_at\" : \"2017-07-08T16:18:44-04:00\",\n \"permissions\" : {\n \"deployments\" : \"write\",\n \"issues\" : \"read\"\n },\n \"html_url\" : \"https://github.com/apps/super-ci\",\n \"name\" : \"Probot Owners\",\n \"pem\" : \"\\\"-----BEGIN RSA PRIVATE KEY-----\\\\nMIIEogIBAAKCAQEArYxrNYD/iT5CZVpRJu4rBKmmze3PVmT/gCo2ATUvDvZTPTey\\\\nxcGJ3vvrJXazKk06pN05TN29o98jrYz4cengG3YGsXPNEpKsIrEl8NhbnxapEnM9\\\\nJCMRe0P5JcPsfZlX6hmiT7136GRWiGOUba2X9+HKh8QJVLG5rM007TBER9/z9mWm\\\\nrJuNh+m5l320oBQY/Qq3A7wzdEfZw8qm/mIN0FCeoXH1L6B8xXWaAYBwhTEh6SSn\\\\nZHlO1Xu1JWDmAvBCi0RO5aRSKM8q9QEkvvHP4yweAtK3N8+aAbZ7ovaDhyGz8r6r\\\\nzhU1b8Uo0Z2ysf503WqzQgIajr7Fry7/kUwpgQIDAQABAoIBADwJp80Ko1xHPZDy\\\\nfcCKBDfIuPvkmSW6KumbsLMaQv1aGdHDwwTGv3t0ixSay8CGlxMRtRDyZPib6SvQ\\\\n6OH/lpfpbMdW2ErkksgtoIKBVrDilfrcAvrNZu7NxRNbhCSvN8q0s4ICecjbbVQh\\\\nnueSdlA6vGXbW58BHMq68uRbHkP+k+mM9U0mDJ1HMch67wlg5GbayVRt63H7R2+r\\\\nVxcna7B80J/lCEjIYZznawgiTvp3MSanTglqAYi+m1EcSsP14bJIB9vgaxS79kTu\\\\noiSo93leJbBvuGo8QEiUqTwMw4tDksmkLsoqNKQ1q9P7LZ9DGcujtPy4EZsamSJT\\\\ny8OJt0ECgYEA2lxOxJsQk2kI325JgKFjo92mQeUObIvPfSNWUIZQDTjniOI6Gv63\\\\nGLWVFrZcvQBWjMEQraJA9xjPbblV8PtfO87MiJGLWCHFxmPz2dzoedN+2Coxom8m\\\\nV95CLz8QUShuao6u/RYcvUaZEoYs5bHcTmy5sBK80JyEmafJPtCQVxMCgYEAy3ar\\\\nZr3yv4xRPEPMat4rseswmuMooSaK3SKub19WFI5IAtB/e7qR1Rj9JhOGcZz+OQrl\\\\nT78O2OFYlgOIkJPvRMrPpK5V9lslc7tz1FSh3BZMRGq5jSyD7ETSOQ0c8T2O/s7v\\\\nbeEPbVbDe4mwvM24XByH0GnWveVxaDl51ABD65sCgYB3ZAspUkOA5egVCh8kNpnd\\\\nSd6SnuQBE3ySRlT2WEnCwP9Ph6oPgn+oAfiPX4xbRqkL8q/k0BdHQ4h+zNwhk7+h\\\\nWtPYRAP1Xxnc/F+jGjb+DVaIaKGU18MWPg7f+FI6nampl3Q0KvfxwX0GdNhtio8T\\\\nTj1E+SnFwh56SRQuxSh2gwKBgHKjlIO5NtNSflsUYFM+hyQiPiqnHzddfhSG+/3o\\\\nm5nNaSmczJesUYreH5San7/YEy2UxAugvP7aSY2MxB+iGsiJ9WD2kZzTUlDZJ7RV\\\\nUzWsoqBR+eZfVJ2FUWWvy8TpSG6trh4dFxImNtKejCR1TREpSiTV3Zb1dmahK9GV\\\\nrK9NAoGAbBxRLoC01xfxCTgt5BDiBcFVh4fp5yYKwavJPLzHSpuDOrrI9jDn1oKN\\\\nonq5sDU1i391zfQvdrbX4Ova48BN+B7p63FocP/MK5tyyBoT8zQEk2+vWDOw7H/Z\\\\nu5dTCPxTIsoIwUw1I+7yIxqJzLPFgR2gVBwY1ra/8iAqCj+zeBw=\\\\n-----END RSA PRIVATE KEY-----\\\\n\\\"\",\n \"webhook_secret\" : \"\\\"6fba8f2fc8a7e8f2cca5577eddd82ca7586b3b6b\\\"\",\n \"client_secret\" : \"\\\"1d4b2097ac622ba702d19de498f005747a8b21d3\\\"\",\n \"id\" : 37,\n \"events\" : [ \"label\", \"deployment\" ],\n \"slug\" : \"probot-owners\",\n \"node_id\" : \"MDExOkludGVncmF0aW9uMQ==\"\n },\n \"updated_at\" : \"2011-04-14T16:00:49Z\",\n \"html_url\" : \"https://web.example.mocklab.io/230388\",\n \"reactions\" : {\n \"confused\" : 2937515220253256105,\n \"-1\" : 5520535211859475077,\n \"+1\" : 5942300220346842237,\n \"total_count\" : 377705503971903785,\n \"rocket\" : 3964346819380687482,\n \"hooray\" : 8731165401917929260,\n \"eyes\" : 5797533419132770410,\n \"heart\" : 6456332312754919583,\n \"laugh\" : 4420635610850975012,\n \"url\" : \"https://web.example.mocklab.io/838370\"\n },\n \"id\" : 42,\n \"user\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"rasheeda.thiel\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"a9zagmaaeuxuieph6tth78ikzec8jwomkiwwctx3zt8sz0p16y0dnsts5ovc8vikl2vbdbkqacdknq5veozvzuy3dtzkd1aamufyte06ovtxalbfgqporqxdfgkvb66typ5eiso37jvn0p6gbb8cvoiaoxtiyyhz60\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"node_id\" : \"0zo7\"\n }\n },\n \"repo\" : {\n \"name\" : \"Carolyn Beer\",\n \"id\" : 9112173883799518583,\n \"url\" : \"https://web.example.mocklab.io/546028\"\n },\n \"created_at\" : \"2022-06-02T21:07:57.667Z\",\n \"id\" : \"087u\",\n \"type\" : \"0gyg95cwvw9brygrucv1twt2hyfgt051v7gevb2pgea1twtvovu73mjlzhcais2jo8g4yu6jcfs422xu6yqrknxs60n4n86q0u0w7b6roil9da3mpw66xd2anwwphyby2tyownh4f4mwa6s9cevkkby3q9r\"\n}, {\n \"actor\" : {\n \"display_login\" : \"6wiqvpftquwdiw09i0wseyqpdzojfzf509w1c74iq9xd0thh8d6j1u05m9650o1znz7t6d0bg\",\n \"avatar_url\" : \"https://s3.amazonaws.com/uifaces/faces/twitter/derekebradley/128.jpg\",\n \"id\" : 4237131701596741437,\n \"login\" : \"s6zl7vel5lo6292zn6geq6afiz9o88slwhf3i2ru89w58me348j4eubx3cw1o9dor7ee4ptavc3t7g67qnj5cqp46j416ml2prru\",\n \"gravatar_id\" : \"beq8\",\n \"url\" : \"https://web.example.mocklab.io/872766\"\n },\n \"public\" : false,\n \"org\" : {\n \"display_login\" : \"661in918spdpujaky2dzckg7w2wt5ox69uy1p7podjjc4o0jim69790fq9c3uousp04jizmolrxeewlqqetj8lwk04ezblopaadn\",\n \"avatar_url\" : \"https://s3.amazonaws.com/uifaces/faces/twitter/canapud/128.jpg\",\n \"id\" : 3337763235605966253,\n \"login\" : \"pei1hki1qjfflu40j5npepj97n9rsa3w9n66lyw8fuse2229jb3ctfx6ckrczah0ffbnxpog7ai61v40vzxtn8k39sh52h0gmv4eewrq3u0w5di6f49ygycbjiyaogp0sbtdbfl1pwhh618uz40trjsmaoezu2kpfva2ha\",\n \"gravatar_id\" : \"de93\",\n \"url\" : \"https://web.example.mocklab.io/135435\"\n },\n \"payload\" : {\n \"pages\" : [ {\n \"summary\" : \"Cupiditate quia aut officia architecto deleniti. Cum quis atque debitis consequatur. Modi ut impedit quibusdam fugit molestias aut.\",\n \"html_url\" : \"https://web.example.mocklab.io/509261\",\n \"page_name\" : \"Jayson Mertz MD\",\n \"action\" : \"m3ppa8o4xo34lv06d\",\n \"title\" : \"Deleniti magnam veritatis nemo.\",\n \"sha\" : \"md56ewc3w2fwnak2td9uij6v2jwekte46jw8tyr8p7gqb2debtljk79jjt3xri47bjfo3h0gunrmywxw83kfqykx81n8jr6sazrmbtect33hjp2um5u65kq0ma6vo5tc3xrs0qhsycamc8ak2t75jefdg\"\n }, {\n \"summary\" : \"Corporis sed et. Nisi qui odio porro quos vero. Asperiores enim repellendus.\",\n \"html_url\" : \"https://web.example.mocklab.io/234282\",\n \"page_name\" : \"Fransisca Mann\",\n \"action\" : \"6nemn8a3jzcvpbv2a6a4s0fpca9gn3deckq4wide3hwcb81ev8s3asrn62ii0rjeawrd9wfk44j4xb07zrxzu90q4gj6ox4d1bxdsi0trfjswikkpwl86t7fddw0ubvp0n0ob9tywu5o2z89z3g68ujh6s9j\",\n \"title\" : \"Totam eligendi harum libero.\",\n \"sha\" : \"7qaivfastp40zy8yh020d75jdf9ugn9lxyycc8x2oz06ttp4zda5791m7qb6dfg15h8g84lv94alnnjy92mtfjip0eijt4atyx71ofpdsf7je41fu39c4utciye3srvjo\"\n }, {\n \"summary\" : \"Ullam repudiandae expedita nesciunt voluptatem et. Sunt nisi quia dolorem debitis rem rem ipsum. Est dolores magni totam. A velit doloribus consequatur qui nesciunt ipsa voluptas. Corporis soluta pers\",\n \"html_url\" : \"https://web.example.mocklab.io/529559\",\n \"page_name\" : \"Dr. Buster Baumbach\",\n \"action\" : \"3uu6fbpfkc6mn6ilkrak4i0ly48liu4hu756x3qncmior\",\n \"title\" : \"Praesentium dolor magni totam sit.\",\n \"sha\" : \"wv42ugykcnfarc6ll1y7elweq99i2n04thi76upq48rdsjka86awhkqjwkv2j69rvy0590zoxr446i8w9pkzygbil3xq76ub4kkqdcd4yr7l6p3lgemp2d4p1l3pvorm5qo99mt3d4p4jnoucmvx0m91vqxcew\"\n } ],\n \"issue\" : {\n \"body_html\" : \"bsyig1tk94r9kpf2v4sc3brp82zelcjv1k6elxcvsoliy7lttwso3w7rxae4obkn07mrl8xapw0gw9lmy4cqpiukff0g\",\n \"body_text\" : \"0hjp32t7x2utqi6y6olxgbt0yaf1xaq4k9bzfy0n1ts1v3efiwa5lzcfzlf0z8ed9ijh2l2qpr9504cumcazu7w2urw2v2cc8txbvc5r77f\",\n \"assignees\" : [ {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Reyna Turcotte\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"sni331z2t4bip0r83vy30qjeeuiaf5t14v5xy0qv3kzeiyk42zvd13tz2yibwoft240wlfn9p955w1cigdtuwmjcn9ux58mmq84k5fz9e3f2\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n }, {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Neville Kilback\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"r6ac6kcp43kevvdi747cyjcbzhw807q1ao4zbzyq8p0hprr5ixq0oyim6jr8qbuinx9ogm5h7n07tcq7y7mjta7j6bw2cx5eb54nux5g1me52or4equrpzfwv9q55qdv0gqhxre1q0tehqyuniaw8rtnthhlix1y\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n }, {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Angelyn Nitzsche\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"iep42ytosoi729y2ww84g5dvngqhumad3g9567vl75mn2vy9qy7cgbntz7enewzkukctashpqowafu1p049wmjv9iqmtgp0el59rq91bltv586pq0hl81ef4ffikm99gvr2q2y1woe4qi3othmgcmzt120lca\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n } ],\n \"created_at\" : \"2011-04-22T13:33:48Z\",\n \"body\" : \"I'm having a problem with this.\",\n \"repository\" : {\n \"allow_forking\" : true,\n \"anonymous_access_enabled\" : false,\n \"is_template\" : true,\n \"stargazers_count\" : 80,\n \"pushed_at\" : \"2011-01-26T19:06:43Z\",\n \"language\" : \"kv2b1y3k7dxnldgnd1riyh2mnzure1yz5sawm0kduuym7zjxv2231dw0cwn1u4bwugtybrcdpi7frzm72mdj9cjcyb5f5b5\",\n \"subscription_url\" : \"http://api.github.com/repos/octocat/Hello-World/subscription\",\n \"branches_url\" : \"http://api.github.com/repos/octocat/Hello-World/branches{/branch}\",\n \"allow_rebase_merge\" : true,\n \"issue_comment_url\" : \"http://api.github.com/repos/octocat/Hello-World/issues/comments{/number}\",\n \"labels_url\" : \"http://api.github.com/repos/octocat/Hello-World/labels{/name}\",\n \"permissions\" : {\n \"pull\" : true,\n \"maintain\" : false,\n \"admin\" : true,\n \"triage\" : true,\n \"push\" : true\n },\n \"subscribers_url\" : \"http://api.github.com/repos/octocat/Hello-World/subscribers\",\n \"releases_url\" : \"http://api.github.com/repos/octocat/Hello-World/releases{/id}\",\n \"svn_url\" : \"https://svn.github.com/octocat/Hello-World\",\n \"subscribers_count\" : 1069581052047745286,\n \"id\" : 42,\n \"master_branch\" : \"4sn6qwi00du7r0aaotjzkunysrkriuq1vtp0qy4k3bmgt9fujrlb1guvjtxra0cdjasfi4kevn1ld9z57w6h9m45pnu7ufaq6gvye0xo03l06ddd67ly7xxoxbnbt1tlg1whj3sx51s9kdeti10xnxq3cjo1g8deffq47lhpro5348moowqux\",\n \"forks\" : 292304390419305055,\n \"allow_merge_commit\" : true,\n \"archive_url\" : \"http://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref}\",\n \"git_refs_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/refs{/sha}\",\n \"forks_url\" : \"http://api.github.com/repos/octocat/Hello-World/forks\",\n \"visibility\" : \"go54u6bpi2r597323154htq1hapexvt0m9f1e2zl9wu4fceajy6uxd4mqcuj3opou7llcbdi87mvlecr0w955v30t91iltqg14hg8gp2z3lbp2\",\n \"statuses_url\" : \"http://api.github.com/repos/octocat/Hello-World/statuses/{sha}\",\n \"network_count\" : 564191334869384750,\n \"ssh_url\" : \"git@github.com:octocat/Hello-World.git\",\n \"license\" : {\n \"html_url\" : \"https://web.example.mocklab.io/258404\",\n \"name\" : \"MIT License\",\n \"spdx_id\" : \"MIT\",\n \"key\" : \"mit\",\n \"url\" : \"https://api.github.com/licenses/mit\",\n \"node_id\" : \"MDc6TGljZW5zZW1pdA==\"\n },\n \"full_name\" : \"octocat/Hello-World\",\n \"size\" : 108,\n \"template_repository\" : {\n \"anonymous_access_enabled\" : true,\n \"is_template\" : true,\n \"stargazers_count\" : 579183529148487945,\n \"pushed_at\" : \"mf1ib26d1fpnysr99lse70h6jxhs52veeu5p65xy6goh5bx8ye3cp6biv5xx4o2up2o6ami8mcm9p52w073khnpi1tvi73mlalen8pdb3y5n0a9fuc47h9tl5a7ujcht6gz5myhnm30r12qd9wddry6gis1imtawp\",\n \"language\" : \"tolx66kk3j3tnt1a1uxww93ocbj494dr8pkx8r7zahn8922pgq5vgt42lbgglmis0te3uajn5k9zbnvts4158hxrz61m3nwl0m9zv3if4ob5p7zoko1gqpzvrcjpa4neei3ynn472grmv3rwhygb59tidk\",\n \"subscription_url\" : \"https://web.example.mocklab.io/005792\",\n \"branches_url\" : \"https://web.example.mocklab.io/395281\",\n \"allow_rebase_merge\" : false,\n \"issue_comment_url\" : \"https://web.example.mocklab.io/435748\",\n \"labels_url\" : \"https://web.example.mocklab.io/736587\",\n \"permissions\" : { },\n \"subscribers_url\" : \"https://web.example.mocklab.io/966825\",\n \"releases_url\" : \"https://web.example.mocklab.io/616527\",\n \"svn_url\" : \"https://web.example.mocklab.io/255387\",\n \"subscribers_count\" : 4480373018756899220,\n \"id\" : 4384716285144107792,\n \"allow_merge_commit\" : false,\n \"archive_url\" : \"https://web.example.mocklab.io/725244\",\n \"git_refs_url\" : \"https://web.example.mocklab.io/310781\",\n \"forks_url\" : \"https://web.example.mocklab.io/863248\",\n \"visibility\" : \"62ibee3lh2iy43oazc14k6y6d44pclgl2fwg\",\n \"statuses_url\" : \"https://web.example.mocklab.io/125141\",\n \"network_count\" : 8027285402172149034,\n \"ssh_url\" : \"https://web.example.mocklab.io/990586\",\n \"full_name\" : \"Colby Cremin\",\n \"size\" : 3166057521484142456,\n \"languages_url\" : \"https://web.example.mocklab.io/525823\",\n \"clone_url\" : \"https://web.example.mocklab.io/807376\",\n \"collaborators_url\" : \"https://web.example.mocklab.io/177292\",\n \"html_url\" : \"https://web.example.mocklab.io/941338\",\n \"name\" : \"Tad Boyle DVM\",\n \"pulls_url\" : \"https://web.example.mocklab.io/284731\",\n \"default_branch\" : \"mebczn0xiuh9ja3yieb3jd\",\n \"hooks_url\" : \"https://web.example.mocklab.io/589831\",\n \"trees_url\" : \"https://web.example.mocklab.io/546828\",\n \"tags_url\" : \"https://web.example.mocklab.io/469338\",\n \"contributors_url\" : \"https://web.example.mocklab.io/051896\",\n \"private\" : true,\n \"has_downloads\" : false,\n \"notifications_url\" : \"https://web.example.mocklab.io/490580\",\n \"open_issues_count\" : 2287261153260422629,\n \"created_at\" : \"i2ojdhi95wbu4d6fulcjqztqqfkb2o3umt6f2jhacsl5eh441pruupuzbktu1gexdwdjaxpcw4e9zlxsii1dlg6ravbk5e4zc5z0371f8kmrr7qa0p6ppdfantm2aopuvy6x6wqr444uh\",\n \"description\" : \"Ut officiis facilis omnis et ad. Ut ad voluptatum. Error sint nihil temporibus commodi sed. Excepturi temporibus et sequi eum ex.\",\n \"deployments_url\" : \"https://web.example.mocklab.io/795822\",\n \"keys_url\" : \"https://web.example.mocklab.io/717476\",\n \"has_projects\" : true,\n \"archived\" : false,\n \"has_wiki\" : false,\n \"updated_at\" : \"2023-02-21T05:34:58.671685Z\",\n \"comments_url\" : \"https://web.example.mocklab.io/517307\",\n \"stargazers_url\" : \"https://web.example.mocklab.io/874051\",\n \"disabled\" : true,\n \"delete_branch_on_merge\" : false,\n \"git_url\" : \"https://web.example.mocklab.io/146702\",\n \"has_pages\" : true,\n \"owner\" : { },\n \"allow_squash_merge\" : false,\n \"commits_url\" : \"https://web.example.mocklab.io/213000\",\n \"compare_url\" : \"https://web.example.mocklab.io/099983\",\n \"git_commits_url\" : \"https://web.example.mocklab.io/675778\",\n \"topics\" : [ \"86o8fwce7e959owqoe1kbjmh03z7m1x8z40joymaz7xds9cg85ume6dmv2rm2cn8lpzd7geyb2thu8m8tyltuojdskxcyz38inaa0vf27hexqcskb9p1g0d3g96sb6nym01y62bpz1z\", \"qt1wf1oi75jq22p0th7da7zmvt1rw4dodh0rjzalw3pyy9zwtjqshkox24v9cpn2z1fyjfn098ggu56taz61xqrx6bbctdwbvaqvtopua6zfdxey3uw9i6h305imkih6mskwa7nw92qt1\", \"r51pxm01j76veb9y3hs0zrvm2nw5vjty18ou768e4wa85vkz1ayd0q7uh77wd4rw4fjkrxkrh9easzrnbtuxd68wxf1vtopw6f9je807dl27y8s0a3jkf40nv3l6jihvbsirwx0vxu3x5gial02uyyhoxmw9v1lk5xf8p2c\", \"6in8bpdu6gpsb6ifu5avtnbks5yywg7u8t36w8gvvk390fsp1yjo9p6q1fcne789tkvozk07o5azgixbiw1upwhawgge9r6b521gk1f0l08h6iyufo1y0zco\" ],\n \"blobs_url\" : \"https://web.example.mocklab.io/958658\",\n \"git_tags_url\" : \"https://web.example.mocklab.io/603554\",\n \"merges_url\" : \"https://web.example.mocklab.io/379119\",\n \"downloads_url\" : \"https://web.example.mocklab.io/870912\",\n \"has_issues\" : false,\n \"url\" : \"https://web.example.mocklab.io/694426\",\n \"contents_url\" : \"https://web.example.mocklab.io/290748\",\n \"mirror_url\" : \"https://web.example.mocklab.io/576988\",\n \"milestones_url\" : \"https://web.example.mocklab.io/446701\",\n \"teams_url\" : \"https://web.example.mocklab.io/500417\",\n \"fork\" : false,\n \"issues_url\" : \"https://web.example.mocklab.io/817505\",\n \"events_url\" : \"https://web.example.mocklab.io/049702\",\n \"issue_events_url\" : \"https://web.example.mocklab.io/603981\",\n \"assignees_url\" : \"https://web.example.mocklab.io/714162\",\n \"watchers_count\" : 3190921622935131702,\n \"forks_count\" : 4572165351580560618,\n \"homepage\" : \"lg4dyv0vvet4ti46ts4em3ch8xh9qvevg9bwvf9q9qn5y2i6a97yy5ryxc867d6vnmql7tq2acvznq51hn8vqscy65mdw0u8sgx1jqocszwsyiqlg1bg5ks5nqrilu1qum1suave9n7tbuxcu\",\n \"node_id\" : \"b2a9\"\n },\n \"languages_url\" : \"http://api.github.com/repos/octocat/Hello-World/languages\",\n \"clone_url\" : \"https://github.com/octocat/Hello-World.git\",\n \"collaborators_url\" : \"http://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator}\",\n \"html_url\" : \"https://github.com/octocat/Hello-World\",\n \"name\" : \"Team Environment\",\n \"pulls_url\" : \"http://api.github.com/repos/octocat/Hello-World/pulls{/number}\",\n \"default_branch\" : \"master\",\n \"hooks_url\" : \"http://api.github.com/repos/octocat/Hello-World/hooks\",\n \"trees_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/trees{/sha}\",\n \"tags_url\" : \"http://api.github.com/repos/octocat/Hello-World/tags\",\n \"contributors_url\" : \"http://api.github.com/repos/octocat/Hello-World/contributors\",\n \"private\" : true,\n \"has_downloads\" : true,\n \"notifications_url\" : \"http://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating}\",\n \"open_issues_count\" : 0,\n \"created_at\" : \"2011-01-26T19:01:12Z\",\n \"description\" : \"This your first repo!\",\n \"watchers\" : 1611042805298512033,\n \"deployments_url\" : \"http://api.github.com/repos/octocat/Hello-World/deployments\",\n \"keys_url\" : \"http://api.github.com/repos/octocat/Hello-World/keys{/key_id}\",\n \"has_projects\" : true,\n \"archived\" : true,\n \"has_wiki\" : true,\n \"updated_at\" : \"2011-01-26T19:14:43Z\",\n \"comments_url\" : \"http://api.github.com/repos/octocat/Hello-World/comments{/number}\",\n \"stargazers_url\" : \"http://api.github.com/repos/octocat/Hello-World/stargazers\",\n \"disabled\" : false,\n \"delete_branch_on_merge\" : false,\n \"git_url\" : \"git:github.com/octocat/Hello-World.git\",\n \"has_pages\" : false,\n \"owner\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Janis Sanford\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"bwkvfwl9mb7hrbrfmrecujtgb01z9d6xvh57felkfk2cdb0t8133ugxmyxakn2xk4enz8jz12d9kpupm5qph51ngq70gu1xgbrpbme9hrbwxwl26ms74ozymexs36\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"allow_squash_merge\" : true,\n \"commits_url\" : \"http://api.github.com/repos/octocat/Hello-World/commits{/sha}\",\n \"compare_url\" : \"http://api.github.com/repos/octocat/Hello-World/compare/{base}...{head}\",\n \"git_commits_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/commits{/sha}\",\n \"topics\" : [ \"vv1congek8kyv1f02v9388euie3\" ],\n \"blobs_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/blobs{/sha}\",\n \"git_tags_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/tags{/sha}\",\n \"merges_url\" : \"http://api.github.com/repos/octocat/Hello-World/merges\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:42Z\\\"\",\n \"downloads_url\" : \"http://api.github.com/repos/octocat/Hello-World/downloads\",\n \"has_issues\" : true,\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World\",\n \"contents_url\" : \"http://api.github.com/repos/octocat/Hello-World/contents/{+path}\",\n \"mirror_url\" : \"git:git.example.com/octocat/Hello-World\",\n \"milestones_url\" : \"http://api.github.com/repos/octocat/Hello-World/milestones{/number}\",\n \"teams_url\" : \"http://api.github.com/repos/octocat/Hello-World/teams\",\n \"fork\" : true,\n \"issues_url\" : \"http://api.github.com/repos/octocat/Hello-World/issues{/number}\",\n \"events_url\" : \"http://api.github.com/repos/octocat/Hello-World/events\",\n \"issue_events_url\" : \"http://api.github.com/repos/octocat/Hello-World/issues/events{/number}\",\n \"organization\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Teresia Blick\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"uor4sa66riqw8u1w6x3xnz0hmh7twstl434gjoglc4xap3fy9uue35gxbl6onqwp7nmfbjgz0o8rfrndqiesgqtury3l0hf7wgqhvjygjqwoya7r3m8jzrl01fa3hpcrjrnd2u65w3h1tzeq8c86z4azak9vg9ilyrz0\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"assignees_url\" : \"http://api.github.com/repos/octocat/Hello-World/assignees{/user}\",\n \"open_issues\" : 5061018859480887871,\n \"watchers_count\" : 80,\n \"forks_count\" : 9,\n \"homepage\" : \"https://github.com\",\n \"node_id\" : \"MDEwOlJlcG9zaXRvcnkxMjk2MjY5\"\n },\n \"title\" : \"Found a bug\",\n \"author_association\" : \"OWNER\",\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347/labels{/name}\",\n \"number\" : 1347,\n \"performed_via_github_app\" : {\n \"owner\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Deandre Murazik III\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"v4gz3a52zc29j4t\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"installations_count\" : 5,\n \"created_at\" : \"2017-07-08T16:18:44-04:00\",\n \"description\" : \"The description of the app.\",\n \"client_id\" : \"\\\"Iv1.25b5d1e65ffc4022\\\"\",\n \"external_url\" : \"https://example.com\",\n \"updated_at\" : \"2017-07-08T16:18:44-04:00\",\n \"permissions\" : {\n \"deployments\" : \"write\",\n \"issues\" : \"read\"\n },\n \"html_url\" : \"https://github.com/apps/super-ci\",\n \"name\" : \"Probot Owners\",\n \"pem\" : \"\\\"-----BEGIN RSA PRIVATE KEY-----\\\\nMIIEogIBAAKCAQEArYxrNYD/iT5CZVpRJu4rBKmmze3PVmT/gCo2ATUvDvZTPTey\\\\nxcGJ3vvrJXazKk06pN05TN29o98jrYz4cengG3YGsXPNEpKsIrEl8NhbnxapEnM9\\\\nJCMRe0P5JcPsfZlX6hmiT7136GRWiGOUba2X9+HKh8QJVLG5rM007TBER9/z9mWm\\\\nrJuNh+m5l320oBQY/Qq3A7wzdEfZw8qm/mIN0FCeoXH1L6B8xXWaAYBwhTEh6SSn\\\\nZHlO1Xu1JWDmAvBCi0RO5aRSKM8q9QEkvvHP4yweAtK3N8+aAbZ7ovaDhyGz8r6r\\\\nzhU1b8Uo0Z2ysf503WqzQgIajr7Fry7/kUwpgQIDAQABAoIBADwJp80Ko1xHPZDy\\\\nfcCKBDfIuPvkmSW6KumbsLMaQv1aGdHDwwTGv3t0ixSay8CGlxMRtRDyZPib6SvQ\\\\n6OH/lpfpbMdW2ErkksgtoIKBVrDilfrcAvrNZu7NxRNbhCSvN8q0s4ICecjbbVQh\\\\nnueSdlA6vGXbW58BHMq68uRbHkP+k+mM9U0mDJ1HMch67wlg5GbayVRt63H7R2+r\\\\nVxcna7B80J/lCEjIYZznawgiTvp3MSanTglqAYi+m1EcSsP14bJIB9vgaxS79kTu\\\\noiSo93leJbBvuGo8QEiUqTwMw4tDksmkLsoqNKQ1q9P7LZ9DGcujtPy4EZsamSJT\\\\ny8OJt0ECgYEA2lxOxJsQk2kI325JgKFjo92mQeUObIvPfSNWUIZQDTjniOI6Gv63\\\\nGLWVFrZcvQBWjMEQraJA9xjPbblV8PtfO87MiJGLWCHFxmPz2dzoedN+2Coxom8m\\\\nV95CLz8QUShuao6u/RYcvUaZEoYs5bHcTmy5sBK80JyEmafJPtCQVxMCgYEAy3ar\\\\nZr3yv4xRPEPMat4rseswmuMooSaK3SKub19WFI5IAtB/e7qR1Rj9JhOGcZz+OQrl\\\\nT78O2OFYlgOIkJPvRMrPpK5V9lslc7tz1FSh3BZMRGq5jSyD7ETSOQ0c8T2O/s7v\\\\nbeEPbVbDe4mwvM24XByH0GnWveVxaDl51ABD65sCgYB3ZAspUkOA5egVCh8kNpnd\\\\nSd6SnuQBE3ySRlT2WEnCwP9Ph6oPgn+oAfiPX4xbRqkL8q/k0BdHQ4h+zNwhk7+h\\\\nWtPYRAP1Xxnc/F+jGjb+DVaIaKGU18MWPg7f+FI6nampl3Q0KvfxwX0GdNhtio8T\\\\nTj1E+SnFwh56SRQuxSh2gwKBgHKjlIO5NtNSflsUYFM+hyQiPiqnHzddfhSG+/3o\\\\nm5nNaSmczJesUYreH5San7/YEy2UxAugvP7aSY2MxB+iGsiJ9WD2kZzTUlDZJ7RV\\\\nUzWsoqBR+eZfVJ2FUWWvy8TpSG6trh4dFxImNtKejCR1TREpSiTV3Zb1dmahK9GV\\\\nrK9NAoGAbBxRLoC01xfxCTgt5BDiBcFVh4fp5yYKwavJPLzHSpuDOrrI9jDn1oKN\\\\nonq5sDU1i391zfQvdrbX4Ova48BN+B7p63FocP/MK5tyyBoT8zQEk2+vWDOw7H/Z\\\\nu5dTCPxTIsoIwUw1I+7yIxqJzLPFgR2gVBwY1ra/8iAqCj+zeBw=\\\\n-----END RSA PRIVATE KEY-----\\\\n\\\"\",\n \"webhook_secret\" : \"\\\"6fba8f2fc8a7e8f2cca5577eddd82ca7586b3b6b\\\"\",\n \"client_secret\" : \"\\\"1d4b2097ac622ba702d19de498f005747a8b21d3\\\"\",\n \"id\" : 37,\n \"events\" : [ \"label\", \"deployment\" ],\n \"slug\" : \"probot-owners\",\n \"node_id\" : \"MDExOkludGVncmF0aW9uMQ==\"\n },\n \"updated_at\" : \"2011-04-22T13:33:48Z\",\n \"comments_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347/comments\",\n \"active_lock_reason\" : \"too heated\",\n \"id\" : 1,\n \"repository_url\" : \"https://api.github.com/repos/octocat/Hello-World\",\n \"state\" : \"open\",\n \"locked\" : true,\n \"timeline_url\" : \"https://web.example.mocklab.io/284918\",\n \"pull_request\" : {\n \"patch_url\" : \"https://web.example.mocklab.io/903432\",\n \"html_url\" : \"https://web.example.mocklab.io/935541\",\n \"merged_at\" : \"2023-01-02T18:07:08.674Z\",\n \"diff_url\" : \"https://web.example.mocklab.io/072650\",\n \"url\" : \"https://web.example.mocklab.io/695570\"\n },\n \"closed_at\" : \"2022-05-30T02:26:03.674Z\",\n \"comments\" : 0,\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347\",\n \"labels\" : [ {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n }, {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n }, {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n }, {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n }, {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n } ],\n \"milestone\" : {\n \"creator\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Domenica Greenfelder\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"9uusaszeodtb4rlf50wt9hzkh9few6jmdeulbml96dxywhtu2j74qj9u2o87n95w02wz962qoh767za0kgttf4kuuu5frg2qm5wtq35kbmtohnsfoy3hk6uaxarng12gs3x784naqvg3u\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"closed_at\" : \"2013-02-12T13:22:01Z\",\n \"created_at\" : \"2011-04-10T20:09:31Z\",\n \"description\" : \"Tracking milestone for version 1.0\",\n \"closed_issues\" : 8,\n \"title\" : \"v1.0\",\n \"due_on\" : \"2012-10-09T23:39:01Z\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones/1\",\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones/1/labels\",\n \"number\" : 42,\n \"updated_at\" : \"2014-03-03T18:58:10Z\",\n \"html_url\" : \"https://github.com/octocat/Hello-World/milestones/v1.0\",\n \"id\" : 1002604,\n \"state\" : \"open\",\n \"open_issues\" : 4,\n \"node_id\" : \"MDk6TWlsZXN0b25lMTAwMjYwNA==\"\n },\n \"events_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347/events\",\n \"html_url\" : \"https://github.com/octocat/Hello-World/issues/1347\",\n \"assignee\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Mrs. Freda Kautzer\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"rh9f0sz5o5d2lg8ar4e2s7mju0o1lem3odiwawr7yyi4sl4srl5jrx9tcd5ux4av4kp7jgmu8ib6q8pv326dqxm662v1u9d39gwkqplqg6cjrcv563knuok6p4opdhuz4jaozzk3jgl3wipcigety90d1garhiyn4samr1\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"user\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"windy.strosin\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"3ny1q39bhtir7056ipv2b6idehdwvozrkw0jvz7rckwud9dxqf1yjlt61qr5sbtloaqro3slw8itv6urznoc1ytrynqwt81zola34uwp8is5isrv2577l8nna0zug00yvhta1kgex3ddj\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"node_id\" : \"MDU6SXNzdWUx\"\n },\n \"action\" : \"p0d5ejp9dk4jyfcr6u794itvuaz\",\n \"comment\" : {\n \"issue_url\" : \"https://web.example.mocklab.io/754004\",\n \"body_html\" : \"ny6iey8cpfa9kiyuw1y9ht3s28g1wrq8nvl5qfluwmszlbny4p5ioujniwa2hkfjkbwt5q5fat6eqc4uz6clj83m63sjaitgau5tdvbqn4f5\",\n \"body_text\" : \"j2sa418xwqtqqpyowjr8129usu9kgk9n09816sds7qo1xbpruievlxrb3np78yo3fduksda4646xun1evv4z234u66xoad3vot6jymgg73itrhzbwwrt2dksqab4wo1qeygm1t6saw2yaeulou19w9twmxln0\",\n \"created_at\" : \"2011-04-14T16:00:49Z\",\n \"body\" : \"What version of Safari were you using when you observed this bug?\",\n \"url\" : \"https://api.github.com/repositories/42/issues/comments/1\",\n \"author_association\" : \"OWNER\",\n \"performed_via_github_app\" : {\n \"owner\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Elwanda Murazik\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"xanju1gdkogvact1slmfdm7n56fd51rpc8zdownjfjluglraljtb2p8ywtceg6gl4vls1dqnmzjuhs4gs8qpkwpzy0hvdjja07yfc74zzez8r1esucx\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"installations_count\" : 5,\n \"created_at\" : \"2017-07-08T16:18:44-04:00\",\n \"description\" : \"The description of the app.\",\n \"client_id\" : \"\\\"Iv1.25b5d1e65ffc4022\\\"\",\n \"external_url\" : \"https://example.com\",\n \"updated_at\" : \"2017-07-08T16:18:44-04:00\",\n \"permissions\" : {\n \"deployments\" : \"write\",\n \"issues\" : \"read\"\n },\n \"html_url\" : \"https://github.com/apps/super-ci\",\n \"name\" : \"Probot Owners\",\n \"pem\" : \"\\\"-----BEGIN RSA PRIVATE KEY-----\\\\nMIIEogIBAAKCAQEArYxrNYD/iT5CZVpRJu4rBKmmze3PVmT/gCo2ATUvDvZTPTey\\\\nxcGJ3vvrJXazKk06pN05TN29o98jrYz4cengG3YGsXPNEpKsIrEl8NhbnxapEnM9\\\\nJCMRe0P5JcPsfZlX6hmiT7136GRWiGOUba2X9+HKh8QJVLG5rM007TBER9/z9mWm\\\\nrJuNh+m5l320oBQY/Qq3A7wzdEfZw8qm/mIN0FCeoXH1L6B8xXWaAYBwhTEh6SSn\\\\nZHlO1Xu1JWDmAvBCi0RO5aRSKM8q9QEkvvHP4yweAtK3N8+aAbZ7ovaDhyGz8r6r\\\\nzhU1b8Uo0Z2ysf503WqzQgIajr7Fry7/kUwpgQIDAQABAoIBADwJp80Ko1xHPZDy\\\\nfcCKBDfIuPvkmSW6KumbsLMaQv1aGdHDwwTGv3t0ixSay8CGlxMRtRDyZPib6SvQ\\\\n6OH/lpfpbMdW2ErkksgtoIKBVrDilfrcAvrNZu7NxRNbhCSvN8q0s4ICecjbbVQh\\\\nnueSdlA6vGXbW58BHMq68uRbHkP+k+mM9U0mDJ1HMch67wlg5GbayVRt63H7R2+r\\\\nVxcna7B80J/lCEjIYZznawgiTvp3MSanTglqAYi+m1EcSsP14bJIB9vgaxS79kTu\\\\noiSo93leJbBvuGo8QEiUqTwMw4tDksmkLsoqNKQ1q9P7LZ9DGcujtPy4EZsamSJT\\\\ny8OJt0ECgYEA2lxOxJsQk2kI325JgKFjo92mQeUObIvPfSNWUIZQDTjniOI6Gv63\\\\nGLWVFrZcvQBWjMEQraJA9xjPbblV8PtfO87MiJGLWCHFxmPz2dzoedN+2Coxom8m\\\\nV95CLz8QUShuao6u/RYcvUaZEoYs5bHcTmy5sBK80JyEmafJPtCQVxMCgYEAy3ar\\\\nZr3yv4xRPEPMat4rseswmuMooSaK3SKub19WFI5IAtB/e7qR1Rj9JhOGcZz+OQrl\\\\nT78O2OFYlgOIkJPvRMrPpK5V9lslc7tz1FSh3BZMRGq5jSyD7ETSOQ0c8T2O/s7v\\\\nbeEPbVbDe4mwvM24XByH0GnWveVxaDl51ABD65sCgYB3ZAspUkOA5egVCh8kNpnd\\\\nSd6SnuQBE3ySRlT2WEnCwP9Ph6oPgn+oAfiPX4xbRqkL8q/k0BdHQ4h+zNwhk7+h\\\\nWtPYRAP1Xxnc/F+jGjb+DVaIaKGU18MWPg7f+FI6nampl3Q0KvfxwX0GdNhtio8T\\\\nTj1E+SnFwh56SRQuxSh2gwKBgHKjlIO5NtNSflsUYFM+hyQiPiqnHzddfhSG+/3o\\\\nm5nNaSmczJesUYreH5San7/YEy2UxAugvP7aSY2MxB+iGsiJ9WD2kZzTUlDZJ7RV\\\\nUzWsoqBR+eZfVJ2FUWWvy8TpSG6trh4dFxImNtKejCR1TREpSiTV3Zb1dmahK9GV\\\\nrK9NAoGAbBxRLoC01xfxCTgt5BDiBcFVh4fp5yYKwavJPLzHSpuDOrrI9jDn1oKN\\\\nonq5sDU1i391zfQvdrbX4Ova48BN+B7p63FocP/MK5tyyBoT8zQEk2+vWDOw7H/Z\\\\nu5dTCPxTIsoIwUw1I+7yIxqJzLPFgR2gVBwY1ra/8iAqCj+zeBw=\\\\n-----END RSA PRIVATE KEY-----\\\\n\\\"\",\n \"webhook_secret\" : \"\\\"6fba8f2fc8a7e8f2cca5577eddd82ca7586b3b6b\\\"\",\n \"client_secret\" : \"\\\"1d4b2097ac622ba702d19de498f005747a8b21d3\\\"\",\n \"id\" : 37,\n \"events\" : [ \"label\", \"deployment\" ],\n \"slug\" : \"probot-owners\",\n \"node_id\" : \"MDExOkludGVncmF0aW9uMQ==\"\n },\n \"updated_at\" : \"2011-04-14T16:00:49Z\",\n \"html_url\" : \"https://web.example.mocklab.io/865004\",\n \"reactions\" : {\n \"confused\" : 3891076960749799695,\n \"-1\" : 4221114368753690155,\n \"+1\" : 5321602438624558585,\n \"total_count\" : 2028559424226316275,\n \"rocket\" : 3761217040647033589,\n \"hooray\" : 8796442052516303413,\n \"eyes\" : 4383497918242029726,\n \"heart\" : 8007260858836046457,\n \"laugh\" : 3249340080243543528,\n \"url\" : \"https://web.example.mocklab.io/388964\"\n },\n \"id\" : 42,\n \"user\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"franklyn.damore\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"379kv7co603jvswdq0yzcja0vachirmr97dc7czv3d115l0k2c77k021l0mbv8xhtwgpkf07kcykp0f2b8lm7ustu65pfq14vv1fih2otywe0zlec38kt03ontyfdadudwix9stv9ftpwgpty6jsjmgnfxxhm6qms6ahdhuucufr3xvd\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"node_id\" : \"nv19\"\n }\n },\n \"repo\" : {\n \"name\" : \"Micheal Bergnaum\",\n \"id\" : 9056348410001425359,\n \"url\" : \"https://web.example.mocklab.io/674778\"\n },\n \"created_at\" : \"2024-02-09T08:48:40.675Z\",\n \"id\" : \"r472\",\n \"type\" : \"f34dly11l2ijpqja5iqxh0z58a5fv2et9tdp98yvbpzvg5r2ighjfne3t2i6z\"\n}, {\n \"actor\" : {\n \"display_login\" : \"ownmzm20hgvq3ey2bp44lkcv63r153alw25he2suf9ewchjjlz8oxixu2s74qgjfesciprty0crl6p6nbj7ffjm465m\",\n \"avatar_url\" : \"https://s3.amazonaws.com/uifaces/faces/twitter/trueblood_33/128.jpg\",\n \"id\" : 7545762025763538731,\n \"login\" : \"avj00kwlnf3b17yylt8fjif9ymwxqd01zthln7r0yntigfwvxfp7eog8hcp2hikd4kaimdm0ykyplvq2vsrsawxavt84k7p1kf2pdnc1nv3tv84t3g6nhl4gj38q659qoocww8plwww1t1axonpr6wpy217xy2kofy5yvh1qa7h5p7956s50wzm7kurim54ei\",\n \"gravatar_id\" : \"uc45\",\n \"url\" : \"https://web.example.mocklab.io/846752\"\n },\n \"public\" : false,\n \"org\" : {\n \"display_login\" : \"wiuubd4ggv4q01yzwgd9qroez6ivp38o835r5x3g6qlmqp5w6r3fh33ftsksf3qydofea6ymuzd14fio74\",\n \"avatar_url\" : \"https://s3.amazonaws.com/uifaces/faces/twitter/timpetricola/128.jpg\",\n \"id\" : 3697097638535710535,\n \"login\" : \"on90p69zu3syh79y0hd710taidl74vu7rztbtbawkjsueqizcfjkv433fofhphcxl5zzpiw6mq1fx06ypx787vtonsjgvca\",\n \"gravatar_id\" : \"xl4g\",\n \"url\" : \"https://web.example.mocklab.io/986427\"\n },\n \"payload\" : {\n \"pages\" : [ {\n \"summary\" : \"Quia quas id dicta est. Corrupti sint adipisci rerum quo veritatis totam vero. Voluptatem facere possimus. Dolores qui ipsum atque.\",\n \"html_url\" : \"https://web.example.mocklab.io/068332\",\n \"page_name\" : \"Gertrude Spencer\",\n \"action\" : \"eism7pwlsk0ufq1\",\n \"title\" : \"Aut accusantium ut.\",\n \"sha\" : \"hnb5mwdhdidepromomqxqivb8lf57ry79gzb7uyyqwpnjt8u5hieh\"\n }, {\n \"summary\" : \"Explicabo facilis qui in modi. Harum pariatur eos. Quibusdam cum dolores. Eos sit animi nulla corrupti accusantium numquam voluptas. Qui consequatur ipsa ut vitae ut ut laborum.\",\n \"html_url\" : \"https://web.example.mocklab.io/328570\",\n \"page_name\" : \"Betsey Moore\",\n \"action\" : \"50n26jy5tplj3gsiaw77wc57uwlyeuyhvqc005kr0dhm92usmeqho461hw9\",\n \"title\" : \"Magni amet ullam.\",\n \"sha\" : \"pb729xap09qlfgk2hb6fpcrf457fnskd55zq96v9ggny6srr0df6hao1dl0wctocg51ib9d63a8lrwrijf40tco20l7\"\n }, {\n \"summary\" : \"Cum nihil excepturi. Earum quibusdam optio cupiditate reprehenderit omnis. Sed impedit porro quaerat vero at maxime reiciendis. Minus sunt veniam magni culpa excepturi praesentium facere. Harum dolore\",\n \"html_url\" : \"https://web.example.mocklab.io/416071\",\n \"page_name\" : \"Leslie Schroeder\",\n \"action\" : \"xfog65479k7sf7vinhweuabp7pwymxyzdp8mxb0x7wbnqrklm0qh0mok8pksp4oznn9nrofbslz9pbc6dmnki92zvcoflxz28h0prkgi13p6civkgllbe9j0zi50o780rqtyfp462am7fk5o8jmqrmhvtb3x8bp3d0gx2t12qatiiyzmlezuszcp83asvokhpa0izgl\",\n \"title\" : \"Magni est sit quo animi inventore.\",\n \"sha\" : \"i7v7a94m1dohu2taol8k6zzjgq4x0twd4pljhywl473x5z66dtit27vm7fgluft5pbk6w9iiolg6679z0mo5lvze5vncjizyuhtz7bxel4vg8b7ekegbq8en5jrzbr2yrgqrv051ypwwomg2a8nnpth9ki7he2xzrfcgvzrn4zjpstr2\"\n }, {\n \"summary\" : \"Earum fugiat autem assumenda repellendus aut. Sapiente ullam reiciendis sit pariatur veritatis cupiditate. Porro quas consequatur.\",\n \"html_url\" : \"https://web.example.mocklab.io/985327\",\n \"page_name\" : \"Miss Jospeh Botsford\",\n \"action\" : \"kkfqjtgw17de9mapzclahuycodanc2rf4x03g93k99d6riq1vuui27slvsxr941wuozb4nq2o6gtlzu0v\",\n \"title\" : \"Facilis optio cupiditate dicta rerum maxime.\",\n \"sha\" : \"lbdrh8e6my2sy03er\"\n }, {\n \"summary\" : \"Quaerat iusto cum est non dolorem quidem voluptatibus. Odit molestiae molestias harum. Consequatur eius culpa inventore error possimus quam eaque. Laudantium dolorum cumque soluta ut mollitia laborios\",\n \"html_url\" : \"https://web.example.mocklab.io/162462\",\n \"page_name\" : \"Donovan Murray MD\",\n \"action\" : \"e6id6hvyf6r07f8ipy8f536jax9ejx8zrwdgxi6m5joxymqah5z6idei1ja\",\n \"title\" : \"Deleniti ipsa id itaque ut.\",\n \"sha\" : \"khuvype7fgyqv7x8577oxcz2p2qsla1ps32dzmw1grzanpoe16j9yd4afp0rif7bxzy31ofsjifoei5409d1wd3sh5d98k5zby8f6jge4dgg8ddfvxy55py7noj8byfmz46z18yzgwz61mzqdqqo\"\n }, {\n \"summary\" : \"Explicabo non rerum laborum soluta et. Voluptas vitae iste qui. Neque qui impedit.\",\n \"html_url\" : \"https://web.example.mocklab.io/378378\",\n \"page_name\" : \"Mrs. Lala Carroll\",\n \"action\" : \"uxpypypb9141pg9yxhe0080h65vb8ypmdohebu4gjtvymsff2ujuua4aa8ymqw2213w2q6cpwk6csd7xr1rtq79guq2ss6en00seg85bs04ib1tosf0e039uekrst42iw4qarnhhvtpxbjc98449l9vpsy8zdy1lxd61izivsg8xce4i861ynvcjy\",\n \"title\" : \"Recusandae ex eaque qui libero ipsa aspernatur.\",\n \"sha\" : \"89x5cmben2o3haazs2aumb53dk5nj6a0fclxkpqnl8vhfavpcihmpryvn0eia84em1wub6nv0aam4xore2imwzk375q5i3o58qgyji7pk8vxcdc1u7xqbkyobbdmvwua243nqyltww5c0579wheyyj1thzynlk4ro9z3z0dkotbtqhapnn5qemkq95z9t5dalpq\"\n } ],\n \"issue\" : {\n \"body_html\" : \"j535zgfm7a14ftje7u3zljyit45xr0br25bftuq5mmzrovfduoke3g65pf09gvud4dn0v66hxe6w7wm6b7sqec60vwf78ncb0xztwkykoypgl3teospgmsf3ok9reb2invn1w7igum6l4dntqhdnbs8212d2ar061w\",\n \"body_text\" : \"hh61lya2idob8r9g2urawhd4zudb8k6h0tfef8t6d4p663x5aq8vomynsba5cxhf0do8nahk297o7ae5u4zpwxqkh0bhycrq1e6206d2knmn2d6391\",\n \"assignees\" : [ {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Miss Chelsea Mitchell\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"tra9np5rlia1udhypj84kfnhdna1rqpaiild5c5ymnosip2um66esjr5jybcue9mlxzitec3641nsl3iz6h6t8b9l86lpykrprgab2b7cruw14wmfsos9k\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n } ],\n \"created_at\" : \"2011-04-22T13:33:48Z\",\n \"body\" : \"I'm having a problem with this.\",\n \"repository\" : {\n \"allow_forking\" : true,\n \"anonymous_access_enabled\" : true,\n \"is_template\" : true,\n \"stargazers_count\" : 80,\n \"pushed_at\" : \"2011-01-26T19:06:43Z\",\n \"language\" : \"3e945ia3rn3mccfnz0c725vdxt2732namgnkzdeh51z7vc5o1yfjb6x6lm8mz24wqvmt5g8ih99ef9d40m6dz7nv4qm1dkxk5eyaf9z58j4rh9w\",\n \"subscription_url\" : \"http://api.github.com/repos/octocat/Hello-World/subscription\",\n \"branches_url\" : \"http://api.github.com/repos/octocat/Hello-World/branches{/branch}\",\n \"allow_rebase_merge\" : true,\n \"issue_comment_url\" : \"http://api.github.com/repos/octocat/Hello-World/issues/comments{/number}\",\n \"labels_url\" : \"http://api.github.com/repos/octocat/Hello-World/labels{/name}\",\n \"permissions\" : {\n \"pull\" : false,\n \"maintain\" : true,\n \"admin\" : true,\n \"triage\" : true,\n \"push\" : true\n },\n \"subscribers_url\" : \"http://api.github.com/repos/octocat/Hello-World/subscribers\",\n \"releases_url\" : \"http://api.github.com/repos/octocat/Hello-World/releases{/id}\",\n \"svn_url\" : \"https://svn.github.com/octocat/Hello-World\",\n \"subscribers_count\" : 5690392500331468168,\n \"id\" : 42,\n \"master_branch\" : \"oq6tedb68b9j4iv\",\n \"forks\" : 1388181944257365829,\n \"allow_merge_commit\" : true,\n \"archive_url\" : \"http://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref}\",\n \"git_refs_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/refs{/sha}\",\n \"forks_url\" : \"http://api.github.com/repos/octocat/Hello-World/forks\",\n \"visibility\" : \"237dk64xncgaubpumoany2sqplg4wc7bnt3eibjb5uguwnd77v1xyp7pd8lqvj9ixylutmbh4snfqay5aycs6pgqxo7irsj0qz6qnbgi54urqldobsfkv91dvdqgxq4xjjx48z9nymzgr397tmmtc9kp43r4x5psspqhb5fr48olu04rh0e\",\n \"statuses_url\" : \"http://api.github.com/repos/octocat/Hello-World/statuses/{sha}\",\n \"network_count\" : 6079398789928787495,\n \"ssh_url\" : \"git@github.com:octocat/Hello-World.git\",\n \"license\" : {\n \"html_url\" : \"https://web.example.mocklab.io/612996\",\n \"name\" : \"MIT License\",\n \"spdx_id\" : \"MIT\",\n \"key\" : \"mit\",\n \"url\" : \"https://api.github.com/licenses/mit\",\n \"node_id\" : \"MDc6TGljZW5zZW1pdA==\"\n },\n \"full_name\" : \"octocat/Hello-World\",\n \"size\" : 108,\n \"template_repository\" : {\n \"anonymous_access_enabled\" : true,\n \"is_template\" : false,\n \"stargazers_count\" : 3511837269991221801,\n \"pushed_at\" : \"nnwr6fgacof1haxkznf6p8bp33dgj8mk20yqybqhsl95re4vr0mzp29tgqvh1jdbw662mbls7l0jhq1j8s7dmaqc\",\n \"language\" : \"2hetqm77g6hlw7r07ax84yu4wtn7iqrc8q1rl8b73t9d9qifzbjbvgcfx32ted6fx08ghatzrwqadingdq3je4mgxw6tjwm5tt74ga42nwkeosntdzhppjxfegln4a8ac7l87demkx5vtnuzdmg3bgzsy3f4y4mmi5avhlttcr\",\n \"subscription_url\" : \"https://web.example.mocklab.io/432450\",\n \"branches_url\" : \"https://web.example.mocklab.io/619279\",\n \"allow_rebase_merge\" : true,\n \"issue_comment_url\" : \"https://web.example.mocklab.io/787871\",\n \"labels_url\" : \"https://web.example.mocklab.io/114480\",\n \"permissions\" : { },\n \"subscribers_url\" : \"https://web.example.mocklab.io/491190\",\n \"releases_url\" : \"https://web.example.mocklab.io/889674\",\n \"svn_url\" : \"https://web.example.mocklab.io/001387\",\n \"subscribers_count\" : 933517423049357989,\n \"id\" : 6402054515220391487,\n \"allow_merge_commit\" : true,\n \"archive_url\" : \"https://web.example.mocklab.io/485729\",\n \"git_refs_url\" : \"https://web.example.mocklab.io/712094\",\n \"forks_url\" : \"https://web.example.mocklab.io/686027\",\n \"visibility\" : \"761dnchxq1sq0iza6wasm98eod4mtq8v7mzlymyq5p25ivmf18pfrdkswl24qlctte8hppx27tu9dp12odmujb55lf0jfkefaiymd8wz4ijzphb0iohz8sur3stm4utmkpodaj19c81rq2xhh\",\n \"statuses_url\" : \"https://web.example.mocklab.io/725790\",\n \"network_count\" : 2290421480431224554,\n \"ssh_url\" : \"https://web.example.mocklab.io/998615\",\n \"full_name\" : \"Leta Gusikowski I\",\n \"size\" : 6353187177477740329,\n \"languages_url\" : \"https://web.example.mocklab.io/176090\",\n \"clone_url\" : \"https://web.example.mocklab.io/167153\",\n \"collaborators_url\" : \"https://web.example.mocklab.io/342861\",\n \"html_url\" : \"https://web.example.mocklab.io/084189\",\n \"name\" : \"Moses Bartell\",\n \"pulls_url\" : \"https://web.example.mocklab.io/359356\",\n \"default_branch\" : \"wynup0e4sskk9y7wbro5vm99jbdisr8ab\",\n \"hooks_url\" : \"https://web.example.mocklab.io/793275\",\n \"trees_url\" : \"https://web.example.mocklab.io/937631\",\n \"tags_url\" : \"https://web.example.mocklab.io/132346\",\n \"contributors_url\" : \"https://web.example.mocklab.io/215739\",\n \"private\" : true,\n \"has_downloads\" : false,\n \"notifications_url\" : \"https://web.example.mocklab.io/426209\",\n \"open_issues_count\" : 8548041460475615533,\n \"created_at\" : \"d4jyknvepc9q2ikxqwqxz5ul7w98i484mh8eyha85ye13p3pjkq95p9j2h7jtpaobgs2\",\n \"description\" : \"Odit molestiae officia ipsum odio nesciunt rerum. Dolorem blanditiis error quia officiis est facere quod. Deserunt exercitationem itaque.\",\n \"deployments_url\" : \"https://web.example.mocklab.io/627914\",\n \"keys_url\" : \"https://web.example.mocklab.io/094097\",\n \"has_projects\" : true,\n \"archived\" : true,\n \"has_wiki\" : true,\n \"updated_at\" : \"2022-08-10T09:07:58.679778Z\",\n \"comments_url\" : \"https://web.example.mocklab.io/377252\",\n \"stargazers_url\" : \"https://web.example.mocklab.io/372609\",\n \"disabled\" : true,\n \"delete_branch_on_merge\" : true,\n \"git_url\" : \"https://web.example.mocklab.io/735821\",\n \"has_pages\" : true,\n \"owner\" : { },\n \"allow_squash_merge\" : false,\n \"commits_url\" : \"https://web.example.mocklab.io/690631\",\n \"compare_url\" : \"https://web.example.mocklab.io/071060\",\n \"git_commits_url\" : \"https://web.example.mocklab.io/050114\",\n \"topics\" : [ \"4iybls2rrapk8d5ydmr1a13ghri6sq6njus9vl58qxihz6j3xbi2sl2r8znq62xklhef65kcdm4ydeck280x9ael8kfxck2c1to5y8usnr8kw7er3q9udg7x560zmkmz0pw2zybt00dm6vwn0js0c71v05c3ctvxp6865fj5h39xtv6oqxlguuk38ir2\", \"psweyptx8nckgwdef1of38jcb2zvpo6s5liicxppvdtqm2u294m9fccamsyffvetf0p777wlwqjducjr40eome\", \"xht9yg7f8c46o1psesnvpi0vv33lw1x30tosqp17y9jkvtbhgrf5e3ijcyu7axhtavu50e\", \"0e7zyxnw8e8xhvd8naqg9rcv3b1jxsrpbryf3i3tgsgbf8rzlaobdkzb4v64zq3g09e99dnp7gzlfjd33wgmwx8gmjvaagpks4n19oqkm28pxt9dicvcmoitbb0hp\", \"1ujm7k8gdgmsq82p63bgfe7jt0cnjt7j05rs1oxam2ce6ssthksrn4gytn2p4xhr3x1yk6rsv54lm3glxbkxlsg6p0p7g8k124cknf2o22m942rdz0rle08vnxvbgsk4ksovuzvzh41vahk5zvlb9csqohdnryrujoduqeatdbvuvz3hh\", \"z62cynhgvpt5hauvywf7w3ql0fce9vrpi5mtzuuymul9ixhbttnywk0bzqlk3p6abpa766o6u9gf1j26yp3gvdup8jvjh8evfz1i7hvi1zorzk6j3ehllf8eqbcp\", \"dpnkust3fplt6udr4p054q14b9507nfmtzvm6g42axs6te6r2okvgozatt3pnf0xfjbmopaxkh7z2cwx8mcqlpnk463n7f3v21xx4r81d8ev736wapq52p84j8azpuyh0uvajlqaku9nzzdig815w3f3w327cdqbn0o1g4f02w0qi65xhw49l4v51ntydcy8g\", \"joucoq9jf7t8ppffcmqtovqoo3gjm2\" ],\n \"blobs_url\" : \"https://web.example.mocklab.io/516102\",\n \"git_tags_url\" : \"https://web.example.mocklab.io/280909\",\n \"merges_url\" : \"https://web.example.mocklab.io/748188\",\n \"downloads_url\" : \"https://web.example.mocklab.io/316862\",\n \"has_issues\" : true,\n \"url\" : \"https://web.example.mocklab.io/066374\",\n \"contents_url\" : \"https://web.example.mocklab.io/636642\",\n \"mirror_url\" : \"https://web.example.mocklab.io/963001\",\n \"milestones_url\" : \"https://web.example.mocklab.io/007719\",\n \"teams_url\" : \"https://web.example.mocklab.io/899886\",\n \"fork\" : true,\n \"issues_url\" : \"https://web.example.mocklab.io/968314\",\n \"events_url\" : \"https://web.example.mocklab.io/406700\",\n \"issue_events_url\" : \"https://web.example.mocklab.io/437229\",\n \"assignees_url\" : \"https://web.example.mocklab.io/774136\",\n \"watchers_count\" : 988158378820835101,\n \"forks_count\" : 2238327997365214340,\n \"homepage\" : \"7f2ekzfblzswsh46neo23fpwzox991awq0lft4sgliv\",\n \"node_id\" : \"s394\"\n },\n \"languages_url\" : \"http://api.github.com/repos/octocat/Hello-World/languages\",\n \"clone_url\" : \"https://github.com/octocat/Hello-World.git\",\n \"collaborators_url\" : \"http://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator}\",\n \"html_url\" : \"https://github.com/octocat/Hello-World\",\n \"name\" : \"Team Environment\",\n \"pulls_url\" : \"http://api.github.com/repos/octocat/Hello-World/pulls{/number}\",\n \"default_branch\" : \"master\",\n \"hooks_url\" : \"http://api.github.com/repos/octocat/Hello-World/hooks\",\n \"trees_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/trees{/sha}\",\n \"tags_url\" : \"http://api.github.com/repos/octocat/Hello-World/tags\",\n \"contributors_url\" : \"http://api.github.com/repos/octocat/Hello-World/contributors\",\n \"private\" : false,\n \"has_downloads\" : true,\n \"notifications_url\" : \"http://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating}\",\n \"open_issues_count\" : 0,\n \"created_at\" : \"2011-01-26T19:01:12Z\",\n \"description\" : \"This your first repo!\",\n \"watchers\" : 3866177693211844027,\n \"deployments_url\" : \"http://api.github.com/repos/octocat/Hello-World/deployments\",\n \"keys_url\" : \"http://api.github.com/repos/octocat/Hello-World/keys{/key_id}\",\n \"has_projects\" : true,\n \"archived\" : false,\n \"has_wiki\" : true,\n \"updated_at\" : \"2011-01-26T19:14:43Z\",\n \"comments_url\" : \"http://api.github.com/repos/octocat/Hello-World/comments{/number}\",\n \"stargazers_url\" : \"http://api.github.com/repos/octocat/Hello-World/stargazers\",\n \"disabled\" : true,\n \"delete_branch_on_merge\" : false,\n \"git_url\" : \"git:github.com/octocat/Hello-World.git\",\n \"has_pages\" : true,\n \"owner\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Mike Schneider\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"0snvz55n9rof32c3r1tg52dgxsjv7gbdpo2ep1rb1fcp47r8j0gb2f4w6ic869wk2t3t0kkqrxvi34y2mn8dd6rduxitewaa4m7jp7n67tugszcpxpo2gf74j4ay\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"allow_squash_merge\" : true,\n \"commits_url\" : \"http://api.github.com/repos/octocat/Hello-World/commits{/sha}\",\n \"compare_url\" : \"http://api.github.com/repos/octocat/Hello-World/compare/{base}...{head}\",\n \"git_commits_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/commits{/sha}\",\n \"topics\" : [ \"fx90e7r0x7h7kozfn9eqgpxpzwfsts7opt4iwn8sh4zm8y508fgjoyl2j52xg69d1vsjkngntrov7d38pwqhl2xz832dtbrmoedkrzdj4g7wylfgu\", \"3yhdwlabcfw4ctsx61ij7it512g8tp2asyfyq84tt9amuq6d3oghply7oog3xn\", \"fk6g9bda76i04wruha6yn55j0wew9coz234meui8lsruo1kwg062v367s835mp3dooqeohjhrsq76ve2vs0299491ttz2rxsq5ug4a0khinn6otjnzafbaca1t2y3kpgivfsysg5nyeld348s9rj\" ],\n \"blobs_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/blobs{/sha}\",\n \"git_tags_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/tags{/sha}\",\n \"merges_url\" : \"http://api.github.com/repos/octocat/Hello-World/merges\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:42Z\\\"\",\n \"downloads_url\" : \"http://api.github.com/repos/octocat/Hello-World/downloads\",\n \"has_issues\" : true,\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World\",\n \"contents_url\" : \"http://api.github.com/repos/octocat/Hello-World/contents/{+path}\",\n \"mirror_url\" : \"git:git.example.com/octocat/Hello-World\",\n \"milestones_url\" : \"http://api.github.com/repos/octocat/Hello-World/milestones{/number}\",\n \"teams_url\" : \"http://api.github.com/repos/octocat/Hello-World/teams\",\n \"fork\" : false,\n \"issues_url\" : \"http://api.github.com/repos/octocat/Hello-World/issues{/number}\",\n \"events_url\" : \"http://api.github.com/repos/octocat/Hello-World/events\",\n \"issue_events_url\" : \"http://api.github.com/repos/octocat/Hello-World/issues/events{/number}\",\n \"organization\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Shae Mertz\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"ik5dn7vsus73dgjkzms41lh5p650nya7f058snaobnb0rftehgwwytltcnmpa6x8fqyim0nyp6bx8r6aenb1x4g1bh8zh4thkygb0qalp1422e2hsb633ir0dpr3bdiu669rryu6efwe6jpa9r9x04bfyqatqqkoz0alje14kpfbs64txojtsc6lexldwwn2\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"assignees_url\" : \"http://api.github.com/repos/octocat/Hello-World/assignees{/user}\",\n \"open_issues\" : 8034590787904737032,\n \"watchers_count\" : 80,\n \"forks_count\" : 9,\n \"homepage\" : \"https://github.com\",\n \"node_id\" : \"MDEwOlJlcG9zaXRvcnkxMjk2MjY5\"\n },\n \"title\" : \"Found a bug\",\n \"author_association\" : \"OWNER\",\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347/labels{/name}\",\n \"number\" : 1347,\n \"performed_via_github_app\" : {\n \"owner\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Trey Friesen\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"s3zkhhssnjr8jkz6dsrsxn9bgqry9z8g2hdlhh2c9ttaqzuzgrcmxhgfl5wu81n3n9nwfms6n91khtlooct49q9pl3guzjk\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"installations_count\" : 5,\n \"created_at\" : \"2017-07-08T16:18:44-04:00\",\n \"description\" : \"The description of the app.\",\n \"client_id\" : \"\\\"Iv1.25b5d1e65ffc4022\\\"\",\n \"external_url\" : \"https://example.com\",\n \"updated_at\" : \"2017-07-08T16:18:44-04:00\",\n \"permissions\" : {\n \"deployments\" : \"write\",\n \"issues\" : \"read\"\n },\n \"html_url\" : \"https://github.com/apps/super-ci\",\n \"name\" : \"Probot Owners\",\n \"pem\" : \"\\\"-----BEGIN RSA PRIVATE KEY-----\\\\nMIIEogIBAAKCAQEArYxrNYD/iT5CZVpRJu4rBKmmze3PVmT/gCo2ATUvDvZTPTey\\\\nxcGJ3vvrJXazKk06pN05TN29o98jrYz4cengG3YGsXPNEpKsIrEl8NhbnxapEnM9\\\\nJCMRe0P5JcPsfZlX6hmiT7136GRWiGOUba2X9+HKh8QJVLG5rM007TBER9/z9mWm\\\\nrJuNh+m5l320oBQY/Qq3A7wzdEfZw8qm/mIN0FCeoXH1L6B8xXWaAYBwhTEh6SSn\\\\nZHlO1Xu1JWDmAvBCi0RO5aRSKM8q9QEkvvHP4yweAtK3N8+aAbZ7ovaDhyGz8r6r\\\\nzhU1b8Uo0Z2ysf503WqzQgIajr7Fry7/kUwpgQIDAQABAoIBADwJp80Ko1xHPZDy\\\\nfcCKBDfIuPvkmSW6KumbsLMaQv1aGdHDwwTGv3t0ixSay8CGlxMRtRDyZPib6SvQ\\\\n6OH/lpfpbMdW2ErkksgtoIKBVrDilfrcAvrNZu7NxRNbhCSvN8q0s4ICecjbbVQh\\\\nnueSdlA6vGXbW58BHMq68uRbHkP+k+mM9U0mDJ1HMch67wlg5GbayVRt63H7R2+r\\\\nVxcna7B80J/lCEjIYZznawgiTvp3MSanTglqAYi+m1EcSsP14bJIB9vgaxS79kTu\\\\noiSo93leJbBvuGo8QEiUqTwMw4tDksmkLsoqNKQ1q9P7LZ9DGcujtPy4EZsamSJT\\\\ny8OJt0ECgYEA2lxOxJsQk2kI325JgKFjo92mQeUObIvPfSNWUIZQDTjniOI6Gv63\\\\nGLWVFrZcvQBWjMEQraJA9xjPbblV8PtfO87MiJGLWCHFxmPz2dzoedN+2Coxom8m\\\\nV95CLz8QUShuao6u/RYcvUaZEoYs5bHcTmy5sBK80JyEmafJPtCQVxMCgYEAy3ar\\\\nZr3yv4xRPEPMat4rseswmuMooSaK3SKub19WFI5IAtB/e7qR1Rj9JhOGcZz+OQrl\\\\nT78O2OFYlgOIkJPvRMrPpK5V9lslc7tz1FSh3BZMRGq5jSyD7ETSOQ0c8T2O/s7v\\\\nbeEPbVbDe4mwvM24XByH0GnWveVxaDl51ABD65sCgYB3ZAspUkOA5egVCh8kNpnd\\\\nSd6SnuQBE3ySRlT2WEnCwP9Ph6oPgn+oAfiPX4xbRqkL8q/k0BdHQ4h+zNwhk7+h\\\\nWtPYRAP1Xxnc/F+jGjb+DVaIaKGU18MWPg7f+FI6nampl3Q0KvfxwX0GdNhtio8T\\\\nTj1E+SnFwh56SRQuxSh2gwKBgHKjlIO5NtNSflsUYFM+hyQiPiqnHzddfhSG+/3o\\\\nm5nNaSmczJesUYreH5San7/YEy2UxAugvP7aSY2MxB+iGsiJ9WD2kZzTUlDZJ7RV\\\\nUzWsoqBR+eZfVJ2FUWWvy8TpSG6trh4dFxImNtKejCR1TREpSiTV3Zb1dmahK9GV\\\\nrK9NAoGAbBxRLoC01xfxCTgt5BDiBcFVh4fp5yYKwavJPLzHSpuDOrrI9jDn1oKN\\\\nonq5sDU1i391zfQvdrbX4Ova48BN+B7p63FocP/MK5tyyBoT8zQEk2+vWDOw7H/Z\\\\nu5dTCPxTIsoIwUw1I+7yIxqJzLPFgR2gVBwY1ra/8iAqCj+zeBw=\\\\n-----END RSA PRIVATE KEY-----\\\\n\\\"\",\n \"webhook_secret\" : \"\\\"6fba8f2fc8a7e8f2cca5577eddd82ca7586b3b6b\\\"\",\n \"client_secret\" : \"\\\"1d4b2097ac622ba702d19de498f005747a8b21d3\\\"\",\n \"id\" : 37,\n \"events\" : [ \"label\", \"deployment\" ],\n \"slug\" : \"probot-owners\",\n \"node_id\" : \"MDExOkludGVncmF0aW9uMQ==\"\n },\n \"updated_at\" : \"2011-04-22T13:33:48Z\",\n \"comments_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347/comments\",\n \"active_lock_reason\" : \"too heated\",\n \"id\" : 1,\n \"repository_url\" : \"https://api.github.com/repos/octocat/Hello-World\",\n \"state\" : \"open\",\n \"locked\" : true,\n \"timeline_url\" : \"https://web.example.mocklab.io/685985\",\n \"pull_request\" : {\n \"patch_url\" : \"https://web.example.mocklab.io/931425\",\n \"html_url\" : \"https://web.example.mocklab.io/608013\",\n \"merged_at\" : \"2023-06-02T04:08:42.682Z\",\n \"diff_url\" : \"https://web.example.mocklab.io/354441\",\n \"url\" : \"https://web.example.mocklab.io/917548\"\n },\n \"closed_at\" : \"2023-05-17T07:54:38.682Z\",\n \"comments\" : 0,\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347\",\n \"labels\" : [ {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n }, {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n }, {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n }, {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n }, {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n }, {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n } ],\n \"milestone\" : {\n \"creator\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Irena Strosin\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"ah885yl9wu00x5ql4\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"closed_at\" : \"2013-02-12T13:22:01Z\",\n \"created_at\" : \"2011-04-10T20:09:31Z\",\n \"description\" : \"Tracking milestone for version 1.0\",\n \"closed_issues\" : 8,\n \"title\" : \"v1.0\",\n \"due_on\" : \"2012-10-09T23:39:01Z\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones/1\",\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones/1/labels\",\n \"number\" : 42,\n \"updated_at\" : \"2014-03-03T18:58:10Z\",\n \"html_url\" : \"https://github.com/octocat/Hello-World/milestones/v1.0\",\n \"id\" : 1002604,\n \"state\" : \"open\",\n \"open_issues\" : 4,\n \"node_id\" : \"MDk6TWlsZXN0b25lMTAwMjYwNA==\"\n },\n \"events_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347/events\",\n \"html_url\" : \"https://github.com/octocat/Hello-World/issues/1347\",\n \"assignee\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Gene Murazik Jr.\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"dx3ptev8ysfmysifk9we38zq586njddh48ogv7x1jx163k3qf9q3iq8b1j3dka31sgj952u7fuu9xbgrt8afff77g3pgbwt11jru6nk3wqix323naf2r298b04zbew52zk4dnfh185v4as66m2qm20a0xd\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"user\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"pablo.wehner\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"kwhgxshsjul8z4h7a715dua8qztko4y1h3a8tn4sjzq\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"node_id\" : \"MDU6SXNzdWUx\"\n },\n \"action\" : \"wn27ykwefubqq7uryg78r55nlo9mbx9eop6aug6fo6ee2xqe\",\n \"comment\" : {\n \"issue_url\" : \"https://web.example.mocklab.io/592530\",\n \"body_html\" : \"hks1edopez5h42eqfcy4bbkr3z59d871z7m32c90yhjx2asqilv4r2ykib905h09vi8jfklctcind1htkoz7lbk0t20j0dy0xd6noczhmgm05cmnrc\",\n \"body_text\" : \"4u8iil0ri6gvacbbqmefbfuihwik2lk3v5rkco7psxsq8hy00nmeqdfz2nk6a7ey9iylx3vfbuqzrb36c8p96l7bfkq4t5rga9hbae49\",\n \"created_at\" : \"2011-04-14T16:00:49Z\",\n \"body\" : \"What version of Safari were you using when you observed this bug?\",\n \"url\" : \"https://api.github.com/repositories/42/issues/comments/1\",\n \"author_association\" : \"OWNER\",\n \"performed_via_github_app\" : {\n \"owner\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Elmer Upton\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"i36xrsx4505cehwavxh08bgbtscx0tf9105s7za1d2elavwa5kq5idp3e8ppu818f1p0kf4y5hsddg5x\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"installations_count\" : 5,\n \"created_at\" : \"2017-07-08T16:18:44-04:00\",\n \"description\" : \"The description of the app.\",\n \"client_id\" : \"\\\"Iv1.25b5d1e65ffc4022\\\"\",\n \"external_url\" : \"https://example.com\",\n \"updated_at\" : \"2017-07-08T16:18:44-04:00\",\n \"permissions\" : {\n \"deployments\" : \"write\",\n \"issues\" : \"read\"\n },\n \"html_url\" : \"https://github.com/apps/super-ci\",\n \"name\" : \"Probot Owners\",\n \"pem\" : \"\\\"-----BEGIN RSA PRIVATE KEY-----\\\\nMIIEogIBAAKCAQEArYxrNYD/iT5CZVpRJu4rBKmmze3PVmT/gCo2ATUvDvZTPTey\\\\nxcGJ3vvrJXazKk06pN05TN29o98jrYz4cengG3YGsXPNEpKsIrEl8NhbnxapEnM9\\\\nJCMRe0P5JcPsfZlX6hmiT7136GRWiGOUba2X9+HKh8QJVLG5rM007TBER9/z9mWm\\\\nrJuNh+m5l320oBQY/Qq3A7wzdEfZw8qm/mIN0FCeoXH1L6B8xXWaAYBwhTEh6SSn\\\\nZHlO1Xu1JWDmAvBCi0RO5aRSKM8q9QEkvvHP4yweAtK3N8+aAbZ7ovaDhyGz8r6r\\\\nzhU1b8Uo0Z2ysf503WqzQgIajr7Fry7/kUwpgQIDAQABAoIBADwJp80Ko1xHPZDy\\\\nfcCKBDfIuPvkmSW6KumbsLMaQv1aGdHDwwTGv3t0ixSay8CGlxMRtRDyZPib6SvQ\\\\n6OH/lpfpbMdW2ErkksgtoIKBVrDilfrcAvrNZu7NxRNbhCSvN8q0s4ICecjbbVQh\\\\nnueSdlA6vGXbW58BHMq68uRbHkP+k+mM9U0mDJ1HMch67wlg5GbayVRt63H7R2+r\\\\nVxcna7B80J/lCEjIYZznawgiTvp3MSanTglqAYi+m1EcSsP14bJIB9vgaxS79kTu\\\\noiSo93leJbBvuGo8QEiUqTwMw4tDksmkLsoqNKQ1q9P7LZ9DGcujtPy4EZsamSJT\\\\ny8OJt0ECgYEA2lxOxJsQk2kI325JgKFjo92mQeUObIvPfSNWUIZQDTjniOI6Gv63\\\\nGLWVFrZcvQBWjMEQraJA9xjPbblV8PtfO87MiJGLWCHFxmPz2dzoedN+2Coxom8m\\\\nV95CLz8QUShuao6u/RYcvUaZEoYs5bHcTmy5sBK80JyEmafJPtCQVxMCgYEAy3ar\\\\nZr3yv4xRPEPMat4rseswmuMooSaK3SKub19WFI5IAtB/e7qR1Rj9JhOGcZz+OQrl\\\\nT78O2OFYlgOIkJPvRMrPpK5V9lslc7tz1FSh3BZMRGq5jSyD7ETSOQ0c8T2O/s7v\\\\nbeEPbVbDe4mwvM24XByH0GnWveVxaDl51ABD65sCgYB3ZAspUkOA5egVCh8kNpnd\\\\nSd6SnuQBE3ySRlT2WEnCwP9Ph6oPgn+oAfiPX4xbRqkL8q/k0BdHQ4h+zNwhk7+h\\\\nWtPYRAP1Xxnc/F+jGjb+DVaIaKGU18MWPg7f+FI6nampl3Q0KvfxwX0GdNhtio8T\\\\nTj1E+SnFwh56SRQuxSh2gwKBgHKjlIO5NtNSflsUYFM+hyQiPiqnHzddfhSG+/3o\\\\nm5nNaSmczJesUYreH5San7/YEy2UxAugvP7aSY2MxB+iGsiJ9WD2kZzTUlDZJ7RV\\\\nUzWsoqBR+eZfVJ2FUWWvy8TpSG6trh4dFxImNtKejCR1TREpSiTV3Zb1dmahK9GV\\\\nrK9NAoGAbBxRLoC01xfxCTgt5BDiBcFVh4fp5yYKwavJPLzHSpuDOrrI9jDn1oKN\\\\nonq5sDU1i391zfQvdrbX4Ova48BN+B7p63FocP/MK5tyyBoT8zQEk2+vWDOw7H/Z\\\\nu5dTCPxTIsoIwUw1I+7yIxqJzLPFgR2gVBwY1ra/8iAqCj+zeBw=\\\\n-----END RSA PRIVATE KEY-----\\\\n\\\"\",\n \"webhook_secret\" : \"\\\"6fba8f2fc8a7e8f2cca5577eddd82ca7586b3b6b\\\"\",\n \"client_secret\" : \"\\\"1d4b2097ac622ba702d19de498f005747a8b21d3\\\"\",\n \"id\" : 37,\n \"events\" : [ \"label\", \"deployment\" ],\n \"slug\" : \"probot-owners\",\n \"node_id\" : \"MDExOkludGVncmF0aW9uMQ==\"\n },\n \"updated_at\" : \"2011-04-14T16:00:49Z\",\n \"html_url\" : \"https://web.example.mocklab.io/259134\",\n \"reactions\" : {\n \"confused\" : 6172922274646234298,\n \"-1\" : 4554114479873493385,\n \"+1\" : 8438581236412466983,\n \"total_count\" : 5469845612170375333,\n \"rocket\" : 6299157185243329749,\n \"hooray\" : 6686855685004666036,\n \"eyes\" : 5734895879286251274,\n \"heart\" : 8002592678815853936,\n \"laugh\" : 8772251095501096714,\n \"url\" : \"https://web.example.mocklab.io/357237\"\n },\n \"id\" : 42,\n \"user\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"samuel.bosco\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"4ew23kn542pn390aozv4ptunu3y0u7ljqi5oupzga0bfry96ecun0o34i2g1l69qux8kkri18if7q0huknhyxh23x0292w3kusv4owlqtlh3ajmnsn6ubgen4s\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"node_id\" : \"jk3o\"\n }\n },\n \"repo\" : {\n \"name\" : \"Nohemi Hilpert\",\n \"id\" : 6318484636427762572,\n \"url\" : \"https://web.example.mocklab.io/406319\"\n },\n \"created_at\" : \"2022-07-13T00:47:46.683Z\",\n \"id\" : \"6d2u\",\n \"type\" : \"6r41c7z3o5nsxpbbbjczqfsw75c6yiunycwittukw7mo8o3kihj6ltzxqf2ol6g5rv5o7thjboce760slmn8y0zqpb0mqcqo9bv7gbk430g6nk2v33dllnyv8kqhubtkgq7zp\"\n}, {\n \"actor\" : {\n \"display_login\" : \"cbwah0fcxcd1l6bf75urys6nmmxh5kt2mgect2kwvzu8oxnoneq97490d5uth9zjuxkfg13up70htez43c0j3f135r3kwi35rqv40xqhlbcw4wjhb9wv8weeqkm07j8oazpx18elwp81cf3u3ziaxz4lgr9s5mmfowgfmkmfynao98y13jm\",\n \"avatar_url\" : \"https://s3.amazonaws.com/uifaces/faces/twitter/ashernatali/128.jpg\",\n \"id\" : 4613061019780217401,\n \"login\" : \"f5rqh1btjcq4aqvgo5iiokjwwece2euj42zm2dc055sln1pw6o3fw9vw3oj251wgbfel8z4cr8qqdd3vpy9idf591dhlk3ker64ziyze2x4rx5q8\",\n \"gravatar_id\" : \"6yzg\",\n \"url\" : \"https://web.example.mocklab.io/628098\"\n },\n \"public\" : true,\n \"org\" : {\n \"display_login\" : \"9c9g741b64fvjw0dyias4g57hmud3wc6qgxcp5tq2baat1wuh92q8czwxj20f6fvcwmolcaip7saaqzorvs04vf8kkxdd2qo70uiiy8nmlagt248kjp70grjjc0zjtp5vdzr\",\n \"avatar_url\" : \"https://s3.amazonaws.com/uifaces/faces/twitter/psaikali/128.jpg\",\n \"id\" : 3622346551427494824,\n \"login\" : \"9lfgrg9ulkihu0fmgfdy7f7zaqrcx5wuua7i45xd5slfnobjwcstggxxl3vwh5p22sr7avyg6ag5b1iwpb1cpvalx2ze2hzlpia3itt238of2coxz5zqpts23x4ab4mmnk86kw6g4o4mvdk87cyotyqe8\",\n \"gravatar_id\" : \"7le6\",\n \"url\" : \"https://web.example.mocklab.io/563849\"\n },\n \"payload\" : {\n \"pages\" : [ {\n \"summary\" : \"Quos possimus omnis nesciunt quia repudiandae. Ducimus nisi consequatur et officia. Porro quisquam facere minima illum illum. Sequi dolorum ut. Voluptas maiores nemo voluptatibus suscipit labore.\",\n \"html_url\" : \"https://web.example.mocklab.io/331995\",\n \"page_name\" : \"Desmond Schaden\",\n \"action\" : \"6g573hgvbrzdz1hos1u4pdst0ycgwuypy3qa025526cpgsbvpovcb86o7l4twgoi4uswf3my9evlra26ay70wpa0jksg4a9417nrkiy94cl31eap0\",\n \"title\" : \"Qui nobis cupiditate rerum exercitationem voluptatum.\",\n \"sha\" : \"nmadke3134l74349tgbmedehmeh9i4ezlhie8xqv7yh33gyai3k6y9c17d86tqvry2tccmpemzlqe7ymgq66t0ylywq3g8on94byilae9mli6lhb6850780bjstba3tvzn051a1gkf84w7270ic580h510uflkjkssk8xmdjnrs75fixgr14k89zxlhnh9h\"\n } ],\n \"issue\" : {\n \"body_html\" : \"mezqev9f53cpkm75smefrh4uyvowqxkargb455u1usitae04zf9ow6ljsdojbnxgauj4x90um0t048we68mk26ymjv23z22weeyegvlm5ecy3sktsk99nuwli57peacujfp77yoq6psxn460m75z565l243poa4a6t3qhrxcxggacygqvinhmebji\",\n \"body_text\" : \"9il74s53fslhywds47vnvdi9idyrfevdyxtyxn5vkr1z43tgzgxkbc57xkp2yfjusmi7m27rusnrhz91el8xb4023stwd3gt40u\",\n \"assignees\" : [ {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Ivory Rolfson\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"m8q1g178xhyem35nr3agtklazngm56oeldt33kzu3utgiikeu14rdgaitny3mjq9pl4ywp89jq5lxj5qtbtc0q84ch9dsp7gzb8fbzumhrq4vmwrvb1hcgsjg97enfh82d91ou6svv6tooe58fkh3y4kcr9ojdrkf56vv3nlff7hwxyz1d\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n } ],\n \"created_at\" : \"2011-04-22T13:33:48Z\",\n \"body\" : \"I'm having a problem with this.\",\n \"repository\" : {\n \"allow_forking\" : true,\n \"anonymous_access_enabled\" : false,\n \"is_template\" : true,\n \"stargazers_count\" : 80,\n \"pushed_at\" : \"2011-01-26T19:06:43Z\",\n \"language\" : \"ijxrftn3kj89byzppyweb3lf5l8j2bn958ahpq30s07j2nu7q6df34l3wgn6m37gmk6fvtogrto8ecb8djn6sls7hc6rp4i0yfb89l6dz3ayif14468yiydvojw3nqdpxqpcdj40ew\",\n \"subscription_url\" : \"http://api.github.com/repos/octocat/Hello-World/subscription\",\n \"branches_url\" : \"http://api.github.com/repos/octocat/Hello-World/branches{/branch}\",\n \"allow_rebase_merge\" : true,\n \"issue_comment_url\" : \"http://api.github.com/repos/octocat/Hello-World/issues/comments{/number}\",\n \"labels_url\" : \"http://api.github.com/repos/octocat/Hello-World/labels{/name}\",\n \"permissions\" : {\n \"pull\" : true,\n \"maintain\" : true,\n \"admin\" : false,\n \"triage\" : true,\n \"push\" : false\n },\n \"subscribers_url\" : \"http://api.github.com/repos/octocat/Hello-World/subscribers\",\n \"releases_url\" : \"http://api.github.com/repos/octocat/Hello-World/releases{/id}\",\n \"svn_url\" : \"https://svn.github.com/octocat/Hello-World\",\n \"subscribers_count\" : 731964751625466210,\n \"id\" : 42,\n \"master_branch\" : \"wpvut98jpv6jmuc7hbpplwdeadsofy8iwbh94ks5hwiqtc3p7yrrv8f4fwh2duj168zfkmd5w55ger7mu25q5i4z1dvh20mtiovn8gbvaf7ykitn9n7wtlk6sw7indso1b96x2y5bwtedmmoopq30uvj05wzsxbs9pd27me9faa667ohfo5b54pcqg\",\n \"forks\" : 3754909395655686463,\n \"allow_merge_commit\" : true,\n \"archive_url\" : \"http://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref}\",\n \"git_refs_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/refs{/sha}\",\n \"forks_url\" : \"http://api.github.com/repos/octocat/Hello-World/forks\",\n \"visibility\" : \"9narkpr4yzs18e55zjdye8gwfh514j11b8ei5ds70cd3ige1q35n602c88mi7n30hoz1m9b48wpp6c1\",\n \"statuses_url\" : \"http://api.github.com/repos/octocat/Hello-World/statuses/{sha}\",\n \"network_count\" : 2303451284823952493,\n \"ssh_url\" : \"git@github.com:octocat/Hello-World.git\",\n \"license\" : {\n \"html_url\" : \"https://web.example.mocklab.io/231486\",\n \"name\" : \"MIT License\",\n \"spdx_id\" : \"MIT\",\n \"key\" : \"mit\",\n \"url\" : \"https://api.github.com/licenses/mit\",\n \"node_id\" : \"MDc6TGljZW5zZW1pdA==\"\n },\n \"full_name\" : \"octocat/Hello-World\",\n \"size\" : 108,\n \"template_repository\" : {\n \"anonymous_access_enabled\" : true,\n \"is_template\" : false,\n \"stargazers_count\" : 9030205626608593293,\n \"pushed_at\" : \"uuvobtlo5f38smuli53rwlojun32sjxkgyoz3mpe3q9znqe3fwn1gico84lzr5ykhawx8nzoyrkuoz2bua0o6oqhtt965l2mmz7zc39xh16xt4fuubapnbxakamr7cwzudhsx72r564xb9rozzwm501apv26n9k\",\n \"language\" : \"iirn2h3gotvegglck3or6482ctk955yuhclb4fzkn6pmgawmq7dku2u0xlsah0lmu547nfblir8uzjoy882fhapgnv4yu1fqa3ja2iee53avf9022htoumdizystfc684cr53kwyf6509q0bpfiuzimzj2bmn00t8bnrdth3csqmtnou85rdb04panvx8zvyzc4d449g\",\n \"subscription_url\" : \"https://web.example.mocklab.io/514967\",\n \"branches_url\" : \"https://web.example.mocklab.io/851895\",\n \"allow_rebase_merge\" : true,\n \"issue_comment_url\" : \"https://web.example.mocklab.io/572564\",\n \"labels_url\" : \"https://web.example.mocklab.io/579123\",\n \"permissions\" : { },\n \"subscribers_url\" : \"https://web.example.mocklab.io/901991\",\n \"releases_url\" : \"https://web.example.mocklab.io/283289\",\n \"svn_url\" : \"https://web.example.mocklab.io/550054\",\n \"subscribers_count\" : 5899813817611982390,\n \"id\" : 6821128893860700167,\n \"allow_merge_commit\" : true,\n \"archive_url\" : \"https://web.example.mocklab.io/713077\",\n \"git_refs_url\" : \"https://web.example.mocklab.io/466131\",\n \"forks_url\" : \"https://web.example.mocklab.io/603862\",\n \"visibility\" : \"5rwwct84zaron5ho1mhk62jn2osh8zz6tkce2rcfd9419z1x201g3q3wmzhiuarrk7gdcdpxcbmw33ybo87wqj6a8l9pa8efyjmz6z\",\n \"statuses_url\" : \"https://web.example.mocklab.io/272749\",\n \"network_count\" : 3754607061483366693,\n \"ssh_url\" : \"https://web.example.mocklab.io/379199\",\n \"full_name\" : \"Ms. Christin Goodwin\",\n \"size\" : 2969074966289991044,\n \"languages_url\" : \"https://web.example.mocklab.io/508986\",\n \"clone_url\" : \"https://web.example.mocklab.io/835984\",\n \"collaborators_url\" : \"https://web.example.mocklab.io/297590\",\n \"html_url\" : \"https://web.example.mocklab.io/739402\",\n \"name\" : \"Holley Morissette\",\n \"pulls_url\" : \"https://web.example.mocklab.io/323803\",\n \"default_branch\" : \"qxsgbf6zc4997iajrfn3p5oa9emf2feekgrmikegus2q5to3hsqn1h0nvrgshb9y34nxysr7hmuwwstbdjzyk5b10j6w0d1r1ksw9fytdtkvwedzv04zhbegcipfv5yrjku0\",\n \"hooks_url\" : \"https://web.example.mocklab.io/812437\",\n \"trees_url\" : \"https://web.example.mocklab.io/421575\",\n \"tags_url\" : \"https://web.example.mocklab.io/511494\",\n \"contributors_url\" : \"https://web.example.mocklab.io/571249\",\n \"private\" : true,\n \"has_downloads\" : false,\n \"notifications_url\" : \"https://web.example.mocklab.io/641325\",\n \"open_issues_count\" : 857528720279420893,\n \"created_at\" : \"062hvsd4axaatazr4evg0gpswzn9n96gufsfrn1j8tmy74xfz52th9oj4kw5\",\n \"description\" : \"Eaque ipsam qui quis qui. Placeat aut corporis error corporis possimus. Rerum libero sequi repellat minus minus eius voluptatibus.\",\n \"deployments_url\" : \"https://web.example.mocklab.io/407054\",\n \"keys_url\" : \"https://web.example.mocklab.io/297822\",\n \"has_projects\" : true,\n \"archived\" : true,\n \"has_wiki\" : true,\n \"updated_at\" : \"2023-03-16T08:54:58.686854Z\",\n \"comments_url\" : \"https://web.example.mocklab.io/928775\",\n \"stargazers_url\" : \"https://web.example.mocklab.io/039419\",\n \"disabled\" : false,\n \"delete_branch_on_merge\" : false,\n \"git_url\" : \"https://web.example.mocklab.io/334404\",\n \"has_pages\" : false,\n \"owner\" : { },\n \"allow_squash_merge\" : true,\n \"commits_url\" : \"https://web.example.mocklab.io/009541\",\n \"compare_url\" : \"https://web.example.mocklab.io/319920\",\n \"git_commits_url\" : \"https://web.example.mocklab.io/781096\",\n \"topics\" : [ \"6zb3eskx6sjoocaq6g3y5tw37itukciies0clfzcl02f9eirao0tms92n89uq8xiw8b\", \"s0kf5lg8w5pszugmemb0kn0rr\", \"u5n5y1cxv1ax0l9zwdipn\", \"v9ng2uo3p1wnxy2czao8s0ctlet9ca5tazscojbd844gg2tmv15yly21649e7ipnosuidr7n82urxjb9o71psywfybmddt5p9ydq3wzew69em1zyji7bx\", \"tyh124wh0rwnqpqb8o53jubreahq1qlodunf1zoohljas2x6kopmhf98es8odi52uu59oe5xc0zsbe7lux1dwe6q5d9a3mhy\", \"f2adqnvoh3hzyzv5zvpgormdx8bpyswrebfe1vqak3qsgc7fr4vagxymz3x0om2ulfcobs08i33lsso07supszbot5wq4lqy2qq2u4tf17acwjg0il96kdtjn52vgyn0g\" ],\n \"blobs_url\" : \"https://web.example.mocklab.io/405606\",\n \"git_tags_url\" : \"https://web.example.mocklab.io/061100\",\n \"merges_url\" : \"https://web.example.mocklab.io/667069\",\n \"downloads_url\" : \"https://web.example.mocklab.io/770211\",\n \"has_issues\" : true,\n \"url\" : \"https://web.example.mocklab.io/647651\",\n \"contents_url\" : \"https://web.example.mocklab.io/419275\",\n \"mirror_url\" : \"https://web.example.mocklab.io/016174\",\n \"milestones_url\" : \"https://web.example.mocklab.io/483213\",\n \"teams_url\" : \"https://web.example.mocklab.io/764763\",\n \"fork\" : false,\n \"issues_url\" : \"https://web.example.mocklab.io/750848\",\n \"events_url\" : \"https://web.example.mocklab.io/848651\",\n \"issue_events_url\" : \"https://web.example.mocklab.io/538220\",\n \"assignees_url\" : \"https://web.example.mocklab.io/147017\",\n \"watchers_count\" : 7663975938292062986,\n \"forks_count\" : 1102153192684793058,\n \"homepage\" : \"5gszvjq2ons29l179t7sp3odvg3l5cwtebr5l2drmhuep3nhq2qca4gkhv2tx1opwwp0bipyhdefr26zlj6jff0c6\",\n \"node_id\" : \"7e80\"\n },\n \"languages_url\" : \"http://api.github.com/repos/octocat/Hello-World/languages\",\n \"clone_url\" : \"https://github.com/octocat/Hello-World.git\",\n \"collaborators_url\" : \"http://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator}\",\n \"html_url\" : \"https://github.com/octocat/Hello-World\",\n \"name\" : \"Team Environment\",\n \"pulls_url\" : \"http://api.github.com/repos/octocat/Hello-World/pulls{/number}\",\n \"default_branch\" : \"master\",\n \"hooks_url\" : \"http://api.github.com/repos/octocat/Hello-World/hooks\",\n \"trees_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/trees{/sha}\",\n \"tags_url\" : \"http://api.github.com/repos/octocat/Hello-World/tags\",\n \"contributors_url\" : \"http://api.github.com/repos/octocat/Hello-World/contributors\",\n \"private\" : false,\n \"has_downloads\" : true,\n \"notifications_url\" : \"http://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating}\",\n \"open_issues_count\" : 0,\n \"created_at\" : \"2011-01-26T19:01:12Z\",\n \"description\" : \"This your first repo!\",\n \"watchers\" : 463829670764888648,\n \"deployments_url\" : \"http://api.github.com/repos/octocat/Hello-World/deployments\",\n \"keys_url\" : \"http://api.github.com/repos/octocat/Hello-World/keys{/key_id}\",\n \"has_projects\" : true,\n \"archived\" : false,\n \"has_wiki\" : true,\n \"updated_at\" : \"2011-01-26T19:14:43Z\",\n \"comments_url\" : \"http://api.github.com/repos/octocat/Hello-World/comments{/number}\",\n \"stargazers_url\" : \"http://api.github.com/repos/octocat/Hello-World/stargazers\",\n \"disabled\" : true,\n \"delete_branch_on_merge\" : false,\n \"git_url\" : \"git:github.com/octocat/Hello-World.git\",\n \"has_pages\" : true,\n \"owner\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Antwan McCullough Jr.\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"fgj6d9oz63vwt657k1afamjwg24xtoa0uqx119oc2bq\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"allow_squash_merge\" : true,\n \"commits_url\" : \"http://api.github.com/repos/octocat/Hello-World/commits{/sha}\",\n \"compare_url\" : \"http://api.github.com/repos/octocat/Hello-World/compare/{base}...{head}\",\n \"git_commits_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/commits{/sha}\",\n \"topics\" : [ \"46l1j409fc0zk3o5bnrz8m8zee1beuou8gz6ematvfvlxnm2sonb8slsx9pemrcevsat8nsdnjdkt7l96m7hklx8z6mq3gc9l9rjrnbi4a6c01um6tex8nvj3lvgt7zl7wiecw68tupm638dnylokbgyaz6jcd1p5nfu05g8yz7y7yjjq\", \"vb7wvj1bebpqksl2qstsxhmdnvbnlavdluie9quh51dps06o59ufr06gf0jzbapc6ihqj493xhqjkufpraomfk65d4xlzbthrcbd923j0nklx7qfd50alnmijef8edt4euxb3nnuqk2zjbg4u092kefwpbj9gka5yefvduds6v5cjh6ae2lqlpv\" ],\n \"blobs_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/blobs{/sha}\",\n \"git_tags_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/tags{/sha}\",\n \"merges_url\" : \"http://api.github.com/repos/octocat/Hello-World/merges\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:42Z\\\"\",\n \"downloads_url\" : \"http://api.github.com/repos/octocat/Hello-World/downloads\",\n \"has_issues\" : true,\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World\",\n \"contents_url\" : \"http://api.github.com/repos/octocat/Hello-World/contents/{+path}\",\n \"mirror_url\" : \"git:git.example.com/octocat/Hello-World\",\n \"milestones_url\" : \"http://api.github.com/repos/octocat/Hello-World/milestones{/number}\",\n \"teams_url\" : \"http://api.github.com/repos/octocat/Hello-World/teams\",\n \"fork\" : false,\n \"issues_url\" : \"http://api.github.com/repos/octocat/Hello-World/issues{/number}\",\n \"events_url\" : \"http://api.github.com/repos/octocat/Hello-World/events\",\n \"issue_events_url\" : \"http://api.github.com/repos/octocat/Hello-World/issues/events{/number}\",\n \"organization\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Olivia Strosin\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"q2y48p6y8fcdy2qabiog7vj3k1erazt75k0n8bw4tspryl6qljlunecco0jr81tg0d622nat6vui6y4clhdips8x6yv90f9tptcklk4zu1hp3i3t102rtp22aaxyzi5qd1ueezjczj9ww8kt9lqaunfz0s7xbpol3fsifknyf6xwleir3bvmw0brfk0zu53pltq37\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"assignees_url\" : \"http://api.github.com/repos/octocat/Hello-World/assignees{/user}\",\n \"open_issues\" : 7849863915034209014,\n \"watchers_count\" : 80,\n \"forks_count\" : 9,\n \"homepage\" : \"https://github.com\",\n \"node_id\" : \"MDEwOlJlcG9zaXRvcnkxMjk2MjY5\"\n },\n \"title\" : \"Found a bug\",\n \"author_association\" : \"OWNER\",\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347/labels{/name}\",\n \"number\" : 1347,\n \"performed_via_github_app\" : {\n \"owner\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Prince Kilback\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"qnasm8bkjhjzfzv9fz3y7zza2yw0wbb9pyjc2h0a8owee4d1lxadimrpvmgv3d5xjpskj8wnbmjlqk4651agxx42vgt25cmw2voz4w88y59m00opvnb3i8otz1tefwe7xd77mzk2\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"installations_count\" : 5,\n \"created_at\" : \"2017-07-08T16:18:44-04:00\",\n \"description\" : \"The description of the app.\",\n \"client_id\" : \"\\\"Iv1.25b5d1e65ffc4022\\\"\",\n \"external_url\" : \"https://example.com\",\n \"updated_at\" : \"2017-07-08T16:18:44-04:00\",\n \"permissions\" : {\n \"deployments\" : \"write\",\n \"issues\" : \"read\"\n },\n \"html_url\" : \"https://github.com/apps/super-ci\",\n \"name\" : \"Probot Owners\",\n \"pem\" : \"\\\"-----BEGIN RSA PRIVATE KEY-----\\\\nMIIEogIBAAKCAQEArYxrNYD/iT5CZVpRJu4rBKmmze3PVmT/gCo2ATUvDvZTPTey\\\\nxcGJ3vvrJXazKk06pN05TN29o98jrYz4cengG3YGsXPNEpKsIrEl8NhbnxapEnM9\\\\nJCMRe0P5JcPsfZlX6hmiT7136GRWiGOUba2X9+HKh8QJVLG5rM007TBER9/z9mWm\\\\nrJuNh+m5l320oBQY/Qq3A7wzdEfZw8qm/mIN0FCeoXH1L6B8xXWaAYBwhTEh6SSn\\\\nZHlO1Xu1JWDmAvBCi0RO5aRSKM8q9QEkvvHP4yweAtK3N8+aAbZ7ovaDhyGz8r6r\\\\nzhU1b8Uo0Z2ysf503WqzQgIajr7Fry7/kUwpgQIDAQABAoIBADwJp80Ko1xHPZDy\\\\nfcCKBDfIuPvkmSW6KumbsLMaQv1aGdHDwwTGv3t0ixSay8CGlxMRtRDyZPib6SvQ\\\\n6OH/lpfpbMdW2ErkksgtoIKBVrDilfrcAvrNZu7NxRNbhCSvN8q0s4ICecjbbVQh\\\\nnueSdlA6vGXbW58BHMq68uRbHkP+k+mM9U0mDJ1HMch67wlg5GbayVRt63H7R2+r\\\\nVxcna7B80J/lCEjIYZznawgiTvp3MSanTglqAYi+m1EcSsP14bJIB9vgaxS79kTu\\\\noiSo93leJbBvuGo8QEiUqTwMw4tDksmkLsoqNKQ1q9P7LZ9DGcujtPy4EZsamSJT\\\\ny8OJt0ECgYEA2lxOxJsQk2kI325JgKFjo92mQeUObIvPfSNWUIZQDTjniOI6Gv63\\\\nGLWVFrZcvQBWjMEQraJA9xjPbblV8PtfO87MiJGLWCHFxmPz2dzoedN+2Coxom8m\\\\nV95CLz8QUShuao6u/RYcvUaZEoYs5bHcTmy5sBK80JyEmafJPtCQVxMCgYEAy3ar\\\\nZr3yv4xRPEPMat4rseswmuMooSaK3SKub19WFI5IAtB/e7qR1Rj9JhOGcZz+OQrl\\\\nT78O2OFYlgOIkJPvRMrPpK5V9lslc7tz1FSh3BZMRGq5jSyD7ETSOQ0c8T2O/s7v\\\\nbeEPbVbDe4mwvM24XByH0GnWveVxaDl51ABD65sCgYB3ZAspUkOA5egVCh8kNpnd\\\\nSd6SnuQBE3ySRlT2WEnCwP9Ph6oPgn+oAfiPX4xbRqkL8q/k0BdHQ4h+zNwhk7+h\\\\nWtPYRAP1Xxnc/F+jGjb+DVaIaKGU18MWPg7f+FI6nampl3Q0KvfxwX0GdNhtio8T\\\\nTj1E+SnFwh56SRQuxSh2gwKBgHKjlIO5NtNSflsUYFM+hyQiPiqnHzddfhSG+/3o\\\\nm5nNaSmczJesUYreH5San7/YEy2UxAugvP7aSY2MxB+iGsiJ9WD2kZzTUlDZJ7RV\\\\nUzWsoqBR+eZfVJ2FUWWvy8TpSG6trh4dFxImNtKejCR1TREpSiTV3Zb1dmahK9GV\\\\nrK9NAoGAbBxRLoC01xfxCTgt5BDiBcFVh4fp5yYKwavJPLzHSpuDOrrI9jDn1oKN\\\\nonq5sDU1i391zfQvdrbX4Ova48BN+B7p63FocP/MK5tyyBoT8zQEk2+vWDOw7H/Z\\\\nu5dTCPxTIsoIwUw1I+7yIxqJzLPFgR2gVBwY1ra/8iAqCj+zeBw=\\\\n-----END RSA PRIVATE KEY-----\\\\n\\\"\",\n \"webhook_secret\" : \"\\\"6fba8f2fc8a7e8f2cca5577eddd82ca7586b3b6b\\\"\",\n \"client_secret\" : \"\\\"1d4b2097ac622ba702d19de498f005747a8b21d3\\\"\",\n \"id\" : 37,\n \"events\" : [ \"label\", \"deployment\" ],\n \"slug\" : \"probot-owners\",\n \"node_id\" : \"MDExOkludGVncmF0aW9uMQ==\"\n },\n \"updated_at\" : \"2011-04-22T13:33:48Z\",\n \"comments_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347/comments\",\n \"active_lock_reason\" : \"too heated\",\n \"id\" : 1,\n \"repository_url\" : \"https://api.github.com/repos/octocat/Hello-World\",\n \"state\" : \"open\",\n \"locked\" : true,\n \"timeline_url\" : \"https://web.example.mocklab.io/878573\",\n \"pull_request\" : {\n \"patch_url\" : \"https://web.example.mocklab.io/691057\",\n \"html_url\" : \"https://web.example.mocklab.io/384645\",\n \"merged_at\" : \"2022-06-01T07:23:09.689Z\",\n \"diff_url\" : \"https://web.example.mocklab.io/016636\",\n \"url\" : \"https://web.example.mocklab.io/358019\"\n },\n \"closed_at\" : \"2023-06-03T02:19:10.689Z\",\n \"comments\" : 0,\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347\",\n \"labels\" : [ {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n }, {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n }, {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n }, {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n }, {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n }, {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n } ],\n \"milestone\" : {\n \"creator\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Darell Koepp DDS\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"grt49l4lh75bjhd488o\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"closed_at\" : \"2013-02-12T13:22:01Z\",\n \"created_at\" : \"2011-04-10T20:09:31Z\",\n \"description\" : \"Tracking milestone for version 1.0\",\n \"closed_issues\" : 8,\n \"title\" : \"v1.0\",\n \"due_on\" : \"2012-10-09T23:39:01Z\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones/1\",\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones/1/labels\",\n \"number\" : 42,\n \"updated_at\" : \"2014-03-03T18:58:10Z\",\n \"html_url\" : \"https://github.com/octocat/Hello-World/milestones/v1.0\",\n \"id\" : 1002604,\n \"state\" : \"open\",\n \"open_issues\" : 4,\n \"node_id\" : \"MDk6TWlsZXN0b25lMTAwMjYwNA==\"\n },\n \"events_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347/events\",\n \"html_url\" : \"https://github.com/octocat/Hello-World/issues/1347\",\n \"assignee\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Maynard Torp\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"jvdfhf6w6lfcscpl51jhmc39r7d7ysybpb5epmq4w64or4tym0hee9v44pk40x6q9im6o7rroruzdy7l2gqu56n019f1n5vwmooz9ke23s7biivwhch14tdafga6jms9c\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"user\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"elaine.stehr\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"tufd42bq6k1t2i4e4qshrhtsbopqrm62c8pfcwgajzxm85wpgwdfn94cnc0vngquqe83hr0gjo7ug79jgs6haxwl94fiwm1g6dccgstc8n45y6ihqbq0qs9\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"node_id\" : \"MDU6SXNzdWUx\"\n },\n \"action\" : \"f6cmt43qinpbdmhw32ao3e64dqwqyik335tf1dtak25nca72ivbwo5ym5w2j89n6jty8vztfrn69rh\",\n \"comment\" : {\n \"issue_url\" : \"https://web.example.mocklab.io/016719\",\n \"body_html\" : \"w4bdc8gg8lx00nz31umn86eyet6c9zt6q37ivimc9bewy6zpoqu26t8k5a6xfaq4kcj9lkwo\",\n \"body_text\" : \"um6xadznwlwjjj5uueka3bmkwhiotyfry9afsejhtbek1a0z4no7dd3md1go6ma0j13h1lg4u4ntawdhko\",\n \"created_at\" : \"2011-04-14T16:00:49Z\",\n \"body\" : \"What version of Safari were you using when you observed this bug?\",\n \"url\" : \"https://api.github.com/repositories/42/issues/comments/1\",\n \"author_association\" : \"OWNER\",\n \"performed_via_github_app\" : {\n \"owner\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Aleshia Goodwin\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"zxldk1wse0r4s7of0vzpkrcubp3txp6lgaism22n4fy4xzwvg8xci0qfqlx28yogt92f5pi49ohvraepd68m31c0yky7js7j3apk9yz5hv7f4kyymfs68fp0s1sjq3ybtorx6di4hiepbddhp3wpz42nce4o1f2yp4vz9e6d5ec90pnag767mqyapni090yi\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"installations_count\" : 5,\n \"created_at\" : \"2017-07-08T16:18:44-04:00\",\n \"description\" : \"The description of the app.\",\n \"client_id\" : \"\\\"Iv1.25b5d1e65ffc4022\\\"\",\n \"external_url\" : \"https://example.com\",\n \"updated_at\" : \"2017-07-08T16:18:44-04:00\",\n \"permissions\" : {\n \"deployments\" : \"write\",\n \"issues\" : \"read\"\n },\n \"html_url\" : \"https://github.com/apps/super-ci\",\n \"name\" : \"Probot Owners\",\n \"pem\" : \"\\\"-----BEGIN RSA PRIVATE KEY-----\\\\nMIIEogIBAAKCAQEArYxrNYD/iT5CZVpRJu4rBKmmze3PVmT/gCo2ATUvDvZTPTey\\\\nxcGJ3vvrJXazKk06pN05TN29o98jrYz4cengG3YGsXPNEpKsIrEl8NhbnxapEnM9\\\\nJCMRe0P5JcPsfZlX6hmiT7136GRWiGOUba2X9+HKh8QJVLG5rM007TBER9/z9mWm\\\\nrJuNh+m5l320oBQY/Qq3A7wzdEfZw8qm/mIN0FCeoXH1L6B8xXWaAYBwhTEh6SSn\\\\nZHlO1Xu1JWDmAvBCi0RO5aRSKM8q9QEkvvHP4yweAtK3N8+aAbZ7ovaDhyGz8r6r\\\\nzhU1b8Uo0Z2ysf503WqzQgIajr7Fry7/kUwpgQIDAQABAoIBADwJp80Ko1xHPZDy\\\\nfcCKBDfIuPvkmSW6KumbsLMaQv1aGdHDwwTGv3t0ixSay8CGlxMRtRDyZPib6SvQ\\\\n6OH/lpfpbMdW2ErkksgtoIKBVrDilfrcAvrNZu7NxRNbhCSvN8q0s4ICecjbbVQh\\\\nnueSdlA6vGXbW58BHMq68uRbHkP+k+mM9U0mDJ1HMch67wlg5GbayVRt63H7R2+r\\\\nVxcna7B80J/lCEjIYZznawgiTvp3MSanTglqAYi+m1EcSsP14bJIB9vgaxS79kTu\\\\noiSo93leJbBvuGo8QEiUqTwMw4tDksmkLsoqNKQ1q9P7LZ9DGcujtPy4EZsamSJT\\\\ny8OJt0ECgYEA2lxOxJsQk2kI325JgKFjo92mQeUObIvPfSNWUIZQDTjniOI6Gv63\\\\nGLWVFrZcvQBWjMEQraJA9xjPbblV8PtfO87MiJGLWCHFxmPz2dzoedN+2Coxom8m\\\\nV95CLz8QUShuao6u/RYcvUaZEoYs5bHcTmy5sBK80JyEmafJPtCQVxMCgYEAy3ar\\\\nZr3yv4xRPEPMat4rseswmuMooSaK3SKub19WFI5IAtB/e7qR1Rj9JhOGcZz+OQrl\\\\nT78O2OFYlgOIkJPvRMrPpK5V9lslc7tz1FSh3BZMRGq5jSyD7ETSOQ0c8T2O/s7v\\\\nbeEPbVbDe4mwvM24XByH0GnWveVxaDl51ABD65sCgYB3ZAspUkOA5egVCh8kNpnd\\\\nSd6SnuQBE3ySRlT2WEnCwP9Ph6oPgn+oAfiPX4xbRqkL8q/k0BdHQ4h+zNwhk7+h\\\\nWtPYRAP1Xxnc/F+jGjb+DVaIaKGU18MWPg7f+FI6nampl3Q0KvfxwX0GdNhtio8T\\\\nTj1E+SnFwh56SRQuxSh2gwKBgHKjlIO5NtNSflsUYFM+hyQiPiqnHzddfhSG+/3o\\\\nm5nNaSmczJesUYreH5San7/YEy2UxAugvP7aSY2MxB+iGsiJ9WD2kZzTUlDZJ7RV\\\\nUzWsoqBR+eZfVJ2FUWWvy8TpSG6trh4dFxImNtKejCR1TREpSiTV3Zb1dmahK9GV\\\\nrK9NAoGAbBxRLoC01xfxCTgt5BDiBcFVh4fp5yYKwavJPLzHSpuDOrrI9jDn1oKN\\\\nonq5sDU1i391zfQvdrbX4Ova48BN+B7p63FocP/MK5tyyBoT8zQEk2+vWDOw7H/Z\\\\nu5dTCPxTIsoIwUw1I+7yIxqJzLPFgR2gVBwY1ra/8iAqCj+zeBw=\\\\n-----END RSA PRIVATE KEY-----\\\\n\\\"\",\n \"webhook_secret\" : \"\\\"6fba8f2fc8a7e8f2cca5577eddd82ca7586b3b6b\\\"\",\n \"client_secret\" : \"\\\"1d4b2097ac622ba702d19de498f005747a8b21d3\\\"\",\n \"id\" : 37,\n \"events\" : [ \"label\", \"deployment\" ],\n \"slug\" : \"probot-owners\",\n \"node_id\" : \"MDExOkludGVncmF0aW9uMQ==\"\n },\n \"updated_at\" : \"2011-04-14T16:00:49Z\",\n \"html_url\" : \"https://web.example.mocklab.io/113420\",\n \"reactions\" : {\n \"confused\" : 4049432861936655157,\n \"-1\" : 1355681244145752717,\n \"+1\" : 6985515142662128641,\n \"total_count\" : 5522204539261481144,\n \"rocket\" : 7713021515935488534,\n \"hooray\" : 916837920146160131,\n \"eyes\" : 6273320210969090215,\n \"heart\" : 6073915566940353888,\n \"laugh\" : 6013637182715610182,\n \"url\" : \"https://web.example.mocklab.io/057033\"\n },\n \"id\" : 42,\n \"user\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"coy.morissette\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"896jrhvpl5kg7vfbr11q47adjb7xmneey85rh5y1039koeezs27lfxcag8bpe23dbsgj9fnyt481o922fy432v3vh1nkf9eo9cjrgt4nnad3zumi8kb8dkiidntr6szvrmq05usp6zvzjt90s2s6e8vo08fgf925pxa910ik\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"node_id\" : \"7d8g\"\n }\n },\n \"repo\" : {\n \"name\" : \"Alma Mayer\",\n \"id\" : 6486220789311933506,\n \"url\" : \"https://web.example.mocklab.io/184685\"\n },\n \"created_at\" : \"2022-05-16T13:44:11.69Z\",\n \"id\" : \"uash\",\n \"type\" : \"u8i6j3fs3p4we0690wuvluifa6lfs7va1mcdxx49aq5x8pbtkwyl0d1ztmhkhk4iwupzeim6lmefi9otu9p0wp2yynyvojcgn40cdxg3idlomo0urhs83oyxjdp4ggs1lw1wav370vo6ybt80ag5jgxnzo5nlx30ruw7uizius2vigw2\"\n}, {\n \"actor\" : {\n \"display_login\" : \"v9mpx8scjnj3z3r610udv2vs14pzdf3f6dceangj2dt9s2oezs5f62mfs9sdq8w888gzhka292ucxr96pi743phz1nwj5yascte04y4\",\n \"avatar_url\" : \"https://s3.amazonaws.com/uifaces/faces/twitter/danthms/128.jpg\",\n \"id\" : 636134257769995911,\n \"login\" : \"y0gvvj4uk5z09lpkklqrhax456wqep6qivg5olleoastid83394mvvl2vtd6mops09k3kejzzcqczo5gomf4vhwq8yo\",\n \"gravatar_id\" : \"b6ur\",\n \"url\" : \"https://web.example.mocklab.io/517819\"\n },\n \"public\" : true,\n \"org\" : {\n \"display_login\" : \"h5uyfeotbcscn6w44s70ytf9vm6xn6nmo6rxmg3wk1yql23f21v55pxpm2r2itjn5x7gnbednmzznzz03fle47xjjw3\",\n \"avatar_url\" : \"https://s3.amazonaws.com/uifaces/faces/twitter/cbracco/128.jpg\",\n \"id\" : 8647364357702144544,\n \"login\" : \"f4dllqbrid7lj5r95uydzewrqic6rlzhjmkh6pt3pf36mvinygsc2gsrze113gdt69ob7fwrstub400a34ui12l9dwngepwdbvdr2nj4z8on3pakt5l5i1eupd5hen11y99epi72g9wiu9r3r92ggw7\",\n \"gravatar_id\" : \"jg7i\",\n \"url\" : \"https://web.example.mocklab.io/085811\"\n },\n \"payload\" : {\n \"pages\" : [ {\n \"summary\" : \"Vitae corrupti temporibus aut sit quia. Eum ut omnis. Assumenda quis facere recusandae numquam in animi quos. Consequatur qui consequuntur.\",\n \"html_url\" : \"https://web.example.mocklab.io/540490\",\n \"page_name\" : \"Ms. German Leannon\",\n \"action\" : \"5o061zp9rbkqrzzf402bldulq6lumijcuu7e2tepk9awpswc45uq6xmz0fwfsw0trv96c1bhe8bgg0lq67zttyd6gtpgimzl3kbhqjohiwtjda36rj6ofehocrx9zmi1wk8h9npuygstcczi5sie8af4a6zo4yfc5vw7l8tyc8m\",\n \"title\" : \"Dolores sunt qui et assumenda.\",\n \"sha\" : \"8mhlyh8pu2cp17f8l38dsf4249a3vg4o6egdscxgxwugmdpc0ni\"\n }, {\n \"summary\" : \"Nemo harum rerum amet. Molestiae sunt numquam tempora. Odio nihil quibusdam sed consequuntur consequuntur maxime. Quia ut animi.\",\n \"html_url\" : \"https://web.example.mocklab.io/391963\",\n \"page_name\" : \"Lemuel Breitenberg III\",\n \"action\" : \"3ca66j9nrgflalh61b44ql9by1mc9q96a2r2io8j9rll99u99qgi210gwpnrrqdwjf3z7wdnvud72mn3cn2g4bs16gqloyf6eh8t098mod2zddwboxeolwlm2u98osnt3uo0dnrtra8\",\n \"title\" : \"Neque dolore aut eum quia ea.\",\n \"sha\" : \"eozbd22cwkhn5fvuw9v5w72o\"\n }, {\n \"summary\" : \"Optio cum cupiditate. Inventore ullam fugiat quibusdam quas consequatur et. Et repellendus at quo. Pariatur dolor aliquam vero. Aliquam cumque eum tempora rerum et cumque deleniti.\",\n \"html_url\" : \"https://web.example.mocklab.io/274082\",\n \"page_name\" : \"Mr. Thomas Maggio\",\n \"action\" : \"ga2fiw2roncx9opuis1p4nh7\",\n \"title\" : \"Ut nihil distinctio eos eligendi.\",\n \"sha\" : \"xt404aqdmg6antwma7o2ahn6tlgvojk89p1juaxw40w3yjcad9mv40x1z7p7xfulzzs29ftjgeyu2nywvy3dotfuaxch00o53g\"\n }, {\n \"summary\" : \"Nisi consequuntur et fugit iste. Ea aut voluptatem cum sint ipsam. Sit hic qui rerum molestiae beatae delectus quia. Ut mollitia nobis fuga ut.\",\n \"html_url\" : \"https://web.example.mocklab.io/415729\",\n \"page_name\" : \"Mr. Julie Gleichner\",\n \"action\" : \"m127lfc24ev7uh4mazzbs6ebrpvivlzsc1f994oafdv6nlwxrfcweh7i7u0weu49qz98qdr2lx63aqb58itd71wji0hemdux9peohm0i\",\n \"title\" : \"Consequuntur aut voluptatem sed dignissimos iste.\",\n \"sha\" : \"mudsykpffqj77n1wu05rhcoyx2neiy62gzho953aboj39l3rhl1p079h56kfd9u\"\n } ],\n \"issue\" : {\n \"body_html\" : \"d7tgz768wtlh1vsn1thitmgzyhxss2govolrd74yorlckd62kqtt4pxxb16xgt5ecpi5nmlezpkzmevm0wl3phv2x7jephvz8565o44qqp114yz1c052n1gq1p291bib9ar4z4dqku6mayald6xduuip62dtr9bfuyy8y2c\",\n \"body_text\" : \"iciy323p25r4qei9as3yciqdelv175utmc4ogr5zw87zk9nw2f4rhoxcqzs3rxmwzml31f1rza273kfx1mezqz89m349u8aklrt1pmbz5da0yvq\",\n \"assignees\" : [ {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Chiquita Harber\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"o65y87fm4vec39ukcogcv8p5549mzph99rpkrfvd97hvx9utm7ctlorenmey1o2fbafw9n0lp3olbff5j2yxbaeh1h5fw2750rtf14zawqzakysin21nebbcdspdonia\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n }, {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Jeremy Gibson\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"znbsrru7n3an0377t6kqumi4xoi6692c2c4yw3cs9yrzmn8k0wjcw0lv540w3rkducaqsg5n0hivscqqu8tw7k5kgvmrrw3l34t5j0p2\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n }, {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Leonard Hayes\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"y362izizdcu87k1b98a1lc5v637m7wwja573j91yw9wnvvfwm73c83soqvymru3x5ltp2ee26pgdwuoz5aaj2ce3wgvfpsa6fjr5u4bqxr5qp7mf8kgy9rslhtgxy9w29zys56x6ocjubtm1t21txpstkvlbi5fq6wh8tsxfs7z428ogfn8f88gb9xunxs2liita\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n } ],\n \"created_at\" : \"2011-04-22T13:33:48Z\",\n \"body\" : \"I'm having a problem with this.\",\n \"repository\" : {\n \"allow_forking\" : false,\n \"anonymous_access_enabled\" : true,\n \"is_template\" : true,\n \"stargazers_count\" : 80,\n \"pushed_at\" : \"2011-01-26T19:06:43Z\",\n \"language\" : \"5yj8c5669iw1zhq6mubivj96xrqphjza3wugoxdddpvryq\",\n \"subscription_url\" : \"http://api.github.com/repos/octocat/Hello-World/subscription\",\n \"branches_url\" : \"http://api.github.com/repos/octocat/Hello-World/branches{/branch}\",\n \"allow_rebase_merge\" : true,\n \"issue_comment_url\" : \"http://api.github.com/repos/octocat/Hello-World/issues/comments{/number}\",\n \"labels_url\" : \"http://api.github.com/repos/octocat/Hello-World/labels{/name}\",\n \"permissions\" : {\n \"pull\" : false,\n \"maintain\" : true,\n \"admin\" : false,\n \"triage\" : true,\n \"push\" : false\n },\n \"subscribers_url\" : \"http://api.github.com/repos/octocat/Hello-World/subscribers\",\n \"releases_url\" : \"http://api.github.com/repos/octocat/Hello-World/releases{/id}\",\n \"svn_url\" : \"https://svn.github.com/octocat/Hello-World\",\n \"subscribers_count\" : 5904781372711009781,\n \"id\" : 42,\n \"master_branch\" : \"1yv9ytqoe3fhuxltbzadvk3uq7i9eeni1k7ksugrhxtevs6c3qamfoh65lk3hu8tlprg39r5qllt5rezkngltorbw3jw00rt4fkcq04uvib15lwivuljlekt1oe017tzwhbkhdj6p43v2e8gk42z07pz5ghom8l\",\n \"forks\" : 6361320905263592160,\n \"allow_merge_commit\" : true,\n \"archive_url\" : \"http://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref}\",\n \"git_refs_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/refs{/sha}\",\n \"forks_url\" : \"http://api.github.com/repos/octocat/Hello-World/forks\",\n \"visibility\" : \"uspwgidrcixz94yhb9\",\n \"statuses_url\" : \"http://api.github.com/repos/octocat/Hello-World/statuses/{sha}\",\n \"network_count\" : 3185984808590031820,\n \"ssh_url\" : \"git@github.com:octocat/Hello-World.git\",\n \"license\" : {\n \"html_url\" : \"https://web.example.mocklab.io/958785\",\n \"name\" : \"MIT License\",\n \"spdx_id\" : \"MIT\",\n \"key\" : \"mit\",\n \"url\" : \"https://api.github.com/licenses/mit\",\n \"node_id\" : \"MDc6TGljZW5zZW1pdA==\"\n },\n \"full_name\" : \"octocat/Hello-World\",\n \"size\" : 108,\n \"template_repository\" : {\n \"anonymous_access_enabled\" : false,\n \"is_template\" : true,\n \"stargazers_count\" : 4525299953834843515,\n \"pushed_at\" : \"koqztuq3vix5awhz7fplbrzj8lzt1f0c74sqv483c2e4izq9ddh2ssg1tkygl8gbqb6y56siqmjdj8nmtv02uw6xp95j01z4rh5f2lg341ebgq4k5lx43bgi6oqe567ksx71mp6hq0dqyztur31ikdj9qc\",\n \"language\" : \"zf4d3cepoywm61u6ieaw9r9ag66py29ryh99tg1jknidjoeckoafv3d4028q76ag9ctc7jovgys5h3ed4te\",\n \"subscription_url\" : \"https://web.example.mocklab.io/687031\",\n \"branches_url\" : \"https://web.example.mocklab.io/561470\",\n \"allow_rebase_merge\" : true,\n \"issue_comment_url\" : \"https://web.example.mocklab.io/147187\",\n \"labels_url\" : \"https://web.example.mocklab.io/795348\",\n \"permissions\" : { },\n \"subscribers_url\" : \"https://web.example.mocklab.io/167344\",\n \"releases_url\" : \"https://web.example.mocklab.io/070098\",\n \"svn_url\" : \"https://web.example.mocklab.io/722260\",\n \"subscribers_count\" : 995645565915591198,\n \"id\" : 6733017067407220505,\n \"allow_merge_commit\" : false,\n \"archive_url\" : \"https://web.example.mocklab.io/138829\",\n \"git_refs_url\" : \"https://web.example.mocklab.io/935884\",\n \"forks_url\" : \"https://web.example.mocklab.io/957835\",\n \"visibility\" : \"o3mvfqg8e2zc0me1urjnyubjq4ukc9d26xm26r3awvcibm73y2h9xtcql8sdtzfmaq0fes3c1po30rua760v6t4z1xbce8h4ki5y20kwgzvse5kwcw0xeink24f0jwm4t2wwrse7clqwic7jlao4dxohkl1p764dzc984blommwj4209e1km2qhwn1lr72\",\n \"statuses_url\" : \"https://web.example.mocklab.io/513602\",\n \"network_count\" : 2259032022035248215,\n \"ssh_url\" : \"https://web.example.mocklab.io/786895\",\n \"full_name\" : \"Jarrod Little\",\n \"size\" : 7642603248152177990,\n \"languages_url\" : \"https://web.example.mocklab.io/278093\",\n \"clone_url\" : \"https://web.example.mocklab.io/209283\",\n \"collaborators_url\" : \"https://web.example.mocklab.io/247347\",\n \"html_url\" : \"https://web.example.mocklab.io/401797\",\n \"name\" : \"Marget Hahn\",\n \"pulls_url\" : \"https://web.example.mocklab.io/125092\",\n \"default_branch\" : \"h0web3xdja9aul38ajx1ijyjuqvuyur5iojmgc0b2x2uu0ttsv65v37qg7kuc4jaqmvplwx60okrkbocunx1y8eqbxkleg53fxk08nqlxis0z9q3o0sv121ck8sy5ud2zwdvvxqc6cp69j983d9ju5a9m\",\n \"hooks_url\" : \"https://web.example.mocklab.io/956550\",\n \"trees_url\" : \"https://web.example.mocklab.io/072870\",\n \"tags_url\" : \"https://web.example.mocklab.io/135313\",\n \"contributors_url\" : \"https://web.example.mocklab.io/772660\",\n \"private\" : false,\n \"has_downloads\" : false,\n \"notifications_url\" : \"https://web.example.mocklab.io/122939\",\n \"open_issues_count\" : 4365038400978682323,\n \"created_at\" : \"wgadv7xy4q9g25vmosgsg\",\n \"description\" : \"Sunt delectus voluptas qui voluptas quidem veritatis. Sit illum aliquam commodi dolorem alias. Amet et neque est dolor. Praesentium fugit dicta doloribus esse eum repudiandae ratione.\",\n \"deployments_url\" : \"https://web.example.mocklab.io/966970\",\n \"keys_url\" : \"https://web.example.mocklab.io/276684\",\n \"has_projects\" : false,\n \"archived\" : false,\n \"has_wiki\" : true,\n \"updated_at\" : \"2022-08-25T09:16:58.694714Z\",\n \"comments_url\" : \"https://web.example.mocklab.io/027669\",\n \"stargazers_url\" : \"https://web.example.mocklab.io/079268\",\n \"disabled\" : true,\n \"delete_branch_on_merge\" : true,\n \"git_url\" : \"https://web.example.mocklab.io/595577\",\n \"has_pages\" : false,\n \"owner\" : { },\n \"allow_squash_merge\" : true,\n \"commits_url\" : \"https://web.example.mocklab.io/514352\",\n \"compare_url\" : \"https://web.example.mocklab.io/167142\",\n \"git_commits_url\" : \"https://web.example.mocklab.io/780365\",\n \"topics\" : [ \"o3qymetyf9nk0ha5vzwmfxyffli4w1smcsdlxbbh3s155vfwmqcjv\", \"n74l4cywzt6m17le5bno5f99uys08ln8htbnlov3g4mhv77hp18exs8j937dz1d0s0yt5q1yuk8qfngj6dnanlemraymoybp6aj823kf4dxk3zo5uvi9jqcnbhhehht9wxcvneej4bj3ljqbr8fqih2orgcilqcidcbn9toage8wkq3xai45r43\", \"kihfk4uyeg6yveofnuyazchncd68hngevguixf3luvom5koxcgqee34j7vgf3n30az6sf91k8g42jrydv0oz0627ucdxdxxfv5n1zzsd5ak2ydl06y5heemetgms34zq4585czrzfpmxkf2wbzfj0j\", \"jybdxaew3xstk2mo4azs9ni87183fgpgw97y83v53m902ns0fc33r8qvkmcty5llifc4bg029glfz6a0ko9bayga0yzynyr98ime4hs99nqixmlwotfz3v73ww7o6q3ffvk75f3s26tx\", \"utapjhb1wy117409gu40cov3p9985okpwpn0b6t27l0vv96xgndbj7z7sdqzm67kq9c42aghbmfda2wdlq7aqejyamhs0fz4vzpia1qzwbvx9yk7oko0d2sjy034ztl247e91wrmp0czarwp4rues3p3h4cm0911xmzryhd4bo217n0uanjwcqnfjpkxxv96\", \"vkw8paznnghg88vljtuea\" ],\n \"blobs_url\" : \"https://web.example.mocklab.io/963571\",\n \"git_tags_url\" : \"https://web.example.mocklab.io/645639\",\n \"merges_url\" : \"https://web.example.mocklab.io/597477\",\n \"downloads_url\" : \"https://web.example.mocklab.io/745227\",\n \"has_issues\" : false,\n \"url\" : \"https://web.example.mocklab.io/966810\",\n \"contents_url\" : \"https://web.example.mocklab.io/839993\",\n \"mirror_url\" : \"https://web.example.mocklab.io/838422\",\n \"milestones_url\" : \"https://web.example.mocklab.io/532308\",\n \"teams_url\" : \"https://web.example.mocklab.io/000995\",\n \"fork\" : true,\n \"issues_url\" : \"https://web.example.mocklab.io/821459\",\n \"events_url\" : \"https://web.example.mocklab.io/121968\",\n \"issue_events_url\" : \"https://web.example.mocklab.io/115852\",\n \"assignees_url\" : \"https://web.example.mocklab.io/132104\",\n \"watchers_count\" : 427411444933350500,\n \"forks_count\" : 5169627224202069233,\n \"homepage\" : \"7gyer383u2ntqxi63s9\",\n \"node_id\" : \"6i3a\"\n },\n \"languages_url\" : \"http://api.github.com/repos/octocat/Hello-World/languages\",\n \"clone_url\" : \"https://github.com/octocat/Hello-World.git\",\n \"collaborators_url\" : \"http://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator}\",\n \"html_url\" : \"https://github.com/octocat/Hello-World\",\n \"name\" : \"Team Environment\",\n \"pulls_url\" : \"http://api.github.com/repos/octocat/Hello-World/pulls{/number}\",\n \"default_branch\" : \"master\",\n \"hooks_url\" : \"http://api.github.com/repos/octocat/Hello-World/hooks\",\n \"trees_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/trees{/sha}\",\n \"tags_url\" : \"http://api.github.com/repos/octocat/Hello-World/tags\",\n \"contributors_url\" : \"http://api.github.com/repos/octocat/Hello-World/contributors\",\n \"private\" : true,\n \"has_downloads\" : true,\n \"notifications_url\" : \"http://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating}\",\n \"open_issues_count\" : 0,\n \"created_at\" : \"2011-01-26T19:01:12Z\",\n \"description\" : \"This your first repo!\",\n \"watchers\" : 28326110813705761,\n \"deployments_url\" : \"http://api.github.com/repos/octocat/Hello-World/deployments\",\n \"keys_url\" : \"http://api.github.com/repos/octocat/Hello-World/keys{/key_id}\",\n \"has_projects\" : true,\n \"archived\" : true,\n \"has_wiki\" : true,\n \"updated_at\" : \"2011-01-26T19:14:43Z\",\n \"comments_url\" : \"http://api.github.com/repos/octocat/Hello-World/comments{/number}\",\n \"stargazers_url\" : \"http://api.github.com/repos/octocat/Hello-World/stargazers\",\n \"disabled\" : true,\n \"delete_branch_on_merge\" : false,\n \"git_url\" : \"git:github.com/octocat/Hello-World.git\",\n \"has_pages\" : false,\n \"owner\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Kenneth Monahan\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"ckk29\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"allow_squash_merge\" : true,\n \"commits_url\" : \"http://api.github.com/repos/octocat/Hello-World/commits{/sha}\",\n \"compare_url\" : \"http://api.github.com/repos/octocat/Hello-World/compare/{base}...{head}\",\n \"git_commits_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/commits{/sha}\",\n \"topics\" : [ \"spr\", \"qnsj5sr\" ],\n \"blobs_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/blobs{/sha}\",\n \"git_tags_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/tags{/sha}\",\n \"merges_url\" : \"http://api.github.com/repos/octocat/Hello-World/merges\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:42Z\\\"\",\n \"downloads_url\" : \"http://api.github.com/repos/octocat/Hello-World/downloads\",\n \"has_issues\" : true,\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World\",\n \"contents_url\" : \"http://api.github.com/repos/octocat/Hello-World/contents/{+path}\",\n \"mirror_url\" : \"git:git.example.com/octocat/Hello-World\",\n \"milestones_url\" : \"http://api.github.com/repos/octocat/Hello-World/milestones{/number}\",\n \"teams_url\" : \"http://api.github.com/repos/octocat/Hello-World/teams\",\n \"fork\" : true,\n \"issues_url\" : \"http://api.github.com/repos/octocat/Hello-World/issues{/number}\",\n \"events_url\" : \"http://api.github.com/repos/octocat/Hello-World/events\",\n \"issue_events_url\" : \"http://api.github.com/repos/octocat/Hello-World/issues/events{/number}\",\n \"organization\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Mr. Troy Kulas\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"rnjrhv\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"assignees_url\" : \"http://api.github.com/repos/octocat/Hello-World/assignees{/user}\",\n \"open_issues\" : 3009825297669440916,\n \"watchers_count\" : 80,\n \"forks_count\" : 9,\n \"homepage\" : \"https://github.com\",\n \"node_id\" : \"MDEwOlJlcG9zaXRvcnkxMjk2MjY5\"\n },\n \"title\" : \"Found a bug\",\n \"author_association\" : \"OWNER\",\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347/labels{/name}\",\n \"number\" : 1347,\n \"performed_via_github_app\" : {\n \"owner\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Mrs. Rolland Stracke\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"foa8ji6elqvbv\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"installations_count\" : 5,\n \"created_at\" : \"2017-07-08T16:18:44-04:00\",\n \"description\" : \"The description of the app.\",\n \"client_id\" : \"\\\"Iv1.25b5d1e65ffc4022\\\"\",\n \"external_url\" : \"https://example.com\",\n \"updated_at\" : \"2017-07-08T16:18:44-04:00\",\n \"permissions\" : {\n \"deployments\" : \"write\",\n \"issues\" : \"read\"\n },\n \"html_url\" : \"https://github.com/apps/super-ci\",\n \"name\" : \"Probot Owners\",\n \"pem\" : \"\\\"-----BEGIN RSA PRIVATE KEY-----\\\\nMIIEogIBAAKCAQEArYxrNYD/iT5CZVpRJu4rBKmmze3PVmT/gCo2ATUvDvZTPTey\\\\nxcGJ3vvrJXazKk06pN05TN29o98jrYz4cengG3YGsXPNEpKsIrEl8NhbnxapEnM9\\\\nJCMRe0P5JcPsfZlX6hmiT7136GRWiGOUba2X9+HKh8QJVLG5rM007TBER9/z9mWm\\\\nrJuNh+m5l320oBQY/Qq3A7wzdEfZw8qm/mIN0FCeoXH1L6B8xXWaAYBwhTEh6SSn\\\\nZHlO1Xu1JWDmAvBCi0RO5aRSKM8q9QEkvvHP4yweAtK3N8+aAbZ7ovaDhyGz8r6r\\\\nzhU1b8Uo0Z2ysf503WqzQgIajr7Fry7/kUwpgQIDAQABAoIBADwJp80Ko1xHPZDy\\\\nfcCKBDfIuPvkmSW6KumbsLMaQv1aGdHDwwTGv3t0ixSay8CGlxMRtRDyZPib6SvQ\\\\n6OH/lpfpbMdW2ErkksgtoIKBVrDilfrcAvrNZu7NxRNbhCSvN8q0s4ICecjbbVQh\\\\nnueSdlA6vGXbW58BHMq68uRbHkP+k+mM9U0mDJ1HMch67wlg5GbayVRt63H7R2+r\\\\nVxcna7B80J/lCEjIYZznawgiTvp3MSanTglqAYi+m1EcSsP14bJIB9vgaxS79kTu\\\\noiSo93leJbBvuGo8QEiUqTwMw4tDksmkLsoqNKQ1q9P7LZ9DGcujtPy4EZsamSJT\\\\ny8OJt0ECgYEA2lxOxJsQk2kI325JgKFjo92mQeUObIvPfSNWUIZQDTjniOI6Gv63\\\\nGLWVFrZcvQBWjMEQraJA9xjPbblV8PtfO87MiJGLWCHFxmPz2dzoedN+2Coxom8m\\\\nV95CLz8QUShuao6u/RYcvUaZEoYs5bHcTmy5sBK80JyEmafJPtCQVxMCgYEAy3ar\\\\nZr3yv4xRPEPMat4rseswmuMooSaK3SKub19WFI5IAtB/e7qR1Rj9JhOGcZz+OQrl\\\\nT78O2OFYlgOIkJPvRMrPpK5V9lslc7tz1FSh3BZMRGq5jSyD7ETSOQ0c8T2O/s7v\\\\nbeEPbVbDe4mwvM24XByH0GnWveVxaDl51ABD65sCgYB3ZAspUkOA5egVCh8kNpnd\\\\nSd6SnuQBE3ySRlT2WEnCwP9Ph6oPgn+oAfiPX4xbRqkL8q/k0BdHQ4h+zNwhk7+h\\\\nWtPYRAP1Xxnc/F+jGjb+DVaIaKGU18MWPg7f+FI6nampl3Q0KvfxwX0GdNhtio8T\\\\nTj1E+SnFwh56SRQuxSh2gwKBgHKjlIO5NtNSflsUYFM+hyQiPiqnHzddfhSG+/3o\\\\nm5nNaSmczJesUYreH5San7/YEy2UxAugvP7aSY2MxB+iGsiJ9WD2kZzTUlDZJ7RV\\\\nUzWsoqBR+eZfVJ2FUWWvy8TpSG6trh4dFxImNtKejCR1TREpSiTV3Zb1dmahK9GV\\\\nrK9NAoGAbBxRLoC01xfxCTgt5BDiBcFVh4fp5yYKwavJPLzHSpuDOrrI9jDn1oKN\\\\nonq5sDU1i391zfQvdrbX4Ova48BN+B7p63FocP/MK5tyyBoT8zQEk2+vWDOw7H/Z\\\\nu5dTCPxTIsoIwUw1I+7yIxqJzLPFgR2gVBwY1ra/8iAqCj+zeBw=\\\\n-----END RSA PRIVATE KEY-----\\\\n\\\"\",\n \"webhook_secret\" : \"\\\"6fba8f2fc8a7e8f2cca5577eddd82ca7586b3b6b\\\"\",\n \"client_secret\" : \"\\\"1d4b2097ac622ba702d19de498f005747a8b21d3\\\"\",\n \"id\" : 37,\n \"events\" : [ \"label\", \"deployment\" ],\n \"slug\" : \"probot-owners\",\n \"node_id\" : \"MDExOkludGVncmF0aW9uMQ==\"\n },\n \"updated_at\" : \"2011-04-22T13:33:48Z\",\n \"comments_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347/comments\",\n \"active_lock_reason\" : \"too heated\",\n \"id\" : 1,\n \"repository_url\" : \"https://api.github.com/repos/octocat/Hello-World\",\n \"state\" : \"open\",\n \"locked\" : true,\n \"timeline_url\" : \"https://web.example.mocklab.io/578585\",\n \"pull_request\" : {\n \"patch_url\" : \"https://web.example.mocklab.io/466711\",\n \"html_url\" : \"https://web.example.mocklab.io/020222\",\n \"merged_at\" : \"2023-04-23T00:12:20.696Z\",\n \"diff_url\" : \"https://web.example.mocklab.io/751684\",\n \"url\" : \"https://web.example.mocklab.io/989723\"\n },\n \"closed_at\" : \"2023-06-23T22:40:47.697Z\",\n \"comments\" : 0,\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347\",\n \"labels\" : [ {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n }, {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n }, {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n }, {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n }, {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n }, {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n }, {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n } ],\n \"milestone\" : {\n \"creator\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Miss Ned Orn\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"tqiodkqawwb2m27ckylsmiulz3pjteup1725k76hv0agxqpxw7y4omh6wwrci\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"closed_at\" : \"2013-02-12T13:22:01Z\",\n \"created_at\" : \"2011-04-10T20:09:31Z\",\n \"description\" : \"Tracking milestone for version 1.0\",\n \"closed_issues\" : 8,\n \"title\" : \"v1.0\",\n \"due_on\" : \"2012-10-09T23:39:01Z\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones/1\",\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones/1/labels\",\n \"number\" : 42,\n \"updated_at\" : \"2014-03-03T18:58:10Z\",\n \"html_url\" : \"https://github.com/octocat/Hello-World/milestones/v1.0\",\n \"id\" : 1002604,\n \"state\" : \"open\",\n \"open_issues\" : 4,\n \"node_id\" : \"MDk6TWlsZXN0b25lMTAwMjYwNA==\"\n },\n \"events_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347/events\",\n \"html_url\" : \"https://github.com/octocat/Hello-World/issues/1347\",\n \"assignee\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Billi Rippin\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"p41srccarv8qa1kkkbwtho32xtjb3k5gg5zu6y7j8r34hu93txqdqg6e6eoorclzctiymer7fd2dyyi3luyilc9o0ubf91y09905dban56emgo57larbig5qv793fi1wo3qi1mvhd0nuy2szs62p5fc5il65j001oar9srevclh2a6x3e\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"user\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"yoshiko.volkman\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"pri1tj0oqxvkm8dsmryp32iez8ur5n7haawdhwn9y5jqyi59jgqz0u5g542b1kuc3zmzjwf\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"node_id\" : \"MDU6SXNzdWUx\"\n },\n \"action\" : \"w5996bxzehedxqvd6tnwyqmsx5iqyz8bn7y4vygytgvop8urj6ruc3yox95s0qk9m82nzz99nnigeg8x0zzv78yi07qs88alvnre2keqet1uqy733\",\n \"comment\" : {\n \"issue_url\" : \"https://web.example.mocklab.io/324930\",\n \"body_html\" : \"hxqiu62gcnxgh9m92ptn7uxhjxrxj91g832gvduk8fq6uvvoighyj201vyi85h7rfoy0uedbkyobq5nr4kuoznn869c8wrqvt0aur7ukahvrhg26clu2bxvovtp9ov3\",\n \"body_text\" : \"c2zlwk2x362rfezk0jfkwljnzfdxenlnnlmqs6bfy43apa6t3well1zzx3z4y2a2v6pcghim3f4ai4dcod3wfh3pm\",\n \"created_at\" : \"2011-04-14T16:00:49Z\",\n \"body\" : \"What version of Safari were you using when you observed this bug?\",\n \"url\" : \"https://api.github.com/repositories/42/issues/comments/1\",\n \"author_association\" : \"OWNER\",\n \"performed_via_github_app\" : {\n \"owner\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Arturo Jerde\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"ztqra6187k4z1nklmm0guhj3ujswipvvc7hff4ti3w9wsukpj8hpq5qiv18ufg6i5wqq\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"installations_count\" : 5,\n \"created_at\" : \"2017-07-08T16:18:44-04:00\",\n \"description\" : \"The description of the app.\",\n \"client_id\" : \"\\\"Iv1.25b5d1e65ffc4022\\\"\",\n \"external_url\" : \"https://example.com\",\n \"updated_at\" : \"2017-07-08T16:18:44-04:00\",\n \"permissions\" : {\n \"deployments\" : \"write\",\n \"issues\" : \"read\"\n },\n \"html_url\" : \"https://github.com/apps/super-ci\",\n \"name\" : \"Probot Owners\",\n \"pem\" : \"\\\"-----BEGIN RSA PRIVATE KEY-----\\\\nMIIEogIBAAKCAQEArYxrNYD/iT5CZVpRJu4rBKmmze3PVmT/gCo2ATUvDvZTPTey\\\\nxcGJ3vvrJXazKk06pN05TN29o98jrYz4cengG3YGsXPNEpKsIrEl8NhbnxapEnM9\\\\nJCMRe0P5JcPsfZlX6hmiT7136GRWiGOUba2X9+HKh8QJVLG5rM007TBER9/z9mWm\\\\nrJuNh+m5l320oBQY/Qq3A7wzdEfZw8qm/mIN0FCeoXH1L6B8xXWaAYBwhTEh6SSn\\\\nZHlO1Xu1JWDmAvBCi0RO5aRSKM8q9QEkvvHP4yweAtK3N8+aAbZ7ovaDhyGz8r6r\\\\nzhU1b8Uo0Z2ysf503WqzQgIajr7Fry7/kUwpgQIDAQABAoIBADwJp80Ko1xHPZDy\\\\nfcCKBDfIuPvkmSW6KumbsLMaQv1aGdHDwwTGv3t0ixSay8CGlxMRtRDyZPib6SvQ\\\\n6OH/lpfpbMdW2ErkksgtoIKBVrDilfrcAvrNZu7NxRNbhCSvN8q0s4ICecjbbVQh\\\\nnueSdlA6vGXbW58BHMq68uRbHkP+k+mM9U0mDJ1HMch67wlg5GbayVRt63H7R2+r\\\\nVxcna7B80J/lCEjIYZznawgiTvp3MSanTglqAYi+m1EcSsP14bJIB9vgaxS79kTu\\\\noiSo93leJbBvuGo8QEiUqTwMw4tDksmkLsoqNKQ1q9P7LZ9DGcujtPy4EZsamSJT\\\\ny8OJt0ECgYEA2lxOxJsQk2kI325JgKFjo92mQeUObIvPfSNWUIZQDTjniOI6Gv63\\\\nGLWVFrZcvQBWjMEQraJA9xjPbblV8PtfO87MiJGLWCHFxmPz2dzoedN+2Coxom8m\\\\nV95CLz8QUShuao6u/RYcvUaZEoYs5bHcTmy5sBK80JyEmafJPtCQVxMCgYEAy3ar\\\\nZr3yv4xRPEPMat4rseswmuMooSaK3SKub19WFI5IAtB/e7qR1Rj9JhOGcZz+OQrl\\\\nT78O2OFYlgOIkJPvRMrPpK5V9lslc7tz1FSh3BZMRGq5jSyD7ETSOQ0c8T2O/s7v\\\\nbeEPbVbDe4mwvM24XByH0GnWveVxaDl51ABD65sCgYB3ZAspUkOA5egVCh8kNpnd\\\\nSd6SnuQBE3ySRlT2WEnCwP9Ph6oPgn+oAfiPX4xbRqkL8q/k0BdHQ4h+zNwhk7+h\\\\nWtPYRAP1Xxnc/F+jGjb+DVaIaKGU18MWPg7f+FI6nampl3Q0KvfxwX0GdNhtio8T\\\\nTj1E+SnFwh56SRQuxSh2gwKBgHKjlIO5NtNSflsUYFM+hyQiPiqnHzddfhSG+/3o\\\\nm5nNaSmczJesUYreH5San7/YEy2UxAugvP7aSY2MxB+iGsiJ9WD2kZzTUlDZJ7RV\\\\nUzWsoqBR+eZfVJ2FUWWvy8TpSG6trh4dFxImNtKejCR1TREpSiTV3Zb1dmahK9GV\\\\nrK9NAoGAbBxRLoC01xfxCTgt5BDiBcFVh4fp5yYKwavJPLzHSpuDOrrI9jDn1oKN\\\\nonq5sDU1i391zfQvdrbX4Ova48BN+B7p63FocP/MK5tyyBoT8zQEk2+vWDOw7H/Z\\\\nu5dTCPxTIsoIwUw1I+7yIxqJzLPFgR2gVBwY1ra/8iAqCj+zeBw=\\\\n-----END RSA PRIVATE KEY-----\\\\n\\\"\",\n \"webhook_secret\" : \"\\\"6fba8f2fc8a7e8f2cca5577eddd82ca7586b3b6b\\\"\",\n \"client_secret\" : \"\\\"1d4b2097ac622ba702d19de498f005747a8b21d3\\\"\",\n \"id\" : 37,\n \"events\" : [ \"label\", \"deployment\" ],\n \"slug\" : \"probot-owners\",\n \"node_id\" : \"MDExOkludGVncmF0aW9uMQ==\"\n },\n \"updated_at\" : \"2011-04-14T16:00:49Z\",\n \"html_url\" : \"https://web.example.mocklab.io/673319\",\n \"reactions\" : {\n \"confused\" : 7617578964717584954,\n \"-1\" : 4544402355546394256,\n \"+1\" : 1578161065424281184,\n \"total_count\" : 4486593650531956224,\n \"rocket\" : 1415945016052473691,\n \"hooray\" : 8622412921167054266,\n \"eyes\" : 8429972239280961603,\n \"heart\" : 8518545745295695398,\n \"laugh\" : 7060936906481009218,\n \"url\" : \"https://web.example.mocklab.io/404517\"\n },\n \"id\" : 42,\n \"user\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"lovie.jenkins\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"omnw6cd7fimofz1jqryw4fk2o74hm9qdshtnsk7forbwzcc54kzups4arims0o91ioiwinalp07spyo7regvi2n4yq9dqiw6iypwl2u2l5bbc8nlpxm6kvii3xinw2f\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"node_id\" : \"6s6z\"\n }\n },\n \"repo\" : {\n \"name\" : \"Miss Jere Armstrong\",\n \"id\" : 1592849515656981741,\n \"url\" : \"https://web.example.mocklab.io/850688\"\n },\n \"created_at\" : \"2023-01-18T16:24:23.698Z\",\n \"id\" : \"e72h\",\n \"type\" : \"o1060mge9x109tya7otfkpzq2e58t1vmu7h5d8c1nyq1ifylhevevaxvzgn56s3cq6rxnio8wcmrk8si7vuvdfpilcmlarn1fpncd59c0khavuz4gqphgyzb7t6f9m6tet9jf66riy61b2fsxjrielwmeoahfop9ed9marcrf1n\"\n}, {\n \"actor\" : {\n \"display_login\" : \"u7g8hj3vqwjg9v5e79qomvjiw4jtm75gwl8k29our388bvnngt05ym0\",\n \"avatar_url\" : \"https://s3.amazonaws.com/uifaces/faces/twitter/jffgrdnr/128.jpg\",\n \"id\" : 564023607729346462,\n \"login\" : \"nuvk8zvh2d89xpzpr1giepuoc4why95ytu1pdi9bbji3n3xlfg2k8sjx3iss7vxuhljyhax2t64lk6rq9t1kaxzxs7puk559dd5aduzcr26nfzbfsoyxj57mz7m63u3icge5cejplbp6\",\n \"gravatar_id\" : \"273d\",\n \"url\" : \"https://web.example.mocklab.io/307402\"\n },\n \"public\" : false,\n \"org\" : {\n \"display_login\" : \"p1fthb5ugjy2xonufcqz9shrneup7q0ihiepyzijj4m16an0tvyj5okcru8c5o15zvbpskct934qyhc51zxl4a04dv0bshkwmbdfx8lpt1pndk3rjcf6jarryjbxckfarqu\",\n \"avatar_url\" : \"https://s3.amazonaws.com/uifaces/faces/twitter/javorszky/128.jpg\",\n \"id\" : 5271366711284641951,\n \"login\" : \"p3ukerx52aszoe\",\n \"gravatar_id\" : \"w8b9\",\n \"url\" : \"https://web.example.mocklab.io/428785\"\n },\n \"payload\" : {\n \"pages\" : [ {\n \"summary\" : \"Dolor repudiandae accusamus. Autem alias modi voluptates ratione voluptatem nobis. Fugiat commodi natus laboriosam. Veniam voluptas aspernatur consectetur dolores. Recusandae ea voluptatem quasi rerum\",\n \"html_url\" : \"https://web.example.mocklab.io/101020\",\n \"page_name\" : \"Ivey Denesik\",\n \"action\" : \"59kg56fekzohoenuqk9c2ejnmo15icoh23vd3srnvy6wwb401ndvibi1dgiui4xpbw6ah5pzos8k1gmvi6bfqpl69mi2c3zc1rfvy195uqvl2i007n9uohn14xk9s9d01e4\",\n \"title\" : \"Enim quae fugiat et sit.\",\n \"sha\" : \"3m0ct7e6ay9czvc9bpafx1mt3nll0ojvop0q8gosdxt71e8753sbyu7jf094lumjunvdpmwh7ota\"\n }, {\n \"summary\" : \"Quis ratione adipisci vel eveniet dolorum atque nihil. Consectetur non rerum eligendi non error. Ut quibusdam sunt aut vel aliquam numquam quasi. Perferendis debitis quae qui. Eligendi ut perferendis \",\n \"html_url\" : \"https://web.example.mocklab.io/111198\",\n \"page_name\" : \"Lincoln Hayes\",\n \"action\" : \"4bxc8nw07p88uvqlngrzf6frsbtv3pz2v3mi2ok4pqe3svt6wids9h0qxkswqp4osfewhu3na04412w6lpzsvwt5i42ct8205uky\",\n \"title\" : \"Inventore ullam ullam sequi sint.\",\n \"sha\" : \"9yjb8wm2gmriwe79934ja444p0ijgi2elof2cg5m7om8tn684zauoa9n4iazfqf3pkwixz9x3gx03arg87j80nl8thmh9gpjndawdiimrn3sdtqp27mr5jowlc\"\n }, {\n \"summary\" : \"Iste rerum dolorem ratione et sed sunt. Nostrum vel voluptas at. Consequatur dolorum omnis est. Quibusdam quasi voluptatem id.\",\n \"html_url\" : \"https://web.example.mocklab.io/544196\",\n \"page_name\" : \"Marlon Gerhold\",\n \"action\" : \"up4tv6mvd81d9acr4zi92c2gs8dvy\",\n \"title\" : \"Laboriosam error et.\",\n \"sha\" : \"rh4m7b0do9n1kgi1mxqzn9zq9xw798ww3i2xm8havbmai9ibd0dmulxavfthlql3pbbwigsppqp34hew3w069csq1k3q5x9wfb2rp97jl1wdwkedklw53w3nczz2u9i63kweh15j316k8za1st912hsge1cpgri5x78hvntifabkp0\"\n }, {\n \"summary\" : \"Qui dignissimos voluptas totam. Nesciunt alias doloribus aspernatur. Rerum perferendis voluptatibus omnis et cupiditate rerum.\",\n \"html_url\" : \"https://web.example.mocklab.io/922874\",\n \"page_name\" : \"Sherlyn O'Hara\",\n \"action\" : \"toqri2m3lc55su6uhcmieqweqk61sbfzplswo7q95exjs0zl21xfu6vhk1w96vcehfx6u1hvu7m2xzt\",\n \"title\" : \"Libero quis labore.\",\n \"sha\" : \"kba3rb19adwui6des0a4kj1jpnbxadaog87tz86xnaex9s1yqxyuw48yr8afgbbryt81d3ios1kdqs4pi3r61gcfo1tufm1psy8915vnqlzqrdui2cb\"\n } ],\n \"issue\" : {\n \"body_html\" : \"rkzxl4h8it2a8allnba88foz4gf32q2d67i0laq8axfvfer8q31jdqosk4o660gcudug7d1s42trq444pg7xtn7byyqq3jl1g6r1r29z5vu8fo70zlrn291cfeny2qb6w5xg6\",\n \"body_text\" : \"opi85hwn9vw4cbqx912hmrwiekh2c4ardhoohsro703yots2yl1\",\n \"assignees\" : [ {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Barrett McGlynn V\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"8itji5bhw0mapmxjkqkzorn67rhj7qvlgu9dx5ka57n22bgx0d\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n }, {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Henry Cassin\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"7t1giodsov29elsc48e7n6jt\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n }, {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Mr. Malcolm Beatty\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"pxeeo72lx8is1e5tu89kou6hbrrngilu7heirsctunlrjrnaaigon3slkoqehge8q1dzouce83rghy0mlmcvsjphp8gt59brexndttoicgwvoq2568l\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n }, {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Perry Durgan\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"8cz54\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n }, {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Lynwood Kub\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"d26d9k1m3jhw67u0x8sil39wxdpm6rzy5g54ij33atxbkrvuhljtv1fowf8i1bm82hm9b6mjqbo9fbro9jnhc9sxw79sud6zthl9dg2igq3f104yt6ul0jbyahzysam1fgm7garj9gywju30dermu6uwooafthicvm6nno832irkcwg5\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n }, {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Natosha Koch\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"ma1qbyqlyltdux7fvv7hkz5kxpqdnimxw6psn292y4ckgqintwb4rq9g3mzmb013cu4un37pcz\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n }, {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Miss Bret Keeling\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"p65mxobdo5gs0hwd3r1nz7u1uhvctkr6vx96rn96mlbzzvlro5ijt48stv\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n } ],\n \"created_at\" : \"2011-04-22T13:33:48Z\",\n \"body\" : \"I'm having a problem with this.\",\n \"repository\" : {\n \"allow_forking\" : false,\n \"anonymous_access_enabled\" : false,\n \"is_template\" : true,\n \"stargazers_count\" : 80,\n \"pushed_at\" : \"2011-01-26T19:06:43Z\",\n \"language\" : \"5tbfh37erge1q1thtynqrzwg2sid0rn0pgizr9tm58f5m3bwh296qvh7cnhe3plge9f7xwm0tbywsedi02l6kurluz1ld7087ahy04gf1q0k7wuh93e8p50ubeyyj1solc0jsuh4cpcr1varc9pel2drz2rlxsldaalfg4023fj2wlt0hrhxjfubrvlyj2\",\n \"subscription_url\" : \"http://api.github.com/repos/octocat/Hello-World/subscription\",\n \"branches_url\" : \"http://api.github.com/repos/octocat/Hello-World/branches{/branch}\",\n \"allow_rebase_merge\" : true,\n \"issue_comment_url\" : \"http://api.github.com/repos/octocat/Hello-World/issues/comments{/number}\",\n \"labels_url\" : \"http://api.github.com/repos/octocat/Hello-World/labels{/name}\",\n \"permissions\" : {\n \"pull\" : true,\n \"maintain\" : true,\n \"admin\" : true,\n \"triage\" : true,\n \"push\" : true\n },\n \"subscribers_url\" : \"http://api.github.com/repos/octocat/Hello-World/subscribers\",\n \"releases_url\" : \"http://api.github.com/repos/octocat/Hello-World/releases{/id}\",\n \"svn_url\" : \"https://svn.github.com/octocat/Hello-World\",\n \"subscribers_count\" : 6864120819650674758,\n \"id\" : 42,\n \"master_branch\" : \"4crnl6v0fkqpalgwtzavjjsdd9miwy4etl9r\",\n \"forks\" : 938103791807106216,\n \"allow_merge_commit\" : true,\n \"archive_url\" : \"http://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref}\",\n \"git_refs_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/refs{/sha}\",\n \"forks_url\" : \"http://api.github.com/repos/octocat/Hello-World/forks\",\n \"visibility\" : \"32im7rheeieompoiuuaewnfshve8gvf4fe4m3eg3ysm7sr71vinw5ku4hgaihboemhsn9y7an151pajrum3gtjuv7ok4e\",\n \"statuses_url\" : \"http://api.github.com/repos/octocat/Hello-World/statuses/{sha}\",\n \"network_count\" : 4997337557691412412,\n \"ssh_url\" : \"git@github.com:octocat/Hello-World.git\",\n \"license\" : {\n \"html_url\" : \"https://web.example.mocklab.io/586312\",\n \"name\" : \"MIT License\",\n \"spdx_id\" : \"MIT\",\n \"key\" : \"mit\",\n \"url\" : \"https://api.github.com/licenses/mit\",\n \"node_id\" : \"MDc6TGljZW5zZW1pdA==\"\n },\n \"full_name\" : \"octocat/Hello-World\",\n \"size\" : 108,\n \"template_repository\" : {\n \"anonymous_access_enabled\" : false,\n \"is_template\" : false,\n \"stargazers_count\" : 4574088417756373884,\n \"pushed_at\" : \"ccfmjq41v92qc1u6el3o94s8g2nvhcleyhfgperq6gtaztxett6jqwmqjrk6y7o9n95hk313n4iacok573ls5dglz67hhw0xky2mm3mp74cg1zgzxvl69lodjooa4hfmvpa3h5xawd96ot\",\n \"language\" : \"69s1mtt7i1ym3f7je6cfk3r9k0vjk1xsonfo8os1x0eh2mcdxy4lmr4n76iaz1enha1iclb7h\",\n \"subscription_url\" : \"https://web.example.mocklab.io/242528\",\n \"branches_url\" : \"https://web.example.mocklab.io/891945\",\n \"allow_rebase_merge\" : false,\n \"issue_comment_url\" : \"https://web.example.mocklab.io/207302\",\n \"labels_url\" : \"https://web.example.mocklab.io/200780\",\n \"permissions\" : { },\n \"subscribers_url\" : \"https://web.example.mocklab.io/420991\",\n \"releases_url\" : \"https://web.example.mocklab.io/321294\",\n \"svn_url\" : \"https://web.example.mocklab.io/454950\",\n \"subscribers_count\" : 3757863675715188240,\n \"id\" : 7501877931695807578,\n \"allow_merge_commit\" : false,\n \"archive_url\" : \"https://web.example.mocklab.io/056124\",\n \"git_refs_url\" : \"https://web.example.mocklab.io/631616\",\n \"forks_url\" : \"https://web.example.mocklab.io/029716\",\n \"visibility\" : \"rk6clobe8993nzcmgjv5knczqo8h19lpmdo32uvnw5oon6wvvrwbzl6xko06tttovipue1onyiqmojap2v10bqimj7lx8gtzdgvxkhh8ys7ou615dge6qydgfij7mf411zfbleqym1rv662mf8aindel7thgg3zay2luqo8bsudrihccd3nc6gdpwnlg\",\n \"statuses_url\" : \"https://web.example.mocklab.io/301820\",\n \"network_count\" : 8668187446969229577,\n \"ssh_url\" : \"https://web.example.mocklab.io/135861\",\n \"full_name\" : \"Ms. Lavette Dickens\",\n \"size\" : 4299488628054132662,\n \"languages_url\" : \"https://web.example.mocklab.io/729610\",\n \"clone_url\" : \"https://web.example.mocklab.io/347251\",\n \"collaborators_url\" : \"https://web.example.mocklab.io/377547\",\n \"html_url\" : \"https://web.example.mocklab.io/488094\",\n \"name\" : \"Paige Gleason\",\n \"pulls_url\" : \"https://web.example.mocklab.io/981184\",\n \"default_branch\" : \"3kb990p5884qeqac3p1c9kyr4ky8d4n9l89\",\n \"hooks_url\" : \"https://web.example.mocklab.io/891712\",\n \"trees_url\" : \"https://web.example.mocklab.io/554911\",\n \"tags_url\" : \"https://web.example.mocklab.io/550985\",\n \"contributors_url\" : \"https://web.example.mocklab.io/623422\",\n \"private\" : false,\n \"has_downloads\" : true,\n \"notifications_url\" : \"https://web.example.mocklab.io/315331\",\n \"open_issues_count\" : 3372067624638557787,\n \"created_at\" : \"l5x2cg6n6iydy4k3noxy5zsn8hk4d2vpipw9a4lnjvnxtq4r4uw2x0kpmd0yoe66n7gjpfvf3nz11xwvl1yn0i1k12rezg0z1\",\n \"description\" : \"Molestias quasi expedita eos est nihil magni. Saepe nisi qui fugit quas esse voluptatibus velit. Tempore quam accusamus rerum.\",\n \"deployments_url\" : \"https://web.example.mocklab.io/966049\",\n \"keys_url\" : \"https://web.example.mocklab.io/691392\",\n \"has_projects\" : false,\n \"archived\" : false,\n \"has_wiki\" : true,\n \"updated_at\" : \"2022-06-29T08:27:58.702358Z\",\n \"comments_url\" : \"https://web.example.mocklab.io/450834\",\n \"stargazers_url\" : \"https://web.example.mocklab.io/239275\",\n \"disabled\" : false,\n \"delete_branch_on_merge\" : false,\n \"git_url\" : \"https://web.example.mocklab.io/477796\",\n \"has_pages\" : false,\n \"owner\" : { },\n \"allow_squash_merge\" : false,\n \"commits_url\" : \"https://web.example.mocklab.io/323886\",\n \"compare_url\" : \"https://web.example.mocklab.io/530000\",\n \"git_commits_url\" : \"https://web.example.mocklab.io/054033\",\n \"topics\" : [ \"5tem48wgfmrt03e8ci9dfx5lnnd6ds0bckqri3xqp8vsvafannu49ptxwvxmixiic008pc4b68km4snzlfg3491t9cj0iah7e1jjfzyrl\", \"sxf6f2p2c2okds6h27roa2pwn9jc2su282cto8pjim73nn9qvk4t0unfthpkfq1c3debfs9rbjch5452xt4xhy6icljd58n8twdvjsoexa86kkl2j8oudpnldg9bk23tq5699jcjj3qqmqf27a6id3dx0k0ee1yomufx8m23ciqlbi9d4\", \"yvwpucm896khbb6j41io6cb8osqeg6xrkuky24kr2f0pr2z\", \"cqs9n1c3xslvp1ll5ogvu6p76ly5fgqnpqb5gfxvcj\" ],\n \"blobs_url\" : \"https://web.example.mocklab.io/676265\",\n \"git_tags_url\" : \"https://web.example.mocklab.io/315395\",\n \"merges_url\" : \"https://web.example.mocklab.io/637406\",\n \"downloads_url\" : \"https://web.example.mocklab.io/937698\",\n \"has_issues\" : true,\n \"url\" : \"https://web.example.mocklab.io/499372\",\n \"contents_url\" : \"https://web.example.mocklab.io/744487\",\n \"mirror_url\" : \"https://web.example.mocklab.io/280448\",\n \"milestones_url\" : \"https://web.example.mocklab.io/609991\",\n \"teams_url\" : \"https://web.example.mocklab.io/906231\",\n \"fork\" : false,\n \"issues_url\" : \"https://web.example.mocklab.io/363645\",\n \"events_url\" : \"https://web.example.mocklab.io/739310\",\n \"issue_events_url\" : \"https://web.example.mocklab.io/822596\",\n \"assignees_url\" : \"https://web.example.mocklab.io/837533\",\n \"watchers_count\" : 3906159452759060130,\n \"forks_count\" : 3256253060430683686,\n \"homepage\" : \"p3tr07inmjasn081r5evtdj4qq7p4rcbl2bd1l3v5camyaxvq17niv959k5n1v5nk90gi18qi57sf63mdiwf5nqbmp92uymkh6jmsdy435etthcf\",\n \"node_id\" : \"bqg0\"\n },\n \"languages_url\" : \"http://api.github.com/repos/octocat/Hello-World/languages\",\n \"clone_url\" : \"https://github.com/octocat/Hello-World.git\",\n \"collaborators_url\" : \"http://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator}\",\n \"html_url\" : \"https://github.com/octocat/Hello-World\",\n \"name\" : \"Team Environment\",\n \"pulls_url\" : \"http://api.github.com/repos/octocat/Hello-World/pulls{/number}\",\n \"default_branch\" : \"master\",\n \"hooks_url\" : \"http://api.github.com/repos/octocat/Hello-World/hooks\",\n \"trees_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/trees{/sha}\",\n \"tags_url\" : \"http://api.github.com/repos/octocat/Hello-World/tags\",\n \"contributors_url\" : \"http://api.github.com/repos/octocat/Hello-World/contributors\",\n \"private\" : false,\n \"has_downloads\" : true,\n \"notifications_url\" : \"http://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating}\",\n \"open_issues_count\" : 0,\n \"created_at\" : \"2011-01-26T19:01:12Z\",\n \"description\" : \"This your first repo!\",\n \"watchers\" : 4987855066733502136,\n \"deployments_url\" : \"http://api.github.com/repos/octocat/Hello-World/deployments\",\n \"keys_url\" : \"http://api.github.com/repos/octocat/Hello-World/keys{/key_id}\",\n \"has_projects\" : true,\n \"archived\" : true,\n \"has_wiki\" : true,\n \"updated_at\" : \"2011-01-26T19:14:43Z\",\n \"comments_url\" : \"http://api.github.com/repos/octocat/Hello-World/comments{/number}\",\n \"stargazers_url\" : \"http://api.github.com/repos/octocat/Hello-World/stargazers\",\n \"disabled\" : false,\n \"delete_branch_on_merge\" : false,\n \"git_url\" : \"git:github.com/octocat/Hello-World.git\",\n \"has_pages\" : false,\n \"owner\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Teofila Roob Sr.\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"2lg5d2epfdw6y5zxuueswrekc3geh17h1zof0rfunbjjqq1yxsqwcczd6iuil8o3paxn7dgw49ojnr9hj69wam6qong208raegb8971h394w4stk4o3fmkmaiw36pq1dcfbinqyrxdnlyke54up9jehj0jif956tc9kx1l3f5orjlb0940nzaitb67hwwiay8snqqm\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"allow_squash_merge\" : true,\n \"commits_url\" : \"http://api.github.com/repos/octocat/Hello-World/commits{/sha}\",\n \"compare_url\" : \"http://api.github.com/repos/octocat/Hello-World/compare/{base}...{head}\",\n \"git_commits_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/commits{/sha}\",\n \"topics\" : [ \"2gk6t67tcsfwp6v80f6s7veeiq43ba2o39x8v4kw7c5n0bb7532hsqggj68t4llvt9ke85fvns86ck5c5km9vrxt0823vdg38kb99qsq5givstfjguc2vdakl3ek908l315jt2aqlwtl8b73hcje8gnaxg9z4i1fwu65x2y3n080h150qvz\", \"vn4wcv3bfumotj4648is6x2ubqvpspi0pqce88yyg8mjmmvsf5ktds60771iib5e6pmlq715156g6p0wn5ow6kieho4gc7dttrjp\", \"5pqi8w9e0peecg5sbmumxmcb02fwplxdv5ijxkg578mk9kl5cgt1j1v3s9cqhqa5kxa6u7kbvks4gcw5jbgv0tmsd38sgpfn9tb9zsjgc9ct0s5ictlgfdw1iol566xsatyg1pav1jrv6bciuw2rxq20mkias4zpztprrwvu87brwhifu2to4k7gw0z6\", \"2cf578i5rmxfd1y6j0bt71omizmdu0uowml8i0khnuputfsvoklocpy99axgd\" ],\n \"blobs_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/blobs{/sha}\",\n \"git_tags_url\" : \"http://api.github.com/repos/octocat/Hello-World/git/tags{/sha}\",\n \"merges_url\" : \"http://api.github.com/repos/octocat/Hello-World/merges\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:42Z\\\"\",\n \"downloads_url\" : \"http://api.github.com/repos/octocat/Hello-World/downloads\",\n \"has_issues\" : true,\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World\",\n \"contents_url\" : \"http://api.github.com/repos/octocat/Hello-World/contents/{+path}\",\n \"mirror_url\" : \"git:git.example.com/octocat/Hello-World\",\n \"milestones_url\" : \"http://api.github.com/repos/octocat/Hello-World/milestones{/number}\",\n \"teams_url\" : \"http://api.github.com/repos/octocat/Hello-World/teams\",\n \"fork\" : true,\n \"issues_url\" : \"http://api.github.com/repos/octocat/Hello-World/issues{/number}\",\n \"events_url\" : \"http://api.github.com/repos/octocat/Hello-World/events\",\n \"issue_events_url\" : \"http://api.github.com/repos/octocat/Hello-World/issues/events{/number}\",\n \"organization\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Kelsi Parker III\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"ssr83hilsth\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"assignees_url\" : \"http://api.github.com/repos/octocat/Hello-World/assignees{/user}\",\n \"open_issues\" : 2328589971461807242,\n \"watchers_count\" : 80,\n \"forks_count\" : 9,\n \"homepage\" : \"https://github.com\",\n \"node_id\" : \"MDEwOlJlcG9zaXRvcnkxMjk2MjY5\"\n },\n \"title\" : \"Found a bug\",\n \"author_association\" : \"OWNER\",\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347/labels{/name}\",\n \"number\" : 1347,\n \"performed_via_github_app\" : {\n \"owner\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Mr. Zane Walker\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"509195\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"installations_count\" : 5,\n \"created_at\" : \"2017-07-08T16:18:44-04:00\",\n \"description\" : \"The description of the app.\",\n \"client_id\" : \"\\\"Iv1.25b5d1e65ffc4022\\\"\",\n \"external_url\" : \"https://example.com\",\n \"updated_at\" : \"2017-07-08T16:18:44-04:00\",\n \"permissions\" : {\n \"deployments\" : \"write\",\n \"issues\" : \"read\"\n },\n \"html_url\" : \"https://github.com/apps/super-ci\",\n \"name\" : \"Probot Owners\",\n \"pem\" : \"\\\"-----BEGIN RSA PRIVATE KEY-----\\\\nMIIEogIBAAKCAQEArYxrNYD/iT5CZVpRJu4rBKmmze3PVmT/gCo2ATUvDvZTPTey\\\\nxcGJ3vvrJXazKk06pN05TN29o98jrYz4cengG3YGsXPNEpKsIrEl8NhbnxapEnM9\\\\nJCMRe0P5JcPsfZlX6hmiT7136GRWiGOUba2X9+HKh8QJVLG5rM007TBER9/z9mWm\\\\nrJuNh+m5l320oBQY/Qq3A7wzdEfZw8qm/mIN0FCeoXH1L6B8xXWaAYBwhTEh6SSn\\\\nZHlO1Xu1JWDmAvBCi0RO5aRSKM8q9QEkvvHP4yweAtK3N8+aAbZ7ovaDhyGz8r6r\\\\nzhU1b8Uo0Z2ysf503WqzQgIajr7Fry7/kUwpgQIDAQABAoIBADwJp80Ko1xHPZDy\\\\nfcCKBDfIuPvkmSW6KumbsLMaQv1aGdHDwwTGv3t0ixSay8CGlxMRtRDyZPib6SvQ\\\\n6OH/lpfpbMdW2ErkksgtoIKBVrDilfrcAvrNZu7NxRNbhCSvN8q0s4ICecjbbVQh\\\\nnueSdlA6vGXbW58BHMq68uRbHkP+k+mM9U0mDJ1HMch67wlg5GbayVRt63H7R2+r\\\\nVxcna7B80J/lCEjIYZznawgiTvp3MSanTglqAYi+m1EcSsP14bJIB9vgaxS79kTu\\\\noiSo93leJbBvuGo8QEiUqTwMw4tDksmkLsoqNKQ1q9P7LZ9DGcujtPy4EZsamSJT\\\\ny8OJt0ECgYEA2lxOxJsQk2kI325JgKFjo92mQeUObIvPfSNWUIZQDTjniOI6Gv63\\\\nGLWVFrZcvQBWjMEQraJA9xjPbblV8PtfO87MiJGLWCHFxmPz2dzoedN+2Coxom8m\\\\nV95CLz8QUShuao6u/RYcvUaZEoYs5bHcTmy5sBK80JyEmafJPtCQVxMCgYEAy3ar\\\\nZr3yv4xRPEPMat4rseswmuMooSaK3SKub19WFI5IAtB/e7qR1Rj9JhOGcZz+OQrl\\\\nT78O2OFYlgOIkJPvRMrPpK5V9lslc7tz1FSh3BZMRGq5jSyD7ETSOQ0c8T2O/s7v\\\\nbeEPbVbDe4mwvM24XByH0GnWveVxaDl51ABD65sCgYB3ZAspUkOA5egVCh8kNpnd\\\\nSd6SnuQBE3ySRlT2WEnCwP9Ph6oPgn+oAfiPX4xbRqkL8q/k0BdHQ4h+zNwhk7+h\\\\nWtPYRAP1Xxnc/F+jGjb+DVaIaKGU18MWPg7f+FI6nampl3Q0KvfxwX0GdNhtio8T\\\\nTj1E+SnFwh56SRQuxSh2gwKBgHKjlIO5NtNSflsUYFM+hyQiPiqnHzddfhSG+/3o\\\\nm5nNaSmczJesUYreH5San7/YEy2UxAugvP7aSY2MxB+iGsiJ9WD2kZzTUlDZJ7RV\\\\nUzWsoqBR+eZfVJ2FUWWvy8TpSG6trh4dFxImNtKejCR1TREpSiTV3Zb1dmahK9GV\\\\nrK9NAoGAbBxRLoC01xfxCTgt5BDiBcFVh4fp5yYKwavJPLzHSpuDOrrI9jDn1oKN\\\\nonq5sDU1i391zfQvdrbX4Ova48BN+B7p63FocP/MK5tyyBoT8zQEk2+vWDOw7H/Z\\\\nu5dTCPxTIsoIwUw1I+7yIxqJzLPFgR2gVBwY1ra/8iAqCj+zeBw=\\\\n-----END RSA PRIVATE KEY-----\\\\n\\\"\",\n \"webhook_secret\" : \"\\\"6fba8f2fc8a7e8f2cca5577eddd82ca7586b3b6b\\\"\",\n \"client_secret\" : \"\\\"1d4b2097ac622ba702d19de498f005747a8b21d3\\\"\",\n \"id\" : 37,\n \"events\" : [ \"label\", \"deployment\" ],\n \"slug\" : \"probot-owners\",\n \"node_id\" : \"MDExOkludGVncmF0aW9uMQ==\"\n },\n \"updated_at\" : \"2011-04-22T13:33:48Z\",\n \"comments_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347/comments\",\n \"active_lock_reason\" : \"too heated\",\n \"id\" : 1,\n \"repository_url\" : \"https://api.github.com/repos/octocat/Hello-World\",\n \"state\" : \"open\",\n \"locked\" : true,\n \"timeline_url\" : \"https://web.example.mocklab.io/787365\",\n \"pull_request\" : {\n \"patch_url\" : \"https://web.example.mocklab.io/790711\",\n \"html_url\" : \"https://web.example.mocklab.io/174893\",\n \"merged_at\" : \"2023-04-20T12:08:04.705Z\",\n \"diff_url\" : \"https://web.example.mocklab.io/685948\",\n \"url\" : \"https://web.example.mocklab.io/975695\"\n },\n \"closed_at\" : \"2022-09-23T03:45:31.705Z\",\n \"comments\" : 0,\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347\",\n \"labels\" : [ {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n }, {\n \"default\" : true,\n \"color\" : \"FFFFFF\",\n \"name\" : \"bug\",\n \"description\" : \"Something isn't working\",\n \"id\" : 208045946,\n \"url\" : \"https://api.github.com/repositories/42/labels/bug\",\n \"node_id\" : \"MDU6TGFiZWwyMDgwNDU5NDY=\"\n } ],\n \"milestone\" : {\n \"creator\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Ms. Antoine Howe\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"dk5mfp95krv72cb22gc2619dk8plat8bunjw6mf92anpz14o8e45y1bkp340qqoraqgwami03ufzcj0xmq78qi4wzod5ztsi078zuybmfyakkxiqlubfotssnvgzm3837btsrdgffd\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"closed_at\" : \"2013-02-12T13:22:01Z\",\n \"created_at\" : \"2011-04-10T20:09:31Z\",\n \"description\" : \"Tracking milestone for version 1.0\",\n \"closed_issues\" : 8,\n \"title\" : \"v1.0\",\n \"due_on\" : \"2012-10-09T23:39:01Z\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones/1\",\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones/1/labels\",\n \"number\" : 42,\n \"updated_at\" : \"2014-03-03T18:58:10Z\",\n \"html_url\" : \"https://github.com/octocat/Hello-World/milestones/v1.0\",\n \"id\" : 1002604,\n \"state\" : \"open\",\n \"open_issues\" : 4,\n \"node_id\" : \"MDk6TWlsZXN0b25lMTAwMjYwNA==\"\n },\n \"events_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/1347/events\",\n \"html_url\" : \"https://github.com/octocat/Hello-World/issues/1347\",\n \"assignee\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Mr. Daine Kuhlman\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"eby1r6sy622qp2uudhqh1d7gesfqsgvgg6s20w019fbxskvkp9yiwlb8t41cnswry4divnxr0aucpob257ug7f3i6v91nwptemi2rqpe8qkvl5y57vsy54zmt9jcgjvyaxu5ta6cwjv7nbkx\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"user\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"jay.bergstrom\",\n \"site_admin\" : true,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"cevfeso8w8jo4ny5o9nt1nvl6933rj4lnh5rg8kv3p29etu7zn8dskftr97d94h92qzc9\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"node_id\" : \"MDU6SXNzdWUx\"\n },\n \"action\" : \"ynidnvqvlo55wnc7lgfevgcr6vqmvfv733qq0qhzicgtb48csob6hi3r0kqpli2f1d7y9jqbunf4fnn5jokrqjzfitdm76uhwvm1amt907zjs9dew3jowdb1turggrfqh8qmqjf2orbli166yp8mkinn8wrrkhh4\",\n \"comment\" : {\n \"issue_url\" : \"https://web.example.mocklab.io/930931\",\n \"body_html\" : \"eweb60u76kfebgvy3omwvodxeapzdtq1leipnam8ags98boebz1mrkvouzs7b1gwg3q56k8nf7uq0l899rbduxqooqueuzf0uzum7p5kcuptvnsfl0inejyb56bbivkukt5mbdgfeh1c52e9ik7cq2ib1vjgbx6x5a1fg8qltv6tecx25meav2qs4rdrp5dxet9\",\n \"body_text\" : \"6mbuk4rgwqb46d2wxpzi6e0e7tpr10cq\",\n \"created_at\" : \"2011-04-14T16:00:49Z\",\n \"body\" : \"What version of Safari were you using when you observed this bug?\",\n \"url\" : \"https://api.github.com/repositories/42/issues/comments/1\",\n \"author_association\" : \"OWNER\",\n \"performed_via_github_app\" : {\n \"owner\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"Logan Huel\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"h1f1qsjsc3ixxf51jy41j9qd5ctlf39ux2h0bxks04eylmk9ilqutzkf2lcocbgo8c7j4o1til4f89vq64yn390zjri0928m156dzf5t85ot1zmounpnv5p1zuow6m6yxk\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"installations_count\" : 5,\n \"created_at\" : \"2017-07-08T16:18:44-04:00\",\n \"description\" : \"The description of the app.\",\n \"client_id\" : \"\\\"Iv1.25b5d1e65ffc4022\\\"\",\n \"external_url\" : \"https://example.com\",\n \"updated_at\" : \"2017-07-08T16:18:44-04:00\",\n \"permissions\" : {\n \"deployments\" : \"write\",\n \"issues\" : \"read\"\n },\n \"html_url\" : \"https://github.com/apps/super-ci\",\n \"name\" : \"Probot Owners\",\n \"pem\" : \"\\\"-----BEGIN RSA PRIVATE KEY-----\\\\nMIIEogIBAAKCAQEArYxrNYD/iT5CZVpRJu4rBKmmze3PVmT/gCo2ATUvDvZTPTey\\\\nxcGJ3vvrJXazKk06pN05TN29o98jrYz4cengG3YGsXPNEpKsIrEl8NhbnxapEnM9\\\\nJCMRe0P5JcPsfZlX6hmiT7136GRWiGOUba2X9+HKh8QJVLG5rM007TBER9/z9mWm\\\\nrJuNh+m5l320oBQY/Qq3A7wzdEfZw8qm/mIN0FCeoXH1L6B8xXWaAYBwhTEh6SSn\\\\nZHlO1Xu1JWDmAvBCi0RO5aRSKM8q9QEkvvHP4yweAtK3N8+aAbZ7ovaDhyGz8r6r\\\\nzhU1b8Uo0Z2ysf503WqzQgIajr7Fry7/kUwpgQIDAQABAoIBADwJp80Ko1xHPZDy\\\\nfcCKBDfIuPvkmSW6KumbsLMaQv1aGdHDwwTGv3t0ixSay8CGlxMRtRDyZPib6SvQ\\\\n6OH/lpfpbMdW2ErkksgtoIKBVrDilfrcAvrNZu7NxRNbhCSvN8q0s4ICecjbbVQh\\\\nnueSdlA6vGXbW58BHMq68uRbHkP+k+mM9U0mDJ1HMch67wlg5GbayVRt63H7R2+r\\\\nVxcna7B80J/lCEjIYZznawgiTvp3MSanTglqAYi+m1EcSsP14bJIB9vgaxS79kTu\\\\noiSo93leJbBvuGo8QEiUqTwMw4tDksmkLsoqNKQ1q9P7LZ9DGcujtPy4EZsamSJT\\\\ny8OJt0ECgYEA2lxOxJsQk2kI325JgKFjo92mQeUObIvPfSNWUIZQDTjniOI6Gv63\\\\nGLWVFrZcvQBWjMEQraJA9xjPbblV8PtfO87MiJGLWCHFxmPz2dzoedN+2Coxom8m\\\\nV95CLz8QUShuao6u/RYcvUaZEoYs5bHcTmy5sBK80JyEmafJPtCQVxMCgYEAy3ar\\\\nZr3yv4xRPEPMat4rseswmuMooSaK3SKub19WFI5IAtB/e7qR1Rj9JhOGcZz+OQrl\\\\nT78O2OFYlgOIkJPvRMrPpK5V9lslc7tz1FSh3BZMRGq5jSyD7ETSOQ0c8T2O/s7v\\\\nbeEPbVbDe4mwvM24XByH0GnWveVxaDl51ABD65sCgYB3ZAspUkOA5egVCh8kNpnd\\\\nSd6SnuQBE3ySRlT2WEnCwP9Ph6oPgn+oAfiPX4xbRqkL8q/k0BdHQ4h+zNwhk7+h\\\\nWtPYRAP1Xxnc/F+jGjb+DVaIaKGU18MWPg7f+FI6nampl3Q0KvfxwX0GdNhtio8T\\\\nTj1E+SnFwh56SRQuxSh2gwKBgHKjlIO5NtNSflsUYFM+hyQiPiqnHzddfhSG+/3o\\\\nm5nNaSmczJesUYreH5San7/YEy2UxAugvP7aSY2MxB+iGsiJ9WD2kZzTUlDZJ7RV\\\\nUzWsoqBR+eZfVJ2FUWWvy8TpSG6trh4dFxImNtKejCR1TREpSiTV3Zb1dmahK9GV\\\\nrK9NAoGAbBxRLoC01xfxCTgt5BDiBcFVh4fp5yYKwavJPLzHSpuDOrrI9jDn1oKN\\\\nonq5sDU1i391zfQvdrbX4Ova48BN+B7p63FocP/MK5tyyBoT8zQEk2+vWDOw7H/Z\\\\nu5dTCPxTIsoIwUw1I+7yIxqJzLPFgR2gVBwY1ra/8iAqCj+zeBw=\\\\n-----END RSA PRIVATE KEY-----\\\\n\\\"\",\n \"webhook_secret\" : \"\\\"6fba8f2fc8a7e8f2cca5577eddd82ca7586b3b6b\\\"\",\n \"client_secret\" : \"\\\"1d4b2097ac622ba702d19de498f005747a8b21d3\\\"\",\n \"id\" : 37,\n \"events\" : [ \"label\", \"deployment\" ],\n \"slug\" : \"probot-owners\",\n \"node_id\" : \"MDExOkludGVncmF0aW9uMQ==\"\n },\n \"updated_at\" : \"2011-04-14T16:00:49Z\",\n \"html_url\" : \"https://web.example.mocklab.io/761740\",\n \"reactions\" : {\n \"confused\" : 7841581611997354445,\n \"-1\" : 8114953172403044094,\n \"+1\" : 6547782602431222140,\n \"total_count\" : 7028347065014425772,\n \"rocket\" : 6475247896281545686,\n \"hooray\" : 895845971694879973,\n \"eyes\" : 9205936320435092414,\n \"heart\" : 4812685754766732216,\n \"laugh\" : 3152155531710947642,\n \"url\" : \"https://web.example.mocklab.io/073119\"\n },\n \"id\" : 42,\n \"user\" : {\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"login\" : \"octocat\",\n \"starred_at\" : \"\\\"2020-07-09T00:17:55Z\\\"\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"html_url\" : \"https://github.com/octocat\",\n \"name\" : \"ehtel.carter\",\n \"site_admin\" : false,\n \"id\" : 1,\n \"gravatar_id\" : \"41d064eb2195891e12d0413f63227ea7\",\n \"email\" : \"h0kr6eal2y2lwri0fygk9nvk9x97yyaphyciqsw66zxunvosdagxyqkse5b09s005iyn8xf2v7u72mjr92tgf9vq552ud2y2dbzsgn3illvzkp00y\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\"\n },\n \"node_id\" : \"rn2i\"\n }\n },\n \"repo\" : {\n \"name\" : \"Opal Hessel\",\n \"id\" : 5613844003335090693,\n \"url\" : \"https://web.example.mocklab.io/112139\"\n },\n \"created_at\" : \"2023-07-03T20:55:20.706Z\",\n \"id\" : \"45xq\",\n \"type\" : \"lq6o92sgz4317gghot2ghjcualfbik15uv2pe1hx815qq0zuozvlbvmqz\"\n} ]", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "bc0945ae-c326-4803-bd14-ffef1f2c418d", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.707545Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "activity/list-public-events", + "schema": { + "items": { + "$ref": "#/components/schemas/event" + }, + "type": "array" + } + } + } + }, + "insertionIndex": 1286 + }, + { + "id": "d71d3b31-2c44-4e71-9cc5-0a8c6bea4af8", + "name": "Get users statistics", + "request": { + "urlPath": "/enterprise/stats/users", + "method": "GET" + }, + "response": { + "status": 200, + "body": "{\n \"suspended_users\" : 4780750970659132775,\n \"total_users\" : 1891002600067602575,\n \"admin_users\" : 5856689876128996179\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "d71d3b31-2c44-4e71-9cc5-0a8c6bea4af8", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.659123Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "enterprise-admin/get-user-stats", + "schema": { + "properties": { + "admin_users": { + "type": "integer" + }, + "suspended_users": { + "type": "integer" + }, + "total_users": { + "type": "integer" + } + }, + "required": ["total_users", "admin_users", "suspended_users"], + "title": "Enterprise User Stats", + "type": "object" + } + } + } + }, + "insertionIndex": 1287 + }, + { + "id": "6b65f1cb-1201-475d-a3d2-2c73b021e345", + "name": "Get repository statistics", + "request": { + "urlPath": "/enterprise/stats/repos", + "method": "GET" + }, + "response": { + "status": 200, + "body": "{\n \"org_repos\" : 5988059895702034235,\n \"total_pushes\" : 6630372228186570889,\n \"total_wikis\" : 4974710841929462218,\n \"fork_repos\" : 6169892449869817176,\n \"total_repos\" : 1357733120865873236,\n \"root_repos\" : 6502541154572461596\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "6b65f1cb-1201-475d-a3d2-2c73b021e345", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.659038Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "enterprise-admin/get-repo-stats", + "schema": { + "properties": { + "fork_repos": { + "type": "integer" + }, + "org_repos": { + "type": "integer" + }, + "root_repos": { + "type": "integer" + }, + "total_pushes": { + "type": "integer" + }, + "total_repos": { + "type": "integer" + }, + "total_wikis": { + "type": "integer" + } + }, + "required": [ + "total_repos", + "root_repos", + "fork_repos", + "org_repos", + "total_pushes", + "total_wikis" + ], + "title": "Repository Enterprise Stats", + "type": "object" + } + } + } + }, + "insertionIndex": 1288 + }, + { + "id": "2d024365-e635-45d1-9640-e0a4fb571ea9", + "name": "Get pull request statistics", + "request": { + "urlPath": "/enterprise/stats/pulls", + "method": "GET" + }, + "response": { + "status": 200, + "body": "{\n \"mergeable_pulls\" : 1814439589264686752,\n \"merged_pulls\" : 5221064638626669711,\n \"total_pulls\" : 2527349650017150161,\n \"unmergeable_pulls\" : 9213756673344642984\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "2d024365-e635-45d1-9640-e0a4fb571ea9", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.658913Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "enterprise-admin/get-pull-request-stats", + "schema": { + "properties": { + "mergeable_pulls": { + "type": "integer" + }, + "merged_pulls": { + "type": "integer" + }, + "total_pulls": { + "type": "integer" + }, + "unmergeable_pulls": { + "type": "integer" + } + }, + "required": ["total_pulls", "merged_pulls", "mergeable_pulls", "unmergeable_pulls"], + "title": "Enterprise Pull Request Stats", + "type": "object" + } + } + } + }, + "insertionIndex": 1289 + }, + { + "id": "d2172da6-ae22-4aec-a496-366da682fe2e", + "name": "Get pages statistics", + "request": { + "urlPath": "/enterprise/stats/pages", + "method": "GET" + }, + "response": { + "status": 200, + "body": "{\n \"total_pages\" : 7738576680606785959\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "d2172da6-ae22-4aec-a496-366da682fe2e", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.658814Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "enterprise-admin/get-pages-stats", + "schema": { + "properties": { + "total_pages": { + "type": "integer" + } + }, + "required": ["total_pages"], + "title": "Enterprise Pages Stats", + "type": "object" + } + } + } + }, + "insertionIndex": 1290 + }, + { + "id": "f8836906-9c3a-4bf3-845d-e5a9e2615a18", + "name": "Get organization statistics", + "request": { + "urlPath": "/enterprise/stats/orgs", + "method": "GET" + }, + "response": { + "status": 200, + "body": "{\n \"disabled_orgs\" : 433501885644391210,\n \"total_teams\" : 816560015408992236,\n \"total_orgs\" : 1127835974199809328,\n \"total_team_members\" : 6866322798842918704\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "f8836906-9c3a-4bf3-845d-e5a9e2615a18", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.658759Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "enterprise-admin/get-org-stats", + "schema": { + "properties": { + "disabled_orgs": { + "type": "integer" + }, + "total_orgs": { + "type": "integer" + }, + "total_team_members": { + "type": "integer" + }, + "total_teams": { + "type": "integer" + } + }, + "required": ["total_orgs", "disabled_orgs", "total_teams", "total_team_members"], + "title": "Enterprise Organization Stats", + "type": "object" + } + } + } + }, + "insertionIndex": 1291 + }, + { + "id": "c2fe112b-232d-401b-8e22-172b52c16b5b", + "name": "Get milestone statistics", + "request": { + "urlPath": "/enterprise/stats/milestones", + "method": "GET" + }, + "response": { + "status": 200, + "body": "{\n \"total_milestones\" : 8772236958277946015,\n \"closed_milestones\" : 6597996007605040439,\n \"open_milestones\" : 388528613643577036\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "c2fe112b-232d-401b-8e22-172b52c16b5b", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.658661Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "enterprise-admin/get-milestone-stats", + "schema": { + "properties": { + "closed_milestones": { + "type": "integer" + }, + "open_milestones": { + "type": "integer" + }, + "total_milestones": { + "type": "integer" + } + }, + "required": ["total_milestones", "open_milestones", "closed_milestones"], + "title": "Enterprise Milestone Stats", + "type": "object" + } + } + } + }, + "insertionIndex": 1292 + }, + { + "id": "3ebafc5e-1067-43b5-8d2c-f8b3525b36d7", + "name": "Get issue statistics", + "request": { + "urlPath": "/enterprise/stats/issues", + "method": "GET" + }, + "response": { + "status": 200, + "body": "{\n \"total_issues\" : 7913089095440488588,\n \"closed_issues\" : 2941299250738845025,\n \"open_issues\" : 6836957505952687264\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "3ebafc5e-1067-43b5-8d2c-f8b3525b36d7", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.65857Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "enterprise-admin/get-issue-stats", + "schema": { + "properties": { + "closed_issues": { + "type": "integer" + }, + "open_issues": { + "type": "integer" + }, + "total_issues": { + "type": "integer" + } + }, + "required": ["total_issues", "open_issues", "closed_issues"], + "title": "Enterprise Issue Stats", + "type": "object" + } + } + } + }, + "insertionIndex": 1293 + }, + { + "id": "56aba0f4-50b0-440b-a999-0e64e23d6e86", + "name": "Get hooks statistics", + "request": { + "urlPath": "/enterprise/stats/hooks", + "method": "GET" + }, + "response": { + "status": 200, + "body": "{\n \"active_hooks\" : 7892695273777757951,\n \"inactive_hooks\" : 6509059928717026644,\n \"total_hooks\" : 4295366838855395863\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "56aba0f4-50b0-440b-a999-0e64e23d6e86", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.658488Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "enterprise-admin/get-hooks-stats", + "schema": { + "properties": { + "active_hooks": { + "type": "integer" + }, + "inactive_hooks": { + "type": "integer" + }, + "total_hooks": { + "type": "integer" + } + }, + "required": ["total_hooks", "active_hooks", "inactive_hooks"], + "title": "Hooks Enterprise Stats", + "type": "object" + } + } + } + }, + "insertionIndex": 1294 + }, + { + "id": "5a4226cb-ed1b-4a8b-b3a9-9f8754770aef", + "name": "Get gist statistics", + "request": { + "urlPath": "/enterprise/stats/gists", + "method": "GET" + }, + "response": { + "status": 200, + "body": "{\n \"total_gists\" : 497524993440468669,\n \"public_gists\" : 8279329668275778293,\n \"private_gists\" : 2448982305943128805\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "5a4226cb-ed1b-4a8b-b3a9-9f8754770aef", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.658407Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "(none)", + "schema": { + "properties": { + "private_gists": { + "type": "integer" + }, + "public_gists": { + "type": "integer" + }, + "total_gists": { + "type": "integer" + } + }, + "required": ["total_gists", "private_gists", "public_gists"], + "title": "Enterprise Gist Stats", + "type": "object" + } + } + } + }, + "insertionIndex": 1295 + }, + { + "id": "56b0278b-2dde-4a49-9db2-9ef79cda80ac", + "name": "Get comment statistics", + "request": { + "urlPath": "/enterprise/stats/comments", + "method": "GET" + }, + "response": { + "status": 200, + "body": "{\n \"total_gist_comments\" : 3374930187528069707,\n \"total_commit_comments\" : 549953986262026600,\n \"total_issue_comments\" : 4374292792694845460,\n \"total_pull_request_comments\" : 8899110955939933618\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "56b0278b-2dde-4a49-9db2-9ef79cda80ac", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.658327Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "enterprise-admin/get-comment-stats", + "schema": { + "properties": { + "total_commit_comments": { + "type": "integer" + }, + "total_gist_comments": { + "type": "integer" + }, + "total_issue_comments": { + "type": "integer" + }, + "total_pull_request_comments": { + "type": "integer" + } + }, + "required": [ + "total_commit_comments", + "total_gist_comments", + "total_issue_comments", + "total_pull_request_comments" + ], + "title": "Enterprise Comment Stats", + "type": "object" + } + } + } + }, + "insertionIndex": 1296 + }, + { + "id": "d34eb994-436b-4089-82a1-a0c164292eee", + "name": "Get all statistics - default", + "request": { + "urlPath": "/enterprise/stats/all", + "method": "GET" + }, + "response": { + "status": 200, + "body": "{\n \"comments\" : {\n \"total_commit_comments\" : 6,\n \"total_gist_comments\" : 28,\n \"total_issue_comments\" : 366,\n \"total_pull_request_comments\" : 30\n },\n \"gists\" : {\n \"private_gists\" : 151,\n \"public_gists\" : 25,\n \"total_gists\" : 178\n },\n \"hooks\" : {\n \"active_hooks\" : 23,\n \"inactive_hooks\" : 4,\n \"total_hooks\" : 27\n },\n \"issues\" : {\n \"closed_issues\" : 96,\n \"open_issues\" : 83,\n \"total_issues\" : 179\n },\n \"milestones\" : {\n \"closed_milestones\" : 1,\n \"open_milestones\" : 6,\n \"total_milestones\" : 7\n },\n \"orgs\" : {\n \"disabled_orgs\" : 0,\n \"total_orgs\" : 33,\n \"total_team_members\" : 314,\n \"total_teams\" : 60\n },\n \"pages\" : {\n \"total_pages\" : 36\n },\n \"pulls\" : {\n \"mergeable_pulls\" : 21,\n \"merged_pulls\" : 60,\n \"total_pulls\" : 86,\n \"unmergeable_pulls\" : 3\n },\n \"repos\" : {\n \"fork_repos\" : 18,\n \"org_repos\" : 51,\n \"root_repos\" : 194,\n \"total_pushes\" : 3082,\n \"total_repos\" : 212,\n \"total_wikis\" : 15\n },\n \"users\" : {\n \"admin_users\" : 45,\n \"suspended_users\" : 21,\n \"total_users\" : 254\n }\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "d34eb994-436b-4089-82a1-a0c164292eee", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.658221Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "enterprise-admin/get-all-stats", + "schema": { + "properties": { + "comments": { + "$ref": "#/components/schemas/enterprise-comment-overview" + }, + "gists": { + "$ref": "#/components/schemas/enterprise-gist-overview" + }, + "hooks": { + "$ref": "#/components/schemas/enterprise-hook-overview" + }, + "issues": { + "$ref": "#/components/schemas/enterprise-issue-overview" + }, + "milestones": { + "$ref": "#/components/schemas/enterprise-milestone-overview" + }, + "orgs": { + "$ref": "#/components/schemas/enterprise-organization-overview" + }, + "pages": { + "$ref": "#/components/schemas/enterprise-page-overview" + }, + "pulls": { + "$ref": "#/components/schemas/enterprise-pull-request-overview" + }, + "repos": { + "$ref": "#/components/schemas/enterprise-repository-overview" + }, + "users": { + "$ref": "#/components/schemas/enterprise-user-overview" + } + }, + "type": "object" + } + } + } + }, + "insertionIndex": 1297 + }, + { + "id": "1e284101-1b3d-43f2-a116-04da5a4f3435", + "name": "Get license information - default", + "request": { + "urlPath": "/enterprise/settings/license", + "method": "GET" + }, + "response": { + "status": 200, + "body": "{\n \"days_until_expiration\" : 365,\n \"expire_at\" : \"2016/02/06 12:41:52 -0600\",\n \"kind\" : \"standard\",\n \"seats\" : 1400,\n \"seats_available\" : 84,\n \"seats_used\" : 1316\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "1e284101-1b3d-43f2-a116-04da5a4f3435", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.658161Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "enterprise-admin/get-license-information", + "schema": { + "properties": { + "days_until_expiration": { + "type": "integer" + }, + "expire_at": { + "type": "string" + }, + "kind": { + "type": "string" + }, + "seats": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "integer" + } + ] + }, + "seats_available": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "integer" + } + ] + }, + "seats_used": { + "type": "integer" + } + }, + "type": "object" + } + } + } + }, + "insertionIndex": 1298 + }, + { + "id": "f86a1f25-6a93-4ac5-99e0-893a59ffa074", + "name": "Get emojis - 304", + "request": { + "urlPath": "/emojis", + "method": "GET" + }, + "response": { + "status": 304 + }, + "uuid": "f86a1f25-6a93-4ac5-99e0-893a59ffa074", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.658012Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "emojis/get" + } + } + }, + "insertionIndex": 1299 + }, + { + "id": "5959b553-badf-44bd-8873-a85acc77f0e1", + "name": "Get emojis (application/json)", + "request": { + "urlPath": "/emojis", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 200, + "body": "{ }", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "5959b553-badf-44bd-8873-a85acc77f0e1", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.65799Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "emojis/get", + "schema": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + } + } + }, + "insertionIndex": 1300 + }, + { + "id": "31cd4aa1-58fe-41dd-a3bb-02855e5554bc", + "name": "Get a code of conduct (application/json)", + "request": { + "urlPath": "/codes_of_conduct/p8d9uxeykj41rztxkjucs41hpvgzieif6y57le63b7u2q0h33rxroxoyxug9tv1ywo4jfgv6ch47hz0wc09d9133c404", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/578737\",\n \"message\" : \"Nemo illo animi. Commodi omnis autem. Rerum quasi vitae. Atque non nihil voluptas.\",\n \"url\" : \"https://web.example.mocklab.io/303089\",\n \"status\" : \"z7acjr2zldtgl742s6zk2pdu\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "31cd4aa1-58fe-41dd-a3bb-02855e5554bc", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.657938Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "codes-of-conduct/get-conduct-code", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 1301 + }, + { + "id": "1f588a1a-729d-4d70-bcd7-8684fe40ecb2", + "name": "Get a code of conduct - 304", + "request": { + "urlPath": "/codes_of_conduct/2aw76cfjpypd0ufua5bhu7svvyeropjhbc4l0xybv", + "method": "GET" + }, + "response": { + "status": 304 + }, + "uuid": "1f588a1a-729d-4d70-bcd7-8684fe40ecb2", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.657719Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "codes-of-conduct/get-conduct-code" + } + } + }, + "insertionIndex": 1302 + }, + { + "id": "53bf5916-ac44-4e1d-bcfb-c41d2faa9e3e", + "name": "Get a code of conduct (application/json) - default", + "request": { + "urlPath": "/codes_of_conduct/vdvn9xajqo5859jmfk9441qo7yyjyg", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 200, + "body": "{\n \"body\" : \"# Contributor Covenant Code of Conduct\\n\\n## Our Pledge\\n\\nIn the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation.\\n\\n## Our Standards\\n\\nExamples of behavior that contributes to creating a positive environment include:\\n\\n* Using welcoming and inclusive language\\n* Being respectful of differing viewpoints and experiences\\n* Gracefully accepting constructive criticism\\n* Focusing on what is best for the community\\n* Showing empathy towards other community members\\n\\nExamples of unacceptable behavior by participants include:\\n\\n* The use of sexualized language or imagery and unwelcome sexual attention or advances\\n* Trolling, insulting/derogatory comments, and personal or political attacks\\n* Public or private harassment\\n* Publishing others' private information, such as a physical or electronic address, without explicit permission\\n* Other conduct which could reasonably be considered inappropriate in a professional setting\\n\\n## Our Responsibilities\\n\\nProject maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response\\n to any instances of unacceptable behavior.\\n\\nProject maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful.\\n\\n## Scope\\n\\nThis Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address,\\n posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers.\\n\\n## Enforcement\\n\\nInstances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at [EMAIL]. The project team will review and investigate all complaints, and will respond in a way that it deems appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately.\\n\\nProject maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership.\\n\\n## Attribution\\n\\nThis Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at [http://contributor-covenant.org/version/1/4][version]\\n\\n[homepage]: http://contributor-covenant.org\\n[version]: http://contributor-covenant.org/version/1/4/\\n\",\n \"html_url\" : \"http://contributor-covenant.org/version/1/4/\",\n \"key\" : \"contributor_covenant\",\n \"name\" : \"Contributor Covenant\",\n \"url\" : \"https://api.github.com/codes_of_conduct/contributor_covenant\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "53bf5916-ac44-4e1d-bcfb-c41d2faa9e3e", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.657682Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "codes-of-conduct/get-conduct-code", + "schema": { + "description": "Code Of Conduct", + "properties": { + "body": { + "example": "# Contributor Covenant Code of Conduct\n\n## Our Pledge\n\nIn the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation.\n\n## Our Standards\n\nExamples of behavior that contributes to creating a positive environment include:\n\n* Using welcoming and inclusive language\n* Being respectful of differing viewpoints and experiences\n* Gracefully accepting constructive criticism\n* Focusing on what is best for the community\n* Showing empathy towards other community members\n\nExamples of unacceptable behavior by participants include:\n\n* The use of sexualized language or imagery and unwelcome sexual attention or advances\n* Trolling, insulting/derogatory comments, and personal or political attacks\n* Public or private harassment\n* Publishing others' private information, such as a physical or electronic address, without explicit permission\n* Other conduct which could reasonably be considered inappropriate in a professional setting\n\n## Our Responsibilities\n\nProject maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response\n to any instances of unacceptable behavior.\n\nProject maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful.\n\n## Scope\n\nThis Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address,\n posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers.\n\n## Enforcement\n\nInstances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at [EMAIL]. The project team will review and investigate all complaints, and will respond in a way that it deems appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately.\n\nProject maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership.\n\n## Attribution\n\nThis Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at [http://contributor-covenant.org/version/1/4][version]\n\n[homepage]: http://contributor-covenant.org\n[version]: http://contributor-covenant.org/version/1/4/\n", + "type": "string" + }, + "html_url": { + "format": "uri", + "nullable": true, + "type": "string" + }, + "key": { + "example": "contributor_covenant", + "type": "string" + }, + "name": { + "example": "Contributor Covenant", + "type": "string" + }, + "url": { + "example": "https://api.github.com/codes_of_conduct/contributor_covenant", + "format": "uri", + "type": "string" + } + }, + "required": ["url", "html_url", "key", "name"], + "title": "Code Of Conduct", + "type": "object" + } + } + } + }, + "insertionIndex": 1303 + }, + { + "id": "76716ec1-f6e3-4f6e-b975-489328175ae1", + "name": "Get all codes of conduct - 304", + "request": { + "urlPath": "/codes_of_conduct", + "method": "GET" + }, + "response": { + "status": 304 + }, + "uuid": "76716ec1-f6e3-4f6e-b975-489328175ae1", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.657561Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "codes-of-conduct/get-all-codes-of-conduct" + } + } + }, + "insertionIndex": 1304 + }, + { + "id": "1fe8ae55-d2dc-47f7-8a2f-2461b2dd59e8", + "name": "Get all codes of conduct (application/json) - default", + "request": { + "urlPath": "/codes_of_conduct", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 200, + "body": "[ {\n \"html_url\" : \"http://citizencodeofconduct.org/\",\n \"key\" : \"citizen_code_of_conduct\",\n \"name\" : \"Citizen Code of Conduct\",\n \"url\" : \"https://api.github.com/codes_of_conduct/citizen_code_of_conduct\"\n}, {\n \"html_url\" : \"https://www.contributor-covenant.org/version/2/0/code_of_conduct/\",\n \"key\" : \"contributor_covenant\",\n \"name\" : \"Contributor Covenant\",\n \"url\" : \"https://api.github.com/codes_of_conduct/contributor_covenant\"\n} ]", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "1fe8ae55-d2dc-47f7-8a2f-2461b2dd59e8", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.657537Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "codes-of-conduct/get-all-codes-of-conduct", + "schema": { + "items": { + "$ref": "#/components/schemas/code-of-conduct" + }, + "type": "array" + } + } + } + }, + "insertionIndex": 1305 + }, + { + "id": "d1594326-a9cf-4fa4-8b79-ad6afe9e3c02", + "name": "Update an existing authorization", + "request": { + "urlPath": "/authorizations/6837630787308517442", + "method": "PATCH" + }, + "response": { + "status": 422, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/596110\",\n \"message\" : \"Ratione fuga quidem voluptatem perspiciatis fugiat incidunt. Vel soluta voluptas aut sint. Rerum hic voluptatem voluptates quae et sed. Ut pariatur corporis error. Non ut quaerat aut eaque rem.\",\n \"errors\" : [ {\n \"code\" : \"s272cxda1vjm2n1x0j26zz681bw5s61dqn91v6hiafbw3ajr97ads6x0fvrvi3w033woy70nh0r4uf48q88rz6wn62edukxw9z2pa0px8tp1ixhvaocr19s5erj3zo7\",\n \"field\" : \"7ec49pv2537d\",\n \"resource\" : \"5oc0pulfct8v0ftt1825esd2kvn25ylo7ttfoxbnpb3wfqimq6ghumnco9bh5lwqzllfo2rhpp5i5rbaupyqh3fj9ddbm6kpst0nntrlf0bsh4k\",\n \"index\" : 1302642617714400804,\n \"message\" : \"Repudiandae necessitatibus consequuntur aut error quia vel velit. Vero cupiditate aliquam. Harum quia fugiat in aut. Illum non expedita sequi quis magnam. Ad in rerum et aperiam quidem.\",\n \"value\" : { }\n }, {\n \"code\" : \"6bfewz91zdqyixvvjmtx1jd4kylpr4ffjqxt02f31ubwd2qphd7wij9k32y5gs54drwmywbumqwk8q83em47nnaqiwqyds4def83vuxkpise9wg\",\n \"field\" : \"ufe9sfc3eyfzqqbx0imnu9el\",\n \"resource\" : \"ytz7n17fhpoovird\",\n \"index\" : 1708611191895309328,\n \"message\" : \"Numquam eos aliquam. Qui dolore harum itaque cupiditate. Ea facere et. Tenetur id voluptatum in quasi nobis exercitationem.\",\n \"value\" : { }\n } ]\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "d1594326-a9cf-4fa4-8b79-ad6afe9e3c02", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.657492Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "oauth-authorizations/update-authorization", + "schema": { + "description": "Validation Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "errors": { + "items": { + "properties": { + "code": { + "type": "string" + }, + "field": { + "type": "string" + }, + "index": { + "type": "integer" + }, + "message": { + "type": "string" + }, + "resource": { + "type": "string" + }, + "value": { + "oneOf": [ + { + "nullable": true, + "type": "string" + }, + { + "nullable": true, + "type": "integer" + }, + { + "items": { + "type": "string" + }, + "nullable": true, + "type": "array" + } + ] + } + }, + "required": ["code"], + "type": "object" + }, + "type": "array" + }, + "message": { + "type": "string" + } + }, + "required": ["message", "documentation_url"], + "title": "Validation Error", + "type": "object" + } + } + } + }, + "insertionIndex": 1306 + }, + { + "id": "992cfc0b-01ee-43f0-9226-6a88dc04a599", + "name": "Update an existing authorization - default", + "request": { + "urlPath": "/authorizations/4104843713961541405", + "method": "PATCH" + }, + "response": { + "status": 200, + "body": "{\n \"app\" : {\n \"client_id\" : \"abcde12345fghij67890\",\n \"name\" : \"my github app\",\n \"url\" : \"http://my-github-app.com\"\n },\n \"created_at\" : \"2011-09-06T17:26:27Z\",\n \"fingerprint\" : \"jklmnop12345678\",\n \"hashed_token\" : \"25f94a2a5c7fbaf499c665bc73d67c1c87e496da8985131633ee0a95819db2e8\",\n \"id\" : 1,\n \"note\" : \"optional note\",\n \"note_url\" : \"http://optional/note/url\",\n \"scopes\" : [ \"public_repo\" ],\n \"token\" : \"ghu_16C7e42F292c6912E7710c838347Ae178B4a\",\n \"token_last_eight\" : \"Ae178B4a\",\n \"updated_at\" : \"2011-09-06T20:39:23Z\",\n \"url\" : \"https://api.github.com/authorizations/1\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "992cfc0b-01ee-43f0-9226-6a88dc04a599", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.657053Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "oauth-authorizations/update-authorization", + "schema": { + "description": "The authorization for an OAuth app, GitHub App, or a Personal Access Token.", + "properties": { + "app": { + "properties": { + "client_id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "url": { + "format": "uri", + "type": "string" + } + }, + "required": ["client_id", "name", "url"], + "type": "object" + }, + "created_at": { + "format": "date-time", + "type": "string" + }, + "fingerprint": { + "nullable": true, + "type": "string" + }, + "hashed_token": { + "nullable": true, + "type": "string" + }, + "id": { + "type": "integer" + }, + "installation": { + "$ref": "#/components/schemas/nullable-scoped-installation" + }, + "note": { + "nullable": true, + "type": "string" + }, + "note_url": { + "format": "uri", + "nullable": true, + "type": "string" + }, + "scopes": { + "description": "A list of scopes that this authorization is in.", + "items": { + "type": "string" + }, + "nullable": true, + "type": "array" + }, + "token": { + "type": "string" + }, + "token_last_eight": { + "nullable": true, + "type": "string" + }, + "updated_at": { + "format": "date-time", + "type": "string" + }, + "url": { + "format": "uri", + "type": "string" + }, + "user": { + "$ref": "#/components/schemas/nullable-simple-user" + } + }, + "required": [ + "app", + "id", + "note", + "note_url", + "scopes", + "token", + "hashed_token", + "token_last_eight", + "fingerprint", + "url", + "created_at", + "updated_at", + "expires_at" + ], + "title": "Authorization", + "type": "object" + } + } + } + }, + "insertionIndex": 1307 + }, + { + "id": "dcd7b941-5e2c-4d5d-a34b-17a2c130cccb", + "name": "Get a single authorization (application/json)", + "request": { + "urlPath": "/authorizations/4557320515565296207", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 403, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/994392\",\n \"message\" : \"Sunt et non quibusdam vero est quis dolorem. Voluptatum sed explicabo quis vero et veniam. Ab deleniti distinctio consequatur molestiae.\",\n \"url\" : \"https://web.example.mocklab.io/467984\",\n \"status\" : \"f7gif7a63rfdiwumnvvqnaa9ctl2q4rvtw2dp0mcil8r0jp4xgtomq5mlmo1un6rdahd3gtedpthd8grhbfpnjwe7hjtn013obagbmp975o9vt64lc8mo83\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "dcd7b941-5e2c-4d5d-a34b-17a2c130cccb", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.656854Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "oauth-authorizations/get-authorization", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 1308 + }, + { + "id": "f5d5f5aa-1c8a-47f1-b87e-d6a245f5be1c", + "name": "Get a single authorization (application/json)", + "request": { + "urlPath": "/authorizations/4984983031067566333", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 401, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/238501\",\n \"message\" : \"Error optio harum earum asperiores. Qui reprehenderit commodi repellendus ut adipisci sit. Iste maxime voluptas totam consequatur dignissimos ipsam. Et perspiciatis vel totam beatae.\",\n \"url\" : \"https://web.example.mocklab.io/689639\",\n \"status\" : \"h4ghb2njfs59t268uk2d51nvmzr3amsbcj3q53xhutqow0cjtu3riff52af24zu259sfd2ep4yn8ztym0i1sj5xn675w4dharrgozo53co7pkp4k3rky7bveff0108nz7hu93okgnru7ope50i3qsdz68qt9w5eaw\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "f5d5f5aa-1c8a-47f1-b87e-d6a245f5be1c", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.656639Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "oauth-authorizations/get-authorization", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 1309 + }, + { + "id": "34d7e9d5-f6cd-4d13-8e01-23b7543a12f3", + "name": "Get a single authorization - 304", + "request": { + "urlPath": "/authorizations/6006495192646506445", + "method": "GET" + }, + "response": { + "status": 304 + }, + "uuid": "34d7e9d5-f6cd-4d13-8e01-23b7543a12f3", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.656424Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "oauth-authorizations/get-authorization" + } + } + }, + "insertionIndex": 1310 + }, + { + "id": "6367c034-1a82-4e35-8839-32af1c9e157e", + "name": "Get a single authorization (application/json) - default", + "request": { + "urlPath": "/authorizations/688841796984453733", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 200, + "body": "{\n \"app\" : {\n \"client_id\" : \"abcde12345fghij67890\",\n \"name\" : \"my github app\",\n \"url\" : \"http://my-github-app.com\"\n },\n \"created_at\" : \"2011-09-06T17:26:27Z\",\n \"fingerprint\" : \"jklmnop12345678\",\n \"hashed_token\" : \"25f94a2a5c7fbaf499c665bc73d67c1c87e496da8985131633ee0a95819db2e8\",\n \"id\" : 1,\n \"note\" : \"optional note\",\n \"note_url\" : \"http://optional/note/url\",\n \"scopes\" : [ \"public_repo\" ],\n \"token\" : \"ghu_16C7e42F292c6912E7710c838347Ae178B4a\",\n \"token_last_eight\" : \"Ae178B4a\",\n \"updated_at\" : \"2011-09-06T20:39:23Z\",\n \"url\" : \"https://api.github.com/authorizations/1\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "6367c034-1a82-4e35-8839-32af1c9e157e", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.656389Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "oauth-authorizations/get-authorization", + "schema": { + "description": "The authorization for an OAuth app, GitHub App, or a Personal Access Token.", + "properties": { + "app": { + "properties": { + "client_id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "url": { + "format": "uri", + "type": "string" + } + }, + "required": ["client_id", "name", "url"], + "type": "object" + }, + "created_at": { + "format": "date-time", + "type": "string" + }, + "fingerprint": { + "nullable": true, + "type": "string" + }, + "hashed_token": { + "nullable": true, + "type": "string" + }, + "id": { + "type": "integer" + }, + "installation": { + "$ref": "#/components/schemas/nullable-scoped-installation" + }, + "note": { + "nullable": true, + "type": "string" + }, + "note_url": { + "format": "uri", + "nullable": true, + "type": "string" + }, + "scopes": { + "description": "A list of scopes that this authorization is in.", + "items": { + "type": "string" + }, + "nullable": true, + "type": "array" + }, + "token": { + "type": "string" + }, + "token_last_eight": { + "nullable": true, + "type": "string" + }, + "updated_at": { + "format": "date-time", + "type": "string" + }, + "url": { + "format": "uri", + "type": "string" + }, + "user": { + "$ref": "#/components/schemas/nullable-simple-user" + } + }, + "required": [ + "app", + "id", + "note", + "note_url", + "scopes", + "token", + "hashed_token", + "token_last_eight", + "fingerprint", + "url", + "created_at", + "updated_at", + "expires_at" + ], + "title": "Authorization", + "type": "object" + } + } + } + }, + "insertionIndex": 1311 + }, + { + "id": "3c7df7dd-d2bd-446f-a3a8-e67fc7a2f903", + "name": "Delete an authorization (application/json)", + "request": { + "urlPath": "/authorizations/6919651582008085485", + "method": "DELETE", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 403, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/198884\",\n \"message\" : \"Magni ipsa a at facilis officiis. Fugit quo doloremque sint recusandae. Eligendi laborum mollitia dolores. Id voluptatem laudantium placeat in.\",\n \"url\" : \"https://web.example.mocklab.io/610186\",\n \"status\" : \"bu74liw4gckhzwhof94pkn7cc0ait384ohe669nc8sow72uzhsat4np089h1to1fv8\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "3c7df7dd-d2bd-446f-a3a8-e67fc7a2f903", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.656218Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "oauth-authorizations/delete-authorization", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 1312 + }, + { + "id": "cab5444a-9f32-49c1-adec-76a74a5b435b", + "name": "Delete an authorization (application/json)", + "request": { + "urlPath": "/authorizations/2295358160241859548", + "method": "DELETE", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 401, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/853617\",\n \"message\" : \"Adipisci quia voluptatem non dolore. Quo accusantium voluptatem ut ut quidem. Quos soluta voluptatem. Excepturi blanditiis voluptatem dolorem repudiandae ducimus numquam. Excepturi laboriosam minus la\",\n \"url\" : \"https://web.example.mocklab.io/307238\",\n \"status\" : \"ufvwynczroj0p3fh2u8ipr5opby3qs2gpnis9mxkf6jzwdhddbn\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "cab5444a-9f32-49c1-adec-76a74a5b435b", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.656006Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "oauth-authorizations/delete-authorization", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 1313 + }, + { + "id": "0b9df6d0-ce77-4192-b2ae-29692fa1f13a", + "name": "Delete an authorization - 304", + "request": { + "urlPath": "/authorizations/6706711266472978478", + "method": "DELETE" + }, + "response": { + "status": 304 + }, + "uuid": "0b9df6d0-ce77-4192-b2ae-29692fa1f13a", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.655775Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "oauth-authorizations/delete-authorization" + } + } + }, + "insertionIndex": 1314 + }, + { + "id": "a819de58-360e-466c-a17e-e640103a8cee", + "name": "Delete an authorization - 204", + "request": { + "urlPath": "/authorizations/3155637585045490195", + "method": "DELETE" + }, + "response": { + "status": 204 + }, + "uuid": "a819de58-360e-466c-a17e-e640103a8cee", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.655755Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "oauth-authorizations/delete-authorization" + } + } + }, + "insertionIndex": 1315 + }, + { + "id": "7b9003a3-def2-4e3d-b31b-0acdb6b4b11e", + "name": "Get-or-create an authorization for a specific app and fingerprint", + "request": { + "urlPath": "/authorizations/clients/3sr0/mvpye8jrp5a81hjw4phdbd0qfk5sw2ii7waxq1zgonx9v88tgd4jla11vkxe9vo0hvn6w7aytd1yjhi0txw44en2fx8aal61dtrlp19spq0ubgkhhx5ib0jv0vxjhqi", + "method": "PUT" + }, + "response": { + "status": 422, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/899035\",\n \"message\" : \"Aut rerum architecto sed enim ut consequuntur. Voluptatem deserunt quam. Molestiae aliquid fugiat. Iusto fuga debitis et non fugiat. Sunt harum ut consectetur qui aut id sit.\",\n \"errors\" : [ {\n \"code\" : \"7piutmd3xdg4lccuo1kup8t07eb9eyi1nj88n0yv1hqtkhox8tq06hyjkymkopupxu6nr53m8uesbn8kd404fv8gzmf0gukwpijqv950axxd99ik2mxsqiti2p2zqdmtjin7pk6ngepw0j987e3ecig\",\n \"field\" : \"dwj9p92gh7zokr0evy4clegf2rsozg9u30rtk42aip7s97o57kadj7ah1kysrqjk1w087lr13q3seu2nr2hw3orf13fims1w96ojgnx3n8h8\",\n \"resource\" : \"s4eddccwze9gnckqmkdu1u\",\n \"index\" : 2308280336026780005,\n \"message\" : \"Et nulla consequatur architecto. Blanditiis consequuntur sit quisquam earum saepe autem. Itaque corporis maiores qui. Ab magnam harum molestiae rerum.\",\n \"value\" : { }\n }, {\n \"code\" : \"9561t531v45uhtbkzfxdbpk4c8k5gd4w2pbgmv44o25yv4q8ergp9n583thvhu7bjnowzuyeinafj9awb4t6z7gwxuapi024tf9pt9jexivqh43vi8jmj6tl7duhbw3y\",\n \"field\" : \"45p9qczzuwpg9jaqddi9wb8nuppce3visdeg51kpwaus57in1kw11\",\n \"resource\" : \"lse2uxejauh4bbr0751089ztxj3nv9ayuzbakdw0k7uwplxieckci2zp1auxpbbezz1v6v7jvag9wzpoa9umiveybhhaye074ar8po4eiutcgdgh09uvo41bgjgzqryis6jysnn8yz7veulr0a2qo74ag07ni64ftussvxn4fdotgzp0imxsneu1rcmftu\",\n \"index\" : 5793918253581249712,\n \"message\" : \"Rerum et magnam voluptas possimus incidunt et doloremque. Maxime natus qui excepturi et. Sunt facere unde autem expedita.\",\n \"value\" : { }\n }, {\n \"code\" : \"tcokse8pjxpea9xf22wkx4u8drpcmz8jl1e228c9my56ydbufuwmbf9z6u82e5hsdzhp0d2outzkrb0dr98jb3zvqtfcx5rqhcp9\",\n \"field\" : \"wqcrlnxdsjh26qvtvx2616t1nti838q1hge5k61rkq2ammxizrjinolvz3vxj2x15f3x3dr3gn0dqj7e5o98ksn645tghef5qvbp6ndx1fd0ozpg0bjnfxaopzi97lz6t020xc24ycxwjhwtdu3ubvqdkoss0alss5ju0x7dfzq4jur0zcjne\",\n \"resource\" : \"8vcp3f4fwjl83sgqjt5912vf7lbbxfdrh9p7jlxq15006o4daxdie5m6u31wiq6gvbegvialnorza346z6bnanqfccmmfmfskle67s643sy4x12bih6z4as553xwcnekqthlw874bvm045slfd3zxokexwafkokmrlf2yi3fg32vud216acmord6c4y7zfgs9l59\",\n \"index\" : 6139421714517899182,\n \"message\" : \"Asperiores culpa et soluta omnis quo. Et ipsa officia. Ab rem dolores. Ducimus voluptatibus quia est voluptas.\",\n \"value\" : { }\n }, {\n \"code\" : \"bczr6zuu5ylrgv3j9s7njk3aaw9ybe2b0moofm7744lvduyklpso5bnpbs1ci0d5w4eh3mo\",\n \"field\" : \"kjuktif63ljxkj0jfjxhttlgc2kfzsk6910mvrwlptos1czcjgca0lsjyjs1mvi0hiuxpje\",\n \"resource\" : \"2lzlig62nakyj6h5f2axu0j2ut0hgcanpirya2ymtgfx6bzd5zommnj8h0ukufm3q0j88r0umtpej0vg6cjumerhe72bwebq1wafvhbhgo413ztdp93tygehl38uqb4ic2knspj85tqpo\",\n \"index\" : 1249236679977423943,\n \"message\" : \"Assumenda at sit voluptatem libero. Porro illo qui excepturi esse omnis. Dolorem deleniti reprehenderit laudantium. Quisquam et doloribus ut nesciunt. Voluptas culpa fugit earum tempora repellendus in\",\n \"value\" : { }\n }, {\n \"code\" : \"eag4rup1qnis6hi6cum4h9ufwusr4ymz85611g9ilyqsxnuc73hx9uyye0v1z8wc9ufoj2exn9e8euvimuc6zdxj51k8mlq3kvb9ujcr\",\n \"field\" : \"lrpvu7cvy0yaw1paxii5rdekwiuwgltnlsug7i09vshfijuk7b1\",\n \"resource\" : \"vewcbq9rct8y1h7lsedopjxm57ro4slf1sozxa\",\n \"index\" : 1142130308183563220,\n \"message\" : \"Voluptates iste eos quo nobis necessitatibus. Dignissimos dolore occaecati est aut sed. Maxime excepturi blanditiis est tempore autem.\",\n \"value\" : { }\n }, {\n \"code\" : \"ocgavn3jmtz0f37903g00wl0rsoekb81dim4ltj2j5w6k2hxvxk6ga1oaa3zbkic665nxzkshza66n8dobuugarttqtruh8mcc72yyt9xxx7jdtxj9h0ilcv3qlehpwhrbld7lmlmp0554f86sed05ra0rlc81km\",\n \"field\" : \"wcve1qbnz\",\n \"resource\" : \"tp6yhpmv0hlnakzgifi4dw2w7vz1nmt1ms9qsa0kt65036sdhae2pelf4akqe7titbv06yuwrt134zrnpr3kmkzyu5xgvibti7cajgsgf1aka9moxfao\",\n \"index\" : 1511221007364586900,\n \"message\" : \"Rem dolores cum explicabo ut. Non repellat qui velit. Fugiat optio officiis ex. Est labore eum ullam rerum voluptatem.\",\n \"value\" : { }\n } ]\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "7b9003a3-def2-4e3d-b31b-0acdb6b4b11e", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.655716Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "oauth-authorizations/get-or-create-authorization-for-app-and-fingerprint", + "schema": { + "description": "Validation Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "errors": { + "items": { + "properties": { + "code": { + "type": "string" + }, + "field": { + "type": "string" + }, + "index": { + "type": "integer" + }, + "message": { + "type": "string" + }, + "resource": { + "type": "string" + }, + "value": { + "oneOf": [ + { + "nullable": true, + "type": "string" + }, + { + "nullable": true, + "type": "integer" + }, + { + "items": { + "type": "string" + }, + "nullable": true, + "type": "array" + } + ] + } + }, + "required": ["code"], + "type": "object" + }, + "type": "array" + }, + "message": { + "type": "string" + } + }, + "required": ["message", "documentation_url"], + "title": "Validation Error", + "type": "object" + } + } + } + }, + "insertionIndex": 1316 + }, + { + "id": "64ae7dea-89d4-4924-929a-7f12bf10460c", + "name": "Get-or-create an authorization for a specific app and fingerprint - default", + "request": { + "urlPath": "/authorizations/clients/uk60/dqy223srux91xpqao3rs1dxau9tt6lng3mcw5s0st5khdf5oh1noeu5q7jxkmbbv9y3j1nxrsg9jv3szkx346zaa1apsmyqqxbslnr19fcp9jtc9bspg6gaeq154b8co41d4a9ci1mveexhra2i", + "method": "PUT" + }, + "response": { + "status": 201, + "body": "{\n \"app\" : {\n \"client_id\" : \"abcde12345fghij67890\",\n \"name\" : \"my github app\",\n \"url\" : \"http://my-github-app.com\"\n },\n \"created_at\" : \"2011-09-06T17:26:27Z\",\n \"fingerprint\" : \"jklmnop12345678\",\n \"hashed_token\" : \"25f94a2a5c7fbaf499c665bc73d67c1c87e496da8985131633ee0a95819db2e8\",\n \"id\" : 1,\n \"note\" : \"optional note\",\n \"note_url\" : \"http://optional/note/url\",\n \"scopes\" : [ \"public_repo\" ],\n \"token\" : \"ghu_16C7e42F292c6912E7710c838347Ae178B4a\",\n \"token_last_eight\" : \"Ae178B4a\",\n \"updated_at\" : \"2011-09-06T20:39:23Z\",\n \"url\" : \"https://api.github.com/authorizations/1\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "64ae7dea-89d4-4924-929a-7f12bf10460c", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.65491Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "oauth-authorizations/get-or-create-authorization-for-app-and-fingerprint", + "schema": { + "description": "The authorization for an OAuth app, GitHub App, or a Personal Access Token.", + "properties": { + "app": { + "properties": { + "client_id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "url": { + "format": "uri", + "type": "string" + } + }, + "required": ["client_id", "name", "url"], + "type": "object" + }, + "created_at": { + "format": "date-time", + "type": "string" + }, + "fingerprint": { + "nullable": true, + "type": "string" + }, + "hashed_token": { + "nullable": true, + "type": "string" + }, + "id": { + "type": "integer" + }, + "installation": { + "$ref": "#/components/schemas/nullable-scoped-installation" + }, + "note": { + "nullable": true, + "type": "string" + }, + "note_url": { + "format": "uri", + "nullable": true, + "type": "string" + }, + "scopes": { + "description": "A list of scopes that this authorization is in.", + "items": { + "type": "string" + }, + "nullable": true, + "type": "array" + }, + "token": { + "type": "string" + }, + "token_last_eight": { + "nullable": true, + "type": "string" + }, + "updated_at": { + "format": "date-time", + "type": "string" + }, + "url": { + "format": "uri", + "type": "string" + }, + "user": { + "$ref": "#/components/schemas/nullable-simple-user" + } + }, + "required": [ + "app", + "id", + "note", + "note_url", + "scopes", + "token", + "hashed_token", + "token_last_eight", + "fingerprint", + "url", + "created_at", + "updated_at", + "expires_at" + ], + "title": "Authorization", + "type": "object" + } + } + } + }, + "insertionIndex": 1317 + }, + { + "id": "01d8e37e-2c69-4b20-bee3-35ffb291066c", + "name": "Get-or-create an authorization for a specific app and fingerprint - response-if-returning-an-existing-token", + "request": { + "urlPath": "/authorizations/clients/12s4/a9xnwr6f44p3pguxu9xd6tc7vtnn0tkdmptsnctmiva6wsk30myhjdrfv4e", + "method": "PUT" + }, + "response": { + "status": 200, + "body": "{\n \"app\" : {\n \"client_id\" : \"abcde12345fghij67890\",\n \"name\" : \"my github app\",\n \"url\" : \"http://my-github-app.com\"\n },\n \"created_at\" : \"2011-09-06T17:26:27Z\",\n \"fingerprint\" : \"jklmnop12345678\",\n \"hashed_token\" : \"25f94a2a5c7fbaf499c665bc73d67c1c87e496da8985131633ee0a95819db2e8\",\n \"id\" : 1,\n \"note\" : \"optional note\",\n \"note_url\" : \"http://optional/note/url\",\n \"scopes\" : [ \"public_repo\" ],\n \"token\" : \"ghu_16C7e42F292c6912E7710c838347Ae178B4a\",\n \"token_last_eight\" : \"Ae178B4a\",\n \"updated_at\" : \"2011-09-06T20:39:23Z\",\n \"url\" : \"https://api.github.com/authorizations/1\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "01d8e37e-2c69-4b20-bee3-35ffb291066c", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.654708Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "oauth-authorizations/get-or-create-authorization-for-app-and-fingerprint", + "schema": { + "description": "The authorization for an OAuth app, GitHub App, or a Personal Access Token.", + "properties": { + "app": { + "properties": { + "client_id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "url": { + "format": "uri", + "type": "string" + } + }, + "required": ["client_id", "name", "url"], + "type": "object" + }, + "created_at": { + "format": "date-time", + "type": "string" + }, + "fingerprint": { + "nullable": true, + "type": "string" + }, + "hashed_token": { + "nullable": true, + "type": "string" + }, + "id": { + "type": "integer" + }, + "installation": { + "$ref": "#/components/schemas/nullable-scoped-installation" + }, + "note": { + "nullable": true, + "type": "string" + }, + "note_url": { + "format": "uri", + "nullable": true, + "type": "string" + }, + "scopes": { + "description": "A list of scopes that this authorization is in.", + "items": { + "type": "string" + }, + "nullable": true, + "type": "array" + }, + "token": { + "type": "string" + }, + "token_last_eight": { + "nullable": true, + "type": "string" + }, + "updated_at": { + "format": "date-time", + "type": "string" + }, + "url": { + "format": "uri", + "type": "string" + }, + "user": { + "$ref": "#/components/schemas/nullable-simple-user" + } + }, + "required": [ + "app", + "id", + "note", + "note_url", + "scopes", + "token", + "hashed_token", + "token_last_eight", + "fingerprint", + "url", + "created_at", + "updated_at", + "expires_at" + ], + "title": "Authorization", + "type": "object" + } + } + } + }, + "insertionIndex": 1318 + }, + { + "id": "d18c4ff1-230e-425e-a844-92555ba51b69", + "name": "Get-or-create an authorization for a specific app (application/json)", + "request": { + "urlPath": "/authorizations/clients/65ge", + "method": "PUT", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 422, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/832525\",\n \"message\" : \"Eos nemo consequatur dolorem inventore non a. Ex qui consequatur voluptate temporibus. Quod et maxime.\",\n \"errors\" : [ {\n \"code\" : \"qqhee2qbz7xsz8t3a2e8axrro5e1ku8h1q7jh66f61vol80w2y9ni03i1khbkwbka6fi3k5cqv88slvpar\",\n \"field\" : \"lrg8b7twxa5m9n6su07uu1sv89n1h4nr80u7sfmaafcz9hlgfk3x5a0gq5y7p0fwhloqmfakatcrm9gf8jwjnyxlxhs1w0q53aibwj85ezt8l6u8t7vze8iq9r5n7797krwwj0uy8yn88k0cuhl3lgxei1t1tt3ymnyn2ouehu2pyr26bppl9ijic8x7e\",\n \"resource\" : \"295np5jzufnj2ej0y1fpaxr1amq7zjhnjuoawm\",\n \"index\" : 2950192618301648677,\n \"message\" : \"Dolorem nemo necessitatibus odit. Facilis eaque soluta sed hic laboriosam. Quia ab ullam. Enim neque sapiente reiciendis aperiam repellat.\",\n \"value\" : { }\n }, {\n \"code\" : \"ndjbdnnbums1803sh1dsyzefv4qb8hzru2pxbshkct58y4sol5yqhecpbbe4742vwq5xl21xzixhs1awmme7envp1sb1dwfdd9vh6pchlkhz6s7lcbrb4c36lvytlbax5ioheopfkkzvlc01bc5xofrs3iea0u2o8dr6a9i9ak14tfp282e292pzvr71hykw6q0ca\",\n \"field\" : \"ej0zy9\",\n \"resource\" : \"hglehbve2upz6x4sq2cl3puv2ng8wmegr7gvnr35xkymek7vj8mmp2u\",\n \"index\" : 726377481338632160,\n \"message\" : \"Saepe voluptatem non. Odit maxime cupiditate atque quos. Nisi odit dolore occaecati minima. Praesentium aut sunt architecto.\",\n \"value\" : { }\n }, {\n \"code\" : \"7goe4uammnsmve2t4wpl8hf91\",\n \"field\" : \"pidoahpkbf8t0o2nz5oquhu5dqvcdny2ymrxebnak3w2k79ktqjmhmah07z4stipwzbsh6hmm9s6xs67806lwtcqqbkx8e2t79a9iahx644tqz21etm41nffcyfy2s2flms73jadb80yy4zzn4umr3481ockmti1tg06fdh75uv9jqz32x7w9b08aiqa\",\n \"resource\" : \"dgjyp6lppad63fim1mowm8a05x1lqleu3hz3z1iwv79ix15iqsiwz7popvbxi1uyc2hf1nfmpxxih0nlswdoz1jt24yyq3al8amg8l2queodqn6ral81a0kubayoe0x59hgdwqu9yff0te\",\n \"index\" : 4397375595172388642,\n \"message\" : \"Molestias in maxime fugiat dolores ut velit tempora. Autem quod ea voluptas commodi quia cum. Quo dolorem natus officia id qui. Quis et quia eveniet quidem totam tempora.\",\n \"value\" : { }\n }, {\n \"code\" : \"ryevys181sei3skr\",\n \"field\" : \"4o817zstpo4tz5p6kb50zjb8ai6tm7grk2j03uhcjohra0y6d2fwc10szk4ol6404oph9my22e6k1s9etr9vdzw8hmcv9dkj426zu6mdu1yfg3vsnfhljjv8tnmzkfw\",\n \"resource\" : \"6ejj2mrezx0mlg6esytf96pwav12oktw9dy0nd43okbcrhepweyhdws2ojefrlwmuntdjyamogi1e8l60bddapin4kluzg6wy0slno\",\n \"index\" : 2690260282644803479,\n \"message\" : \"Corrupti optio est deleniti. Quam exercitationem numquam et consectetur repellat ratione quos. Et inventore qui vel magnam. Ex eum voluptas in praesentium. Dicta rerum quisquam aliquam voluptatem quo \",\n \"value\" : { }\n }, {\n \"code\" : \"fknnid24ad3lmkzklbabggy6bj1sigxs80b9ldiz55qxgz5v02mciclqqvafezeg6rkqum9w96rgjfx5ia0m9apqo2g0d\",\n \"field\" : \"b7s0v5rtnapw51s\",\n \"resource\" : \"9kujqu4lc6envq49pq4kdurfdr8zvjm2wwzggtvtjm32xp426yg9pb4i2h91f48kcd4yzu27nmph29i6mgnbkd3nr291lianlmy8kjn5mwtftctkp4h5g5u0pipfurg5ffkgv60dj8x9qri0nvg8np776izuxixcidu7r8ame5vem\",\n \"index\" : 2436117752991445669,\n \"message\" : \"Dolores ab tenetur omnis veritatis incidunt. Natus eos voluptas suscipit ut. Animi vitae et corporis et. Quibusdam deserunt perspiciatis. Et consequatur deleniti.\",\n \"value\" : { }\n }, {\n \"code\" : \"s3he8a8glkffz5pas0ovivmplpfsltg172n1x1qyl0i5a8qdi94xau0xyw7tg5fsy\",\n \"field\" : \"tpe5t34o7o3frqklp4whmws9q2zknuvha9421ver1bqjtcotcbklpq0v1gy1n8vc804c09cce1z2j2l93yoxdt1wsmyqh2ucb4wbri6b012nir3f8\",\n \"resource\" : \"wemdya993ca3q6uzznwt5dzh4slk0p8gbbzts6uayq0xauny0j3vd380u4lyvq5kv0dugfpezo80dl6p1c9klk0u119obbrnxm842ywmzq59by4p5aqoil85so1es9xdtwfnqydim3k5kybeh994m\",\n \"index\" : 7479777805860611310,\n \"message\" : \"Architecto voluptatem mollitia. Qui ea dolorum eveniet. Aut necessitatibus quia veniam veritatis voluptatem autem labore. Quibusdam atque veniam deserunt et consequatur quia cupiditate.\",\n \"value\" : { }\n } ]\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "d18c4ff1-230e-425e-a844-92555ba51b69", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.654453Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "oauth-authorizations/get-or-create-authorization-for-app", + "schema": { + "description": "Validation Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "errors": { + "items": { + "properties": { + "code": { + "type": "string" + }, + "field": { + "type": "string" + }, + "index": { + "type": "integer" + }, + "message": { + "type": "string" + }, + "resource": { + "type": "string" + }, + "value": { + "oneOf": [ + { + "nullable": true, + "type": "string" + }, + { + "nullable": true, + "type": "integer" + }, + { + "items": { + "type": "string" + }, + "nullable": true, + "type": "array" + } + ] + } + }, + "required": ["code"], + "type": "object" + }, + "type": "array" + }, + "message": { + "type": "string" + } + }, + "required": ["message", "documentation_url"], + "title": "Validation Error", + "type": "object" + } + } + } + }, + "insertionIndex": 1319 + }, + { + "id": "521dd1cb-8553-4272-9624-c63b66a1d663", + "name": "Get-or-create an authorization for a specific app (application/json)", + "request": { + "urlPath": "/authorizations/clients/tf61", + "method": "PUT", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 403, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/322062\",\n \"message\" : \"Commodi voluptas consectetur consequatur eos sed. Exercitationem non sunt dolorum expedita expedita dolorem. Est velit quia. Ut minus sed autem enim sequi. Ullam consectetur ad et eos inventore repudi\",\n \"url\" : \"https://web.example.mocklab.io/380984\",\n \"status\" : \"6o4u9lr4lr0se36e5gcavm7p3eyt31pqvaiomg9atreiia9fy295rluz2h9v8mz7073vui0pvan06hmm90fxx2bs46zrx9sk7zbqa7do7pxgvhdmc6ezgg5rb5yy72rwvaylxj4s9sbw40g0yemjs8u\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "521dd1cb-8553-4272-9624-c63b66a1d663", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.653654Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "oauth-authorizations/get-or-create-authorization-for-app", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 1320 + }, + { + "id": "9023143d-8d45-4115-a15f-e2a155626f8c", + "name": "Get-or-create an authorization for a specific app (application/json)", + "request": { + "urlPath": "/authorizations/clients/o2b3", + "method": "PUT", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 401, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/892135\",\n \"message\" : \"Beatae consequatur earum distinctio quidem officiis. Exercitationem qui molestiae aliquam qui commodi numquam aut. Minima quo qui vitae temporibus animi qui quis.\",\n \"url\" : \"https://web.example.mocklab.io/327098\",\n \"status\" : \"3y8zxkqugbxnyqrgs5e1mxb5mk2x1cv1syzh3qyyxsd135ufri3997sk9g9d4frzup4nhya9vo1jasd4wlq4bhc932b5bmrfjgp4g4qdi5evy1hibxafbolpkfzqi\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "9023143d-8d45-4115-a15f-e2a155626f8c", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.653376Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "oauth-authorizations/get-or-create-authorization-for-app", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 1321 + }, + { + "id": "584440a2-a573-473a-a47a-91b862dc65ad", + "name": "Get-or-create an authorization for a specific app - 304", + "request": { + "urlPath": "/authorizations/clients/gd43", + "method": "PUT" + }, + "response": { + "status": 304 + }, + "uuid": "584440a2-a573-473a-a47a-91b862dc65ad", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.653086Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "oauth-authorizations/get-or-create-authorization-for-app" + } + } + }, + "insertionIndex": 1322 + }, + { + "id": "863a489f-ec55-4870-a49f-3ea3afa25183", + "name": "Get-or-create an authorization for a specific app (application/json) - default", + "request": { + "urlPath": "/authorizations/clients/bx71", + "method": "PUT", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 201, + "body": "{\n \"app\" : {\n \"client_id\" : \"abcde12345fghij67890\",\n \"name\" : \"my github app\",\n \"url\" : \"http://my-github-app.com\"\n },\n \"created_at\" : \"2011-09-06T17:26:27Z\",\n \"fingerprint\" : \"jklmnop12345678\",\n \"hashed_token\" : \"25f94a2a5c7fbaf499c665bc73d67c1c87e496da8985131633ee0a95819db2e8\",\n \"id\" : 1,\n \"note\" : \"optional note\",\n \"note_url\" : \"http://optional/note/url\",\n \"scopes\" : [ \"public_repo\" ],\n \"token\" : \"ghu_16C7e42F292c6912E7710c838347Ae178B4a\",\n \"token_last_eight\" : \"Ae178B4a\",\n \"updated_at\" : \"2011-09-06T20:39:23Z\",\n \"url\" : \"https://api.github.com/authorizations/1\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "863a489f-ec55-4870-a49f-3ea3afa25183", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.652987Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "oauth-authorizations/get-or-create-authorization-for-app", + "schema": { + "description": "The authorization for an OAuth app, GitHub App, or a Personal Access Token.", + "properties": { + "app": { + "properties": { + "client_id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "url": { + "format": "uri", + "type": "string" + } + }, + "required": ["client_id", "name", "url"], + "type": "object" + }, + "created_at": { + "format": "date-time", + "type": "string" + }, + "fingerprint": { + "nullable": true, + "type": "string" + }, + "hashed_token": { + "nullable": true, + "type": "string" + }, + "id": { + "type": "integer" + }, + "installation": { + "$ref": "#/components/schemas/nullable-scoped-installation" + }, + "note": { + "nullable": true, + "type": "string" + }, + "note_url": { + "format": "uri", + "nullable": true, + "type": "string" + }, + "scopes": { + "description": "A list of scopes that this authorization is in.", + "items": { + "type": "string" + }, + "nullable": true, + "type": "array" + }, + "token": { + "type": "string" + }, + "token_last_eight": { + "nullable": true, + "type": "string" + }, + "updated_at": { + "format": "date-time", + "type": "string" + }, + "url": { + "format": "uri", + "type": "string" + }, + "user": { + "$ref": "#/components/schemas/nullable-simple-user" + } + }, + "required": [ + "app", + "id", + "note", + "note_url", + "scopes", + "token", + "hashed_token", + "token_last_eight", + "fingerprint", + "url", + "created_at", + "updated_at", + "expires_at" + ], + "title": "Authorization", + "type": "object" + } + } + } + }, + "insertionIndex": 1323 + }, + { + "id": "96242401-8129-499a-af19-aff24d7e6826", + "name": "Get-or-create an authorization for a specific app (application/json) - response-if-returning-an-existing-token", + "request": { + "urlPath": "/authorizations/clients/t77o", + "method": "PUT", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 200, + "body": "{\n \"app\" : {\n \"client_id\" : \"abcde12345fghij67890\",\n \"name\" : \"my github app\",\n \"url\" : \"http://my-github-app.com\"\n },\n \"created_at\" : \"2011-09-06T17:26:27Z\",\n \"fingerprint\" : \"\",\n \"hashed_token\" : \"25f94a2a5c7fbaf499c665bc73d67c1c87e496da8985131633ee0a95819db2e8\",\n \"id\" : 1,\n \"note\" : \"optional note\",\n \"note_url\" : \"http://optional/note/url\",\n \"scopes\" : [ \"public_repo\" ],\n \"token\" : \"ghu_16C7e42F292c6912E7710c838347Ae178B4a\",\n \"token_last_eight\" : \"Ae178B4a\",\n \"updated_at\" : \"2011-09-06T20:39:23Z\",\n \"url\" : \"https://api.github.com/authorizations/1\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "96242401-8129-499a-af19-aff24d7e6826", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.652788Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "oauth-authorizations/get-or-create-authorization-for-app", + "schema": { + "description": "The authorization for an OAuth app, GitHub App, or a Personal Access Token.", + "properties": { + "app": { + "properties": { + "client_id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "url": { + "format": "uri", + "type": "string" + } + }, + "required": ["client_id", "name", "url"], + "type": "object" + }, + "created_at": { + "format": "date-time", + "type": "string" + }, + "fingerprint": { + "nullable": true, + "type": "string" + }, + "hashed_token": { + "nullable": true, + "type": "string" + }, + "id": { + "type": "integer" + }, + "installation": { + "$ref": "#/components/schemas/nullable-scoped-installation" + }, + "note": { + "nullable": true, + "type": "string" + }, + "note_url": { + "format": "uri", + "nullable": true, + "type": "string" + }, + "scopes": { + "description": "A list of scopes that this authorization is in.", + "items": { + "type": "string" + }, + "nullable": true, + "type": "array" + }, + "token": { + "type": "string" + }, + "token_last_eight": { + "nullable": true, + "type": "string" + }, + "updated_at": { + "format": "date-time", + "type": "string" + }, + "url": { + "format": "uri", + "type": "string" + }, + "user": { + "$ref": "#/components/schemas/nullable-simple-user" + } + }, + "required": [ + "app", + "id", + "note", + "note_url", + "scopes", + "token", + "hashed_token", + "token_last_eight", + "fingerprint", + "url", + "created_at", + "updated_at", + "expires_at" + ], + "title": "Authorization", + "type": "object" + } + } + } + }, + "insertionIndex": 1324 + }, + { + "id": "cd2cbad6-5ac0-4caa-8189-1e51717e528d", + "name": "Create a new authorization (application/json)", + "request": { + "urlPath": "/authorizations", + "method": "POST", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 422, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/870315\",\n \"message\" : \"Velit qui sequi quisquam numquam totam aperiam. Nobis amet sit voluptatum porro et voluptate ut. Id ducimus sint ipsa animi et.\",\n \"errors\" : [ {\n \"code\" : \"ec0cyq5otx63lsqnv59hr9tqhf2m1hhafkyfg5ncqjduvhp0eiolq7lwfj8fjxdp2ryu27uauafxi5byoczjzr1um5syr7yv9p257o04g4me42oq2f4s9vld4sjhlkstpt\",\n \"field\" : \"0rjfcbmxdxdzi0334hdk0t3w8jsoho6v6vacmpw34a8fkapxyajes343hs4yp5fa89jcu2r8xh2rzz1alah1lo13lus27wbvtl3n1dmxeyfo0njp3u3\",\n \"resource\" : \"66slzttgegfnoxbymiepbsa9wkkb6lnh4rdqqy1qdu631323h2veyvzkvnaou5aw4wf13cpb1i3uo0ygpy73teqw85gxda4xonmpos4nswz712upxk6szjes3kighj87itewodftgcw0prbpjco5lw9\",\n \"index\" : 3937588213213328974,\n \"message\" : \"Ullam dolores iure dolores. Illum ut ex molestias. Voluptas alias non omnis qui commodi vel. Voluptatum aut quas id dolores quia.\",\n \"value\" : { }\n }, {\n \"code\" : \"hz9mmi5mmuo43ck46hdngo84vni3fquiwg7816xczmrm0p69ol85qv70so3skjffb0poz04yi2ijv8ovtflbelgtpwy2paffesedrw4g53qf\",\n \"field\" : \"niijvd6ftocl13ycth4l9kbllrecjpqtgeyu5ctxq8023z5tgov9b8tmpudcuxhkabs8w873rf0jwllou0ryt01yu63a29j7qv6te05iaq4f406wt9vjk6yt1gatcxbash77v\",\n \"resource\" : \"loh3t7uig9yh0at51dvtt9ggxaspfw1wzss0qas2tfv8ahrw3g5n4ksaolg4fjnay0m8sbdu5mkv3wxhg1ne73usvw6xhyb5y\",\n \"index\" : 8710657342992826222,\n \"message\" : \"In sit id. Corporis totam vitae debitis adipisci aut optio. Sunt fuga assumenda minus iure quibusdam.\",\n \"value\" : { }\n }, {\n \"code\" : \"z2k95f2131cfydo8clk1ex41td24311ygu4sh5n63ocn2s4qaurrcwatih769be\",\n \"field\" : \"3sk048e6ctywfhvaptajn84fy0vsugzpstsj363ni99dvgct3ilc9nkdkx0t1mf4objmofmbe1rnuqt40htam21cf1015p2zoo85qtdt0i4ejfby9dpyz93fy007td3xiksobaouln9m88or5f\",\n \"resource\" : \"d0b0f2gcx31s0t4myqzb2801ecam6veq2r0mo9uac2gcd3inty2wtyq8jrulhzx2r9yo2h1b8ori8268927wgjjknetmlv609dr6mw8i5iu8l3fc1m2pp7q4zy3ipmr7nq\",\n \"index\" : 8866080238305575566,\n \"message\" : \"Eaque vero voluptas praesentium dolores. Explicabo qui qui accusantium asperiores impedit ut cum. Amet non placeat quo reprehenderit. Repellendus dolorem quia. Veritatis tempore ut quo dolor et est la\",\n \"value\" : { }\n }, {\n \"code\" : \"z20ldz3ld7kpe37rxjdmwpzuxpn38udbxhlqs4qwfqe6mev9yl8og1gs7xvjlbujyea1ykyzdf6y610cdmddas5\",\n \"field\" : \"b90pbrh71s42cyk1ep1op9ma0z0fkg0dyv8an0qc7fqtdjng03ah8ykywb2ix2em7ev4rj9fl04a9mp169dlew9pxjdl9os3nr1addinv4ugn4hnl648wyi7x0f4pvqhud22b8boxv88f9r1szw95v2ol9a76vdv3lq\",\n \"resource\" : \"s7hezyw2pae2t64xl3zncvcyn89alk8cb2xuu7ct2btg3u05ng9y89sal9z184s6emmwvjpaa5q1gntn1bylr4robejegas9nlkqhiesvlsqbgpzuch5u806e6g4cmczli9yd0h2f3bvp461l4m6c08v0m70p47igqn\",\n \"index\" : 7318013600451269170,\n \"message\" : \"Dolores autem et odit est dolorum. Sed earum qui quo harum. Ut sint possimus eos sit. Itaque officiis dolores aut enim enim et in. Eum sapiente eos qui minima est quia.\",\n \"value\" : { }\n } ]\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "cd2cbad6-5ac0-4caa-8189-1e51717e528d", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.652534Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "oauth-authorizations/create-authorization", + "schema": { + "description": "Validation Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "errors": { + "items": { + "properties": { + "code": { + "type": "string" + }, + "field": { + "type": "string" + }, + "index": { + "type": "integer" + }, + "message": { + "type": "string" + }, + "resource": { + "type": "string" + }, + "value": { + "oneOf": [ + { + "nullable": true, + "type": "string" + }, + { + "nullable": true, + "type": "integer" + }, + { + "items": { + "type": "string" + }, + "nullable": true, + "type": "array" + } + ] + } + }, + "required": ["code"], + "type": "object" + }, + "type": "array" + }, + "message": { + "type": "string" + } + }, + "required": ["message", "documentation_url"], + "title": "Validation Error", + "type": "object" + } + } + } + }, + "insertionIndex": 1325 + }, + { + "id": "97c4ae09-9b99-4104-9a58-f998622f5807", + "name": "Create a new authorization (application/json)", + "request": { + "urlPath": "/authorizations", + "method": "POST", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 410, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/668278\",\n \"message\" : \"Vero totam rerum et molestiae officia. Aperiam iure nemo voluptate omnis. Aut aliquam sunt. Saepe minima nam veniam id illum officia. Ratione est omnis culpa reiciendis.\",\n \"url\" : \"https://web.example.mocklab.io/401054\",\n \"status\" : \"l3sg6xnin38tnvhdyc4x9ma3c6k88sx7hqns26h93fuh14t9gnc1jygbyt7n40x7pq1pmvcfdaw74wm9cyiuspdg4txgkv1gmsz1gwrk3gv564tw7syivm7hd6hhoeoq40tx3eyb45att65rd7\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "97c4ae09-9b99-4104-9a58-f998622f5807", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.651928Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "oauth-authorizations/create-authorization", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 1326 + }, + { + "id": "a66889f5-6536-4a0a-a647-ee6f8dc8a4fc", + "name": "Create a new authorization (application/json)", + "request": { + "urlPath": "/authorizations", + "method": "POST", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 403, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/553416\",\n \"message\" : \"Adipisci quas nobis aperiam. Voluptas perspiciatis quis eveniet numquam nemo eveniet aut. Debitis ut error eum ut velit facere.\",\n \"url\" : \"https://web.example.mocklab.io/008045\",\n \"status\" : \"7dgpf7lut0f7qrrcns6u9ef9m7nyotpk3efrzcmw8zg9d5tusdl2grt8zbhfrd05bigp3u9pwalfu0i2hikqbrqej6orzlkyc5dxsxaull8x1y2lzvazwic8b9o1mh9wdidwehd1wrln2hh7kpjibpqlqjkg1tz2nq\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "a66889f5-6536-4a0a-a647-ee6f8dc8a4fc", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.651717Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "oauth-authorizations/create-authorization", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 1327 + }, + { + "id": "4583497c-865b-464c-b131-f28aa6f840b8", + "name": "Create a new authorization (application/json)", + "request": { + "urlPath": "/authorizations", + "method": "POST", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 401, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/408259\",\n \"message\" : \"Culpa nisi qui omnis sit non saepe rem. Incidunt non cum tenetur accusantium quis. Voluptatem voluptas dolor error. Sed eos quas eum. Quo dignissimos ipsam harum doloribus voluptas unde.\",\n \"url\" : \"https://web.example.mocklab.io/856290\",\n \"status\" : \"9vpajt7orhwp5niqactq78gfm6ix1hs5ufc61sjgkm0ogpole6q01o3ccf82d\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "4583497c-865b-464c-b131-f28aa6f840b8", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.651509Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "oauth-authorizations/create-authorization", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 1328 + }, + { + "id": "cc9798af-808c-4545-a0b6-9859bf3f0ece", + "name": "Create a new authorization - 304", + "request": { + "urlPath": "/authorizations", + "method": "POST" + }, + "response": { + "status": 304 + }, + "uuid": "cc9798af-808c-4545-a0b6-9859bf3f0ece", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.651294Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "oauth-authorizations/create-authorization" + } + } + }, + "insertionIndex": 1329 + }, + { + "id": "93c87107-49cf-47e0-af35-4c6834995bd6", + "name": "Create a new authorization (application/json) - default", + "request": { + "urlPath": "/authorizations", + "method": "POST", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 201, + "body": "{\n \"app\" : {\n \"client_id\" : \"abcde12345fghij67890\",\n \"name\" : \"my github app\",\n \"url\" : \"http://my-github-app.com\"\n },\n \"created_at\" : \"2011-09-06T17:26:27Z\",\n \"fingerprint\" : \"jklmnop12345678\",\n \"hashed_token\" : \"25f94a2a5c7fbaf499c665bc73d67c1c87e496da8985131633ee0a95819db2e8\",\n \"id\" : 1,\n \"note\" : \"optional note\",\n \"note_url\" : \"http://optional/note/url\",\n \"scopes\" : [ \"public_repo\" ],\n \"token\" : \"ghu_16C7e42F292c6912E7710c838347Ae178B4a\",\n \"token_last_eight\" : \"Ae178B4a\",\n \"updated_at\" : \"2011-09-06T20:39:23Z\",\n \"url\" : \"https://api.github.com/authorizations/1\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "93c87107-49cf-47e0-af35-4c6834995bd6", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.651265Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "oauth-authorizations/create-authorization", + "schema": { + "description": "The authorization for an OAuth app, GitHub App, or a Personal Access Token.", + "properties": { + "app": { + "properties": { + "client_id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "url": { + "format": "uri", + "type": "string" + } + }, + "required": ["client_id", "name", "url"], + "type": "object" + }, + "created_at": { + "format": "date-time", + "type": "string" + }, + "fingerprint": { + "nullable": true, + "type": "string" + }, + "hashed_token": { + "nullable": true, + "type": "string" + }, + "id": { + "type": "integer" + }, + "installation": { + "$ref": "#/components/schemas/nullable-scoped-installation" + }, + "note": { + "nullable": true, + "type": "string" + }, + "note_url": { + "format": "uri", + "nullable": true, + "type": "string" + }, + "scopes": { + "description": "A list of scopes that this authorization is in.", + "items": { + "type": "string" + }, + "nullable": true, + "type": "array" + }, + "token": { + "type": "string" + }, + "token_last_eight": { + "nullable": true, + "type": "string" + }, + "updated_at": { + "format": "date-time", + "type": "string" + }, + "url": { + "format": "uri", + "type": "string" + }, + "user": { + "$ref": "#/components/schemas/nullable-simple-user" + } + }, + "required": [ + "app", + "id", + "note", + "note_url", + "scopes", + "token", + "hashed_token", + "token_last_eight", + "fingerprint", + "url", + "created_at", + "updated_at", + "expires_at" + ], + "title": "Authorization", + "type": "object" + } + } + } + }, + "insertionIndex": 1330 + }, + { + "id": "b2188255-ec7b-4464-b5f3-2e88aca8de0b", + "name": "List your authorizations (application/json)", + "request": { + "urlPath": "/authorizations", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/553113\",\n \"message\" : \"Ab ab vel et numquam et ipsa enim. Quas incidunt nobis et aut ut. Eos delectus quae est quia natus et.\",\n \"url\" : \"https://web.example.mocklab.io/896820\",\n \"status\" : \"4ccbtxzun9qkszduemhn8vs3knbhjta15gdr9j7zki82i7d1913ef8xos9j4k9ryb3jhuvdsobb2rc0psgh7dgdew1ubmm5m38dkuxh5xro0qwpe6h5kz0xqhnmyxae009cow4t9ic3xpy9jbzcg5n7kqbxh8\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "b2188255-ec7b-4464-b5f3-2e88aca8de0b", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.651095Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "oauth-authorizations/list-authorizations", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 1331 + }, + { + "id": "7bdc2b08-e68f-499c-ba21-6d97881c0d23", + "name": "List your authorizations (application/json)", + "request": { + "urlPath": "/authorizations", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 403, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/918961\",\n \"message\" : \"Ad eos illum ut tempora eaque debitis optio. Dolores facilis sed est nisi. Eligendi voluptatem aliquam magni quod reprehenderit iste quas. Culpa repellat totam enim assumenda.\",\n \"url\" : \"https://web.example.mocklab.io/392184\",\n \"status\" : \"l6d76pub5czaer6g0xzxdf6dbfyxdr7g9y9og0y6x1h8uv14w9mjtsqh9qd9zqz16r8nclyc622y6ehti51iuu1medd3xvbmeewm6wc27xa49dqaus01n8al11umqd31jzrwfi2vuih6jzic8fn24feu4q1oz83a79b92awrpznwtsy6riqc21gkd7w8awyuv2e\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "7bdc2b08-e68f-499c-ba21-6d97881c0d23", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.650882Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "oauth-authorizations/list-authorizations", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 1332 + }, + { + "id": "a4898006-b075-4f2e-b3e0-39e02dcc676d", + "name": "List your authorizations (application/json)", + "request": { + "urlPath": "/authorizations", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 401, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/550813\",\n \"message\" : \"Qui voluptas corporis minima repellat corrupti eveniet. Corrupti enim est aut assumenda ullam. Officia quisquam sint.\",\n \"url\" : \"https://web.example.mocklab.io/215571\",\n \"status\" : \"mvmlursqetuizrahqpyuen75kofu36ws935lzbuvdhz4ygyr7aoeuw31n5ed6t1mhjf3qyavshmprim5u4smxmoxog5g324t4kauvcklds1ksf1qqrq6h19yskixh58pjpwnqh8hxyaugtrf0626lhyu3mbu4\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "a4898006-b075-4f2e-b3e0-39e02dcc676d", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.650666Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "oauth-authorizations/list-authorizations", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 1333 + }, + { + "id": "26f076bc-42b8-4dc6-bb7b-97f0a394cfa4", + "name": "List your authorizations - 304", + "request": { + "urlPath": "/authorizations", + "method": "GET" + }, + "response": { + "status": 304 + }, + "uuid": "26f076bc-42b8-4dc6-bb7b-97f0a394cfa4", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.650469Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "oauth-authorizations/list-authorizations" + } + } + }, + "insertionIndex": 1334 + }, + { + "id": "6c4bf2ff-cc21-4d1f-ac18-b9d8b8d5eefc", + "name": "List your authorizations (application/json) - default", + "request": { + "urlPath": "/authorizations", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 200, + "body": "[ {\n \"app\" : {\n \"client_id\" : \"00000000000000000000\",\n \"name\" : \"My personal access token\",\n \"url\" : \"https://docs.github.com/enterprise/rest/reference/enterprise-admin#list-personal-access-tokens\"\n },\n \"created_at\" : \"2019-04-24T21:49:02Z\",\n \"hashed_token\" : \"23cffb2fab1b0a62747863eba88cb9327e561f2f7a0c8661c0d9b83146cb8d45\",\n \"id\" : 2,\n \"note\" : \"My personal access token\",\n \"scopes\" : [ \"admin:business\", \"admin:gpg_key\", \"admin:org\", \"admin:org_hook\", \"admin:pre_receive_hook\", \"admin:public_key\", \"admin:repo_hook\", \"delete_repo\", \"gist\", \"notifications\", \"repo\", \"user\", \"write:discussion\" ],\n \"token\" : \"ghp_16C7e42F292c6912E7710c838347Ae178B4a\",\n \"token_last_eight\" : \"Ae178B4a\",\n \"updated_at\" : \"2019-04-24T21:49:02Z\",\n \"url\" : \"https://enterprise.octocat.com/api/v3/authorizations/2\"\n} ]", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "6c4bf2ff-cc21-4d1f-ac18-b9d8b8d5eefc", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.650444Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "oauth-authorizations/list-authorizations", + "schema": { + "items": { + "$ref": "#/components/schemas/authorization" + }, + "type": "array" + } + } + } + }, + "insertionIndex": 1335 + }, + { + "id": "3a1a9736-89fb-4882-860f-2495a2460483", + "name": "Get an app", + "request": { + "urlPath": "/apps/lr6v69wqwdbsatpln8cnxtoun21w0uw1l0bnw8mz0x2fuh49eg52b3pdbeu7um5iaxliqfw4h9ibz2v1a6pypgst2sjkr9160tkk3b9kkal64gc2aew31b5qep0qlvucqp0tjqmr1ohp5mor8ruxeoaowkx3e0zt5kp4yxxajmzcejx4l6fb5b", + "method": "GET" + }, + "response": { + "status": 415, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/502365\",\n \"message\" : \"Et dolores repellendus laboriosam ducimus et dolor. Mollitia voluptatem occaecati incidunt harum doloremque. Deleniti temporibus consequatur est qui est voluptatem. Et et voluptatem enim atque deserun\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "3a1a9736-89fb-4882-860f-2495a2460483", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.650399Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "apps/get-by-slug", + "schema": { + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": ["message", "documentation_url"], + "type": "object" + } + } + } + }, + "insertionIndex": 1336 + }, + { + "id": "29f6bb25-7003-4fe7-b02d-cb821f353925", + "name": "Get an app", + "request": { + "urlPath": "/apps/jvk58rxjlaa64qw7pg4o77xumuokt6pml5we57u3sbrqp04ae6i5lkutezw1944n1dksoxs8333pd0r3bspop4ee5uqeuw09cayy364nml3hf8t7sy46wdu3xd6qic44icopgshvc9s7fiwtbbcbj6mbjc8mriwae", + "method": "GET" + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/612824\",\n \"message\" : \"Voluptatem libero nam. Quia ut earum. Velit soluta numquam. Temporibus ut quidem quia corporis. Fugit et vero non ipsam.\",\n \"url\" : \"https://web.example.mocklab.io/204256\",\n \"status\" : \"nsvdvxreqlz3r1gxm5o37qlkb4kkyfbn2kkgj82cc0dj3nu2xh90pewfbspihzf0i5uwj214vi65bix9bx58of4p3hydfce2351hva0ah\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "29f6bb25-7003-4fe7-b02d-cb821f353925", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.650234Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "apps/get-by-slug", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 1337 + }, + { + "id": "fb054f1d-f226-461b-b006-ddb6e39b989c", + "name": "Get an app", + "request": { + "urlPath": "/apps/ht5eez4gttgt5gabmbcn6kw5tfjos8i2u4ox70j46erxyw3b6vvrh1qrqvfcp31zm2y8bhsikau606rij7fmv4t7tx8g8tr7lh9fe8hwlaop6q7ut0cvunxg6zrvy7i8wwjfxf09z1p", + "method": "GET" + }, + "response": { + "status": 403, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/735489\",\n \"message\" : \"Ut ut aliquid recusandae hic aut. Eaque hic voluptas illum rerum cupiditate est. Tempore dolor aliquam ex perspiciatis eveniet cumque.\",\n \"url\" : \"https://web.example.mocklab.io/025401\",\n \"status\" : \"8y6v5ws25qlwd0pc7dejeb4bkcdidqybcurh58icqzj171qwwir116yoidmmi0vpr1s4owxtd9usgpxd1ux9lvuygxjttkbij65ndrj6cd19xiwbicdlh1gisahtd26iyb9c2lqiuuw3abklk5iz748nph3g72xvj5959u45zp9ke49vh9pg1g2y41fv7l\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "fb054f1d-f226-461b-b006-ddb6e39b989c", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.650017Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "apps/get-by-slug", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 1338 + }, + { + "id": "4cba68cd-466d-488b-be30-3db4f44ceec2", + "name": "Get an app - default", + "request": { + "urlPath": "/apps/10rhnsqng5p46inh8dz6", + "method": "GET" + }, + "response": { + "status": 200, + "body": "{\n \"created_at\" : \"2017-07-08T16:18:44-04:00\",\n \"description\" : \"\",\n \"events\" : [ \"push\", \"pull_request\" ],\n \"external_url\" : \"https://example.com\",\n \"html_url\" : \"https://github.com/apps/octoapp\",\n \"id\" : 1,\n \"name\" : \"Octocat App\",\n \"node_id\" : \"MDExOkludGVncmF0aW9uMQ==\",\n \"owner\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/orgs/github/events\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"github\",\n \"node_id\" : \"MDEyOk9yZ2FuaXphdGlvbjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/orgs/github/repos\",\n \"site_admin\" : true,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/orgs/github\"\n },\n \"permissions\" : {\n \"contents\" : \"read\",\n \"issues\" : \"write\",\n \"metadata\" : \"read\",\n \"single_file\" : \"write\"\n },\n \"slug\" : \"octoapp\",\n \"updated_at\" : \"2017-07-08T16:18:44-04:00\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "4cba68cd-466d-488b-be30-3db4f44ceec2", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.649778Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "apps/get-by-slug", + "schema": { + "description": "GitHub apps are a new way to extend GitHub. They can be installed directly on organizations and user accounts and granted access to specific repositories. They come with granular permissions and built-in webhooks. GitHub apps are first class actors within GitHub.", + "properties": { + "client_id": { + "example": "\"Iv1.25b5d1e65ffc4022\"", + "type": "string" + }, + "client_secret": { + "example": "\"1d4b2097ac622ba702d19de498f005747a8b21d3\"", + "type": "string" + }, + "created_at": { + "example": "2017-07-08T16:18:44-04:00", + "format": "date-time", + "type": "string" + }, + "description": { + "example": "The description of the app.", + "nullable": true, + "type": "string" + }, + "events": { + "description": "The list of events for the GitHub app", + "example": ["label", "deployment"], + "items": { + "type": "string" + }, + "type": "array" + }, + "external_url": { + "example": "https://example.com", + "format": "uri", + "type": "string" + }, + "html_url": { + "example": "https://github.com/apps/super-ci", + "format": "uri", + "type": "string" + }, + "id": { + "description": "Unique identifier of the GitHub app", + "example": 37, + "type": "integer" + }, + "installations_count": { + "description": "The number of installations associated with the GitHub app", + "example": 5, + "type": "integer" + }, + "name": { + "description": "The name of the GitHub app", + "example": "Probot Owners", + "type": "string" + }, + "node_id": { + "example": "MDExOkludGVncmF0aW9uMQ==", + "type": "string" + }, + "owner": { + "$ref": "#/components/schemas/nullable-simple-user" + }, + "pem": { + "example": "\"-----BEGIN RSA PRIVATE KEY-----\\nMIIEogIBAAKCAQEArYxrNYD/iT5CZVpRJu4rBKmmze3PVmT/gCo2ATUvDvZTPTey\\nxcGJ3vvrJXazKk06pN05TN29o98jrYz4cengG3YGsXPNEpKsIrEl8NhbnxapEnM9\\nJCMRe0P5JcPsfZlX6hmiT7136GRWiGOUba2X9+HKh8QJVLG5rM007TBER9/z9mWm\\nrJuNh+m5l320oBQY/Qq3A7wzdEfZw8qm/mIN0FCeoXH1L6B8xXWaAYBwhTEh6SSn\\nZHlO1Xu1JWDmAvBCi0RO5aRSKM8q9QEkvvHP4yweAtK3N8+aAbZ7ovaDhyGz8r6r\\nzhU1b8Uo0Z2ysf503WqzQgIajr7Fry7/kUwpgQIDAQABAoIBADwJp80Ko1xHPZDy\\nfcCKBDfIuPvkmSW6KumbsLMaQv1aGdHDwwTGv3t0ixSay8CGlxMRtRDyZPib6SvQ\\n6OH/lpfpbMdW2ErkksgtoIKBVrDilfrcAvrNZu7NxRNbhCSvN8q0s4ICecjbbVQh\\nnueSdlA6vGXbW58BHMq68uRbHkP+k+mM9U0mDJ1HMch67wlg5GbayVRt63H7R2+r\\nVxcna7B80J/lCEjIYZznawgiTvp3MSanTglqAYi+m1EcSsP14bJIB9vgaxS79kTu\\noiSo93leJbBvuGo8QEiUqTwMw4tDksmkLsoqNKQ1q9P7LZ9DGcujtPy4EZsamSJT\\ny8OJt0ECgYEA2lxOxJsQk2kI325JgKFjo92mQeUObIvPfSNWUIZQDTjniOI6Gv63\\nGLWVFrZcvQBWjMEQraJA9xjPbblV8PtfO87MiJGLWCHFxmPz2dzoedN+2Coxom8m\\nV95CLz8QUShuao6u/RYcvUaZEoYs5bHcTmy5sBK80JyEmafJPtCQVxMCgYEAy3ar\\nZr3yv4xRPEPMat4rseswmuMooSaK3SKub19WFI5IAtB/e7qR1Rj9JhOGcZz+OQrl\\nT78O2OFYlgOIkJPvRMrPpK5V9lslc7tz1FSh3BZMRGq5jSyD7ETSOQ0c8T2O/s7v\\nbeEPbVbDe4mwvM24XByH0GnWveVxaDl51ABD65sCgYB3ZAspUkOA5egVCh8kNpnd\\nSd6SnuQBE3ySRlT2WEnCwP9Ph6oPgn+oAfiPX4xbRqkL8q/k0BdHQ4h+zNwhk7+h\\nWtPYRAP1Xxnc/F+jGjb+DVaIaKGU18MWPg7f+FI6nampl3Q0KvfxwX0GdNhtio8T\\nTj1E+SnFwh56SRQuxSh2gwKBgHKjlIO5NtNSflsUYFM+hyQiPiqnHzddfhSG+/3o\\nm5nNaSmczJesUYreH5San7/YEy2UxAugvP7aSY2MxB+iGsiJ9WD2kZzTUlDZJ7RV\\nUzWsoqBR+eZfVJ2FUWWvy8TpSG6trh4dFxImNtKejCR1TREpSiTV3Zb1dmahK9GV\\nrK9NAoGAbBxRLoC01xfxCTgt5BDiBcFVh4fp5yYKwavJPLzHSpuDOrrI9jDn1oKN\\nonq5sDU1i391zfQvdrbX4Ova48BN+B7p63FocP/MK5tyyBoT8zQEk2+vWDOw7H/Z\\nu5dTCPxTIsoIwUw1I+7yIxqJzLPFgR2gVBwY1ra/8iAqCj+zeBw=\\n-----END RSA PRIVATE KEY-----\\n\"", + "type": "string" + }, + "permissions": { + "additionalProperties": { + "type": "string" + }, + "description": "The set of permissions for the GitHub app", + "example": { + "deployments": "write", + "issues": "read" + }, + "properties": { + "checks": { + "type": "string" + }, + "contents": { + "type": "string" + }, + "deployments": { + "type": "string" + }, + "issues": { + "type": "string" + }, + "metadata": { + "type": "string" + } + }, + "type": "object" + }, + "slug": { + "description": "The slug name of the GitHub app", + "example": "probot-owners", + "type": "string" + }, + "updated_at": { + "example": "2017-07-08T16:18:44-04:00", + "format": "date-time", + "type": "string" + }, + "webhook_secret": { + "example": "\"6fba8f2fc8a7e8f2cca5577eddd82ca7586b3b6b\"", + "nullable": true, + "type": "string" + } + }, + "required": [ + "id", + "node_id", + "owner", + "name", + "description", + "external_url", + "html_url", + "created_at", + "updated_at", + "permissions", + "events" + ], + "title": "GitHub app", + "type": "object" + } + } + } + }, + "insertionIndex": 1339 + }, + { + "id": "07b4be15-558c-4700-bba0-ffeef4d8931f", + "name": "Reset an authorization - default", + "request": { + "urlPath": "/applications/v4k6/tokens/g0oitho810acb32sz78zk18vtyd0j2j8vpz5bjp7qq9kqbj5nhus594jnjq4ljagl1fckv41bslcd9eyrcdibheb0rvyyjipuhzfkwmksvfwh9axth6irhyzqpeu1dwn1ki9fr6at5t5h", + "method": "POST" + }, + "response": { + "status": 200, + "body": "{\n \"app\" : {\n \"client_id\" : \"abcde12345fghij67890\",\n \"name\" : \"my github app\",\n \"url\" : \"http://my-github-app.com\"\n },\n \"created_at\" : \"2011-09-06T17:26:27Z\",\n \"expires_at\" : \"2011-09-08T17:26:27Z\",\n \"fingerprint\" : \"jklmnop12345678\",\n \"hashed_token\" : \"25f94a2a5c7fbaf499c665bc73d67c1c87e496da8985131633ee0a95819db2e8\",\n \"id\" : 1,\n \"note\" : \"optional note\",\n \"note_url\" : \"http://optional/note/url\",\n \"scopes\" : [ \"public_repo\", \"user\" ],\n \"token\" : \"ghu_16C7e42F292c6912E7710c838347Ae178B4a\",\n \"token_last_eight\" : \"Ae178B4a\",\n \"updated_at\" : \"2011-09-06T20:39:23Z\",\n \"url\" : \"https://api.github.com/authorizations/1\",\n \"user\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n }\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "07b4be15-558c-4700-bba0-ffeef4d8931f", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.649461Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "apps/reset-authorization", + "schema": { + "description": "The authorization for an OAuth app, GitHub App, or a Personal Access Token.", + "properties": { + "app": { + "properties": { + "client_id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "url": { + "format": "uri", + "type": "string" + } + }, + "required": ["client_id", "name", "url"], + "type": "object" + }, + "created_at": { + "format": "date-time", + "type": "string" + }, + "fingerprint": { + "nullable": true, + "type": "string" + }, + "hashed_token": { + "nullable": true, + "type": "string" + }, + "id": { + "type": "integer" + }, + "installation": { + "$ref": "#/components/schemas/nullable-scoped-installation" + }, + "note": { + "nullable": true, + "type": "string" + }, + "note_url": { + "format": "uri", + "nullable": true, + "type": "string" + }, + "scopes": { + "description": "A list of scopes that this authorization is in.", + "items": { + "type": "string" + }, + "nullable": true, + "type": "array" + }, + "token": { + "type": "string" + }, + "token_last_eight": { + "nullable": true, + "type": "string" + }, + "updated_at": { + "format": "date-time", + "type": "string" + }, + "url": { + "format": "uri", + "type": "string" + }, + "user": { + "$ref": "#/components/schemas/nullable-simple-user" + } + }, + "required": [ + "app", + "id", + "note", + "note_url", + "scopes", + "token", + "hashed_token", + "token_last_eight", + "fingerprint", + "url", + "created_at", + "updated_at", + "expires_at" + ], + "title": "Authorization", + "type": "object" + } + } + } + }, + "insertionIndex": 1340 + }, + { + "id": "04ffb6e2-ded0-4ddb-9b2e-724fb95546ca", + "name": "Check an authorization", + "request": { + "urlPath": "/applications/0df0/tokens/kce8ssa0gn9msoomfy28quvpnhft3017ao4oa6445a6qcuirp2ei01b7iypioyxrwkut67qo4a24klhnn9bn7txyf2uibn39zqcux3snvj7sfkh8966qvucmc2g7cl9ylktx7ai1drpxy7lq76z0oses02afn6ix1aa0z5cnmfrh1nnoiw5ah3q", + "method": "GET" + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/247341\",\n \"message\" : \"Dicta blanditiis est harum. Nesciunt ut nesciunt corporis id omnis. Nihil autem consectetur commodi ea voluptatibus aut architecto.\",\n \"url\" : \"https://web.example.mocklab.io/086321\",\n \"status\" : \"vixhra6v6vz0bbh1zs5q3nyl6yslzhzvkm2h4qh5ok7l4df9yyh0s3k9qwnyoi4fenqa7bf3n424fx0ewn6m8kbeyuv06tmiglo1qmrt1tstpwcsw7mf4\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "04ffb6e2-ded0-4ddb-9b2e-724fb95546ca", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.64921Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "apps/check-authorization", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 1341 + }, + { + "id": "e404a98c-d32b-42f6-ad4b-0512f4685269", + "name": "Check an authorization - default", + "request": { + "urlPath": "/applications/kk04/tokens/xs3a5ppkxd5104txi6jm585i0bbx3kw6xwccz9e75n2y3yckyyxu12ikzd382o4ayaczt5njfbmdfvbxd3eyak936834s10q1ys7a7h9sakewofhz0rkpudhp1s8lbqf8cuxgzmh38padttkhkvyl5kbwaxdgr3k4g9og", + "method": "GET" + }, + "response": { + "status": 200, + "body": "{\n \"app\" : {\n \"client_id\" : \"abcde12345fghij67890\",\n \"name\" : \"my github app\",\n \"url\" : \"http://my-github-app.com\"\n },\n \"created_at\" : \"2011-09-06T17:26:27Z\",\n \"expires_at\" : \"2011-09-08T17:26:27Z\",\n \"fingerprint\" : \"jklmnop12345678\",\n \"hashed_token\" : \"25f94a2a5c7fbaf499c665bc73d67c1c87e496da8985131633ee0a95819db2e8\",\n \"id\" : 1,\n \"note\" : \"optional note\",\n \"note_url\" : \"http://optional/note/url\",\n \"scopes\" : [ \"public_repo\", \"user\" ],\n \"token\" : \"ghu_16C7e42F292c6912E7710c838347Ae178B4a\",\n \"token_last_eight\" : \"Ae178B4a\",\n \"updated_at\" : \"2011-09-06T20:39:23Z\",\n \"url\" : \"https://api.github.com/authorizations/1\",\n \"user\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n }\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "e404a98c-d32b-42f6-ad4b-0512f4685269", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.648902Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "apps/check-authorization", + "schema": { + "description": "The authorization for an OAuth app, GitHub App, or a Personal Access Token.", + "nullable": true, + "properties": { + "app": { + "properties": { + "client_id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "url": { + "format": "uri", + "type": "string" + } + }, + "required": ["client_id", "name", "url"], + "type": "object" + }, + "created_at": { + "format": "date-time", + "type": "string" + }, + "fingerprint": { + "nullable": true, + "type": "string" + }, + "hashed_token": { + "nullable": true, + "type": "string" + }, + "id": { + "type": "integer" + }, + "installation": { + "$ref": "#/components/schemas/nullable-scoped-installation" + }, + "note": { + "nullable": true, + "type": "string" + }, + "note_url": { + "format": "uri", + "nullable": true, + "type": "string" + }, + "scopes": { + "description": "A list of scopes that this authorization is in.", + "items": { + "type": "string" + }, + "nullable": true, + "type": "array" + }, + "token": { + "type": "string" + }, + "token_last_eight": { + "nullable": true, + "type": "string" + }, + "updated_at": { + "format": "date-time", + "type": "string" + }, + "url": { + "format": "uri", + "type": "string" + }, + "user": { + "$ref": "#/components/schemas/nullable-simple-user" + } + }, + "required": [ + "app", + "id", + "note", + "note_url", + "scopes", + "token", + "hashed_token", + "token_last_eight", + "fingerprint", + "url", + "created_at", + "updated_at", + "expires_at" + ], + "title": "Authorization", + "type": "object" + } + } + } + }, + "insertionIndex": 1342 + }, + { + "id": "2e574074-0bb7-475b-8e99-c88e9be6dc83", + "name": "Revoke an authorization for an application - 204", + "request": { + "urlPath": "/applications/axgo/tokens/oh3aneulezwk6739e3pr3vvwmqg1nk", + "method": "DELETE" + }, + "response": { + "status": 204 + }, + "uuid": "2e574074-0bb7-475b-8e99-c88e9be6dc83", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.648627Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "apps/revoke-authorization-for-application" + } + } + }, + "insertionIndex": 1343 + }, + { + "id": "4780dbd5-dddb-4375-bb0f-a44aaebe2047", + "name": "Check a token", + "request": { + "urlPath": "/applications/91vg/token", + "method": "POST" + }, + "response": { + "status": 422, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/165737\",\n \"message\" : \"Officiis natus rerum labore facilis. Repudiandae quia dicta voluptate. Consequatur est rem officiis. Et deserunt eum iste. Recusandae est eum autem perspiciatis voluptatum minima.\",\n \"errors\" : [ {\n \"code\" : \"7nundluaj40hjix33bjf1hxpfjd04t6jhsiy6ym45hqnl5d443gij9jy8p01bjxyijaui3giqhhljxrb7vchz80uwgjg9z7tn8nprgm1w3xh2qffnaj459l5t32v\",\n \"field\" : \"i9bucsdqbc5sy5s5rcbx9rdzu2ywhwkok33q0d06io3wyh5jng17dozo7\",\n \"resource\" : \"fu0vkcwxgfjl2fq4f1p0xnitd3h0gclxzor4xipwuxugrewvtirbrba2rw1pw2iybiol9t1813novz00o5gc91lrfcl55yion3\",\n \"index\" : 4673991842613622145,\n \"message\" : \"Non quis unde nulla nulla occaecati vitae ipsam. Sint quidem atque sequi iste porro. Molestiae odio illo quia fugit. Illo possimus ea et aliquam vel. Et ab sit explicabo qui itaque autem dolorem.\",\n \"value\" : { }\n }, {\n \"code\" : \"keo1\",\n \"field\" : \"1txdswd5bymnrccxbja3ves10mwtua1rlpq303pew1z5adwm42h5qda52eb1xq0idl7hnfapaghrqmfkgkmlvtkp8xezr4v2116gzftvd027wyopxgv4uxtmgsdm14v59q233hut8y11u6f6omzh8aiw0ihvtljig37n7y8pg928m2lntae800jse\",\n \"resource\" : \"3bxgan\",\n \"index\" : 6211018063490774283,\n \"message\" : \"Atque nemo est reiciendis incidunt. Rem adipisci aut dolorem itaque et aliquam. Tenetur ipsam sed. Error nobis soluta et eum iure aut.\",\n \"value\" : { }\n }, {\n \"code\" : \"879icizwiz2v44fmxdg9wp5s85n1i8oxxfgx2ahwa67t15avhh83wi07tgteuhlczfx01pykl9y1lzdd1czt0pfxezjzewjetx4pt0pw5xcw2t30fujfimn0qlqkey2f0cdgzbm7bzexib9ngbzokw712kfa377vjslkuyqrm0a10bikrf74a84s6c0wrquak5\",\n \"field\" : \"vppdubnedabkcnsthbheqj2f6280ozqadud7g03utnkq4h5upy6ndtkfaygtzirr3gzzhg7jir08zyjk2k7o43v1tjltzl8e07\",\n \"resource\" : \"12xp3hcmw9rwfvvhf83z2fsan8wsbb1twacvhsqx6bj3giqw5kl0hbdll58omgvo527wv2nnk63qh\",\n \"index\" : 3662442824418544214,\n \"message\" : \"Non quae vitae ut sed laudantium cumque reiciendis. Incidunt libero magnam voluptas. Quam vel porro at ut dicta rerum ex. Tenetur voluptatem cum dolores delectus.\",\n \"value\" : { }\n }, {\n \"code\" : \"5ezne7ca8hp2n5c7utdgximduof4eaqb5j3c7xydxmdz4sylxz6xa4t6hama7qqwgr1rltp1y192si6d4kkdvrj2h4n3zfrgxrvydjiibv4zykgjsxi8qhkynea5st8tsu09ijx9k7od6k9cha6el4o07xniwc57ntzm8hxtkyv6pn0za6yizycy\",\n \"field\" : \"gs6hvo2iep8qhz2nmhwsblm0hpovn51q8thoacjpwfknrrihx268u1h64nx1ba5kjav5fwev26skj1w4p0pt971ya45uwubd98ouxp\",\n \"resource\" : \"3h1p16jjvzjmcdhxlq1133uqcqiuxg51dok85zx8v4x6x\",\n \"index\" : 8003153928381249760,\n \"message\" : \"Est alias quos ut sit nisi. Voluptatibus cum consectetur quae facere est consequuntur porro. Labore dicta repudiandae consequatur. Natus placeat modi ducimus alias.\",\n \"value\" : { }\n }, {\n \"code\" : \"itp5t03nfx5ie4423lwnh9q62bzff2tqu8cj3g64oql26byzuw8e93m2h0ai0b36\",\n \"field\" : \"5g1wojhba6d9lcgv0yn79lmcvj2h1t0wdn49hc31g0fq37chywkzhsx8nvjqm1tbb1gc1ermlyzxg9zukw4i13mvl80kgym\",\n \"resource\" : \"58ief49w22dh3w7t5idk0xgjqkhgcxaqt2ayabmbig00loag5uv9cx3phz4197d0qzv8c136sak06am7n3c2h4n9btr5sl3w35xt10grg52v8cfmkxk8rk4i1\",\n \"index\" : 3835101814257326078,\n \"message\" : \"Repellat id minima. Aliquam provident praesentium est est nihil. Ut aliquid eum praesentium corporis. Expedita sit repellendus aut est voluptatem.\",\n \"value\" : { }\n }, {\n \"code\" : \"ucxataz27fmavonqu0cwlwyg1ofuvb5wfj5aig3n35rk7e5dz8eqr2m8yszcxfgky9\",\n \"field\" : \"ggltpa6f7u7ka0w6qaqqpspdm\",\n \"resource\" : \"98tok6ibtxtkogang427i9lp7hldlmnouzcnlb5yrq0nx0aak7pbyazsc9ah2xzhmk6x10f9cu357eaid4ddr9yv7a7913sopw990n7vidkn9eqpfotf6wd8kpi8bxsxfqn5z6v7fo98\",\n \"index\" : 2671640805544635540,\n \"message\" : \"Esse voluptas omnis iste dolor ea nesciunt. Qui sint atque voluptatem et. In aut dicta unde quas. Corporis voluptatem ullam et numquam rerum sequi.\",\n \"value\" : { }\n }, {\n \"code\" : \"m4ytrxcl4nn87oz39tevn6jc0da99s81sbc9g80mdguhsk6yxe5eksg1w9zkrk9\",\n \"field\" : \"m7pqdnfjghcowatmgal3jycy2lhez\",\n \"resource\" : \"x9q3n3bdxagtw5d4qyy99w79mjpdr31avw8lpqmtlj16ya2cfoq9p1u8hy5bo1r0ui04h6v1bx9yny6lneh02ap9wzd9q3mt83w53f9khbu4jg8u6y77y5kkoqkgpeok2zp2fi170g00awkslbsx20x4p3bi5t35rpn9tj11n6typfbycc8lzreeqi25it3icnp19k37\",\n \"index\" : 8374663522299389412,\n \"message\" : \"Consequatur et accusantium non sit et eius itaque. Dolore qui corporis delectus. Necessitatibus modi veniam est velit ipsa sint. Nemo suscipit natus voluptatibus ut unde. Accusamus unde est vitae non.\",\n \"value\" : { }\n }, {\n \"code\" : \"43g0vh6oyxz4u374p9yfu7ka86wpmz0w2progjyo8dha5jb3k6pwcmjsjbczqerc\",\n \"field\" : \"9ycbba4oqjqvtip0qw6vhbsh76cw5aydfjxk0rczcudcoqs9jdlxu1ox8oq496t0glwrucw8gszkiv0bs25j0uebxbehii6ce\",\n \"resource\" : \"a7rjsk3uwd1wq4n24gmdox586evs315i8w64eknueyf4hxkap81d4llwb50mqmcrzqmz45o03nk71hfsa5n4txiggs5urtaoj3vvhy4v1qvs5cmyiedy0em\",\n \"index\" : 6589984763067464935,\n \"message\" : \"Sequi sed enim. Quo reprehenderit et odit sit sit. Dolor corporis architecto ut eligendi voluptatem. Doloremque eos nihil dolore praesentium nemo soluta consequatur.\",\n \"value\" : { }\n } ]\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "4780dbd5-dddb-4375-bb0f-a44aaebe2047", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.648517Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "apps/check-token", + "schema": { + "description": "Validation Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "errors": { + "items": { + "properties": { + "code": { + "type": "string" + }, + "field": { + "type": "string" + }, + "index": { + "type": "integer" + }, + "message": { + "type": "string" + }, + "resource": { + "type": "string" + }, + "value": { + "oneOf": [ + { + "nullable": true, + "type": "string" + }, + { + "nullable": true, + "type": "integer" + }, + { + "items": { + "type": "string" + }, + "nullable": true, + "type": "array" + } + ] + } + }, + "required": ["code"], + "type": "object" + }, + "type": "array" + }, + "message": { + "type": "string" + } + }, + "required": ["message", "documentation_url"], + "title": "Validation Error", + "type": "object" + } + } + } + }, + "insertionIndex": 1344 + }, + { + "id": "813c811a-8b29-4092-8b65-4ac08b85d79c", + "name": "Check a token", + "request": { + "urlPath": "/applications/yobs/token", + "method": "POST" + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/456177\",\n \"message\" : \"Neque vero accusamus dolorem. Ea ut debitis. Sint quia nulla voluptas ea. Nemo dolor doloremque cupiditate unde possimus. Illo quis cumque a.\",\n \"url\" : \"https://web.example.mocklab.io/608411\",\n \"status\" : \"c79cs33vckwb3qtvpvu1og6oxlt8e92lnpqv15wv77i88zsx37kvnuj3a6sgsc734c48fx96mzqkwwdjleiclf2aonvx2r3qk77r35iv1mtzq62sbw8h7keaccynhqa26kjcgrnjkmp527rpzkcbg04m\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "813c811a-8b29-4092-8b65-4ac08b85d79c", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.647593Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "apps/check-token", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 1345 + }, + { + "id": "df698146-a6de-4f80-bcc9-ed756987e369", + "name": "Check a token - default", + "request": { + "urlPath": "/applications/658h/token", + "method": "POST" + }, + "response": { + "status": 200, + "body": "{\n \"app\" : {\n \"client_id\" : \"abcde12345fghij67890\",\n \"name\" : \"my github app\",\n \"url\" : \"http://my-github-app.com\"\n },\n \"created_at\" : \"2011-09-06T17:26:27Z\",\n \"expires_at\" : \"2011-09-08T17:26:27Z\",\n \"fingerprint\" : \"jklmnop12345678\",\n \"hashed_token\" : \"25f94a2a5c7fbaf499c665bc73d67c1c87e496da8985131633ee0a95819db2e8\",\n \"id\" : 1,\n \"note\" : \"optional note\",\n \"note_url\" : \"http://optional/note/url\",\n \"scopes\" : [ \"public_repo\", \"user\" ],\n \"token\" : \"ghu_16C7e42F292c6912E7710c838347Ae178B4a\",\n \"token_last_eight\" : \"Ae178B4a\",\n \"updated_at\" : \"2011-09-06T20:39:23Z\",\n \"url\" : \"https://api.github.com/authorizations/1\",\n \"user\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n }\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "df698146-a6de-4f80-bcc9-ed756987e369", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.647291Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "apps/check-token", + "schema": { + "description": "The authorization for an OAuth app, GitHub App, or a Personal Access Token.", + "properties": { + "app": { + "properties": { + "client_id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "url": { + "format": "uri", + "type": "string" + } + }, + "required": ["client_id", "name", "url"], + "type": "object" + }, + "created_at": { + "format": "date-time", + "type": "string" + }, + "fingerprint": { + "nullable": true, + "type": "string" + }, + "hashed_token": { + "nullable": true, + "type": "string" + }, + "id": { + "type": "integer" + }, + "installation": { + "$ref": "#/components/schemas/nullable-scoped-installation" + }, + "note": { + "nullable": true, + "type": "string" + }, + "note_url": { + "format": "uri", + "nullable": true, + "type": "string" + }, + "scopes": { + "description": "A list of scopes that this authorization is in.", + "items": { + "type": "string" + }, + "nullable": true, + "type": "array" + }, + "token": { + "type": "string" + }, + "token_last_eight": { + "nullable": true, + "type": "string" + }, + "updated_at": { + "format": "date-time", + "type": "string" + }, + "url": { + "format": "uri", + "type": "string" + }, + "user": { + "$ref": "#/components/schemas/nullable-simple-user" + } + }, + "required": [ + "app", + "id", + "note", + "note_url", + "scopes", + "token", + "hashed_token", + "token_last_eight", + "fingerprint", + "url", + "created_at", + "updated_at", + "expires_at" + ], + "title": "Authorization", + "type": "object" + } + } + } + }, + "insertionIndex": 1346 + }, + { + "id": "0be55778-adf8-45e0-be3a-2ee16bfdad1f", + "name": "Reset a token", + "request": { + "urlPath": "/applications/d695/token", + "method": "PATCH" + }, + "response": { + "status": 422, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/304901\",\n \"message\" : \"Voluptatibus repudiandae repudiandae amet ut quia. Odio molestiae ea ea. Excepturi impedit quod voluptas.\",\n \"errors\" : [ {\n \"code\" : \"m9sobz7jh56z9of575ltn23zis2u2fdc7z3aijwwkft5eq3lb268gybd1olvigcgc4w3y84gcpg8i3y1fh5l8mzjki\",\n \"field\" : \"ecpjyufaae1iuhrv8s6cg1r3t38am1phik4oh066boiwaapz3n9oqsy39hvg80pay2cl7iequnwrajdhiq9bdd19gld5zs6ms3iygnd3uhz2e4ohb938erghvv4cqr4umqnot310p3tfvelubylf47uke6ev25iphlgdlmm2i93xtgpgnvxv8z0y57adxsl\",\n \"resource\" : \"3jixhiq1cn6sk0ed0wc3iaxkpvlqz8lvy0\",\n \"index\" : 5976338126226601245,\n \"message\" : \"Dolorem quae eum. Tempora voluptatem aliquid qui sint aut qui dolorem. Aliquid assumenda asperiores ut et recusandae esse. Sed possimus nihil ut voluptas molestiae eveniet. Harum voluptatem laboriosam\",\n \"value\" : { }\n }, {\n \"code\" : \"k82vhbshj5y53i3z5os0ejclqud4owvr7ifwxi4rmlem8qminmfk8o6f6pya1m03r4l1m5urhd0xvzagwc0k\",\n \"field\" : \"vnrt6mg4ppsogbqw0y9mbgc9qzgw9mqh28ajsoshn6p078ixtxx0p1ehp7a9y72gq3yuzw45orsuiyjshlu6t9l5g9kxdtw94ofzp2ner2qryfkvgpdea32p7by2fim2aci1r36638mlff7wjtca9\",\n \"resource\" : \"e9fkzx570ux8sy5ste56gqdius2f21yvs5v0uuh4v8w1htsvmst7us7yxjq84orrvqvnxje4jq4js1cezyy375fbbfkodyo1222opgzbxetipeismgpwf\",\n \"index\" : 869681968860345482,\n \"message\" : \"Et at illo praesentium voluptate eaque qui cupiditate. Et occaecati qui dolores sunt dolore autem. Corrupti molestias sint inventore doloribus neque laudantium.\",\n \"value\" : { }\n }, {\n \"code\" : \"db4fzsfwi6qminzfbj6tihbxk6zvsr5n8558kipbnc84mrxszu8uf2s7od9l7mod2eydarml\",\n \"field\" : \"8jb0xhdsrxraf6fgq723s6vnaehtqgc4cmq3afmuo8dt3weixgteaiwyhjmc1d0h32qvv7rwzldx3xohykv352eo4xym7qm9f3avhwb2ysrnfgv\",\n \"resource\" : \"v2cp482rssg18ltociaxw4pqxnab00ds2u5xu5ovvkzlxfiu38d1rzttrhe4ltqne6njnenucd9pib7y5rzfnfb1odm4z\",\n \"index\" : 4950732825202800530,\n \"message\" : \"Eum nisi quis. Aperiam in rem praesentium ducimus. Corrupti est similique.\",\n \"value\" : { }\n }, {\n \"code\" : \"aage7xdopsh8eh1qp9rh5xrioipl0h32c1gkgx76wrwf2ft4m2q5fq2g5jgpbszvv0ee8loogjk2i5xu7kvdedqz6u3wl3wvar8ird9lpbjkapecu8by6nofe86g4wtdaxnxhtll17nzmxrzgpyofmj4\",\n \"field\" : \"w0l4dh4g5tdnp3vbljlrz5es4ktk4uknwf7tuqtacgg0r8jea2huo1s1fb08fcj7nq6i3f247ucbcsmb970nedwl0vuvcinyjrmoyalf41a0dql6u0lmocg8lr0mm1exeoh\",\n \"resource\" : \"x5f1cn7rtb7dcgv2ymfgk0f2twltgq50tam88i3z307fqluj6kongpw3dpuipznkney1wfnxx2r200bso2kgh7w7i5er9ac5t1m2ve7kzsckfqlfyy9\",\n \"index\" : 5608357015767777616,\n \"message\" : \"Sint alias molestiae dolorem. Similique adipisci est at id. Molestiae necessitatibus quam quo ea quod. Architecto magnam est non omnis et id quo.\",\n \"value\" : { }\n }, {\n \"code\" : \"85ej045phxnctts37zf3iqfslmmrlodokzr7mt30nnkg7af7qbn01q6srsc39y\",\n \"field\" : \"ig7ina7pgwr8g3r44vuzwgh17y\",\n \"resource\" : \"gidx2wt294ermdmeszswv9pnzlxr1\",\n \"index\" : 7466727298693143453,\n \"message\" : \"Enim rerum quia a autem sunt non quia. Iure tenetur eos enim. Praesentium et voluptatem quibusdam esse in nostrum qui. Et quisquam et in pariatur. Quaerat deleniti dolor sequi.\",\n \"value\" : { }\n }, {\n \"code\" : \"vfdtml26udgmpxgrshmdc1r3xrkj6xhqll3cxrk4e05t630jiyodj8qlobc3pi9nhfvhlapjd5wuk82vu6up6ojv8u7rgfgfpy81jempsw1vpwwy6h3l8622n1vd8lufjpmi6w3m7okyltvxrn3\",\n \"field\" : \"aalw49stveqbc1ttgqkatsiojge2tahy2jevmkw3qub9zbx3bd8jf604gg385vl87lagomvqzxo94zd38nk87y3eex8b16q6ts4mwgn8ppgwcn0nw80dvfnurvvn9806k1ru1pruy4fper39e5dlymbr8g3bukgejapr7z9ok5hta\",\n \"resource\" : \"e1ublsi98rk4ppvjjypg85x2wojmm3r9yeywkxdv9e6kfh9bglfzsk3cg5bdd2ym8gs2gn1exzce0txapgupwvkq1zovvvkf5sxlhc0fdjeh6072fevejyk25us9ysco19l0ba3lo1oyixk5\",\n \"index\" : 7529804204864363665,\n \"message\" : \"Blanditiis et repellat voluptatem eum ipsam doloremque. Quia aliquam dolore eum doloribus ut. Tempore eius nisi et deleniti id.\",\n \"value\" : { }\n }, {\n \"code\" : \"z1mjtvekwmtwrageqob07y0541uroeznnegp33tbw5gmtiiowntdojypv9iz21p8tkvuz7i1wvyhzfvu2xicxu7lvlvu1cfb54jvjjppibqo9wcu\",\n \"field\" : \"f3wh5v0adg7wf23jkgegyxvny88vtfuxyww1mdapeyy065cw3q49b9mr9ylejvmpc83ovw0vvgu4pnr4cunkxxcfpt\",\n \"resource\" : \"yxax7ks\",\n \"index\" : 614650928858108508,\n \"message\" : \"Optio autem quo corporis pariatur facere recusandae. Pariatur nam qui. Ipsam non reprehenderit aut dolorum quo minima iusto.\",\n \"value\" : { }\n }, {\n \"code\" : \"gl7x3y9hgds\",\n \"field\" : \"tui295yywpy9rezsp5naotuqh2oog9aa222z8j0fdb7i\",\n \"resource\" : \"37q2p\",\n \"index\" : 2119252200277534552,\n \"message\" : \"Sed et deleniti delectus facere nulla nihil. Omnis est aut error ea ad at. Sit iure nihil et et. Consequuntur aspernatur repellat distinctio qui. Numquam voluptatum architecto nihil hic fuga assumenda\",\n \"value\" : { }\n } ]\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "0be55778-adf8-45e0-be3a-2ee16bfdad1f", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.647062Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "apps/reset-token", + "schema": { + "description": "Validation Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "errors": { + "items": { + "properties": { + "code": { + "type": "string" + }, + "field": { + "type": "string" + }, + "index": { + "type": "integer" + }, + "message": { + "type": "string" + }, + "resource": { + "type": "string" + }, + "value": { + "oneOf": [ + { + "nullable": true, + "type": "string" + }, + { + "nullable": true, + "type": "integer" + }, + { + "items": { + "type": "string" + }, + "nullable": true, + "type": "array" + } + ] + } + }, + "required": ["code"], + "type": "object" + }, + "type": "array" + }, + "message": { + "type": "string" + } + }, + "required": ["message", "documentation_url"], + "title": "Validation Error", + "type": "object" + } + } + } + }, + "insertionIndex": 1347 + }, + { + "id": "e42c486f-5b97-45d5-8ba4-d04a8de110e6", + "name": "Reset a token - default", + "request": { + "urlPath": "/applications/0s31/token", + "method": "PATCH" + }, + "response": { + "status": 200, + "body": "{\n \"app\" : {\n \"client_id\" : \"abcde12345fghij67890\",\n \"name\" : \"my github app\",\n \"url\" : \"http://my-github-app.com\"\n },\n \"created_at\" : \"2011-09-06T17:26:27Z\",\n \"expires_at\" : \"2011-09-08T17:26:27Z\",\n \"fingerprint\" : \"jklmnop12345678\",\n \"hashed_token\" : \"25f94a2a5c7fbaf499c665bc73d67c1c87e496da8985131633ee0a95819db2e8\",\n \"id\" : 1,\n \"note\" : \"optional note\",\n \"note_url\" : \"http://optional/note/url\",\n \"scopes\" : [ \"public_repo\", \"user\" ],\n \"token\" : \"ghu_16C7e42F292c6912E7710c838347Ae178B4a\",\n \"token_last_eight\" : \"Ae178B4a\",\n \"updated_at\" : \"2011-09-06T20:39:23Z\",\n \"url\" : \"https://api.github.com/authorizations/1\",\n \"user\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n }\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "e42c486f-5b97-45d5-8ba4-d04a8de110e6", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.646139Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "apps/reset-token", + "schema": { + "description": "The authorization for an OAuth app, GitHub App, or a Personal Access Token.", + "properties": { + "app": { + "properties": { + "client_id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "url": { + "format": "uri", + "type": "string" + } + }, + "required": ["client_id", "name", "url"], + "type": "object" + }, + "created_at": { + "format": "date-time", + "type": "string" + }, + "fingerprint": { + "nullable": true, + "type": "string" + }, + "hashed_token": { + "nullable": true, + "type": "string" + }, + "id": { + "type": "integer" + }, + "installation": { + "$ref": "#/components/schemas/nullable-scoped-installation" + }, + "note": { + "nullable": true, + "type": "string" + }, + "note_url": { + "format": "uri", + "nullable": true, + "type": "string" + }, + "scopes": { + "description": "A list of scopes that this authorization is in.", + "items": { + "type": "string" + }, + "nullable": true, + "type": "array" + }, + "token": { + "type": "string" + }, + "token_last_eight": { + "nullable": true, + "type": "string" + }, + "updated_at": { + "format": "date-time", + "type": "string" + }, + "url": { + "format": "uri", + "type": "string" + }, + "user": { + "$ref": "#/components/schemas/nullable-simple-user" + } + }, + "required": [ + "app", + "id", + "note", + "note_url", + "scopes", + "token", + "hashed_token", + "token_last_eight", + "fingerprint", + "url", + "created_at", + "updated_at", + "expires_at" + ], + "title": "Authorization", + "type": "object" + } + } + } + }, + "insertionIndex": 1348 + }, + { + "id": "04b10336-a690-40ea-92f9-90a4a1652eb9", + "name": "Delete an app token (application/json)", + "request": { + "urlPath": "/applications/8717/token", + "method": "DELETE", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 422, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/146756\",\n \"message\" : \"Sed earum facere. Quidem in et rerum quas. Ut itaque eum voluptatem voluptatem nam cum. Rerum laboriosam qui nisi.\",\n \"errors\" : [ {\n \"code\" : \"wg03yrwn5nf16hr1yc9mtbq3krj1iyl1p292pl6mr3dv8e299mkd7ujtk5vdsamqr479vqatq4s6vizeymeinxrc3njhi8kmguqp7uj6izx3omiylfwda9rg5be47gq3hgbhe8em\",\n \"field\" : \"1tqltcmw5a9oyf1f3w9k193rixdj45ertxo0ge0dm51anlyn1kwp8wyr75d6uvubt5izamo9c1btc5sdwumoj29e7k81bqtnl7gzjzv37o195jlgyomhis27m7r09167eufqv6am49la9cily\",\n \"resource\" : \"o6nypsf9ly1nsffk157jg4fi2ixajnlgnepb5kaumhx9xtdko25wipm383ibf9hmrowlyrwfty9qkpz5merwvwze99dge7qgsye5g64pidzt59ds359\",\n \"index\" : 4727322172121946921,\n \"message\" : \"In omnis aperiam excepturi nihil non optio voluptatem. Quidem quibusdam quia quam qui atque. Qui repellat et.\",\n \"value\" : { }\n }, {\n \"code\" : \"paoi5n63k0j\",\n \"field\" : \"qdmddbcn4d6niou89s17quxfq3mb4hjs9ioi9xjcpi8coilhw83ze6nm2zp7ib4godfj71g9ree9yb115avemzdv4rcfx174ocygzvhnf3vovv49wkuzo3dje7j2xbfff11ir6kek2gdpxfc9w7aia5y7fldkqi232do1z6qqwzmpamto8qkx\",\n \"resource\" : \"ezqfdrkjyb9iiscs9dggkpmkah3mo78da1vscv67d0shg1h3d0kliwgu3uqufs3p2u28px24ufdjp6klerjw0ft5vg7gkt2kfovbpaybf2yx2ek52tvkf6h63npsm\",\n \"index\" : 3132392558287720216,\n \"message\" : \"Qui alias qui rerum eveniet qui. Odit non dolore commodi omnis ut at tempora. Eum voluptatem quo magnam ipsum dolor dolore eos. Minima voluptatem fuga sunt reiciendis.\",\n \"value\" : { }\n }, {\n \"code\" : \"ezj65711j1huiztz2b4gy23ff9ni5n3wjyju\",\n \"field\" : \"546fevvcq6ekxszmeqe8bwfrtypqngx0egq3u354gfh0hw5ibpungmkjjpa3ku6q8zri659kwpkw9f9o5qiqnt55ravhsobg5vjvg1k8dzp2hmpzndm2agy5trttt5mx9yjm6ct6lrhgpxkvdp11rfs5oa82sa3jbh6re50os345pn7qswwhc367tsssy1sr88n2m\",\n \"resource\" : \"3hbolpqaszeoxsrihxsltwnuzkipjbvvkk16d54b3sfycic0u5ki8u1lqvuuz3binzr0bybs7hota5gz5od5qa71rgduk6g9afsl2rw5uk1b7y669sz9n58zj160221egm1ezhn5m0y\",\n \"index\" : 46428550218106891,\n \"message\" : \"Atque temporibus ea ut. Rerum recusandae est ut. Sit eveniet tempora dolore et est quia aut. Magnam velit voluptas debitis aut provident. Reiciendis cupiditate dolorem accusamus.\",\n \"value\" : { }\n }, {\n \"code\" : \"3ips1e92ay3g4wqj8fpbc332eilmvjdbpuvl5k8v952cl4jfe09252y3qm6kkbytk1m4rqsteurgd8l1cwgaseg4d9bkikf01h6fuqgd9t1ouk2lo5lbjv1b\",\n \"field\" : \"df3r2l9ggur2h8m3ijbksa0ed5\",\n \"resource\" : \"bijz7y4re0mnyd9k9kxv3x4ls0nsvt0cit59kzwx4om6kgd1n5a63jlcfrphh6cn85jjeimrliw\",\n \"index\" : 9005555708846202411,\n \"message\" : \"Asperiores vitae id. Ad aliquam harum. Enim ab molestiae aut ut sit ut. Aspernatur autem et.\",\n \"value\" : { }\n } ]\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "04b10336-a690-40ea-92f9-90a4a1652eb9", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.645869Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "apps/delete-token", + "schema": { + "description": "Validation Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "errors": { + "items": { + "properties": { + "code": { + "type": "string" + }, + "field": { + "type": "string" + }, + "index": { + "type": "integer" + }, + "message": { + "type": "string" + }, + "resource": { + "type": "string" + }, + "value": { + "oneOf": [ + { + "nullable": true, + "type": "string" + }, + { + "nullable": true, + "type": "integer" + }, + { + "items": { + "type": "string" + }, + "nullable": true, + "type": "array" + } + ] + } + }, + "required": ["code"], + "type": "object" + }, + "type": "array" + }, + "message": { + "type": "string" + } + }, + "required": ["message", "documentation_url"], + "title": "Validation Error", + "type": "object" + } + } + } + }, + "insertionIndex": 1349 + }, + { + "id": "76afee17-cc3b-4350-a944-d7530f6cbd1e", + "name": "Delete an app token - 204", + "request": { + "urlPath": "/applications/km6n/token", + "method": "DELETE" + }, + "response": { + "status": 204 + }, + "uuid": "76afee17-cc3b-4350-a944-d7530f6cbd1e", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.645269Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "apps/delete-token" + } + } + }, + "insertionIndex": 1350 + }, + { + "id": "f8e81347-fa1f-409a-bbdf-c5bfddc1f86c", + "name": "Revoke a grant for an application - 204", + "request": { + "urlPath": "/applications/63s3/grants/1cj0rs4kailz0q72imquykl4th6uc9", + "method": "DELETE" + }, + "response": { + "status": 204 + }, + "uuid": "f8e81347-fa1f-409a-bbdf-c5bfddc1f86c", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.64518Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "apps/revoke-grant-for-application" + } + } + }, + "insertionIndex": 1351 + }, + { + "id": "fe1a0b8e-8eea-423b-92b6-b927f349de3f", + "name": "Delete an app authorization (application/json)", + "request": { + "urlPath": "/applications/69c3/grant", + "method": "DELETE", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 422, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/217718\",\n \"message\" : \"Illo quia suscipit asperiores. Est quia ipsum similique qui cupiditate iure. Recusandae debitis sed. Qui ipsam aut saepe provident provident voluptates. Libero consequuntur quos quia harum illo eum.\",\n \"errors\" : [ {\n \"code\" : \"bkdzbdqtl9mfqktx9zs8pnxqses1z8t6q3vasgm7i7zolbq72aohlu65d8lxv4dcyn2ps5q20zdnck\",\n \"field\" : \"rz3bq1g58afwsais5rpphfukm1zlyk8x1\",\n \"resource\" : \"ntadugmr7cdco9tzribnocedzl24xxzbgajbt7sbvtvmql5ll4koysfj0gounhnlk200gmi7e8u2p6fk46f2fyfa3sythsk3nraj3ppz2tr6dwn0hc9f4vz8gxvep38vuu1810h026io6zhm7dmggutts6knbwtcoicyfvexi92p00hiu2t9inyoycst\",\n \"index\" : 4698115355845394411,\n \"message\" : \"Nihil voluptates ut quibusdam quo. Eum perferendis quasi distinctio culpa quaerat sequi. Omnis temporibus temporibus sit quibusdam. Officia ut consequatur minus itaque est iure eaque.\",\n \"value\" : { }\n } ]\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "fe1a0b8e-8eea-423b-92b6-b927f349de3f", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.645064Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "apps/delete-authorization", + "schema": { + "description": "Validation Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "errors": { + "items": { + "properties": { + "code": { + "type": "string" + }, + "field": { + "type": "string" + }, + "index": { + "type": "integer" + }, + "message": { + "type": "string" + }, + "resource": { + "type": "string" + }, + "value": { + "oneOf": [ + { + "nullable": true, + "type": "string" + }, + { + "nullable": true, + "type": "integer" + }, + { + "items": { + "type": "string" + }, + "nullable": true, + "type": "array" + } + ] + } + }, + "required": ["code"], + "type": "object" + }, + "type": "array" + }, + "message": { + "type": "string" + } + }, + "required": ["message", "documentation_url"], + "title": "Validation Error", + "type": "object" + } + } + } + }, + "insertionIndex": 1352 + }, + { + "id": "87ed21ee-3f83-4682-b391-ce3fca04e1b7", + "name": "Delete an app authorization - 204", + "request": { + "urlPath": "/applications/nw6o/grant", + "method": "DELETE" + }, + "response": { + "status": 204 + }, + "uuid": "87ed21ee-3f83-4682-b391-ce3fca04e1b7", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.644644Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "apps/delete-authorization" + } + } + }, + "insertionIndex": 1353 + }, + { + "id": "330e11b6-b125-4746-8e05-080a6ba9b3db", + "name": "Get a single grant (application/json)", + "request": { + "urlPath": "/applications/grants/1690495079019045418", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 403, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/108303\",\n \"message\" : \"Est expedita quas. Repellat magni amet perferendis. Esse dolores autem veritatis laborum explicabo maxime eos. Autem non ab quis vitae aut.\",\n \"url\" : \"https://web.example.mocklab.io/782877\",\n \"status\" : \"497hxuqz5kp14fq2i30kdphvj7rnu0yug4pyuix258f77npfspvj1fwya8kycp25mujw1fit4cvouef6z0lpt1rje85sg6fvqf2vba0c6bl67nq4o3aesq1hnd1rk8rg7b6jmyjvajpjj6xo286ysy24z0tuia0vxtqgrbrt8y69zghgues9oh\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "330e11b6-b125-4746-8e05-080a6ba9b3db", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.644539Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "oauth-authorizations/get-grant", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 1354 + }, + { + "id": "bfe45067-ffb4-4532-b2a5-e3b19f7c10c1", + "name": "Get a single grant (application/json)", + "request": { + "urlPath": "/applications/grants/8665009614706046891", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 401, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/895893\",\n \"message\" : \"A unde quisquam minima quia quibusdam laudantium similique. Numquam nemo et sunt enim sed magni. Optio aliquam adipisci quo saepe sit et suscipit. Unde laudantium quia et omnis accusamus.\",\n \"url\" : \"https://web.example.mocklab.io/872162\",\n \"status\" : \"67e7utk7zr86f8c8m2a8fdvytkbrxc6b39aabgkx3b3i6l074acbxi7asy52mjg4roi2\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "bfe45067-ffb4-4532-b2a5-e3b19f7c10c1", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.644324Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "oauth-authorizations/get-grant", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 1355 + }, + { + "id": "7bfb44c0-f49e-477f-9b6e-fcbfccd1a778", + "name": "Get a single grant - 304", + "request": { + "urlPath": "/applications/grants/7509001967389110413", + "method": "GET" + }, + "response": { + "status": 304 + }, + "uuid": "7bfb44c0-f49e-477f-9b6e-fcbfccd1a778", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.644116Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "oauth-authorizations/get-grant" + } + } + }, + "insertionIndex": 1356 + }, + { + "id": "f34b56df-6741-4552-b31f-8aac4580f6ce", + "name": "Get a single grant (application/json) - default", + "request": { + "urlPath": "/applications/grants/2243912863473572331", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 200, + "body": "{\n \"app\" : {\n \"client_id\" : \"abcde12345fghij67890\",\n \"name\" : \"my github app\",\n \"url\" : \"http://my-github-app.com\"\n },\n \"created_at\" : \"2011-09-06T17:26:27Z\",\n \"id\" : 1,\n \"scopes\" : [ \"public_repo\" ],\n \"updated_at\" : \"2011-09-06T20:39:23Z\",\n \"url\" : \"https://api.github.com/applications/grants/1\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "f34b56df-6741-4552-b31f-8aac4580f6ce", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.644085Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "oauth-authorizations/get-grant", + "schema": { + "description": "The authorization associated with an OAuth Access.", + "properties": { + "app": { + "properties": { + "client_id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "url": { + "format": "uri", + "type": "string" + } + }, + "required": ["client_id", "name", "url"], + "type": "object" + }, + "created_at": { + "example": "2011-09-06T17:26:27Z", + "format": "date-time", + "type": "string" + }, + "id": { + "example": 1, + "type": "integer" + }, + "scopes": { + "example": ["public_repo"], + "items": { + "type": "string" + }, + "type": "array" + }, + "updated_at": { + "example": "2011-09-06T20:39:23Z", + "format": "date-time", + "type": "string" + }, + "url": { + "example": "https://api.github.com/applications/grants/1", + "format": "uri", + "type": "string" + }, + "user": { + "$ref": "#/components/schemas/nullable-simple-user" + } + }, + "required": ["app", "id", "scopes", "url", "created_at", "updated_at"], + "title": "Application Grant", + "type": "object" + } + } + } + }, + "insertionIndex": 1357 + }, + { + "id": "3651ef36-8283-444f-9922-e8ff20d71b44", + "name": "Delete a grant (application/json)", + "request": { + "urlPath": "/applications/grants/8250788107543172791", + "method": "DELETE", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 403, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/454808\",\n \"message\" : \"Enim quisquam magni qui ea est et. Et odit magnam et voluptas qui doloribus molestiae. Est rerum reprehenderit aut sed non nisi. Rerum voluptas hic at quia. Optio ad quis asperiores assumenda.\",\n \"url\" : \"https://web.example.mocklab.io/625886\",\n \"status\" : \"zep7bj6ftd71tsewagg\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "3651ef36-8283-444f-9922-e8ff20d71b44", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.643934Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "oauth-authorizations/delete-grant", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 1358 + }, + { + "id": "92d88bf8-4d8b-458b-87e4-38f30738b4c0", + "name": "Delete a grant (application/json)", + "request": { + "urlPath": "/applications/grants/2143576776540091563", + "method": "DELETE", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 401, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/959969\",\n \"message\" : \"Sunt nisi quia facilis optio sunt illo facere. Odio ullam vitae ipsam accusamus iure veritatis. Molestiae id placeat.\",\n \"url\" : \"https://web.example.mocklab.io/951562\",\n \"status\" : \"ejtpnlsn6uqj7a3axp3q7ceu4o832sjk01i0o5qcc2wnoppfeg13z4r29z7c3996ca2k0q68hpdeieg47vzfces34s74an5zr54p8w9rfchugaqd5zpqzoppaik1pdj9er8jzqq95ew43j82hr0r0ds0thu1hqi6bfmlq23\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "92d88bf8-4d8b-458b-87e4-38f30738b4c0", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.643716Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "oauth-authorizations/delete-grant", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 1359 + }, + { + "id": "cfeb3990-c71b-43ca-80ec-51fb2c183649", + "name": "Delete a grant - 304", + "request": { + "urlPath": "/applications/grants/1567267380861721790", + "method": "DELETE" + }, + "response": { + "status": 304 + }, + "uuid": "cfeb3990-c71b-43ca-80ec-51fb2c183649", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.643513Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "oauth-authorizations/delete-grant" + } + } + }, + "insertionIndex": 1360 + }, + { + "id": "535ce21d-c370-4216-b724-51201a7bc000", + "name": "Delete a grant - 204", + "request": { + "urlPath": "/applications/grants/7920735474976198796", + "method": "DELETE" + }, + "response": { + "status": 204 + }, + "uuid": "535ce21d-c370-4216-b724-51201a7bc000", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.643493Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "oauth-authorizations/delete-grant" + } + } + }, + "insertionIndex": 1361 + }, + { + "id": "c0074794-16e8-45d7-bb7c-d3755720f28d", + "name": "List your grants (application/json)", + "request": { + "urlPath": "/applications/grants", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/659482\",\n \"message\" : \"Praesentium cum consequatur. Dolores quibusdam fugiat aut expedita sit voluptatum enim. Aspernatur voluptates minus. Necessitatibus quo sequi qui a aspernatur. Placeat soluta assumenda dolor autem.\",\n \"url\" : \"https://web.example.mocklab.io/015746\",\n \"status\" : \"a2eyrphd1j50\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "c0074794-16e8-45d7-bb7c-d3755720f28d", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.643458Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "oauth-authorizations/list-grants", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 1362 + }, + { + "id": "593fcb87-812d-4df0-ba22-b6dfcf1567df", + "name": "List your grants (application/json)", + "request": { + "urlPath": "/applications/grants", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 403, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/364275\",\n \"message\" : \"Et consequatur error incidunt est. Provident voluptas aut voluptate et repellat placeat assumenda. Voluptatum quis vel provident consequatur provident.\",\n \"url\" : \"https://web.example.mocklab.io/816946\",\n \"status\" : \"b6sgw5cli92cdcoey61iwugettfiijcjgykh6rt8g07xt8falt70tbfjxnkc13sqr55ocbvs6e9puosskc8th0ssx5\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "593fcb87-812d-4df0-ba22-b6dfcf1567df", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.64325Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "oauth-authorizations/list-grants", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 1363 + }, + { + "id": "f5f9ab53-ad2b-4a62-a928-b2d176117f0c", + "name": "List your grants (application/json)", + "request": { + "urlPath": "/applications/grants", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 401, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/265642\",\n \"message\" : \"Ipsam ut dignissimos. Omnis voluptatem sit. Voluptatem minus et non aliquid cumque. Vero libero cupiditate. Perspiciatis id incidunt et et quae.\",\n \"url\" : \"https://web.example.mocklab.io/804347\",\n \"status\" : \"ugo0r1tvq7hic4n1auy5n07g3cbn1b5qltsln1fnrouse6jdt1pbef01c0hr4wxbeffrlejxs8zfan84t8k1z9spyo1mfq6923op\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "f5f9ab53-ad2b-4a62-a928-b2d176117f0c", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.643037Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "oauth-authorizations/list-grants", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 1364 + }, + { + "id": "84bec718-5ec4-4f03-b24a-0b29f3cca925", + "name": "List your grants - 304", + "request": { + "urlPath": "/applications/grants", + "method": "GET" + }, + "response": { + "status": 304 + }, + "uuid": "84bec718-5ec4-4f03-b24a-0b29f3cca925", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.642819Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "oauth-authorizations/list-grants" + } + } + }, + "insertionIndex": 1365 + }, + { + "id": "d1b83fc0-424e-41ae-9c9c-4a17275ec444", + "name": "List your grants (application/json) - default", + "request": { + "urlPath": "/applications/grants", + "method": "GET", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 200, + "body": "[ {\n \"app\" : {\n \"client_id\" : \"abcde12345fghij67890\",\n \"name\" : \"my github app\",\n \"url\" : \"http://my-github-app.com\"\n },\n \"created_at\" : \"2011-09-06T17:26:27Z\",\n \"id\" : 1,\n \"scopes\" : [ \"public_repo\" ],\n \"updated_at\" : \"2011-09-06T20:39:23Z\",\n \"url\" : \"https://api.github.com/applications/grants/1\"\n} ]", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "d1b83fc0-424e-41ae-9c9c-4a17275ec444", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.642793Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "oauth-authorizations/list-grants", + "schema": { + "items": { + "$ref": "#/components/schemas/application-grant" + }, + "type": "array" + } + } + } + }, + "insertionIndex": 1366 + }, + { + "id": "558d76b8-f6dc-4c53-b498-f4ba42336f80", + "name": "Create an installation access token for an app", + "request": { + "urlPath": "/app/installations/5170301701090462045/access_tokens", + "method": "POST" + }, + "response": { + "status": 422, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/887195\",\n \"message\" : \"Est ea error. Asperiores sed ex enim quae autem. Corporis nostrum eum sed quisquam quaerat consequatur.\",\n \"errors\" : [ {\n \"code\" : \"x43djwa3rh99tvi9evra5w3sct0aihmuvy4tkmr1i4ftmoqp67isaa8zt02bhv5iikaan48z2hxw6p2echhxk5l0y0p8zwqklsfwkmb09wa18ax79f4icyyfbcxd2zs2x12otr4681uw95sy9o8ag81srw\",\n \"field\" : \"kv3umzxjwljwbtbbltfsnif9g55pymvm79c6bciatdzeo0hp1zopeawe19xk3dsosuv4l40rqeazycyvw5a5ov01jzqcj697bb8ck8ffan\",\n \"resource\" : \"fauuyblafkvikfyao9paxqdscozjq1da2tc6yd8ptvveea4vq8v1gnzuyyozw7jdlqg423qwn97glr24yh6qg0p55ufbtouiaqeus7i9hf5nc6clu5lqibhaq2ff0af4b47xbs5meg3x0v168uslqmdzqho21nqq6dqoh5fh8sof0tvw6c8m3ri\",\n \"index\" : 1114245835279167358,\n \"message\" : \"Reprehenderit qui asperiores repellendus. Non aut accusamus et minus aut perferendis tempora. Et eum perferendis consequatur. In sunt voluptas quaerat maiores. Sed reprehenderit minus id aut eos a.\",\n \"value\" : { }\n }, {\n \"code\" : \"eu4jskthf0v2gdvehn8gwsnsvbhxx20eb9faay6718nciu63sclm0mf6zi2e8w1m39vr5wcgnqp8v6qf55orcq67ocjvsf1j6mobqkcoxytn27bvrjwh7uq27bke31nqw0iggtdqi30mj4h2yh2z9y8gghdprctjwz5rfwtygblr\",\n \"field\" : \"4pgpq2ao18v80fke1tqzbs7s9b3e7p90q2mymjpofadwyo9d1wfhyy3ti4og1orbu3fxsq6st0uuoki9adkmtnflxcl\",\n \"resource\" : \"ifuqe9bommsuxop92tov0i9cov1aayb29h4mzej8gac\",\n \"index\" : 284177275605517058,\n \"message\" : \"Est sit sit et labore sed consequatur autem. Doloribus dignissimos culpa voluptatum dolorem. Tempora voluptas animi dignissimos incidunt sit qui.\",\n \"value\" : { }\n }, {\n \"code\" : \"pvl21pat2mx\",\n \"field\" : \"g9j6m0sh3rqktceph92gk8a6dfhaad613fbkqamtlqwqfil59zvda5biptmi76hohe7ufg06pskhb225g9v9rlrftcxqnycdt3jlxq73i1gicco0hyg7v71g8c3knyi0xi6jwdx6xsxf83c75gmjab5yf0s2chg41311ocwohzammnsl7hz1g\",\n \"resource\" : \"v20crm7pwanooixxmzyxyno6elrnbkpn984xwgwa2q1\",\n \"index\" : 6945545200340420403,\n \"message\" : \"Doloremque impedit magni ut qui. Quisquam unde dolorum quam sit. Quo maxime occaecati excepturi ipsam molestias possimus dolorum. Optio unde minima ipsam saepe. Enim numquam est error consequatur magn\",\n \"value\" : { }\n }, {\n \"code\" : \"mzz9t630f3g4ihm8kokaxhqm9uy8k3urskpadnqoccbwxts2uok5ddipba4o4hkezxkv7zkjg4to3psvgocx2j1cm6qbitgud40zvgfjy74mlbnb6v22j7dvu3s4x9w7doyracj287e8u1pqg68ddt8ezl2c938h6a\",\n \"field\" : \"omm8aw22uqfvq3vaq4e6268jh6disu784h0kl\",\n \"resource\" : \"3f2u2r2c5146r1q70ht3rzfpm8yp0je5ub386clzdod8svt961bhbkeac7vf4d4y49fz4u2rmuqfnfy18ta1759i00dx3tqvgkaifekduijk4qqwf4ekuqs2a0dav1wgfo4ub03rqwnfntw4zfbe4iyt9arnre7xlmdu0g\",\n \"index\" : 8241132026753716363,\n \"message\" : \"Dolor molestiae enim dolore pariatur quis consectetur. Velit similique cumque sunt officia itaque beatae inventore. Molestiae adipisci eos et libero architecto placeat ad. Enim inventore culpa. Quia e\",\n \"value\" : { }\n } ]\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "558d76b8-f6dc-4c53-b498-f4ba42336f80", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.642742Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "apps/create-installation-access-token", + "schema": { + "description": "Validation Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "errors": { + "items": { + "properties": { + "code": { + "type": "string" + }, + "field": { + "type": "string" + }, + "index": { + "type": "integer" + }, + "message": { + "type": "string" + }, + "resource": { + "type": "string" + }, + "value": { + "oneOf": [ + { + "nullable": true, + "type": "string" + }, + { + "nullable": true, + "type": "integer" + }, + { + "items": { + "type": "string" + }, + "nullable": true, + "type": "array" + } + ] + } + }, + "required": ["code"], + "type": "object" + }, + "type": "array" + }, + "message": { + "type": "string" + } + }, + "required": ["message", "documentation_url"], + "title": "Validation Error", + "type": "object" + } + } + } + }, + "insertionIndex": 1367 + }, + { + "id": "637d1559-86dd-4753-989a-d7a72f18ab1b", + "name": "Create an installation access token for an app", + "request": { + "urlPath": "/app/installations/1609137927616807068/access_tokens", + "method": "POST" + }, + "response": { + "status": 415, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/577703\",\n \"message\" : \"Odit ducimus consequuntur. Vel explicabo eos dolor. Aut saepe autem magnam dicta omnis. Qui quia aspernatur nulla mollitia.\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "637d1559-86dd-4753-989a-d7a72f18ab1b", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.642109Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "apps/create-installation-access-token", + "schema": { + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": ["message", "documentation_url"], + "type": "object" + } + } + } + }, + "insertionIndex": 1368 + }, + { + "id": "b99eb273-5120-4d7b-91d4-749c4b4147d2", + "name": "Create an installation access token for an app", + "request": { + "urlPath": "/app/installations/1546647841755644406/access_tokens", + "method": "POST" + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/882527\",\n \"message\" : \"Sunt non voluptatem sapiente est. Deserunt id accusamus quod rerum. Vero nostrum accusantium aperiam.\",\n \"url\" : \"https://web.example.mocklab.io/178724\",\n \"status\" : \"ljzqochoqjl5p7w9x\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "b99eb273-5120-4d7b-91d4-749c4b4147d2", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.641974Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "apps/create-installation-access-token", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 1369 + }, + { + "id": "49354cca-07e5-493e-9f7c-95010df2dd76", + "name": "Create an installation access token for an app", + "request": { + "urlPath": "/app/installations/7709331601020100100/access_tokens", + "method": "POST" + }, + "response": { + "status": 403, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/071340\",\n \"message\" : \"Eum sint sunt voluptatem. Neque est eos fugiat. Reiciendis explicabo voluptas est ab. Ducimus eum dolorum in reprehenderit aperiam optio. Sed impedit consequuntur officia.\",\n \"url\" : \"https://web.example.mocklab.io/993278\",\n \"status\" : \"uo5rj1bjc071zdawkt5tgfxptbu1taugdor7c8x2qmrkksontr5mi2b4in7ey2z5pcj9g4snleeu15wqcrnuh8fjnzy6slbndg7tvps657aze7f\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "49354cca-07e5-493e-9f7c-95010df2dd76", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.64177Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "apps/create-installation-access-token", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 1370 + }, + { + "id": "e28197dd-d410-4988-8b67-f0241405153d", + "name": "Create an installation access token for an app", + "request": { + "urlPath": "/app/installations/3919908566548722914/access_tokens", + "method": "POST" + }, + "response": { + "status": 401, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/479760\",\n \"message\" : \"Nisi consequatur nemo aut eligendi. Tempora velit explicabo accusamus facere est soluta. Non ut ipsam vero id eaque.\",\n \"url\" : \"https://web.example.mocklab.io/230881\",\n \"status\" : \"mxvnlwdiflg7ktzx8uquif3e2w8j90tt5x229e\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "e28197dd-d410-4988-8b67-f0241405153d", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.64156Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "apps/create-installation-access-token", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 1371 + }, + { + "id": "88f9e49b-79ca-45e4-afa6-4262aaf6ce8c", + "name": "Create an installation access token for an app - default", + "request": { + "urlPath": "/app/installations/1166479628091777503/access_tokens", + "method": "POST" + }, + "response": { + "status": 201, + "body": "{\n \"expires_at\" : \"2016-07-11T22:14:10Z\",\n \"permissions\" : {\n \"contents\" : \"read\",\n \"issues\" : \"write\"\n },\n \"repositories\" : [ {\n \"allow_merge_commit\" : true,\n \"allow_rebase_merge\" : true,\n \"allow_squash_merge\" : true,\n \"archive_url\" : \"https://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref}\",\n \"archived\" : false,\n \"assignees_url\" : \"https://api.github.com/repos/octocat/Hello-World/assignees{/user}\",\n \"blobs_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/blobs{/sha}\",\n \"branches_url\" : \"https://api.github.com/repos/octocat/Hello-World/branches{/branch}\",\n \"clone_url\" : \"https://github.com/octocat/Hello-World.git\",\n \"collaborators_url\" : \"https://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator}\",\n \"comments_url\" : \"https://api.github.com/repos/octocat/Hello-World/comments{/number}\",\n \"commits_url\" : \"https://api.github.com/repos/octocat/Hello-World/commits{/sha}\",\n \"compare_url\" : \"https://api.github.com/repos/octocat/Hello-World/compare/{base}...{head}\",\n \"contents_url\" : \"https://api.github.com/repos/octocat/Hello-World/contents/{+path}\",\n \"contributors_url\" : \"https://api.github.com/repos/octocat/Hello-World/contributors\",\n \"created_at\" : \"2011-01-26T19:01:12Z\",\n \"default_branch\" : \"master\",\n \"delete_branch_on_merge\" : true,\n \"deployments_url\" : \"https://api.github.com/repos/octocat/Hello-World/deployments\",\n \"description\" : \"This your first repo!\",\n \"disabled\" : false,\n \"downloads_url\" : \"https://api.github.com/repos/octocat/Hello-World/downloads\",\n \"events_url\" : \"https://api.github.com/repos/octocat/Hello-World/events\",\n \"fork\" : false,\n \"forks\" : 1,\n \"forks_count\" : 9,\n \"forks_url\" : \"https://api.github.com/repos/octocat/Hello-World/forks\",\n \"full_name\" : \"octocat/Hello-World\",\n \"git_commits_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/commits{/sha}\",\n \"git_refs_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/refs{/sha}\",\n \"git_tags_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/tags{/sha}\",\n \"git_url\" : \"git:github.com/octocat/Hello-World.git\",\n \"has_downloads\" : true,\n \"has_issues\" : true,\n \"has_pages\" : false,\n \"has_projects\" : true,\n \"has_wiki\" : true,\n \"homepage\" : \"https://github.com\",\n \"hooks_url\" : \"https://api.github.com/repos/octocat/Hello-World/hooks\",\n \"html_url\" : \"https://github.com/octocat/Hello-World\",\n \"id\" : 1296269,\n \"is_template\" : true,\n \"issue_comment_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/comments{/number}\",\n \"issue_events_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues/events{/number}\",\n \"issues_url\" : \"https://api.github.com/repos/octocat/Hello-World/issues{/number}\",\n \"keys_url\" : \"https://api.github.com/repos/octocat/Hello-World/keys{/key_id}\",\n \"labels_url\" : \"https://api.github.com/repos/octocat/Hello-World/labels{/name}\",\n \"languages_url\" : \"https://api.github.com/repos/octocat/Hello-World/languages\",\n \"license\" : {\n \"html_url\" : \"https://github.com/licenses/mit\",\n \"key\" : \"mit\",\n \"name\" : \"MIT License\",\n \"node_id\" : \"MDc6TGljZW5zZW1pdA==\",\n \"spdx_id\" : \"MIT\",\n \"url\" : \"https://api.github.com/licenses/mit\"\n },\n \"merges_url\" : \"https://api.github.com/repos/octocat/Hello-World/merges\",\n \"milestones_url\" : \"https://api.github.com/repos/octocat/Hello-World/milestones{/number}\",\n \"mirror_url\" : \"git:git.example.com/octocat/Hello-World\",\n \"name\" : \"Hello-World\",\n \"network_count\" : 0,\n \"node_id\" : \"MDEwOlJlcG9zaXRvcnkxMjk2MjY5\",\n \"notifications_url\" : \"https://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating}\",\n \"open_issues\" : 1,\n \"open_issues_count\" : 0,\n \"owner\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"permissions\" : {\n \"admin\" : false,\n \"pull\" : true,\n \"push\" : false\n },\n \"private\" : false,\n \"pulls_url\" : \"https://api.github.com/repos/octocat/Hello-World/pulls{/number}\",\n \"pushed_at\" : \"2011-01-26T19:06:43Z\",\n \"releases_url\" : \"https://api.github.com/repos/octocat/Hello-World/releases{/id}\",\n \"size\" : 108,\n \"ssh_url\" : \"git@github.com:octocat/Hello-World.git\",\n \"stargazers_count\" : 80,\n \"stargazers_url\" : \"https://api.github.com/repos/octocat/Hello-World/stargazers\",\n \"statuses_url\" : \"https://api.github.com/repos/octocat/Hello-World/statuses/{sha}\",\n \"subscribers_count\" : 42,\n \"subscribers_url\" : \"https://api.github.com/repos/octocat/Hello-World/subscribers\",\n \"subscription_url\" : \"https://api.github.com/repos/octocat/Hello-World/subscription\",\n \"svn_url\" : \"https://svn.github.com/octocat/Hello-World\",\n \"tags_url\" : \"https://api.github.com/repos/octocat/Hello-World/tags\",\n \"teams_url\" : \"https://api.github.com/repos/octocat/Hello-World/teams\",\n \"temp_clone_token\" : \"ABTLWHOULUVAXGTRYU7OC2876QJ2O\",\n \"topics\" : [ \"octocat\", \"atom\", \"electron\", \"api\" ],\n \"trees_url\" : \"https://api.github.com/repos/octocat/Hello-World/git/trees{/sha}\",\n \"updated_at\" : \"2011-01-26T19:14:43Z\",\n \"url\" : \"https://api.github.com/repos/octocat/Hello-World\",\n \"visibility\" : \"public\",\n \"watchers\" : 1,\n \"watchers_count\" : 80\n } ],\n \"repository_selection\" : \"selected\",\n \"token\" : \"ghs_16C7e42F292c6912E7710c838347Ae178B4a\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "88f9e49b-79ca-45e4-afa6-4262aaf6ce8c", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.641347Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "apps/create-installation-access-token", + "schema": { + "description": "Authentication token for a GitHub App installed on a user or org.", + "properties": { + "expires_at": { + "type": "string" + }, + "has_multiple_single_files": { + "example": true, + "type": "boolean" + }, + "permissions": { + "$ref": "#/components/schemas/app-permissions" + }, + "repositories": { + "items": { + "$ref": "#/components/schemas/repository" + }, + "type": "array" + }, + "repository_selection": { + "enum": ["all", "selected"], + "type": "string" + }, + "single_file": { + "example": "README.md", + "type": "string" + }, + "single_file_paths": { + "example": ["config.yml", ".github/issue_TEMPLATE.md"], + "items": { + "type": "string" + }, + "type": "array" + }, + "token": { + "type": "string" + } + }, + "required": ["token", "expires_at"], + "title": "Installation Token", + "type": "object" + } + } + } + }, + "insertionIndex": 1372 + }, + { + "id": "d07767d4-6174-43b0-836c-a9180c9f46b7", + "name": "Get an installation for the authenticated app", + "request": { + "urlPath": "/app/installations/7761718867050292448", + "method": "GET" + }, + "response": { + "status": 415, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/522240\",\n \"message\" : \"Cupiditate enim porro totam aut aut ut amet. Officiis ea voluptate aspernatur autem cupiditate. Qui quidem aut quibusdam incidunt.\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "d07767d4-6174-43b0-836c-a9180c9f46b7", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.641184Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "apps/get-installation", + "schema": { + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": ["message", "documentation_url"], + "type": "object" + } + } + } + }, + "insertionIndex": 1373 + }, + { + "id": "c7edc453-0ea2-4b85-b0a5-0271236af09e", + "name": "Get an installation for the authenticated app", + "request": { + "urlPath": "/app/installations/3813952655651393925", + "method": "GET" + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/460169\",\n \"message\" : \"Ullam aut nulla. Nesciunt ut dolorem qui qui qui iusto in. Reprehenderit nihil sequi et ullam vel voluptatem placeat. Consequatur vitae voluptatem temporibus. Quia modi maiores cupiditate quis.\",\n \"url\" : \"https://web.example.mocklab.io/399722\",\n \"status\" : \"12d6ocm0jqk1fagdsx3rj1bfyi71njnqyg77hug3bq1uc6lovqm2mpaxopmm3wkn1odl89gdcvrh994zew45qcoh7lh38ixf9gskph9gls3lcq1b5jaat7hna3jp2rnh7r0ts7c1jkt42dks7q9751dm1j9yath1u0xv9jz71d8ejfhewn8j0zhnp9roucvlnpjag\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "c7edc453-0ea2-4b85-b0a5-0271236af09e", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.641037Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "apps/get-installation", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 1374 + }, + { + "id": "91a70358-95b8-4971-9a1a-4fbe2c9f40f0", + "name": "Get an installation for the authenticated app - default", + "request": { + "urlPath": "/app/installations/3951596542757890440", + "method": "GET" + }, + "response": { + "status": 200, + "body": "{\n \"access_tokens_url\" : \"https://api.github.com/installations/1/access_tokens\",\n \"account\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"app_id\" : 1,\n \"app_slug\" : \"github-actions\",\n \"created_at\" : \"2017-07-08T16:18:44-04:00\",\n \"events\" : [ \"push\", \"pull_request\" ],\n \"html_url\" : \"https://github.com/organizations/github/settings/installations/1\",\n \"id\" : 1,\n \"permissions\" : {\n \"checks\" : \"write\",\n \"contents\" : \"read\",\n \"metadata\" : \"read\"\n },\n \"repositories_url\" : \"https://api.github.com/installation/repositories\",\n \"repository_selection\" : \"selected\",\n \"single_file_name\" : \"config.yaml\",\n \"target_id\" : 1,\n \"target_type\" : \"Organization\",\n \"updated_at\" : \"2017-07-08T16:18:44-04:00\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "91a70358-95b8-4971-9a1a-4fbe2c9f40f0", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.640803Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "apps/get-installation", + "schema": { + "description": "Installation", + "properties": { + "access_tokens_url": { + "example": "https://api.github.com/installations/1/access_tokens", + "format": "uri", + "type": "string" + }, + "account": { + "anyOf": [ + { + "$ref": "#/components/schemas/simple-user" + }, + { + "$ref": "#/components/schemas/enterprise" + } + ], + "nullable": true + }, + "app_id": { + "example": 1, + "type": "integer" + }, + "app_slug": { + "example": "github-actions", + "type": "string" + }, + "contact_email": { + "example": "\"test_13f1e99741e3e004@d7e1eb0bc0a1ba12.com\"", + "nullable": true, + "type": "string" + }, + "created_at": { + "format": "date-time", + "type": "string" + }, + "events": { + "items": { + "type": "string" + }, + "type": "array" + }, + "html_url": { + "example": "https://github.com/organizations/github/settings/installations/1", + "format": "uri", + "type": "string" + }, + "id": { + "description": "The ID of the installation.", + "example": 1, + "type": "integer" + }, + "permissions": { + "example": { + "deployments": "write", + "issues": "read" + }, + "properties": { + "checks": { + "type": "string" + }, + "contents": { + "type": "string" + }, + "deployments": { + "type": "string" + }, + "issues": { + "example": "\"read\"", + "type": "string" + }, + "metadata": { + "type": "string" + }, + "organization_administration": { + "example": "\"read\"", + "type": "string" + }, + "pull_requests": { + "type": "string" + }, + "statuses": { + "type": "string" + } + }, + "type": "object" + }, + "repositories_url": { + "example": "https://api.github.com/installation/repositories", + "format": "uri", + "type": "string" + }, + "repository_selection": { + "description": "Describe whether all repositories have been selected or there's a selection involved", + "enum": ["all", "selected"], + "type": "string" + }, + "single_file_name": { + "example": "config.yaml", + "nullable": true, + "type": "string" + }, + "suspended_at": { + "format": "date-time", + "nullable": true, + "type": "string" + }, + "suspended_by": { + "$ref": "#/components/schemas/nullable-simple-user" + }, + "target_id": { + "description": "The ID of the user or organization this token is being scoped to.", + "type": "integer" + }, + "target_type": { + "example": "Organization", + "type": "string" + }, + "updated_at": { + "format": "date-time", + "type": "string" + } + }, + "required": [ + "id", + "app_id", + "app_slug", + "target_id", + "target_type", + "single_file_name", + "repository_selection", + "access_tokens_url", + "html_url", + "repositories_url", + "events", + "account", + "permissions", + "created_at", + "updated_at" + ], + "title": "Installation", + "type": "object" + } + } + } + }, + "insertionIndex": 1375 + }, + { + "id": "9b99ce29-6690-4424-98c5-5e4116654b2d", + "name": "Delete an installation for the authenticated app (application/json)", + "request": { + "urlPath": "/app/installations/7457495958581462427", + "method": "DELETE", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/092405\",\n \"message\" : \"Quas eos facere omnis dolore. Velit quasi quod qui. Qui iste sed eum repudiandae voluptate et.\",\n \"url\" : \"https://web.example.mocklab.io/159516\",\n \"status\" : \"vnvs7ikxq2jb9s8qead7sw7k4427jpkcg4js2tk73s154mw9e66emqm\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "9b99ce29-6690-4424-98c5-5e4116654b2d", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.640471Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "apps/delete-installation", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 1376 + }, + { + "id": "5ade9630-20e9-4955-9271-cbb90a8a15f9", + "name": "Delete an installation for the authenticated app - 204", + "request": { + "urlPath": "/app/installations/3690463827137854965", + "method": "DELETE" + }, + "response": { + "status": 204 + }, + "uuid": "5ade9630-20e9-4955-9271-cbb90a8a15f9", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.640264Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "apps/delete-installation" + } + } + }, + "insertionIndex": 1377 + }, + { + "id": "291c460e-e8a2-4fed-bb60-b42ddb4c90df", + "name": "List installations for the authenticated app - default", + "request": { + "urlPath": "/app/installations", + "method": "GET" + }, + "response": { + "status": 200, + "body": "[ {\n \"access_tokens_url\" : \"https://api.github.com/installations/1/access_tokens\",\n \"account\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n },\n \"app_id\" : 1,\n \"app_slug\" : \"github-actions\",\n \"created_at\" : \"2017-07-08T16:18:44-04:00\",\n \"events\" : [ \"push\", \"pull_request\" ],\n \"html_url\" : \"https://github.com/organizations/github/settings/installations/1\",\n \"id\" : 1,\n \"permissions\" : {\n \"checks\" : \"write\",\n \"contents\" : \"read\",\n \"metadata\" : \"read\"\n },\n \"repositories_url\" : \"https://api.github.com/installation/repositories\",\n \"repository_selection\" : \"selected\",\n \"single_file_name\" : \"config.yaml\",\n \"target_id\" : 1,\n \"target_type\" : \"Organization\",\n \"updated_at\" : \"2017-07-08T16:18:44-04:00\"\n} ]", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "291c460e-e8a2-4fed-bb60-b42ddb4c90df", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.640235Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "apps/list-installations", + "schema": { + "items": { + "$ref": "#/components/schemas/installation-ghes-2" + }, + "type": "array" + } + } + } + }, + "insertionIndex": 1378 + }, + { + "id": "4ac86d74-31a2-4472-8e88-f2b6a1d95073", + "name": "Create a GitHub App from a manifest", + "request": { + "urlPath": "/app-manifests/5zbophohjw3p7p05xib38zs12gy8xecrj96s4marq723ysf2qdt8cimv0i51i9b7vdwjasgq0til9wjteckxo8ao3x2wgwlvdvaki7621eqabejqqvl3gdb3nhxkf2h6s4q0k70bp6q64is9e2udls5mbjjlw1neeb95cr0031hptoaumxgs2mhwcx/conversions", + "method": "POST" + }, + "response": { + "status": 422, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/503947\",\n \"message\" : \"Sit ea commodi ut odio sed iusto. Et labore dignissimos dolorem. Facilis atque possimus similique deserunt.\",\n \"errors\" : [ \"9ygt2y8pycskasj3eczvimeyshncmt0igyd4n13sz9ft3kfq0vo8pyp2yx8n7vn\", \"li5fz62gk6owtl5eljh5ga4iykejz97uegs3q24e370npdt57nalbj6lqtlr991c94hbkygvhivvqjwvq8gk50e9kgqflq0h82o5ikv7vhu83rc2tlu\", \"4mp\", \"3ftinsbm3tqtc1gq5a0x5zg5e8t3waj96f4l6r4iifi12natukfhvzokmrszs6m3kzrunyv43hb78mjgnar99wcnw0ctl8y3udtx2f9ss2pk5pjxr\", \"lwo2ubn8\", \"nu5x99ecww914qs\", \"p25mygiflm9oce24v7mar6n88jwcdqrwyuu4pf9y3b5q5b3om0lbhy6g07msclsbo3v6esosij61w1hkk3xjhgrp7oqsc0owvzclnospiyn21xdzp7vh0wey6qd3kin3qgoshxs0kwl8sql20b367fs9ot0\" ]\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "4ac86d74-31a2-4472-8e88-f2b6a1d95073", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.640189Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "apps/create-from-manifest", + "schema": { + "description": "Validation Error Simple", + "properties": { + "documentation_url": { + "type": "string" + }, + "errors": { + "items": { + "type": "string" + }, + "type": "array" + }, + "message": { + "type": "string" + } + }, + "required": ["message", "documentation_url"], + "title": "Validation Error Simple", + "type": "object" + } + } + } + }, + "insertionIndex": 1379 + }, + { + "id": "ffe764db-d9df-4bdd-ab89-f005c6d42fd1", + "name": "Create a GitHub App from a manifest", + "request": { + "urlPath": "/app-manifests/43gh8tcf74x06ffb2fa/conversions", + "method": "POST" + }, + "response": { + "status": 404, + "body": "{\n \"documentation_url\" : \"https://web.example.mocklab.io/612448\",\n \"message\" : \"Et in dignissimos tenetur qui voluptas enim. Dolorem quis ex eligendi iure suscipit praesentium. Consectetur corrupti ad libero possimus corrupti dolores natus. Assumenda magnam sit saepe qui aut ut d\",\n \"url\" : \"https://web.example.mocklab.io/837050\",\n \"status\" : \"gev771mrheqxy9l7ree3yy2l7yzsp3zyy1kyikq93op16p162j\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "ffe764db-d9df-4bdd-ab89-f005c6d42fd1", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.639963Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "apps/create-from-manifest", + "schema": { + "description": "Basic Error", + "properties": { + "documentation_url": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "title": "Basic Error", + "type": "object" + } + } + } + }, + "insertionIndex": 1380 + }, + { + "id": "14098b2f-e9bf-442f-aff4-604026dfebcd", + "name": "Create a GitHub App from a manifest - default", + "request": { + "urlPath": "/app-manifests/wav3ogjs3fg54l258ywrpe628f7wnip6xbs8boiackliby8ddqnii6iixxpqst5mfb1b/conversions", + "method": "POST" + }, + "response": { + "status": 201, + "body": "{\n \"client_id\" : \"Iv1.8a61f9b3a7aba766\",\n \"client_secret\" : \"1726be1638095a19edd134c77bde3aa2ece1e5d8\",\n \"created_at\" : \"2017-07-08T16:18:44-04:00\",\n \"description\" : \"\",\n \"events\" : [ \"push\", \"pull_request\" ],\n \"external_url\" : \"https://example.com\",\n \"html_url\" : \"https://github.com/apps/octoapp\",\n \"id\" : 1,\n \"name\" : \"Octocat App\",\n \"node_id\" : \"MDxOkludGVncmF0aW9uMQ==\",\n \"owner\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/orgs/github/events\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"github\",\n \"node_id\" : \"MDEyOk9yZ2FuaXphdGlvbjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/orgs/github/repos\",\n \"site_admin\" : true,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/orgs/github\"\n },\n \"pem\" : \"-----BEGIN RSA PRIVATE KEY-----\\nMIIEowIBAAKCAQEAuEPzOUE+kiEH1WLiMeBytTEF856j0hOVcSUSUkZxKvqczkWM\\n9vo1gDyC7ZXhdH9fKh32aapba3RSsp4ke+giSmYTk2mGR538ShSDxh0OgpJmjiKP\\nX0Bj4j5sFqfXuCtl9SkH4iueivv4R53ktqM+n6hk98l6hRwC39GVIblAh2lEM4L/\\n6WvYwuQXPMM5OG2Ryh2tDZ1WS5RKfgq+9ksNJ5Q9UtqtqHkO+E63N5OK9sbzpUUm\\noNaOl3udTlZD3A8iqwMPVxH4SxgATBPAc+bmjk6BMJ0qIzDcVGTrqrzUiywCTLma\\nszdk8GjzXtPDmuBgNn+o6s02qVGpyydgEuqmTQIDAQABAoIBACL6AvkjQVVLn8kJ\\ndBYznJJ4M8ECo+YEgaFwgAHODT0zRQCCgzd+Vxl4YwHmKV2Lr+y2s0drZt8GvYva\\nKOK8NYYZyi15IlwFyRXmvvykF1UBpSXluYFDH7KaVroWMgRreHcIys5LqVSIb6Bo\\ngDmK0yBLPp8qR29s2b7ScZRtLaqGJiX+j55rNzrZwxHkxFHyG9OG+u9IsBElcKCP\\nkYCVE8ZdYexfnKOZbgn2kZB9qu0T/Mdvki8yk3I2bI6xYO24oQmhnT36qnqWoCBX\\nNuCNsBQgpYZeZET8mEAUmo9d+ABmIHIvSs005agK8xRaP4+6jYgy6WwoejJRF5yd\\nNBuF7aECgYEA50nZ4FiZYV0vcJDxFYeY3kYOvVuKn8OyW+2rg7JIQTremIjv8FkE\\nZnwuF9ZRxgqLxUIfKKfzp/5l5LrycNoj2YKfHKnRejxRWXqG+ZETfxxlmlRns0QG\\nJ4+BYL0CoanDSeA4fuyn4Bv7cy/03TDhfg/Uq0Aeg+hhcPE/vx3ebPsCgYEAy/Pv\\neDLssOSdeyIxf0Brtocg6aPXIVaLdus+bXmLg77rJIFytAZmTTW8SkkSczWtucI3\\nFI1I6sei/8FdPzAl62/JDdlf7Wd9K7JIotY4TzT7Tm7QU7xpfLLYIP1bOFjN81rk\\n77oOD4LsXcosB/U6s1blPJMZ6AlO2EKs10UuR1cCgYBipzuJ2ADEaOz9RLWwi0AH\\nPza2Sj+c2epQD9ZivD7Zo/Sid3ZwvGeGF13JyR7kLEdmAkgsHUdu1rI7mAolXMaB\\n1pdrsHureeLxGbRM6za3tzMXWv1Il7FQWoPC8ZwXvMOR1VQDv4nzq7vbbA8z8c+c\\n57+8tALQHOTDOgQIzwK61QKBgERGVc0EJy4Uag+VY8J4m1ZQKBluqo7TfP6DQ7O8\\nM5MX73maB/7yAX8pVO39RjrhJlYACRZNMbK+v/ckEQYdJSSKmGCVe0JrGYDuPtic\\nI9+IGfSorf7KHPoMmMN6bPYQ7Gjh7a++tgRFTMEc8956Hnt4xGahy9NcglNtBpVN\\n6G8jAoGBAMCh028pdzJa/xeBHLLaVB2sc0Fe7993WlsPmnVE779dAz7qMscOtXJK\\nfgtriltLSSD6rTA9hUAsL/X62rY0wdXuNdijjBb/qvrx7CAV6i37NK1CjABNjsfG\\nZM372Ac6zc1EqSrid2IjET1YqyIW2KGLI1R2xbQc98UGlt48OdWu\\n-----END RSA PRIVATE KEY-----\\n\",\n \"permissions\" : {\n \"contents\" : \"read\",\n \"issues\" : \"write\",\n \"metadata\" : \"read\",\n \"single_file\" : \"write\"\n },\n \"slug\" : \"octoapp\",\n \"updated_at\" : \"2017-07-08T16:18:44-04:00\",\n \"webhook_secret\" : \"e340154128314309424b7c8e90325147d99fdafa\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "14098b2f-e9bf-442f-aff4-604026dfebcd", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.639685Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "apps/create-from-manifest", + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/integration" + }, + { + "additionalProperties": true, + "properties": { + "client_id": { + "type": "string" + }, + "client_secret": { + "type": "string" + }, + "pem": { + "type": "string" + }, + "webhook_secret": { + "nullable": true, + "type": "string" + } + }, + "required": ["client_id", "client_secret", "webhook_secret", "pem"], + "type": "object" + } + ] + } + } + } + }, + "insertionIndex": 1381 + }, + { + "id": "9128c0b8-928e-461f-8a57-cb37a69f54f7", + "name": "Get the authenticated app - default", + "request": { + "urlPath": "/app", + "method": "GET" + }, + "response": { + "status": 200, + "body": "{\n \"created_at\" : \"2017-07-08T16:18:44-04:00\",\n \"description\" : \"\",\n \"events\" : [ \"push\", \"pull_request\" ],\n \"external_url\" : \"https://example.com\",\n \"html_url\" : \"https://github.com/apps/octoapp\",\n \"id\" : 1,\n \"name\" : \"Octocat App\",\n \"node_id\" : \"MDExOkludGVncmF0aW9uMQ==\",\n \"owner\" : {\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/orgs/github/events\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"github\",\n \"node_id\" : \"MDEyOk9yZ2FuaXphdGlvbjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/orgs/github/repos\",\n \"site_admin\" : true,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/orgs/github\"\n },\n \"permissions\" : {\n \"contents\" : \"read\",\n \"issues\" : \"write\",\n \"metadata\" : \"read\",\n \"single_file\" : \"write\"\n },\n \"slug\" : \"octoapp\",\n \"updated_at\" : \"2017-07-08T16:18:44-04:00\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "9128c0b8-928e-461f-8a57-cb37a69f54f7", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.639548Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "apps/get-authenticated", + "schema": { + "description": "GitHub apps are a new way to extend GitHub. They can be installed directly on organizations and user accounts and granted access to specific repositories. They come with granular permissions and built-in webhooks. GitHub apps are first class actors within GitHub.", + "properties": { + "client_id": { + "example": "\"Iv1.25b5d1e65ffc4022\"", + "type": "string" + }, + "client_secret": { + "example": "\"1d4b2097ac622ba702d19de498f005747a8b21d3\"", + "type": "string" + }, + "created_at": { + "example": "2017-07-08T16:18:44-04:00", + "format": "date-time", + "type": "string" + }, + "description": { + "example": "The description of the app.", + "nullable": true, + "type": "string" + }, + "events": { + "description": "The list of events for the GitHub app", + "example": ["label", "deployment"], + "items": { + "type": "string" + }, + "type": "array" + }, + "external_url": { + "example": "https://example.com", + "format": "uri", + "type": "string" + }, + "html_url": { + "example": "https://github.com/apps/super-ci", + "format": "uri", + "type": "string" + }, + "id": { + "description": "Unique identifier of the GitHub app", + "example": 37, + "type": "integer" + }, + "installations_count": { + "description": "The number of installations associated with the GitHub app", + "example": 5, + "type": "integer" + }, + "name": { + "description": "The name of the GitHub app", + "example": "Probot Owners", + "type": "string" + }, + "node_id": { + "example": "MDExOkludGVncmF0aW9uMQ==", + "type": "string" + }, + "owner": { + "$ref": "#/components/schemas/nullable-simple-user" + }, + "pem": { + "example": "\"-----BEGIN RSA PRIVATE KEY-----\\nMIIEogIBAAKCAQEArYxrNYD/iT5CZVpRJu4rBKmmze3PVmT/gCo2ATUvDvZTPTey\\nxcGJ3vvrJXazKk06pN05TN29o98jrYz4cengG3YGsXPNEpKsIrEl8NhbnxapEnM9\\nJCMRe0P5JcPsfZlX6hmiT7136GRWiGOUba2X9+HKh8QJVLG5rM007TBER9/z9mWm\\nrJuNh+m5l320oBQY/Qq3A7wzdEfZw8qm/mIN0FCeoXH1L6B8xXWaAYBwhTEh6SSn\\nZHlO1Xu1JWDmAvBCi0RO5aRSKM8q9QEkvvHP4yweAtK3N8+aAbZ7ovaDhyGz8r6r\\nzhU1b8Uo0Z2ysf503WqzQgIajr7Fry7/kUwpgQIDAQABAoIBADwJp80Ko1xHPZDy\\nfcCKBDfIuPvkmSW6KumbsLMaQv1aGdHDwwTGv3t0ixSay8CGlxMRtRDyZPib6SvQ\\n6OH/lpfpbMdW2ErkksgtoIKBVrDilfrcAvrNZu7NxRNbhCSvN8q0s4ICecjbbVQh\\nnueSdlA6vGXbW58BHMq68uRbHkP+k+mM9U0mDJ1HMch67wlg5GbayVRt63H7R2+r\\nVxcna7B80J/lCEjIYZznawgiTvp3MSanTglqAYi+m1EcSsP14bJIB9vgaxS79kTu\\noiSo93leJbBvuGo8QEiUqTwMw4tDksmkLsoqNKQ1q9P7LZ9DGcujtPy4EZsamSJT\\ny8OJt0ECgYEA2lxOxJsQk2kI325JgKFjo92mQeUObIvPfSNWUIZQDTjniOI6Gv63\\nGLWVFrZcvQBWjMEQraJA9xjPbblV8PtfO87MiJGLWCHFxmPz2dzoedN+2Coxom8m\\nV95CLz8QUShuao6u/RYcvUaZEoYs5bHcTmy5sBK80JyEmafJPtCQVxMCgYEAy3ar\\nZr3yv4xRPEPMat4rseswmuMooSaK3SKub19WFI5IAtB/e7qR1Rj9JhOGcZz+OQrl\\nT78O2OFYlgOIkJPvRMrPpK5V9lslc7tz1FSh3BZMRGq5jSyD7ETSOQ0c8T2O/s7v\\nbeEPbVbDe4mwvM24XByH0GnWveVxaDl51ABD65sCgYB3ZAspUkOA5egVCh8kNpnd\\nSd6SnuQBE3ySRlT2WEnCwP9Ph6oPgn+oAfiPX4xbRqkL8q/k0BdHQ4h+zNwhk7+h\\nWtPYRAP1Xxnc/F+jGjb+DVaIaKGU18MWPg7f+FI6nampl3Q0KvfxwX0GdNhtio8T\\nTj1E+SnFwh56SRQuxSh2gwKBgHKjlIO5NtNSflsUYFM+hyQiPiqnHzddfhSG+/3o\\nm5nNaSmczJesUYreH5San7/YEy2UxAugvP7aSY2MxB+iGsiJ9WD2kZzTUlDZJ7RV\\nUzWsoqBR+eZfVJ2FUWWvy8TpSG6trh4dFxImNtKejCR1TREpSiTV3Zb1dmahK9GV\\nrK9NAoGAbBxRLoC01xfxCTgt5BDiBcFVh4fp5yYKwavJPLzHSpuDOrrI9jDn1oKN\\nonq5sDU1i391zfQvdrbX4Ova48BN+B7p63FocP/MK5tyyBoT8zQEk2+vWDOw7H/Z\\nu5dTCPxTIsoIwUw1I+7yIxqJzLPFgR2gVBwY1ra/8iAqCj+zeBw=\\n-----END RSA PRIVATE KEY-----\\n\"", + "type": "string" + }, + "permissions": { + "additionalProperties": { + "type": "string" + }, + "description": "The set of permissions for the GitHub app", + "example": { + "deployments": "write", + "issues": "read" + }, + "properties": { + "checks": { + "type": "string" + }, + "contents": { + "type": "string" + }, + "deployments": { + "type": "string" + }, + "issues": { + "type": "string" + }, + "metadata": { + "type": "string" + } + }, + "type": "object" + }, + "slug": { + "description": "The slug name of the GitHub app", + "example": "probot-owners", + "type": "string" + }, + "updated_at": { + "example": "2017-07-08T16:18:44-04:00", + "format": "date-time", + "type": "string" + }, + "webhook_secret": { + "example": "\"6fba8f2fc8a7e8f2cca5577eddd82ca7586b3b6b\"", + "nullable": true, + "type": "string" + } + }, + "required": [ + "id", + "node_id", + "owner", + "name", + "description", + "external_url", + "html_url", + "created_at", + "updated_at", + "permissions", + "events" + ], + "title": "GitHub app", + "type": "object" + } + } + } + }, + "insertionIndex": 1382 + }, + { + "id": "c7a3f51a-067b-4457-9127-386533716577", + "name": "Create an impersonation OAuth token - default", + "request": { + "urlPath": "/admin/users/jinny.pfannerstill/authorizations", + "method": "POST" + }, + "response": { + "status": 201, + "body": "{\n \"app\" : {\n \"client_id\" : \"abcde12345fghij67890\",\n \"name\" : \"my github app\",\n \"url\" : \"http://my-github-app.com\"\n },\n \"created_at\" : \"2011-09-06T17:26:27Z\",\n \"fingerprint\" : \"jklmnop12345678\",\n \"hashed_token\" : \"25f94a2a5c7fbaf499c665bc73d67c1c87e496da8985131633ee0a95819db2e8\",\n \"id\" : 1,\n \"note\" : \"optional note\",\n \"note_url\" : \"http://optional/note/url\",\n \"scopes\" : [ \"public_repo\" ],\n \"token\" : \"ghu_16C7e42F292c6912E7710c838347Ae178B4a\",\n \"token_last_eight\" : \"Ae178B4a\",\n \"updated_at\" : \"2011-09-06T20:39:23Z\",\n \"url\" : \"https://api.github.com/authorizations/1\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "c7a3f51a-067b-4457-9127-386533716577", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.639249Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "enterprise-admin/create-impersonation-o-auth-token", + "schema": { + "description": "The authorization for an OAuth app, GitHub App, or a Personal Access Token.", + "properties": { + "app": { + "properties": { + "client_id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "url": { + "format": "uri", + "type": "string" + } + }, + "required": ["client_id", "name", "url"], + "type": "object" + }, + "created_at": { + "format": "date-time", + "type": "string" + }, + "fingerprint": { + "nullable": true, + "type": "string" + }, + "hashed_token": { + "nullable": true, + "type": "string" + }, + "id": { + "type": "integer" + }, + "installation": { + "$ref": "#/components/schemas/nullable-scoped-installation" + }, + "note": { + "nullable": true, + "type": "string" + }, + "note_url": { + "format": "uri", + "nullable": true, + "type": "string" + }, + "scopes": { + "description": "A list of scopes that this authorization is in.", + "items": { + "type": "string" + }, + "nullable": true, + "type": "array" + }, + "token": { + "type": "string" + }, + "token_last_eight": { + "nullable": true, + "type": "string" + }, + "updated_at": { + "format": "date-time", + "type": "string" + }, + "url": { + "format": "uri", + "type": "string" + }, + "user": { + "$ref": "#/components/schemas/nullable-simple-user" + } + }, + "required": [ + "app", + "id", + "note", + "note_url", + "scopes", + "token", + "hashed_token", + "token_last_eight", + "fingerprint", + "url", + "created_at", + "updated_at", + "expires_at" + ], + "title": "Authorization", + "type": "object" + } + } + } + }, + "insertionIndex": 1383 + }, + { + "id": "053e8086-4ec1-4827-a238-0cc1e1810bd5", + "name": "Delete an impersonation OAuth token - 204", + "request": { + "urlPath": "/admin/users/han.olson/authorizations", + "method": "DELETE" + }, + "response": { + "status": 204 + }, + "uuid": "053e8086-4ec1-4827-a238-0cc1e1810bd5", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.639043Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "enterprise-admin/delete-impersonation-o-auth-token" + } + } + }, + "insertionIndex": 1384 + }, + { + "id": "0c9958d9-78d1-43fe-b22c-9a403283f893", + "name": "Update the username for a user", + "request": { + "urlPath": "/admin/users/garfield.hyatt", + "method": "PATCH" + }, + "response": { + "status": 202, + "body": "{\n \"message\" : \"Job queued to rename user. It may take a few minutes to complete.\",\n \"url\" : \"https://api.github.com/user/1\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "0c9958d9-78d1-43fe-b22c-9a403283f893", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.639Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "enterprise-admin/update-username-for-user", + "schema": { + "properties": { + "message": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "type": "object" + } + } + } + }, + "insertionIndex": 1385 + }, + { + "id": "c697466d-4c43-46e0-ae03-46f5e4d22999", + "name": "Delete a user - 204", + "request": { + "urlPath": "/admin/users/oneida.green", + "method": "DELETE" + }, + "response": { + "status": 204 + }, + "uuid": "c697466d-4c43-46e0-ae03-46f5e4d22999", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.638925Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "enterprise-admin/delete-user" + } + } + }, + "insertionIndex": 1386 + }, + { + "id": "673e9bc4-0b01-4ffc-b313-8ed61190939f", + "name": "Create a user - default", + "request": { + "urlPath": "/admin/users", + "method": "POST" + }, + "response": { + "status": 201, + "body": "{\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"login\" : \"octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"type\" : \"User\",\n \"url\" : \"https://api.github.com/users/octocat\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "673e9bc4-0b01-4ffc-b313-8ed61190939f", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.638866Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "enterprise-admin/create-user", + "schema": { + "description": "Simple User", + "properties": { + "avatar_url": { + "example": "https://github.com/images/error/octocat_happy.gif", + "format": "uri", + "type": "string" + }, + "email": { + "nullable": true, + "type": "string" + }, + "events_url": { + "example": "https://api.github.com/users/octocat/events{/privacy}", + "type": "string" + }, + "followers_url": { + "example": "https://api.github.com/users/octocat/followers", + "format": "uri", + "type": "string" + }, + "following_url": { + "example": "https://api.github.com/users/octocat/following{/other_user}", + "type": "string" + }, + "gists_url": { + "example": "https://api.github.com/users/octocat/gists{/gist_id}", + "type": "string" + }, + "gravatar_id": { + "example": "41d064eb2195891e12d0413f63227ea7", + "nullable": true, + "type": "string" + }, + "html_url": { + "example": "https://github.com/octocat", + "format": "uri", + "type": "string" + }, + "id": { + "example": 1, + "type": "integer" + }, + "login": { + "example": "octocat", + "type": "string" + }, + "name": { + "nullable": true, + "type": "string" + }, + "node_id": { + "example": "MDQ6VXNlcjE=", + "type": "string" + }, + "organizations_url": { + "example": "https://api.github.com/users/octocat/orgs", + "format": "uri", + "type": "string" + }, + "received_events_url": { + "example": "https://api.github.com/users/octocat/received_events", + "format": "uri", + "type": "string" + }, + "repos_url": { + "example": "https://api.github.com/users/octocat/repos", + "format": "uri", + "type": "string" + }, + "site_admin": { + "type": "boolean" + }, + "starred_at": { + "example": "\"2020-07-09T00:17:55Z\"", + "type": "string" + }, + "starred_url": { + "example": "https://api.github.com/users/octocat/starred{/owner}{/repo}", + "type": "string" + }, + "subscriptions_url": { + "example": "https://api.github.com/users/octocat/subscriptions", + "format": "uri", + "type": "string" + }, + "type": { + "example": "User", + "type": "string" + }, + "url": { + "example": "https://api.github.com/users/octocat", + "format": "uri", + "type": "string" + } + }, + "required": [ + "avatar_url", + "events_url", + "followers_url", + "following_url", + "gists_url", + "gravatar_id", + "html_url", + "id", + "node_id", + "login", + "organizations_url", + "received_events_url", + "repos_url", + "site_admin", + "starred_url", + "subscriptions_url", + "type", + "url" + ], + "title": "Simple User", + "type": "object" + } + } + } + }, + "insertionIndex": 1387 + }, + { + "id": "f5560df7-0c32-4d49-81bd-367f2caa198c", + "name": "Delete a personal access token - 204", + "request": { + "urlPath": "/admin/tokens/7091757639084095193", + "method": "DELETE" + }, + "response": { + "status": 204 + }, + "uuid": "f5560df7-0c32-4d49-81bd-367f2caa198c", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.638615Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "enterprise-admin/delete-personal-access-token" + } + } + }, + "insertionIndex": 1388 + }, + { + "id": "2ba501c7-363c-4e6c-9a24-277c23f8485a", + "name": "List personal access tokens - default", + "request": { + "urlPath": "/admin/tokens", + "method": "GET" + }, + "response": { + "status": 200, + "body": "[ {\n \"app\" : {\n \"client_id\" : \"00000000000000000000\",\n \"name\" : \"My personal access token\",\n \"url\" : \"https://docs.github.com/enterprise/rest/reference/enterprise-admin#list-personal-access-tokens\"\n },\n \"created_at\" : \"2019-04-24T21:49:02Z\",\n \"hashed_token\" : \"23cffb2fab1b0a62747863eba88cb9327e561f2f7a0c8661c0d9b83146cb8d45\",\n \"id\" : 2,\n \"note\" : \"My personal access token\",\n \"scopes\" : [ \"admin:business\", \"admin:gpg_key\", \"admin:org\", \"admin:org_hook\", \"admin:pre_receive_hook\", \"admin:public_key\", \"admin:repo_hook\", \"delete_repo\", \"gist\", \"notifications\", \"repo\", \"user\", \"write:discussion\" ],\n \"token\" : \"ghp_16C7e42F292c6912E7710c838347Ae178B4a\",\n \"token_last_eight\" : \"Ae178B4a\",\n \"updated_at\" : \"2019-04-24T21:49:02Z\",\n \"url\" : \"https://enterprise.octocat.com/api/v3/authorizations/2\"\n} ]", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "2ba501c7-363c-4e6c-9a24-277c23f8485a", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.638589Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "enterprise-admin/list-personal-access-tokens", + "schema": { + "items": { + "$ref": "#/components/schemas/authorization" + }, + "type": "array" + } + } + } + }, + "insertionIndex": 1389 + }, + { + "id": "10649e17-dad8-4187-9ecc-ed927db24a80", + "name": "Update a pre-receive hook - default", + "request": { + "urlPath": "/admin/pre-receive-hooks/622930613606800982", + "method": "PATCH" + }, + "response": { + "status": 200, + "body": "{\n \"allow_downstream_configuration\" : true,\n \"enforcement\" : \"disabled\",\n \"environment\" : {\n \"created_at\" : \"2016-05-20T11:35:45-05:00\",\n \"default_environment\" : true,\n \"download\" : {\n \"downloaded_at\" : \"2016-05-26T07:42:53-05:00\",\n \"state\" : \"success\",\n \"url\" : \"https://github.example.com/api/v3/admin/pre-receive-environments/1/downloads/latest\"\n },\n \"hooks_count\" : 1,\n \"html_url\" : \"https://github.example.com/admin/pre-receive-environments/1\",\n \"id\" : 1,\n \"image_url\" : \"githubenterprise://internal\",\n \"name\" : \"Default\",\n \"url\" : \"https://github.example.com/api/v3/admin/pre-receive-environments/1\"\n },\n \"id\" : 1,\n \"name\" : \"Check Commits\",\n \"script\" : \"scripts/commmit_check.sh\",\n \"script_repository\" : {\n \"full_name\" : \"DevIT/hooks\",\n \"html_url\" : \"https://github.example.com/DevIT/hooks\",\n \"id\" : 595,\n \"url\" : \"https://github.example.com/api/v3/repos/DevIT/hooks\"\n }\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "10649e17-dad8-4187-9ecc-ed927db24a80", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.638544Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "enterprise-admin/update-pre-receive-hook", + "schema": { + "properties": { + "allow_downstream_configuration": { + "type": "boolean" + }, + "enforcement": { + "type": "string" + }, + "environment": { + "properties": { + "created_at": { + "type": "string" + }, + "default_environment": { + "type": "boolean" + }, + "download": { + "properties": { + "downloaded_at": { + "nullable": true, + "type": "string" + }, + "message": { + "nullable": true, + "type": "string" + }, + "state": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "type": "object" + }, + "hooks_count": { + "type": "integer" + }, + "html_url": { + "type": "string" + }, + "id": { + "type": "integer" + }, + "image_url": { + "type": "string" + }, + "name": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "type": "object" + }, + "id": { + "type": "integer" + }, + "name": { + "type": "string" + }, + "script": { + "type": "string" + }, + "script_repository": { + "properties": { + "full_name": { + "type": "string" + }, + "html_url": { + "type": "string" + }, + "id": { + "type": "integer" + }, + "url": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + } + } + }, + "insertionIndex": 1390 + }, + { + "id": "0f4e9320-411b-4709-aa29-b9fdf52f5b46", + "name": "Get a pre-receive hook - default", + "request": { + "urlPath": "/admin/pre-receive-hooks/6155393800644685531", + "method": "GET" + }, + "response": { + "status": 200, + "body": "{\n \"allow_downstream_configuration\" : false,\n \"enforcement\" : \"disabled\",\n \"environment\" : {\n \"created_at\" : \"2016-05-20T11:35:45-05:00\",\n \"default_environment\" : false,\n \"download\" : {\n \"downloaded_at\" : \"2016-05-26T07:42:53-05:00\",\n \"state\" : \"success\",\n \"url\" : \"https://github.example.com/api/v3/admin/pre-receive-environments/2/downloads/latest\"\n },\n \"hooks_count\" : 1,\n \"html_url\" : \"https://github.example.com/admin/pre-receive-environments/2\",\n \"id\" : 2,\n \"image_url\" : \"https://my_file_server/path/to/devtools_env.tar.gz\",\n \"name\" : \"DevTools Hook Env\",\n \"url\" : \"https://github.example.com/api/v3/admin/pre-receive-environments/2\"\n },\n \"id\" : 1,\n \"name\" : \"Check Commits\",\n \"script\" : \"scripts/commmit_check.sh\",\n \"script_repository\" : {\n \"full_name\" : \"DevIT/hooks\",\n \"html_url\" : \"https://github.example.com/DevIT/hooks\",\n \"id\" : 595,\n \"url\" : \"https://github.example.com/api/v3/repos/DevIT/hooks\"\n }\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "0f4e9320-411b-4709-aa29-b9fdf52f5b46", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.638384Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "enterprise-admin/get-pre-receive-hook", + "schema": { + "properties": { + "allow_downstream_configuration": { + "type": "boolean" + }, + "enforcement": { + "type": "string" + }, + "environment": { + "properties": { + "created_at": { + "type": "string" + }, + "default_environment": { + "type": "boolean" + }, + "download": { + "properties": { + "downloaded_at": { + "nullable": true, + "type": "string" + }, + "message": { + "nullable": true, + "type": "string" + }, + "state": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "type": "object" + }, + "hooks_count": { + "type": "integer" + }, + "html_url": { + "type": "string" + }, + "id": { + "type": "integer" + }, + "image_url": { + "type": "string" + }, + "name": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "type": "object" + }, + "id": { + "type": "integer" + }, + "name": { + "type": "string" + }, + "script": { + "type": "string" + }, + "script_repository": { + "properties": { + "full_name": { + "type": "string" + }, + "html_url": { + "type": "string" + }, + "id": { + "type": "integer" + }, + "url": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + } + } + }, + "insertionIndex": 1391 + }, + { + "id": "03457bd3-4af4-45b6-bc1d-d571c641f353", + "name": "Delete a pre-receive hook - 204", + "request": { + "urlPath": "/admin/pre-receive-hooks/1091054646865598938", + "method": "DELETE" + }, + "response": { + "status": 204 + }, + "uuid": "03457bd3-4af4-45b6-bc1d-d571c641f353", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.638231Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "enterprise-admin/delete-pre-receive-hook" + } + } + }, + "insertionIndex": 1392 + }, + { + "id": "90edde3e-d7f1-43b6-ab96-2b6a19aa80a6", + "name": "Create a pre-receive hook - default", + "request": { + "urlPath": "/admin/pre-receive-hooks", + "method": "POST" + }, + "response": { + "status": 201, + "body": "{\n \"allow_downstream_configuration\" : false,\n \"enforcement\" : \"disabled\",\n \"environment\" : {\n \"created_at\" : \"2016-05-20T11:35:45-05:00\",\n \"default_environment\" : false,\n \"download\" : {\n \"downloaded_at\" : \"2016-05-26T07:42:53-05:00\",\n \"state\" : \"success\",\n \"url\" : \"https://github.example.com/api/v3/admin/pre-receive-environments/2/downloads/latest\"\n },\n \"hooks_count\" : 1,\n \"html_url\" : \"https://github.example.com/admin/pre-receive-environments/2\",\n \"id\" : 2,\n \"image_url\" : \"https://my_file_server/path/to/devtools_env.tar.gz\",\n \"name\" : \"DevTools Hook Env\",\n \"url\" : \"https://github.example.com/api/v3/admin/pre-receive-environments/2\"\n },\n \"id\" : 1,\n \"name\" : \"Check Commits\",\n \"script\" : \"scripts/commmit_check.sh\",\n \"script_repository\" : {\n \"full_name\" : \"DevIT/hooks\",\n \"html_url\" : \"https://github.example.com/DevIT/hooks\",\n \"id\" : 595,\n \"url\" : \"https://github.example.com/api/v3/repos/DevIT/hooks\"\n }\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "90edde3e-d7f1-43b6-ab96-2b6a19aa80a6", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.638198Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "enterprise-admin/create-pre-receive-hook", + "schema": { + "properties": { + "allow_downstream_configuration": { + "type": "boolean" + }, + "enforcement": { + "type": "string" + }, + "environment": { + "properties": { + "created_at": { + "type": "string" + }, + "default_environment": { + "type": "boolean" + }, + "download": { + "properties": { + "downloaded_at": { + "nullable": true, + "type": "string" + }, + "message": { + "nullable": true, + "type": "string" + }, + "state": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "type": "object" + }, + "hooks_count": { + "type": "integer" + }, + "html_url": { + "type": "string" + }, + "id": { + "type": "integer" + }, + "image_url": { + "type": "string" + }, + "name": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "type": "object" + }, + "id": { + "type": "integer" + }, + "name": { + "type": "string" + }, + "script": { + "type": "string" + }, + "script_repository": { + "properties": { + "full_name": { + "type": "string" + }, + "html_url": { + "type": "string" + }, + "id": { + "type": "integer" + }, + "url": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + } + } + }, + "insertionIndex": 1393 + }, + { + "id": "9c5d7e03-b3b3-4474-9c65-6ab478f50fdf", + "name": "List pre-receive hooks - default", + "request": { + "urlPath": "/admin/pre-receive-hooks", + "method": "GET" + }, + "response": { + "status": 200, + "body": "[ {\n \"allow_downstream_configuration\" : false,\n \"enforcement\" : \"disabled\",\n \"environment\" : {\n \"created_at\" : \"2016-05-20T11:35:45-05:00\",\n \"default_environment\" : false,\n \"download\" : {\n \"downloaded_at\" : \"2016-05-26T07:42:53-05:00\",\n \"state\" : \"success\",\n \"url\" : \"https://github.example.com/api/v3/admin/pre-receive-environments/2/downloads/latest\"\n },\n \"hooks_count\" : 1,\n \"html_url\" : \"https://github.example.com/admin/pre-receive-environments/2\",\n \"id\" : 2,\n \"image_url\" : \"https://my_file_server/path/to/devtools_env.tar.gz\",\n \"name\" : \"DevTools Hook Env\",\n \"url\" : \"https://github.example.com/api/v3/admin/pre-receive-environments/2\"\n },\n \"id\" : 1,\n \"name\" : \"Check Commits\",\n \"script\" : \"scripts/commmit_check.sh\",\n \"script_repository\" : {\n \"full_name\" : \"DevIT/hooks\",\n \"html_url\" : \"https://github.example.com/DevIT/hooks\",\n \"id\" : 595,\n \"url\" : \"https://github.example.com/api/v3/repos/DevIT/hooks\"\n }\n} ]", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "9c5d7e03-b3b3-4474-9c65-6ab478f50fdf", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.637927Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "enterprise-admin/list-pre-receive-hooks", + "schema": { + "items": { + "$ref": "#/components/schemas/pre-receive-hook" + }, + "type": "array" + } + } + } + }, + "insertionIndex": 1394 + }, + { + "id": "fc2179d1-fa35-4ad9-a525-65b7f483dc6e", + "name": "Get the download status for a pre-receive environment - default", + "request": { + "urlPath": "/admin/pre-receive-environments/7348112811786969303/downloads/latest", + "method": "GET" + }, + "response": { + "status": 200, + "body": "{\n \"downloaded_at\" : \"2016-05-26T07:42:53-05:00\",\n \"state\" : \"success\",\n \"url\" : \"https://github.example.com/api/v3/admin/pre-receive-environments/3/downloads/latest\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "fc2179d1-fa35-4ad9-a525-65b7f483dc6e", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.637859Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "enterprise-admin/get-download-status-for-pre-receive-environment", + "schema": { + "properties": { + "downloaded_at": { + "nullable": true, + "type": "string" + }, + "message": { + "nullable": true, + "type": "string" + }, + "state": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "type": "object" + } + } + } + }, + "insertionIndex": 1395 + }, + { + "id": "9fe60dd8-73bc-4885-824a-74c72b54d649", + "name": "Start a pre-receive environment download - client-errors", + "request": { + "urlPath": "/admin/pre-receive-environments/7143791791023204864/downloads", + "method": "POST" + }, + "response": { + "status": 422, + "body": "{\n \"errors\" : [ {\n \"code\" : \"custom\",\n \"message\" : \"Can not start a new download when a download is in progress\",\n \"resource\" : \"PreReceiveEnvironment\"\n } ],\n \"message\" : \"Validation Failed\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "9fe60dd8-73bc-4885-824a-74c72b54d649", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.637803Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "enterprise-admin/start-pre-receive-environment-download", + "schema": { + "properties": { + "errors": { + "items": { + "properties": { + "code": { + "type": "string" + }, + "message": { + "type": "string" + }, + "resource": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "message": { + "type": "string" + } + }, + "type": "object" + } + } + } + }, + "insertionIndex": 1396 + }, + { + "id": "685741ea-7909-404d-b1de-ecc5939ab460", + "name": "Start a pre-receive environment download - default-response", + "request": { + "urlPath": "/admin/pre-receive-environments/4368218688975205592/downloads", + "method": "POST" + }, + "response": { + "status": 202, + "body": "{\n \"state\" : \"not_started\",\n \"url\" : \"https://github.example.com/api/v3/admin/pre-receive-environments/3/downloads/latest\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "685741ea-7909-404d-b1de-ecc5939ab460", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.637715Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "enterprise-admin/start-pre-receive-environment-download", + "schema": { + "properties": { + "downloaded_at": { + "nullable": true, + "type": "string" + }, + "message": { + "nullable": true, + "type": "string" + }, + "state": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "type": "object" + } + } + } + }, + "insertionIndex": 1397 + }, + { + "id": "e8652ffe-e155-493e-a3f6-b19f938d550f", + "name": "Update a pre-receive environment - client-errors", + "request": { + "urlPath": "/admin/pre-receive-environments/4010393317361228527", + "method": "PATCH" + }, + "response": { + "status": 422, + "body": "{\n \"errors\" : [ {\n \"code\" : \"custom\",\n \"message\" : \"Cannot modify or delete the default environment\",\n \"resource\" : \"PreReceiveEnvironment\"\n } ],\n \"message\" : \"Validation Failed\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "e8652ffe-e155-493e-a3f6-b19f938d550f", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.637637Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "enterprise-admin/update-pre-receive-environment", + "schema": { + "properties": { + "errors": { + "items": { + "properties": { + "code": { + "type": "string" + }, + "message": { + "type": "string" + }, + "resource": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "message": { + "type": "string" + } + }, + "type": "object" + } + } + } + }, + "insertionIndex": 1398 + }, + { + "id": "379b1e71-58e7-440e-837e-ffc2cec90617", + "name": "Update a pre-receive environment - default-response", + "request": { + "urlPath": "/admin/pre-receive-environments/5297135182392926084", + "method": "PATCH" + }, + "response": { + "status": 200, + "body": "{\n \"created_at\" : \"2016-05-20T11:35:45-05:00\",\n \"default_environment\" : false,\n \"download\" : {\n \"downloaded_at\" : \"2016-05-26T07:42:53-05:00\",\n \"state\" : \"success\",\n \"url\" : \"https://github.example.com/api/v3/admin/pre-receive-environments/2/downloads/latest\"\n },\n \"hooks_count\" : 1,\n \"html_url\" : \"https://github.example.com/admin/pre-receive-environments/2\",\n \"id\" : 2,\n \"image_url\" : \"https://my_file_server/path/to/devtools_env.tar.gz\",\n \"name\" : \"DevTools Hook Env\",\n \"url\" : \"https://github.example.com/api/v3/admin/pre-receive-environments/2\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "379b1e71-58e7-440e-837e-ffc2cec90617", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.637546Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "enterprise-admin/update-pre-receive-environment", + "schema": { + "properties": { + "created_at": { + "type": "string" + }, + "default_environment": { + "type": "boolean" + }, + "download": { + "properties": { + "downloaded_at": { + "nullable": true, + "type": "string" + }, + "message": { + "nullable": true, + "type": "string" + }, + "state": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "type": "object" + }, + "hooks_count": { + "type": "integer" + }, + "html_url": { + "type": "string" + }, + "id": { + "type": "integer" + }, + "image_url": { + "type": "string" + }, + "name": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "type": "object" + } + } + } + }, + "insertionIndex": 1399 + }, + { + "id": "dacebd7b-656c-42df-80ba-8cde56e5e400", + "name": "Get a pre-receive environment - default", + "request": { + "urlPath": "/admin/pre-receive-environments/5678514097449307961", + "method": "GET" + }, + "response": { + "status": 200, + "body": "{\n \"created_at\" : \"2016-05-20T11:35:45-05:00\",\n \"default_environment\" : false,\n \"download\" : {\n \"downloaded_at\" : \"2016-05-26T07:42:53-05:00\",\n \"state\" : \"success\",\n \"url\" : \"https://github.example.com/api/v3/admin/pre-receive-environments/2/downloads/latest\"\n },\n \"hooks_count\" : 1,\n \"html_url\" : \"https://github.example.com/admin/pre-receive-environments/2\",\n \"id\" : 2,\n \"image_url\" : \"https://my_file_server/path/to/devtools_env.tar.gz\",\n \"name\" : \"DevTools Hook Env\",\n \"url\" : \"https://github.example.com/api/v3/admin/pre-receive-environments/2\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "dacebd7b-656c-42df-80ba-8cde56e5e400", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.637433Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "enterprise-admin/get-pre-receive-environment", + "schema": { + "properties": { + "created_at": { + "type": "string" + }, + "default_environment": { + "type": "boolean" + }, + "download": { + "properties": { + "downloaded_at": { + "nullable": true, + "type": "string" + }, + "message": { + "nullable": true, + "type": "string" + }, + "state": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "type": "object" + }, + "hooks_count": { + "type": "integer" + }, + "html_url": { + "type": "string" + }, + "id": { + "type": "integer" + }, + "image_url": { + "type": "string" + }, + "name": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "type": "object" + } + } + } + }, + "insertionIndex": 1400 + }, + { + "id": "b3609a5a-a14d-4c04-8275-beee5fd76e1a", + "name": "Delete a pre-receive environment (application/json) - client-errors", + "request": { + "urlPath": "/admin/pre-receive-environments/8337305519959592247", + "method": "DELETE", + "headers": { + "Accept": { + "contains": "application/json" + } + } + }, + "response": { + "status": 422, + "body": "{\n \"errors\" : [ {\n \"code\" : \"custom\",\n \"message\" : \"Cannot modify or delete the default environment\",\n \"resource\" : \"PreReceiveEnvironment\"\n } ],\n \"message\" : \"Validation Failed\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "b3609a5a-a14d-4c04-8275-beee5fd76e1a", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.637319Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "enterprise-admin/delete-pre-receive-environment", + "schema": { + "properties": { + "errors": { + "items": { + "properties": { + "code": { + "type": "string" + }, + "message": { + "type": "string" + }, + "resource": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "message": { + "type": "string" + } + }, + "type": "object" + } + } + } + }, + "insertionIndex": 1401 + }, + { + "id": "063a0463-dd6e-437e-a35a-c6bc1ff33120", + "name": "Delete a pre-receive environment - 204", + "request": { + "urlPath": "/admin/pre-receive-environments/8397143477557409974", + "method": "DELETE" + }, + "response": { + "status": 204 + }, + "uuid": "063a0463-dd6e-437e-a35a-c6bc1ff33120", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.63723Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "enterprise-admin/delete-pre-receive-environment" + } + } + }, + "insertionIndex": 1402 + }, + { + "id": "f6f10cea-35d7-464b-a116-8d8407075eb3", + "name": "Create a pre-receive environment - default", + "request": { + "urlPath": "/admin/pre-receive-environments", + "method": "POST" + }, + "response": { + "status": 201, + "body": "{\n \"created_at\" : \"2016-05-20T11:35:45-05:00\",\n \"default_environment\" : false,\n \"download\" : {\n \"state\" : \"not_started\",\n \"url\" : \"https://github.example.com/api/v3/admin/pre-receive-environments/2/downloads/latest\"\n },\n \"hooks_count\" : 1,\n \"html_url\" : \"https://github.example.com/admin/pre-receive-environments/2\",\n \"id\" : 2,\n \"image_url\" : \"https://my_file_server/path/to/devtools_env.tar.gz\",\n \"name\" : \"DevTools Hook Env\",\n \"url\" : \"https://github.example.com/api/v3/admin/pre-receive-environments/2\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "f6f10cea-35d7-464b-a116-8d8407075eb3", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.637197Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "enterprise-admin/create-pre-receive-environment", + "schema": { + "properties": { + "created_at": { + "type": "string" + }, + "default_environment": { + "type": "boolean" + }, + "download": { + "properties": { + "downloaded_at": { + "nullable": true, + "type": "string" + }, + "message": { + "nullable": true, + "type": "string" + }, + "state": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "type": "object" + }, + "hooks_count": { + "type": "integer" + }, + "html_url": { + "type": "string" + }, + "id": { + "type": "integer" + }, + "image_url": { + "type": "string" + }, + "name": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "type": "object" + } + } + } + }, + "insertionIndex": 1403 + }, + { + "id": "4f07e24b-3ec7-4e6c-b96c-80f1eab6ff20", + "name": "List pre-receive environments - default", + "request": { + "urlPath": "/admin/pre-receive-environments", + "method": "GET" + }, + "response": { + "status": 200, + "body": "[ {\n \"created_at\" : \"2016-05-20T11:35:45-05:00\",\n \"default_environment\" : true,\n \"download\" : {\n \"downloaded_at\" : \"2016-05-26T07:42:53-05:00\",\n \"state\" : \"not_started\",\n \"url\" : \"https://github.example.com/api/v3/admin/pre-receive-environments/1/downloads/latest\"\n },\n \"hooks_count\" : 14,\n \"html_url\" : \"https://github.example.com/admin/pre-receive-environments/1\",\n \"id\" : 1,\n \"image_url\" : \"githubenterprise://internal\",\n \"name\" : \"Default\",\n \"url\" : \"https://github.example.com/api/v3/admin/pre-receive-environments/1\"\n}, {\n \"created_at\" : \"2016-05-20T11:35:45-05:00\",\n \"default_environment\" : false,\n \"download\" : {\n \"downloaded_at\" : \"2016-05-26T07:42:53-05:00\",\n \"state\" : \"success\",\n \"url\" : \"https://github.example.com/api/v3/admin/pre-receive-environments/2/downloads/latest\"\n },\n \"hooks_count\" : 1,\n \"html_url\" : \"https://github.example.com/admin/pre-receive-environments/2\",\n \"id\" : 2,\n \"image_url\" : \"https://my_file_server/path/to/devtools_env.tar.gz\",\n \"name\" : \"DevTools Hook Env\",\n \"url\" : \"https://github.example.com/api/v3/admin/pre-receive-environments/2\"\n} ]", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "4f07e24b-3ec7-4e6c-b96c-80f1eab6ff20", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.637033Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "enterprise-admin/list-pre-receive-environments", + "schema": { + "items": { + "$ref": "#/components/schemas/pre-receive-environment" + }, + "type": "array" + } + } + } + }, + "insertionIndex": 1404 + }, + { + "id": "a6739b3b-479f-4bc9-a747-66bf1c332806", + "name": "Update an organization name", + "request": { + "urlPath": "/admin/organizations/qdf34", + "method": "PATCH" + }, + "response": { + "status": 202, + "body": "{\n \"message\" : \"Job queued to rename organization. It may take a few minutes to complete.\",\n \"url\" : \"https:///api/v3/organizations/1\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "a6739b3b-479f-4bc9-a747-66bf1c332806", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.636988Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "enterprise-admin/update-org-name", + "schema": { + "properties": { + "message": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "type": "object" + } + } + } + }, + "insertionIndex": 1405 + }, + { + "id": "5ce607e4-2e92-4200-a23e-436822739a2d", + "name": "Create an organization - default", + "request": { + "urlPath": "/admin/organizations", + "method": "POST" + }, + "response": { + "status": 201, + "body": "{\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"description\" : \"A great organization\",\n \"events_url\" : \"https://api.github.com/orgs/github/events\",\n \"hooks_url\" : \"https://api.github.com/orgs/github/hooks\",\n \"id\" : 1,\n \"issues_url\" : \"https://api.github.com/orgs/github/issues\",\n \"login\" : \"github\",\n \"members_url\" : \"https://api.github.com/orgs/github/members{/member}\",\n \"node_id\" : \"MDEyOk9yZ2FuaXphdGlvbjE=\",\n \"public_members_url\" : \"https://api.github.com/orgs/github/public_members{/member}\",\n \"repos_url\" : \"https://api.github.com/orgs/github/repos\",\n \"url\" : \"https://api.github.com/orgs/github\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "5ce607e4-2e92-4200-a23e-436822739a2d", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.636916Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "enterprise-admin/create-org", + "schema": { + "description": "Organization Simple", + "properties": { + "avatar_url": { + "example": "https://github.com/images/error/octocat_happy.gif", + "type": "string" + }, + "description": { + "example": "A great organization", + "nullable": true, + "type": "string" + }, + "events_url": { + "example": "https://api.github.com/orgs/github/events", + "format": "uri", + "type": "string" + }, + "hooks_url": { + "example": "https://api.github.com/orgs/github/hooks", + "type": "string" + }, + "id": { + "example": 1, + "type": "integer" + }, + "issues_url": { + "example": "https://api.github.com/orgs/github/issues", + "type": "string" + }, + "login": { + "example": "github", + "type": "string" + }, + "members_url": { + "example": "https://api.github.com/orgs/github/members{/member}", + "type": "string" + }, + "node_id": { + "example": "MDEyOk9yZ2FuaXphdGlvbjE=", + "type": "string" + }, + "public_members_url": { + "example": "https://api.github.com/orgs/github/public_members{/member}", + "type": "string" + }, + "repos_url": { + "example": "https://api.github.com/orgs/github/repos", + "format": "uri", + "type": "string" + }, + "url": { + "example": "https://api.github.com/orgs/github", + "format": "uri", + "type": "string" + } + }, + "required": [ + "login", + "url", + "id", + "node_id", + "repos_url", + "events_url", + "hooks_url", + "issues_url", + "members_url", + "public_members_url", + "avatar_url", + "description" + ], + "title": "Organization Simple", + "type": "object" + } + } + } + }, + "insertionIndex": 1406 + }, + { + "id": "f9abdfbd-e75e-415c-bcb5-ef8d5c96c3d3", + "name": "Sync LDAP mapping for a user", + "request": { + "urlPath": "/admin/ldap/users/nell.kreiger/sync", + "method": "POST" + }, + "response": { + "status": 201, + "body": "{\n \"status\" : \"queued\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "f9abdfbd-e75e-415c-bcb5-ef8d5c96c3d3", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.636761Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "enterprise-admin/sync-ldap-mapping-for-user", + "schema": { + "properties": { + "status": { + "type": "string" + } + }, + "type": "object" + } + } + } + }, + "insertionIndex": 1407 + }, + { + "id": "523dee7d-bc27-4a6f-aed0-f795c5bc92fe", + "name": "Update LDAP mapping for a user - default", + "request": { + "urlPath": "/admin/ldap/users/warner.ritchie/mapping", + "method": "PATCH" + }, + "response": { + "status": 200, + "body": "{\n \"avatar_url\" : \"https://github.com/images/error/octocat_happy.gif\",\n \"bio\" : \"There once was...\",\n \"blog\" : \"https://github.com/blog\",\n \"collaborators\" : 8,\n \"company\" : \"GitHub\",\n \"created_at\" : \"2008-01-14T04:33:35Z\",\n \"disk_usage\" : 10000,\n \"email\" : \"octocat@github.com\",\n \"events_url\" : \"https://api.github.com/users/octocat/events{/privacy}\",\n \"followers\" : 20,\n \"followers_url\" : \"https://api.github.com/users/octocat/followers\",\n \"following\" : 0,\n \"following_url\" : \"https://api.github.com/users/octocat/following{/other_user}\",\n \"gists_url\" : \"https://api.github.com/users/octocat/gists{/gist_id}\",\n \"gravatar_id\" : \"\",\n \"hireable\" : false,\n \"html_url\" : \"https://github.com/octocat\",\n \"id\" : 1,\n \"ldap_dn\" : \"uid=asdf,ou=users,dc=github,dc=com\",\n \"location\" : \"San Francisco\",\n \"login\" : \"octocat\",\n \"name\" : \"monalisa octocat\",\n \"node_id\" : \"MDQ6VXNlcjE=\",\n \"organizations_url\" : \"https://api.github.com/users/octocat/orgs\",\n \"owned_private_repos\" : 100,\n \"plan\" : {\n \"collaborators\" : 0,\n \"name\" : \"Medium\",\n \"private_repos\" : 20,\n \"space\" : 400\n },\n \"private_gists\" : 81,\n \"public_gists\" : 1,\n \"public_repos\" : 2,\n \"received_events_url\" : \"https://api.github.com/users/octocat/received_events\",\n \"repos_url\" : \"https://api.github.com/users/octocat/repos\",\n \"site_admin\" : false,\n \"starred_url\" : \"https://api.github.com/users/octocat/starred{/owner}{/repo}\",\n \"subscriptions_url\" : \"https://api.github.com/users/octocat/subscriptions\",\n \"total_private_repos\" : 100,\n \"twitter_username\" : \"monatheoctocat\",\n \"two_factor_authentication\" : true,\n \"type\" : \"User\",\n \"updated_at\" : \"2008-01-14T04:33:35Z\",\n \"url\" : \"https://api.github.com/users/octocat\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "523dee7d-bc27-4a6f-aed0-f795c5bc92fe", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.63666Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "enterprise-admin/update-ldap-mapping-for-user", + "schema": { + "description": "Ldap Private User", + "properties": { + "avatar_url": { + "example": "https://github.com/images/error/octocat_happy.gif", + "format": "uri", + "type": "string" + }, + "bio": { + "example": "There once was...", + "nullable": true, + "type": "string" + }, + "blog": { + "example": "https://github.com/blog", + "nullable": true, + "type": "string" + }, + "business_plus": { + "type": "boolean" + }, + "collaborators": { + "example": 8, + "type": "integer" + }, + "company": { + "example": "GitHub", + "nullable": true, + "type": "string" + }, + "created_at": { + "example": "2008-01-14T04:33:35Z", + "format": "date-time", + "type": "string" + }, + "disk_usage": { + "example": 10000, + "type": "integer" + }, + "email": { + "example": "octocat@github.com", + "format": "email", + "nullable": true, + "type": "string" + }, + "events_url": { + "example": "https://api.github.com/users/octocat/events{/privacy}", + "type": "string" + }, + "followers": { + "example": 20, + "type": "integer" + }, + "followers_url": { + "example": "https://api.github.com/users/octocat/followers", + "format": "uri", + "type": "string" + }, + "following": { + "example": 0, + "type": "integer" + }, + "following_url": { + "example": "https://api.github.com/users/octocat/following{/other_user}", + "type": "string" + }, + "gists_url": { + "example": "https://api.github.com/users/octocat/gists{/gist_id}", + "type": "string" + }, + "gravatar_id": { + "example": "41d064eb2195891e12d0413f63227ea7", + "nullable": true, + "type": "string" + }, + "hireable": { + "nullable": true, + "type": "boolean" + }, + "html_url": { + "example": "https://github.com/octocat", + "format": "uri", + "type": "string" + }, + "id": { + "example": 1, + "type": "integer" + }, + "ldap_dn": { + "type": "string" + }, + "location": { + "example": "San Francisco", + "nullable": true, + "type": "string" + }, + "login": { + "example": "octocat", + "type": "string" + }, + "name": { + "example": "monalisa octocat", + "nullable": true, + "type": "string" + }, + "node_id": { + "example": "MDQ6VXNlcjE=", + "type": "string" + }, + "organizations_url": { + "example": "https://api.github.com/users/octocat/orgs", + "format": "uri", + "type": "string" + }, + "owned_private_repos": { + "example": 100, + "type": "integer" + }, + "plan": { + "properties": { + "collaborators": { + "type": "integer" + }, + "name": { + "type": "string" + }, + "private_repos": { + "type": "integer" + }, + "space": { + "type": "integer" + } + }, + "required": ["collaborators", "name", "space", "private_repos"], + "type": "object" + }, + "private_gists": { + "example": 81, + "type": "integer" + }, + "public_gists": { + "example": 1, + "type": "integer" + }, + "public_repos": { + "example": 2, + "type": "integer" + }, + "received_events_url": { + "example": "https://api.github.com/users/octocat/received_events", + "format": "uri", + "type": "string" + }, + "repos_url": { + "example": "https://api.github.com/users/octocat/repos", + "format": "uri", + "type": "string" + }, + "site_admin": { + "type": "boolean" + }, + "starred_url": { + "example": "https://api.github.com/users/octocat/starred{/owner}{/repo}", + "type": "string" + }, + "subscriptions_url": { + "example": "https://api.github.com/users/octocat/subscriptions", + "format": "uri", + "type": "string" + }, + "suspended_at": { + "format": "date-time", + "nullable": true, + "type": "string" + }, + "total_private_repos": { + "example": 100, + "type": "integer" + }, + "twitter_username": { + "example": "monalisa", + "nullable": true, + "type": "string" + }, + "two_factor_authentication": { + "example": true, + "type": "boolean" + }, + "type": { + "example": "User", + "type": "string" + }, + "updated_at": { + "example": "2008-01-14T04:33:35Z", + "format": "date-time", + "type": "string" + }, + "url": { + "example": "https://api.github.com/users/octocat", + "format": "uri", + "type": "string" + } + }, + "required": [ + "avatar_url", + "events_url", + "followers_url", + "following_url", + "gists_url", + "gravatar_id", + "html_url", + "id", + "node_id", + "login", + "organizations_url", + "received_events_url", + "repos_url", + "site_admin", + "starred_url", + "subscriptions_url", + "type", + "url", + "bio", + "blog", + "company", + "email", + "followers", + "following", + "hireable", + "location", + "name", + "public_gists", + "public_repos", + "created_at", + "updated_at", + "collaborators", + "disk_usage", + "owned_private_repos", + "private_gists", + "total_private_repos", + "two_factor_authentication" + ], + "title": "Ldap Private User", + "type": "object" + } + } + } + }, + "insertionIndex": 1408 + }, + { + "id": "5bf28be7-a053-435a-8666-f360d93895d2", + "name": "Sync LDAP mapping for a team", + "request": { + "urlPath": "/admin/ldap/teams/2937855094001628786/sync", + "method": "POST" + }, + "response": { + "status": 201, + "body": "{\n \"status\" : \"queued\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "5bf28be7-a053-435a-8666-f360d93895d2", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.63607Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "enterprise-admin/sync-ldap-mapping-for-team", + "schema": { + "properties": { + "status": { + "type": "string" + } + }, + "type": "object" + } + } + } + }, + "insertionIndex": 1409 + }, + { + "id": "af4f478d-cf06-4e6d-9e70-c6ff86337463", + "name": "Update LDAP mapping for a team - default", + "request": { + "urlPath": "/admin/ldap/teams/8246599833982088105/mapping", + "method": "PATCH" + }, + "response": { + "status": 200, + "body": "{\n \"description\" : \"A great team.\",\n \"html_url\" : \"https://github.com/orgs/github/teams/justice-league\",\n \"id\" : 1,\n \"ldap_dn\" : \"cn=Enterprise Ops,ou=teams,dc=github,dc=com\",\n \"members_url\" : \"https://api.github.com/teams/1/members{/member}\",\n \"name\" : \"Justice League\",\n \"node_id\" : \"MDQ6VGVhbTE=\",\n \"permission\" : \"admin\",\n \"privacy\" : \"closed\",\n \"repositories_url\" : \"https://api.github.com/teams/1/repos\",\n \"slug\" : \"justice-league\",\n \"url\" : \"https://api.github.com/teams/1\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "af4f478d-cf06-4e6d-9e70-c6ff86337463", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.636012Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "enterprise-admin/update-ldap-mapping-for-team", + "schema": { + "properties": { + "description": { + "nullable": true, + "type": "string" + }, + "html_url": { + "type": "string" + }, + "id": { + "type": "integer" + }, + "ldap_dn": { + "type": "string" + }, + "members_url": { + "type": "string" + }, + "name": { + "type": "string" + }, + "node_id": { + "type": "string" + }, + "parent": { + "nullable": true + }, + "permission": { + "type": "string" + }, + "privacy": { + "type": "string" + }, + "repositories_url": { + "type": "string" + }, + "slug": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "type": "object" + } + } + } + }, + "insertionIndex": 1410 + }, + { + "id": "9c9a9a64-237f-49e5-881f-cc5962d05d43", + "name": "Delete a public key - 204", + "request": { + "urlPath": "/admin/keys/ii17nbse3fnep6w62tqoj9fclkd8m9umlv8q6tf0300ef6", + "method": "DELETE" + }, + "response": { + "status": 204 + }, + "uuid": "9c9a9a64-237f-49e5-881f-cc5962d05d43", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.635834Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "enterprise-admin/delete-public-key" + } + } + }, + "insertionIndex": 1411 + }, + { + "id": "43cd0f8b-a960-4b9b-8be0-c81b4847b6fb", + "name": "List public keys - default", + "request": { + "urlPath": "/admin/keys", + "method": "GET" + }, + "response": { + "status": 200, + "body": "[ {\n \"created_at\" : \"2020-06-11T21:31:57Z\",\n \"id\" : 2,\n \"key\" : \"2Sg8iYjAxxmI2LvUXpJjkYrMxURPc8r+dB7TJyvv1234\",\n \"last_used\" : \"2020-06-11T22:31:57Z\",\n \"read_only\" : false,\n \"repository_id\" : 2,\n \"title\" : \"ssh-rsa AAAAB3NzaC1yc2EAAA\",\n \"url\" : \"https://api.github.com/user/keys/2\",\n \"user_id\" : 1,\n \"verified\" : false\n}, {\n \"created_at\" : \"2020-06-11T21:31:57Z\",\n \"id\" : 3,\n \"key\" : \"9Og8iYjAyymI9LvABpJerYrMxURPc8r+dB7TJyvv1234\",\n \"last_used\" : \"2020-06-11T22:31:57Z\",\n \"read_only\" : false,\n \"repository_id\" : 2,\n \"title\" : \"ssh-rsa AAAAB3NzaC1yc2EAAA\",\n \"url\" : \"https://api.github.com/user/keys/2\",\n \"user_id\" : 1,\n \"verified\" : false\n} ]", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "43cd0f8b-a960-4b9b-8be0-c81b4847b6fb", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.635796Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "enterprise-admin/list-public-keys", + "schema": { + "items": { + "$ref": "#/components/schemas/public-key-full" + }, + "type": "array" + } + } + } + }, + "insertionIndex": 1412 + }, + { + "id": "ae90d837-5497-4546-8935-b6aad9859d68", + "name": "Ping a global webhook - 204", + "request": { + "urlPath": "/admin/hooks/1791002755664887743/pings", + "method": "POST" + }, + "response": { + "status": 204 + }, + "uuid": "ae90d837-5497-4546-8935-b6aad9859d68", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.635754Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "enterprise-admin/ping-global-webhook" + } + } + }, + "insertionIndex": 1413 + }, + { + "id": "9d07776c-a94c-40eb-8529-282c3d8db26a", + "name": "Update a global webhook - default", + "request": { + "urlPath": "/admin/hooks/7819309419331729337", + "method": "PATCH" + }, + "response": { + "status": 200, + "body": "{\n \"active\" : true,\n \"config\" : {\n \"content_type\" : \"form\",\n \"insecure_ssl\" : \"0\",\n \"url\" : \"https://example.com\"\n },\n \"created_at\" : \"2017-12-07T00:14:59Z\",\n \"events\" : [ \"organization\" ],\n \"id\" : 1,\n \"name\" : \"web\",\n \"ping_url\" : \"https://api.github.com/admin/hooks/1/pings\",\n \"type\" : \"Global\",\n \"updated_at\" : \"2017-12-07T00:14:59Z\",\n \"url\" : \"https://api.github.com/admin/hooks/1\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "9d07776c-a94c-40eb-8529-282c3d8db26a", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.635726Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "enterprise-admin/update-global-webhook", + "schema": { + "properties": { + "active": { + "type": "boolean" + }, + "config": { + "properties": { + "content_type": { + "type": "string" + }, + "insecure_ssl": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "type": "object" + }, + "created_at": { + "type": "string" + }, + "events": { + "items": { + "type": "string" + }, + "type": "array" + }, + "id": { + "type": "integer" + }, + "name": { + "type": "string" + }, + "ping_url": { + "type": "string" + }, + "type": { + "type": "string" + }, + "updated_at": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "type": "object" + } + } + } + }, + "insertionIndex": 1414 + }, + { + "id": "2baa27ed-9be7-47c6-b8eb-25d11c508b01", + "name": "Get a global webhook - default", + "request": { + "urlPath": "/admin/hooks/5633646446878774685", + "method": "GET" + }, + "response": { + "status": 200, + "body": "{\n \"active\" : true,\n \"config\" : {\n \"content_type\" : \"json\",\n \"insecure_ssl\" : \"0\",\n \"secret\" : \"********\",\n \"url\" : \"https://example.com\"\n },\n \"created_at\" : \"2017-12-07T00:14:59Z\",\n \"events\" : [ \"organization\", \"user\" ],\n \"id\" : 1,\n \"name\" : \"web\",\n \"ping_url\" : \"https://api.github.com/admin/hooks/1/pings\",\n \"type\" : \"Global\",\n \"updated_at\" : \"2017-12-07T00:14:59Z\",\n \"url\" : \"https://api.github.com/admin/hooks/1\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "2baa27ed-9be7-47c6-b8eb-25d11c508b01", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.635553Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "enterprise-admin/get-global-webhook", + "schema": { + "properties": { + "active": { + "type": "boolean" + }, + "config": { + "properties": { + "content_type": { + "type": "string" + }, + "insecure_ssl": { + "type": "string" + }, + "secret": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "type": "object" + }, + "created_at": { + "type": "string" + }, + "events": { + "items": { + "type": "string" + }, + "type": "array" + }, + "id": { + "type": "integer" + }, + "name": { + "type": "string" + }, + "ping_url": { + "type": "string" + }, + "type": { + "type": "string" + }, + "updated_at": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "type": "object" + } + } + } + }, + "insertionIndex": 1415 + }, + { + "id": "3d2073bf-a47a-4456-8dfd-1093e65e8aab", + "name": "Delete a global webhook - 204", + "request": { + "urlPath": "/admin/hooks/8107577947183486249", + "method": "DELETE" + }, + "response": { + "status": 204 + }, + "uuid": "3d2073bf-a47a-4456-8dfd-1093e65e8aab", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.635438Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "enterprise-admin/delete-global-webhook" + } + } + }, + "insertionIndex": 1416 + }, + { + "id": "58020e91-f45e-4105-bc55-7412be71a688", + "name": "Create a global webhook - default", + "request": { + "urlPath": "/admin/hooks", + "method": "POST" + }, + "response": { + "status": 201, + "body": "{\n \"active\" : true,\n \"config\" : {\n \"content_type\" : \"json\",\n \"insecure_ssl\" : \"0\",\n \"secret\" : \"********\",\n \"url\" : \"https://example.com\"\n },\n \"created_at\" : \"2017-12-07T00:14:59Z\",\n \"events\" : [ \"organization\", \"user\" ],\n \"id\" : 1,\n \"name\" : \"web\",\n \"ping_url\" : \"https://api.github.com/admin/hooks/1/pings\",\n \"type\" : \"Global\",\n \"updated_at\" : \"2017-12-07T00:14:59Z\",\n \"url\" : \"https://api.github.com/admin/hooks/1\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "58020e91-f45e-4105-bc55-7412be71a688", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.635393Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "enterprise-admin/create-global-webhook", + "schema": { + "properties": { + "active": { + "type": "boolean" + }, + "config": { + "properties": { + "content_type": { + "type": "string" + }, + "insecure_ssl": { + "type": "string" + }, + "secret": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "type": "object" + }, + "created_at": { + "type": "string" + }, + "events": { + "items": { + "type": "string" + }, + "type": "array" + }, + "id": { + "type": "integer" + }, + "name": { + "type": "string" + }, + "ping_url": { + "type": "string" + }, + "type": { + "type": "string" + }, + "updated_at": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "type": "object" + } + } + } + }, + "insertionIndex": 1417 + }, + { + "id": "1eb1c344-52b5-41c4-91d9-4d6047257eb2", + "name": "List global webhooks - default", + "request": { + "urlPath": "/admin/hooks", + "method": "GET" + }, + "response": { + "status": 200, + "body": "[ {\n \"active\" : true,\n \"config\" : {\n \"content_type\" : \"json\",\n \"insecure_ssl\" : \"0\",\n \"secret\" : \"********\",\n \"url\" : \"https://example.com\"\n },\n \"created_at\" : \"2017-12-07T00:14:59Z\",\n \"events\" : [ \"organization\", \"user\" ],\n \"id\" : 1,\n \"name\" : \"web\",\n \"ping_url\" : \"https://api.github.com/admin/hooks/1/pings\",\n \"type\" : \"Global\",\n \"updated_at\" : \"2017-12-07T00:14:59Z\",\n \"url\" : \"https://api.github.com/admin/hooks/1\"\n} ]", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "1eb1c344-52b5-41c4-91d9-4d6047257eb2", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.635208Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "enterprise-admin/list-global-webhooks", + "schema": { + "items": { + "$ref": "#/components/schemas/global-hook" + }, + "type": "array" + } + } + } + }, + "insertionIndex": 1418 + }, + { + "id": "80c03097-81c2-4b0c-a066-b55ac4f34999", + "name": "GitHub API Root", + "request": { + "urlPath": "/", + "method": "GET" + }, + "response": { + "status": 200, + "body": "{\n \"label_search_url\" : \"https://web.example.mocklab.io/246335\",\n \"organization_repositories_url\" : \"https://web.example.mocklab.io/475833\",\n \"user_repositories_url\" : \"https://web.example.mocklab.io/006402\",\n \"gists_url\" : \"https://web.example.mocklab.io/670375\",\n \"notifications_url\" : \"https://web.example.mocklab.io/079273\",\n \"following_url\" : \"https://web.example.mocklab.io/101862\",\n \"keys_url\" : \"https://web.example.mocklab.io/878113\",\n \"user_search_url\" : \"https://web.example.mocklab.io/188243\",\n \"feeds_url\" : \"https://web.example.mocklab.io/271619\",\n \"topic_search_url\" : \"https://web.example.mocklab.io/398688\",\n \"starred_gists_url\" : \"https://web.example.mocklab.io/559689\",\n \"user_url\" : \"https://web.example.mocklab.io/655279\",\n \"repository_url\" : \"https://web.example.mocklab.io/125789\",\n \"user_organizations_url\" : \"https://web.example.mocklab.io/626352\",\n \"current_user_authorizations_html_url\" : \"https://web.example.mocklab.io/805070\",\n \"emojis_url\" : \"https://web.example.mocklab.io/157420\",\n \"organization_url\" : \"https://web.example.mocklab.io/940624\",\n \"hub_url\" : \"https://web.example.mocklab.io/478301\",\n \"starred_url\" : \"https://web.example.mocklab.io/928275\",\n \"followers_url\" : \"https://web.example.mocklab.io/752608\",\n \"emails_url\" : \"https://web.example.mocklab.io/317617\",\n \"rate_limit_url\" : \"https://web.example.mocklab.io/407420\",\n \"commit_search_url\" : \"https://web.example.mocklab.io/016096\",\n \"issues_url\" : \"https://web.example.mocklab.io/643170\",\n \"organization_teams_url\" : \"https://web.example.mocklab.io/780045\",\n \"public_gists_url\" : \"https://web.example.mocklab.io/630156\",\n \"authorizations_url\" : \"https://web.example.mocklab.io/558817\",\n \"events_url\" : \"https://web.example.mocklab.io/307990\",\n \"current_user_repositories_url\" : \"https://web.example.mocklab.io/332840\",\n \"current_user_url\" : \"https://web.example.mocklab.io/135837\",\n \"issue_search_url\" : \"https://web.example.mocklab.io/973115\",\n \"code_search_url\" : \"https://web.example.mocklab.io/027061\",\n \"repository_search_url\" : \"https://web.example.mocklab.io/192675\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "80c03097-81c2-4b0c-a066-b55ac4f34999", + "persistent": true, + "metadata": { + "mocklab": { + "created": { + "at": "2023-03-28T09:23:58.635119Z", + "via": "OAS3_IMPORT" + }, + "oas": { + "operationId": "meta/root", + "schema": { + "properties": { + "authorizations_url": { + "format": "uri-template", + "type": "string" + }, + "code_search_url": { + "format": "uri-template", + "type": "string" + }, + "commit_search_url": { + "format": "uri-template", + "type": "string" + }, + "current_user_authorizations_html_url": { + "format": "uri-template", + "type": "string" + }, + "current_user_repositories_url": { + "format": "uri-template", + "type": "string" + }, + "current_user_url": { + "format": "uri-template", + "type": "string" + }, + "emails_url": { + "format": "uri-template", + "type": "string" + }, + "emojis_url": { + "format": "uri-template", + "type": "string" + }, + "events_url": { + "format": "uri-template", + "type": "string" + }, + "feeds_url": { + "format": "uri-template", + "type": "string" + }, + "followers_url": { + "format": "uri-template", + "type": "string" + }, + "following_url": { + "format": "uri-template", + "type": "string" + }, + "gists_url": { + "format": "uri-template", + "type": "string" + }, + "hub_url": { + "format": "uri-template", + "type": "string" + }, + "issue_search_url": { + "format": "uri-template", + "type": "string" + }, + "issues_url": { + "format": "uri-template", + "type": "string" + }, + "keys_url": { + "format": "uri-template", + "type": "string" + }, + "label_search_url": { + "format": "uri-template", + "type": "string" + }, + "notifications_url": { + "format": "uri-template", + "type": "string" + }, + "organization_repositories_url": { + "format": "uri-template", + "type": "string" + }, + "organization_teams_url": { + "format": "uri-template", + "type": "string" + }, + "organization_url": { + "format": "uri-template", + "type": "string" + }, + "public_gists_url": { + "format": "uri-template", + "type": "string" + }, + "rate_limit_url": { + "format": "uri-template", + "type": "string" + }, + "repository_search_url": { + "format": "uri-template", + "type": "string" + }, + "repository_url": { + "format": "uri-template", + "type": "string" + }, + "starred_gists_url": { + "format": "uri-template", + "type": "string" + }, + "starred_url": { + "format": "uri-template", + "type": "string" + }, + "topic_search_url": { + "format": "uri-template", + "type": "string" + }, + "user_organizations_url": { + "format": "uri-template", + "type": "string" + }, + "user_repositories_url": { + "format": "uri-template", + "type": "string" + }, + "user_search_url": { + "format": "uri-template", + "type": "string" + }, + "user_url": { + "format": "uri-template", + "type": "string" + } + }, + "required": [ + "current_user_url", + "current_user_authorizations_html_url", + "authorizations_url", + "code_search_url", + "commit_search_url", + "emails_url", + "emojis_url", + "events_url", + "feeds_url", + "followers_url", + "following_url", + "gists_url", + "hub_url", + "issue_search_url", + "issues_url", + "keys_url", + "label_search_url", + "notifications_url", + "organization_url", + "organization_repositories_url", + "organization_teams_url", + "public_gists_url", + "rate_limit_url", + "repository_url", + "repository_search_url", + "current_user_repositories_url", + "starred_url", + "starred_gists_url", + "user_url", + "user_organizations_url", + "user_repositories_url", + "user_search_url" + ], + "type": "object" + } + } + } + }, + "insertionIndex": 1419 + } + ] +} diff --git a/packages/@n8n/benchmark/scripts/n8n-setups/postgres/docker-compose.yml b/packages/@n8n/benchmark/scripts/n8n-setups/postgres/docker-compose.yml new file mode 100644 index 0000000000..3cc08227c1 --- /dev/null +++ b/packages/@n8n/benchmark/scripts/n8n-setups/postgres/docker-compose.yml @@ -0,0 +1,59 @@ +services: + mockapi: + image: wiremock/wiremock:3.9.1 + ports: + - '8088:8080' + volumes: + - ${MOCK_API_DATA_PATH}/mappings:/home/wiremock/mappings + + postgres: + image: postgres:16.4 + restart: always + user: root:root + environment: + - POSTGRES_DB=n8n + - POSTGRES_USER=postgres + - POSTGRES_PASSWORD=password + - PGDATA=/var/lib/postgresql/data/pgdata + volumes: + - ${RUN_DIR}/postgres:/var/lib/postgresql/data + healthcheck: + test: ['CMD-SHELL', 'pg_isready -U postgres'] + interval: 5s + timeout: 5s + retries: 5 + + n8n: + image: ghcr.io/n8n-io/n8n:${N8N_VERSION:-latest} + user: root:root + environment: + - N8N_DIAGNOSTICS_ENABLED=false + - N8N_USER_FOLDER=/n8n + - DB_TYPE=postgresdb + - DB_POSTGRESDB_HOST=postgres + - DB_POSTGRESDB_PASSWORD=password + ports: + - 5678:5678 + volumes: + - ${RUN_DIR}/n8n:/n8n + depends_on: + postgres: + condition: service_healthy + mockapi: + condition: service_started + healthcheck: + test: ['CMD-SHELL', 'wget --spider -q http://n8n:5678/healthz || exit 1'] + interval: 5s + timeout: 5s + retries: 10 + + benchmark: + image: ghcr.io/n8n-io/n8n-benchmark:${N8N_BENCHMARK_VERSION:-latest} + depends_on: + n8n: + condition: service_healthy + environment: + - N8N_BASE_URL=http://n8n:5678 + - K6_API_TOKEN=${K6_API_TOKEN} + - BENCHMARK_RESULT_WEBHOOK_URL=${BENCHMARK_RESULT_WEBHOOK_URL} + - BENCHMARK_RESULT_WEBHOOK_AUTH_HEADER=${BENCHMARK_RESULT_WEBHOOK_AUTH_HEADER} diff --git a/packages/@n8n/benchmark/scripts/n8n-setups/postgres/setup.mjs b/packages/@n8n/benchmark/scripts/n8n-setups/postgres/setup.mjs new file mode 100644 index 0000000000..c2ead0ab07 --- /dev/null +++ b/packages/@n8n/benchmark/scripts/n8n-setups/postgres/setup.mjs @@ -0,0 +1,15 @@ +#!/usr/bin/env zx + +import path from 'path'; +import { fs } from 'zx'; + +/** + * Creates the needed directories so the permissions get set correctly. + */ +export function setup({ runDir }) { + const neededDirs = ['n8n', 'postgres']; + + for (const dir of neededDirs) { + fs.ensureDirSync(path.join(runDir, dir)); + } +} diff --git a/packages/@n8n/benchmark/scripts/n8n-setups/scaling-multi-main/docker-compose.yml b/packages/@n8n/benchmark/scripts/n8n-setups/scaling-multi-main/docker-compose.yml new file mode 100644 index 0000000000..c686f581b3 --- /dev/null +++ b/packages/@n8n/benchmark/scripts/n8n-setups/scaling-multi-main/docker-compose.yml @@ -0,0 +1,198 @@ +services: + mockapi: + image: wiremock/wiremock:3.9.1 + ports: + - '8088:8080' + volumes: + - ${MOCK_API_DATA_PATH}/mappings:/home/wiremock/mappings + + redis: + image: redis:6.2.14-alpine + restart: always + ports: + - 6379:6379 + healthcheck: + test: ['CMD', 'redis-cli', 'ping'] + interval: 1s + timeout: 3s + + postgres: + image: postgres:16.4 + restart: always + environment: + - POSTGRES_DB=n8n + - POSTGRES_USER=postgres + - POSTGRES_PASSWORD=password + - PGDATA=/var/lib/postgresql/data/pgdata + volumes: + - ${RUN_DIR}/postgres:/var/lib/postgresql/data + healthcheck: + test: ['CMD-SHELL', 'pg_isready -U postgres'] + interval: 5s + timeout: 5s + retries: 10 + + n8n_worker1: + image: ghcr.io/n8n-io/n8n:${N8N_VERSION:-latest} + environment: + - N8N_DIAGNOSTICS_ENABLED=false + - N8N_USER_FOLDER=/n8n/worker1 + - N8N_ENCRYPTION_KEY=${N8N_ENCRYPTION_KEY} + - N8N_LICENSE_CERT=${N8N_LICENSE_CERT} + - N8N_LICENSE_ACTIVATION_KEY=${N8N_LICENSE_ACTIVATION_KEY} + - N8N_LICENSE_TENANT_ID=${N8N_LICENSE_TENANT_ID} + # Scaling mode config + - EXECUTIONS_MODE=queue + - QUEUE_BULL_REDIS_HOST=redis + - QUEUE_HEALTH_CHECK_ACTIVE=true + - N8N_CONCURRENCY_PRODUCTION_LIMIT=10 + # DB config + - DB_TYPE=postgresdb + - DB_POSTGRESDB_HOST=postgres + - DB_POSTGRESDB_PASSWORD=password + command: worker + volumes: + - ${RUN_DIR}/n8n-worker1:/n8n + depends_on: + postgres: + condition: service_healthy + redis: + condition: service_healthy + healthcheck: + test: ['CMD-SHELL', 'wget --spider -q http://localhost:5678/healthz || exit 1'] + interval: 5s + timeout: 5s + retries: 10 + + n8n_worker2: + image: ghcr.io/n8n-io/n8n:${N8N_VERSION:-latest} + environment: + - N8N_DIAGNOSTICS_ENABLED=false + - N8N_USER_FOLDER=/n8n/worker2 + - N8N_ENCRYPTION_KEY=${N8N_ENCRYPTION_KEY} + - N8N_LICENSE_CERT=${N8N_LICENSE_CERT} + - N8N_LICENSE_ACTIVATION_KEY=${N8N_LICENSE_ACTIVATION_KEY} + - N8N_LICENSE_TENANT_ID=${N8N_LICENSE_TENANT_ID} + # Scaling mode config + - EXECUTIONS_MODE=queue + - QUEUE_BULL_REDIS_HOST=redis + - QUEUE_HEALTH_CHECK_ACTIVE=true + - N8N_CONCURRENCY_PRODUCTION_LIMIT=10 + # DB config + - DB_TYPE=postgresdb + - DB_POSTGRESDB_HOST=postgres + - DB_POSTGRESDB_PASSWORD=password + command: worker + volumes: + - ${RUN_DIR}/n8n-worker2:/n8n + depends_on: + # We let the worker 1 start first so it can run the DB migrations + n8n_worker1: + condition: service_healthy + postgres: + condition: service_healthy + redis: + condition: service_healthy + healthcheck: + test: ['CMD-SHELL', 'wget --spider -q http://localhost:5678/healthz || exit 1'] + interval: 5s + timeout: 5s + retries: 10 + + n8n_main2: + image: ghcr.io/n8n-io/n8n:${N8N_VERSION:-latest} + environment: + - N8N_DIAGNOSTICS_ENABLED=false + - N8N_USER_FOLDER=/n8n + - N8N_ENCRYPTION_KEY=${N8N_ENCRYPTION_KEY} + - N8N_LICENSE_CERT=${N8N_LICENSE_CERT} + - N8N_LICENSE_ACTIVATION_KEY=${N8N_LICENSE_ACTIVATION_KEY} + - N8N_LICENSE_TENANT_ID=${N8N_LICENSE_TENANT_ID} + # Scaling mode config + - N8N_PROXY_HOPS=1 + - EXECUTIONS_MODE=queue + - QUEUE_BULL_REDIS_HOST=redis + - N8N_MULTI_MAIN_SETUP_ENABLED=true + # DB config + - DB_TYPE=postgresdb + - DB_POSTGRESDB_HOST=postgres + - DB_POSTGRESDB_PASSWORD=password + volumes: + - ${RUN_DIR}/n8n-main2:/n8n + depends_on: + n8n_worker1: + condition: service_healthy + n8n_worker2: + condition: service_healthy + postgres: + condition: service_healthy + redis: + condition: service_healthy + mockapi: + condition: service_started + healthcheck: + test: ['CMD-SHELL', 'wget --spider -q http://n8n_main2:5678/healthz || exit 1'] + interval: 5s + timeout: 5s + retries: 10 + + n8n_main1: + image: ghcr.io/n8n-io/n8n:${N8N_VERSION:-latest} + environment: + - N8N_DIAGNOSTICS_ENABLED=false + - N8N_USER_FOLDER=/n8n + - N8N_ENCRYPTION_KEY=${N8N_ENCRYPTION_KEY} + - N8N_LICENSE_CERT=${N8N_LICENSE_CERT} + - N8N_LICENSE_ACTIVATION_KEY=${N8N_LICENSE_ACTIVATION_KEY} + - N8N_LICENSE_TENANT_ID=${N8N_LICENSE_TENANT_ID} + # Scaling mode config + - N8N_PROXY_HOPS=1 + - EXECUTIONS_MODE=queue + - QUEUE_BULL_REDIS_HOST=redis + - N8N_MULTI_MAIN_SETUP_ENABLED=true + # DB config + - DB_TYPE=postgresdb + - DB_POSTGRESDB_HOST=postgres + - DB_POSTGRESDB_PASSWORD=password + + volumes: + - ${RUN_DIR}/n8n-main1:/n8n + depends_on: + n8n_worker1: + condition: service_healthy + n8n_worker2: + condition: service_healthy + postgres: + condition: service_healthy + redis: + condition: service_healthy + mockapi: + condition: service_started + healthcheck: + test: ['CMD-SHELL', 'wget --spider -q http://n8n_main1:5678/healthz || exit 1'] + interval: 5s + timeout: 5s + retries: 10 + + # Load balancer that acts as an entry point for n8n + n8n: + image: nginx:1.27.2 + ports: + - '5678:80' + volumes: + - ./nginx.conf:/etc/nginx/nginx.conf + depends_on: + n8n_main1: + condition: service_healthy + n8n_main2: + condition: service_healthy + + benchmark: + image: ghcr.io/n8n-io/n8n-benchmark:${N8N_BENCHMARK_VERSION:-latest} + depends_on: + - n8n + environment: + - N8N_BASE_URL=http://n8n:80 + - K6_API_TOKEN=${K6_API_TOKEN} + - BENCHMARK_RESULT_WEBHOOK_URL=${BENCHMARK_RESULT_WEBHOOK_URL} + - BENCHMARK_RESULT_WEBHOOK_AUTH_HEADER=${BENCHMARK_RESULT_WEBHOOK_AUTH_HEADER} diff --git a/packages/@n8n/benchmark/scripts/n8n-setups/scaling-multi-main/nginx.conf b/packages/@n8n/benchmark/scripts/n8n-setups/scaling-multi-main/nginx.conf new file mode 100644 index 0000000000..142da7416e --- /dev/null +++ b/packages/@n8n/benchmark/scripts/n8n-setups/scaling-multi-main/nginx.conf @@ -0,0 +1,24 @@ +events {} + +http { + client_max_body_size 50M; + access_log off; + error_log /dev/stderr warn; + + upstream backend { + server n8n_main1:5678; + server n8n_main2:5678; + } + + server { + listen 80; + + location / { + proxy_pass http://backend; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; + } + } +} diff --git a/packages/@n8n/benchmark/scripts/n8n-setups/scaling-multi-main/setup.mjs b/packages/@n8n/benchmark/scripts/n8n-setups/scaling-multi-main/setup.mjs new file mode 100644 index 0000000000..13bb657ac2 --- /dev/null +++ b/packages/@n8n/benchmark/scripts/n8n-setups/scaling-multi-main/setup.mjs @@ -0,0 +1,15 @@ +#!/usr/bin/env zx + +import path from 'path'; +import { fs } from 'zx'; + +/** + * Creates the needed directories so the permissions get set correctly. + */ +export function setup({ runDir }) { + const neededDirs = ['n8n-worker1', 'n8n-worker2', 'n8n-main1', 'n8n-main2', 'postgres']; + + for (const dir of neededDirs) { + fs.ensureDirSync(path.join(runDir, dir)); + } +} diff --git a/packages/@n8n/benchmark/scripts/n8n-setups/scaling-single-main/docker-compose.yml b/packages/@n8n/benchmark/scripts/n8n-setups/scaling-single-main/docker-compose.yml new file mode 100644 index 0000000000..fe9e3a26c0 --- /dev/null +++ b/packages/@n8n/benchmark/scripts/n8n-setups/scaling-single-main/docker-compose.yml @@ -0,0 +1,142 @@ +services: + mockapi: + image: wiremock/wiremock:3.9.1 + ports: + - '8088:8080' + volumes: + - ${MOCK_API_DATA_PATH}/mappings:/home/wiremock/mappings + + redis: + image: redis:6.2.14-alpine + ports: + - 6379:6379 + healthcheck: + test: ['CMD', 'redis-cli', 'ping'] + interval: 1s + timeout: 3s + + postgres: + image: postgres:16.4 + user: root:root + restart: always + environment: + - POSTGRES_DB=n8n + - POSTGRES_USER=postgres + - POSTGRES_PASSWORD=password + - PGDATA=/var/lib/postgresql/data/pgdata + volumes: + - ${RUN_DIR}/postgres:/var/lib/postgresql/data + healthcheck: + test: ['CMD-SHELL', 'pg_isready -U postgres'] + interval: 5s + timeout: 5s + retries: 10 + + n8n_worker1: + image: ghcr.io/n8n-io/n8n:${N8N_VERSION:-latest} + user: root:root + environment: + - N8N_DIAGNOSTICS_ENABLED=false + - N8N_USER_FOLDER=/n8n/worker1 + - N8N_ENCRYPTION_KEY=${N8N_ENCRYPTION_KEY} + # Queue mode config + - EXECUTIONS_MODE=queue + - QUEUE_BULL_REDIS_HOST=redis + - QUEUE_HEALTH_CHECK_ACTIVE=true + - N8N_CONCURRENCY_PRODUCTION_LIMIT=10 + # DB config + - DB_TYPE=postgresdb + - DB_POSTGRESDB_HOST=postgres + - DB_POSTGRESDB_PASSWORD=password + command: worker + volumes: + - ${RUN_DIR}/n8n-worker1:/n8n + depends_on: + postgres: + condition: service_healthy + redis: + condition: service_healthy + healthcheck: + test: ['CMD-SHELL', 'wget --spider -q http://n8n_worker1:5678/healthz || exit 1'] + interval: 5s + timeout: 5s + retries: 10 + + n8n_worker2: + image: ghcr.io/n8n-io/n8n:${N8N_VERSION:-latest} + user: root:root + environment: + - N8N_DIAGNOSTICS_ENABLED=false + - N8N_USER_FOLDER=/n8n/worker2 + - N8N_ENCRYPTION_KEY=${N8N_ENCRYPTION_KEY} + # Queue mode config + - EXECUTIONS_MODE=queue + - QUEUE_BULL_REDIS_HOST=redis + - QUEUE_HEALTH_CHECK_ACTIVE=true + - N8N_CONCURRENCY_PRODUCTION_LIMIT=10 + # DB config + - DB_TYPE=postgresdb + - DB_POSTGRESDB_HOST=postgres + - DB_POSTGRESDB_PASSWORD=password + command: worker + volumes: + - ${RUN_DIR}/n8n-worker2:/n8n + depends_on: + # We let the worker 1 start first so it can run the DB migrations + n8n_worker1: + condition: service_healthy + postgres: + condition: service_healthy + redis: + condition: service_healthy + healthcheck: + test: ['CMD-SHELL', 'wget --spider -q http://n8n_worker2:5678/healthz || exit 1'] + interval: 5s + timeout: 5s + retries: 10 + + n8n: + image: ghcr.io/n8n-io/n8n:${N8N_VERSION:-latest} + user: root:root + environment: + - N8N_DIAGNOSTICS_ENABLED=false + - N8N_USER_FOLDER=/n8n/main + - N8N_ENCRYPTION_KEY=${N8N_ENCRYPTION_KEY} + # Queue mode config + - EXECUTIONS_MODE=queue + - QUEUE_BULL_REDIS_HOST=redis + # DB config + - DB_TYPE=postgresdb + - DB_POSTGRESDB_HOST=postgres + - DB_POSTGRESDB_PASSWORD=password + ports: + - 5678:5678 + volumes: + - ${RUN_DIR}/n8n-main:/n8n + depends_on: + n8n_worker1: + condition: service_healthy + n8n_worker2: + condition: service_healthy + postgres: + condition: service_healthy + redis: + condition: service_healthy + mockapi: + condition: service_started + healthcheck: + test: ['CMD-SHELL', 'wget --spider -q http://n8n:5678/healthz || exit 1'] + interval: 5s + timeout: 5s + retries: 10 + + benchmark: + image: ghcr.io/n8n-io/n8n-benchmark:${N8N_BENCHMARK_VERSION:-latest} + depends_on: + n8n: + condition: service_healthy + environment: + - N8N_BASE_URL=http://n8n:5678 + - K6_API_TOKEN=${K6_API_TOKEN} + - BENCHMARK_RESULT_WEBHOOK_URL=${BENCHMARK_RESULT_WEBHOOK_URL} + - BENCHMARK_RESULT_WEBHOOK_AUTH_HEADER=${BENCHMARK_RESULT_WEBHOOK_AUTH_HEADER} diff --git a/packages/@n8n/benchmark/scripts/n8n-setups/scaling-single-main/setup.mjs b/packages/@n8n/benchmark/scripts/n8n-setups/scaling-single-main/setup.mjs new file mode 100644 index 0000000000..4c4cabe088 --- /dev/null +++ b/packages/@n8n/benchmark/scripts/n8n-setups/scaling-single-main/setup.mjs @@ -0,0 +1,15 @@ +#!/usr/bin/env zx + +import path from 'path'; +import { fs } from 'zx'; + +/** + * Creates the needed directories so the permissions get set correctly. + */ +export function setup({ runDir }) { + const neededDirs = ['n8n-worker1', 'n8n-worker2', 'n8n-main', 'postgres']; + + for (const dir of neededDirs) { + fs.ensureDirSync(path.join(runDir, dir)); + } +} diff --git a/packages/@n8n/benchmark/scripts/n8n-setups/sqlite-legacy/docker-compose.yml b/packages/@n8n/benchmark/scripts/n8n-setups/sqlite-legacy/docker-compose.yml new file mode 100644 index 0000000000..750aa83886 --- /dev/null +++ b/packages/@n8n/benchmark/scripts/n8n-setups/sqlite-legacy/docker-compose.yml @@ -0,0 +1,37 @@ +services: + mockapi: + image: wiremock/wiremock:3.9.1 + ports: + - '8088:8080' + volumes: + - ${MOCK_API_DATA_PATH}/mappings:/home/wiremock/mappings + + n8n: + image: ghcr.io/n8n-io/n8n:${N8N_VERSION:-latest} + user: root:root + environment: + - N8N_DIAGNOSTICS_ENABLED=false + - N8N_USER_FOLDER=/n8n + ports: + - 5678:5678 + volumes: + - ${RUN_DIR}:/n8n + healthcheck: + test: ['CMD-SHELL', 'wget --spider -q http://n8n:5678/healthz || exit 1'] + interval: 5s + timeout: 5s + retries: 10 + depends_on: + mockapi: + condition: service_started + + benchmark: + image: ghcr.io/n8n-io/n8n-benchmark:${N8N_BENCHMARK_VERSION:-latest} + depends_on: + n8n: + condition: service_healthy + environment: + - N8N_BASE_URL=http://n8n:5678 + - K6_API_TOKEN=${K6_API_TOKEN} + - BENCHMARK_RESULT_WEBHOOK_URL=${BENCHMARK_RESULT_WEBHOOK_URL} + - BENCHMARK_RESULT_WEBHOOK_AUTH_HEADER=${BENCHMARK_RESULT_WEBHOOK_AUTH_HEADER} diff --git a/packages/@n8n/benchmark/scripts/n8n-setups/sqlite-legacy/setup.mjs b/packages/@n8n/benchmark/scripts/n8n-setups/sqlite-legacy/setup.mjs new file mode 100644 index 0000000000..4f883a7b49 --- /dev/null +++ b/packages/@n8n/benchmark/scripts/n8n-setups/sqlite-legacy/setup.mjs @@ -0,0 +1,15 @@ +#!/usr/bin/env zx + +import path from 'path'; +import { fs } from 'zx'; + +/** + * Creates the needed directories so the permissions get set correctly. + */ +export function setup({ runDir }) { + const neededDirs = ['n8n']; + + for (const dir of neededDirs) { + fs.ensureDirSync(path.join(runDir, dir)); + } +} diff --git a/packages/@n8n/benchmark/scripts/n8n-setups/sqlite/docker-compose.yml b/packages/@n8n/benchmark/scripts/n8n-setups/sqlite/docker-compose.yml new file mode 100644 index 0000000000..20ec0067fa --- /dev/null +++ b/packages/@n8n/benchmark/scripts/n8n-setups/sqlite/docker-compose.yml @@ -0,0 +1,39 @@ +services: + mockapi: + image: wiremock/wiremock:3.9.1 + ports: + - '8088:8080' + volumes: + - ${MOCK_API_DATA_PATH}/mappings:/home/wiremock/mappings + + n8n: + image: ghcr.io/n8n-io/n8n:${N8N_VERSION:-latest} + user: root:root + environment: + - N8N_DIAGNOSTICS_ENABLED=false + - N8N_USER_FOLDER=/n8n + - DB_SQLITE_POOL_SIZE=3 + - DB_SQLITE_ENABLE_WAL=true + ports: + - 5678:5678 + volumes: + - ${RUN_DIR}:/n8n + healthcheck: + test: ['CMD-SHELL', 'wget --spider -q http://n8n:5678/healthz || exit 1'] + interval: 5s + timeout: 5s + retries: 10 + depends_on: + mockapi: + condition: service_started + + benchmark: + image: ghcr.io/n8n-io/n8n-benchmark:${N8N_BENCHMARK_VERSION:-latest} + depends_on: + n8n: + condition: service_healthy + environment: + - N8N_BASE_URL=http://n8n:5678 + - K6_API_TOKEN=${K6_API_TOKEN} + - BENCHMARK_RESULT_WEBHOOK_URL=${BENCHMARK_RESULT_WEBHOOK_URL} + - BENCHMARK_RESULT_WEBHOOK_AUTH_HEADER=${BENCHMARK_RESULT_WEBHOOK_AUTH_HEADER} diff --git a/packages/@n8n/benchmark/scripts/n8n-setups/sqlite/setup.mjs b/packages/@n8n/benchmark/scripts/n8n-setups/sqlite/setup.mjs new file mode 100644 index 0000000000..4f883a7b49 --- /dev/null +++ b/packages/@n8n/benchmark/scripts/n8n-setups/sqlite/setup.mjs @@ -0,0 +1,15 @@ +#!/usr/bin/env zx + +import path from 'path'; +import { fs } from 'zx'; + +/** + * Creates the needed directories so the permissions get set correctly. + */ +export function setup({ runDir }) { + const neededDirs = ['n8n']; + + for (const dir of neededDirs) { + fs.ensureDirSync(path.join(runDir, dir)); + } +} diff --git a/packages/@n8n/benchmark/scripts/provision-cloud-env.mjs b/packages/@n8n/benchmark/scripts/provision-cloud-env.mjs new file mode 100644 index 0000000000..7a51c96db8 --- /dev/null +++ b/packages/@n8n/benchmark/scripts/provision-cloud-env.mjs @@ -0,0 +1,36 @@ +#!/usr/bin/env zx +/** + * Provisions the cloud benchmark environment + * + * NOTE: Must be run in the root of the package. + */ +// @ts-check +import { which, minimist } from 'zx'; +import { TerraformClient } from './clients/terraform-client.mjs'; + +const args = minimist(process.argv.slice(3), { + boolean: ['debug'], +}); + +const isVerbose = !!args.debug; + +export async function provision() { + await ensureDependencies(); + + const terraformClient = new TerraformClient({ + isVerbose, + }); + + await terraformClient.provisionEnvironment(); +} + +async function ensureDependencies() { + await which('terraform'); +} + +provision().catch((error) => { + console.error('An error occurred while provisioning cloud env:'); + console.error(error); + + process.exit(1); +}); diff --git a/packages/@n8n/benchmark/scripts/run-for-n8n-setup.mjs b/packages/@n8n/benchmark/scripts/run-for-n8n-setup.mjs new file mode 100755 index 0000000000..8c8ea5f6dd --- /dev/null +++ b/packages/@n8n/benchmark/scripts/run-for-n8n-setup.mjs @@ -0,0 +1,158 @@ +#!/usr/bin/env zx +/** + * This script runs the benchmarks for the given n8n setup. + */ +// @ts-check +import path from 'path'; +import { $, argv, fs } from 'zx'; +import { DockerComposeClient } from './clients/docker-compose-client.mjs'; +import { flagsObjectToCliArgs } from './utils/flags.mjs'; + +const paths = { + n8nSetupsDir: path.join(__dirname, 'n8n-setups'), + mockApiDataPath: path.join(__dirname, 'mock-api'), +}; + +const N8N_ENCRYPTION_KEY = 'very-secret-encryption-key'; + +async function main() { + const [n8nSetupToUse] = argv._; + validateN8nSetup(n8nSetupToUse); + + const composeFilePath = path.join(paths.n8nSetupsDir, n8nSetupToUse); + const setupScriptPath = path.join(paths.n8nSetupsDir, n8nSetupToUse, 'setup.mjs'); + const n8nTag = argv.n8nDockerTag || process.env.N8N_DOCKER_TAG || 'latest'; + const benchmarkTag = argv.benchmarkDockerTag || process.env.BENCHMARK_DOCKER_TAG || 'latest'; + const k6ApiToken = argv.k6ApiToken || process.env.K6_API_TOKEN || undefined; + const resultWebhookUrl = + argv.resultWebhookUrl || process.env.BENCHMARK_RESULT_WEBHOOK_URL || undefined; + const resultWebhookAuthHeader = + argv.resultWebhookAuthHeader || process.env.BENCHMARK_RESULT_WEBHOOK_AUTH_HEADER || undefined; + const baseRunDir = argv.runDir || process.env.RUN_DIR || '/n8n'; + const n8nLicenseCert = argv.n8nLicenseCert || process.env.N8N_LICENSE_CERT || undefined; + const n8nLicenseActivationKey = process.env.N8N_LICENSE_ACTIVATION_KEY || undefined; + const n8nLicenseTenantId = argv.n8nLicenseTenantId || process.env.N8N_LICENSE_TENANT_ID || '1'; + const envTag = argv.env || 'local'; + const vus = argv.vus; + const duration = argv.duration; + + const hasN8nLicense = !!n8nLicenseCert || !!n8nLicenseActivationKey; + if (n8nSetupToUse === 'scaling-multi-main' && !hasN8nLicense) { + console.error( + 'n8n license is required to run the multi-main scaling setup. Please provide N8N_LICENSE_CERT or N8N_LICENSE_ACTIVATION_KEY (and N8N_LICENSE_TENANT_ID if needed)', + ); + process.exit(1); + } + + if (!fs.existsSync(baseRunDir)) { + console.error( + `The run directory "${baseRunDir}" does not exist. Please specify a valid directory using --runDir`, + ); + process.exit(1); + } + + const runDir = path.join(baseRunDir, n8nSetupToUse); + fs.emptyDirSync(runDir); + + const dockerComposeClient = new DockerComposeClient({ + $: $({ + cwd: composeFilePath, + verbose: true, + env: { + PATH: process.env.PATH, + N8N_VERSION: n8nTag, + N8N_LICENSE_CERT: n8nLicenseCert, + N8N_LICENSE_ACTIVATION_KEY: n8nLicenseActivationKey, + N8N_LICENSE_TENANT_ID: n8nLicenseTenantId, + N8N_ENCRYPTION_KEY, + BENCHMARK_VERSION: benchmarkTag, + K6_API_TOKEN: k6ApiToken, + BENCHMARK_RESULT_WEBHOOK_URL: resultWebhookUrl, + BENCHMARK_RESULT_WEBHOOK_AUTH_HEADER: resultWebhookAuthHeader, + RUN_DIR: runDir, + MOCK_API_DATA_PATH: paths.mockApiDataPath, + }, + }), + }); + + // Run the setup script if it exists + if (fs.existsSync(setupScriptPath)) { + const setupScript = await import(setupScriptPath); + await setupScript.setup({ runDir }); + } + + try { + await dockerComposeClient.$('up', '-d', '--remove-orphans', 'n8n'); + + const tags = Object.entries({ + Env: envTag, + N8nVersion: n8nTag, + N8nSetup: n8nSetupToUse, + }) + .map(([key, value]) => `${key}=${value}`) + .join(','); + + const cliArgs = flagsObjectToCliArgs({ + scenarioNamePrefix: n8nSetupToUse, + vus, + duration, + tags, + }); + + await dockerComposeClient.$('run', 'benchmark', 'run', ...cliArgs); + } catch (error) { + console.error('An error occurred while running the benchmarks:'); + console.error(error.message); + console.error(''); + await printContainerStatus(dockerComposeClient); + } finally { + await dumpLogs(dockerComposeClient); + await dockerComposeClient.$('down'); + } +} + +async function printContainerStatus(dockerComposeClient) { + console.error('Container statuses:'); + await dockerComposeClient.$('ps', '-a'); +} + +async function dumpLogs(dockerComposeClient) { + console.info('Container logs:'); + await dockerComposeClient.$('logs'); +} + +function printUsage() { + const availableSetups = getAllN8nSetups(); + console.log('Usage: zx runForN8nSetup.mjs --runDir /path/for/n8n/data '); + console.log(` eg: zx runForN8nSetup.mjs --runDir /path/for/n8n/data ${availableSetups[0]}`); + console.log(''); + console.log('Flags:'); + console.log( + ' --runDir Directory to share with the n8n container for storing data. Default is /n8n', + ); + console.log(' --n8nDockerTag Docker tag for n8n image. Default is latest'); + console.log( + ' --benchmarkDockerTag Docker tag for benchmark cli image. Default is latest', + ); + console.log(' --k6ApiToken K6 API token to upload the results'); + console.log(''); + console.log('Available setups:'); + console.log(availableSetups.join(', ')); +} + +/** + * @returns {string[]} + */ +function getAllN8nSetups() { + return fs.readdirSync(paths.n8nSetupsDir); +} + +function validateN8nSetup(givenSetup) { + const availableSetups = getAllN8nSetups(); + if (!availableSetups.includes(givenSetup)) { + printUsage(); + process.exit(1); + } +} + +main(); diff --git a/packages/@n8n/benchmark/scripts/run-in-cloud.mjs b/packages/@n8n/benchmark/scripts/run-in-cloud.mjs new file mode 100755 index 0000000000..35e90bdee5 --- /dev/null +++ b/packages/@n8n/benchmark/scripts/run-in-cloud.mjs @@ -0,0 +1,154 @@ +#!/usr/bin/env zx +/** + * Script to run benchmarks on the cloud benchmark environment. + * This script will: + * 1. Provision a benchmark environment using Terraform. + * 2. Run the benchmarks on the VM. + * 3. Destroy the cloud environment. + * + * NOTE: Must be run in the root of the package. + */ +// @ts-check +import { sleep, which, $, tmpdir } from 'zx'; +import path from 'path'; +import { SshClient } from './clients/ssh-client.mjs'; +import { TerraformClient } from './clients/terraform-client.mjs'; +import { flagsObjectToCliArgs } from './utils/flags.mjs'; + +/** + * @typedef {Object} BenchmarkEnv + * @property {string} vmName + * @property {string} ip + * @property {string} sshUsername + * @property {string} sshPrivateKeyPath + */ + +/** + * @typedef {Object} Config + * @property {boolean} isVerbose + * @property {string[]} n8nSetupsToUse + * @property {string} n8nTag + * @property {string} benchmarkTag + * @property {string} [k6ApiToken] + * @property {string} [resultWebhookUrl] + * @property {string} [resultWebhookAuthHeader] + * @property {string} [n8nLicenseCert] + * @property {string} [vus] + * @property {string} [duration] + * + * @param {Config} config + */ +export async function runInCloud(config) { + await ensureDependencies(); + + const terraformClient = new TerraformClient({ + isVerbose: config.isVerbose, + }); + + const benchmarkEnv = await terraformClient.getTerraformOutputs(); + + await runBenchmarksOnVm(config, benchmarkEnv); +} + +async function ensureDependencies() { + await which('terraform'); + await which('az'); +} + +/** + * @param {Config} config + * @param {BenchmarkEnv} benchmarkEnv + */ +async function runBenchmarksOnVm(config, benchmarkEnv) { + console.log(`Setting up the environment...`); + + const sshClient = new SshClient({ + ip: benchmarkEnv.ip, + username: benchmarkEnv.sshUsername, + privateKeyPath: benchmarkEnv.sshPrivateKeyPath, + verbose: config.isVerbose, + }); + + await ensureVmIsReachable(sshClient); + + const scriptsDir = await transferScriptsToVm(sshClient, config); + + // Bootstrap the environment with dependencies + console.log('Running bootstrap script...'); + const bootstrapScriptPath = path.join(scriptsDir, 'bootstrap.sh'); + await sshClient.ssh(`chmod a+x ${bootstrapScriptPath} && ${bootstrapScriptPath}`); + + // Give some time for the VM to be ready + await sleep(1000); + + for (const n8nSetup of config.n8nSetupsToUse) { + await runBenchmarkForN8nSetup({ + config, + sshClient, + scriptsDir, + n8nSetup, + }); + } +} + +/** + * @param {{ config: Config; sshClient: any; scriptsDir: string; n8nSetup: string; }} opts + */ +async function runBenchmarkForN8nSetup({ config, sshClient, scriptsDir, n8nSetup }) { + console.log(`Running benchmarks for ${n8nSetup}...`); + const runScriptPath = path.join(scriptsDir, 'run-for-n8n-setup.mjs'); + + const cliArgs = flagsObjectToCliArgs({ + n8nDockerTag: config.n8nTag, + benchmarkDockerTag: config.benchmarkTag, + k6ApiToken: config.k6ApiToken, + resultWebhookUrl: config.resultWebhookUrl, + resultWebhookAuthHeader: config.resultWebhookAuthHeader, + n8nLicenseCert: config.n8nLicenseCert, + vus: config.vus, + duration: config.duration, + env: 'cloud', + }); + + const flagsString = cliArgs.join(' '); + + await sshClient.ssh(`npx zx ${runScriptPath} ${flagsString} ${n8nSetup}`, { + // Test run should always log its output + verbose: true, + }); +} + +async function ensureVmIsReachable(sshClient) { + try { + await sshClient.ssh('echo "VM is reachable"'); + } catch (error) { + console.error(`VM is not reachable: ${error.message}`); + console.error( + `Did you provision the cloud environment first with 'pnpm provision-cloud-env'? You can also run the benchmarks locally with 'pnpm run benchmark-locally'.`, + ); + process.exit(1); + } +} + +/** + * @returns Path where the scripts are located on the VM + */ +async function transferScriptsToVm(sshClient, config) { + const cwd = process.cwd(); + const scriptsDir = path.resolve(cwd, './scripts'); + const tarFilename = 'scripts.tar.gz'; + const scriptsTarPath = path.join(tmpdir('n8n-benchmark'), tarFilename); + + const $$ = $({ verbose: config.isVerbose }); + + // Compress the scripts folder + await $$`tar -czf ${scriptsTarPath} ${scriptsDir} -C ${cwd} ./scripts`; + + // Transfer the scripts to the VM + await sshClient.scp(scriptsTarPath, `~/${tarFilename}`); + + // Extract the scripts on the VM + await sshClient.ssh(`tar -xzf ~/${tarFilename}`); + + return '~/scripts'; +} diff --git a/packages/@n8n/benchmark/scripts/run-locally.mjs b/packages/@n8n/benchmark/scripts/run-locally.mjs new file mode 100755 index 0000000000..b2caec5218 --- /dev/null +++ b/packages/@n8n/benchmark/scripts/run-locally.mjs @@ -0,0 +1,71 @@ +#!/usr/bin/env zx +/** + * Script to run benchmarks on the cloud benchmark environment. + * This script will: + * 1. Provision a benchmark environment using Terraform. + * 2. Run the benchmarks on the VM. + * 3. Destroy the cloud environment. + * + * NOTE: Must be run in the root of the package. + */ +// @ts-check +import { $ } from 'zx'; +import path from 'path'; +import { flagsObjectToCliArgs } from './utils/flags.mjs'; + +/** + * @typedef {Object} BenchmarkEnv + * @property {string} vmName + */ + +const paths = { + scriptsDir: path.join(path.resolve('scripts')), +}; + +/** + * @typedef {Object} Config + * @property {boolean} isVerbose + * @property {string[]} n8nSetupsToUse + * @property {string} n8nTag + * @property {string} benchmarkTag + * @property {string} [runDir] + * @property {string} [k6ApiToken] + * @property {string} [resultWebhookUrl] + * @property {string} [resultWebhookAuthHeader] + * @property {string} [n8nLicenseCert] + * @property {string} [vus] + * @property {string} [duration] + * + * @param {Config} config + */ +export async function runLocally(config) { + const runScriptPath = path.join(paths.scriptsDir, 'run-for-n8n-setup.mjs'); + + const cliArgs = flagsObjectToCliArgs({ + n8nDockerTag: config.n8nTag, + benchmarkDockerTag: config.benchmarkTag, + runDir: config.runDir, + vus: config.vus, + duration: config.duration, + env: 'local', + }); + + try { + for (const n8nSetup of config.n8nSetupsToUse) { + console.log(`Running benchmarks for n8n setup: ${n8nSetup}`); + + await $({ + env: { + ...process.env, + K6_API_TOKEN: config.k6ApiToken, + BENCHMARK_RESULT_WEBHOOK_URL: config.resultWebhookUrl, + BENCHMARK_RESULT_WEBHOOK_AUTH_HEADER: config.resultWebhookAuthHeader, + N8N_LICENSE_CERT: config.n8nLicenseCert, + }, + })`npx ${runScriptPath} ${cliArgs} ${n8nSetup}`; + } + } catch (error) { + console.error('An error occurred while running the benchmarks:'); + console.error(error); + } +} diff --git a/packages/@n8n/benchmark/scripts/run.mjs b/packages/@n8n/benchmark/scripts/run.mjs new file mode 100755 index 0000000000..e848c58fe1 --- /dev/null +++ b/packages/@n8n/benchmark/scripts/run.mjs @@ -0,0 +1,186 @@ +#!/usr/bin/env zx +/** + * Script to run benchmarks either on the cloud benchmark environment or locally. + * The cloud environment needs to be provisioned using Terraform before running the benchmarks. + * + * NOTE: Must be run in the root of the package. + */ +// @ts-check +import fs from 'fs'; +import minimist from 'minimist'; +import path from 'path'; +import { runInCloud } from './run-in-cloud.mjs'; +import { runLocally } from './run-locally.mjs'; + +const paths = { + n8nSetupsDir: path.join(path.resolve('scripts'), 'n8n-setups'), +}; + +async function main() { + const config = await parseAndValidateConfig(); + + const n8nSetupsToUse = + config.n8nSetupToUse === 'all' ? readAvailableN8nSetups() : [config.n8nSetupToUse]; + + console.log('Using n8n tag', config.n8nTag); + console.log('Using benchmark cli tag', config.benchmarkTag); + console.log('Using environment', config.env); + console.log('Using n8n setups', n8nSetupsToUse.join(', ')); + console.log(''); + + if (config.env === 'cloud') { + await runInCloud({ + benchmarkTag: config.benchmarkTag, + isVerbose: config.isVerbose, + k6ApiToken: config.k6ApiToken, + resultWebhookUrl: config.resultWebhookUrl, + resultWebhookAuthHeader: config.resultWebhookAuthHeader, + n8nLicenseCert: config.n8nLicenseCert, + n8nTag: config.n8nTag, + n8nSetupsToUse, + vus: config.vus, + duration: config.duration, + }); + } else if (config.env === 'local') { + await runLocally({ + benchmarkTag: config.benchmarkTag, + isVerbose: config.isVerbose, + k6ApiToken: config.k6ApiToken, + resultWebhookUrl: config.resultWebhookUrl, + resultWebhookAuthHeader: config.resultWebhookAuthHeader, + n8nLicenseCert: config.n8nLicenseCert, + n8nTag: config.n8nTag, + runDir: config.runDir, + n8nSetupsToUse, + vus: config.vus, + duration: config.duration, + }); + } else { + console.error('Invalid env:', config.env); + printUsage(); + process.exit(1); + } +} + +function readAvailableN8nSetups() { + const setups = fs.readdirSync(paths.n8nSetupsDir); + + return setups; +} + +/** + * @typedef {Object} Config + * @property {boolean} isVerbose + * @property {'cloud' | 'local'} env + * @property {string} n8nSetupToUse + * @property {string} n8nTag + * @property {string} benchmarkTag + * @property {string} [k6ApiToken] + * @property {string} [resultWebhookUrl] + * @property {string} [resultWebhookAuthHeader] + * @property {string} [n8nLicenseCert] + * @property {string} [runDir] + * @property {string} [vus] + * @property {string} [duration] + * + * @returns {Promise} + */ +async function parseAndValidateConfig() { + const args = minimist(process.argv.slice(3), { + boolean: ['debug', 'help'], + }); + + if (args.help) { + printUsage(); + process.exit(0); + } + + const n8nSetupToUse = await getAndValidateN8nSetup(args); + const isVerbose = args.debug || false; + const n8nTag = args.n8nTag || process.env.N8N_DOCKER_TAG || 'latest'; + const benchmarkTag = args.benchmarkTag || process.env.BENCHMARK_DOCKER_TAG || 'latest'; + const k6ApiToken = args.k6ApiToken || process.env.K6_API_TOKEN || undefined; + const resultWebhookUrl = + args.resultWebhookUrl || process.env.BENCHMARK_RESULT_WEBHOOK_URL || undefined; + const resultWebhookAuthHeader = + args.resultWebhookAuthHeader || process.env.BENCHMARK_RESULT_WEBHOOK_AUTH_HEADER || undefined; + const n8nLicenseCert = args.n8nLicenseCert || process.env.N8N_LICENSE_CERT || undefined; + const runDir = args.runDir || undefined; + const env = args.env || 'local'; + const vus = args.vus; + const duration = args.duration; + + if (!env) { + printUsage(); + process.exit(1); + } + + return { + isVerbose, + env, + n8nSetupToUse, + n8nTag, + benchmarkTag, + k6ApiToken, + resultWebhookUrl, + resultWebhookAuthHeader, + n8nLicenseCert, + runDir, + vus, + duration, + }; +} + +/** + * @param {minimist.ParsedArgs} args + */ +async function getAndValidateN8nSetup(args) { + // Last parameter is the n8n setup to use + const n8nSetupToUse = args._[args._.length - 1]; + if (!n8nSetupToUse || n8nSetupToUse === 'all') { + return 'all'; + } + + const availableSetups = readAvailableN8nSetups(); + + if (!availableSetups.includes(n8nSetupToUse)) { + printUsage(); + process.exit(1); + } + + return n8nSetupToUse; +} + +function printUsage() { + const availableSetups = readAvailableN8nSetups(); + + console.log(`Usage: zx scripts/${path.basename(__filename)} [n8n setup name]`); + console.log(` eg: zx scripts/${path.basename(__filename)}`); + console.log(''); + console.log('Options:'); + console.log( + ` [n8n setup name] Against which n8n setup to run the benchmarks. One of: ${['all', ...availableSetups].join(', ')}. Default is all`, + ); + console.log( + ' --env Env where to run the benchmarks. Either cloud or local. Default is local.', + ); + console.log(' --debug Enable verbose output'); + console.log(' --n8nTag Docker tag for n8n image. Default is latest'); + console.log(' --benchmarkTag Docker tag for benchmark cli image. Default is latest'); + console.log(' --vus How many concurrent requests to make'); + console.log(' --duration Test duration, e.g. 1m or 30s'); + console.log( + ' --k6ApiToken API token for k6 cloud. Default is read from K6_API_TOKEN env var. If omitted, k6 cloud will not be used', + ); + console.log( + ' --runDir Directory to share with the n8n container for storing data. Needed only for local runs.', + ); + console.log(''); +} + +main().catch((error) => { + console.error('An error occurred while running the benchmarks:'); + console.error(error); + + process.exit(1); +}); diff --git a/packages/@n8n/benchmark/scripts/utils/flags.mjs b/packages/@n8n/benchmark/scripts/utils/flags.mjs new file mode 100644 index 0000000000..1c7842d0f4 --- /dev/null +++ b/packages/@n8n/benchmark/scripts/utils/flags.mjs @@ -0,0 +1,20 @@ +// @ts-check + +/** + * Converts an object of flags to an array of CLI arguments. + * + * @param {Record} flags + * + * @returns {string[]} + */ +export function flagsObjectToCliArgs(flags) { + return Object.entries(flags) + .filter(([, value]) => value !== undefined) + .map(([key, value]) => { + if (typeof value === 'string' && value.includes(' ')) { + return `--${key}="${value}"`; + } else { + return `--${key}=${value}`; + } + }); +} diff --git a/packages/@n8n/benchmark/src/commands/list.ts b/packages/@n8n/benchmark/src/commands/list.ts new file mode 100644 index 0000000000..34b8273209 --- /dev/null +++ b/packages/@n8n/benchmark/src/commands/list.ts @@ -0,0 +1,26 @@ +import { Command } from '@oclif/core'; + +import { testScenariosPath } from '@/config/common-flags'; +import { ScenarioLoader } from '@/scenario/scenario-loader'; + +export default class ListCommand extends Command { + static description = 'List all available scenarios'; + + static flags = { + testScenariosPath, + }; + + async run() { + const { flags } = await this.parse(ListCommand); + const scenarioLoader = new ScenarioLoader(); + + const allScenarios = scenarioLoader.loadAll(flags.testScenariosPath); + + console.log('Available test scenarios:'); + console.log(''); + + for (const scenario of allScenarios) { + console.log('\t', scenario.name, ':', scenario.description); + } + } +} diff --git a/packages/@n8n/benchmark/src/commands/run.ts b/packages/@n8n/benchmark/src/commands/run.ts new file mode 100644 index 0000000000..312de91c3c --- /dev/null +++ b/packages/@n8n/benchmark/src/commands/run.ts @@ -0,0 +1,118 @@ +import { Command, Flags } from '@oclif/core'; + +import { testScenariosPath } from '@/config/common-flags'; +import { N8nApiClient } from '@/n8n-api-client/n8n-api-client'; +import { ScenarioDataFileLoader } from '@/scenario/scenario-data-loader'; +import { ScenarioLoader } from '@/scenario/scenario-loader'; +import type { K6Tag } from '@/test-execution/k6-executor'; +import { K6Executor } from '@/test-execution/k6-executor'; +import { ScenarioRunner } from '@/test-execution/scenario-runner'; + +export default class RunCommand extends Command { + static description = 'Run all (default) or specified test scenarios'; + + static flags = { + testScenariosPath, + scenarioFilter: Flags.string({ + char: 'f', + description: 'Filter scenarios by name', + }), + scenarioNamePrefix: Flags.string({ + description: 'Prefix for the scenario name', + default: 'Unnamed', + }), + n8nBaseUrl: Flags.string({ + description: 'The base URL for the n8n instance', + default: 'http://localhost:5678', + env: 'N8N_BASE_URL', + }), + n8nUserEmail: Flags.string({ + description: 'The email address of the n8n user', + default: 'benchmark-user@n8n.io', + env: 'N8N_USER_EMAIL', + }), + k6ExecutablePath: Flags.string({ + doc: 'The path to the k6 binary', + default: 'k6', + env: 'K6_PATH', + }), + k6ApiToken: Flags.string({ + doc: 'The API token for k6 cloud', + default: undefined, + env: 'K6_API_TOKEN', + }), + resultWebhookUrl: Flags.string({ + doc: 'The URL where the benchmark results should be sent to', + default: undefined, + env: 'BENCHMARK_RESULT_WEBHOOK_URL', + }), + resultWebhookAuthHeader: Flags.string({ + doc: 'The Authorization header value for the benchmark results webhook', + default: undefined, + env: 'BENCHMARK_RESULT_WEBHOOK_AUTH_HEADER', + }), + n8nUserPassword: Flags.string({ + description: 'The password of the n8n user', + default: 'VerySecret!123', + env: 'N8N_USER_PASSWORD', + }), + tags: Flags.string({ + char: 't', + description: 'Tags to attach to the run. Comma separated list of key=value pairs', + }), + vus: Flags.integer({ + description: 'Number of concurrent requests to make', + default: 5, + }), + duration: Flags.string({ + description: 'Duration of the test with a unit, e.g. 1m', + default: '1m', + }), + }; + + async run() { + const { flags } = await this.parse(RunCommand); + const tags = await this.parseTags(); + const scenarioLoader = new ScenarioLoader(); + + const scenarioRunner = new ScenarioRunner( + new N8nApiClient(flags.n8nBaseUrl), + new ScenarioDataFileLoader(), + new K6Executor({ + duration: flags.duration, + vus: flags.vus, + k6ExecutablePath: flags.k6ExecutablePath, + k6ApiToken: flags.k6ApiToken, + n8nApiBaseUrl: flags.n8nBaseUrl, + tags, + resultsWebhook: flags.resultWebhookUrl + ? { + url: flags.resultWebhookUrl, + authHeader: flags.resultWebhookAuthHeader, + } + : undefined, + }), + { + email: flags.n8nUserEmail, + password: flags.n8nUserPassword, + }, + flags.scenarioNamePrefix, + ); + + const allScenarios = scenarioLoader.loadAll(flags.testScenariosPath, flags.scenarioFilter); + + await scenarioRunner.runManyScenarios(allScenarios); + } + + private async parseTags(): Promise { + const { flags } = await this.parse(RunCommand); + if (!flags.tags) { + return []; + } + + return flags.tags.split(',').map((tag) => { + const [name, value] = tag.split('='); + return { name, value }; + }); + } +} diff --git a/packages/@n8n/benchmark/src/config/common-flags.ts b/packages/@n8n/benchmark/src/config/common-flags.ts new file mode 100644 index 0000000000..fb53682324 --- /dev/null +++ b/packages/@n8n/benchmark/src/config/common-flags.ts @@ -0,0 +1,6 @@ +import { Flags } from '@oclif/core'; + +export const testScenariosPath = Flags.string({ + description: 'The path to the scenarios', + default: 'scenarios', +}); diff --git a/packages/@n8n/benchmark/src/n8n-api-client/authenticated-n8n-api-client.ts b/packages/@n8n/benchmark/src/n8n-api-client/authenticated-n8n-api-client.ts new file mode 100644 index 0000000000..2555ea8061 --- /dev/null +++ b/packages/@n8n/benchmark/src/n8n-api-client/authenticated-n8n-api-client.ts @@ -0,0 +1,85 @@ +import type { AxiosRequestConfig } from 'axios'; + +import { N8nApiClient } from './n8n-api-client'; + +export class AuthenticatedN8nApiClient extends N8nApiClient { + constructor( + apiBaseUrl: string, + private readonly authCookie: string, + ) { + super(apiBaseUrl); + } + + static async createUsingUsernameAndPassword( + apiClient: N8nApiClient, + loginDetails: { + email: string; + password: string; + }, + ): Promise { + const response = await apiClient.restApiRequest('/login', { + method: 'POST', + data: loginDetails, + }); + + if (response.data === 'n8n is starting up. Please wait') { + await apiClient.delay(1000); + return await this.createUsingUsernameAndPassword(apiClient, loginDetails); + } + + const cookieHeader = response.headers['set-cookie']; + const authCookie = Array.isArray(cookieHeader) ? cookieHeader.join('; ') : cookieHeader; + if (!authCookie) { + throw new Error( + 'Did not receive authentication cookie even tho login succeeded: ' + + JSON.stringify( + { + status: response.status, + headers: response.headers, + data: response.data, + }, + null, + 2, + ), + ); + } + + return new AuthenticatedN8nApiClient(apiClient.apiBaseUrl, authCookie); + } + + async get(endpoint: string) { + return await this.authenticatedRequest(endpoint, { + method: 'GET', + }); + } + + async post(endpoint: string, data: unknown) { + return await this.authenticatedRequest(endpoint, { + method: 'POST', + data, + }); + } + + async patch(endpoint: string, data: unknown) { + return await this.authenticatedRequest(endpoint, { + method: 'PATCH', + data, + }); + } + + async delete(endpoint: string) { + return await this.authenticatedRequest(endpoint, { + method: 'DELETE', + }); + } + + protected async authenticatedRequest(endpoint: string, init: Omit) { + return await this.restApiRequest(endpoint, { + ...init, + headers: { + ...init.headers, + cookie: this.authCookie, + }, + }); + } +} diff --git a/packages/@n8n/benchmark/src/n8n-api-client/n8n-api-client.ts b/packages/@n8n/benchmark/src/n8n-api-client/n8n-api-client.ts new file mode 100644 index 0000000000..dd81fa9cfb --- /dev/null +++ b/packages/@n8n/benchmark/src/n8n-api-client/n8n-api-client.ts @@ -0,0 +1,85 @@ +import type { AxiosError, AxiosRequestConfig } from 'axios'; +import axios from 'axios'; + +export class N8nApiClient { + constructor(public readonly apiBaseUrl: string) {} + + async waitForInstanceToBecomeOnline(): Promise { + const HEALTH_ENDPOINT = 'healthz'; + const START_TIME = Date.now(); + const INTERVAL_MS = 1000; + const TIMEOUT_MS = 60_000; + + while (Date.now() - START_TIME < TIMEOUT_MS) { + try { + const response = await axios.request<{ status: 'ok' }>({ + url: `${this.apiBaseUrl}/${HEALTH_ENDPOINT}`, + method: 'GET', + }); + + if (response.status === 200 && response.data.status === 'ok') { + return; + } + } catch {} + + console.log(`n8n instance not online yet, retrying in ${INTERVAL_MS / 1000} seconds...`); + await this.delay(INTERVAL_MS); + } + + throw new Error(`n8n instance did not come online within ${TIMEOUT_MS / 1000} seconds`); + } + + async setupOwnerIfNeeded(loginDetails: { email: string; password: string }) { + const response = await this.restApiRequest<{ message: string }>('/owner/setup', { + method: 'POST', + data: { + email: loginDetails.email, + password: loginDetails.password, + firstName: 'Test', + lastName: 'User', + }, + // Don't throw on non-2xx responses + validateStatus: () => true, + }); + + const responsePayload = response.data; + + if (response.status === 200) { + console.log('Owner setup successful'); + } else if (response.status === 400) { + if (responsePayload.message === 'Instance owner already setup') + console.log('Owner already set up'); + } else if (response.status === 404) { + // The n8n instance setup owner endpoint not be available yet even tho + // the health endpoint returns ok. In this case we simply retry. + console.log('Owner setup endpoint not available yet, retrying in 1s...'); + await this.delay(1000); + await this.setupOwnerIfNeeded(loginDetails); + } else { + throw new Error( + `Owner setup failed with status ${response.status}: ${responsePayload.message}`, + ); + } + } + + async restApiRequest(endpoint: string, init: Omit) { + try { + return await axios.request({ + ...init, + url: this.getRestEndpointUrl(endpoint), + }); + } catch (e) { + const error = e as AxiosError; + console.error(`[ERROR] Request failed ${init.method} ${endpoint}`, error?.response?.data); + throw error; + } + } + + async delay(ms: number): Promise { + return await new Promise((resolve) => setTimeout(resolve, ms)); + } + + protected getRestEndpointUrl(endpoint: string) { + return `${this.apiBaseUrl}/rest${endpoint}`; + } +} diff --git a/packages/@n8n/benchmark/src/n8n-api-client/n8n-api-client.types.ts b/packages/@n8n/benchmark/src/n8n-api-client/n8n-api-client.types.ts new file mode 100644 index 0000000000..ff6aa6930b --- /dev/null +++ b/packages/@n8n/benchmark/src/n8n-api-client/n8n-api-client.types.ts @@ -0,0 +1,8 @@ +/** + * n8n workflow. This is a simplified version of the actual workflow object. + */ +export type Workflow = { + id: string; + name: string; + tags?: string[]; +}; diff --git a/packages/@n8n/benchmark/src/n8n-api-client/workflows-api-client.ts b/packages/@n8n/benchmark/src/n8n-api-client/workflows-api-client.ts new file mode 100644 index 0000000000..92bcfad89f --- /dev/null +++ b/packages/@n8n/benchmark/src/n8n-api-client/workflows-api-client.ts @@ -0,0 +1,32 @@ +import type { Workflow } from '@/n8n-api-client/n8n-api-client.types'; + +import type { AuthenticatedN8nApiClient } from './authenticated-n8n-api-client'; + +export class WorkflowApiClient { + constructor(private readonly apiClient: AuthenticatedN8nApiClient) {} + + async getAllWorkflows(): Promise { + const response = await this.apiClient.get<{ count: number; data: Workflow[] }>('/workflows'); + + return response.data.data; + } + + async createWorkflow(workflow: unknown): Promise { + const response = await this.apiClient.post<{ data: Workflow }>('/workflows', workflow); + + return response.data.data; + } + + async activateWorkflow(workflow: Workflow): Promise { + const response = await this.apiClient.patch<{ data: Workflow }>(`/workflows/${workflow.id}`, { + ...workflow, + active: true, + }); + + return response.data.data; + } + + async deleteWorkflow(workflowId: Workflow['id']): Promise { + await this.apiClient.delete(`/workflows/${workflowId}`); + } +} diff --git a/packages/@n8n/benchmark/src/scenario/scenario-data-loader.ts b/packages/@n8n/benchmark/src/scenario/scenario-data-loader.ts new file mode 100644 index 0000000000..12fcc58ee3 --- /dev/null +++ b/packages/@n8n/benchmark/src/scenario/scenario-data-loader.ts @@ -0,0 +1,35 @@ +import * as fs from 'node:fs'; +import * as path from 'node:path'; + +import type { Workflow } from '@/n8n-api-client/n8n-api-client.types'; +import type { Scenario } from '@/types/scenario'; + +/** + * Loads scenario data files from FS + */ +export class ScenarioDataFileLoader { + async loadDataForScenario(scenario: Scenario): Promise<{ + workflows: Workflow[]; + }> { + const workflows = await Promise.all( + scenario.scenarioData.workflowFiles?.map((workflowFilePath) => + this.loadSingleWorkflowFromFile(path.join(scenario.scenarioDirPath, workflowFilePath)), + ) ?? [], + ); + + return { + workflows, + }; + } + + private loadSingleWorkflowFromFile(workflowFilePath: string): Workflow { + const fileContent = fs.readFileSync(workflowFilePath, 'utf8'); + + try { + return JSON.parse(fileContent) as Workflow; + } catch (error) { + const e = error as Error; + throw new Error(`Failed to parse workflow file ${workflowFilePath}: ${e.message}`); + } + } +} diff --git a/packages/@n8n/benchmark/src/scenario/scenario-loader.ts b/packages/@n8n/benchmark/src/scenario/scenario-loader.ts new file mode 100644 index 0000000000..2da9109e86 --- /dev/null +++ b/packages/@n8n/benchmark/src/scenario/scenario-loader.ts @@ -0,0 +1,90 @@ +import { createHash } from 'node:crypto'; +import * as fs from 'node:fs'; +import * as path from 'path'; + +import type { Scenario, ScenarioManifest } from '@/types/scenario'; + +export class ScenarioLoader { + /** + * Loads all scenarios from the given path + */ + loadAll(pathToScenarios: string, filter?: string): Scenario[] { + pathToScenarios = path.resolve(pathToScenarios); + const scenarioFolders = fs + .readdirSync(pathToScenarios, { withFileTypes: true }) + .filter((dirent) => dirent.isDirectory()) + .map((dirent) => dirent.name); + + const scenarios: Scenario[] = []; + + for (const folder of scenarioFolders) { + if (filter && !folder.toLowerCase().includes(filter.toLowerCase())) { + continue; + } + const scenarioPath = path.join(pathToScenarios, folder); + const manifestFileName = `${folder}.manifest.json`; + const scenarioManifestPath = path.join(pathToScenarios, folder, manifestFileName); + if (!fs.existsSync(scenarioManifestPath)) { + console.warn(`Scenario at ${scenarioPath} is missing the ${manifestFileName} file`); + continue; + } + + // Load the scenario manifest file + const [scenario, validationErrors] = + this.loadAndValidateScenarioManifest(scenarioManifestPath); + if (validationErrors) { + console.warn( + `Scenario at ${scenarioPath} has the following validation errors: ${validationErrors.join(', ')}`, + ); + continue; + } + + scenarios.push({ + ...scenario, + id: this.formScenarioId(scenarioPath), + scenarioDirPath: scenarioPath, + }); + } + + return scenarios; + } + + private loadAndValidateScenarioManifest( + scenarioManifestPath: string, + ): [ScenarioManifest, null] | [null, string[]] { + const [scenario, error] = this.loadScenarioManifest(scenarioManifestPath); + if (!scenario) { + return [null, [error]]; + } + + const validationErrors: string[] = []; + + if (!scenario.name) { + validationErrors.push(`Scenario at ${scenarioManifestPath} is missing a name`); + } + if (!scenario.description) { + validationErrors.push(`Scenario at ${scenarioManifestPath} is missing a description`); + } + + return validationErrors.length === 0 ? [scenario, null] : [null, validationErrors]; + } + + private loadScenarioManifest( + scenarioManifestPath: string, + ): [ScenarioManifest, null] | [null, string] { + try { + const scenario = JSON.parse( + fs.readFileSync(scenarioManifestPath, 'utf8'), + ) as ScenarioManifest; + + return [scenario, null]; + } catch (error) { + const message = error instanceof Error ? error.message : JSON.stringify(error); + return [null, `Failed to parse manifest ${scenarioManifestPath}: ${message}`]; + } + } + + private formScenarioId(scenarioPath: string): string { + return createHash('sha256').update(scenarioPath).digest('hex'); + } +} diff --git a/packages/@n8n/benchmark/src/test-execution/k6-executor.ts b/packages/@n8n/benchmark/src/test-execution/k6-executor.ts new file mode 100644 index 0000000000..42161c76ba --- /dev/null +++ b/packages/@n8n/benchmark/src/test-execution/k6-executor.ts @@ -0,0 +1,157 @@ +import fs from 'fs'; +import assert from 'node:assert/strict'; +import path from 'path'; +import { $, which, tmpfile } from 'zx'; + +import { buildTestReport, type K6Tag } from '@/test-execution/test-report'; +import type { Scenario } from '@/types/scenario'; +export type { K6Tag }; + +export type K6ExecutorOpts = { + k6ExecutablePath: string; + /** How many concurrent requests to make */ + vus: number; + /** Test duration, e.g. 1m or 30s */ + duration: string; + k6ApiToken?: string; + n8nApiBaseUrl: string; + tags?: K6Tag[]; + resultsWebhook?: { + url: string; + authHeader: string; + }; +}; + +export type K6RunOpts = { + /** Name of the scenario run. Used e.g. when the run is reported to k6 cloud */ + scenarioRunName: string; +}; + +/** + * Flag for the k6 CLI. + * @example ['--duration', '1m'] + * @example ['--quiet'] + */ +type K6CliFlag = [string | number] | [string, string | number]; + +/** + * Executes test scenarios using k6 + */ +export class K6Executor { + /** + * This script is dynamically injected into the k6 test script to generate + * a summary report of the test execution. + */ + private readonly handleSummaryScript = ` +import { textSummary } from 'https://jslib.k6.io/k6-summary/0.0.2/index.js'; +export function handleSummary(data) { + return { + stdout: textSummary(data), + '{{scenarioName}}.summary.json': JSON.stringify(data), + }; +} +`; + + constructor(private readonly opts: K6ExecutorOpts) {} + + async executeTestScenario(scenario: Scenario, { scenarioRunName }: K6RunOpts) { + const augmentedTestScriptPath = this.augmentSummaryScript(scenario, scenarioRunName); + const runDirPath = path.dirname(augmentedTestScriptPath); + + const flags: K6CliFlag[] = [ + ['--quiet'], + ['--duration', this.opts.duration], + ['--vus', this.opts.vus], + ]; + + if (!this.opts.resultsWebhook && this.opts.k6ApiToken) { + flags.push(['--out', 'cloud']); + } + + const flattedFlags = flags.flat(2); + + const k6ExecutablePath = await this.resolveK6ExecutablePath(); + + await $({ + cwd: runDirPath, + env: { + API_BASE_URL: this.opts.n8nApiBaseUrl, + K6_CLOUD_TOKEN: this.opts.k6ApiToken, + }, + stdio: 'inherit', + })`${k6ExecutablePath} run ${flattedFlags} ${augmentedTestScriptPath}`; + + console.log('\n'); + + if (this.opts.resultsWebhook) { + const endOfTestSummary = this.loadEndOfTestSummary(runDirPath, scenarioRunName); + + const testReport = buildTestReport(scenario, endOfTestSummary, [ + ...(this.opts.tags ?? []), + { name: 'Vus', value: this.opts.vus.toString() }, + { name: 'Duration', value: this.opts.duration.toString() }, + ]); + + await this.sendTestReport(testReport); + } + } + + async sendTestReport(testReport: unknown) { + assert(this.opts.resultsWebhook); + + const response = await fetch(this.opts.resultsWebhook.url, { + method: 'POST', + body: JSON.stringify(testReport), + headers: { + Authorization: this.opts.resultsWebhook.authHeader, + 'Content-Type': 'application/json', + }, + }); + + if (!response.ok) { + console.warn(`Failed to send test summary: ${response.status} ${await response.text()}`); + } + } + + /** + * Augments the test script with a summary script + * + * @returns Absolute path to the augmented test script + */ + private augmentSummaryScript(scenario: Scenario, scenarioRunName: string) { + const fullTestScriptPath = path.join(scenario.scenarioDirPath, scenario.scriptPath); + const testScript = fs.readFileSync(fullTestScriptPath, 'utf8'); + const summaryScript = this.handleSummaryScript.replace('{{scenarioName}}', scenarioRunName); + + const augmentedTestScript = `${testScript}\n\n${summaryScript}`; + + const tempFilePath = tmpfile(`${scenarioRunName}.js`, augmentedTestScript); + + return tempFilePath; + } + + private loadEndOfTestSummary(dir: string, scenarioRunName: string): K6EndOfTestSummary { + const summaryReportPath = path.join(dir, `${scenarioRunName}.summary.json`); + const summaryReport = fs.readFileSync(summaryReportPath, 'utf8'); + + try { + return JSON.parse(summaryReport) as K6EndOfTestSummary; + } catch (error) { + throw new Error(`Failed to parse the summary report at ${summaryReportPath}`); + } + } + + /** + * @returns Resolved path to the k6 executable + */ + private async resolveK6ExecutablePath(): Promise { + const k6ExecutablePath = await which(this.opts.k6ExecutablePath, { nothrow: true }); + if (!k6ExecutablePath) { + throw new Error( + 'Could not find k6 executable based on your `PATH`. Please ensure k6 is available in your system and add it to your `PATH` or specify the path to the k6 executable using the `K6_PATH` environment variable.', + ); + } + + return k6ExecutablePath; + } +} diff --git a/packages/@n8n/benchmark/src/test-execution/k6-summary.ts b/packages/@n8n/benchmark/src/test-execution/k6-summary.ts new file mode 100644 index 0000000000..12567a9d66 --- /dev/null +++ b/packages/@n8n/benchmark/src/test-execution/k6-summary.ts @@ -0,0 +1,255 @@ +/** +Example JSON: + +{ + "options": { + "summaryTrendStats": ["avg", "min", "med", "max", "p(90)", "p(95)"], + "summaryTimeUnit": "", + "noColor": false + }, + "state": { "isStdOutTTY": false, "isStdErrTTY": false, "testRunDurationMs": 23.374 }, + "metrics": { + "http_req_tls_handshaking": { + "type": "trend", + "contains": "time", + "values": { "avg": 0, "min": 0, "med": 0, "max": 0, "p(90)": 0, "p(95)": 0 } + }, + "checks": { + "type": "rate", + "contains": "default", + "values": { "rate": 1, "passes": 1, "fails": 0 } + }, + "http_req_sending": { + "type": "trend", + "contains": "time", + "values": { + "p(90)": 0.512, + "p(95)": 0.512, + "avg": 0.512, + "min": 0.512, + "med": 0.512, + "max": 0.512 + } + }, + "http_reqs": { + "contains": "default", + "values": { "count": 1, "rate": 42.78257893385813 }, + "type": "counter" + }, + "http_req_blocked": { + "contains": "time", + "values": { + "avg": 1.496, + "min": 1.496, + "med": 1.496, + "max": 1.496, + "p(90)": 1.496, + "p(95)": 1.496 + }, + "type": "trend" + }, + "data_received": { + "type": "counter", + "contains": "data", + "values": { "count": 269, "rate": 11508.513733207838 } + }, + "iterations": { + "type": "counter", + "contains": "default", + "values": { "count": 1, "rate": 42.78257893385813 } + }, + "http_req_waiting": { + "type": "trend", + "contains": "time", + "values": { + "p(95)": 18.443, + "avg": 18.443, + "min": 18.443, + "med": 18.443, + "max": 18.443, + "p(90)": 18.443 + } + }, + "http_req_receiving": { + "type": "trend", + "contains": "time", + "values": { + "avg": 0.186, + "min": 0.186, + "med": 0.186, + "max": 0.186, + "p(90)": 0.186, + "p(95)": 0.186 + } + }, + "http_req_duration{expected_response:true}": { + "type": "trend", + "contains": "time", + "values": { + "max": 19.141, + "p(90)": 19.141, + "p(95)": 19.141, + "avg": 19.141, + "min": 19.141, + "med": 19.141 + } + }, + "iteration_duration": { + "type": "trend", + "contains": "time", + "values": { + "avg": 22.577833, + "min": 22.577833, + "med": 22.577833, + "max": 22.577833, + "p(90)": 22.577833, + "p(95)": 22.577833 + } + }, + "http_req_connecting": { + "type": "trend", + "contains": "time", + "values": { + "avg": 0.673, + "min": 0.673, + "med": 0.673, + "max": 0.673, + "p(90)": 0.673, + "p(95)": 0.673 + } + }, + "http_req_failed": { + "type": "rate", + "contains": "default", + "values": { "rate": 0, "passes": 0, "fails": 1 } + }, + "http_req_duration": { + "type": "trend", + "contains": "time", + "values": { + "p(90)": 19.141, + "p(95)": 19.141, + "avg": 19.141, + "min": 19.141, + "med": 19.141, + "max": 19.141 + } + }, + "data_sent": { + "type": "counter", + "contains": "data", + "values": { "count": 102, "rate": 4363.82305125353 } + } + }, + "root_group": { + "name": "", + "path": "", + "id": "d41d8cd98f00b204e9800998ecf8427e", + "groups": [], + "checks": [ + { + "name": "is status 200", + "path": "::is status 200", + "id": "548d37ca5f33793206f7832e7cea54fb", + "passes": 1, + "fails": 0 + } + ] + } +} + */ + +type TrendStat = 'avg' | 'min' | 'med' | 'max' | 'p(90)' | 'p(95)'; +type MetricType = 'trend' | 'rate' | 'counter'; +type MetricContains = 'time' | 'default' | 'data'; + +interface TrendValues { + avg: number; + min: number; + med: number; + max: number; + 'p(90)': number; + 'p(95)': number; +} + +interface RateValues { + rate: number; + passes: number; + fails: number; +} + +interface CounterValues { + count: number; + rate: number; +} + +interface K6TrendMetric { + type: 'trend'; + contains: 'time'; + values: TrendValues; +} + +interface RateMetric { + type: 'rate'; + contains: 'default'; + values: RateValues; +} + +interface K6CounterMetric { + type: 'counter'; + contains: MetricContains; + values: CounterValues; +} + +interface Options { + summaryTrendStats: TrendStat[]; + summaryTimeUnit: string; + noColor: boolean; +} + +interface State { + isStdOutTTY: boolean; + isStdErrTTY: boolean; + testRunDurationMs: number; +} + +interface Metrics { + http_req_tls_handshaking: K6TrendMetric; + checks: RateMetric; + http_req_sending: K6TrendMetric; + http_reqs: K6CounterMetric; + http_req_blocked: K6TrendMetric; + data_received: K6CounterMetric; + iterations: K6CounterMetric; + http_req_waiting: K6TrendMetric; + http_req_receiving: K6TrendMetric; + 'http_req_duration{expected_response:true}': K6TrendMetric; + iteration_duration: K6TrendMetric; + http_req_connecting: K6TrendMetric; + http_req_failed: RateMetric; + http_req_duration: K6TrendMetric; + data_sent: K6CounterMetric; +} + +interface K6Check { + name: string; + path: string; + id: string; + passes: number; + fails: number; +} + +interface RootGroup { + name: string; + path: string; + id: string; + groups: unknown[]; + checks: K6Check[]; +} + +interface K6EndOfTestSummary { + options: Options; + state: State; + metrics: Metrics; + root_group: RootGroup; +} diff --git a/packages/@n8n/benchmark/src/test-execution/scenario-data-importer.ts b/packages/@n8n/benchmark/src/test-execution/scenario-data-importer.ts new file mode 100644 index 0000000000..cf6029834a --- /dev/null +++ b/packages/@n8n/benchmark/src/test-execution/scenario-data-importer.ts @@ -0,0 +1,56 @@ +import type { AuthenticatedN8nApiClient } from '@/n8n-api-client/authenticated-n8n-api-client'; +import type { Workflow } from '@/n8n-api-client/n8n-api-client.types'; +import { WorkflowApiClient } from '@/n8n-api-client/workflows-api-client'; + +/** + * Imports scenario data into an n8n instance + */ +export class ScenarioDataImporter { + private readonly workflowApiClient: WorkflowApiClient; + + constructor(n8nApiClient: AuthenticatedN8nApiClient) { + this.workflowApiClient = new WorkflowApiClient(n8nApiClient); + } + + async importTestScenarioData(workflows: Workflow[]) { + const existingWorkflows = await this.workflowApiClient.getAllWorkflows(); + + for (const workflow of workflows) { + await this.importWorkflow({ existingWorkflows, workflow }); + } + } + + /** + * Imports a single workflow into n8n removing any existing workflows with the same name + */ + private async importWorkflow(opts: { existingWorkflows: Workflow[]; workflow: Workflow }) { + const existingWorkflows = this.findExistingWorkflows(opts.existingWorkflows, opts.workflow); + if (existingWorkflows.length > 0) { + for (const toDelete of existingWorkflows) { + await this.workflowApiClient.deleteWorkflow(toDelete.id); + } + } + + const createdWorkflow = await this.workflowApiClient.createWorkflow({ + ...opts.workflow, + name: this.getBenchmarkWorkflowName(opts.workflow), + }); + + return await this.workflowApiClient.activateWorkflow(createdWorkflow); + } + + private findExistingWorkflows( + existingWorkflows: Workflow[], + workflowToImport: Workflow, + ): Workflow[] { + const benchmarkWorkflowName = this.getBenchmarkWorkflowName(workflowToImport); + + return existingWorkflows.filter( + (existingWorkflow) => existingWorkflow.name === benchmarkWorkflowName, + ); + } + + private getBenchmarkWorkflowName(workflow: Workflow) { + return `[BENCHMARK] ${workflow.name}`; + } +} diff --git a/packages/@n8n/benchmark/src/test-execution/scenario-runner.ts b/packages/@n8n/benchmark/src/test-execution/scenario-runner.ts new file mode 100644 index 0000000000..def841ccf5 --- /dev/null +++ b/packages/@n8n/benchmark/src/test-execution/scenario-runner.ts @@ -0,0 +1,70 @@ +import { sleep } from 'zx'; + +import { AuthenticatedN8nApiClient } from '@/n8n-api-client/authenticated-n8n-api-client'; +import type { N8nApiClient } from '@/n8n-api-client/n8n-api-client'; +import type { ScenarioDataFileLoader } from '@/scenario/scenario-data-loader'; +import { ScenarioDataImporter } from '@/test-execution/scenario-data-importer'; +import type { Scenario } from '@/types/scenario'; + +import type { K6Executor } from './k6-executor'; + +/** + * Runs scenarios + */ +export class ScenarioRunner { + constructor( + private readonly n8nClient: N8nApiClient, + private readonly dataLoader: ScenarioDataFileLoader, + private readonly k6Executor: K6Executor, + private readonly ownerConfig: { + email: string; + password: string; + }, + private readonly scenarioPrefix: string, + ) {} + + async runManyScenarios(scenarios: Scenario[]) { + console.log(`Waiting for n8n ${this.n8nClient.apiBaseUrl} to become online`); + await this.n8nClient.waitForInstanceToBecomeOnline(); + + console.log('Setting up owner'); + await this.n8nClient.setupOwnerIfNeeded(this.ownerConfig); + + const authenticatedN8nClient = await AuthenticatedN8nApiClient.createUsingUsernameAndPassword( + this.n8nClient, + this.ownerConfig, + ); + const testDataImporter = new ScenarioDataImporter(authenticatedN8nClient); + + for (const scenario of scenarios) { + await this.runSingleTestScenario(testDataImporter, scenario); + } + } + + private async runSingleTestScenario(testDataImporter: ScenarioDataImporter, scenario: Scenario) { + const scenarioRunName = this.formTestScenarioRunName(scenario); + console.log('Running scenario:', scenarioRunName); + + console.log('Loading and importing data'); + const testData = await this.dataLoader.loadDataForScenario(scenario); + await testDataImporter.importTestScenarioData(testData.workflows); + + // Wait for 1s before executing the scenario to ensure that the workflows are activated. + // In multi-main mode it can take some time before the workflow becomes active. + await sleep(1000); + + console.log('Executing scenario script'); + await this.k6Executor.executeTestScenario(scenario, { + scenarioRunName, + }); + } + + /** + * Forms a name for the scenario by combining prefix and scenario name. + * The benchmarks are ran against different n8n setups, so we use the + * prefix to differentiate between them. + */ + private formTestScenarioRunName(scenario: Scenario) { + return `${this.scenarioPrefix}-${scenario.name}`; + } +} diff --git a/packages/@n8n/benchmark/src/test-execution/test-report.ts b/packages/@n8n/benchmark/src/test-execution/test-report.ts new file mode 100644 index 0000000000..8e858c5e66 --- /dev/null +++ b/packages/@n8n/benchmark/src/test-execution/test-report.ts @@ -0,0 +1,103 @@ +import { nanoid } from 'nanoid'; + +import type { Scenario } from '@/types/scenario'; + +export type K6Tag = { + name: string; + value: string; +}; + +export type Check = { + name: string; + passes: number; + fails: number; +}; + +export type CounterMetric = { + type: 'counter'; + count: number; + rate: number; +}; + +export type TrendMetric = { + type: 'trend'; + 'p(95)': number; + avg: number; + min: number; + med: number; + max: number; + 'p(90)': number; +}; + +export type TestReport = { + runId: string; + ts: string; // ISO8601 + scenarioName: string; + tags: K6Tag[]; + metrics: { + iterations: CounterMetric; + dataReceived: CounterMetric; + dataSent: CounterMetric; + httpRequests: CounterMetric; + httpRequestDuration: TrendMetric; + httpRequestSending: TrendMetric; + httpRequestReceiving: TrendMetric; + httpRequestWaiting: TrendMetric; + }; + checks: Check[]; +}; + +function k6CheckToCheck(check: K6Check): Check { + return { + name: check.name, + passes: check.passes, + fails: check.fails, + }; +} + +function k6CounterToCounter(counter: K6CounterMetric): CounterMetric { + return { + type: 'counter', + count: counter.values.count, + rate: counter.values.rate, + }; +} + +function k6TrendToTrend(trend: K6TrendMetric): TrendMetric { + return { + type: 'trend', + 'p(90)': trend.values['p(90)'], + avg: trend.values.avg, + min: trend.values.min, + med: trend.values.med, + max: trend.values.max, + 'p(95)': trend.values['p(95)'], + }; +} + +/** + * Converts the k6 test summary to a test report + */ +export function buildTestReport( + scenario: Scenario, + endOfTestSummary: K6EndOfTestSummary, + tags: K6Tag[], +): TestReport { + return { + runId: nanoid(), + ts: new Date().toISOString(), + scenarioName: scenario.name, + tags, + checks: endOfTestSummary.root_group.checks.map(k6CheckToCheck), + metrics: { + dataReceived: k6CounterToCounter(endOfTestSummary.metrics.data_received), + dataSent: k6CounterToCounter(endOfTestSummary.metrics.data_sent), + httpRequests: k6CounterToCounter(endOfTestSummary.metrics.http_reqs), + httpRequestDuration: k6TrendToTrend(endOfTestSummary.metrics.http_req_duration), + httpRequestSending: k6TrendToTrend(endOfTestSummary.metrics.http_req_sending), + httpRequestReceiving: k6TrendToTrend(endOfTestSummary.metrics.http_req_receiving), + httpRequestWaiting: k6TrendToTrend(endOfTestSummary.metrics.http_req_waiting), + iterations: k6CounterToCounter(endOfTestSummary.metrics.iterations), + }, + }; +} diff --git a/packages/@n8n/benchmark/src/types/scenario.ts b/packages/@n8n/benchmark/src/types/scenario.ts new file mode 100644 index 0000000000..19c52fd45b --- /dev/null +++ b/packages/@n8n/benchmark/src/types/scenario.ts @@ -0,0 +1,27 @@ +export type ScenarioData = { + /** Relative paths to the workflow files */ + workflowFiles?: string[]; +}; + +/** + * Configuration that defines the benchmark scenario + */ +export type ScenarioManifest = { + /** The name of the scenario */ + name: string; + /** A longer description of the scenario */ + description: string; + /** Relative path to the k6 script */ + scriptPath: string; + /** Data to import before running the scenario */ + scenarioData: ScenarioData; +}; + +/** + * Scenario with additional metadata + */ +export type Scenario = ScenarioManifest & { + id: string; + /** Path to the directory containing the scenario */ + scenarioDirPath: string; +}; diff --git a/packages/@n8n/benchmark/tsconfig.build.json b/packages/@n8n/benchmark/tsconfig.build.json new file mode 100644 index 0000000000..b91db37a4a --- /dev/null +++ b/packages/@n8n/benchmark/tsconfig.build.json @@ -0,0 +1,9 @@ +{ + "extends": ["./tsconfig.json", "../../../tsconfig.build.json"], + "compilerOptions": { + "rootDir": "src", + "outDir": "dist", + "tsBuildInfoFile": "dist/build.tsbuildinfo" + }, + "include": ["src/**/*.ts"] +} diff --git a/packages/@n8n/benchmark/tsconfig.json b/packages/@n8n/benchmark/tsconfig.json new file mode 100644 index 0000000000..58a1b48f65 --- /dev/null +++ b/packages/@n8n/benchmark/tsconfig.json @@ -0,0 +1,11 @@ +{ + "extends": ["../../../tsconfig.json", "../../../tsconfig.backend.json"], + "compilerOptions": { + "rootDir": ".", + "baseUrl": "src", + "paths": { + "@/*": ["./*"] + } + }, + "include": ["src/**/*.ts"] +} diff --git a/packages/@n8n/chat/LICENSE.md b/packages/@n8n/chat/LICENSE.md deleted file mode 100644 index aab68b6d93..0000000000 --- a/packages/@n8n/chat/LICENSE.md +++ /dev/null @@ -1,86 +0,0 @@ -# License - -Portions of this software are licensed as follows: - -- Content of branches other than the main branch (i.e. "master") are not licensed. -- Source code files that contain ".ee." in their filename are NOT licensed under the Sustainable Use License. - To use source code files that contain ".ee." in their filename you must hold a valid n8n Enterprise License - specifically allowing you access to such source code files and as defined in "LICENSE_EE.md". -- All third party components incorporated into the n8n Software are licensed under the original license - provided by the owner of the applicable component. -- Content outside of the above mentioned files or restrictions is available under the "Sustainable Use - License" as defined below. - -## Sustainable Use License - -Version 1.0 - -### Acceptance - -By using the software, you agree to all of the terms and conditions below. - -### Copyright License - -The licensor grants you a non-exclusive, royalty-free, worldwide, non-sublicensable, non-transferable license -to use, copy, distribute, make available, and prepare derivative works of the software, in each case subject -to the limitations below. - -### Limitations - -You may use or modify the software only for your own internal business purposes or for non-commercial or -personal use. You may distribute the software or provide it to others only if you do so free of charge for -non-commercial purposes. You may not alter, remove, or obscure any licensing, copyright, or other notices of -the licensor in the software. Any use of the licensor’s trademarks is subject to applicable law. - -### Patents - -The licensor grants you a license, under any patent claims the licensor can license, or becomes able to -license, to make, have made, use, sell, offer for sale, import and have imported the software, in each case -subject to the limitations and conditions in this license. This license does not cover any patent claims that -you cause to be infringed by modifications or additions to the software. If you or your company make any -written claim that the software infringes or contributes to infringement of any patent, your patent license -for the software granted under these terms ends immediately. If your company makes such a claim, your patent -license ends immediately for work on behalf of your company. - -### Notices - -You must ensure that anyone who gets a copy of any part of the software from you also gets a copy of these -terms. If you modify the software, you must include in any modified copies of the software a prominent notice -stating that you have modified the software. - -### No Other Rights - -These terms do not imply any licenses other than those expressly granted in these terms. - -### Termination - -If you use the software in violation of these terms, such use is not licensed, and your license will -automatically terminate. If the licensor provides you with a notice of your violation, and you cease all -violation of this license no later than 30 days after you receive that notice, your license will be reinstated -retroactively. However, if you violate these terms after such reinstatement, any additional violation of these -terms will cause your license to terminate automatically and permanently. - -### No Liability - -As far as the law allows, the software comes as is, without any warranty or condition, and the licensor will -not be liable to you for any damages arising out of these terms or the use or nature of the software, under -any kind of legal claim. - -### Definitions - -The “licensor” is the entity offering these terms. - -The “software” is the software the licensor makes available under these terms, including any portion of it. - -“You” refers to the individual or entity agreeing to these terms. - -“Your company” is any legal entity, sole proprietorship, or other kind of organization that you work for, plus -all organizations that have control over, are under the control of, or are under common control with that -organization. Control means ownership of substantially all the assets of an entity, or the power to direct its -management and policies by vote, contract, or otherwise. Control can be direct or indirect. - -“Your license” is the license granted to you for the software under these terms. - -“Use” means anything you do with the software requiring your license. - -“Trademark” means trademarks, service marks, and similar rights. diff --git a/packages/@n8n/chat/README.md b/packages/@n8n/chat/README.md index 8055e96777..6299c80d12 100644 --- a/packages/@n8n/chat/README.md +++ b/packages/@n8n/chat/README.md @@ -31,9 +31,9 @@ Open the **Webhook** node and replace `YOUR_PRODUCTION_WEBHOOK_URL` with your pr Add the following code to your HTML page. ```html - + + + + + diff --git a/packages/@n8n/chat/src/components/ChatWindow.vue b/packages/@n8n/chat/src/components/ChatWindow.vue index 8e0d05daf8..bd5ddbbb5b 100644 --- a/packages/@n8n/chat/src/components/ChatWindow.vue +++ b/packages/@n8n/chat/src/components/ChatWindow.vue @@ -2,6 +2,7 @@ import IconChat from 'virtual:icons/mdi/chat'; import IconChevronDown from 'virtual:icons/mdi/chevron-down'; import { nextTick, ref } from 'vue'; + import Chat from '@n8n/chat/components/Chat.vue'; import { chatEventBus } from '@n8n/chat/event-buses'; diff --git a/packages/@n8n/chat/src/components/GetStartedFooter.vue b/packages/@n8n/chat/src/components/GetStartedFooter.vue index dca1d16bc6..698fa4c2c2 100644 --- a/packages/@n8n/chat/src/components/GetStartedFooter.vue +++ b/packages/@n8n/chat/src/components/GetStartedFooter.vue @@ -1,6 +1,6 @@ diff --git a/packages/@n8n/chat/src/components/Input.vue b/packages/@n8n/chat/src/components/Input.vue index d393ab90ed..3e823917e0 100644 --- a/packages/@n8n/chat/src/components/Input.vue +++ b/packages/@n8n/chat/src/components/Input.vue @@ -1,31 +1,104 @@ - - \ No newline at end of file diff --git a/packages/nodes-base/credentials/icons/Datadog.svg b/packages/nodes-base/credentials/icons/Datadog.svg new file mode 100644 index 0000000000..49e6f8473f --- /dev/null +++ b/packages/nodes-base/credentials/icons/Datadog.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/nodes-base/credentials/icons/DfirIris.svg b/packages/nodes-base/credentials/icons/DfirIris.svg new file mode 100644 index 0000000000..83c41d6544 --- /dev/null +++ b/packages/nodes-base/credentials/icons/DfirIris.svg @@ -0,0 +1,403 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/nodes-base/credentials/icons/Dynatrace.svg b/packages/nodes-base/credentials/icons/Dynatrace.svg new file mode 100644 index 0000000000..863f93c123 --- /dev/null +++ b/packages/nodes-base/credentials/icons/Dynatrace.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/packages/nodes-base/credentials/icons/Elastic.svg b/packages/nodes-base/credentials/icons/Elastic.svg new file mode 100644 index 0000000000..d240ad568c --- /dev/null +++ b/packages/nodes-base/credentials/icons/Elastic.svg @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/packages/nodes-base/credentials/icons/Filescan.svg b/packages/nodes-base/credentials/icons/Filescan.svg new file mode 100644 index 0000000000..16f2bdba0a --- /dev/null +++ b/packages/nodes-base/credentials/icons/Filescan.svg @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/nodes-base/credentials/icons/Malcore.png b/packages/nodes-base/credentials/icons/Malcore.png new file mode 100644 index 0000000000..b7f3ef35ca Binary files /dev/null and b/packages/nodes-base/credentials/icons/Malcore.png differ diff --git a/packages/nodes-base/credentials/icons/Sysdig.Black.svg b/packages/nodes-base/credentials/icons/Sysdig.Black.svg new file mode 100644 index 0000000000..4ddf73a371 --- /dev/null +++ b/packages/nodes-base/credentials/icons/Sysdig.Black.svg @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/packages/nodes-base/credentials/icons/Sysdig.White.svg b/packages/nodes-base/credentials/icons/Sysdig.White.svg new file mode 100644 index 0000000000..381e42673e --- /dev/null +++ b/packages/nodes-base/credentials/icons/Sysdig.White.svg @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/packages/nodes-base/nodes/ActionNetwork/ActionNetwork.node.json b/packages/nodes-base/nodes/ActionNetwork/ActionNetwork.node.json index 12a6e0274b..0be7d57592 100644 --- a/packages/nodes-base/nodes/ActionNetwork/ActionNetwork.node.json +++ b/packages/nodes-base/nodes/ActionNetwork/ActionNetwork.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/actionNetwork" + "url": "https://docs.n8n.io/integrations/builtin/credentials/actionNetwork/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/ActionNetwork/ActionNetwork.node.ts b/packages/nodes-base/nodes/ActionNetwork/ActionNetwork.node.ts index 5e6215e413..068cf0b902 100644 --- a/packages/nodes-base/nodes/ActionNetwork/ActionNetwork.node.ts +++ b/packages/nodes-base/nodes/ActionNetwork/ActionNetwork.node.ts @@ -5,7 +5,7 @@ import type { INodeType, INodeTypeDescription, } from 'n8n-workflow'; -import { NodeOperationError } from 'n8n-workflow'; +import { NodeConnectionType, NodeOperationError } from 'n8n-workflow'; import { actionNetworkApiRequest, @@ -56,8 +56,8 @@ export class ActionNetwork implements INodeType { defaults: { name: 'Action Network', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'actionNetworkApi', @@ -487,7 +487,7 @@ export class ActionNetwork implements INodeType { ? returnData.push(...(response as IDataObject[])) : returnData.push(response as IDataObject); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push({ error: error.message }); continue; } diff --git a/packages/nodes-base/nodes/ActionNetwork/descriptions/PersonTagDescription.ts b/packages/nodes-base/nodes/ActionNetwork/descriptions/PersonTagDescription.ts index b6161f7f3a..637cfd8109 100644 --- a/packages/nodes-base/nodes/ActionNetwork/descriptions/PersonTagDescription.ts +++ b/packages/nodes-base/nodes/ActionNetwork/descriptions/PersonTagDescription.ts @@ -35,7 +35,7 @@ export const personTagFields: INodeProperties[] = [ displayName: 'Tag Name or ID', name: 'tagId', description: - 'ID of the tag to add. Choose from the list, or specify an ID using an expression.', + 'ID of the tag to add. Choose from the list, or specify an ID using an expression.', type: 'options', typeOptions: { loadOptionsMethod: 'getTags', @@ -71,7 +71,7 @@ export const personTagFields: INodeProperties[] = [ displayName: 'Tag Name or ID', name: 'tagId', description: - 'ID of the tag whose tagging to delete. Choose from the list, or specify an ID using an expression.', + 'ID of the tag whose tagging to delete. Choose from the list, or specify an ID using an expression.', type: 'options', typeOptions: { loadOptionsMethod: 'getTags', @@ -89,7 +89,7 @@ export const personTagFields: INodeProperties[] = [ displayName: 'Tagging Name or ID', name: 'taggingId', description: - 'ID of the tagging to remove. Choose from the list, or specify an ID using an expression.', + 'ID of the tagging to remove. Choose from the list, or specify an ID using an expression.', type: 'options', typeOptions: { loadOptionsDependsOn: ['tagId'], diff --git a/packages/nodes-base/nodes/ActiveCampaign/AccountDescription.ts b/packages/nodes-base/nodes/ActiveCampaign/AccountDescription.ts index 0140122898..dc2102f970 100644 --- a/packages/nodes-base/nodes/ActiveCampaign/AccountDescription.ts +++ b/packages/nodes-base/nodes/ActiveCampaign/AccountDescription.ts @@ -111,7 +111,7 @@ export const accountFields: INodeProperties[] = [ }, default: '', description: - 'ID of the field to set. Choose from the list, or specify an ID using an expression.', + 'ID of the field to set. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Field Value', @@ -196,7 +196,7 @@ export const accountFields: INodeProperties[] = [ }, default: '', description: - 'ID of the field to set. Choose from the list, or specify an ID using an expression.', + 'ID of the field to set. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Field Value', diff --git a/packages/nodes-base/nodes/ActiveCampaign/ActiveCampaign.node.json b/packages/nodes-base/nodes/ActiveCampaign/ActiveCampaign.node.json index 9c23a4d48f..dd7c5c9616 100644 --- a/packages/nodes-base/nodes/ActiveCampaign/ActiveCampaign.node.json +++ b/packages/nodes-base/nodes/ActiveCampaign/ActiveCampaign.node.json @@ -7,7 +7,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/activeCampaign" + "url": "https://docs.n8n.io/integrations/builtin/credentials/activeCampaign/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/ActiveCampaign/ActiveCampaign.node.ts b/packages/nodes-base/nodes/ActiveCampaign/ActiveCampaign.node.ts index 3afb193f15..ca7ea31c3d 100644 --- a/packages/nodes-base/nodes/ActiveCampaign/ActiveCampaign.node.ts +++ b/packages/nodes-base/nodes/ActiveCampaign/ActiveCampaign.node.ts @@ -8,7 +8,7 @@ import type { INodeTypeDescription, IHttpRequestMethods, } from 'n8n-workflow'; -import { NodeOperationError } from 'n8n-workflow'; +import { NodeConnectionType, NodeOperationError } from 'n8n-workflow'; import type { IProduct } from './GenericFunctions'; import { activeCampaignApiRequest, activeCampaignApiRequestAllItems } from './GenericFunctions'; @@ -89,8 +89,8 @@ export class ActiveCampaign implements INodeType { defaults: { name: 'ActiveCampaign', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'activeCampaignApi', @@ -1189,7 +1189,7 @@ export class ActiveCampaign implements INodeType { returnData.push(...executionData); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { const executionErrorData = this.helpers.constructExecutionMetaData( this.helpers.returnJsonArray({ error: error.message }), { itemData: { item: i } }, diff --git a/packages/nodes-base/nodes/ActiveCampaign/ActiveCampaignTrigger.node.json b/packages/nodes-base/nodes/ActiveCampaign/ActiveCampaignTrigger.node.json index 45431054e6..7bd800e36f 100644 --- a/packages/nodes-base/nodes/ActiveCampaign/ActiveCampaignTrigger.node.json +++ b/packages/nodes-base/nodes/ActiveCampaign/ActiveCampaignTrigger.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/activeCampaign" + "url": "https://docs.n8n.io/integrations/builtin/credentials/activeCampaign/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/ActiveCampaign/ActiveCampaignTrigger.node.ts b/packages/nodes-base/nodes/ActiveCampaign/ActiveCampaignTrigger.node.ts index f7a76326ed..8415c928e6 100644 --- a/packages/nodes-base/nodes/ActiveCampaign/ActiveCampaignTrigger.node.ts +++ b/packages/nodes-base/nodes/ActiveCampaign/ActiveCampaignTrigger.node.ts @@ -8,6 +8,7 @@ import type { INodeTypeDescription, IWebhookResponseData, } from 'n8n-workflow'; +import { NodeConnectionType } from 'n8n-workflow'; import { activeCampaignApiRequest, activeCampaignApiRequestAllItems } from './GenericFunctions'; @@ -23,7 +24,7 @@ export class ActiveCampaignTrigger implements INodeType { name: 'ActiveCampaign Trigger', }, inputs: [], - outputs: ['main'], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'activeCampaignApi', @@ -44,7 +45,7 @@ export class ActiveCampaignTrigger implements INodeType { name: 'events', type: 'multiOptions', description: - 'Choose from the list, or specify IDs using an expression', + 'Choose from the list, or specify IDs using an expression', typeOptions: { loadOptionsMethod: 'getEvents', }, diff --git a/packages/nodes-base/nodes/ActiveCampaign/ContactDescription.ts b/packages/nodes-base/nodes/ActiveCampaign/ContactDescription.ts index 408ae80d69..9298b6721f 100644 --- a/packages/nodes-base/nodes/ActiveCampaign/ContactDescription.ts +++ b/packages/nodes-base/nodes/ActiveCampaign/ContactDescription.ts @@ -119,7 +119,7 @@ export const contactFields: INodeProperties[] = [ }, default: '', description: - 'ID of the field to set. Choose from the list, or specify an ID using an expression.', + 'ID of the field to set. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Field Value', @@ -211,7 +211,7 @@ export const contactFields: INodeProperties[] = [ }, default: '', description: - 'ID of the field to set. Choose from the list, or specify an ID using an expression.', + 'ID of the field to set. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Field Value', diff --git a/packages/nodes-base/nodes/ActiveCampaign/ContactTagDescription.ts b/packages/nodes-base/nodes/ActiveCampaign/ContactTagDescription.ts index ffe4c97a69..735ab36735 100644 --- a/packages/nodes-base/nodes/ActiveCampaign/ContactTagDescription.ts +++ b/packages/nodes-base/nodes/ActiveCampaign/ContactTagDescription.ts @@ -38,7 +38,7 @@ export const contactTagFields: INodeProperties[] = [ name: 'tagId', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getTags', }, diff --git a/packages/nodes-base/nodes/AcuityScheduling/AcuitySchedulingTrigger.node.json b/packages/nodes-base/nodes/AcuityScheduling/AcuitySchedulingTrigger.node.json index 72d9c7331e..ef70230be8 100644 --- a/packages/nodes-base/nodes/AcuityScheduling/AcuitySchedulingTrigger.node.json +++ b/packages/nodes-base/nodes/AcuityScheduling/AcuitySchedulingTrigger.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/acuityScheduling" + "url": "https://docs.n8n.io/integrations/builtin/credentials/acuityScheduling/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/AcuityScheduling/AcuitySchedulingTrigger.node.ts b/packages/nodes-base/nodes/AcuityScheduling/AcuitySchedulingTrigger.node.ts index c7269a5acc..40283c2770 100644 --- a/packages/nodes-base/nodes/AcuityScheduling/AcuitySchedulingTrigger.node.ts +++ b/packages/nodes-base/nodes/AcuityScheduling/AcuitySchedulingTrigger.node.ts @@ -6,6 +6,7 @@ import type { INodeTypeDescription, IWebhookResponseData, } from 'n8n-workflow'; +import { NodeConnectionType } from 'n8n-workflow'; import { acuitySchedulingApiRequest } from './GenericFunctions'; @@ -22,7 +23,7 @@ export class AcuitySchedulingTrigger implements INodeType { name: 'Acuity Scheduling Trigger', }, inputs: [], - outputs: ['main'], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'acuitySchedulingApi', diff --git a/packages/nodes-base/nodes/Adalo/Adalo.node.json b/packages/nodes-base/nodes/Adalo/Adalo.node.json index 3df6644271..9ca86e022b 100644 --- a/packages/nodes-base/nodes/Adalo/Adalo.node.json +++ b/packages/nodes-base/nodes/Adalo/Adalo.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/adalo" + "url": "https://docs.n8n.io/integrations/builtin/credentials/adalo/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Adalo/Adalo.node.ts b/packages/nodes-base/nodes/Adalo/Adalo.node.ts index e012b1e31f..1865f16be5 100644 --- a/packages/nodes-base/nodes/Adalo/Adalo.node.ts +++ b/packages/nodes-base/nodes/Adalo/Adalo.node.ts @@ -1,9 +1,10 @@ -import type { - IDataObject, - IExecuteSingleFunctions, - IHttpRequestOptions, - INodeType, - INodeTypeDescription, +import { + NodeConnectionType, + type IDataObject, + type IExecuteSingleFunctions, + type IHttpRequestOptions, + type INodeType, + type INodeTypeDescription, } from 'n8n-workflow'; import { collectionFields } from './CollectionDescription'; import type { FieldsUiValues } from './types'; @@ -20,8 +21,8 @@ export class Adalo implements INodeType { defaults: { name: 'Adalo', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'adaloApi', diff --git a/packages/nodes-base/nodes/Affinity/Affinity.node.json b/packages/nodes-base/nodes/Affinity/Affinity.node.json index 836f9234c2..ab4bcd6f9c 100644 --- a/packages/nodes-base/nodes/Affinity/Affinity.node.json +++ b/packages/nodes-base/nodes/Affinity/Affinity.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/affinity" + "url": "https://docs.n8n.io/integrations/builtin/credentials/affinity/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Affinity/Affinity.node.ts b/packages/nodes-base/nodes/Affinity/Affinity.node.ts index 1a165d47f7..d70d908704 100644 --- a/packages/nodes-base/nodes/Affinity/Affinity.node.ts +++ b/packages/nodes-base/nodes/Affinity/Affinity.node.ts @@ -7,6 +7,7 @@ import type { INodeType, INodeTypeDescription, } from 'n8n-workflow'; +import { NodeConnectionType } from 'n8n-workflow'; import { affinityApiRequest, affinityApiRequestAllItems } from './GenericFunctions'; @@ -34,8 +35,8 @@ export class Affinity implements INodeType { defaults: { name: 'Affinity', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'affinityApi', @@ -419,7 +420,7 @@ export class Affinity implements INodeType { returnData.push(...executionData); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { const executionErrorData = this.helpers.constructExecutionMetaData( this.helpers.returnJsonArray({ error: error.message }), { itemData: { item: i } }, diff --git a/packages/nodes-base/nodes/Affinity/AffinityTrigger.node.json b/packages/nodes-base/nodes/Affinity/AffinityTrigger.node.json index 32c2bbf6e7..a524a0877e 100644 --- a/packages/nodes-base/nodes/Affinity/AffinityTrigger.node.json +++ b/packages/nodes-base/nodes/Affinity/AffinityTrigger.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/affinity" + "url": "https://docs.n8n.io/integrations/builtin/credentials/affinity/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Affinity/AffinityTrigger.node.ts b/packages/nodes-base/nodes/Affinity/AffinityTrigger.node.ts index dc84c9ce79..a3f9f28bfd 100644 --- a/packages/nodes-base/nodes/Affinity/AffinityTrigger.node.ts +++ b/packages/nodes-base/nodes/Affinity/AffinityTrigger.node.ts @@ -6,7 +6,7 @@ import type { INodeTypeDescription, IWebhookResponseData, } from 'n8n-workflow'; -import { NodeOperationError } from 'n8n-workflow'; +import { NodeConnectionType, NodeOperationError } from 'n8n-workflow'; import { affinityApiRequest, eventsExist, mapResource } from './GenericFunctions'; @@ -22,7 +22,7 @@ export class AffinityTrigger implements INodeType { name: 'Affinity Trigger', }, inputs: [], - outputs: ['main'], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'affinityApi', diff --git a/packages/nodes-base/nodes/Affinity/ListEntryDescription.ts b/packages/nodes-base/nodes/Affinity/ListEntryDescription.ts index cd6933ea1a..930cd41fbc 100644 --- a/packages/nodes-base/nodes/Affinity/ListEntryDescription.ts +++ b/packages/nodes-base/nodes/Affinity/ListEntryDescription.ts @@ -61,7 +61,7 @@ export const listEntryFields: INodeProperties[] = [ }, }, description: - 'The unique ID of the list whose list entries are to be retrieved. Choose from the list, or specify an ID using an expression.', + 'The unique ID of the list whose list entries are to be retrieved. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Entity ID', @@ -120,7 +120,7 @@ export const listEntryFields: INodeProperties[] = [ }, }, description: - 'The unique ID of the list that contains the specified list_entry_id. Choose from the list, or specify an ID using an expression.', + 'The unique ID of the list that contains the specified list_entry_id. Choose from the list, or specify an ID using an expression.', }, { displayName: 'List Entry ID', @@ -154,7 +154,7 @@ export const listEntryFields: INodeProperties[] = [ }, default: '', description: - 'The unique ID of the list whose list entries are to be retrieved. Choose from the list, or specify an ID using an expression.', + 'The unique ID of the list whose list entries are to be retrieved. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Return All', @@ -206,7 +206,7 @@ export const listEntryFields: INodeProperties[] = [ }, }, description: - 'The unique ID of the list that contains the specified list_entry_id. Choose from the list, or specify an ID using an expression.', + 'The unique ID of the list that contains the specified list_entry_id. Choose from the list, or specify an ID using an expression.', }, { displayName: 'List Entry ID', diff --git a/packages/nodes-base/nodes/Affinity/OrganizationDescription.ts b/packages/nodes-base/nodes/Affinity/OrganizationDescription.ts index 25963a8858..ffb917f3ec 100644 --- a/packages/nodes-base/nodes/Affinity/OrganizationDescription.ts +++ b/packages/nodes-base/nodes/Affinity/OrganizationDescription.ts @@ -101,7 +101,7 @@ export const organizationFields: INodeProperties[] = [ }, default: [], description: - 'Persons that the new organization will be associated with. Choose from the list, or specify IDs using an expression.', + 'Persons that the new organization will be associated with. Choose from the list, or specify IDs using an expression.', }, ], }, @@ -158,7 +158,7 @@ export const organizationFields: INodeProperties[] = [ }, default: [], description: - 'Persons that the new organization will be associated with. Choose from the list, or specify IDs using an expression.', + 'Persons that the new organization will be associated with. Choose from the list, or specify IDs using an expression.', }, ], }, @@ -183,7 +183,7 @@ export const organizationFields: INodeProperties[] = [ displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, displayOptions: { show: { @@ -239,7 +239,7 @@ export const organizationFields: INodeProperties[] = [ displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, displayOptions: { show: { diff --git a/packages/nodes-base/nodes/Affinity/PersonDescription.ts b/packages/nodes-base/nodes/Affinity/PersonDescription.ts index 95ef90b4af..4c92e9b774 100644 --- a/packages/nodes-base/nodes/Affinity/PersonDescription.ts +++ b/packages/nodes-base/nodes/Affinity/PersonDescription.ts @@ -101,7 +101,7 @@ export const personFields: INodeProperties[] = [ }, default: [], description: - 'Organizations that the person is associated with. Choose from the list, or specify IDs using an expression.', + 'Organizations that the person is associated with. Choose from the list, or specify IDs using an expression.', }, ], }, @@ -176,7 +176,7 @@ export const personFields: INodeProperties[] = [ }, default: [], description: - 'Organizations that the person is associated with. Choose from the list, or specify IDs using an expression.', + 'Organizations that the person is associated with. Choose from the list, or specify IDs using an expression.', }, ], }, @@ -219,7 +219,7 @@ export const personFields: INodeProperties[] = [ displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, displayOptions: { show: { @@ -275,7 +275,7 @@ export const personFields: INodeProperties[] = [ displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, displayOptions: { show: { diff --git a/packages/nodes-base/nodes/AgileCrm/AgileCrm.node.json b/packages/nodes-base/nodes/AgileCrm/AgileCrm.node.json index 3bfaf0f16f..fdce9545ce 100644 --- a/packages/nodes-base/nodes/AgileCrm/AgileCrm.node.json +++ b/packages/nodes-base/nodes/AgileCrm/AgileCrm.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/agileCrm" + "url": "https://docs.n8n.io/integrations/builtin/credentials/agileCrm/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/AgileCrm/AgileCrm.node.ts b/packages/nodes-base/nodes/AgileCrm/AgileCrm.node.ts index 27fc4689f1..3e620b0b40 100644 --- a/packages/nodes-base/nodes/AgileCrm/AgileCrm.node.ts +++ b/packages/nodes-base/nodes/AgileCrm/AgileCrm.node.ts @@ -5,7 +5,7 @@ import type { INodeType, INodeTypeDescription, } from 'n8n-workflow'; -import { jsonParse, NodeOperationError } from 'n8n-workflow'; +import { NodeConnectionType, jsonParse, NodeOperationError } from 'n8n-workflow'; import { contactFields, contactOperations } from './ContactDescription'; @@ -41,8 +41,8 @@ export class AgileCrm implements INodeType { defaults: { name: 'Agile CRM', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'agileCrmApi', diff --git a/packages/nodes-base/nodes/AgileCrm/CompanyDescription.ts b/packages/nodes-base/nodes/AgileCrm/CompanyDescription.ts index 97ac7aa72a..ad80279c13 100644 --- a/packages/nodes-base/nodes/AgileCrm/CompanyDescription.ts +++ b/packages/nodes-base/nodes/AgileCrm/CompanyDescription.ts @@ -279,7 +279,7 @@ export const companyFields: INodeProperties[] = [ displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, displayOptions: { show: { diff --git a/packages/nodes-base/nodes/AgileCrm/ContactDescription.ts b/packages/nodes-base/nodes/AgileCrm/ContactDescription.ts index 4b92f7cc4c..e5e4156a21 100644 --- a/packages/nodes-base/nodes/AgileCrm/ContactDescription.ts +++ b/packages/nodes-base/nodes/AgileCrm/ContactDescription.ts @@ -279,7 +279,7 @@ export const contactFields: INodeProperties[] = [ displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, displayOptions: { show: { diff --git a/packages/nodes-base/nodes/AiTransform/AiTransform.node.json b/packages/nodes-base/nodes/AiTransform/AiTransform.node.json new file mode 100644 index 0000000000..0d13c13877 --- /dev/null +++ b/packages/nodes-base/nodes/AiTransform/AiTransform.node.json @@ -0,0 +1,18 @@ +{ + "node": "n8n-nodes-base.aiTransform", + "nodeVersion": "1.0", + "codexVersion": "1.0", + "details": "Modify data by writing a prompt", + "categories": ["Development", "Core Nodes"], + "resources": { + "primaryDocumentation": [ + { + "url": "https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.aitransform/" + } + ] + }, + "alias": ["code", "Javascript", "JS", "Script", "Custom Code", "Function", "AI", "LLM"], + "subcategories": { + "Core Nodes": ["Data Transformation"] + } +} diff --git a/packages/nodes-base/nodes/AiTransform/AiTransform.node.ts b/packages/nodes-base/nodes/AiTransform/AiTransform.node.ts new file mode 100644 index 0000000000..3741fc980e --- /dev/null +++ b/packages/nodes-base/nodes/AiTransform/AiTransform.node.ts @@ -0,0 +1,148 @@ +import { + NodeOperationError, + NodeConnectionType, + type IExecuteFunctions, + type INodeExecutionData, + type INodeType, + type INodeTypeDescription, +} from 'n8n-workflow'; + +import set from 'lodash/set'; + +import { JavaScriptSandbox } from '../Code/JavaScriptSandbox'; +import { getSandboxContext } from '../Code/Sandbox'; +import { standardizeOutput } from '../Code/utils'; + +const { CODE_ENABLE_STDOUT } = process.env; + +export class AiTransform implements INodeType { + description: INodeTypeDescription = { + displayName: 'AI Transform', + name: 'aiTransform', + icon: 'file:aitransform.svg', + group: ['transform'], + version: 1, + description: 'Modify data based on instructions written in plain english', + defaults: { + name: 'AI Transform', + }, + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], + parameterPane: 'wide', + properties: [ + { + displayName: 'Instructions', + name: 'instructions', + type: 'button', + default: '', + description: + "Provide instructions on how you want to transform the data, then click 'Generate code'. Use dot notation to refer to nested fields (e.g. address.street).", + placeholder: + "Example: Merge 'firstname' and 'lastname' into a field 'details.name' and sort by 'email'", + typeOptions: { + buttonConfig: { + label: 'Generate code', + hasInputField: true, + inputFieldMaxLength: 500, + action: { + type: 'askAiCodeGeneration', + target: 'jsCode', + }, + }, + }, + }, + { + displayName: 'Transformation Code', + name: 'jsCode', + type: 'string', + typeOptions: { + editor: 'jsEditor', + editorIsReadOnly: true, + }, + default: '', + description: + 'Read-only. To edit this code, adjust the prompt or copy and paste it into a Code node.', + noDataExpression: true, + }, + { + displayName: + "Click on 'Test step' to run the transformation code. Further executions will use the generated code (and not invoke AI again).", + name: 'hint', + type: 'notice', + default: '', + displayOptions: { + show: { + jsCode: [{ _cnd: { exists: true } }], + }, + }, + }, + ], + }; + + async execute(this: IExecuteFunctions) { + const workflowMode = this.getMode(); + + const node = this.getNode(); + + const codeParameterName = 'jsCode'; + + const getSandbox = (index = 0) => { + let code = ''; + try { + code = this.getNodeParameter(codeParameterName, index) as string; + + if (!code) { + const instructions = this.getNodeParameter('instructions', index) as string; + if (!instructions) { + throw new NodeOperationError(node, 'Missing instructions to generate code', { + description: + "Enter your prompt in the 'Instructions' parameter and click 'Generate code'", + }); + } + throw new NodeOperationError(node, 'Missing code for data transformation', { + description: "Click the 'Generate code' button to create the code", + }); + } + } catch (error) { + if (error instanceof NodeOperationError) throw error; + + throw new NodeOperationError(node, error); + } + + const context = getSandboxContext.call(this, index); + + context.items = context.$input.all(); + + const Sandbox = JavaScriptSandbox; + const sandbox = new Sandbox(context, code, this.helpers); + sandbox.on( + 'output', + workflowMode === 'manual' + ? this.sendMessageToUI + : CODE_ENABLE_STDOUT === 'true' + ? (...args) => + console.log(`[Workflow "${this.getWorkflow().id}"][Node "${node.name}"]`, ...args) + : () => {}, + ); + return sandbox; + }; + + const sandbox = getSandbox(); + let items: INodeExecutionData[]; + try { + items = (await sandbox.runCodeAllItems()) as INodeExecutionData[]; + } catch (error) { + if (!this.continueOnFail()) { + set(error, 'node', node); + throw error; + } + items = [{ json: { error: error.message } }]; + } + + for (const item of items) { + standardizeOutput(item.json); + } + + return [items]; + } +} diff --git a/packages/nodes-base/nodes/AiTransform/aitransform.svg b/packages/nodes-base/nodes/AiTransform/aitransform.svg new file mode 100644 index 0000000000..699be8f28e --- /dev/null +++ b/packages/nodes-base/nodes/AiTransform/aitransform.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/packages/nodes-base/nodes/Airtable/Airtable.node.json b/packages/nodes-base/nodes/Airtable/Airtable.node.json index 48f7fdf130..831283eeb7 100644 --- a/packages/nodes-base/nodes/Airtable/Airtable.node.json +++ b/packages/nodes-base/nodes/Airtable/Airtable.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/airtable" + "url": "https://docs.n8n.io/integrations/builtin/credentials/airtable/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Airtable/AirtableTrigger.node.json b/packages/nodes-base/nodes/Airtable/AirtableTrigger.node.json index 4ee423ba24..da2921895a 100644 --- a/packages/nodes-base/nodes/Airtable/AirtableTrigger.node.json +++ b/packages/nodes-base/nodes/Airtable/AirtableTrigger.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/airtable" + "url": "https://docs.n8n.io/integrations/builtin/credentials/airtable/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Airtable/AirtableTrigger.node.ts b/packages/nodes-base/nodes/Airtable/AirtableTrigger.node.ts index 6031ae754e..d5235546d7 100644 --- a/packages/nodes-base/nodes/Airtable/AirtableTrigger.node.ts +++ b/packages/nodes-base/nodes/Airtable/AirtableTrigger.node.ts @@ -5,7 +5,7 @@ import type { INodeType, INodeTypeDescription, } from 'n8n-workflow'; -import { NodeOperationError } from 'n8n-workflow'; +import { NodeConnectionType, NodeOperationError } from 'n8n-workflow'; import moment from 'moment-timezone'; import type { IRecord } from './v1/GenericFunctions'; @@ -54,7 +54,7 @@ export class AirtableTrigger implements INodeType { ], polling: true, inputs: [], - outputs: ['main'], + outputs: [NodeConnectionType.Main], properties: [ { displayName: 'Authentication', diff --git a/packages/nodes-base/nodes/Airtable/v1/AirtableV1.node.ts b/packages/nodes-base/nodes/Airtable/v1/AirtableV1.node.ts index 3ce3a8ce72..526894110a 100644 --- a/packages/nodes-base/nodes/Airtable/v1/AirtableV1.node.ts +++ b/packages/nodes-base/nodes/Airtable/v1/AirtableV1.node.ts @@ -1,4 +1,3 @@ -/* eslint-disable n8n-nodes-base/node-filename-against-convention */ import type { IExecuteFunctions, IDataObject, @@ -8,7 +7,7 @@ import type { INodeTypeBaseDescription, IHttpRequestMethods, } from 'n8n-workflow'; -import { NodeOperationError } from 'n8n-workflow'; +import { NodeConnectionType, NodeOperationError } from 'n8n-workflow'; import { oldVersionNotice } from '../../../utils/descriptions'; import { generatePairedItemData } from '../../../utils/utilities'; @@ -25,8 +24,8 @@ const versionDescription: INodeTypeDescription = { defaults: { name: 'Airtable', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'airtableApi', @@ -347,7 +346,7 @@ const versionDescription: INodeTypeDescription = { }, default: {}, description: 'Additional options which decide which records should be returned', - placeholder: 'Add Option', + placeholder: 'Add option', options: [ { displayName: 'Fields', @@ -502,7 +501,7 @@ const versionDescription: INodeTypeDescription = { displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', displayOptions: { show: { operation: ['append', 'delete', 'update'], @@ -653,7 +652,7 @@ export class AirtableV1 implements INodeType { rows.length = 0; } } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push({ json: { error: error.message } }); continue; } @@ -696,7 +695,7 @@ export class AirtableV1 implements INodeType { rows.length = 0; } } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push({ json: { error: error.message } }); continue; } @@ -757,7 +756,7 @@ export class AirtableV1 implements INodeType { }), ]; } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push({ json: { error: error.message } }); } else { throw error; @@ -792,7 +791,7 @@ export class AirtableV1 implements INodeType { returnData.push(...executionData); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push({ json: { error: error.message } }); continue; } @@ -880,7 +879,7 @@ export class AirtableV1 implements INodeType { rows.length = 0; } } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push({ json: { error: error.message } }); continue; } diff --git a/packages/nodes-base/nodes/Airtable/v2/AirtableV2.node.ts b/packages/nodes-base/nodes/Airtable/v2/AirtableV2.node.ts index 1fe3e9d0c5..4395f690eb 100644 --- a/packages/nodes-base/nodes/Airtable/v2/AirtableV2.node.ts +++ b/packages/nodes-base/nodes/Airtable/v2/AirtableV2.node.ts @@ -16,6 +16,7 @@ export class AirtableV2 implements INodeType { this.description = { ...baseDescription, ...versionDescription, + usableAsTool: true, }; } diff --git a/packages/nodes-base/nodes/Airtable/v2/actions/base/getMany.operation.ts b/packages/nodes-base/nodes/Airtable/v2/actions/base/getMany.operation.ts index a0ab51ac58..da5f2f528e 100644 --- a/packages/nodes-base/nodes/Airtable/v2/actions/base/getMany.operation.ts +++ b/packages/nodes-base/nodes/Airtable/v2/actions/base/getMany.operation.ts @@ -39,7 +39,7 @@ const properties: INodeProperties[] = [ displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, options: [ { diff --git a/packages/nodes-base/nodes/Airtable/v2/actions/base/getSchema.operation.ts b/packages/nodes-base/nodes/Airtable/v2/actions/base/getSchema.operation.ts index fae52ba66e..aa791f7b64 100644 --- a/packages/nodes-base/nodes/Airtable/v2/actions/base/getSchema.operation.ts +++ b/packages/nodes-base/nodes/Airtable/v2/actions/base/getSchema.operation.ts @@ -48,7 +48,7 @@ export async function execute( returnData.push(...executionData); } catch (error) { error = processAirtableError(error as NodeApiError, undefined, i); - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push({ json: { error: error.message } }); continue; } diff --git a/packages/nodes-base/nodes/Airtable/v2/actions/common.descriptions.ts b/packages/nodes-base/nodes/Airtable/v2/actions/common.descriptions.ts index 22654c8635..43a07d6961 100644 --- a/packages/nodes-base/nodes/Airtable/v2/actions/common.descriptions.ts +++ b/packages/nodes-base/nodes/Airtable/v2/actions/common.descriptions.ts @@ -165,7 +165,7 @@ export const insertUpdateOptions: INodeProperties[] = [ displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, options: [ { diff --git a/packages/nodes-base/nodes/Airtable/v2/actions/record/Record.resource.ts b/packages/nodes-base/nodes/Airtable/v2/actions/record/Record.resource.ts index 7c526bfa82..f9b5287f4b 100644 --- a/packages/nodes-base/nodes/Airtable/v2/actions/record/Record.resource.ts +++ b/packages/nodes-base/nodes/Airtable/v2/actions/record/Record.resource.ts @@ -54,7 +54,7 @@ export const description: INodeProperties[] = [ action: 'Update record', }, ], - default: 'read', + default: 'get', displayOptions: { show: { resource: ['record'], diff --git a/packages/nodes-base/nodes/Airtable/v2/actions/record/create.operation.ts b/packages/nodes-base/nodes/Airtable/v2/actions/record/create.operation.ts index 3686e33bff..758c3b7a2f 100644 --- a/packages/nodes-base/nodes/Airtable/v2/actions/record/create.operation.ts +++ b/packages/nodes-base/nodes/Airtable/v2/actions/record/create.operation.ts @@ -87,7 +87,7 @@ export async function execute( returnData.push(...executionData); } catch (error) { error = processAirtableError(error as NodeApiError, undefined, i); - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push({ json: { message: error.message, error } }); continue; } diff --git a/packages/nodes-base/nodes/Airtable/v2/actions/record/deleteRecord.operation.ts b/packages/nodes-base/nodes/Airtable/v2/actions/record/deleteRecord.operation.ts index 100590fc5a..cbbf12ba3c 100644 --- a/packages/nodes-base/nodes/Airtable/v2/actions/record/deleteRecord.operation.ts +++ b/packages/nodes-base/nodes/Airtable/v2/actions/record/deleteRecord.operation.ts @@ -55,7 +55,7 @@ export async function execute( returnData.push(...executionData); } catch (error) { error = processAirtableError(error as NodeApiError, id, i); - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push({ json: { error: error.message } }); continue; } diff --git a/packages/nodes-base/nodes/Airtable/v2/actions/record/get.operation.ts b/packages/nodes-base/nodes/Airtable/v2/actions/record/get.operation.ts index 081accfabe..73a9933076 100644 --- a/packages/nodes-base/nodes/Airtable/v2/actions/record/get.operation.ts +++ b/packages/nodes-base/nodes/Airtable/v2/actions/record/get.operation.ts @@ -28,7 +28,7 @@ const properties: INodeProperties[] = [ type: 'collection', default: {}, description: 'Additional options which decide which records should be returned', - placeholder: 'Add Option', + placeholder: 'Add option', options: [ { // eslint-disable-next-line n8n-nodes-base/node-param-display-name-wrong-for-dynamic-multi-options @@ -91,7 +91,7 @@ export async function execute( returnData.push(...executionData); } catch (error) { error = processAirtableError(error as NodeApiError, id, i); - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push({ json: { error: error.message } }); continue; } diff --git a/packages/nodes-base/nodes/Airtable/v2/actions/record/search.operation.ts b/packages/nodes-base/nodes/Airtable/v2/actions/record/search.operation.ts index f23a6a3453..29f753794f 100644 --- a/packages/nodes-base/nodes/Airtable/v2/actions/record/search.operation.ts +++ b/packages/nodes-base/nodes/Airtable/v2/actions/record/search.operation.ts @@ -50,7 +50,7 @@ const properties: INodeProperties[] = [ type: 'collection', default: {}, description: 'Additional options which decide which records should be returned', - placeholder: 'Add Option', + placeholder: 'Add option', options: [ { // eslint-disable-next-line n8n-nodes-base/node-param-display-name-wrong-for-dynamic-multi-options @@ -107,7 +107,7 @@ const properties: INodeProperties[] = [ }, default: '', description: - 'Name of the field to sort on. Choose from the list, or specify an ID using an expression.', + 'Name of the field to sort on. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Direction', @@ -227,7 +227,7 @@ export async function execute( returnData.push(...executionData); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push({ json: { message: error.message, error }, pairedItem: { item: i } }); continue; } else { diff --git a/packages/nodes-base/nodes/Airtable/v2/actions/record/update.operation.ts b/packages/nodes-base/nodes/Airtable/v2/actions/record/update.operation.ts index cc9d785cfc..d2c4172dd5 100644 --- a/packages/nodes-base/nodes/Airtable/v2/actions/record/update.operation.ts +++ b/packages/nodes-base/nodes/Airtable/v2/actions/record/update.operation.ts @@ -138,7 +138,7 @@ export async function execute( returnData.push(...executionData); } catch (error) { error = processAirtableError(error as NodeApiError, recordId, i); - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push({ json: { message: error.message, error } }); continue; } diff --git a/packages/nodes-base/nodes/Airtable/v2/actions/record/upsert.operation.ts b/packages/nodes-base/nodes/Airtable/v2/actions/record/upsert.operation.ts index 27f9314cbc..e6266480ce 100644 --- a/packages/nodes-base/nodes/Airtable/v2/actions/record/upsert.operation.ts +++ b/packages/nodes-base/nodes/Airtable/v2/actions/record/upsert.operation.ts @@ -148,7 +148,7 @@ export async function execute( returnData.push(...executionData); } catch (error) { error = processAirtableError(error as NodeApiError, undefined, i); - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push({ json: { message: error.message, error } }); continue; } diff --git a/packages/nodes-base/nodes/Airtable/v2/actions/versionDescription.ts b/packages/nodes-base/nodes/Airtable/v2/actions/versionDescription.ts index 176d4b3ae9..f2ecef8726 100644 --- a/packages/nodes-base/nodes/Airtable/v2/actions/versionDescription.ts +++ b/packages/nodes-base/nodes/Airtable/v2/actions/versionDescription.ts @@ -1,5 +1,5 @@ /* eslint-disable n8n-nodes-base/node-filename-against-convention */ -import type { INodeTypeDescription } from 'n8n-workflow'; +import { NodeConnectionType, type INodeTypeDescription } from 'n8n-workflow'; import * as record from './record/Record.resource'; import * as base from './base/Base.resource'; @@ -15,8 +15,8 @@ export const versionDescription: INodeTypeDescription = { defaults: { name: 'Airtable', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'airtableTokenApi', diff --git a/packages/nodes-base/nodes/Amqp/Amqp.node.json b/packages/nodes-base/nodes/Amqp/Amqp.node.json index 8d05bdeceb..f27257b1e6 100644 --- a/packages/nodes-base/nodes/Amqp/Amqp.node.json +++ b/packages/nodes-base/nodes/Amqp/Amqp.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/amqp" + "url": "https://docs.n8n.io/integrations/builtin/credentials/amqp/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Amqp/Amqp.node.ts b/packages/nodes-base/nodes/Amqp/Amqp.node.ts index 83ab5253bb..ce711d9695 100644 --- a/packages/nodes-base/nodes/Amqp/Amqp.node.ts +++ b/packages/nodes-base/nodes/Amqp/Amqp.node.ts @@ -1,4 +1,4 @@ -import type { Connection, ContainerOptions, Dictionary, EventContext } from 'rhea'; +import type { Connection, ContainerOptions, Dictionary, EventContext, Sender } from 'rhea'; import { create_container } from 'rhea'; import type { @@ -12,7 +12,47 @@ import type { ICredentialsDecrypted, ICredentialDataDecryptedObject, } from 'n8n-workflow'; -import { NodeOperationError } from 'n8n-workflow'; +import { NodeConnectionType, NodeOperationError } from 'n8n-workflow'; + +async function checkIfCredentialsValid( + credentials: IDataObject, +): Promise { + const connectOptions: ContainerOptions = { + reconnect: false, + host: credentials.hostname as string, + hostname: credentials.hostname as string, + port: credentials.port as number, + username: credentials.username ? (credentials.username as string) : undefined, + password: credentials.password ? (credentials.password as string) : undefined, + transport: credentials.transportType ? (credentials.transportType as string) : undefined, + }; + + let conn: Connection | undefined = undefined; + try { + const container = create_container(); + await new Promise((resolve, reject) => { + container.on('connection_open', function (_context: EventContext) { + resolve(); + }); + container.on('disconnected', function (context: EventContext) { + reject(context.error ?? new Error('unknown error')); + }); + conn = container.connect(connectOptions); + }); + } catch (error) { + return { + status: 'Error', + message: (error as Error).message, + }; + } finally { + if (conn) (conn as Connection).close(); + } + + return { + status: 'OK', + message: 'Connection successful!', + }; +} export class Amqp implements INodeType { description: INodeTypeDescription = { @@ -25,8 +65,8 @@ export class Amqp implements INodeType { defaults: { name: 'AMQP Sender', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'amqp', @@ -40,7 +80,7 @@ export class Amqp implements INodeType { name: 'sink', type: 'string', default: '', - placeholder: 'topic://sourcename.something', + placeholder: 'e.g. topic://sourcename.something', description: 'Name of the queue of topic to publish to', }, // Header Parameters @@ -56,7 +96,7 @@ export class Amqp implements INodeType { displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, options: [ { @@ -106,49 +146,27 @@ export class Amqp implements INodeType { credential: ICredentialsDecrypted, ): Promise { const credentials = credential.data as ICredentialDataDecryptedObject; - const connectOptions: ContainerOptions = { - reconnect: false, - host: credentials.hostname as string, - hostname: credentials.hostname as string, - port: credentials.port as number, - username: credentials.username ? (credentials.username as string) : undefined, - password: credentials.password ? (credentials.password as string) : undefined, - transport: credentials.transportType ? (credentials.transportType as string) : undefined, - }; - - let conn: Connection | undefined = undefined; - try { - const container = create_container(); - await new Promise((resolve, reject) => { - container.on('connection_open', function (_contex: EventContext) { - resolve(); - }); - container.on('disconnected', function (context: EventContext) { - reject(context.error ?? new Error('unknown error')); - }); - conn = container.connect(connectOptions); - }); - } catch (error) { - return { - status: 'Error', - message: (error as Error).message, - }; - } finally { - if (conn) (conn as Connection).close(); - } - - return { - status: 'OK', - message: 'Connection successful!', - }; + return await checkIfCredentialsValid(credentials); }, }, }; async execute(this: IExecuteFunctions): Promise { + const container = create_container(); + let connection: Connection | undefined = undefined; + let sender: Sender | undefined = undefined; + try { const credentials = await this.getCredentials('amqp'); + // check if credentials are valid to avoid unnecessary reconnects + const credentialsTestResult = await checkIfCredentialsValid(credentials); + if (credentialsTestResult.status === 'Error') { + throw new NodeOperationError(this.getNode(), credentialsTestResult.message, { + description: 'Check your credentials and try again', + }); + } + const sink = this.getNodeParameter('sink', 0, '') as string; const applicationProperties = this.getNodeParameter('headerParametersJson', 0, {}) as | string @@ -169,30 +187,50 @@ export class Amqp implements INodeType { throw new NodeOperationError(this.getNode(), 'Queue or Topic required!'); } - const container = create_container(); - /* - Values are documentet here: https://github.com/amqp/rhea#container + Values are documented here: https://github.com/amqp/rhea#container */ const connectOptions: ContainerOptions = { host: credentials.hostname, hostname: credentials.hostname, port: credentials.port, - reconnect: containerReconnect, - reconnect_limit: containerReconnectLimit, username: credentials.username ? credentials.username : undefined, password: credentials.password ? credentials.password : undefined, transport: credentials.transportType ? credentials.transportType : undefined, container_id: containerId ? containerId : undefined, id: containerId ? containerId : undefined, + reconnect: containerReconnect, + reconnect_limit: containerReconnectLimit, }; - const conn = container.connect(connectOptions); - const sender = conn.open_sender(sink); + const node = this.getNode(); + + const responseData: INodeExecutionData[] = await new Promise((resolve, reject) => { + connection = container.connect(connectOptions); + sender = connection.open_sender(sink); + let limit = containerReconnectLimit; + + container.on('disconnected', function (context: EventContext) { + //handling this manually as container, despite reconnect_limit, does reconnect on disconnect + if (limit <= 0) { + connection!.options.reconnect = false; + const error = new NodeOperationError( + node, + ((context.error as Error) ?? {}).message ?? 'Disconnected', + { + description: `Check your credentials${options.reconnect ? '' : ', and consider enabling reconnect in the options'}`, + itemIndex: 0, + }, + ); + + reject(error); + } + + limit--; + }); - const responseData: IDataObject[] = await new Promise((resolve) => { container.once('sendable', (context: EventContext) => { - const returnData = []; + const returnData: INodeExecutionData[] = []; const items = this.getInputData(); for (let i = 0; i < items.length; i++) { @@ -214,23 +252,23 @@ export class Amqp implements INodeType { body, }); - returnData.push({ id: result?.id }); + returnData.push({ json: { id: result?.id }, pairedItems: { item: i } }); } resolve(returnData); }); }); - sender.close(); - conn.close(); - - return [this.helpers.returnJsonArray(responseData)]; + return [responseData]; } catch (error) { - if (this.continueOnFail(error)) { - return [this.helpers.returnJsonArray({ error: error.message })]; + if (this.continueOnFail()) { + return [[{ json: { error: error.message }, pairedItems: { item: 0 } }]]; } else { throw error; } + } finally { + if (sender) (sender as Sender).close(); + if (connection) (connection as Connection).close(); } } } diff --git a/packages/nodes-base/nodes/Amqp/AmqpTrigger.node.json b/packages/nodes-base/nodes/Amqp/AmqpTrigger.node.json index a61ee1149e..ef4f991b14 100644 --- a/packages/nodes-base/nodes/Amqp/AmqpTrigger.node.json +++ b/packages/nodes-base/nodes/Amqp/AmqpTrigger.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/amqp" + "url": "https://docs.n8n.io/integrations/builtin/credentials/amqp/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Amqp/AmqpTrigger.node.ts b/packages/nodes-base/nodes/Amqp/AmqpTrigger.node.ts index 77cb73fb6a..249391fd9d 100644 --- a/packages/nodes-base/nodes/Amqp/AmqpTrigger.node.ts +++ b/packages/nodes-base/nodes/Amqp/AmqpTrigger.node.ts @@ -10,7 +10,7 @@ import type { IDeferredPromise, IRun, } from 'n8n-workflow'; -import { deepCopy, jsonParse, NodeOperationError } from 'n8n-workflow'; +import { deepCopy, jsonParse, NodeConnectionType, NodeOperationError } from 'n8n-workflow'; export class AmqpTrigger implements INodeType { description: INodeTypeDescription = { @@ -24,7 +24,7 @@ export class AmqpTrigger implements INodeType { name: 'AMQP Trigger', }, inputs: [], - outputs: ['main'], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'amqp', @@ -64,7 +64,7 @@ export class AmqpTrigger implements INodeType { displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, options: [ { @@ -208,11 +208,11 @@ export class AmqpTrigger implements INodeType { let responsePromise: IDeferredPromise | undefined = undefined; if (!parallelProcessing) { - responsePromise = await this.helpers.createDeferredPromise(); + responsePromise = this.helpers.createDeferredPromise(); } if (responsePromise) { this.emit([this.helpers.returnJsonArray([data as any])], undefined, responsePromise); - await responsePromise.promise(); + await responsePromise.promise; } else { this.emit([this.helpers.returnJsonArray([data as any])]); } @@ -276,11 +276,16 @@ export class AmqpTrigger implements INodeType { connection.close(); reject( - new Error( - 'Aborted, no message received within 30secs. This 30sec timeout is only set for "manually triggered execution". Active Workflows will listen indefinitely.', + new NodeOperationError( + this.getNode(), + 'Aborted because no message received within 15 seconds', + { + description: + 'This 15sec timeout is only set for "manually triggered execution". Active Workflows will listen indefinitely.', + }, ), ); - }, 30000); + }, 15000); container.on('message', (context: EventContext) => { // Check if the only property present in the message is body // in which case we only emit the content of the body property diff --git a/packages/nodes-base/nodes/ApiTemplateIo/ApiTemplateIo.node.json b/packages/nodes-base/nodes/ApiTemplateIo/ApiTemplateIo.node.json index e6853ac9ce..9ac3267f17 100644 --- a/packages/nodes-base/nodes/ApiTemplateIo/ApiTemplateIo.node.json +++ b/packages/nodes-base/nodes/ApiTemplateIo/ApiTemplateIo.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/apiTemplateIo" + "url": "https://docs.n8n.io/integrations/builtin/credentials/apiTemplateIo/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/ApiTemplateIo/ApiTemplateIo.node.ts b/packages/nodes-base/nodes/ApiTemplateIo/ApiTemplateIo.node.ts index b7fe475dad..1d03f57f40 100644 --- a/packages/nodes-base/nodes/ApiTemplateIo/ApiTemplateIo.node.ts +++ b/packages/nodes-base/nodes/ApiTemplateIo/ApiTemplateIo.node.ts @@ -7,7 +7,7 @@ import type { INodeType, INodeTypeDescription, } from 'n8n-workflow'; -import { NodeOperationError } from 'n8n-workflow'; +import { NodeConnectionType, NodeOperationError } from 'n8n-workflow'; import { apiTemplateIoApiRequest, @@ -28,8 +28,8 @@ export class ApiTemplateIo implements INodeType { defaults: { name: 'APITemplate.io', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'apiTemplateIoApi', @@ -125,7 +125,7 @@ export class ApiTemplateIo implements INodeType { required: true, default: '', description: - 'ID of the image template to use. Choose from the list, or specify an ID using an expression.', + 'ID of the image template to use. Choose from the list, or specify an ID using an expression.', typeOptions: { loadOptionsMethod: 'getImageTemplates', }, @@ -143,7 +143,7 @@ export class ApiTemplateIo implements INodeType { required: true, default: '', description: - 'ID of the PDF template to use. Choose from the list, or specify an ID using an expression.', + 'ID of the PDF template to use. Choose from the list, or specify an ID using an expression.', typeOptions: { loadOptionsMethod: 'getPdfTemplates', }, @@ -385,7 +385,7 @@ export class ApiTemplateIo implements INodeType { returnData.push(responseData as IDataObject); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push({ json: { error: error.message } }); continue; } @@ -471,7 +471,7 @@ export class ApiTemplateIo implements INodeType { } returnData.push(responseData as IDataObject); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push({ json: { error: error.message } }); continue; } @@ -561,7 +561,7 @@ export class ApiTemplateIo implements INodeType { } returnData.push(responseData as IDataObject); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push({ json: { error: error.message } }); continue; } diff --git a/packages/nodes-base/nodes/Asana/Asana.node.json b/packages/nodes-base/nodes/Asana/Asana.node.json index 4ee1119919..239a11ecea 100644 --- a/packages/nodes-base/nodes/Asana/Asana.node.json +++ b/packages/nodes-base/nodes/Asana/Asana.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/asana" + "url": "https://docs.n8n.io/integrations/builtin/credentials/asana/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Asana/Asana.node.ts b/packages/nodes-base/nodes/Asana/Asana.node.ts index a2ce21a29b..c5d3401674 100644 --- a/packages/nodes-base/nodes/Asana/Asana.node.ts +++ b/packages/nodes-base/nodes/Asana/Asana.node.ts @@ -8,7 +8,7 @@ import type { INodeTypeDescription, JsonObject, } from 'n8n-workflow'; -import { NodeApiError, NodeOperationError } from 'n8n-workflow'; +import { NodeConnectionType, NodeApiError, NodeOperationError } from 'n8n-workflow'; import moment from 'moment-timezone'; @@ -33,8 +33,8 @@ export class Asana implements INodeType { defaults: { name: 'Asana', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'asanaApi', @@ -202,7 +202,7 @@ export class Asana implements INodeType { }, default: '', description: - 'Set Assignee on the subtask. Choose from the list, or specify an ID using an expression.', + 'Set Assignee on the subtask. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Assignee Status', @@ -269,7 +269,7 @@ export class Asana implements INodeType { }, default: '', description: - 'The workspace to create the subtask in. Choose from the list, or specify an ID using an expression.', + 'The workspace to create the subtask in. Choose from the list, or specify an ID using an expression.', }, ], }, @@ -343,7 +343,7 @@ export class Asana implements INodeType { }, default: ['gid', 'name', 'resource_type'], description: - 'Defines fields to return. Choose from the list, or specify IDs using an expression.', + 'Defines fields to return. Choose from the list, or specify IDs using an expression.', }, { displayName: 'Pretty', @@ -434,7 +434,7 @@ export class Asana implements INodeType { }, }, description: - 'The workspace to create the task in. Choose from the list, or specify an ID using an expression.', + 'The workspace to create the task in. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Name', @@ -543,7 +543,7 @@ export class Asana implements INodeType { }, default: '', description: - 'The assignee to filter tasks on. Note: If you specify assignee, you must also specify the workspace to filter on. Choose from the list, or specify an ID using an expression.', + 'The assignee to filter tasks on. Note: If you specify assignee, you must also specify the workspace to filter on. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Field Names or IDs', @@ -554,7 +554,7 @@ export class Asana implements INodeType { }, default: ['gid', 'name', 'resource_type'], description: - 'Defines fields to return. Choose from the list, or specify IDs using an expression.', + 'Defines fields to return. Choose from the list, or specify IDs using an expression.', }, { displayName: 'Pretty', @@ -572,7 +572,7 @@ export class Asana implements INodeType { }, default: '', description: - 'The project to filter tasks on. Choose from the list, or specify an ID using an expression.', + 'The project to filter tasks on. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Section Name or ID', @@ -583,7 +583,7 @@ export class Asana implements INodeType { }, default: '', description: - 'The section to filter tasks on. Choose from the list, or specify an ID using an expression.', + 'The section to filter tasks on. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Workspace Name or ID', @@ -594,7 +594,7 @@ export class Asana implements INodeType { }, default: '', description: - 'The workspace to filter tasks on. Note: If you specify workspace, you must also specify the assignee to filter on. Choose from the list, or specify an ID using an expression.', + 'The workspace to filter tasks on. Note: If you specify workspace, you must also specify the assignee to filter on. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Completed Since', @@ -649,7 +649,7 @@ export class Asana implements INodeType { }, }, description: - 'Project to show the sections of. Choose from the list, or specify an ID using an expression.', + 'Project to show the sections of. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Section Name or ID', @@ -669,7 +669,7 @@ export class Asana implements INodeType { }, }, description: - 'The Section to move the task to. Choose from the list, or specify an ID using an expression.', + 'The Section to move the task to. Choose from the list, or specify an ID using an expression.', }, // ---------------------------------- @@ -710,7 +710,7 @@ export class Asana implements INodeType { }, }, description: - 'The workspace in which the task is searched. Choose from the list, or specify an ID using an expression.', + 'The workspace in which the task is searched. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Filters', @@ -771,7 +771,7 @@ export class Asana implements INodeType { }, default: '', description: - 'Set Assignee on the task. Choose from the list, or specify an ID using an expression.', + 'Set Assignee on the task. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Assignee Status', @@ -850,7 +850,7 @@ export class Asana implements INodeType { }, default: [], description: - 'The project to filter tasks on. Choose from the list, or specify IDs using an expression.', + 'The project to filter tasks on. Choose from the list, or specify IDs using an expression.', }, ], }, @@ -1052,7 +1052,7 @@ export class Asana implements INodeType { }, }, description: - 'The project where the task will be added. Choose from the list, or specify an ID using an expression.', + 'The project where the task will be added. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Additional Fields', @@ -1128,7 +1128,7 @@ export class Asana implements INodeType { }, }, description: - 'The project where the task will be removed from. Choose from the list, or specify an ID using an expression.', + 'The project where the task will be removed from. Choose from the list, or specify an ID using an expression.', }, // ---------------------------------- // taskTag @@ -1196,7 +1196,7 @@ export class Asana implements INodeType { }, }, description: - 'The tag that should be added. Choose from the list, or specify an ID using an expression.', + 'The tag that should be added. Choose from the list, or specify an ID using an expression.', }, // ---------------------------------- @@ -1234,7 +1234,7 @@ export class Asana implements INodeType { }, }, description: - 'The tag that should be added. Choose from the list, or specify an ID using an expression.', + 'The tag that should be added. Choose from the list, or specify an ID using an expression.', }, // ---------------------------------- @@ -1306,7 +1306,7 @@ export class Asana implements INodeType { }, }, description: - 'The workspace in which to get users. Choose from the list, or specify an ID using an expression.', + 'The workspace in which to get users. Choose from the list, or specify an ID using an expression.', }, // ---------------------------------- @@ -1391,7 +1391,7 @@ export class Asana implements INodeType { }, }, description: - 'The workspace to create the project in. Choose from the list, or specify an ID using an expression.', + 'The workspace to create the project in. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Team Name or ID', @@ -1409,7 +1409,7 @@ export class Asana implements INodeType { }, default: '', description: - 'The team this project will be assigned to. Choose from the list, or specify an ID using an expression.', + 'The team this project will be assigned to. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Additional Fields', @@ -1448,6 +1448,27 @@ export class Asana implements INodeType { default: '', description: 'Basic description or notes for the project', }, + { + displayName: 'Privacy Setting', + name: 'privacy_setting', + type: 'options', + options: [ + { + name: 'Private', + value: 'private', + }, + { + name: 'Private to Team', + value: 'private_to_team', + }, + { + name: 'Public to Workspace', + value: 'public_to_workspace', + }, + ], + default: 'private', + description: 'The privacy setting of the project', + }, ], }, // ---------------------------------- @@ -1503,7 +1524,7 @@ export class Asana implements INodeType { }, }, description: - 'The workspace in which to get users. Choose from the list, or specify an ID using an expression.', + 'The workspace in which to get users. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Return All', @@ -1568,7 +1589,7 @@ export class Asana implements INodeType { }, default: '', description: - 'The new name of the task. Choose from the list, or specify an ID using an expression.', + 'The new name of the task. Choose from the list, or specify an ID using an expression.', }, ], }, @@ -1592,7 +1613,7 @@ export class Asana implements INodeType { }, }, description: - 'The workspace in which to get users. Choose from the list, or specify an ID using an expression.', + 'The workspace in which to get users. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Project ID', @@ -1659,6 +1680,27 @@ export class Asana implements INodeType { default: '', description: 'The new assignee/cardinal for this project', }, + { + displayName: 'Privacy Setting', + name: 'privacy_setting', + type: 'options', + options: [ + { + name: 'Private', + value: 'private', + }, + { + name: 'Private to Team', + value: 'private_to_team', + }, + { + name: 'Public to Workspace', + value: 'public_to_workspace', + }, + ], + default: 'private', + description: 'The privacy setting of the project', + }, { displayName: 'Team Name or ID', name: 'team', @@ -1669,7 +1711,7 @@ export class Asana implements INodeType { }, default: '', description: - 'The team this project will be assigned to. Choose from the list, or specify an ID using an expression.', + 'The team this project will be assigned to. Choose from the list, or specify an ID using an expression.', }, ], }, @@ -2425,7 +2467,7 @@ export class Asana implements INodeType { ), ); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push({ error: error.message }); continue; } diff --git a/packages/nodes-base/nodes/Asana/AsanaTrigger.node.json b/packages/nodes-base/nodes/Asana/AsanaTrigger.node.json index b799feef8a..1360c9b637 100644 --- a/packages/nodes-base/nodes/Asana/AsanaTrigger.node.json +++ b/packages/nodes-base/nodes/Asana/AsanaTrigger.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/asana" + "url": "https://docs.n8n.io/integrations/builtin/credentials/asana/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Asana/AsanaTrigger.node.ts b/packages/nodes-base/nodes/Asana/AsanaTrigger.node.ts index 5af631543e..691daa5bb7 100644 --- a/packages/nodes-base/nodes/Asana/AsanaTrigger.node.ts +++ b/packages/nodes-base/nodes/Asana/AsanaTrigger.node.ts @@ -8,7 +8,7 @@ import type { INodeTypeDescription, IWebhookResponseData, } from 'n8n-workflow'; -import { NodeOperationError } from 'n8n-workflow'; +import { NodeConnectionType, NodeOperationError } from 'n8n-workflow'; import { asanaApiRequest, getWorkspaces } from './GenericFunctions'; @@ -28,7 +28,7 @@ export class AsanaTrigger implements INodeType { name: 'Asana Trigger', }, inputs: [], - outputs: ['main'], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'asanaApi', @@ -92,7 +92,7 @@ export class AsanaTrigger implements INodeType { options: [], default: '', description: - 'The workspace ID the resource is registered under. This is only required if you want to allow overriding existing webhooks. Choose from the list, or specify an ID using an expression.', + 'The workspace ID the resource is registered under. This is only required if you want to allow overriding existing webhooks. Choose from the list, or specify an ID using an expression.', }, ], }; diff --git a/packages/nodes-base/nodes/Asana/GenericFunctions.ts b/packages/nodes-base/nodes/Asana/GenericFunctions.ts index 2b7c1b9a48..72492ecb6c 100644 --- a/packages/nodes-base/nodes/Asana/GenericFunctions.ts +++ b/packages/nodes-base/nodes/Asana/GenericFunctions.ts @@ -64,6 +64,7 @@ export async function asanaApiRequestAllItems( uri, ); uri = get(responseData, 'next_page.uri'); + query = {}; // query is not needed once we have next_page.uri returnData.push.apply(returnData, responseData.data as IDataObject[]); } while (responseData.next_page !== null); diff --git a/packages/nodes-base/nodes/Automizy/Automizy.node.json b/packages/nodes-base/nodes/Automizy/Automizy.node.json index 9ff27a12e1..3de7a86f23 100644 --- a/packages/nodes-base/nodes/Automizy/Automizy.node.json +++ b/packages/nodes-base/nodes/Automizy/Automizy.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/automizy" + "url": "https://docs.n8n.io/integrations/builtin/credentials/automizy/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Automizy/Automizy.node.ts b/packages/nodes-base/nodes/Automizy/Automizy.node.ts index 3e79372109..38c53c4f1f 100644 --- a/packages/nodes-base/nodes/Automizy/Automizy.node.ts +++ b/packages/nodes-base/nodes/Automizy/Automizy.node.ts @@ -1,12 +1,13 @@ -import type { - IExecuteFunctions, - IDataObject, - ILoadOptionsFunctions, - INodeExecutionData, - INodePropertyOptions, - INodeType, - INodeTypeDescription, - NodeExecutionWithMetadata, +import { + type IExecuteFunctions, + type IDataObject, + type ILoadOptionsFunctions, + type INodeExecutionData, + type INodePropertyOptions, + type INodeType, + type INodeTypeDescription, + type NodeExecutionWithMetadata, + NodeConnectionType, } from 'n8n-workflow'; import { automizyApiRequest, automizyApiRequestAllItems } from './GenericFunctions'; @@ -28,8 +29,9 @@ export class Automizy implements INodeType { defaults: { name: 'Automizy', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], + hidden: true, credentials: [ { name: 'automizyApi', @@ -37,6 +39,13 @@ export class Automizy implements INodeType { }, ], properties: [ + { + displayName: + 'This service may no longer exist and will be removed from n8n in a future release.', + name: 'deprecated', + type: 'notice', + default: '', + }, { displayName: 'Resource', name: 'resource', diff --git a/packages/nodes-base/nodes/Automizy/ContactDescription.ts b/packages/nodes-base/nodes/Automizy/ContactDescription.ts index f676c801a8..4d00755a14 100644 --- a/packages/nodes-base/nodes/Automizy/ContactDescription.ts +++ b/packages/nodes-base/nodes/Automizy/ContactDescription.ts @@ -72,7 +72,7 @@ export const contactFields: INodeProperties[] = [ required: true, type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getLists', }, @@ -120,7 +120,7 @@ export const contactFields: INodeProperties[] = [ loadOptionsMethod: 'getCustomFields', }, description: - 'The end user specified key of the user defined data. Choose from the list, or specify an ID using an expression.', + 'The end user specified key of the user defined data. Choose from the list, or specify an ID using an expression.', default: '', }, { @@ -174,7 +174,7 @@ export const contactFields: INodeProperties[] = [ }, default: [], description: - 'The tags you want to set to the contact. Choose from the list, or specify IDs using an expression.', + 'The tags you want to set to the contact. Choose from the list, or specify IDs using an expression.', }, ], }, @@ -224,7 +224,7 @@ export const contactFields: INodeProperties[] = [ required: true, type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getLists', }, @@ -354,7 +354,7 @@ export const contactFields: INodeProperties[] = [ }, default: [], description: - 'The tags you want to add to the contact. Choose from the list, or specify IDs using an expression.', + 'The tags you want to add to the contact. Choose from the list, or specify IDs using an expression.', }, { displayName: 'Custom Fields', @@ -379,7 +379,7 @@ export const contactFields: INodeProperties[] = [ loadOptionsMethod: 'getCustomFields', }, description: - 'The end user specified key of the user defined data. Choose from the list, or specify an ID using an expression.', + 'The end user specified key of the user defined data. Choose from the list, or specify an ID using an expression.', default: '', }, { @@ -403,7 +403,7 @@ export const contactFields: INodeProperties[] = [ }, default: [], description: - 'The tags you want to add to the contact. Choose from the list, or specify IDs using an expression.', + 'The tags you want to add to the contact. Choose from the list, or specify IDs using an expression.', }, { displayName: 'Status', @@ -444,7 +444,7 @@ export const contactFields: INodeProperties[] = [ }, default: [], description: - 'The tags you want to set to the contact. Will replace all existing ones. Choose from the list, or specify IDs using an expression.', + 'The tags you want to set to the contact. Will replace all existing ones. Choose from the list, or specify IDs using an expression.', }, ], }, diff --git a/packages/nodes-base/nodes/Automizy/GenericFunctions.ts b/packages/nodes-base/nodes/Automizy/GenericFunctions.ts index 0e92d09333..94e73e0388 100644 --- a/packages/nodes-base/nodes/Automizy/GenericFunctions.ts +++ b/packages/nodes-base/nodes/Automizy/GenericFunctions.ts @@ -17,7 +17,7 @@ export async function automizyApiRequest( qs: IDataObject = {}, option = {}, ): Promise { - const credentials = (await this.getCredentials('automizyApi')) as IDataObject; + const credentials = await this.getCredentials<{ apiToken: string }>('automizyApi'); const options: IRequestOptions = { headers: { diff --git a/packages/nodes-base/nodes/Autopilot/Autopilot.node.json b/packages/nodes-base/nodes/Autopilot/Autopilot.node.json index 54dbaa35ac..3d10c66986 100644 --- a/packages/nodes-base/nodes/Autopilot/Autopilot.node.json +++ b/packages/nodes-base/nodes/Autopilot/Autopilot.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/autopilot" + "url": "https://docs.n8n.io/integrations/builtin/credentials/autopilot/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Autopilot/Autopilot.node.ts b/packages/nodes-base/nodes/Autopilot/Autopilot.node.ts index bdf287d1f1..069e2dd03f 100644 --- a/packages/nodes-base/nodes/Autopilot/Autopilot.node.ts +++ b/packages/nodes-base/nodes/Autopilot/Autopilot.node.ts @@ -1,12 +1,13 @@ -import type { - IExecuteFunctions, - IDataObject, - ILoadOptionsFunctions, - INodeExecutionData, - INodePropertyOptions, - INodeType, - INodeTypeDescription, - IHttpRequestMethods, +import { + type IExecuteFunctions, + type IDataObject, + type ILoadOptionsFunctions, + type INodeExecutionData, + type INodePropertyOptions, + type INodeType, + type INodeTypeDescription, + type IHttpRequestMethods, + NodeConnectionType, } from 'n8n-workflow'; import { autopilotApiRequest, autopilotApiRequestAllItems } from './GenericFunctions'; @@ -31,8 +32,8 @@ export class Autopilot implements INodeType { defaults: { name: 'Autopilot', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'autopilotApi', @@ -305,7 +306,7 @@ export class Autopilot implements INodeType { ); returnData.push(...executionData); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { const exectionErrorWithMetaData = this.helpers.constructExecutionMetaData( [{ json: { error: error.message } }], { itemData: { item: i } }, diff --git a/packages/nodes-base/nodes/Autopilot/AutopilotTrigger.node.json b/packages/nodes-base/nodes/Autopilot/AutopilotTrigger.node.json index dd9b72ccf1..ceb42b78f4 100644 --- a/packages/nodes-base/nodes/Autopilot/AutopilotTrigger.node.json +++ b/packages/nodes-base/nodes/Autopilot/AutopilotTrigger.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/autopilot" + "url": "https://docs.n8n.io/integrations/builtin/credentials/autopilot/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Autopilot/AutopilotTrigger.node.ts b/packages/nodes-base/nodes/Autopilot/AutopilotTrigger.node.ts index f86ebf0e3c..a27ff7c1a5 100644 --- a/packages/nodes-base/nodes/Autopilot/AutopilotTrigger.node.ts +++ b/packages/nodes-base/nodes/Autopilot/AutopilotTrigger.node.ts @@ -6,6 +6,7 @@ import type { INodeTypeDescription, IWebhookResponseData, } from 'n8n-workflow'; +import { NodeConnectionType } from 'n8n-workflow'; import { snakeCase } from 'change-case'; import { autopilotApiRequest } from './GenericFunctions'; @@ -23,7 +24,7 @@ export class AutopilotTrigger implements INodeType { name: 'Autopilot Trigger', }, inputs: [], - outputs: ['main'], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'autopilotApi', diff --git a/packages/nodes-base/nodes/Autopilot/ContactDescription.ts b/packages/nodes-base/nodes/Autopilot/ContactDescription.ts index f9de12af4f..ecf010db2e 100644 --- a/packages/nodes-base/nodes/Autopilot/ContactDescription.ts +++ b/packages/nodes-base/nodes/Autopilot/ContactDescription.ts @@ -103,7 +103,7 @@ export const contactFields: INodeProperties[] = [ loadOptionsMethod: 'getCustomFields', }, description: - 'User-specified key of user-defined data. Choose from the list, or specify an ID using an expression.', + 'User-specified key of user-defined data. Choose from the list, or specify an ID using an expression.', default: '', }, { @@ -162,7 +162,7 @@ export const contactFields: INodeProperties[] = [ }, default: '', description: - 'List to which this contact will be added on creation. Choose from the list, or specify an ID using an expression.', + 'List to which this contact will be added on creation. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Mailing Country', diff --git a/packages/nodes-base/nodes/Autopilot/ContactJourneyDescription.ts b/packages/nodes-base/nodes/Autopilot/ContactJourneyDescription.ts index 2301faca12..e203bf73ad 100644 --- a/packages/nodes-base/nodes/Autopilot/ContactJourneyDescription.ts +++ b/packages/nodes-base/nodes/Autopilot/ContactJourneyDescription.ts @@ -43,7 +43,7 @@ export const contactJourneyFields: INodeProperties[] = [ }, default: '', description: - 'List ID. Choose from the list, or specify an ID using an expression.', + 'List ID. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Contact ID', diff --git a/packages/nodes-base/nodes/Autopilot/ContactListDescription.ts b/packages/nodes-base/nodes/Autopilot/ContactListDescription.ts index 7edc8fc71b..568f2e10d5 100644 --- a/packages/nodes-base/nodes/Autopilot/ContactListDescription.ts +++ b/packages/nodes-base/nodes/Autopilot/ContactListDescription.ts @@ -61,7 +61,7 @@ export const contactListFields: INodeProperties[] = [ }, default: '', description: - 'ID of the list to operate on. Choose from the list, or specify an ID using an expression.', + 'ID of the list to operate on. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Contact ID', diff --git a/packages/nodes-base/nodes/Autopilot/GenericFunctions.ts b/packages/nodes-base/nodes/Autopilot/GenericFunctions.ts index f6387d27e9..094d74b029 100644 --- a/packages/nodes-base/nodes/Autopilot/GenericFunctions.ts +++ b/packages/nodes-base/nodes/Autopilot/GenericFunctions.ts @@ -19,16 +19,14 @@ export async function autopilotApiRequest( uri?: string, _option: IDataObject = {}, ): Promise { - const credentials = (await this.getCredentials('autopilotApi')) as IDataObject; - - const apiKey = `${credentials.apiKey}`; + const credentials = await this.getCredentials<{ apiKey: string }>('autopilotApi'); const endpoint = 'https://api2.autopilothq.com/v1'; const options: IRequestOptions = { headers: { 'Content-Type': 'application/json', - autopilotapikey: apiKey, + autopilotapikey: credentials.apiKey, }, method, body, diff --git a/packages/nodes-base/nodes/Aws/AwsLambda.node.json b/packages/nodes-base/nodes/Aws/AwsLambda.node.json index 68b97577ec..5b16766238 100644 --- a/packages/nodes-base/nodes/Aws/AwsLambda.node.json +++ b/packages/nodes-base/nodes/Aws/AwsLambda.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/aws" + "url": "https://docs.n8n.io/integrations/builtin/credentials/aws/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Aws/AwsLambda.node.ts b/packages/nodes-base/nodes/Aws/AwsLambda.node.ts index e1fd51f130..b7c19cfcbc 100644 --- a/packages/nodes-base/nodes/Aws/AwsLambda.node.ts +++ b/packages/nodes-base/nodes/Aws/AwsLambda.node.ts @@ -8,7 +8,7 @@ import type { INodeTypeDescription, JsonObject, } from 'n8n-workflow'; -import { NodeApiError } from 'n8n-workflow'; +import { NodeConnectionType, NodeApiError } from 'n8n-workflow'; import { awsApiRequestREST } from './GenericFunctions'; @@ -24,8 +24,8 @@ export class AwsLambda implements INodeType { defaults: { name: 'AWS Lambda', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'aws', @@ -64,7 +64,7 @@ export class AwsLambda implements INodeType { default: '', required: true, description: - 'The function you want to invoke. Choose from the list, or specify an ID using an expression.', + 'The function you want to invoke. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Qualifier', @@ -195,13 +195,21 @@ export class AwsLambda implements INodeType { throw new NodeApiError(this.getNode(), responseData as JsonObject); } else { - returnData.push({ - result: responseData, - } as IDataObject); + const executionData = this.helpers.constructExecutionMetaData( + this.helpers.returnJsonArray({ + result: responseData, + }), + { itemData: { item: i } }, + ); + returnData.push(...executionData); } } catch (error) { - if (this.continueOnFail(error)) { - returnData.push({ error: (error as JsonObject).message }); + if (this.continueOnFail()) { + const executionData = this.helpers.constructExecutionMetaData( + this.helpers.returnJsonArray({ error: (error as JsonObject).message }), + { itemData: { item: i } }, + ); + returnData.push(...executionData); continue; } throw error; diff --git a/packages/nodes-base/nodes/Aws/AwsSns.node.json b/packages/nodes-base/nodes/Aws/AwsSns.node.json index 4cf1b6d29f..63d9e51385 100644 --- a/packages/nodes-base/nodes/Aws/AwsSns.node.json +++ b/packages/nodes-base/nodes/Aws/AwsSns.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/aws" + "url": "https://docs.n8n.io/integrations/builtin/credentials/aws/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Aws/AwsSns.node.ts b/packages/nodes-base/nodes/Aws/AwsSns.node.ts index a11447be8b..858f93774a 100644 --- a/packages/nodes-base/nodes/Aws/AwsSns.node.ts +++ b/packages/nodes-base/nodes/Aws/AwsSns.node.ts @@ -1,12 +1,13 @@ -import type { - IExecuteFunctions, - IDataObject, - ILoadOptionsFunctions, - INodeExecutionData, - INodeListSearchItems, - INodeListSearchResult, - INodeType, - INodeTypeDescription, +import { + type IExecuteFunctions, + type IDataObject, + type ILoadOptionsFunctions, + type INodeExecutionData, + type INodeListSearchItems, + type INodeListSearchResult, + type INodeType, + type INodeTypeDescription, + NodeConnectionType, } from 'n8n-workflow'; import { awsApiRequestSOAP } from './GenericFunctions'; @@ -23,8 +24,8 @@ export class AwsSns implements INodeType { defaults: { name: 'AWS SNS', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'aws', @@ -75,7 +76,7 @@ export class AwsSns implements INodeType { displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, options: [ { @@ -317,7 +318,7 @@ export class AwsSns implements INodeType { } as IDataObject); } } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push({ error: error.message }); continue; } diff --git a/packages/nodes-base/nodes/Aws/AwsSnsTrigger.node.json b/packages/nodes-base/nodes/Aws/AwsSnsTrigger.node.json index 501da3a09c..4e2fbeb541 100644 --- a/packages/nodes-base/nodes/Aws/AwsSnsTrigger.node.json +++ b/packages/nodes-base/nodes/Aws/AwsSnsTrigger.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/aws" + "url": "https://docs.n8n.io/integrations/builtin/credentials/aws/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Aws/AwsSnsTrigger.node.ts b/packages/nodes-base/nodes/Aws/AwsSnsTrigger.node.ts index 7aa3c25fb1..1aee04d83b 100644 --- a/packages/nodes-base/nodes/Aws/AwsSnsTrigger.node.ts +++ b/packages/nodes-base/nodes/Aws/AwsSnsTrigger.node.ts @@ -8,7 +8,7 @@ import type { INodeTypeDescription, IWebhookResponseData, } from 'n8n-workflow'; -import { jsonParse, NodeOperationError } from 'n8n-workflow'; +import { jsonParse, NodeConnectionType, NodeOperationError } from 'n8n-workflow'; import get from 'lodash/get'; import { awsApiRequestSOAP } from './GenericFunctions'; @@ -26,7 +26,7 @@ export class AwsSnsTrigger implements INodeType { name: 'AWS SNS Trigger', }, inputs: [], - outputs: ['main'], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'aws', diff --git a/packages/nodes-base/nodes/Aws/CertificateManager/AwsCertificateManager.node.json b/packages/nodes-base/nodes/Aws/CertificateManager/AwsCertificateManager.node.json index 7915e6966f..ec90075bfd 100644 --- a/packages/nodes-base/nodes/Aws/CertificateManager/AwsCertificateManager.node.json +++ b/packages/nodes-base/nodes/Aws/CertificateManager/AwsCertificateManager.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/aws" + "url": "https://docs.n8n.io/integrations/builtin/credentials/aws/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Aws/CertificateManager/AwsCertificateManager.node.ts b/packages/nodes-base/nodes/Aws/CertificateManager/AwsCertificateManager.node.ts index 1ce0271e09..25abdb7669 100644 --- a/packages/nodes-base/nodes/Aws/CertificateManager/AwsCertificateManager.node.ts +++ b/packages/nodes-base/nodes/Aws/CertificateManager/AwsCertificateManager.node.ts @@ -5,6 +5,7 @@ import type { INodeType, INodeTypeDescription, } from 'n8n-workflow'; +import { NodeConnectionType } from 'n8n-workflow'; import { certificateFields, certificateOperations } from './CertificateDescription'; @@ -22,8 +23,8 @@ export class AwsCertificateManager implements INodeType { defaults: { name: 'AWS Certificate Manager', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'aws', @@ -222,7 +223,7 @@ export class AwsCertificateManager implements INodeType { returnData.push(...executionData); } } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push({ json: { error: error.message } }); continue; } diff --git a/packages/nodes-base/nodes/Aws/Comprehend/AwsComprehend.node.json b/packages/nodes-base/nodes/Aws/Comprehend/AwsComprehend.node.json index ca26e41d03..b1d0cfa7c1 100644 --- a/packages/nodes-base/nodes/Aws/Comprehend/AwsComprehend.node.json +++ b/packages/nodes-base/nodes/Aws/Comprehend/AwsComprehend.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/aws" + "url": "https://docs.n8n.io/integrations/builtin/credentials/aws/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Aws/Comprehend/AwsComprehend.node.ts b/packages/nodes-base/nodes/Aws/Comprehend/AwsComprehend.node.ts index 4a3f1790ce..8a416bcd50 100644 --- a/packages/nodes-base/nodes/Aws/Comprehend/AwsComprehend.node.ts +++ b/packages/nodes-base/nodes/Aws/Comprehend/AwsComprehend.node.ts @@ -5,6 +5,7 @@ import type { INodeType, INodeTypeDescription, } from 'n8n-workflow'; +import { NodeConnectionType } from 'n8n-workflow'; import { awsApiRequestREST } from './GenericFunctions'; @@ -20,8 +21,8 @@ export class AwsComprehend implements INodeType { defaults: { name: 'AWS Comprehend', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'aws', @@ -187,7 +188,7 @@ export class AwsComprehend implements INodeType { async execute(this: IExecuteFunctions): Promise { const items = this.getInputData(); - const returnData: IDataObject[] = []; + const returnData: INodeExecutionData[] = []; let responseData; const resource = this.getNodeParameter('resource', 0); const operation = this.getNodeParameter('operation', 0); @@ -270,19 +271,23 @@ export class AwsComprehend implements INodeType { } } - if (Array.isArray(responseData)) { - returnData.push.apply(returnData, responseData as IDataObject[]); - } else { - returnData.push(responseData as IDataObject); - } + const executionData = this.helpers.constructExecutionMetaData( + this.helpers.returnJsonArray(responseData), + { itemData: { item: i } }, + ); + returnData.push(...executionData); } catch (error) { - if (this.continueOnFail(error)) { - returnData.push({ error: error.message }); + if (this.continueOnFail()) { + const executionData = this.helpers.constructExecutionMetaData( + this.helpers.returnJsonArray({ error: error.message }), + { itemData: { item: i } }, + ); + returnData.push(...executionData); continue; } throw error; } } - return [this.helpers.returnJsonArray(returnData)]; + return [returnData]; } } diff --git a/packages/nodes-base/nodes/Aws/Comprehend/test/AwsComprehend.node.test.ts b/packages/nodes-base/nodes/Aws/Comprehend/test/AwsComprehend.node.test.ts new file mode 100644 index 0000000000..0215ddc6da --- /dev/null +++ b/packages/nodes-base/nodes/Aws/Comprehend/test/AwsComprehend.node.test.ts @@ -0,0 +1,42 @@ +import nock from 'nock'; +import { getWorkflowFilenames, initBinaryDataService, testWorkflows } from '@test/nodes/Helpers'; + +const workflows = getWorkflowFilenames(__dirname); + +describe('Test AWS Comprehend Node', () => { + describe('Detect Language', () => { + let mock: nock.Scope; + const now = 1683028800000; + const response = { + Languages: [ + { + LanguageCode: 'en', + Score: 0.9774383902549744, + }, + { + LanguageCode: 'de', + Score: 0.010717987082898617, + }, + ], + }; + beforeAll(async () => { + jest.useFakeTimers({ doNotFake: ['nextTick'], now }); + + await initBinaryDataService(); + + nock.disableNetConnect(); + const baseUrl = 'https://comprehend.eu-central-1.amazonaws.com'; + + mock = nock(baseUrl); + }); + + beforeEach(async () => { + mock.post('/').reply(200, response); + }); + afterAll(() => { + nock.restore(); + }); + + testWorkflows(workflows); + }); +}); diff --git a/packages/nodes-base/nodes/Aws/Comprehend/test/AwsComprehendTestWorkflow.json b/packages/nodes-base/nodes/Aws/Comprehend/test/AwsComprehendTestWorkflow.json new file mode 100644 index 0000000000..9073095f41 --- /dev/null +++ b/packages/nodes-base/nodes/Aws/Comprehend/test/AwsComprehendTestWorkflow.json @@ -0,0 +1,125 @@ +{ + "name": "node-aws-comprehend", + "nodes": [ + { + "parameters": {}, + "id": "53b6020d-5aa2-435f-9ee1-407111c0e3ee", + "name": "When clicking ‘Test workflow’", + "type": "n8n-nodes-base.manualTrigger", + "position": [ + 680, + 380 + ], + "typeVersion": 1 + }, + { + "parameters": { + "assignments": { + "assignments": [ + { + "id": "51b7eee5-8cc9-4e09-a2f4-65ffb3cc17f6", + "name": "text", + "value": "This is a test.", + "type": "string" + } + ] + }, + "options": {} + }, + "id": "b3beaf43-fe4c-43e1-a8cb-5a0740050611", + "name": "Edit Fields", + "type": "n8n-nodes-base.set", + "typeVersion": 3.4, + "position": [ + 900, + 380 + ] + }, + { + "parameters": { + "text": "={{ $json.text }}" + }, + "id": "a6a8a24c-0e58-40e7-8bf4-13a56edc6264", + "name": "AWS Comprehend", + "type": "n8n-nodes-base.awsComprehend", + "typeVersion": 1, + "position": [ + 1100, + 380 + ], + "credentials": { + "aws": { + "id": "TyNATsPCTvPF0tvG", + "name": "AWS account" + } + } + }, + { + "parameters": {}, + "id": "bfc4b84d-8cf1-4650-bf3c-2b1cdc677afc", + "name": "No Operation, do nothing", + "type": "n8n-nodes-base.noOp", + "typeVersion": 1, + "position": [ + 1320, + 380 + ] + } + ], + "pinData": { + "No Operation, do nothing": [ + { + "json": { + "de": 0.010717987082898617, + "en": 0.9774383902549744 + } + } + ] + }, + "connections": { + "Edit Fields": { + "main": [ + [ + { + "node": "AWS Comprehend", + "type": "main", + "index": 0 + } + ] + ] + }, + "When clicking ‘Test workflow’": { + "main": [ + [ + { + "node": "Edit Fields", + "type": "main", + "index": 0 + } + ] + ] + }, + "AWS Comprehend": { + "main": [ + [ + { + "node": "No Operation, do nothing", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "active": false, + "settings": { + "executionOrder": "v1" + }, + "versionId": "eae3c601-56b8-42ec-a0b7-14df8d697043", + "meta": { + "templateCredsSetupCompleted": true, + "instanceId": "be251a83c052a9862eeac953816fbb1464f89dfbf79d7ac490a8e336a8cc8bfd" + }, + "id": "fuOmKcLPWAxKi0bn", + "tags": [] + } diff --git a/packages/nodes-base/nodes/Aws/DynamoDB/AwsDynamoDB.node.json b/packages/nodes-base/nodes/Aws/DynamoDB/AwsDynamoDB.node.json index 3f787d6830..86c8c89ca4 100644 --- a/packages/nodes-base/nodes/Aws/DynamoDB/AwsDynamoDB.node.json +++ b/packages/nodes-base/nodes/Aws/DynamoDB/AwsDynamoDB.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/aws" + "url": "https://docs.n8n.io/integrations/builtin/credentials/aws/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Aws/DynamoDB/AwsDynamoDB.node.ts b/packages/nodes-base/nodes/Aws/DynamoDB/AwsDynamoDB.node.ts index 4340dd7c16..cecc3aca46 100644 --- a/packages/nodes-base/nodes/Aws/DynamoDB/AwsDynamoDB.node.ts +++ b/packages/nodes-base/nodes/Aws/DynamoDB/AwsDynamoDB.node.ts @@ -1,12 +1,13 @@ /* eslint-disable n8n-nodes-base/node-filename-against-convention */ -import type { - IExecuteFunctions, - IDataObject, - ILoadOptionsFunctions, - INodeExecutionData, - INodeType, - INodeTypeDescription, - NodeParameterValue, +import { + type IExecuteFunctions, + type IDataObject, + type ILoadOptionsFunctions, + type INodeExecutionData, + type INodeType, + type INodeTypeDescription, + type NodeParameterValue, + NodeConnectionType, } from 'n8n-workflow'; import { awsApiRequest, awsApiRequestAllItems } from './GenericFunctions'; @@ -42,8 +43,8 @@ export class AwsDynamoDB implements INodeType { defaults: { name: 'AWS DynamoDB', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'aws', @@ -398,7 +399,7 @@ export class AwsDynamoDB implements INodeType { returnData.push(...executionData); } } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { const executionData = this.helpers.constructExecutionMetaData( this.helpers.returnJsonArray({ error: error.message }), { itemData: { item: i } }, diff --git a/packages/nodes-base/nodes/Aws/DynamoDB/ItemDescription.ts b/packages/nodes-base/nodes/Aws/DynamoDB/ItemDescription.ts index 6111ad7393..8a36e8c11a 100644 --- a/packages/nodes-base/nodes/Aws/DynamoDB/ItemDescription.ts +++ b/packages/nodes-base/nodes/Aws/DynamoDB/ItemDescription.ts @@ -49,7 +49,7 @@ export const itemFields: INodeProperties[] = [ displayName: 'Table Name or ID', name: 'tableName', description: - 'Table to operate on. Choose from the list, or specify an ID using an expression.', + 'Table to operate on. Choose from the list, or specify an ID using an expression.', type: 'options', required: true, displayOptions: { diff --git a/packages/nodes-base/nodes/Aws/ELB/AwsElb.node.json b/packages/nodes-base/nodes/Aws/ELB/AwsElb.node.json index 7f2c0eddee..22e04c7754 100644 --- a/packages/nodes-base/nodes/Aws/ELB/AwsElb.node.json +++ b/packages/nodes-base/nodes/Aws/ELB/AwsElb.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/aws" + "url": "https://docs.n8n.io/integrations/builtin/credentials/aws/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Aws/ELB/AwsElb.node.ts b/packages/nodes-base/nodes/Aws/ELB/AwsElb.node.ts index 539f0c7761..fbc781fb6f 100644 --- a/packages/nodes-base/nodes/Aws/ELB/AwsElb.node.ts +++ b/packages/nodes-base/nodes/Aws/ELB/AwsElb.node.ts @@ -8,6 +8,7 @@ import type { INodeTypeDescription, JsonObject, } from 'n8n-workflow'; +import { NodeConnectionType } from 'n8n-workflow'; import { awsApiRequestSOAP, awsApiRequestSOAPAllItems } from './GenericFunctions'; @@ -30,8 +31,8 @@ export class AwsElb implements INodeType { defaults: { name: 'AWS ELB', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'aws', @@ -450,7 +451,7 @@ export class AwsElb implements INodeType { ), ); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push({ error: (error as JsonObject).toString() }); continue; } diff --git a/packages/nodes-base/nodes/Aws/ELB/ListenerCertificateDescription.ts b/packages/nodes-base/nodes/Aws/ELB/ListenerCertificateDescription.ts index 4e688aa71e..053ba50ca1 100644 --- a/packages/nodes-base/nodes/Aws/ELB/ListenerCertificateDescription.ts +++ b/packages/nodes-base/nodes/Aws/ELB/ListenerCertificateDescription.ts @@ -57,7 +57,7 @@ export const listenerCertificateFields: INodeProperties[] = [ }, default: '', description: - 'Unique identifier for a particular loadBalancer. Choose from the list, or specify an ID using an expression.', + 'Unique identifier for a particular loadBalancer. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Listener ARN Name or ID', @@ -76,7 +76,7 @@ export const listenerCertificateFields: INodeProperties[] = [ }, default: '', description: - 'Unique identifier for a particular loadBalancer. Choose from the list, or specify an ID using an expression.', + 'Unique identifier for a particular loadBalancer. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Certificate ARN', @@ -113,7 +113,7 @@ export const listenerCertificateFields: INodeProperties[] = [ }, default: '', description: - 'Unique identifier for a particular loadBalancer. Choose from the list, or specify an ID using an expression.', + 'Unique identifier for a particular loadBalancer. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Listener ARN Name or ID', @@ -132,7 +132,7 @@ export const listenerCertificateFields: INodeProperties[] = [ }, default: '', description: - 'Unique identifier for a particular loadBalancer. Choose from the list, or specify an ID using an expression.', + 'Unique identifier for a particular loadBalancer. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Return All', @@ -185,7 +185,7 @@ export const listenerCertificateFields: INodeProperties[] = [ }, default: '', description: - 'Unique identifier for a particular loadBalancer. Choose from the list, or specify an ID using an expression.', + 'Unique identifier for a particular loadBalancer. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Listener ARN Name or ID', @@ -204,7 +204,7 @@ export const listenerCertificateFields: INodeProperties[] = [ }, default: '', description: - 'Unique identifier for a particular loadBalancer. Choose from the list, or specify an ID using an expression.', + 'Unique identifier for a particular loadBalancer. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Certificate ARN', diff --git a/packages/nodes-base/nodes/Aws/ELB/LoadBalancerDescription.ts b/packages/nodes-base/nodes/Aws/ELB/LoadBalancerDescription.ts index 870bdbc4a5..dedffc199d 100644 --- a/packages/nodes-base/nodes/Aws/ELB/LoadBalancerDescription.ts +++ b/packages/nodes-base/nodes/Aws/ELB/LoadBalancerDescription.ts @@ -135,7 +135,7 @@ export const loadBalancerFields: INodeProperties[] = [ name: 'subnets', type: 'multiOptions', description: - 'Choose from the list, or specify IDs using an expression', + 'Choose from the list, or specify IDs using an expression', displayOptions: { show: { resource: ['loadBalancer'], @@ -166,7 +166,7 @@ export const loadBalancerFields: INodeProperties[] = [ name: 'securityGroups', type: 'multiOptions', description: - 'Choose from the list, or specify IDs using an expression', + 'Choose from the list, or specify IDs using an expression', typeOptions: { loadOptionsMethod: 'getSecurityGroups', }, diff --git a/packages/nodes-base/nodes/Aws/Rekognition/AwsRekognition.node.json b/packages/nodes-base/nodes/Aws/Rekognition/AwsRekognition.node.json index a8097c04d8..cbf2f6e807 100644 --- a/packages/nodes-base/nodes/Aws/Rekognition/AwsRekognition.node.json +++ b/packages/nodes-base/nodes/Aws/Rekognition/AwsRekognition.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/aws" + "url": "https://docs.n8n.io/integrations/builtin/credentials/aws/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Aws/Rekognition/AwsRekognition.node.ts b/packages/nodes-base/nodes/Aws/Rekognition/AwsRekognition.node.ts index 34c08e2073..a1e24ea4b9 100644 --- a/packages/nodes-base/nodes/Aws/Rekognition/AwsRekognition.node.ts +++ b/packages/nodes-base/nodes/Aws/Rekognition/AwsRekognition.node.ts @@ -5,6 +5,7 @@ import type { INodeType, INodeTypeDescription, } from 'n8n-workflow'; +import { NodeConnectionType } from 'n8n-workflow'; import { awsApiRequestREST, keysTPascalCase } from './GenericFunctions'; @@ -20,8 +21,8 @@ export class AwsRekognition implements INodeType { defaults: { name: 'AWS Rekognition', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'aws', @@ -454,7 +455,7 @@ export class AwsRekognition implements INodeType { ); returnData.push(...executionData); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push({ error: error.message }); continue; } diff --git a/packages/nodes-base/nodes/Aws/S3/AwsS3.node.json b/packages/nodes-base/nodes/Aws/S3/AwsS3.node.json index 7e8252e950..54db444105 100644 --- a/packages/nodes-base/nodes/Aws/S3/AwsS3.node.json +++ b/packages/nodes-base/nodes/Aws/S3/AwsS3.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/aws" + "url": "https://docs.n8n.io/integrations/builtin/credentials/aws/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Aws/S3/V1/AwsS3V1.node.ts b/packages/nodes-base/nodes/Aws/S3/V1/AwsS3V1.node.ts index afa888deea..fa3879b71d 100644 --- a/packages/nodes-base/nodes/Aws/S3/V1/AwsS3V1.node.ts +++ b/packages/nodes-base/nodes/Aws/S3/V1/AwsS3V1.node.ts @@ -1,4 +1,3 @@ -/* eslint-disable n8n-nodes-base/node-filename-against-convention */ import { createHash } from 'crypto'; import { paramCase, snakeCase } from 'change-case'; @@ -12,7 +11,7 @@ import type { INodeTypeBaseDescription, INodeTypeDescription, } from 'n8n-workflow'; -import { NodeOperationError } from 'n8n-workflow'; +import { NodeConnectionType, NodeOperationError } from 'n8n-workflow'; import { bucketFields, bucketOperations } from './BucketDescription'; @@ -42,8 +41,8 @@ export class AwsS3V1 implements INodeType { defaults: { name: 'AWS S3', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'aws', @@ -893,7 +892,7 @@ export class AwsS3V1 implements INodeType { } } } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { const executionData = this.helpers.constructExecutionMetaData( this.helpers.returnJsonArray({ error: error.message }), { itemData: { item: i } }, diff --git a/packages/nodes-base/nodes/Aws/S3/V2/AwsS3V2.node.ts b/packages/nodes-base/nodes/Aws/S3/V2/AwsS3V2.node.ts index 075277eccc..34cdef556a 100644 --- a/packages/nodes-base/nodes/Aws/S3/V2/AwsS3V2.node.ts +++ b/packages/nodes-base/nodes/Aws/S3/V2/AwsS3V2.node.ts @@ -1,4 +1,3 @@ -/* eslint-disable n8n-nodes-base/node-filename-against-convention */ import { createHash } from 'crypto'; import type { Readable } from 'stream'; import { paramCase, snakeCase } from 'change-case'; @@ -13,7 +12,7 @@ import type { INodeTypeBaseDescription, INodeTypeDescription, } from 'n8n-workflow'; -import { NodeOperationError } from 'n8n-workflow'; +import { NodeConnectionType, NodeOperationError } from 'n8n-workflow'; import { bucketFields, bucketOperations } from './BucketDescription'; @@ -42,8 +41,8 @@ export class AwsS3V2 implements INodeType { defaults: { name: 'AWS S3', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'aws', @@ -217,7 +216,7 @@ export class AwsS3V2 implements INodeType { const servicePath = bucketName.includes('.') ? 's3' : `${bucketName}.s3`; const basePath = bucketName.includes('.') ? `/${bucketName}` : ''; const returnAll = this.getNodeParameter('returnAll', 0); - const additionalFields = this.getNodeParameter('additionalFields', 0); + const additionalFields = this.getNodeParameter('additionalFields', i); if (additionalFields.prefix) { qs.prefix = additionalFields.prefix as string; @@ -1057,7 +1056,7 @@ export class AwsS3V2 implements INodeType { } } } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { const executionData = this.helpers.constructExecutionMetaData( this.helpers.returnJsonArray({ error: error.message }), { itemData: { item: i } }, diff --git a/packages/nodes-base/nodes/Aws/SES/AwsSes.node.json b/packages/nodes-base/nodes/Aws/SES/AwsSes.node.json index 97d4ba9e15..7776155690 100644 --- a/packages/nodes-base/nodes/Aws/SES/AwsSes.node.json +++ b/packages/nodes-base/nodes/Aws/SES/AwsSes.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/aws" + "url": "https://docs.n8n.io/integrations/builtin/credentials/aws/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Aws/SES/AwsSes.node.ts b/packages/nodes-base/nodes/Aws/SES/AwsSes.node.ts index ce0f1ad1a4..052928a681 100644 --- a/packages/nodes-base/nodes/Aws/SES/AwsSes.node.ts +++ b/packages/nodes-base/nodes/Aws/SES/AwsSes.node.ts @@ -8,7 +8,7 @@ import type { INodeType, INodeTypeDescription, } from 'n8n-workflow'; -import { NodeOperationError } from 'n8n-workflow'; +import { NodeConnectionType, NodeOperationError } from 'n8n-workflow'; import { awsApiRequestSOAP, awsApiRequestSOAPAllItems } from './GenericFunctions'; @@ -30,8 +30,8 @@ export class AwsSes implements INodeType { defaults: { name: 'AWS SES', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'aws', @@ -459,7 +459,7 @@ export class AwsSes implements INodeType { }, default: '', description: - 'The ARN of the template to use when sending this email. Choose from the list, or specify an ID using an expression.', + 'The ARN of the template to use when sending this email. Choose from the list, or specify an ID using an expression.', }, { displayName: 'From Email', @@ -1285,7 +1285,7 @@ export class AwsSes implements INodeType { ); returnData.push(...executionData); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { const executionData = this.helpers.constructExecutionMetaData( this.helpers.returnJsonArray({ error: error.message }), { itemData: { item: i } }, diff --git a/packages/nodes-base/nodes/Aws/SQS/AwsSqs.node.json b/packages/nodes-base/nodes/Aws/SQS/AwsSqs.node.json index 95e115fdf2..53ec3d6b55 100644 --- a/packages/nodes-base/nodes/Aws/SQS/AwsSqs.node.json +++ b/packages/nodes-base/nodes/Aws/SQS/AwsSqs.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/aws" + "url": "https://docs.n8n.io/integrations/builtin/credentials/aws/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Aws/SQS/AwsSqs.node.ts b/packages/nodes-base/nodes/Aws/SQS/AwsSqs.node.ts index 7911b5419f..ba99d9fcac 100644 --- a/packages/nodes-base/nodes/Aws/SQS/AwsSqs.node.ts +++ b/packages/nodes-base/nodes/Aws/SQS/AwsSqs.node.ts @@ -10,7 +10,7 @@ import type { INodeTypeDescription, JsonObject, } from 'n8n-workflow'; -import { NodeApiError } from 'n8n-workflow'; +import { NodeApiError, NodeConnectionType } from 'n8n-workflow'; import { pascalCase } from 'change-case'; import { awsApiRequestSOAP } from '../GenericFunctions'; @@ -27,8 +27,8 @@ export class AwsSqs implements INodeType { defaults: { name: 'AWS SQS', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'aws', @@ -67,7 +67,7 @@ export class AwsSqs implements INodeType { default: '', required: true, description: - 'Queue to send a message to. Choose from the list, or specify an ID using an expression.', + 'Queue to send a message to. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Queue Type', @@ -132,7 +132,7 @@ export class AwsSqs implements INodeType { }, }, default: {}, - placeholder: 'Add Option', + placeholder: 'Add option', options: [ { displayName: 'Delay Seconds', @@ -378,7 +378,7 @@ export class AwsSqs implements INodeType { const result = responseData.SendMessageResponse.SendMessageResult; returnData.push(result as IDataObject); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push({ error: error.description }); continue; } diff --git a/packages/nodes-base/nodes/Aws/Textract/AwsTextract.node.json b/packages/nodes-base/nodes/Aws/Textract/AwsTextract.node.json index c4455e0d2d..f9df371003 100644 --- a/packages/nodes-base/nodes/Aws/Textract/AwsTextract.node.json +++ b/packages/nodes-base/nodes/Aws/Textract/AwsTextract.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/aws" + "url": "https://docs.n8n.io/integrations/builtin/credentials/aws/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Aws/Textract/AwsTextract.node.ts b/packages/nodes-base/nodes/Aws/Textract/AwsTextract.node.ts index ebb845f3b9..6d032b3d89 100644 --- a/packages/nodes-base/nodes/Aws/Textract/AwsTextract.node.ts +++ b/packages/nodes-base/nodes/Aws/Textract/AwsTextract.node.ts @@ -1,13 +1,14 @@ -import type { - ICredentialDataDecryptedObject, - ICredentialsDecrypted, - ICredentialTestFunctions, - IDataObject, - IExecuteFunctions, - INodeCredentialTestResult, - INodeExecutionData, - INodeType, - INodeTypeDescription, +import { + NodeConnectionType, + type ICredentialDataDecryptedObject, + type ICredentialsDecrypted, + type ICredentialTestFunctions, + type IDataObject, + type IExecuteFunctions, + type INodeCredentialTestResult, + type INodeExecutionData, + type INodeType, + type INodeTypeDescription, } from 'n8n-workflow'; import type { IExpenseDocument } from './GenericFunctions'; @@ -25,8 +26,8 @@ export class AwsTextract implements INodeType { defaults: { name: 'AWS Textract', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'aws', @@ -143,7 +144,7 @@ export class AwsTextract implements INodeType { returnData.push(responseData as unknown as IDataObject); } } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push({ error: error.message }); continue; } diff --git a/packages/nodes-base/nodes/Aws/Transcribe/AwsTranscribe.node.json b/packages/nodes-base/nodes/Aws/Transcribe/AwsTranscribe.node.json index 8545b52642..35d4215508 100644 --- a/packages/nodes-base/nodes/Aws/Transcribe/AwsTranscribe.node.json +++ b/packages/nodes-base/nodes/Aws/Transcribe/AwsTranscribe.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/aws" + "url": "https://docs.n8n.io/integrations/builtin/credentials/aws/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Aws/Transcribe/AwsTranscribe.node.ts b/packages/nodes-base/nodes/Aws/Transcribe/AwsTranscribe.node.ts index a5cfebd761..013279db5d 100644 --- a/packages/nodes-base/nodes/Aws/Transcribe/AwsTranscribe.node.ts +++ b/packages/nodes-base/nodes/Aws/Transcribe/AwsTranscribe.node.ts @@ -5,6 +5,7 @@ import type { INodeType, INodeTypeDescription, } from 'n8n-workflow'; +import { NodeConnectionType } from 'n8n-workflow'; import { awsApiRequestREST, awsApiRequestRESTAllItems } from './GenericFunctions'; @@ -20,8 +21,8 @@ export class AwsTranscribe implements INodeType { defaults: { name: 'AWS Transcribe', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'aws', @@ -166,7 +167,7 @@ export class AwsTranscribe implements INodeType { displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', displayOptions: { show: { operation: ['create'], @@ -539,7 +540,7 @@ export class AwsTranscribe implements INodeType { returnData.push(responseData as IDataObject); } } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push({ error: error.message }); continue; } diff --git a/packages/nodes-base/nodes/BambooHr/BambooHr.node.json b/packages/nodes-base/nodes/BambooHr/BambooHr.node.json index 5f0f33ae2b..c1dfa45ba9 100644 --- a/packages/nodes-base/nodes/BambooHr/BambooHr.node.json +++ b/packages/nodes-base/nodes/BambooHr/BambooHr.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/bambooHr/" + "url": "https://docs.n8n.io/integrations/builtin/credentials/bambooHr/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/BambooHr/v1/actions/employee/create/shareDescription.ts b/packages/nodes-base/nodes/BambooHr/v1/actions/employee/create/shareDescription.ts index cc06de2dc1..fc0c688b9d 100644 --- a/packages/nodes-base/nodes/BambooHr/v1/actions/employee/create/shareDescription.ts +++ b/packages/nodes-base/nodes/BambooHr/v1/actions/employee/create/shareDescription.ts @@ -65,7 +65,7 @@ export const createEmployeeSharedDescription = (sync = false): INodeProperties[] name: 'department', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getDepartments', }, @@ -76,7 +76,7 @@ export const createEmployeeSharedDescription = (sync = false): INodeProperties[] name: 'division', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getDivisions', }, @@ -131,7 +131,7 @@ export const createEmployeeSharedDescription = (sync = false): INodeProperties[] name: 'location', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getEmployeeLocations', }, diff --git a/packages/nodes-base/nodes/BambooHr/v1/actions/employee/get/description.ts b/packages/nodes-base/nodes/BambooHr/v1/actions/employee/get/description.ts index 47ed409869..6212cb74fb 100644 --- a/packages/nodes-base/nodes/BambooHr/v1/actions/employee/get/description.ts +++ b/packages/nodes-base/nodes/BambooHr/v1/actions/employee/get/description.ts @@ -36,7 +36,7 @@ export const employeeGetDescription: EmployeeProperties = [ }, default: ['all'], description: - 'Set of fields to get from employee data. Choose from the list, or specify IDs using an expression.', + 'Set of fields to get from employee data. Choose from the list, or specify IDs using an expression.', }, ], }, diff --git a/packages/nodes-base/nodes/BambooHr/v1/actions/employee/update/sharedDescription.ts b/packages/nodes-base/nodes/BambooHr/v1/actions/employee/update/sharedDescription.ts index 6dc0790177..afc2939eda 100644 --- a/packages/nodes-base/nodes/BambooHr/v1/actions/employee/update/sharedDescription.ts +++ b/packages/nodes-base/nodes/BambooHr/v1/actions/employee/update/sharedDescription.ts @@ -65,7 +65,7 @@ export const updateEmployeeSharedDescription = (sync = false): INodeProperties[] name: 'department', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getDepartments', }, @@ -76,7 +76,7 @@ export const updateEmployeeSharedDescription = (sync = false): INodeProperties[] name: 'division', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getDivisions', }, @@ -153,7 +153,7 @@ export const updateEmployeeSharedDescription = (sync = false): INodeProperties[] name: 'location', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getEmployeeLocations', }, diff --git a/packages/nodes-base/nodes/BambooHr/v1/actions/employeeDocument/update/description.ts b/packages/nodes-base/nodes/BambooHr/v1/actions/employeeDocument/update/description.ts index db711e6e32..cd18901a5e 100644 --- a/packages/nodes-base/nodes/BambooHr/v1/actions/employeeDocument/update/description.ts +++ b/packages/nodes-base/nodes/BambooHr/v1/actions/employeeDocument/update/description.ts @@ -50,7 +50,7 @@ export const employeeDocumentUpdateDescription: EmployeeDocumentProperties = [ }, default: '', description: - 'ID of the new category of the file. Choose from the list, or specify an ID using an expression.', + 'ID of the new category of the file. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Name', diff --git a/packages/nodes-base/nodes/BambooHr/v1/actions/file/update/description.ts b/packages/nodes-base/nodes/BambooHr/v1/actions/file/update/description.ts index 8f332f46fc..7052b55344 100644 --- a/packages/nodes-base/nodes/BambooHr/v1/actions/file/update/description.ts +++ b/packages/nodes-base/nodes/BambooHr/v1/actions/file/update/description.ts @@ -37,7 +37,7 @@ export const fileUpdateDescription: FileProperties = [ }, default: '', description: - 'Move the file to a different category. Choose from the list, or specify an ID using an expression.', + 'Move the file to a different category. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Name', diff --git a/packages/nodes-base/nodes/BambooHr/v1/actions/file/upload/description.ts b/packages/nodes-base/nodes/BambooHr/v1/actions/file/upload/description.ts index f949e3ed93..4d3581185d 100644 --- a/packages/nodes-base/nodes/BambooHr/v1/actions/file/upload/description.ts +++ b/packages/nodes-base/nodes/BambooHr/v1/actions/file/upload/description.ts @@ -21,7 +21,7 @@ export const fileUploadDescription: INodeProperties[] = [ name: 'categoryId', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getCompanyFileCategories', }, diff --git a/packages/nodes-base/nodes/BambooHr/v1/actions/router.ts b/packages/nodes-base/nodes/BambooHr/v1/actions/router.ts index 4d3f434a2a..9e8cb85a9e 100644 --- a/packages/nodes-base/nodes/BambooHr/v1/actions/router.ts +++ b/packages/nodes-base/nodes/BambooHr/v1/actions/router.ts @@ -39,7 +39,7 @@ export async function router(this: IExecuteFunctions): Promiseexpression.', + 'The template ID you want to use. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Additional Fields', @@ -134,7 +134,7 @@ export const imageFields: INodeProperties[] = [ }, default: '', description: - 'The name of the item you want to change. Choose from the list, or specify an ID using an expression.', + 'The name of the item you want to change. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Text', diff --git a/packages/nodes-base/nodes/Baserow/Baserow.node.json b/packages/nodes-base/nodes/Baserow/Baserow.node.json index 02f5504e50..176ec1664e 100644 --- a/packages/nodes-base/nodes/Baserow/Baserow.node.json +++ b/packages/nodes-base/nodes/Baserow/Baserow.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/baserow" + "url": "https://docs.n8n.io/integrations/builtin/credentials/baserow/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Baserow/Baserow.node.ts b/packages/nodes-base/nodes/Baserow/Baserow.node.ts index 4760e96a13..bb378a97da 100644 --- a/packages/nodes-base/nodes/Baserow/Baserow.node.ts +++ b/packages/nodes-base/nodes/Baserow/Baserow.node.ts @@ -1,10 +1,11 @@ -import type { - IExecuteFunctions, - IDataObject, - ILoadOptionsFunctions, - INodeExecutionData, - INodeType, - INodeTypeDescription, +import { + type IExecuteFunctions, + type IDataObject, + type ILoadOptionsFunctions, + type INodeExecutionData, + type INodeType, + type INodeTypeDescription, + NodeConnectionType, } from 'n8n-workflow'; import { @@ -38,8 +39,9 @@ export class Baserow implements INodeType { defaults: { name: 'Baserow', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], + usableAsTool: true, credentials: [ { name: 'baserowApi', @@ -111,7 +113,7 @@ export class Baserow implements INodeType { methods = { loadOptions: { async getDatabaseIds(this: ILoadOptionsFunctions) { - const credentials = (await this.getCredentials('baserowApi')) as BaserowCredentials; + const credentials = await this.getCredentials('baserowApi'); const jwtToken = await getJwtToken.call(this, credentials); const endpoint = '/api/applications/'; const databases = (await baserowApiRequest.call( @@ -124,7 +126,7 @@ export class Baserow implements INodeType { }, async getTableIds(this: ILoadOptionsFunctions) { - const credentials = (await this.getCredentials('baserowApi')) as BaserowCredentials; + const credentials = await this.getCredentials('baserowApi'); const jwtToken = await getJwtToken.call(this, credentials); const databaseId = this.getNodeParameter('databaseId', 0) as string; const endpoint = `/api/database/tables/database/${databaseId}/`; @@ -138,7 +140,7 @@ export class Baserow implements INodeType { }, async getTableFields(this: ILoadOptionsFunctions) { - const credentials = (await this.getCredentials('baserowApi')) as BaserowCredentials; + const credentials = await this.getCredentials('baserowApi'); const jwtToken = await getJwtToken.call(this, credentials); const tableId = this.getNodeParameter('tableId', 0) as string; const endpoint = `/api/database/fields/table/${tableId}/`; @@ -160,7 +162,7 @@ export class Baserow implements INodeType { const operation = this.getNodeParameter('operation', 0) as Operation; const tableId = this.getNodeParameter('tableId', 0) as string; - const credentials = (await this.getCredentials('baserowApi')) as BaserowCredentials; + const credentials = await this.getCredentials('baserowApi'); const jwtToken = await getJwtToken.call(this, credentials); const fields = await mapper.getTableFields.call(this, tableId, jwtToken); mapper.createMappings(fields); @@ -333,7 +335,7 @@ export class Baserow implements INodeType { returnData.push(...executionData); } } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push({ error: error.message, json: {}, itemIndex: i }); continue; } diff --git a/packages/nodes-base/nodes/Baserow/GenericFunctions.ts b/packages/nodes-base/nodes/Baserow/GenericFunctions.ts index 8e30c5c148..ba33755e2f 100644 --- a/packages/nodes-base/nodes/Baserow/GenericFunctions.ts +++ b/packages/nodes-base/nodes/Baserow/GenericFunctions.ts @@ -21,7 +21,7 @@ export async function baserowApiRequest( body: IDataObject = {}, qs: IDataObject = {}, ) { - const credentials = (await this.getCredentials('baserowApi')) as BaserowCredentials; + const credentials = await this.getCredentials('baserowApi'); const options: IRequestOptions = { headers: { @@ -169,7 +169,7 @@ export class TableFieldMapper { } setField(field: string) { - return this.mapIds ? field : this.nameToIdMapping[field] ?? field; + return this.mapIds ? field : (this.nameToIdMapping[field] ?? field); } idsToNames(obj: Record) { diff --git a/packages/nodes-base/nodes/Baserow/OperationDescription.ts b/packages/nodes-base/nodes/Baserow/OperationDescription.ts index 9a23053d81..36332d1423 100644 --- a/packages/nodes-base/nodes/Baserow/OperationDescription.ts +++ b/packages/nodes-base/nodes/Baserow/OperationDescription.ts @@ -11,7 +11,7 @@ export const operationFields: INodeProperties[] = [ default: '', required: true, description: - 'Database to operate on. Choose from the list, or specify an ID using an expression.', + 'Database to operate on. Choose from the list, or specify an ID using an expression.', typeOptions: { loadOptionsMethod: 'getDatabaseIds', }, @@ -23,7 +23,7 @@ export const operationFields: INodeProperties[] = [ default: '', required: true, description: - 'Table to operate on. Choose from the list, or specify an ID using an expression.', + 'Table to operate on. Choose from the list, or specify an ID using an expression.', typeOptions: { loadOptionsDependsOn: ['databaseId'], loadOptionsMethod: 'getTableIds', @@ -132,7 +132,7 @@ export const operationFields: INodeProperties[] = [ name: 'fieldId', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsDependsOn: ['tableId'], loadOptionsMethod: 'getTableFields', @@ -203,7 +203,7 @@ export const operationFields: INodeProperties[] = [ displayName: 'Options', name: 'additionalOptions', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, displayOptions: { show: { @@ -232,7 +232,7 @@ export const operationFields: INodeProperties[] = [ type: 'options', default: '', description: - 'Field to compare. Choose from the list, or specify an ID using an expression.', + 'Field to compare. Choose from the list, or specify an ID using an expression.', typeOptions: { loadOptionsDependsOn: ['tableId'], loadOptionsMethod: 'getTableFields', @@ -411,7 +411,7 @@ export const operationFields: INodeProperties[] = [ type: 'options', default: '', description: - 'Field name to sort by. Choose from the list, or specify an ID using an expression.', + 'Field name to sort by. Choose from the list, or specify an ID using an expression.', typeOptions: { loadOptionsDependsOn: ['tableId'], loadOptionsMethod: 'getTableFields', diff --git a/packages/nodes-base/nodes/Beeminder/Beeminder.node.json b/packages/nodes-base/nodes/Beeminder/Beeminder.node.json index c183df0b1b..49d312eec8 100644 --- a/packages/nodes-base/nodes/Beeminder/Beeminder.node.json +++ b/packages/nodes-base/nodes/Beeminder/Beeminder.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/beeminder/" + "url": "https://docs.n8n.io/integrations/builtin/credentials/beeminder/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Beeminder/Beeminder.node.ts b/packages/nodes-base/nodes/Beeminder/Beeminder.node.ts index c588e4540d..751bb19fc0 100644 --- a/packages/nodes-base/nodes/Beeminder/Beeminder.node.ts +++ b/packages/nodes-base/nodes/Beeminder/Beeminder.node.ts @@ -1,12 +1,13 @@ -import type { - IExecuteFunctions, - IDataObject, - ILoadOptionsFunctions, - INodeExecutionData, - INodeParameters, - INodePropertyOptions, - INodeType, - INodeTypeDescription, +import { + type IExecuteFunctions, + type IDataObject, + type ILoadOptionsFunctions, + type INodeExecutionData, + type INodeParameters, + type INodePropertyOptions, + type INodeType, + type INodeTypeDescription, + NodeConnectionType, } from 'n8n-workflow'; import moment from 'moment-timezone'; @@ -32,8 +33,8 @@ export class Beeminder implements INodeType { }, // eslint-disable-next-line n8n-nodes-base/node-class-description-icon-not-svg icon: 'file:beeminder.png', - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'beeminderApi', @@ -103,7 +104,7 @@ export class Beeminder implements INodeType { }, default: '', description: - 'The name of the goal. Choose from the list, or specify an ID using an expression.', + 'The name of the goal. Choose from the list, or specify an ID using an expression.', required: true, }, { @@ -370,7 +371,7 @@ export class Beeminder implements INodeType { } } } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push({ error: error.message, json: {}, itemIndex: i }); continue; } diff --git a/packages/nodes-base/nodes/Bitbucket/BitbucketTrigger.node.json b/packages/nodes-base/nodes/Bitbucket/BitbucketTrigger.node.json index 4b4f71fb4b..b1487895de 100644 --- a/packages/nodes-base/nodes/Bitbucket/BitbucketTrigger.node.json +++ b/packages/nodes-base/nodes/Bitbucket/BitbucketTrigger.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/bitbucket" + "url": "https://docs.n8n.io/integrations/builtin/credentials/bitbucket/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Bitbucket/BitbucketTrigger.node.ts b/packages/nodes-base/nodes/Bitbucket/BitbucketTrigger.node.ts index e0e6a13778..fd789e4822 100644 --- a/packages/nodes-base/nodes/Bitbucket/BitbucketTrigger.node.ts +++ b/packages/nodes-base/nodes/Bitbucket/BitbucketTrigger.node.ts @@ -1,16 +1,17 @@ -import type { - IHookFunctions, - IWebhookFunctions, - ICredentialsDecrypted, - ICredentialTestFunctions, - IDataObject, - ILoadOptionsFunctions, - INodeCredentialTestResult, - INodePropertyOptions, - INodeType, - INodeTypeDescription, - IWebhookResponseData, - IRequestOptions, +import { + type IHookFunctions, + type IWebhookFunctions, + type ICredentialsDecrypted, + type ICredentialTestFunctions, + type IDataObject, + type ILoadOptionsFunctions, + type INodeCredentialTestResult, + type INodePropertyOptions, + type INodeType, + type INodeTypeDescription, + type IWebhookResponseData, + type IRequestOptions, + NodeConnectionType, } from 'n8n-workflow'; import { bitbucketApiRequest, bitbucketApiRequestAllItems } from './GenericFunctions'; @@ -27,7 +28,7 @@ export class BitbucketTrigger implements INodeType { name: 'Bitbucket Trigger', }, inputs: [], - outputs: ['main'], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'bitbucketApi', @@ -77,7 +78,7 @@ export class BitbucketTrigger implements INodeType { required: true, default: '', description: - 'The repository of which to listen to the events. Choose from the list, or specify an ID using an expression.', + 'The repository of which to listen to the events. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Event Names or IDs', @@ -95,7 +96,7 @@ export class BitbucketTrigger implements INodeType { required: true, default: [], description: - 'The events to listen to. Choose from the list, or specify IDs using an expression.', + 'The events to listen to. Choose from the list, or specify IDs using an expression.', }, { displayName: 'Repository Name or ID', @@ -113,7 +114,7 @@ export class BitbucketTrigger implements INodeType { required: true, default: '', description: - 'The repository of which to listen to the events. Choose from the list, or specify an ID using an expression.', + 'The repository of which to listen to the events. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Event Names or IDs', @@ -131,7 +132,7 @@ export class BitbucketTrigger implements INodeType { required: true, default: [], description: - 'The events to listen to. Choose from the list, or specify IDs using an expression.', + 'The events to listen to. Choose from the list, or specify IDs using an expression.', }, ], }; diff --git a/packages/nodes-base/nodes/Bitly/Bitly.node.json b/packages/nodes-base/nodes/Bitly/Bitly.node.json index aa51a3b5cc..f273087ed3 100644 --- a/packages/nodes-base/nodes/Bitly/Bitly.node.json +++ b/packages/nodes-base/nodes/Bitly/Bitly.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/bitly" + "url": "https://docs.n8n.io/integrations/builtin/credentials/bitly/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Bitly/Bitly.node.ts b/packages/nodes-base/nodes/Bitly/Bitly.node.ts index f6c1102b8d..3a62d5f072 100644 --- a/packages/nodes-base/nodes/Bitly/Bitly.node.ts +++ b/packages/nodes-base/nodes/Bitly/Bitly.node.ts @@ -7,6 +7,7 @@ import type { INodeType, INodeTypeDescription, } from 'n8n-workflow'; +import { NodeConnectionType } from 'n8n-workflow'; import { linkFields, linkOperations } from './LinkDescription'; @@ -24,8 +25,8 @@ export class Bitly implements INodeType { defaults: { name: 'Bitly', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'bitlyApi', @@ -211,7 +212,7 @@ export class Bitly implements INodeType { ); returnData.push(...executionData); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push({ error: error.message, json: {}, itemIndex: i }); continue; } diff --git a/packages/nodes-base/nodes/Bitly/LinkDescription.ts b/packages/nodes-base/nodes/Bitly/LinkDescription.ts index cde8e82508..29271e0967 100644 --- a/packages/nodes-base/nodes/Bitly/LinkDescription.ts +++ b/packages/nodes-base/nodes/Bitly/LinkDescription.ts @@ -77,7 +77,7 @@ export const linkFields: INodeProperties[] = [ name: 'group', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', default: '', typeOptions: { loadOptionsMethod: 'getGroups', @@ -88,7 +88,7 @@ export const linkFields: INodeProperties[] = [ name: 'tags', type: 'multiOptions', description: - 'Choose from the list, or specify IDs using an expression', + 'Choose from the list, or specify IDs using an expression', default: [], typeOptions: { loadOptionsMethod: 'getTags', @@ -192,7 +192,7 @@ export const linkFields: INodeProperties[] = [ name: 'group', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', default: '', typeOptions: { loadOptionsMethod: 'getGroups', @@ -209,7 +209,7 @@ export const linkFields: INodeProperties[] = [ name: 'tags', type: 'multiOptions', description: - 'Choose from the list, or specify IDs using an expression', + 'Choose from the list, or specify IDs using an expression', default: [], typeOptions: { loadOptionsMethod: 'getTags', diff --git a/packages/nodes-base/nodes/Bitwarden/Bitwarden.node.json b/packages/nodes-base/nodes/Bitwarden/Bitwarden.node.json index e73d9f8a59..56c626f19f 100644 --- a/packages/nodes-base/nodes/Bitwarden/Bitwarden.node.json +++ b/packages/nodes-base/nodes/Bitwarden/Bitwarden.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/bitwarden" + "url": "https://docs.n8n.io/integrations/builtin/credentials/bitwarden/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Bitwarden/Bitwarden.node.ts b/packages/nodes-base/nodes/Bitwarden/Bitwarden.node.ts index 2a7ca10685..eaea3c48c6 100644 --- a/packages/nodes-base/nodes/Bitwarden/Bitwarden.node.ts +++ b/packages/nodes-base/nodes/Bitwarden/Bitwarden.node.ts @@ -6,7 +6,7 @@ import type { INodeType, INodeTypeDescription, } from 'n8n-workflow'; -import { NodeOperationError } from 'n8n-workflow'; +import { NodeConnectionType, NodeOperationError } from 'n8n-workflow'; import isEmpty from 'lodash/isEmpty'; import partialRight from 'lodash/partialRight'; @@ -46,8 +46,8 @@ export class Bitwarden implements INodeType { defaults: { name: 'Bitwarden', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'bitwardenApi', diff --git a/packages/nodes-base/nodes/Bitwarden/descriptions/CollectionDescription.ts b/packages/nodes-base/nodes/Bitwarden/descriptions/CollectionDescription.ts index c22cc41178..1ce924bc4d 100644 --- a/packages/nodes-base/nodes/Bitwarden/descriptions/CollectionDescription.ts +++ b/packages/nodes-base/nodes/Bitwarden/descriptions/CollectionDescription.ts @@ -107,7 +107,7 @@ export const collectionFields: INodeProperties[] = [ name: 'groups', type: 'multiOptions', description: - 'The group to assign this collection to. Choose from the list, or specify IDs using an expression.', + 'The group to assign this collection to. Choose from the list, or specify IDs using an expression.', default: [], typeOptions: { loadOptionsMethod: 'getGroups', diff --git a/packages/nodes-base/nodes/Bitwarden/descriptions/GroupDescription.ts b/packages/nodes-base/nodes/Bitwarden/descriptions/GroupDescription.ts index 3f708eead3..9e0827c7ad 100644 --- a/packages/nodes-base/nodes/Bitwarden/descriptions/GroupDescription.ts +++ b/packages/nodes-base/nodes/Bitwarden/descriptions/GroupDescription.ts @@ -149,7 +149,7 @@ export const groupFields: INodeProperties[] = [ name: 'collections', type: 'multiOptions', description: - 'The collections to assign to this group. Choose from the list, or specify IDs using an expression.', + 'The collections to assign to this group. Choose from the list, or specify IDs using an expression.', default: [], typeOptions: { loadOptionsMethod: 'getCollections', @@ -194,7 +194,7 @@ export const groupFields: INodeProperties[] = [ name: 'collections', type: 'multiOptions', description: - 'The collections to assign to this group. Choose from the list, or specify IDs using an expression.', + 'The collections to assign to this group. Choose from the list, or specify IDs using an expression.', default: [], typeOptions: { loadOptionsMethod: 'getCollections', diff --git a/packages/nodes-base/nodes/Bitwarden/descriptions/MemberDescription.ts b/packages/nodes-base/nodes/Bitwarden/descriptions/MemberDescription.ts index cb3518dafd..923140e6b5 100644 --- a/packages/nodes-base/nodes/Bitwarden/descriptions/MemberDescription.ts +++ b/packages/nodes-base/nodes/Bitwarden/descriptions/MemberDescription.ts @@ -176,7 +176,7 @@ export const memberFields: INodeProperties[] = [ name: 'collections', type: 'multiOptions', description: - 'The collections to assign to this member. Choose from the list, or specify IDs using an expression.', + 'The collections to assign to this member. Choose from the list, or specify IDs using an expression.', default: [], typeOptions: { loadOptionsMethod: 'getCollections', @@ -236,7 +236,7 @@ export const memberFields: INodeProperties[] = [ name: 'collections', type: 'multiOptions', description: - 'The collections to assign to this member. Choose from the list, or specify IDs using an expression.', + 'The collections to assign to this member. Choose from the list, or specify IDs using an expression.', default: [], typeOptions: { loadOptionsMethod: 'getCollections', diff --git a/packages/nodes-base/nodes/Box/Box.node.json b/packages/nodes-base/nodes/Box/Box.node.json index 8921f18819..84e5b121e6 100644 --- a/packages/nodes-base/nodes/Box/Box.node.json +++ b/packages/nodes-base/nodes/Box/Box.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/box" + "url": "https://docs.n8n.io/integrations/builtin/credentials/box/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Box/Box.node.ts b/packages/nodes-base/nodes/Box/Box.node.ts index 31c782e054..3d9e71e3ef 100644 --- a/packages/nodes-base/nodes/Box/Box.node.ts +++ b/packages/nodes-base/nodes/Box/Box.node.ts @@ -5,7 +5,7 @@ import type { INodeType, INodeTypeDescription, } from 'n8n-workflow'; -import { NodeOperationError } from 'n8n-workflow'; +import { NodeConnectionType, NodeOperationError } from 'n8n-workflow'; import moment from 'moment-timezone'; import { noCase } from 'change-case'; @@ -28,8 +28,8 @@ export class Box implements INodeType { defaults: { name: 'Box', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'boxOAuth2Api', @@ -510,7 +510,7 @@ export class Box implements INodeType { ); returnData.push(...executionData); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { const executionErrorData = this.helpers.constructExecutionMetaData( this.helpers.returnJsonArray({ error: error.message }), { itemData: { item: i } }, diff --git a/packages/nodes-base/nodes/Box/BoxTrigger.node.json b/packages/nodes-base/nodes/Box/BoxTrigger.node.json index d4485ff160..ac06f445d5 100644 --- a/packages/nodes-base/nodes/Box/BoxTrigger.node.json +++ b/packages/nodes-base/nodes/Box/BoxTrigger.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/box" + "url": "https://docs.n8n.io/integrations/builtin/credentials/box/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Box/BoxTrigger.node.ts b/packages/nodes-base/nodes/Box/BoxTrigger.node.ts index b70bd9675f..08db55d9db 100644 --- a/packages/nodes-base/nodes/Box/BoxTrigger.node.ts +++ b/packages/nodes-base/nodes/Box/BoxTrigger.node.ts @@ -1,9 +1,10 @@ -import type { - IHookFunctions, - IWebhookFunctions, - INodeType, - INodeTypeDescription, - IWebhookResponseData, +import { + type IHookFunctions, + type IWebhookFunctions, + type INodeType, + type INodeTypeDescription, + type IWebhookResponseData, + NodeConnectionType, } from 'n8n-workflow'; import { boxApiRequest, boxApiRequestAllItems } from './GenericFunctions'; @@ -21,7 +22,7 @@ export class BoxTrigger implements INodeType { name: 'Box Trigger', }, inputs: [], - outputs: ['main'], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'boxOAuth2Api', diff --git a/packages/nodes-base/nodes/Box/FileDescription.ts b/packages/nodes-base/nodes/Box/FileDescription.ts index 48c4915740..a8159ae889 100644 --- a/packages/nodes-base/nodes/Box/FileDescription.ts +++ b/packages/nodes-base/nodes/Box/FileDescription.ts @@ -610,7 +610,7 @@ export const fileFields: INodeProperties[] = [ displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', displayOptions: { show: { operation: ['share'], diff --git a/packages/nodes-base/nodes/Box/FolderDescription.ts b/packages/nodes-base/nodes/Box/FolderDescription.ts index b975f5e78c..a3cc171b62 100644 --- a/packages/nodes-base/nodes/Box/FolderDescription.ts +++ b/packages/nodes-base/nodes/Box/FolderDescription.ts @@ -570,7 +570,7 @@ export const folderFields: INodeProperties[] = [ displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', displayOptions: { show: { operation: ['share'], diff --git a/packages/nodes-base/nodes/Brandfetch/Brandfetch.node.json b/packages/nodes-base/nodes/Brandfetch/Brandfetch.node.json index 99e0935e32..b0afd8e5de 100644 --- a/packages/nodes-base/nodes/Brandfetch/Brandfetch.node.json +++ b/packages/nodes-base/nodes/Brandfetch/Brandfetch.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/brandfetch" + "url": "https://docs.n8n.io/integrations/builtin/credentials/brandfetch/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Brandfetch/Brandfetch.node.ts b/packages/nodes-base/nodes/Brandfetch/Brandfetch.node.ts index e470296a40..237f39b9bf 100644 --- a/packages/nodes-base/nodes/Brandfetch/Brandfetch.node.ts +++ b/packages/nodes-base/nodes/Brandfetch/Brandfetch.node.ts @@ -5,8 +5,9 @@ import type { INodeType, INodeTypeDescription, } from 'n8n-workflow'; +import { NodeConnectionType } from 'n8n-workflow'; -import { brandfetchApiRequest } from './GenericFunctions'; +import { brandfetchApiRequest, fetchAndPrepareBinaryData } from './GenericFunctions'; export class Brandfetch implements INodeType { description: INodeTypeDescription = { @@ -22,8 +23,8 @@ export class Brandfetch implements INodeType { defaults: { name: 'Brandfetch', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'brandfetchApi', @@ -154,15 +155,11 @@ export class Brandfetch implements INodeType { const responseData: INodeExecutionData[] = []; for (let i = 0; i < length; i++) { try { + const domain = this.getNodeParameter('domain', i) as string; if (operation === 'logo') { - const domain = this.getNodeParameter('domain', i) as string; const download = this.getNodeParameter('download', i); - const body: IDataObject = { - domain, - }; - - const response = await brandfetchApiRequest.call(this, 'POST', '/logo', body); + const response = await brandfetchApiRequest.call(this, 'GET', `/brands/${domain}`); if (download) { const imageTypes = this.getNodeParameter('imageTypes', i) as string[]; @@ -181,29 +178,30 @@ export class Brandfetch implements INodeType { Object.assign(newItem.binary!, items[i].binary); } - newItem.json = response.response; + newItem.json = response.logos; for (const imageType of imageTypes) { for (const imageFormat of imageFormats) { - const url = response.response[imageType][ - imageFormat === 'png' ? 'image' : imageFormat - ] as string; + const logoUrls = response.logos; - if (url !== null) { - const data = await brandfetchApiRequest.call(this, 'GET', '', {}, {}, url, { - json: false, - encoding: null, - }); - - newItem.binary![`${imageType}_${imageFormat}`] = - await this.helpers.prepareBinaryData( - data as Buffer, - `${imageType}_${domain}.${imageFormat}`, - ); - - items[i] = newItem; + for (const logoUrl of logoUrls) { + if (logoUrl.type !== imageType) { + continue; + } + for (const logoFormats of logoUrl.formats) { + if (logoFormats.format === imageFormat && logoFormats.src !== null) { + await fetchAndPrepareBinaryData.call( + this, + imageType, + imageFormat, + logoFormats, + domain, + newItem, + ); + items[i] = newItem; + } + } } - items[i] = newItem; } } if (Object.keys(items[i].binary!).length === 0) { @@ -211,62 +209,38 @@ export class Brandfetch implements INodeType { } } else { const executionData = this.helpers.constructExecutionMetaData( - this.helpers.returnJsonArray(response.response as IDataObject), + this.helpers.returnJsonArray(response.logos as IDataObject), { itemData: { item: i } }, ); responseData.push(...executionData); } } if (operation === 'color') { - const domain = this.getNodeParameter('domain', i) as string; - - const body: IDataObject = { - domain, - }; - - const response = await brandfetchApiRequest.call(this, 'POST', '/color', body); + const response = await brandfetchApiRequest.call(this, 'GET', `/brands/${domain}`); const executionData = this.helpers.constructExecutionMetaData( - this.helpers.returnJsonArray(response as IDataObject), + this.helpers.returnJsonArray(response.colors as IDataObject), { itemData: { item: i } }, ); responseData.push(...executionData); } if (operation === 'font') { - const domain = this.getNodeParameter('domain', i) as string; - - const body: IDataObject = { - domain, - }; - - const response = await brandfetchApiRequest.call(this, 'POST', '/font', body); + const response = await brandfetchApiRequest.call(this, 'GET', `/brands/${domain}`); const executionData = this.helpers.constructExecutionMetaData( - this.helpers.returnJsonArray(response as IDataObject), + this.helpers.returnJsonArray(response.fonts as IDataObject), { itemData: { item: i } }, ); responseData.push(...executionData); } if (operation === 'company') { - const domain = this.getNodeParameter('domain', i) as string; - - const body: IDataObject = { - domain, - }; - - const response = await brandfetchApiRequest.call(this, 'POST', '/company', body); + const response = await brandfetchApiRequest.call(this, 'GET', `/brands/${domain}`); const executionData = this.helpers.constructExecutionMetaData( - this.helpers.returnJsonArray(response as IDataObject), + this.helpers.returnJsonArray(response.company as IDataObject), { itemData: { item: i } }, ); responseData.push(...executionData); } if (operation === 'industry') { - const domain = this.getNodeParameter('domain', i) as string; - - const body: IDataObject = { - domain, - }; - - const response = await brandfetchApiRequest.call(this, 'POST', '/industry', body); + const response = await brandfetchApiRequest.call(this, 'GET', `/brands/${domain}`); const executionData = this.helpers.constructExecutionMetaData( this.helpers.returnJsonArray(response as IDataObject), @@ -275,7 +249,7 @@ export class Brandfetch implements INodeType { responseData.push(...executionData); } } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { responseData.push({ error: error.message, json: {}, itemIndex: i }); continue; } diff --git a/packages/nodes-base/nodes/Brandfetch/GenericFunctions.ts b/packages/nodes-base/nodes/Brandfetch/GenericFunctions.ts index 6a18a4579f..654b0033ed 100644 --- a/packages/nodes-base/nodes/Brandfetch/GenericFunctions.ts +++ b/packages/nodes-base/nodes/Brandfetch/GenericFunctions.ts @@ -2,10 +2,11 @@ import type { IDataObject, IExecuteFunctions, IHookFunctions, - ILoadOptionsFunctions, - JsonObject, - IRequestOptions, IHttpRequestMethods, + IRequestOptions, + ILoadOptionsFunctions, + INodeExecutionData, + JsonObject, } from 'n8n-workflow'; import { NodeApiError } from 'n8n-workflow'; @@ -13,22 +14,17 @@ export async function brandfetchApiRequest( this: IHookFunctions | IExecuteFunctions | ILoadOptionsFunctions, method: IHttpRequestMethods, resource: string, - body: any = {}, qs: IDataObject = {}, uri?: string, option: IDataObject = {}, ): Promise { try { - const credentials = await this.getCredentials('brandfetchApi'); let options: IRequestOptions = { - headers: { - 'x-api-key': credentials.apiKey, - }, - method, + method: method as IHttpRequestMethods, qs, body, - uri: uri || `https://api.brandfetch.io/v1${resource}`, + url: uri || `https://api.brandfetch.io/v2${resource}`, json: true, }; @@ -45,7 +41,11 @@ export async function brandfetchApiRequest( delete options.qs; } - const response = await this.helpers.request(options); + const response = await this.helpers.requestWithAuthentication.call( + this, + 'brandfetchApi', + options, + ); if (response.statusCode && response.statusCode !== 200) { throw new NodeApiError(this.getNode(), response as JsonObject); @@ -56,3 +56,22 @@ export async function brandfetchApiRequest( throw new NodeApiError(this.getNode(), error as JsonObject); } } + +export async function fetchAndPrepareBinaryData( + this: IExecuteFunctions, + imageType: string, + imageFormat: string, + logoFormats: IDataObject, + domain: string, + newItem: INodeExecutionData, +) { + const data = await brandfetchApiRequest.call(this, 'GET', '', {}, {}, logoFormats.src as string, { + json: false, + encoding: null, + }); + + newItem.binary![`${imageType}_${imageFormat}`] = await this.helpers.prepareBinaryData( + Buffer.from(data), + `${imageType}_${domain}.${imageFormat}`, + ); +} diff --git a/packages/nodes-base/nodes/Brandfetch/test/GenericFunctions.test.ts b/packages/nodes-base/nodes/Brandfetch/test/GenericFunctions.test.ts new file mode 100644 index 0000000000..fbef339b58 --- /dev/null +++ b/packages/nodes-base/nodes/Brandfetch/test/GenericFunctions.test.ts @@ -0,0 +1,48 @@ +import type { + IExecuteFunctions, + IHookFunctions, + ILoadOptionsFunctions, + IHttpRequestMethods, + INode, +} from 'n8n-workflow'; + +import { brandfetchApiRequest } from '../GenericFunctions'; + +export const node: INode = { + id: 'c4a5ca75-18c7-4cc8-bf7d-5d57bb7d84da', + name: 'Brandfetch', + type: 'n8n-nodes-base.Brandfetch', + typeVersion: 1, + position: [0, 0], + parameters: { + operation: 'font', + domain: 'n8n.io', + }, +}; + +describe('Brandfetch', () => { + describe('brandfetchApiRequest', () => { + const mockThis = { + helpers: { + requestWithAuthentication: jest.fn().mockResolvedValue({ statusCode: 200 }), + }, + getNode() { + return node; + }, + getNodeParameter: jest.fn(), + } as unknown as IHookFunctions | IExecuteFunctions | ILoadOptionsFunctions; + + it('should make an authenticated API request to Brandfetch', async () => { + const method: IHttpRequestMethods = 'GET'; + const resource = '/brands/n8n.io'; + + await brandfetchApiRequest.call(mockThis, method, resource); + + expect(mockThis.helpers.requestWithAuthentication).toHaveBeenCalledWith('brandfetchApi', { + method: 'GET', + url: 'https://api.brandfetch.io/v2/brands/n8n.io', + json: true, + }); + }); + }); +}); diff --git a/packages/nodes-base/nodes/Brevo/Brevo.node.json b/packages/nodes-base/nodes/Brevo/Brevo.node.json index 8f2b5b7ac8..91ffb2458c 100644 --- a/packages/nodes-base/nodes/Brevo/Brevo.node.json +++ b/packages/nodes-base/nodes/Brevo/Brevo.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/brevo" + "url": "https://docs.n8n.io/integrations/builtin/credentials/brevo/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Brevo/Brevo.node.ts b/packages/nodes-base/nodes/Brevo/Brevo.node.ts index f4519c0651..e1e22ff46f 100644 --- a/packages/nodes-base/nodes/Brevo/Brevo.node.ts +++ b/packages/nodes-base/nodes/Brevo/Brevo.node.ts @@ -1,5 +1,6 @@ /* eslint-disable n8n-nodes-base/node-filename-against-convention */ import type { INodeType, INodeTypeDescription } from 'n8n-workflow'; +import { NodeConnectionType } from 'n8n-workflow'; import { attributeFields, attributeOperations } from './AttributeDescription'; import { contactFields, contactOperations } from './ContactDescription'; import { emailFields, emailOperations } from './EmailDescription'; @@ -18,8 +19,8 @@ export class Brevo implements INodeType { defaults: { name: 'Brevo', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'sendInBlueApi', diff --git a/packages/nodes-base/nodes/Brevo/BrevoTrigger.node.json b/packages/nodes-base/nodes/Brevo/BrevoTrigger.node.json index a4e648ab00..9a027cd405 100644 --- a/packages/nodes-base/nodes/Brevo/BrevoTrigger.node.json +++ b/packages/nodes-base/nodes/Brevo/BrevoTrigger.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/brevo" + "url": "https://docs.n8n.io/integrations/builtin/credentials/brevo/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Brevo/BrevoTrigger.node.ts b/packages/nodes-base/nodes/Brevo/BrevoTrigger.node.ts index 299b15fb59..4e2a480291 100644 --- a/packages/nodes-base/nodes/Brevo/BrevoTrigger.node.ts +++ b/packages/nodes-base/nodes/Brevo/BrevoTrigger.node.ts @@ -1,10 +1,11 @@ /* eslint-disable n8n-nodes-base/node-filename-against-convention */ -import type { - IHookFunctions, - INodeType, - INodeTypeDescription, - IWebhookFunctions, - IWebhookResponseData, +import { + NodeConnectionType, + type IHookFunctions, + type INodeType, + type INodeTypeDescription, + type IWebhookFunctions, + type IWebhookResponseData, } from 'n8n-workflow'; import { BrevoWebhookApi } from './GenericFunctions'; @@ -29,7 +30,7 @@ export class BrevoTrigger implements INodeType { inputs: [], // keep sendinblue name for backward compatibility name: 'sendInBlueTrigger', - outputs: ['main'], + outputs: [NodeConnectionType.Main], version: 1, webhooks: [ { diff --git a/packages/nodes-base/nodes/Brevo/ContactDescription.ts b/packages/nodes-base/nodes/Brevo/ContactDescription.ts index 60a67c90cb..4153edcc99 100644 --- a/packages/nodes-base/nodes/Brevo/ContactDescription.ts +++ b/packages/nodes-base/nodes/Brevo/ContactDescription.ts @@ -250,7 +250,7 @@ const getAllOperations: INodeProperties[] = [ displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', displayOptions: { show: { resource: ['contact'], diff --git a/packages/nodes-base/nodes/Brevo/GenericFunctions.ts b/packages/nodes-base/nodes/Brevo/GenericFunctions.ts index d43f3e8bfd..4b5da056c1 100644 --- a/packages/nodes-base/nodes/Brevo/GenericFunctions.ts +++ b/packages/nodes-base/nodes/Brevo/GenericFunctions.ts @@ -19,15 +19,15 @@ export namespace BrevoNode { type ValidatedEmail = ToEmail | SenderEmail | CCEmail | BBCEmail; const enum OVERRIDE_MAP_VALUES { - 'CATEGORY' = 'category', - 'NORMAL' = 'boolean', - 'TRANSACTIONAL' = 'id', + CATEGORY = 'category', + NORMAL = 'boolean', + TRANSACTIONAL = 'id', } const enum OVERRIDE_MAP_TYPE { - 'CATEGORY' = 'category', - 'NORMAL' = 'normal', - 'TRANSACTIONAL' = 'transactional', + CATEGORY = 'category', + NORMAL = 'normal', + TRANSACTIONAL = 'transactional', } export const INTERCEPTORS = new Map void>([ diff --git a/packages/nodes-base/nodes/Bubble/Bubble.node.json b/packages/nodes-base/nodes/Bubble/Bubble.node.json index 1fe0a6f865..1337e02b89 100644 --- a/packages/nodes-base/nodes/Bubble/Bubble.node.json +++ b/packages/nodes-base/nodes/Bubble/Bubble.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/bubble" + "url": "https://docs.n8n.io/integrations/builtin/credentials/bubble/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Bubble/Bubble.node.ts b/packages/nodes-base/nodes/Bubble/Bubble.node.ts index ea8b74b8f2..d63c980266 100644 --- a/packages/nodes-base/nodes/Bubble/Bubble.node.ts +++ b/packages/nodes-base/nodes/Bubble/Bubble.node.ts @@ -5,7 +5,7 @@ import type { INodeType, INodeTypeDescription, } from 'n8n-workflow'; -import { NodeOperationError } from 'n8n-workflow'; +import { NodeConnectionType, NodeOperationError } from 'n8n-workflow'; import { bubbleApiRequest, bubbleApiRequestAllItems, validateJSON } from './GenericFunctions'; @@ -23,8 +23,8 @@ export class Bubble implements INodeType { defaults: { name: 'Bubble', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'bubbleApi', diff --git a/packages/nodes-base/nodes/Cal/CalTrigger.node.json b/packages/nodes-base/nodes/Cal/CalTrigger.node.json index 5bc36c3536..4918446308 100644 --- a/packages/nodes-base/nodes/Cal/CalTrigger.node.json +++ b/packages/nodes-base/nodes/Cal/CalTrigger.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/cal" + "url": "https://docs.n8n.io/integrations/builtin/credentials/cal/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Cal/CalTrigger.node.ts b/packages/nodes-base/nodes/Cal/CalTrigger.node.ts index 8d2b6c3d17..af60e1d2e5 100644 --- a/packages/nodes-base/nodes/Cal/CalTrigger.node.ts +++ b/packages/nodes-base/nodes/Cal/CalTrigger.node.ts @@ -1,30 +1,31 @@ -import type { - IDataObject, - IHookFunctions, - IWebhookFunctions, - ILoadOptionsFunctions, - INodePropertyOptions, - INodeType, - INodeTypeDescription, - IWebhookResponseData, +import { + type IDataObject, + type IHookFunctions, + type IWebhookFunctions, + type ILoadOptionsFunctions, + type INodePropertyOptions, + type INodeType, + type INodeTypeDescription, + type IWebhookResponseData, + NodeConnectionType, } from 'n8n-workflow'; import { calApiRequest, sortOptionParameters } from './GenericFunctions'; export class CalTrigger implements INodeType { description: INodeTypeDescription = { - displayName: 'Cal Trigger', + displayName: 'Cal.com Trigger', name: 'calTrigger', icon: { light: 'file:cal.svg', dark: 'file:cal.dark.svg' }, group: ['trigger'], version: [1, 2], subtitle: '=Events: {{$parameter["events"].join(", ")}}', - description: 'Handle Cal events via webhooks', + description: 'Handle Cal.com events via webhooks', defaults: { - name: 'Cal Trigger', + name: 'Cal.com Trigger', }, inputs: [], - outputs: ['main'], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'calApi', @@ -135,7 +136,7 @@ export class CalTrigger implements INodeType { loadOptionsMethod: 'getEventTypes', }, description: - 'The EventType to monitor. Choose from the list, or specify an ID using an expression.', + 'The EventType to monitor. Choose from the list, or specify an ID using an expression.', default: '', }, { diff --git a/packages/nodes-base/nodes/Calendly/CalendlyTrigger.node.json b/packages/nodes-base/nodes/Calendly/CalendlyTrigger.node.json index afe035b15c..a5d36bb072 100644 --- a/packages/nodes-base/nodes/Calendly/CalendlyTrigger.node.json +++ b/packages/nodes-base/nodes/Calendly/CalendlyTrigger.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/calendly" + "url": "https://docs.n8n.io/integrations/builtin/credentials/calendly/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Calendly/CalendlyTrigger.node.ts b/packages/nodes-base/nodes/Calendly/CalendlyTrigger.node.ts index d2e7b12723..f235fb0dd5 100644 --- a/packages/nodes-base/nodes/Calendly/CalendlyTrigger.node.ts +++ b/packages/nodes-base/nodes/Calendly/CalendlyTrigger.node.ts @@ -6,6 +6,7 @@ import type { INodeTypeDescription, IWebhookResponseData, } from 'n8n-workflow'; +import { NodeConnectionType } from 'n8n-workflow'; import { calendlyApiRequest, getAuthenticationType } from './GenericFunctions'; @@ -21,11 +22,25 @@ export class CalendlyTrigger implements INodeType { name: 'Calendly Trigger', }, inputs: [], - outputs: ['main'], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'calendlyApi', required: true, + displayOptions: { + show: { + authentication: ['apiKey'], + }, + }, + }, + { + name: 'calendlyOAuth2Api', + required: true, + displayOptions: { + show: { + authentication: ['oAuth2'], + }, + }, }, ], webhooks: [ @@ -37,6 +52,23 @@ export class CalendlyTrigger implements INodeType { }, ], properties: [ + { + displayName: 'Authentication', + name: 'authentication', + type: 'options', + options: [ + { + // eslint-disable-next-line n8n-nodes-base/node-param-display-name-miscased + name: 'OAuth2 (recommended)', + value: 'oAuth2', + }, + { + name: 'API Key or Personal Access Token', + value: 'apiKey', + }, + ], + default: 'apiKey', + }, { displayName: 'Scope', name: 'scope', @@ -64,12 +96,12 @@ export class CalendlyTrigger implements INodeType { type: 'multiOptions', options: [ { - name: 'invitee.created', + name: 'Event Created', value: 'invitee.created', description: 'Receive notifications when a new Calendly event is created', }, { - name: 'invitee.canceled', + name: 'Event Canceled', value: 'invitee.canceled', description: 'Receive notifications when a Calendly event is canceled', }, @@ -85,10 +117,9 @@ export class CalendlyTrigger implements INodeType { async checkExists(this: IHookFunctions): Promise { const webhookUrl = this.getNodeWebhookUrl('default'); const webhookData = this.getWorkflowStaticData('node'); - const events = this.getNodeParameter('events') as string; - const { apiKey } = (await this.getCredentials('calendlyApi')) as { apiKey: string }; + const events = this.getNodeParameter('events') as string[]; - const authenticationType = getAuthenticationType(apiKey); + const authenticationType = await getAuthenticationType.call(this); // remove condition once API Keys are deprecated if (authenticationType === 'apiKey') { @@ -130,16 +161,14 @@ export class CalendlyTrigger implements INodeType { const { collection } = await calendlyApiRequest.call(this, 'GET', endpoint, {}, qs); for (const webhook of collection) { - if (webhook.callback_url === webhookUrl) { - for (const event of events) { - if (!webhook.events.includes(event)) { - return false; - } - } + if ( + webhook.callback_url === webhookUrl && + events.length === webhook.events.length && + events.every((event: string) => webhook.events.includes(event)) + ) { + webhookData.webhookURI = webhook.uri; + return true; } - - webhookData.webhookURI = webhook.uri; - return true; } } @@ -148,10 +177,9 @@ export class CalendlyTrigger implements INodeType { async create(this: IHookFunctions): Promise { const webhookData = this.getWorkflowStaticData('node'); const webhookUrl = this.getNodeWebhookUrl('default'); - const events = this.getNodeParameter('events') as string; - const { apiKey } = (await this.getCredentials('calendlyApi')) as { apiKey: string }; + const events = this.getNodeParameter('events') as string[]; - const authenticationType = getAuthenticationType(apiKey); + const authenticationType = await getAuthenticationType.call(this); // remove condition once API Keys are deprecated if (authenticationType === 'apiKey') { @@ -201,8 +229,7 @@ export class CalendlyTrigger implements INodeType { }, async delete(this: IHookFunctions): Promise { const webhookData = this.getWorkflowStaticData('node'); - const { apiKey } = (await this.getCredentials('calendlyApi')) as { apiKey: string }; - const authenticationType = getAuthenticationType(apiKey); + const authenticationType = await getAuthenticationType.call(this); // remove condition once API Keys are deprecated if (authenticationType === 'apiKey') { diff --git a/packages/nodes-base/nodes/Calendly/GenericFunctions.ts b/packages/nodes-base/nodes/Calendly/GenericFunctions.ts index 4befbb5cee..70cf55c1f2 100644 --- a/packages/nodes-base/nodes/Calendly/GenericFunctions.ts +++ b/packages/nodes-base/nodes/Calendly/GenericFunctions.ts @@ -1,6 +1,4 @@ import type { - ICredentialDataDecryptedObject, - ICredentialTestFunctions, IDataObject, IExecuteFunctions, ILoadOptionsFunctions, @@ -10,12 +8,24 @@ import type { IRequestOptions, } from 'n8n-workflow'; -export function getAuthenticationType(data: string): 'accessToken' | 'apiKey' { +function getAuthenticationTypeFromApiKey(data: string): 'accessToken' | 'apiKey' { // The access token is a JWT, so it will always include dots to separate // header, payoload and signature. return data.includes('.') ? 'accessToken' : 'apiKey'; } +export async function getAuthenticationType( + this: IExecuteFunctions | IWebhookFunctions | IHookFunctions | ILoadOptionsFunctions, +): Promise<'accessToken' | 'apiKey'> { + const authentication = this.getNodeParameter('authentication', 0) as string; + if (authentication === 'apiKey') { + const { apiKey } = await this.getCredentials<{ apiKey: string }>('calendlyApi'); + return getAuthenticationTypeFromApiKey(apiKey); + } else { + return 'accessToken'; + } +} + export async function calendlyApiRequest( this: IExecuteFunctions | IWebhookFunctions | IHookFunctions | ILoadOptionsFunctions, method: IHttpRequestMethods, @@ -26,9 +36,7 @@ export async function calendlyApiRequest( uri?: string, option: IDataObject = {}, ): Promise { - const { apiKey } = (await this.getCredentials('calendlyApi')) as { apiKey: string }; - - const authenticationType = getAuthenticationType(apiKey); + const authenticationType = await getAuthenticationType.call(this); const headers: IDataObject = { 'Content-Type': 'application/json', @@ -57,37 +65,10 @@ export async function calendlyApiRequest( delete options.qs; } options = Object.assign({}, options, option); - return await this.helpers.requestWithAuthentication.call(this, 'calendlyApi', options); -} - -export async function validateCredentials( - this: ICredentialTestFunctions, - decryptedCredentials: ICredentialDataDecryptedObject, -): Promise { - const credentials = decryptedCredentials; - - const { apiKey } = credentials as { - apiKey: string; - }; - - const authenticationType = getAuthenticationType(apiKey); - - const options: IRequestOptions = { - method: 'GET', - uri: '', - json: true, - }; - - if (authenticationType === 'accessToken') { - Object.assign(options, { - headers: { Authorization: `Bearer ${apiKey}` }, - uri: 'https://api.calendly.com/users/me', - }); - } else { - Object.assign(options, { - headers: { 'X-TOKEN': apiKey }, - uri: 'https://calendly.com/api/v1/users/me', - }); - } - return await this.helpers.request(options); + + const credentialsType = + (this.getNodeParameter('authentication', 0) as string) === 'apiKey' + ? 'calendlyApi' + : 'calendlyOAuth2Api'; + return await this.helpers.requestWithAuthentication.call(this, credentialsType, options); } diff --git a/packages/nodes-base/nodes/Chargebee/Chargebee.node.json b/packages/nodes-base/nodes/Chargebee/Chargebee.node.json index f216b1a670..6d00939dd9 100644 --- a/packages/nodes-base/nodes/Chargebee/Chargebee.node.json +++ b/packages/nodes-base/nodes/Chargebee/Chargebee.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/chargebee" + "url": "https://docs.n8n.io/integrations/builtin/credentials/chargebee/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Chargebee/Chargebee.node.ts b/packages/nodes-base/nodes/Chargebee/Chargebee.node.ts index ae6c1a997e..01032fcbe8 100644 --- a/packages/nodes-base/nodes/Chargebee/Chargebee.node.ts +++ b/packages/nodes-base/nodes/Chargebee/Chargebee.node.ts @@ -9,7 +9,7 @@ import type { IRequestOptions, IHttpRequestMethods, } from 'n8n-workflow'; -import { NodeApiError, NodeOperationError } from 'n8n-workflow'; +import { NodeApiError, NodeConnectionType, NodeOperationError } from 'n8n-workflow'; interface CustomProperty { name: string; @@ -37,8 +37,8 @@ export class Chargebee implements INodeType { defaults: { name: 'Chargebee', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'chargebeeApi', @@ -627,7 +627,7 @@ export class Chargebee implements INodeType { returnData.push(...responseData); } } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push({ error: error.message, json: {}, itemIndex: i }); continue; } diff --git a/packages/nodes-base/nodes/Chargebee/ChargebeeTrigger.node.json b/packages/nodes-base/nodes/Chargebee/ChargebeeTrigger.node.json index c316c9d3da..536ab47091 100644 --- a/packages/nodes-base/nodes/Chargebee/ChargebeeTrigger.node.json +++ b/packages/nodes-base/nodes/Chargebee/ChargebeeTrigger.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/chargebee" + "url": "https://docs.n8n.io/integrations/builtin/credentials/chargebee/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Chargebee/ChargebeeTrigger.node.ts b/packages/nodes-base/nodes/Chargebee/ChargebeeTrigger.node.ts index 2acf1b7803..fe325083e6 100644 --- a/packages/nodes-base/nodes/Chargebee/ChargebeeTrigger.node.ts +++ b/packages/nodes-base/nodes/Chargebee/ChargebeeTrigger.node.ts @@ -1,9 +1,10 @@ -import type { - IDataObject, - IWebhookFunctions, - INodeType, - INodeTypeDescription, - IWebhookResponseData, +import { + type IDataObject, + type IWebhookFunctions, + type INodeType, + type INodeTypeDescription, + type IWebhookResponseData, + NodeConnectionType, } from 'n8n-workflow'; export class ChargebeeTrigger implements INodeType { @@ -19,7 +20,7 @@ export class ChargebeeTrigger implements INodeType { name: 'Chargebee Trigger', }, inputs: [], - outputs: ['main'], + outputs: [NodeConnectionType.Main], webhooks: [ { name: 'default', diff --git a/packages/nodes-base/nodes/CircleCi/CircleCi.node.json b/packages/nodes-base/nodes/CircleCi/CircleCi.node.json index 66b14535ba..089606923a 100644 --- a/packages/nodes-base/nodes/CircleCi/CircleCi.node.json +++ b/packages/nodes-base/nodes/CircleCi/CircleCi.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/circleCi" + "url": "https://docs.n8n.io/integrations/builtin/credentials/circleCi/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/CircleCi/CircleCi.node.ts b/packages/nodes-base/nodes/CircleCi/CircleCi.node.ts index 739bb25996..37b051d7ec 100644 --- a/packages/nodes-base/nodes/CircleCi/CircleCi.node.ts +++ b/packages/nodes-base/nodes/CircleCi/CircleCi.node.ts @@ -5,6 +5,7 @@ import type { INodeType, INodeTypeDescription, } from 'n8n-workflow'; +import { NodeConnectionType } from 'n8n-workflow'; import { pipelineFields, pipelineOperations } from './PipelineDescription'; @@ -23,8 +24,8 @@ export class CircleCi implements INodeType { defaults: { name: 'CircleCI', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'circleCiApi', @@ -142,7 +143,7 @@ export class CircleCi implements INodeType { returnData.push(...(responseData as INodeExecutionData[])); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push({ error: error.message, json: {}, itemIndex: i }); continue; } diff --git a/packages/nodes-base/nodes/Cisco/Webex/CiscoWebex.node.json b/packages/nodes-base/nodes/Cisco/Webex/CiscoWebex.node.json index 2fa661687a..ede108aaba 100644 --- a/packages/nodes-base/nodes/Cisco/Webex/CiscoWebex.node.json +++ b/packages/nodes-base/nodes/Cisco/Webex/CiscoWebex.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/ciscoWebex" + "url": "https://docs.n8n.io/integrations/builtin/credentials/ciscoWebex/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Cisco/Webex/CiscoWebex.node.ts b/packages/nodes-base/nodes/Cisco/Webex/CiscoWebex.node.ts index ae9e9088c7..0d9aad5bfd 100644 --- a/packages/nodes-base/nodes/Cisco/Webex/CiscoWebex.node.ts +++ b/packages/nodes-base/nodes/Cisco/Webex/CiscoWebex.node.ts @@ -7,6 +7,7 @@ import type { INodeType, INodeTypeDescription, } from 'n8n-workflow'; +import { NodeConnectionType } from 'n8n-workflow'; import moment from 'moment-timezone'; import { getAttachments, webexApiRequest, webexApiRequestAllItems } from './GenericFunctions'; @@ -39,8 +40,8 @@ export class CiscoWebex implements INodeType { required: true, }, ], - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], properties: [ { displayName: 'Resource', @@ -489,7 +490,7 @@ export class CiscoWebex implements INodeType { returnData.push(...(responseData as INodeExecutionData[])); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push({ error: error.toString(), json: {}, itemIndex: i }); continue; } @@ -548,7 +549,7 @@ export class CiscoWebex implements INodeType { // returnData.push(...responseData.items); // } // } catch (error) { - // if (this.continueOnFail(error)) { + // if (this.continueOnFail()) { // returnData.push({ // error: error.message, // }); diff --git a/packages/nodes-base/nodes/Cisco/Webex/CiscoWebexTrigger.node.json b/packages/nodes-base/nodes/Cisco/Webex/CiscoWebexTrigger.node.json index aa2a5e3065..a2e515fc33 100644 --- a/packages/nodes-base/nodes/Cisco/Webex/CiscoWebexTrigger.node.json +++ b/packages/nodes-base/nodes/Cisco/Webex/CiscoWebexTrigger.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/ciscoWebex" + "url": "https://docs.n8n.io/integrations/builtin/credentials/ciscoWebex/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Cisco/Webex/CiscoWebexTrigger.node.ts b/packages/nodes-base/nodes/Cisco/Webex/CiscoWebexTrigger.node.ts index 2d3db0396a..c2a1fdd22a 100644 --- a/packages/nodes-base/nodes/Cisco/Webex/CiscoWebexTrigger.node.ts +++ b/packages/nodes-base/nodes/Cisco/Webex/CiscoWebexTrigger.node.ts @@ -7,6 +7,7 @@ import type { INodeTypeDescription, IWebhookResponseData, } from 'n8n-workflow'; +import { NodeConnectionType } from 'n8n-workflow'; import { getAutomaticSecret, @@ -30,7 +31,7 @@ export class CiscoWebexTrigger implements INodeType { name: 'Webex by Cisco Trigger', }, inputs: [], - outputs: ['main'], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'ciscoWebexOAuth2Api', diff --git a/packages/nodes-base/nodes/Cisco/Webex/descriptions/MeetingDescription.ts b/packages/nodes-base/nodes/Cisco/Webex/descriptions/MeetingDescription.ts index 93d3f07c2f..ecdf18b268 100644 --- a/packages/nodes-base/nodes/Cisco/Webex/descriptions/MeetingDescription.ts +++ b/packages/nodes-base/nodes/Cisco/Webex/descriptions/MeetingDescription.ts @@ -356,7 +356,7 @@ export const meetingFields: INodeProperties[] = [ }, default: '', description: - 'URL of the Webex site which the meeting is created on. If not specified, the meeting is created on user\'s preferred site. Choose from the list, or specify an ID using an expression.', + 'URL of the Webex site which the meeting is created on. If not specified, the meeting is created on user\'s preferred site. Choose from the list, or specify an ID using an expression.', }, ], }, @@ -382,7 +382,7 @@ export const meetingFields: INodeProperties[] = [ displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, displayOptions: { show: { @@ -430,7 +430,7 @@ export const meetingFields: INodeProperties[] = [ displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, displayOptions: { show: { @@ -591,7 +591,7 @@ export const meetingFields: INodeProperties[] = [ }, default: '', description: - 'URL of the Webex site which the API lists meetings from. Choose from the list, or specify an ID using an expression.', + 'URL of the Webex site which the API lists meetings from. Choose from the list, or specify an ID using an expression.', }, { displayName: 'State', @@ -939,7 +939,7 @@ export const meetingFields: INodeProperties[] = [ }, default: '', description: - 'URL of the Webex site which the meeting is created on. If not specified, the meeting is created on user\'s preferred site. Choose from the list, or specify an ID using an expression.', + 'URL of the Webex site which the meeting is created on. If not specified, the meeting is created on user\'s preferred site. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Start', diff --git a/packages/nodes-base/nodes/Cisco/Webex/descriptions/MeetingTranscript.ts b/packages/nodes-base/nodes/Cisco/Webex/descriptions/MeetingTranscript.ts index af82f39088..2203ba60fb 100644 --- a/packages/nodes-base/nodes/Cisco/Webex/descriptions/MeetingTranscript.ts +++ b/packages/nodes-base/nodes/Cisco/Webex/descriptions/MeetingTranscript.ts @@ -70,7 +70,7 @@ export const meetingTranscriptFields: INodeProperties[] = [ }, }, default: {}, - placeholder: 'Add Option', + placeholder: 'Add option', options: [ { displayName: 'Format', diff --git a/packages/nodes-base/nodes/Cisco/Webex/descriptions/MessageDescription.ts b/packages/nodes-base/nodes/Cisco/Webex/descriptions/MessageDescription.ts index 6cf90d50a5..08d5d1a76a 100644 --- a/packages/nodes-base/nodes/Cisco/Webex/descriptions/MessageDescription.ts +++ b/packages/nodes-base/nodes/Cisco/Webex/descriptions/MessageDescription.ts @@ -80,7 +80,7 @@ export const messageFields: INodeProperties[] = [ name: 'roomId', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getRooms', }, @@ -416,7 +416,7 @@ export const messageFields: INodeProperties[] = [ displayName: 'Room Name or ID', name: 'roomId', description: - 'List messages in a room, by ID. Choose from the list, or specify an ID using an expression.', + 'List messages in a room, by ID. Choose from the list, or specify an ID using an expression.', type: 'options', typeOptions: { loadOptionsMethod: 'getRooms', diff --git a/packages/nodes-base/nodes/Clearbit/Clearbit.node.json b/packages/nodes-base/nodes/Clearbit/Clearbit.node.json index 3584b4f020..9eccba1837 100644 --- a/packages/nodes-base/nodes/Clearbit/Clearbit.node.json +++ b/packages/nodes-base/nodes/Clearbit/Clearbit.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/clearbit" + "url": "https://docs.n8n.io/integrations/builtin/credentials/clearbit/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Clearbit/Clearbit.node.ts b/packages/nodes-base/nodes/Clearbit/Clearbit.node.ts index 24585c3324..f8e72c75b3 100644 --- a/packages/nodes-base/nodes/Clearbit/Clearbit.node.ts +++ b/packages/nodes-base/nodes/Clearbit/Clearbit.node.ts @@ -5,6 +5,7 @@ import type { INodeType, INodeTypeDescription, } from 'n8n-workflow'; +import { NodeConnectionType } from 'n8n-workflow'; import { clearbitApiRequest } from './GenericFunctions'; @@ -24,8 +25,8 @@ export class Clearbit implements INodeType { defaults: { name: 'Clearbit', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'clearbitApi', @@ -157,7 +158,7 @@ export class Clearbit implements INodeType { ); returnData.push(...executionData); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push({ error: error.message, json: {} }); continue; } diff --git a/packages/nodes-base/nodes/ClickUp/ClickUp.node.json b/packages/nodes-base/nodes/ClickUp/ClickUp.node.json index 30eac37e36..7ed2fee70d 100644 --- a/packages/nodes-base/nodes/ClickUp/ClickUp.node.json +++ b/packages/nodes-base/nodes/ClickUp/ClickUp.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/clickUp" + "url": "https://docs.n8n.io/integrations/builtin/credentials/clickUp/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/ClickUp/ClickUp.node.ts b/packages/nodes-base/nodes/ClickUp/ClickUp.node.ts index 26294a2bb1..2e524be59a 100644 --- a/packages/nodes-base/nodes/ClickUp/ClickUp.node.ts +++ b/packages/nodes-base/nodes/ClickUp/ClickUp.node.ts @@ -7,7 +7,7 @@ import type { INodeType, INodeTypeDescription, } from 'n8n-workflow'; -import { NodeOperationError } from 'n8n-workflow'; +import { NodeConnectionType, NodeOperationError } from 'n8n-workflow'; import moment from 'moment-timezone'; import { clickupApiRequest, clickupApiRequestAllItems, validateJSON } from './GenericFunctions'; @@ -61,8 +61,8 @@ export class ClickUp implements INodeType { defaults: { name: 'ClickUp', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'clickUpApi', @@ -1628,7 +1628,7 @@ export class ClickUp implements INodeType { ); returnData.push(...executionData); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push({ error: error.message, json: {} }); continue; } diff --git a/packages/nodes-base/nodes/ClickUp/ClickUpTrigger.node.json b/packages/nodes-base/nodes/ClickUp/ClickUpTrigger.node.json index 32933a2747..8d07c9e7ed 100644 --- a/packages/nodes-base/nodes/ClickUp/ClickUpTrigger.node.json +++ b/packages/nodes-base/nodes/ClickUp/ClickUpTrigger.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/clickUp" + "url": "https://docs.n8n.io/integrations/builtin/credentials/clickUp/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/ClickUp/ClickUpTrigger.node.ts b/packages/nodes-base/nodes/ClickUp/ClickUpTrigger.node.ts index af6e696a0c..8990684465 100644 --- a/packages/nodes-base/nodes/ClickUp/ClickUpTrigger.node.ts +++ b/packages/nodes-base/nodes/ClickUp/ClickUpTrigger.node.ts @@ -9,6 +9,7 @@ import type { INodeTypeDescription, IWebhookResponseData, } from 'n8n-workflow'; +import { NodeConnectionType } from 'n8n-workflow'; import { clickupApiRequest } from './GenericFunctions'; @@ -24,7 +25,7 @@ export class ClickUpTrigger implements INodeType { name: 'ClickUp Trigger', }, inputs: [], - outputs: ['main'], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'clickUpApi', @@ -75,7 +76,7 @@ export class ClickUpTrigger implements INodeType { name: 'team', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getTeams', }, diff --git a/packages/nodes-base/nodes/ClickUp/FolderDescription.ts b/packages/nodes-base/nodes/ClickUp/FolderDescription.ts index 861dc648b2..fae2844d9d 100644 --- a/packages/nodes-base/nodes/ClickUp/FolderDescription.ts +++ b/packages/nodes-base/nodes/ClickUp/FolderDescription.ts @@ -56,7 +56,7 @@ export const folderFields: INodeProperties[] = [ name: 'team', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', default: '', displayOptions: { show: { @@ -74,7 +74,7 @@ export const folderFields: INodeProperties[] = [ name: 'space', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', default: '', displayOptions: { show: { @@ -110,7 +110,7 @@ export const folderFields: INodeProperties[] = [ name: 'team', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', default: '', displayOptions: { show: { @@ -128,7 +128,7 @@ export const folderFields: INodeProperties[] = [ name: 'space', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', default: '', displayOptions: { show: { @@ -147,7 +147,7 @@ export const folderFields: INodeProperties[] = [ name: 'folder', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', default: '', displayOptions: { show: { @@ -170,7 +170,7 @@ export const folderFields: INodeProperties[] = [ name: 'team', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', default: '', displayOptions: { show: { @@ -188,7 +188,7 @@ export const folderFields: INodeProperties[] = [ name: 'space', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', default: '', displayOptions: { show: { @@ -207,7 +207,7 @@ export const folderFields: INodeProperties[] = [ name: 'folder', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', default: '', displayOptions: { show: { @@ -230,7 +230,7 @@ export const folderFields: INodeProperties[] = [ name: 'team', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', default: '', displayOptions: { show: { @@ -248,7 +248,7 @@ export const folderFields: INodeProperties[] = [ name: 'space', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', default: '', displayOptions: { show: { @@ -309,7 +309,7 @@ export const folderFields: INodeProperties[] = [ name: 'team', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', default: '', displayOptions: { show: { @@ -327,7 +327,7 @@ export const folderFields: INodeProperties[] = [ name: 'space', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', default: '', displayOptions: { show: { @@ -346,7 +346,7 @@ export const folderFields: INodeProperties[] = [ name: 'folder', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', default: '', displayOptions: { show: { diff --git a/packages/nodes-base/nodes/ClickUp/GoalDescription.ts b/packages/nodes-base/nodes/ClickUp/GoalDescription.ts index 1dd4d3fd54..c1af54cc68 100644 --- a/packages/nodes-base/nodes/ClickUp/GoalDescription.ts +++ b/packages/nodes-base/nodes/ClickUp/GoalDescription.ts @@ -56,7 +56,7 @@ export const goalFields: INodeProperties[] = [ name: 'team', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', default: '', displayOptions: { show: { @@ -170,7 +170,7 @@ export const goalFields: INodeProperties[] = [ name: 'team', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', default: '', displayOptions: { show: { diff --git a/packages/nodes-base/nodes/ClickUp/GuestDescription.ts b/packages/nodes-base/nodes/ClickUp/GuestDescription.ts index f1e320dca8..a3e347a231 100644 --- a/packages/nodes-base/nodes/ClickUp/GuestDescription.ts +++ b/packages/nodes-base/nodes/ClickUp/GuestDescription.ts @@ -50,7 +50,7 @@ export const guestFields: INodeProperties[] = [ name: 'team', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', default: '', displayOptions: { show: { @@ -118,7 +118,7 @@ export const guestFields: INodeProperties[] = [ name: 'team', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', default: '', displayOptions: { show: { @@ -153,7 +153,7 @@ export const guestFields: INodeProperties[] = [ name: 'team', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', default: '', displayOptions: { show: { @@ -188,7 +188,7 @@ export const guestFields: INodeProperties[] = [ name: 'team', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', default: '', displayOptions: { show: { diff --git a/packages/nodes-base/nodes/ClickUp/ListDescription.ts b/packages/nodes-base/nodes/ClickUp/ListDescription.ts index 12b6b36fb9..d9e259fca9 100644 --- a/packages/nodes-base/nodes/ClickUp/ListDescription.ts +++ b/packages/nodes-base/nodes/ClickUp/ListDescription.ts @@ -68,7 +68,7 @@ export const listFields: INodeProperties[] = [ name: 'team', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', default: '', displayOptions: { show: { @@ -86,7 +86,7 @@ export const listFields: INodeProperties[] = [ name: 'space', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', default: '', displayOptions: { show: { @@ -118,7 +118,7 @@ export const listFields: INodeProperties[] = [ name: 'folder', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', default: '', displayOptions: { show: { @@ -199,7 +199,7 @@ export const listFields: INodeProperties[] = [ name: 'status', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getStatuses', loadOptionsDependsOn: ['list'], @@ -265,7 +265,7 @@ export const listFields: INodeProperties[] = [ name: 'team', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', default: '', displayOptions: { show: { @@ -283,7 +283,7 @@ export const listFields: INodeProperties[] = [ name: 'space', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', default: '', displayOptions: { show: { @@ -315,7 +315,7 @@ export const listFields: INodeProperties[] = [ name: 'folder', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', default: '', displayOptions: { show: { @@ -335,7 +335,7 @@ export const listFields: INodeProperties[] = [ name: 'list', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', default: '', displayOptions: { show: { @@ -355,7 +355,7 @@ export const listFields: INodeProperties[] = [ name: 'list', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', default: '', displayOptions: { show: { @@ -379,7 +379,7 @@ export const listFields: INodeProperties[] = [ name: 'team', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', default: '', displayOptions: { show: { @@ -397,7 +397,7 @@ export const listFields: INodeProperties[] = [ name: 'space', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', default: '', displayOptions: { show: { @@ -429,7 +429,7 @@ export const listFields: INodeProperties[] = [ name: 'folder', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', default: '', displayOptions: { show: { @@ -466,7 +466,7 @@ export const listFields: INodeProperties[] = [ name: 'team', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', default: '', displayOptions: { show: { @@ -484,7 +484,7 @@ export const listFields: INodeProperties[] = [ name: 'space', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', default: '', displayOptions: { show: { @@ -516,7 +516,7 @@ export const listFields: INodeProperties[] = [ name: 'folder', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', default: '', displayOptions: { show: { @@ -553,7 +553,7 @@ export const listFields: INodeProperties[] = [ name: 'team', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', default: '', displayOptions: { show: { @@ -571,7 +571,7 @@ export const listFields: INodeProperties[] = [ name: 'space', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', default: '', displayOptions: { show: { @@ -603,7 +603,7 @@ export const listFields: INodeProperties[] = [ name: 'folder', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', default: '', displayOptions: { show: { @@ -665,7 +665,7 @@ export const listFields: INodeProperties[] = [ name: 'team', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', default: '', displayOptions: { show: { @@ -683,7 +683,7 @@ export const listFields: INodeProperties[] = [ name: 'space', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', default: '', displayOptions: { show: { @@ -715,7 +715,7 @@ export const listFields: INodeProperties[] = [ name: 'folder', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', default: '', displayOptions: { show: { @@ -761,7 +761,7 @@ export const listFields: INodeProperties[] = [ name: 'assignee', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getAssignees', loadOptionsDependsOn: ['list'], diff --git a/packages/nodes-base/nodes/ClickUp/SpaceTagDescription.ts b/packages/nodes-base/nodes/ClickUp/SpaceTagDescription.ts index c4a3704c3b..e3caed56e1 100644 --- a/packages/nodes-base/nodes/ClickUp/SpaceTagDescription.ts +++ b/packages/nodes-base/nodes/ClickUp/SpaceTagDescription.ts @@ -76,7 +76,7 @@ export const spaceTagFields: INodeProperties[] = [ name: 'name', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsDependsOn: ['space'], loadOptionsMethod: 'getTags', diff --git a/packages/nodes-base/nodes/ClickUp/TaskDescription.ts b/packages/nodes-base/nodes/ClickUp/TaskDescription.ts index 9e71a37be2..b62fa8b57a 100644 --- a/packages/nodes-base/nodes/ClickUp/TaskDescription.ts +++ b/packages/nodes-base/nodes/ClickUp/TaskDescription.ts @@ -68,7 +68,7 @@ export const taskFields: INodeProperties[] = [ name: 'team', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', default: '', displayOptions: { show: { @@ -86,7 +86,7 @@ export const taskFields: INodeProperties[] = [ name: 'space', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', default: '', displayOptions: { show: { @@ -118,7 +118,7 @@ export const taskFields: INodeProperties[] = [ name: 'folder', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', default: '', displayOptions: { show: { @@ -138,7 +138,7 @@ export const taskFields: INodeProperties[] = [ name: 'list', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', default: '', displayOptions: { show: { @@ -158,7 +158,7 @@ export const taskFields: INodeProperties[] = [ name: 'list', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', default: '', displayOptions: { show: { @@ -205,7 +205,7 @@ export const taskFields: INodeProperties[] = [ name: 'assignees', type: 'multiOptions', description: - 'Choose from the list, or specify IDs using an expression', + 'Choose from the list, or specify IDs using an expression', typeOptions: { loadOptionsMethod: 'getAssignees', loadOptionsDependsOn: ['list'], @@ -288,7 +288,7 @@ export const taskFields: INodeProperties[] = [ name: 'status', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getStatuses', loadOptionsDependsOn: ['list'], @@ -305,7 +305,7 @@ export const taskFields: INodeProperties[] = [ }, default: [], description: - 'The array of tags applied to this task. Choose from the list, or specify IDs using an expression.', + 'The array of tags applied to this task. Choose from the list, or specify IDs using an expression.', }, { displayName: 'Time Estimate', @@ -466,7 +466,7 @@ export const taskFields: INodeProperties[] = [ name: 'team', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', default: '', displayOptions: { show: { @@ -484,7 +484,7 @@ export const taskFields: INodeProperties[] = [ name: 'space', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', default: '', displayOptions: { show: { @@ -516,7 +516,7 @@ export const taskFields: INodeProperties[] = [ name: 'folder', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', default: '', displayOptions: { show: { @@ -536,7 +536,7 @@ export const taskFields: INodeProperties[] = [ name: 'list', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', default: '', displayOptions: { show: { @@ -556,7 +556,7 @@ export const taskFields: INodeProperties[] = [ name: 'list', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', default: '', displayOptions: { show: { @@ -626,7 +626,7 @@ export const taskFields: INodeProperties[] = [ name: 'assignees', type: 'multiOptions', description: - 'Choose from the list, or specify IDs using an expression', + 'Choose from the list, or specify IDs using an expression', typeOptions: { loadOptionsMethod: 'getAssignees', loadOptionsDependsOn: ['list'], @@ -658,7 +658,7 @@ export const taskFields: INodeProperties[] = [ }, default: '', description: - 'The ID of the field to add custom field to. Choose from the list, or specify an ID using an expression.', + 'The ID of the field to add custom field to. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Operator', @@ -797,7 +797,7 @@ export const taskFields: INodeProperties[] = [ name: 'statuses', type: 'multiOptions', description: - 'Choose from the list, or specify IDs using an expression', + 'Choose from the list, or specify IDs using an expression', typeOptions: { loadOptionsMethod: 'getStatuses', loadOptionsDependsOn: ['list'], @@ -821,7 +821,7 @@ export const taskFields: INodeProperties[] = [ }, default: [], description: - 'The array of tags applied to this task. Choose from the list, or specify IDs using an expression.', + 'The array of tags applied to this task. Choose from the list, or specify IDs using an expression.', }, ], }, diff --git a/packages/nodes-base/nodes/ClickUp/TaskTagDescription.ts b/packages/nodes-base/nodes/ClickUp/TaskTagDescription.ts index be833c44ca..bfaa8e3f3f 100644 --- a/packages/nodes-base/nodes/ClickUp/TaskTagDescription.ts +++ b/packages/nodes-base/nodes/ClickUp/TaskTagDescription.ts @@ -88,7 +88,7 @@ export const taskTagFields: INodeProperties[] = [ }, default: '', description: - 'Only used when the parameter is set to custom_task_ids=true. Choose from the list, or specify an ID using an expression.', + 'Only used when the parameter is set to custom_task_ids=true. Choose from the list, or specify an ID using an expression.', }, ], }, diff --git a/packages/nodes-base/nodes/ClickUp/TimeEntryDescription.ts b/packages/nodes-base/nodes/ClickUp/TimeEntryDescription.ts index f8642e177e..c214ccbd49 100644 --- a/packages/nodes-base/nodes/ClickUp/TimeEntryDescription.ts +++ b/packages/nodes-base/nodes/ClickUp/TimeEntryDescription.ts @@ -68,7 +68,7 @@ export const timeEntryFields: INodeProperties[] = [ name: 'team', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', default: '', displayOptions: { show: { @@ -148,7 +148,7 @@ export const timeEntryFields: INodeProperties[] = [ name: 'team', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', default: '', displayOptions: { show: { @@ -197,7 +197,7 @@ export const timeEntryFields: INodeProperties[] = [ name: 'team', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', default: '', displayOptions: { show: { @@ -215,7 +215,7 @@ export const timeEntryFields: INodeProperties[] = [ name: 'space', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', default: '', displayOptions: { show: { @@ -247,7 +247,7 @@ export const timeEntryFields: INodeProperties[] = [ name: 'folder', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', default: '', displayOptions: { show: { @@ -267,7 +267,7 @@ export const timeEntryFields: INodeProperties[] = [ name: 'list', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', default: '', displayOptions: { show: { @@ -287,7 +287,7 @@ export const timeEntryFields: INodeProperties[] = [ name: 'list', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', default: '', displayOptions: { show: { @@ -334,7 +334,7 @@ export const timeEntryFields: INodeProperties[] = [ name: 'task', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', displayOptions: { show: { resource: ['timeEntry'], @@ -365,7 +365,7 @@ export const timeEntryFields: INodeProperties[] = [ name: 'assignee', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getAssignees', loadOptionsDependsOn: ['list'], @@ -390,7 +390,7 @@ export const timeEntryFields: INodeProperties[] = [ name: 'tags', type: 'multiOptions', description: - 'Choose from the list, or specify IDs using an expression', + 'Choose from the list, or specify IDs using an expression', typeOptions: { loadOptionsDependsOn: ['team'], loadOptionsMethod: 'getTimeEntryTags', @@ -408,7 +408,7 @@ export const timeEntryFields: INodeProperties[] = [ name: 'team', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', default: '', displayOptions: { show: { @@ -471,7 +471,7 @@ export const timeEntryFields: INodeProperties[] = [ name: 'team', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', default: '', displayOptions: { show: { @@ -493,7 +493,7 @@ export const timeEntryFields: INodeProperties[] = [ name: 'team', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', default: '', displayOptions: { show: { @@ -528,7 +528,7 @@ export const timeEntryFields: INodeProperties[] = [ name: 'team', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', default: '', displayOptions: { show: { @@ -546,7 +546,7 @@ export const timeEntryFields: INodeProperties[] = [ name: 'space', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', default: '', displayOptions: { show: { @@ -578,7 +578,7 @@ export const timeEntryFields: INodeProperties[] = [ name: 'folder', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', default: '', displayOptions: { show: { @@ -598,7 +598,7 @@ export const timeEntryFields: INodeProperties[] = [ name: 'list', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', default: '', displayOptions: { show: { @@ -618,7 +618,7 @@ export const timeEntryFields: INodeProperties[] = [ name: 'list', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', default: '', displayOptions: { show: { @@ -677,7 +677,7 @@ export const timeEntryFields: INodeProperties[] = [ name: 'assignee', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getAssignees', loadOptionsDependsOn: ['list'], @@ -715,7 +715,7 @@ export const timeEntryFields: INodeProperties[] = [ name: 'tags', type: 'multiOptions', description: - 'Choose from the list, or specify IDs using an expression', + 'Choose from the list, or specify IDs using an expression', typeOptions: { loadOptionsDependsOn: ['spaceId'], loadOptionsMethod: 'getTags', @@ -727,7 +727,7 @@ export const timeEntryFields: INodeProperties[] = [ name: 'task', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getTasks', loadOptionsDependsOn: ['archived', 'list'], diff --git a/packages/nodes-base/nodes/ClickUp/TimeEntryTagDescription.ts b/packages/nodes-base/nodes/ClickUp/TimeEntryTagDescription.ts index 9a2d930dbb..80e52a84e2 100644 --- a/packages/nodes-base/nodes/ClickUp/TimeEntryTagDescription.ts +++ b/packages/nodes-base/nodes/ClickUp/TimeEntryTagDescription.ts @@ -44,7 +44,7 @@ export const timeEntryTagFields: INodeProperties[] = [ name: 'team', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', default: '', displayOptions: { show: { @@ -97,7 +97,7 @@ export const timeEntryTagFields: INodeProperties[] = [ name: 'team', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', default: '', displayOptions: { show: { @@ -174,7 +174,7 @@ export const timeEntryTagFields: INodeProperties[] = [ name: 'team', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', default: '', displayOptions: { show: { @@ -205,7 +205,7 @@ export const timeEntryTagFields: INodeProperties[] = [ name: 'tagNames', type: 'multiOptions', description: - 'Choose from the list, or specify IDs using an expression', + 'Choose from the list, or specify IDs using an expression', typeOptions: { loadOptionsMethod: 'getTimeEntryTags', loadOptionsDependsOn: ['teamId'], diff --git a/packages/nodes-base/nodes/Clockify/Clockify.node.json b/packages/nodes-base/nodes/Clockify/Clockify.node.json index 877d778132..cc4eb23c1f 100644 --- a/packages/nodes-base/nodes/Clockify/Clockify.node.json +++ b/packages/nodes-base/nodes/Clockify/Clockify.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/clockify" + "url": "https://docs.n8n.io/integrations/builtin/credentials/clockify/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Clockify/Clockify.node.ts b/packages/nodes-base/nodes/Clockify/Clockify.node.ts index 6b8e7a835d..8f5456dd67 100644 --- a/packages/nodes-base/nodes/Clockify/Clockify.node.ts +++ b/packages/nodes-base/nodes/Clockify/Clockify.node.ts @@ -7,6 +7,7 @@ import type { INodeType, INodeTypeDescription, } from 'n8n-workflow'; +import { NodeConnectionType } from 'n8n-workflow'; import moment from 'moment-timezone'; import { clockifyApiRequest, clockifyApiRequestAllItems } from './GenericFunctions'; @@ -43,8 +44,8 @@ export class Clockify implements INodeType { defaults: { name: 'Clockify', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'clockifyApi', @@ -102,7 +103,7 @@ export class Clockify implements INodeType { name: 'workspaceId', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'listWorkspaces', }, @@ -839,7 +840,7 @@ export class Clockify implements INodeType { ); returnData.push(...executionData); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push({ error: error.message, json: {} }); continue; } diff --git a/packages/nodes-base/nodes/Clockify/ClockifyTrigger.node.json b/packages/nodes-base/nodes/Clockify/ClockifyTrigger.node.json index b13cb9d276..472ff50efe 100644 --- a/packages/nodes-base/nodes/Clockify/ClockifyTrigger.node.json +++ b/packages/nodes-base/nodes/Clockify/ClockifyTrigger.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/clockify" + "url": "https://docs.n8n.io/integrations/builtin/credentials/clockify/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Clockify/ClockifyTrigger.node.ts b/packages/nodes-base/nodes/Clockify/ClockifyTrigger.node.ts index d0846b6262..cbca70f49c 100644 --- a/packages/nodes-base/nodes/Clockify/ClockifyTrigger.node.ts +++ b/packages/nodes-base/nodes/Clockify/ClockifyTrigger.node.ts @@ -9,6 +9,7 @@ import type { INodeType, INodeTypeDescription, } from 'n8n-workflow'; +import { NodeConnectionType } from 'n8n-workflow'; import { clockifyApiRequest } from './GenericFunctions'; @@ -28,7 +29,7 @@ export class ClockifyTrigger implements INodeType { name: 'Clockify Trigger', }, inputs: [], - outputs: ['main'], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'clockifyApi', @@ -42,7 +43,7 @@ export class ClockifyTrigger implements INodeType { name: 'workspaceId', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'listWorkspaces', }, diff --git a/packages/nodes-base/nodes/Clockify/ProjectDescription.ts b/packages/nodes-base/nodes/Clockify/ProjectDescription.ts index ec71a4c413..b58d20ef3c 100644 --- a/packages/nodes-base/nodes/Clockify/ProjectDescription.ts +++ b/packages/nodes-base/nodes/Clockify/ProjectDescription.ts @@ -95,7 +95,7 @@ export const projectFields: INodeProperties[] = [ name: 'clientId', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsDependsOn: ['workspaceId'], loadOptionsMethod: 'loadClientsForWorkspace', @@ -253,7 +253,7 @@ export const projectFields: INodeProperties[] = [ name: 'clients', type: 'multiOptions', description: - 'Choose from the list, or specify IDs using an expression', + 'Choose from the list, or specify IDs using an expression', typeOptions: { loadOptionsDependsOn: ['workspaceId'], loadOptionsMethod: 'loadClientsForWorkspace', @@ -345,7 +345,7 @@ export const projectFields: INodeProperties[] = [ name: 'users', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsDependsOn: ['workspaceId'], loadOptionsMethod: 'loadUsersForWorkspace', @@ -418,7 +418,7 @@ export const projectFields: INodeProperties[] = [ name: 'clientId', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsDependsOn: ['workspaceId'], loadOptionsMethod: 'loadClientsForWorkspace', diff --git a/packages/nodes-base/nodes/Clockify/TaskDescription.ts b/packages/nodes-base/nodes/Clockify/TaskDescription.ts index 8545a5aa56..80476798c9 100644 --- a/packages/nodes-base/nodes/Clockify/TaskDescription.ts +++ b/packages/nodes-base/nodes/Clockify/TaskDescription.ts @@ -53,7 +53,7 @@ export const taskFields: INodeProperties[] = [ name: 'projectId', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsDependsOn: ['workspaceId'], loadOptionsMethod: 'loadProjectsForWorkspace', @@ -101,7 +101,7 @@ export const taskFields: INodeProperties[] = [ name: 'assigneeIds', type: 'multiOptions', description: - 'Choose from the list, or specify IDs using an expression', + 'Choose from the list, or specify IDs using an expression', default: [], typeOptions: { loadOptionsMethod: 'loadUsersForWorkspace', @@ -280,7 +280,7 @@ export const taskFields: INodeProperties[] = [ name: 'assigneeIds', type: 'multiOptions', description: - 'Choose from the list, or specify IDs using an expression', + 'Choose from the list, or specify IDs using an expression', default: [], typeOptions: { loadOptionsMethod: 'loadUsersForWorkspace', diff --git a/packages/nodes-base/nodes/Clockify/TimeEntryDescription.ts b/packages/nodes-base/nodes/Clockify/TimeEntryDescription.ts index 342281875d..4e8ff391a3 100644 --- a/packages/nodes-base/nodes/Clockify/TimeEntryDescription.ts +++ b/packages/nodes-base/nodes/Clockify/TimeEntryDescription.ts @@ -102,7 +102,7 @@ export const timeEntryFields: INodeProperties[] = [ }, default: '', description: - 'The ID of the field to add custom field to. Choose from the list, or specify an ID using an expression.', + 'The ID of the field to add custom field to. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Value', @@ -132,7 +132,7 @@ export const timeEntryFields: INodeProperties[] = [ name: 'projectId', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsDependsOn: ['workspaceId'], loadOptionsMethod: 'loadProjectsForWorkspace', @@ -144,7 +144,7 @@ export const timeEntryFields: INodeProperties[] = [ name: 'tagIds', type: 'multiOptions', description: - 'Choose from the list, or specify IDs using an expression', + 'Choose from the list, or specify IDs using an expression', typeOptions: { loadOptionsDependsOn: ['workspaceId'], loadOptionsMethod: 'loadTagsForWorkspace', @@ -283,7 +283,7 @@ export const timeEntryFields: INodeProperties[] = [ }, default: '', description: - 'The ID of the field to add custom field to. Choose from the list, or specify an ID using an expression.', + 'The ID of the field to add custom field to. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Value', @@ -313,7 +313,7 @@ export const timeEntryFields: INodeProperties[] = [ name: 'projectId', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsDependsOn: ['workspaceId'], loadOptionsMethod: 'loadProjectsForWorkspace', @@ -331,7 +331,7 @@ export const timeEntryFields: INodeProperties[] = [ name: 'tagIds', type: 'multiOptions', description: - 'Choose from the list, or specify IDs using an expression', + 'Choose from the list, or specify IDs using an expression', typeOptions: { loadOptionsDependsOn: ['workspaceId'], loadOptionsMethod: 'loadTagsForWorkspace', diff --git a/packages/nodes-base/nodes/Cloudflare/Cloudflare.node.json b/packages/nodes-base/nodes/Cloudflare/Cloudflare.node.json index d2077e5520..921b25fc41 100644 --- a/packages/nodes-base/nodes/Cloudflare/Cloudflare.node.json +++ b/packages/nodes-base/nodes/Cloudflare/Cloudflare.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/cloudflare" + "url": "https://docs.n8n.io/integrations/builtin/credentials/cloudflare/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Cloudflare/Cloudflare.node.ts b/packages/nodes-base/nodes/Cloudflare/Cloudflare.node.ts index f2cad15a22..93acdb0e52 100644 --- a/packages/nodes-base/nodes/Cloudflare/Cloudflare.node.ts +++ b/packages/nodes-base/nodes/Cloudflare/Cloudflare.node.ts @@ -7,6 +7,7 @@ import type { INodeType, INodeTypeDescription, } from 'n8n-workflow'; +import { NodeConnectionType } from 'n8n-workflow'; import { cloudflareApiRequest, cloudflareApiRequestAllItems } from './GenericFunctions'; @@ -24,8 +25,8 @@ export class Cloudflare implements INodeType { defaults: { name: 'Cloudflare', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'cloudflareApi', @@ -167,7 +168,7 @@ export class Cloudflare implements INodeType { ), ); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push({ json: { error: error.message } }); continue; } diff --git a/packages/nodes-base/nodes/Cloudflare/ZoneCertificateDescription.ts b/packages/nodes-base/nodes/Cloudflare/ZoneCertificateDescription.ts index 81d446bac1..9b70e640bc 100644 --- a/packages/nodes-base/nodes/Cloudflare/ZoneCertificateDescription.ts +++ b/packages/nodes-base/nodes/Cloudflare/ZoneCertificateDescription.ts @@ -50,7 +50,7 @@ export const zoneCertificateFields: INodeProperties[] = [ name: 'zoneId', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getZones', }, diff --git a/packages/nodes-base/nodes/Cockpit/Cockpit.node.json b/packages/nodes-base/nodes/Cockpit/Cockpit.node.json index 56fbbc76ec..a2f504e6ed 100644 --- a/packages/nodes-base/nodes/Cockpit/Cockpit.node.json +++ b/packages/nodes-base/nodes/Cockpit/Cockpit.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/cockpit" + "url": "https://docs.n8n.io/integrations/builtin/credentials/cockpit/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Cockpit/Cockpit.node.ts b/packages/nodes-base/nodes/Cockpit/Cockpit.node.ts index e7b37e6a85..fedf9c4204 100644 --- a/packages/nodes-base/nodes/Cockpit/Cockpit.node.ts +++ b/packages/nodes-base/nodes/Cockpit/Cockpit.node.ts @@ -7,6 +7,7 @@ import type { INodeType, INodeTypeDescription, } from 'n8n-workflow'; +import { NodeConnectionType } from 'n8n-workflow'; import { collectionFields, collectionOperations } from './CollectionDescription'; import { createCollectionEntry, @@ -31,8 +32,8 @@ export class Cockpit implements INodeType { defaults: { name: 'Cockpit', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'cockpitApi', @@ -152,7 +153,7 @@ export class Cockpit implements INodeType { returnData.push(responseData as IDataObject); } } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push({ error: error.message }); continue; } diff --git a/packages/nodes-base/nodes/Cockpit/CollectionDescription.ts b/packages/nodes-base/nodes/Cockpit/CollectionDescription.ts index d6f43d21cf..39f12bd148 100644 --- a/packages/nodes-base/nodes/Cockpit/CollectionDescription.ts +++ b/packages/nodes-base/nodes/Cockpit/CollectionDescription.ts @@ -52,7 +52,7 @@ export const collectionFields: INodeProperties[] = [ }, required: true, description: - 'Name of the collection to operate on. Choose from the list, or specify an ID using an expression.', + 'Name of the collection to operate on. Choose from the list, or specify an ID using an expression.', }, // Collection:entry:getAll @@ -91,7 +91,7 @@ export const collectionFields: INodeProperties[] = [ displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, displayOptions: { show: { diff --git a/packages/nodes-base/nodes/Cockpit/SingletonDescription.ts b/packages/nodes-base/nodes/Cockpit/SingletonDescription.ts index 65e7d997c0..c18e396c94 100644 --- a/packages/nodes-base/nodes/Cockpit/SingletonDescription.ts +++ b/packages/nodes-base/nodes/Cockpit/SingletonDescription.ts @@ -39,6 +39,6 @@ export const singletonFields: INodeProperties[] = [ }, required: true, description: - 'Name of the singleton to operate on. Choose from the list, or specify an ID using an expression.', + 'Name of the singleton to operate on. Choose from the list, or specify an ID using an expression.', }, ]; diff --git a/packages/nodes-base/nodes/Coda/Coda.node.json b/packages/nodes-base/nodes/Coda/Coda.node.json index c53c48a978..f10ef76f0c 100644 --- a/packages/nodes-base/nodes/Coda/Coda.node.json +++ b/packages/nodes-base/nodes/Coda/Coda.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/coda" + "url": "https://docs.n8n.io/integrations/builtin/credentials/coda/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Coda/Coda.node.ts b/packages/nodes-base/nodes/Coda/Coda.node.ts index be5bf1a796..fd0da7dcf0 100644 --- a/packages/nodes-base/nodes/Coda/Coda.node.ts +++ b/packages/nodes-base/nodes/Coda/Coda.node.ts @@ -8,7 +8,7 @@ import type { INodeTypeDescription, JsonObject, } from 'n8n-workflow'; -import { NodeApiError } from 'n8n-workflow'; +import { NodeConnectionType, NodeApiError } from 'n8n-workflow'; import { codaApiRequest, codaApiRequestAllItems } from './GenericFunctions'; import { tableFields, tableOperations } from './TableDescription'; import { formulaFields, formulaOperations } from './FormulaDescription'; @@ -27,8 +27,8 @@ export class Coda implements INodeType { defaults: { name: 'Coda', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'codaApi', @@ -303,7 +303,7 @@ export class Coda implements INodeType { ); } } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { return [this.helpers.returnJsonArray({ error: error.message })]; } throw error; @@ -348,7 +348,7 @@ export class Coda implements INodeType { returnData.push(...executionData); } } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { const executionErrorData = this.helpers.constructExecutionMetaData( this.helpers.returnJsonArray({ error: error.messsage }), { itemData: { item: i } }, @@ -428,7 +428,7 @@ export class Coda implements INodeType { } } } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push({ json: { error: error.message }, pairedItem: [{ item: i }], @@ -464,7 +464,7 @@ export class Coda implements INodeType { await codaApiRequest.call(this, 'DELETE', endpoint, { rowIds: sendData[endpoint] }, qs); } } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { return [this.helpers.returnJsonArray({ error: error.message })]; } throw error; @@ -484,7 +484,7 @@ export class Coda implements INodeType { responseData = await codaApiRequest.call(this, 'POST', endpoint, {}); returnData.push(responseData as INodeExecutionData); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { const executionErrorData = this.helpers.constructExecutionMetaData( this.helpers.returnJsonArray({ error: error.messsage }), { itemData: { item: i } }, @@ -512,7 +512,7 @@ export class Coda implements INodeType { ); returnData.push(...executionData); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { const executionErrorData = this.helpers.constructExecutionMetaData( this.helpers.returnJsonArray({ error: error.messsage }), { itemData: { item: i } }, @@ -546,7 +546,7 @@ export class Coda implements INodeType { ); returnData.push(...executionData); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { const executionErrorData = this.helpers.constructExecutionMetaData( this.helpers.returnJsonArray({ error: error.messsage }), { itemData: { item: i } }, @@ -575,7 +575,7 @@ export class Coda implements INodeType { ); returnData.push(...executionData); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { const executionErrorData = this.helpers.constructExecutionMetaData( this.helpers.returnJsonArray({ error: error.messsage }), { itemData: { item: i } }, @@ -608,7 +608,7 @@ export class Coda implements INodeType { ); returnData.push(...executionData); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { const executionErrorData = this.helpers.constructExecutionMetaData( this.helpers.returnJsonArray({ error: error.messsage }), { itemData: { item: i } }, @@ -637,7 +637,7 @@ export class Coda implements INodeType { ); returnData.push(...executionData); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { const executionErrorData = this.helpers.constructExecutionMetaData( this.helpers.returnJsonArray({ error: error.messsage }), { itemData: { item: i } }, @@ -670,7 +670,7 @@ export class Coda implements INodeType { ); returnData.push(...executionData); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { const executionErrorData = this.helpers.constructExecutionMetaData( this.helpers.returnJsonArray({ error: error.messsage }), { itemData: { item: i } }, @@ -720,7 +720,7 @@ export class Coda implements INodeType { ); returnData.push(...responseData); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { const executionErrorData = this.helpers.constructExecutionMetaData( this.helpers.returnJsonArray({ error: error.messsage }), { itemData: { item: i } }, @@ -795,7 +795,7 @@ export class Coda implements INodeType { } } } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push({ json: { error: error.message }, pairedItem: [{ item: i }], @@ -823,7 +823,7 @@ export class Coda implements INodeType { ); returnData.push(...executionData); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { const executionErrorData = this.helpers.constructExecutionMetaData( this.helpers.returnJsonArray({ error: error.messsage }), { itemData: { item: i } }, @@ -852,7 +852,7 @@ export class Coda implements INodeType { ); returnData.push(...executionData); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { const executionErrorData = this.helpers.constructExecutionMetaData( this.helpers.returnJsonArray({ error: error.messsage }), { itemData: { item: i } }, @@ -885,7 +885,7 @@ export class Coda implements INodeType { ); returnData.push(...executionData); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { const executionErrorData = this.helpers.constructExecutionMetaData( this.helpers.returnJsonArray({ error: error.messsage }), { itemData: { item: i } }, @@ -929,7 +929,7 @@ export class Coda implements INodeType { }; await codaApiRequest.call(this, 'PUT', endpoint, body, qs); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { items[i].json = { error: error.message }; continue; } diff --git a/packages/nodes-base/nodes/Coda/ControlDescription.ts b/packages/nodes-base/nodes/Coda/ControlDescription.ts index 761f535c2b..16d005de4d 100644 --- a/packages/nodes-base/nodes/Coda/ControlDescription.ts +++ b/packages/nodes-base/nodes/Coda/ControlDescription.ts @@ -49,7 +49,7 @@ export const controlFields: INodeProperties[] = [ }, }, description: - 'ID of the doc. Choose from the list, or specify an ID using an expression.', + 'ID of the doc. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Control ID', @@ -84,7 +84,7 @@ export const controlFields: INodeProperties[] = [ }, }, description: - 'ID of the doc. Choose from the list, or specify an ID using an expression.', + 'ID of the doc. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Return All', diff --git a/packages/nodes-base/nodes/Coda/FormulaDescription.ts b/packages/nodes-base/nodes/Coda/FormulaDescription.ts index b4bc81990f..8737a9473f 100644 --- a/packages/nodes-base/nodes/Coda/FormulaDescription.ts +++ b/packages/nodes-base/nodes/Coda/FormulaDescription.ts @@ -49,7 +49,7 @@ export const formulaFields: INodeProperties[] = [ }, }, description: - 'ID of the doc. Choose from the list, or specify an ID using an expression.', + 'ID of the doc. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Formula ID', @@ -84,7 +84,7 @@ export const formulaFields: INodeProperties[] = [ }, }, description: - 'ID of the doc. Choose from the list, or specify an ID using an expression.', + 'ID of the doc. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Return All', diff --git a/packages/nodes-base/nodes/Coda/TableDescription.ts b/packages/nodes-base/nodes/Coda/TableDescription.ts index 6edea4a2e5..087082665e 100644 --- a/packages/nodes-base/nodes/Coda/TableDescription.ts +++ b/packages/nodes-base/nodes/Coda/TableDescription.ts @@ -79,7 +79,7 @@ export const tableFields: INodeProperties[] = [ }, }, description: - 'ID of the doc. Choose from the list, or specify an ID using an expression.', + 'ID of the doc. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Table Name or ID', @@ -98,13 +98,13 @@ export const tableFields: INodeProperties[] = [ }, }, description: - 'The table to create the row in. Choose from the list, or specify an ID using an expression.', + 'The table to create the row in. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, displayOptions: { show: { @@ -149,7 +149,7 @@ export const tableFields: INodeProperties[] = [ }, }, description: - 'ID of the doc. Choose from the list, or specify an ID using an expression.', + 'ID of the doc. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Table Name or ID', @@ -168,7 +168,7 @@ export const tableFields: INodeProperties[] = [ }, }, description: - 'The table to get the row from. Choose from the list, or specify an ID using an expression.', + 'The table to get the row from. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Row ID', @@ -189,7 +189,7 @@ export const tableFields: INodeProperties[] = [ displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, displayOptions: { show: { @@ -255,7 +255,7 @@ export const tableFields: INodeProperties[] = [ }, }, description: - 'ID of the doc. Choose from the list, or specify an ID using an expression.', + 'ID of the doc. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Table Name or ID', @@ -274,7 +274,7 @@ export const tableFields: INodeProperties[] = [ }, }, description: - 'The table to get the rows from. Choose from the list, or specify an ID using an expression.', + 'The table to get the rows from. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Return All', @@ -311,7 +311,7 @@ export const tableFields: INodeProperties[] = [ displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, displayOptions: { show: { @@ -410,7 +410,7 @@ export const tableFields: INodeProperties[] = [ }, }, description: - 'ID of the doc. Choose from the list, or specify an ID using an expression.', + 'ID of the doc. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Table Name or ID', @@ -429,7 +429,7 @@ export const tableFields: INodeProperties[] = [ }, }, description: - 'The table to delete the row in. Choose from the list, or specify an ID using an expression.', + 'The table to delete the row in. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Row ID', @@ -464,7 +464,7 @@ export const tableFields: INodeProperties[] = [ }, }, description: - 'ID of the doc. Choose from the list, or specify an ID using an expression.', + 'ID of the doc. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Table Name or ID', @@ -483,7 +483,7 @@ export const tableFields: INodeProperties[] = [ }, }, description: - 'The table to get the row from. Choose from the list, or specify an ID using an expression.', + 'The table to get the row from. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Row ID', @@ -505,7 +505,7 @@ export const tableFields: INodeProperties[] = [ name: 'columnId', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', required: true, typeOptions: { loadOptionsMethod: 'getColumns', @@ -538,7 +538,7 @@ export const tableFields: INodeProperties[] = [ }, }, description: - 'ID of the doc. Choose from the list, or specify an ID using an expression.', + 'ID of the doc. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Table Name or ID', @@ -557,7 +557,7 @@ export const tableFields: INodeProperties[] = [ }, }, description: - 'The table to get the row from. Choose from the list, or specify an ID using an expression.', + 'The table to get the row from. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Column ID', @@ -592,7 +592,7 @@ export const tableFields: INodeProperties[] = [ }, }, description: - 'ID of the doc. Choose from the list, or specify an ID using an expression.', + 'ID of the doc. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Table Name or ID', @@ -611,7 +611,7 @@ export const tableFields: INodeProperties[] = [ }, }, description: - 'The table to get the row from. Choose from the list, or specify an ID using an expression.', + 'The table to get the row from. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Return All', diff --git a/packages/nodes-base/nodes/Coda/ViewDescription.ts b/packages/nodes-base/nodes/Coda/ViewDescription.ts index 881a1f78c6..b5768eea9f 100644 --- a/packages/nodes-base/nodes/Coda/ViewDescription.ts +++ b/packages/nodes-base/nodes/Coda/ViewDescription.ts @@ -78,7 +78,7 @@ export const viewFields: INodeProperties[] = [ }, }, description: - 'ID of the doc. Choose from the list, or specify an ID using an expression.', + 'ID of the doc. Choose from the list, or specify an ID using an expression.', }, { displayName: 'View ID', @@ -113,7 +113,7 @@ export const viewFields: INodeProperties[] = [ }, }, description: - 'ID of the doc. Choose from the list, or specify an ID using an expression.', + 'ID of the doc. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Return All', @@ -165,7 +165,7 @@ export const viewFields: INodeProperties[] = [ }, }, description: - 'ID of the doc. Choose from the list, or specify an ID using an expression.', + 'ID of the doc. Choose from the list, or specify an ID using an expression.', }, { displayName: 'View Name or ID', @@ -184,7 +184,7 @@ export const viewFields: INodeProperties[] = [ }, }, description: - 'The table to get the rows from. Choose from the list, or specify an ID using an expression.', + 'The table to get the rows from. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Return All', @@ -221,7 +221,7 @@ export const viewFields: INodeProperties[] = [ displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, displayOptions: { show: { @@ -313,7 +313,7 @@ export const viewFields: INodeProperties[] = [ }, }, description: - 'ID of the doc. Choose from the list, or specify an ID using an expression.', + 'ID of the doc. Choose from the list, or specify an ID using an expression.', }, { displayName: 'View Name or ID', @@ -332,7 +332,7 @@ export const viewFields: INodeProperties[] = [ }, }, description: - 'The table to get the rows from. Choose from the list, or specify an ID using an expression.', + 'The table to get the rows from. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Return All', @@ -384,7 +384,7 @@ export const viewFields: INodeProperties[] = [ }, }, description: - 'ID of the doc. Choose from the list, or specify an ID using an expression.', + 'ID of the doc. Choose from the list, or specify an ID using an expression.', }, { displayName: 'View Name or ID', @@ -403,7 +403,7 @@ export const viewFields: INodeProperties[] = [ }, }, description: - 'The view to get the row from. Choose from the list, or specify an ID using an expression.', + 'The view to get the row from. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Row Name or ID', @@ -422,7 +422,7 @@ export const viewFields: INodeProperties[] = [ }, }, description: - 'The view to get the row from. Choose from the list, or specify an ID using an expression.', + 'The view to get the row from. Choose from the list, or specify an ID using an expression.', }, /* -------------------------------------------------------------------------- */ /* view:pushViewButton */ @@ -443,7 +443,7 @@ export const viewFields: INodeProperties[] = [ }, }, description: - 'ID of the doc. Choose from the list, or specify an ID using an expression.', + 'ID of the doc. Choose from the list, or specify an ID using an expression.', }, { displayName: 'View Name or ID', @@ -462,7 +462,7 @@ export const viewFields: INodeProperties[] = [ }, }, description: - 'The view to get the row from. Choose from the list, or specify an ID using an expression.', + 'The view to get the row from. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Row Name or ID', @@ -481,14 +481,14 @@ export const viewFields: INodeProperties[] = [ }, }, description: - 'The view to get the row from. Choose from the list, or specify an ID using an expression.', + 'The view to get the row from. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Column Name or ID', name: 'columnId', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', required: true, typeOptions: { loadOptionsMethod: 'getViewColumns', @@ -521,7 +521,7 @@ export const viewFields: INodeProperties[] = [ }, }, description: - 'ID of the doc. Choose from the list, or specify an ID using an expression.', + 'ID of the doc. Choose from the list, or specify an ID using an expression.', }, { displayName: 'View Name or ID', @@ -540,7 +540,7 @@ export const viewFields: INodeProperties[] = [ }, }, description: - 'The view to get the row from. Choose from the list, or specify an ID using an expression.', + 'The view to get the row from. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Row Name or ID', @@ -559,7 +559,7 @@ export const viewFields: INodeProperties[] = [ }, }, description: - 'The view to get the row from. Choose from the list, or specify an ID using an expression.', + 'The view to get the row from. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Key Name', @@ -579,7 +579,7 @@ export const viewFields: INodeProperties[] = [ displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, displayOptions: { show: { diff --git a/packages/nodes-base/nodes/Code/Code.node.ts b/packages/nodes-base/nodes/Code/Code.node.ts index 9f028b293f..e1230b0786 100644 --- a/packages/nodes-base/nodes/Code/Code.node.ts +++ b/packages/nodes-base/nodes/Code/Code.node.ts @@ -1,15 +1,20 @@ -import type { - CodeExecutionMode, - CodeNodeEditorLanguage, - IExecuteFunctions, - INodeExecutionData, - INodeType, - INodeTypeDescription, -} from 'n8n-workflow'; +import { TaskRunnersConfig } from '@n8n/config'; import set from 'lodash/set'; +import { + NodeConnectionType, + type CodeExecutionMode, + type CodeNodeEditorLanguage, + type IExecuteFunctions, + type INodeExecutionData, + type INodeType, + type INodeTypeDescription, +} from 'n8n-workflow'; +import Container from 'typedi'; + import { javascriptCodeDescription } from './descriptions/JavascriptCodeDescription'; import { pythonCodeDescription } from './descriptions/PythonCodeDescription'; import { JavaScriptSandbox } from './JavaScriptSandbox'; +import { JsTaskRunnerSandbox } from './JsTaskRunnerSandbox'; import { PythonSandbox } from './PythonSandbox'; import { getSandboxContext } from './Sandbox'; import { standardizeOutput } from './utils'; @@ -28,8 +33,8 @@ export class Code implements INodeType { defaults: { name: 'Code', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], parameterPane: 'wide', properties: [ { @@ -91,6 +96,8 @@ export class Code implements INodeType { }; async execute(this: IExecuteFunctions) { + const runnersConfig = Container.get(TaskRunnersConfig); + const nodeMode = this.getNodeParameter('mode', 0) as CodeExecutionMode; const workflowMode = this.getMode(); @@ -101,8 +108,18 @@ export class Code implements INodeType { : 'javaScript'; const codeParameterName = language === 'python' ? 'pythonCode' : 'jsCode'; + if (!runnersConfig.disabled && language === 'javaScript') { + const code = this.getNodeParameter(codeParameterName, 0) as string; + const sandbox = new JsTaskRunnerSandbox(code, nodeMode, workflowMode, this); + + return nodeMode === 'runOnceForAllItems' + ? [await sandbox.runCodeAllItems()] + : [await sandbox.runCodeForEachItem()]; + } + const getSandbox = (index = 0) => { const code = this.getNodeParameter(codeParameterName, index) as string; + const context = getSandboxContext.call(this, index); if (nodeMode === 'runOnceForAllItems') { context.items = context.$input.all(); @@ -111,7 +128,7 @@ export class Code implements INodeType { } const Sandbox = language === 'python' ? PythonSandbox : JavaScriptSandbox; - const sandbox = new Sandbox(context, code, index, this.helpers); + const sandbox = new Sandbox(context, code, this.helpers); sandbox.on( 'output', workflowMode === 'manual' @@ -134,7 +151,7 @@ export class Code implements INodeType { try { items = (await sandbox.runCodeAllItems()) as INodeExecutionData[]; } catch (error) { - if (!this.continueOnFail(error)) { + if (!this.continueOnFail()) { set(error, 'node', node); throw error; } @@ -160,9 +177,9 @@ export class Code implements INodeType { const sandbox = getSandbox(index); let result: INodeExecutionData | undefined; try { - result = await sandbox.runCodeEachItem(); + result = await sandbox.runCodeEachItem(index); } catch (error) { - if (!this.continueOnFail(error)) { + if (!this.continueOnFail()) { set(error, 'node', node); throw error; } diff --git a/packages/nodes-base/nodes/Code/ExecutionError.ts b/packages/nodes-base/nodes/Code/ExecutionError.ts index de7b46ff4d..e1fdffc0b6 100644 --- a/packages/nodes-base/nodes/Code/ExecutionError.ts +++ b/packages/nodes-base/nodes/Code/ExecutionError.ts @@ -11,7 +11,7 @@ export class ExecutionError extends ApplicationError { lineNumber: number | undefined = undefined; - constructor(error: Error & { stack: string }, itemIndex?: number) { + constructor(error: Error & { stack?: string }, itemIndex?: number) { super(error.message); this.itemIndex = itemIndex; @@ -19,7 +19,7 @@ export class ExecutionError extends ApplicationError { this.context = { itemIndex: this.itemIndex }; } - this.stack = error.stack; + this.stack = error.stack ?? ''; this.populateFromStack(); } diff --git a/packages/nodes-base/nodes/Code/JavaScriptSandbox.ts b/packages/nodes-base/nodes/Code/JavaScriptSandbox.ts index 6c9401eb56..73f5ba7f75 100644 --- a/packages/nodes-base/nodes/Code/JavaScriptSandbox.ts +++ b/packages/nodes-base/nodes/Code/JavaScriptSandbox.ts @@ -5,6 +5,11 @@ import { ValidationError } from './ValidationError'; import { ExecutionError } from './ExecutionError'; import type { SandboxContext } from './Sandbox'; import { Sandbox } from './Sandbox'; +import { + mapItemNotDefinedErrorIfNeededForRunForEach, + mapItemsNotDefinedErrorIfNeededForRunForAll, + validateNoDisallowedMethodsInRunForEach, +} from './JsCodeValidator'; const { NODE_FUNCTION_ALLOW_BUILTIN: builtIn, NODE_FUNCTION_ALLOW_EXTERNAL: external } = process.env; @@ -25,7 +30,6 @@ export class JavaScriptSandbox extends Sandbox { constructor( context: SandboxContext, private jsCode: string, - itemIndex: number | undefined, helpers: IExecuteFunctions['helpers'], options?: { resolver?: Resolver }, ) { @@ -36,7 +40,6 @@ export class JavaScriptSandbox extends Sandbox { plural: 'objects', }, }, - itemIndex, helpers, ); this.vm = new NodeVM({ @@ -49,10 +52,10 @@ export class JavaScriptSandbox extends Sandbox { this.vm.on('console.log', (...args: unknown[]) => this.emit('output', ...args)); } - async runCode(): Promise { + async runCode(): Promise { const script = `module.exports = async function() {${this.jsCode}\n}()`; try { - const executionResult = await this.vm.run(script, __dirname); + const executionResult = (await this.vm.run(script, __dirname)) as T; return executionResult; } catch (error) { throw new ExecutionError(error); @@ -70,10 +73,7 @@ export class JavaScriptSandbox extends Sandbox { executionResult = await this.vm.run(script, __dirname); } catch (error) { // anticipate user expecting `items` to pre-exist as in Function Item node - if (error.message === 'items is not defined' && !/(let|const|var) items =/.test(script)) { - const quoted = error.message.replace('items', '`items`'); - error.message = (quoted as string) + '. Did you mean `$input.all()`?'; - } + mapItemsNotDefinedErrorIfNeededForRunForAll(this.jsCode, error); throw new ExecutionError(error); } @@ -87,7 +87,6 @@ export class JavaScriptSandbox extends Sandbox { message: "The code doesn't return an array of arrays", description: 'Please return an array of arrays. One array for the different outputs and one for the different items that get returned.', - itemIndex: this.itemIndex, }); } @@ -101,30 +100,10 @@ export class JavaScriptSandbox extends Sandbox { ); } - async runCodeEachItem(): Promise { + async runCodeEachItem(itemIndex: number): Promise { const script = `module.exports = async function() {${this.jsCode}\n}()`; - const match = this.jsCode.match(/\$input\.(?first|last|all|itemMatching)/); - - if (match?.groups?.disallowedMethod) { - const { disallowedMethod } = match.groups; - - const lineNumber = - this.jsCode.split('\n').findIndex((line) => { - return line.includes(disallowedMethod) && !line.startsWith('//') && !line.startsWith('*'); - }) + 1; - - const disallowedMethodFound = lineNumber !== 0; - - if (disallowedMethodFound) { - throw new ValidationError({ - message: `Can't use .${disallowedMethod}() here`, - description: "This is only available in 'Run Once for All Items' mode", - itemIndex: this.itemIndex, - lineNumber, - }); - } - } + validateNoDisallowedMethodsInRunForEach(this.jsCode, itemIndex); let executionResult: INodeExecutionData; @@ -132,16 +111,13 @@ export class JavaScriptSandbox extends Sandbox { executionResult = await this.vm.run(script, __dirname); } catch (error) { // anticipate user expecting `item` to pre-exist as in Function Item node - if (error.message === 'item is not defined' && !/(let|const|var) item =/.test(script)) { - const quoted = error.message.replace('item', '`item`'); - error.message = (quoted as string) + '. Did you mean `$input.item.json`?'; - } + mapItemNotDefinedErrorIfNeededForRunForEach(this.jsCode, error); - throw new ExecutionError(error, this.itemIndex); + throw new ExecutionError(error, itemIndex); } - if (executionResult === null) return; + if (executionResult === null) return undefined; - return this.validateRunCodeEachItem(executionResult); + return this.validateRunCodeEachItem(executionResult, itemIndex); } } diff --git a/packages/nodes-base/nodes/Code/JsCodeValidator.ts b/packages/nodes-base/nodes/Code/JsCodeValidator.ts new file mode 100644 index 0000000000..f56de67d85 --- /dev/null +++ b/packages/nodes-base/nodes/Code/JsCodeValidator.ts @@ -0,0 +1,54 @@ +import { ValidationError } from './ValidationError'; + +/** + * Validates that no disallowed methods are used in the + * runCodeForEachItem JS code. Throws `ValidationError` if + * a disallowed method is found. + */ +export function validateNoDisallowedMethodsInRunForEach(code: string, itemIndex: number) { + const match = code.match(/\$input\.(?first|last|all|itemMatching)/); + + if (match?.groups?.disallowedMethod) { + const { disallowedMethod } = match.groups; + + const lineNumber = + code.split('\n').findIndex((line) => { + return line.includes(disallowedMethod) && !line.startsWith('//') && !line.startsWith('*'); + }) + 1; + + const disallowedMethodFound = lineNumber !== 0; + + if (disallowedMethodFound) { + throw new ValidationError({ + message: `Can't use .${disallowedMethod}() here`, + description: "This is only available in 'Run Once for All Items' mode", + itemIndex, + lineNumber, + }); + } + } +} + +/** + * Checks if the error message indicates that `items` is not defined and + * modifies the error message to suggest using `$input.all()`. + */ +export function mapItemsNotDefinedErrorIfNeededForRunForAll(code: string, error: Error) { + // anticipate user expecting `items` to pre-exist as in Function Item node + if (error.message === 'items is not defined' && !/(let|const|var) +items +=/.test(code)) { + const quoted = error.message.replace('items', '`items`'); + error.message = quoted + '. Did you mean `$input.all()`?'; + } +} + +/** + * Maps the "item is not defined" error message to provide a more helpful suggestion + * for users who may expect `items` to pre-exist + */ +export function mapItemNotDefinedErrorIfNeededForRunForEach(code: string, error: Error) { + // anticipate user expecting `items` to pre-exist as in Function Item node + if (error.message === 'item is not defined' && !/(let|const|var) +item +=/.test(code)) { + const quoted = error.message.replace('item', '`item`'); + error.message = quoted + '. Did you mean `$input.item.json`?'; + } +} diff --git a/packages/nodes-base/nodes/Code/JsTaskRunnerSandbox.ts b/packages/nodes-base/nodes/Code/JsTaskRunnerSandbox.ts new file mode 100644 index 0000000000..80d4b32445 --- /dev/null +++ b/packages/nodes-base/nodes/Code/JsTaskRunnerSandbox.ts @@ -0,0 +1,71 @@ +import { + ApplicationError, + type CodeExecutionMode, + type IExecuteFunctions, + type INodeExecutionData, + type WorkflowExecuteMode, +} from 'n8n-workflow'; + +import { isWrappableError, WrappedExecutionError } from './errors/WrappedExecutionError'; +import { validateNoDisallowedMethodsInRunForEach } from './JsCodeValidator'; + +/** + * JS Code execution sandbox that executes the JS code using task runner. + */ +export class JsTaskRunnerSandbox { + constructor( + private readonly jsCode: string, + private readonly nodeMode: CodeExecutionMode, + private readonly workflowMode: WorkflowExecuteMode, + private readonly executeFunctions: IExecuteFunctions, + ) {} + + async runCodeAllItems(): Promise { + const itemIndex = 0; + + const executionResult = await this.executeFunctions.startJob( + 'javascript', + { + code: this.jsCode, + nodeMode: this.nodeMode, + workflowMode: this.workflowMode, + continueOnFail: this.executeFunctions.continueOnFail(), + }, + itemIndex, + ); + + return executionResult.ok + ? executionResult.result + : this.throwExecutionError(executionResult.error); + } + + async runCodeForEachItem(): Promise { + validateNoDisallowedMethodsInRunForEach(this.jsCode, 0); + const itemIndex = 0; + + const executionResult = await this.executeFunctions.startJob( + 'javascript', + { + code: this.jsCode, + nodeMode: this.nodeMode, + workflowMode: this.workflowMode, + continueOnFail: this.executeFunctions.continueOnFail(), + }, + itemIndex, + ); + + return executionResult.ok + ? executionResult.result + : this.throwExecutionError(executionResult.error); + } + + private throwExecutionError(error: unknown): never { + // The error coming from task runner is not an instance of error, + // so we need to wrap it in an error instance. + if (isWrappableError(error)) { + throw new WrappedExecutionError(error); + } + + throw new ApplicationError(`Unknown error: ${JSON.stringify(error)}`); + } +} diff --git a/packages/nodes-base/nodes/Code/PythonSandbox.ts b/packages/nodes-base/nodes/Code/PythonSandbox.ts index fd1ab3f564..13a3bb6228 100644 --- a/packages/nodes-base/nodes/Code/PythonSandbox.ts +++ b/packages/nodes-base/nodes/Code/PythonSandbox.ts @@ -18,7 +18,6 @@ export class PythonSandbox extends Sandbox { constructor( context: SandboxContext, private pythonCode: string, - itemIndex: number | undefined, helpers: IExecuteFunctions['helpers'], ) { super( @@ -28,7 +27,6 @@ export class PythonSandbox extends Sandbox { plural: 'dictionaries', }, }, - itemIndex, helpers, ); // Since python doesn't allow variable names starting with `$`, @@ -39,8 +37,8 @@ export class PythonSandbox extends Sandbox { }, {} as PythonSandboxContext); } - async runCode(): Promise { - return await this.runCodeInPython(); + async runCode(): Promise { + return await this.runCodeInPython(); } async runCodeAllItems() { @@ -48,9 +46,9 @@ export class PythonSandbox extends Sandbox { return this.validateRunCodeAllItems(executionResult); } - async runCodeEachItem() { + async runCodeEachItem(itemIndex: number) { const executionResult = await this.runCodeInPython(); - return this.validateRunCodeEachItem(executionResult); + return this.validateRunCodeEachItem(executionResult, itemIndex); } private async runCodeInPython() { diff --git a/packages/nodes-base/nodes/Code/Sandbox.ts b/packages/nodes-base/nodes/Code/Sandbox.ts index aab88f1b39..917de0ecc1 100644 --- a/packages/nodes-base/nodes/Code/Sandbox.ts +++ b/packages/nodes-base/nodes/Code/Sandbox.ts @@ -1,7 +1,13 @@ import { EventEmitter } from 'events'; -import type { IExecuteFunctions, INodeExecutionData, IWorkflowDataProxyData } from 'n8n-workflow'; -import { ValidationError } from './ValidationError'; +import type { + IExecuteFunctions, + INodeExecutionData, + ISupplyDataFunctions, + IWorkflowDataProxyData, +} from 'n8n-workflow'; + import { isObject } from './utils'; +import { ValidationError } from './ValidationError'; interface SandboxTextKeys { object: { @@ -18,7 +24,10 @@ export interface SandboxContext extends IWorkflowDataProxyData { export const REQUIRED_N8N_ITEM_KEYS = new Set(['json', 'binary', 'pairedItem', 'error']); -export function getSandboxContext(this: IExecuteFunctions, index: number): SandboxContext { +export function getSandboxContext( + this: IExecuteFunctions | ISupplyDataFunctions, + index: number, +): SandboxContext { const helpers = { ...this.helpers, httpRequestWithAuthentication: this.helpers.httpRequestWithAuthentication.bind(this), @@ -39,26 +48,28 @@ export function getSandboxContext(this: IExecuteFunctions, index: number): Sandb export abstract class Sandbox extends EventEmitter { constructor( private textKeys: SandboxTextKeys, - protected itemIndex: number | undefined, protected helpers: IExecuteFunctions['helpers'], ) { super(); } - abstract runCode(): Promise; + abstract runCode(): Promise; abstract runCodeAllItems(): Promise; - abstract runCodeEachItem(): Promise; + abstract runCodeEachItem(itemIndex: number): Promise; - validateRunCodeEachItem(executionResult: INodeExecutionData | undefined): INodeExecutionData { + validateRunCodeEachItem( + executionResult: INodeExecutionData | undefined, + itemIndex: number, + ): INodeExecutionData { if (typeof executionResult !== 'object') { throw new ValidationError({ message: `Code doesn't return ${this.getTextKey('object', { includeArticle: true })}`, description: `Please return ${this.getTextKey('object', { includeArticle: true, })} representing the output item. ('${executionResult}' was returned instead.)`, - itemIndex: this.itemIndex, + itemIndex, }); } @@ -70,25 +81,24 @@ export abstract class Sandbox extends EventEmitter { throw new ValidationError({ message: `Code doesn't return a single ${this.getTextKey('object')}`, description: `${firstSentence} If you need to output multiple items, please use the 'Run Once for All Items' mode instead.`, - itemIndex: this.itemIndex, + itemIndex, }); } const [returnData] = this.helpers.normalizeItems([executionResult]); - this.validateItem(returnData); + this.validateItem(returnData, itemIndex); // If at least one top-level key is a supported item key (`json`, `binary`, etc.), // and another top-level key is unrecognized, then the user mis-added a property // directly on the item, when they intended to add it on the `json` property - this.validateTopLevelKeys(returnData); + this.validateTopLevelKeys(returnData, itemIndex); return returnData; } validateRunCodeAllItems( executionResult: INodeExecutionData | INodeExecutionData[] | undefined, - itemIndex?: number, ): INodeExecutionData[] { if (typeof executionResult !== 'object') { throw new ValidationError({ @@ -96,7 +106,6 @@ export abstract class Sandbox extends EventEmitter { description: `Please return an array of ${this.getTextKey('object', { plural: true, })}, one for each item you would like to output.`, - itemIndex, }); } @@ -113,14 +122,15 @@ export abstract class Sandbox extends EventEmitter { ); if (mustHaveTopLevelN8nKey) { - for (const item of executionResult) { - this.validateTopLevelKeys(item); + for (let index = 0; index < executionResult.length; index++) { + const item = executionResult[index]; + this.validateTopLevelKeys(item, index); } } } const returnData = this.helpers.normalizeItems(executionResult); - returnData.forEach((item) => this.validateItem(item)); + returnData.forEach((item, index) => this.validateItem(item, index)); return returnData; } @@ -138,7 +148,7 @@ export abstract class Sandbox extends EventEmitter { return `a ${response}`; } - private validateItem({ json, binary }: INodeExecutionData) { + private validateItem({ json, binary }: INodeExecutionData, itemIndex: number) { if (json === undefined || !isObject(json)) { throw new ValidationError({ message: `A 'json' property isn't ${this.getTextKey('object', { includeArticle: true })}`, @@ -146,7 +156,7 @@ export abstract class Sandbox extends EventEmitter { 'object', { includeArticle: true }, )}.`, - itemIndex: this.itemIndex, + itemIndex, }); } @@ -157,18 +167,18 @@ export abstract class Sandbox extends EventEmitter { 'object', { includeArticle: true }, )}.`, - itemIndex: this.itemIndex, + itemIndex, }); } } - private validateTopLevelKeys(item: INodeExecutionData) { + private validateTopLevelKeys(item: INodeExecutionData, itemIndex: number) { Object.keys(item).forEach((key) => { if (REQUIRED_N8N_ITEM_KEYS.has(key)) return; throw new ValidationError({ message: `Unknown top-level item key: ${key}`, description: 'Access the properties of an item under `.json`, e.g. `item.json`', - itemIndex: this.itemIndex, + itemIndex, }); }); } diff --git a/packages/nodes-base/nodes/Code/ValidationError.ts b/packages/nodes-base/nodes/Code/ValidationError.ts index dd6c660226..f2ba712c2c 100644 --- a/packages/nodes-base/nodes/Code/ValidationError.ts +++ b/packages/nodes-base/nodes/Code/ValidationError.ts @@ -1,4 +1,6 @@ -export class ValidationError extends Error { +import { ApplicationError } from 'n8n-workflow'; + +export class ValidationError extends ApplicationError { description = ''; itemIndex: number | undefined = undefined; @@ -18,7 +20,7 @@ export class ValidationError extends Error { itemIndex?: number; lineNumber?: number; }) { - super(); + super(message); this.lineNumber = lineNumber; this.itemIndex = itemIndex; diff --git a/packages/nodes-base/nodes/Code/errors/WrappedExecutionError.ts b/packages/nodes-base/nodes/Code/errors/WrappedExecutionError.ts new file mode 100644 index 0000000000..dfd000b6d3 --- /dev/null +++ b/packages/nodes-base/nodes/Code/errors/WrappedExecutionError.ts @@ -0,0 +1,31 @@ +import { ApplicationError } from 'n8n-workflow'; + +export type WrappableError = Record; + +/** + * Errors received from the task runner are not instances of Error. + * This class wraps them in an Error instance and makes all their + * properties available. + */ +export class WrappedExecutionError extends ApplicationError { + [key: string]: unknown; + + constructor(error: WrappableError) { + const message = typeof error.message === 'string' ? error.message : 'Unknown error'; + super(message, { + cause: error, + }); + + this.copyErrorProperties(error); + } + + private copyErrorProperties(error: WrappableError) { + for (const key of Object.getOwnPropertyNames(error)) { + this[key] = error[key]; + } + } +} + +export function isWrappableError(error: unknown): error is WrappableError { + return typeof error === 'object' && error !== null; +} diff --git a/packages/nodes-base/nodes/Code/test/Code.workflow.json b/packages/nodes-base/nodes/Code/test/Code.workflow.json index 07933b0f82..fbb4199956 100644 --- a/packages/nodes-base/nodes/Code/test/Code.workflow.json +++ b/packages/nodes-base/nodes/Code/test/Code.workflow.json @@ -59,6 +59,34 @@ "type": "n8n-nodes-base.code", "typeVersion": 1, "position": [460, 860] + }, + { + "parameters": { + "mode": "runOnceForEachItem", + "jsCode": "const json = $input.item.json\njson.myNewField = await (async () => json.value)();\n\nreturn $input.item;" + }, + "id": "3cff4a64-c3fd-47d3-a33e-3c446846138f", + "name": "With Async Functions", + "type": "n8n-nodes-base.code", + "typeVersion": 1, + "position": [ + 460, + 1200 + ] + }, + { + "parameters": { + "mode": "runOnceForEachItem", + "jsCode": "const json = $input.item.json\njson.myNewField = await new Promise((resolve) => resolve(json.value));\n\nreturn $input.item;" + }, + "id": "947e4e3e-2da3-40c5-97da-830c4572fc05", + "name": "With Promises", + "type": "n8n-nodes-base.code", + "typeVersion": 1, + "position": [ + 460, + 1380 + ] } ], "pinData": { @@ -103,6 +131,34 @@ "myNewField": 2 } } + ], + "With Async Functions": [ + { + "json": { + "value": 1, + "myNewField": 1 + } + }, + { + "json": { + "value": 2, + "myNewField": 2 + } + } + ], + "With Promises": [ + { + "json": { + "value": 1, + "myNewField": 1 + } + }, + { + "json": { + "value": 2, + "myNewField": 2 + } + } ] }, "connections": { @@ -139,6 +195,16 @@ "node": "Run Once for Each Item (Legacy Syntax)", "type": "main", "index": 0 + }, + { + "node": "With Async Functions", + "type": "main", + "index": 0 + }, + { + "node": "With Promises", + "type": "main", + "index": 0 } ] ] diff --git a/packages/nodes-base/nodes/Code/test/workflow.do_not_obfuscate_validation_error.json b/packages/nodes-base/nodes/Code/test/workflow.do_not_obfuscate_validation_error.json new file mode 100644 index 0000000000..5286075d83 --- /dev/null +++ b/packages/nodes-base/nodes/Code/test/workflow.do_not_obfuscate_validation_error.json @@ -0,0 +1,86 @@ +{ + "name": "errors falsely flagged as internal", + "nodes": [ + { + "parameters": {}, + "id": "d2ff695c-4ca0-457d-ae9e-666d2dc53a53", + "name": "When clicking ‘Test workflow’", + "type": "n8n-nodes-base.manualTrigger", + "position": [ + 360, + 420 + ], + "typeVersion": 1 + }, + { + "parameters": { + "jsCode": "return {json: \"test\"}" + }, + "id": "fc540f62-d671-49a2-b35d-aead4ed8bd10", + "name": "Code", + "type": "n8n-nodes-base.code", + "typeVersion": 2, + "position": [ + 620, + 420 + ], + "onError": "continueErrorOutput" + }, + { + "parameters": {}, + "id": "d8335277-61af-42d8-9cf5-02a8b85df42b", + "name": "No Operation, do nothing", + "type": "n8n-nodes-base.noOp", + "typeVersion": 1, + "position": [ + 900, + 500 + ] + } + ], + "pinData": { + "No Operation, do nothing": [ + { + "json": { + "error": "A 'json' property isn't an object [item 0]" + } + } + ] + }, + "connections": { + "When clicking ‘Test workflow’": { + "main": [ + [ + { + "node": "Code", + "type": "main", + "index": 0 + } + ] + ] + }, + "Code": { + "main": [ + [], + [ + { + "node": "No Operation, do nothing", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "active": false, + "settings": { + "executionOrder": "v1" + }, + "versionId": "1aa448f4-ac5f-497b-ae3c-62a5e9db63d4", + "meta": { + "templateCredsSetupCompleted": true, + "instanceId": "be251a83c052a9862eeac953816fbb1464f89dfbf79d7ac490a8e336a8cc8bfd" + }, + "id": "TlJvElz9tvmByCh3", + "tags": [] +} diff --git a/packages/nodes-base/nodes/CoinGecko/CoinDescription.ts b/packages/nodes-base/nodes/CoinGecko/CoinDescription.ts index 58dbb956a1..83195b0899 100644 --- a/packages/nodes-base/nodes/CoinGecko/CoinDescription.ts +++ b/packages/nodes-base/nodes/CoinGecko/CoinDescription.ts @@ -99,7 +99,7 @@ export const coinFields: INodeProperties[] = [ required: true, type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getCoins', }, @@ -128,7 +128,7 @@ export const coinFields: INodeProperties[] = [ }, default: '', description: - 'The first currency in the pair. For BTC:ETH this is BTC. Choose from the list, or specify an ID using an expression.', + 'The first currency in the pair. For BTC:ETH this is BTC. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Base Currency Name or ID', @@ -146,7 +146,7 @@ export const coinFields: INodeProperties[] = [ }, default: '', description: - 'The first currency in the pair. For BTC:ETH this is BTC. Choose from the list, or specify an ID using an expression.', + 'The first currency in the pair. For BTC:ETH this is BTC. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Coin Name or ID', @@ -154,7 +154,7 @@ export const coinFields: INodeProperties[] = [ required: true, type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getCoins', }, @@ -185,7 +185,7 @@ export const coinFields: INodeProperties[] = [ default: [], placeholder: 'bitcoin', description: - 'The first currency in the pair. For BTC:ETH this is BTC. Choose from the list, or specify IDs using an expression.', + 'The first currency in the pair. For BTC:ETH this is BTC. Choose from the list, or specify IDs using an expression.', }, { displayName: 'Platform ID', @@ -258,7 +258,7 @@ export const coinFields: INodeProperties[] = [ }, default: '', description: - 'The first currency in the pair. For BTC:ETH this is BTC. Choose from the list, or specify an ID using an expression.', + 'The first currency in the pair. For BTC:ETH this is BTC. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Quote Currency Name or ID', @@ -276,7 +276,7 @@ export const coinFields: INodeProperties[] = [ }, default: '', description: - 'The second currency in the pair. For BTC:ETH this is ETH. Choose from the list, or specify an ID using an expression.', + 'The second currency in the pair. For BTC:ETH this is ETH. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Quote Currency Names or IDs', @@ -294,7 +294,7 @@ export const coinFields: INodeProperties[] = [ }, default: [], description: - 'The second currency in the pair. For BTC:ETH this is ETH. Choose from the list, or specify IDs using an expression.', + 'The second currency in the pair. For BTC:ETH this is ETH. Choose from the list, or specify IDs using an expression.', }, { displayName: 'Range (Days)', @@ -394,7 +394,7 @@ export const coinFields: INodeProperties[] = [ displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, displayOptions: { show: { @@ -555,7 +555,7 @@ export const coinFields: INodeProperties[] = [ displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, displayOptions: { show: { @@ -573,7 +573,7 @@ export const coinFields: INodeProperties[] = [ }, default: [], description: - 'Filter results by exchange IDs. Choose from the list, or specify IDs using an expression.', + 'Filter results by exchange IDs. Choose from the list, or specify IDs using an expression.', }, { displayName: 'Include Exchange Logo', @@ -608,7 +608,7 @@ export const coinFields: INodeProperties[] = [ displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, displayOptions: { show: { diff --git a/packages/nodes-base/nodes/CoinGecko/CoinGecko.node.ts b/packages/nodes-base/nodes/CoinGecko/CoinGecko.node.ts index dc9c9e9b5d..e31c84194b 100644 --- a/packages/nodes-base/nodes/CoinGecko/CoinGecko.node.ts +++ b/packages/nodes-base/nodes/CoinGecko/CoinGecko.node.ts @@ -7,6 +7,7 @@ import type { INodeType, INodeTypeDescription, } from 'n8n-workflow'; +import { NodeConnectionType } from 'n8n-workflow'; import moment from 'moment-timezone'; import { coinFields, coinOperations } from './CoinDescription'; @@ -27,8 +28,8 @@ export class CoinGecko implements INodeType { defaults: { name: 'CoinGecko', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], properties: [ { displayName: 'Resource', @@ -476,7 +477,7 @@ export class CoinGecko implements INodeType { ); returnData.push(...executionData); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push({ error: error.message, json: {} }); continue; } diff --git a/packages/nodes-base/nodes/CoinGecko/EventDescription.ts b/packages/nodes-base/nodes/CoinGecko/EventDescription.ts index 811a9c5a33..004d965349 100644 --- a/packages/nodes-base/nodes/CoinGecko/EventDescription.ts +++ b/packages/nodes-base/nodes/CoinGecko/EventDescription.ts @@ -59,7 +59,7 @@ export const eventFields: INodeProperties[] = [ displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, displayOptions: { show: { @@ -78,7 +78,7 @@ export const eventFields: INodeProperties[] = [ }, default: '', description: - 'Country code of event. Choose from the list, or specify an ID using an expression.', + 'Country code of event. Choose from the list, or specify an ID using an expression.', }, { displayName: 'From Date', @@ -103,7 +103,7 @@ export const eventFields: INodeProperties[] = [ }, default: '', description: - 'Type of event. Choose from the list, or specify an ID using an expression.', + 'Type of event. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Upcoming Events Only', diff --git a/packages/nodes-base/nodes/CompareDatasets/CompareDatasets.node.ts b/packages/nodes-base/nodes/CompareDatasets/CompareDatasets.node.ts index 332ca2920b..87b0c88c72 100644 --- a/packages/nodes-base/nodes/CompareDatasets/CompareDatasets.node.ts +++ b/packages/nodes-base/nodes/CompareDatasets/CompareDatasets.node.ts @@ -1,9 +1,10 @@ -import type { - IExecuteFunctions, - IDataObject, - INodeExecutionData, - INodeType, - INodeTypeDescription, +import { + type IExecuteFunctions, + type IDataObject, + type INodeExecutionData, + type INodeType, + type INodeTypeDescription, + NodeConnectionType, } from 'n8n-workflow'; import { checkInput, @@ -21,12 +22,17 @@ export class CompareDatasets implements INodeType { version: [1, 2, 2.1, 2.2, 2.3], description: 'Compare two inputs for changes', defaults: { name: 'Compare Datasets' }, - // eslint-disable-next-line n8n-nodes-base/node-class-description-inputs-wrong-regular-node - inputs: ['main', 'main'], + + inputs: [NodeConnectionType.Main, NodeConnectionType.Main], inputNames: ['Input A', 'Input B'], requiredInputs: 1, - // eslint-disable-next-line n8n-nodes-base/node-class-description-outputs-wrong - outputs: ['main', 'main', 'main', 'main'], + + outputs: [ + NodeConnectionType.Main, + NodeConnectionType.Main, + NodeConnectionType.Main, + NodeConnectionType.Main, + ], outputNames: ['In A only', 'Same', 'Different', 'In B only'], properties: [ { @@ -189,7 +195,7 @@ export class CompareDatasets implements INodeType { displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, options: [ { diff --git a/packages/nodes-base/nodes/Compression/Compression.node.ts b/packages/nodes-base/nodes/Compression/Compression.node.ts index b6ab2a22ba..4f816cbbae 100644 --- a/packages/nodes-base/nodes/Compression/Compression.node.ts +++ b/packages/nodes-base/nodes/Compression/Compression.node.ts @@ -1,10 +1,11 @@ import { promisify } from 'util'; -import type { - IBinaryKeyData, - IExecuteFunctions, - INodeExecutionData, - INodeType, - INodeTypeDescription, +import { + NodeConnectionType, + type IBinaryKeyData, + type IExecuteFunctions, + type INodeExecutionData, + type INodeType, + type INodeTypeDescription, } from 'n8n-workflow'; import * as fflate from 'fflate'; @@ -57,8 +58,8 @@ export class Compression implements INodeType { name: 'Compression', color: '#408000', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], properties: [ { displayName: 'Operation', @@ -437,7 +438,7 @@ export class Compression implements INodeType { } } } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push({ json: { error: error.message, diff --git a/packages/nodes-base/nodes/Contentful/Contentful.node.json b/packages/nodes-base/nodes/Contentful/Contentful.node.json index 22ea2f5699..3875faef48 100644 --- a/packages/nodes-base/nodes/Contentful/Contentful.node.json +++ b/packages/nodes-base/nodes/Contentful/Contentful.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/contentful" + "url": "https://docs.n8n.io/integrations/builtin/credentials/contentful/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Contentful/Contentful.node.ts b/packages/nodes-base/nodes/Contentful/Contentful.node.ts index 12403dd8dd..c666ec83c2 100644 --- a/packages/nodes-base/nodes/Contentful/Contentful.node.ts +++ b/packages/nodes-base/nodes/Contentful/Contentful.node.ts @@ -5,6 +5,7 @@ import type { INodeType, INodeTypeDescription, } from 'n8n-workflow'; +import { NodeConnectionType } from 'n8n-workflow'; import { contentfulApiRequestAllItems, contentfulApiRequest } from './GenericFunctions'; @@ -27,8 +28,8 @@ export class Contentful implements INodeType { defaults: { name: 'Contentful', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'contentfulApi', @@ -363,7 +364,7 @@ export class Contentful implements INodeType { ); returnData.push(...executionData); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push({ error: error.message, json: {} }); continue; } diff --git a/packages/nodes-base/nodes/Contentful/EntryDescription.ts b/packages/nodes-base/nodes/Contentful/EntryDescription.ts index b5820b98cb..2d76804183 100644 --- a/packages/nodes-base/nodes/Contentful/EntryDescription.ts +++ b/packages/nodes-base/nodes/Contentful/EntryDescription.ts @@ -189,4 +189,26 @@ export const fields: INodeProperties[] = [ }, }, }, + { + displayName: 'Additional Fields', + name: 'additionalFields', + type: 'collection', + placeholder: 'Add Field', + default: {}, + displayOptions: { + show: { + resource: [resource.value], + operation: ['get'], + }, + }, + options: [ + { + displayName: 'RAW Data', + name: 'rawData', + type: 'boolean', + default: false, + description: 'Whether the data should be returned RAW instead of parsed', + }, + ], + }, ]; diff --git a/packages/nodes-base/nodes/ConvertKit/ConvertKit.node.json b/packages/nodes-base/nodes/ConvertKit/ConvertKit.node.json index 1a872c0ec0..2a6f8489ec 100644 --- a/packages/nodes-base/nodes/ConvertKit/ConvertKit.node.json +++ b/packages/nodes-base/nodes/ConvertKit/ConvertKit.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/convertKit" + "url": "https://docs.n8n.io/integrations/builtin/credentials/convertKit/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/ConvertKit/ConvertKit.node.ts b/packages/nodes-base/nodes/ConvertKit/ConvertKit.node.ts index a117778f83..a19911ae74 100644 --- a/packages/nodes-base/nodes/ConvertKit/ConvertKit.node.ts +++ b/packages/nodes-base/nodes/ConvertKit/ConvertKit.node.ts @@ -1,11 +1,12 @@ -import type { - IExecuteFunctions, - ILoadOptionsFunctions, - IDataObject, - INodeExecutionData, - INodePropertyOptions, - INodeType, - INodeTypeDescription, +import { + type IExecuteFunctions, + type ILoadOptionsFunctions, + type IDataObject, + type INodeExecutionData, + type INodePropertyOptions, + type INodeType, + type INodeTypeDescription, + NodeConnectionType, } from 'n8n-workflow'; import { convertKitApiRequest } from './GenericFunctions'; @@ -32,8 +33,8 @@ export class ConvertKit implements INodeType { defaults: { name: 'ConvertKit', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'convertKitApi', @@ -484,7 +485,7 @@ export class ConvertKit implements INodeType { ); returnData.push(...executionData); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push({ error: error.message, json: {} }); continue; } diff --git a/packages/nodes-base/nodes/ConvertKit/ConvertKitTrigger.node.json b/packages/nodes-base/nodes/ConvertKit/ConvertKitTrigger.node.json index be7798fc93..b727df84bb 100644 --- a/packages/nodes-base/nodes/ConvertKit/ConvertKitTrigger.node.json +++ b/packages/nodes-base/nodes/ConvertKit/ConvertKitTrigger.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/convertKit" + "url": "https://docs.n8n.io/integrations/builtin/credentials/convertKit/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/ConvertKit/ConvertKitTrigger.node.ts b/packages/nodes-base/nodes/ConvertKit/ConvertKitTrigger.node.ts index 415f4ceef1..9c3441fd86 100644 --- a/packages/nodes-base/nodes/ConvertKit/ConvertKitTrigger.node.ts +++ b/packages/nodes-base/nodes/ConvertKit/ConvertKitTrigger.node.ts @@ -8,6 +8,7 @@ import type { INodeTypeDescription, IWebhookResponseData, } from 'n8n-workflow'; +import { NodeConnectionType } from 'n8n-workflow'; import { snakeCase } from 'change-case'; import { convertKitApiRequest } from './GenericFunctions'; @@ -25,7 +26,7 @@ export class ConvertKitTrigger implements INodeType { name: 'ConvertKit Trigger', }, inputs: [], - outputs: ['main'], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'convertKitApi', @@ -96,7 +97,7 @@ export class ConvertKitTrigger implements INodeType { name: 'formId', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getForms', }, @@ -113,7 +114,7 @@ export class ConvertKitTrigger implements INodeType { name: 'courseId', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getSequences', }, @@ -155,7 +156,7 @@ export class ConvertKitTrigger implements INodeType { name: 'tagId', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getTags', }, diff --git a/packages/nodes-base/nodes/ConvertKit/FormDescription.ts b/packages/nodes-base/nodes/ConvertKit/FormDescription.ts index 93e8d5b27b..44fbf9589c 100644 --- a/packages/nodes-base/nodes/ConvertKit/FormDescription.ts +++ b/packages/nodes-base/nodes/ConvertKit/FormDescription.ts @@ -42,7 +42,7 @@ export const formFields: INodeProperties[] = [ name: 'id', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getForms', }, diff --git a/packages/nodes-base/nodes/ConvertKit/SequenceDescription.ts b/packages/nodes-base/nodes/ConvertKit/SequenceDescription.ts index 501a4ee05e..19934893d2 100644 --- a/packages/nodes-base/nodes/ConvertKit/SequenceDescription.ts +++ b/packages/nodes-base/nodes/ConvertKit/SequenceDescription.ts @@ -42,7 +42,7 @@ export const sequenceFields: INodeProperties[] = [ name: 'id', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getSequences', }, @@ -166,7 +166,7 @@ export const sequenceFields: INodeProperties[] = [ }, default: [], description: - 'Tags. Choose from the list, or specify IDs using an expression.', + 'Tags. Choose from the list, or specify IDs using an expression.', }, ], }, diff --git a/packages/nodes-base/nodes/ConvertKit/TagSubscriberDescription.ts b/packages/nodes-base/nodes/ConvertKit/TagSubscriberDescription.ts index 5780921c6a..cd58f99ef6 100644 --- a/packages/nodes-base/nodes/ConvertKit/TagSubscriberDescription.ts +++ b/packages/nodes-base/nodes/ConvertKit/TagSubscriberDescription.ts @@ -41,7 +41,7 @@ export const tagSubscriberFields: INodeProperties[] = [ name: 'tagId', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getTags', }, diff --git a/packages/nodes-base/nodes/Copper/Copper.node.json b/packages/nodes-base/nodes/Copper/Copper.node.json index 4c7e5be4d7..09465b11f2 100644 --- a/packages/nodes-base/nodes/Copper/Copper.node.json +++ b/packages/nodes-base/nodes/Copper/Copper.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/copper" + "url": "https://docs.n8n.io/integrations/builtin/credentials/copper/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Copper/Copper.node.ts b/packages/nodes-base/nodes/Copper/Copper.node.ts index 657d948135..05274dd453 100644 --- a/packages/nodes-base/nodes/Copper/Copper.node.ts +++ b/packages/nodes-base/nodes/Copper/Copper.node.ts @@ -5,6 +5,7 @@ import type { INodeType, INodeTypeDescription, } from 'n8n-workflow'; +import { NodeConnectionType } from 'n8n-workflow'; import { adjustCompanyFields, @@ -46,8 +47,8 @@ export class Copper implements INodeType { defaults: { name: 'Copper', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'copperApi', @@ -618,7 +619,7 @@ export class Copper implements INodeType { } } } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push({ error: error.toString(), json: {} }); continue; } diff --git a/packages/nodes-base/nodes/Copper/CopperTrigger.node.json b/packages/nodes-base/nodes/Copper/CopperTrigger.node.json index 6ceb07d5a8..813c724746 100644 --- a/packages/nodes-base/nodes/Copper/CopperTrigger.node.json +++ b/packages/nodes-base/nodes/Copper/CopperTrigger.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/copper" + "url": "https://docs.n8n.io/integrations/builtin/credentials/copper/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Copper/CopperTrigger.node.ts b/packages/nodes-base/nodes/Copper/CopperTrigger.node.ts index 4ae1fe780c..e78520ef6f 100644 --- a/packages/nodes-base/nodes/Copper/CopperTrigger.node.ts +++ b/packages/nodes-base/nodes/Copper/CopperTrigger.node.ts @@ -6,6 +6,7 @@ import type { INodeTypeDescription, IWebhookResponseData, } from 'n8n-workflow'; +import { NodeConnectionType } from 'n8n-workflow'; import { copperApiRequest, getAutomaticSecret } from './GenericFunctions'; @@ -21,7 +22,7 @@ export class CopperTrigger implements INodeType { name: 'Copper Trigger', }, inputs: [], - outputs: ['main'], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'copperApi', diff --git a/packages/nodes-base/nodes/Copper/GenericFunctions.ts b/packages/nodes-base/nodes/Copper/GenericFunctions.ts index 2ffd1ca7cf..3137471c2e 100644 --- a/packages/nodes-base/nodes/Copper/GenericFunctions.ts +++ b/packages/nodes-base/nodes/Copper/GenericFunctions.ts @@ -7,7 +7,7 @@ import type { IHookFunctions, IHttpRequestMethods, ILoadOptionsFunctions, - IRequestOptions, + IHttpRequestOptions, IWebhookFunctions, JsonObject, } from 'n8n-workflow'; @@ -35,19 +35,14 @@ export async function copperApiRequest( uri = '', option: IDataObject = {}, ) { - const credentials = (await this.getCredentials('copperApi')) as { apiKey: string; email: string }; - - let options: IRequestOptions = { + let options: IHttpRequestOptions = { headers: { - 'X-PW-AccessToken': credentials.apiKey, - 'X-PW-Application': 'developer_api', - 'X-PW-UserEmail': credentials.email, 'Content-Type': 'application/json', }, method, qs, body, - uri: uri || `https://api.prosperworks.com/developer_api/v1${resource}`, + url: uri || `https://api.copper.com/developer_api/v1${resource}`, json: true, }; @@ -62,7 +57,7 @@ export async function copperApiRequest( } try { - return await this.helpers.request(options); + return await this.helpers.requestWithAuthentication.call(this, 'copperApi', options); } catch (error) { throw new NodeApiError(this.getNode(), error as JsonObject); } diff --git a/packages/nodes-base/nodes/Copper/descriptions/CompanyDescription.ts b/packages/nodes-base/nodes/Copper/descriptions/CompanyDescription.ts index 82bc436121..0acd63e83e 100644 --- a/packages/nodes-base/nodes/Copper/descriptions/CompanyDescription.ts +++ b/packages/nodes-base/nodes/Copper/descriptions/CompanyDescription.ts @@ -1,8 +1,7 @@ import type { INodeProperties } from 'n8n-workflow'; -import { isoCountryCodes } from '../utils/isoCountryCodes'; - import { addressFixedCollection, phoneNumbersFixedCollection } from '../utils/sharedFields'; +import { isoCountryCodes } from '@utils/ISOCountryCodes'; export const companyOperations: INodeProperties[] = [ { diff --git a/packages/nodes-base/nodes/Copper/utils/isoCountryCodes.ts b/packages/nodes-base/nodes/Copper/utils/isoCountryCodes.ts deleted file mode 100644 index 9ee28fbf56..0000000000 --- a/packages/nodes-base/nodes/Copper/utils/isoCountryCodes.ts +++ /dev/null @@ -1,1000 +0,0 @@ -// ISO 3166 alpha-2 country code - -export const isoCountryCodes = [ - { - name: 'Afghanistan', - alpha2: 'AF', - }, - { - name: 'Åland Islands', - alpha2: 'AX', - }, - { - name: 'Albania', - alpha2: 'AL', - }, - { - name: 'Algeria', - alpha2: 'DZ', - }, - { - name: 'American Samoa', - alpha2: 'AS', - }, - { - name: 'Andorra', - alpha2: 'AD', - }, - { - name: 'Angola', - alpha2: 'AO', - }, - { - name: 'Anguilla', - alpha2: 'AI', - }, - { - name: 'Antarctica', - alpha2: 'AQ', - }, - { - name: 'Antigua and Barbuda', - alpha2: 'AG', - }, - { - name: 'Argentina', - alpha2: 'AR', - }, - { - name: 'Armenia', - alpha2: 'AM', - }, - { - name: 'Aruba', - alpha2: 'AW', - }, - { - name: 'Australia', - alpha2: 'AU', - }, - { - name: 'Austria', - alpha2: 'AT', - }, - { - name: 'Azerbaijan', - alpha2: 'AZ', - }, - { - name: 'Bahamas (the)', - alpha2: 'BS', - }, - { - name: 'Bahrain', - alpha2: 'BH', - }, - { - name: 'Bangladesh', - alpha2: 'BD', - }, - { - name: 'Barbados', - alpha2: 'BB', - }, - { - name: 'Belarus', - alpha2: 'BY', - }, - { - name: 'Belgium', - alpha2: 'BE', - }, - { - name: 'Belize', - alpha2: 'BZ', - }, - { - name: 'Benin', - alpha2: 'BJ', - }, - { - name: 'Bermuda', - alpha2: 'BM', - }, - { - name: 'Bhutan', - alpha2: 'BT', - }, - { - name: 'Bolivia (Plurinational State of)', - alpha2: 'BO', - }, - { - name: 'Bonaire, Sint Eustatius and Saba', - alpha2: 'BQ', - }, - { - name: 'Bosnia and Herzegovina', - alpha2: 'BA', - }, - { - name: 'Botswana', - alpha2: 'BW', - }, - { - name: 'Bouvet Island', - alpha2: 'BV', - }, - { - name: 'Brazil', - alpha2: 'BR', - }, - { - name: 'British Indian Ocean Territory (the)', - alpha2: 'IO', - }, - { - name: 'Brunei Darussalam', - alpha2: 'BN', - }, - { - name: 'Bulgaria', - alpha2: 'BG', - }, - { - name: 'Burkina Faso', - alpha2: 'BF', - }, - { - name: 'Burundi', - alpha2: 'BI', - }, - { - name: 'Cabo Verde', - alpha2: 'CV', - }, - { - name: 'Cambodia', - alpha2: 'KH', - }, - { - name: 'Cameroon', - alpha2: 'CM', - }, - { - name: 'Canada', - alpha2: 'CA', - }, - { - name: 'Cayman Islands (the)', - alpha2: 'KY', - }, - { - name: 'Central African Republic (the)', - alpha2: 'CF', - }, - { - name: 'Chad', - alpha2: 'TD', - }, - { - name: 'Chile', - alpha2: 'CL', - }, - { - name: 'China', - alpha2: 'CN', - }, - { - name: 'Christmas Island', - alpha2: 'CX', - }, - { - name: 'Cocos (Keeling) Islands (the)', - alpha2: 'CC', - }, - { - name: 'Colombia', - alpha2: 'CO', - }, - { - name: 'Comoros (the)', - alpha2: 'KM', - }, - { - name: 'Congo (the Democratic Republic of the)', - alpha2: 'CD', - }, - { - name: 'Congo (the)', - alpha2: 'CG', - }, - { - name: 'Cook Islands (the)', - alpha2: 'CK', - }, - { - name: 'Costa Rica', - alpha2: 'CR', - }, - { - name: "Côte d'Ivoire", - alpha2: 'CI', - }, - { - name: 'Croatia', - alpha2: 'HR', - }, - { - name: 'Cuba', - alpha2: 'CU', - }, - { - name: 'Curaçao', - alpha2: 'CW', - }, - { - name: 'Cyprus', - alpha2: 'CY', - }, - { - name: 'Czechia', - alpha2: 'CZ', - }, - { - name: 'Denmark', - alpha2: 'DK', - }, - { - name: 'Djibouti', - alpha2: 'DJ', - }, - { - name: 'Dominica', - alpha2: 'DM', - }, - { - name: 'Dominican Republic (the)', - alpha2: 'DO', - }, - { - name: 'Ecuador', - alpha2: 'EC', - }, - { - name: 'Egypt', - alpha2: 'EG', - }, - { - name: 'El Salvador', - alpha2: 'SV', - }, - { - name: 'Equatorial Guinea', - alpha2: 'GQ', - }, - { - name: 'Eritrea', - alpha2: 'ER', - }, - { - name: 'Estonia', - alpha2: 'EE', - }, - { - name: 'Ethiopia', - alpha2: 'ET', - }, - { - name: 'Falkland Islands (the) [Malvinas]', - alpha2: 'FK', - }, - { - name: 'Faroe Islands (the)', - alpha2: 'FO', - }, - { - name: 'Fiji', - alpha2: 'FJ', - }, - { - name: 'Finland', - alpha2: 'FI', - }, - { - name: 'France', - alpha2: 'FR', - }, - { - name: 'French Guiana', - alpha2: 'GF', - }, - { - name: 'French Polynesia', - alpha2: 'PF', - }, - { - name: 'French Southern Territories (the)', - alpha2: 'TF', - }, - { - name: 'Gabon', - alpha2: 'GA', - }, - { - name: 'Gambia (the)', - alpha2: 'GM', - }, - { - name: 'Georgia', - alpha2: 'GE', - }, - { - name: 'Germany', - alpha2: 'DE', - }, - { - name: 'Ghana', - alpha2: 'GH', - }, - { - name: 'Gibraltar', - alpha2: 'GI', - }, - { - name: 'Greece', - alpha2: 'GR', - }, - { - name: 'Greenland', - alpha2: 'GL', - }, - { - name: 'Grenada', - alpha2: 'GD', - }, - { - name: 'Guadeloupe', - alpha2: 'GP', - }, - { - name: 'Guam', - alpha2: 'GU', - }, - { - name: 'Guatemala', - alpha2: 'GT', - }, - { - name: 'Guernsey', - alpha2: 'GG', - }, - { - name: 'Guinea', - alpha2: 'GN', - }, - { - name: 'Guinea-Bissau', - alpha2: 'GW', - }, - { - name: 'Guyana', - alpha2: 'GY', - }, - { - name: 'Haiti', - alpha2: 'HT', - }, - { - name: 'Heard Island and McDonald Islands', - alpha2: 'HM', - }, - { - name: 'Holy See (the)', - alpha2: 'VA', - }, - { - name: 'Honduras', - alpha2: 'HN', - }, - { - name: 'Hong Kong', - alpha2: 'HK', - }, - { - name: 'Hungary', - alpha2: 'HU', - }, - { - name: 'Iceland', - alpha2: 'IS', - }, - { - name: 'India', - alpha2: 'IN', - }, - { - name: 'Indonesia', - alpha2: 'ID', - }, - { - name: 'Iran (Islamic Republic of)', - alpha2: 'IR', - }, - { - name: 'Iraq', - alpha2: 'IQ', - }, - { - name: 'Ireland', - alpha2: 'IE', - }, - { - name: 'Isle of Man', - alpha2: 'IM', - }, - { - name: 'Israel', - alpha2: 'IL', - }, - { - name: 'Italy', - alpha2: 'IT', - }, - { - name: 'Jamaica', - alpha2: 'JM', - }, - { - name: 'Japan', - alpha2: 'JP', - }, - { - name: 'Jersey', - alpha2: 'JE', - }, - { - name: 'Jordan', - alpha2: 'JO', - }, - { - name: 'Kazakhstan', - alpha2: 'KZ', - }, - { - name: 'Kenya', - alpha2: 'KE', - }, - { - name: 'Kiribati', - alpha2: 'KI', - }, - { - name: "Korea (the Democratic People's Republic of)", - alpha2: 'KP', - }, - { - name: 'Korea (the Republic of)', - alpha2: 'KR', - }, - { - name: 'Kuwait', - alpha2: 'KW', - }, - { - name: 'Kyrgyzstan', - alpha2: 'KG', - }, - { - name: "Lao People's Democratic Republic (the)", - alpha2: 'LA', - }, - { - name: 'Latvia', - alpha2: 'LV', - }, - { - name: 'Lebanon', - alpha2: 'LB', - }, - { - name: 'Lesotho', - alpha2: 'LS', - }, - { - name: 'Liberia', - alpha2: 'LR', - }, - { - name: 'Libya', - alpha2: 'LY', - }, - { - name: 'Liechtenstein', - alpha2: 'LI', - }, - { - name: 'Lithuania', - alpha2: 'LT', - }, - { - name: 'Luxembourg', - alpha2: 'LU', - }, - { - name: 'Macao', - alpha2: 'MO', - }, - { - name: 'Macedonia (the former Yugoslav Republic of)', - alpha2: 'MK', - }, - { - name: 'Madagascar', - alpha2: 'MG', - }, - { - name: 'Malawi', - alpha2: 'MW', - }, - { - name: 'Malaysia', - alpha2: 'MY', - }, - { - name: 'Maldives', - alpha2: 'MV', - }, - { - name: 'Mali', - alpha2: 'ML', - }, - { - name: 'Malta', - alpha2: 'MT', - }, - { - name: 'Marshall Islands (the)', - alpha2: 'MH', - }, - { - name: 'Martinique', - alpha2: 'MQ', - }, - { - name: 'Mauritania', - alpha2: 'MR', - }, - { - name: 'Mauritius', - alpha2: 'MU', - }, - { - name: 'Mayotte', - alpha2: 'YT', - }, - { - name: 'Mexico', - alpha2: 'MX', - }, - { - name: 'Micronesia (Federated States of)', - alpha2: 'FM', - }, - { - name: 'Moldova (the Republic of)', - alpha2: 'MD', - }, - { - name: 'Monaco', - alpha2: 'MC', - }, - { - name: 'Mongolia', - alpha2: 'MN', - }, - { - name: 'Montenegro', - alpha2: 'ME', - }, - { - name: 'Montserrat', - alpha2: 'MS', - }, - { - name: 'Morocco', - alpha2: 'MA', - }, - { - name: 'Mozambique', - alpha2: 'MZ', - }, - { - name: 'Myanmar', - alpha2: 'MM', - }, - { - name: 'Namibia', - alpha2: 'NA', - }, - { - name: 'Nauru', - alpha2: 'NR', - }, - { - name: 'Nepal', - alpha2: 'NP', - }, - { - name: 'Netherlands (the)', - alpha2: 'NL', - }, - { - name: 'New Caledonia', - alpha2: 'NC', - }, - { - name: 'New Zealand', - alpha2: 'NZ', - }, - { - name: 'Nicaragua', - alpha2: 'NI', - }, - { - name: 'Niger (the)', - alpha2: 'NE', - }, - { - name: 'Nigeria', - alpha2: 'NG', - }, - { - name: 'Niue', - alpha2: 'NU', - }, - { - name: 'Norfolk Island', - alpha2: 'NF', - }, - { - name: 'Northern Mariana Islands (the)', - alpha2: 'MP', - }, - { - name: 'Norway', - alpha2: 'NO', - }, - { - name: 'Oman', - alpha2: 'OM', - }, - { - name: 'Pakistan', - alpha2: 'PK', - }, - { - name: 'Palau', - alpha2: 'PW', - }, - { - name: 'Palestine, State of', - alpha2: 'PS', - }, - { - name: 'Panama', - alpha2: 'PA', - }, - { - name: 'Papua New Guinea', - alpha2: 'PG', - }, - { - name: 'Paraguay', - alpha2: 'PY', - }, - { - name: 'Peru', - alpha2: 'PE', - }, - { - name: 'Philippines (the)', - alpha2: 'PH', - }, - { - name: 'Pitcairn', - alpha2: 'PN', - }, - { - name: 'Poland', - alpha2: 'PL', - }, - { - name: 'Portugal', - alpha2: 'PT', - }, - { - name: 'Puerto Rico', - alpha2: 'PR', - }, - { - name: 'Qatar', - alpha2: 'QA', - }, - { - name: 'Réunion', - alpha2: 'RE', - }, - { - name: 'Romania', - alpha2: 'RO', - }, - { - name: 'Russian Federation (the)', - alpha2: 'RU', - }, - { - name: 'Rwanda', - alpha2: 'RW', - }, - { - name: 'Saint Barthélemy', - alpha2: 'BL', - }, - { - name: 'Saint Helena, Ascension and Tristan da Cunha', - alpha2: 'SH', - }, - { - name: 'Saint Kitts and Nevis', - alpha2: 'KN', - }, - { - name: 'Saint Lucia', - alpha2: 'LC', - }, - { - name: 'Saint Martin (French part)', - alpha2: 'MF', - }, - { - name: 'Saint Pierre and Miquelon', - alpha2: 'PM', - }, - { - name: 'Saint Vincent and the Grenadines', - alpha2: 'VC', - }, - { - name: 'Samoa', - alpha2: 'WS', - }, - { - name: 'San Marino', - alpha2: 'SM', - }, - { - name: 'Sao Tome and Principe', - alpha2: 'ST', - }, - { - name: 'Saudi Arabia', - alpha2: 'SA', - }, - { - name: 'Senegal', - alpha2: 'SN', - }, - { - name: 'Serbia', - alpha2: 'RS', - }, - { - name: 'Seychelles', - alpha2: 'SC', - }, - { - name: 'Sierra Leone', - alpha2: 'SL', - }, - { - name: 'Singapore', - alpha2: 'SG', - }, - { - name: 'Sint Maarten (Dutch part)', - alpha2: 'SX', - }, - { - name: 'Slovakia', - alpha2: 'SK', - }, - { - name: 'Slovenia', - alpha2: 'SI', - }, - { - name: 'Solomon Islands', - alpha2: 'SB', - }, - { - name: 'Somalia', - alpha2: 'SO', - }, - { - name: 'South Africa', - alpha2: 'ZA', - }, - { - name: 'South Georgia and the South Sandwich Islands', - alpha2: 'GS', - }, - { - name: 'South Sudan', - alpha2: 'SS', - }, - { - name: 'Spain', - alpha2: 'ES', - }, - { - name: 'Sri Lanka', - alpha2: 'LK', - }, - { - name: 'Sudan (the)', - alpha2: 'SD', - }, - { - name: 'Suriname', - alpha2: 'SR', - }, - { - name: 'Svalbard and Jan Mayen', - alpha2: 'SJ', - }, - { - name: 'Swaziland', - alpha2: 'SZ', - }, - { - name: 'Sweden', - alpha2: 'SE', - }, - { - name: 'Switzerland', - alpha2: 'CH', - }, - { - name: 'Syrian Arab Republic', - alpha2: 'SY', - }, - { - name: 'Taiwan (Province of China)', - alpha2: 'TW', - }, - { - name: 'Tajikistan', - alpha2: 'TJ', - }, - { - name: 'Tanzania, United Republic of', - alpha2: 'TZ', - }, - { - name: 'Thailand', - alpha2: 'TH', - }, - { - name: 'Timor-Leste', - alpha2: 'TL', - }, - { - name: 'Togo', - alpha2: 'TG', - }, - { - name: 'Tokelau', - alpha2: 'TK', - }, - { - name: 'Tonga', - alpha2: 'TO', - }, - { - name: 'Trinidad and Tobago', - alpha2: 'TT', - }, - { - name: 'Tunisia', - alpha2: 'TN', - }, - { - name: 'Turkey', - alpha2: 'TR', - }, - { - name: 'Turkmenistan', - alpha2: 'TM', - }, - { - name: 'Turks and Caicos Islands (the)', - alpha2: 'TC', - }, - { - name: 'Tuvalu', - alpha2: 'TV', - }, - { - name: 'Uganda', - alpha2: 'UG', - }, - { - name: 'Ukraine', - alpha2: 'UA', - }, - { - name: 'United Arab Emirates (the)', - alpha2: 'AE', - }, - { - name: 'United Kingdom of Great Britain and Northern Ireland (the)', - alpha2: 'GB', - }, - { - name: 'United States Minor Outlying Islands (the)', - alpha2: 'UM', - }, - { - name: 'United States of America (the)', - alpha2: 'US', - }, - { - name: 'Uruguay', - alpha2: 'UY', - }, - { - name: 'Uzbekistan', - alpha2: 'UZ', - }, - { - name: 'Vanuatu', - alpha2: 'VU', - }, - { - name: 'Venezuela (Bolivarian Republic of)', - alpha2: 'VE', - }, - { - name: 'Viet Nam', - alpha2: 'VN', - }, - { - name: 'Virgin Islands (British)', - alpha2: 'VG', - }, - { - name: 'Virgin Islands (U.S.)', - alpha2: 'VI', - }, - { - name: 'Wallis and Futuna', - alpha2: 'WF', - }, - { - name: 'Western Sahara', - alpha2: 'EH', - }, - { - name: 'Yemen', - alpha2: 'YE', - }, - { - name: 'Zambia', - alpha2: 'ZM', - }, - { - name: 'Zimbabwe', - alpha2: 'ZW', - }, -]; diff --git a/packages/nodes-base/nodes/Cortex/AnalyzerDescriptions.ts b/packages/nodes-base/nodes/Cortex/AnalyzerDescriptions.ts index 449f34a593..338410f736 100644 --- a/packages/nodes-base/nodes/Cortex/AnalyzerDescriptions.ts +++ b/packages/nodes-base/nodes/Cortex/AnalyzerDescriptions.ts @@ -43,7 +43,7 @@ export const analyzerFields: INodeProperties[] = [ }, }, description: - 'Choose the analyzer. Choose from the list, or specify an ID using an expression.', + 'Choose the analyzer. Choose from the list, or specify an ID using an expression.', default: '', }, { @@ -66,7 +66,7 @@ export const analyzerFields: INodeProperties[] = [ }, default: '', description: - 'Choose the observable type. Choose from the list, or specify an ID using an expression.', + 'Choose the observable type. Choose from the list, or specify an ID using an expression.', }, // Observable type != file diff --git a/packages/nodes-base/nodes/Cortex/AnalyzerInterface.ts b/packages/nodes-base/nodes/Cortex/AnalyzerInterface.ts index 5f9f8fe827..a20948d01b 100644 --- a/packages/nodes-base/nodes/Cortex/AnalyzerInterface.ts +++ b/packages/nodes-base/nodes/Cortex/AnalyzerInterface.ts @@ -16,19 +16,19 @@ export const enum TLP { } export const enum ObservableDataType { - 'domain' = 'domain', - 'file' = 'file', - 'filename' = 'filename', - 'fqdn' = 'fqdn', - 'hash' = 'hash', - 'ip' = 'ip', - 'mail' = 'mail', - 'mail_subject' = 'mail_subject', - 'other' = 'other', - 'regexp' = 'regexp', - 'registry' = 'registry', - 'uri_path' = 'uri_path', - 'url' = 'url', + domain = 'domain', + file = 'file', + filename = 'filename', + fqdn = 'fqdn', + hash = 'hash', + ip = 'ip', + mail = 'mail', + mail_subject = 'mail_subject', + other = 'other', + regexp = 'regexp', + registry = 'registry', + uri_path = 'uri_path', + url = 'url', 'user-agent' = 'user-agent', } export interface IJob { diff --git a/packages/nodes-base/nodes/Cortex/Cortex.node.json b/packages/nodes-base/nodes/Cortex/Cortex.node.json index e20e26f73a..6f48d21041 100644 --- a/packages/nodes-base/nodes/Cortex/Cortex.node.json +++ b/packages/nodes-base/nodes/Cortex/Cortex.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/cortex" + "url": "https://docs.n8n.io/integrations/builtin/credentials/cortex/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Cortex/Cortex.node.ts b/packages/nodes-base/nodes/Cortex/Cortex.node.ts index 6cddcd3b5f..39bfff623c 100644 --- a/packages/nodes-base/nodes/Cortex/Cortex.node.ts +++ b/packages/nodes-base/nodes/Cortex/Cortex.node.ts @@ -8,6 +8,7 @@ import type { INodeType, INodeTypeDescription, } from 'n8n-workflow'; +import { NodeConnectionType } from 'n8n-workflow'; import upperFirst from 'lodash/upperFirst'; import * as changeCase from 'change-case'; import { cortexApiRequest, getEntityLabel, prepareParameters, splitTags } from './GenericFunctions'; @@ -32,8 +33,8 @@ export class Cortex implements INodeType { defaults: { name: 'Cortex', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'cortexApi', @@ -375,7 +376,7 @@ export class Cortex implements INodeType { returnData.push(responseData as IDataObject); } } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push({ error: error.message }); continue; } diff --git a/packages/nodes-base/nodes/Cortex/ResponderDescription.ts b/packages/nodes-base/nodes/Cortex/ResponderDescription.ts index 64966847f3..6de2a32589 100644 --- a/packages/nodes-base/nodes/Cortex/ResponderDescription.ts +++ b/packages/nodes-base/nodes/Cortex/ResponderDescription.ts @@ -43,7 +43,7 @@ export const responderFields: INodeProperties[] = [ }, }, description: - 'Choose the responder. Choose from the list, or specify an ID using an expression.', + 'Choose the responder. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Entity Type Name or ID', @@ -61,7 +61,7 @@ export const responderFields: INodeProperties[] = [ }, default: '', description: - 'Choose the Data type. Choose from the list, or specify an ID using an expression.', + 'Choose the Data type. Choose from the list, or specify an ID using an expression.', }, { displayName: 'JSON Parameters', diff --git a/packages/nodes-base/nodes/CrateDb/CrateDb.node.json b/packages/nodes-base/nodes/CrateDb/CrateDb.node.json index bc9717a21b..717fad03b8 100644 --- a/packages/nodes-base/nodes/CrateDb/CrateDb.node.json +++ b/packages/nodes-base/nodes/CrateDb/CrateDb.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/crateDb" + "url": "https://docs.n8n.io/integrations/builtin/credentials/crateDb/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/CrateDb/CrateDb.node.ts b/packages/nodes-base/nodes/CrateDb/CrateDb.node.ts index 3676d919ef..a489093425 100644 --- a/packages/nodes-base/nodes/CrateDb/CrateDb.node.ts +++ b/packages/nodes-base/nodes/CrateDb/CrateDb.node.ts @@ -4,7 +4,7 @@ import type { INodeType, INodeTypeDescription, } from 'n8n-workflow'; -import { NodeOperationError } from 'n8n-workflow'; +import { NodeConnectionType, NodeOperationError } from 'n8n-workflow'; import pgPromise from 'pg-promise'; import { @@ -28,8 +28,8 @@ export class CrateDb implements INodeType { defaults: { name: 'CrateDB', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'crateDb', diff --git a/packages/nodes-base/nodes/Cron/Cron.node.ts b/packages/nodes-base/nodes/Cron/Cron.node.ts index 7430e6c07a..df026c2a5f 100644 --- a/packages/nodes-base/nodes/Cron/Cron.node.ts +++ b/packages/nodes-base/nodes/Cron/Cron.node.ts @@ -5,9 +5,7 @@ import type { ITriggerResponse, TriggerTime, } from 'n8n-workflow'; -import { NodeHelpers, toCronExpression } from 'n8n-workflow'; - -import { CronJob } from 'cron'; +import { NodeConnectionType, NodeHelpers, toCronExpression } from 'n8n-workflow'; export class Cron implements INodeType { description: INodeTypeDescription = { @@ -25,9 +23,9 @@ export class Cron implements INodeType { name: 'Cron', color: '#29a568', }, - // eslint-disable-next-line n8n-nodes-base/node-class-description-inputs-wrong-regular-node + inputs: [], - outputs: ['main'], + outputs: [NodeConnectionType.Main], properties: [ { displayName: @@ -66,27 +64,11 @@ export class Cron implements INodeType { this.emit([this.helpers.returnJsonArray([{}])]); }; - const timezone = this.getTimezone(); - - // Start the cron-jobs - const cronJobs = cronTimes.map( - (cronTime) => new CronJob(cronTime, executeTrigger, undefined, true, timezone), - ); - - // Stop the cron-jobs - async function closeFunction() { - for (const cronJob of cronJobs) { - cronJob.stop(); - } - } - - async function manualTriggerFunction() { - executeTrigger(); - } + // Register the cron-jobs + cronTimes.forEach((cronTime) => this.helpers.registerCron(cronTime, executeTrigger)); return { - closeFunction, - manualTriggerFunction, + manualTriggerFunction: async () => executeTrigger(), }; } } diff --git a/packages/nodes-base/nodes/CrowdDev/CrowdDev.node.json b/packages/nodes-base/nodes/CrowdDev/CrowdDev.node.json index 1ae517e18e..355a528a4c 100644 --- a/packages/nodes-base/nodes/CrowdDev/CrowdDev.node.json +++ b/packages/nodes-base/nodes/CrowdDev/CrowdDev.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/crowddev" + "url": "https://docs.n8n.io/integrations/builtin/credentials/crowddev/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/CrowdDev/CrowdDev.node.ts b/packages/nodes-base/nodes/CrowdDev/CrowdDev.node.ts index b245e79a57..f8d94fceaf 100644 --- a/packages/nodes-base/nodes/CrowdDev/CrowdDev.node.ts +++ b/packages/nodes-base/nodes/CrowdDev/CrowdDev.node.ts @@ -1,4 +1,5 @@ import type { INodeType, INodeTypeDescription } from 'n8n-workflow'; +import { NodeConnectionType } from 'n8n-workflow'; import { allProperties } from './descriptions'; export class CrowdDev implements INodeType { @@ -14,8 +15,8 @@ export class CrowdDev implements INodeType { defaults: { name: 'crowd.dev', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'crowdDevApi', diff --git a/packages/nodes-base/nodes/CrowdDev/CrowdDevTrigger.node.json b/packages/nodes-base/nodes/CrowdDev/CrowdDevTrigger.node.json index 99afbd25f1..7de680900e 100644 --- a/packages/nodes-base/nodes/CrowdDev/CrowdDevTrigger.node.json +++ b/packages/nodes-base/nodes/CrowdDev/CrowdDevTrigger.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/crowddev" + "url": "https://docs.n8n.io/integrations/builtin/credentials/crowddev/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/CrowdDev/CrowdDevTrigger.node.ts b/packages/nodes-base/nodes/CrowdDev/CrowdDevTrigger.node.ts index 8c160f3e04..69f14f16ba 100644 --- a/packages/nodes-base/nodes/CrowdDev/CrowdDevTrigger.node.ts +++ b/packages/nodes-base/nodes/CrowdDev/CrowdDevTrigger.node.ts @@ -1,10 +1,11 @@ -import type { - IHookFunctions, - IWebhookFunctions, - INodeType, - INodeTypeDescription, - IWebhookResponseData, - IHttpRequestOptions, +import { + type IHookFunctions, + type IWebhookFunctions, + type INodeType, + type INodeTypeDescription, + type IWebhookResponseData, + type IHttpRequestOptions, + NodeConnectionType, } from 'n8n-workflow'; interface ICrowdDevCreds { @@ -44,7 +45,7 @@ export class CrowdDevTrigger implements INodeType { name: 'crowd.dev Trigger', }, inputs: [], - outputs: ['main'], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'crowdDevApi', diff --git a/packages/nodes-base/nodes/CrowdDev/descriptions/utils.ts b/packages/nodes-base/nodes/CrowdDev/descriptions/utils.ts index 4feee2c1e7..10740fa023 100644 --- a/packages/nodes-base/nodes/CrowdDev/descriptions/utils.ts +++ b/packages/nodes-base/nodes/CrowdDev/descriptions/utils.ts @@ -51,7 +51,7 @@ export const getAdditionalOptions = (fields: INodeProperties[]): INodeProperties }, }, default: {}, - placeholder: 'Add Option', + placeholder: 'Add option', options: fields, }; }; diff --git a/packages/nodes-base/nodes/Crypto/Crypto.node.ts b/packages/nodes-base/nodes/Crypto/Crypto.node.ts index db913eba2c..6bbaa30e74 100644 --- a/packages/nodes-base/nodes/Crypto/Crypto.node.ts +++ b/packages/nodes-base/nodes/Crypto/Crypto.node.ts @@ -10,7 +10,7 @@ import type { INodeTypeDescription, JsonObject, } from 'n8n-workflow'; -import { deepCopy, BINARY_ENCODING } from 'n8n-workflow'; +import { deepCopy, BINARY_ENCODING, NodeConnectionType } from 'n8n-workflow'; const unsupportedAlgorithms = [ 'RSA-MD4', @@ -39,8 +39,8 @@ export class Crypto implements INodeType { name: 'Crypto', color: '#408000', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], properties: [ { displayName: 'Action', @@ -334,7 +334,7 @@ export class Crypto implements INodeType { }, type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', options: supportedAlgorithms, default: '', required: true, @@ -532,7 +532,7 @@ export class Crypto implements INodeType { returnData.push(newItem); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push({ json: { error: (error as JsonObject).message, diff --git a/packages/nodes-base/nodes/CustomerIo/CustomerIo.node.json b/packages/nodes-base/nodes/CustomerIo/CustomerIo.node.json index f523bbc6c2..0ba7b46b87 100644 --- a/packages/nodes-base/nodes/CustomerIo/CustomerIo.node.json +++ b/packages/nodes-base/nodes/CustomerIo/CustomerIo.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/customerIo" + "url": "https://docs.n8n.io/integrations/builtin/credentials/customerIo/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/CustomerIo/CustomerIo.node.ts b/packages/nodes-base/nodes/CustomerIo/CustomerIo.node.ts index e5698bc812..b9202734c3 100644 --- a/packages/nodes-base/nodes/CustomerIo/CustomerIo.node.ts +++ b/packages/nodes-base/nodes/CustomerIo/CustomerIo.node.ts @@ -5,7 +5,7 @@ import type { INodeType, INodeTypeDescription, } from 'n8n-workflow'; -import { NodeOperationError } from 'n8n-workflow'; +import { NodeConnectionType, NodeOperationError } from 'n8n-workflow'; import { customerIoApiRequest, validateJSON } from './GenericFunctions'; import { campaignFields, campaignOperations } from './CampaignDescription'; import { customerFields, customerOperations } from './CustomerDescription'; @@ -24,8 +24,8 @@ export class CustomerIo implements INodeType { defaults: { name: 'Customer.io', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'customerIoApi', @@ -335,7 +335,7 @@ export class CustomerIo implements INodeType { returnData.push(responseData as unknown as IDataObject); } } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push({ error: error.message }); continue; } diff --git a/packages/nodes-base/nodes/CustomerIo/CustomerIoTrigger.node.json b/packages/nodes-base/nodes/CustomerIo/CustomerIoTrigger.node.json index 63d8ea8eeb..564377e5b2 100644 --- a/packages/nodes-base/nodes/CustomerIo/CustomerIoTrigger.node.json +++ b/packages/nodes-base/nodes/CustomerIo/CustomerIoTrigger.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/customerIo" + "url": "https://docs.n8n.io/integrations/builtin/credentials/customerIo/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/CustomerIo/CustomerIoTrigger.node.ts b/packages/nodes-base/nodes/CustomerIo/CustomerIoTrigger.node.ts index 8958d90081..a1fd44b59d 100644 --- a/packages/nodes-base/nodes/CustomerIo/CustomerIoTrigger.node.ts +++ b/packages/nodes-base/nodes/CustomerIo/CustomerIoTrigger.node.ts @@ -6,6 +6,7 @@ import type { INodeTypeDescription, IWebhookResponseData, } from 'n8n-workflow'; +import { NodeConnectionType } from 'n8n-workflow'; import { customerIoApiRequest, eventExists } from './GenericFunctions'; @@ -30,7 +31,7 @@ export class CustomerIoTrigger implements INodeType { name: 'Customer.io Trigger', }, inputs: [], - outputs: ['main'], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'customerIoApi', diff --git a/packages/nodes-base/nodes/DateTime/V1/DateTimeV1.node.ts b/packages/nodes-base/nodes/DateTime/V1/DateTimeV1.node.ts index 9b8256012e..2b38055281 100644 --- a/packages/nodes-base/nodes/DateTime/V1/DateTimeV1.node.ts +++ b/packages/nodes-base/nodes/DateTime/V1/DateTimeV1.node.ts @@ -1,4 +1,3 @@ -/* eslint-disable n8n-nodes-base/node-filename-against-convention */ import type { IDataObject, IExecuteFunctions, @@ -10,7 +9,7 @@ import type { INodeTypeDescription, } from 'n8n-workflow'; -import { deepCopy, NodeOperationError } from 'n8n-workflow'; +import { deepCopy, NodeConnectionType, NodeOperationError } from 'n8n-workflow'; import set from 'lodash/set'; @@ -61,12 +60,12 @@ const versionDescription: INodeTypeDescription = { name: 'Date & Time', color: '#408000', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], properties: [ { displayName: - "More powerful date functionality is available in expressions,
e.g. {{ $now.plus(1, 'week') }}", + "More powerful date functionality is available in expressions,
e.g. {{ $now.plus(1, 'week') }}", name: 'noticeDateTime', type: 'notice', default: '', @@ -203,7 +202,7 @@ const versionDescription: INodeTypeDescription = { }, }, type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, options: [ { @@ -222,7 +221,7 @@ const versionDescription: INodeTypeDescription = { }, default: 'UTC', description: - 'The timezone to convert from. Choose from the list, or specify an ID using an expression.', + 'The timezone to convert from. Choose from the list, or specify an ID using an expression.', }, { displayName: 'To Timezone Name or ID', @@ -233,7 +232,7 @@ const versionDescription: INodeTypeDescription = { }, default: 'UTC', description: - 'The timezone to convert to. Choose from the list, or specify an ID using an expression.', + 'The timezone to convert to. Choose from the list, or specify an ID using an expression.', }, ], }, @@ -362,7 +361,7 @@ const versionDescription: INodeTypeDescription = { displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, displayOptions: { show: { @@ -570,7 +569,7 @@ export class DateTimeV1 implements INodeType { returnData.push(newItem); } } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push({ json: { error: error.message, diff --git a/packages/nodes-base/nodes/DateTime/V2/AddToDateDescription.ts b/packages/nodes-base/nodes/DateTime/V2/AddToDateDescription.ts index 247eb9d33a..e6efc9e01c 100644 --- a/packages/nodes-base/nodes/DateTime/V2/AddToDateDescription.ts +++ b/packages/nodes-base/nodes/DateTime/V2/AddToDateDescription.ts @@ -4,7 +4,7 @@ import { includeInputFields } from './common.descriptions'; export const AddToDateDescription: INodeProperties[] = [ { displayName: - "You can also do this using an expression, e.g. {{your_date.plus(5, 'minutes')}}. More info", + "You can also do this using an expression, e.g. {{your_date.plus(5, 'minutes')}}. More info", name: 'notice', type: 'notice', default: '', @@ -107,7 +107,7 @@ export const AddToDateDescription: INodeProperties[] = [ displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', displayOptions: { show: { operation: ['addToDate'], diff --git a/packages/nodes-base/nodes/DateTime/V2/CurrentDateDescription.ts b/packages/nodes-base/nodes/DateTime/V2/CurrentDateDescription.ts index 0440f67ba4..81e25c2f38 100644 --- a/packages/nodes-base/nodes/DateTime/V2/CurrentDateDescription.ts +++ b/packages/nodes-base/nodes/DateTime/V2/CurrentDateDescription.ts @@ -4,7 +4,7 @@ import { includeInputFields } from './common.descriptions'; export const CurrentDateDescription: INodeProperties[] = [ { displayName: - 'You can also refer to the current date in n8n expressions by using {{$now}} or {{$today}}. More info', + 'You can also refer to the current date in n8n expressions by using {{$now}} or {{$today}}. More info', name: 'notice', type: 'notice', default: '', @@ -43,7 +43,7 @@ export const CurrentDateDescription: INodeProperties[] = [ displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', displayOptions: { show: { operation: ['getCurrentDate'], diff --git a/packages/nodes-base/nodes/DateTime/V2/DateTimeV2.node.ts b/packages/nodes-base/nodes/DateTime/V2/DateTimeV2.node.ts index df7a4a7386..ca5a2d5a66 100644 --- a/packages/nodes-base/nodes/DateTime/V2/DateTimeV2.node.ts +++ b/packages/nodes-base/nodes/DateTime/V2/DateTimeV2.node.ts @@ -5,7 +5,7 @@ import type { INodeTypeBaseDescription, INodeTypeDescription, } from 'n8n-workflow'; -import { NodeOperationError } from 'n8n-workflow'; +import { NodeConnectionType, NodeOperationError } from 'n8n-workflow'; import type { DateTimeUnit, DurationUnit } from 'luxon'; import { DateTime } from 'luxon'; @@ -29,8 +29,8 @@ export class DateTimeV2 implements INodeType { name: 'Date & Time', color: '#408000', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], description: 'Manipulate date and time values', properties: [ { @@ -218,7 +218,7 @@ export class DateTimeV2 implements INodeType { returnData.push(item); } } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push({ json: { error: error.message } }); continue; } diff --git a/packages/nodes-base/nodes/DateTime/V2/ExtractDateDescription.ts b/packages/nodes-base/nodes/DateTime/V2/ExtractDateDescription.ts index 2cda97f00f..2cbabc72a5 100644 --- a/packages/nodes-base/nodes/DateTime/V2/ExtractDateDescription.ts +++ b/packages/nodes-base/nodes/DateTime/V2/ExtractDateDescription.ts @@ -4,7 +4,7 @@ import { includeInputFields } from './common.descriptions'; export const ExtractDateDescription: INodeProperties[] = [ { displayName: - 'You can also do this using an expression, e.g. {{ your_date.extract("month") }}}. More info', + 'You can also do this using an expression, e.g. {{ your_date.extract("month") }}}. More info', name: 'notice', type: 'notice', default: '', @@ -84,7 +84,7 @@ export const ExtractDateDescription: INodeProperties[] = [ displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', displayOptions: { show: { operation: ['extractDate'], diff --git a/packages/nodes-base/nodes/DateTime/V2/FormatDateDescription.ts b/packages/nodes-base/nodes/DateTime/V2/FormatDateDescription.ts index 18c041b279..65f578b5a6 100644 --- a/packages/nodes-base/nodes/DateTime/V2/FormatDateDescription.ts +++ b/packages/nodes-base/nodes/DateTime/V2/FormatDateDescription.ts @@ -4,7 +4,7 @@ import { includeInputFields } from './common.descriptions'; export const FormatDateDescription: INodeProperties[] = [ { displayName: - "You can also do this using an expression, e.g. {{your_date.format('yyyy-MM-dd')}}. More info", + "You can also do this using an expression, e.g. {{your_date.format('yyyy-MM-dd')}}. More info", name: 'notice', type: 'notice', default: '', @@ -110,7 +110,7 @@ export const FormatDateDescription: INodeProperties[] = [ displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', displayOptions: { show: { operation: ['formatDate'], diff --git a/packages/nodes-base/nodes/DateTime/V2/GetTimeBetweenDates.ts b/packages/nodes-base/nodes/DateTime/V2/GetTimeBetweenDates.ts index cb5edf4958..d4329c179e 100644 --- a/packages/nodes-base/nodes/DateTime/V2/GetTimeBetweenDates.ts +++ b/packages/nodes-base/nodes/DateTime/V2/GetTimeBetweenDates.ts @@ -86,7 +86,7 @@ export const GetTimeBetweenDatesDescription: INodeProperties[] = [ displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', displayOptions: { show: { operation: ['getTimeBetweenDates'], diff --git a/packages/nodes-base/nodes/DateTime/V2/RoundDateDescription.ts b/packages/nodes-base/nodes/DateTime/V2/RoundDateDescription.ts index 4cd4266f58..0108fa17e4 100644 --- a/packages/nodes-base/nodes/DateTime/V2/RoundDateDescription.ts +++ b/packages/nodes-base/nodes/DateTime/V2/RoundDateDescription.ts @@ -4,7 +4,7 @@ import { includeInputFields } from './common.descriptions'; export const RoundDateDescription: INodeProperties[] = [ { displayName: - "You can also do this using an expression, e.g. {{ your_date.beginningOf('month') }} or {{ your_date.endOfMonth() }}. More info", + "You can also do this using an expression, e.g. {{ your_date.beginningOf('month') }} or {{ your_date.endOfMonth() }}. More info", name: 'notice', type: 'notice', default: '', @@ -124,7 +124,7 @@ export const RoundDateDescription: INodeProperties[] = [ displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', displayOptions: { show: { operation: ['roundDate'], diff --git a/packages/nodes-base/nodes/DateTime/V2/SubtractFromDateDescription.ts b/packages/nodes-base/nodes/DateTime/V2/SubtractFromDateDescription.ts index acd9604e44..8de53d6b37 100644 --- a/packages/nodes-base/nodes/DateTime/V2/SubtractFromDateDescription.ts +++ b/packages/nodes-base/nodes/DateTime/V2/SubtractFromDateDescription.ts @@ -4,7 +4,7 @@ import { includeInputFields } from './common.descriptions'; export const SubtractFromDateDescription: INodeProperties[] = [ { displayName: - "You can also do this using an expression, e.g. {{your_date.minus(5, 'minutes')}}. More info", + "You can also do this using an expression, e.g. {{your_date.minus(5, 'minutes')}}. More info", name: 'notice', type: 'notice', default: '', @@ -107,7 +107,7 @@ export const SubtractFromDateDescription: INodeProperties[] = [ displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', displayOptions: { show: { operation: ['subtractFromDate'], diff --git a/packages/nodes-base/nodes/DebugHelper/DebugHelper.node.ts b/packages/nodes-base/nodes/DebugHelper/DebugHelper.node.ts index 7e94d097c0..77ae4d861a 100644 --- a/packages/nodes-base/nodes/DebugHelper/DebugHelper.node.ts +++ b/packages/nodes-base/nodes/DebugHelper/DebugHelper.node.ts @@ -4,7 +4,12 @@ import type { INodeType, INodeTypeDescription, } from 'n8n-workflow'; -import { ApplicationError, NodeApiError, NodeOperationError } from 'n8n-workflow'; +import { + ApplicationError, + NodeApiError, + NodeConnectionType, + NodeOperationError, +} from 'n8n-workflow'; import { setSeed, array as mfArray } from 'minifaker'; import { generateCreditCard, @@ -34,8 +39,8 @@ export class DebugHelper implements INodeType { defaults: { name: 'DebugHelper', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [], properties: [ { @@ -272,7 +277,6 @@ export class DebugHelper implements INodeType { message: throwErrorMessage, }); case 'Error': - // eslint-disable-next-line n8n-nodes-base/node-execute-block-wrong-error-thrown throw new ApplicationError(throwErrorMessage); default: break; @@ -358,7 +362,7 @@ export class DebugHelper implements INodeType { break; } } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { const executionErrorData = this.helpers.constructExecutionMetaData( this.helpers.returnJsonArray({ error: error.message }), { itemData: { item: i } }, diff --git a/packages/nodes-base/nodes/DeepL/DeepL.node.json b/packages/nodes-base/nodes/DeepL/DeepL.node.json index 8bcbecc30d..e9f0d9f394 100644 --- a/packages/nodes-base/nodes/DeepL/DeepL.node.json +++ b/packages/nodes-base/nodes/DeepL/DeepL.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/deepL" + "url": "https://docs.n8n.io/integrations/builtin/credentials/deepL/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/DeepL/DeepL.node.ts b/packages/nodes-base/nodes/DeepL/DeepL.node.ts index df154e54ad..fbf5ade3c4 100644 --- a/packages/nodes-base/nodes/DeepL/DeepL.node.ts +++ b/packages/nodes-base/nodes/DeepL/DeepL.node.ts @@ -7,6 +7,7 @@ import type { INodeType, INodeTypeDescription, } from 'n8n-workflow'; +import { NodeConnectionType } from 'n8n-workflow'; import { deepLApiRequest } from './GenericFunctions'; @@ -24,8 +25,8 @@ export class DeepL implements INodeType { defaults: { name: 'DeepL', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'deepLApi', @@ -137,7 +138,7 @@ export class DeepL implements INodeType { } } } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { const executionErrorData = { json: {} as IDataObject, error: error.message, diff --git a/packages/nodes-base/nodes/DeepL/TextDescription.ts b/packages/nodes-base/nodes/DeepL/TextDescription.ts index d5ded349e0..83b5e6cb5e 100644 --- a/packages/nodes-base/nodes/DeepL/TextDescription.ts +++ b/packages/nodes-base/nodes/DeepL/TextDescription.ts @@ -23,7 +23,7 @@ export const textOperations: INodeProperties[] = [ }, default: '', description: - 'Language to translate to. Choose from the list, or specify an ID using an expression.', + 'Language to translate to. Choose from the list, or specify an ID using an expression.', required: true, displayOptions: { show: { @@ -44,7 +44,7 @@ export const textOperations: INodeProperties[] = [ type: 'options', default: '', description: - 'Language to translate from. Choose from the list, or specify an ID using an expression.', + 'Language to translate from. Choose from the list, or specify an ID using an expression.', typeOptions: { loadOptionsMethod: 'getLanguages', }, diff --git a/packages/nodes-base/nodes/Demio/Demio.node.json b/packages/nodes-base/nodes/Demio/Demio.node.json index e91ca0aacd..1f49a8049b 100644 --- a/packages/nodes-base/nodes/Demio/Demio.node.json +++ b/packages/nodes-base/nodes/Demio/Demio.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/demio" + "url": "https://docs.n8n.io/integrations/builtin/credentials/demio/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Demio/Demio.node.ts b/packages/nodes-base/nodes/Demio/Demio.node.ts index 384ccd1e8a..1479d415fd 100644 --- a/packages/nodes-base/nodes/Demio/Demio.node.ts +++ b/packages/nodes-base/nodes/Demio/Demio.node.ts @@ -7,6 +7,7 @@ import type { INodeType, INodeTypeDescription, } from 'n8n-workflow'; +import { NodeConnectionType } from 'n8n-workflow'; import { demioApiRequest } from './GenericFunctions'; @@ -26,8 +27,8 @@ export class Demio implements INodeType { defaults: { name: 'Demio', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'demioApi', @@ -194,7 +195,7 @@ export class Demio implements INodeType { returnData.push(responseData as IDataObject); } } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push({ error: error.message }); continue; } diff --git a/packages/nodes-base/nodes/Demio/EventDescription.ts b/packages/nodes-base/nodes/Demio/EventDescription.ts index 130ae8768a..021ee3d034 100644 --- a/packages/nodes-base/nodes/Demio/EventDescription.ts +++ b/packages/nodes-base/nodes/Demio/EventDescription.ts @@ -160,7 +160,7 @@ export const eventFields: INodeProperties[] = [ name: 'eventId', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getEvents', }, @@ -293,7 +293,7 @@ export const eventFields: INodeProperties[] = [ }, default: '', description: - 'Event Session ID. Choose from the list, or specify an ID using an expression.', + 'Event Session ID. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Website', diff --git a/packages/nodes-base/nodes/Demio/ReportDescription.ts b/packages/nodes-base/nodes/Demio/ReportDescription.ts index 20c40afdd0..0cabf622a9 100644 --- a/packages/nodes-base/nodes/Demio/ReportDescription.ts +++ b/packages/nodes-base/nodes/Demio/ReportDescription.ts @@ -32,7 +32,7 @@ export const reportFields: INodeProperties[] = [ name: 'eventId', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getEvents', }, @@ -55,7 +55,7 @@ export const reportFields: INodeProperties[] = [ default: '', required: true, description: - 'ID of the session. Choose from the list, or specify an ID using an expression.', + 'ID of the session. Choose from the list, or specify an ID using an expression.', displayOptions: { show: { resource: ['report'], diff --git a/packages/nodes-base/nodes/Dhl/Dhl.node.json b/packages/nodes-base/nodes/Dhl/Dhl.node.json index 3ba5efb1f2..0f4d2f8199 100644 --- a/packages/nodes-base/nodes/Dhl/Dhl.node.json +++ b/packages/nodes-base/nodes/Dhl/Dhl.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/dhl" + "url": "https://docs.n8n.io/integrations/builtin/credentials/dhl/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Dhl/Dhl.node.ts b/packages/nodes-base/nodes/Dhl/Dhl.node.ts index 4d1e915a64..21a72642a5 100644 --- a/packages/nodes-base/nodes/Dhl/Dhl.node.ts +++ b/packages/nodes-base/nodes/Dhl/Dhl.node.ts @@ -1,13 +1,14 @@ -import type { - IExecuteFunctions, - ICredentialDataDecryptedObject, - ICredentialsDecrypted, - ICredentialTestFunctions, - IDataObject, - INodeCredentialTestResult, - INodeExecutionData, - INodeType, - INodeTypeDescription, +import { + type IExecuteFunctions, + type ICredentialDataDecryptedObject, + type ICredentialsDecrypted, + type ICredentialTestFunctions, + type IDataObject, + type INodeCredentialTestResult, + type INodeExecutionData, + type INodeType, + type INodeTypeDescription, + NodeConnectionType, } from 'n8n-workflow'; import { dhlApiRequest, validateCredentials } from './GenericFunctions'; @@ -24,8 +25,8 @@ export class Dhl implements INodeType { defaults: { name: 'DHL', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'dhlApi', @@ -77,7 +78,7 @@ export class Dhl implements INodeType { displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, options: [ { @@ -145,7 +146,7 @@ export class Dhl implements INodeType { } } } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push({ error: error.description }); continue; } diff --git a/packages/nodes-base/nodes/Dhl/GenericFunctions.ts b/packages/nodes-base/nodes/Dhl/GenericFunctions.ts index 1a062fb12a..572b637da2 100644 --- a/packages/nodes-base/nodes/Dhl/GenericFunctions.ts +++ b/packages/nodes-base/nodes/Dhl/GenericFunctions.ts @@ -21,7 +21,7 @@ export async function dhlApiRequest( uri?: string, option: IDataObject = {}, ): Promise { - const credentials = (await this.getCredentials('dhlApi')) as { apiKey: string }; + const credentials = await this.getCredentials<{ apiKey: string }>('dhlApi'); let options: IRequestOptions = { headers: { diff --git a/packages/nodes-base/nodes/Discord/Discord.node.json b/packages/nodes-base/nodes/Discord/Discord.node.json index 8fb7286d4f..08ee4ac000 100644 --- a/packages/nodes-base/nodes/Discord/Discord.node.json +++ b/packages/nodes-base/nodes/Discord/Discord.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/discord" + "url": "https://docs.n8n.io/integrations/builtin/credentials/discord/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Discord/v1/DiscordV1.node.ts b/packages/nodes-base/nodes/Discord/v1/DiscordV1.node.ts index 54dd921797..6f0f24ce63 100644 --- a/packages/nodes-base/nodes/Discord/v1/DiscordV1.node.ts +++ b/packages/nodes-base/nodes/Discord/v1/DiscordV1.node.ts @@ -1,5 +1,3 @@ -/* eslint-disable n8n-nodes-base/node-filename-against-convention */ - import type { IExecuteFunctions, INodeExecutionData, @@ -8,7 +6,13 @@ import type { INodeTypeDescription, IRequestOptions, } from 'n8n-workflow'; -import { jsonParse, NodeApiError, NodeOperationError, sleep } from 'n8n-workflow'; +import { + jsonParse, + NodeApiError, + NodeConnectionType, + NodeOperationError, + sleep, +} from 'n8n-workflow'; import { oldVersionNotice } from '../../../utils/descriptions'; import type { DiscordAttachment, DiscordWebhook } from './Interfaces'; @@ -23,8 +27,8 @@ const versionDescription: INodeTypeDescription = { defaults: { name: 'Discord', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], properties: [ oldVersionNotice, { @@ -49,7 +53,7 @@ const versionDescription: INodeTypeDescription = { displayName: 'Additional Fields', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, options: [ { diff --git a/packages/nodes-base/nodes/Discord/v2/actions/channel/create.operation.ts b/packages/nodes-base/nodes/Discord/v2/actions/channel/create.operation.ts index 9c78952409..d87bad2ec2 100644 --- a/packages/nodes-base/nodes/Discord/v2/actions/channel/create.operation.ts +++ b/packages/nodes-base/nodes/Discord/v2/actions/channel/create.operation.ts @@ -45,7 +45,7 @@ const properties: INodeProperties[] = [ displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, options: [ { @@ -193,7 +193,7 @@ export async function execute( } catch (error) { const err = parseDiscordError.call(this, error, i); - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push(...prepareErrorData.call(this, err, i)); continue; } diff --git a/packages/nodes-base/nodes/Discord/v2/actions/channel/deleteChannel.operation.ts b/packages/nodes-base/nodes/Discord/v2/actions/channel/deleteChannel.operation.ts index 9fe3089336..57c405655f 100644 --- a/packages/nodes-base/nodes/Discord/v2/actions/channel/deleteChannel.operation.ts +++ b/packages/nodes-base/nodes/Discord/v2/actions/channel/deleteChannel.operation.ts @@ -48,7 +48,7 @@ export async function execute( } catch (error) { const err = parseDiscordError.call(this, error, i); - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push(...prepareErrorData.call(this, err, i)); continue; } diff --git a/packages/nodes-base/nodes/Discord/v2/actions/channel/get.operation.ts b/packages/nodes-base/nodes/Discord/v2/actions/channel/get.operation.ts index bd2395601a..585b5294d4 100644 --- a/packages/nodes-base/nodes/Discord/v2/actions/channel/get.operation.ts +++ b/packages/nodes-base/nodes/Discord/v2/actions/channel/get.operation.ts @@ -48,7 +48,7 @@ export async function execute( } catch (error) { const err = parseDiscordError.call(this, error, i); - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push(...prepareErrorData.call(this, err, i)); continue; } diff --git a/packages/nodes-base/nodes/Discord/v2/actions/channel/getAll.operation.ts b/packages/nodes-base/nodes/Discord/v2/actions/channel/getAll.operation.ts index 7d4df19731..4644f4975e 100644 --- a/packages/nodes-base/nodes/Discord/v2/actions/channel/getAll.operation.ts +++ b/packages/nodes-base/nodes/Discord/v2/actions/channel/getAll.operation.ts @@ -15,7 +15,7 @@ const properties: INodeProperties[] = [ displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, options: [ { @@ -85,7 +85,7 @@ export async function execute( } catch (error) { const err = parseDiscordError.call(this, error); - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push(...prepareErrorData.call(this, err, 0)); } diff --git a/packages/nodes-base/nodes/Discord/v2/actions/channel/update.operation.ts b/packages/nodes-base/nodes/Discord/v2/actions/channel/update.operation.ts index 1f37cce621..8a07aa8efb 100644 --- a/packages/nodes-base/nodes/Discord/v2/actions/channel/update.operation.ts +++ b/packages/nodes-base/nodes/Discord/v2/actions/channel/update.operation.ts @@ -24,7 +24,7 @@ const properties: INodeProperties[] = [ displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, options: [ { @@ -140,7 +140,7 @@ export async function execute( } catch (error) { const err = parseDiscordError.call(this, error, i); - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push(...prepareErrorData.call(this, err, i)); continue; } diff --git a/packages/nodes-base/nodes/Discord/v2/actions/member/getAll.operation.ts b/packages/nodes-base/nodes/Discord/v2/actions/member/getAll.operation.ts index 58959cac3a..1cf43b0c98 100644 --- a/packages/nodes-base/nodes/Discord/v2/actions/member/getAll.operation.ts +++ b/packages/nodes-base/nodes/Discord/v2/actions/member/getAll.operation.ts @@ -24,7 +24,7 @@ const properties: INodeProperties[] = [ displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, options: [simplifyBoolean], }, @@ -110,7 +110,7 @@ export async function execute( } catch (error) { const err = parseDiscordError.call(this, error); - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push(...prepareErrorData.call(this, err, 0)); } diff --git a/packages/nodes-base/nodes/Discord/v2/actions/member/roleAdd.operation.ts b/packages/nodes-base/nodes/Discord/v2/actions/member/roleAdd.operation.ts index e38464a924..4cd83fe2fd 100644 --- a/packages/nodes-base/nodes/Discord/v2/actions/member/roleAdd.operation.ts +++ b/packages/nodes-base/nodes/Discord/v2/actions/member/roleAdd.operation.ts @@ -50,7 +50,7 @@ export async function execute( } catch (error) { const err = parseDiscordError.call(this, error, i); - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push(...prepareErrorData.call(this, err, i)); continue; } diff --git a/packages/nodes-base/nodes/Discord/v2/actions/member/roleRemove.operation.ts b/packages/nodes-base/nodes/Discord/v2/actions/member/roleRemove.operation.ts index ba675b523d..025975054b 100644 --- a/packages/nodes-base/nodes/Discord/v2/actions/member/roleRemove.operation.ts +++ b/packages/nodes-base/nodes/Discord/v2/actions/member/roleRemove.operation.ts @@ -50,7 +50,7 @@ export async function execute( } catch (error) { const err = parseDiscordError.call(this, error, i); - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push(...prepareErrorData.call(this, err, i)); continue; } diff --git a/packages/nodes-base/nodes/Discord/v2/actions/message/deleteMessage.operation.ts b/packages/nodes-base/nodes/Discord/v2/actions/message/deleteMessage.operation.ts index 77ded3173d..149d9fc9e9 100644 --- a/packages/nodes-base/nodes/Discord/v2/actions/message/deleteMessage.operation.ts +++ b/packages/nodes-base/nodes/Discord/v2/actions/message/deleteMessage.operation.ts @@ -50,7 +50,7 @@ export async function execute( } catch (error) { const err = parseDiscordError.call(this, error, i); - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push(...prepareErrorData.call(this, err, i)); continue; } diff --git a/packages/nodes-base/nodes/Discord/v2/actions/message/get.operation.ts b/packages/nodes-base/nodes/Discord/v2/actions/message/get.operation.ts index 00d7634a24..f7405a7b99 100644 --- a/packages/nodes-base/nodes/Discord/v2/actions/message/get.operation.ts +++ b/packages/nodes-base/nodes/Discord/v2/actions/message/get.operation.ts @@ -21,7 +21,7 @@ const properties: INodeProperties[] = [ displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, options: [simplifyBoolean], }, @@ -84,7 +84,7 @@ export async function execute( } catch (error) { const err = parseDiscordError.call(this, error, i); - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push(...prepareErrorData.call(this, err, i)); continue; } diff --git a/packages/nodes-base/nodes/Discord/v2/actions/message/getAll.operation.ts b/packages/nodes-base/nodes/Discord/v2/actions/message/getAll.operation.ts index 4867e90df9..c818bf08d1 100644 --- a/packages/nodes-base/nodes/Discord/v2/actions/message/getAll.operation.ts +++ b/packages/nodes-base/nodes/Discord/v2/actions/message/getAll.operation.ts @@ -22,7 +22,7 @@ const properties: INodeProperties[] = [ displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, options: [simplifyBoolean], }, @@ -111,7 +111,7 @@ export async function execute( } catch (error) { const err = parseDiscordError.call(this, error, i); - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push(...prepareErrorData.call(this, err, i)); continue; } diff --git a/packages/nodes-base/nodes/Discord/v2/actions/message/react.operation.ts b/packages/nodes-base/nodes/Discord/v2/actions/message/react.operation.ts index 80f97c8c68..1041c5626a 100644 --- a/packages/nodes-base/nodes/Discord/v2/actions/message/react.operation.ts +++ b/packages/nodes-base/nodes/Discord/v2/actions/message/react.operation.ts @@ -66,7 +66,7 @@ export async function execute( } catch (error) { const err = parseDiscordError.call(this, error, i); - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push(...prepareErrorData.call(this, err, i)); continue; } diff --git a/packages/nodes-base/nodes/Discord/v2/actions/message/send.operation.ts b/packages/nodes-base/nodes/Discord/v2/actions/message/send.operation.ts index aa3f7ecb27..1b29fe13ad 100644 --- a/packages/nodes-base/nodes/Discord/v2/actions/message/send.operation.ts +++ b/packages/nodes-base/nodes/Discord/v2/actions/message/send.operation.ts @@ -73,7 +73,7 @@ const properties: INodeProperties[] = [ displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, options: [ { @@ -244,7 +244,7 @@ export async function execute( } catch (error) { const err = parseDiscordError.call(this, error, i); - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push(...prepareErrorData.call(this, err, i)); continue; } diff --git a/packages/nodes-base/nodes/Discord/v2/actions/versionDescription.ts b/packages/nodes-base/nodes/Discord/v2/actions/versionDescription.ts index beb0572f84..7fc8c5d532 100644 --- a/packages/nodes-base/nodes/Discord/v2/actions/versionDescription.ts +++ b/packages/nodes-base/nodes/Discord/v2/actions/versionDescription.ts @@ -1,5 +1,5 @@ /* eslint-disable n8n-nodes-base/node-filename-against-convention */ -import type { INodeTypeDescription } from 'n8n-workflow'; +import { NodeConnectionType, type INodeTypeDescription } from 'n8n-workflow'; import * as message from './message'; import * as channel from './channel'; @@ -17,8 +17,8 @@ export const versionDescription: INodeTypeDescription = { defaults: { name: 'Discord', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'discordBotApi', diff --git a/packages/nodes-base/nodes/Discord/v2/actions/webhook/sendLegacy.operation.ts b/packages/nodes-base/nodes/Discord/v2/actions/webhook/sendLegacy.operation.ts index 6e8fe68793..cf4379f0e5 100644 --- a/packages/nodes-base/nodes/Discord/v2/actions/webhook/sendLegacy.operation.ts +++ b/packages/nodes-base/nodes/Discord/v2/actions/webhook/sendLegacy.operation.ts @@ -33,7 +33,7 @@ const properties: INodeProperties[] = [ displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, options: [ { @@ -153,7 +153,7 @@ export async function execute(this: IExecuteFunctions): Promise { - const credentials = (await this.getCredentials('discourseApi')) as { url: string }; + const credentials = await this.getCredentials<{ url: string }>('discourseApi'); const options: IRequestOptions = { method, diff --git a/packages/nodes-base/nodes/Discourse/PostDescription.ts b/packages/nodes-base/nodes/Discourse/PostDescription.ts index eaf213a61b..90980b2890 100644 --- a/packages/nodes-base/nodes/Discourse/PostDescription.ts +++ b/packages/nodes-base/nodes/Discourse/PostDescription.ts @@ -96,7 +96,7 @@ export const postFields: INodeProperties[] = [ }, default: '', description: - 'ID of the category. Choose from the list, or specify an ID using an expression.', + 'ID of the category. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Reply To Post Number', diff --git a/packages/nodes-base/nodes/Discourse/UserDescription.ts b/packages/nodes-base/nodes/Discourse/UserDescription.ts index 8b750bfd0c..3d48a570d5 100644 --- a/packages/nodes-base/nodes/Discourse/UserDescription.ts +++ b/packages/nodes-base/nodes/Discourse/UserDescription.ts @@ -264,7 +264,7 @@ export const userFields: INodeProperties[] = [ displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, displayOptions: { show: { diff --git a/packages/nodes-base/nodes/Disqus/Disqus.node.json b/packages/nodes-base/nodes/Disqus/Disqus.node.json index 287e3e8932..bf43eca685 100644 --- a/packages/nodes-base/nodes/Disqus/Disqus.node.json +++ b/packages/nodes-base/nodes/Disqus/Disqus.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/disqus" + "url": "https://docs.n8n.io/integrations/builtin/credentials/disqus/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Disqus/Disqus.node.ts b/packages/nodes-base/nodes/Disqus/Disqus.node.ts index 284f4db4d6..27dc878560 100644 --- a/packages/nodes-base/nodes/Disqus/Disqus.node.ts +++ b/packages/nodes-base/nodes/Disqus/Disqus.node.ts @@ -6,7 +6,7 @@ import type { INodeTypeDescription, IHttpRequestMethods, } from 'n8n-workflow'; -import { NodeOperationError } from 'n8n-workflow'; +import { NodeConnectionType, NodeOperationError } from 'n8n-workflow'; import { disqusApiRequest, disqusApiRequestAllItems } from './GenericFunctions'; @@ -23,8 +23,8 @@ export class Disqus implements INodeType { defaults: { name: 'Disqus', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'disqusApi', @@ -750,7 +750,7 @@ export class Disqus implements INodeType { }); } } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { const executionErrorData = this.helpers.constructExecutionMetaData( this.helpers.returnJsonArray({ error: error.message }), { itemData: { item: i } }, diff --git a/packages/nodes-base/nodes/Disqus/GenericFunctions.ts b/packages/nodes-base/nodes/Disqus/GenericFunctions.ts index 8d03fe0407..d9c541144f 100644 --- a/packages/nodes-base/nodes/Disqus/GenericFunctions.ts +++ b/packages/nodes-base/nodes/Disqus/GenericFunctions.ts @@ -17,7 +17,7 @@ export async function disqusApiRequest( body: IDataObject = {}, option: IDataObject = {}, ): Promise { - const credentials = (await this.getCredentials('disqusApi')) as IDataObject; + const credentials = await this.getCredentials<{ accessToken: string }>('disqusApi'); qs.api_key = credentials.accessToken; // Convert to query string into a format the API can read diff --git a/packages/nodes-base/nodes/Drift/Drift.node.json b/packages/nodes-base/nodes/Drift/Drift.node.json index c40fdd3a8d..608d9ea8b2 100644 --- a/packages/nodes-base/nodes/Drift/Drift.node.json +++ b/packages/nodes-base/nodes/Drift/Drift.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/drift" + "url": "https://docs.n8n.io/integrations/builtin/credentials/drift/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Drift/Drift.node.ts b/packages/nodes-base/nodes/Drift/Drift.node.ts index 9284cf4059..dcb62e5aff 100644 --- a/packages/nodes-base/nodes/Drift/Drift.node.ts +++ b/packages/nodes-base/nodes/Drift/Drift.node.ts @@ -5,6 +5,7 @@ import type { INodeType, INodeTypeDescription, } from 'n8n-workflow'; +import { NodeConnectionType } from 'n8n-workflow'; import { driftApiRequest } from './GenericFunctions'; import { contactFields, contactOperations } from './ContactDescription'; import type { IContact } from './ContactInterface'; @@ -22,8 +23,8 @@ export class Drift implements INodeType { defaults: { name: 'Drift', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'driftApi', @@ -150,7 +151,7 @@ export class Drift implements INodeType { returnData.push(responseData as IDataObject); } } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push({ error: error.message }); continue; } diff --git a/packages/nodes-base/nodes/Dropbox/Dropbox.node.json b/packages/nodes-base/nodes/Dropbox/Dropbox.node.json index 46662574b1..f43be7effd 100644 --- a/packages/nodes-base/nodes/Dropbox/Dropbox.node.json +++ b/packages/nodes-base/nodes/Dropbox/Dropbox.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/dropbox" + "url": "https://docs.n8n.io/integrations/builtin/credentials/dropbox/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Dropbox/Dropbox.node.ts b/packages/nodes-base/nodes/Dropbox/Dropbox.node.ts index a7cacafb8f..aee39d3973 100644 --- a/packages/nodes-base/nodes/Dropbox/Dropbox.node.ts +++ b/packages/nodes-base/nodes/Dropbox/Dropbox.node.ts @@ -6,7 +6,7 @@ import type { INodeType, INodeTypeDescription, } from 'n8n-workflow'; -import { NodeOperationError } from 'n8n-workflow'; +import { NodeConnectionType, NodeOperationError } from 'n8n-workflow'; import { dropboxApiRequest, @@ -28,8 +28,8 @@ export class Dropbox implements INodeType { defaults: { name: 'Dropbox', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'dropboxApi', @@ -1003,7 +1003,7 @@ export class Dropbox implements INodeType { returnData.push(...executionData); } } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { if (resource === 'file' && operation === 'download') { items[i].json = { error: error.message }; } else { diff --git a/packages/nodes-base/nodes/Dropbox/GenericFunctions.ts b/packages/nodes-base/nodes/Dropbox/GenericFunctions.ts index 86e9d65569..918d5eefe6 100644 --- a/packages/nodes-base/nodes/Dropbox/GenericFunctions.ts +++ b/packages/nodes-base/nodes/Dropbox/GenericFunctions.ts @@ -116,8 +116,8 @@ export function simplify(data: IDataObject[]) { export async function getCredentials(this: IExecuteFunctions) { const authenticationMethod = this.getNodeParameter('authentication', 0) as string; if (authenticationMethod === 'accessToken') { - return (await this.getCredentials('dropboxApi')) as IDataObject; + return await this.getCredentials('dropboxApi'); } else { - return (await this.getCredentials('dropboxOAuth2Api')) as IDataObject; + return await this.getCredentials('dropboxOAuth2Api'); } } diff --git a/packages/nodes-base/nodes/Dropcontact/Dropcontact.node.json b/packages/nodes-base/nodes/Dropcontact/Dropcontact.node.json index 61ad0c7603..4d54336ccc 100644 --- a/packages/nodes-base/nodes/Dropcontact/Dropcontact.node.json +++ b/packages/nodes-base/nodes/Dropcontact/Dropcontact.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/dropcontact" + "url": "https://docs.n8n.io/integrations/builtin/credentials/dropcontact/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Dropcontact/Dropcontact.node.ts b/packages/nodes-base/nodes/Dropcontact/Dropcontact.node.ts index 0eddec8ac9..2a4a5be0d6 100644 --- a/packages/nodes-base/nodes/Dropcontact/Dropcontact.node.ts +++ b/packages/nodes-base/nodes/Dropcontact/Dropcontact.node.ts @@ -5,7 +5,7 @@ import type { INodeType, INodeTypeDescription, } from 'n8n-workflow'; -import { NodeApiError } from 'n8n-workflow'; +import { NodeConnectionType, NodeApiError } from 'n8n-workflow'; import { dropcontactApiRequest, mapPairedItemsFrom } from './GenericFunction'; @@ -21,8 +21,8 @@ export class Dropcontact implements INodeType { defaults: { name: 'Dropcontact', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'dropcontactApi', @@ -190,7 +190,7 @@ export class Dropcontact implements INodeType { operation: ['enrich'], }, }, - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, options: [ { diff --git a/packages/nodes-base/nodes/E2eTest/E2eTest.node.ts b/packages/nodes-base/nodes/E2eTest/E2eTest.node.ts index c5de614ec4..24c121988b 100644 --- a/packages/nodes-base/nodes/E2eTest/E2eTest.node.ts +++ b/packages/nodes-base/nodes/E2eTest/E2eTest.node.ts @@ -1,12 +1,13 @@ -import type { - IExecuteFunctions, - ILoadOptionsFunctions, - INodeExecutionData, - INodeListSearchResult, - INodePropertyOptions, - INodeType, - INodeTypeDescription, - ResourceMapperFields, +import { + NodeConnectionType, + type IExecuteFunctions, + type ILoadOptionsFunctions, + type INodeExecutionData, + type INodeListSearchResult, + type INodePropertyOptions, + type INodeType, + type INodeTypeDescription, + type ResourceMapperFields, } from 'n8n-workflow'; import { remoteOptions, resourceMapperFields, returnData, searchOptions } from './mock'; @@ -22,8 +23,8 @@ export class E2eTest implements INodeType { defaults: { name: 'E2E Test', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], properties: [ { displayName: 'Operation', @@ -56,7 +57,7 @@ export class E2eTest implements INodeType { displayName: 'Remote Options Name or ID', name: 'remoteOptions', description: - 'Remote options to load. Choose from the list, or specify an ID using an expression.', + 'Remote options to load. Choose from the list, or specify an ID using an expression.', type: 'options', typeOptions: { loadOptionsDependsOn: ['fieldId'], diff --git a/packages/nodes-base/nodes/ERPNext/DocumentDescription.ts b/packages/nodes-base/nodes/ERPNext/DocumentDescription.ts index aaa7da6920..34e06be79f 100644 --- a/packages/nodes-base/nodes/ERPNext/DocumentDescription.ts +++ b/packages/nodes-base/nodes/ERPNext/DocumentDescription.ts @@ -60,7 +60,7 @@ export const documentFields: INodeProperties[] = [ }, default: '', description: - 'DocType whose documents to retrieve. Choose from the list, or specify an ID using an expression.', + 'DocType whose documents to retrieve. Choose from the list, or specify an ID using an expression.', placeholder: 'Customer', displayOptions: { show: { @@ -122,7 +122,7 @@ export const documentFields: INodeProperties[] = [ }, default: [], description: - 'Comma-separated list of fields to return. Choose from the list, or specify IDs using an expression.', + 'Comma-separated list of fields to return. Choose from the list, or specify IDs using an expression.', placeholder: 'name,country', }, { @@ -145,7 +145,7 @@ export const documentFields: INodeProperties[] = [ name: 'field', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getDocFields', loadOptionsDependsOn: ['docType'], @@ -211,7 +211,7 @@ export const documentFields: INodeProperties[] = [ }, required: true, description: - 'DocType you would like to create. Choose from the list, or specify an ID using an expression.', + 'DocType you would like to create. Choose from the list, or specify an ID using an expression.', placeholder: 'Customer', displayOptions: { show: { @@ -247,7 +247,7 @@ export const documentFields: INodeProperties[] = [ name: 'field', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getDocFields', loadOptionsDependsOn: ['docType'], @@ -277,7 +277,7 @@ export const documentFields: INodeProperties[] = [ }, default: '', description: - 'The type of document you would like to get. Choose from the list, or specify an ID using an expression.', + 'The type of document you would like to get. Choose from the list, or specify an ID using an expression.', displayOptions: { show: { resource: ['document'], @@ -313,7 +313,7 @@ export const documentFields: INodeProperties[] = [ }, default: '', description: - 'The type of document you would like to delete. Choose from the list, or specify an ID using an expression.', + 'The type of document you would like to delete. Choose from the list, or specify an ID using an expression.', displayOptions: { show: { resource: ['document'], @@ -349,7 +349,7 @@ export const documentFields: INodeProperties[] = [ }, default: '', description: - 'The type of document you would like to update. Choose from the list, or specify an ID using an expression.', + 'The type of document you would like to update. Choose from the list, or specify an ID using an expression.', displayOptions: { show: { resource: ['document'], @@ -398,7 +398,7 @@ export const documentFields: INodeProperties[] = [ name: 'field', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getDocFields', loadOptionsDependsOn: ['docType'], diff --git a/packages/nodes-base/nodes/ERPNext/ERPNext.node.json b/packages/nodes-base/nodes/ERPNext/ERPNext.node.json index 72eab86905..4761c0767e 100644 --- a/packages/nodes-base/nodes/ERPNext/ERPNext.node.json +++ b/packages/nodes-base/nodes/ERPNext/ERPNext.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/erpnext" + "url": "https://docs.n8n.io/integrations/builtin/credentials/erpnext/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/ERPNext/ERPNext.node.ts b/packages/nodes-base/nodes/ERPNext/ERPNext.node.ts index c5929abc82..8217b3f22d 100644 --- a/packages/nodes-base/nodes/ERPNext/ERPNext.node.ts +++ b/packages/nodes-base/nodes/ERPNext/ERPNext.node.ts @@ -8,7 +8,7 @@ import type { INodeType, INodeTypeDescription, } from 'n8n-workflow'; -import { NodeOperationError } from 'n8n-workflow'; +import { NodeConnectionType, NodeOperationError } from 'n8n-workflow'; import { documentFields, documentOperations } from './DocumentDescription'; @@ -29,8 +29,8 @@ export class ERPNext implements INodeType { defaults: { name: 'ERPNext', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'erpNextApi', diff --git a/packages/nodes-base/nodes/ERPNext/GenericFunctions.ts b/packages/nodes-base/nodes/ERPNext/GenericFunctions.ts index 427ac764b2..a9286d18f8 100644 --- a/packages/nodes-base/nodes/ERPNext/GenericFunctions.ts +++ b/packages/nodes-base/nodes/ERPNext/GenericFunctions.ts @@ -24,7 +24,7 @@ export async function erpNextApiRequest( uri?: string, option: IDataObject = {}, ) { - const credentials = (await this.getCredentials('erpNextApi')) as ERPNextApiCredentials; + const credentials = await this.getCredentials('erpNextApi'); const baseUrl = getBaseUrl(credentials); let options: IRequestOptions = { diff --git a/packages/nodes-base/nodes/EditImage/EditImage.node.ts b/packages/nodes-base/nodes/EditImage/EditImage.node.ts index 42bf5d9654..3e4544de8e 100644 --- a/packages/nodes-base/nodes/EditImage/EditImage.node.ts +++ b/packages/nodes-base/nodes/EditImage/EditImage.node.ts @@ -10,7 +10,7 @@ import type { INodeType, INodeTypeDescription, } from 'n8n-workflow'; -import { deepCopy } from 'n8n-workflow'; +import { NodeConnectionType, deepCopy } from 'n8n-workflow'; import gm from 'gm'; import { file } from 'tmp-promise'; import getSystemFonts from 'get-system-fonts'; @@ -765,8 +765,8 @@ export class EditImage implements INodeType { name: 'Edit Image', color: '#553399', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], properties: [ { displayName: 'Operation', @@ -851,7 +851,7 @@ export class EditImage implements INodeType { }, default: 'default', description: - 'The font to use. Choose from the list, or specify an ID using an expression.', + 'The font to use. Choose from the list, or specify an ID using an expression.', }, ], }, @@ -863,7 +863,7 @@ export class EditImage implements INodeType { displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, displayOptions: { hide: { @@ -892,7 +892,7 @@ export class EditImage implements INodeType { }, default: 'default', description: - 'The font to use. Choose from the list, or specify an ID using an expression.', + 'The font to use. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Format', @@ -1310,7 +1310,7 @@ export class EditImage implements INodeType { }), ); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push({ json: { error: error.message, diff --git a/packages/nodes-base/nodes/Egoi/Egoi.node.json b/packages/nodes-base/nodes/Egoi/Egoi.node.json index fd42328b28..b9e9bec74f 100644 --- a/packages/nodes-base/nodes/Egoi/Egoi.node.json +++ b/packages/nodes-base/nodes/Egoi/Egoi.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/egoi" + "url": "https://docs.n8n.io/integrations/builtin/credentials/egoi/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Egoi/Egoi.node.ts b/packages/nodes-base/nodes/Egoi/Egoi.node.ts index a9e4da18c6..e922c7ad21 100644 --- a/packages/nodes-base/nodes/Egoi/Egoi.node.ts +++ b/packages/nodes-base/nodes/Egoi/Egoi.node.ts @@ -7,6 +7,7 @@ import type { INodeType, INodeTypeDescription, } from 'n8n-workflow'; +import { NodeConnectionType } from 'n8n-workflow'; import moment from 'moment-timezone'; import { egoiApiRequest, egoiApiRequestAllItems, simplify } from './GenericFunctions'; @@ -26,8 +27,8 @@ export class Egoi implements INodeType { defaults: { name: 'E-goi', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'egoiApi', @@ -97,7 +98,7 @@ export class Egoi implements INodeType { }, default: '', description: - 'ID of list to operate on. Choose from the list, or specify an ID using an expression.', + 'ID of list to operate on. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Email', @@ -188,7 +189,7 @@ export class Egoi implements INodeType { name: 'field_id', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getExtraFields', loadOptionsDependsOn: ['list'], @@ -253,7 +254,7 @@ export class Egoi implements INodeType { }, default: [], description: - 'List of tag IDs to be added. Choose from the list, or specify IDs using an expression.', + 'List of tag IDs to be added. Choose from the list, or specify IDs using an expression.', }, ], }, @@ -316,7 +317,7 @@ export class Egoi implements INodeType { name: 'field_id', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getExtraFields', loadOptionsDependsOn: ['list'], @@ -381,7 +382,7 @@ export class Egoi implements INodeType { }, default: [], description: - 'List of tag IDs to be added. Choose from the list, or specify IDs using an expression.', + 'List of tag IDs to be added. Choose from the list, or specify IDs using an expression.', }, ], }, @@ -733,7 +734,7 @@ export class Egoi implements INodeType { } } } catch (error) { - if (!this.continueOnFail(error)) { + if (!this.continueOnFail()) { throw error; } else { // Return the actual reason as error diff --git a/packages/nodes-base/nodes/Elastic/ElasticSecurity/ElasticSecurity.node.json b/packages/nodes-base/nodes/Elastic/ElasticSecurity/ElasticSecurity.node.json index 77d165c2fb..72b795fb61 100644 --- a/packages/nodes-base/nodes/Elastic/ElasticSecurity/ElasticSecurity.node.json +++ b/packages/nodes-base/nodes/Elastic/ElasticSecurity/ElasticSecurity.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/elasticSecurity" + "url": "https://docs.n8n.io/integrations/builtin/credentials/elasticSecurity/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Elastic/ElasticSecurity/ElasticSecurity.node.ts b/packages/nodes-base/nodes/Elastic/ElasticSecurity/ElasticSecurity.node.ts index 5d53ce9647..d9eb282476 100644 --- a/packages/nodes-base/nodes/Elastic/ElasticSecurity/ElasticSecurity.node.ts +++ b/packages/nodes-base/nodes/Elastic/ElasticSecurity/ElasticSecurity.node.ts @@ -1,17 +1,13 @@ import type { IExecuteFunctions, - ICredentialsDecrypted, - ICredentialTestFunctions, IDataObject, ILoadOptionsFunctions, - INodeCredentialTestResult, INodeExecutionData, INodePropertyOptions, INodeType, INodeTypeDescription, - IRequestOptions, } from 'n8n-workflow'; -import { NodeOperationError } from 'n8n-workflow'; +import { NodeConnectionType, NodeOperationError } from 'n8n-workflow'; import { elasticSecurityApiRequest, @@ -19,7 +15,6 @@ import { getVersion, handleListing, throwOnEmptyUpdate, - tolerateTrailingSlash, } from './GenericFunctions'; import { @@ -33,12 +28,7 @@ import { connectorOperations, } from './descriptions'; -import type { - Connector, - ConnectorCreatePayload, - ConnectorType, - ElasticSecurityApiCredentials, -} from './types'; +import type { Connector, ConnectorCreatePayload, ConnectorType } from './types'; export class ElasticSecurity implements INodeType { description: INodeTypeDescription = { @@ -52,13 +42,12 @@ export class ElasticSecurity implements INodeType { defaults: { name: 'Elastic Security', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'elasticSecurityApi', required: true, - testedBy: 'elasticSecurityApiTest', }, ], properties: [ @@ -115,49 +104,6 @@ export class ElasticSecurity implements INodeType { return connectors.map(({ name, id }) => ({ name, value: id })); }, }, - credentialTest: { - async elasticSecurityApiTest( - this: ICredentialTestFunctions, - credential: ICredentialsDecrypted, - ): Promise { - const { - username, - password, - baseUrl: rawBaseUrl, - } = credential.data as ElasticSecurityApiCredentials; - - const baseUrl = tolerateTrailingSlash(rawBaseUrl); - - const token = Buffer.from(`${username}:${password}`).toString('base64'); - - const endpoint = '/cases/status'; - - const options: IRequestOptions = { - headers: { - Authorization: `Basic ${token}`, - 'kbn-xsrf': true, - }, - method: 'GET', - body: {}, - qs: {}, - uri: `${baseUrl}/api${endpoint}`, - json: true, - }; - - try { - await this.helpers.request(options); - return { - status: 'OK', - message: 'Authentication successful', - }; - } catch (error) { - return { - status: 'Error', - message: error.message, - }; - } - }, - }, }; async execute(this: IExecuteFunctions): Promise { @@ -577,7 +523,7 @@ export class ElasticSecurity implements INodeType { ); returnData.push(...executionData); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { const executionErrorData = this.helpers.constructExecutionMetaData( this.helpers.returnJsonArray({ error: error.message }), { itemData: { item: i } }, diff --git a/packages/nodes-base/nodes/Elastic/ElasticSecurity/GenericFunctions.ts b/packages/nodes-base/nodes/Elastic/ElasticSecurity/GenericFunctions.ts index 696170cff1..7a055eb1e1 100644 --- a/packages/nodes-base/nodes/Elastic/ElasticSecurity/GenericFunctions.ts +++ b/packages/nodes-base/nodes/Elastic/ElasticSecurity/GenericFunctions.ts @@ -21,21 +21,13 @@ export async function elasticSecurityApiRequest( body: IDataObject = {}, qs: IDataObject = {}, ) { - const { - username, - password, - baseUrl: rawBaseUrl, - } = (await this.getCredentials('elasticSecurityApi')) as ElasticSecurityApiCredentials; + const { baseUrl: rawBaseUrl } = (await this.getCredentials( + 'elasticSecurityApi', + )) as ElasticSecurityApiCredentials; const baseUrl = tolerateTrailingSlash(rawBaseUrl); - const token = Buffer.from(`${username}:${password}`).toString('base64'); - const options: IRequestOptions = { - headers: { - Authorization: `Basic ${token}`, - 'kbn-xsrf': true, - }, method, body, qs, @@ -52,7 +44,7 @@ export async function elasticSecurityApiRequest( } try { - return await this.helpers.request(options); + return await this.helpers.requestWithAuthentication.call(this, 'elasticSecurityApi', options); } catch (error) { if (error?.error?.error === 'Not Acceptable' && error?.error?.message) { error.error.error = `${error.error.error}: ${error.error.message}`; diff --git a/packages/nodes-base/nodes/Elastic/ElasticSecurity/descriptions/CaseDescription.ts b/packages/nodes-base/nodes/Elastic/ElasticSecurity/descriptions/CaseDescription.ts index be4e0af5f2..b5023533b6 100644 --- a/packages/nodes-base/nodes/Elastic/ElasticSecurity/descriptions/CaseDescription.ts +++ b/packages/nodes-base/nodes/Elastic/ElasticSecurity/descriptions/CaseDescription.ts @@ -74,7 +74,7 @@ export const caseFields: INodeProperties[] = [ displayName: 'Connector Name or ID', name: 'connectorId', description: - 'Connectors allow you to send Elastic Security cases into other systems (only ServiceNow, Jira, or IBM Resilient). Choose from the list, or specify an ID using an expression.', + 'Connectors allow you to send Elastic Security cases into other systems (only ServiceNow, Jira, or IBM Resilient). Choose from the list, or specify an ID using an expression.', type: 'options', required: true, default: '', @@ -427,7 +427,7 @@ export const caseFields: INodeProperties[] = [ name: 'tags', type: 'multiOptions', description: - 'Choose from the list, or specify IDs using an expression', + 'Choose from the list, or specify IDs using an expression', default: [], typeOptions: { loadOptionsMethod: 'getTags', diff --git a/packages/nodes-base/nodes/Elastic/ElasticSecurity/descriptions/CaseTagDescription.ts b/packages/nodes-base/nodes/Elastic/ElasticSecurity/descriptions/CaseTagDescription.ts index 7b142e4d8a..7e648fd831 100644 --- a/packages/nodes-base/nodes/Elastic/ElasticSecurity/descriptions/CaseTagDescription.ts +++ b/packages/nodes-base/nodes/Elastic/ElasticSecurity/descriptions/CaseTagDescription.ts @@ -51,7 +51,7 @@ export const caseTagFields: INodeProperties[] = [ name: 'tag', type: 'options', description: - 'Tag to attach to the case. Choose from the list, or specify an ID using an expression.', + 'Tag to attach to the case. Choose from the list, or specify an ID using an expression.', required: true, default: '', typeOptions: { @@ -86,7 +86,7 @@ export const caseTagFields: INodeProperties[] = [ name: 'tag', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', required: true, default: '', typeOptions: { diff --git a/packages/nodes-base/nodes/Elastic/ElasticSecurity/types.ts b/packages/nodes-base/nodes/Elastic/ElasticSecurity/types.ts index 268762ec62..dd426714e7 100644 --- a/packages/nodes-base/nodes/Elastic/ElasticSecurity/types.ts +++ b/packages/nodes-base/nodes/Elastic/ElasticSecurity/types.ts @@ -1,6 +1,7 @@ export type ElasticSecurityApiCredentials = { - username: string; - password: string; + username?: string; + password?: string; + apiKey?: string; baseUrl: string; }; diff --git a/packages/nodes-base/nodes/Elastic/Elasticsearch/Elasticsearch.node.json b/packages/nodes-base/nodes/Elastic/Elasticsearch/Elasticsearch.node.json index 54fe90bbf0..d2dfeb59fe 100644 --- a/packages/nodes-base/nodes/Elastic/Elasticsearch/Elasticsearch.node.json +++ b/packages/nodes-base/nodes/Elastic/Elasticsearch/Elasticsearch.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/elasticsearch" + "url": "https://docs.n8n.io/integrations/builtin/credentials/elasticsearch/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Elastic/Elasticsearch/Elasticsearch.node.ts b/packages/nodes-base/nodes/Elastic/Elasticsearch/Elasticsearch.node.ts index c209b84538..d13d237514 100644 --- a/packages/nodes-base/nodes/Elastic/Elasticsearch/Elasticsearch.node.ts +++ b/packages/nodes-base/nodes/Elastic/Elasticsearch/Elasticsearch.node.ts @@ -4,11 +4,16 @@ import type { INodeExecutionData, INodeType, INodeTypeDescription, + JsonObject, } from 'n8n-workflow'; -import { jsonParse } from 'n8n-workflow'; +import { NodeConnectionType, jsonParse, NodeApiError } from 'n8n-workflow'; import omit from 'lodash/omit'; -import { elasticsearchApiRequest, elasticsearchApiRequestAllItems } from './GenericFunctions'; +import { + elasticsearchApiRequest, + elasticsearchApiRequestAllItems, + elasticsearchBulkApiRequest, +} from './GenericFunctions'; import { documentFields, documentOperations, indexFields, indexOperations } from './descriptions'; @@ -26,8 +31,8 @@ export class Elasticsearch implements INodeType { defaults: { name: 'Elasticsearch', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'elasticsearchApi', @@ -68,12 +73,14 @@ export class Elasticsearch implements INodeType { let responseData; + let bulkBody: IDataObject = {}; + for (let i = 0; i < items.length; i++) { + const bulkOperation = this.getNodeParameter('options.bulkOperation', i, false); if (resource === 'document') { // ********************************************************************** // document // ********************************************************************** - if (operation === 'delete') { // ---------------------------------------- // document: delete @@ -84,8 +91,17 @@ export class Elasticsearch implements INodeType { const indexId = this.getNodeParameter('indexId', i); const documentId = this.getNodeParameter('documentId', i); - const endpoint = `/${indexId}/_doc/${documentId}`; - responseData = await elasticsearchApiRequest.call(this, 'DELETE', endpoint); + if (bulkOperation) { + bulkBody[i] = JSON.stringify({ + delete: { + _index: indexId, + _id: documentId, + }, + }); + } else { + const endpoint = `/${indexId}/_doc/${documentId}`; + responseData = await elasticsearchApiRequest.call(this, 'DELETE', endpoint); + } } else if (operation === 'get') { // ---------------------------------------- // document: get @@ -223,12 +239,22 @@ export class Elasticsearch implements INodeType { const indexId = this.getNodeParameter('indexId', i); const { documentId } = additionalFields; - if (documentId) { - const endpoint = `/${indexId}/_doc/${documentId}`; - responseData = await elasticsearchApiRequest.call(this, 'PUT', endpoint, body); + if (bulkOperation) { + bulkBody[i] = JSON.stringify({ + index: { + _index: indexId, + _id: documentId, + }, + }); + bulkBody[i] += `\n${JSON.stringify(body)}`; } else { - const endpoint = `/${indexId}/_doc`; - responseData = await elasticsearchApiRequest.call(this, 'POST', endpoint, body); + if (documentId) { + const endpoint = `/${indexId}/_doc/${documentId}`; + responseData = await elasticsearchApiRequest.call(this, 'PUT', endpoint, body); + } else { + const endpoint = `/${indexId}/_doc`; + responseData = await elasticsearchApiRequest.call(this, 'POST', endpoint, body); + } } } else if (operation === 'update') { // ---------------------------------------- @@ -261,7 +287,17 @@ export class Elasticsearch implements INodeType { const documentId = this.getNodeParameter('documentId', i); const endpoint = `/${indexId}/_update/${documentId}`; - responseData = await elasticsearchApiRequest.call(this, 'POST', endpoint, body); + if (bulkOperation) { + bulkBody[i] = JSON.stringify({ + update: { + _index: indexId, + _id: documentId, + }, + }); + bulkBody[i] += `\n${JSON.stringify(body)}`; + } else { + responseData = await elasticsearchApiRequest.call(this, 'POST', endpoint, body); + } } } else if (resource === 'index') { // ********************************************************************** @@ -341,13 +377,80 @@ export class Elasticsearch implements INodeType { } } } - const executionData = this.helpers.constructExecutionMetaData( - this.helpers.returnJsonArray(responseData as IDataObject[]), - { itemData: { item: i } }, - ); - returnData.push(...executionData); - } + if (!bulkOperation) { + const executionData = this.helpers.constructExecutionMetaData( + this.helpers.returnJsonArray(responseData as IDataObject[]), + { itemData: { item: i } }, + ); + returnData.push(...executionData); + } + if (Object.keys(bulkBody).length >= 50) { + responseData = (await elasticsearchBulkApiRequest.call(this, bulkBody)) as IDataObject[]; + for (let j = 0; j < responseData.length; j++) { + const itemData = responseData[j]; + if (itemData.error) { + const errorData = itemData.error as IDataObject; + const message = errorData.type as string; + const description = errorData.reason as string; + const itemIndex = parseInt(Object.keys(bulkBody)[j]); + if (this.continueOnFail()) { + returnData.push( + ...this.helpers.constructExecutionMetaData( + this.helpers.returnJsonArray({ error: message, message: itemData.error }), + { itemData: { item: itemIndex } }, + ), + ); + continue; + } else { + throw new NodeApiError(this.getNode(), { + message, + description, + itemIndex, + } as JsonObject); + } + } + const executionData = this.helpers.constructExecutionMetaData( + this.helpers.returnJsonArray(itemData), + { itemData: { item: parseInt(Object.keys(bulkBody)[j]) } }, + ); + returnData.push(...executionData); + } + bulkBody = {}; + } + } + if (Object.keys(bulkBody).length) { + responseData = (await elasticsearchBulkApiRequest.call(this, bulkBody)) as IDataObject[]; + for (let j = 0; j < responseData.length; j++) { + const itemData = responseData[j]; + if (itemData.error) { + const errorData = itemData.error as IDataObject; + const message = errorData.type as string; + const description = errorData.reason as string; + const itemIndex = parseInt(Object.keys(bulkBody)[j]); + if (this.continueOnFail()) { + returnData.push( + ...this.helpers.constructExecutionMetaData( + this.helpers.returnJsonArray({ error: message, message: itemData.error }), + { itemData: { item: itemIndex } }, + ), + ); + continue; + } else { + throw new NodeApiError(this.getNode(), { + message, + description, + itemIndex, + } as JsonObject); + } + } + const executionData = this.helpers.constructExecutionMetaData( + this.helpers.returnJsonArray(itemData), + { itemData: { item: parseInt(Object.keys(bulkBody)[j]) } }, + ); + returnData.push(...executionData); + } + } return [returnData]; } } diff --git a/packages/nodes-base/nodes/Elastic/Elasticsearch/GenericFunctions.ts b/packages/nodes-base/nodes/Elastic/Elasticsearch/GenericFunctions.ts index ed013079f8..333a412a02 100644 --- a/packages/nodes-base/nodes/Elastic/Elasticsearch/GenericFunctions.ts +++ b/packages/nodes-base/nodes/Elastic/Elasticsearch/GenericFunctions.ts @@ -2,13 +2,55 @@ import type { IExecuteFunctions, IDataObject, JsonObject, - IRequestOptions, + IHttpRequestOptions, IHttpRequestMethods, } from 'n8n-workflow'; import { NodeApiError } from 'n8n-workflow'; import type { ElasticsearchApiCredentials } from './types'; +export async function elasticsearchBulkApiRequest(this: IExecuteFunctions, body: IDataObject) { + const { baseUrl, ignoreSSLIssues } = (await this.getCredentials( + 'elasticsearchApi', + )) as ElasticsearchApiCredentials; + + const bulkBody = Object.values(body).flat().join('\n') + '\n'; + + const options: IHttpRequestOptions = { + method: 'POST', + headers: { 'Content-Type': 'application/x-ndjson' }, + body: bulkBody, + url: `${baseUrl}/_bulk`, + skipSslCertificateValidation: ignoreSSLIssues, + returnFullResponse: true, + ignoreHttpStatusErrors: true, + }; + + const response = await this.helpers.httpRequestWithAuthentication.call( + this, + 'elasticsearchApi', + options, + ); + + if (response.statusCode > 299) { + if (this.continueOnFail()) { + return Object.values(body).map((_) => ({ error: response.body.error })); + } else { + throw new NodeApiError(this.getNode(), { error: response.body.error } as JsonObject); + } + } + + return response.body.items.map((item: IDataObject) => { + return { + ...(item.index as IDataObject), + ...(item.update as IDataObject), + ...(item.create as IDataObject), + ...(item.delete as IDataObject), + ...(item.error as IDataObject), + }; + }); +} + export async function elasticsearchApiRequest( this: IExecuteFunctions, method: IHttpRequestMethods, @@ -20,13 +62,13 @@ export async function elasticsearchApiRequest( 'elasticsearchApi', )) as ElasticsearchApiCredentials; - const options: IRequestOptions = { + const options: IHttpRequestOptions = { method, body, qs, - uri: `${baseUrl}${endpoint}`, + url: `${baseUrl}${endpoint}`, json: true, - rejectUnauthorized: !ignoreSSLIssues, + skipSslCertificateValidation: ignoreSSLIssues, }; if (!Object.keys(body).length) { @@ -38,7 +80,7 @@ export async function elasticsearchApiRequest( } try { - return await this.helpers.requestWithAuthentication.call(this, 'elasticsearchApi', options); + return await this.helpers.httpRequestWithAuthentication.call(this, 'elasticsearchApi', options); } catch (error) { throw new NodeApiError(this.getNode(), error as JsonObject); } diff --git a/packages/nodes-base/nodes/Elastic/Elasticsearch/descriptions/DocumentDescription.ts b/packages/nodes-base/nodes/Elastic/Elasticsearch/descriptions/DocumentDescription.ts index 0e07cecd4e..3a446243ac 100644 --- a/packages/nodes-base/nodes/Elastic/Elasticsearch/descriptions/DocumentDescription.ts +++ b/packages/nodes-base/nodes/Elastic/Elasticsearch/descriptions/DocumentDescription.ts @@ -81,6 +81,28 @@ export const documentFields: INodeProperties[] = [ }, }, }, + { + displayName: 'Options', + name: 'options', + type: 'collection', + placeholder: 'Add Option', + default: {}, + displayOptions: { + show: { + resource: ['document'], + operation: ['delete'], + }, + }, + options: [ + { + displayName: 'Bulk Delete', + name: 'bulkOperation', + type: 'boolean', + default: false, + description: 'Whether to use the bulk operation to delete the document/s', + }, + ], + }, // ---------------------------------------- // document: get @@ -130,7 +152,7 @@ export const documentFields: INodeProperties[] = [ displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, displayOptions: { show: { @@ -242,7 +264,7 @@ export const documentFields: INodeProperties[] = [ displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, displayOptions: { show: { @@ -644,6 +666,13 @@ export const documentFields: INodeProperties[] = [ }, }, options: [ + { + displayName: 'Bulk Create', + name: 'bulkOperation', + type: 'boolean', + default: false, + description: 'Whether to use the bulk operation to create the document/s', + }, { displayName: 'Pipeline ID', name: 'pipeline', @@ -802,6 +831,13 @@ export const documentFields: INodeProperties[] = [ }, }, options: [ + { + displayName: 'Bulk Update', + name: 'bulkOperation', + type: 'boolean', + default: false, + description: 'Whether to use the bulk operation to update the document/s', + }, { displayName: 'Refresh', name: 'refresh', diff --git a/packages/nodes-base/nodes/EmailReadImap/EmailReadImap.node.json b/packages/nodes-base/nodes/EmailReadImap/EmailReadImap.node.json index ca29d5e782..5ad0a918a0 100644 --- a/packages/nodes-base/nodes/EmailReadImap/EmailReadImap.node.json +++ b/packages/nodes-base/nodes/EmailReadImap/EmailReadImap.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/imap" + "url": "https://docs.n8n.io/integrations/builtin/credentials/imap/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/EmailReadImap/v1/EmailReadImapV1.node.ts b/packages/nodes-base/nodes/EmailReadImap/v1/EmailReadImapV1.node.ts index a7e321d1fd..29cac4a002 100644 --- a/packages/nodes-base/nodes/EmailReadImap/v1/EmailReadImapV1.node.ts +++ b/packages/nodes-base/nodes/EmailReadImap/v1/EmailReadImapV1.node.ts @@ -1,4 +1,3 @@ -/* eslint-disable n8n-nodes-base/node-filename-against-convention */ import type { ITriggerFunctions, IBinaryData, @@ -14,7 +13,7 @@ import type { INodeTypeDescription, ITriggerResponse, } from 'n8n-workflow'; -import { NodeOperationError } from 'n8n-workflow'; +import { NodeConnectionType, NodeOperationError } from 'n8n-workflow'; import type { ImapSimple, ImapSimpleOptions, Message } from '@n8n/imap'; import { connect as imapConnect, getParts } from '@n8n/imap'; @@ -83,9 +82,9 @@ const versionDescription: INodeTypeDescription = { activationHint: "Once you’ve finished building your workflow, activate it to have it also listen continuously (you just won’t see those executions here).", }, - // eslint-disable-next-line n8n-nodes-base/node-class-description-inputs-wrong-regular-node + inputs: [], - outputs: ['main'], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'imap', @@ -189,7 +188,7 @@ const versionDescription: INodeTypeDescription = { displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, options: [ { @@ -508,7 +507,7 @@ export class EmailReadImapV1 implements INodeType { return newEmails; }; - const returnedPromise = await this.helpers.createDeferredPromise(); + const returnedPromise = this.helpers.createDeferredPromise(); const establishConnection = async (): Promise => { let searchCriteria = ['UNSEEN'] as Array; @@ -561,7 +560,7 @@ export class EmailReadImapV1 implements INodeType { }); // Wait with resolving till the returnedPromise got resolved, else n8n will be unhappy // if it receives an error before the workflow got activated - await returnedPromise.promise().then(() => { + await returnedPromise.promise.then(() => { this.emitError(error as Error); }); } @@ -589,7 +588,7 @@ export class EmailReadImapV1 implements INodeType { conn.on('error', async (error) => { const errorCode = error.code.toUpperCase(); if (['ECONNRESET', 'EPIPE'].includes(errorCode as string)) { - this.logger.verbose(`IMAP connection was reset (${errorCode}) - reconnecting.`, { + this.logger.debug(`IMAP connection was reset (${errorCode}) - reconnecting.`, { error, }); try { @@ -618,7 +617,7 @@ export class EmailReadImapV1 implements INodeType { if (options.forceReconnect !== undefined) { reconnectionInterval = setInterval( async () => { - this.logger.verbose('Forcing reconnection of IMAP node.'); + this.logger.debug('Forcing reconnection of IMAP node.'); connection.end(); connection = await establishConnection(); await connection.openBox(mailbox); diff --git a/packages/nodes-base/nodes/EmailReadImap/v2/EmailReadImapV2.node.ts b/packages/nodes-base/nodes/EmailReadImap/v2/EmailReadImapV2.node.ts index 768a86debc..74f7540188 100644 --- a/packages/nodes-base/nodes/EmailReadImap/v2/EmailReadImapV2.node.ts +++ b/packages/nodes-base/nodes/EmailReadImap/v2/EmailReadImapV2.node.ts @@ -1,4 +1,3 @@ -/* eslint-disable n8n-nodes-base/node-filename-against-convention */ import type { ITriggerFunctions, IBinaryData, @@ -14,7 +13,7 @@ import type { ITriggerResponse, JsonObject, } from 'n8n-workflow'; -import { NodeOperationError } from 'n8n-workflow'; +import { NodeConnectionType, NodeOperationError, TriggerCloseError } from 'n8n-workflow'; import type { ImapSimple, ImapSimpleOptions, Message, MessagePart } from '@n8n/imap'; import { connect as imapConnect, getParts } from '@n8n/imap'; @@ -87,9 +86,9 @@ const versionDescription: INodeTypeDescription = { activationHint: "Once you’ve finished building your workflow, activate it to have it also listen continuously (you just won’t see those executions here).", }, - // eslint-disable-next-line n8n-nodes-base/node-class-description-inputs-wrong-regular-node + inputs: [], - outputs: ['main'], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'imap', @@ -193,7 +192,7 @@ const versionDescription: INodeTypeDescription = { displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, options: [ { @@ -536,7 +535,7 @@ export class EmailReadImapV2 implements INodeType { return newEmails; }; - const returnedPromise = await this.helpers.createDeferredPromise(); + const returnedPromise = this.helpers.createDeferredPromise(); const establishConnection = async (): Promise => { let searchCriteria = ['UNSEEN'] as Array; @@ -591,14 +590,14 @@ export class EmailReadImapV2 implements INodeType { }); // Wait with resolving till the returnedPromise got resolved, else n8n will be unhappy // if it receives an error before the workflow got activated - await returnedPromise.promise().then(() => { + await returnedPromise.promise.then(() => { this.emitError(error as Error); }); } } }, onUpdate: async (seqNo: number, info) => { - this.logger.verbose(`Email Read Imap:update ${seqNo}`, info); + this.logger.debug(`Email Read Imap:update ${seqNo}`, info); }, }; @@ -631,11 +630,9 @@ export class EmailReadImapV2 implements INodeType { }); conn.on('error', async (error) => { const errorCode = ((error as JsonObject).code as string).toUpperCase(); - this.logger.verbose(`IMAP connection experienced an error: (${errorCode})`, { + this.logger.debug(`IMAP connection experienced an error: (${errorCode})`, { error: error as Error, }); - // eslint-disable-next-line @typescript-eslint/no-use-before-define - await closeFunction(); this.emitError(error as Error); }); return conn; @@ -649,7 +646,7 @@ export class EmailReadImapV2 implements INodeType { let reconnectionInterval: NodeJS.Timeout | undefined; const handleReconnect = async () => { - this.logger.verbose('Forcing reconnect to IMAP server'); + this.logger.debug('Forcing reconnect to IMAP server'); try { isCurrentlyReconnecting = true; if (connection.closeBox) await connection.closeBox(false); @@ -671,14 +668,18 @@ export class EmailReadImapV2 implements INodeType { } // When workflow and so node gets set to inactive close the connection - async function closeFunction() { + const closeFunction = async () => { closeFunctionWasCalled = true; if (reconnectionInterval) { clearInterval(reconnectionInterval); } - if (connection.closeBox) await connection.closeBox(false); - connection.end(); - } + try { + if (connection.closeBox) await connection.closeBox(false); + connection.end(); + } catch (error) { + throw new TriggerCloseError(this.getNode(), { cause: error as Error, level: 'warning' }); + } + }; // Resolve returned-promise so that waiting errors can be emitted returnedPromise.resolve(); diff --git a/packages/nodes-base/nodes/EmailSend/v1/EmailSendV1.node.ts b/packages/nodes-base/nodes/EmailSend/v1/EmailSendV1.node.ts index d45c798079..45ea02ffa6 100644 --- a/packages/nodes-base/nodes/EmailSend/v1/EmailSendV1.node.ts +++ b/packages/nodes-base/nodes/EmailSend/v1/EmailSendV1.node.ts @@ -1,4 +1,3 @@ -/* eslint-disable n8n-nodes-base/node-filename-against-convention */ import type { IDataObject, IExecuteFunctions, @@ -7,6 +6,7 @@ import type { INodeTypeBaseDescription, INodeTypeDescription, } from 'n8n-workflow'; +import { NodeConnectionType } from 'n8n-workflow'; import { createTransport } from 'nodemailer'; import type SMTPTransport from 'nodemailer/lib/smtp-transport'; @@ -22,8 +22,8 @@ const versionDescription: INodeTypeDescription = { name: 'Send Email', color: '#00bb88', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'smtp', @@ -106,7 +106,7 @@ const versionDescription: INodeTypeDescription = { displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, options: [ { @@ -226,7 +226,7 @@ export class EmailSendV1 implements INodeType { }, }); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push({ json: { error: error.message, diff --git a/packages/nodes-base/nodes/EmailSend/v2/EmailSendV2.node.ts b/packages/nodes-base/nodes/EmailSend/v2/EmailSendV2.node.ts index 5c9e653c48..13caad5b5d 100644 --- a/packages/nodes-base/nodes/EmailSend/v2/EmailSendV2.node.ts +++ b/packages/nodes-base/nodes/EmailSend/v2/EmailSendV2.node.ts @@ -1,4 +1,3 @@ -/* eslint-disable n8n-nodes-base/node-filename-against-convention */ import type { IExecuteFunctions, INodeExecutionData, @@ -6,6 +5,7 @@ import type { INodeTypeBaseDescription, INodeTypeDescription, } from 'n8n-workflow'; +import { NodeConnectionType } from 'n8n-workflow'; import * as send from './send.operation'; @@ -20,12 +20,14 @@ const versionDescription: INodeTypeDescription = { name: 'Send Email', color: '#00bb88', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], + usableAsTool: true, credentials: [ { name: 'smtp', required: true, + testedBy: 'smtpConnectionTest', }, ], properties: [ @@ -70,6 +72,10 @@ export class EmailSendV2 implements INodeType { }; } + methods = { + credentialTest: { smtpConnectionTest: send.smtpConnectionTest }, + }; + async execute(this: IExecuteFunctions): Promise { let returnData: INodeExecutionData[][] = []; diff --git a/packages/nodes-base/nodes/EmailSend/v2/send.operation.ts b/packages/nodes-base/nodes/EmailSend/v2/send.operation.ts index b60eb689e5..0c78e6293c 100644 --- a/packages/nodes-base/nodes/EmailSend/v2/send.operation.ts +++ b/packages/nodes-base/nodes/EmailSend/v2/send.operation.ts @@ -1,6 +1,9 @@ import type { + ICredentialsDecrypted, + ICredentialTestFunctions, IDataObject, IExecuteFunctions, + INodeCredentialTestResult, INodeExecutionData, INodeProperties, JsonObject, @@ -11,6 +14,7 @@ import { createTransport } from 'nodemailer'; import type SMTPTransport from 'nodemailer/lib/smtp-transport'; import { updateDisplayOptions } from '@utils/utilities'; +import { appendAttributionOption } from '../../../utils/descriptions'; const properties: INodeProperties[] = [ // TODO: Add choice for text as text or html (maybe also from name) @@ -130,15 +134,11 @@ const properties: INodeProperties[] = [ displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, options: [ { - // eslint-disable-next-line n8n-nodes-base/node-param-display-name-miscased - displayName: 'Append n8n Attribution', - name: 'appendAttribution', - type: 'boolean', - default: true, + ...appendAttributionOption, description: 'Whether to include the phrase “This email was sent automatically with n8n” to the end of the email', }, @@ -210,6 +210,10 @@ function configureTransport(credentials: IDataObject, options: EmailSendOptions) secure: credentials.secure as boolean, }; + if (credentials.secure === false) { + connectionOptions.ignoreTLS = credentials.disableStartTls as boolean; + } + if (typeof credentials.hostName === 'string' && credentials.hostName) { connectionOptions.name = credentials.hostName; } @@ -230,6 +234,28 @@ function configureTransport(credentials: IDataObject, options: EmailSendOptions) return createTransport(connectionOptions); } +export async function smtpConnectionTest( + this: ICredentialTestFunctions, + credential: ICredentialsDecrypted, +): Promise { + const credentials = credential.data!; + const transporter = configureTransport(credentials, {}); + try { + await transporter.verify(); + return { + status: 'OK', + message: 'Connection successful!', + }; + } catch (error) { + return { + status: 'Error', + message: error.message, + }; + } finally { + transporter.close(); + } +} + export async function execute(this: IExecuteFunctions): Promise { const items = this.getInputData(); const nodeVersion = this.getNode().typeVersion; @@ -324,7 +350,7 @@ export async function execute(this: IExecuteFunctions): Promiseexpression.', + 'The ID of the campaign to add the contact to. Choose from the list, or specify an ID using an expression.', displayOptions: { show: { resource: ['campaign'], @@ -303,7 +303,7 @@ export const campaignFields: INodeProperties[] = [ default: '', required: true, description: - 'The ID of the campaign to duplicate. Choose from the list, or specify an ID using an expression.', + 'The ID of the campaign to duplicate. Choose from the list, or specify an ID using an expression.', typeOptions: { loadOptionsMethod: 'getCampaigns', }, diff --git a/packages/nodes-base/nodes/Emelia/ContactListDescription.ts b/packages/nodes-base/nodes/Emelia/ContactListDescription.ts index 03a0735244..8c1c7260fe 100644 --- a/packages/nodes-base/nodes/Emelia/ContactListDescription.ts +++ b/packages/nodes-base/nodes/Emelia/ContactListDescription.ts @@ -41,7 +41,7 @@ export const contactListFields: INodeProperties[] = [ default: [], required: true, description: - 'The ID of the contact list to add the contact to. Choose from the list, or specify an ID using an expression.', + 'The ID of the contact list to add the contact to. Choose from the list, or specify an ID using an expression.', displayOptions: { show: { resource: ['contactList'], diff --git a/packages/nodes-base/nodes/Emelia/Emelia.node.json b/packages/nodes-base/nodes/Emelia/Emelia.node.json index 955dbff292..f2b5005a5d 100644 --- a/packages/nodes-base/nodes/Emelia/Emelia.node.json +++ b/packages/nodes-base/nodes/Emelia/Emelia.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/emelia" + "url": "https://docs.n8n.io/integrations/builtin/credentials/emelia/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Emelia/Emelia.node.ts b/packages/nodes-base/nodes/Emelia/Emelia.node.ts index 0485e53af2..121a5d4233 100644 --- a/packages/nodes-base/nodes/Emelia/Emelia.node.ts +++ b/packages/nodes-base/nodes/Emelia/Emelia.node.ts @@ -1,10 +1,11 @@ -import type { - IExecuteFunctions, - IDataObject, - ILoadOptionsFunctions, - INodeExecutionData, - INodeType, - INodeTypeDescription, +import { + type IExecuteFunctions, + type IDataObject, + type ILoadOptionsFunctions, + type INodeExecutionData, + type INodeType, + type INodeTypeDescription, + NodeConnectionType, } from 'n8n-workflow'; import isEmpty from 'lodash/isEmpty'; @@ -26,8 +27,8 @@ export class Emelia implements INodeType { defaults: { name: 'Emelia', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'emeliaApi', @@ -428,7 +429,7 @@ export class Emelia implements INodeType { } } } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { const executionErrorData = this.helpers.constructExecutionMetaData( this.helpers.returnJsonArray({ error: error.message }), { itemData: { item: i } }, diff --git a/packages/nodes-base/nodes/Emelia/EmeliaTrigger.node.json b/packages/nodes-base/nodes/Emelia/EmeliaTrigger.node.json index cdc7e83ad6..37eb8889a5 100644 --- a/packages/nodes-base/nodes/Emelia/EmeliaTrigger.node.json +++ b/packages/nodes-base/nodes/Emelia/EmeliaTrigger.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/emelia" + "url": "https://docs.n8n.io/integrations/builtin/credentials/emelia/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Emelia/EmeliaTrigger.node.ts b/packages/nodes-base/nodes/Emelia/EmeliaTrigger.node.ts index 82214f4a3f..3fcd491f04 100644 --- a/packages/nodes-base/nodes/Emelia/EmeliaTrigger.node.ts +++ b/packages/nodes-base/nodes/Emelia/EmeliaTrigger.node.ts @@ -1,12 +1,13 @@ -import type { - IDataObject, - IHookFunctions, - ILoadOptionsFunctions, - INodePropertyOptions, - INodeType, - INodeTypeDescription, - IWebhookFunctions, - IWebhookResponseData, +import { + NodeConnectionType, + type IDataObject, + type IHookFunctions, + type ILoadOptionsFunctions, + type INodePropertyOptions, + type INodeType, + type INodeTypeDescription, + type IWebhookFunctions, + type IWebhookResponseData, } from 'n8n-workflow'; import { emeliaApiRequest, emeliaApiTest, emeliaGraphqlRequest } from './GenericFunctions'; @@ -29,7 +30,7 @@ export class EmeliaTrigger implements INodeType { name: 'Emelia Trigger', }, inputs: [], - outputs: ['main'], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'emeliaApi', @@ -51,7 +52,7 @@ export class EmeliaTrigger implements INodeType { name: 'campaignId', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getCampaigns', }, diff --git a/packages/nodes-base/nodes/Emelia/GenericFunctions.ts b/packages/nodes-base/nodes/Emelia/GenericFunctions.ts index 6ac76d3561..f6f3cedb4a 100644 --- a/packages/nodes-base/nodes/Emelia/GenericFunctions.ts +++ b/packages/nodes-base/nodes/Emelia/GenericFunctions.ts @@ -23,7 +23,7 @@ export async function emeliaApiRequest( body: object = {}, qs: IDataObject = {}, ) { - const { apiKey } = (await this.getCredentials('emeliaApi')) as { apiKey: string }; + const { apiKey } = await this.getCredentials<{ apiKey: string }>('emeliaApi'); const options: IRequestOptions = { headers: { diff --git a/packages/nodes-base/nodes/ErrorTrigger/ErrorTrigger.node.ts b/packages/nodes-base/nodes/ErrorTrigger/ErrorTrigger.node.ts index a3f30516cc..1de4226d58 100644 --- a/packages/nodes-base/nodes/ErrorTrigger/ErrorTrigger.node.ts +++ b/packages/nodes-base/nodes/ErrorTrigger/ErrorTrigger.node.ts @@ -4,6 +4,7 @@ import type { INodeType, INodeTypeDescription, } from 'n8n-workflow'; +import { NodeConnectionType } from 'n8n-workflow'; export class ErrorTrigger implements INodeType { description: INodeTypeDescription = { @@ -22,7 +23,7 @@ export class ErrorTrigger implements INodeType { color: '#0000FF', }, inputs: [], - outputs: ['main'], + outputs: [NodeConnectionType.Main], properties: [ { displayName: diff --git a/packages/nodes-base/nodes/Eventbrite/EventbriteTrigger.node.json b/packages/nodes-base/nodes/Eventbrite/EventbriteTrigger.node.json index b022044df5..a1621289aa 100644 --- a/packages/nodes-base/nodes/Eventbrite/EventbriteTrigger.node.json +++ b/packages/nodes-base/nodes/Eventbrite/EventbriteTrigger.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/eventbrite" + "url": "https://docs.n8n.io/integrations/builtin/credentials/eventbrite/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Eventbrite/EventbriteTrigger.node.ts b/packages/nodes-base/nodes/Eventbrite/EventbriteTrigger.node.ts index 8cdead1b1b..81f85e13cb 100644 --- a/packages/nodes-base/nodes/Eventbrite/EventbriteTrigger.node.ts +++ b/packages/nodes-base/nodes/Eventbrite/EventbriteTrigger.node.ts @@ -9,7 +9,7 @@ import type { IWebhookResponseData, JsonObject, } from 'n8n-workflow'; -import { NodeApiError } from 'n8n-workflow'; +import { NodeApiError, NodeConnectionType } from 'n8n-workflow'; import { eventbriteApiRequest, eventbriteApiRequestAllItems } from './GenericFunctions'; @@ -27,7 +27,7 @@ export class EventbriteTrigger implements INodeType { name: 'Eventbrite Trigger', }, inputs: [], - outputs: ['main'], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'eventbriteApi', @@ -83,7 +83,7 @@ export class EventbriteTrigger implements INodeType { }, default: '', description: - 'The Eventbrite Organization to work on. Choose from the list, or specify an ID using an expression.', + 'The Eventbrite Organization to work on. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Event Name or ID', @@ -96,7 +96,7 @@ export class EventbriteTrigger implements INodeType { }, default: '', description: - 'Limit the triggers to this event. Choose from the list, or specify an ID using an expression.', + 'Limit the triggers to this event. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Actions', diff --git a/packages/nodes-base/nodes/ExecuteCommand/ExecuteCommand.node.ts b/packages/nodes-base/nodes/ExecuteCommand/ExecuteCommand.node.ts index efd858bbae..657cd8ffa8 100644 --- a/packages/nodes-base/nodes/ExecuteCommand/ExecuteCommand.node.ts +++ b/packages/nodes-base/nodes/ExecuteCommand/ExecuteCommand.node.ts @@ -5,7 +5,7 @@ import type { INodeType, INodeTypeDescription, } from 'n8n-workflow'; -import { NodeOperationError } from 'n8n-workflow'; +import { NodeConnectionType, NodeOperationError } from 'n8n-workflow'; export interface IExecReturnData { exitCode: number; @@ -55,8 +55,8 @@ export class ExecuteCommand implements INodeType { name: 'Execute Command', color: '#886644', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], properties: [ { displayName: 'Execute Once', @@ -112,7 +112,7 @@ export class ExecuteCommand implements INodeType { }, }); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnItems.push({ json: { error: error.message, diff --git a/packages/nodes-base/nodes/ExecuteWorkflow/ExecuteWorkflow.node.ts b/packages/nodes-base/nodes/ExecuteWorkflow/ExecuteWorkflow.node.ts index 9619f6050e..26af55f210 100644 --- a/packages/nodes-base/nodes/ExecuteWorkflow/ExecuteWorkflow.node.ts +++ b/packages/nodes-base/nodes/ExecuteWorkflow/ExecuteWorkflow.node.ts @@ -1,11 +1,10 @@ -import { NodeOperationError } from 'n8n-workflow'; +import { NodeConnectionType, NodeOperationError } from 'n8n-workflow'; import type { IExecuteFunctions, INodeExecutionData, INodeType, INodeTypeDescription, } from 'n8n-workflow'; - import { generatePairedItemData } from '../../utils/utilities'; import { getWorkflowInfo } from './GenericFunctions'; @@ -16,15 +15,15 @@ export class ExecuteWorkflow implements INodeType { icon: 'fa:sign-in-alt', iconColor: 'orange-red', group: ['transform'], - version: 1, + version: [1, 1.1], subtitle: '={{"Workflow: " + $parameter["workflowId"]}}', description: 'Execute another workflow', defaults: { name: 'Execute Workflow', color: '#ff6d5a', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], properties: [ { displayName: 'Operation', @@ -79,6 +78,7 @@ export class ExecuteWorkflow implements INodeType { displayOptions: { show: { source: ['database'], + '@version': [1], }, }, default: '', @@ -87,7 +87,20 @@ export class ExecuteWorkflow implements INodeType { description: "Note on using an expression here: if this node is set to run once with all items, they will all be sent to the same workflow. That workflow's ID will be calculated by evaluating the expression for the first input item.", }, - + { + displayName: 'Workflow', + name: 'workflowId', + type: 'workflowSelector', + displayOptions: { + show: { + source: ['database'], + '@version': [{ _cnd: { gte: 1.1 } }], + }, + }, + default: '', + required: true, + hint: "Note on using an expression here: if this node is set to run once with all items, they will all be sent to the same workflow. That workflow's ID will be calculated by evaluating the expression for the first input item.", + }, // ---------------------------------- // source:localFile // ---------------------------------- @@ -176,7 +189,7 @@ export class ExecuteWorkflow implements INodeType { name: 'options', type: 'collection', default: {}, - placeholder: 'Add Option', + placeholder: 'Add option', options: [ { displayName: 'Wait For Sub-Workflow Completion', @@ -230,8 +243,12 @@ export class ExecuteWorkflow implements INodeType { returnData = [items]; } } catch (error) { - if (this.continueOnFail(error)) { - return [[{ json: { error: error.message }, pairedItem: { item: i } }]]; + if (this.continueOnFail()) { + if (returnData[i] === undefined) { + returnData[i] = []; + } + returnData[i].push({ json: { error: error.message }, pairedItem: { item: i } }); + continue; } throw new NodeOperationError(this.getNode(), error, { message: `Error executing workflow with item at index ${i}`, @@ -280,7 +297,7 @@ export class ExecuteWorkflow implements INodeType { return workflowResult; } catch (error) { const pairedItem = generatePairedItemData(items.length); - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { return [[{ json: { error: error.message }, pairedItem }]]; } throw error; diff --git a/packages/nodes-base/nodes/ExecuteWorkflow/GenericFunctions.ts b/packages/nodes-base/nodes/ExecuteWorkflow/GenericFunctions.ts index 9e212eb194..7588040bf8 100644 --- a/packages/nodes-base/nodes/ExecuteWorkflow/GenericFunctions.ts +++ b/packages/nodes-base/nodes/ExecuteWorkflow/GenericFunctions.ts @@ -1,13 +1,27 @@ import { readFile as fsReadFile } from 'fs/promises'; import { NodeOperationError, jsonParse } from 'n8n-workflow'; -import type { IExecuteFunctions, IExecuteWorkflowInfo, IRequestOptions } from 'n8n-workflow'; +import type { + IExecuteFunctions, + IExecuteWorkflowInfo, + INodeParameterResourceLocator, + IRequestOptions, +} from 'n8n-workflow'; export async function getWorkflowInfo(this: IExecuteFunctions, source: string, itemIndex = 0) { const workflowInfo: IExecuteWorkflowInfo = {}; - + const nodeVersion = this.getNode().typeVersion; if (source === 'database') { // Read workflow from database - workflowInfo.id = this.getNodeParameter('workflowId', itemIndex) as string; + if (nodeVersion === 1) { + workflowInfo.id = this.getNodeParameter('workflowId', itemIndex) as string; + } else { + const { value } = this.getNodeParameter( + 'workflowId', + itemIndex, + {}, + ) as INodeParameterResourceLocator; + workflowInfo.id = value as string; + } } else if (source === 'localFile') { // Read workflow from filesystem const workflowPath = this.getNodeParameter('workflowPath', itemIndex) as string; diff --git a/packages/nodes-base/nodes/ExecuteWorkflowTrigger/ExecuteWorkflowTrigger.node.ts b/packages/nodes-base/nodes/ExecuteWorkflowTrigger/ExecuteWorkflowTrigger.node.ts index 9ddde6e5aa..feb33a160d 100644 --- a/packages/nodes-base/nodes/ExecuteWorkflowTrigger/ExecuteWorkflowTrigger.node.ts +++ b/packages/nodes-base/nodes/ExecuteWorkflowTrigger/ExecuteWorkflowTrigger.node.ts @@ -1,4 +1,9 @@ -import type { IExecuteFunctions, INodeType, INodeTypeDescription } from 'n8n-workflow'; +import { + NodeConnectionType, + type IExecuteFunctions, + type INodeType, + type INodeTypeDescription, +} from 'n8n-workflow'; export class ExecuteWorkflowTrigger implements INodeType { description: INodeTypeDescription = { @@ -17,7 +22,7 @@ export class ExecuteWorkflowTrigger implements INodeType { }, inputs: [], - outputs: ['main'], + outputs: [NodeConnectionType.Main], properties: [ { displayName: diff --git a/packages/nodes-base/nodes/ExecuteWorkflowTrigger/test/ExecuteWorkflowTrigger.node.test.ts b/packages/nodes-base/nodes/ExecuteWorkflowTrigger/test/ExecuteWorkflowTrigger.node.test.ts new file mode 100644 index 0000000000..ad35bff192 --- /dev/null +++ b/packages/nodes-base/nodes/ExecuteWorkflowTrigger/test/ExecuteWorkflowTrigger.node.test.ts @@ -0,0 +1,19 @@ +import { mock } from 'jest-mock-extended'; +import type { IExecuteFunctions, INodeExecutionData } from 'n8n-workflow'; + +import { ExecuteWorkflowTrigger } from '../ExecuteWorkflowTrigger.node'; + +describe('ExecuteWorkflowTrigger', () => { + it('should return its input data', async () => { + const mockInputData: INodeExecutionData[] = [ + { json: { item: 0, foo: 'bar' } }, + { json: { item: 1, foo: 'quz' } }, + ]; + const executeFns = mock({ + getInputData: () => mockInputData, + }); + const result = await new ExecuteWorkflowTrigger().execute.call(executeFns); + + expect(result).toEqual([mockInputData]); + }); +}); diff --git a/packages/nodes-base/nodes/ExecutionData/ExecutionData.node.ts b/packages/nodes-base/nodes/ExecutionData/ExecutionData.node.ts index 9bba0a7c70..f2d113948a 100644 --- a/packages/nodes-base/nodes/ExecutionData/ExecutionData.node.ts +++ b/packages/nodes-base/nodes/ExecutionData/ExecutionData.node.ts @@ -5,6 +5,7 @@ import type { INodeType, INodeTypeDescription, } from 'n8n-workflow'; +import { NodeConnectionType } from 'n8n-workflow'; export class ExecutionData implements INodeType { description: INodeTypeDescription = { @@ -19,12 +20,12 @@ export class ExecutionData implements INodeType { name: 'Execution Data', color: '#29A568', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], properties: [ { displayName: - "Use this node to save fields you want to use later to easily find an execution (e.g. a user ID). You'll be able to search by this data in the 'executions' tab.
This feature is available on our Pro and Enterprise plans. More Info.", + "Save important data using this node. It will be displayed on each execution for easy reference and you can filter by it.
Filtering is available on Pro and Enterprise plans. More Info", name: 'notice', type: 'notice', default: '', @@ -37,9 +38,9 @@ export class ExecutionData implements INodeType { noDataExpression: true, options: [ { - name: 'Save Execution Data for Search', + name: 'Save Highlight Data (for Search/review)', value: 'save', - action: 'Save execution data for search', + action: 'Save Highlight Data (for search/review)', }, ], }, diff --git a/packages/nodes-base/nodes/Facebook/FacebookGraphApi.node.json b/packages/nodes-base/nodes/Facebook/FacebookGraphApi.node.json index dd57013296..8904288175 100644 --- a/packages/nodes-base/nodes/Facebook/FacebookGraphApi.node.json +++ b/packages/nodes-base/nodes/Facebook/FacebookGraphApi.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/facebookGraph" + "url": "https://docs.n8n.io/integrations/builtin/credentials/facebookGraph/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Facebook/FacebookGraphApi.node.ts b/packages/nodes-base/nodes/Facebook/FacebookGraphApi.node.ts index b1c64a7a11..30e3beed51 100644 --- a/packages/nodes-base/nodes/Facebook/FacebookGraphApi.node.ts +++ b/packages/nodes-base/nodes/Facebook/FacebookGraphApi.node.ts @@ -8,7 +8,7 @@ import type { IRequestOptions, JsonObject, } from 'n8n-workflow'; -import { NodeApiError, NodeOperationError } from 'n8n-workflow'; +import { NodeApiError, NodeConnectionType, NodeOperationError } from 'n8n-workflow'; export class FacebookGraphApi implements INodeType { description: INodeTypeDescription = { @@ -21,8 +21,8 @@ export class FacebookGraphApi implements INodeType { defaults: { name: 'Facebook Graph API', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'facebookGraphApi', @@ -80,6 +80,18 @@ export class FacebookGraphApi implements INodeType { name: 'Default', value: '', }, + { + name: 'v20.0', + value: 'v20.0', + }, + { + name: 'v19.0', + value: 'v19.0', + }, + { + name: 'v18.0', + value: 'v18.0', + }, { name: 'v17.0', value: 'v17.0', @@ -218,7 +230,7 @@ export class FacebookGraphApi implements INodeType { displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, options: [ { @@ -410,7 +422,7 @@ export class FacebookGraphApi implements INodeType { // Now that the options are all set make the actual http request response = await this.helpers.request(requestOptions); } catch (error) { - if (!this.continueOnFail(error)) { + if (!this.continueOnFail()) { throw new NodeApiError(this.getNode(), error as JsonObject); } diff --git a/packages/nodes-base/nodes/Facebook/FacebookTrigger.node.ts b/packages/nodes-base/nodes/Facebook/FacebookTrigger.node.ts index b337ec1fd8..5e0f9e897f 100644 --- a/packages/nodes-base/nodes/Facebook/FacebookTrigger.node.ts +++ b/packages/nodes-base/nodes/Facebook/FacebookTrigger.node.ts @@ -10,7 +10,7 @@ import type { IWebhookResponseData, JsonObject, } from 'n8n-workflow'; -import { NodeApiError, NodeOperationError } from 'n8n-workflow'; +import { NodeApiError, NodeConnectionType, NodeOperationError } from 'n8n-workflow'; import { v4 as uuid } from 'uuid'; @@ -33,7 +33,7 @@ export class FacebookTrigger implements INodeType { name: 'Facebook Trigger', }, inputs: [], - outputs: ['main'], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'facebookGraphAppApi', @@ -150,7 +150,7 @@ export class FacebookTrigger implements INodeType { }, default: [], description: - 'The set of fields in this object that are subscribed to. Choose from the list, or specify IDs using an expression.', + 'The set of fields in this object that are subscribed to. Choose from the list, or specify IDs using an expression.', }, { displayName: 'Options', diff --git a/packages/nodes-base/nodes/FacebookLeadAds/FacebookLeadAdsTrigger.node.ts b/packages/nodes-base/nodes/FacebookLeadAds/FacebookLeadAdsTrigger.node.ts index e5eb80043c..5a1c06f91d 100644 --- a/packages/nodes-base/nodes/FacebookLeadAds/FacebookLeadAdsTrigger.node.ts +++ b/packages/nodes-base/nodes/FacebookLeadAds/FacebookLeadAdsTrigger.node.ts @@ -7,6 +7,7 @@ import { type INodeTypeDescription, type IWebhookFunctions, type IWebhookResponseData, + NodeConnectionType, } from 'n8n-workflow'; import { appWebhookSubscriptionCreate, @@ -31,7 +32,7 @@ export class FacebookLeadAdsTrigger implements INodeType { name: 'Facebook Lead Ads Trigger', }, inputs: [], - outputs: ['main'], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'facebookLeadAdsOAuth2Api', @@ -125,7 +126,7 @@ export class FacebookLeadAdsTrigger implements INodeType { displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, options: [ { diff --git a/packages/nodes-base/nodes/FacebookLeadAds/methods/listSearch.ts b/packages/nodes-base/nodes/FacebookLeadAds/methods/listSearch.ts index b7d3e64990..3f9e1f82b9 100644 --- a/packages/nodes-base/nodes/FacebookLeadAds/methods/listSearch.ts +++ b/packages/nodes-base/nodes/FacebookLeadAds/methods/listSearch.ts @@ -18,7 +18,7 @@ export async function pageList( value: page.id, url: `https://facebook.com/${page.id}`, })), - paginationToken: paging?.cursors?.after, + paginationToken: paging?.next ? paging?.cursors?.after : undefined, }; } @@ -37,6 +37,6 @@ export async function formList( name: form.name, value: form.id, })), - paginationToken: paging?.cursors?.after, + paginationToken: paging?.next ? paging?.cursors?.after : undefined, }; } diff --git a/packages/nodes-base/nodes/FacebookLeadAds/types.ts b/packages/nodes-base/nodes/FacebookLeadAds/types.ts index d1fc6050a3..dd4c8ca628 100644 --- a/packages/nodes-base/nodes/FacebookLeadAds/types.ts +++ b/packages/nodes-base/nodes/FacebookLeadAds/types.ts @@ -2,7 +2,7 @@ import type { GenericValue } from 'n8n-workflow'; export type BaseFacebookResponse = { data: TData }; export type BasePaginatedFacebookResponse = BaseFacebookResponse & { - paging: { cursors: { before?: string; after?: string } }; + paging: { cursors: { before?: string; after?: string }; next?: string }; }; export type FacebookAppWebhookSubscriptionsResponse = BaseFacebookResponse< diff --git a/packages/nodes-base/nodes/Figma/FigmaTrigger.node.json b/packages/nodes-base/nodes/Figma/FigmaTrigger.node.json index f349ac18b3..c2284e2302 100644 --- a/packages/nodes-base/nodes/Figma/FigmaTrigger.node.json +++ b/packages/nodes-base/nodes/Figma/FigmaTrigger.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/figma" + "url": "https://docs.n8n.io/integrations/builtin/credentials/figma/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Figma/FigmaTrigger.node.ts b/packages/nodes-base/nodes/Figma/FigmaTrigger.node.ts index 5e204aa59e..c76998bd11 100644 --- a/packages/nodes-base/nodes/Figma/FigmaTrigger.node.ts +++ b/packages/nodes-base/nodes/Figma/FigmaTrigger.node.ts @@ -7,6 +7,7 @@ import type { INodeTypeDescription, IWebhookResponseData, } from 'n8n-workflow'; +import { NodeConnectionType } from 'n8n-workflow'; import { snakeCase } from 'change-case'; import { figmaApiRequest } from './GenericFunctions'; @@ -24,7 +25,7 @@ export class FigmaTrigger implements INodeType { name: 'Figma Trigger (Beta)', }, inputs: [], - outputs: ['main'], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'figmaApi', diff --git a/packages/nodes-base/nodes/FileMaker/FileMaker.node.json b/packages/nodes-base/nodes/FileMaker/FileMaker.node.json index fcb642672b..5c491a9427 100644 --- a/packages/nodes-base/nodes/FileMaker/FileMaker.node.json +++ b/packages/nodes-base/nodes/FileMaker/FileMaker.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/fileMaker" + "url": "https://docs.n8n.io/integrations/builtin/credentials/fileMaker/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/FileMaker/FileMaker.node.ts b/packages/nodes-base/nodes/FileMaker/FileMaker.node.ts index aaaceb1f08..8bb9e981f4 100644 --- a/packages/nodes-base/nodes/FileMaker/FileMaker.node.ts +++ b/packages/nodes-base/nodes/FileMaker/FileMaker.node.ts @@ -9,7 +9,7 @@ import type { INodeTypeDescription, IRequestOptions, } from 'n8n-workflow'; -import { NodeOperationError } from 'n8n-workflow'; +import { NodeConnectionType, NodeOperationError } from 'n8n-workflow'; import { getFields, @@ -37,8 +37,8 @@ export class FileMaker implements INodeType { defaults: { name: 'FileMaker', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'fileMaker', @@ -111,7 +111,7 @@ export class FileMaker implements INodeType { displayOptions: {}, placeholder: 'Layout Name', description: - 'FileMaker Layout Name. Choose from the list, or specify an ID using an expression.', + 'FileMaker Layout Name. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Record ID', @@ -187,7 +187,7 @@ export class FileMaker implements INodeType { }, placeholder: 'Portals', description: - 'The portal result set to return. Use the portal object name or portal table name. If this parameter is omitted, the API will return all portal objects and records in the layout. For best performance, pass the portal object name or portal table name. Choose from the list, or specify an ID using an expression.', + 'The portal result set to return. Use the portal object name or portal table name. If this parameter is omitted, the API will return all portal objects and records in the layout. For best performance, pass the portal object name or portal table name. Choose from the list, or specify an ID using an expression.', }, // ---------------------------------- // find/records @@ -197,7 +197,7 @@ export class FileMaker implements INodeType { name: 'responseLayout', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getResponseLayouts', }, @@ -252,7 +252,7 @@ export class FileMaker implements INodeType { }, options: [], description: - 'Search Field. Choose from the list, or specify an ID using an expression.', + 'Search Field. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Value', @@ -319,7 +319,7 @@ export class FileMaker implements INodeType { }, options: [], description: - 'Field Name. Choose from the list, or specify an ID using an expression.', + 'Field Name. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Order', @@ -373,7 +373,7 @@ export class FileMaker implements INodeType { }, placeholder: 'Script Name', description: - 'The name of the FileMaker script to be run after the action specified by the API call and after the subsequent sort. Choose from the list, or specify an ID using an expression.', + 'The name of the FileMaker script to be run after the action specified by the API call and after the subsequent sort. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Script Parameter', @@ -420,7 +420,7 @@ export class FileMaker implements INodeType { }, placeholder: 'Script Name', description: - 'The name of the FileMaker script to be run after the action specified by the API call but before the subsequent sort. Choose from the list, or specify an ID using an expression.', + 'The name of the FileMaker script to be run after the action specified by the API call but before the subsequent sort. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Script Parameter', @@ -467,7 +467,7 @@ export class FileMaker implements INodeType { }, placeholder: 'Script Name', description: - 'The name of the FileMaker script to be run after the action specified by the API call and after the subsequent sort. Choose from the list, or specify an ID using an expression.', + 'The name of the FileMaker script to be run after the action specified by the API call and after the subsequent sort. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Script Parameter', @@ -545,7 +545,7 @@ export class FileMaker implements INodeType { }, options: [], description: - 'Field Name. Choose from the list, or specify an ID using an expression.', + 'Field Name. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Value', @@ -577,7 +577,7 @@ export class FileMaker implements INodeType { }, placeholder: 'Script Name', description: - 'The name of the FileMaker script to be run. Choose from the list, or specify an ID using an expression.', + 'The name of the FileMaker script to be run. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Script Parameter', @@ -809,7 +809,7 @@ export class FileMaker implements INodeType { } returnData.push({ json: response, pairedItem: { item: i } }); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push({ json: { error: error.message }, pairedItem: { item: i }, diff --git a/packages/nodes-base/nodes/Files/ConvertToFile/ConvertToFile.node.json b/packages/nodes-base/nodes/Files/ConvertToFile/ConvertToFile.node.json index ec8adf50bc..ea8bbbdd0d 100644 --- a/packages/nodes-base/nodes/Files/ConvertToFile/ConvertToFile.node.json +++ b/packages/nodes-base/nodes/Files/ConvertToFile/ConvertToFile.node.json @@ -28,7 +28,8 @@ "ICS", "iCal", "RTF", - "64" + "64", + "Base64" ], "subcategories": { "Core Nodes": ["Files", "Data Transformation"] diff --git a/packages/nodes-base/nodes/Files/ConvertToFile/ConvertToFile.node.ts b/packages/nodes-base/nodes/Files/ConvertToFile/ConvertToFile.node.ts index d43345958e..364bd629f6 100644 --- a/packages/nodes-base/nodes/Files/ConvertToFile/ConvertToFile.node.ts +++ b/packages/nodes-base/nodes/Files/ConvertToFile/ConvertToFile.node.ts @@ -4,6 +4,7 @@ import type { INodeType, INodeTypeDescription, } from 'n8n-workflow'; +import { NodeConnectionType } from 'n8n-workflow'; import * as spreadsheet from './actions/spreadsheet.operation'; import * as toBinary from './actions/toBinary.operation'; @@ -22,8 +23,8 @@ export class ConvertToFile implements INodeType { defaults: { name: 'Convert to File', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], properties: [ { displayName: 'Operation', diff --git a/packages/nodes-base/nodes/Files/ConvertToFile/actions/spreadsheet.operation.ts b/packages/nodes-base/nodes/Files/ConvertToFile/actions/spreadsheet.operation.ts index dbb9227c98..0bc914454d 100644 --- a/packages/nodes-base/nodes/Files/ConvertToFile/actions/spreadsheet.operation.ts +++ b/packages/nodes-base/nodes/Files/ConvertToFile/actions/spreadsheet.operation.ts @@ -26,7 +26,7 @@ export const properties: INodeProperties[] = [ displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, options: [ { @@ -110,7 +110,7 @@ export async function execute( returnData = [newItem]; } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push({ json: { error: error.message, diff --git a/packages/nodes-base/nodes/Files/ConvertToFile/actions/toBinary.operation.ts b/packages/nodes-base/nodes/Files/ConvertToFile/actions/toBinary.operation.ts index 5670044232..f2f329c160 100644 --- a/packages/nodes-base/nodes/Files/ConvertToFile/actions/toBinary.operation.ts +++ b/packages/nodes-base/nodes/Files/ConvertToFile/actions/toBinary.operation.ts @@ -32,7 +32,7 @@ export const properties: INodeProperties[] = [ displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, options: [ { @@ -141,7 +141,7 @@ export async function execute(this: IExecuteFunctions, items: INodeExecutionData returnData.push(newItem); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push({ json: { error: error.message, diff --git a/packages/nodes-base/nodes/Files/ConvertToFile/actions/toJson.operation.ts b/packages/nodes-base/nodes/Files/ConvertToFile/actions/toJson.operation.ts index 26ff53964e..94415d82ca 100644 --- a/packages/nodes-base/nodes/Files/ConvertToFile/actions/toJson.operation.ts +++ b/packages/nodes-base/nodes/Files/ConvertToFile/actions/toJson.operation.ts @@ -36,7 +36,7 @@ export const properties: INodeProperties[] = [ displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, options: [ { @@ -119,7 +119,7 @@ export async function execute(this: IExecuteFunctions, items: INodeExecutionData returnData = [newItem]; } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push({ json: { error: error.message, @@ -154,7 +154,7 @@ export async function execute(this: IExecuteFunctions, items: INodeExecutionData returnData.push(newItem); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push({ json: { error: error.message, diff --git a/packages/nodes-base/nodes/Files/ConvertToFile/actions/toText.operation.ts b/packages/nodes-base/nodes/Files/ConvertToFile/actions/toText.operation.ts index 823c818cfa..925bf50668 100644 --- a/packages/nodes-base/nodes/Files/ConvertToFile/actions/toText.operation.ts +++ b/packages/nodes-base/nodes/Files/ConvertToFile/actions/toText.operation.ts @@ -32,7 +32,7 @@ export const properties: INodeProperties[] = [ displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, options: [ { @@ -107,7 +107,7 @@ export async function execute(this: IExecuteFunctions, items: INodeExecutionData returnData.push(newItem); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push({ json: { error: error.message, diff --git a/packages/nodes-base/nodes/Files/ExtractFromFile/ExtractFromFile.node.json b/packages/nodes-base/nodes/Files/ExtractFromFile/ExtractFromFile.node.json index 3a2bd8ef8a..eec97d6f8d 100644 --- a/packages/nodes-base/nodes/Files/ExtractFromFile/ExtractFromFile.node.json +++ b/packages/nodes-base/nodes/Files/ExtractFromFile/ExtractFromFile.node.json @@ -32,7 +32,9 @@ "Text", "RTF", "XML", - "64" + "64", + "Base64", + "Convert" ], "subcategories": { "Core Nodes": ["Files", "Data Transformation"] diff --git a/packages/nodes-base/nodes/Files/ExtractFromFile/ExtractFromFile.node.ts b/packages/nodes-base/nodes/Files/ExtractFromFile/ExtractFromFile.node.ts index cec7211989..66f6ca2c9c 100644 --- a/packages/nodes-base/nodes/Files/ExtractFromFile/ExtractFromFile.node.ts +++ b/packages/nodes-base/nodes/Files/ExtractFromFile/ExtractFromFile.node.ts @@ -4,6 +4,7 @@ import type { INodeType, INodeTypeDescription, } from 'n8n-workflow'; +import { NodeConnectionType } from 'n8n-workflow'; import * as spreadsheet from './actions/spreadsheet.operation'; import * as moveTo from './actions/moveTo.operation'; @@ -21,8 +22,8 @@ export class ExtractFromFile implements INodeType { defaults: { name: 'Extract from File', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], properties: [ { displayName: 'Operation', diff --git a/packages/nodes-base/nodes/Files/ExtractFromFile/actions/moveTo.operation.ts b/packages/nodes-base/nodes/Files/ExtractFromFile/actions/moveTo.operation.ts index 3fd34e93c3..e4f36afc06 100644 --- a/packages/nodes-base/nodes/Files/ExtractFromFile/actions/moveTo.operation.ts +++ b/packages/nodes-base/nodes/Files/ExtractFromFile/actions/moveTo.operation.ts @@ -40,7 +40,7 @@ export const properties: INodeProperties[] = [ displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, options: [ { @@ -169,7 +169,7 @@ export async function execute( errorDescription = "Try to change the operation or select a JSON file in 'Input Binary Field'"; } - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push({ json: { error: error.message, diff --git a/packages/nodes-base/nodes/Files/ExtractFromFile/actions/pdf.operation.ts b/packages/nodes-base/nodes/Files/ExtractFromFile/actions/pdf.operation.ts index 94b5aac9cb..e2e7f2a911 100644 --- a/packages/nodes-base/nodes/Files/ExtractFromFile/actions/pdf.operation.ts +++ b/packages/nodes-base/nodes/Files/ExtractFromFile/actions/pdf.operation.ts @@ -21,7 +21,7 @@ export const properties: INodeProperties[] = [ displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, options: [ { @@ -122,7 +122,7 @@ export async function execute(this: IExecuteFunctions, items: INodeExecutionData returnData.push(newItem); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push({ json: { error: error.message, diff --git a/packages/nodes-base/nodes/Files/ReadWriteFile/ReadWriteFile.node.json b/packages/nodes-base/nodes/Files/ReadWriteFile/ReadWriteFile.node.json index 57bdf62dd7..d4822cb80b 100644 --- a/packages/nodes-base/nodes/Files/ReadWriteFile/ReadWriteFile.node.json +++ b/packages/nodes-base/nodes/Files/ReadWriteFile/ReadWriteFile.node.json @@ -6,7 +6,7 @@ "resources": { "primaryDocumentation": [ { - "url": "https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.filesreadwrite/" + "url": "https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.readwritefile/" } ] }, diff --git a/packages/nodes-base/nodes/Files/ReadWriteFile/ReadWriteFile.node.ts b/packages/nodes-base/nodes/Files/ReadWriteFile/ReadWriteFile.node.ts index 9c4b95d170..2fc47f5a0b 100644 --- a/packages/nodes-base/nodes/Files/ReadWriteFile/ReadWriteFile.node.ts +++ b/packages/nodes-base/nodes/Files/ReadWriteFile/ReadWriteFile.node.ts @@ -4,6 +4,7 @@ import type { INodeType, INodeTypeDescription, } from 'n8n-workflow'; +import { NodeConnectionType } from 'n8n-workflow'; import * as read from './actions/read.operation'; import * as write from './actions/write.operation'; @@ -19,8 +20,8 @@ export class ReadWriteFile implements INodeType { defaults: { name: 'Read/Write Files from Disk', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], properties: [ { displayName: diff --git a/packages/nodes-base/nodes/Files/ReadWriteFile/actions/read.operation.ts b/packages/nodes-base/nodes/Files/ReadWriteFile/actions/read.operation.ts index 2602c88528..101ca70ab7 100644 --- a/packages/nodes-base/nodes/Files/ReadWriteFile/actions/read.operation.ts +++ b/packages/nodes-base/nodes/Files/ReadWriteFile/actions/read.operation.ts @@ -1,4 +1,10 @@ -import type { IExecuteFunctions, INodeExecutionData, INodeProperties } from 'n8n-workflow'; +import { NodeApiError } from 'n8n-workflow'; +import type { + IExecuteFunctions, + INodeExecutionData, + INodeProperties, + JsonObject, +} from 'n8n-workflow'; import glob from 'fast-glob'; import { errorMapper } from '../helpers/utils'; @@ -13,13 +19,14 @@ export const properties: INodeProperties[] = [ required: true, placeholder: 'e.g. /home/user/Pictures/**/*.png', hint: 'Supports patterns, learn more here', - description: "Specify a file's path or path pattern to read multiple files", + description: + "Specify a file's path or path pattern to read multiple files. Always use forward-slashes for path separator even on Windows.", }, { displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, options: [ { @@ -73,7 +80,12 @@ export async function execute(this: IExecuteFunctions, items: INodeExecutionData for (let itemIndex = 0; itemIndex < items.length; itemIndex++) { try { - fileSelector = this.getNodeParameter('fileSelector', itemIndex) as string; + fileSelector = String(this.getNodeParameter('fileSelector', itemIndex)); + + if (/^[a-zA-Z]:/.test(fileSelector)) { + fileSelector = fileSelector.replace(/\\\\/g, '/'); + } + const options = this.getNodeParameter('options', itemIndex, {}); let dataPropertyName = 'data'; @@ -118,14 +130,13 @@ export async function execute(this: IExecuteFunctions, items: INodeExecutionData }, }); } - returnData.push(...newItems); } catch (error) { const nodeOperatioinError = errorMapper.call(this, error, itemIndex, { filePath: fileSelector, operation: 'read', }); - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push({ json: { error: nodeOperatioinError.message, @@ -136,7 +147,7 @@ export async function execute(this: IExecuteFunctions, items: INodeExecutionData }); continue; } - throw nodeOperatioinError; + throw new NodeApiError(this.getNode(), error as JsonObject, { itemIndex }); } } diff --git a/packages/nodes-base/nodes/Files/ReadWriteFile/actions/write.operation.ts b/packages/nodes-base/nodes/Files/ReadWriteFile/actions/write.operation.ts index 45b745e781..fd4a947617 100644 --- a/packages/nodes-base/nodes/Files/ReadWriteFile/actions/write.operation.ts +++ b/packages/nodes-base/nodes/Files/ReadWriteFile/actions/write.operation.ts @@ -1,6 +1,11 @@ import type { Readable } from 'stream'; -import type { IExecuteFunctions, INodeExecutionData, INodeProperties } from 'n8n-workflow'; -import { BINARY_ENCODING } from 'n8n-workflow'; +import type { + IExecuteFunctions, + INodeExecutionData, + INodeProperties, + JsonObject, +} from 'n8n-workflow'; +import { BINARY_ENCODING, NodeApiError } from 'n8n-workflow'; import { errorMapper } from '../helpers/utils'; import { updateDisplayOptions } from '@utils/utilities'; @@ -29,7 +34,7 @@ export const properties: INodeProperties[] = [ displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, options: [ { @@ -103,7 +108,7 @@ export async function execute(this: IExecuteFunctions, items: INodeExecutionData filePath: fileName, operation: 'write', }); - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push({ json: { error: nodeOperatioinError.message, @@ -114,7 +119,7 @@ export async function execute(this: IExecuteFunctions, items: INodeExecutionData }); continue; } - throw nodeOperatioinError; + throw new NodeApiError(this.getNode(), error as JsonObject, { itemIndex }); } } diff --git a/packages/nodes-base/nodes/Filter/Filter.node.ts b/packages/nodes-base/nodes/Filter/Filter.node.ts index 69a46d4a4f..01db3b9868 100644 --- a/packages/nodes-base/nodes/Filter/Filter.node.ts +++ b/packages/nodes-base/nodes/Filter/Filter.node.ts @@ -13,11 +13,14 @@ export class Filter extends VersionedNodeType { iconColor: 'light-blue', group: ['transform'], description: 'Remove items matching a condition', + defaultVersion: 2.2, }; const nodeVersions: IVersionedNodeType['nodeVersions'] = { 1: new FilterV1(baseDescription), 2: new FilterV2(baseDescription), + 2.1: new FilterV2(baseDescription), + 2.2: new FilterV2(baseDescription), }; super(nodeVersions, baseDescription); diff --git a/packages/nodes-base/nodes/Filter/V1/FilterV1.node.ts b/packages/nodes-base/nodes/Filter/V1/FilterV1.node.ts index 899a04aa5f..b70d5122cc 100644 --- a/packages/nodes-base/nodes/Filter/V1/FilterV1.node.ts +++ b/packages/nodes-base/nodes/Filter/V1/FilterV1.node.ts @@ -1,11 +1,12 @@ -import type { - IExecuteFunctions, - INodeExecutionData, - INodeParameters, - INodeType, - INodeTypeBaseDescription, - INodeTypeDescription, - NodeParameterValue, +import { + NodeConnectionType, + type IExecuteFunctions, + type INodeExecutionData, + type INodeParameters, + type INodeType, + type INodeTypeBaseDescription, + type INodeTypeDescription, + type NodeParameterValue, } from 'n8n-workflow'; import { compareOperationFunctions, convertDateTime } from './GenericFunctions'; @@ -21,8 +22,8 @@ export class FilterV1 implements INodeType { name: 'Filter', color: '#229eff', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], outputNames: ['Kept', 'Discarded'], properties: [ { diff --git a/packages/nodes-base/nodes/Filter/V2/FilterV2.node.ts b/packages/nodes-base/nodes/Filter/V2/FilterV2.node.ts index c4405dba76..46c32d5912 100644 --- a/packages/nodes-base/nodes/Filter/V2/FilterV2.node.ts +++ b/packages/nodes-base/nodes/Filter/V2/FilterV2.node.ts @@ -1,11 +1,17 @@ import set from 'lodash/set'; -import type { - IExecuteFunctions, - INodeExecutionData, - INodeType, - INodeTypeBaseDescription, - INodeTypeDescription, +import { + ApplicationError, + NodeOperationError, + type IExecuteFunctions, + type INodeExecutionData, + type INodeType, + type INodeTypeBaseDescription, + type INodeTypeDescription, + NodeConnectionType, } from 'n8n-workflow'; +import { ENABLE_LESS_STRICT_TYPE_VALIDATION } from '../../../utils/constants'; +import { getTypeValidationParameter, getTypeValidationStrictness } from '../../If/V2/utils'; +import { looseTypeValidationProperty } from '../../../utils/descriptions'; export class FilterV2 implements INodeType { description: INodeTypeDescription; @@ -13,13 +19,13 @@ export class FilterV2 implements INodeType { constructor(baseDescription: INodeTypeBaseDescription) { this.description = { ...baseDescription, - version: 2, + version: [2, 2.1, 2.2], defaults: { name: 'Filter', color: '#229eff', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], outputNames: ['Kept', 'Discarded'], parameterPane: 'wide', properties: [ @@ -32,7 +38,17 @@ export class FilterV2 implements INodeType { typeOptions: { filter: { caseSensitive: '={{!$parameter.options.ignoreCase}}', - typeValidation: '={{$parameter.options.looseTypeValidation ? "loose" : "strict"}}', + typeValidation: getTypeValidationStrictness(2.1), + version: '={{ $nodeVersion >= 2.2 ? 2 : 1 }}', + }, + }, + }, + { + ...looseTypeValidationProperty, + default: false, + displayOptions: { + show: { + '@version': [{ _cnd: { gte: 2.1 } }], }, }, }, @@ -51,11 +67,12 @@ export class FilterV2 implements INodeType { default: true, }, { - displayName: 'Less Strict Type Validation', - description: 'Whether to try casting value types based on the selected operator', - name: 'looseTypeValidation', - type: 'boolean', - default: true, + ...looseTypeValidationProperty, + displayOptions: { + show: { + '@version': [{ _cnd: { lt: 2.1 } }], + }, + }, }, ], }, @@ -79,12 +96,11 @@ export class FilterV2 implements INodeType { extractValue: true, }) as boolean; } catch (error) { - if (!options.looseTypeValidation) { - set( - error, - 'description', - "Try changing the type of comparison. Alternatively you can enable 'Less Strict Type Validation' in the options.", - ); + if ( + !getTypeValidationParameter(2.1)(this, itemIndex, options.looseTypeValidation) && + !error.description + ) { + set(error, 'description', ENABLE_LESS_STRICT_TYPE_VALIDATION); } set(error, 'context.itemIndex', itemIndex); set(error, 'node', this.getNode()); @@ -101,10 +117,21 @@ export class FilterV2 implements INodeType { discardedItems.push(item); } } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { discardedItems.push(item); } else { - throw error; + if (error instanceof NodeOperationError) { + throw error; + } + + if (error instanceof ApplicationError) { + set(error, 'context.itemIndex', itemIndex); + throw error; + } + + throw new NodeOperationError(this.getNode(), error, { + itemIndex, + }); } } }); diff --git a/packages/nodes-base/nodes/Flow/Flow.node.json b/packages/nodes-base/nodes/Flow/Flow.node.json index 592348f898..1ada25e0b2 100644 --- a/packages/nodes-base/nodes/Flow/Flow.node.json +++ b/packages/nodes-base/nodes/Flow/Flow.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/flow" + "url": "https://docs.n8n.io/integrations/builtin/credentials/flow/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Flow/Flow.node.ts b/packages/nodes-base/nodes/Flow/Flow.node.ts index b364f15488..06caf25a82 100644 --- a/packages/nodes-base/nodes/Flow/Flow.node.ts +++ b/packages/nodes-base/nodes/Flow/Flow.node.ts @@ -6,7 +6,7 @@ import type { INodeTypeDescription, JsonObject, } from 'n8n-workflow'; -import { NodeApiError } from 'n8n-workflow'; +import { NodeConnectionType, NodeApiError } from 'n8n-workflow'; import { flowApiRequest, FlowApiRequestAllItems } from './GenericFunctions'; import { taskFields, taskOperations } from './TaskDescription'; import type { ITask, TaskInfo } from './TaskInterface'; @@ -23,8 +23,8 @@ export class Flow implements INodeType { defaults: { name: 'Flow', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'flowApi', diff --git a/packages/nodes-base/nodes/Flow/FlowTrigger.node.json b/packages/nodes-base/nodes/Flow/FlowTrigger.node.json index 85e979f808..63359e1cc5 100644 --- a/packages/nodes-base/nodes/Flow/FlowTrigger.node.json +++ b/packages/nodes-base/nodes/Flow/FlowTrigger.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/flow" + "url": "https://docs.n8n.io/integrations/builtin/credentials/flow/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Flow/FlowTrigger.node.ts b/packages/nodes-base/nodes/Flow/FlowTrigger.node.ts index ebccfa05e6..fc19041f18 100644 --- a/packages/nodes-base/nodes/Flow/FlowTrigger.node.ts +++ b/packages/nodes-base/nodes/Flow/FlowTrigger.node.ts @@ -6,6 +6,7 @@ import type { INodeTypeDescription, IWebhookResponseData, } from 'n8n-workflow'; +import { NodeConnectionType } from 'n8n-workflow'; import { flowApiRequest } from './GenericFunctions'; @@ -21,7 +22,7 @@ export class FlowTrigger implements INodeType { name: 'Flow Trigger', }, inputs: [], - outputs: ['main'], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'flowApi', diff --git a/packages/nodes-base/nodes/Form/Form.node.json b/packages/nodes-base/nodes/Form/Form.node.json new file mode 100644 index 0000000000..140e6d7503 --- /dev/null +++ b/packages/nodes-base/nodes/Form/Form.node.json @@ -0,0 +1,18 @@ +{ + "node": "n8n-nodes-base.form", + "nodeVersion": "1.0", + "codexVersion": "1.0", + "categories": ["Core Nodes"], + "alias": ["_Form", "form", "table", "submit", "post", "page", "step", "stage", "multi"], + "resources": { + "primaryDocumentation": [ + { + "url": "https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.form/" + } + ], + "generic": [] + }, + "subcategories": { + "Core Nodes": ["Helpers"] + } +} diff --git a/packages/nodes-base/nodes/Form/Form.node.ts b/packages/nodes-base/nodes/Form/Form.node.ts new file mode 100644 index 0000000000..a064ce016a --- /dev/null +++ b/packages/nodes-base/nodes/Form/Form.node.ts @@ -0,0 +1,422 @@ +import type { + FormFieldsParameter, + IExecuteFunctions, + INodeExecutionData, + INodeTypeDescription, + IWebhookFunctions, + NodeTypeAndVersion, +} from 'n8n-workflow'; +import { + WAIT_TIME_UNLIMITED, + Node, + updateDisplayOptions, + NodeOperationError, + FORM_NODE_TYPE, + FORM_TRIGGER_NODE_TYPE, + tryToParseJsonToFormFields, + NodeConnectionType, + WAIT_NODE_TYPE, +} from 'n8n-workflow'; + +import { formDescription, formFields, formTitle } from '../Form/common.descriptions'; +import { prepareFormReturnItem, renderForm, resolveRawData } from '../Form/utils'; + +const pageProperties = updateDisplayOptions( + { + show: { + operation: ['page'], + }, + }, + [ + { + displayName: 'Define Form', + name: 'defineForm', + type: 'options', + noDataExpression: true, + options: [ + { + name: 'Using Fields Below', + value: 'fields', + }, + { + name: 'Using JSON', + value: 'json', + }, + ], + default: 'fields', + }, + { + displayName: 'Form Fields', + name: 'jsonOutput', + type: 'json', + typeOptions: { + rows: 5, + }, + default: + '[\n {\n "fieldLabel":"Name",\n "placeholder":"enter you name",\n "requiredField":true\n },\n {\n "fieldLabel":"Age",\n "fieldType":"number",\n "placeholder":"enter your age"\n },\n {\n "fieldLabel":"Email",\n "fieldType":"email",\n "requiredField":true\n }\n]', + validateType: 'form-fields', + ignoreValidationDuringExecution: true, + hint: 'See docs for field syntax', + displayOptions: { + show: { + defineForm: ['json'], + }, + }, + }, + { ...formFields, displayOptions: { show: { defineForm: ['fields'] } } }, + { + displayName: 'Options', + name: 'options', + type: 'collection', + placeholder: 'Add option', + default: {}, + options: [ + { ...formTitle, required: false }, + formDescription, + { + displayName: 'Button Label', + name: 'buttonLabel', + type: 'string', + default: 'Submit', + }, + ], + }, + ], +); + +const completionProperties = updateDisplayOptions( + { + show: { + operation: ['completion'], + }, + }, + [ + { + // eslint-disable-next-line n8n-nodes-base/node-param-display-name-miscased + displayName: 'On n8n Form Submission', + name: 'respondWith', + type: 'options', + default: 'text', + options: [ + { + name: 'Show Completion Screen', + value: 'text', + description: 'Show a response text to the user', + }, + { + name: 'Redirect to URL', + value: 'redirect', + description: 'Redirect the user to a URL', + }, + ], + }, + { + displayName: 'URL', + name: 'redirectUrl', + validateType: 'url', + type: 'string', + default: '', + required: true, + displayOptions: { + show: { + respondWith: ['redirect'], + }, + }, + }, + { + displayName: 'Completion Title', + name: 'completionTitle', + type: 'string', + default: '', + required: true, + displayOptions: { + show: { + respondWith: ['text'], + }, + }, + }, + { + displayName: 'Completion Message', + name: 'completionMessage', + type: 'string', + default: '', + typeOptions: { + rows: 2, + }, + displayOptions: { + show: { + respondWith: ['text'], + }, + }, + }, + { + displayName: 'Options', + name: 'options', + type: 'collection', + placeholder: 'Add option', + default: {}, + options: [{ ...formTitle, required: false, displayName: 'Completion Page Title' }], + displayOptions: { + show: { + respondWith: ['text'], + }, + }, + }, + ], +); + +export class Form extends Node { + nodeInputData: INodeExecutionData[] = []; + + description: INodeTypeDescription = { + displayName: 'n8n Form', + name: 'form', + icon: 'file:form.svg', + group: ['input'], + version: 1, + description: 'Generate webforms in n8n and pass their responses to the workflow', + defaults: { + name: 'Form', + }, + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], + webhooks: [ + { + name: 'default', + httpMethod: 'GET', + responseMode: 'onReceived', + path: '', + restartWebhook: true, + isFullPath: true, + isForm: true, + }, + { + name: 'default', + httpMethod: 'POST', + responseMode: 'onReceived', + path: '', + restartWebhook: true, + isFullPath: true, + isForm: true, + }, + ], + properties: [ + { + // eslint-disable-next-line n8n-nodes-base/node-param-display-name-miscased + displayName: 'An n8n Form Trigger node must be set up before this node', + name: 'triggerNotice', + type: 'notice', + default: '', + }, + { + displayName: 'Page Type', + name: 'operation', + type: 'options', + default: 'page', + noDataExpression: true, + options: [ + { + name: 'Next Form Page', + value: 'page', + }, + { + name: 'Form Ending', + value: 'completion', + }, + ], + }, + ...pageProperties, + ...completionProperties, + ], + }; + + async webhook(context: IWebhookFunctions) { + const res = context.getResponseObject(); + + const operation = context.getNodeParameter('operation', '') as string; + + const parentNodes = context.getParentNodes(context.getNode().name); + const trigger = parentNodes.find( + (node) => node.type === 'n8n-nodes-base.formTrigger', + ) as NodeTypeAndVersion; + + const mode = context.evaluateExpression(`{{ $('${trigger?.name}').first().json.formMode }}`) as + | 'test' + | 'production'; + + const defineForm = context.getNodeParameter('defineForm', false) as string; + + let fields: FormFieldsParameter = []; + if (defineForm === 'json') { + try { + const jsonOutput = context.getNodeParameter('jsonOutput', '', { + rawExpressions: true, + }) as string; + + fields = tryToParseJsonToFormFields(resolveRawData(context, jsonOutput)); + } catch (error) { + throw new NodeOperationError(context.getNode(), error.message, { + description: error.message, + type: mode === 'test' ? 'manual-form-test' : undefined, + }); + } + } else { + fields = context.getNodeParameter('formFields.values', []) as FormFieldsParameter; + } + + const method = context.getRequestObject().method; + + if (operation === 'completion') { + const respondWith = context.getNodeParameter('respondWith', '') as string; + + if (respondWith === 'redirect') { + const redirectUrl = context.getNodeParameter('redirectUrl', '') as string; + res.redirect(redirectUrl); + return { + noWebhookResponse: true, + }; + } + + const completionTitle = context.getNodeParameter('completionTitle', '') as string; + const completionMessage = context.getNodeParameter('completionMessage', '') as string; + const options = context.getNodeParameter('options', {}) as { + formTitle: string; + }; + let title = options.formTitle; + if (!title) { + title = context.evaluateExpression( + `{{ $('${trigger?.name}').params.formTitle }}`, + ) as string; + } + const appendAttribution = context.evaluateExpression( + `{{ $('${trigger?.name}').params.options?.appendAttribution === false ? false : true }}`, + ) as boolean; + + res.render('form-trigger-completion', { + title: completionTitle, + message: completionMessage, + formTitle: title, + appendAttribution, + }); + + return { + noWebhookResponse: true, + }; + } + + if (method === 'GET') { + const options = context.getNodeParameter('options', {}) as { + formTitle: string; + formDescription: string; + buttonLabel: string; + }; + + let title = options.formTitle; + if (!title) { + title = context.evaluateExpression( + `{{ $('${trigger?.name}').params.formTitle }}`, + ) as string; + } + + let description = options.formDescription; + if (!description) { + description = context.evaluateExpression( + `{{ $('${trigger?.name}').params.formDescription }}`, + ) as string; + } + + let buttonLabel = options.buttonLabel; + if (!buttonLabel) { + buttonLabel = + (context.evaluateExpression( + `{{ $('${trigger?.name}').params.options?.buttonLabel }}`, + ) as string) || 'Submit'; + } + + const responseMode = 'onReceived'; + + let redirectUrl; + + const connectedNodes = context.getChildNodes(context.getNode().name); + + const hasNextPage = connectedNodes.some( + (node) => node.type === FORM_NODE_TYPE || node.type === WAIT_NODE_TYPE, + ); + + if (hasNextPage) { + redirectUrl = context.evaluateExpression('{{ $execution.resumeFormUrl }}') as string; + } + + const appendAttribution = context.evaluateExpression( + `{{ $('${trigger?.name}').params.options?.appendAttribution === false ? false : true }}`, + ) as boolean; + + renderForm({ + context, + res, + formTitle: title, + formDescription: description, + formFields: fields, + responseMode, + mode, + redirectUrl, + appendAttribution, + buttonLabel, + }); + + return { + noWebhookResponse: true, + }; + } + + let useWorkflowTimezone = context.evaluateExpression( + `{{ $('${trigger?.name}').params.options?.useWorkflowTimezone }}`, + ) as boolean; + + if (useWorkflowTimezone === undefined && trigger?.typeVersion > 2) { + useWorkflowTimezone = true; + } + + const returnItem = await prepareFormReturnItem(context, fields, mode, useWorkflowTimezone); + + return { + webhookResponse: { status: 200 }, + workflowData: [[returnItem]], + }; + } + + async execute(context: IExecuteFunctions): Promise { + const operation = context.getNodeParameter('operation', 0); + + if (operation === 'completion') { + this.nodeInputData = context.getInputData(); + } + + const parentNodes = context.getParentNodes(context.getNode().name); + const hasFormTrigger = parentNodes.some((node) => node.type === FORM_TRIGGER_NODE_TYPE); + + if (!hasFormTrigger) { + throw new NodeOperationError( + context.getNode(), + 'Form Trigger node must be set before this node', + ); + } + + const childNodes = context.getChildNodes(context.getNode().name); + const hasNextPage = childNodes.some((node) => node.type === FORM_NODE_TYPE); + + if (operation === 'completion' && hasNextPage) { + throw new NodeOperationError( + context.getNode(), + 'Completion has to be the last Form node in the workflow', + ); + } + + if (operation !== 'completion') { + const waitTill = new Date(WAIT_TIME_UNLIMITED); + await context.putExecutionToWait(waitTill); + } + + return [context.getInputData()]; + } +} diff --git a/packages/nodes-base/nodes/Form/FormTrigger.node.json b/packages/nodes-base/nodes/Form/FormTrigger.node.json index 8fb0763a34..6531f1e8c6 100644 --- a/packages/nodes-base/nodes/Form/FormTrigger.node.json +++ b/packages/nodes-base/nodes/Form/FormTrigger.node.json @@ -3,7 +3,7 @@ "nodeVersion": "1.0", "codexVersion": "1.0", "categories": ["Core Nodes"], - "alias": ["_Form", "form", "table", "submit", "post"], + "alias": ["table", "submit", "post"], "resources": { "primaryDocumentation": [ { diff --git a/packages/nodes-base/nodes/Form/FormTrigger.node.ts b/packages/nodes-base/nodes/Form/FormTrigger.node.ts index d81758abfa..a486d1b727 100644 --- a/packages/nodes-base/nodes/Form/FormTrigger.node.ts +++ b/packages/nodes-base/nodes/Form/FormTrigger.node.ts @@ -10,13 +10,15 @@ export class FormTrigger extends VersionedNodeType { name: 'formTrigger', icon: 'file:form.svg', group: ['trigger'], - description: 'Runs the flow when an n8n generated webform is submitted', - defaultVersion: 2, + description: 'Generate webforms in n8n and pass their responses to the workflow', + defaultVersion: 2.2, }; const nodeVersions: IVersionedNodeType['nodeVersions'] = { 1: new FormTriggerV1(baseDescription), 2: new FormTriggerV2(baseDescription), + 2.1: new FormTriggerV2(baseDescription), + 2.2: new FormTriggerV2(baseDescription), }; super(nodeVersions, baseDescription); diff --git a/packages/nodes-base/nodes/Form/common.descriptions.ts b/packages/nodes-base/nodes/Form/common.descriptions.ts index b8fd4c08a6..fe777edd83 100644 --- a/packages/nodes-base/nodes/Form/common.descriptions.ts +++ b/packages/nodes-base/nodes/Form/common.descriptions.ts @@ -1,4 +1,5 @@ import type { INodeProperties } from 'n8n-workflow'; +import { appendAttributionOption } from '../../utils/descriptions'; export const webhookPath: INodeProperties = { displayName: 'Form Path', @@ -28,6 +29,9 @@ export const formDescription: INodeProperties = { placeholder: "e.g. We'll get back to you soon", description: 'Shown underneath the Form Title. Can be used to prompt the user on how to complete the form.', + typeOptions: { + rows: 2, + }, }; export const formFields: INodeProperties = { @@ -51,7 +55,7 @@ export const formFields: INodeProperties = { type: 'string', default: '', placeholder: 'e.g. What is your name?', - description: 'Label appears above the input field', + description: 'Label that appears above the input field', required: true, }, { @@ -69,6 +73,14 @@ export const formFields: INodeProperties = { name: 'Dropdown List', value: 'dropdown', }, + { + name: 'Email', + value: 'email', + }, + { + name: 'File', + value: 'file', + }, { name: 'Number', value: 'number', @@ -88,6 +100,18 @@ export const formFields: INodeProperties = { ], required: true, }, + { + displayName: 'Placeholder', + name: 'placeholder', + description: 'Sample text to display inside the field', + type: 'string', + default: '', + displayOptions: { + hide: { + fieldType: ['dropdown', 'date', 'file'], + }, + }, + }, { displayName: 'Field Options', name: 'fieldOptions', @@ -133,6 +157,48 @@ export const formFields: INodeProperties = { }, }, }, + { + displayName: 'Multiple Files', + name: 'multipleFiles', + type: 'boolean', + default: true, + description: + 'Whether to allow the user to select multiple files from the file input or just one', + displayOptions: { + show: { + fieldType: ['file'], + }, + }, + }, + { + displayName: 'Accepted File Types', + name: 'acceptFileTypes', + type: 'string', + default: '', + description: 'Comma-separated list of allowed file extensions', + hint: 'Leave empty to allow all file types', + placeholder: 'e.g. .jpg, .png', + displayOptions: { + show: { + fieldType: ['file'], + }, + }, + }, + { + displayName: 'Format Date As', + name: 'formatDate', + type: 'string', + default: '', + description: + 'How to format the date in the output data. For a table of tokens and their interpretations, see here.', + placeholder: 'e.g. dd/mm/yyyy', + hint: 'Leave empty to use the default format', + displayOptions: { + show: { + fieldType: ['date'], + }, + }, + }, { displayName: 'Required Field', name: 'requiredField', @@ -191,7 +257,7 @@ export const respondWithOptions: INodeProperties = { displayName: 'Form Response', name: 'respondWithOptions', type: 'fixedCollection', - placeholder: 'Add Option', + placeholder: 'Add option', default: { values: { respondWith: 'text' } }, options: [ { @@ -249,3 +315,8 @@ export const respondWithOptions: INodeProperties = { }, ], }; + +export const appendAttributionToForm: INodeProperties = { + ...appendAttributionOption, + description: 'Whether to include the link “Form automated with n8n” at the bottom of the form', +}; diff --git a/packages/nodes-base/nodes/Form/interfaces.ts b/packages/nodes-base/nodes/Form/interfaces.ts index ece460a7fe..26b5cf567a 100644 --- a/packages/nodes-base/nodes/Form/interfaces.ts +++ b/packages/nodes-base/nodes/Form/interfaces.ts @@ -1,23 +1,20 @@ -export type FormField = { - fieldLabel: string; - fieldType: string; - requiredField: boolean; - fieldOptions?: { values: Array<{ option: string }> }; - multiselect?: boolean; -}; - export type FormTriggerInput = { isSelect?: boolean; isMultiSelect?: boolean; isTextarea?: boolean; + isFileInput?: boolean; isInput?: boolean; - labbel: string; + label: string; + defaultValue?: string; id: string; errorId: string; type?: 'text' | 'number' | 'date'; inputRequired: 'form-required' | ''; selectOptions?: string[]; multiSelectOptions?: Array<{ id: string; label: string }>; + acceptFileTypes?: string; + multipleFiles?: 'multiple' | ''; + placeholder?: string; }; export type FormTriggerData = { @@ -31,4 +28,7 @@ export type FormTriggerData = { formFields: FormTriggerInput[]; useResponseData?: boolean; appendAttribution?: boolean; + buttonLabel?: string; }; + +export const FORM_TRIGGER_AUTHENTICATION_PROPERTY = 'authentication'; diff --git a/packages/nodes-base/nodes/Form/test/Form.node.test.ts b/packages/nodes-base/nodes/Form/test/Form.node.test.ts new file mode 100644 index 0000000000..616e3cf8db --- /dev/null +++ b/packages/nodes-base/nodes/Form/test/Form.node.test.ts @@ -0,0 +1,190 @@ +import type { MockProxy } from 'jest-mock-extended'; +import { mock } from 'jest-mock-extended'; +import type { + IExecuteFunctions, + INode, + INodeExecutionData, + IWebhookFunctions, + NodeTypeAndVersion, +} from 'n8n-workflow'; +import type { Response, Request } from 'express'; +import { Form } from '../Form.node'; + +describe('Form Node', () => { + let form: Form; + let mockExecuteFunctions: MockProxy; + let mockWebhookFunctions: MockProxy; + + beforeEach(() => { + form = new Form(); + mockExecuteFunctions = mock(); + mockWebhookFunctions = mock(); + }); + + describe('execute method', () => { + it('should throw an error if Form Trigger node is not set', async () => { + mockExecuteFunctions.getNodeParameter.mockReturnValue('page'); + mockExecuteFunctions.getParentNodes.mockReturnValue([]); + mockExecuteFunctions.getNode.mockReturnValue(mock()); + + await expect(form.execute(mockExecuteFunctions)).rejects.toThrow( + 'Form Trigger node must be set before this node', + ); + }); + + it('should put execution to wait if operation is not completion', async () => { + mockExecuteFunctions.getNodeParameter.mockReturnValue('page'); + mockExecuteFunctions.getParentNodes.mockReturnValue([ + mock({ type: 'n8n-nodes-base.formTrigger' }), + ]); + mockExecuteFunctions.getChildNodes.mockReturnValue([]); + mockExecuteFunctions.getNode.mockReturnValue(mock()); + + await form.execute(mockExecuteFunctions); + + expect(mockExecuteFunctions.putExecutionToWait).toHaveBeenCalled(); + }); + + it('should throw an error if completion is not the last Form node', async () => { + mockExecuteFunctions.getNodeParameter.mockReturnValue('completion'); + mockExecuteFunctions.getParentNodes.mockReturnValue([ + mock({ type: 'n8n-nodes-base.formTrigger' }), + ]); + mockExecuteFunctions.getChildNodes.mockReturnValue([ + mock({ type: 'n8n-nodes-base.form' }), + ]); + mockExecuteFunctions.getNode.mockReturnValue(mock()); + + await expect(form.execute(mockExecuteFunctions)).rejects.toThrow( + 'Completion has to be the last Form node in the workflow', + ); + }); + + it('should return input data for completion operation', async () => { + const inputData: INodeExecutionData[] = [{ json: { test: 'data' } }]; + mockExecuteFunctions.getNodeParameter.mockReturnValue('completion'); + mockExecuteFunctions.getParentNodes.mockReturnValue([ + mock({ type: 'n8n-nodes-base.formTrigger' }), + ]); + mockExecuteFunctions.getChildNodes.mockReturnValue([]); + mockExecuteFunctions.getInputData.mockReturnValue(inputData); + mockExecuteFunctions.getNode.mockReturnValue(mock()); + + const result = await form.execute(mockExecuteFunctions); + + expect(result).toEqual([inputData]); + }); + }); + + describe('webhook method', () => { + it('should render form for GET request', async () => { + const mockResponseObject = { + render: jest.fn(), + }; + mockWebhookFunctions.getResponseObject.mockReturnValue( + mockResponseObject as unknown as Response, + ); + mockWebhookFunctions.getRequestObject.mockReturnValue({ method: 'GET' } as Request); + mockWebhookFunctions.getParentNodes.mockReturnValue([ + { type: 'n8n-nodes-base.formTrigger', name: 'Form Trigger', typeVersion: 2.1 }, + ]); + mockWebhookFunctions.evaluateExpression.mockReturnValue('test'); + mockWebhookFunctions.getNode.mockReturnValue(mock()); + mockWebhookFunctions.getNodeParameter.mockImplementation((paramName: string) => { + if (paramName === 'operation') return 'page'; + if (paramName === 'useJson') return false; + if (paramName === 'formFields.values') return [{ fieldLabel: 'test' }]; + if (paramName === 'options') { + return { + formTitle: 'Form Title', + formDescription: 'Form Description', + buttonLabel: 'Form Button', + }; + } + return undefined; + }); + + mockWebhookFunctions.getChildNodes.mockReturnValue([]); + + await form.webhook(mockWebhookFunctions); + + expect(mockResponseObject.render).toHaveBeenCalledWith('form-trigger', expect.any(Object)); + }); + + it('should return form data for POST request', async () => { + mockWebhookFunctions.getRequestObject.mockReturnValue({ method: 'POST' } as Request); + mockWebhookFunctions.getParentNodes.mockReturnValue([ + { type: 'n8n-nodes-base.formTrigger', name: 'Form Trigger', typeVersion: 2.1 }, + ]); + mockWebhookFunctions.evaluateExpression.mockReturnValue('test'); + mockWebhookFunctions.getNode.mockReturnValue(mock()); + mockWebhookFunctions.getNodeParameter.mockImplementation((paramName: string) => { + if (paramName === 'operation') return 'page'; + if (paramName === 'useJson') return false; + if (paramName === 'formFields.values') return [{ fieldLabel: 'test' }]; + if (paramName === 'options') { + return { + formTitle: 'Form Title', + formDescription: 'Form Description', + buttonLabel: 'Form Button', + }; + } + return undefined; + }); + + mockWebhookFunctions.getBodyData.mockReturnValue({ + data: { 'field-0': 'test value' }, + files: {}, + }); + + const result = await form.webhook(mockWebhookFunctions); + + expect(result).toHaveProperty('webhookResponse'); + expect(result).toHaveProperty('workflowData'); + expect(result.workflowData).toEqual([ + [ + { + json: expect.objectContaining({ + formMode: 'test', + submittedAt: expect.any(String), + test: 'test value', + }), + }, + ], + ]); + }); + + it('should handle completion operation', async () => { + mockWebhookFunctions.getRequestObject.mockReturnValue({ method: 'GET' } as Request); + mockWebhookFunctions.getNodeParameter.mockImplementation((paramName) => { + if (paramName === 'operation') return 'completion'; + if (paramName === 'useJson') return false; + if (paramName === 'jsonOutput') return '[]'; + if (paramName === 'respondWith') return 'text'; + if (paramName === 'completionTitle') return 'Test Title'; + if (paramName === 'completionMessage') return 'Test Message'; + return {}; + }); + mockWebhookFunctions.getParentNodes.mockReturnValue([ + { type: 'n8n-nodes-base.formTrigger', name: 'Form Trigger', typeVersion: 2.1 }, + ]); + mockWebhookFunctions.evaluateExpression.mockReturnValue('test'); + + const mockResponseObject = { + render: jest.fn(), + }; + mockWebhookFunctions.getResponseObject.mockReturnValue( + mockResponseObject as unknown as Response, + ); + mockWebhookFunctions.getNode.mockReturnValue(mock()); + + const result = await form.webhook(mockWebhookFunctions); + + expect(result).toEqual({ noWebhookResponse: true }); + expect(mockResponseObject.render).toHaveBeenCalledWith( + 'form-trigger-completion', + expect.any(Object), + ); + }); + }); +}); diff --git a/packages/nodes-base/nodes/Form/test/FormTriggerV2.node.test.ts b/packages/nodes-base/nodes/Form/test/FormTriggerV2.node.test.ts new file mode 100644 index 0000000000..d3c96783c5 --- /dev/null +++ b/packages/nodes-base/nodes/Form/test/FormTriggerV2.node.test.ts @@ -0,0 +1,316 @@ +import { mock } from 'jest-mock-extended'; +import { NodeOperationError, type INode } from 'n8n-workflow'; + +import { testVersionedWebhookTriggerNode } from '@test/nodes/TriggerHelpers'; + +import { FormTrigger } from '../FormTrigger.node'; + +describe('FormTrigger', () => { + beforeEach(() => { + jest.clearAllMocks(); + }); + + it('should render a form template with correct fields', async () => { + const formFields = [ + { fieldLabel: 'Name', fieldType: 'text', requiredField: true }, + { fieldLabel: 'Age', fieldType: 'number', requiredField: false }, + { fieldLabel: 'Notes', fieldType: 'textarea', requiredField: false }, + { + fieldLabel: 'Gender', + fieldType: 'select', + requiredField: true, + fieldOptions: { values: [{ option: 'Male' }, { option: 'Female' }] }, + }, + { + fieldLabel: 'Resume', + fieldType: 'file', + requiredField: true, + acceptFileTypes: '.pdf,.doc', + multipleFiles: false, + }, + ]; + + const { response, responseData } = await testVersionedWebhookTriggerNode(FormTrigger, 2, { + mode: 'manual', + node: { + parameters: { + formTitle: 'Test Form', + formDescription: 'Test Description', + responseMode: 'onReceived', + formFields: { values: formFields }, + options: { + appendAttribution: false, + respondWithOptions: { values: { respondWith: 'text' } }, + }, + }, + }, + }); + + expect(response.render).toHaveBeenCalledWith('form-trigger', { + appendAttribution: false, + buttonLabel: 'Submit', + formDescription: 'Test Description', + formFields: [ + { + defaultValue: '', + errorId: 'error-field-0', + id: 'field-0', + inputRequired: 'form-required', + isInput: true, + label: 'Name', + placeholder: undefined, + type: 'text', + }, + { + defaultValue: '', + errorId: 'error-field-1', + id: 'field-1', + inputRequired: '', + isInput: true, + label: 'Age', + placeholder: undefined, + type: 'number', + }, + { + defaultValue: '', + errorId: 'error-field-2', + id: 'field-2', + inputRequired: '', + label: 'Notes', + placeholder: undefined, + isTextarea: true, + }, + { + defaultValue: '', + errorId: 'error-field-3', + id: 'field-3', + inputRequired: 'form-required', + isInput: true, + label: 'Gender', + placeholder: undefined, + type: 'select', + }, + { + acceptFileTypes: '.pdf,.doc', + defaultValue: '', + errorId: 'error-field-4', + id: 'field-4', + inputRequired: 'form-required', + isFileInput: true, + label: 'Resume', + multipleFiles: '', + placeholder: undefined, + }, + ], + formSubmittedText: 'Your response has been recorded', + formTitle: 'Test Form', + n8nWebsiteLink: + 'https://n8n.io/?utm_source=n8n-internal&utm_medium=form-trigger&utm_campaign=instanceId', + testRun: true, + useResponseData: false, + validForm: true, + }); + + expect(responseData).toEqual({ noWebhookResponse: true }); + }); + + it('should return workflowData on POST request', async () => { + const formFields = [ + { fieldLabel: 'Name', fieldType: 'text', requiredField: true }, + { fieldLabel: 'Age', fieldType: 'number', requiredField: false }, + { fieldLabel: 'Date', fieldType: 'date', formatDate: 'dd MMM', requiredField: false }, + { fieldLabel: 'Empty', fieldType: 'number', requiredField: false }, + { + fieldLabel: 'Tags', + fieldType: 'select', + multiselect: true, + requiredField: false, + fieldOptions: { values: [{ option: 'Popular' }, { option: 'Recent' }] }, + }, + ]; + + const bodyData = { + data: { + 'field-0': 'John Doe', + 'field-1': '30', + 'field-2': '2024-08-31', + 'field-4': '{}', + }, + }; + + const { responseData } = await testVersionedWebhookTriggerNode(FormTrigger, 2, { + mode: 'manual', + node: { + parameters: { + formTitle: 'Test Form', + formDescription: 'Test Description', + responseMode: 'onReceived', + formFields: { values: formFields }, + }, + }, + request: { method: 'POST' }, + bodyData, + }); + + expect(responseData).toEqual({ + webhookResponse: { status: 200 }, + workflowData: [ + [ + { + json: { + Name: 'John Doe', + Age: 30, + Date: '31 Jan', + Empty: null, + Tags: {}, + submittedAt: expect.any(String), + formMode: 'test', + }, + }, + ], + ], + }); + }); + + describe('Respond to Webhook', () => { + it('should throw when misconfigured', async () => { + await expect( + testVersionedWebhookTriggerNode(FormTrigger, 2, { + node: { + parameters: { + responseMode: 'responseNode', + }, + }, + request: { method: 'POST' }, + childNodes: [], + }), + ).rejects.toEqual( + new NodeOperationError(mock(), 'No Respond to Webhook node found in the workflow'), + ); + + await expect( + testVersionedWebhookTriggerNode(FormTrigger, 2, { + node: { + parameters: { + responseMode: 'onReceived', + }, + }, + request: { method: 'POST' }, + childNodes: [ + { + name: 'Test Respond To Webhook', + type: 'n8n-nodes-base.respondToWebhook', + typeVersion: 1, + }, + ], + }), + ).rejects.toEqual( + new NodeOperationError(mock(), 'On form submission node not correctly configured'), + ); + }); + }); + + it('should throw on invalid webhook authentication', async () => { + const formFields = [ + { fieldLabel: 'Name', fieldType: 'text', requiredField: true }, + { fieldLabel: 'Age', fieldType: 'number', requiredField: false }, + ]; + + const { responseData, response } = await testVersionedWebhookTriggerNode(FormTrigger, 2, { + mode: 'manual', + node: { + parameters: { + formTitle: 'Test Form', + formDescription: 'Test Description', + responseMode: 'onReceived', + formFields: { values: formFields }, + authentication: 'basicAuth', + }, + }, + request: { method: 'POST' }, + }); + + expect(responseData).toEqual({ noWebhookResponse: true }); + expect(response.status).toHaveBeenCalledWith(401); + expect(response.setHeader).toHaveBeenCalledWith( + 'WWW-Authenticate', + 'Basic realm="Enter credentials"', + ); + }); + + it('should handle files', async () => { + const formFields = [ + { + fieldLabel: 'Resume', + fieldType: 'file', + requiredField: true, + acceptFileTypes: '.pdf,.doc', + multipleFiles: false, + }, + { + fieldLabel: 'Attachments', + fieldType: 'file', + requiredField: true, + acceptFileTypes: '.pdf,.doc', + multipleFiles: true, + }, + ]; + + const bodyData = { + files: { + 'field-0': { + originalFilename: 'resume.pdf', + mimetype: 'application/json', + filepath: '/resume.pdf', + size: 200, + }, + 'field-1': [ + { + originalFilename: 'attachment1.pdf', + mimetype: 'application/json', + filepath: '/attachment1.pdf', + size: 201, + }, + ], + }, + }; + + const { responseData } = await testVersionedWebhookTriggerNode(FormTrigger, 2, { + mode: 'trigger', + node: { + parameters: { + formTitle: 'Test Form', + formDescription: 'Test Description', + responseMode: 'onReceived', + formFields: { values: formFields }, + }, + }, + request: { method: 'POST' }, + bodyData, + }); + + expect(responseData?.webhookResponse).toEqual({ status: 200 }); + expect(responseData?.workflowData).toEqual([ + [ + expect.objectContaining({ + json: { + Resume: { + filename: 'resume.pdf', + mimetype: 'application/json', + size: 200, + }, + Attachments: [ + { + filename: 'attachment1.pdf', + mimetype: 'application/json', + size: 201, + }, + ], + formMode: 'production', + submittedAt: expect.any(String), + }, + }), + ], + ]); + }); +}); diff --git a/packages/nodes-base/nodes/Form/test/utils.test.ts b/packages/nodes-base/nodes/Form/test/utils.test.ts new file mode 100644 index 0000000000..3cd71b9a92 --- /dev/null +++ b/packages/nodes-base/nodes/Form/test/utils.test.ts @@ -0,0 +1,722 @@ +import { mock } from 'jest-mock-extended'; +import type { + FormFieldsParameter, + INode, + IWebhookFunctions, + MultiPartFormData, +} from 'n8n-workflow'; +import { DateTime } from 'luxon'; +import { formWebhook, prepareFormData, prepareFormReturnItem, resolveRawData } from '../utils'; + +describe('FormTrigger, formWebhook', () => { + beforeEach(() => { + jest.clearAllMocks(); + }); + + it('should call response render', async () => { + const executeFunctions = mock(); + const mockRender = jest.fn(); + + const formFields: FormFieldsParameter = [ + { fieldLabel: 'Name', fieldType: 'text', requiredField: true }, + { fieldLabel: 'Age', fieldType: 'number', requiredField: false }, + { + fieldLabel: 'Gender', + fieldType: 'select', + requiredField: true, + fieldOptions: { values: [{ option: 'Male' }, { option: 'Female' }] }, + }, + { + fieldLabel: 'Resume', + fieldType: 'file', + requiredField: true, + acceptFileTypes: '.pdf,.doc', + multipleFiles: false, + }, + ]; + + executeFunctions.getNode.mockReturnValue({ typeVersion: 2.1 } as any); + executeFunctions.getNodeParameter.calledWith('options').mockReturnValue({}); + executeFunctions.getNodeParameter.calledWith('formTitle').mockReturnValue('Test Form'); + executeFunctions.getNodeParameter + .calledWith('formDescription') + .mockReturnValue('Test Description'); + executeFunctions.getNodeParameter.calledWith('responseMode').mockReturnValue('onReceived'); + executeFunctions.getNodeParameter.calledWith('formFields.values').mockReturnValue(formFields); + executeFunctions.getResponseObject.mockReturnValue({ render: mockRender } as any); + executeFunctions.getRequestObject.mockReturnValue({ method: 'GET', query: {} } as any); + executeFunctions.getMode.mockReturnValue('manual'); + executeFunctions.getInstanceId.mockReturnValue('instanceId'); + executeFunctions.getBodyData.mockReturnValue({ data: {}, files: {} }); + executeFunctions.getChildNodes.mockReturnValue([]); + + await formWebhook(executeFunctions); + + expect(mockRender).toHaveBeenCalledWith('form-trigger', { + appendAttribution: true, + buttonLabel: 'Submit', + formDescription: 'Test Description', + formFields: [ + { + defaultValue: '', + errorId: 'error-field-0', + id: 'field-0', + inputRequired: 'form-required', + isInput: true, + label: 'Name', + placeholder: undefined, + type: 'text', + }, + { + defaultValue: '', + errorId: 'error-field-1', + id: 'field-1', + inputRequired: '', + isInput: true, + label: 'Age', + placeholder: undefined, + type: 'number', + }, + { + defaultValue: '', + errorId: 'error-field-2', + id: 'field-2', + inputRequired: 'form-required', + isInput: true, + label: 'Gender', + placeholder: undefined, + type: 'select', + }, + { + acceptFileTypes: '.pdf,.doc', + defaultValue: '', + errorId: 'error-field-3', + id: 'field-3', + inputRequired: 'form-required', + isFileInput: true, + label: 'Resume', + multipleFiles: '', + placeholder: undefined, + }, + ], + formSubmittedText: 'Your response has been recorded', + formTitle: 'Test Form', + n8nWebsiteLink: + 'https://n8n.io/?utm_source=n8n-internal&utm_medium=form-trigger&utm_campaign=instanceId', + testRun: true, + useResponseData: false, + validForm: true, + }); + }); + + it('should return workflowData on POST request', async () => { + const executeFunctions = mock(); + const mockStatus = jest.fn(); + const mockEnd = jest.fn(); + + const formFields: FormFieldsParameter = [ + { fieldLabel: 'Name', fieldType: 'text', requiredField: true }, + { fieldLabel: 'Age', fieldType: 'number', requiredField: false }, + ]; + + const bodyData = { + 'field-0': 'John Doe', + 'field-1': '30', + }; + + executeFunctions.getNode.mockReturnValue({ typeVersion: 2.1 } as any); + executeFunctions.getNodeParameter.calledWith('options').mockReturnValue({}); + executeFunctions.getNodeParameter.calledWith('responseMode').mockReturnValue('onReceived'); + executeFunctions.getChildNodes.mockReturnValue([]); + executeFunctions.getNodeParameter.calledWith('formFields.values').mockReturnValue(formFields); + executeFunctions.getResponseObject.mockReturnValue({ status: mockStatus, end: mockEnd } as any); + executeFunctions.getRequestObject.mockReturnValue({ method: 'POST' } as any); + executeFunctions.getMode.mockReturnValue('manual'); + executeFunctions.getInstanceId.mockReturnValue('instanceId'); + executeFunctions.getBodyData.mockReturnValue({ data: bodyData, files: {} }); + + const result = await formWebhook(executeFunctions); + + expect(result).toEqual({ + webhookResponse: { status: 200 }, + workflowData: [ + [ + { + json: { + Name: 'John Doe', + Age: 30, + submittedAt: expect.any(String), + formMode: 'test', + }, + }, + ], + ], + }); + }); +}); + +describe('FormTrigger, prepareFormData', () => { + it('should return valid form data with given parameters', () => { + const formFields: FormFieldsParameter = [ + { + fieldLabel: 'Name', + fieldType: 'text', + requiredField: true, + placeholder: 'Enter your name', + }, + { + fieldLabel: 'Email', + fieldType: 'email', + requiredField: true, + placeholder: 'Enter your email', + }, + { + fieldLabel: 'Gender', + fieldType: 'dropdown', + requiredField: false, + fieldOptions: { values: [{ option: 'Male' }, { option: 'Female' }] }, + }, + { + fieldLabel: 'Files', + fieldType: 'file', + requiredField: false, + acceptFileTypes: '.jpg,.png', + multipleFiles: true, + }, + ]; + + const query = { Name: 'John Doe', Email: 'john@example.com' }; + + const result = prepareFormData({ + formTitle: 'Test Form', + formDescription: 'This is a test form', + formSubmittedText: 'Thank you for your submission', + redirectUrl: 'https://example.com/thank-you', + formFields, + testRun: false, + query, + instanceId: 'test-instance', + useResponseData: true, + buttonLabel: 'Submit', + }); + + expect(result).toEqual({ + testRun: false, + validForm: true, + formTitle: 'Test Form', + formDescription: 'This is a test form', + formSubmittedText: 'Thank you for your submission', + n8nWebsiteLink: + 'https://n8n.io/?utm_source=n8n-internal&utm_medium=form-trigger&utm_campaign=test-instance', + formFields: [ + { + id: 'field-0', + errorId: 'error-field-0', + label: 'Name', + inputRequired: 'form-required', + defaultValue: 'John Doe', + placeholder: 'Enter your name', + isInput: true, + type: 'text', + }, + { + id: 'field-1', + errorId: 'error-field-1', + label: 'Email', + inputRequired: 'form-required', + defaultValue: 'john@example.com', + placeholder: 'Enter your email', + isInput: true, + type: 'email', + }, + { + id: 'field-2', + errorId: 'error-field-2', + label: 'Gender', + inputRequired: '', + defaultValue: '', + placeholder: undefined, + isSelect: true, + selectOptions: ['Male', 'Female'], + }, + { + id: 'field-3', + errorId: 'error-field-3', + label: 'Files', + inputRequired: '', + defaultValue: '', + placeholder: undefined, + isFileInput: true, + acceptFileTypes: '.jpg,.png', + multipleFiles: 'multiple', + }, + ], + useResponseData: true, + appendAttribution: true, + buttonLabel: 'Submit', + redirectUrl: 'https://example.com/thank-you', + }); + }); + + it('should handle missing optional fields gracefully', () => { + const formFields: FormFieldsParameter = [ + { + fieldLabel: 'Name', + fieldType: 'text', + requiredField: true, + placeholder: 'Enter your name', + }, + ]; + + const result = prepareFormData({ + formTitle: 'Test Form', + formDescription: 'This is a test form', + formSubmittedText: undefined, + redirectUrl: undefined, + formFields, + testRun: true, + query: {}, + buttonLabel: 'Submit', + }); + + expect(result).toEqual({ + testRun: true, + validForm: true, + formTitle: 'Test Form', + formDescription: 'This is a test form', + formSubmittedText: 'Your response has been recorded', + n8nWebsiteLink: 'https://n8n.io/?utm_source=n8n-internal&utm_medium=form-trigger', + formFields: [ + { + id: 'field-0', + errorId: 'error-field-0', + label: 'Name', + inputRequired: 'form-required', + defaultValue: '', + placeholder: 'Enter your name', + isInput: true, + type: 'text', + }, + ], + useResponseData: undefined, + appendAttribution: true, + buttonLabel: 'Submit', + }); + }); + + it('should set redirectUrl with http if protocol is missing', () => { + const formFields: FormFieldsParameter = [ + { + fieldLabel: 'Name', + fieldType: 'text', + requiredField: true, + placeholder: 'Enter your name', + }, + ]; + + const query = { Name: 'John Doe' }; + + const result = prepareFormData({ + formTitle: 'Test Form', + formDescription: 'This is a test form', + formSubmittedText: undefined, + redirectUrl: 'example.com/thank-you', + formFields, + testRun: true, + query, + }); + + expect(result.redirectUrl).toBe('http://example.com/thank-you'); + }); + + it('should return invalid form data when formFields are empty', () => { + const result = prepareFormData({ + formTitle: 'Test Form', + formDescription: 'This is a test form', + formSubmittedText: undefined, + redirectUrl: undefined, + formFields: [], + testRun: true, + query: {}, + }); + + expect(result.validForm).toBe(false); + expect(result.formFields).toEqual([]); + }); + + it('should correctly handle multiselect fields', () => { + const formFields: FormFieldsParameter = [ + { + fieldLabel: 'Favorite Colors', + fieldType: 'text', + requiredField: true, + multiselect: true, + fieldOptions: { values: [{ option: 'Red' }, { option: 'Blue' }, { option: 'Green' }] }, + }, + ]; + + const query = { 'Favorite Colors': 'Red,Blue' }; + + const result = prepareFormData({ + formTitle: 'Test Form', + formDescription: 'This is a test form', + formSubmittedText: 'Thank you', + redirectUrl: 'example.com', + formFields, + testRun: false, + query, + }); + + expect(result.formFields[0].isMultiSelect).toBe(true); + expect(result.formFields[0].multiSelectOptions).toEqual([ + { id: 'option0_field-0', label: 'Red' }, + { id: 'option1_field-0', label: 'Blue' }, + { id: 'option2_field-0', label: 'Green' }, + ]); + }); + it('should correctly handle multiselect fields with unique ids', () => { + const formFields = [ + { + fieldLabel: 'Favorite Colors', + fieldType: 'text', + requiredField: true, + multiselect: true, + fieldOptions: { values: [{ option: 'Red' }, { option: 'Blue' }, { option: 'Green' }] }, + }, + { + fieldLabel: 'Favorite Colors', + fieldType: 'text', + requiredField: true, + multiselect: true, + fieldOptions: { values: [{ option: 'Red' }, { option: 'Blue' }, { option: 'Green' }] }, + }, + ]; + + const query = { 'Favorite Colors': 'Red,Blue' }; + + const result = prepareFormData({ + formTitle: 'Test Form', + formDescription: 'This is a test form', + formSubmittedText: 'Thank you', + redirectUrl: 'example.com', + formFields, + testRun: false, + query, + }); + + expect(result.formFields[0].isMultiSelect).toBe(true); + expect(result.formFields[0].multiSelectOptions).toEqual([ + { id: 'option0_field-0', label: 'Red' }, + { id: 'option1_field-0', label: 'Blue' }, + { id: 'option2_field-0', label: 'Green' }, + ]); + expect(result.formFields[1].multiSelectOptions).toEqual([ + { id: 'option0_field-1', label: 'Red' }, + { id: 'option1_field-1', label: 'Blue' }, + { id: 'option2_field-1', label: 'Green' }, + ]); + }); +}); + +jest.mock('luxon', () => ({ + DateTime: { + fromFormat: jest.fn().mockReturnValue({ + toFormat: jest.fn().mockReturnValue('formatted-date'), + }), + now: jest.fn().mockReturnValue({ + setZone: jest.fn().mockReturnValue({ + toISO: jest.fn().mockReturnValue('2023-04-01T12:00:00.000Z'), + }), + }), + }, +})); + +describe('prepareFormReturnItem', () => { + const mockContext = mock({ + nodeHelpers: mock({ + copyBinaryFile: jest.fn().mockResolvedValue({}), + }), + }); + const formNode = mock({ type: 'n8n-nodes-base.formTrigger' }); + + beforeEach(() => { + jest.clearAllMocks(); + mockContext.getBodyData.mockReturnValue({ data: {}, files: {} }); + mockContext.getTimezone.mockReturnValue('UTC'); + mockContext.getNode.mockReturnValue(formNode); + mockContext.getWorkflowStaticData.mockReturnValue({}); + }); + + it('should handle empty form submission', async () => { + const result = await prepareFormReturnItem(mockContext, [], 'test'); + + expect(result).toEqual({ + json: { + submittedAt: '2023-04-01T12:00:00.000Z', + formMode: 'test', + }, + }); + }); + + it('should process text fields correctly', async () => { + mockContext.getBodyData.mockReturnValue({ + data: { 'field-0': ' test value ' }, + files: {}, + }); + + const formFields = [{ fieldLabel: 'Text Field', fieldType: 'text' }]; + const result = await prepareFormReturnItem(mockContext, formFields, 'production'); + + expect(result.json['Text Field']).toBe('test value'); + expect(result.json.formMode).toBe('production'); + }); + + it('should process number fields correctly', async () => { + mockContext.getBodyData.mockReturnValue({ + data: { 'field-0': '42' }, + files: {}, + }); + + const formFields = [{ fieldLabel: 'Number Field', fieldType: 'number' }]; + const result = await prepareFormReturnItem(mockContext, formFields, 'test'); + + expect(result.json['Number Field']).toBe(42); + }); + + it('should handle file uploads', async () => { + const mockFile: Partial = { + filepath: '/tmp/uploaded-file', + originalFilename: 'test.txt', + mimetype: 'text/plain', + size: 1024, + }; + + mockContext.getBodyData.mockReturnValue({ + data: {}, + files: { 'field-0': mockFile }, + }); + + const formFields = [{ fieldLabel: 'File Upload', fieldType: 'file' }]; + const result = await prepareFormReturnItem(mockContext, formFields, 'test'); + + expect(result.json['File Upload']).toEqual({ + filename: 'test.txt', + mimetype: 'text/plain', + size: 1024, + }); + expect(result.binary).toBeDefined(); + expect(result.binary!.File_Upload).toEqual({}); + }); + + it('should handle multiple file uploads', async () => { + const mockFiles: Array> = [ + { filepath: '/tmp/file1', originalFilename: 'file1.txt', mimetype: 'text/plain', size: 1024 }, + { filepath: '/tmp/file2', originalFilename: 'file2.txt', mimetype: 'text/plain', size: 2048 }, + ]; + + mockContext.getBodyData.mockReturnValue({ + data: {}, + files: { 'field-0': mockFiles }, + }); + + const formFields = [{ fieldLabel: 'Multiple Files', fieldType: 'file', multipleFiles: true }]; + const result = await prepareFormReturnItem(mockContext, formFields, 'test'); + + expect(result.json['Multiple Files']).toEqual([ + { filename: 'file1.txt', mimetype: 'text/plain', size: 1024 }, + { filename: 'file2.txt', mimetype: 'text/plain', size: 2048 }, + ]); + expect(result.binary).toBeDefined(); + expect(result.binary!.Multiple_Files_0).toEqual({}); + expect(result.binary!.Multiple_Files_1).toEqual({}); + }); + + it('should format date fields', async () => { + mockContext.getBodyData.mockReturnValue({ + data: { 'field-0': '2023-04-01' }, + files: {}, + }); + + const formFields = [{ fieldLabel: 'Date Field', fieldType: 'date', formatDate: 'dd/MM/yyyy' }]; + const result = await prepareFormReturnItem(mockContext, formFields, 'test'); + + expect(result.json['Date Field']).toBe('formatted-date'); + expect(DateTime.fromFormat).toHaveBeenCalledWith('2023-04-01', 'yyyy-mm-dd'); + }); + + it('should handle multiselect fields', async () => { + mockContext.getBodyData.mockReturnValue({ + data: { 'field-0': '["option1", "option2"]' }, + files: {}, + }); + + const formFields = [{ fieldLabel: 'Multiselect', fieldType: 'multiSelect', multiselect: true }]; + const result = await prepareFormReturnItem(mockContext, formFields, 'test'); + + expect(result.json.Multiselect).toEqual(['option1', 'option2']); + }); + + it('should use workflow timezone when specified', async () => { + mockContext.getTimezone.mockReturnValue('America/New_York'); + + await prepareFormReturnItem(mockContext, [], 'test', true); + + expect(mockContext.getTimezone).toHaveBeenCalled(); + expect(DateTime.now().setZone).toHaveBeenCalledWith('America/New_York'); + }); + + it('should include workflow static data for form trigger node', async () => { + const staticData = { queryParam: 'value' }; + mockContext.getWorkflowStaticData.mockReturnValue(staticData); + + const result = await prepareFormReturnItem(mockContext, [], 'test'); + + expect(result.json.formQueryParameters).toEqual(staticData); + }); +}); + +describe('resolveRawData', () => { + const mockContext = mock(); + + const dummyData = { + name: 'Hanna', + age: 30, + city: 'New York', + isStudent: false, + hasJob: true, + grades: { + math: 95, + science: 88, + history: 92, + }, + hobbies: ['reading', 'painting', 'coding'], + address: { + street: '123 Main St', + zipCode: '10001', + country: 'USA', + }, + languages: ['English', 'Spanish'], + projects: [ + { name: 'Project A', status: 'completed' }, + { name: 'Project B', status: 'in-progress' }, + ], + emptyArray: [], + }; + + beforeEach(() => { + jest.clearAllMocks(); + + mockContext.evaluateExpression.mockImplementation((expression: string) => { + const key = expression.replace(/[{}]/g, '').trim(); + return key.split('.').reduce((obj, prop) => obj?.[prop], dummyData as any); + }); + }); + + it('should return the input string if it does not start with "="', () => { + const input = 'Hello, world!'; + expect(resolveRawData(mockContext, input)).toBe(input); + }); + + it('should remove leading "=" characters', () => { + const input = '=Hello, world!'; + expect(resolveRawData(mockContext, input)).toBe('Hello, world!'); + }); + + it('should resolve a single expression', () => { + const input = '=Hello, {{name}}!'; + expect(resolveRawData(mockContext, input)).toBe('Hello, Hanna!'); + }); + + it('should resolve multiple expressions', () => { + const input = '={{name}} is {{age}} years old and lives in {{city}}.'; + expect(resolveRawData(mockContext, input)).toBe('Hanna is 30 years old and lives in New York.'); + }); + + it('should handle object resolutions', () => { + const input = '=Grades: {{grades}}'; + expect(resolveRawData(mockContext, input)).toBe( + 'Grades: {"math":95,"science":88,"history":92}', + ); + }); + + it('should handle nested object properties', () => { + const input = "={{name}}'s math grade is {{grades.math}}."; + expect(resolveRawData(mockContext, input)).toBe("Hanna's math grade is 95."); + }); + + it('should handle boolean values', () => { + const input = '=Is {{name}} a student? {{isStudent}}'; + expect(resolveRawData(mockContext, input)).toBe('Is Hanna a student? false'); + }); + + it('should handle expressions with whitespace', () => { + const input = '={{ name }} is {{ age }} years old.'; + expect(resolveRawData(mockContext, input)).toBe('Hanna is 30 years old.'); + }); + + it('should return the original string if no resolvables are found', () => { + const input = '=Hello, world!'; + expect(resolveRawData(mockContext, input)).toBe('Hello, world!'); + }); + + it('should handle non-existent properties gracefully', () => { + const input = "={{name}}'s favorite color is {{favoriteColor}}."; + expect(resolveRawData(mockContext, input)).toBe("Hanna's favorite color is undefined."); + }); + + it('should handle mixed resolvable and non-resolvable content', () => { + const input = '={{name}} lives in {{city}} and enjoys programming.'; + expect(resolveRawData(mockContext, input)).toBe( + 'Hanna lives in New York and enjoys programming.', + ); + }); + + it('should handle boolean values correctly', () => { + const input = '={{name}} is a student: {{isStudent}}. {{name}} has a job: {{hasJob}}.'; + expect(resolveRawData(mockContext, input)).toBe( + 'Hanna is a student: false. Hanna has a job: true.', + ); + }); + + it('should handle arrays correctly', () => { + const input = "={{name}}'s hobbies are {{hobbies}}."; + expect(resolveRawData(mockContext, input)).toBe( + 'Hanna\'s hobbies are ["reading","painting","coding"].', + ); + }); + + it('should handle nested objects correctly', () => { + const input = '={{name}} lives at {{address.street}}, {{address.zipCode}}.'; + expect(resolveRawData(mockContext, input)).toBe('Hanna lives at 123 Main St, 10001.'); + }); + + it('should handle arrays of objects correctly', () => { + const input = '=Project statuses: {{projects.0.status}}, {{projects.1.status}}.'; + expect(resolveRawData(mockContext, input)).toBe('Project statuses: completed, in-progress.'); + }); + + it('should handle empty arrays correctly', () => { + const input = '=Empty array: {{emptyArray}}.'; + expect(resolveRawData(mockContext, input)).toBe('Empty array: [].'); + }); + + it('should handle a mix of different data types', () => { + const input = + '={{name}} ({{age}}) knows {{languages.length}} languages. First project: {{projects.0.name}}.'; + expect(resolveRawData(mockContext, input)).toBe( + 'Hanna (30) knows 2 languages. First project: Project A.', + ); + }); + + it('should handle nested array access', () => { + const input = '=First hobby: {{hobbies.0}}, Last hobby: {{hobbies.2}}.'; + expect(resolveRawData(mockContext, input)).toBe('First hobby: reading, Last hobby: coding.'); + }); + + it('should handle object-to-string conversion', () => { + const input = '=Address object: {{address}}.'; + expect(resolveRawData(mockContext, input)).toBe( + 'Address object: {"street":"123 Main St","zipCode":"10001","country":"USA"}.', + ); + }); +}); diff --git a/packages/nodes-base/nodes/Form/utils.ts b/packages/nodes-base/nodes/Form/utils.ts index 3b402303d2..2809024e2b 100644 --- a/packages/nodes-base/nodes/Form/utils.ts +++ b/packages/nodes-base/nodes/Form/utils.ts @@ -1,22 +1,55 @@ -import { - NodeOperationError, - jsonParse, - type IDataObject, - type IWebhookFunctions, +import type { + INodeExecutionData, + MultiPartFormData, + IDataObject, + IWebhookFunctions, + FormFieldsParameter, + NodeTypeAndVersion, +} from 'n8n-workflow'; +import { + FORM_NODE_TYPE, + FORM_TRIGGER_NODE_TYPE, + NodeOperationError, + WAIT_NODE_TYPE, + jsonParse, } from 'n8n-workflow'; -import type { FormField, FormTriggerData, FormTriggerInput } from './interfaces'; -export const prepareFormData = ( - formTitle: string, - formDescription: string, - formSubmittedText: string | undefined, - redirectUrl: string | undefined, - formFields: FormField[], - testRun: boolean, - instanceId?: string, - useResponseData?: boolean, +import type { FormTriggerData, FormTriggerInput } from './interfaces'; +import { FORM_TRIGGER_AUTHENTICATION_PROPERTY } from './interfaces'; + +import { WebhookAuthorizationError } from '../Webhook/error'; +import { validateWebhookAuthentication } from '../Webhook/utils'; + +import { DateTime } from 'luxon'; +import isbot from 'isbot'; +import type { Response } from 'express'; +import { getResolvables } from '../../utils/utilities'; + +export function prepareFormData({ + formTitle, + formDescription, + formSubmittedText, + redirectUrl, + formFields, + testRun, + query, + instanceId, + useResponseData, appendAttribution = true, -) => { + buttonLabel, +}: { + formTitle: string; + formDescription: string; + formSubmittedText: string | undefined; + redirectUrl: string | undefined; + formFields: FormFieldsParameter; + testRun: boolean; + query: IDataObject; + instanceId?: string; + useResponseData?: boolean; + appendAttribution?: boolean; + buttonLabel?: string; +}) { const validForm = formFields.length > 0; const utm_campaign = instanceId ? `&utm_campaign=${instanceId}` : ''; const n8nWebsiteLink = `https://n8n.io/?utm_source=n8n-internal&utm_medium=form-trigger${utm_campaign}`; @@ -35,6 +68,7 @@ export const prepareFormData = ( formFields: [], useResponseData, appendAttribution, + buttonLabel, }; if (redirectUrl) { @@ -49,22 +83,28 @@ export const prepareFormData = ( } for (const [index, field] of formFields.entries()) { - const { fieldType, requiredField, multiselect } = field; + const { fieldType, requiredField, multiselect, placeholder } = field; const input: IDataObject = { id: `field-${index}`, errorId: `error-field-${index}`, label: field.fieldLabel, inputRequired: requiredField ? 'form-required' : '', + defaultValue: query[field.fieldLabel] ?? '', + placeholder, }; if (multiselect) { input.isMultiSelect = true; input.multiSelectOptions = field.fieldOptions?.values.map((e, i) => ({ - id: `option${i}`, + id: `option${i}_${input.id}`, label: e.option, })) ?? []; + } else if (fieldType === 'file') { + input.isFileInput = true; + input.acceptFileTypes = field.acceptFileTypes; + input.multipleFiles = field.multipleFiles ? 'multiple' : ''; } else if (fieldType === 'dropdown') { input.isSelect = true; const fieldOptions = field.fieldOptions?.values ?? []; @@ -73,14 +113,14 @@ export const prepareFormData = ( input.isTextarea = true; } else { input.isInput = true; - input.type = fieldType as 'text' | 'number' | 'date'; + input.type = fieldType as 'text' | 'number' | 'date' | 'email'; } formData.formFields.push(input as FormTriggerInput); } return formData; -}; +} const checkResponseModeConfiguration = (context: IWebhookFunctions) => { const responseMode = context.getNodeParameter('responseMode', 'onReceived') as string; @@ -113,9 +153,218 @@ const checkResponseModeConfiguration = (context: IWebhookFunctions) => { } }; -export async function formWebhook(context: IWebhookFunctions) { +export async function prepareFormReturnItem( + context: IWebhookFunctions, + formFields: FormFieldsParameter, + mode: 'test' | 'production', + useWorkflowTimezone: boolean = false, +) { + const bodyData = (context.getBodyData().data as IDataObject) ?? {}; + const files = (context.getBodyData().files as IDataObject) ?? {}; + + const returnItem: INodeExecutionData = { + json: {}, + }; + if (files && Object.keys(files).length) { + returnItem.binary = {}; + } + + for (const key of Object.keys(files)) { + const processFiles: MultiPartFormData.File[] = []; + let multiFile = false; + const filesInput = files[key] as MultiPartFormData.File[] | MultiPartFormData.File; + + if (Array.isArray(filesInput)) { + bodyData[key] = filesInput.map((file) => ({ + filename: file.originalFilename, + mimetype: file.mimetype, + size: file.size, + })); + processFiles.push(...filesInput); + multiFile = true; + } else { + bodyData[key] = { + filename: filesInput.originalFilename, + mimetype: filesInput.mimetype, + size: filesInput.size, + }; + processFiles.push(filesInput); + } + + const entryIndex = Number(key.replace(/field-/g, '')); + const fieldLabel = isNaN(entryIndex) ? key : formFields[entryIndex].fieldLabel; + + let fileCount = 0; + for (const file of processFiles) { + let binaryPropertyName = fieldLabel.replace(/\W/g, '_'); + + if (multiFile) { + binaryPropertyName += `_${fileCount++}`; + } + + returnItem.binary![binaryPropertyName] = await context.nodeHelpers.copyBinaryFile( + file.filepath, + file.originalFilename ?? file.newFilename, + file.mimetype, + ); + } + } + + for (const [index, field] of formFields.entries()) { + const key = `field-${index}`; + let value = bodyData[key] ?? null; + + if (value === null) { + returnItem.json[field.fieldLabel] = null; + continue; + } + + if (field.fieldType === 'number') { + value = Number(value); + } + if (field.fieldType === 'text') { + value = String(value).trim(); + } + if (field.multiselect && typeof value === 'string') { + value = jsonParse(value); + } + if (field.fieldType === 'date' && value && field.formatDate !== '') { + value = DateTime.fromFormat(String(value), 'yyyy-mm-dd').toFormat(field.formatDate as string); + } + if (field.fieldType === 'file' && field.multipleFiles && !Array.isArray(value)) { + value = [value]; + } + + returnItem.json[field.fieldLabel] = value; + } + + const timezone = useWorkflowTimezone ? context.getTimezone() : 'UTC'; + returnItem.json.submittedAt = DateTime.now().setZone(timezone).toISO(); + + returnItem.json.formMode = mode; + + const workflowStaticData = context.getWorkflowStaticData('node'); + if ( + Object.keys(workflowStaticData || {}).length && + context.getNode().type === FORM_TRIGGER_NODE_TYPE + ) { + returnItem.json.formQueryParameters = workflowStaticData; + } + + return returnItem; +} + +export function renderForm({ + context, + res, + formTitle, + formDescription, + formFields, + responseMode, + mode, + formSubmittedText, + redirectUrl, + appendAttribution, + buttonLabel, +}: { + context: IWebhookFunctions; + res: Response; + formTitle: string; + formDescription: string; + formFields: FormFieldsParameter; + responseMode: string; + mode: 'test' | 'production'; + formSubmittedText?: string; + redirectUrl?: string; + appendAttribution?: boolean; + buttonLabel?: string; +}) { + formDescription = (formDescription || '').replace(/\\n/g, '\n').replace(/
/g, '\n'); + const instanceId = context.getInstanceId(); + + const useResponseData = responseMode === 'responseNode'; + + let query: IDataObject = {}; + + if (context.getNode().type === FORM_TRIGGER_NODE_TYPE) { + query = context.getRequestObject().query as IDataObject; + const workflowStaticData = context.getWorkflowStaticData('node'); + for (const key of Object.keys(query)) { + workflowStaticData[key] = query[key]; + } + } else if (context.getNode().type === FORM_NODE_TYPE) { + const parentNodes = context.getParentNodes(context.getNode().name); + const trigger = parentNodes.find( + (node) => node.type === FORM_TRIGGER_NODE_TYPE, + ) as NodeTypeAndVersion; + try { + const triggerQueryParameters = context.evaluateExpression( + `{{ $('${trigger?.name}').first().json.formQueryParameters }}`, + ) as IDataObject; + + if (triggerQueryParameters) { + query = triggerQueryParameters; + } + } catch (error) {} + } + + const data = prepareFormData({ + formTitle, + formDescription, + formSubmittedText, + redirectUrl, + formFields, + testRun: mode === 'test', + query, + instanceId, + useResponseData, + appendAttribution, + buttonLabel, + }); + + res.render('form-trigger', data); +} + +export async function formWebhook( + context: IWebhookFunctions, + authProperty = FORM_TRIGGER_AUTHENTICATION_PROPERTY, +) { + const node = context.getNode(); + const options = context.getNodeParameter('options', {}) as { + ignoreBots?: boolean; + respondWithOptions?: { + values: { + respondWith: 'text' | 'redirect'; + formSubmittedText: string; + redirectUrl: string; + }; + }; + formSubmittedText?: string; + useWorkflowTimezone?: boolean; + appendAttribution?: boolean; + buttonLabel?: string; + }; + const res = context.getResponseObject(); + const req = context.getRequestObject(); + + try { + if (options.ignoreBots && isbot(req.headers['user-agent'])) { + throw new WebhookAuthorizationError(403); + } + if (node.typeVersion > 1) { + await validateWebhookAuthentication(context, authProperty); + } + } catch (error) { + if (error instanceof WebhookAuthorizationError) { + res.setHeader('WWW-Authenticate', 'Basic realm="Enter credentials"'); + res.status(401).send(); + return { noWebhookResponse: true }; + } + throw error; + } + const mode = context.getMode() === 'manual' ? 'test' : 'production'; - const formFields = context.getNodeParameter('formFields.values', []) as FormField[]; + const formFields = context.getNodeParameter('formFields.values', []) as FormFieldsParameter; const method = context.getRequestObject().method; checkResponseModeConfiguration(context); @@ -124,9 +373,7 @@ export async function formWebhook(context: IWebhookFunctions) { if (method === 'GET') { const formTitle = context.getNodeParameter('formTitle', '') as string; const formDescription = context.getNodeParameter('formDescription', '') as string; - const instanceId = context.getInstanceId(); const responseMode = context.getNodeParameter('responseMode', '') as string; - const options = context.getNodeParameter('options', {}) as IDataObject; let formSubmittedText; let redirectUrl; @@ -148,55 +395,76 @@ export async function formWebhook(context: IWebhookFunctions) { appendAttribution = false; } - const useResponseData = responseMode === 'responseNode'; + let buttonLabel = 'Submit'; - const data = prepareFormData( + if (options.buttonLabel) { + buttonLabel = options.buttonLabel; + } + + if (!redirectUrl && node.type !== FORM_TRIGGER_NODE_TYPE) { + const connectedNodes = context.getChildNodes(context.getNode().name); + const hasNextPage = connectedNodes.some( + (n) => n.type === FORM_NODE_TYPE || n.type === WAIT_NODE_TYPE, + ); + + if (hasNextPage) { + redirectUrl = context.evaluateExpression('{{ $execution.resumeFormUrl }}') as string; + } + } + + renderForm({ + context, + res, formTitle, formDescription, + formFields, + responseMode, + mode, formSubmittedText, redirectUrl, - formFields, - mode === 'test', - instanceId, - useResponseData, appendAttribution, - ); + buttonLabel, + }); - const res = context.getResponseObject(); - res.render('form-trigger', data); return { noWebhookResponse: true, }; } - const bodyData = (context.getBodyData().data as IDataObject) ?? {}; + let { useWorkflowTimezone } = options; - const returnData: IDataObject = {}; - for (const [index, field] of formFields.entries()) { - const key = `field-${index}`; - let value = bodyData[key] ?? null; - - if (value === null) returnData[field.fieldLabel] = null; - - if (field.fieldType === 'number') { - value = Number(value); - } - if (field.fieldType === 'text') { - value = String(value).trim(); - } - if (field.multiselect && typeof value === 'string') { - value = jsonParse(value); - } - - returnData[field.fieldLabel] = value; + if (useWorkflowTimezone === undefined && node.typeVersion > 2) { + useWorkflowTimezone = true; } - returnData.submittedAt = new Date().toISOString(); - returnData.formMode = mode; - const webhookResponse: IDataObject = { status: 200 }; + const returnItem = await prepareFormReturnItem(context, formFields, mode, useWorkflowTimezone); return { - webhookResponse, - workflowData: [context.helpers.returnJsonArray(returnData)], + webhookResponse: { status: 200 }, + workflowData: [[returnItem]], }; } + +export function resolveRawData(context: IWebhookFunctions, rawData: string) { + const resolvables = getResolvables(rawData); + let returnData: string = rawData; + + if (returnData.startsWith('=')) { + returnData = returnData.replace(/^=+/, ''); + } else { + return returnData; + } + + if (resolvables.length) { + for (const resolvable of resolvables) { + const resolvedValue = context.evaluateExpression(`${resolvable}`); + + if (typeof resolvedValue === 'object' && resolvedValue !== null) { + returnData = returnData.replace(resolvable, JSON.stringify(resolvedValue)); + } else { + returnData = returnData.replace(resolvable, resolvedValue as string); + } + } + } + return returnData; +} diff --git a/packages/nodes-base/nodes/Form/v1/FormTriggerV1.node.ts b/packages/nodes-base/nodes/Form/v1/FormTriggerV1.node.ts index bf31639bd6..d5755ed2ae 100644 --- a/packages/nodes-base/nodes/Form/v1/FormTriggerV1.node.ts +++ b/packages/nodes-base/nodes/Form/v1/FormTriggerV1.node.ts @@ -1,6 +1,6 @@ -/* eslint-disable n8n-nodes-base/node-filename-against-convention */ import { FORM_TRIGGER_PATH_IDENTIFIER, + NodeConnectionType, type INodeType, type INodeTypeBaseDescription, type INodeTypeDescription, @@ -23,13 +23,13 @@ const descriptionV1: INodeTypeDescription = { icon: 'file:form.svg', group: ['trigger'], version: 1, - description: 'Runs the flow when an n8n generated webform is submitted', + description: 'Generate webforms in n8n and pass their responses to the workflow', defaults: { name: 'n8n Form Trigger', }, - // eslint-disable-next-line n8n-nodes-base/node-class-description-inputs-wrong-regular-node + inputs: [], - outputs: ['main'], + outputs: [NodeConnectionType.Main], webhooks: [ { name: 'setup', @@ -62,7 +62,7 @@ const descriptionV1: INodeTypeDescription = { displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, displayOptions: { hide: { diff --git a/packages/nodes-base/nodes/Form/v2/FormTriggerV2.node.ts b/packages/nodes-base/nodes/Form/v2/FormTriggerV2.node.ts index 7ad3edf79d..7e09170d6a 100644 --- a/packages/nodes-base/nodes/Form/v2/FormTriggerV2.node.ts +++ b/packages/nodes-base/nodes/Form/v2/FormTriggerV2.node.ts @@ -1,5 +1,8 @@ -/* eslint-disable n8n-nodes-base/node-filename-against-convention */ import { + ADD_FORM_NOTICE, + type INodePropertyOptions, + NodeConnectionType, + type INodeProperties, type INodeType, type INodeTypeBaseDescription, type INodeTypeDescription, @@ -8,6 +11,7 @@ import { import { formWebhook } from '../utils'; import { + appendAttributionToForm, formDescription, formFields, formRespondMode, @@ -16,27 +20,36 @@ import { respondWithOptions, webhookPath, } from '../common.descriptions'; +import { FORM_TRIGGER_AUTHENTICATION_PROPERTY } from '../interfaces'; + +const useWorkflowTimezone: INodeProperties = { + displayName: 'Use Workflow Timezone', + name: 'useWorkflowTimezone', + type: 'boolean', + default: false, + description: "Whether to use the workflow timezone set in node's settings rather than UTC", +}; const descriptionV2: INodeTypeDescription = { displayName: 'n8n Form Trigger', name: 'formTrigger', icon: 'file:form.svg', group: ['trigger'], - version: 2, - description: 'Runs the flow when an n8n generated webform is submitted', + version: [2, 2.1, 2.2], + description: 'Generate webforms in n8n and pass their responses to the workflow', defaults: { - name: 'n8n Form Trigger', + name: 'On form submission', }, - // eslint-disable-next-line n8n-nodes-base/node-class-description-inputs-wrong-regular-node + inputs: [], - outputs: ['main'], + outputs: [NodeConnectionType.Main], webhooks: [ { name: 'setup', httpMethod: 'GET', responseMode: 'onReceived', isFullPath: true, - path: '={{$parameter["path"]}}', + path: '={{ $parameter["path"] || $parameter["options"]?.path || $webhookId }}', ndvHideUrl: true, isForm: true, }, @@ -46,7 +59,7 @@ const descriptionV2: INodeTypeDescription = { responseMode: '={{$parameter["responseMode"]}}', responseData: '={{$parameter["responseMode"] === "lastNode" ? "noData" : undefined}}', isFullPath: true, - path: '={{$parameter["path"]}}', + path: '={{ $parameter["path"] || $parameter["options"]?.path || $webhookId }}', ndvHideMethod: true, isForm: true, }, @@ -54,12 +67,47 @@ const descriptionV2: INodeTypeDescription = { eventTriggerDescription: 'Waiting for you to submit the form', activationMessage: 'You can now make calls to your production Form URL.', triggerPanel: formTriggerPanel, + credentials: [ + { + // eslint-disable-next-line n8n-nodes-base/node-class-description-credentials-name-unsuffixed + name: 'httpBasicAuth', + required: true, + displayOptions: { + show: { + [FORM_TRIGGER_AUTHENTICATION_PROPERTY]: ['basicAuth'], + }, + }, + }, + ], properties: [ - webhookPath, + { + displayName: 'Authentication', + name: FORM_TRIGGER_AUTHENTICATION_PROPERTY, + type: 'options', + options: [ + { + name: 'Basic Auth', + value: 'basicAuth', + }, + { + name: 'None', + value: 'none', + }, + ], + default: 'none', + }, + { ...webhookPath, displayOptions: { show: { '@version': [{ _cnd: { lte: 2.1 } }] } } }, formTitle, formDescription, formFields, - formRespondMode, + { ...formRespondMode, displayOptions: { show: { '@version': [{ _cnd: { lte: 2.1 } }] } } }, + { + ...formRespondMode, + options: (formRespondMode.options as INodePropertyOptions[])?.filter( + (option) => option.value !== 'responseNode', + ), + displayOptions: { show: { '@version': [{ _cnd: { gte: 2.2 } }] } }, + }, { displayName: "In the 'Respond to Webhook' node, select 'Respond With JSON' and set the formSubmittedText key to display a custom response in the form, or the redirectURL key to redirect users to a URL", @@ -70,21 +118,32 @@ const descriptionV2: INodeTypeDescription = { }, default: '', }, + // notice would be shown if no Form node was connected to trigger + { + displayName: 'Build multi-step forms by adding a form page later in your workflow', + name: ADD_FORM_NOTICE, + type: 'notice', + default: '', + }, { displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, options: [ + appendAttributionToForm, { - // eslint-disable-next-line n8n-nodes-base/node-param-display-name-miscased - displayName: 'Append n8n Attribution', - name: 'appendAttribution', - type: 'boolean', - default: true, - description: - 'Whether to include the link “Form automated with n8n” at the bottom of the form', + displayName: 'Button Label', + description: 'The label of the submit button in the form', + name: 'buttonLabel', + type: 'string', + default: 'Submit', + }, + { + ...webhookPath, + required: false, + displayOptions: { show: { '@version': [{ _cnd: { gte: 2.2 } }] } }, }, { ...respondWithOptions, @@ -94,6 +153,33 @@ const descriptionV2: INodeTypeDescription = { }, }, }, + { + displayName: 'Ignore Bots', + name: 'ignoreBots', + type: 'boolean', + default: false, + description: 'Whether to ignore requests from bots like link previewers and web crawlers', + }, + { + ...useWorkflowTimezone, + default: false, + description: "Whether to use the workflow timezone in 'submittedAt' field or UTC", + displayOptions: { + show: { + '@version': [2], + }, + }, + }, + { + ...useWorkflowTimezone, + default: true, + description: "Whether to use the workflow timezone in 'submittedAt' field or UTC", + displayOptions: { + show: { + '@version': [{ _cnd: { gt: 2 } }], + }, + }, + }, ], }, ], diff --git a/packages/nodes-base/nodes/FormIo/FormIoTrigger.node.json b/packages/nodes-base/nodes/FormIo/FormIoTrigger.node.json index 81ea12cfed..3176064058 100644 --- a/packages/nodes-base/nodes/FormIo/FormIoTrigger.node.json +++ b/packages/nodes-base/nodes/FormIo/FormIoTrigger.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/formIoTrigger" + "url": "https://docs.n8n.io/integrations/builtin/credentials/formIoTrigger/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/FormIo/FormIoTrigger.node.ts b/packages/nodes-base/nodes/FormIo/FormIoTrigger.node.ts index 19f86791a5..acde022d5c 100644 --- a/packages/nodes-base/nodes/FormIo/FormIoTrigger.node.ts +++ b/packages/nodes-base/nodes/FormIo/FormIoTrigger.node.ts @@ -1,12 +1,13 @@ -import type { - IDataObject, - IHookFunctions, - IWebhookFunctions, - ILoadOptionsFunctions, - INodePropertyOptions, - INodeType, - INodeTypeDescription, - IWebhookResponseData, +import { + type IDataObject, + type IHookFunctions, + type IWebhookFunctions, + type ILoadOptionsFunctions, + type INodePropertyOptions, + type INodeType, + type INodeTypeDescription, + type IWebhookResponseData, + NodeConnectionType, } from 'n8n-workflow'; import { formIoApiRequest } from './GenericFunctions'; @@ -24,7 +25,7 @@ export class FormIoTrigger implements INodeType { name: 'Form.io Trigger', }, inputs: [], - outputs: ['main'], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'formIoApi', @@ -50,7 +51,7 @@ export class FormIoTrigger implements INodeType { required: true, default: '', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', }, { displayName: 'Form Name or ID', @@ -63,7 +64,7 @@ export class FormIoTrigger implements INodeType { required: true, default: '', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', }, { displayName: 'Trigger Events', diff --git a/packages/nodes-base/nodes/FormIo/GenericFunctions.ts b/packages/nodes-base/nodes/FormIo/GenericFunctions.ts index 52dfbf944e..9b782dac76 100644 --- a/packages/nodes-base/nodes/FormIo/GenericFunctions.ts +++ b/packages/nodes-base/nodes/FormIo/GenericFunctions.ts @@ -61,7 +61,7 @@ export async function formIoApiRequest( body = {}, qs = {}, ): Promise { - const credentials = (await this.getCredentials('formIoApi')) as unknown as IFormIoCredentials; + const credentials = await this.getCredentials('formIoApi'); const token = await getToken.call(this, credentials); diff --git a/packages/nodes-base/nodes/Formstack/FormstackTrigger.node.json b/packages/nodes-base/nodes/Formstack/FormstackTrigger.node.json index a5d8bb738d..a33160ff63 100644 --- a/packages/nodes-base/nodes/Formstack/FormstackTrigger.node.json +++ b/packages/nodes-base/nodes/Formstack/FormstackTrigger.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/formstackTrigger" + "url": "https://docs.n8n.io/integrations/builtin/credentials/formstackTrigger/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Formstack/FormstackTrigger.node.ts b/packages/nodes-base/nodes/Formstack/FormstackTrigger.node.ts index 055b259312..988c93b147 100644 --- a/packages/nodes-base/nodes/Formstack/FormstackTrigger.node.ts +++ b/packages/nodes-base/nodes/Formstack/FormstackTrigger.node.ts @@ -6,6 +6,7 @@ import type { INodeTypeDescription, IWebhookResponseData, } from 'n8n-workflow'; +import { NodeConnectionType } from 'n8n-workflow'; import type { IFormstackWebhookResponseBody } from './GenericFunctions'; import { apiRequest, getForms } from './GenericFunctions'; @@ -23,7 +24,7 @@ export class FormstackTrigger implements INodeType { name: 'Formstack Trigger', }, inputs: [], - outputs: ['main'], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'formstackApi', @@ -79,7 +80,7 @@ export class FormstackTrigger implements INodeType { default: '', required: true, description: - 'The Formstack form to monitor for new submissions. Choose from the list, or specify an ID using an expression.', + 'The Formstack form to monitor for new submissions. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Simplify', diff --git a/packages/nodes-base/nodes/Formstack/GenericFunctions.ts b/packages/nodes-base/nodes/Formstack/GenericFunctions.ts index fe53058349..2637cedecf 100644 --- a/packages/nodes-base/nodes/Formstack/GenericFunctions.ts +++ b/packages/nodes-base/nodes/Formstack/GenericFunctions.ts @@ -73,7 +73,7 @@ export async function apiRequest( try { if (authenticationMethod === 'accessToken') { - const credentials = (await this.getCredentials('formstackApi')) as IDataObject; + const credentials = await this.getCredentials<{ accessToken: string }>('formstackApi'); options.headers!.Authorization = `Bearer ${credentials.accessToken}`; return await this.helpers.request(options); diff --git a/packages/nodes-base/nodes/Freshdesk/Freshdesk.node.json b/packages/nodes-base/nodes/Freshdesk/Freshdesk.node.json index c6e8de58cb..4255f90a00 100644 --- a/packages/nodes-base/nodes/Freshdesk/Freshdesk.node.json +++ b/packages/nodes-base/nodes/Freshdesk/Freshdesk.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/freshdesk" + "url": "https://docs.n8n.io/integrations/builtin/credentials/freshdesk/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Freshdesk/Freshdesk.node.ts b/packages/nodes-base/nodes/Freshdesk/Freshdesk.node.ts index 85ca020531..3f1c7d7332 100644 --- a/packages/nodes-base/nodes/Freshdesk/Freshdesk.node.ts +++ b/packages/nodes-base/nodes/Freshdesk/Freshdesk.node.ts @@ -7,7 +7,7 @@ import type { INodeType, INodeTypeDescription, } from 'n8n-workflow'; -import { NodeOperationError } from 'n8n-workflow'; +import { NodeConnectionType, NodeOperationError } from 'n8n-workflow'; import { capitalize, @@ -83,8 +83,8 @@ export class Freshdesk implements INodeType { defaults: { name: 'Freshdesk', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'freshdeskApi', @@ -347,7 +347,7 @@ export class Freshdesk implements INodeType { displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, displayOptions: { show: { @@ -365,7 +365,7 @@ export class Freshdesk implements INodeType { loadOptionsMethod: 'getAgents', }, description: - 'ID of the agent to whom the ticket has been assigned. Choose from the list, or specify an ID using an expression.', + 'ID of the agent to whom the ticket has been assigned. Choose from the list, or specify an ID using an expression.', }, { displayName: 'CC Emails', @@ -384,7 +384,7 @@ export class Freshdesk implements INodeType { loadOptionsMethod: 'getCompanies', }, description: - 'Company ID of the requester. This attribute can only be set if the Multiple Companies feature is enabled (Estate plan and above). Choose from the list, or specify an ID using an expression.', + 'Company ID of the requester. This attribute can only be set if the Multiple Companies feature is enabled (Estate plan and above). Choose from the list, or specify an ID using an expression.', }, { displayName: 'Description', @@ -427,7 +427,7 @@ export class Freshdesk implements INodeType { loadOptionsMethod: 'getGroups', }, description: - 'ID of the group to which the ticket has been assigned. The default value is the ID of the group that is associated with the given email_config_id. Choose from the list, or specify an ID using an expression.', + 'ID of the group to which the ticket has been assigned. The default value is the ID of the group that is associated with the given email_config_id. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Name', @@ -446,7 +446,7 @@ export class Freshdesk implements INodeType { loadOptionsMethod: 'getProducts', }, description: - 'ID of the product to which the ticket is associated. It will be ignored if the email_config_id attribute is set in the request. Choose from the list, or specify an ID using an expression.', + 'ID of the product to which the ticket is associated. It will be ignored if the email_config_id attribute is set in the request. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Subject', @@ -604,7 +604,7 @@ export class Freshdesk implements INodeType { loadOptionsMethod: 'getAgents', }, description: - 'ID of the agent to whom the ticket has been assigned. Choose from the list, or specify an ID using an expression.', + 'ID of the agent to whom the ticket has been assigned. Choose from the list, or specify an ID using an expression.', }, { displayName: 'CC Emails', @@ -623,7 +623,7 @@ export class Freshdesk implements INodeType { loadOptionsMethod: 'getCompanies', }, description: - 'Company ID of the requester. This attribute can only be set if the Multiple Companies feature is enabled (Estate plan and above). Choose from the list, or specify an ID using an expression.', + 'Company ID of the requester. This attribute can only be set if the Multiple Companies feature is enabled (Estate plan and above). Choose from the list, or specify an ID using an expression.', }, { displayName: 'Due By', @@ -656,7 +656,7 @@ export class Freshdesk implements INodeType { loadOptionsMethod: 'getGroups', }, description: - 'ID of the group to which the ticket has been assigned. The default value is the ID of the group that is associated with the given email_config_id. Choose from the list, or specify an ID using an expression.', + 'ID of the group to which the ticket has been assigned. The default value is the ID of the group that is associated with the given email_config_id. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Name', @@ -675,7 +675,7 @@ export class Freshdesk implements INodeType { loadOptionsMethod: 'getProducts', }, description: - 'ID of the product to which the ticket is associated. It will be ignored if the email_config_id attribute is set in the request. Choose from the list, or specify an ID using an expression.', + 'ID of the product to which the ticket is associated. It will be ignored if the email_config_id attribute is set in the request. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Priority', @@ -901,7 +901,7 @@ export class Freshdesk implements INodeType { displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, displayOptions: { show: { @@ -1409,7 +1409,7 @@ export class Freshdesk implements INodeType { ); returnData.push(...executionData); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { const executionErrorData = this.helpers.constructExecutionMetaData( this.helpers.returnJsonArray({ error: error.message }), { itemData: { item: i } }, diff --git a/packages/nodes-base/nodes/Freshservice/Freshservice.node.json b/packages/nodes-base/nodes/Freshservice/Freshservice.node.json index f6b1e89cf8..04f7aadc04 100644 --- a/packages/nodes-base/nodes/Freshservice/Freshservice.node.json +++ b/packages/nodes-base/nodes/Freshservice/Freshservice.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/freshservice" + "url": "https://docs.n8n.io/integrations/builtin/credentials/freshservice/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Freshservice/Freshservice.node.ts b/packages/nodes-base/nodes/Freshservice/Freshservice.node.ts index 731659de78..3a1fafc6e0 100644 --- a/packages/nodes-base/nodes/Freshservice/Freshservice.node.ts +++ b/packages/nodes-base/nodes/Freshservice/Freshservice.node.ts @@ -7,6 +7,7 @@ import type { INodeType, INodeTypeDescription, } from 'n8n-workflow'; +import { NodeConnectionType } from 'n8n-workflow'; import { tz } from 'moment-timezone'; import { @@ -70,8 +71,8 @@ export class Freshservice implements INodeType { defaults: { name: 'Freshservice', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'freshserviceApi', @@ -1371,7 +1372,7 @@ export class Freshservice implements INodeType { responseData = responseData[special[resource]] ?? responseData[resource]; } } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { const executionErrorData = this.helpers.constructExecutionMetaData( this.helpers.returnJsonArray({ error: error.message }), { itemData: { item: i } }, diff --git a/packages/nodes-base/nodes/Freshservice/descriptions/AgentDescription.ts b/packages/nodes-base/nodes/Freshservice/descriptions/AgentDescription.ts index 9e9f152d3b..6ec3d0d698 100644 --- a/packages/nodes-base/nodes/Freshservice/descriptions/AgentDescription.ts +++ b/packages/nodes-base/nodes/Freshservice/descriptions/AgentDescription.ts @@ -106,7 +106,7 @@ export const agentFields: INodeProperties[] = [ displayName: 'Role Name or ID', name: 'role', description: - 'Name of the role to assign to the agent. Choose from the list, or specify an ID using an expression.', + 'Name of the role to assign to the agent. Choose from the list, or specify an ID using an expression.', type: 'options', typeOptions: { loadOptionsMethod: 'getAgentRoles', @@ -144,7 +144,7 @@ export const agentFields: INodeProperties[] = [ displayName: 'Group Names or IDs', name: 'groups', description: - 'Groups in which the permissions granted by the role apply. Required only when Scope is Specified Groups - ignored otherwise. Choose from the list or specify an ID using an expression. Choose from the list, or specify IDs using an expression.', + 'Groups in which the permissions granted by the role apply. Required only when Scope is Specified Groups - ignored otherwise. Choose from the list or specify an ID using an expression. Choose from the list, or specify IDs using an expression.', type: 'multiOptions', typeOptions: { loadOptionsMethod: 'getAgentGroups', @@ -186,7 +186,7 @@ export const agentFields: INodeProperties[] = [ type: 'multiOptions', default: [], description: - 'IDs of the departments to which the agent belongs. Choose from the list or specify an ID using an expression. Choose from the list, or specify IDs using an expression.', + 'IDs of the departments to which the agent belongs. Choose from the list or specify an ID using an expression. Choose from the list, or specify IDs using an expression.', typeOptions: { loadOptionsMethod: 'getDepartments', }, @@ -216,7 +216,7 @@ export const agentFields: INodeProperties[] = [ type: 'options', default: '', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getLocations', }, @@ -227,7 +227,7 @@ export const agentFields: INodeProperties[] = [ type: 'multiOptions', default: [], description: - 'Comma-separated IDs of the groups that the agent is a member of. Choose from the list or specify an ID using an expression. Choose from the list, or specify IDs using an expression.', + 'Comma-separated IDs of the groups that the agent is a member of. Choose from the list or specify an ID using an expression. Choose from the list, or specify IDs using an expression.', typeOptions: { loadOptionsMethod: 'getAgentGroups', }, @@ -244,7 +244,7 @@ export const agentFields: INodeProperties[] = [ type: 'multiOptions', default: [], description: - 'Comma-separated IDs of the groups that the agent is an observer of. Choose from the list or specify an ID using an expression. Choose from the list, or specify IDs using an expression.', + 'Comma-separated IDs of the groups that the agent is an observer of. Choose from the list or specify an ID using an expression. Choose from the list, or specify IDs using an expression.', typeOptions: { loadOptionsMethod: 'getAgentGroups', }, @@ -396,7 +396,7 @@ export const agentFields: INodeProperties[] = [ type: 'options', default: '', description: - 'ID of the department to which the agent belongs. Choose from the list, or specify an ID using an expression.', + 'ID of the department to which the agent belongs. Choose from the list, or specify an ID using an expression.', typeOptions: { loadOptionsMethod: 'getDepartments', }, @@ -439,7 +439,7 @@ export const agentFields: INodeProperties[] = [ type: 'options', default: '', description: - 'Choose from the list or specify an ID. Choose from the list, or specify an ID using an expression.', + 'Choose from the list or specify an ID. Choose from the list, or specify an ID using an expression.', typeOptions: { loadOptionsMethod: 'getLocations', }, @@ -507,7 +507,7 @@ export const agentFields: INodeProperties[] = [ type: 'multiOptions', default: [], description: - 'IDs of the departments to which the agent belongs. Choose from the list or specify an ID using an expression. Choose from the list, or specify IDs using an expression.', + 'IDs of the departments to which the agent belongs. Choose from the list or specify an ID using an expression. Choose from the list, or specify IDs using an expression.', typeOptions: { loadOptionsMethod: 'getDepartments', }, @@ -550,7 +550,7 @@ export const agentFields: INodeProperties[] = [ type: 'options', default: '', description: - 'Choose from the list or specify an ID. Choose from the list, or specify an ID using an expression.', + 'Choose from the list or specify an ID. Choose from the list, or specify an ID using an expression.', typeOptions: { loadOptionsMethod: 'getLocations', }, @@ -561,7 +561,7 @@ export const agentFields: INodeProperties[] = [ type: 'multiOptions', default: [], description: - 'Comma-separated IDs of the groups that the agent is a member of. Choose from the list or specify an ID using an expression. Choose from the list, or specify IDs using an expression.', + 'Comma-separated IDs of the groups that the agent is a member of. Choose from the list or specify an ID using an expression. Choose from the list, or specify IDs using an expression.', typeOptions: { loadOptionsMethod: 'getAgentGroups', }, @@ -578,7 +578,7 @@ export const agentFields: INodeProperties[] = [ type: 'multiOptions', default: [], description: - 'Comma-separated IDs of the groups that the agent is an observer of. Choose from the list or specify an ID using an expression. Choose from the list, or specify IDs using an expression.', + 'Comma-separated IDs of the groups that the agent is an observer of. Choose from the list or specify an ID using an expression. Choose from the list, or specify IDs using an expression.', typeOptions: { loadOptionsMethod: 'getAgentGroups', }, diff --git a/packages/nodes-base/nodes/Freshservice/descriptions/AgentGroupDescription.ts b/packages/nodes-base/nodes/Freshservice/descriptions/AgentGroupDescription.ts index 19986f7f4e..bc87799caa 100644 --- a/packages/nodes-base/nodes/Freshservice/descriptions/AgentGroupDescription.ts +++ b/packages/nodes-base/nodes/Freshservice/descriptions/AgentGroupDescription.ts @@ -92,7 +92,7 @@ export const agentGroupFields: INodeProperties[] = [ loadOptionsMethod: 'getAgents', }, description: - 'ID of the user to whom an escalation email is sent if a ticket in this group is unassigned. Choose from the list, or specify an ID using an expression.', + 'ID of the user to whom an escalation email is sent if a ticket in this group is unassigned. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Member Names or IDs', @@ -100,7 +100,7 @@ export const agentGroupFields: INodeProperties[] = [ type: 'multiOptions', default: [], description: - 'Comma-separated IDs of agents who are members of this group. Choose from the list or specify an ID using an expression. Choose from the list, or specify IDs using an expression.', + 'Comma-separated IDs of agents who are members of this group. Choose from the list or specify an ID using an expression. Choose from the list, or specify IDs using an expression.', typeOptions: { loadOptionsMethod: 'getAgents', }, @@ -111,7 +111,7 @@ export const agentGroupFields: INodeProperties[] = [ type: 'multiOptions', default: [], description: - 'Comma-separated agent IDs who are observers of this group. Choose from the list or specify an ID using an expression. Choose from the list, or specify IDs using an expression.', + 'Comma-separated agent IDs who are observers of this group. Choose from the list or specify an ID using an expression. Choose from the list, or specify IDs using an expression.', typeOptions: { loadOptionsMethod: 'getAgents', }, @@ -273,7 +273,7 @@ export const agentGroupFields: INodeProperties[] = [ type: 'options', default: '', description: - 'ID of the agent to whom an escalation email is sent if a ticket in this group is unassigned. Choose from the list, or specify an ID using an expression.', + 'ID of the agent to whom an escalation email is sent if a ticket in this group is unassigned. Choose from the list, or specify an ID using an expression.', typeOptions: { loadOptionsMethod: 'getAgents', }, @@ -284,7 +284,7 @@ export const agentGroupFields: INodeProperties[] = [ type: 'multiOptions', default: [], description: - 'Comma-separated IDs of agents who are members of this group. Choose from the list or specify an ID using an expression. Choose from the list, or specify IDs using an expression.', + 'Comma-separated IDs of agents who are members of this group. Choose from the list or specify an ID using an expression. Choose from the list, or specify IDs using an expression.', typeOptions: { loadOptionsMethod: 'getAgents', }, @@ -301,7 +301,7 @@ export const agentGroupFields: INodeProperties[] = [ type: 'multiOptions', default: [], description: - 'Comma-separated agent user IDs who are observers of this group. Choose from the list or specify an ID using an expression. Choose from the list, or specify IDs using an expression.', + 'Comma-separated agent user IDs who are observers of this group. Choose from the list or specify an ID using an expression. Choose from the list, or specify IDs using an expression.', typeOptions: { loadOptionsMethod: 'getAgents', }, diff --git a/packages/nodes-base/nodes/Freshservice/descriptions/AnnouncementDescription.ts b/packages/nodes-base/nodes/Freshservice/descriptions/AnnouncementDescription.ts index 9a98b9005e..18bb44f9dd 100644 --- a/packages/nodes-base/nodes/Freshservice/descriptions/AnnouncementDescription.ts +++ b/packages/nodes-base/nodes/Freshservice/descriptions/AnnouncementDescription.ts @@ -146,7 +146,7 @@ export const announcementFields: INodeProperties[] = [ type: 'multiOptions', default: [], description: - 'Comma-separated IDs of departments that may view this announcement. Choose from the list or specify an ID using an expression. Choose from the list, or specify IDs using an expression.', + 'Comma-separated IDs of departments that may view this announcement. Choose from the list or specify an ID using an expression. Choose from the list, or specify IDs using an expression.', typeOptions: { loadOptionsMethod: 'getDepartments', }, @@ -289,7 +289,7 @@ export const announcementFields: INodeProperties[] = [ type: 'multiOptions', default: [], description: - 'Comma-separated IDs of departments that may view this announcement. Choose from the list or specify an ID using an expression. Choose from the list, or specify IDs using an expression.', + 'Comma-separated IDs of departments that may view this announcement. Choose from the list or specify an ID using an expression. Choose from the list, or specify IDs using an expression.', typeOptions: { loadOptionsMethod: 'getDepartments', }, diff --git a/packages/nodes-base/nodes/Freshservice/descriptions/AssetDescription.ts b/packages/nodes-base/nodes/Freshservice/descriptions/AssetDescription.ts index 318765d45d..6210578265 100644 --- a/packages/nodes-base/nodes/Freshservice/descriptions/AssetDescription.ts +++ b/packages/nodes-base/nodes/Freshservice/descriptions/AssetDescription.ts @@ -69,7 +69,7 @@ export const assetFields: INodeProperties[] = [ name: 'assetTypeId', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', required: true, default: '', typeOptions: { @@ -112,7 +112,7 @@ export const assetFields: INodeProperties[] = [ }, default: '', description: - 'The ID of the field to add custom field to. Choose from the list, or specify an ID using an expression.', + 'The ID of the field to add custom field to. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Value', @@ -213,7 +213,7 @@ export const assetFields: INodeProperties[] = [ type: 'options', default: '', description: - 'ID of the agent by whom the asset is managed. Choose from the list, or specify an ID using an expression.', + 'ID of the agent by whom the asset is managed. Choose from the list, or specify an ID using an expression.', typeOptions: { loadOptionsMethod: 'getAgents', }, @@ -231,7 +231,7 @@ export const assetFields: INodeProperties[] = [ type: 'options', default: '', description: - 'ID of the asset type to filter by. Choose from the list, or specify an ID using an expression.', + 'ID of the asset type to filter by. Choose from the list, or specify an ID using an expression.', typeOptions: { loadOptionsMethod: 'getAssetTypes', }, @@ -242,7 +242,7 @@ export const assetFields: INodeProperties[] = [ type: 'options', default: '', description: - 'ID of the department to which the asset belongs. Choose from the list, or specify an ID using an expression.', + 'ID of the department to which the asset belongs. Choose from the list, or specify an ID using an expression.', typeOptions: { loadOptionsMethod: 'getDepartments', }, @@ -253,7 +253,7 @@ export const assetFields: INodeProperties[] = [ type: 'options', default: '', description: - 'ID of the location to filter by. Choose from the list, or specify an ID using an expression.', + 'ID of the location to filter by. Choose from the list, or specify an ID using an expression.', typeOptions: { loadOptionsMethod: 'getLocations', }, @@ -315,7 +315,7 @@ export const assetFields: INodeProperties[] = [ }, default: '', description: - 'The ID of the field to add custom field to. Choose from the list, or specify an ID using an expression.', + 'The ID of the field to add custom field to. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Value', diff --git a/packages/nodes-base/nodes/Freshservice/descriptions/AssetTypeDescription.ts b/packages/nodes-base/nodes/Freshservice/descriptions/AssetTypeDescription.ts index 903f8c53a6..061f690751 100644 --- a/packages/nodes-base/nodes/Freshservice/descriptions/AssetTypeDescription.ts +++ b/packages/nodes-base/nodes/Freshservice/descriptions/AssetTypeDescription.ts @@ -87,7 +87,7 @@ export const assetTypeFields: INodeProperties[] = [ displayName: 'Parent Asset Type Name or ID', name: 'parent_asset_type_id', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', type: 'options', default: '', typeOptions: { diff --git a/packages/nodes-base/nodes/Freshservice/descriptions/ChangeDescription.ts b/packages/nodes-base/nodes/Freshservice/descriptions/ChangeDescription.ts index 5753f86106..e04352def2 100644 --- a/packages/nodes-base/nodes/Freshservice/descriptions/ChangeDescription.ts +++ b/packages/nodes-base/nodes/Freshservice/descriptions/ChangeDescription.ts @@ -56,7 +56,7 @@ export const changeFields: INodeProperties[] = [ name: 'requesterId', // eslint-disable-next-line n8n-nodes-base/node-param-description-wrong-for-dynamic-options description: - 'ID of the requester of the change. Choose from the list or specify an ID. You can also specify the ID using an expression.', + 'ID of the requester of the change. Choose from the list or specify an ID. You can also specify the ID using an expression.', type: 'options', required: true, default: '', @@ -128,7 +128,7 @@ export const changeFields: INodeProperties[] = [ type: 'options', default: '', description: - 'ID of the agent to whom the change is assigned. Choose from the list, or specify an ID using an expression.', + 'ID of the agent to whom the change is assigned. Choose from the list, or specify an ID using an expression.', typeOptions: { loadOptionsMethod: 'getAgents', }, @@ -163,7 +163,7 @@ export const changeFields: INodeProperties[] = [ type: 'options', default: '', description: - 'ID of the department requesting the change. Choose from the list, or specify an ID using an expression.', + 'ID of the department requesting the change. Choose from the list, or specify an ID using an expression.', typeOptions: { loadOptionsMethod: 'getDepartments', }, @@ -181,7 +181,7 @@ export const changeFields: INodeProperties[] = [ type: 'options', default: '', description: - 'ID of the agent group to which the change is assigned. Choose from the list, or specify an ID using an expression.', + 'ID of the agent group to which the change is assigned. Choose from the list, or specify an ID using an expression.', typeOptions: { loadOptionsMethod: 'getAgentGroups', }, @@ -467,7 +467,7 @@ export const changeFields: INodeProperties[] = [ type: 'options', default: '', description: - 'ID of the agent to whom the change is assigned. Choose from the list, or specify an ID using an expression.', + 'ID of the agent to whom the change is assigned. Choose from the list, or specify an ID using an expression.', typeOptions: { loadOptionsMethod: 'getAgents', }, @@ -502,7 +502,7 @@ export const changeFields: INodeProperties[] = [ type: 'options', default: '', description: - 'ID of the department requesting the change. Choose from the list, or specify an ID using an expression.', + 'ID of the department requesting the change. Choose from the list, or specify an ID using an expression.', typeOptions: { loadOptionsMethod: 'getDepartments', }, @@ -520,7 +520,7 @@ export const changeFields: INodeProperties[] = [ type: 'options', default: '', description: - 'ID of the agent group to which the change is assigned. Choose from the list, or specify an ID using an expression.', + 'ID of the agent group to which the change is assigned. Choose from the list, or specify an ID using an expression.', typeOptions: { loadOptionsMethod: 'getAgentGroups', }, @@ -576,7 +576,7 @@ export const changeFields: INodeProperties[] = [ type: 'options', default: '', description: - 'ID of the requester of the change. Choose from the list, or specify an ID using an expression.', + 'ID of the requester of the change. Choose from the list, or specify an ID using an expression.', typeOptions: { loadOptionsMethod: 'getRequesters', }, diff --git a/packages/nodes-base/nodes/Freshservice/descriptions/ProblemDescription.ts b/packages/nodes-base/nodes/Freshservice/descriptions/ProblemDescription.ts index 92cf878901..1f51e7a4c7 100644 --- a/packages/nodes-base/nodes/Freshservice/descriptions/ProblemDescription.ts +++ b/packages/nodes-base/nodes/Freshservice/descriptions/ProblemDescription.ts @@ -68,7 +68,7 @@ export const problemFields: INodeProperties[] = [ displayName: 'Requester Name or ID', name: 'requesterId', description: - 'ID of the initiator of the problem. Choose from the list, or specify an ID using an expression.', + 'ID of the initiator of the problem. Choose from the list, or specify an ID using an expression.', type: 'options', required: true, default: '', @@ -114,7 +114,7 @@ export const problemFields: INodeProperties[] = [ type: 'options', default: '', description: - 'ID of the agent to whom the problem is assigned. Choose from the list, or specify an ID using an expression.', + 'ID of the agent to whom the problem is assigned. Choose from the list, or specify an ID using an expression.', typeOptions: { loadOptionsMethod: 'getAgents', }, @@ -125,7 +125,7 @@ export const problemFields: INodeProperties[] = [ type: 'options', default: '', description: - 'ID of the department initiating the problem. Choose from the list, or specify an ID using an expression.', + 'ID of the department initiating the problem. Choose from the list, or specify an ID using an expression.', typeOptions: { loadOptionsMethod: 'getDepartments', }, @@ -143,7 +143,7 @@ export const problemFields: INodeProperties[] = [ type: 'options', default: '', description: - 'ID of the agent group to which the problem is assigned. Choose from the list, or specify an ID using an expression.', + 'ID of the agent group to which the problem is assigned. Choose from the list, or specify an ID using an expression.', typeOptions: { loadOptionsMethod: 'getAgentGroups', }, @@ -321,7 +321,7 @@ export const problemFields: INodeProperties[] = [ type: 'options', default: '', description: - 'ID of the agent to whom the problem is assigned. Choose from the list, or specify an ID using an expression.', + 'ID of the agent to whom the problem is assigned. Choose from the list, or specify an ID using an expression.', typeOptions: { loadOptionsMethod: 'getAgents', }, @@ -332,7 +332,7 @@ export const problemFields: INodeProperties[] = [ type: 'options', default: '', description: - 'ID of the department initiating the problem. Choose from the list, or specify an ID using an expression.', + 'ID of the department initiating the problem. Choose from the list, or specify an ID using an expression.', typeOptions: { loadOptionsMethod: 'getDepartments', }, @@ -357,7 +357,7 @@ export const problemFields: INodeProperties[] = [ type: 'options', default: '', description: - 'ID of the agent group to which the problem is assigned. Choose from the list, or specify an ID using an expression.', + 'ID of the agent group to which the problem is assigned. Choose from the list, or specify an ID using an expression.', typeOptions: { loadOptionsMethod: 'getAgentGroups', }, @@ -412,7 +412,7 @@ export const problemFields: INodeProperties[] = [ type: 'options', default: '', description: - 'ID of the initiator of the problem. Choose from the list, or specify an ID using an expression.', + 'ID of the initiator of the problem. Choose from the list, or specify an ID using an expression.', typeOptions: { loadOptionsMethod: 'getRequesters', }, diff --git a/packages/nodes-base/nodes/Freshservice/descriptions/ProductDescription.ts b/packages/nodes-base/nodes/Freshservice/descriptions/ProductDescription.ts index e5f351cd89..41a561e2d9 100644 --- a/packages/nodes-base/nodes/Freshservice/descriptions/ProductDescription.ts +++ b/packages/nodes-base/nodes/Freshservice/descriptions/ProductDescription.ts @@ -56,7 +56,7 @@ export const productFields: INodeProperties[] = [ name: 'assetTypeId', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', required: true, default: '', typeOptions: { @@ -256,7 +256,7 @@ export const productFields: INodeProperties[] = [ name: 'asset_type_id', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', default: '', typeOptions: { loadOptionsMethod: 'getAssetTypes', diff --git a/packages/nodes-base/nodes/Freshservice/descriptions/ReleaseDescription.ts b/packages/nodes-base/nodes/Freshservice/descriptions/ReleaseDescription.ts index 60de514d0f..c4f8021d54 100644 --- a/packages/nodes-base/nodes/Freshservice/descriptions/ReleaseDescription.ts +++ b/packages/nodes-base/nodes/Freshservice/descriptions/ReleaseDescription.ts @@ -204,7 +204,7 @@ export const releaseFields: INodeProperties[] = [ type: 'options', default: '', description: - 'ID of the department initiating the release. Choose from the list, or specify an ID using an expression.', + 'ID of the department initiating the release. Choose from the list, or specify an ID using an expression.', typeOptions: { loadOptionsMethod: 'getDepartments', }, @@ -222,7 +222,7 @@ export const releaseFields: INodeProperties[] = [ type: 'options', default: '', description: - 'ID of the agent group to which the release is assigned. Choose from the list, or specify an ID using an expression.', + 'ID of the agent group to which the release is assigned. Choose from the list, or specify an ID using an expression.', typeOptions: { loadOptionsMethod: 'getAgentGroups', }, @@ -336,7 +336,7 @@ export const releaseFields: INodeProperties[] = [ type: 'options', default: '', description: - 'ID of the department initiating the release. Choose from the list, or specify an ID using an expression.', + 'ID of the department initiating the release. Choose from the list, or specify an ID using an expression.', typeOptions: { loadOptionsMethod: 'getDepartments', }, @@ -354,7 +354,7 @@ export const releaseFields: INodeProperties[] = [ type: 'options', default: '', description: - 'ID of the agent group to which the release is assigned. Choose from the list, or specify an ID using an expression.', + 'ID of the agent group to which the release is assigned. Choose from the list, or specify an ID using an expression.', typeOptions: { loadOptionsMethod: 'getAgentGroups', }, diff --git a/packages/nodes-base/nodes/Freshservice/descriptions/RequesterDescription.ts b/packages/nodes-base/nodes/Freshservice/descriptions/RequesterDescription.ts index 6fed8d79b2..4a7bd830ef 100644 --- a/packages/nodes-base/nodes/Freshservice/descriptions/RequesterDescription.ts +++ b/packages/nodes-base/nodes/Freshservice/descriptions/RequesterDescription.ts @@ -108,7 +108,7 @@ export const requesterFields: INodeProperties[] = [ type: 'multiOptions', default: [], description: - 'Comma-separated IDs of the departments associated with the requester. Choose from the list or specify an ID using an expression. Choose from the list, or specify IDs using an expression.', + 'Comma-separated IDs of the departments associated with the requester. Choose from the list or specify an ID using an expression. Choose from the list, or specify IDs using an expression.', typeOptions: { loadOptionsMethod: 'getDepartments', }, @@ -136,7 +136,7 @@ export const requesterFields: INodeProperties[] = [ displayName: 'Location Name or ID', name: 'location_id', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', type: 'options', default: '', typeOptions: { @@ -267,7 +267,7 @@ export const requesterFields: INodeProperties[] = [ displayName: 'Department Name or ID', name: 'department_id', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', type: 'options', default: '', typeOptions: { @@ -304,7 +304,7 @@ export const requesterFields: INodeProperties[] = [ name: 'location_id', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', default: '', typeOptions: { loadOptionsMethod: 'getLocations', @@ -379,7 +379,7 @@ export const requesterFields: INodeProperties[] = [ type: 'multiOptions', default: [], description: - 'Comma-separated IDs of the departments associated with the requester. Choose from the list or specify an ID using an expression. Choose from the list, or specify IDs using an expression.', + 'Comma-separated IDs of the departments associated with the requester. Choose from the list or specify an ID using an expression. Choose from the list, or specify IDs using an expression.', typeOptions: { loadOptionsMethod: 'getDepartments', }, @@ -415,7 +415,7 @@ export const requesterFields: INodeProperties[] = [ type: 'options', default: '', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getLocations', }, diff --git a/packages/nodes-base/nodes/Freshservice/descriptions/TicketDescription.ts b/packages/nodes-base/nodes/Freshservice/descriptions/TicketDescription.ts index 96deb3e0db..9ea779e47a 100644 --- a/packages/nodes-base/nodes/Freshservice/descriptions/TicketDescription.ts +++ b/packages/nodes-base/nodes/Freshservice/descriptions/TicketDescription.ts @@ -177,7 +177,7 @@ export const ticketFields: INodeProperties[] = [ type: 'options', default: '', description: - 'ID of the department to which this ticket belongs. Choose from the list, or specify an ID using an expression.', + 'ID of the department to which this ticket belongs. Choose from the list, or specify an ID using an expression.', typeOptions: { loadOptionsMethod: 'getDepartments', }, @@ -188,7 +188,7 @@ export const ticketFields: INodeProperties[] = [ type: 'options', default: '', description: - 'ID of the group to which the ticket has been assigned. Choose from the list, or specify an ID using an expression.', + 'ID of the group to which the ticket has been assigned. Choose from the list, or specify an ID using an expression.', typeOptions: { loadOptionsMethod: 'getAgentGroups', }, @@ -225,7 +225,7 @@ export const ticketFields: INodeProperties[] = [ name: 'requester_id', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', default: '', typeOptions: { loadOptionsMethod: 'getRequesters', @@ -322,7 +322,7 @@ export const ticketFields: INodeProperties[] = [ type: 'options', default: '', description: - 'ID of the agent to whom the tickets have been assigned. Choose from the list, or specify an ID using an expression.', + 'ID of the agent to whom the tickets have been assigned. Choose from the list, or specify an ID using an expression.', typeOptions: { loadOptionsMethod: 'getAgents', }, @@ -333,7 +333,7 @@ export const ticketFields: INodeProperties[] = [ type: 'options', default: '', description: - 'ID of the group to which the tickets have been assigned. Choose from the list, or specify an ID using an expression.', + 'ID of the group to which the tickets have been assigned. Choose from the list, or specify an ID using an expression.', typeOptions: { loadOptionsMethod: 'getAgentGroups', }, @@ -459,7 +459,7 @@ export const ticketFields: INodeProperties[] = [ type: 'options', default: '', description: - 'ID of the department to which this ticket has been assigned. Choose from the list, or specify an ID using an expression.', + 'ID of the department to which this ticket has been assigned. Choose from the list, or specify an ID using an expression.', typeOptions: { loadOptionsMethod: 'getDepartments', }, @@ -485,7 +485,7 @@ export const ticketFields: INodeProperties[] = [ type: 'options', default: '', description: - 'ID of the group to which the ticket has been assigned. Choose from the list, or specify an ID using an expression.', + 'ID of the group to which the ticket has been assigned. Choose from the list, or specify an ID using an expression.', typeOptions: { loadOptionsMethod: 'getAgentGroups', }, diff --git a/packages/nodes-base/nodes/FreshworksCrm/FreshworksCrm.node.json b/packages/nodes-base/nodes/FreshworksCrm/FreshworksCrm.node.json index fa66068095..1af9ccfa9b 100644 --- a/packages/nodes-base/nodes/FreshworksCrm/FreshworksCrm.node.json +++ b/packages/nodes-base/nodes/FreshworksCrm/FreshworksCrm.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/freshworksCrm" + "url": "https://docs.n8n.io/integrations/builtin/credentials/freshworksCrm/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/FreshworksCrm/FreshworksCrm.node.ts b/packages/nodes-base/nodes/FreshworksCrm/FreshworksCrm.node.ts index 03cd77c550..c6e828ed29 100644 --- a/packages/nodes-base/nodes/FreshworksCrm/FreshworksCrm.node.ts +++ b/packages/nodes-base/nodes/FreshworksCrm/FreshworksCrm.node.ts @@ -1,10 +1,11 @@ -import type { - IExecuteFunctions, - IDataObject, - ILoadOptionsFunctions, - INodeExecutionData, - INodeType, - INodeTypeDescription, +import { + type IExecuteFunctions, + type IDataObject, + type ILoadOptionsFunctions, + type INodeExecutionData, + type INodeType, + type INodeTypeDescription, + NodeConnectionType, } from 'n8n-workflow'; import { tz } from 'moment-timezone'; @@ -51,8 +52,8 @@ export class FreshworksCrm implements INodeType { defaults: { name: 'Freshworks CRM', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'freshworksCrmApi', @@ -975,7 +976,7 @@ export class FreshworksCrm implements INodeType { } } } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { const executionErrorData = this.helpers.constructExecutionMetaData( this.helpers.returnJsonArray({ error: error.message }), { itemData: { item: i } }, diff --git a/packages/nodes-base/nodes/FreshworksCrm/GenericFunctions.ts b/packages/nodes-base/nodes/FreshworksCrm/GenericFunctions.ts index 5bcdafc5ae..0d9e7fad2c 100644 --- a/packages/nodes-base/nodes/FreshworksCrm/GenericFunctions.ts +++ b/packages/nodes-base/nodes/FreshworksCrm/GenericFunctions.ts @@ -23,7 +23,7 @@ export async function freshworksCrmApiRequest( body: IDataObject = {}, qs: IDataObject = {}, ) { - const { domain } = (await this.getCredentials('freshworksCrmApi')) as FreshworksCrmApiCredentials; + const { domain } = await this.getCredentials('freshworksCrmApi'); const options: IRequestOptions = { method, diff --git a/packages/nodes-base/nodes/FreshworksCrm/descriptions/AccountDescription.ts b/packages/nodes-base/nodes/FreshworksCrm/descriptions/AccountDescription.ts index 5d0bd71a18..e5591d7a1b 100644 --- a/packages/nodes-base/nodes/FreshworksCrm/descriptions/AccountDescription.ts +++ b/packages/nodes-base/nodes/FreshworksCrm/descriptions/AccountDescription.ts @@ -101,7 +101,7 @@ export const accountFields: INodeProperties[] = [ loadOptionsMethod: 'getBusinessTypes', }, description: - 'ID of the business that the account belongs to. Choose from the list, or specify an ID using an expression.', + 'ID of the business that the account belongs to. Choose from the list, or specify an ID using an expression.', }, { displayName: 'City', @@ -133,7 +133,7 @@ export const accountFields: INodeProperties[] = [ loadOptionsMethod: 'getIndustryTypes', }, description: - 'ID of the industry that the account belongs to. Choose from the list, or specify an ID using an expression.', + 'ID of the industry that the account belongs to. Choose from the list, or specify an ID using an expression.', }, { displayName: 'LinkedIn', @@ -158,7 +158,7 @@ export const accountFields: INodeProperties[] = [ loadOptionsMethod: 'getUsers', }, description: - 'ID of the user to whom the account is assigned. Choose from the list, or specify an ID using an expression.', + 'ID of the user to whom the account is assigned. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Parent Sales Account ID', @@ -190,7 +190,7 @@ export const accountFields: INodeProperties[] = [ loadOptionsMethod: 'getTerritories', }, description: - 'ID of the territory that the account belongs to. Choose from the list, or specify an ID using an expression.', + 'ID of the territory that the account belongs to. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Twitter', @@ -260,7 +260,7 @@ export const accountFields: INodeProperties[] = [ name: 'view', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', required: true, typeOptions: { loadOptionsMethod: 'getAccountViews', @@ -357,7 +357,7 @@ export const accountFields: INodeProperties[] = [ loadOptionsMethod: 'getBusinessTypes', }, description: - 'ID of the business that the account belongs to. Choose from the list, or specify an ID using an expression.', + 'ID of the business that the account belongs to. Choose from the list, or specify an ID using an expression.', }, { displayName: 'City', @@ -389,7 +389,7 @@ export const accountFields: INodeProperties[] = [ loadOptionsMethod: 'getIndustryTypes', }, description: - 'ID of the industry that the account belongs to. Choose from the list, or specify an ID using an expression.', + 'ID of the industry that the account belongs to. Choose from the list, or specify an ID using an expression.', }, { displayName: 'LinkedIn', @@ -421,7 +421,7 @@ export const accountFields: INodeProperties[] = [ loadOptionsMethod: 'getUsers', }, description: - 'ID of the user to whom the account is assigned. Choose from the list, or specify an ID using an expression.', + 'ID of the user to whom the account is assigned. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Parent Sales Account ID', @@ -453,7 +453,7 @@ export const accountFields: INodeProperties[] = [ loadOptionsMethod: 'getTerritories', }, description: - 'ID of the territory that the account belongs to. Choose from the list, or specify an ID using an expression.', + 'ID of the territory that the account belongs to. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Twitter', diff --git a/packages/nodes-base/nodes/FreshworksCrm/descriptions/AppointmentDescription.ts b/packages/nodes-base/nodes/FreshworksCrm/descriptions/AppointmentDescription.ts index 88cebf6d1d..65228c1c75 100644 --- a/packages/nodes-base/nodes/FreshworksCrm/descriptions/AppointmentDescription.ts +++ b/packages/nodes-base/nodes/FreshworksCrm/descriptions/AppointmentDescription.ts @@ -138,7 +138,7 @@ export const appointmentFields: INodeProperties[] = [ name: 'userId', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', displayOptions: { show: { type: ['user'], @@ -186,7 +186,7 @@ export const appointmentFields: INodeProperties[] = [ loadOptionsMethod: 'getUsers', }, description: - 'ID of the user who created the appointment. Choose from the list, or specify an ID using an expression.', + 'ID of the user who created the appointment. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Is All-Day', @@ -225,7 +225,7 @@ export const appointmentFields: INodeProperties[] = [ loadOptionsMethod: 'getOutcomes', }, description: - 'ID of outcome of Appointment sales activity type. Choose from the list, or specify an ID using an expression.', + 'ID of outcome of Appointment sales activity type. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Target ID', @@ -451,7 +451,7 @@ export const appointmentFields: INodeProperties[] = [ name: 'userId', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', displayOptions: { show: { type: ['user'], @@ -486,7 +486,7 @@ export const appointmentFields: INodeProperties[] = [ loadOptionsMethod: 'getUsers', }, description: - 'ID of the user who created the appointment. Choose from the list, or specify an ID using an expression.', + 'ID of the user who created the appointment. Choose from the list, or specify an ID using an expression.', }, { displayName: 'End Date', @@ -533,7 +533,7 @@ export const appointmentFields: INodeProperties[] = [ loadOptionsMethod: 'getOutcomes', }, description: - 'ID of outcome of Appointment sales activity type. Choose from the list, or specify an ID using an expression.', + 'ID of outcome of Appointment sales activity type. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Start Date', diff --git a/packages/nodes-base/nodes/FreshworksCrm/descriptions/ContactDescription.ts b/packages/nodes-base/nodes/FreshworksCrm/descriptions/ContactDescription.ts index 197f21fe1d..b1ed8e9274 100644 --- a/packages/nodes-base/nodes/FreshworksCrm/descriptions/ContactDescription.ts +++ b/packages/nodes-base/nodes/FreshworksCrm/descriptions/ContactDescription.ts @@ -122,7 +122,7 @@ export const contactFields: INodeProperties[] = [ loadOptionsMethod: 'getCampaigns', }, description: - 'ID of the campaign that led your contact to your webapp. Choose from the list, or specify an ID using an expression.', + 'ID of the campaign that led your contact to your webapp. Choose from the list, or specify an ID using an expression.', }, { displayName: 'City', @@ -140,7 +140,7 @@ export const contactFields: INodeProperties[] = [ loadOptionsMethod: 'getContactStatuses', }, description: - 'ID of the contact status that the contact belongs to. Choose from the list, or specify an ID using an expression.', + 'ID of the contact status that the contact belongs to. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Country', @@ -193,7 +193,7 @@ export const contactFields: INodeProperties[] = [ loadOptionsMethod: 'getLifecycleStages', }, description: - 'ID of the lifecycle stage that the contact belongs to. Choose from the list, or specify an ID using an expression.', + 'ID of the lifecycle stage that the contact belongs to. Choose from the list, or specify an ID using an expression.', }, { displayName: 'LinkedIn', @@ -225,7 +225,7 @@ export const contactFields: INodeProperties[] = [ loadOptionsMethod: 'getUsers', }, description: - 'ID of the user to whom the contact is assigned. Choose from the list, or specify an ID using an expression.', + 'ID of the user to whom the contact is assigned. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Sales Account Names or IDs', @@ -236,7 +236,7 @@ export const contactFields: INodeProperties[] = [ loadOptionsMethod: 'getAccounts', }, description: - 'Accounts which contact belongs to. Choose from the list, or specify IDs using an expression.', + 'Accounts which contact belongs to. Choose from the list, or specify IDs using an expression.', }, { displayName: 'State', @@ -268,7 +268,7 @@ export const contactFields: INodeProperties[] = [ loadOptionsMethod: 'getTerritories', }, description: - 'ID of the territory that the contact belongs to. Choose from the list, or specify an ID using an expression.', + 'ID of the territory that the contact belongs to. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Time Zone', @@ -345,7 +345,7 @@ export const contactFields: INodeProperties[] = [ name: 'view', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', displayOptions: { show: { resource: ['contact'], @@ -434,7 +434,7 @@ export const contactFields: INodeProperties[] = [ loadOptionsMethod: 'getCampaigns', }, description: - 'ID of the campaign that led your contact to your webapp. Choose from the list, or specify an ID using an expression.', + 'ID of the campaign that led your contact to your webapp. Choose from the list, or specify an ID using an expression.', }, { displayName: 'City', @@ -452,7 +452,7 @@ export const contactFields: INodeProperties[] = [ loadOptionsMethod: 'getContactStatuses', }, description: - 'ID of the contact status that the contact belongs to. Choose from the list, or specify an ID using an expression.', + 'ID of the contact status that the contact belongs to. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Country', @@ -509,7 +509,7 @@ export const contactFields: INodeProperties[] = [ type: 'options', default: '', description: - 'ID of the source where contact came from. Choose from the list, or specify an ID using an expression.', + 'ID of the source where contact came from. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Lifecycle Stage Name or ID', @@ -520,7 +520,7 @@ export const contactFields: INodeProperties[] = [ loadOptionsMethod: 'getLifecycleStages', }, description: - 'ID of the lifecycle stage that the contact belongs to. Choose from the list, or specify an ID using an expression.', + 'ID of the lifecycle stage that the contact belongs to. Choose from the list, or specify an ID using an expression.', }, { displayName: 'LinkedIn', @@ -552,7 +552,7 @@ export const contactFields: INodeProperties[] = [ loadOptionsMethod: 'getUsers', }, description: - 'ID of the user to whom the contact is assigned. Choose from the list, or specify an ID using an expression.', + 'ID of the user to whom the contact is assigned. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Sales Account Names or IDs', @@ -563,7 +563,7 @@ export const contactFields: INodeProperties[] = [ loadOptionsMethod: 'getAccounts', }, description: - 'Accounts which contact belongs to. Choose from the list, or specify IDs using an expression.', + 'Accounts which contact belongs to. Choose from the list, or specify IDs using an expression.', }, { displayName: 'State', @@ -578,7 +578,7 @@ export const contactFields: INodeProperties[] = [ type: 'options', default: '', description: - 'Status of subscription that the contact is in. Choose from the list, or specify an ID using an expression.', + 'Status of subscription that the contact is in. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Subscription Types Name or ID', @@ -586,7 +586,7 @@ export const contactFields: INodeProperties[] = [ type: 'options', default: '', description: - 'Type of subscription that the contact is in. Choose from the list, or specify an ID using an expression.', + 'Type of subscription that the contact is in. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Territory Name or ID', @@ -597,7 +597,7 @@ export const contactFields: INodeProperties[] = [ loadOptionsMethod: 'getTerritories', }, description: - 'ID of the territory that the contact belongs to. Choose from the list, or specify an ID using an expression.', + 'ID of the territory that the contact belongs to. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Time Zone', diff --git a/packages/nodes-base/nodes/FreshworksCrm/descriptions/DealDescription.ts b/packages/nodes-base/nodes/FreshworksCrm/descriptions/DealDescription.ts index 9326b4e200..7288b50ec8 100644 --- a/packages/nodes-base/nodes/FreshworksCrm/descriptions/DealDescription.ts +++ b/packages/nodes-base/nodes/FreshworksCrm/descriptions/DealDescription.ts @@ -108,7 +108,7 @@ export const dealFields: INodeProperties[] = [ loadOptionsMethod: 'getCampaigns', }, description: - 'ID of the campaign that landed this deal. Choose from the list, or specify an ID using an expression.', + 'ID of the campaign that landed this deal. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Currency Name or ID', @@ -119,7 +119,7 @@ export const dealFields: INodeProperties[] = [ loadOptionsMethod: 'getCurrencies', }, description: - 'ID of the currency that the deal belongs to. Choose from the list, or specify an ID using an expression.', + 'ID of the currency that the deal belongs to. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Deal Payment Status Name or ID', @@ -130,7 +130,7 @@ export const dealFields: INodeProperties[] = [ loadOptionsMethod: 'getDealPaymentStatuses', }, description: - 'ID of the mode of payment for the deal. Choose from the list, or specify an ID using an expression.', + 'ID of the mode of payment for the deal. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Deal Pipeline Name or ID', @@ -141,7 +141,7 @@ export const dealFields: INodeProperties[] = [ loadOptionsMethod: 'getDealPipelines', }, description: - 'ID of the deal pipeline that it belongs to. Choose from the list, or specify an ID using an expression.', + 'ID of the deal pipeline that it belongs to. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Deal Product Name or ID', @@ -152,7 +152,7 @@ export const dealFields: INodeProperties[] = [ loadOptionsMethod: 'getDealProducts', }, description: - 'ID of the product that the deal belongs to (in a multi-product company). Choose from the list, or specify an ID using an expression.', + 'ID of the product that the deal belongs to (in a multi-product company). Choose from the list, or specify an ID using an expression.', }, { displayName: 'Deal Reason Name or ID', @@ -163,7 +163,7 @@ export const dealFields: INodeProperties[] = [ loadOptionsMethod: 'getDealReasons', }, description: - 'ID of the reason for losing the deal. Can only be set if the deal is in \'Lost\' stage. Choose from the list, or specify an ID using an expression.', + 'ID of the reason for losing the deal. Can only be set if the deal is in \'Lost\' stage. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Deal Stage Name or ID', @@ -174,7 +174,7 @@ export const dealFields: INodeProperties[] = [ loadOptionsMethod: 'getDealStages', }, description: - 'ID of the deal stage that the deal belongs to. Choose from the list, or specify an ID using an expression.', + 'ID of the deal stage that the deal belongs to. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Deal Type Name or ID', @@ -185,7 +185,7 @@ export const dealFields: INodeProperties[] = [ loadOptionsMethod: 'getDealTypes', }, description: - 'ID of the deal type that the deal belongs to. Choose from the list, or specify an ID using an expression.', + 'ID of the deal type that the deal belongs to. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Lead Source ID', @@ -203,7 +203,7 @@ export const dealFields: INodeProperties[] = [ loadOptionsMethod: 'getUsers', }, description: - 'ID of the user to whom the deal is assigned. Choose from the list, or specify an ID using an expression.', + 'ID of the user to whom the deal is assigned. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Probability', @@ -225,7 +225,7 @@ export const dealFields: INodeProperties[] = [ loadOptionsMethod: 'getAccounts', }, description: - 'ID of the account that the deal belongs to. Choose from the list, or specify an ID using an expression.', + 'ID of the account that the deal belongs to. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Territory Name or ID', @@ -236,7 +236,7 @@ export const dealFields: INodeProperties[] = [ loadOptionsMethod: 'getTerritories', }, description: - 'ID of the territory that the deal belongs to. Choose from the list, or specify an ID using an expression.', + 'ID of the territory that the deal belongs to. Choose from the list, or specify an ID using an expression.', }, ], }, @@ -285,7 +285,7 @@ export const dealFields: INodeProperties[] = [ name: 'view', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', displayOptions: { show: { resource: ['deal'], @@ -387,7 +387,7 @@ export const dealFields: INodeProperties[] = [ loadOptionsMethod: 'getCampaigns', }, description: - 'ID of the campaign that landed this deal. Choose from the list, or specify an ID using an expression.', + 'ID of the campaign that landed this deal. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Currency Name or ID', @@ -398,7 +398,7 @@ export const dealFields: INodeProperties[] = [ loadOptionsMethod: 'getCurrencies', }, description: - 'ID of the currency that the deal belongs to. Choose from the list, or specify an ID using an expression.', + 'ID of the currency that the deal belongs to. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Deal Payment Status Name or ID', @@ -409,7 +409,7 @@ export const dealFields: INodeProperties[] = [ loadOptionsMethod: 'getDealPaymentStatuses', }, description: - 'ID of the mode of payment for the deal. Choose from the list, or specify an ID using an expression.', + 'ID of the mode of payment for the deal. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Deal Pipeline Name or ID', @@ -420,7 +420,7 @@ export const dealFields: INodeProperties[] = [ loadOptionsMethod: 'getDealPipelines', }, description: - 'ID of the deal pipeline that it belongs to. Choose from the list, or specify an ID using an expression.', + 'ID of the deal pipeline that it belongs to. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Deal Product Name or ID', @@ -431,7 +431,7 @@ export const dealFields: INodeProperties[] = [ loadOptionsMethod: 'getDealProducts', }, description: - 'ID of the product that the deal belongs to (in a multi-product company). Choose from the list, or specify an ID using an expression.', + 'ID of the product that the deal belongs to (in a multi-product company). Choose from the list, or specify an ID using an expression.', }, { displayName: 'Deal Reason Name or ID', @@ -442,7 +442,7 @@ export const dealFields: INodeProperties[] = [ loadOptionsMethod: 'getDealReasons', }, description: - 'ID of the reason for losing the deal. Can only be set if the deal is in \'Lost\' stage. Choose from the list, or specify an ID using an expression.', + 'ID of the reason for losing the deal. Can only be set if the deal is in \'Lost\' stage. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Deal Stage Name or ID', @@ -453,7 +453,7 @@ export const dealFields: INodeProperties[] = [ loadOptionsMethod: 'getDealStages', }, description: - 'ID of the deal stage that the deal belongs to. Choose from the list, or specify an ID using an expression.', + 'ID of the deal stage that the deal belongs to. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Deal Type Name or ID', @@ -464,7 +464,7 @@ export const dealFields: INodeProperties[] = [ loadOptionsMethod: 'getDealTypes', }, description: - 'ID of the deal type that the deal belongs to. Choose from the list, or specify an ID using an expression.', + 'ID of the deal type that the deal belongs to. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Lead Source ID', @@ -489,7 +489,7 @@ export const dealFields: INodeProperties[] = [ loadOptionsMethod: 'getUsers', }, description: - 'ID of the user to whom the deal is assigned. Choose from the list, or specify an ID using an expression.', + 'ID of the user to whom the deal is assigned. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Probability', @@ -511,7 +511,7 @@ export const dealFields: INodeProperties[] = [ loadOptionsMethod: 'getAccounts', }, description: - 'ID of the account that the deal belongs to. Choose from the list, or specify an ID using an expression.', + 'ID of the account that the deal belongs to. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Territory Name or ID', @@ -522,7 +522,7 @@ export const dealFields: INodeProperties[] = [ loadOptionsMethod: 'getTerritories', }, description: - 'ID of the territory that the deal belongs to. Choose from the list, or specify an ID using an expression.', + 'ID of the territory that the deal belongs to. Choose from the list, or specify an ID using an expression.', }, ], }, diff --git a/packages/nodes-base/nodes/FreshworksCrm/descriptions/SalesActivityDescription.ts b/packages/nodes-base/nodes/FreshworksCrm/descriptions/SalesActivityDescription.ts index 0290785d96..6b817a9103 100644 --- a/packages/nodes-base/nodes/FreshworksCrm/descriptions/SalesActivityDescription.ts +++ b/packages/nodes-base/nodes/FreshworksCrm/descriptions/SalesActivityDescription.ts @@ -57,7 +57,7 @@ export const salesActivityFields: INodeProperties[] = [ loadOptionsMethod: 'getSalesActivityTypes', }, description: - 'ID of a sales activity type for which the sales activity is created. Choose from the list, or specify an ID using an expression.', + 'ID of a sales activity type for which the sales activity is created. Choose from the list, or specify an ID using an expression.', displayOptions: { show: { resource: ['salesActivity'], @@ -83,7 +83,7 @@ export const salesActivityFields: INodeProperties[] = [ displayName: 'Owner Name or ID', name: 'ownerId', description: - 'ID of the user who owns the sales activity. Choose from the list, or specify an ID using an expression.', + 'ID of the user who owns the sales activity. Choose from the list, or specify an ID using an expression.', type: 'options', default: '', typeOptions: { @@ -190,7 +190,7 @@ export const salesActivityFields: INodeProperties[] = [ loadOptionsMethod: 'getUsers', }, description: - 'ID of the user who created the sales activity. Choose from the list, or specify an ID using an expression.', + 'ID of the user who created the sales activity. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Latitude', @@ -229,7 +229,7 @@ export const salesActivityFields: INodeProperties[] = [ loadOptionsMethod: 'getOutcomes', }, description: - 'ID of a sales activity\'s outcome. Choose from the list, or specify an ID using an expression.', + 'ID of a sales activity\'s outcome. Choose from the list, or specify an ID using an expression.', }, ], }, @@ -343,7 +343,7 @@ export const salesActivityFields: INodeProperties[] = [ loadOptionsMethod: 'getUsers', }, description: - 'ID of the user who created the sales activity. Choose from the list, or specify an ID using an expression.', + 'ID of the user who created the sales activity. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Start Date', @@ -389,7 +389,7 @@ export const salesActivityFields: INodeProperties[] = [ loadOptionsMethod: 'getUsers', }, description: - 'ID of the user who owns the sales activity. Choose from the list, or specify an ID using an expression.', + 'ID of the user who owns the sales activity. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Sales Activity Outcome Name or ID', @@ -400,7 +400,7 @@ export const salesActivityFields: INodeProperties[] = [ loadOptionsMethod: 'getOutcomes', }, description: - 'ID of a sales activity\'s outcome. Choose from the list, or specify an ID using an expression.', + 'ID of a sales activity\'s outcome. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Sales Activity Type Name or ID', @@ -411,7 +411,7 @@ export const salesActivityFields: INodeProperties[] = [ loadOptionsMethod: 'getSalesActivityTypes', }, description: - 'ID of a sales activity type for which the sales activity is updated. Choose from the list, or specify an ID using an expression.', + 'ID of a sales activity type for which the sales activity is updated. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Start Date', diff --git a/packages/nodes-base/nodes/FreshworksCrm/descriptions/SearchDescription.ts b/packages/nodes-base/nodes/FreshworksCrm/descriptions/SearchDescription.ts index 865b37b9ef..e102f87338 100644 --- a/packages/nodes-base/nodes/FreshworksCrm/descriptions/SearchDescription.ts +++ b/packages/nodes-base/nodes/FreshworksCrm/descriptions/SearchDescription.ts @@ -188,7 +188,7 @@ export const searchFields: INodeProperties[] = [ displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, displayOptions: { show: { diff --git a/packages/nodes-base/nodes/FreshworksCrm/descriptions/TaskDescription.ts b/packages/nodes-base/nodes/FreshworksCrm/descriptions/TaskDescription.ts index 86f838cebc..b1db877eb6 100644 --- a/packages/nodes-base/nodes/FreshworksCrm/descriptions/TaskDescription.ts +++ b/packages/nodes-base/nodes/FreshworksCrm/descriptions/TaskDescription.ts @@ -83,7 +83,7 @@ export const taskFields: INodeProperties[] = [ displayName: 'Owner Name or ID', name: 'ownerId', description: - 'ID of the user to whom the task is assigned. Choose from the list, or specify an ID using an expression.', + 'ID of the user to whom the task is assigned. Choose from the list, or specify an ID using an expression.', type: 'options', default: '', typeOptions: { @@ -162,7 +162,7 @@ export const taskFields: INodeProperties[] = [ loadOptionsMethod: 'getUsers', }, description: - 'ID of the user who created the task. Choose from the list, or specify an ID using an expression.', + 'ID of the user who created the task. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Outcome Name or ID', @@ -173,7 +173,7 @@ export const taskFields: INodeProperties[] = [ loadOptionsMethod: 'getOutcomes', }, description: - 'ID of the outcome of the task. Choose from the list, or specify an ID using an expression.', + 'ID of the outcome of the task. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Task Type ID', @@ -357,7 +357,7 @@ export const taskFields: INodeProperties[] = [ loadOptionsMethod: 'getUsers', }, description: - 'ID of the user who created the sales activity. Choose from the list, or specify an ID using an expression.', + 'ID of the user who created the sales activity. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Due Date', @@ -375,7 +375,7 @@ export const taskFields: INodeProperties[] = [ loadOptionsMethod: 'getOutcomes', }, description: - 'ID of the outcome of the task. Choose from the list, or specify an ID using an expression.', + 'ID of the outcome of the task. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Owner Name or ID', @@ -386,7 +386,7 @@ export const taskFields: INodeProperties[] = [ loadOptionsMethod: 'getUsers', }, description: - 'ID of the user to whom the task is assigned. Choose from the list, or specify an ID using an expression.', + 'ID of the user to whom the task is assigned. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Target ID', diff --git a/packages/nodes-base/nodes/Ftp/Ftp.node.json b/packages/nodes-base/nodes/Ftp/Ftp.node.json index 076aa4f81e..2597d8f110 100644 --- a/packages/nodes-base/nodes/Ftp/Ftp.node.json +++ b/packages/nodes-base/nodes/Ftp/Ftp.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/ftp" + "url": "https://docs.n8n.io/integrations/builtin/credentials/ftp/" } ], "primaryDocumentation": [ @@ -17,6 +17,6 @@ }, "alias": ["SFTP", "FTP", "Binary", "File", "Transfer"], "subcategories": { - "Core Nodes": ["Files"] + "Core Nodes": ["Files", "Helpers"] } } diff --git a/packages/nodes-base/nodes/Ftp/Ftp.node.ts b/packages/nodes-base/nodes/Ftp/Ftp.node.ts index 18cb5500e6..99d9e4b77d 100644 --- a/packages/nodes-base/nodes/Ftp/Ftp.node.ts +++ b/packages/nodes-base/nodes/Ftp/Ftp.node.ts @@ -5,7 +5,7 @@ import { pipeline } from 'stream/promises'; import { file as tmpFile } from 'tmp-promise'; import ftpClient from 'promise-ftp'; import sftpClient from 'ssh2-sftp-client'; -import { BINARY_ENCODING, NodeApiError } from 'n8n-workflow'; +import { BINARY_ENCODING, NodeApiError, NodeConnectionType } from 'n8n-workflow'; import type { ICredentialDataDecryptedObject, ICredentialsDecrypted, @@ -122,8 +122,8 @@ export class Ftp implements INodeType { name: 'FTP', color: '#303050', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { // nodelinter-ignore-next-line @@ -228,7 +228,7 @@ export class Ftp implements INodeType { displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', displayOptions: { show: { operation: ['delete'], @@ -510,9 +510,9 @@ export class Ftp implements INodeType { const protocol = this.getNodeParameter('protocol', 0) as string; if (protocol === 'sftp') { - credentials = await this.getCredentials('sftp'); + credentials = await this.getCredentials('sftp'); } else { - credentials = await this.getCredentials('ftp'); + credentials = await this.getCredentials('ftp'); } let ftp: ftpClient; let sftp: sftpClient; @@ -548,7 +548,7 @@ export class Ftp implements INodeType { }); } } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { const pairedItem = generatePairedItemData(items.length); return [[{ json: { error: error.message }, pairedItem }]]; @@ -816,7 +816,7 @@ export class Ftp implements INodeType { } } } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnItems.push({ json: { error: error.message }, pairedItem: { item: i } }); continue; } diff --git a/packages/nodes-base/nodes/Function/Function.node.ts b/packages/nodes-base/nodes/Function/Function.node.ts index da1a8c11b5..6f2955e754 100644 --- a/packages/nodes-base/nodes/Function/Function.node.ts +++ b/packages/nodes-base/nodes/Function/Function.node.ts @@ -8,7 +8,7 @@ import type { INodeType, INodeTypeDescription, } from 'n8n-workflow'; -import { deepCopy, NodeOperationError } from 'n8n-workflow'; +import { NodeConnectionType, deepCopy, NodeOperationError } from 'n8n-workflow'; import { vmResolver } from '../Code/JavaScriptSandbox'; export class Function implements INodeType { @@ -25,8 +25,8 @@ export class Function implements INodeType { name: 'Function', color: '#FF9922', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], properties: [ { displayName: 'A newer version of this node type is available, called the ‘Code’ node', @@ -78,7 +78,7 @@ return items;`, const cleanupData = (inputData: IDataObject): IDataObject => { Object.keys(inputData).map((key) => { if (inputData[key] !== null && typeof inputData[key] === 'object') { - if (inputData[key]!.constructor.name === 'Object') { + if (inputData[key].constructor.name === 'Object') { // Is regular node.js object so check its data inputData[key] = cleanupData(inputData[key] as IDataObject); } else { @@ -204,7 +204,7 @@ return items;`, } } } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { items = [{ json: { error: error.message } }]; } else { // Try to find the line number which contains the error and attach to error message diff --git a/packages/nodes-base/nodes/FunctionItem/FunctionItem.node.ts b/packages/nodes-base/nodes/FunctionItem/FunctionItem.node.ts index 9969782b4f..9bc3be35d1 100644 --- a/packages/nodes-base/nodes/FunctionItem/FunctionItem.node.ts +++ b/packages/nodes-base/nodes/FunctionItem/FunctionItem.node.ts @@ -9,7 +9,7 @@ import type { INodeType, INodeTypeDescription, } from 'n8n-workflow'; -import { deepCopy, NodeOperationError } from 'n8n-workflow'; +import { NodeConnectionType, deepCopy, NodeOperationError } from 'n8n-workflow'; import { vmResolver } from '../Code/JavaScriptSandbox'; export class FunctionItem implements INodeType { @@ -25,8 +25,8 @@ export class FunctionItem implements INodeType { name: 'Function Item', color: '#ddbb33', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], properties: [ { displayName: 'A newer version of this node type is available, called the ‘Code’ node', @@ -71,7 +71,7 @@ return item;`, const cleanupData = (inputData: IDataObject): IDataObject => { Object.keys(inputData).map((key) => { if (inputData[key] !== null && typeof inputData[key] === 'object') { - if (inputData[key]!.constructor.name === 'Object') { + if (inputData[key].constructor.name === 'Object') { // Is regular node.js object so check its data inputData[key] = cleanupData(inputData[key] as IDataObject); } else { @@ -179,7 +179,7 @@ return item;`, __dirname, ); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push({ json: { error: error.message } }); continue; } else { @@ -226,7 +226,7 @@ return item;`, returnData.push(returnItem); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push({ json: { error: error.message, diff --git a/packages/nodes-base/nodes/GetResponse/ContactDescription.ts b/packages/nodes-base/nodes/GetResponse/ContactDescription.ts index c29f7e1df7..0dc88307cc 100644 --- a/packages/nodes-base/nodes/GetResponse/ContactDescription.ts +++ b/packages/nodes-base/nodes/GetResponse/ContactDescription.ts @@ -79,7 +79,7 @@ export const contactFields: INodeProperties[] = [ }, default: '', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', }, { displayName: 'Additional Fields', @@ -116,7 +116,7 @@ export const contactFields: INodeProperties[] = [ loadOptionsMethod: 'getCustomFields', }, description: - 'The end user specified key of the user defined data. Choose from the list, or specify an ID using an expression.', + 'The end user specified key of the user defined data. Choose from the list, or specify an ID using an expression.', default: '', }, { @@ -172,7 +172,7 @@ export const contactFields: INodeProperties[] = [ name: 'tags', type: 'multiOptions', description: - 'Choose from the list, or specify IDs using an expression', + 'Choose from the list, or specify IDs using an expression', typeOptions: { loadOptionsMethod: 'getTags', }, @@ -514,7 +514,7 @@ export const contactFields: INodeProperties[] = [ name: 'campaignId', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getCampaigns', }, @@ -542,7 +542,7 @@ export const contactFields: INodeProperties[] = [ loadOptionsMethod: 'getCustomFields', }, description: - 'The end user specified key of the user defined data. Choose from the list, or specify an ID using an expression.', + 'The end user specified key of the user defined data. Choose from the list, or specify an ID using an expression.', default: '', }, { @@ -605,7 +605,7 @@ export const contactFields: INodeProperties[] = [ name: 'tags', type: 'multiOptions', description: - 'Choose from the list, or specify IDs using an expression', + 'Choose from the list, or specify IDs using an expression', typeOptions: { loadOptionsMethod: 'getTags', }, diff --git a/packages/nodes-base/nodes/GetResponse/GetResponse.node.json b/packages/nodes-base/nodes/GetResponse/GetResponse.node.json index a3f18af402..9b1b2eb5fc 100644 --- a/packages/nodes-base/nodes/GetResponse/GetResponse.node.json +++ b/packages/nodes-base/nodes/GetResponse/GetResponse.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/getResponse" + "url": "https://docs.n8n.io/integrations/builtin/credentials/getResponse/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/GetResponse/GetResponse.node.ts b/packages/nodes-base/nodes/GetResponse/GetResponse.node.ts index db6636bd61..6bdf841944 100644 --- a/packages/nodes-base/nodes/GetResponse/GetResponse.node.ts +++ b/packages/nodes-base/nodes/GetResponse/GetResponse.node.ts @@ -7,6 +7,7 @@ import type { INodeType, INodeTypeDescription, } from 'n8n-workflow'; +import { NodeConnectionType } from 'n8n-workflow'; import moment from 'moment-timezone'; import { getresponseApiRequest, getResponseApiRequestAllItems } from './GenericFunctions'; @@ -26,8 +27,8 @@ export class GetResponse implements INodeType { defaults: { name: 'GetResponse', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'getResponseApi', @@ -301,7 +302,7 @@ export class GetResponse implements INodeType { ); returnData.push(...executionData); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { const executionErrorData = this.helpers.constructExecutionMetaData( this.helpers.returnJsonArray({ error: error.message }), { itemData: { item: i } }, diff --git a/packages/nodes-base/nodes/GetResponse/GetResponseTrigger.node.json b/packages/nodes-base/nodes/GetResponse/GetResponseTrigger.node.json index 0c3ff3a356..0f33feba00 100644 --- a/packages/nodes-base/nodes/GetResponse/GetResponseTrigger.node.json +++ b/packages/nodes-base/nodes/GetResponse/GetResponseTrigger.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/getResponse" + "url": "https://docs.n8n.io/integrations/builtin/credentials/getResponse/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/GetResponse/GetResponseTrigger.node.ts b/packages/nodes-base/nodes/GetResponse/GetResponseTrigger.node.ts index b26297360f..ce8503b604 100644 --- a/packages/nodes-base/nodes/GetResponse/GetResponseTrigger.node.ts +++ b/packages/nodes-base/nodes/GetResponse/GetResponseTrigger.node.ts @@ -9,7 +9,7 @@ import type { IWebhookResponseData, JsonObject, } from 'n8n-workflow'; -import { NodeApiError } from 'n8n-workflow'; +import { NodeApiError, NodeConnectionType } from 'n8n-workflow'; import { getresponseApiRequest, getResponseApiRequestAllItems } from './GenericFunctions'; @@ -26,7 +26,7 @@ export class GetResponseTrigger implements INodeType { name: 'GetResponse Trigger', }, inputs: [], - outputs: ['main'], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'getResponseApi', @@ -111,7 +111,7 @@ export class GetResponseTrigger implements INodeType { name: 'listIds', type: 'multiOptions', description: - 'Choose from the list, or specify IDs using an expression', + 'Choose from the list, or specify IDs using an expression', typeOptions: { loadOptionsMethod: 'getLists', }, @@ -120,7 +120,7 @@ export class GetResponseTrigger implements INodeType { { displayName: 'Options', name: 'options', - placeholder: 'Add Option', + placeholder: 'Add option', type: 'collection', default: {}, options: [ diff --git a/packages/nodes-base/nodes/Ghost/Ghost.node.json b/packages/nodes-base/nodes/Ghost/Ghost.node.json index 539214cccd..b7a8af0b8c 100644 --- a/packages/nodes-base/nodes/Ghost/Ghost.node.json +++ b/packages/nodes-base/nodes/Ghost/Ghost.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/ghost" + "url": "https://docs.n8n.io/integrations/builtin/credentials/ghost/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Ghost/Ghost.node.ts b/packages/nodes-base/nodes/Ghost/Ghost.node.ts index 19509ce6e0..1ed2381045 100644 --- a/packages/nodes-base/nodes/Ghost/Ghost.node.ts +++ b/packages/nodes-base/nodes/Ghost/Ghost.node.ts @@ -7,7 +7,7 @@ import type { INodeType, INodeTypeDescription, } from 'n8n-workflow'; -import { NodeOperationError } from 'n8n-workflow'; +import { NodeConnectionType, NodeOperationError } from 'n8n-workflow'; import moment from 'moment-timezone'; import { ghostApiRequest, ghostApiRequestAllItems, validateJSON } from './GenericFunctions'; @@ -26,8 +26,8 @@ export class Ghost implements INodeType { defaults: { name: 'Ghost', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'ghostAdminApi', @@ -363,7 +363,7 @@ export class Ghost implements INodeType { ); returnData.push(...executionData); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { const executionErrorData = this.helpers.constructExecutionMetaData( this.helpers.returnJsonArray({ error: error.message }), { itemData: { item: i } }, diff --git a/packages/nodes-base/nodes/Ghost/PostDescription.ts b/packages/nodes-base/nodes/Ghost/PostDescription.ts index de01ce27b5..7781ba140a 100644 --- a/packages/nodes-base/nodes/Ghost/PostDescription.ts +++ b/packages/nodes-base/nodes/Ghost/PostDescription.ts @@ -189,7 +189,7 @@ export const postFields: INodeProperties[] = [ name: 'authors', type: 'multiOptions', description: - 'Choose from the list, or specify IDs using an expression', + 'Choose from the list, or specify IDs using an expression', typeOptions: { loadOptionsMethod: 'getAuthors', }, @@ -289,7 +289,7 @@ export const postFields: INodeProperties[] = [ name: 'tags', type: 'multiOptions', description: - 'Choose from the list, or specify IDs using an expression', + 'Choose from the list, or specify IDs using an expression', typeOptions: { loadOptionsMethod: 'getTags', }, @@ -383,7 +383,7 @@ export const postFields: INodeProperties[] = [ displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, displayOptions: { show: { @@ -428,7 +428,7 @@ export const postFields: INodeProperties[] = [ displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, displayOptions: { show: { @@ -506,7 +506,7 @@ export const postFields: INodeProperties[] = [ displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, displayOptions: { show: { @@ -571,7 +571,7 @@ export const postFields: INodeProperties[] = [ displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, displayOptions: { show: { @@ -695,7 +695,7 @@ export const postFields: INodeProperties[] = [ name: 'authors', type: 'multiOptions', description: - 'Choose from the list, or specify IDs using an expression', + 'Choose from the list, or specify IDs using an expression', typeOptions: { loadOptionsMethod: 'getAuthors', }, @@ -829,7 +829,7 @@ export const postFields: INodeProperties[] = [ name: 'tags', type: 'multiOptions', description: - 'Choose from the list, or specify IDs using an expression', + 'Choose from the list, or specify IDs using an expression', typeOptions: { loadOptionsMethod: 'getTags', }, diff --git a/packages/nodes-base/nodes/Git/Git.node.json b/packages/nodes-base/nodes/Git/Git.node.json index ef57934c29..1fc2114edd 100644 --- a/packages/nodes-base/nodes/Git/Git.node.json +++ b/packages/nodes-base/nodes/Git/Git.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/git" + "url": "https://docs.n8n.io/integrations/builtin/credentials/git/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Git/Git.node.ts b/packages/nodes-base/nodes/Git/Git.node.ts index e6dc866f8d..33a14be8b7 100644 --- a/packages/nodes-base/nodes/Git/Git.node.ts +++ b/packages/nodes-base/nodes/Git/Git.node.ts @@ -6,6 +6,7 @@ import type { INodeType, INodeTypeDescription, } from 'n8n-workflow'; +import { NodeConnectionType } from 'n8n-workflow'; import type { LogOptions, SimpleGit, SimpleGitOptions } from 'simple-git'; import simpleGit from 'simple-git'; @@ -30,8 +31,8 @@ export class Git implements INodeType { defaults: { name: 'Git', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'gitPassword', @@ -481,7 +482,7 @@ export class Git implements INodeType { }); } } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnItems.push({ json: { error: error.toString(), diff --git a/packages/nodes-base/nodes/Git/descriptions/AddConfigDescription.ts b/packages/nodes-base/nodes/Git/descriptions/AddConfigDescription.ts index c00498ae8f..ffb3284365 100644 --- a/packages/nodes-base/nodes/Git/descriptions/AddConfigDescription.ts +++ b/packages/nodes-base/nodes/Git/descriptions/AddConfigDescription.ts @@ -38,7 +38,7 @@ export const addConfigFields: INodeProperties[] = [ operation: ['addConfig'], }, }, - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, options: [ { diff --git a/packages/nodes-base/nodes/Git/descriptions/CommitDescription.ts b/packages/nodes-base/nodes/Git/descriptions/CommitDescription.ts index 973820b5b2..4e2570f4a8 100644 --- a/packages/nodes-base/nodes/Git/descriptions/CommitDescription.ts +++ b/packages/nodes-base/nodes/Git/descriptions/CommitDescription.ts @@ -22,7 +22,7 @@ export const commitFields: INodeProperties[] = [ operation: ['commit'], }, }, - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, options: [ { diff --git a/packages/nodes-base/nodes/Git/descriptions/LogDescription.ts b/packages/nodes-base/nodes/Git/descriptions/LogDescription.ts index a1850eccbb..7a4925f572 100644 --- a/packages/nodes-base/nodes/Git/descriptions/LogDescription.ts +++ b/packages/nodes-base/nodes/Git/descriptions/LogDescription.ts @@ -39,7 +39,7 @@ export const logFields: INodeProperties[] = [ operation: ['log'], }, }, - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, options: [ { diff --git a/packages/nodes-base/nodes/Git/descriptions/PushDescription.ts b/packages/nodes-base/nodes/Git/descriptions/PushDescription.ts index 19d5f5376e..45054de1b1 100644 --- a/packages/nodes-base/nodes/Git/descriptions/PushDescription.ts +++ b/packages/nodes-base/nodes/Git/descriptions/PushDescription.ts @@ -10,7 +10,7 @@ export const pushFields: INodeProperties[] = [ operation: ['push'], }, }, - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, options: [ { diff --git a/packages/nodes-base/nodes/Github/GenericFunctions.ts b/packages/nodes-base/nodes/Github/GenericFunctions.ts index a27618b3db..b5293cd157 100644 --- a/packages/nodes-base/nodes/Github/GenericFunctions.ts +++ b/packages/nodes-base/nodes/Github/GenericFunctions.ts @@ -114,3 +114,18 @@ export async function githubApiRequestAllItems( } while (responseData.headers.link?.includes('next')); return returnData; } + +export function isBase64(content: string) { + const base64regex = /^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/; + return base64regex.test(content); +} + +export function validateJSON(json: string | undefined): any { + let result; + try { + result = JSON.parse(json!); + } catch (exception) { + result = undefined; + } + return result; +} diff --git a/packages/nodes-base/nodes/Github/Github.node.json b/packages/nodes-base/nodes/Github/Github.node.json index 5041025a87..7f9ed87644 100644 --- a/packages/nodes-base/nodes/Github/Github.node.json +++ b/packages/nodes-base/nodes/Github/Github.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/github" + "url": "https://docs.n8n.io/integrations/builtin/credentials/github/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Github/Github.node.ts b/packages/nodes-base/nodes/Github/Github.node.ts index adc57482a1..2e29b467ca 100644 --- a/packages/nodes-base/nodes/Github/Github.node.ts +++ b/packages/nodes-base/nodes/Github/Github.node.ts @@ -6,12 +6,17 @@ import type { INodeType, INodeTypeDescription, } from 'n8n-workflow'; -import { NodeOperationError } from 'n8n-workflow'; +import { NodeConnectionType, NodeOperationError } from 'n8n-workflow'; import { snakeCase } from 'change-case'; -import { getFileSha, githubApiRequest, githubApiRequestAllItems } from './GenericFunctions'; - -import { getRepositories, getUsers } from './SearchFunctions'; +import { + getFileSha, + githubApiRequest, + githubApiRequestAllItems, + isBase64, + validateJSON, +} from './GenericFunctions'; +import { getRepositories, getUsers, getWorkflows } from './SearchFunctions'; export class Github implements INodeType { description: INodeTypeDescription = { @@ -25,8 +30,8 @@ export class Github implements INodeType { defaults: { name: 'GitHub', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'githubApi', @@ -98,6 +103,10 @@ export class Github implements INodeType { name: 'User', value: 'user', }, + { + name: 'Workflow', + value: 'workflow', + }, ], default: 'issue', }, @@ -386,6 +395,129 @@ export class Github implements INodeType { default: 'create', }, + // ---------------------------------- + // workflow + // ---------------------------------- + { + displayName: 'Operation', + name: 'operation', + type: 'options', + noDataExpression: true, + displayOptions: { + show: { + resource: ['workflow'], + }, + }, + options: [ + { + name: 'Disable', + value: 'disable', + description: 'Disable a workflow', + action: 'Disable a workflow', + }, + { + name: 'Dispatch', + value: 'dispatch', + description: 'Dispatch a workflow event', + action: 'Dispatch a workflow event', + }, + { + name: 'Enable', + value: 'enable', + description: 'Enable a workflow', + action: 'Enable a workflow', + }, + { + name: 'Get', + value: 'get', + description: 'Get a workflow', + action: 'Get a workflow', + }, + { + name: 'Get Usage', + value: 'getUsage', + description: 'Get the usage of a workflow', + action: 'Get the usage of a workflow', + }, + { + name: 'List', + value: 'list', + description: 'List workflows', + action: 'List workflows', + }, + ], + default: 'dispatch', + }, + { + displayName: 'Workflow', + name: 'workflowId', + type: 'resourceLocator', + default: { mode: 'list', value: '' }, + required: true, + modes: [ + { + displayName: 'Workflow', + name: 'list', + type: 'list', + placeholder: 'Select a workflow...', + typeOptions: { + searchListMethod: 'getWorkflows', + searchable: true, + searchFilterRequired: true, + }, + }, + { + displayName: 'By ID', + name: 'name', + type: 'string', + placeholder: 'e.g. 12345678', + validation: [ + { + type: 'regex', + properties: { + regex: '\\d+', + errorMessage: 'Not a valid Github Workflow ID', + }, + }, + ], + }, + ], + displayOptions: { + show: { + resource: ['workflow'], + operation: ['disable', 'dispatch', 'get', 'getUsage', 'enable'], + }, + }, + description: 'The workflow to dispatch', + }, + { + displayName: 'Ref', + name: 'ref', + type: 'string', + default: 'main', + required: true, + displayOptions: { + show: { + resource: ['workflow'], + operation: ['dispatch'], + }, + }, + description: 'The git reference for the workflow dispatch (branch, tag, or commit SHA)', + }, + { + displayName: 'Inputs', + name: 'inputs', + type: 'json', + default: '{}', + displayOptions: { + show: { + resource: ['workflow'], + operation: ['dispatch'], + }, + }, + description: 'JSON object with input parameters for the workflow', + }, + // ---------------------------------- // shared // ---------------------------------- @@ -903,11 +1035,23 @@ export class Github implements INodeType { default: {}, options: [ { - displayName: 'Title', - name: 'title', - type: 'string', - default: '', - description: 'The title of the issue', + displayName: 'Assignees', + name: 'assignees', + type: 'collection', + typeOptions: { + multipleValues: true, + multipleValueButtonText: 'Add Assignee', + }, + default: { assignee: '' }, + options: [ + { + displayName: 'Assignees', + name: 'assignee', + type: 'string', + default: '', + description: 'User to assign issue to', + }, + ], }, { displayName: 'Body', @@ -919,25 +1063,6 @@ export class Github implements INodeType { default: '', description: 'The body of the issue', }, - { - displayName: 'State', - name: 'state', - type: 'options', - options: [ - { - name: 'Closed', - value: 'closed', - description: 'Set the state to "closed"', - }, - { - name: 'Open', - value: 'open', - description: 'Set the state to "open"', - }, - ], - default: 'open', - description: 'The state to set', - }, { displayName: 'Labels', name: 'labels', @@ -958,27 +1083,57 @@ export class Github implements INodeType { ], }, { - displayName: 'Assignees', - name: 'assignees', - type: 'collection', - typeOptions: { - multipleValues: true, - multipleValueButtonText: 'Add Assignee', - }, - default: { assignee: '' }, + displayName: 'State', + name: 'state', + type: 'options', options: [ { - displayName: 'Assignees', - name: 'assignee', - type: 'string', - default: '', - description: 'User to assign issue to', + name: 'Closed', + value: 'closed', + description: 'Set the state to "closed"', + }, + { + name: 'Open', + value: 'open', + description: 'Set the state to "open"', }, ], + default: 'open', + description: 'The state to set', + }, + { + displayName: 'State Reason', + name: 'state_reason', + type: 'options', + options: [ + { + name: 'Completed', + value: 'completed', + description: 'Issue is completed', + }, + { + name: 'Not Planned', + value: 'not_planned', + description: 'Issue is not planned', + }, + { + name: 'Reopened', + value: 'reopened', + description: 'Issue is reopened', + }, + ], + default: 'completed', + description: 'The reason for the state change', + }, + { + displayName: 'Title', + name: 'title', + type: 'string', + default: '', + description: 'The title of the issue', }, ], }, - // ---------------------------------- // issue:get // ---------------------------------- @@ -1826,6 +1981,7 @@ export class Github implements INodeType { listSearch: { getUsers, getRepositories, + getWorkflows, }, }; @@ -1858,6 +2014,12 @@ export class Github implements INodeType { 'review:get', 'review:update', 'user:invite', + 'workflow:disable', + 'workflow:dispatch', + 'workflow:enable', + 'workflow:get', + 'workflow:getUsage', + 'workflow:list', ]; // Operations which overwrite the returned data and return arrays // and has so to be merged with the data of other items @@ -1958,11 +2120,12 @@ export class Github implements INodeType { // TODO: Does this work with filesystem mode body.content = binaryData.data; } else { - // Is text file - // body.content = Buffer.from(this.getNodeParameter('fileContent', i) as string, 'base64'); - body.content = Buffer.from( - this.getNodeParameter('fileContent', i) as string, - ).toString('base64'); + const fileContent = this.getNodeParameter('fileContent', i) as string; + if (isBase64(fileContent)) { + body.content = fileContent; + } else { + body.content = Buffer.from(fileContent).toString('base64'); + } } endpoint = `/repos/${owner}/${repository}/contents/${encodeURI(filePath)}`; @@ -2319,6 +2482,77 @@ export class Github implements INodeType { qs.per_page = this.getNodeParameter('limit', 0); } } + } else if (resource === 'workflow') { + if (operation === 'disable') { + // ---------------------------------- + // disable + // ---------------------------------- + + requestMethod = 'PUT'; + + const workflowId = this.getNodeParameter('workflowId', i) as string; + + endpoint = `/repos/${owner}/${repository}/actions/workflows/${workflowId}/disable`; + } else if (operation === 'dispatch') { + // ---------------------------------- + // dispatch + // ---------------------------------- + + requestMethod = 'POST'; + + const workflowId = this.getNodeParameter('workflowId', i) as string; + + endpoint = `/repos/${owner}/${repository}/actions/workflows/${workflowId}/dispatches`; + body.ref = this.getNodeParameter('ref', i) as string; + + const inputs = validateJSON( + this.getNodeParameter('inputs', i) as string, + ) as IDataObject; + if (inputs === undefined) { + throw new NodeOperationError(this.getNode(), 'Inputs: Invalid JSON', { + itemIndex: i, + }); + } + body.inputs = inputs; + } else if (operation === 'enable') { + // ---------------------------------- + // enable + // ---------------------------------- + + requestMethod = 'PUT'; + + const workflowId = this.getNodeParameter('workflowId', i) as string; + + endpoint = `/repos/${owner}/${repository}/actions/workflows/${workflowId}/enable`; + } else if (operation === 'get') { + // ---------------------------------- + // get + // ---------------------------------- + + requestMethod = 'GET'; + + const workflowId = this.getNodeParameter('workflowId', i) as string; + + endpoint = `/repos/${owner}/${repository}/actions/workflows/${workflowId}`; + } else if (operation === 'getUsage') { + // ---------------------------------- + // getUsage + // ---------------------------------- + + requestMethod = 'GET'; + + const workflowId = this.getNodeParameter('workflowId', i) as string; + + endpoint = `/repos/${owner}/${repository}/actions/workflows/${workflowId}/timing`; + } else if (operation === 'list') { + // ---------------------------------- + // list + // ---------------------------------- + + requestMethod = 'GET'; + + endpoint = `/repos/${owner}/${repository}/actions/workflows`; + } } else { throw new NodeOperationError(this.getNode(), `The resource "${resource}" is not known!`, { itemIndex: i, @@ -2386,7 +2620,7 @@ export class Github implements INodeType { returnData.push(...executionData); } } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { if ( overwriteDataOperations.includes(fullOperation) || overwriteDataOperationsArray.includes(fullOperation) diff --git a/packages/nodes-base/nodes/Github/GithubTrigger.node.json b/packages/nodes-base/nodes/Github/GithubTrigger.node.json index cb2b8474de..74c22545b4 100644 --- a/packages/nodes-base/nodes/Github/GithubTrigger.node.json +++ b/packages/nodes-base/nodes/Github/GithubTrigger.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/github" + "url": "https://docs.n8n.io/integrations/builtin/credentials/github/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Github/GithubTrigger.node.ts b/packages/nodes-base/nodes/Github/GithubTrigger.node.ts index 71057926e9..0fb142042d 100644 --- a/packages/nodes-base/nodes/Github/GithubTrigger.node.ts +++ b/packages/nodes-base/nodes/Github/GithubTrigger.node.ts @@ -7,7 +7,7 @@ import type { IWebhookResponseData, JsonObject, } from 'n8n-workflow'; -import { NodeApiError, NodeOperationError } from 'n8n-workflow'; +import { NodeConnectionType, NodeApiError, NodeOperationError } from 'n8n-workflow'; import { githubApiRequest } from './GenericFunctions'; import { getRepositories, getUsers } from './SearchFunctions'; @@ -26,7 +26,7 @@ export class GithubTrigger implements INodeType { name: 'Github Trigger', }, inputs: [], - outputs: ['main'], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'githubApi', @@ -438,7 +438,7 @@ export class GithubTrigger implements INodeType { displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, options: [ { diff --git a/packages/nodes-base/nodes/Github/SearchFunctions.ts b/packages/nodes-base/nodes/Github/SearchFunctions.ts index 4d2b34a154..7c2d5fed2a 100644 --- a/packages/nodes-base/nodes/Github/SearchFunctions.ts +++ b/packages/nodes-base/nodes/Github/SearchFunctions.ts @@ -85,3 +85,32 @@ export async function getRepositories( const nextPaginationToken = page * per_page < responseData.total_count ? page + 1 : undefined; return { results, paginationToken: nextPaginationToken }; } + +export async function getWorkflows( + this: ILoadOptionsFunctions, + paginationToken?: string, +): Promise { + const owner = this.getCurrentNodeParameter('owner', { extractValue: true }); + const repository = this.getCurrentNodeParameter('repository', { extractValue: true }); + const page = paginationToken ? +paginationToken : 1; + const per_page = 100; + const endpoint = `/repos/${owner}/${repository}/actions/workflows`; + let responseData: { workflows: Array<{ id: string; name: string }>; total_count: number } = { + workflows: [], + total_count: 0, + }; + + try { + responseData = await githubApiRequest.call(this, 'GET', endpoint, {}, { page, per_page }); + } catch { + // will fail if the repository does not have any workflows + } + + const results: INodeListSearchItems[] = responseData.workflows.map((workflow) => ({ + name: workflow.name, + value: workflow.id, + })); + + const nextPaginationToken = page * per_page < responseData.total_count ? page + 1 : undefined; + return { results, paginationToken: nextPaginationToken }; +} diff --git a/packages/nodes-base/nodes/Gitlab/Gitlab.node.json b/packages/nodes-base/nodes/Gitlab/Gitlab.node.json index 35a5a33431..b222de739f 100644 --- a/packages/nodes-base/nodes/Gitlab/Gitlab.node.json +++ b/packages/nodes-base/nodes/Gitlab/Gitlab.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/gitlab" + "url": "https://docs.n8n.io/integrations/builtin/credentials/gitlab/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Gitlab/Gitlab.node.ts b/packages/nodes-base/nodes/Gitlab/Gitlab.node.ts index cdf391abf6..88395f2eb8 100644 --- a/packages/nodes-base/nodes/Gitlab/Gitlab.node.ts +++ b/packages/nodes-base/nodes/Gitlab/Gitlab.node.ts @@ -6,7 +6,7 @@ import type { INodeType, INodeTypeDescription, } from 'n8n-workflow'; -import { NodeOperationError } from 'n8n-workflow'; +import { NodeConnectionType, NodeOperationError } from 'n8n-workflow'; import { gitlabApiRequest, gitlabApiRequestAllItems } from './GenericFunctions'; @@ -22,8 +22,8 @@ export class Gitlab implements INodeType { defaults: { name: 'GitLab', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'gitlabApi', @@ -1337,7 +1337,7 @@ export class Gitlab implements INodeType { // _credentials = await this.getCredentials('gitlabOAuth2Api'); // } // } catch (error) { - // if (this.continueOnFail(error)) { + // if (this.continueOnFail()) { // return [this.helpers.returnJsonArray([{ error: error.message }])]; // } // throw new NodeOperationError(this.getNode(), error as Error); @@ -1606,7 +1606,13 @@ export class Gitlab implements INodeType { body.commit_message = this.getNodeParameter('commitMessage', i) as string; if (additionalParameters.author) { - body.author = additionalParameters.author; + const author = additionalParameters.author as IDataObject; + if (author.name) { + body.author_name = author.name; + } + if (author.email) { + body.author_email = author.email; + } } if ( additionalParameters.branchStart && @@ -1648,7 +1654,13 @@ export class Gitlab implements INodeType { {}, ) as IDataObject; if (additionalParameters.author) { - body.author = additionalParameters.author; + const author = additionalParameters.author as IDataObject; + if (author.name) { + body.author_name = author.name; + } + if (author.email) { + body.author_email = author.email; + } } body.branch = this.getNodeParameter('branch', i) as string; body.commit_message = this.getNodeParameter('commitMessage', i) as string; @@ -1755,7 +1767,7 @@ export class Gitlab implements INodeType { returnData.push(...executionData); } } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { if ( overwriteDataOperations.includes(fullOperation) || overwriteDataOperationsArray.includes(fullOperation) diff --git a/packages/nodes-base/nodes/Gitlab/GitlabTrigger.node.json b/packages/nodes-base/nodes/Gitlab/GitlabTrigger.node.json index 10fac8bfac..60f7f5bf93 100644 --- a/packages/nodes-base/nodes/Gitlab/GitlabTrigger.node.json +++ b/packages/nodes-base/nodes/Gitlab/GitlabTrigger.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/gitlab" + "url": "https://docs.n8n.io/integrations/builtin/credentials/gitlab/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Gitlab/GitlabTrigger.node.ts b/packages/nodes-base/nodes/Gitlab/GitlabTrigger.node.ts index 12febc14e5..f6a7481883 100644 --- a/packages/nodes-base/nodes/Gitlab/GitlabTrigger.node.ts +++ b/packages/nodes-base/nodes/Gitlab/GitlabTrigger.node.ts @@ -7,7 +7,7 @@ import type { IWebhookResponseData, JsonObject, } from 'n8n-workflow'; -import { NodeApiError } from 'n8n-workflow'; +import { NodeConnectionType, NodeApiError } from 'n8n-workflow'; import { gitlabApiRequest } from './GenericFunctions'; @@ -91,7 +91,7 @@ export class GitlabTrigger implements INodeType { name: 'GitLab Trigger', }, inputs: [], - outputs: ['main'], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'gitlabApi', diff --git a/packages/nodes-base/nodes/GoToWebinar/GenericFunctions.ts b/packages/nodes-base/nodes/GoToWebinar/GenericFunctions.ts index 4d85e51375..6748ad78d8 100644 --- a/packages/nodes-base/nodes/GoToWebinar/GenericFunctions.ts +++ b/packages/nodes-base/nodes/GoToWebinar/GenericFunctions.ts @@ -143,9 +143,9 @@ export async function handleGetAll( } export async function loadWebinars(this: ILoadOptionsFunctions) { - const { oauthTokenData } = (await this.getCredentials('goToWebinarOAuth2Api')) as { + const { oauthTokenData } = await this.getCredentials<{ oauthTokenData: { account_key: string }; - }; + }>('goToWebinarOAuth2Api'); const endpoint = `accounts/${oauthTokenData.account_key}/webinars`; @@ -176,9 +176,9 @@ export async function loadWebinars(this: ILoadOptionsFunctions) { } export async function loadWebinarSessions(this: ILoadOptionsFunctions) { - const { oauthTokenData } = (await this.getCredentials('goToWebinarOAuth2Api')) as { + const { oauthTokenData } = await this.getCredentials<{ oauthTokenData: { organizer_key: string }; - }; + }>('goToWebinarOAuth2Api'); const webinarKey = this.getCurrentNodeParameter('webinarKey') as string; @@ -208,9 +208,9 @@ export async function loadWebinarSessions(this: ILoadOptionsFunctions) { } export async function loadRegistranSimpleQuestions(this: ILoadOptionsFunctions) { - const { oauthTokenData } = (await this.getCredentials('goToWebinarOAuth2Api')) as { + const { oauthTokenData } = await this.getCredentials<{ oauthTokenData: { organizer_key: string }; - }; + }>('goToWebinarOAuth2Api'); const webinarkey = this.getNodeParameter('webinarKey') as string; @@ -233,9 +233,9 @@ export async function loadRegistranSimpleQuestions(this: ILoadOptionsFunctions) } export async function loadAnswers(this: ILoadOptionsFunctions) { - const { oauthTokenData } = (await this.getCredentials('goToWebinarOAuth2Api')) as { + const { oauthTokenData } = await this.getCredentials<{ oauthTokenData: { organizer_key: string }; - }; + }>('goToWebinarOAuth2Api'); const webinarKey = this.getCurrentNodeParameter('webinarKey') as string; @@ -262,9 +262,9 @@ export async function loadAnswers(this: ILoadOptionsFunctions) { } export async function loadRegistranMultiChoiceQuestions(this: ILoadOptionsFunctions) { - const { oauthTokenData } = (await this.getCredentials('goToWebinarOAuth2Api')) as { + const { oauthTokenData } = await this.getCredentials<{ oauthTokenData: { organizer_key: string }; - }; + }>('goToWebinarOAuth2Api'); const webinarkey = this.getNodeParameter('webinarKey') as string; diff --git a/packages/nodes-base/nodes/GoToWebinar/GoToWebinar.node.json b/packages/nodes-base/nodes/GoToWebinar/GoToWebinar.node.json index 6e2602c1f3..9f316c580e 100644 --- a/packages/nodes-base/nodes/GoToWebinar/GoToWebinar.node.json +++ b/packages/nodes-base/nodes/GoToWebinar/GoToWebinar.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/goToWebinar" + "url": "https://docs.n8n.io/integrations/builtin/credentials/goToWebinar/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/GoToWebinar/GoToWebinar.node.ts b/packages/nodes-base/nodes/GoToWebinar/GoToWebinar.node.ts index c53ae788bd..cd8c57c00f 100644 --- a/packages/nodes-base/nodes/GoToWebinar/GoToWebinar.node.ts +++ b/packages/nodes-base/nodes/GoToWebinar/GoToWebinar.node.ts @@ -7,7 +7,7 @@ import type { INodeType, INodeTypeDescription, } from 'n8n-workflow'; -import { NodeOperationError } from 'n8n-workflow'; +import { NodeConnectionType, NodeOperationError } from 'n8n-workflow'; import isEmpty from 'lodash/isEmpty'; import omit from 'lodash/omit'; @@ -50,8 +50,8 @@ export class GoToWebinar implements INodeType { defaults: { name: 'GoToWebinar', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'goToWebinarOAuth2Api', @@ -154,9 +154,9 @@ export class GoToWebinar implements INodeType { let responseData; const returnData: INodeExecutionData[] = []; - const { oauthTokenData } = (await this.getCredentials('goToWebinarOAuth2Api')) as { + const { oauthTokenData } = await this.getCredentials<{ oauthTokenData: { account_key: string; organizer_key: string }; - }; + }>('goToWebinarOAuth2Api'); const accountKey = oauthTokenData.account_key; const organizerKey = oauthTokenData.organizer_key; @@ -630,7 +630,7 @@ export class GoToWebinar implements INodeType { } } } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { const executionErrorData = this.helpers.constructExecutionMetaData( this.helpers.returnJsonArray({ error: error.message }), { itemData: { item: i } }, diff --git a/packages/nodes-base/nodes/GoToWebinar/descriptions/AttendeeDescription.ts b/packages/nodes-base/nodes/GoToWebinar/descriptions/AttendeeDescription.ts index 561b4702f3..4e64e9e3a7 100644 --- a/packages/nodes-base/nodes/GoToWebinar/descriptions/AttendeeDescription.ts +++ b/packages/nodes-base/nodes/GoToWebinar/descriptions/AttendeeDescription.ts @@ -46,7 +46,7 @@ export const attendeeFields: INodeProperties[] = [ required: true, default: '', description: - 'Key of the webinar that the attendee attended. Choose from the list, or specify an ID using an expression.', + 'Key of the webinar that the attendee attended. Choose from the list, or specify an ID using an expression.', displayOptions: { show: { resource: ['attendee'], @@ -64,7 +64,7 @@ export const attendeeFields: INodeProperties[] = [ }, default: '', description: - 'Key of the session that the attendee attended. Choose from the list, or specify an ID using an expression.', + 'Key of the session that the attendee attended. Choose from the list, or specify an ID using an expression.', displayOptions: { show: { resource: ['attendee'], diff --git a/packages/nodes-base/nodes/GoToWebinar/descriptions/CoorganizerDescription.ts b/packages/nodes-base/nodes/GoToWebinar/descriptions/CoorganizerDescription.ts index 135c4af791..5cad041438 100644 --- a/packages/nodes-base/nodes/GoToWebinar/descriptions/CoorganizerDescription.ts +++ b/packages/nodes-base/nodes/GoToWebinar/descriptions/CoorganizerDescription.ts @@ -51,7 +51,7 @@ export const coorganizerFields: INodeProperties[] = [ required: true, default: [], description: - 'Key of the webinar that the co-organizer is hosting. Choose from the list, or specify an ID using an expression.', + 'Key of the webinar that the co-organizer is hosting. Choose from the list, or specify an ID using an expression.', displayOptions: { show: { resource: ['coorganizer'], @@ -130,7 +130,7 @@ export const coorganizerFields: INodeProperties[] = [ required: true, default: [], description: - 'Key of the webinar to delete. Choose from the list, or specify an ID using an expression.', + 'Key of the webinar to delete. Choose from the list, or specify an ID using an expression.', displayOptions: { show: { resource: ['coorganizer'], @@ -181,7 +181,7 @@ export const coorganizerFields: INodeProperties[] = [ required: true, default: [], description: - 'Key of the webinar to retrieve all co-organizers from. Choose from the list, or specify an ID using an expression.', + 'Key of the webinar to retrieve all co-organizers from. Choose from the list, or specify an ID using an expression.', displayOptions: { show: { resource: ['coorganizer'], diff --git a/packages/nodes-base/nodes/GoToWebinar/descriptions/PanelistDescription.ts b/packages/nodes-base/nodes/GoToWebinar/descriptions/PanelistDescription.ts index 41a035fc7f..d77d88e965 100644 --- a/packages/nodes-base/nodes/GoToWebinar/descriptions/PanelistDescription.ts +++ b/packages/nodes-base/nodes/GoToWebinar/descriptions/PanelistDescription.ts @@ -80,7 +80,7 @@ export const panelistFields: INodeProperties[] = [ required: true, default: [], description: - 'Key of the webinar that the panelist will present at. Choose from the list, or specify an ID using an expression.', + 'Key of the webinar that the panelist will present at. Choose from the list, or specify an ID using an expression.', displayOptions: { show: { resource: ['panelist'], @@ -102,7 +102,7 @@ export const panelistFields: INodeProperties[] = [ required: true, default: [], description: - 'Key of the webinar to retrieve all panelists from. Choose from the list, or specify an ID using an expression.', + 'Key of the webinar to retrieve all panelists from. Choose from the list, or specify an ID using an expression.', displayOptions: { show: { resource: ['panelist'], @@ -155,7 +155,7 @@ export const panelistFields: INodeProperties[] = [ required: true, default: [], description: - 'Key of the webinar to delete the panelist from. Choose from the list, or specify an ID using an expression.', + 'Key of the webinar to delete the panelist from. Choose from the list, or specify an ID using an expression.', displayOptions: { show: { resource: ['panelist'], @@ -191,7 +191,7 @@ export const panelistFields: INodeProperties[] = [ required: true, default: [], description: - 'Key of the webinar to reinvite the panelist to. Choose from the list, or specify an ID using an expression.', + 'Key of the webinar to reinvite the panelist to. Choose from the list, or specify an ID using an expression.', displayOptions: { show: { resource: ['panelist'], diff --git a/packages/nodes-base/nodes/GoToWebinar/descriptions/RegistrantDescription.ts b/packages/nodes-base/nodes/GoToWebinar/descriptions/RegistrantDescription.ts index c774b21666..8b6451ca8c 100644 --- a/packages/nodes-base/nodes/GoToWebinar/descriptions/RegistrantDescription.ts +++ b/packages/nodes-base/nodes/GoToWebinar/descriptions/RegistrantDescription.ts @@ -51,7 +51,7 @@ export const registrantFields: INodeProperties[] = [ required: true, default: [], description: - 'Key of the webinar of the registrant to create. Choose from the list, or specify an ID using an expression.', + 'Key of the webinar of the registrant to create. Choose from the list, or specify an ID using an expression.', displayOptions: { show: { resource: ['registrant'], @@ -191,7 +191,7 @@ export const registrantFields: INodeProperties[] = [ name: 'questionKey', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getRegistranMultiChoiceQuestions', loadOptionsDependsOn: ['webinarKey'], @@ -275,7 +275,7 @@ export const registrantFields: INodeProperties[] = [ name: 'questionKey', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getRegistranSimpleQuestions', loadOptionsDependsOn: ['webinarKey'], @@ -316,7 +316,7 @@ export const registrantFields: INodeProperties[] = [ required: true, default: [], description: - 'The key of the webinar to retrieve registrants from. Choose from the list, or specify an ID using an expression.', + 'The key of the webinar to retrieve registrants from. Choose from the list, or specify an ID using an expression.', displayOptions: { show: { resource: ['registrant'], @@ -369,7 +369,7 @@ export const registrantFields: INodeProperties[] = [ required: true, default: [], description: - 'Key of the webinar of the registrant to delete. Choose from the list, or specify an ID using an expression.', + 'Key of the webinar of the registrant to delete. Choose from the list, or specify an ID using an expression.', displayOptions: { show: { resource: ['registrant'], @@ -405,7 +405,7 @@ export const registrantFields: INodeProperties[] = [ required: true, default: [], description: - 'Key of the webinar of the registrant to retrieve. Choose from the list, or specify an ID using an expression.', + 'Key of the webinar of the registrant to retrieve. Choose from the list, or specify an ID using an expression.', displayOptions: { show: { resource: ['registrant'], diff --git a/packages/nodes-base/nodes/GoToWebinar/descriptions/SessionDescription.ts b/packages/nodes-base/nodes/GoToWebinar/descriptions/SessionDescription.ts index 269d7ef2e0..685c3e5cff 100644 --- a/packages/nodes-base/nodes/GoToWebinar/descriptions/SessionDescription.ts +++ b/packages/nodes-base/nodes/GoToWebinar/descriptions/SessionDescription.ts @@ -119,7 +119,7 @@ export const sessionFields: INodeProperties[] = [ }, default: {}, description: - 'Webinar by which to filter the sessions to retrieve. Choose from the list, or specify an ID using an expression.', + 'Webinar by which to filter the sessions to retrieve. Choose from the list, or specify an ID using an expression.', }, ], }, @@ -137,7 +137,7 @@ export const sessionFields: INodeProperties[] = [ required: true, default: [], description: - 'Key of the webinar to which the session belongs. Choose from the list, or specify an ID using an expression.', + 'Key of the webinar to which the session belongs. Choose from the list, or specify an ID using an expression.', displayOptions: { show: { resource: ['session'], diff --git a/packages/nodes-base/nodes/GoToWebinar/descriptions/WebinarDescription.ts b/packages/nodes-base/nodes/GoToWebinar/descriptions/WebinarDescription.ts index c85fa8eb49..a7014536e7 100644 --- a/packages/nodes-base/nodes/GoToWebinar/descriptions/WebinarDescription.ts +++ b/packages/nodes-base/nodes/GoToWebinar/descriptions/WebinarDescription.ts @@ -154,7 +154,7 @@ export const webinarFields: INodeProperties[] = [ name: 'timezone', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', default: '', placeholder: '2020-12-11T09:00:00Z', typeOptions: { @@ -456,7 +456,7 @@ export const webinarFields: INodeProperties[] = [ default: '', placeholder: '2020-12-11T09:00:00Z', description: - 'Timezone where the webinar is to take place. Choose from the list, or specify an ID using an expression.', + 'Timezone where the webinar is to take place. Choose from the list, or specify an ID using an expression.', typeOptions: { alwaysOpenEditWindow: true, loadOptionsMethod: 'getTimezones', diff --git a/packages/nodes-base/nodes/Gong/GenericFunctions.ts b/packages/nodes-base/nodes/Gong/GenericFunctions.ts new file mode 100644 index 0000000000..8c9069959b --- /dev/null +++ b/packages/nodes-base/nodes/Gong/GenericFunctions.ts @@ -0,0 +1,227 @@ +import get from 'lodash/get'; +import type { + DeclarativeRestApiSettings, + IDataObject, + IExecuteFunctions, + IExecutePaginationFunctions, + IExecuteSingleFunctions, + IHttpRequestMethods, + IHttpRequestOptions, + ILoadOptionsFunctions, + IN8nHttpFullResponse, + INodeExecutionData, + JsonObject, +} from 'n8n-workflow'; +import { NodeApiError } from 'n8n-workflow'; + +export async function gongApiRequest( + this: IExecuteFunctions | ILoadOptionsFunctions, + method: IHttpRequestMethods, + endpoint: string, + body: IDataObject = {}, + query: IDataObject = {}, +) { + const authentication = this.getNodeParameter('authentication', 0) as 'accessToken' | 'oAuth2'; + const credentialsType = authentication === 'oAuth2' ? 'gongOAuth2Api' : 'gongApi'; + const { baseUrl } = await this.getCredentials<{ + baseUrl: string; + }>(credentialsType); + + const options: IHttpRequestOptions = { + method, + url: baseUrl.replace(new RegExp('/$'), '') + endpoint, + json: true, + headers: { + 'Content-Type': 'application/json', + }, + body, + qs: query, + }; + + if (Object.keys(body).length === 0) { + delete options.body; + } + + return await this.helpers.requestWithAuthentication.call(this, credentialsType, options); +} + +export async function gongApiPaginateRequest( + this: IExecuteFunctions | IExecuteSingleFunctions | ILoadOptionsFunctions, + method: IHttpRequestMethods, + endpoint: string, + body: IDataObject = {}, + query: IDataObject = {}, + itemIndex: number = 0, + rootProperty: string | undefined = undefined, +): Promise { + const authentication = this.getNodeParameter('authentication', 0) as 'accessToken' | 'oAuth2'; + const credentialsType = authentication === 'oAuth2' ? 'gongOAuth2Api' : 'gongApi'; + const { baseUrl } = await this.getCredentials<{ + baseUrl: string; + }>(credentialsType); + + const options: IHttpRequestOptions = { + method, + url: baseUrl.replace(new RegExp('/$'), '') + endpoint, + json: true, + headers: { + 'Content-Type': 'application/json', + }, + body, + qs: query, + }; + + if (Object.keys(body).length === 0) { + delete options.body; + } + + const pages = await this.helpers.requestWithAuthenticationPaginated.call( + this, + options, + itemIndex, + { + requestInterval: 340, // Rate limit 3 calls per second + continue: '={{ $response.body.records.cursor }}', + request: { + [method === 'POST' ? 'body' : 'qs']: + '={{ $if($response.body?.records.cursor, { cursor: $response.body.records.cursor }, {}) }}', + url: options.url, + }, + }, + credentialsType, + ); + + if (rootProperty) { + let results: IDataObject[] = []; + for (const page of pages) { + const items = page.body[rootProperty]; + if (items) { + results = results.concat(items); + } + } + return results; + } else { + return pages.flat(); + } +} + +const getCursorPaginator = ( + extractItems: (items: INodeExecutionData[]) => INodeExecutionData[], +) => { + return async function cursorPagination( + this: IExecutePaginationFunctions, + requestOptions: DeclarativeRestApiSettings.ResultOptions, + ): Promise { + let executions: INodeExecutionData[] = []; + let responseData: INodeExecutionData[]; + let nextCursor: string | undefined = undefined; + const returnAll = this.getNodeParameter('returnAll', true) as boolean; + + do { + (requestOptions.options.body as IDataObject).cursor = nextCursor; + responseData = await this.makeRoutingRequest(requestOptions); + const lastItem = responseData[responseData.length - 1].json; + nextCursor = (lastItem.records as IDataObject)?.cursor as string | undefined; + executions = executions.concat(extractItems(responseData)); + } while (returnAll && nextCursor); + + return executions; + }; +}; + +export const extractCalls = (items: INodeExecutionData[]): INodeExecutionData[] => { + const calls: IDataObject[] = items.flatMap((item) => get(item.json, 'calls') as IDataObject[]); + return calls.map((call) => { + const { metaData, ...rest } = call ?? {}; + return { json: { ...(metaData as IDataObject), ...rest } }; + }); +}; + +export const extractUsers = (items: INodeExecutionData[]): INodeExecutionData[] => { + const users: IDataObject[] = items.flatMap((item) => get(item.json, 'users') as IDataObject[]); + return users.map((user) => ({ json: user })); +}; + +export const getCursorPaginatorCalls = () => { + return getCursorPaginator(extractCalls); +}; + +export const getCursorPaginatorUsers = () => { + return getCursorPaginator(extractUsers); +}; + +export async function handleErrorPostReceive( + this: IExecuteSingleFunctions, + data: INodeExecutionData[], + response: IN8nHttpFullResponse, +): Promise { + if (String(response.statusCode).startsWith('4') || String(response.statusCode).startsWith('5')) { + const { resource, operation } = this.getNode().parameters; + + if (resource === 'call') { + if (operation === 'get') { + if (response.statusCode === 404) { + throw new NodeApiError(this.getNode(), response as unknown as JsonObject, { + message: "The required call doesn't match any existing one", + description: "Double-check the value in the parameter 'Call to Get' and try again", + }); + } + } else if (operation === 'getAll') { + if (response.statusCode === 404) { + const primaryUserId = this.getNodeParameter('filters.primaryUserIds', {}) as IDataObject; + if (Object.keys(primaryUserId).length !== 0) { + return [{ json: {} }]; + } + } else if (response.statusCode === 400 || response.statusCode === 500) { + throw new NodeApiError(this.getNode(), response as unknown as JsonObject, { + description: 'Double-check the value(s) in the parameter(s)', + }); + } + } + } else if (resource === 'user') { + if (operation === 'get') { + if (response.statusCode === 404) { + throw new NodeApiError(this.getNode(), response as unknown as JsonObject, { + message: "The required user doesn't match any existing one", + description: "Double-check the value in the parameter 'User to Get' and try again", + }); + } + } else if (operation === 'getAll') { + if (response.statusCode === 404) { + const userIds = this.getNodeParameter('filters.userIds', '') as string; + if (userIds) { + throw new NodeApiError(this.getNode(), response as unknown as JsonObject, { + message: "The Users IDs don't match any existing user", + description: "Double-check the values in the parameter 'Users IDs' and try again", + }); + } + } + } + } + + throw new NodeApiError(this.getNode(), response as unknown as JsonObject); + } + + return data; +} + +export function isValidNumberIds(value: number | number[] | string | string[]): boolean { + if (typeof value === 'number') { + return true; + } + + if (Array.isArray(value) && value.every((item) => typeof item === 'number')) { + return true; + } + + if (typeof value === 'string') { + const parts = value.split(','); + return parts.every((part) => !isNaN(Number(part.trim()))); + } + + if (Array.isArray(value) && value.every((item) => typeof item === 'string')) { + return true; + } + + return false; +} diff --git a/packages/nodes-base/nodes/Gong/Gong.node.json b/packages/nodes-base/nodes/Gong/Gong.node.json new file mode 100644 index 0000000000..be07bbb330 --- /dev/null +++ b/packages/nodes-base/nodes/Gong/Gong.node.json @@ -0,0 +1,18 @@ +{ + "node": "n8n-nodes-base.gong", + "nodeVersion": "1.0", + "codexVersion": "1.0", + "categories": ["Development", "Developer Tools"], + "resources": { + "credentialDocumentation": [ + { + "url": "https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.gong/" + } + ], + "primaryDocumentation": [ + { + "url": "https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.gong/" + } + ] + } +} diff --git a/packages/nodes-base/nodes/Gong/Gong.node.ts b/packages/nodes-base/nodes/Gong/Gong.node.ts new file mode 100644 index 0000000000..81b678f283 --- /dev/null +++ b/packages/nodes-base/nodes/Gong/Gong.node.ts @@ -0,0 +1,171 @@ +import { + NodeConnectionType, + type IDataObject, + type ILoadOptionsFunctions, + type INodeListSearchItems, + type INodeListSearchResult, + type INodeType, + type INodeTypeDescription, +} from 'n8n-workflow'; + +import { callFields, callOperations, userFields, userOperations } from './descriptions'; +import { gongApiRequest } from './GenericFunctions'; + +export class Gong implements INodeType { + description: INodeTypeDescription = { + displayName: 'Gong', + name: 'gong', + icon: 'file:gong.svg', + group: ['transform'], + version: 1, + subtitle: '={{$parameter["operation"] + ": " + $parameter["resource"]}}', + description: 'Interact with Gong API', + defaults: { + name: 'Gong', + }, + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], + credentials: [ + { + name: 'gongApi', + required: true, + displayOptions: { + show: { + authentication: ['accessToken'], + }, + }, + }, + { + name: 'gongOAuth2Api', + required: true, + displayOptions: { + show: { + authentication: ['oAuth2'], + }, + }, + }, + ], + requestDefaults: { + baseURL: '={{ $credentials.baseUrl.replace(new RegExp("/$"), "") }}', + }, + properties: [ + { + displayName: 'Authentication', + name: 'authentication', + type: 'options', + options: [ + { + name: 'Access Token', + value: 'accessToken', + }, + { + name: 'OAuth2', + value: 'oAuth2', + }, + ], + default: 'accessToken', + }, + { + displayName: 'Resource', + name: 'resource', + type: 'options', + noDataExpression: true, + options: [ + { + name: 'Call', + value: 'call', + }, + { + name: 'User', + value: 'user', + }, + ], + default: 'call', + }, + ...callOperations, + ...callFields, + ...userOperations, + ...userFields, + ], + }; + + methods = { + listSearch: { + async getCalls( + this: ILoadOptionsFunctions, + filter?: string, + paginationToken?: string, + ): Promise { + const query: IDataObject = {}; + if (paginationToken) { + query.cursor = paginationToken; + } + + const responseData = await gongApiRequest.call(this, 'GET', '/v2/calls', {}, query); + + const calls: Array<{ + id: string; + title: string; + }> = responseData.calls; + + const results: INodeListSearchItems[] = calls + .map((c) => ({ + name: c.title, + value: c.id, + })) + .filter( + (c) => + !filter || + c.name.toLowerCase().includes(filter.toLowerCase()) || + c.value?.toString() === filter, + ) + .sort((a, b) => { + if (a.name.toLowerCase() < b.name.toLowerCase()) return -1; + if (a.name.toLowerCase() > b.name.toLowerCase()) return 1; + return 0; + }); + + return { results, paginationToken: responseData.records.cursor }; + }, + + async getUsers( + this: ILoadOptionsFunctions, + filter?: string, + paginationToken?: string, + ): Promise { + const query: IDataObject = {}; + if (paginationToken) { + query.cursor = paginationToken; + } + + const responseData = await gongApiRequest.call(this, 'GET', '/v2/users', {}, query); + + const users: Array<{ + id: string; + emailAddress: string; + firstName: string; + lastName: string; + }> = responseData.users; + + const results: INodeListSearchItems[] = users + .map((u) => ({ + name: `${u.firstName} ${u.lastName} (${u.emailAddress})`, + value: u.id, + })) + .filter( + (u) => + !filter || + u.name.toLowerCase().includes(filter.toLowerCase()) || + u.value?.toString() === filter, + ) + .sort((a, b) => { + if (a.name.toLowerCase() < b.name.toLowerCase()) return -1; + if (a.name.toLowerCase() > b.name.toLowerCase()) return 1; + return 0; + }); + + return { results, paginationToken: responseData.records.cursor }; + }, + }, + }; +} diff --git a/packages/nodes-base/nodes/Gong/descriptions/CallDescription.ts b/packages/nodes-base/nodes/Gong/descriptions/CallDescription.ts new file mode 100644 index 0000000000..ab6df9626d --- /dev/null +++ b/packages/nodes-base/nodes/Gong/descriptions/CallDescription.ts @@ -0,0 +1,603 @@ +import type { + IDataObject, + IExecuteSingleFunctions, + IHttpRequestOptions, + IN8nHttpFullResponse, + INodeExecutionData, + INodeProperties, +} from 'n8n-workflow'; +import { NodeApiError } from 'n8n-workflow'; + +import { + getCursorPaginatorCalls, + gongApiPaginateRequest, + isValidNumberIds, + handleErrorPostReceive, + extractCalls, +} from '../GenericFunctions'; + +export const callOperations: INodeProperties[] = [ + { + displayName: 'Operation', + name: 'operation', + type: 'options', + noDataExpression: true, + displayOptions: { + show: { + resource: ['call'], + }, + }, + options: [ + { + name: 'Get', + value: 'get', + description: 'Retrieve data for a specific call', + routing: { + request: { + method: 'POST', + url: '/v2/calls/extensive', + ignoreHttpStatusErrors: true, + }, + output: { + postReceive: [handleErrorPostReceive], + }, + }, + action: 'Get call', + }, + { + name: 'Get Many', + value: 'getAll', + description: 'Retrieve a list of calls', + routing: { + request: { + method: 'POST', + url: '/v2/calls/extensive', + body: { + filter: {}, + }, + ignoreHttpStatusErrors: true, + }, + output: { + postReceive: [handleErrorPostReceive], + }, + }, + action: 'Get many calls', + }, + ], + default: 'getAll', + }, +]; + +const getFields: INodeProperties[] = [ + { + displayName: 'Call to Get', + name: 'call', + default: { + mode: 'list', + value: '', + }, + displayOptions: { + show: { + resource: ['call'], + operation: ['get'], + }, + }, + modes: [ + { + displayName: 'From List', + name: 'list', + type: 'list', + typeOptions: { + searchListMethod: 'getCalls', + searchable: true, + }, + }, + { + displayName: 'By ID', + name: 'id', + placeholder: 'e.g. 7782342274025937895', + type: 'string', + validation: [ + { + type: 'regex', + properties: { + regex: '[0-9]{1,20}', + errorMessage: 'Not a valid Gong Call ID', + }, + }, + ], + }, + { + displayName: 'By URL', + name: 'url', + extractValue: { + type: 'regex', + regex: 'https:\\/\\/[a-zA-Z0-9-]+\\.app\\.gong\\.io\\/call\\?id=([0-9]{1,20})', + }, + placeholder: 'e.g. https://subdomain.app.gong.io/call?id=7782342274025937895', + type: 'string', + validation: [ + { + type: 'regex', + properties: { + regex: 'https:\\/\\/[a-zA-Z0-9-]+\\.app\\.gong\\.io\\/call\\?id=([0-9]{1,20})', + errorMessage: 'Not a valid Gong URL', + }, + }, + ], + }, + ], + required: true, + routing: { + send: { + type: 'body', + property: 'filter.callIds', + propertyInDotNotation: true, + value: '={{ [$value] }}', + }, + output: { + postReceive: [ + { + type: 'rootProperty', + properties: { + property: 'calls', + }, + }, + ], + }, + }, + type: 'resourceLocator', + }, + { + displayName: 'Options', + name: 'options', + default: {}, + displayOptions: { + show: { + resource: ['call'], + operation: ['get'], + }, + }, + options: [ + { + displayName: 'Call Data to Include', + name: 'properties', + type: 'multiOptions', + default: [], + description: + 'The Call properties to include in the returned results. Choose from a list, or specify IDs using an expression.', + options: [ + { + name: 'Action Items', + value: 'pointsOfInterest', + description: 'Call points of interest', + }, + { + name: 'Audio and Video URLs', + value: 'media', + description: 'Audio and video URL of the call. The URLs will be available for 8 hours.', + }, + { + name: 'Brief', + value: 'brief', + description: 'Spotlight call brief', + routing: { + send: { + type: 'body', + property: 'contentSelector.exposedFields.content.brief', + propertyInDotNotation: true, + value: '={{ $value }}', + }, + }, + }, + { + name: 'Comments', + value: 'publicComments', + description: 'Public comments made for this call', + }, + { + name: 'Highlights', + value: 'highlights', + description: 'Call highlights', + }, + { + name: 'Keypoints', + value: 'keyPoints', + description: 'Key points of the call', + }, + { + name: 'Outcome', + value: 'callOutcome', + description: 'Outcome of the call', + }, + { + name: 'Outline', + value: 'outline', + description: 'Call outline', + }, + { + name: 'Participants', + value: 'parties', + description: 'Information about the participants of the call', + }, + { + name: 'Structure', + value: 'structure', + description: 'Call agenda', + }, + { + name: 'Topics', + value: 'topics', + description: 'Duration of call topics', + }, + { + name: 'Trackers', + value: 'trackers', + description: 'Smart tracker and keyword tracker information for the call', + }, + { + name: 'Transcript', + value: 'transcript', + description: 'Information about the participants', + }, + ], + routing: { + send: { + preSend: [ + async function ( + this: IExecuteSingleFunctions, + requestOptions: IHttpRequestOptions, + ): Promise { + const contentProperties = [ + 'pointsOfInterest', + 'brief', + 'highlights', + 'keyPoints', + 'outline', + 'callOutcome', + 'structure', + 'trackers', + 'topics', + ]; + const exposedFieldsProperties = ['media', 'parties']; + const collaborationProperties = ['publicComments']; + + const properties = this.getNodeParameter('options.properties') as string[]; + const contentSelector = { exposedFields: {} } as any; + for (const property of properties) { + if (exposedFieldsProperties.includes(property)) { + contentSelector.exposedFields[property] = true; + } else if (contentProperties.includes(property)) { + contentSelector.exposedFields.content ??= {}; + contentSelector.exposedFields.content[property] = true; + } else if (collaborationProperties.includes(property)) { + contentSelector.exposedFields.collaboration ??= {}; + contentSelector.exposedFields.collaboration[property] = true; + } + } + + requestOptions.body ||= {}; + Object.assign(requestOptions.body, { contentSelector }); + return requestOptions; + }, + ], + }, + output: { + postReceive: [ + async function ( + this: IExecuteSingleFunctions, + items: INodeExecutionData[], + _responseData: IN8nHttpFullResponse, + ): Promise { + const properties = this.getNodeParameter('options.properties') as string[]; + if (properties.includes('transcript')) { + for (const item of items) { + const callTranscripts = await gongApiPaginateRequest.call( + this, + 'POST', + '/v2/calls/transcript', + { filter: { callIds: [(item.json.metaData as IDataObject).id] } }, + {}, + item.index ?? 0, + 'callTranscripts', + ); + item.json.transcript = callTranscripts?.length + ? callTranscripts[0].transcript + : []; + } + } + return items; + }, + ], + }, + }, + }, + ], + placeholder: 'Add Option', + type: 'collection', + }, +]; + +const getAllFields: INodeProperties[] = [ + { + displayName: 'Return All', + name: 'returnAll', + default: false, + description: 'Whether to return all results or only up to a given limit', + displayOptions: { + show: { + resource: ['call'], + operation: ['getAll'], + }, + }, + routing: { + send: { + paginate: '={{ $value }}', + }, + operations: { + pagination: getCursorPaginatorCalls(), + }, + }, + type: 'boolean', + }, + { + displayName: 'Limit', + name: 'limit', + default: 50, + description: 'Max number of results to return', + displayOptions: { + show: { + resource: ['call'], + operation: ['getAll'], + returnAll: [false], + }, + }, + routing: { + output: { + postReceive: [ + async function ( + this: IExecuteSingleFunctions, + items: INodeExecutionData[], + _response: IN8nHttpFullResponse, + ): Promise { + return extractCalls(items); + }, + { + type: 'limit', + properties: { + maxResults: '={{ $value }}', + }, + }, + ], + }, + }, + type: 'number', + typeOptions: { + minValue: 1, + }, + validateType: 'number', + }, + { + displayName: 'Filters', + name: 'filters', + default: {}, + displayOptions: { + show: { + resource: ['call'], + operation: ['getAll'], + }, + }, + options: [ + { + displayName: 'After', + name: 'fromDateTime', + default: '', + description: + 'Returns calls that started on or after the specified date and time. If not provided, list starts with earliest call. For web-conference calls recorded by Gong, the date denotes its scheduled time, otherwise, it denotes its actual start time.', + placeholder: 'e.g. 2018-02-18T02:30:00-07:00 or 2018-02-18T08:00:00Z', + routing: { + send: { + type: 'body', + property: 'filter.fromDateTime', + propertyInDotNotation: true, + value: '={{ new Date($value).toISOString() }}', + }, + }, + type: 'dateTime', + validateType: 'dateTime', + }, + { + displayName: 'Before', + name: 'toDateTime', + default: '', + description: + 'Returns calls that started up to but excluding specified date and time. If not provided, list ends with most recent call. For web-conference calls recorded by Gong, the date denotes its scheduled time, otherwise, it denotes its actual start time.', + placeholder: 'e.g. 2018-02-18T02:30:00-07:00 or 2018-02-18T08:00:00Z', + routing: { + send: { + type: 'body', + property: 'filter.toDateTime', + propertyInDotNotation: true, + value: '={{ new Date($value).toISOString() }}', + }, + }, + type: 'dateTime', + validateType: 'dateTime', + }, + { + displayName: 'Workspace ID', + name: 'workspaceId', + default: '', + description: 'Return only the calls belonging to this workspace', + placeholder: 'e.g. 623457276584334', + routing: { + send: { + type: 'body', + property: 'filter.workspaceId', + propertyInDotNotation: true, + value: '={{ $value }}', + }, + }, + type: 'string', + validateType: 'number', + }, + { + displayName: 'Call IDs', + name: 'callIds', + default: '', + description: 'List of calls IDs to be filtered', + hint: 'Comma separated list of IDs, array of strings can be set in expression', + routing: { + send: { + preSend: [ + async function ( + this: IExecuteSingleFunctions, + requestOptions: IHttpRequestOptions, + ): Promise { + const callIdsParam = this.getNodeParameter('filters.callIds') as + | number + | number[] + | string + | string[]; + if (callIdsParam && !isValidNumberIds(callIdsParam)) { + throw new NodeApiError(this.getNode(), { + message: 'Call IDs must be numeric', + description: "Double-check the value in the parameter 'Call IDs' and try again", + }); + } + + const callIds = Array.isArray(callIdsParam) + ? callIdsParam.map((x) => x.toString()) + : callIdsParam + .toString() + .split(',') + .map((x) => x.trim()); + + requestOptions.body ||= {}; + (requestOptions.body as IDataObject).filter ||= {}; + Object.assign((requestOptions.body as IDataObject).filter as IDataObject, { + callIds, + }); + + return requestOptions; + }, + ], + }, + }, + placeholder: 'e.g. 7782342274025937895', + type: 'string', + }, + { + displayName: 'Organizer', + name: 'primaryUserIds', + default: { + mode: 'list', + value: '', + }, + description: 'Return only the calls hosted by the specified user', + modes: [ + { + displayName: 'From List', + name: 'list', + type: 'list', + typeOptions: { + searchListMethod: 'getUsers', + searchable: true, + }, + }, + { + displayName: 'By ID', + name: 'id', + placeholder: 'e.g. 7782342274025937895', + type: 'string', + validation: [ + { + type: 'regex', + properties: { + regex: '[0-9]{1,20}', + errorMessage: 'Not a valid Gong User ID', + }, + }, + ], + }, + ], + routing: { + send: { + type: 'body', + property: 'filter.primaryUserIds', + propertyInDotNotation: true, + value: '={{ [$value] }}', + }, + }, + type: 'resourceLocator', + }, + ], + placeholder: 'Add Filter', + type: 'collection', + }, + { + displayName: 'Options', + name: 'options', + default: {}, + displayOptions: { + show: { + resource: ['call'], + operation: ['getAll'], + }, + }, + options: [ + { + displayName: 'Call Data to Include', + name: 'properties', + type: 'multiOptions', + default: [], + description: + 'The Call properties to include in the returned results. Choose from a list, or specify IDs using an expression.', + options: [ + { + name: 'Participants', + value: 'parties', + description: 'Information about the participants of the call', + }, + { + name: 'Topics', + value: 'topics', + description: 'Information about the topics of the call', + }, + ], + routing: { + send: { + preSend: [ + async function ( + this: IExecuteSingleFunctions, + requestOptions: IHttpRequestOptions, + ): Promise { + const contentProperties = ['topics']; + const exposedFieldsProperties = ['parties']; + + const properties = this.getNodeParameter('options.properties') as string[]; + const contentSelector = { exposedFields: {} } as any; + for (const property of properties) { + if (exposedFieldsProperties.includes(property)) { + contentSelector.exposedFields[property] = true; + } else if (contentProperties.includes(property)) { + contentSelector.exposedFields.content ??= {}; + contentSelector.exposedFields.content[property] = true; + } + } + + requestOptions.body ||= {}; + Object.assign(requestOptions.body, { contentSelector }); + return requestOptions; + }, + ], + }, + }, + }, + ], + placeholder: 'Add Option', + type: 'collection', + }, +]; + +export const callFields: INodeProperties[] = [...getFields, ...getAllFields]; diff --git a/packages/nodes-base/nodes/Gong/descriptions/UserDescription.ts b/packages/nodes-base/nodes/Gong/descriptions/UserDescription.ts new file mode 100644 index 0000000000..38fb847b90 --- /dev/null +++ b/packages/nodes-base/nodes/Gong/descriptions/UserDescription.ts @@ -0,0 +1,288 @@ +import type { + IDataObject, + IExecuteSingleFunctions, + IHttpRequestOptions, + INodeProperties, +} from 'n8n-workflow'; +import { NodeApiError } from 'n8n-workflow'; + +import { + getCursorPaginatorUsers, + isValidNumberIds, + handleErrorPostReceive, +} from '../GenericFunctions'; + +export const userOperations: INodeProperties[] = [ + { + displayName: 'Operation', + name: 'operation', + type: 'options', + noDataExpression: true, + displayOptions: { + show: { + resource: ['user'], + }, + }, + options: [ + { + name: 'Get', + value: 'get', + description: 'Retrieve data for a specific user', + action: 'Get user', + routing: { + request: { + method: 'POST', + url: '/v2/users/extensive', + ignoreHttpStatusErrors: true, + }, + output: { + postReceive: [handleErrorPostReceive], + }, + }, + }, + { + name: 'Get Many', + value: 'getAll', + description: 'Retrieve a list of users', + action: 'Get many users', + routing: { + request: { + method: 'POST', + url: '/v2/users/extensive', + body: { + filter: {}, + }, + ignoreHttpStatusErrors: true, + }, + output: { + postReceive: [handleErrorPostReceive], + }, + }, + }, + ], + default: 'get', + }, +]; + +const getOperation: INodeProperties[] = [ + { + displayName: 'User to Get', + name: 'user', + default: { + mode: 'list', + value: '', + }, + displayOptions: { + show: { + resource: ['user'], + operation: ['get'], + }, + }, + required: true, + modes: [ + { + displayName: 'From List', + name: 'list', + type: 'list', + typeOptions: { + searchListMethod: 'getUsers', + searchable: true, + }, + }, + { + displayName: 'By ID', + name: 'id', + placeholder: 'e.g. 7782342274025937895', + type: 'string', + validation: [ + { + type: 'regex', + properties: { + regex: '[0-9]{1,20}', + errorMessage: 'Not a valid Gong User ID', + }, + }, + ], + }, + ], + routing: { + send: { + type: 'body', + property: 'filter.userIds', + propertyInDotNotation: true, + value: '={{ [$value] }}', + }, + output: { + postReceive: [ + { + type: 'rootProperty', + properties: { + property: 'users', + }, + }, + ], + }, + }, + type: 'resourceLocator', + }, +]; + +const getAllOperation: INodeProperties[] = [ + { + displayName: 'Return All', + name: 'returnAll', + default: false, + description: 'Whether to return all results or only up to a given limit', + displayOptions: { + show: { + resource: ['user'], + operation: ['getAll'], + }, + }, + routing: { + send: { + paginate: '={{ $value }}', + }, + operations: { + pagination: getCursorPaginatorUsers(), + }, + }, + type: 'boolean', + validateType: 'boolean', + }, + { + displayName: 'Limit', + name: 'limit', + default: 50, + description: 'Max number of results to return', + displayOptions: { + show: { + resource: ['user'], + operation: ['getAll'], + returnAll: [false], + }, + }, + routing: { + output: { + postReceive: [ + { + type: 'rootProperty', + properties: { + property: 'users', + }, + }, + { + type: 'limit', + properties: { + maxResults: '={{ $value }}', + }, + }, + ], + }, + }, + type: 'number', + typeOptions: { + minValue: 1, + }, + validateType: 'number', + }, + { + displayName: 'Filters', + name: 'filters', + default: {}, + displayOptions: { + show: { + resource: ['user'], + operation: ['getAll'], + }, + }, + options: [ + { + displayName: 'Created After', + name: 'createdFromDateTime', + default: '', + description: + 'An optional user creation time lower limit, if supplied the API will return only the users created at or after this time', + placeholder: 'e.g. 2018-02-18T02:30:00-07:00 or 2018-02-18T08:00:00Z', + routing: { + send: { + type: 'body', + property: 'filter.createdFromDateTime', + propertyInDotNotation: true, + value: '={{ new Date($value).toISOString() }}', + }, + }, + type: 'dateTime', + validateType: 'dateTime', + }, + { + displayName: 'Created Before', + name: 'createdToDateTime', + default: '', + description: + 'An optional user creation time upper limit, if supplied the API will return only the users created before this time', + placeholder: 'e.g. 2018-02-18T02:30:00-07:00 or 2018-02-18T08:00:00Z', + routing: { + send: { + type: 'body', + property: 'filter.createdToDateTime', + propertyInDotNotation: true, + value: '={{ new Date($value).toISOString() }}', + }, + }, + type: 'dateTime', + validateType: 'dateTime', + }, + { + displayName: 'User IDs', + name: 'userIds', + default: '', + description: "Set of Gong's unique numeric identifiers for the users (up to 20 digits)", + hint: 'Comma separated list of IDs, array of strings can be set in expression', + routing: { + send: { + preSend: [ + async function ( + this: IExecuteSingleFunctions, + requestOptions: IHttpRequestOptions, + ): Promise { + const userIdsParam = this.getNodeParameter('filters.userIds') as + | number + | number[] + | string + | string[]; + if (userIdsParam && !isValidNumberIds(userIdsParam)) { + throw new NodeApiError(this.getNode(), { + message: 'User IDs must be numeric', + description: "Double-check the value in the parameter 'User IDs' and try again", + }); + } + + const userIds = Array.isArray(userIdsParam) + ? userIdsParam.map((x) => x.toString()) + : userIdsParam + .toString() + .split(',') + .map((x) => x.trim()); + + requestOptions.body ||= {}; + (requestOptions.body as IDataObject).filter ||= {}; + Object.assign((requestOptions.body as IDataObject).filter as IDataObject, { + userIds, + }); + + return requestOptions; + }, + ], + }, + }, + placeholder: 'e.g. 7782342274025937895', + type: 'string', + }, + ], + placeholder: 'Add Filter', + type: 'collection', + }, +]; + +export const userFields: INodeProperties[] = [...getOperation, ...getAllOperation]; diff --git a/packages/nodes-base/nodes/Gong/descriptions/index.ts b/packages/nodes-base/nodes/Gong/descriptions/index.ts new file mode 100644 index 0000000000..ff9bc4319b --- /dev/null +++ b/packages/nodes-base/nodes/Gong/descriptions/index.ts @@ -0,0 +1,2 @@ +export * from './CallDescription'; +export * from './UserDescription'; diff --git a/packages/nodes-base/nodes/Gong/gong.svg b/packages/nodes-base/nodes/Gong/gong.svg new file mode 100644 index 0000000000..044aba4e03 --- /dev/null +++ b/packages/nodes-base/nodes/Gong/gong.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/packages/nodes-base/nodes/Gong/test/Gong.node.test.ts b/packages/nodes-base/nodes/Gong/test/Gong.node.test.ts new file mode 100644 index 0000000000..d4e3e307fd --- /dev/null +++ b/packages/nodes-base/nodes/Gong/test/Gong.node.test.ts @@ -0,0 +1,1079 @@ +import { executeWorkflow } from '@test/nodes/ExecuteWorkflow'; +import * as Helpers from '@test/nodes/Helpers'; +import type { WorkflowTestData } from '@test/nodes/types'; +import type { + ICredentialDataDecryptedObject, + IDataObject, + IHttpRequestOptions, +} from 'n8n-workflow'; +import { NodeConnectionType } from 'n8n-workflow'; +import nock from 'nock'; + +import { gongApiResponse, gongNodeResponse } from './mocks'; +import { FAKE_CREDENTIALS_DATA } from '../../../test/nodes/FakeCredentialsMap'; + +describe('Gong Node', () => { + const baseUrl = 'https://api.gong.io'; + + beforeEach(() => { + // https://github.com/nock/nock/issues/2057#issuecomment-663665683 + if (!nock.isActive()) { + nock.activate(); + } + }); + + describe('Credentials', () => { + const tests: WorkflowTestData[] = [ + { + description: 'should use correct credentials', + input: { + workflowData: { + nodes: [ + { + parameters: {}, + id: '416e4fc1-5055-4e61-854e-a6265256ac26', + name: "When clicking 'Test workflow'", + type: 'n8n-nodes-base.manualTrigger', + position: [820, 380], + typeVersion: 1, + }, + { + parameters: { + operation: 'get', + call: { + __rl: true, + value: '7782342274025937895', + mode: 'id', + }, + options: {}, + requestOptions: {}, + }, + id: 'c87d72ec-0683-4e32-9829-5e6ea1d1ee7d', + name: 'Gong gongApi', + type: 'n8n-nodes-base.gong', + typeVersion: 1, + position: [1040, 380], + credentials: { + gongApi: { + id: '1', + name: 'Gong account', + }, + }, + }, + { + parameters: { + authentication: 'oAuth2', + operation: 'get', + call: { + __rl: true, + value: '7782342274025937896', + mode: 'id', + }, + options: {}, + requestOptions: {}, + }, + id: 'c87d72ec-0683-4e32-9829-5e6ea1d1ee7d', + name: 'Gong gongOAuth2Api', + type: 'n8n-nodes-base.gong', + typeVersion: 1, + position: [1040, 380], + credentials: { + gongOAuth2Api: { + id: '2', + name: 'Gong account2', + }, + }, + }, + ], + connections: { + "When clicking 'Test workflow'": { + main: [ + [ + { + node: 'Gong gongApi', + type: NodeConnectionType.Main, + index: 0, + }, + ], + ], + }, + 'Gong gongApi': { + main: [ + [ + { + node: 'Gong gongOAuth2Api', + type: NodeConnectionType.Main, + index: 0, + }, + ], + ], + }, + }, + }, + }, + output: { + nodeExecutionOrder: ['Start'], + nodeData: { + 'Gong gongApi': [[{ json: { metaData: gongNodeResponse.getCall[0].json.metaData } }]], + 'Gong gongOAuth2Api': [ + [{ json: { metaData: gongNodeResponse.getCall[0].json.metaData } }], + ], + }, + }, + }, + ]; + + beforeAll(() => { + nock.disableNetConnect(); + + jest + .spyOn(Helpers.CredentialsHelper.prototype, 'authenticate') + .mockImplementation( + async ( + credentials: ICredentialDataDecryptedObject, + typeName: string, + requestParams: IHttpRequestOptions, + ): Promise => { + if (typeName === 'gongApi') { + return { + ...requestParams, + headers: { + authorization: + 'basic ' + + Buffer.from(`${credentials.accessKey}:${credentials.accessKeySecret}`).toString( + 'base64', + ), + }, + }; + } else if (typeName === 'gongOAuth2Api') { + return { + ...requestParams, + headers: { + authorization: + 'bearer ' + (credentials.oauthTokenData as IDataObject).access_token, + }, + }; + } else { + return requestParams; + } + }, + ); + }); + + afterAll(() => { + nock.restore(); + jest.restoreAllMocks(); + }); + + nock(baseUrl) + .post('/v2/calls/extensive', { filter: { callIds: ['7782342274025937895'] } }) + .matchHeader( + 'authorization', + 'basic ' + + Buffer.from( + `${FAKE_CREDENTIALS_DATA.gongApi.accessKey}:${FAKE_CREDENTIALS_DATA.gongApi.accessKeySecret}`, + ).toString('base64'), + ) + .reply(200, { + ...gongApiResponse.postCallsExtensive, + records: {}, + calls: [{ metaData: gongApiResponse.postCallsExtensive.calls[0].metaData }], + }) + .post('/v2/calls/extensive', { filter: { callIds: ['7782342274025937896'] } }) + .matchHeader( + 'authorization', + 'bearer ' + FAKE_CREDENTIALS_DATA.gongOAuth2Api.oauthTokenData.access_token, + ) + .reply(200, { + ...gongApiResponse.postCallsExtensive, + records: {}, + calls: [{ metaData: gongApiResponse.postCallsExtensive.calls[0].metaData }], + }); + + const nodeTypes = Helpers.setup(tests); + + test.each(tests)('$description', async (testData) => { + const { result } = await executeWorkflow(testData, nodeTypes); + const resultNodeData = Helpers.getResultNodeData(result, testData); + resultNodeData.forEach(({ nodeName, resultData }) => + expect(resultData).toEqual(testData.output.nodeData[nodeName]), + ); + expect(result.finished).toEqual(true); + }); + }); + + describe('Call description', () => { + const tests: WorkflowTestData[] = [ + { + description: 'should get call with no options true', + input: { + workflowData: { + nodes: [ + { + parameters: {}, + id: '416e4fc1-5055-4e61-854e-a6265256ac26', + name: "When clicking 'Test workflow'", + type: 'n8n-nodes-base.manualTrigger', + position: [820, 380], + typeVersion: 1, + }, + { + parameters: { + operation: 'get', + call: { + __rl: true, + value: '7782342274025937895', + mode: 'id', + }, + options: {}, + requestOptions: {}, + }, + id: 'c87d72ec-0683-4e32-9829-5e6ea1d1ee7d', + name: 'Gong', + type: 'n8n-nodes-base.gong', + typeVersion: 1, + position: [1040, 380], + credentials: { + gongApi: { + id: '1', + name: 'Gong account', + }, + }, + }, + ], + connections: { + "When clicking 'Test workflow'": { + main: [ + [ + { + node: 'Gong', + type: NodeConnectionType.Main, + index: 0, + }, + ], + ], + }, + }, + }, + }, + output: { + nodeExecutionOrder: ['Start'], + nodeData: { + Gong: [[{ json: { metaData: gongNodeResponse.getCall[0].json.metaData } }]], + }, + }, + nock: { + baseUrl, + mocks: [ + { + method: 'post', + path: '/v2/calls/extensive', + statusCode: 200, + requestBody: { filter: { callIds: ['7782342274025937895'] } }, + responseBody: { + ...gongApiResponse.postCallsExtensive, + records: {}, + calls: [{ metaData: gongApiResponse.postCallsExtensive.calls[0].metaData }], + }, + }, + ], + }, + }, + { + description: 'should get call with all options true', + input: { + workflowData: { + nodes: [ + { + parameters: {}, + id: '416e4fc1-5055-4e61-854e-a6265256ac26', + name: "When clicking 'Test workflow'", + type: 'n8n-nodes-base.manualTrigger', + position: [820, 380], + typeVersion: 1, + }, + { + parameters: { + operation: 'get', + call: { + __rl: true, + value: '7782342274025937895', + mode: 'id', + }, + options: { + properties: [ + 'pointsOfInterest', + 'transcript', + 'media', + 'brief', + 'publicComments', + 'highlights', + 'trackers', + 'topics', + 'structure', + 'parties', + 'callOutcome', + 'outline', + 'keyPoints', + ], + }, + requestOptions: {}, + }, + id: 'c87d72ec-0683-4e32-9829-5e6ea1d1ee7d', + name: 'Gong', + type: 'n8n-nodes-base.gong', + typeVersion: 1, + position: [1040, 380], + credentials: { + gongApi: { + id: '1', + name: 'Gong account', + }, + }, + }, + ], + connections: { + "When clicking 'Test workflow'": { + main: [ + [ + { + node: 'Gong', + type: NodeConnectionType.Main, + index: 0, + }, + ], + ], + }, + }, + }, + }, + output: { + nodeExecutionOrder: ['Start'], + nodeData: { + Gong: [gongNodeResponse.getCall], + }, + }, + nock: { + baseUrl, + mocks: [ + { + method: 'post', + path: '/v2/calls/extensive', + statusCode: 200, + requestBody: { + filter: { + callIds: ['7782342274025937895'], + }, + contentSelector: { + exposedFields: { + content: { + pointsOfInterest: true, + brief: true, + highlights: true, + keyPoints: true, + outline: true, + callOutcome: true, + structure: true, + trackers: true, + topics: true, + }, + media: true, + collaboration: { + publicComments: true, + }, + parties: true, + }, + }, + }, + responseBody: { + ...gongApiResponse.postCallsExtensive, + records: {}, + }, + }, + { + method: 'post', + path: '/v2/calls/transcript', + statusCode: 200, + requestBody: { + filter: { + callIds: ['7782342274025937895'], + }, + }, + responseBody: gongApiResponse.postCallsTranscript, + }, + ], + }, + }, + { + description: 'should get all calls with filters', + input: { + workflowData: { + nodes: [ + { + parameters: {}, + id: '416e4fc1-5055-4e61-854e-a6265256ac26', + name: "When clicking 'Test workflow'", + type: 'n8n-nodes-base.manualTrigger', + position: [820, 380], + typeVersion: 1, + }, + { + parameters: { + returnAll: true, + filters: { + fromDateTime: '2024-01-01T00:00:00Z', + toDateTime: '2024-12-31T00:00:00Z', + workspaceId: '3662366901393371750', + callIds: "={{ ['3662366901393371750', '3662366901393371751'] }}", + primaryUserIds: { + __rl: true, + value: '234599484848423', + mode: 'id', + }, + }, + options: { + properties: ['parties', 'topics'], + }, + requestOptions: {}, + }, + id: 'c87d72ec-0683-4e32-9829-5e6ea1d1ee7d', + name: 'Gong', + type: 'n8n-nodes-base.gong', + typeVersion: 1, + position: [1040, 380], + credentials: { + gongApi: { + id: '1', + name: 'Gong account', + }, + }, + }, + ], + connections: { + "When clicking 'Test workflow'": { + main: [ + [ + { + node: 'Gong', + type: NodeConnectionType.Main, + index: 0, + }, + ], + ], + }, + }, + }, + }, + output: { + nodeExecutionOrder: ['Start'], + nodeData: { + Gong: [gongNodeResponse.getAllCall], + }, + }, + nock: { + baseUrl, + mocks: [ + { + method: 'post', + path: '/v2/calls/extensive', + statusCode: 200, + requestBody: { + filter: { + fromDateTime: '2024-01-01T00:00:00.000Z', + toDateTime: '2024-12-31T00:00:00.000Z', + workspaceId: '3662366901393371750', + callIds: ['3662366901393371750', '3662366901393371751'], + primaryUserIds: ['234599484848423'], + }, + contentSelector: { + exposedFields: { + parties: true, + content: { + topics: true, + }, + }, + }, + cursor: undefined, + }, + responseBody: { + ...gongApiResponse.postCallsExtensive, + calls: [ + { + metaData: { + ...gongApiResponse.postCallsExtensive.calls[0].metaData, + parties: [...gongApiResponse.postCallsExtensive.calls[0].parties], + content: { + topics: [...gongApiResponse.postCallsExtensive.calls[0].content.topics], + }, + }, + }, + ], + }, + }, + { + method: 'post', + path: '/v2/calls/extensive', + statusCode: 200, + requestBody: { + filter: { + fromDateTime: '2024-01-01T00:00:00.000Z', + toDateTime: '2024-12-31T00:00:00.000Z', + workspaceId: '3662366901393371750', + callIds: ['3662366901393371750', '3662366901393371751'], + primaryUserIds: ['234599484848423'], + }, + contentSelector: { + exposedFields: { + parties: true, + content: { + topics: true, + }, + }, + }, + cursor: + 'eyJhbGciOiJIUzI1NiJ9.eyJjYWxsSWQiM1M30.6qKwpOcvnuweTZmFRzYdtjs_YwJphJU4QIwWFM', + }, + responseBody: { + ...gongApiResponse.postCallsExtensive, + records: {}, + calls: [ + { + metaData: { + ...gongApiResponse.postCallsExtensive.calls[0].metaData, + id: '7782342274025937896', + url: 'https://app.gong.io/call?id=7782342274025937896', + }, + parties: [...gongApiResponse.postCallsExtensive.calls[0].parties], + content: { + topics: [...gongApiResponse.postCallsExtensive.calls[0].content.topics], + }, + }, + ], + }, + }, + ], + }, + }, + { + description: 'should get limit 50 calls with no options and filters', + input: { + workflowData: { + nodes: [ + { + parameters: {}, + id: '416e4fc1-5055-4e61-854e-a6265256ac26', + name: "When clicking 'Test workflow'", + type: 'n8n-nodes-base.manualTrigger', + position: [820, 380], + typeVersion: 1, + }, + { + parameters: { + filters: {}, + options: {}, + requestOptions: {}, + }, + id: 'c87d72ec-0683-4e32-9829-5e6ea1d1ee7d', + name: 'Gong', + type: 'n8n-nodes-base.gong', + typeVersion: 1, + position: [1040, 380], + credentials: { + gongApi: { + id: '1', + name: 'Gong account', + }, + }, + }, + ], + connections: { + "When clicking 'Test workflow'": { + main: [ + [ + { + node: 'Gong', + type: NodeConnectionType.Main, + index: 0, + }, + ], + ], + }, + }, + }, + }, + output: { + nodeExecutionOrder: ['Start'], + nodeData: { + Gong: [ + Array.from({ length: 50 }, () => ({ ...gongNodeResponse.getAllCallNoOptions[0] })), + ], + }, + }, + nock: { + baseUrl, + mocks: [ + { + method: 'post', + path: '/v2/calls/extensive', + statusCode: 200, + requestBody: { + filter: {}, + }, + responseBody: { + ...gongApiResponse.postCallsExtensive, + calls: Array.from({ length: 100 }, () => ({ + metaData: { ...gongApiResponse.postCallsExtensive.calls[0].metaData }, + })), + }, + }, + ], + }, + }, + { + description: 'should return empty result if no calls found for user', + input: { + workflowData: { + nodes: [ + { + parameters: {}, + id: '416e4fc1-5055-4e61-854e-a6265256ac26', + name: "When clicking 'Test workflow'", + type: 'n8n-nodes-base.manualTrigger', + position: [820, 380], + typeVersion: 1, + }, + { + parameters: { + filters: { + primaryUserIds: { + __rl: true, + value: '234599484848423', + mode: 'id', + }, + }, + options: {}, + requestOptions: {}, + }, + id: 'c87d72ec-0683-4e32-9829-5e6ea1d1ee7d', + name: 'Gong', + type: 'n8n-nodes-base.gong', + typeVersion: 1, + position: [1040, 380], + credentials: { + gongApi: { + id: '1', + name: 'Gong account', + }, + }, + }, + ], + connections: { + "When clicking 'Test workflow'": { + main: [ + [ + { + node: 'Gong', + type: NodeConnectionType.Main, + index: 0, + }, + ], + ], + }, + }, + }, + }, + output: { + nodeExecutionOrder: ['Start'], + nodeData: { + Gong: [[{ json: {} }]], + }, + }, + nock: { + baseUrl, + mocks: [ + { + method: 'post', + path: '/v2/calls/extensive', + statusCode: 404, + requestBody: { + filter: { + primaryUserIds: ['234599484848423'], + }, + cursor: undefined, + }, + responseBody: { + requestId: 'thrhbxbkqiw41ma1cl', + errors: ['No calls found corresponding to the provided filters'], + }, + }, + ], + }, + }, + { + description: 'should handle error response', + input: { + workflowData: { + nodes: [ + { + parameters: {}, + id: '416e4fc1-5055-4e61-854e-a6265256ac26', + name: "When clicking 'Test workflow'", + type: 'n8n-nodes-base.manualTrigger', + position: [820, 380], + typeVersion: 1, + }, + { + parameters: { + filters: { + workspaceId: '623457276584335', + }, + options: {}, + requestOptions: {}, + }, + id: 'c87d72ec-0683-4e32-9829-5e6ea1d1ee7d', + name: 'Gong', + type: 'n8n-nodes-base.gong', + typeVersion: 1, + position: [1040, 380], + credentials: { + gongApi: { + id: '1', + name: 'Gong account', + }, + }, + }, + ], + connections: { + "When clicking 'Test workflow'": { + main: [ + [ + { + node: 'Gong', + type: NodeConnectionType.Main, + index: 0, + }, + ], + ], + }, + }, + }, + }, + output: { + nodeExecutionOrder: ['Start'], + nodeData: { + Gong: [], + }, + }, + nock: { + baseUrl, + mocks: [ + { + method: 'post', + path: '/v2/calls/extensive', + statusCode: 404, + requestBody: { + filter: { + workspaceId: '623457276584335', + }, + }, + responseBody: { + requestId: 'thrhbxbkqiw41ma1cl', + errors: ['No calls found corresponding to the provided filters'], + }, + }, + ], + }, + }, + ]; + + const nodeTypes = Helpers.setup(tests); + + test.each(tests)('$description', async (testData) => { + const { result } = await executeWorkflow(testData, nodeTypes); + + if (testData.description === 'should handle error response') { + // Only matches error message + expect(() => Helpers.getResultNodeData(result, testData)).toThrowError( + 'The resource you are requesting could not be found', + ); + return; + } + + const resultNodeData = Helpers.getResultNodeData(result, testData); + resultNodeData.forEach(({ nodeName, resultData }) => + expect(resultData).toEqual(testData.output.nodeData[nodeName]), + ); + expect(result.finished).toEqual(true); + }); + }); + + describe('User description', () => { + const tests: WorkflowTestData[] = [ + { + description: 'should get user', + input: { + workflowData: { + nodes: [ + { + parameters: {}, + id: '416e4fc1-5055-4e61-854e-a6265256ac26', + name: "When clicking 'Test workflow'", + type: 'n8n-nodes-base.manualTrigger', + position: [820, 380], + typeVersion: 1, + }, + { + parameters: { + resource: 'user', + user: { + __rl: true, + value: '234599484848423', + mode: 'id', + }, + requestOptions: {}, + }, + id: 'c87d72ec-0683-4e32-9829-5e6ea1d1ee7d', + name: 'Gong', + type: 'n8n-nodes-base.gong', + typeVersion: 1, + position: [1040, 380], + credentials: { + gongApi: { + id: '1', + name: 'Gong account', + }, + }, + }, + ], + connections: { + "When clicking 'Test workflow'": { + main: [ + [ + { + node: 'Gong', + type: NodeConnectionType.Main, + index: 0, + }, + ], + ], + }, + }, + }, + }, + output: { + nodeExecutionOrder: ['Start'], + nodeData: { + Gong: [gongNodeResponse.getUser], + }, + }, + nock: { + baseUrl, + mocks: [ + { + method: 'post', + path: '/v2/users/extensive', + statusCode: 200, + requestBody: { filter: { userIds: ['234599484848423'] } }, + responseBody: { + ...gongApiResponse.postUsersExtensive, + records: {}, + }, + }, + ], + }, + }, + { + description: 'should get all users', + input: { + workflowData: { + nodes: [ + { + parameters: {}, + id: '416e4fc1-5055-4e61-854e-a6265256ac26', + name: "When clicking 'Test workflow'", + type: 'n8n-nodes-base.manualTrigger', + position: [820, 380], + typeVersion: 1, + }, + { + parameters: { + resource: 'user', + operation: 'getAll', + returnAll: true, + filters: { + createdFromDateTime: '2024-01-01T00:00:00Z', + createdToDateTime: '2024-12-31T00:00:00Z', + userIds: '234599484848423, 234599484848424', + }, + requestOptions: {}, + }, + id: 'c87d72ec-0683-4e32-9829-5e6ea1d1ee7d', + name: 'Gong', + type: 'n8n-nodes-base.gong', + typeVersion: 1, + position: [1040, 380], + credentials: { + gongApi: { + id: '1', + name: 'Gong account', + }, + }, + }, + ], + connections: { + "When clicking 'Test workflow'": { + main: [ + [ + { + node: 'Gong', + type: NodeConnectionType.Main, + index: 0, + }, + ], + ], + }, + }, + }, + }, + output: { + nodeExecutionOrder: ['Start'], + nodeData: { + Gong: [gongNodeResponse.getAllUser], + }, + }, + nock: { + baseUrl, + mocks: [ + { + method: 'post', + path: '/v2/users/extensive', + statusCode: 200, + requestBody: { + filter: { + createdFromDateTime: '2024-01-01T00:00:00.000Z', + createdToDateTime: '2024-12-31T00:00:00.000Z', + userIds: ['234599484848423', '234599484848424'], + }, + }, + responseBody: gongApiResponse.postUsersExtensive, + }, + { + method: 'post', + path: '/v2/users/extensive', + statusCode: 200, + requestBody: { + filter: { + createdFromDateTime: '2024-01-01T00:00:00.000Z', + createdToDateTime: '2024-12-31T00:00:00.000Z', + userIds: ['234599484848423', '234599484848424'], + }, + cursor: + 'eyJhbGciOiJIUzI1NiJ9.eyJjYWxsSWQiM1M30.6qKwpOcvnuweTZmFRzYdtjs_YwJphJU4QIwWFM', + }, + responseBody: { + ...gongApiResponse.postUsersExtensive, + records: {}, + users: [{ ...gongApiResponse.postUsersExtensive.users[0], id: '234599484848424' }], + }, + }, + ], + }, + }, + { + description: 'should handle error response', + input: { + workflowData: { + nodes: [ + { + parameters: {}, + id: '416e4fc1-5055-4e61-854e-a6265256ac26', + name: "When clicking 'Test workflow'", + type: 'n8n-nodes-base.manualTrigger', + position: [820, 380], + typeVersion: 1, + }, + { + parameters: { + resource: 'user', + operation: 'getAll', + filters: { + userIds: '234599484848423', + }, + requestOptions: {}, + }, + id: 'c87d72ec-0683-4e32-9829-5e6ea1d1ee7d', + name: 'Gong', + type: 'n8n-nodes-base.gong', + typeVersion: 1, + position: [1040, 380], + credentials: { + gongApi: { + id: '1', + name: 'Gong account', + }, + }, + }, + ], + connections: { + "When clicking 'Test workflow'": { + main: [ + [ + { + node: 'Gong', + type: NodeConnectionType.Main, + index: 0, + }, + ], + ], + }, + }, + }, + }, + output: { + nodeExecutionOrder: ['Start'], + nodeData: { + Gong: [], + }, + }, + nock: { + baseUrl, + mocks: [ + { + method: 'post', + path: '/v2/users/extensive', + statusCode: 404, + requestBody: { + filter: { + userIds: ['234599484848423'], + }, + }, + responseBody: { + requestId: '26r8maav84ehguoddd7', + errors: ['The following userIds were not found: 234599484848423'], + }, + }, + ], + }, + }, + ]; + + const nodeTypes = Helpers.setup(tests); + + test.each(tests)('$description', async (testData) => { + const { result } = await executeWorkflow(testData, nodeTypes); + + if (testData.description === 'should handle error response') { + expect(() => Helpers.getResultNodeData(result, testData)).toThrow( + "The Users IDs don't match any existing user", + ); + return; + } + + const resultNodeData = Helpers.getResultNodeData(result, testData); + resultNodeData.forEach(({ nodeName, resultData }) => + expect(resultData).toEqual(testData.output.nodeData[nodeName]), + ); + expect(result.finished).toEqual(true); + }); + }); +}); diff --git a/packages/nodes-base/nodes/Gong/test/mocks.ts b/packages/nodes-base/nodes/Gong/test/mocks.ts new file mode 100644 index 0000000000..621e6c0d72 --- /dev/null +++ b/packages/nodes-base/nodes/Gong/test/mocks.ts @@ -0,0 +1,781 @@ +/* eslint-disable n8n-nodes-base/node-param-display-name-miscased */ +export const gongApiResponse = { + // https://gong.app.gong.io/settings/api/documentation#post-/v2/calls + postCalls: { + requestId: '4al018gzaztcr8nbukw', + callId: '7782342274025937895', + }, + // https://gong.app.gong.io/settings/api/documentation#put-/v2/calls/-id-/media + postCallsMedia: { + requestId: '4al018gzaztcr8nbukw', + callId: '7782342274025937895', + url: 'https://app.gong.io/call?id=7782342274025937895', + }, + // https://gong.app.gong.io/settings/api/documentation#post-/v2/calls/extensive + postCallsExtensive: { + requestId: '4al018gzaztcr8nbukw', + records: { + totalRecords: 263, + currentPageSize: 100, + currentPageNumber: 0, + cursor: 'eyJhbGciOiJIUzI1NiJ9.eyJjYWxsSWQiM1M30.6qKwpOcvnuweTZmFRzYdtjs_YwJphJU4QIwWFM', + }, + calls: [ + { + metaData: { + id: '7782342274025937895', + url: 'https://app.gong.io/call?id=7782342274025937895', + title: 'Example call', + scheduled: 1518863400, + started: 1518863400, + duration: 460, + primaryUserId: '234599484848423', + direction: 'Inbound', + system: 'Outreach', + scope: 'Internal', + media: 'Video', + language: 'eng', + workspaceId: '623457276584334', + sdrDisposition: 'Got the gatekeeper', + clientUniqueId: '7JEHFRGXDDZFEW2FC4U', + customData: 'Conference Call', + purpose: 'Demo Call', + meetingUrl: 'https://zoom.us/j/123', + isPrivate: false, + calendarEventId: 'abcde@google.com', + }, + context: [ + { + system: 'Salesforce', + objects: [ + { + objectType: 'Opportunity', + objectId: '0013601230sV7grAAC', + fields: [ + { + name: 'name', + value: 'Gong Inc.', + }, + ], + timing: 'Now', + }, + ], + }, + ], + parties: [ + { + id: '56825452554556', + emailAddress: 'test@test.com', + name: 'Test User', + title: 'Enterprise Account Executive', + userId: '234599484848423', + speakerId: '6432345678555530067', + context: [ + { + system: 'Salesforce', + objects: [ + { + objectType: 'Contact', + objectId: '0013601230sV7grAAC', + fields: [ + { + name: 'name', + value: 'Gong Inc.', + }, + ], + timing: 'Now', + }, + ], + }, + ], + affiliation: 'Internal', + phoneNumber: '+1 123-567-8989', + methods: ['Invitee'], + }, + ], + content: { + structure: [ + { + name: 'Meeting Setup', + duration: 67, + }, + ], + trackers: [ + { + id: '56825452554556', + name: 'Competitors', + count: 7, + type: 'KEYWORD', + occurrences: [ + { + startTime: 32.56, + speakerId: '234599484848423', + }, + ], + phrases: [ + { + count: 5, + occurrences: [ + { + startTime: 32.56, + speakerId: '234599484848423', + }, + ], + phrase: 'Walmart', + }, + ], + }, + ], + topics: [ + { + name: 'Objections', + duration: 86, + }, + ], + pointsOfInterest: { + actionItems: [ + { + snippetStartTime: 26, + snippetEndTime: 26, + speakerID: '56825452554556', + snippet: + "And I'll send you an invite with a link that you can use at that time as well.", + }, + ], + }, + brief: 'string', + outline: [ + { + section: 'string', + startTime: 0.5, + duration: 0.5, + items: [ + { + text: 'string', + startTime: 0.5, + }, + ], + }, + ], + highlights: [ + { + title: 'string', + items: [ + { + text: 'string', + startTimes: [0.5], + }, + ], + }, + ], + callOutcome: { + id: 'MEETING_BOOKED', + category: 'Answered', + name: 'Meeting booked', + }, + keyPoints: [ + { + text: 'string', + }, + ], + }, + interaction: { + speakers: [ + { + id: '56825452554556', + userId: '234599484848423', + talkTime: 145, + }, + ], + interactionStats: [ + { + name: 'Interactivity', + value: 56, + }, + ], + video: [ + { + name: 'Browser', + duration: 218, + }, + ], + questions: { + companyCount: 0, + nonCompanyCount: 0, + }, + }, + collaboration: { + publicComments: [ + { + id: '6843152929075440037', + audioStartTime: 26, + audioEndTime: 26, + commenterUserId: '234599484848423', + comment: 'new comment', + posted: 1518863400, + inReplyTo: '792390015966656336', + duringCall: false, + }, + ], + }, + media: { + audioUrl: 'http://example.com', + videoUrl: 'http://example.com', + }, + }, + ], + }, + // https://gong.app.gong.io/settings/api/documentation#post-/v2/calls/transcript + postCallsTranscript: { + requestId: '4al018gzaztcr8nbukw', + records: { + totalRecords: 1, + currentPageSize: 1, + currentPageNumber: 0, + }, + callTranscripts: [ + { + callId: '7782342274025937895', + transcript: [ + { + speakerId: '6432345678555530067', + topic: 'Objections', + sentences: [ + { + start: 460230, + end: 462343, + text: 'No wait, I think we should check that out first.', + }, + ], + }, + ], + }, + ], + }, + // https://gong.app.gong.io/settings/api/documentation#post-/v2/users/extensive + postUsersExtensive: { + requestId: '4al018gzaztcr8nbukw', + records: { + totalRecords: 263, + currentPageSize: 100, + currentPageNumber: 0, + cursor: 'eyJhbGciOiJIUzI1NiJ9.eyJjYWxsSWQiM1M30.6qKwpOcvnuweTZmFRzYdtjs_YwJphJU4QIwWFM', + }, + users: [ + { + id: '234599484848423', + emailAddress: 'test@test.com', + created: '2018-02-17T02:30:00-08:00', + active: true, + emailAliases: ['testAlias@test.com'], + trustedEmailAddress: 'test@test.com', + firstName: 'Jon', + lastName: 'Snow', + title: 'Enterprise Account Executive', + phoneNumber: '+1 123-567-8989', + extension: '123', + personalMeetingUrls: ['https://zoom.us/j/123'], + settings: { + webConferencesRecorded: true, + preventWebConferenceRecording: false, + telephonyCallsImported: false, + emailsImported: true, + preventEmailImport: false, + nonRecordedMeetingsImported: true, + gongConnectEnabled: true, + }, + managerId: '563515258458745', + meetingConsentPageUrl: + 'https://join.gong.io/my-company/jon.snow?tkn=MoNpS9tMNt8BK7EZxQpSJl', + spokenLanguages: [ + { + language: 'es-ES', + primary: true, + }, + ], + }, + ], + }, +}; + +export const gongNodeResponse = { + getCall: [ + { + json: { + metaData: { + id: '7782342274025937895', + url: 'https://app.gong.io/call?id=7782342274025937895', + title: 'Example call', + scheduled: 1518863400, + started: 1518863400, + duration: 460, + primaryUserId: '234599484848423', + direction: 'Inbound', + system: 'Outreach', + scope: 'Internal', + media: 'Video', + language: 'eng', + workspaceId: '623457276584334', + sdrDisposition: 'Got the gatekeeper', + clientUniqueId: '7JEHFRGXDDZFEW2FC4U', + customData: 'Conference Call', + purpose: 'Demo Call', + meetingUrl: 'https://zoom.us/j/123', + isPrivate: false, + calendarEventId: 'abcde@google.com', + }, + context: [ + { + system: 'Salesforce', + objects: [ + { + objectType: 'Opportunity', + objectId: '0013601230sV7grAAC', + fields: [ + { + name: 'name', + value: 'Gong Inc.', + }, + ], + timing: 'Now', + }, + ], + }, + ], + parties: [ + { + id: '56825452554556', + emailAddress: 'test@test.com', + name: 'Test User', + title: 'Enterprise Account Executive', + userId: '234599484848423', + speakerId: '6432345678555530067', + context: [ + { + system: 'Salesforce', + objects: [ + { + objectType: 'Contact', + objectId: '0013601230sV7grAAC', + fields: [ + { + name: 'name', + value: 'Gong Inc.', + }, + ], + timing: 'Now', + }, + ], + }, + ], + affiliation: 'Internal', + phoneNumber: '+1 123-567-8989', + methods: ['Invitee'], + }, + ], + content: { + structure: [ + { + name: 'Meeting Setup', + duration: 67, + }, + ], + trackers: [ + { + id: '56825452554556', + name: 'Competitors', + count: 7, + type: 'KEYWORD', + occurrences: [ + { + startTime: 32.56, + speakerId: '234599484848423', + }, + ], + phrases: [ + { + count: 5, + occurrences: [ + { + startTime: 32.56, + speakerId: '234599484848423', + }, + ], + phrase: 'Walmart', + }, + ], + }, + ], + topics: [ + { + name: 'Objections', + duration: 86, + }, + ], + pointsOfInterest: { + actionItems: [ + { + snippetStartTime: 26, + snippetEndTime: 26, + speakerID: '56825452554556', + snippet: + "And I'll send you an invite with a link that you can use at that time as well.", + }, + ], + }, + brief: 'string', + outline: [ + { + section: 'string', + startTime: 0.5, + duration: 0.5, + items: [ + { + text: 'string', + startTime: 0.5, + }, + ], + }, + ], + highlights: [ + { + title: 'string', + items: [ + { + text: 'string', + startTimes: [0.5], + }, + ], + }, + ], + callOutcome: { + id: 'MEETING_BOOKED', + category: 'Answered', + name: 'Meeting booked', + }, + keyPoints: [ + { + text: 'string', + }, + ], + }, + interaction: { + speakers: [ + { + id: '56825452554556', + userId: '234599484848423', + talkTime: 145, + }, + ], + interactionStats: [ + { + name: 'Interactivity', + value: 56, + }, + ], + video: [ + { + name: 'Browser', + duration: 218, + }, + ], + questions: { + companyCount: 0, + nonCompanyCount: 0, + }, + }, + collaboration: { + publicComments: [ + { + id: '6843152929075440037', + audioStartTime: 26, + audioEndTime: 26, + commenterUserId: '234599484848423', + comment: 'new comment', + posted: 1518863400, + inReplyTo: '792390015966656336', + duringCall: false, + }, + ], + }, + media: { + audioUrl: 'http://example.com', + videoUrl: 'http://example.com', + }, + transcript: [ + { + speakerId: '6432345678555530067', + topic: 'Objections', + sentences: [ + { + start: 460230, + end: 462343, + text: 'No wait, I think we should check that out first.', + }, + ], + }, + ], + }, + }, + ], + getAllCall: [ + { + json: { + id: '7782342274025937895', + url: 'https://app.gong.io/call?id=7782342274025937895', + title: 'Example call', + scheduled: 1518863400, + started: 1518863400, + duration: 460, + primaryUserId: '234599484848423', + direction: 'Inbound', + system: 'Outreach', + scope: 'Internal', + media: 'Video', + language: 'eng', + workspaceId: '623457276584334', + sdrDisposition: 'Got the gatekeeper', + clientUniqueId: '7JEHFRGXDDZFEW2FC4U', + customData: 'Conference Call', + purpose: 'Demo Call', + meetingUrl: 'https://zoom.us/j/123', + isPrivate: false, + calendarEventId: 'abcde@google.com', + content: { + topics: [ + { + name: 'Objections', + duration: 86, + }, + ], + }, + parties: [ + { + id: '56825452554556', + emailAddress: 'test@test.com', + name: 'Test User', + title: 'Enterprise Account Executive', + userId: '234599484848423', + speakerId: '6432345678555530067', + context: [ + { + system: 'Salesforce', + objects: [ + { + objectType: 'Contact', + objectId: '0013601230sV7grAAC', + fields: [ + { + name: 'name', + value: 'Gong Inc.', + }, + ], + timing: 'Now', + }, + ], + }, + ], + affiliation: 'Internal', + phoneNumber: '+1 123-567-8989', + methods: ['Invitee'], + }, + ], + }, + }, + { + json: { + id: '7782342274025937896', + url: 'https://app.gong.io/call?id=7782342274025937896', + title: 'Example call', + scheduled: 1518863400, + started: 1518863400, + duration: 460, + primaryUserId: '234599484848423', + direction: 'Inbound', + system: 'Outreach', + scope: 'Internal', + media: 'Video', + language: 'eng', + workspaceId: '623457276584334', + sdrDisposition: 'Got the gatekeeper', + clientUniqueId: '7JEHFRGXDDZFEW2FC4U', + customData: 'Conference Call', + purpose: 'Demo Call', + meetingUrl: 'https://zoom.us/j/123', + isPrivate: false, + calendarEventId: 'abcde@google.com', + content: { + topics: [ + { + name: 'Objections', + duration: 86, + }, + ], + }, + parties: [ + { + id: '56825452554556', + emailAddress: 'test@test.com', + name: 'Test User', + title: 'Enterprise Account Executive', + userId: '234599484848423', + speakerId: '6432345678555530067', + context: [ + { + system: 'Salesforce', + objects: [ + { + objectType: 'Contact', + objectId: '0013601230sV7grAAC', + fields: [ + { + name: 'name', + value: 'Gong Inc.', + }, + ], + timing: 'Now', + }, + ], + }, + ], + affiliation: 'Internal', + phoneNumber: '+1 123-567-8989', + methods: ['Invitee'], + }, + ], + }, + }, + ], + getAllCallNoOptions: [ + { + json: { + id: '7782342274025937895', + url: 'https://app.gong.io/call?id=7782342274025937895', + title: 'Example call', + scheduled: 1518863400, + started: 1518863400, + duration: 460, + primaryUserId: '234599484848423', + direction: 'Inbound', + system: 'Outreach', + scope: 'Internal', + media: 'Video', + language: 'eng', + workspaceId: '623457276584334', + sdrDisposition: 'Got the gatekeeper', + clientUniqueId: '7JEHFRGXDDZFEW2FC4U', + customData: 'Conference Call', + purpose: 'Demo Call', + meetingUrl: 'https://zoom.us/j/123', + isPrivate: false, + calendarEventId: 'abcde@google.com', + }, + }, + ], + getUser: [ + { + json: { + id: '234599484848423', + emailAddress: 'test@test.com', + created: '2018-02-17T02:30:00-08:00', + active: true, + emailAliases: ['testAlias@test.com'], + trustedEmailAddress: 'test@test.com', + firstName: 'Jon', + lastName: 'Snow', + title: 'Enterprise Account Executive', + phoneNumber: '+1 123-567-8989', + extension: '123', + personalMeetingUrls: ['https://zoom.us/j/123'], + settings: { + webConferencesRecorded: true, + preventWebConferenceRecording: false, + telephonyCallsImported: false, + emailsImported: true, + preventEmailImport: false, + nonRecordedMeetingsImported: true, + gongConnectEnabled: true, + }, + managerId: '563515258458745', + meetingConsentPageUrl: + 'https://join.gong.io/my-company/jon.snow?tkn=MoNpS9tMNt8BK7EZxQpSJl', + spokenLanguages: [ + { + language: 'es-ES', + primary: true, + }, + ], + }, + }, + ], + getAllUser: [ + { + json: { + id: '234599484848423', + emailAddress: 'test@test.com', + created: '2018-02-17T02:30:00-08:00', + active: true, + emailAliases: ['testAlias@test.com'], + trustedEmailAddress: 'test@test.com', + firstName: 'Jon', + lastName: 'Snow', + title: 'Enterprise Account Executive', + phoneNumber: '+1 123-567-8989', + extension: '123', + personalMeetingUrls: ['https://zoom.us/j/123'], + settings: { + webConferencesRecorded: true, + preventWebConferenceRecording: false, + telephonyCallsImported: false, + emailsImported: true, + preventEmailImport: false, + nonRecordedMeetingsImported: true, + gongConnectEnabled: true, + }, + managerId: '563515258458745', + meetingConsentPageUrl: + 'https://join.gong.io/my-company/jon.snow?tkn=MoNpS9tMNt8BK7EZxQpSJl', + spokenLanguages: [ + { + language: 'es-ES', + primary: true, + }, + ], + }, + }, + { + json: { + id: '234599484848424', + emailAddress: 'test@test.com', + created: '2018-02-17T02:30:00-08:00', + active: true, + emailAliases: ['testAlias@test.com'], + trustedEmailAddress: 'test@test.com', + firstName: 'Jon', + lastName: 'Snow', + title: 'Enterprise Account Executive', + phoneNumber: '+1 123-567-8989', + extension: '123', + personalMeetingUrls: ['https://zoom.us/j/123'], + settings: { + webConferencesRecorded: true, + preventWebConferenceRecording: false, + telephonyCallsImported: false, + emailsImported: true, + preventEmailImport: false, + nonRecordedMeetingsImported: true, + gongConnectEnabled: true, + }, + managerId: '563515258458745', + meetingConsentPageUrl: + 'https://join.gong.io/my-company/jon.snow?tkn=MoNpS9tMNt8BK7EZxQpSJl', + spokenLanguages: [ + { + language: 'es-ES', + primary: true, + }, + ], + }, + }, + ], +}; diff --git a/packages/nodes-base/nodes/Google/Ads/CampaignDescription.ts b/packages/nodes-base/nodes/Google/Ads/CampaignDescription.ts index 4506b33d3c..ca30e47a3a 100644 --- a/packages/nodes-base/nodes/Google/Ads/CampaignDescription.ts +++ b/packages/nodes-base/nodes/Google/Ads/CampaignDescription.ts @@ -41,7 +41,7 @@ export const campaignOperations: INodeProperties[] = [ routing: { request: { method: 'POST', - url: '={{"/v15/customers/" + $parameter["clientCustomerId"].toString().replace(/-/g, "") + "/googleAds:search"}}', + url: '={{"/v17/customers/" + $parameter["clientCustomerId"].toString().replace(/-/g, "") + "/googleAds:search"}}', body: { query: '={{ "' + @@ -89,7 +89,7 @@ export const campaignOperations: INodeProperties[] = [ routing: { request: { method: 'POST', - url: '={{"/v15/customers/" + $parameter["clientCustomerId"].toString().replace(/-/g, "") + "/googleAds:search"}}', + url: '={{"/v17/customers/" + $parameter["clientCustomerId"].toString().replace(/-/g, "") + "/googleAds:search"}}', returnFullResponse: true, body: { query: @@ -187,7 +187,7 @@ export const campaignFields: INodeProperties[] = [ }, default: {}, description: 'Additional options for fetching campaigns', - placeholder: 'Add Option', + placeholder: 'Add option', options: [ { displayName: 'Date Range', diff --git a/packages/nodes-base/nodes/Google/Ads/GoogleAds.node.ts b/packages/nodes-base/nodes/Google/Ads/GoogleAds.node.ts index 7864eb762d..606e58e77d 100644 --- a/packages/nodes-base/nodes/Google/Ads/GoogleAds.node.ts +++ b/packages/nodes-base/nodes/Google/Ads/GoogleAds.node.ts @@ -1,4 +1,4 @@ -import type { INodeType, INodeTypeDescription } from 'n8n-workflow'; +import { NodeConnectionType, type INodeType, type INodeTypeDescription } from 'n8n-workflow'; import { campaignFields, campaignOperations } from './CampaignDescription'; @@ -14,8 +14,8 @@ export class GoogleAds implements INodeType { defaults: { name: 'Google Ads', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'googleAdsOAuth2Api', @@ -23,7 +23,7 @@ export class GoogleAds implements INodeType { testedBy: { request: { method: 'GET', - url: '/v15/customers:listAccessibleCustomers', + url: '/v17/customers:listAccessibleCustomers', }, }, }, diff --git a/packages/nodes-base/nodes/Google/Analytics/v1/GoogleAnalyticsV1.node.ts b/packages/nodes-base/nodes/Google/Analytics/v1/GoogleAnalyticsV1.node.ts index 76a71e4163..72a07b2f64 100644 --- a/packages/nodes-base/nodes/Google/Analytics/v1/GoogleAnalyticsV1.node.ts +++ b/packages/nodes-base/nodes/Google/Analytics/v1/GoogleAnalyticsV1.node.ts @@ -1,14 +1,14 @@ -/* eslint-disable n8n-nodes-base/node-filename-against-convention */ -import type { - IExecuteFunctions, - IDataObject, - ILoadOptionsFunctions, - INodeExecutionData, - INodePropertyOptions, - INodeType, - INodeTypeBaseDescription, - INodeTypeDescription, - IHttpRequestMethods, +import { + type IExecuteFunctions, + type IDataObject, + type ILoadOptionsFunctions, + type INodeExecutionData, + type INodePropertyOptions, + type INodeType, + type INodeTypeBaseDescription, + type INodeTypeDescription, + type IHttpRequestMethods, + NodeConnectionType, } from 'n8n-workflow'; import moment from 'moment-timezone'; @@ -30,8 +30,8 @@ const versionDescription: INodeTypeDescription = { defaults: { name: 'Google Analytics', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'googleAnalyticsOAuth2', @@ -292,7 +292,7 @@ export class GoogleAnalyticsV1 implements INodeType { ); returnData.push(...executionData); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { const executionErrorData = this.helpers.constructExecutionMetaData( this.helpers.returnJsonArray({ error: error.message }), { itemData: { item: i } }, diff --git a/packages/nodes-base/nodes/Google/Analytics/v1/ReportDescription.ts b/packages/nodes-base/nodes/Google/Analytics/v1/ReportDescription.ts index 285c04d0a0..41c85e32d1 100644 --- a/packages/nodes-base/nodes/Google/Analytics/v1/ReportDescription.ts +++ b/packages/nodes-base/nodes/Google/Analytics/v1/ReportDescription.ts @@ -41,7 +41,7 @@ export const reportFields: INodeProperties[] = [ }, placeholder: '123456', description: - 'The View ID of Google Analytics. Choose from the list, or specify an ID using an expression.', + 'The View ID of Google Analytics. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Return All', @@ -153,7 +153,7 @@ export const reportFields: INodeProperties[] = [ }, default: '', description: - 'Name of the dimension to fetch, for example ga:browser. Choose from the list, or specify an ID using an expression.', + 'Name of the dimension to fetch, for example ga:browser. Choose from the list, or specify an ID using an expression.', }, ], }, @@ -183,7 +183,7 @@ export const reportFields: INodeProperties[] = [ }, default: '', description: - 'Name of the dimension to filter by. Choose from the list, or specify an ID using an expression.', + 'Name of the dimension to filter by. Choose from the list, or specify an ID using an expression.', }, // https://developers.google.com/analytics/devguides/reporting/core/v4/rest/v4/reports/batchGet#Operator { diff --git a/packages/nodes-base/nodes/Google/Analytics/v1/UserActivityDescription.ts b/packages/nodes-base/nodes/Google/Analytics/v1/UserActivityDescription.ts index 04b8919aab..fb1522d40e 100644 --- a/packages/nodes-base/nodes/Google/Analytics/v1/UserActivityDescription.ts +++ b/packages/nodes-base/nodes/Google/Analytics/v1/UserActivityDescription.ts @@ -41,7 +41,7 @@ export const userActivityFields: INodeProperties[] = [ }, placeholder: '123456', description: - 'The View ID of Google Analytics. Choose from the list, or specify an ID using an expression.', + 'The View ID of Google Analytics. Choose from the list, or specify an ID using an expression.', }, { displayName: 'User ID', diff --git a/packages/nodes-base/nodes/Google/Analytics/v2/actions/report/FiltersDescription.ts b/packages/nodes-base/nodes/Google/Analytics/v2/actions/report/FiltersDescription.ts index 0387c36a7f..f98d48e82f 100644 --- a/packages/nodes-base/nodes/Google/Analytics/v2/actions/report/FiltersDescription.ts +++ b/packages/nodes-base/nodes/Google/Analytics/v2/actions/report/FiltersDescription.ts @@ -65,7 +65,7 @@ export const dimensionDropdown: INodeProperties[] = [ }, default: 'date', description: - 'The name of the dimension. Choose from the list, or specify an ID using an expression.', + 'The name of the dimension. Choose from the list, or specify an ID using an expression.', displayOptions: { show: { listName: ['other'], @@ -145,7 +145,7 @@ export const metricDropdown: INodeProperties[] = [ default: 'totalUsers', hint: 'If expression is specified, name can be any string that you would like', description: - 'The name of the metric. Choose from the list, or specify an ID using an expression.', + 'The name of the metric. Choose from the list, or specify an ID using an expression.', displayOptions: { show: { listName: ['other'], diff --git a/packages/nodes-base/nodes/Google/Analytics/v2/actions/report/get.ga4.operation.ts b/packages/nodes-base/nodes/Google/Analytics/v2/actions/report/get.ga4.operation.ts index 612bc45560..2faea66ef0 100644 --- a/packages/nodes-base/nodes/Google/Analytics/v2/actions/report/get.ga4.operation.ts +++ b/packages/nodes-base/nodes/Google/Analytics/v2/actions/report/get.ga4.operation.ts @@ -381,7 +381,7 @@ export const description: INodeProperties[] = [ }, default: '', description: - 'Sorts by metric values. Choose from the list, or specify an ID using an expression.', + 'Sorts by metric values. Choose from the list, or specify an ID using an expression.', }, ], }, @@ -406,7 +406,7 @@ export const description: INodeProperties[] = [ }, default: '', description: - 'Sorts by metric values. Choose from the list, or specify an ID using an expression.', + 'Sorts by metric values. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Order Type', diff --git a/packages/nodes-base/nodes/Google/Analytics/v2/actions/report/get.universal.operation.ts b/packages/nodes-base/nodes/Google/Analytics/v2/actions/report/get.universal.operation.ts index 85952e951f..4027277123 100644 --- a/packages/nodes-base/nodes/Google/Analytics/v2/actions/report/get.universal.operation.ts +++ b/packages/nodes-base/nodes/Google/Analytics/v2/actions/report/get.universal.operation.ts @@ -80,7 +80,7 @@ const dimensionDropdown: INodeProperties[] = [ }, default: 'ga:date', description: - 'Name of the dimension to fetch, for example ga:browser. Choose from the list, or specify an ID using an expression.', + 'Name of the dimension to fetch, for example ga:browser. Choose from the list, or specify an ID using an expression.', displayOptions: { show: { listName: ['other'], @@ -301,7 +301,7 @@ export const description: INodeProperties[] = [ default: 'ga:users', hint: 'If expression is specified, name can be any string that you would like', description: - 'The name of the metric. Choose from the list, or specify an ID using an expression.', + 'The name of the metric. Choose from the list, or specify an ID using an expression.', displayOptions: { show: { listName: ['other'], diff --git a/packages/nodes-base/nodes/Google/Analytics/v2/actions/router.ts b/packages/nodes-base/nodes/Google/Analytics/v2/actions/router.ts index e7d724a2c8..1d9cae9900 100644 --- a/packages/nodes-base/nodes/Google/Analytics/v2/actions/router.ts +++ b/packages/nodes-base/nodes/Google/Analytics/v2/actions/router.ts @@ -36,7 +36,7 @@ export async function router(this: IExecuteFunctions): Promiseexpression.', + 'The view from Google Analytics. Choose from the list, or specify an ID using an expression.', hint: "If there's nothing here, try changing the 'Property type' field above", }, { diff --git a/packages/nodes-base/nodes/Google/Analytics/v2/actions/versionDescription.ts b/packages/nodes-base/nodes/Google/Analytics/v2/actions/versionDescription.ts index 13191b0007..773eee9afb 100644 --- a/packages/nodes-base/nodes/Google/Analytics/v2/actions/versionDescription.ts +++ b/packages/nodes-base/nodes/Google/Analytics/v2/actions/versionDescription.ts @@ -1,5 +1,5 @@ /* eslint-disable n8n-nodes-base/node-filename-against-convention */ -import type { INodeTypeDescription } from 'n8n-workflow'; +import { NodeConnectionType, type INodeTypeDescription } from 'n8n-workflow'; import * as userActivity from './userActivity/UserActivity.resource'; import * as report from './report/Report.resource'; @@ -14,8 +14,8 @@ export const versionDescription: INodeTypeDescription = { defaults: { name: 'Google Analytics', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'googleAnalyticsOAuth2', diff --git a/packages/nodes-base/nodes/Google/BigQuery/test/v2/node/executeQuery.test.ts b/packages/nodes-base/nodes/Google/BigQuery/test/v2/node/executeQuery.test.ts index 39cefa7319..f7a0965d3d 100644 --- a/packages/nodes-base/nodes/Google/BigQuery/test/v2/node/executeQuery.test.ts +++ b/packages/nodes-base/nodes/Google/BigQuery/test/v2/node/executeQuery.test.ts @@ -10,7 +10,7 @@ jest.mock('../../../v2/transport', () => { const originalModule = jest.requireActual('../../../v2/transport'); return { ...originalModule, - googleApiRequest: jest.fn(async (method: IHttpRequestMethods, resource: string) => { + googleBigQueryApiRequest: jest.fn(async (method: IHttpRequestMethods, resource: string) => { if (resource === '/v2/projects/test-project/jobs' && method === 'POST') { return { jobReference: { @@ -25,7 +25,7 @@ jest.mock('../../../v2/transport', () => { return {}; } }), - // googleApiRequestAllItems: jest.fn(async () => {}), + googleBigQueryApiRequestAllItems: jest.fn(async () => ({ rows: [], schema: {} })), }; }); @@ -47,8 +47,9 @@ describe('Test Google BigQuery V2, executeQuery', () => { const testNode = async (testData: WorkflowTestData, types: INodeTypes) => { const { result } = await executeWorkflow(testData, types); - expect(transport.googleApiRequest).toHaveBeenCalledTimes(2); - expect(transport.googleApiRequest).toHaveBeenCalledWith( + expect(transport.googleBigQueryApiRequest).toHaveBeenCalledTimes(1); + expect(transport.googleBigQueryApiRequestAllItems).toHaveBeenCalledTimes(1); + expect(transport.googleBigQueryApiRequest).toHaveBeenCalledWith( 'POST', '/v2/projects/test-project/jobs', { @@ -60,11 +61,11 @@ describe('Test Google BigQuery V2, executeQuery', () => { }, }, ); - expect(transport.googleApiRequest).toHaveBeenCalledWith( + expect(transport.googleBigQueryApiRequestAllItems).toHaveBeenCalledWith( 'GET', '/v2/projects/test-project/queries/job_123', undefined, - {}, + { location: undefined, maxResults: 1000, timeoutMs: 10000 }, ); expect(result.finished).toEqual(true); diff --git a/packages/nodes-base/nodes/Google/BigQuery/test/v2/node/insert.autoMapMode.test.ts b/packages/nodes-base/nodes/Google/BigQuery/test/v2/node/insert.autoMapMode.test.ts index 001a06315f..4ee4627838 100644 --- a/packages/nodes-base/nodes/Google/BigQuery/test/v2/node/insert.autoMapMode.test.ts +++ b/packages/nodes-base/nodes/Google/BigQuery/test/v2/node/insert.autoMapMode.test.ts @@ -10,7 +10,7 @@ jest.mock('../../../v2/transport', () => { const originalModule = jest.requireActual('../../../v2/transport'); return { ...originalModule, - googleApiRequest: jest.fn(async (method: IHttpRequestMethods, resource: string) => { + googleBigQueryApiRequest: jest.fn(async (method: IHttpRequestMethods, resource: string) => { if ( resource === '/v2/projects/test-project/datasets/bigquery_node_dev_test_dataset/tables/num_text' && @@ -55,13 +55,13 @@ describe('Test Google BigQuery V2, insert auto map', () => { const testNode = async (testData: WorkflowTestData, types: INodeTypes) => { const { result } = await executeWorkflow(testData, types); - expect(transport.googleApiRequest).toHaveBeenCalledTimes(2); - expect(transport.googleApiRequest).toHaveBeenCalledWith( + expect(transport.googleBigQueryApiRequest).toHaveBeenCalledTimes(2); + expect(transport.googleBigQueryApiRequest).toHaveBeenCalledWith( 'GET', '/v2/projects/test-project/datasets/bigquery_node_dev_test_dataset/tables/num_text', {}, ); - expect(transport.googleApiRequest).toHaveBeenCalledWith( + expect(transport.googleBigQueryApiRequest).toHaveBeenCalledWith( 'POST', '/v2/projects/test-project/datasets/bigquery_node_dev_test_dataset/tables/num_text/insertAll', { diff --git a/packages/nodes-base/nodes/Google/BigQuery/test/v2/node/insert.manualMode.test.ts b/packages/nodes-base/nodes/Google/BigQuery/test/v2/node/insert.manualMode.test.ts index 0d0215d5cd..f4d94dda8b 100644 --- a/packages/nodes-base/nodes/Google/BigQuery/test/v2/node/insert.manualMode.test.ts +++ b/packages/nodes-base/nodes/Google/BigQuery/test/v2/node/insert.manualMode.test.ts @@ -10,7 +10,7 @@ jest.mock('../../../v2/transport', () => { const originalModule = jest.requireActual('../../../v2/transport'); return { ...originalModule, - googleApiRequest: jest.fn(async (method: IHttpRequestMethods, resource: string) => { + googleBigQueryApiRequest: jest.fn(async (method: IHttpRequestMethods, resource: string) => { if ( resource === '/v2/projects/test-project/datasets/bigquery_node_dev_test_dataset/tables/test_json' && @@ -56,13 +56,13 @@ describe('Test Google BigQuery V2, insert define manually', () => { const testNode = async (testData: WorkflowTestData, types: INodeTypes) => { const { result } = await executeWorkflow(testData, types); - expect(transport.googleApiRequest).toHaveBeenCalledTimes(2); - expect(transport.googleApiRequest).toHaveBeenCalledWith( + expect(transport.googleBigQueryApiRequest).toHaveBeenCalledTimes(2); + expect(transport.googleBigQueryApiRequest).toHaveBeenCalledWith( 'GET', '/v2/projects/test-project/datasets/bigquery_node_dev_test_dataset/tables/test_json', {}, ); - expect(transport.googleApiRequest).toHaveBeenCalledWith( + expect(transport.googleBigQueryApiRequest).toHaveBeenCalledWith( 'POST', '/v2/projects/test-project/datasets/bigquery_node_dev_test_dataset/tables/test_json/insertAll', { diff --git a/packages/nodes-base/nodes/Google/BigQuery/v1/GoogleBigQueryV1.node.ts b/packages/nodes-base/nodes/Google/BigQuery/v1/GoogleBigQueryV1.node.ts index 584c409663..2d29b89ce7 100644 --- a/packages/nodes-base/nodes/Google/BigQuery/v1/GoogleBigQueryV1.node.ts +++ b/packages/nodes-base/nodes/Google/BigQuery/v1/GoogleBigQueryV1.node.ts @@ -1,4 +1,3 @@ -/* eslint-disable n8n-nodes-base/node-filename-against-convention */ import type { IDataObject, IExecuteFunctions, @@ -10,8 +9,7 @@ import type { INodeTypeDescription, JsonObject, } from 'n8n-workflow'; - -import { NodeApiError } from 'n8n-workflow'; +import { NodeConnectionType, NodeApiError } from 'n8n-workflow'; import { v4 as uuid } from 'uuid'; import { generatePairedItemData } from '../../../../utils/utilities'; @@ -32,8 +30,8 @@ const versionDescription: INodeTypeDescription = { defaults: { name: 'Google BigQuery', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'googleApi', @@ -214,7 +212,7 @@ export class GoogleBigQueryV1 implements INodeType { ); returnData.push(...executionData); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { const executionErrorData = this.helpers.constructExecutionMetaData( this.helpers.returnJsonArray({ error: error.message }), { itemData }, @@ -289,7 +287,7 @@ export class GoogleBigQueryV1 implements INodeType { ); returnData.push(...executionData); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { const executionErrorData = this.helpers.constructExecutionMetaData( this.helpers.returnJsonArray({ error: error.message }), { itemData: { item: i } }, diff --git a/packages/nodes-base/nodes/Google/BigQuery/v1/RecordDescription.ts b/packages/nodes-base/nodes/Google/BigQuery/v1/RecordDescription.ts index 6124e51c11..cea83f3872 100644 --- a/packages/nodes-base/nodes/Google/BigQuery/v1/RecordDescription.ts +++ b/packages/nodes-base/nodes/Google/BigQuery/v1/RecordDescription.ts @@ -49,7 +49,7 @@ export const recordFields: INodeProperties[] = [ }, default: '', description: - 'ID of the project to create the record in. Choose from the list, or specify an ID using an expression.', + 'ID of the project to create the record in. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Dataset Name or ID', @@ -68,7 +68,7 @@ export const recordFields: INodeProperties[] = [ }, default: '', description: - 'ID of the dataset to create the record in. Choose from the list, or specify an ID using an expression.', + 'ID of the dataset to create the record in. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Table Name or ID', @@ -87,7 +87,7 @@ export const recordFields: INodeProperties[] = [ }, default: '', description: - 'ID of the table to create the record in. Choose from the list, or specify an ID using an expression.', + 'ID of the table to create the record in. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Columns', @@ -108,7 +108,7 @@ export const recordFields: INodeProperties[] = [ displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Options', + placeholder: 'Add option', default: {}, displayOptions: { show: { @@ -122,7 +122,7 @@ export const recordFields: INodeProperties[] = [ name: 'ignoreUnknownValues', type: 'boolean', default: false, - description: 'Whether to gnore row values that do not match the schema', + description: 'Whether to ignore row values that do not match the schema', }, { displayName: 'Skip Invalid Rows', @@ -169,7 +169,7 @@ export const recordFields: INodeProperties[] = [ }, default: '', description: - 'ID of the project to retrieve all rows from. Choose from the list, or specify an ID using an expression.', + 'ID of the project to retrieve all rows from. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Dataset Name or ID', @@ -188,7 +188,7 @@ export const recordFields: INodeProperties[] = [ }, default: '', description: - 'ID of the dataset to retrieve all rows from. Choose from the list, or specify an ID using an expression.', + 'ID of the dataset to retrieve all rows from. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Table Name or ID', @@ -207,7 +207,7 @@ export const recordFields: INodeProperties[] = [ }, default: '', description: - 'ID of the table to retrieve all rows from. Choose from the list, or specify an ID using an expression.', + 'ID of the table to retrieve all rows from. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Return All', @@ -257,7 +257,7 @@ export const recordFields: INodeProperties[] = [ displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Options', + placeholder: 'Add option', default: {}, displayOptions: { show: { diff --git a/packages/nodes-base/nodes/Google/BigQuery/v2/actions/database/executeQuery.operation.ts b/packages/nodes-base/nodes/Google/BigQuery/v2/actions/database/executeQuery.operation.ts index 7278e502b3..a361a3517e 100644 --- a/packages/nodes-base/nodes/Google/BigQuery/v2/actions/database/executeQuery.operation.ts +++ b/packages/nodes-base/nodes/Google/BigQuery/v2/actions/database/executeQuery.operation.ts @@ -9,7 +9,7 @@ import { ApplicationError, NodeOperationError, sleep } from 'n8n-workflow'; import type { ResponseWithJobReference } from '../../helpers/interfaces'; import { prepareOutput } from '../../helpers/utils'; -import { googleApiRequest } from '../../transport'; +import { googleBigQueryApiRequestAllItems, googleBigQueryApiRequest } from '../../transport'; import { getResolvables, updateDisplayOptions } from '@utils/utilities'; const properties: INodeProperties[] = [ @@ -54,7 +54,7 @@ const properties: INodeProperties[] = [ displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Options', + placeholder: 'Add option', default: {}, options: [ { @@ -67,7 +67,7 @@ const properties: INodeProperties[] = [ }, default: '', description: - 'If not set, all table names in the query string must be qualified in the format \'datasetId.tableId\'. Choose from the list, or specify an ID using an expression.', + 'If not set, all table names in the query string must be qualified in the format \'datasetId.tableId\'. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Dry Run', @@ -108,18 +108,21 @@ const properties: INodeProperties[] = [ 'Limits the bytes billed for this query. Queries with bytes billed above this limit will fail (without incurring a charge). String in Int64Value format', }, { - displayName: 'Max Results', + displayName: 'Max Results Per Page', name: 'maxResults', type: 'number', default: 1000, - description: 'The maximum number of rows of data to return', + description: + 'Maximum number of results to return per page of results. This is particularly useful when dealing with large datasets. It will not affect the total number of results returned, e.g. rows in a table. You can use LIMIT in your SQL query to limit the number of rows returned.', }, { displayName: 'Timeout', name: 'timeoutMs', type: 'number', default: 10000, - description: 'How long to wait for the query to complete, in milliseconds', + hint: 'How long to wait for the query to complete, in milliseconds', + description: + 'Specifies the maximum amount of time, in milliseconds, that the client is willing to wait for the query to complete. Be aware that the call is not guaranteed to wait for the specified timeout; it typically returns after around 200 seconds (200,000 milliseconds), even if the query is not complete.', }, { displayName: 'Raw Output', @@ -140,6 +143,14 @@ const properties: INodeProperties[] = [ description: "Whether to use BigQuery's legacy SQL dialect for this query. If set to false, the query will use BigQuery's standard SQL.", }, + { + displayName: 'Return Integers as Numbers', + name: 'returnAsNumbers', + type: 'boolean', + default: false, + description: + 'Whether all integer values will be returned as numbers. If set to false, all integer values will be returned as strings.', + }, ], }, ]; @@ -154,19 +165,32 @@ const displayOptions = { export const description = updateDisplayOptions(displayOptions, properties); export async function execute(this: IExecuteFunctions): Promise { - // https://cloud.google.com/bigquery/docs/reference/rest/v2/jobs/query - const items = this.getInputData(); const length = items.length; const returnData: INodeExecutionData[] = []; let jobs = []; + let maxResults = 1000; + let timeoutMs = 10000; for (let i = 0; i < length; i++) { try { let sqlQuery = this.getNodeParameter('sqlQuery', i) as string; - const options = this.getNodeParameter('options', i); + + const options = this.getNodeParameter('options', i) as { + defaultDataset?: string; + dryRun?: boolean; + includeSchema?: boolean; + location?: string; + maximumBytesBilled?: string; + maxResults?: number; + timeoutMs?: number; + rawOutput?: boolean; + useLegacySql?: boolean; + returnAsNumbers?: boolean; + }; + const projectId = this.getNodeParameter('projectId', i, undefined, { extractValue: true, }); @@ -179,15 +203,25 @@ export async function execute(this: IExecuteFunctions): Promise field.type as string, + ); + const rows: IDataObject[] = queryResponse.rows as IDataObject[]; + + for (const row of rows) { + if (!row?.f || !Array.isArray(row.f)) continue; + row.f.forEach((entry: IDataObject, index: number) => { + if (entry && typeof entry === 'object' && 'v' in entry) { + // Skip this row if it's null or doesn't have 'f' as an array + const value = entry.v; + if (numericDataTypes.includes(schemaDataTypes[index])) { + entry.v = Number(value); + } + } + }); + } + } + returnData.push(...prepareOutput.call(this, queryResponse, i, raw, includeSchema)); } else { jobs.push({ jobId, projectId, i, raw, includeSchema, location }); } } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { const executionErrorData = this.helpers.constructExecutionMetaData( this.helpers.returnJsonArray({ error: error.message }), { itemData: { item: i } }, @@ -272,9 +331,13 @@ export async function execute(this: IExecuteFunctions): Promiseexpression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsDependsOn: ['projectId.value', 'datasetId.value', 'tableId.value'], loadOptionsMethod: 'getSchema', @@ -89,7 +89,7 @@ const properties: INodeProperties[] = [ displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Options', + placeholder: 'Add option', default: {}, options: [ { @@ -178,7 +178,7 @@ export async function execute(this: IExecuteFunctions): Promise { const projectId = this.getNodeParameter('projectId', undefined, { extractValue: true, }); const returnData: INodePropertyOptions[] = []; - const { datasets } = await googleApiRequest.call( + const { datasets } = await googleBigQueryApiRequest.call( this, 'GET', `/v2/projects/${projectId}/datasets`, @@ -33,7 +33,7 @@ export async function getSchema(this: ILoadOptionsFunctions): Promise('googleApi'); const { access_token } = await getGoogleAccessToken.call(this, credentials, 'books'); diff --git a/packages/nodes-base/nodes/Google/Books/GoogleBooks.node.ts b/packages/nodes-base/nodes/Google/Books/GoogleBooks.node.ts index 02096b4604..facf7d14cc 100644 --- a/packages/nodes-base/nodes/Google/Books/GoogleBooks.node.ts +++ b/packages/nodes-base/nodes/Google/Books/GoogleBooks.node.ts @@ -5,6 +5,7 @@ import type { INodeType, INodeTypeDescription, } from 'n8n-workflow'; +import { NodeConnectionType } from 'n8n-workflow'; import { googleApiRequest, googleApiRequestAllItems } from './GenericFunctions'; @@ -25,8 +26,8 @@ export class GoogleBooks implements INodeType { defaults: { name: 'Google Books', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'googleApi', @@ -511,7 +512,7 @@ export class GoogleBooks implements INodeType { ); returnData.push(...executionData); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { const executionErrorData = this.helpers.constructExecutionMetaData( this.helpers.returnJsonArray({ error: error.message }), { itemData: { item: i } }, diff --git a/packages/nodes-base/nodes/Google/BusinessProfile/GenericFunctions.ts b/packages/nodes-base/nodes/Google/BusinessProfile/GenericFunctions.ts new file mode 100644 index 0000000000..f6c66bb5c4 --- /dev/null +++ b/packages/nodes-base/nodes/Google/BusinessProfile/GenericFunctions.ts @@ -0,0 +1,520 @@ +import { + NodeApiError, + NodeOperationError, + type DeclarativeRestApiSettings, + type IDataObject, + type IExecutePaginationFunctions, + type IExecuteSingleFunctions, + type IHttpRequestMethods, + type IHttpRequestOptions, + type ILoadOptionsFunctions, + type IN8nHttpFullResponse, + type INodeExecutionData, + type INodeListSearchItems, + type INodeListSearchResult, + type IPollFunctions, + type JsonObject, +} from 'n8n-workflow'; + +import type { ITimeInterval } from './Interfaces'; + +const addOptName = 'additionalOptions'; +const possibleRootProperties = ['localPosts', 'reviews']; + +const getAllParams = (execFns: IExecuteSingleFunctions): Record => { + const params = execFns.getNode().parameters; + const additionalOptions = execFns.getNodeParameter(addOptName, {}) as Record; + + // Merge standard parameters with additional options from the node parameters + return { ...params, ...additionalOptions }; +}; + +/* Helper function to adjust date-time parameters for API requests */ +export async function handleDatesPresend( + this: IExecuteSingleFunctions, + opts: IHttpRequestOptions, +): Promise { + const params = getAllParams(this); + const body = Object.assign({}, opts.body) as IDataObject; + const event = (body.event as IDataObject) ?? ({} as IDataObject); + + if (!params.startDateTime && !params.startDate && !params.endDateTime && !params.endDate) { + return opts; + } + + const createDateTimeObject = (dateString: string) => { + const date = new Date(dateString); + return { + date: { + year: date.getUTCFullYear(), + month: date.getUTCMonth() + 1, + day: date.getUTCDate(), + }, + time: dateString.includes('T') + ? { + hours: date.getUTCHours(), + minutes: date.getUTCMinutes(), + seconds: date.getUTCSeconds(), + nanos: 0, + } + : undefined, + }; + }; + + // Convert start and end date-time parameters if provided + const startDateTime = + params.startDateTime || params.startDate + ? createDateTimeObject((params.startDateTime || params.startDate) as string) + : null; + const endDateTime = + params.endDateTime || params.endDate + ? createDateTimeObject((params.endDateTime || params.endDate) as string) + : null; + + const schedule: Partial = { + startDate: startDateTime?.date, + endDate: endDateTime?.date, + startTime: startDateTime?.time, + endTime: endDateTime?.time, + }; + + event.schedule = schedule; + Object.assign(body, { event }); + opts.body = body; + return opts; +} + +/* Helper function adding update mask to the request */ +export async function addUpdateMaskPresend( + this: IExecuteSingleFunctions, + opts: IHttpRequestOptions, +): Promise { + const additionalOptions = this.getNodeParameter('additionalOptions') as IDataObject; + const propertyMapping: { [key: string]: string } = { + postType: 'topicType', + actionType: 'actionType', + callToActionType: 'callToAction.actionType', + url: 'callToAction.url', + startDateTime: 'event.schedule.startDate,event.schedule.startTime', + endDateTime: 'event.schedule.endDate,event.schedule.endTime', + title: 'event.title', + startDate: 'event.schedule.startDate', + endDate: 'event.schedule.endDate', + couponCode: 'offer.couponCode', + redeemOnlineUrl: 'offer.redeemOnlineUrl', + termsAndConditions: 'offer.termsAndConditions', + }; + + if (Object.keys(additionalOptions).length) { + const updateMask = Object.keys(additionalOptions) + .map((key) => propertyMapping[key] || key) + .join(','); + opts.qs = { + ...opts.qs, + updateMask, + }; + } + + return opts; +} + +/* Helper function to handle pagination */ +export async function handlePagination( + this: IExecutePaginationFunctions, + resultOptions: DeclarativeRestApiSettings.ResultOptions, +): Promise { + const aggregatedResult: IDataObject[] = []; + let nextPageToken: string | undefined; + const returnAll = this.getNodeParameter('returnAll') as boolean; + let limit = 100; + if (!returnAll) { + limit = this.getNodeParameter('limit') as number; + resultOptions.maxResults = limit; + } + resultOptions.paginate = true; + + do { + if (nextPageToken) { + resultOptions.options.qs = { ...resultOptions.options.qs, pageToken: nextPageToken }; + } + + const responseData = await this.makeRoutingRequest(resultOptions); + + for (const page of responseData) { + for (const prop of possibleRootProperties) { + if (page.json[prop]) { + const currentData = page.json[prop] as IDataObject[]; + aggregatedResult.push(...currentData); + } + } + + if (!returnAll && aggregatedResult.length >= limit) { + return aggregatedResult.slice(0, limit).map((item) => ({ json: item })); + } + + nextPageToken = page.json.nextPageToken as string | undefined; + } + } while (nextPageToken); + + return aggregatedResult.map((item) => ({ json: item })); +} + +/* Helper functions to handle errors */ + +export async function handleErrorsDeletePost( + this: IExecuteSingleFunctions, + data: INodeExecutionData[], + response: IN8nHttpFullResponse, +): Promise { + if (response.statusCode < 200 || response.statusCode >= 300) { + const post = this.getNodeParameter('post', undefined) as IDataObject; + + // Provide a better error message + if (post && response.statusCode === 404) { + throw new NodeOperationError( + this.getNode(), + 'The post you are deleting could not be found. Adjust the "post" parameter setting to delete the post correctly.', + ); + } + + throw new NodeApiError(this.getNode(), response.body as JsonObject, { + message: response.statusMessage, + httpCode: response.statusCode.toString(), + }); + } + return data; +} + +export async function handleErrorsGetPost( + this: IExecuteSingleFunctions, + data: INodeExecutionData[], + response: IN8nHttpFullResponse, +): Promise { + if (response.statusCode < 200 || response.statusCode >= 300) { + const post = this.getNodeParameter('post', undefined) as IDataObject; + + // Provide a better error message + if (post && response.statusCode === 404) { + throw new NodeOperationError( + this.getNode(), + 'The post you are requesting could not be found. Adjust the "post" parameter setting to retrieve the post correctly.', + ); + } + + throw new NodeApiError(this.getNode(), response.body as JsonObject, { + message: response.statusMessage, + httpCode: response.statusCode.toString(), + }); + } + return data; +} + +export async function handleErrorsUpdatePost( + this: IExecuteSingleFunctions, + data: INodeExecutionData[], + response: IN8nHttpFullResponse, +): Promise { + if (response.statusCode < 200 || response.statusCode >= 300) { + const post = this.getNodeParameter('post') as IDataObject; + const additionalOptions = this.getNodeParameter('additionalOptions') as IDataObject; + + // Provide a better error message + if (post && response.statusCode === 404) { + throw new NodeOperationError( + this.getNode(), + 'The post you are updating could not be found. Adjust the "post" parameter setting to update the post correctly.', + ); + } + + // Do not throw an error if the user didn't set additional options (a hint will be shown) + if (response.statusCode === 400 && Object.keys(additionalOptions).length === 0) { + return [{ json: { success: true } }]; + } + + throw new NodeApiError(this.getNode(), response.body as JsonObject, { + message: response.statusMessage, + httpCode: response.statusCode.toString(), + }); + } + return data; +} + +export async function handleErrorsDeleteReply( + this: IExecuteSingleFunctions, + data: INodeExecutionData[], + response: IN8nHttpFullResponse, +): Promise { + if (response.statusCode < 200 || response.statusCode >= 300) { + const review = this.getNodeParameter('review', undefined) as IDataObject; + + // Provide a better error message + if (review && response.statusCode === 404) { + throw new NodeOperationError( + this.getNode(), + 'The review you are deleting could not be found. Adjust the "review" parameter setting to update the review correctly.', + ); + } + + throw new NodeApiError(this.getNode(), response.body as JsonObject, { + message: response.statusMessage, + httpCode: response.statusCode.toString(), + }); + } + return data; +} + +export async function handleErrorsGetReview( + this: IExecuteSingleFunctions, + data: INodeExecutionData[], + response: IN8nHttpFullResponse, +): Promise { + if (response.statusCode < 200 || response.statusCode >= 300) { + const review = this.getNodeParameter('review', undefined) as IDataObject; + + // Provide a better error message + if (review && response.statusCode === 404) { + throw new NodeOperationError( + this.getNode(), + 'The review you are requesting could not be found. Adjust the "review" parameter setting to update the review correctly.', + ); + } + + throw new NodeApiError(this.getNode(), response.body as JsonObject, { + message: response.statusMessage, + httpCode: response.statusCode.toString(), + }); + } + return data; +} + +export async function handleErrorsReplyToReview( + this: IExecuteSingleFunctions, + data: INodeExecutionData[], + response: IN8nHttpFullResponse, +): Promise { + if (response.statusCode < 200 || response.statusCode >= 300) { + const review = this.getNodeParameter('review', undefined) as IDataObject; + + // Provide a better error message + if (review && response.statusCode === 404) { + throw new NodeOperationError( + this.getNode(), + 'The review you are replying to could not be found. Adjust the "review" parameter setting to reply to the review correctly.', + ); + } + + throw new NodeApiError(this.getNode(), response.body as JsonObject, { + message: response.statusMessage, + httpCode: response.statusCode.toString(), + }); + } + return data; +} + +/* Helper function used in listSearch methods */ +export async function googleApiRequest( + this: ILoadOptionsFunctions | IPollFunctions, + method: IHttpRequestMethods, + resource: string, + body: IDataObject = {}, + qs: IDataObject = {}, + url?: string, +): Promise { + const options: IHttpRequestOptions = { + headers: { + 'Content-Type': 'application/json', + }, + method, + body, + qs, + url: url ?? `https://mybusiness.googleapis.com/v4${resource}`, + json: true, + }; + try { + if (Object.keys(body).length === 0) { + delete options.body; + } + + return (await this.helpers.httpRequestWithAuthentication.call( + this, + 'googleBusinessProfileOAuth2Api', + options, + )) as IDataObject; + } catch (error) { + throw new NodeApiError(this.getNode(), error as JsonObject); + } +} + +/* listSearch methods */ + +export async function searchAccounts( + this: ILoadOptionsFunctions, + filter?: string, + paginationToken?: string, +): Promise { + // Docs for this API call can be found here: + // https://developers.google.com/my-business/reference/accountmanagement/rest/v1/accounts/list + const query: IDataObject = {}; + if (paginationToken) { + query.pageToken = paginationToken; + } + + const responseData: IDataObject = await googleApiRequest.call( + this, + 'GET', + '', + {}, + { + pageSize: 20, + ...query, + }, + 'https://mybusinessaccountmanagement.googleapis.com/v1/accounts', + ); + + const accounts = responseData.accounts as Array<{ name: string; accountName: string }>; + + const results: INodeListSearchItems[] = accounts + .map((a) => ({ + name: a.accountName, + value: a.name, + })) + .filter( + (a) => + !filter || + a.name.toLowerCase().includes(filter.toLowerCase()) || + a.value.toLowerCase().includes(filter.toLowerCase()), + ) + .sort((a, b) => { + if (a.name.toLowerCase() < b.name.toLowerCase()) return -1; + if (a.name.toLowerCase() > b.name.toLowerCase()) return 1; + return 0; + }); + + return { results, paginationToken: responseData.nextPageToken }; +} + +export async function searchLocations( + this: ILoadOptionsFunctions, + filter?: string, + paginationToken?: string, +): Promise { + // Docs for this API call can be found here: + // https://developers.google.com/my-business/reference/businessinformation/rest/v1/accounts.locations/list + const query: IDataObject = {}; + if (paginationToken) { + query.pageToken = paginationToken; + } + + const account = (this.getNodeParameter('account') as IDataObject).value as string; + + const responseData: IDataObject = await googleApiRequest.call( + this, + 'GET', + '', + {}, + { + readMask: 'name', + pageSize: 100, + ...query, + }, + `https://mybusinessbusinessinformation.googleapis.com/v1/${account}/locations`, + ); + + const locations = responseData.locations as Array<{ name: string }>; + + const results: INodeListSearchItems[] = locations + .map((a) => ({ + name: a.name, + value: a.name, + })) + .filter((a) => !filter || a.name.toLowerCase().includes(filter.toLowerCase())) + .sort((a, b) => { + if (a.name.toLowerCase() < b.name.toLowerCase()) return -1; + if (a.name.toLowerCase() > b.name.toLowerCase()) return 1; + return 0; + }); + + return { results, paginationToken: responseData.nextPageToken }; +} + +export async function searchReviews( + this: ILoadOptionsFunctions, + filter?: string, + paginationToken?: string, +): Promise { + const query: IDataObject = {}; + if (paginationToken) { + query.pageToken = paginationToken; + } + + const account = (this.getNodeParameter('account') as IDataObject).value as string; + const location = (this.getNodeParameter('location') as IDataObject).value as string; + + const responseData: IDataObject = await googleApiRequest.call( + this, + 'GET', + `/${account}/${location}/reviews`, + {}, + { + pageSize: 50, + ...query, + }, + ); + + const reviews = responseData.reviews as Array<{ name: string; comment: string }>; + + const results: INodeListSearchItems[] = reviews + .map((a) => ({ + name: a.comment, + value: a.name, + })) + .filter((a) => !filter || a.name.toLowerCase().includes(filter.toLowerCase())) + .sort((a, b) => { + if (a.name.toLowerCase() < b.name.toLowerCase()) return -1; + if (a.name.toLowerCase() > b.name.toLowerCase()) return 1; + return 0; + }); + + return { results, paginationToken: responseData.nextPageToken }; +} + +export async function searchPosts( + this: ILoadOptionsFunctions, + filter?: string, + paginationToken?: string, +): Promise { + const query: IDataObject = {}; + if (paginationToken) { + query.pageToken = paginationToken; + } + + const account = (this.getNodeParameter('account') as IDataObject).value as string; + const location = (this.getNodeParameter('location') as IDataObject).value as string; + + const responseData: IDataObject = await googleApiRequest.call( + this, + 'GET', + `/${account}/${location}/localPosts`, + {}, + { + pageSize: 100, + ...query, + }, + ); + + const localPosts = responseData.localPosts as Array<{ name: string; summary: string }>; + + const results: INodeListSearchItems[] = localPosts + .map((a) => ({ + name: a.summary, + value: a.name, + })) + .filter((a) => !filter || a.name.toLowerCase().includes(filter.toLowerCase())) + .sort((a, b) => { + if (a.name.toLowerCase() < b.name.toLowerCase()) return -1; + if (a.name.toLowerCase() > b.name.toLowerCase()) return 1; + return 0; + }); + + return { results, paginationToken: responseData.nextPageToken }; +} diff --git a/packages/nodes-base/nodes/Google/BusinessProfile/GoogleBusinessProfile.node.json b/packages/nodes-base/nodes/Google/BusinessProfile/GoogleBusinessProfile.node.json new file mode 100644 index 0000000000..426d24325c --- /dev/null +++ b/packages/nodes-base/nodes/Google/BusinessProfile/GoogleBusinessProfile.node.json @@ -0,0 +1,19 @@ +{ + "node": "n8n-nodes-base.googleBusinessProfile", + "nodeVersion": "1.0", + "codexVersion": "1.0", + "categories": ["Marketing", "Productivity"], + "resources": { + "credentialDocumentation": [ + { + "url": "https://docs.n8n.io/integrations/builtin/credentials/google/oauth-single-service/" + } + ], + "primaryDocumentation": [ + { + "url": "https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.googlebusinessprofile/" + } + ] + }, + "alias": ["Google My Business", "GMB", "My Business"] +} diff --git a/packages/nodes-base/nodes/Google/BusinessProfile/GoogleBusinessProfile.node.ts b/packages/nodes-base/nodes/Google/BusinessProfile/GoogleBusinessProfile.node.ts new file mode 100644 index 0000000000..d70a8d0e63 --- /dev/null +++ b/packages/nodes-base/nodes/Google/BusinessProfile/GoogleBusinessProfile.node.ts @@ -0,0 +1,77 @@ +import { NodeConnectionType, type INodeType, type INodeTypeDescription } from 'n8n-workflow'; + +import { searchAccounts, searchLocations, searchPosts, searchReviews } from './GenericFunctions'; +import { postFields, postOperations } from './PostDescription'; +import { reviewFields, reviewOperations } from './ReviewDescription'; + +export class GoogleBusinessProfile implements INodeType { + description: INodeTypeDescription = { + displayName: 'Google Business Profile', + name: 'googleBusinessProfile', + icon: 'file:googleBusinessProfile.svg', + group: ['input'], + version: 1, + subtitle: '={{$parameter["operation"] + ": " + $parameter["resource"]}}', + description: 'Consume Google Business Profile API', + defaults: { + name: 'Google Business Profile', + }, + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], + hints: [ + { + message: 'Please select a parameter in the options to modify the post', + displayCondition: + '={{$parameter["resource"] === "post" && $parameter["operation"] === "update" && Object.keys($parameter["additionalOptions"]).length === 0}}', + whenToDisplay: 'always', + location: 'outputPane', + type: 'warning', + }, + ], + credentials: [ + { + name: 'googleBusinessProfileOAuth2Api', + required: true, + }, + ], + requestDefaults: { + baseURL: 'https://mybusiness.googleapis.com/v4', + headers: { + Accept: 'application/json', + 'Content-Type': 'application/json', + }, + }, + properties: [ + { + displayName: 'Resource', + name: 'resource', + type: 'options', + noDataExpression: true, + options: [ + { + name: 'Post', + value: 'post', + }, + { + name: 'Review', + value: 'review', + }, + ], + default: 'post', + }, + ...postOperations, + ...postFields, + ...reviewOperations, + ...reviewFields, + ], + }; + + methods = { + listSearch: { + searchAccounts, + searchLocations, + searchReviews, + searchPosts, + }, + }; +} diff --git a/packages/nodes-base/nodes/Google/BusinessProfile/GoogleBusinessProfileTrigger.node.json b/packages/nodes-base/nodes/Google/BusinessProfile/GoogleBusinessProfileTrigger.node.json new file mode 100644 index 0000000000..a65cf884b9 --- /dev/null +++ b/packages/nodes-base/nodes/Google/BusinessProfile/GoogleBusinessProfileTrigger.node.json @@ -0,0 +1,19 @@ +{ + "node": "n8n-nodes-base.googleBusinessProfileTrigger", + "nodeVersion": "1.0", + "codexVersion": "1.0", + "categories": ["Communication"], + "resources": { + "credentialDocumentation": [ + { + "url": "https://docs.n8n.io/integrations/builtin/credentials/google/oauth-single-service/" + } + ], + "primaryDocumentation": [ + { + "url": "https://docs.n8n.io/integrations/builtin/trigger-nodes/n8n-nodes-base.googlebusinessprofiletrigger/" + } + ] + }, + "alias": ["Google My Business", "GMB", "My Business"] +} diff --git a/packages/nodes-base/nodes/Google/BusinessProfile/GoogleBusinessProfileTrigger.node.ts b/packages/nodes-base/nodes/Google/BusinessProfile/GoogleBusinessProfileTrigger.node.ts new file mode 100644 index 0000000000..9b48827941 --- /dev/null +++ b/packages/nodes-base/nodes/Google/BusinessProfile/GoogleBusinessProfileTrigger.node.ts @@ -0,0 +1,192 @@ +import { + NodeApiError, + NodeConnectionType, + type IPollFunctions, + type IDataObject, + type INodeExecutionData, + type INodeType, + type INodeTypeDescription, +} from 'n8n-workflow'; + +import { googleApiRequest, searchAccounts, searchLocations } from './GenericFunctions'; + +export class GoogleBusinessProfileTrigger implements INodeType { + description: INodeTypeDescription = { + displayName: 'Google Business Profile Trigger', + name: 'googleBusinessProfileTrigger', + icon: 'file:googleBusinessProfile.svg', + group: ['trigger'], + version: 1, + description: + 'Fetches reviews from Google Business Profile and starts the workflow on specified polling intervals.', + subtitle: '={{"Google Business Profile Trigger"}}', + defaults: { + name: 'Google Business Profile Trigger', + }, + credentials: [ + { + name: 'googleBusinessProfileOAuth2Api', + required: true, + }, + ], + polling: true, + inputs: [], + outputs: [NodeConnectionType.Main], + properties: [ + { + displayName: 'Event', + name: 'event', + required: true, + type: 'options', + noDataExpression: true, + default: 'reviewAdded', + options: [ + { + name: 'Review Added', + value: 'reviewAdded', + }, + ], + }, + { + displayName: 'Account', + name: 'account', + required: true, + type: 'resourceLocator', + default: { mode: 'list', value: '' }, + description: 'The Google Business Profile account', + displayOptions: { show: { event: ['reviewAdded'] } }, + modes: [ + { + displayName: 'From list', + name: 'list', + type: 'list', + typeOptions: { + searchListMethod: 'searchAccounts', + searchable: true, + }, + }, + { + displayName: 'By name', + name: 'name', + type: 'string', + hint: 'Enter the account name', + validation: [ + { + type: 'regex', + properties: { + regex: 'accounts/[0-9]+', + errorMessage: 'The name must start with "accounts/"', + }, + }, + ], + placeholder: 'e.g. accounts/0123456789', + }, + ], + }, + { + displayName: 'Location', + name: 'location', + required: true, + type: 'resourceLocator', + default: { mode: 'list', value: '' }, + description: 'The specific location or business associated with the account', + displayOptions: { show: { event: ['reviewAdded'] } }, + modes: [ + { + displayName: 'From list', + name: 'list', + type: 'list', + typeOptions: { + searchListMethod: 'searchLocations', + searchable: true, + }, + }, + { + displayName: 'By name', + name: 'name', + type: 'string', + hint: 'Enter the location name', + validation: [ + { + type: 'regex', + properties: { + regex: 'locations/[0-9]+', + errorMessage: 'The name must start with "locations/"', + }, + }, + ], + placeholder: 'e.g. locations/0123456789', + }, + ], + }, + ], + }; + + methods = { + listSearch: { + searchAccounts, + searchLocations, + }, + }; + + async poll(this: IPollFunctions): Promise { + const nodeStaticData = this.getWorkflowStaticData('node'); + let responseData; + const qs: IDataObject = {}; + + const account = (this.getNodeParameter('account') as { value: string; mode: string }).value; + const location = (this.getNodeParameter('location') as { value: string; mode: string }).value; + + const manualMode = this.getMode() === 'manual'; + if (manualMode) { + qs.pageSize = 1; // In manual mode we only want to fetch the latest review + } else { + qs.pageSize = 50; // Maximal page size for the get reviews endpoint + } + + try { + responseData = (await googleApiRequest.call( + this, + 'GET', + `/${account}/${location}/reviews`, + {}, + qs, + )) as { reviews: IDataObject[]; totalReviewCount: number; nextPageToken?: string }; + + if (manualMode) { + responseData = responseData.reviews; + } else { + // During the first execution there is no delta + if (!nodeStaticData.totalReviewCountLastTimeChecked) { + nodeStaticData.totalReviewCountLastTimeChecked = responseData.totalReviewCount; + return null; + } + + // When count did't change the node shouldn't trigger + if ( + !responseData?.reviews?.length || + nodeStaticData?.totalReviewCountLastTimeChecked === responseData?.totalReviewCount + ) { + return null; + } + + const numNewReviews = + // @ts-ignore + responseData.totalReviewCount - nodeStaticData.totalReviewCountLastTimeChecked; + nodeStaticData.totalReviewCountLastTimeChecked = responseData.totalReviewCount; + + // By default the reviews will be sorted by updateTime in descending order + // Return only the delta reviews since last pooling + responseData = responseData.reviews.slice(0, numNewReviews); + } + + if (Array.isArray(responseData) && responseData.length) { + return [this.helpers.returnJsonArray(responseData)]; + } + + return null; + } catch (error) { + throw new NodeApiError(this.getNode(), error); + } + } +} diff --git a/packages/nodes-base/nodes/Google/BusinessProfile/Interfaces.ts b/packages/nodes-base/nodes/Google/BusinessProfile/Interfaces.ts new file mode 100644 index 0000000000..481fcb9bc6 --- /dev/null +++ b/packages/nodes-base/nodes/Google/BusinessProfile/Interfaces.ts @@ -0,0 +1,23 @@ +interface IDate { + year: number; + month: number; + day: number; +} + +interface ITimeOfDay { + hours: number; + minutes: number; + seconds: number; + nanos: number; +} + +export interface ITimeInterval { + startDate: IDate; + startTime: ITimeOfDay; + endDate: IDate; + endTime: ITimeOfDay; +} + +export interface IReviewReply { + comment: string; +} diff --git a/packages/nodes-base/nodes/Google/BusinessProfile/PostDescription.ts b/packages/nodes-base/nodes/Google/BusinessProfile/PostDescription.ts new file mode 100644 index 0000000000..fc1b0a2e87 --- /dev/null +++ b/packages/nodes-base/nodes/Google/BusinessProfile/PostDescription.ts @@ -0,0 +1,1000 @@ +import type { INodeProperties } from 'n8n-workflow'; + +import { + addUpdateMaskPresend, + handleDatesPresend, + handleErrorsDeletePost, + handleErrorsGetPost, + handleErrorsUpdatePost, + handlePagination, +} from './GenericFunctions'; + +export const postOperations: INodeProperties[] = [ + { + displayName: 'Operation', + name: 'operation', + type: 'options', + default: 'create', + noDataExpression: true, + displayOptions: { show: { resource: ['post'] } }, + options: [ + { + name: 'Create', + value: 'create', + action: 'Create post', + description: 'Create a new post on Google Business Profile', + routing: { + send: { preSend: [handleDatesPresend] }, + request: { + method: 'POST', + url: '=/{{$parameter["account"]}}/{{$parameter["location"]}}/localPosts', + }, + }, + }, + { + name: 'Delete', + value: 'delete', + action: 'Delete post', + description: 'Delete an existing post', + routing: { + request: { + method: 'DELETE', + url: '=/{{$parameter["post"]}}', + ignoreHttpStatusErrors: true, + }, + output: { + postReceive: [handleErrorsDeletePost], + }, + }, + }, + { + name: 'Get', + value: 'get', + action: 'Get post', + description: 'Retrieve details of a specific post', + routing: { + request: { + method: 'GET', + url: '=/{{$parameter["post"]}}', + ignoreHttpStatusErrors: true, + }, + output: { + postReceive: [handleErrorsGetPost], + }, + }, + }, + { + name: 'Get Many', + value: 'getAll', + action: 'Get many posts', + description: 'Retrieve multiple posts', + routing: { + send: { paginate: true }, + operations: { pagination: handlePagination }, + request: { + method: 'GET', + url: '=/{{$parameter["account"]}}/{{$parameter["location"]}}/localPosts', + qs: { + pageSize: + '={{ $parameter["limit"] ? ($parameter["limit"] < 100 ? $parameter["limit"] : 100) : 100 }}', // Google allows maximum 100 results per page + }, + }, + }, + }, + { + name: 'Update', + value: 'update', + action: 'Update a post', + description: 'Update an existing post', + routing: { + send: { + preSend: [handleDatesPresend, addUpdateMaskPresend], + }, + request: { + method: 'PATCH', + url: '=/{{$parameter["post"]}}', + ignoreHttpStatusErrors: true, + }, + output: { + postReceive: [handleErrorsUpdatePost], + }, + }, + }, + ], + }, +]; + +export const postFields: INodeProperties[] = [ + /* -------------------------------------------------------------------------- */ + /* post:create */ + /* -------------------------------------------------------------------------- */ + { + displayName: 'Account', + name: 'account', + required: true, + type: 'resourceLocator', + default: { mode: 'list', value: '' }, + description: 'The Google Business Profile account', + displayOptions: { show: { resource: ['post'], operation: ['create'] } }, + modes: [ + { + displayName: 'From list', + name: 'list', + type: 'list', + typeOptions: { + searchListMethod: 'searchAccounts', + searchable: true, + }, + }, + { + displayName: 'By name', + name: 'name', + type: 'string', + hint: 'Enter the account name', + validation: [ + { + type: 'regex', + properties: { + regex: 'accounts/[0-9]+', + errorMessage: 'The name must start with "accounts/"', + }, + }, + ], + placeholder: 'e.g. accounts/0123456789', + }, + ], + }, + { + displayName: 'Location', + name: 'location', + required: true, + type: 'resourceLocator', + default: { mode: 'list', value: '' }, + description: 'The specific location or business associated with the account', + displayOptions: { show: { resource: ['post'], operation: ['create'] } }, + modes: [ + { + displayName: 'From list', + name: 'list', + type: 'list', + typeOptions: { + searchListMethod: 'searchLocations', + searchable: true, + }, + }, + { + displayName: 'By name', + name: 'name', + type: 'string', + hint: 'Enter the location name', + validation: [ + { + type: 'regex', + properties: { + regex: 'locations/[0-9]+', + errorMessage: 'The name must start with "locations/"', + }, + }, + ], + placeholder: 'e.g. locations/0123456789', + }, + ], + }, + { + displayName: 'Post Type', + name: 'postType', + required: true, + type: 'options', + default: 'STANDARD', + description: 'The type of post to create (standard, event, offer, or alert)', + displayOptions: { show: { resource: ['post'], operation: ['create'] } }, + routing: { send: { type: 'body', property: 'topicType' } }, + options: [ + { + name: 'Standard', + value: 'STANDARD', + }, + { + name: 'Event', + value: 'EVENT', + }, + { + name: 'Offer', + value: 'OFFER', + }, + { + name: 'Alert', + value: 'ALERT', + }, + ], + }, + { + displayName: 'Summary', + name: 'summary', + required: true, + type: 'string', + default: '', + description: 'The main text of the post', + displayOptions: { show: { resource: ['post'], operation: ['create'] } }, + routing: { send: { type: 'body', property: 'summary' } }, + }, + { + displayName: 'Title', + name: 'title', + required: true, + type: 'string', + default: '', + description: 'E.g. Sales this week.', + displayOptions: { show: { resource: ['post'], operation: ['create'], postType: ['EVENT'] } }, + routing: { send: { type: 'body', property: 'event.title' } }, + }, + { + displayName: 'Start Date and Time', + name: 'startDateTime', + required: true, + type: 'dateTime', + default: '', + description: 'The start date and time of the event', + displayOptions: { show: { resource: ['post'], operation: ['create'], postType: ['EVENT'] } }, + }, + { + displayName: 'End Date and Time', + name: 'endDateTime', + required: true, + type: 'dateTime', + default: '', + description: 'The end date and time of the event', + displayOptions: { show: { resource: ['post'], operation: ['create'], postType: ['EVENT'] } }, + }, + { + displayName: 'Title', + name: 'title', + required: true, + type: 'string', + default: '', + description: 'E.g. 20% off in store or online.', + displayOptions: { show: { resource: ['post'], operation: ['create'], postType: ['OFFER'] } }, + routing: { send: { type: 'body', property: 'event.title' } }, + }, + { + displayName: 'Start Date', + name: 'startDate', + required: true, + type: 'string', + default: '', + placeholder: 'YYYY-MM-DD', + description: 'The start date of the offer', + displayOptions: { show: { resource: ['post'], operation: ['create'], postType: ['OFFER'] } }, + }, + { + displayName: 'End Date', + name: 'endDate', + required: true, + type: 'string', + default: '', + placeholder: 'YYYY-MM-DD', + description: 'The end date of the offer', + displayOptions: { show: { resource: ['post'], operation: ['create'], postType: ['OFFER'] } }, + }, + { + displayName: 'Alert Type', + name: 'alertType', + required: true, + type: 'options', + default: 'COVID_19', + description: 'The sub-type of the alert', + displayOptions: { show: { resource: ['post'], operation: ['create'], postType: ['ALERT'] } }, + routing: { + send: { type: 'body', property: 'alertType' }, + }, + options: [ + { + name: 'Covid 19', + value: 'COVID_19', + description: 'This alert is related to the 2019 Coronavirus Disease pandemic', + }, + ], + }, + { + displayName: 'Options', + name: 'additionalOptions', + type: 'collection', + default: {}, + placeholder: 'Add Option', + displayOptions: { show: { resource: ['post'], operation: ['create'] } }, + options: [ + { + displayName: 'Language', + name: 'languageCode', + type: 'string', + default: '', + placeholder: 'e.g. en', + description: + 'The language code of the post content. More info.', + routing: { send: { type: 'body', property: 'languageCode' } }, + }, + { + displayName: 'Call to Action Type', + name: 'callToActionType', + type: 'options', + default: 'ACTION_TYPE_UNSPECIFIED', + description: 'The type of call to action', + displayOptions: { show: { '/postType': ['STANDARD', 'EVENT', 'ALERT'] } }, + routing: { + send: { type: 'body', property: 'callToAction.actionType' }, + }, + options: [ + { + name: 'Action Type Unspecified', + value: 'ACTION_TYPE_UNSPECIFIED', + description: 'Type unspecified', + }, + { + name: 'Book', + value: 'BOOK', + description: 'This post wants a user to book an appointment/table/etc', + }, + { + name: 'Call', + value: 'CALL', + description: 'This post wants a user to call the business', + }, + { + name: 'Learn More', + value: 'LEARN_MORE', + description: 'This post wants a user to learn more (at their website)', + }, + { + name: 'Order', + value: 'ORDER', + description: 'This post wants a user to order something', + }, + { + name: 'Shop', + value: 'SHOP', + description: 'This post wants a user to browse a product catalog', + }, + { + name: 'Sign Up', + value: 'SIGN_UP', + description: 'This post wants a user to register/sign up/join something', + }, + ], + }, + { + displayName: 'Call to Action Url', + name: 'url', + type: 'string', + default: '', + description: 'The URL that users are sent to when clicking through the promotion', + displayOptions: { show: { '/postType': ['STANDARD', 'EVENT', 'ALERT'] } }, + routing: { + send: { type: 'body', property: 'callToAction.url' }, + }, + }, + { + displayName: 'Coupon Code', + name: 'couponCode', + type: 'string', + default: '', + description: 'The coupon code for the offer', + displayOptions: { show: { '/postType': ['OFFER'] } }, + routing: { + send: { type: 'body', property: 'offer.couponCode' }, + }, + }, + { + displayName: 'Redeem Online Url', + name: 'redeemOnlineUrl', + type: 'string', + default: '', + description: 'Link to redeem the offer', + displayOptions: { show: { '/postType': ['OFFER'] } }, + routing: { + send: { type: 'body', property: 'offer.redeemOnlineUrl' }, + }, + }, + { + displayName: 'Terms and Conditions', + name: 'termsConditions', + type: 'string', + default: '', + description: 'The terms and conditions of the offer', + displayOptions: { show: { '/postType': ['OFFER'] } }, + routing: { + send: { type: 'body', property: 'offer.termsConditions' }, + }, + }, + ], + }, + + /* -------------------------------------------------------------------------- */ + /* post:delete */ + /* -------------------------------------------------------------------------- */ + { + displayName: 'Account', + name: 'account', + required: true, + type: 'resourceLocator', + default: { mode: 'list', value: '' }, + description: 'The Google Business Profile account', + displayOptions: { show: { resource: ['post'], operation: ['delete'] } }, + modes: [ + { + displayName: 'From list', + name: 'list', + type: 'list', + typeOptions: { + searchListMethod: 'searchAccounts', + searchable: true, + }, + }, + { + displayName: 'By name', + name: 'name', + type: 'string', + hint: 'Enter the account name', + validation: [ + { + type: 'regex', + properties: { + regex: 'accounts/[0-9]+', + errorMessage: 'The name must start with "accounts/"', + }, + }, + ], + placeholder: 'e.g. accounts/0123456789', + }, + ], + }, + { + displayName: 'Location', + name: 'location', + required: true, + type: 'resourceLocator', + default: { mode: 'list', value: '' }, + description: 'The specific location or business associated with the account', + displayOptions: { show: { resource: ['post'], operation: ['delete'] } }, + modes: [ + { + displayName: 'From list', + name: 'list', + type: 'list', + typeOptions: { + searchListMethod: 'searchLocations', + searchable: true, + }, + }, + { + displayName: 'By name', + name: 'name', + type: 'string', + hint: 'Enter the location name', + validation: [ + { + type: 'regex', + properties: { + regex: 'locations/[0-9]+', + errorMessage: 'The name must start with "locations/"', + }, + }, + ], + placeholder: 'e.g. locations/0123456789', + }, + ], + }, + { + displayName: 'Post', + name: 'post', + type: 'resourceLocator', + default: { mode: 'list', value: '' }, + description: 'Select the post to retrieve its details', + displayOptions: { show: { resource: ['post'], operation: ['delete'] } }, + modes: [ + { + displayName: 'From list', + name: 'list', + type: 'list', + typeOptions: { + searchListMethod: 'searchPosts', + searchable: true, + }, + }, + { + displayName: 'By name', + name: 'name', + type: 'string', + validation: [ + { + type: 'regex', + properties: { + regex: 'accounts/[0-9]+/locations/[0-9]+/localPosts/[0-9]+', + errorMessage: + 'The name must be in the format "accounts/123/locations/123/localPosts/123"', + }, + }, + ], + placeholder: 'e.g. accounts/123/locations/123/localPosts/123', + }, + ], + }, + + /* -------------------------------------------------------------------------- */ + /* post:get */ + /* -------------------------------------------------------------------------- */ + { + displayName: 'Account', + name: 'account', + required: true, + type: 'resourceLocator', + default: { mode: 'list', value: '' }, + description: 'The Google Business Profile account', + displayOptions: { show: { resource: ['post'], operation: ['get'] } }, + modes: [ + { + displayName: 'From list', + name: 'list', + type: 'list', + typeOptions: { + searchListMethod: 'searchAccounts', + searchable: true, + }, + }, + { + displayName: 'By name', + name: 'name', + type: 'string', + hint: 'Enter the account name', + validation: [ + { + type: 'regex', + properties: { + regex: 'accounts/[0-9]+', + errorMessage: 'The name must start with "accounts/"', + }, + }, + ], + placeholder: 'e.g. accounts/0123456789', + }, + ], + }, + { + displayName: 'Location', + name: 'location', + required: true, + type: 'resourceLocator', + default: { mode: 'list', value: '' }, + description: 'The specific location or business associated with the account', + displayOptions: { show: { resource: ['post'], operation: ['get'] } }, + modes: [ + { + displayName: 'From list', + name: 'list', + type: 'list', + typeOptions: { + searchListMethod: 'searchLocations', + searchable: true, + }, + }, + { + displayName: 'By name', + name: 'name', + type: 'string', + hint: 'Enter the location name', + validation: [ + { + type: 'regex', + properties: { + regex: 'locations/[0-9]+', + errorMessage: 'The name must start with "locations/"', + }, + }, + ], + placeholder: 'e.g. locations/0123456789', + }, + ], + }, + { + displayName: 'Post', + name: 'post', + type: 'resourceLocator', + default: { mode: 'list', value: '' }, + description: 'Select the post to retrieve its details', + displayOptions: { show: { resource: ['post'], operation: ['get'] } }, + modes: [ + { + displayName: 'From list', + name: 'list', + type: 'list', + typeOptions: { + searchListMethod: 'searchPosts', + searchable: true, + }, + }, + { + displayName: 'By name', + name: 'name', + type: 'string', + validation: [ + { + type: 'regex', + properties: { + regex: 'accounts/[0-9]+/locations/[0-9]+/localPosts/[0-9]+', + errorMessage: + 'The name must be in the format "accounts/123/locations/123/localPosts/123"', + }, + }, + ], + placeholder: 'e.g. accounts/123/locations/123/localPosts/123', + }, + ], + }, + + /* -------------------------------------------------------------------------- */ + /* post:getAll */ + /* -------------------------------------------------------------------------- */ + { + displayName: 'Account', + name: 'account', + required: true, + type: 'resourceLocator', + default: { mode: 'list', value: '' }, + description: 'The Google Business Profile account', + displayOptions: { show: { resource: ['post'], operation: ['getAll'] } }, + modes: [ + { + displayName: 'From list', + name: 'list', + type: 'list', + typeOptions: { + searchListMethod: 'searchAccounts', + searchable: true, + }, + }, + { + displayName: 'By name', + name: 'name', + type: 'string', + hint: 'Enter the account name', + validation: [ + { + type: 'regex', + properties: { + regex: 'accounts/[0-9]+', + errorMessage: 'The name must start with "accounts/"', + }, + }, + ], + placeholder: 'e.g. accounts/0123456789', + }, + ], + }, + { + displayName: 'Location', + name: 'location', + required: true, + type: 'resourceLocator', + default: { mode: 'list', value: '' }, + description: 'The specific location or business associated with the account', + displayOptions: { show: { resource: ['post'], operation: ['getAll'] } }, + modes: [ + { + displayName: 'From list', + name: 'list', + type: 'list', + typeOptions: { + searchListMethod: 'searchLocations', + searchable: true, + }, + }, + { + displayName: 'By name', + name: 'name', + type: 'string', + hint: 'Enter the location name', + validation: [ + { + type: 'regex', + properties: { + regex: 'locations/[0-9]+', + errorMessage: 'The name must start with "locations/"', + }, + }, + ], + placeholder: 'e.g. locations/0123456789', + }, + ], + }, + { + displayName: 'Return All', + name: 'returnAll', + default: false, + description: 'Whether to return all results or only up to a given limit', + displayOptions: { show: { resource: ['post'], operation: ['getAll'] } }, + type: 'boolean', + }, + { + displayName: 'Limit', + name: 'limit', + type: 'number', + typeOptions: { + minValue: 1, + }, + default: 20, + description: 'Max number of results to return', + displayOptions: { show: { resource: ['post'], operation: ['getAll'], returnAll: [false] } }, + }, + + /* -------------------------------------------------------------------------- */ + /* post:update */ + /* -------------------------------------------------------------------------- */ + { + displayName: 'Account', + name: 'account', + required: true, + type: 'resourceLocator', + default: { mode: 'list', value: '' }, + description: 'The Google Business Profile account', + displayOptions: { show: { resource: ['post'], operation: ['update'] } }, + modes: [ + { + displayName: 'From list', + name: 'list', + type: 'list', + typeOptions: { + searchListMethod: 'searchAccounts', + searchable: true, + }, + }, + { + displayName: 'By name', + name: 'name', + type: 'string', + hint: 'Enter the account name', + validation: [ + { + type: 'regex', + properties: { + regex: 'accounts/[0-9]+', + errorMessage: 'The name must start with "accounts/"', + }, + }, + ], + placeholder: 'e.g. accounts/0123456789', + }, + ], + }, + { + displayName: 'Location', + name: 'location', + required: true, + type: 'resourceLocator', + default: { mode: 'list', value: '' }, + description: 'The specific location or business associated with the account', + displayOptions: { show: { resource: ['post'], operation: ['update'] } }, + modes: [ + { + displayName: 'From list', + name: 'list', + type: 'list', + typeOptions: { + searchListMethod: 'searchLocations', + searchable: true, + }, + }, + { + displayName: 'By name', + name: 'name', + type: 'string', + hint: 'Enter the location name', + validation: [ + { + type: 'regex', + properties: { + regex: 'locations/[0-9]+', + errorMessage: 'The name must start with "locations/"', + }, + }, + ], + placeholder: 'e.g. locations/0123456789', + }, + ], + }, + { + displayName: 'Post', + name: 'post', + type: 'resourceLocator', + default: { mode: 'list', value: '' }, + description: 'Select the post to retrieve its details', + displayOptions: { show: { resource: ['post'], operation: ['update'] } }, + modes: [ + { + displayName: 'From list', + name: 'list', + type: 'list', + typeOptions: { + searchListMethod: 'searchPosts', + searchable: true, + }, + }, + { + displayName: 'By name', + name: 'name', + type: 'string', + validation: [ + { + type: 'regex', + properties: { + regex: 'accounts/[0-9]+/locations/[0-9]+/localPosts/[0-9]+', + errorMessage: + 'The name must be in the format "accounts/123/locations/123/localPosts/123"', + }, + }, + ], + placeholder: 'e.g. accounts/123/locations/123/localPosts/123', + }, + ], + }, + { + displayName: + "Make sure that the updated options are supported by the post type. More info.", + name: 'notice', + type: 'notice', + default: '', + displayOptions: { show: { resource: ['post'], operation: ['update'] } }, + }, + { + displayName: 'Options', + name: 'additionalOptions', + type: 'collection', + default: {}, + placeholder: 'Add Option', + displayOptions: { show: { resource: ['post'], operation: ['update'] } }, + options: [ + { + displayName: 'Summary', + name: 'summary', + type: 'string', + default: '', + description: 'The main text of the post', + routing: { send: { type: 'body', property: 'summary' } }, + }, + { + displayName: 'Language', + name: 'languageCode', + type: 'string', + default: '', + placeholder: 'e.g. en', + description: + 'The language code of the post content. More info.', + routing: { send: { type: 'body', property: 'languageCode' } }, + }, + { + displayName: 'Call to Action Type', + name: 'callToActionType', + type: 'options', + default: 'ACTION_TYPE_UNSPECIFIED', + description: 'The type of call to action', + routing: { + send: { type: 'body', property: 'callToAction.actionType' }, + }, + options: [ + { + name: 'Action Type Unspecified', + value: 'ACTION_TYPE_UNSPECIFIED', + description: 'Type unspecified', + }, + { + name: 'Book', + value: 'BOOK', + description: 'This post wants a user to book an appointment/table/etc', + }, + { + name: 'Get Offer', + value: 'GET_OFFER', + description: + 'Deprecated. Use OFFER in LocalPostTopicType to create a post with offer content.', + }, + { + name: 'Learn More', + value: 'LEARN_MORE', + description: 'This post wants a user to learn more (at their website)', + }, + { + name: 'Order', + value: 'ORDER', + description: 'This post wants a user to order something', + }, + { + name: 'Shop', + value: 'SHOP', + description: 'This post wants a user to browse a product catalog', + }, + { + name: 'Sign Up', + value: 'SIGN_UP', + description: 'This post wants a user to register/sign up/join something', + }, + ], + }, + { + displayName: 'Call to Action Url', + name: 'url', + type: 'string', + default: '', + description: 'The URL that users are sent to when clicking through the promotion', + routing: { + send: { type: 'body', property: 'callToAction.url' }, + }, + }, + { + displayName: 'Start Date and Time', + name: 'startDateTime', + type: 'dateTime', + default: '', + description: 'The start date and time of the event', + }, + { + displayName: 'End Date and Time', + name: 'endDateTime', + type: 'dateTime', + default: '', + description: 'The end date and time of the event', + }, + { + displayName: 'Title', + name: 'title', + type: 'string', + default: '', + description: 'E.g. 20% off in store or online.', + routing: { send: { type: 'body', property: 'event.title' } }, + }, + { + displayName: 'Start Date', + name: 'startDate', + type: 'string', + default: '', + placeholder: 'YYYY-MM-DD', + description: 'The start date of the offer', + }, + { + displayName: 'End Date', + name: 'endDate', + type: 'string', + default: '', + placeholder: 'YYYY-MM-DD', + description: 'The end date of the offer', + }, + { + displayName: 'Coupon Code', + name: 'couponCode', + type: 'string', + default: '', + description: 'The coupon code for the offer', + routing: { + send: { type: 'body', property: 'offer.couponCode' }, + }, + }, + { + displayName: 'Redeem Online Url', + name: 'redeemOnlineUrl', + type: 'string', + default: '', + description: 'Link to redeem the offer', + routing: { + send: { type: 'body', property: 'offer.redeemOnlineUrl' }, + }, + }, + { + displayName: 'Terms and Conditions', + name: 'termsConditions', + type: 'string', + default: '', + description: 'The terms and conditions of the offer', + routing: { + send: { type: 'body', property: 'offer.termsConditions' }, + }, + }, + ], + }, +]; diff --git a/packages/nodes-base/nodes/Google/BusinessProfile/ReviewDescription.ts b/packages/nodes-base/nodes/Google/BusinessProfile/ReviewDescription.ts new file mode 100644 index 0000000000..c67d842b84 --- /dev/null +++ b/packages/nodes-base/nodes/Google/BusinessProfile/ReviewDescription.ts @@ -0,0 +1,574 @@ +import type { INodeProperties } from 'n8n-workflow'; + +import { + handleErrorsDeleteReply, + handleErrorsGetReview, + handleErrorsReplyToReview, + handlePagination, +} from './GenericFunctions'; + +export const reviewOperations: INodeProperties[] = [ + { + displayName: 'Operation', + name: 'operation', + type: 'options', + default: 'get', + noDataExpression: true, + displayOptions: { show: { resource: ['review'] } }, + options: [ + { + name: 'Delete Reply', + value: 'delete', + action: 'Delete a reply to a review', + description: 'Delete a reply to a review', + routing: { + request: { + method: 'DELETE', + url: '=/{{$parameter["account"]}}/{{$parameter["location"]}}/reviews/{{$parameter["review"].split("reviews/").pop().split("/reply")[0]}}/reply', + ignoreHttpStatusErrors: true, + }, + output: { + postReceive: [handleErrorsDeleteReply], + }, + }, + }, + { + name: 'Get', + value: 'get', + action: 'Get review', + description: 'Retrieve details of a specific review on Google Business Profile', + routing: { + request: { + method: 'GET', + url: '=/{{$parameter["account"]}}/{{$parameter["location"]}}/reviews/{{$parameter["review"].split("reviews/").pop().split("/reply")[0]}}', + ignoreHttpStatusErrors: true, + }, + + output: { + postReceive: [handleErrorsGetReview], + }, + }, + }, + { + name: 'Get Many', + value: 'getAll', + action: 'Get many reviews', + description: 'Retrieve multiple reviews', + routing: { + send: { paginate: true }, + operations: { pagination: handlePagination }, + request: { + method: 'GET', + url: '=/{{$parameter["account"]}}/{{$parameter["location"]}}/reviews', + qs: { + pageSize: + '={{ $parameter["limit"] ? ($parameter["limit"] < 50 ? $parameter["limit"] : 50) : 50 }}', // Google allows maximum 50 results per page + }, + }, + }, + }, + { + name: 'Reply', + value: 'reply', + action: 'Reply to review', + description: 'Reply to a review', + routing: { + request: { + method: 'PUT', + url: '=/{{$parameter["account"]}}/{{$parameter["location"]}}/reviews/{{$parameter["review"].split("reviews/").pop().split("/reply")[0]}}/reply', + ignoreHttpStatusErrors: true, + }, + output: { + postReceive: [handleErrorsReplyToReview], + }, + }, + }, + ], + }, +]; + +export const reviewFields: INodeProperties[] = [ + /* -------------------------------------------------------------------------- */ + /* review:get */ + /* -------------------------------------------------------------------------- */ + { + displayName: 'Account', + name: 'account', + required: true, + type: 'resourceLocator', + default: { mode: 'list', value: '' }, + description: 'The Google Business Profile account', + displayOptions: { show: { resource: ['review'], operation: ['get'] } }, + modes: [ + { + displayName: 'From list', + name: 'list', + type: 'list', + typeOptions: { + searchListMethod: 'searchAccounts', + searchable: true, + }, + }, + { + displayName: 'By name', + name: 'name', + type: 'string', + hint: 'Enter the account name', + validation: [ + { + type: 'regex', + properties: { + regex: 'accounts/[0-9]+', + errorMessage: 'The name must start with "accounts/"', + }, + }, + ], + placeholder: 'e.g. accounts/0123456789', + }, + ], + }, + { + displayName: 'Location', + name: 'location', + required: true, + type: 'resourceLocator', + default: { mode: 'list', value: '' }, + description: 'The specific location or business associated with the account', + displayOptions: { show: { resource: ['review'], operation: ['get'] } }, + modes: [ + { + displayName: 'From list', + name: 'list', + type: 'list', + typeOptions: { + searchListMethod: 'searchLocations', + searchable: true, + }, + }, + { + displayName: 'By name', + name: 'name', + type: 'string', + hint: 'Enter the location name', + validation: [ + { + type: 'regex', + properties: { + regex: 'locations/[0-9]+', + errorMessage: 'The name must start with "locations/"', + }, + }, + ], + placeholder: 'e.g. locations/0123456789', + }, + ], + }, + { + displayName: 'Review', + name: 'review', + required: true, + type: 'resourceLocator', + default: { mode: 'list', value: '' }, + description: 'Select the review to retrieve its details', + displayOptions: { show: { resource: ['review'], operation: ['get'] } }, + modes: [ + { + displayName: 'From list', + name: 'list', + type: 'list', + typeOptions: { + searchListMethod: 'searchReviews', + searchable: true, + }, + }, + { + displayName: 'By ID', + name: 'id', + type: 'string', + validation: [ + { + type: 'regex', + properties: { + regex: '^(?!accounts/[0-9]+/locations/[0-9]+/reviews/).*', + errorMessage: 'The name must not start with "accounts/123/locations/123/reviews/"', + }, + }, + ], + placeholder: 'e.g. ABC123_review-ID_456xyz', + }, + { + displayName: 'By name', + name: 'name', + type: 'string', + validation: [ + { + type: 'regex', + properties: { + regex: 'accounts/[0-9]+/locations/[0-9]+/reviews/.*$', + errorMessage: 'The name must start with "accounts/123/locations/123/reviews/"', + }, + }, + ], + placeholder: 'e.g. accounts/123/locations/123/reviews/ABC123_review-ID_456xyz', + }, + ], + }, + + /* -------------------------------------------------------------------------- */ + /* review:delete */ + /* -------------------------------------------------------------------------- */ + { + displayName: 'Account', + name: 'account', + required: true, + type: 'resourceLocator', + default: { mode: 'list', value: '' }, + description: 'The Google Business Profile account', + displayOptions: { show: { resource: ['review'], operation: ['delete'] } }, + modes: [ + { + displayName: 'From list', + name: 'list', + type: 'list', + typeOptions: { + searchListMethod: 'searchAccounts', + searchable: true, + }, + }, + { + displayName: 'By name', + name: 'name', + type: 'string', + hint: 'Enter the account name', + validation: [ + { + type: 'regex', + properties: { + regex: 'accounts/[0-9]+', + errorMessage: 'The name must start with "accounts/"', + }, + }, + ], + placeholder: 'e.g. accounts/0123456789', + }, + ], + }, + { + displayName: 'Location', + name: 'location', + required: true, + type: 'resourceLocator', + default: { mode: 'list', value: '' }, + description: 'The specific location or business associated with the account', + displayOptions: { show: { resource: ['review'], operation: ['delete'] } }, + modes: [ + { + displayName: 'From list', + name: 'list', + type: 'list', + typeOptions: { + searchListMethod: 'searchLocations', + searchable: true, + }, + }, + { + displayName: 'By name', + name: 'name', + type: 'string', + hint: 'Enter the location name', + validation: [ + { + type: 'regex', + properties: { + regex: 'locations/[0-9]+', + errorMessage: 'The name must start with "locations/"', + }, + }, + ], + placeholder: 'e.g. locations/0123456789', + }, + ], + }, + { + displayName: 'Review', + name: 'review', + required: true, + type: 'resourceLocator', + default: { mode: 'list', value: '' }, + description: 'Select the review to retrieve its details', + displayOptions: { show: { resource: ['review'], operation: ['delete'] } }, + modes: [ + { + displayName: 'From list', + name: 'list', + type: 'list', + typeOptions: { + searchListMethod: 'searchReviews', + searchable: true, + }, + }, + { + displayName: 'By ID', + name: 'id', + type: 'string', + validation: [ + { + type: 'regex', + properties: { + regex: '^(?!accounts/[0-9]+/locations/[0-9]+/reviews/).*', + errorMessage: 'The name must not start with "accounts/123/locations/123/reviews/"', + }, + }, + ], + placeholder: 'e.g. ABC123_review-ID_456xyz', + }, + { + displayName: 'By name', + name: 'name', + type: 'string', + validation: [ + { + type: 'regex', + properties: { + regex: 'accounts/[0-9]+/locations/[0-9]+/reviews/.*$', + errorMessage: 'The name must start with "accounts/123/locations/123/reviews/"', + }, + }, + ], + placeholder: 'e.g. accounts/123/locations/123/reviews/ABC123_review-ID_456xyz', + }, + ], + }, + + /* -------------------------------------------------------------------------- */ + /* review:getAll */ + /* -------------------------------------------------------------------------- */ + { + displayName: 'Account', + name: 'account', + required: true, + type: 'resourceLocator', + default: { mode: 'list', value: '' }, + description: 'The Google Business Profile account', + displayOptions: { show: { resource: ['review'], operation: ['getAll'] } }, + modes: [ + { + displayName: 'From list', + name: 'list', + type: 'list', + typeOptions: { + searchListMethod: 'searchAccounts', + searchable: true, + }, + }, + { + displayName: 'By name', + name: 'name', + type: 'string', + hint: 'Enter the account name', + validation: [ + { + type: 'regex', + properties: { + regex: 'accounts/[0-9]+', + errorMessage: 'The name must start with "accounts/"', + }, + }, + ], + placeholder: 'e.g. accounts/0123456789', + }, + ], + }, + { + displayName: 'Location', + name: 'location', + required: true, + type: 'resourceLocator', + default: { mode: 'list', value: '' }, + description: 'The specific location or business associated with the account', + displayOptions: { show: { resource: ['review'], operation: ['getAll'] } }, + modes: [ + { + displayName: 'From list', + name: 'list', + type: 'list', + typeOptions: { + searchListMethod: 'searchLocations', + searchable: true, + }, + }, + { + displayName: 'By name', + name: 'name', + type: 'string', + hint: 'Enter the location name', + validation: [ + { + type: 'regex', + properties: { + regex: 'locations/[0-9]+', + errorMessage: 'The name must start with "locations/"', + }, + }, + ], + placeholder: 'e.g. locations/0123456789', + }, + ], + }, + { + displayName: 'Return All', + name: 'returnAll', + default: false, + description: 'Whether to return all results or only up to a given limit', + displayOptions: { show: { resource: ['review'], operation: ['getAll'] } }, + type: 'boolean', + }, + { + displayName: 'Limit', + name: 'limit', + required: true, + type: 'number', + typeOptions: { + minValue: 1, + }, + default: 20, + description: 'Max number of results to return', + displayOptions: { show: { resource: ['review'], operation: ['getAll'], returnAll: [false] } }, + }, + + /* -------------------------------------------------------------------------- */ + /* review:reply */ + /* -------------------------------------------------------------------------- */ + { + displayName: 'Account', + name: 'account', + required: true, + type: 'resourceLocator', + default: { mode: 'list', value: '' }, + description: 'The Google Business Profile account', + displayOptions: { show: { resource: ['review'], operation: ['reply'] } }, + modes: [ + { + displayName: 'From list', + name: 'list', + type: 'list', + typeOptions: { + searchListMethod: 'searchAccounts', + searchable: true, + }, + }, + { + displayName: 'By name', + name: 'name', + type: 'string', + hint: 'Enter the account name', + validation: [ + { + type: 'regex', + properties: { + regex: 'accounts/[0-9]+', + errorMessage: 'The name must start with "accounts/"', + }, + }, + ], + placeholder: 'e.g. accounts/0123456789', + }, + ], + }, + { + displayName: 'Location', + name: 'location', + required: true, + type: 'resourceLocator', + default: { mode: 'list', value: '' }, + description: 'The specific location or business associated with the account', + displayOptions: { show: { resource: ['review'], operation: ['reply'] } }, + modes: [ + { + displayName: 'From list', + name: 'list', + type: 'list', + typeOptions: { + searchListMethod: 'searchLocations', + searchable: true, + }, + }, + { + displayName: 'By name', + name: 'name', + type: 'string', + hint: 'Enter the location name', + validation: [ + { + type: 'regex', + properties: { + regex: 'locations/[0-9]+', + errorMessage: 'The name must start with "locations/"', + }, + }, + ], + placeholder: 'e.g. locations/0123456789', + }, + ], + }, + { + displayName: 'Review', + name: 'review', + required: true, + type: 'resourceLocator', + default: { mode: 'list', value: '' }, + description: 'Select the review to retrieve its details', + displayOptions: { show: { resource: ['review'], operation: ['reply'] } }, + modes: [ + { + displayName: 'From list', + name: 'list', + type: 'list', + typeOptions: { + searchListMethod: 'searchReviews', + searchable: true, + }, + }, + { + displayName: 'By ID', + name: 'id', + type: 'string', + validation: [ + { + type: 'regex', + properties: { + regex: '^(?!accounts/[0-9]+/locations/[0-9]+/reviews/).*', + errorMessage: 'The name must not start with "accounts/123/locations/123/reviews/"', + }, + }, + ], + placeholder: 'e.g. ABC123_review-ID_456xyz', + }, + { + displayName: 'By name', + name: 'name', + type: 'string', + validation: [ + { + type: 'regex', + properties: { + regex: 'accounts/[0-9]+/locations/[0-9]+/reviews/.*$', + errorMessage: 'The name must start with "accounts/123/locations/123/reviews/"', + }, + }, + ], + placeholder: 'e.g. accounts/123/locations/123/reviews/ABC123_review-ID_456xyz', + }, + ], + }, + { + displayName: 'Reply', + name: 'reply', + type: 'string', + default: '', + description: 'The body of the reply (up to 4096 characters)', + displayOptions: { show: { resource: ['review'], operation: ['reply'] } }, + typeOptions: { rows: 5 }, + routing: { send: { type: 'body', property: 'comment' } }, + }, +]; diff --git a/packages/nodes-base/nodes/Google/BusinessProfile/googleBusinessProfile.svg b/packages/nodes-base/nodes/Google/BusinessProfile/googleBusinessProfile.svg new file mode 100644 index 0000000000..c42fe66906 --- /dev/null +++ b/packages/nodes-base/nodes/Google/BusinessProfile/googleBusinessProfile.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/nodes-base/nodes/Google/BusinessProfile/test/AddUpdateMask.test.ts b/packages/nodes-base/nodes/Google/BusinessProfile/test/AddUpdateMask.test.ts new file mode 100644 index 0000000000..94f37b9034 --- /dev/null +++ b/packages/nodes-base/nodes/Google/BusinessProfile/test/AddUpdateMask.test.ts @@ -0,0 +1,84 @@ +import type { IExecuteSingleFunctions, IHttpRequestOptions } from 'n8n-workflow'; + +import { addUpdateMaskPresend } from '../GenericFunctions'; + +describe('GenericFunctions - addUpdateMask', () => { + const mockGetNodeParameter = jest.fn(); + + const mockContext = { + getNodeParameter: mockGetNodeParameter, + } as unknown as IExecuteSingleFunctions; + + beforeEach(() => { + mockGetNodeParameter.mockClear(); + }); + + it('should add updateMask with mapped properties to the query string', async () => { + mockGetNodeParameter.mockReturnValue({ + postType: 'postTypeValue', + url: 'https://example.com', + startDateTime: '2023-09-15T10:00:00.000Z', + couponCode: 'DISCOUNT123', + }); + + const opts: Partial = { + qs: {}, + }; + + const result = await addUpdateMaskPresend.call(mockContext, opts as IHttpRequestOptions); + + expect(result.qs).toEqual({ + updateMask: + 'topicType,callToAction.url,event.schedule.startDate,event.schedule.startTime,offer.couponCode', + }); + }); + + it('should handle empty additionalOptions and not add updateMask', async () => { + mockGetNodeParameter.mockReturnValue({}); + + const opts: Partial = { + qs: {}, + }; + + const result = await addUpdateMaskPresend.call(mockContext, opts as IHttpRequestOptions); + + expect(result.qs).toEqual({}); + }); + + it('should include unmapped properties in the updateMask', async () => { + mockGetNodeParameter.mockReturnValue({ + postType: 'postTypeValue', + unmappedProperty: 'someValue', + }); + + const opts: Partial = { + qs: {}, + }; + + const result = await addUpdateMaskPresend.call(mockContext, opts as IHttpRequestOptions); + + expect(result.qs).toEqual({ + updateMask: 'topicType,unmappedProperty', + }); + }); + + it('should merge updateMask with existing query string', async () => { + mockGetNodeParameter.mockReturnValue({ + postType: 'postTypeValue', + redeemOnlineUrl: 'https://google.example.com', + }); + + const opts: Partial = { + qs: { + existingQuery: 'existingValue', + }, + }; + + const result = await addUpdateMaskPresend.call(mockContext, opts as IHttpRequestOptions); + + expect(result.qs).toEqual({ + existingQuery: 'existingValue', + updateMask: 'topicType,offer.redeemOnlineUrl', + }); + }); +}); diff --git a/packages/nodes-base/nodes/Google/BusinessProfile/test/GoogleApiRequest.test.ts b/packages/nodes-base/nodes/Google/BusinessProfile/test/GoogleApiRequest.test.ts new file mode 100644 index 0000000000..ef6c237a33 --- /dev/null +++ b/packages/nodes-base/nodes/Google/BusinessProfile/test/GoogleApiRequest.test.ts @@ -0,0 +1,84 @@ +import { NodeApiError, type ILoadOptionsFunctions, type IPollFunctions } from 'n8n-workflow'; + +import { googleApiRequest } from '../GenericFunctions'; + +describe('googleApiRequest', () => { + const mockHttpRequestWithAuthentication = jest.fn(); + const mockContext = { + helpers: { + httpRequestWithAuthentication: mockHttpRequestWithAuthentication, + }, + getNode: jest.fn(), + } as unknown as ILoadOptionsFunctions | IPollFunctions; + + beforeEach(() => { + jest.clearAllMocks(); + }); + + it('should make a GET request and return data', async () => { + const mockResponse = { success: true }; + mockHttpRequestWithAuthentication.mockResolvedValue(mockResponse); + + const result = await googleApiRequest.call(mockContext, 'GET', '/test-resource'); + + expect(mockHttpRequestWithAuthentication).toHaveBeenCalledWith( + 'googleBusinessProfileOAuth2Api', + expect.objectContaining({ + method: 'GET', + url: 'https://mybusiness.googleapis.com/v4/test-resource', + qs: {}, + json: true, + }), + ); + + expect(result).toEqual(mockResponse); + }); + + it('should make a POST request with body and return data', async () => { + const mockResponse = { success: true }; + mockHttpRequestWithAuthentication.mockResolvedValue(mockResponse); + + const requestBody = { key: 'value' }; + const result = await googleApiRequest.call(mockContext, 'POST', '/test-resource', requestBody); + + expect(mockHttpRequestWithAuthentication).toHaveBeenCalledWith( + 'googleBusinessProfileOAuth2Api', + expect.objectContaining({ + method: 'POST', + body: requestBody, + url: 'https://mybusiness.googleapis.com/v4/test-resource', + qs: {}, + json: true, + }), + ); + + expect(result).toEqual(mockResponse); + }); + + it('should remove the body for GET requests', async () => { + const mockResponse = { success: true }; + mockHttpRequestWithAuthentication.mockResolvedValue(mockResponse); + + const result = await googleApiRequest.call(mockContext, 'GET', '/test-resource', {}); + + expect(mockHttpRequestWithAuthentication).toHaveBeenCalledWith( + 'googleBusinessProfileOAuth2Api', + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment + expect.not.objectContaining({ body: expect.anything() }), + ); + + expect(result).toEqual(mockResponse); + }); + + it('should throw NodeApiError on API failure', async () => { + const mockError = new Error('API request failed'); + mockHttpRequestWithAuthentication.mockRejectedValue(mockError); + + await expect(googleApiRequest.call(mockContext, 'GET', '/test-resource')).rejects.toThrow( + NodeApiError, + ); + + expect(mockContext.getNode).toHaveBeenCalled(); + expect(mockHttpRequestWithAuthentication).toHaveBeenCalled(); + }); +}); diff --git a/packages/nodes-base/nodes/Google/BusinessProfile/test/HandleDatesPresend.test.ts b/packages/nodes-base/nodes/Google/BusinessProfile/test/HandleDatesPresend.test.ts new file mode 100644 index 0000000000..6ef15ab8c6 --- /dev/null +++ b/packages/nodes-base/nodes/Google/BusinessProfile/test/HandleDatesPresend.test.ts @@ -0,0 +1,131 @@ +import type { IExecuteSingleFunctions, IHttpRequestOptions } from 'n8n-workflow'; + +import { handleDatesPresend } from '../GenericFunctions'; + +describe('GenericFunctions - handleDatesPresend', () => { + const mockGetNode = jest.fn(); + const mockGetNodeParameter = jest.fn(); + + const mockContext = { + getNode: mockGetNode, + getNodeParameter: mockGetNodeParameter, + } as unknown as IExecuteSingleFunctions; + + beforeEach(() => { + mockGetNode.mockClear(); + mockGetNodeParameter.mockClear(); + }); + + it('should return options unchanged if no date-time parameters are provided', async () => { + mockGetNode.mockReturnValue({ + parameters: {}, + }); + mockGetNodeParameter.mockReturnValue({}); + + const opts: Partial = { + body: {}, + }; + + const result = await handleDatesPresend.call(mockContext, opts as IHttpRequestOptions); + + expect(result).toEqual(opts); + }); + + it('should merge startDateTime parameter into event schedule', async () => { + mockGetNode.mockReturnValue({ + parameters: { + startDateTime: '2023-09-15T10:00:00.000Z', + }, + }); + mockGetNodeParameter.mockReturnValue({}); + + const opts: Partial = { + body: {}, + }; + + const result = await handleDatesPresend.call(mockContext, opts as IHttpRequestOptions); + + expect(result.body).toEqual({ + event: { + schedule: { + startDate: { year: 2023, month: 9, day: 15 }, + startTime: { hours: 10, minutes: 0, seconds: 0, nanos: 0 }, + }, + }, + }); + }); + + it('should merge startDate and endDateTime parameters into event schedule', async () => { + mockGetNode.mockReturnValue({ + parameters: { + startDate: '2023-09-15', + endDateTime: '2023-09-16T12:30:00.000Z', + }, + }); + mockGetNodeParameter.mockReturnValue({}); + + const opts: Partial = { + body: {}, + }; + + const result = await handleDatesPresend.call(mockContext, opts as IHttpRequestOptions); + + expect(result.body).toEqual({ + event: { + schedule: { + startDate: { year: 2023, month: 9, day: 15 }, + endDate: { year: 2023, month: 9, day: 16 }, + endTime: { hours: 12, minutes: 30, seconds: 0, nanos: 0 }, + }, + }, + }); + }); + + it('should merge additional options into event schedule', async () => { + mockGetNode.mockReturnValue({ + parameters: { + startDate: '2023-09-15', + }, + }); + mockGetNodeParameter.mockReturnValue({ + additionalOption: 'someValue', + }); + + const opts: Partial = { + body: {}, + }; + + const result = await handleDatesPresend.call(mockContext, opts as IHttpRequestOptions); + + expect(result.body).toEqual({ + event: { + schedule: { + startDate: { year: 2023, month: 9, day: 15 }, + }, + }, + }); + }); + + it('should modify the body with event schedule containing only date', async () => { + mockGetNode.mockReturnValue({ + parameters: { + startDate: '2023-09-15', + }, + }); + mockGetNodeParameter.mockReturnValue({}); + + const opts: Partial = { + body: { event: {} }, + }; + + const result = await handleDatesPresend.call(mockContext, opts as IHttpRequestOptions); + + expect(result.body).toEqual({ + event: { + schedule: { + startDate: { year: 2023, month: 9, day: 15 }, + }, + }, + }); + }); +}); diff --git a/packages/nodes-base/nodes/Google/BusinessProfile/test/HandlePagination.test.ts b/packages/nodes-base/nodes/Google/BusinessProfile/test/HandlePagination.test.ts new file mode 100644 index 0000000000..ad9b0755a5 --- /dev/null +++ b/packages/nodes-base/nodes/Google/BusinessProfile/test/HandlePagination.test.ts @@ -0,0 +1,123 @@ +import type { DeclarativeRestApiSettings, IExecutePaginationFunctions } from 'n8n-workflow'; + +import { handlePagination } from '../GenericFunctions'; + +describe('GenericFunctions - handlePagination', () => { + const mockMakeRoutingRequest = jest.fn(); + const mockGetNodeParameter = jest.fn(); + + const mockContext = { + makeRoutingRequest: mockMakeRoutingRequest, + getNodeParameter: mockGetNodeParameter, + } as unknown as IExecutePaginationFunctions; + + beforeEach(() => { + mockMakeRoutingRequest.mockClear(); + mockGetNodeParameter.mockClear(); + }); + + it('should stop fetching when the limit is reached and returnAll is false', async () => { + mockMakeRoutingRequest + .mockResolvedValueOnce([ + { + json: { + localPosts: [{ id: 1 }, { id: 2 }], + nextPageToken: 'nextToken1', + }, + }, + ]) + .mockResolvedValueOnce([ + { + json: { + localPosts: [{ id: 3 }, { id: 4 }], + }, + }, + ]); + + mockGetNodeParameter.mockReturnValueOnce(false); + mockGetNodeParameter.mockReturnValueOnce(3); + + const requestOptions = { + options: { + qs: {}, + }, + } as unknown as DeclarativeRestApiSettings.ResultOptions; + + const result = await handlePagination.call(mockContext, requestOptions); + + expect(mockMakeRoutingRequest).toHaveBeenCalledTimes(2); + expect(result).toEqual([{ json: { id: 1 } }, { json: { id: 2 } }, { json: { id: 3 } }]); + }); + + it('should handle empty results', async () => { + mockMakeRoutingRequest.mockResolvedValueOnce([ + { + json: { + localPosts: [], + }, + }, + ]); + + mockGetNodeParameter.mockReturnValueOnce(false); + mockGetNodeParameter.mockReturnValueOnce(5); + + const requestOptions = { + options: { + qs: {}, + }, + } as unknown as DeclarativeRestApiSettings.ResultOptions; + + const result = await handlePagination.call(mockContext, requestOptions); + + expect(mockMakeRoutingRequest).toHaveBeenCalledTimes(1); + + expect(result).toEqual([]); + }); + + it('should fetch all items when returnAll is true', async () => { + mockMakeRoutingRequest + .mockResolvedValueOnce([ + { + json: { + localPosts: [{ id: 1 }, { id: 2 }], + nextPageToken: 'nextToken1', + }, + }, + ]) + .mockResolvedValueOnce([ + { + json: { + localPosts: [{ id: 3 }, { id: 4 }], + nextPageToken: 'nextToken2', + }, + }, + ]) + .mockResolvedValueOnce([ + { + json: { + localPosts: [{ id: 5 }], + }, + }, + ]); + + mockGetNodeParameter.mockReturnValueOnce(true); + + const requestOptions = { + options: { + qs: {}, + }, + } as unknown as DeclarativeRestApiSettings.ResultOptions; + + const result = await handlePagination.call(mockContext, requestOptions); + + expect(mockMakeRoutingRequest).toHaveBeenCalledTimes(3); + + expect(result).toEqual([ + { json: { id: 1 } }, + { json: { id: 2 } }, + { json: { id: 3 } }, + { json: { id: 4 } }, + { json: { id: 5 } }, + ]); + }); +}); diff --git a/packages/nodes-base/nodes/Google/BusinessProfile/test/SearchAccounts.test.ts b/packages/nodes-base/nodes/Google/BusinessProfile/test/SearchAccounts.test.ts new file mode 100644 index 0000000000..01e08f3732 --- /dev/null +++ b/packages/nodes-base/nodes/Google/BusinessProfile/test/SearchAccounts.test.ts @@ -0,0 +1,65 @@ +import type { ILoadOptionsFunctions } from 'n8n-workflow'; + +import { searchAccounts } from '../GenericFunctions'; + +describe('GenericFunctions - searchAccounts', () => { + const mockGoogleApiRequest = jest.fn(); + + const mockContext = { + helpers: { + httpRequestWithAuthentication: mockGoogleApiRequest, + }, + } as unknown as ILoadOptionsFunctions; + + beforeEach(() => { + mockGoogleApiRequest.mockClear(); + }); + + it('should return accounts with filtering', async () => { + mockGoogleApiRequest.mockResolvedValue({ + accounts: [ + { name: 'accounts/123', accountName: 'Test Account 1' }, + { name: 'accounts/234', accountName: 'Test Account 2' }, + ], + }); + + const filter = '123'; + const result = await searchAccounts.call(mockContext, filter); + + expect(result).toEqual({ + results: [{ name: 'Test Account 1', value: 'accounts/123' }], + paginationToken: undefined, + }); + }); + + it('should handle empty results', async () => { + mockGoogleApiRequest.mockResolvedValue({ accounts: [] }); + + const result = await searchAccounts.call(mockContext); + + expect(result).toEqual({ results: [], paginationToken: undefined }); + }); + + it('should handle pagination', async () => { + mockGoogleApiRequest.mockResolvedValue({ + accounts: [{ name: 'accounts/123', accountName: 'Test Account 1' }], + nextPageToken: 'nextToken1', + }); + mockGoogleApiRequest.mockResolvedValue({ + accounts: [{ name: 'accounts/234', accountName: 'Test Account 2' }], + nextPageToken: 'nextToken2', + }); + mockGoogleApiRequest.mockResolvedValue({ + accounts: [{ name: 'accounts/345', accountName: 'Test Account 3' }], + }); + + const result = await searchAccounts.call(mockContext); + + // The request would only return the last result + // N8N handles the pagination and adds the previous results to the results array + expect(result).toEqual({ + results: [{ name: 'Test Account 3', value: 'accounts/345' }], + paginationToken: undefined, + }); + }); +}); diff --git a/packages/nodes-base/nodes/Google/BusinessProfile/test/SearchLocations.test.ts b/packages/nodes-base/nodes/Google/BusinessProfile/test/SearchLocations.test.ts new file mode 100644 index 0000000000..2279840d26 --- /dev/null +++ b/packages/nodes-base/nodes/Google/BusinessProfile/test/SearchLocations.test.ts @@ -0,0 +1,68 @@ +import type { ILoadOptionsFunctions } from 'n8n-workflow'; + +import { searchLocations } from '../GenericFunctions'; + +describe('GenericFunctions - searchLocations', () => { + const mockGoogleApiRequest = jest.fn(); + const mockGetNodeParameter = jest.fn(); + + const mockContext = { + helpers: { + httpRequestWithAuthentication: mockGoogleApiRequest, + }, + getNodeParameter: mockGetNodeParameter, + } as unknown as ILoadOptionsFunctions; + + beforeEach(() => { + mockGoogleApiRequest.mockClear(); + mockGetNodeParameter.mockClear(); + mockGetNodeParameter.mockReturnValue('parameterValue'); + }); + + it('should return locations with filtering', async () => { + mockGoogleApiRequest.mockResolvedValue({ + locations: [{ name: 'locations/123' }, { name: 'locations/234' }], + }); + + const filter = '123'; + const result = await searchLocations.call(mockContext, filter); + + expect(result).toEqual({ + // eslint-disable-next-line n8n-nodes-base/node-param-display-name-miscased + results: [{ name: 'locations/123', value: 'locations/123' }], + paginationToken: undefined, + }); + }); + + it('should handle empty results', async () => { + mockGoogleApiRequest.mockResolvedValue({ locations: [] }); + + const result = await searchLocations.call(mockContext); + + expect(result).toEqual({ results: [], paginationToken: undefined }); + }); + + it('should handle pagination', async () => { + mockGoogleApiRequest.mockResolvedValue({ + locations: [{ name: 'locations/123' }], + nextPageToken: 'nextToken1', + }); + mockGoogleApiRequest.mockResolvedValue({ + locations: [{ name: 'locations/234' }], + nextPageToken: 'nextToken2', + }); + mockGoogleApiRequest.mockResolvedValue({ + locations: [{ name: 'locations/345' }], + }); + + const result = await searchLocations.call(mockContext); + + // The request would only return the last result + // N8N handles the pagination and adds the previous results to the results array + expect(result).toEqual({ + // eslint-disable-next-line n8n-nodes-base/node-param-display-name-miscased + results: [{ name: 'locations/345', value: 'locations/345' }], + paginationToken: undefined, + }); + }); +}); diff --git a/packages/nodes-base/nodes/Google/BusinessProfile/test/SearchPosts.test.ts b/packages/nodes-base/nodes/Google/BusinessProfile/test/SearchPosts.test.ts new file mode 100644 index 0000000000..9a542d721c --- /dev/null +++ b/packages/nodes-base/nodes/Google/BusinessProfile/test/SearchPosts.test.ts @@ -0,0 +1,72 @@ +import type { ILoadOptionsFunctions } from 'n8n-workflow'; + +import { searchPosts } from '../GenericFunctions'; + +describe('GenericFunctions - searchPosts', () => { + const mockGoogleApiRequest = jest.fn(); + const mockGetNodeParameter = jest.fn(); + + const mockContext = { + helpers: { + httpRequestWithAuthentication: mockGoogleApiRequest, + }, + getNodeParameter: mockGetNodeParameter, + } as unknown as ILoadOptionsFunctions; + + beforeEach(() => { + mockGoogleApiRequest.mockClear(); + mockGetNodeParameter.mockClear(); + mockGetNodeParameter.mockReturnValue('parameterValue'); + }); + + it('should return posts with filtering', async () => { + mockGoogleApiRequest.mockResolvedValue({ + localPosts: [ + { name: 'accounts/123/locations/123/localPosts/123', summary: 'First Post' }, + { name: 'accounts/123/locations/123/localPosts/234', summary: 'Second Post' }, + ], + }); + + const filter = 'First'; + const result = await searchPosts.call(mockContext, filter); + + expect(result).toEqual({ + results: [ + { + name: 'First Post', + value: 'accounts/123/locations/123/localPosts/123', + }, + ], + paginationToken: undefined, + }); + }); + + it('should handle empty results', async () => { + mockGoogleApiRequest.mockResolvedValue({ localPosts: [] }); + + const result = await searchPosts.call(mockContext); + + expect(result).toEqual({ results: [], paginationToken: undefined }); + }); + + it('should handle pagination', async () => { + mockGoogleApiRequest.mockResolvedValue({ + localPosts: [{ name: 'accounts/123/locations/123/localPosts/123', summary: 'First Post' }], + nextPageToken: 'nextToken1', + }); + mockGoogleApiRequest.mockResolvedValue({ + localPosts: [{ name: 'accounts/123/locations/123/localPosts/234', summary: 'Second Post' }], + nextPageToken: 'nextToken2', + }); + mockGoogleApiRequest.mockResolvedValue({ + localPosts: [{ name: 'accounts/123/locations/123/localPosts/345', summary: 'Third Post' }], + }); + + const result = await searchPosts.call(mockContext); + + expect(result).toEqual({ + results: [{ name: 'Third Post', value: 'accounts/123/locations/123/localPosts/345' }], + paginationToken: undefined, + }); + }); +}); diff --git a/packages/nodes-base/nodes/Google/BusinessProfile/test/SearchReviews.test.ts b/packages/nodes-base/nodes/Google/BusinessProfile/test/SearchReviews.test.ts new file mode 100644 index 0000000000..6a5b8e3daf --- /dev/null +++ b/packages/nodes-base/nodes/Google/BusinessProfile/test/SearchReviews.test.ts @@ -0,0 +1,73 @@ +/* eslint-disable n8n-nodes-base/node-param-display-name-miscased */ +import type { ILoadOptionsFunctions } from 'n8n-workflow'; + +import { searchReviews } from '../GenericFunctions'; + +describe('GenericFunctions - searchReviews', () => { + const mockGoogleApiRequest = jest.fn(); + const mockGetNodeParameter = jest.fn(); + + const mockContext = { + helpers: { + httpRequestWithAuthentication: mockGoogleApiRequest, + }, + getNodeParameter: mockGetNodeParameter, + } as unknown as ILoadOptionsFunctions; + + beforeEach(() => { + mockGoogleApiRequest.mockClear(); + mockGetNodeParameter.mockClear(); + mockGetNodeParameter.mockReturnValue('parameterValue'); + }); + + it('should return reviews with filtering', async () => { + mockGoogleApiRequest.mockResolvedValue({ + reviews: [ + { name: 'accounts/123/locations/123/reviews/123', comment: 'Great service!' }, + { name: 'accounts/123/locations/123/reviews/234', comment: 'Good experience.' }, + ], + }); + + const filter = 'Great'; + const result = await searchReviews.call(mockContext, filter); + + expect(result).toEqual({ + results: [ + { + name: 'Great service!', + value: 'accounts/123/locations/123/reviews/123', + }, + ], + paginationToken: undefined, + }); + }); + + it('should handle empty results', async () => { + mockGoogleApiRequest.mockResolvedValue({ reviews: [] }); + + const result = await searchReviews.call(mockContext); + + expect(result).toEqual({ results: [], paginationToken: undefined }); + }); + + it('should handle pagination', async () => { + mockGoogleApiRequest.mockResolvedValue({ + reviews: [{ name: 'accounts/123/locations/123/reviews/123', comment: 'First Review' }], + nextPageToken: 'nextToken1', + }); + mockGoogleApiRequest.mockResolvedValue({ + reviews: [{ name: 'accounts/123/locations/123/reviews/234', comment: 'Second Review' }], + nextPageToken: 'nextToken2', + }); + mockGoogleApiRequest.mockResolvedValue({ + reviews: [{ name: 'accounts/123/locations/123/reviews/345', comment: 'Third Review' }], + }); + + const result = await searchReviews.call(mockContext); + + expect(result).toEqual({ + results: [{ name: 'Third Review', value: 'accounts/123/locations/123/reviews/345' }], + paginationToken: undefined, + }); + }); +}); diff --git a/packages/nodes-base/nodes/Google/Calendar/CalendarDescription.ts b/packages/nodes-base/nodes/Google/Calendar/CalendarDescription.ts index d712ead0f8..68725c010e 100644 --- a/packages/nodes-base/nodes/Google/Calendar/CalendarDescription.ts +++ b/packages/nodes-base/nodes/Google/Calendar/CalendarDescription.ts @@ -106,7 +106,7 @@ export const calendarFields: INodeProperties[] = [ displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Options', + placeholder: 'Add option', displayOptions: { show: { operation: ['availability'], diff --git a/packages/nodes-base/nodes/Google/Calendar/EventDescription.ts b/packages/nodes-base/nodes/Google/Calendar/EventDescription.ts index ee0d162b76..6892c88152 100644 --- a/packages/nodes-base/nodes/Google/Calendar/EventDescription.ts +++ b/packages/nodes-base/nodes/Google/Calendar/EventDescription.ts @@ -193,7 +193,7 @@ export const eventFields: INodeProperties[] = [ }, default: '', description: - 'The color of the event. Choose from the list, or specify an ID using an expression.', + 'The color of the event. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Conference Data', @@ -214,9 +214,9 @@ export const eventFields: INodeProperties[] = [ name: 'conferenceSolution', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { - loadOptionsMethod: 'getConferenceSolutations', + loadOptionsMethod: 'getConferenceSolutions', loadOptionsDependsOn: ['calendar'], }, default: '', @@ -480,7 +480,7 @@ export const eventFields: INodeProperties[] = [ displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Options', + placeholder: 'Add option', default: {}, displayOptions: { show: { @@ -536,7 +536,7 @@ export const eventFields: INodeProperties[] = [ displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Options', + placeholder: 'Add option', default: {}, displayOptions: { show: { @@ -633,7 +633,7 @@ export const eventFields: INodeProperties[] = [ displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, displayOptions: { show: { @@ -656,6 +656,15 @@ export const eventFields: INodeProperties[] = [ default: '', description: 'At least some part of the event must be before this time', }, + { + displayName: 'Fields', + name: 'fields', + type: 'string', + placeholder: 'e.g. items(ID,status,summary)', + default: '', + description: + "Specify fields to return, by default a predefined by Google set of commonly used fields would be returned. To return all fields, use '*', more info.", + }, { displayName: 'iCalUID', name: 'iCalUID', @@ -830,6 +839,58 @@ export const eventFields: INodeProperties[] = [ default: 'no', description: 'Whether the event is all day or not', }, + { + displayName: 'Attendees', + name: 'attendeesUi', + type: 'fixedCollection', + placeholder: 'Add Attendees', + default: { + values: { + mode: 'add', + attendees: [], + }, + }, + options: [ + { + displayName: 'Values', + name: 'values', + values: [ + { + displayName: 'Mode', + name: 'mode', + type: 'options', + default: 'add', + options: [ + { + name: 'Add Attendees Below [Default]', + value: 'add', + }, + { + name: 'Replace Attendees with Those Below', + value: 'replace', + }, + ], + }, + { + displayName: 'Attendees', + name: 'attendees', + type: 'string', + typeOptions: { + multipleValues: true, + multipleValueButtonText: 'Add Attendee', + }, + default: '', + description: 'The attendees of the event. Multiple ones can be separated by comma.', + }, + ], + }, + ], + displayOptions: { + show: { + '@version': [{ _cnd: { gte: 1.2 } }], + }, + }, + }, { displayName: 'Attendees', name: 'attendees', @@ -840,6 +901,11 @@ export const eventFields: INodeProperties[] = [ }, default: '', description: 'The attendees of the event. Multiple ones can be separated by comma.', + displayOptions: { + show: { + '@version': [1, 1.1], + }, + }, }, { displayName: 'Color Name or ID', @@ -850,7 +916,7 @@ export const eventFields: INodeProperties[] = [ }, default: '', description: - 'The color of the event. Choose from the list, or specify an ID using an expression.', + 'The color of the event. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Description', diff --git a/packages/nodes-base/nodes/Google/Calendar/GoogleCalendar.node.ts b/packages/nodes-base/nodes/Google/Calendar/GoogleCalendar.node.ts index 5231bc713f..93866afaf9 100644 --- a/packages/nodes-base/nodes/Google/Calendar/GoogleCalendar.node.ts +++ b/packages/nodes-base/nodes/Google/Calendar/GoogleCalendar.node.ts @@ -8,7 +8,7 @@ import type { INodeTypeDescription, JsonObject, } from 'n8n-workflow'; -import { NodeApiError, NodeOperationError } from 'n8n-workflow'; +import { NodeConnectionType, NodeApiError, NodeOperationError } from 'n8n-workflow'; import moment from 'moment-timezone'; import { v4 as uuid } from 'uuid'; @@ -34,14 +34,15 @@ export class GoogleCalendar implements INodeType { name: 'googleCalendar', icon: 'file:googleCalendar.svg', group: ['input'], - version: [1, 1.1], + version: [1, 1.1, 1.2], subtitle: '={{$parameter["operation"] + ": " + $parameter["resource"]}}', description: 'Consume Google Calendar API', defaults: { name: 'Google Calendar', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], + usableAsTool: true, credentials: [ { name: 'googleCalendarOAuth2Api', @@ -88,10 +89,10 @@ export class GoogleCalendar implements INodeType { loadOptions: { // Get all the calendars to display them to user so that they can // select them easily - async getConferenceSolutations(this: ILoadOptionsFunctions): Promise { + async getConferenceSolutions(this: ILoadOptionsFunctions): Promise { const returnData: INodePropertyOptions[] = []; - const calendar = this.getCurrentNodeParameter('calendar') as string; - const posibleSolutions: IDataObject = { + const calendar = this.getCurrentNodeParameter('calendar', { extractValue: true }) as string; + const possibleSolutions: IDataObject = { eventHangout: 'Google Hangout', eventNamedHangout: 'Google Hangout Classic', hangoutsMeet: 'Google Meet', @@ -105,7 +106,7 @@ export class GoogleCalendar implements INodeType { ); for (const solution of allowedConferenceSolutionTypes) { returnData.push({ - name: posibleSolutions[solution] as string, + name: possibleSolutions[solution] as string, value: solution, }); } @@ -436,6 +437,10 @@ export class GoogleCalendar implements INodeType { if (options.updatedMin) { qs.updatedMin = addTimezoneToDate(options.updatedMin as string, tz || timezone); } + if (options.fields) { + qs.fields = options.fields as string; + } + if (returnAll) { responseData = await googleApiRequestAllItems.call( this, @@ -497,6 +502,7 @@ export class GoogleCalendar implements INodeType { timeZone: updateTimezone, }; } + // nodeVersion < 1.2 if (updateFields.attendees) { body.attendees = []; (updateFields.attendees as string[]).forEach((attendee) => { @@ -509,6 +515,37 @@ export class GoogleCalendar implements INodeType { ); }); } + // nodeVersion >= 1.2 + if (updateFields.attendeesUi) { + const { mode, attendees } = ( + updateFields.attendeesUi as { + values: { + mode: string; + attendees: string[]; + }; + } + ).values; + body.attendees = []; + if (mode === 'add') { + const event = await googleApiRequest.call( + this, + 'GET', + `/calendar/v3/calendars/${calendarId}/events/${eventId}`, + ); + ((event?.attendees as IDataObject[]) || []).forEach((attendee) => { + body.attendees?.push(attendee); + }); + } + (attendees as string[]).forEach((attendee) => { + body.attendees!.push.apply( + body.attendees, + attendee + .split(',') + .map((a) => a.trim()) + .map((email) => ({ email })), + ); + }); + } if (updateFields.color) { body.colorId = updateFields.color as string; } @@ -612,7 +649,7 @@ export class GoogleCalendar implements INodeType { ); returnData.push(...executionData); } catch (error) { - if (!this.continueOnFail(error)) { + if (!this.continueOnFail()) { throw error; } else { const executionErrorData = this.helpers.constructExecutionMetaData( diff --git a/packages/nodes-base/nodes/Google/Calendar/GoogleCalendarTrigger.node.ts b/packages/nodes-base/nodes/Google/Calendar/GoogleCalendarTrigger.node.ts index a79726cef5..30c890487a 100644 --- a/packages/nodes-base/nodes/Google/Calendar/GoogleCalendarTrigger.node.ts +++ b/packages/nodes-base/nodes/Google/Calendar/GoogleCalendarTrigger.node.ts @@ -5,7 +5,7 @@ import type { INodeTypeDescription, IPollFunctions, } from 'n8n-workflow'; -import { NodeApiError, NodeOperationError } from 'n8n-workflow'; +import { NodeConnectionType, NodeApiError, NodeOperationError } from 'n8n-workflow'; import moment from 'moment-timezone'; @@ -29,7 +29,7 @@ export class GoogleCalendarTrigger implements INodeType { name: 'Google Calendar Trigger', }, inputs: [], - outputs: ['main'], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'googleCalendarOAuth2Api', @@ -112,7 +112,7 @@ export class GoogleCalendarTrigger implements INodeType { displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, options: [ { diff --git a/packages/nodes-base/nodes/Google/Calendar/test/node/event.update.test.ts b/packages/nodes-base/nodes/Google/Calendar/test/node/event.update.test.ts new file mode 100644 index 0000000000..39fa8a3b0a --- /dev/null +++ b/packages/nodes-base/nodes/Google/Calendar/test/node/event.update.test.ts @@ -0,0 +1,128 @@ +import type { MockProxy } from 'jest-mock-extended'; +import { mock } from 'jest-mock-extended'; +import type { INode, IExecuteFunctions } from 'n8n-workflow'; + +import { GoogleCalendar } from '../../GoogleCalendar.node'; + +import * as genericFunctions from '../../GenericFunctions'; + +jest.mock('../../GenericFunctions', () => ({ + getTimezones: jest.fn(), + googleApiRequest: jest.fn(), + googleApiRequestAllItems: jest.fn(), + addTimezoneToDate: jest.fn(), + addNextOccurrence: jest.fn(), + encodeURIComponentOnce: jest.fn(), +})); + +describe('RespondToWebhook Node', () => { + let googleCalendar: GoogleCalendar; + let mockExecuteFunctions: MockProxy; + + beforeEach(() => { + googleCalendar = new GoogleCalendar(); + mockExecuteFunctions = mock({ + getInputData: jest.fn(), + getNode: jest.fn(), + getNodeParameter: jest.fn(), + getTimezone: jest.fn(), + helpers: { + constructExecutionMetaData: jest.fn().mockReturnValue([]), + }, + }); + }); + + afterEach(() => { + jest.clearAllMocks(); + }); + + describe('Google Calendar > Event > Update', () => { + it('should update replace attendees in version 1.1', async () => { + mockExecuteFunctions.getInputData.mockReturnValue([{ json: {} }]); + mockExecuteFunctions.getNodeParameter.mockReturnValueOnce('event'); + mockExecuteFunctions.getNodeParameter.mockReturnValueOnce('update'); + mockExecuteFunctions.getTimezone.mockReturnValueOnce('Europe/Berlin'); + mockExecuteFunctions.getNode.mockReturnValue(mock({ typeVersion: 1.1 })); + mockExecuteFunctions.getNodeParameter.mockReturnValueOnce('myCalendar'); + mockExecuteFunctions.getNodeParameter.mockReturnValueOnce('myEvent'); + mockExecuteFunctions.getNodeParameter.mockReturnValueOnce(true); + mockExecuteFunctions.getNodeParameter.mockReturnValueOnce({ + attendees: ['email1@mail.com'], + }); + + await googleCalendar.execute.call(mockExecuteFunctions); + + expect(genericFunctions.googleApiRequest).toHaveBeenCalledWith( + 'PATCH', + '/calendar/v3/calendars/undefined/events/myEvent', + { attendees: [{ email: 'email1@mail.com' }] }, + {}, + ); + }); + + it('should update replace attendees', async () => { + mockExecuteFunctions.getInputData.mockReturnValue([{ json: {} }]); + mockExecuteFunctions.getNodeParameter.mockReturnValueOnce('event'); + mockExecuteFunctions.getNodeParameter.mockReturnValueOnce('update'); + mockExecuteFunctions.getTimezone.mockReturnValueOnce('Europe/Berlin'); + mockExecuteFunctions.getNode.mockReturnValue(mock({ typeVersion: 1.2 })); + mockExecuteFunctions.getNodeParameter.mockReturnValueOnce('myCalendar'); + mockExecuteFunctions.getNodeParameter.mockReturnValueOnce('myEvent'); + mockExecuteFunctions.getNodeParameter.mockReturnValueOnce(true); + mockExecuteFunctions.getNodeParameter.mockReturnValueOnce({ + attendeesUi: { + values: { + mode: 'replace', + attendees: ['email1@mail.com'], + }, + }, + }); + + await googleCalendar.execute.call(mockExecuteFunctions); + + expect(genericFunctions.googleApiRequest).toHaveBeenCalledWith( + 'PATCH', + '/calendar/v3/calendars/undefined/events/myEvent', + { attendees: [{ email: 'email1@mail.com' }] }, + {}, + ); + }); + + it('should update add attendees', async () => { + mockExecuteFunctions.getInputData.mockReturnValue([{ json: {} }]); + mockExecuteFunctions.getNodeParameter.mockReturnValueOnce('event'); + mockExecuteFunctions.getNodeParameter.mockReturnValueOnce('update'); + mockExecuteFunctions.getTimezone.mockReturnValueOnce('Europe/Berlin'); + mockExecuteFunctions.getNode.mockReturnValue(mock({ typeVersion: 1.2 })); + mockExecuteFunctions.getNodeParameter.mockReturnValueOnce('myCalendar'); + mockExecuteFunctions.getNodeParameter.mockReturnValueOnce('myEvent'); + mockExecuteFunctions.getNodeParameter.mockReturnValueOnce(true); + mockExecuteFunctions.getNodeParameter.mockReturnValueOnce({ + attendeesUi: { + values: { + mode: 'add', + attendees: ['email1@mail.com'], + }, + }, + }); + (genericFunctions.googleApiRequest as jest.Mock).mockResolvedValueOnce({ + attendees: [{ email: 'email2@mail.com' }], + }); + + await googleCalendar.execute.call(mockExecuteFunctions); + + expect(genericFunctions.googleApiRequest).toHaveBeenCalledTimes(2); + + expect(genericFunctions.googleApiRequest).toHaveBeenCalledWith( + 'GET', + '/calendar/v3/calendars/undefined/events/myEvent', + ); + expect(genericFunctions.googleApiRequest).toHaveBeenCalledWith( + 'PATCH', + '/calendar/v3/calendars/undefined/events/myEvent', + { attendees: [{ email: 'email2@mail.com' }, { email: 'email1@mail.com' }] }, + {}, + ); + }); + }); +}); diff --git a/packages/nodes-base/nodes/Google/Chat/GoogleChat.node.ts b/packages/nodes-base/nodes/Google/Chat/GoogleChat.node.ts index e58d681403..4501b7b7df 100644 --- a/packages/nodes-base/nodes/Google/Chat/GoogleChat.node.ts +++ b/packages/nodes-base/nodes/Google/Chat/GoogleChat.node.ts @@ -11,7 +11,7 @@ import type { INodeTypeDescription, IRequestOptions, } from 'n8n-workflow'; -import { NodeOperationError } from 'n8n-workflow'; +import { NodeConnectionType, NodeOperationError } from 'n8n-workflow'; import moment from 'moment-timezone'; import jwt from 'jsonwebtoken'; @@ -46,8 +46,8 @@ export class GoogleChat implements INodeType { defaults: { name: 'Google Chat', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'googleApi', @@ -538,7 +538,7 @@ export class GoogleChat implements INodeType { ); returnData.push(...executionData); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { // Return the actual reason as error if (operation === 'download') { items[i].json = { error: error.message }; diff --git a/packages/nodes-base/nodes/Google/Chat/MessageInterface.ts b/packages/nodes-base/nodes/Google/Chat/MessageInterface.ts index a03ab9f130..b2193f9820 100644 --- a/packages/nodes-base/nodes/Google/Chat/MessageInterface.ts +++ b/packages/nodes-base/nodes/Google/Chat/MessageInterface.ts @@ -32,9 +32,9 @@ export interface IUser { isAnonymous?: boolean; } const enum Type { - 'TYPE_UNSPECIFIED', - 'HUMAN', - 'BOT', + TYPE_UNSPECIFIED, + HUMAN, + BOT, } // // TODO: define other interfaces diff --git a/packages/nodes-base/nodes/Google/Chat/descriptions/IncomingWebhookDescription.ts b/packages/nodes-base/nodes/Google/Chat/descriptions/IncomingWebhookDescription.ts index ea8e98256a..4f2fe54a11 100644 --- a/packages/nodes-base/nodes/Google/Chat/descriptions/IncomingWebhookDescription.ts +++ b/packages/nodes-base/nodes/Google/Chat/descriptions/IncomingWebhookDescription.ts @@ -72,7 +72,7 @@ export const incomingWebhookFields: INodeProperties[] = [ name: 'messageUi', type: 'collection', required: true, - placeholder: 'Add Options', + placeholder: 'Add option', displayOptions: { show: { resource: ['incomingWebhook'], diff --git a/packages/nodes-base/nodes/Google/Chat/descriptions/MemberDescription.ts b/packages/nodes-base/nodes/Google/Chat/descriptions/MemberDescription.ts index 759af43b6f..a1ba320ac3 100644 --- a/packages/nodes-base/nodes/Google/Chat/descriptions/MemberDescription.ts +++ b/packages/nodes-base/nodes/Google/Chat/descriptions/MemberDescription.ts @@ -69,7 +69,7 @@ export const memberFields: INodeProperties[] = [ }, default: [], description: - 'The name of the space for which to retrieve members, in the form "spaces/*". Choose from the list, or specify an ID using an expression.', + 'The name of the space for which to retrieve members, in the form "spaces/*". Choose from the list, or specify an ID using an expression.', }, ...getPagingParameters('member'), diff --git a/packages/nodes-base/nodes/Google/Chat/descriptions/MessageDescription.ts b/packages/nodes-base/nodes/Google/Chat/descriptions/MessageDescription.ts index 5bdc1cabaa..18279be8f5 100644 --- a/packages/nodes-base/nodes/Google/Chat/descriptions/MessageDescription.ts +++ b/packages/nodes-base/nodes/Google/Chat/descriptions/MessageDescription.ts @@ -61,7 +61,7 @@ export const messageFields: INodeProperties[] = [ }, default: '', description: - 'Space resource name, in the form "spaces/*". Example: spaces/AAAAMpdlehY. Choose from the list, or specify an ID using an expression.', + 'Space resource name, in the form "spaces/*". Example: spaces/AAAAMpdlehY. Choose from the list, or specify an ID using an expression.', }, { displayName: 'JSON Parameters', @@ -280,7 +280,7 @@ export const messageFields: INodeProperties[] = [ name: 'updateFieldsUi', type: 'collection', required: true, - placeholder: 'Add Options', + placeholder: 'Add option', displayOptions: { show: { resource: ['message'], diff --git a/packages/nodes-base/nodes/Google/CloudNaturalLanguage/GoogleCloudNaturalLanguage.node.ts b/packages/nodes-base/nodes/Google/CloudNaturalLanguage/GoogleCloudNaturalLanguage.node.ts index 1c0813b3a7..25c7ad6266 100644 --- a/packages/nodes-base/nodes/Google/CloudNaturalLanguage/GoogleCloudNaturalLanguage.node.ts +++ b/packages/nodes-base/nodes/Google/CloudNaturalLanguage/GoogleCloudNaturalLanguage.node.ts @@ -1,8 +1,9 @@ -import type { - IExecuteFunctions, - INodeExecutionData, - INodeType, - INodeTypeDescription, +import { + NodeConnectionType, + type IExecuteFunctions, + type INodeExecutionData, + type INodeType, + type INodeTypeDescription, } from 'n8n-workflow'; import type { IData } from './Interface'; @@ -22,8 +23,8 @@ export class GoogleCloudNaturalLanguage implements INodeType { defaults: { name: 'Google Cloud Natural Language', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'googleCloudNaturalLanguageOAuth2Api', @@ -130,7 +131,7 @@ export class GoogleCloudNaturalLanguage implements INodeType { }, }, default: {}, - placeholder: 'Add Option', + placeholder: 'Add option', options: [ { displayName: 'Document Type', diff --git a/packages/nodes-base/nodes/Google/CloudStorage/GoogleCloudStorage.node.ts b/packages/nodes-base/nodes/Google/CloudStorage/GoogleCloudStorage.node.ts index 6997af5c81..7613cb3b57 100644 --- a/packages/nodes-base/nodes/Google/CloudStorage/GoogleCloudStorage.node.ts +++ b/packages/nodes-base/nodes/Google/CloudStorage/GoogleCloudStorage.node.ts @@ -1,4 +1,4 @@ -import type { INodeType, INodeTypeDescription } from 'n8n-workflow'; +import { NodeConnectionType, type INodeType, type INodeTypeDescription } from 'n8n-workflow'; import { bucketFields, bucketOperations } from './BucketDescription'; import { objectFields, objectOperations } from './ObjectDescription'; @@ -15,8 +15,8 @@ export class GoogleCloudStorage implements INodeType { defaults: { name: 'Google Cloud Storage', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'googleCloudStorageOAuth2Api', diff --git a/packages/nodes-base/nodes/Google/Contacts/ContactDescription.ts b/packages/nodes-base/nodes/Google/Contacts/ContactDescription.ts index 49e6f83482..e9f9d0e8db 100644 --- a/packages/nodes-base/nodes/Google/Contacts/ContactDescription.ts +++ b/packages/nodes-base/nodes/Google/Contacts/ContactDescription.ts @@ -336,7 +336,7 @@ export const contactFields: INodeProperties[] = [ name: 'group', type: 'multiOptions', description: - 'Choose from the list, or specify IDs using an expression', + 'Choose from the list, or specify IDs using an expression', typeOptions: { loadOptionsMethod: 'getGroups', }, @@ -892,7 +892,7 @@ export const contactFields: INodeProperties[] = [ displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, displayOptions: { show: { @@ -1346,7 +1346,7 @@ export const contactFields: INodeProperties[] = [ name: 'group', type: 'multiOptions', description: - 'Choose from the list, or specify IDs using an expression', + 'Choose from the list, or specify IDs using an expression', typeOptions: { loadOptionsMethod: 'getGroups', }, diff --git a/packages/nodes-base/nodes/Google/Contacts/GoogleContacts.node.ts b/packages/nodes-base/nodes/Google/Contacts/GoogleContacts.node.ts index c85bde865a..7b2bfa3616 100644 --- a/packages/nodes-base/nodes/Google/Contacts/GoogleContacts.node.ts +++ b/packages/nodes-base/nodes/Google/Contacts/GoogleContacts.node.ts @@ -7,6 +7,7 @@ import type { INodeType, INodeTypeDescription, } from 'n8n-workflow'; +import { NodeConnectionType } from 'n8n-workflow'; import moment from 'moment-timezone'; import { @@ -31,8 +32,8 @@ export class GoogleContacts implements INodeType { defaults: { name: 'Google Contacts', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'googleContactsOAuth2Api', @@ -91,6 +92,19 @@ export class GoogleContacts implements INodeType { let responseData; const resource = this.getNodeParameter('resource', 0); const operation = this.getNodeParameter('operation', 0); + + // Warmup cache + // https://developers.google.com/people/v1/contacts#protocol_1 + if (resource === 'contact' && operation === 'getAll') { + await googleApiRequest.call(this, 'GET', '/people:searchContacts', undefined, { + query: '', + readMask: 'names', + }); + await googleApiRequest.call(this, 'GET', '/people/me/connections', undefined, { + personFields: 'names', + }); + } + for (let i = 0; i < length; i++) { try { if (resource === 'contact') { @@ -508,7 +522,7 @@ export class GoogleContacts implements INodeType { ); returnData.push(...executionData); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { const executionErrorData = this.helpers.constructExecutionMetaData( this.helpers.returnJsonArray({ error: error.message }), { itemData: { item: i } }, diff --git a/packages/nodes-base/nodes/Google/Docs/DocumentDescription.ts b/packages/nodes-base/nodes/Google/Docs/DocumentDescription.ts index 5bc45138f7..b545d4e2d8 100644 --- a/packages/nodes-base/nodes/Google/Docs/DocumentDescription.ts +++ b/packages/nodes-base/nodes/Google/Docs/DocumentDescription.ts @@ -41,7 +41,7 @@ export const documentFields: INodeProperties[] = [ name: 'driveId', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getDrives', }, @@ -59,7 +59,7 @@ export const documentFields: INodeProperties[] = [ name: 'folderId', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsDependsOn: ['driveId'], loadOptionsMethod: 'getFolders', diff --git a/packages/nodes-base/nodes/Google/Docs/GoogleDocs.node.ts b/packages/nodes-base/nodes/Google/Docs/GoogleDocs.node.ts index fe82cfe437..2c5fb28682 100644 --- a/packages/nodes-base/nodes/Google/Docs/GoogleDocs.node.ts +++ b/packages/nodes-base/nodes/Google/Docs/GoogleDocs.node.ts @@ -8,7 +8,7 @@ import type { INodeTypeDescription, JsonObject, } from 'n8n-workflow'; -import { NodeApiError } from 'n8n-workflow'; +import { NodeApiError, NodeConnectionType } from 'n8n-workflow'; import { extractID, @@ -34,8 +34,9 @@ export class GoogleDocs implements INodeType { defaults: { name: 'Google Docs', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], + usableAsTool: true, credentials: [ { name: 'googleApi', @@ -510,7 +511,7 @@ export class GoogleDocs implements INodeType { } } } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { const executionErrorData = this.helpers.constructExecutionMetaData( this.helpers.returnJsonArray({ error: error.message }), { itemData: { item: i } }, diff --git a/packages/nodes-base/nodes/Google/Drive/GoogleDriveTrigger.node.ts b/packages/nodes-base/nodes/Google/Drive/GoogleDriveTrigger.node.ts index 50efeade16..68c04b8799 100644 --- a/packages/nodes-base/nodes/Google/Drive/GoogleDriveTrigger.node.ts +++ b/packages/nodes-base/nodes/Google/Drive/GoogleDriveTrigger.node.ts @@ -7,7 +7,7 @@ import type { INodeType, INodeTypeDescription, } from 'n8n-workflow'; -import { NodeApiError } from 'n8n-workflow'; +import { NodeConnectionType, NodeApiError } from 'n8n-workflow'; import moment from 'moment-timezone'; import { GOOGLE_DRIVE_FILE_URL_REGEX, GOOGLE_DRIVE_FOLDER_URL_REGEX } from '../constants'; @@ -48,7 +48,7 @@ export class GoogleDriveTrigger implements INodeType { ], polling: true, inputs: [], - outputs: ['main'], + outputs: [NodeConnectionType.Main], properties: [ { displayName: 'Credential Type', @@ -294,7 +294,7 @@ export class GoogleDriveTrigger implements INodeType { default: 'root', required: true, description: - 'The drive to monitor. Choose from the list, or specify an ID using an expression.', + 'The drive to monitor. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Watch For', @@ -343,7 +343,7 @@ export class GoogleDriveTrigger implements INodeType { triggerOn: ['specificFile'], }, }, - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, options: [ { diff --git a/packages/nodes-base/nodes/Google/Drive/v1/GoogleDriveV1.node.ts b/packages/nodes-base/nodes/Google/Drive/v1/GoogleDriveV1.node.ts index 90ab46dc81..f34426e065 100644 --- a/packages/nodes-base/nodes/Google/Drive/v1/GoogleDriveV1.node.ts +++ b/packages/nodes-base/nodes/Google/Drive/v1/GoogleDriveV1.node.ts @@ -1,4 +1,3 @@ -/* eslint-disable n8n-nodes-base/node-filename-against-convention */ import type { Readable } from 'stream'; import type { IBinaryKeyData, @@ -9,7 +8,7 @@ import type { INodeTypeBaseDescription, INodeTypeDescription, } from 'n8n-workflow'; -import { BINARY_ENCODING } from 'n8n-workflow'; +import { BINARY_ENCODING, NodeConnectionType } from 'n8n-workflow'; import { v4 as uuid } from 'uuid'; import { GOOGLE_DRIVE_FILE_URL_REGEX, GOOGLE_DRIVE_FOLDER_URL_REGEX } from '../../constants'; @@ -32,8 +31,8 @@ const versionDescription: INodeTypeDescription = { defaults: { name: 'Google Drive', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'googleApi', @@ -372,7 +371,7 @@ const versionDescription: INodeTypeDescription = { displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, displayOptions: { show: { @@ -884,7 +883,7 @@ const versionDescription: INodeTypeDescription = { displayName: 'Update Fields', name: 'updateFields', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, displayOptions: { show: { @@ -942,7 +941,7 @@ const versionDescription: INodeTypeDescription = { displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, displayOptions: { show: { @@ -1108,7 +1107,7 @@ const versionDescription: INodeTypeDescription = { displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, displayOptions: { show: { @@ -1543,7 +1542,7 @@ const versionDescription: INodeTypeDescription = { displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, displayOptions: { show: { @@ -1774,7 +1773,7 @@ const versionDescription: INodeTypeDescription = { displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, displayOptions: { show: { @@ -1831,7 +1830,7 @@ const versionDescription: INodeTypeDescription = { displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, displayOptions: { show: { @@ -1865,7 +1864,7 @@ const versionDescription: INodeTypeDescription = { displayName: 'Update Fields', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, displayOptions: { show: { @@ -1935,7 +1934,7 @@ const versionDescription: INodeTypeDescription = { displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, displayOptions: { show: { @@ -2722,7 +2721,7 @@ export class GoogleDriveV1 implements INodeType { } } } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { if (resource === 'file' && operation === 'download') { items[i].json = { error: error.message }; } else { diff --git a/packages/nodes-base/nodes/Google/Drive/v2/actions/common.descriptions.ts b/packages/nodes-base/nodes/Google/Drive/v2/actions/common.descriptions.ts index 1cb6d05911..acdd2780d1 100644 --- a/packages/nodes-base/nodes/Google/Drive/v2/actions/common.descriptions.ts +++ b/packages/nodes-base/nodes/Google/Drive/v2/actions/common.descriptions.ts @@ -288,7 +288,7 @@ export const shareOptions: INodeProperties = { displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, options: [ { diff --git a/packages/nodes-base/nodes/Google/Drive/v2/actions/drive/create.operation.ts b/packages/nodes-base/nodes/Google/Drive/v2/actions/drive/create.operation.ts index 18aa62a68b..3780ea05a5 100644 --- a/packages/nodes-base/nodes/Google/Drive/v2/actions/drive/create.operation.ts +++ b/packages/nodes-base/nodes/Google/Drive/v2/actions/drive/create.operation.ts @@ -22,7 +22,7 @@ const properties: INodeProperties[] = [ displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, options: [ { diff --git a/packages/nodes-base/nodes/Google/Drive/v2/actions/drive/get.operation.ts b/packages/nodes-base/nodes/Google/Drive/v2/actions/drive/get.operation.ts index 890043d43f..1ccf2bd745 100644 --- a/packages/nodes-base/nodes/Google/Drive/v2/actions/drive/get.operation.ts +++ b/packages/nodes-base/nodes/Google/Drive/v2/actions/drive/get.operation.ts @@ -18,7 +18,7 @@ const properties: INodeProperties[] = [ displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, options: [ { diff --git a/packages/nodes-base/nodes/Google/Drive/v2/actions/drive/list.operation.ts b/packages/nodes-base/nodes/Google/Drive/v2/actions/drive/list.operation.ts index 7f9d03162e..d2cd34e901 100644 --- a/packages/nodes-base/nodes/Google/Drive/v2/actions/drive/list.operation.ts +++ b/packages/nodes-base/nodes/Google/Drive/v2/actions/drive/list.operation.ts @@ -36,7 +36,7 @@ const properties: INodeProperties[] = [ displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, options: [ { diff --git a/packages/nodes-base/nodes/Google/Drive/v2/actions/drive/update.operation.ts b/packages/nodes-base/nodes/Google/Drive/v2/actions/drive/update.operation.ts index 07b598b512..d80be9968b 100644 --- a/packages/nodes-base/nodes/Google/Drive/v2/actions/drive/update.operation.ts +++ b/packages/nodes-base/nodes/Google/Drive/v2/actions/drive/update.operation.ts @@ -18,7 +18,7 @@ const properties: INodeProperties[] = [ displayName: 'Update Fields', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, displayOptions: { show: { diff --git a/packages/nodes-base/nodes/Google/Drive/v2/actions/file/copy.operation.ts b/packages/nodes-base/nodes/Google/Drive/v2/actions/file/copy.operation.ts index 368ff55e22..e019c7c555 100644 --- a/packages/nodes-base/nodes/Google/Drive/v2/actions/file/copy.operation.ts +++ b/packages/nodes-base/nodes/Google/Drive/v2/actions/file/copy.operation.ts @@ -48,7 +48,7 @@ const properties: INodeProperties[] = [ displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, options: [ { diff --git a/packages/nodes-base/nodes/Google/Drive/v2/actions/file/createFromText.operation.ts b/packages/nodes-base/nodes/Google/Drive/v2/actions/file/createFromText.operation.ts index ac45185040..d9c92a972a 100644 --- a/packages/nodes-base/nodes/Google/Drive/v2/actions/file/createFromText.operation.ts +++ b/packages/nodes-base/nodes/Google/Drive/v2/actions/file/createFromText.operation.ts @@ -47,7 +47,7 @@ const properties: INodeProperties[] = [ displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, options: [ ...updateCommonOptions, diff --git a/packages/nodes-base/nodes/Google/Drive/v2/actions/file/deleteFile.operation.ts b/packages/nodes-base/nodes/Google/Drive/v2/actions/file/deleteFile.operation.ts index 241c210a81..af8f03839d 100644 --- a/packages/nodes-base/nodes/Google/Drive/v2/actions/file/deleteFile.operation.ts +++ b/packages/nodes-base/nodes/Google/Drive/v2/actions/file/deleteFile.operation.ts @@ -13,7 +13,7 @@ const properties: INodeProperties[] = [ displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, options: [ { diff --git a/packages/nodes-base/nodes/Google/Drive/v2/actions/file/download.operation.ts b/packages/nodes-base/nodes/Google/Drive/v2/actions/file/download.operation.ts index 26a21c2070..55e1124c58 100644 --- a/packages/nodes-base/nodes/Google/Drive/v2/actions/file/download.operation.ts +++ b/packages/nodes-base/nodes/Google/Drive/v2/actions/file/download.operation.ts @@ -19,7 +19,7 @@ const properties: INodeProperties[] = [ displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, options: [ { diff --git a/packages/nodes-base/nodes/Google/Drive/v2/actions/file/update.operation.ts b/packages/nodes-base/nodes/Google/Drive/v2/actions/file/update.operation.ts index ec6282e58f..27f19e8b61 100644 --- a/packages/nodes-base/nodes/Google/Drive/v2/actions/file/update.operation.ts +++ b/packages/nodes-base/nodes/Google/Drive/v2/actions/file/update.operation.ts @@ -57,7 +57,7 @@ const properties: INodeProperties[] = [ displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, options: [ ...updateCommonOptions, diff --git a/packages/nodes-base/nodes/Google/Drive/v2/actions/file/upload.operation.ts b/packages/nodes-base/nodes/Google/Drive/v2/actions/file/upload.operation.ts index 6c2dc379c1..da4ca39016 100644 --- a/packages/nodes-base/nodes/Google/Drive/v2/actions/file/upload.operation.ts +++ b/packages/nodes-base/nodes/Google/Drive/v2/actions/file/upload.operation.ts @@ -49,7 +49,7 @@ const properties: INodeProperties[] = [ displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, options: [ ...updateCommonOptions, diff --git a/packages/nodes-base/nodes/Google/Drive/v2/actions/fileFolder/search.operation.ts b/packages/nodes-base/nodes/Google/Drive/v2/actions/fileFolder/search.operation.ts index d06997a3c1..8774216197 100644 --- a/packages/nodes-base/nodes/Google/Drive/v2/actions/fileFolder/search.operation.ts +++ b/packages/nodes-base/nodes/Google/Drive/v2/actions/fileFolder/search.operation.ts @@ -158,7 +158,7 @@ const properties: INodeProperties[] = [ displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, options: [ { diff --git a/packages/nodes-base/nodes/Google/Drive/v2/actions/folder/create.operation.ts b/packages/nodes-base/nodes/Google/Drive/v2/actions/folder/create.operation.ts index 643fa592cf..9b5e845d92 100644 --- a/packages/nodes-base/nodes/Google/Drive/v2/actions/folder/create.operation.ts +++ b/packages/nodes-base/nodes/Google/Drive/v2/actions/folder/create.operation.ts @@ -34,7 +34,7 @@ const properties: INodeProperties[] = [ displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, options: [ { diff --git a/packages/nodes-base/nodes/Google/Drive/v2/actions/folder/deleteFolder.operation.ts b/packages/nodes-base/nodes/Google/Drive/v2/actions/folder/deleteFolder.operation.ts index 8f1d8caad4..ed85388da6 100644 --- a/packages/nodes-base/nodes/Google/Drive/v2/actions/folder/deleteFolder.operation.ts +++ b/packages/nodes-base/nodes/Google/Drive/v2/actions/folder/deleteFolder.operation.ts @@ -13,7 +13,7 @@ const properties: INodeProperties[] = [ displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, options: [ { diff --git a/packages/nodes-base/nodes/Google/Drive/v2/actions/router.ts b/packages/nodes-base/nodes/Google/Drive/v2/actions/router.ts index ffc0199015..feffd170d9 100644 --- a/packages/nodes-base/nodes/Google/Drive/v2/actions/router.ts +++ b/packages/nodes-base/nodes/Google/Drive/v2/actions/router.ts @@ -39,7 +39,7 @@ export async function router(this: IExecuteFunctions): Promiseexpression.', + 'As displayed in firebase console URL. Choose from the list, or specify an ID using an expression.', required: true, }, { diff --git a/packages/nodes-base/nodes/Google/Firebase/CloudFirestore/DocumentDescription.ts b/packages/nodes-base/nodes/Google/Firebase/CloudFirestore/DocumentDescription.ts index 0214911899..03a32f2fb8 100644 --- a/packages/nodes-base/nodes/Google/Firebase/CloudFirestore/DocumentDescription.ts +++ b/packages/nodes-base/nodes/Google/Firebase/CloudFirestore/DocumentDescription.ts @@ -78,7 +78,7 @@ export const documentFields: INodeProperties[] = [ }, }, description: - 'As displayed in firebase console URL. Choose from the list, or specify an ID using an expression.', + 'As displayed in firebase console URL. Choose from the list, or specify an ID using an expression.', required: true, }, { @@ -109,6 +109,18 @@ export const documentFields: INodeProperties[] = [ description: 'Collection name', required: true, }, + { + displayName: 'Document ID', + name: 'documentId', + type: 'string', + displayOptions: { + show: { + resource: ['document'], + operation: ['create'], + }, + }, + default: '', + }, { displayName: 'Columns / Attributes', name: 'columns', @@ -156,7 +168,7 @@ export const documentFields: INodeProperties[] = [ }, }, description: - 'As displayed in firebase console URL. Choose from the list, or specify an ID using an expression.', + 'As displayed in firebase console URL. Choose from the list, or specify an ID using an expression.', required: true, }, { @@ -232,7 +244,7 @@ export const documentFields: INodeProperties[] = [ }, }, description: - 'As displayed in firebase console URL. Choose from the list, or specify an ID using an expression.', + 'As displayed in firebase console URL. Choose from the list, or specify an ID using an expression.', required: true, }, { @@ -327,7 +339,7 @@ export const documentFields: INodeProperties[] = [ }, }, description: - 'As displayed in firebase console URL. Choose from the list, or specify an ID using an expression.', + 'As displayed in firebase console URL. Choose from the list, or specify an ID using an expression.', required: true, }, { @@ -504,7 +516,7 @@ export const documentFields: INodeProperties[] = [ }, }, description: - 'As displayed in firebase console URL. Choose from the list, or specify an ID using an expression.', + 'As displayed in firebase console URL. Choose from the list, or specify an ID using an expression.', required: true, }, { @@ -583,7 +595,7 @@ export const documentFields: INodeProperties[] = [ }, }, description: - 'As displayed in firebase console URL. Choose from the list, or specify an ID using an expression.', + 'As displayed in firebase console URL. Choose from the list, or specify an ID using an expression.', required: true, }, { diff --git a/packages/nodes-base/nodes/Google/Firebase/CloudFirestore/GenericFunctions.ts b/packages/nodes-base/nodes/Google/Firebase/CloudFirestore/GenericFunctions.ts index 328fa246fe..5ac452f728 100644 --- a/packages/nodes-base/nodes/Google/Firebase/CloudFirestore/GenericFunctions.ts +++ b/packages/nodes-base/nodes/Google/Firebase/CloudFirestore/GenericFunctions.ts @@ -9,12 +9,12 @@ import type { import { NodeApiError } from 'n8n-workflow'; import moment from 'moment-timezone'; +import { getGoogleAccessToken } from '../../GenericFunctions'; export async function googleApiRequest( this: IExecuteFunctions | ILoadOptionsFunctions, method: IHttpRequestMethods, resource: string, - body: any = {}, qs: IDataObject = {}, uri: string | null = null, @@ -37,12 +37,20 @@ export async function googleApiRequest( delete options.body; } + let credentialType = 'googleFirebaseCloudFirestoreOAuth2Api'; + const authentication = this.getNodeParameter('authentication', 0) as string; + + if (authentication === 'serviceAccount') { + const credentials = await this.getCredentials('googleApi'); + credentialType = 'googleApi'; + + const { access_token } = await getGoogleAccessToken.call(this, credentials, 'firestore'); + + (options.headers as IDataObject).Authorization = `Bearer ${access_token}`; + } + //@ts-ignore - return await this.helpers.requestOAuth2.call( - this, - 'googleFirebaseCloudFirestoreOAuth2Api', - options, - ); + return await this.helpers.requestWithAuthentication.call(this, credentialType, options); } catch (error) { throw new NodeApiError(this.getNode(), error as JsonObject); } diff --git a/packages/nodes-base/nodes/Google/Firebase/CloudFirestore/GoogleFirebaseCloudFirestore.node.ts b/packages/nodes-base/nodes/Google/Firebase/CloudFirestore/GoogleFirebaseCloudFirestore.node.ts index 0c20786c51..fdb80509fb 100644 --- a/packages/nodes-base/nodes/Google/Firebase/CloudFirestore/GoogleFirebaseCloudFirestore.node.ts +++ b/packages/nodes-base/nodes/Google/Firebase/CloudFirestore/GoogleFirebaseCloudFirestore.node.ts @@ -7,7 +7,7 @@ import type { INodeType, INodeTypeDescription, } from 'n8n-workflow'; -import { jsonParse } from 'n8n-workflow'; +import { NodeConnectionType, jsonParse } from 'n8n-workflow'; import { generatePairedItemData } from '../../../../utils/utilities'; import { @@ -34,15 +34,46 @@ export class GoogleFirebaseCloudFirestore implements INodeType { defaults: { name: 'Google Cloud Firestore', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'googleFirebaseCloudFirestoreOAuth2Api', required: true, + displayOptions: { + show: { + authentication: ['googleFirebaseCloudFirestoreOAuth2Api'], + }, + }, + }, + { + name: 'googleApi', + required: true, + displayOptions: { + show: { + authentication: ['serviceAccount'], + }, + }, }, ], properties: [ + { + displayName: 'Authentication', + name: 'authentication', + type: 'options', + options: [ + { + // eslint-disable-next-line n8n-nodes-base/node-param-display-name-miscased + name: 'OAuth2 (recommended)', + value: 'googleFirebaseCloudFirestoreOAuth2Api', + }, + { + name: 'Service Account', + value: 'serviceAccount', + }, + ], + default: 'googleFirebaseCloudFirestoreOAuth2Api', + }, { displayName: 'Resource', name: 'resource', @@ -157,6 +188,7 @@ export class GoogleFirebaseCloudFirestore implements INodeType { items.map(async (item: IDataObject, i: number) => { const collection = this.getNodeParameter('collection', i) as string; const columns = this.getNodeParameter('columns', i) as string; + const documentId = this.getNodeParameter('documentId', i) as string; const columnList = columns.split(',').map((column) => column.trim()); const document = { fields: {} }; columnList.map((column) => { @@ -174,6 +206,7 @@ export class GoogleFirebaseCloudFirestore implements INodeType { 'POST', `/${projectId}/databases/${database}/documents/${collection}`, document, + { documentId }, ); responseData.id = (responseData.name as string).split('/').pop(); @@ -236,7 +269,7 @@ export class GoogleFirebaseCloudFirestore implements INodeType { returnData.push(...executionData); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push({ json: { error: error.message }, pairedItem: fallbackPairedItems ?? [{ item: i }], @@ -400,7 +433,7 @@ export class GoogleFirebaseCloudFirestore implements INodeType { returnData.push(...executionData); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push({ json: { error: error.message }, pairedItem: fallbackPairedItems ?? [{ item: i }], diff --git a/packages/nodes-base/nodes/Google/Firebase/RealtimeDatabase/GenericFunctions.ts b/packages/nodes-base/nodes/Google/Firebase/RealtimeDatabase/GenericFunctions.ts index fb19c1d4d8..16f7b1a4ba 100644 --- a/packages/nodes-base/nodes/Google/Firebase/RealtimeDatabase/GenericFunctions.ts +++ b/packages/nodes-base/nodes/Google/Firebase/RealtimeDatabase/GenericFunctions.ts @@ -19,9 +19,7 @@ export async function googleApiRequest( headers: IDataObject = {}, uri: string | null = null, ): Promise { - const { region } = (await this.getCredentials( - 'googleFirebaseRealtimeDatabaseOAuth2Api', - )) as IDataObject; + const { region } = await this.getCredentials('googleFirebaseRealtimeDatabaseOAuth2Api'); const options: IRequestOptions = { headers: { diff --git a/packages/nodes-base/nodes/Google/Firebase/RealtimeDatabase/GoogleFirebaseRealtimeDatabase.node.ts b/packages/nodes-base/nodes/Google/Firebase/RealtimeDatabase/GoogleFirebaseRealtimeDatabase.node.ts index 29c0b3d350..141fdb90e1 100644 --- a/packages/nodes-base/nodes/Google/Firebase/RealtimeDatabase/GoogleFirebaseRealtimeDatabase.node.ts +++ b/packages/nodes-base/nodes/Google/Firebase/RealtimeDatabase/GoogleFirebaseRealtimeDatabase.node.ts @@ -9,7 +9,7 @@ import type { JsonObject, IHttpRequestMethods, } from 'n8n-workflow'; -import { NodeApiError, NodeOperationError } from 'n8n-workflow'; +import { NodeApiError, NodeConnectionType, NodeOperationError } from 'n8n-workflow'; import { googleApiRequest, googleApiRequestAllItems } from './GenericFunctions'; @@ -25,8 +25,8 @@ export class GoogleFirebaseRealtimeDatabase implements INodeType { defaults: { name: 'Google Cloud Realtime Database', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'googleFirebaseRealtimeDatabaseOAuth2Api', @@ -42,7 +42,7 @@ export class GoogleFirebaseRealtimeDatabase implements INodeType { loadOptionsMethod: 'getProjects', }, description: - 'As displayed in firebase console URL. Choose from the list, or specify an ID using an expression.', + 'As displayed in firebase console URL. Choose from the list, or specify an ID using an expression.', required: true, }, { @@ -226,7 +226,7 @@ export class GoogleFirebaseRealtimeDatabase implements INodeType { } } } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { const executionErrorData = this.helpers.constructExecutionMetaData( this.helpers.returnJsonArray({ error: error.message }), { itemData: { item: i } }, diff --git a/packages/nodes-base/nodes/Google/GSuiteAdmin/GSuiteAdmin.node.ts b/packages/nodes-base/nodes/Google/GSuiteAdmin/GSuiteAdmin.node.ts index 72142e6afc..455c65dae3 100644 --- a/packages/nodes-base/nodes/Google/GSuiteAdmin/GSuiteAdmin.node.ts +++ b/packages/nodes-base/nodes/Google/GSuiteAdmin/GSuiteAdmin.node.ts @@ -7,7 +7,7 @@ import type { INodeType, INodeTypeDescription, } from 'n8n-workflow'; -import { NodeOperationError } from 'n8n-workflow'; +import { NodeConnectionType, NodeOperationError } from 'n8n-workflow'; import { googleApiRequest, googleApiRequestAllItems } from './GenericFunctions'; @@ -28,8 +28,8 @@ export class GSuiteAdmin implements INodeType { defaults: { name: 'Google Workspace Admin', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'gSuiteAdminOAuth2Api', @@ -442,7 +442,7 @@ export class GSuiteAdmin implements INodeType { returnData.push(...executionData); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { const executionErrorData = this.helpers.constructExecutionMetaData( this.helpers.returnJsonArray({ error: error.message }), { itemData: { item: i } }, diff --git a/packages/nodes-base/nodes/Google/GSuiteAdmin/GroupDescripion.ts b/packages/nodes-base/nodes/Google/GSuiteAdmin/GroupDescripion.ts index a48a6a585e..3646800f9a 100644 --- a/packages/nodes-base/nodes/Google/GSuiteAdmin/GroupDescripion.ts +++ b/packages/nodes-base/nodes/Google/GSuiteAdmin/GroupDescripion.ts @@ -171,7 +171,7 @@ export const groupFields: INodeProperties[] = [ displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, displayOptions: { show: { diff --git a/packages/nodes-base/nodes/Google/GSuiteAdmin/UserDescription.ts b/packages/nodes-base/nodes/Google/GSuiteAdmin/UserDescription.ts index e3685380c9..f4dccd8fe7 100644 --- a/packages/nodes-base/nodes/Google/GSuiteAdmin/UserDescription.ts +++ b/packages/nodes-base/nodes/Google/GSuiteAdmin/UserDescription.ts @@ -100,7 +100,7 @@ export const userFields: INodeProperties[] = [ name: 'domain', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getDomains', }, @@ -407,7 +407,7 @@ export const userFields: INodeProperties[] = [ displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Options', + placeholder: 'Add option', default: {}, displayOptions: { show: { @@ -430,7 +430,7 @@ export const userFields: INodeProperties[] = [ }, default: [], description: - 'A comma-separated list of schema names. All fields from these schemas are fetched. This should only be set when projection=custom. Choose from the list, or specify IDs using an expression.', + 'A comma-separated list of schema names. All fields from these schemas are fetched. This should only be set when projection=custom. Choose from the list, or specify IDs using an expression.', }, { displayName: 'View Type', @@ -525,7 +525,7 @@ export const userFields: INodeProperties[] = [ displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, displayOptions: { show: { @@ -548,7 +548,7 @@ export const userFields: INodeProperties[] = [ }, default: [], description: - 'A comma-separated list of schema names. All fields from these schemas are fetched. This should only be set when projection=custom. Choose from the list, or specify IDs using an expression.', + 'A comma-separated list of schema names. All fields from these schemas are fetched. This should only be set when projection=custom. Choose from the list, or specify IDs using an expression.', }, { displayName: 'Customer', diff --git a/packages/nodes-base/nodes/Google/GenericFunctions.ts b/packages/nodes-base/nodes/Google/GenericFunctions.ts index 51ab4a0fb9..2c4781e552 100644 --- a/packages/nodes-base/nodes/Google/GenericFunctions.ts +++ b/packages/nodes-base/nodes/Google/GenericFunctions.ts @@ -52,6 +52,11 @@ const googleServiceAccountScopes = { 'https://www.googleapis.com/auth/cloud-translation', 'https://www.googleapis.com/auth/cloud-platform', ], + firestore: [ + 'https://www.googleapis.com/auth/datastore', + 'https://www.googleapis.com/auth/firebase', + ], + vertex: ['https://www.googleapis.com/auth/cloud-platform'], }; type GoogleServiceAccount = keyof typeof googleServiceAccountScopes; diff --git a/packages/nodes-base/nodes/Google/Gmail/GenericFunctions.ts b/packages/nodes-base/nodes/Google/Gmail/GenericFunctions.ts index 23172a6879..e856174b38 100644 --- a/packages/nodes-base/nodes/Google/Gmail/GenericFunctions.ts +++ b/packages/nodes-base/nodes/Google/Gmail/GenericFunctions.ts @@ -18,20 +18,6 @@ import { DateTime } from 'luxon'; import isEmpty from 'lodash/isEmpty'; -export interface IEmail { - from?: string; - to?: string; - cc?: string; - bcc?: string; - replyTo?: string; - inReplyTo?: string; - reference?: string; - subject: string; - body: string; - htmlBody?: string; - attachments?: IDataObject[]; -} - export interface IAttachments { type: string; name: string; @@ -40,6 +26,8 @@ export interface IAttachments { import MailComposer from 'nodemailer/lib/mail-composer'; import { getGoogleAccessToken } from '../GenericFunctions'; +import { escapeHtml } from '../../../utils/utilities'; +import type { IEmail } from '../../../utils/sendAndWait/interfaces'; export async function googleApiRequest( this: IExecuteFunctions | ILoadOptionsFunctions | IPollFunctions, @@ -202,6 +190,11 @@ export async function parseRawEmail( headers, headerLines: undefined, attachments: undefined, + // Having data in IDataObjects that is not representable in JSON leads to + // inconsistencies between test executions and production executions. + // During a manual execution this would be stringified and during a + // production execution the next node would receive a date instance. + date: responseData.date ? responseData.date.toISOString() : responseData.date, }) as IDataObject; return { @@ -511,22 +504,7 @@ export function unescapeSnippets(items: INodeExecutionData[]) { const result = items.map((item) => { const snippet = item.json.snippet as string; if (snippet) { - item.json.snippet = snippet.replace(/&|<|>|'|"/g, (match) => { - switch (match) { - case '&': - return '&'; - case '<': - return '<'; - case '>': - return '>'; - case ''': - return "'"; - case '"': - return '"'; - default: - return match; - } - }); + item.json.snippet = escapeHtml(snippet); } return item; }); diff --git a/packages/nodes-base/nodes/Google/Gmail/GmailTrigger.node.ts b/packages/nodes-base/nodes/Google/Gmail/GmailTrigger.node.ts index 526c0466be..c0bacf2085 100644 --- a/packages/nodes-base/nodes/Google/Gmail/GmailTrigger.node.ts +++ b/packages/nodes-base/nodes/Google/Gmail/GmailTrigger.node.ts @@ -7,6 +7,7 @@ import type { INodeType, INodeTypeDescription, } from 'n8n-workflow'; +import { NodeConnectionType } from 'n8n-workflow'; import { DateTime } from 'luxon'; import { @@ -52,7 +53,7 @@ export class GmailTrigger implements INodeType { ], polling: true, inputs: [], - outputs: ['main'], + outputs: [NodeConnectionType.Main], properties: [ { displayName: 'Authentication', @@ -114,7 +115,7 @@ export class GmailTrigger implements INodeType { }, default: [], description: - 'Only return messages with labels that match all of the specified label IDs. Choose from the list, or specify IDs using an expression.', + 'Only return messages with labels that match all of the specified label IDs. Choose from the list, or specify IDs using an expression.', }, { displayName: 'Search', @@ -163,7 +164,7 @@ export class GmailTrigger implements INodeType { displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, displayOptions: { hide: { @@ -360,7 +361,7 @@ export class GmailTrigger implements INodeType { const nextPollPossibleDuplicates = (responseData as IDataObject[]).reduce( (duplicates, { json }) => { const emailDate = getEmailDateAsSeconds(json as IDataObject); - return emailDate === lastEmailDate + return emailDate <= lastEmailDate ? duplicates.concat((json as IDataObject).id as string) : duplicates; }, diff --git a/packages/nodes-base/nodes/Google/Gmail/test/GmailTrigger.test.ts b/packages/nodes-base/nodes/Google/Gmail/test/GmailTrigger.test.ts new file mode 100644 index 0000000000..4cd2ae0742 --- /dev/null +++ b/packages/nodes-base/nodes/Google/Gmail/test/GmailTrigger.test.ts @@ -0,0 +1,221 @@ +import nock from 'nock'; +import * as mailparser from 'mailparser'; + +import { testPollingTriggerNode } from '@test/nodes/TriggerHelpers'; + +import { GmailTrigger } from '../GmailTrigger.node'; +import type { Message, ListMessage, MessageListResponse } from '../types'; + +jest.mock('mailparser'); + +describe('GmailTrigger', () => { + const baseUrl = 'https://www.googleapis.com'; + + function createMessage(message: Partial = {}): Message { + const content = Buffer.from('test'); + const contentBase64 = content.toString('base64'); + const size = content.byteLength; + + return { + historyId: 'testHistoryId', + id: 'testId', + internalDate: '1727777957863', + raw: contentBase64, + labelIds: ['testLabelId'], + sizeEstimate: size, + snippet: content.toString('utf-8'), + threadId: 'testThreadId', + payload: { + body: { attachmentId: 'testAttachmentId', data: contentBase64, size }, + filename: 'foo.txt', + headers: [{ name: 'testHeader', value: 'testHeaderValue' }], + mimeType: 'text/plain', + partId: 'testPartId', + parts: [], + }, + ...message, + }; + } + + function createListMessage(message: Partial = {}): ListMessage { + return { id: 'testId', threadId: 'testThreadId', ...message }; + } + + beforeAll(() => { + nock.disableNetConnect(); + + jest.spyOn(mailparser, 'simpleParser').mockResolvedValue({ + headers: new Map([['headerKey', 'headerValue']]), + attachments: [], + headerLines: [{ key: 'headerKey', line: 'headerValue' }], + html: '

test

', + date: new Date('2024-08-31'), + from: { + text: 'from@example.com', + value: [{ name: 'From', address: 'from@example.com' }], + html: 'from@example.com', + }, + to: { + text: 'to@example.com', + value: [{ name: 'To', address: 'to@example.com' }], + html: 'to@example.com', + }, + }); + }); + + afterAll(() => { + nock.restore(); + }); + + it('should return incoming emails', async () => { + const messageListResponse: MessageListResponse = { + messages: [createListMessage({ id: '1' }), createListMessage({ id: '2' })], + resultSizeEstimate: 123, + }; + nock(baseUrl) + .get('/gmail/v1/users/me/labels') + .reply(200, { labels: [{ id: 'testLabelId', name: 'Test Label Name' }] }); + nock(baseUrl).get(new RegExp('/gmail/v1/users/me/messages?.*')).reply(200, messageListResponse); + nock(baseUrl) + .get(new RegExp('/gmail/v1/users/me/messages/1?.*')) + .reply(200, createMessage({ id: '1' })); + nock(baseUrl) + .get(new RegExp('/gmail/v1/users/me/messages/2?.*')) + .reply(200, createMessage({ id: '2' })); + + const { response } = await testPollingTriggerNode(GmailTrigger); + + expect(response).toEqual([ + [ + { + json: { + date: '2024-08-31T00:00:00.000Z', + from: { + html: 'from@example.com', + text: 'from@example.com', + value: [{ address: 'from@example.com', name: 'From' }], + }, + headers: { headerKey: 'headerValue' }, + html: '

test

', + id: '1', + labelIds: ['testLabelId'], + sizeEstimate: 4, + threadId: 'testThreadId', + to: { + html: 'to@example.com', + text: 'to@example.com', + value: [{ address: 'to@example.com', name: 'To' }], + }, + }, + }, + { + json: { + date: '2024-08-31T00:00:00.000Z', + from: { + html: 'from@example.com', + text: 'from@example.com', + value: [{ address: 'from@example.com', name: 'From' }], + }, + headers: { headerKey: 'headerValue' }, + html: '

test

', + id: '2', + labelIds: ['testLabelId'], + sizeEstimate: 4, + threadId: 'testThreadId', + to: { + html: 'to@example.com', + text: 'to@example.com', + value: [{ address: 'to@example.com', name: 'To' }], + }, + }, + }, + ], + ]); + }); + + it('should simplify output when enabled', async () => { + const messageListResponse: MessageListResponse = { + messages: [createListMessage({ id: '1' }), createListMessage({ id: '2' })], + resultSizeEstimate: 123, + }; + nock(baseUrl) + .get('/gmail/v1/users/me/labels') + .reply(200, { labels: [{ id: 'testLabelId', name: 'Test Label Name' }] }); + nock(baseUrl).get(new RegExp('/gmail/v1/users/me/messages?.*')).reply(200, messageListResponse); + nock(baseUrl) + .get(new RegExp('/gmail/v1/users/me/messages/1?.*')) + .reply(200, createMessage({ id: '1' })); + nock(baseUrl) + .get(new RegExp('/gmail/v1/users/me/messages/2?.*')) + .reply(200, createMessage({ id: '2' })); + + const { response } = await testPollingTriggerNode(GmailTrigger, { + node: { parameters: { simple: true } }, + }); + + expect(response).toEqual([ + [ + { + json: { + historyId: 'testHistoryId', + id: '1', + internalDate: '1727777957863', + labels: [{ id: 'testLabelId', name: 'Test Label Name' }], + payload: { + body: { attachmentId: 'testAttachmentId', data: 'dGVzdA==', size: 4 }, + filename: 'foo.txt', + mimeType: 'text/plain', + partId: 'testPartId', + parts: [], + }, + raw: 'dGVzdA==', + sizeEstimate: 4, + snippet: 'test', + testHeader: 'testHeaderValue', + threadId: 'testThreadId', + }, + }, + { + json: { + historyId: 'testHistoryId', + id: '2', + internalDate: '1727777957863', + labels: [{ id: 'testLabelId', name: 'Test Label Name' }], + payload: { + body: { attachmentId: 'testAttachmentId', data: 'dGVzdA==', size: 4 }, + filename: 'foo.txt', + mimeType: 'text/plain', + partId: 'testPartId', + parts: [], + }, + raw: 'dGVzdA==', + sizeEstimate: 4, + snippet: 'test', + testHeader: 'testHeaderValue', + threadId: 'testThreadId', + }, + }, + ], + ]); + }); + + it('should filter out emails that were already processed', async () => { + const messageListResponse: MessageListResponse = { + messages: [], + resultSizeEstimate: 0, + }; + nock(baseUrl) + .get('/gmail/v1/users/me/labels') + .reply(200, { labels: [{ id: 'testLabelId', name: 'Test Label Name' }] }); + nock(baseUrl).get(new RegExp('/gmail/v1/users/me/messages?.*')).reply(200, messageListResponse); + + const { response } = await testPollingTriggerNode(GmailTrigger, { + node: { parameters: { simple: true } }, + workflowStaticData: { + 'Gmail Trigger': { lastTimeChecked: new Date('2024-10-31').getTime() / 1000 }, + }, + }); + + expect(response).toEqual(null); + }); +}); diff --git a/packages/nodes-base/nodes/Google/Gmail/test/v2/utils.test.ts b/packages/nodes-base/nodes/Google/Gmail/test/v2/utils.test.ts index 7aaa6d7093..f0d0261502 100644 --- a/packages/nodes-base/nodes/Google/Gmail/test/v2/utils.test.ts +++ b/packages/nodes-base/nodes/Google/Gmail/test/v2/utils.test.ts @@ -1,6 +1,7 @@ -import type { INode } from 'n8n-workflow'; +import type { IExecuteFunctions, INode } from 'n8n-workflow'; import { DateTime } from 'luxon'; -import { prepareTimestamp } from '../../GenericFunctions'; +import { mock } from 'jest-mock-extended'; +import { parseRawEmail, prepareTimestamp } from '../../GenericFunctions'; const node: INode = { id: '1', @@ -108,3 +109,21 @@ describe('Google Gmail v2, prepareTimestamp', () => { ); }); }); + +describe('parseRawEmail', () => { + it('should return a date string', async () => { + // ARRANGE + const executionFunctions = mock(); + const rawEmail = 'Date: Wed, 28 Aug 2024 00:36:37 -0700'.replace(/\n/g, '\r\n'); + + // ACT + const { json } = await parseRawEmail.call( + executionFunctions, + { raw: Buffer.from(rawEmail, 'utf8').toString('base64') }, + 'attachment_', + ); + + // ASSERT + expect(typeof json.date).toBe('string'); + }); +}); diff --git a/packages/nodes-base/nodes/Google/Gmail/types.ts b/packages/nodes-base/nodes/Google/Gmail/types.ts new file mode 100644 index 0000000000..5e519a242f --- /dev/null +++ b/packages/nodes-base/nodes/Google/Gmail/types.ts @@ -0,0 +1,39 @@ +export type Message = { + id: string; + threadId: string; + labelIds: string[]; + snippet: string; + historyId: string; + internalDate: string; + sizeEstimate: number; + raw: string; + payload: MessagePart; +}; + +export type ListMessage = Pick; + +export type MessageListResponse = { + messages: ListMessage[]; + nextPageToken?: string; + resultSizeEstimate: number; +}; + +type GmailHeader = { + name: string; + value: string; +}; + +type MessagePart = { + partId: string; + mimeType: string; + filename: string; + headers: GmailHeader[]; + body: MessagePartBody; + parts: MessagePart[]; +}; + +type MessagePartBody = { + attachmentId: string; + size: number; + data: string; +}; diff --git a/packages/nodes-base/nodes/Google/Gmail/v1/GmailV1.node.ts b/packages/nodes-base/nodes/Google/Gmail/v1/GmailV1.node.ts index f5f5b81734..c17c26eda9 100644 --- a/packages/nodes-base/nodes/Google/Gmail/v1/GmailV1.node.ts +++ b/packages/nodes-base/nodes/Google/Gmail/v1/GmailV1.node.ts @@ -1,19 +1,19 @@ -/* eslint-disable n8n-nodes-base/node-filename-against-convention */ -import type { - IBinaryKeyData, - IDataObject, - IExecuteFunctions, - IHttpRequestMethods, - ILoadOptionsFunctions, - INodeExecutionData, - INodePropertyOptions, - INodeType, - INodeTypeBaseDescription, - INodeTypeDescription, +import { + NodeConnectionType, + type IBinaryKeyData, + type IDataObject, + type IExecuteFunctions, + type IHttpRequestMethods, + type ILoadOptionsFunctions, + type INodeExecutionData, + type INodePropertyOptions, + type INodeType, + type INodeTypeBaseDescription, + type INodeTypeDescription, } from 'n8n-workflow'; import isEmpty from 'lodash/isEmpty'; -import type { IEmail } from '../GenericFunctions'; +import type { IEmail } from '../../../../utils/sendAndWait/interfaces'; import { encodeEmail, extractEmail, @@ -43,8 +43,8 @@ const versionDescription: INodeTypeDescription = { defaults: { name: 'Gmail', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'googleApi', @@ -827,7 +827,7 @@ export class GmailV1 implements INodeType { returnData.push(...executionData); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push({ json: { error: error.message } }); continue; } diff --git a/packages/nodes-base/nodes/Google/Gmail/v1/MessageDescription.ts b/packages/nodes-base/nodes/Google/Gmail/v1/MessageDescription.ts index bba8f3437b..a64e47a33d 100644 --- a/packages/nodes-base/nodes/Google/Gmail/v1/MessageDescription.ts +++ b/packages/nodes-base/nodes/Google/Gmail/v1/MessageDescription.ts @@ -421,7 +421,7 @@ export const messageFields: INodeProperties[] = [ }, default: [], description: - 'Only return messages with labels that match all of the specified label IDs. Choose from the list, or specify IDs using an expression.', + 'Only return messages with labels that match all of the specified label IDs. Choose from the list, or specify IDs using an expression.', }, { displayName: 'Query', diff --git a/packages/nodes-base/nodes/Google/Gmail/v1/MessageLabelDescription.ts b/packages/nodes-base/nodes/Google/Gmail/v1/MessageLabelDescription.ts index 961b7d8ca9..8742679f4d 100644 --- a/packages/nodes-base/nodes/Google/Gmail/v1/MessageLabelDescription.ts +++ b/packages/nodes-base/nodes/Google/Gmail/v1/MessageLabelDescription.ts @@ -58,6 +58,6 @@ export const messageLabelFields: INodeProperties[] = [ }, }, description: - 'The ID of the label. Choose from the list, or specify IDs using an expression.', + 'The ID of the label. Choose from the list, or specify IDs using an expression.', }, ]; diff --git a/packages/nodes-base/nodes/Google/Gmail/v2/DraftDescription.ts b/packages/nodes-base/nodes/Google/Gmail/v2/DraftDescription.ts index 3bd3dd2efa..7d330329fd 100644 --- a/packages/nodes-base/nodes/Google/Gmail/v2/DraftDescription.ts +++ b/packages/nodes-base/nodes/Google/Gmail/v2/DraftDescription.ts @@ -107,7 +107,7 @@ export const draftFields: INodeProperties[] = [ displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', displayOptions: { show: { resource: ['draft'], @@ -167,7 +167,7 @@ export const draftFields: INodeProperties[] = [ type: 'options', default: '', description: - 'Select the alias to send the email from. Choose from the list, or specify an ID using an expression.', + 'Select the alias to send the email from. Choose from the list, or specify an ID using an expression.', typeOptions: { loadOptionsMethod: 'getGmailAliases', }, @@ -203,7 +203,7 @@ export const draftFields: INodeProperties[] = [ displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', displayOptions: { show: { resource: ['draft'], @@ -268,7 +268,7 @@ export const draftFields: INodeProperties[] = [ displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, displayOptions: { show: { diff --git a/packages/nodes-base/nodes/Google/Gmail/v2/GmailV2.node.ts b/packages/nodes-base/nodes/Google/Gmail/v2/GmailV2.node.ts index 48d4023305..c5e37263b1 100644 --- a/packages/nodes-base/nodes/Google/Gmail/v2/GmailV2.node.ts +++ b/packages/nodes-base/nodes/Google/Gmail/v2/GmailV2.node.ts @@ -1,4 +1,3 @@ -/* eslint-disable n8n-nodes-base/node-filename-against-convention */ import type { IExecuteFunctions, IDataObject, @@ -9,9 +8,14 @@ import type { INodeTypeBaseDescription, INodeTypeDescription, } from 'n8n-workflow'; -import { NodeOperationError } from 'n8n-workflow'; +import { + NodeConnectionType, + NodeOperationError, + SEND_AND_WAIT_OPERATION, + WAIT_TIME_UNLIMITED, +} from 'n8n-workflow'; -import type { IEmail } from '../GenericFunctions'; +import type { IEmail } from '../../../../utils/sendAndWait/interfaces'; import { encodeEmail, googleApiRequest, @@ -34,6 +38,12 @@ import { draftFields, draftOperations } from './DraftDescription'; import { threadFields, threadOperations } from './ThreadDescription'; +import { + getSendAndWaitProperties, + createEmail, + sendAndWaitWebhook, +} from '../../../../utils/sendAndWait/utils'; + const versionDescription: INodeTypeDescription = { displayName: 'Gmail', name: 'gmail', @@ -45,8 +55,9 @@ const versionDescription: INodeTypeDescription = { defaults: { name: 'Gmail', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], + usableAsTool: true, credentials: [ { name: 'googleApi', @@ -67,6 +78,17 @@ const versionDescription: INodeTypeDescription = { }, }, ], + webhooks: [ + { + name: 'default', + httpMethod: 'GET', + responseMode: 'onReceived', + responseData: '', + path: '={{ $nodeId }}', + restartWebhook: true, + isFullPath: true, + }, + ], properties: [ { displayName: 'Authentication', @@ -125,6 +147,16 @@ const versionDescription: INodeTypeDescription = { //------------------------------- ...messageOperations, ...messageFields, + ...getSendAndWaitProperties([ + { + displayName: 'To', + name: 'sendTo', + type: 'string', + default: '', + required: true, + placeholder: 'e.g. info@example.com', + }, + ]), //------------------------------- // Thread Operations //------------------------------- @@ -221,6 +253,8 @@ export class GmailV2 implements INodeType { }, }; + webhook = sendAndWaitWebhook; + async execute(this: IExecuteFunctions): Promise { const items = this.getInputData(); const returnData: INodeExecutionData[] = []; @@ -229,6 +263,17 @@ export class GmailV2 implements INodeType { const nodeVersion = this.getNode().typeVersion; const instanceId = this.getInstanceId(); + if (resource === 'message' && operation === SEND_AND_WAIT_OPERATION) { + const email: IEmail = createEmail(this); + + await googleApiRequest.call(this, 'POST', '/gmail/v1/users/me/messages/send', { + raw: await encodeEmail(email), + }); + + await this.putExecutionToWait(new Date(WAIT_TIME_UNLIMITED)); + return [this.getInputData()]; + } + let responseData; for (let i = 0; i < items.length; i++) { @@ -843,7 +888,7 @@ export class GmailV2 implements INodeType { returnData.push(...executionData); } catch (error) { error.message = `${error.message} (item ${i})`; - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push({ json: { error: error.message }, pairedItem: { item: i } }); continue; } diff --git a/packages/nodes-base/nodes/Google/Gmail/v2/LabelDescription.ts b/packages/nodes-base/nodes/Google/Gmail/v2/LabelDescription.ts index 8d966dca9c..94aff76407 100644 --- a/packages/nodes-base/nodes/Google/Gmail/v2/LabelDescription.ts +++ b/packages/nodes-base/nodes/Google/Gmail/v2/LabelDescription.ts @@ -72,7 +72,7 @@ export const labelFields: INodeProperties[] = [ displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', displayOptions: { show: { resource: ['label'], diff --git a/packages/nodes-base/nodes/Google/Gmail/v2/MessageDescription.ts b/packages/nodes-base/nodes/Google/Gmail/v2/MessageDescription.ts index 0f0875fd49..83b1e6fcb0 100644 --- a/packages/nodes-base/nodes/Google/Gmail/v2/MessageDescription.ts +++ b/packages/nodes-base/nodes/Google/Gmail/v2/MessageDescription.ts @@ -1,4 +1,5 @@ -import type { INodeProperties } from 'n8n-workflow'; +import { SEND_AND_WAIT_OPERATION, type INodeProperties } from 'n8n-workflow'; +import { appendAttributionOption } from '../../../../utils/descriptions'; export const messageOperations: INodeProperties[] = [ { @@ -57,6 +58,11 @@ export const messageOperations: INodeProperties[] = [ value: 'send', action: 'Send a message', }, + { + name: 'Send and Wait for Approval', + value: SEND_AND_WAIT_OPERATION, + action: 'Send a message and wait for approval', + }, ], default: 'send', }, @@ -190,7 +196,7 @@ export const messageFields: INodeProperties[] = [ displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', displayOptions: { show: { resource: ['message'], @@ -200,11 +206,7 @@ export const messageFields: INodeProperties[] = [ default: {}, options: [ { - // eslint-disable-next-line n8n-nodes-base/node-param-display-name-miscased - displayName: 'Append n8n Attribution', - name: 'appendAttribution', - type: 'boolean', - default: true, + ...appendAttributionOption, description: 'Whether to include the phrase “This email was sent automatically with n8n” to the end of the email', }, @@ -301,7 +303,7 @@ export const messageFields: INodeProperties[] = [ displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', displayOptions: { show: { resource: ['message'], @@ -422,7 +424,7 @@ export const messageFields: INodeProperties[] = [ }, default: [], description: - 'Only return messages with labels that match all of the specified label IDs. Choose from the list, or specify IDs using an expression.', + 'Only return messages with labels that match all of the specified label IDs. Choose from the list, or specify IDs using an expression.', }, { displayName: 'Search', @@ -487,7 +489,7 @@ export const messageFields: INodeProperties[] = [ displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, displayOptions: { show: { @@ -551,6 +553,6 @@ export const messageFields: INodeProperties[] = [ }, }, description: - 'Choose from the list, or specify IDs using an expression', + 'Choose from the list, or specify IDs using an expression', }, ]; diff --git a/packages/nodes-base/nodes/Google/Gmail/v2/ThreadDescription.ts b/packages/nodes-base/nodes/Google/Gmail/v2/ThreadDescription.ts index e1e2a4693c..e5723a0519 100644 --- a/packages/nodes-base/nodes/Google/Gmail/v2/ThreadDescription.ts +++ b/packages/nodes-base/nodes/Google/Gmail/v2/ThreadDescription.ts @@ -87,7 +87,7 @@ export const threadFields: INodeProperties[] = [ }, default: '', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', displayOptions: { show: { resource: ['thread'], @@ -137,7 +137,7 @@ export const threadFields: INodeProperties[] = [ displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', displayOptions: { show: { resource: ['thread'], @@ -324,7 +324,7 @@ export const threadFields: INodeProperties[] = [ }, default: [], description: - 'Only return threads with labels that match all of the specified label IDs. Choose from the list, or specify IDs using an expression.', + 'Only return threads with labels that match all of the specified label IDs. Choose from the list, or specify IDs using an expression.', }, { displayName: 'Search', @@ -410,6 +410,6 @@ export const threadFields: INodeProperties[] = [ }, }, description: - 'Choose from the list, or specify IDs using an expression', + 'Choose from the list, or specify IDs using an expression', }, ]; diff --git a/packages/nodes-base/nodes/Google/Perspective/GooglePerspective.node.ts b/packages/nodes-base/nodes/Google/Perspective/GooglePerspective.node.ts index 465f0dacd2..193747b01b 100644 --- a/packages/nodes-base/nodes/Google/Perspective/GooglePerspective.node.ts +++ b/packages/nodes-base/nodes/Google/Perspective/GooglePerspective.node.ts @@ -7,7 +7,7 @@ import type { INodeTypeDescription, JsonObject, } from 'n8n-workflow'; -import { NodeOperationError } from 'n8n-workflow'; +import { NodeConnectionType, NodeOperationError } from 'n8n-workflow'; import ISO6391 from 'iso-639-1'; import type { @@ -31,8 +31,8 @@ export class GooglePerspective implements INodeType { defaults: { name: 'Google Perspective', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'googlePerspectiveOAuth2Api', @@ -154,7 +154,7 @@ export class GooglePerspective implements INodeType { }, }, default: {}, - placeholder: 'Add Option', + placeholder: 'Add option', options: [ { displayName: 'Language Name or ID', @@ -165,7 +165,7 @@ export class GooglePerspective implements INodeType { }, default: '', description: - 'Languages of the text input. If unspecified, the API will auto-detect the comment language. Choose from the list, or specify an ID using an expression.', + 'Languages of the text input. If unspecified, the API will auto-detect the comment language. Choose from the list, or specify an ID using an expression.', }, ], }, @@ -262,7 +262,7 @@ export class GooglePerspective implements INodeType { ); } } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { const executionErrorData = this.helpers.constructExecutionMetaData( this.helpers.returnJsonArray({ error: error.message }), { itemData: { item: i } }, diff --git a/packages/nodes-base/nodes/Google/Sheet/GoogleSheets.node.ts b/packages/nodes-base/nodes/Google/Sheet/GoogleSheets.node.ts index 293cea5414..da0befd1fb 100644 --- a/packages/nodes-base/nodes/Google/Sheet/GoogleSheets.node.ts +++ b/packages/nodes-base/nodes/Google/Sheet/GoogleSheets.node.ts @@ -11,7 +11,7 @@ export class GoogleSheets extends VersionedNodeType { name: 'googleSheets', icon: 'file:googleSheets.svg', group: ['input', 'output'], - defaultVersion: 4.4, + defaultVersion: 4.5, subtitle: '={{$parameter["operation"] + ": " + $parameter["resource"]}}', description: 'Read, update and write data to Google Sheets', }; @@ -25,6 +25,7 @@ export class GoogleSheets extends VersionedNodeType { 4.2: new GoogleSheetsV2(baseDescription), 4.3: new GoogleSheetsV2(baseDescription), 4.4: new GoogleSheetsV2(baseDescription), + 4.5: new GoogleSheetsV2(baseDescription), }; super(nodeVersions, baseDescription); diff --git a/packages/nodes-base/nodes/Google/Sheet/GoogleSheetsTrigger.node.ts b/packages/nodes-base/nodes/Google/Sheet/GoogleSheetsTrigger.node.ts index da4dd338aa..1558b7fd19 100644 --- a/packages/nodes-base/nodes/Google/Sheet/GoogleSheetsTrigger.node.ts +++ b/packages/nodes-base/nodes/Google/Sheet/GoogleSheetsTrigger.node.ts @@ -5,7 +5,7 @@ import type { INodeTypeDescription, IPollFunctions, } from 'n8n-workflow'; -import { NodeOperationError } from 'n8n-workflow'; +import { NodeConnectionType, NodeOperationError } from 'n8n-workflow'; import { GOOGLE_DRIVE_FILE_URL_REGEX } from '../constants'; import { apiRequest } from './v2/transport'; @@ -35,7 +35,7 @@ export class GoogleSheetsTrigger implements INodeType { name: 'Google Sheets Trigger', }, inputs: [], - outputs: ['main'], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'googleSheetsTriggerOAuth2Api', @@ -220,7 +220,7 @@ export class GoogleSheetsTrigger implements INodeType { displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, options: [ { @@ -228,7 +228,7 @@ export class GoogleSheetsTrigger implements INodeType { name: 'columnsToWatch', type: 'multiOptions', description: - 'Choose from the list, or specify IDs using an expression', + 'Choose from the list, or specify IDs using an expression', typeOptions: { loadOptionsDependsOn: ['sheetName.value'], loadOptionsMethod: 'getSheetHeaderRowAndSkipEmpty', @@ -561,6 +561,12 @@ export class GoogleSheetsTrigger implements INodeType { } if (event === 'anyUpdate' || event === 'rowUpdate') { + if (sheetName.length > 31) { + throw new NodeOperationError( + this.getNode(), + 'Sheet name is too long choose a name with 31 characters or less', + ); + } const sheetRange = `${sheetName}!${range}`; let dataStartIndex = startIndex - 1; diff --git a/packages/nodes-base/nodes/Google/Sheet/test/v2/node/append.test.ts b/packages/nodes-base/nodes/Google/Sheet/test/v2/node/append.test.ts new file mode 100644 index 0000000000..d424f554bd --- /dev/null +++ b/packages/nodes-base/nodes/Google/Sheet/test/v2/node/append.test.ts @@ -0,0 +1,59 @@ +import type { MockProxy } from 'jest-mock-extended'; +import { mock } from 'jest-mock-extended'; +import type { IExecuteFunctions, INode } from 'n8n-workflow'; + +import { execute } from '../../../v2/actions/sheet/append.operation'; +import type { GoogleSheet } from '../../../v2/helpers/GoogleSheet'; + +describe('Google Sheet - Append', () => { + let mockExecuteFunctions: MockProxy; + let mockGoogleSheet: MockProxy; + + beforeEach(() => { + mockExecuteFunctions = mock(); + mockGoogleSheet = mock(); + }); + + it('should insert input data if sheet is empty', async () => { + mockExecuteFunctions.getInputData.mockReturnValueOnce([ + { + json: { + row_number: 3, + name: 'NEW NAME', + text: 'NEW TEXT', + }, + pairedItem: { + item: 0, + input: undefined, + }, + }, + ]); + + mockExecuteFunctions.getNode.mockReturnValueOnce(mock({ typeVersion: 4.5 })); + mockExecuteFunctions.getNodeParameter + .mockReturnValueOnce('USER_ENTERED') // valueInputMode + .mockReturnValueOnce({}); // options + mockExecuteFunctions.getNodeParameter.mockReturnValueOnce('defineBelow'); // dataMode + + mockGoogleSheet.getData.mockResolvedValueOnce(undefined); + mockGoogleSheet.getData.mockResolvedValueOnce(undefined); + mockGoogleSheet.updateRows.mockResolvedValueOnce(undefined); + + mockGoogleSheet.updateRows.mockResolvedValueOnce([]); + + mockGoogleSheet.appendEmptyRowsOrColumns.mockResolvedValueOnce([]); + mockGoogleSheet.appendSheetData.mockResolvedValueOnce([]); + + await execute.call(mockExecuteFunctions, mockGoogleSheet, 'Sheet1', '1234'); + + expect(mockGoogleSheet.updateRows).toHaveBeenCalledWith('Sheet1', [['name', 'text']], 'RAW', 1); + expect(mockGoogleSheet.appendEmptyRowsOrColumns).toHaveBeenCalledWith('1234', 1, 0); + expect(mockGoogleSheet.appendSheetData).toHaveBeenCalledWith({ + inputData: [{ name: 'NEW NAME', text: 'NEW TEXT' }], + keyRowIndex: 1, + lastRow: 2, + range: 'Sheet1', + valueInputMode: 'USER_ENTERED', + }); + }); +}); diff --git a/packages/nodes-base/nodes/Google/Sheet/test/v2/node/appendOrUpdate.test.ts b/packages/nodes-base/nodes/Google/Sheet/test/v2/node/appendOrUpdate.test.ts new file mode 100644 index 0000000000..552567609f --- /dev/null +++ b/packages/nodes-base/nodes/Google/Sheet/test/v2/node/appendOrUpdate.test.ts @@ -0,0 +1,98 @@ +import type { MockProxy } from 'jest-mock-extended'; +import { mock } from 'jest-mock-extended'; +import type { IExecuteFunctions, INode } from 'n8n-workflow'; + +import { execute } from '../../../v2/actions/sheet/appendOrUpdate.operation'; +import type { GoogleSheet } from '../../../v2/helpers/GoogleSheet'; + +describe('Google Sheet - Append or Update', () => { + let mockExecuteFunctions: MockProxy; + let mockGoogleSheet: MockProxy; + + beforeEach(() => { + mockExecuteFunctions = mock(); + mockGoogleSheet = mock(); + }); + + it('should insert input data if sheet is empty', async () => { + mockExecuteFunctions.getInputData.mockReturnValueOnce([ + { + json: { + row_number: 3, + name: 'NEW NAME', + text: 'NEW TEXT', + }, + pairedItem: { + item: 0, + input: undefined, + }, + }, + ]); + + mockExecuteFunctions.getNode.mockReturnValueOnce(mock({ typeVersion: 4.5 })); + mockExecuteFunctions.getNodeParameter + .mockReturnValueOnce('USER_ENTERED') // valueInputMode + .mockReturnValueOnce({}); // options + mockExecuteFunctions.getNodeParameter.mockReturnValueOnce('defineBelow'); // dataMode + mockExecuteFunctions.getNodeParameter.mockReturnValueOnce([]); // columns.schema + mockExecuteFunctions.getNodeParameter.mockReturnValueOnce(['row_number']); // columnsToMatchOn + mockExecuteFunctions.getNode.mockReturnValueOnce(mock()); + mockExecuteFunctions.getNodeParameter.mockReturnValueOnce([]); // columns.matchingColumns + + mockGoogleSheet.getData.mockResolvedValueOnce(undefined); + + mockGoogleSheet.getColumnValues.mockResolvedValueOnce([]); + mockGoogleSheet.updateRows.mockResolvedValueOnce([]); + + mockGoogleSheet.prepareDataForUpdateOrUpsert.mockResolvedValueOnce({ + updateData: [], + appendData: [ + { + row_number: 3, + name: 'NEW NAME', + text: 'NEW TEXT', + }, + ], + }); + + mockGoogleSheet.appendEmptyRowsOrColumns.mockResolvedValueOnce([]); + mockGoogleSheet.appendSheetData.mockResolvedValueOnce([]); + + await execute.call(mockExecuteFunctions, mockGoogleSheet, 'Sheet1', '1234'); + + expect(mockGoogleSheet.getColumnValues).toHaveBeenCalledWith({ + dataStartRowIndex: 1, + keyIndex: -1, + range: 'Sheet1!A:Z', + sheetData: [['name', 'text']], + valueRenderMode: 'UNFORMATTED_VALUE', + }); + + expect(mockGoogleSheet.updateRows).toHaveBeenCalledWith( + 'Sheet1', + [['name', 'text']], + 'USER_ENTERED', + 1, + ); + expect(mockGoogleSheet.prepareDataForUpdateOrUpsert).toHaveBeenCalledWith({ + columnNamesList: [['name', 'text']], + columnValuesList: [], + dataStartRowIndex: 1, + indexKey: 'row_number', + inputData: [{ name: 'NEW NAME', row_number: 3, text: 'NEW TEXT' }], + keyRowIndex: 0, + range: 'Sheet1!A:Z', + upsert: true, + valueRenderMode: 'UNFORMATTED_VALUE', + }); + expect(mockGoogleSheet.appendEmptyRowsOrColumns).toHaveBeenCalledWith('1234', 1, 0); + expect(mockGoogleSheet.appendSheetData).toHaveBeenCalledWith({ + columnNamesList: [['name', 'text']], + inputData: [{ name: 'NEW NAME', row_number: 3, text: 'NEW TEXT' }], + keyRowIndex: 1, + lastRow: 2, + range: 'Sheet1!A:Z', + valueInputMode: 'USER_ENTERED', + }); + }); +}); diff --git a/packages/nodes-base/nodes/Google/Sheet/test/v2/node/update.test.ts b/packages/nodes-base/nodes/Google/Sheet/test/v2/node/update.test.ts new file mode 100644 index 0000000000..899014a3c1 --- /dev/null +++ b/packages/nodes-base/nodes/Google/Sheet/test/v2/node/update.test.ts @@ -0,0 +1,104 @@ +import type { MockProxy } from 'jest-mock-extended'; +import { mock } from 'jest-mock-extended'; +import type { IExecuteFunctions, INode } from 'n8n-workflow'; + +import { execute } from '../../../v2/actions/sheet/update.operation'; +import type { GoogleSheet } from '../../../v2/helpers/GoogleSheet'; + +describe('Google Sheet - Update', () => { + let mockExecuteFunctions: MockProxy; + let mockGoogleSheet: MockProxy; + + beforeEach(() => { + mockExecuteFunctions = mock(); + mockGoogleSheet = mock(); + }); + + it('should update by row_number and not insert it as a new column', async () => { + mockExecuteFunctions.getInputData.mockReturnValueOnce([ + { + json: { + row_number: 3, + name: 'NEW NAME', + text: 'NEW TEXT', + }, + pairedItem: { + item: 0, + input: undefined, + }, + }, + ]); + + mockExecuteFunctions.getNode.mockReturnValueOnce(mock({ typeVersion: 4.5 })); + mockExecuteFunctions.getNodeParameter + .mockReturnValueOnce('USER_ENTERED') // valueInputMode + .mockReturnValueOnce({}); // options + mockExecuteFunctions.getNodeParameter.mockReturnValueOnce(['row_number']); // columnsToMatchOn + mockExecuteFunctions.getNodeParameter.mockReturnValueOnce('autoMapInputData'); // dataMode + + mockGoogleSheet.getData.mockResolvedValueOnce([ + ['id', 'name', 'text'], + ['1', 'a', 'a'], + ['2', 'x', 'x'], + ['3', 'b', 'b'], + ]); + + mockGoogleSheet.getColumnValues.mockResolvedValueOnce([]); + + mockGoogleSheet.prepareDataForUpdatingByRowNumber.mockReturnValueOnce({ + updateData: [ + { + range: 'Sheet1!B3', + values: [['NEW NAME']], + }, + { + range: 'Sheet1!C3', + values: [['NEW TEXT']], + }, + ], + }); + + mockGoogleSheet.batchUpdate.mockResolvedValueOnce([]); + + await execute.call(mockExecuteFunctions, mockGoogleSheet, 'Sheet1'); + + expect(mockGoogleSheet.getData).toHaveBeenCalledWith('Sheet1', 'FORMATTED_VALUE'); + expect(mockGoogleSheet.getColumnValues).toHaveBeenCalledWith({ + range: 'Sheet1!A:Z', + keyIndex: -1, + dataStartRowIndex: 1, + valueRenderMode: 'UNFORMATTED_VALUE', + sheetData: [ + ['id', 'name', 'text'], + ['1', 'a', 'a'], + ['2', 'x', 'x'], + ['3', 'b', 'b'], + ], + }); + expect(mockGoogleSheet.prepareDataForUpdatingByRowNumber).toHaveBeenCalledWith( + [ + { + row_number: 3, + name: 'NEW NAME', + text: 'NEW TEXT', + }, + ], + 'Sheet1!A:Z', + [['id', 'name', 'text']], + ); + + expect(mockGoogleSheet.batchUpdate).toHaveBeenCalledWith( + [ + { + range: 'Sheet1!B3', + values: [['NEW NAME']], + }, + { + range: 'Sheet1!C3', + values: [['NEW TEXT']], + }, + ], + 'USER_ENTERED', + ); + }); +}); diff --git a/packages/nodes-base/nodes/Google/Sheet/test/v2/utils/utils.test.ts b/packages/nodes-base/nodes/Google/Sheet/test/v2/utils/utils.test.ts index 52ec8ae4c3..033f7249f8 100644 --- a/packages/nodes-base/nodes/Google/Sheet/test/v2/utils/utils.test.ts +++ b/packages/nodes-base/nodes/Google/Sheet/test/v2/utils/utils.test.ts @@ -304,11 +304,11 @@ describe('Test Google Sheets, lookupValues', () => { const googleSheet = new GoogleSheet('spreadsheetId', fakeExecuteFunction); - const result = await googleSheet.lookupValues( + const result = await googleSheet.lookupValues({ inputData, - 0, - 1, - [ + keyRowIndex: 0, + dataStartRowIndex: 1, + lookupValues: [ { lookupColumn: 'num', lookupValue: '1', @@ -318,9 +318,9 @@ describe('Test Google Sheets, lookupValues', () => { lookupValue: 'foo', }, ], - true, - 'OR', - ); + returnAllMatches: true, + combineFilters: 'OR', + }); expect(result).toBeDefined(); expect(result).toEqual([ @@ -366,11 +366,11 @@ describe('Test Google Sheets, lookupValues', () => { const googleSheet = new GoogleSheet('spreadsheetId', fakeExecuteFunction); - const result = await googleSheet.lookupValues( + const result = await googleSheet.lookupValues({ inputData, - 0, - 1, - [ + keyRowIndex: 0, + dataStartRowIndex: 1, + lookupValues: [ { lookupColumn: 'num', lookupValue: '1', @@ -380,9 +380,9 @@ describe('Test Google Sheets, lookupValues', () => { lookupValue: 'baz', }, ], - true, - 'AND', - ); + returnAllMatches: true, + combineFilters: 'AND', + }); expect(result).toBeDefined(); expect(result).toEqual([ diff --git a/packages/nodes-base/nodes/Google/Sheet/v1/GoogleSheet.ts b/packages/nodes-base/nodes/Google/Sheet/v1/GoogleSheet.ts index 809420a59a..5781c51b8f 100644 --- a/packages/nodes-base/nodes/Google/Sheet/v1/GoogleSheet.ts +++ b/packages/nodes-base/nodes/Google/Sheet/v1/GoogleSheet.ts @@ -586,7 +586,7 @@ export class GoogleSheet { item[key] !== undefined ) { //match by exact key name - rowData.push(item[key]!.toString()); + rowData.push(item[key].toString()); } else { rowData.push(''); } diff --git a/packages/nodes-base/nodes/Google/Sheet/v1/GoogleSheetsV1.node.ts b/packages/nodes-base/nodes/Google/Sheet/v1/GoogleSheetsV1.node.ts index 265093172f..6b5f4ee802 100644 --- a/packages/nodes-base/nodes/Google/Sheet/v1/GoogleSheetsV1.node.ts +++ b/packages/nodes-base/nodes/Google/Sheet/v1/GoogleSheetsV1.node.ts @@ -144,7 +144,7 @@ export class GoogleSheetsV1 implements INodeType { return [items]; } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { return [[{ json: { error: error.message } }]]; } throw error; @@ -159,7 +159,7 @@ export class GoogleSheetsV1 implements INodeType { const items = this.getInputData(); return [items]; } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { return [[{ json: { error: error.message } }]]; } throw error; @@ -201,7 +201,7 @@ export class GoogleSheetsV1 implements INodeType { } returnData.push(responseData as IDataObject); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push({ error: error.message }); continue; } @@ -226,7 +226,7 @@ export class GoogleSheetsV1 implements INodeType { for (const propertyName of Object.keys(deletePropertyToDimensions)) { if (toDelete[propertyName] !== undefined) { - toDelete[propertyName]!.forEach((entry) => { + toDelete[propertyName].forEach((entry) => { requests.push({ deleteDimension: { range: { @@ -248,7 +248,7 @@ export class GoogleSheetsV1 implements INodeType { const items = this.getInputData(); return [items]; } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { return [[{ json: { error: error.message } }]]; } throw error; @@ -307,7 +307,7 @@ export class GoogleSheetsV1 implements INodeType { return [lookupOutput]; } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { return [this.helpers.returnJsonArray({ error: error.message })]; } throw error; @@ -344,7 +344,7 @@ export class GoogleSheetsV1 implements INodeType { return [this.helpers.returnJsonArray(returnData)]; } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { return [this.helpers.returnJsonArray({ error: error.message })]; } throw error; @@ -375,7 +375,7 @@ export class GoogleSheetsV1 implements INodeType { delete responseData.replies; returnData.push(responseData as IDataObject); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push({ error: error.message }); continue; } @@ -432,7 +432,7 @@ export class GoogleSheetsV1 implements INodeType { return [items]; } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { return [[{ json: { error: error.message } }]]; } throw error; @@ -488,7 +488,7 @@ export class GoogleSheetsV1 implements INodeType { returnData.push(responseData as IDataObject); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push({ error: error.message }); continue; } diff --git a/packages/nodes-base/nodes/Google/Sheet/v1/versionDescription.ts b/packages/nodes-base/nodes/Google/Sheet/v1/versionDescription.ts index 294df40cd9..08323291d4 100644 --- a/packages/nodes-base/nodes/Google/Sheet/v1/versionDescription.ts +++ b/packages/nodes-base/nodes/Google/Sheet/v1/versionDescription.ts @@ -1,5 +1,5 @@ /* eslint-disable n8n-nodes-base/node-filename-against-convention */ -import type { INodeTypeDescription } from 'n8n-workflow'; +import { NodeConnectionType, type INodeTypeDescription } from 'n8n-workflow'; import { oldVersionNotice } from '@utils/descriptions'; @@ -14,8 +14,8 @@ export const versionDescription: INodeTypeDescription = { defaults: { name: 'Google Sheets', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'googleApi', @@ -239,7 +239,7 @@ export const versionDescription: INodeTypeDescription = { default: '', required: true, description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', }, { displayName: 'Start Index', @@ -278,7 +278,7 @@ export const versionDescription: INodeTypeDescription = { default: '', required: true, description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', }, { displayName: 'Start Index', @@ -471,7 +471,7 @@ export const versionDescription: INodeTypeDescription = { displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, displayOptions: { show: { @@ -701,7 +701,7 @@ export const versionDescription: INodeTypeDescription = { displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, displayOptions: { show: { @@ -775,7 +775,7 @@ export const versionDescription: INodeTypeDescription = { displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, displayOptions: { show: { diff --git a/packages/nodes-base/nodes/Google/Sheet/v2/actions/router.ts b/packages/nodes-base/nodes/Google/Sheet/v2/actions/router.ts index 57ee7cae73..5159e9b76e 100644 --- a/packages/nodes-base/nodes/Google/Sheet/v2/actions/router.ts +++ b/packages/nodes-base/nodes/Google/Sheet/v2/actions/router.ts @@ -73,7 +73,7 @@ export async function router(this: IExecuteFunctions): Promiseexpression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsDependsOn: ['sheetName.value'], loadOptionsMethod: 'getSheetHeaderRowAndSkipEmpty', @@ -154,7 +154,7 @@ export const description: SheetProperties = [ displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, displayOptions: { show: { @@ -198,14 +198,7 @@ export const description: SheetProperties = [ ...handlingExtraData, displayOptions: { show: { '/columns.mappingMode': ['autoMapInputData'] } }, }, - { - displayName: 'Use Append', - name: 'useAppend', - type: 'boolean', - default: false, - description: - 'Whether to use append instead of update(default), this is more efficient but in some cases data might be misaligned', - }, + useAppendOption, ], }, ]; @@ -213,12 +206,12 @@ export const description: SheetProperties = [ export async function execute( this: IExecuteFunctions, sheet: GoogleSheet, - sheetName: string, + range: string, sheetId: string, ): Promise { const items = this.getInputData(); const nodeVersion = this.getNode().typeVersion; - const dataMode = + let dataMode = nodeVersion < 4 ? (this.getNodeParameter('dataMode', 0) as string) : (this.getNodeParameter('columns.mappingMode', 0) as string); @@ -228,57 +221,69 @@ export async function execute( const options = this.getNodeParameter('options', 0, {}); const locationDefine = (options.locationDefine as IDataObject)?.values as IDataObject; - let headerRow = 1; + let keyRowIndex = 1; if (locationDefine?.headerRow) { - headerRow = locationDefine.headerRow as number; + keyRowIndex = locationDefine.headerRow as number; + } + + const sheetData = await sheet.getData(range, 'FORMATTED_VALUE'); + + if (!sheetData?.length) { + dataMode = 'autoMapInputData'; } if (nodeVersion >= 4.4 && dataMode !== 'autoMapInputData') { //not possible to refresh columns when mode is autoMapInputData - const sheetData = await sheet.getData(sheetName, 'FORMATTED_VALUE'); - - if (sheetData?.[headerRow - 1] === undefined) { + if (sheetData?.[keyRowIndex - 1] === undefined) { throw new NodeOperationError( this.getNode(), - `Could not retrieve the column names from row ${headerRow}`, + `Could not retrieve the column names from row ${keyRowIndex}`, ); } const schema = this.getNodeParameter('columns.schema', 0) as ResourceMapperField[]; - checkForSchemaChanges(this.getNode(), sheetData[headerRow - 1], schema); + checkForSchemaChanges(this.getNode(), sheetData[keyRowIndex - 1], schema); } - let setData: IDataObject[] = []; + let inputData: IDataObject[] = []; if (dataMode === 'autoMapInputData') { - setData = await autoMapInputData.call(this, sheetName, sheet, items, options); + inputData = await autoMapInputData.call(this, range, sheet, items, options); } else { - setData = mapFields.call(this, items.length); + inputData = mapFields.call(this, items.length); } - if (setData.length === 0) { + if (inputData.length === 0) { return []; - } else if (options.useAppend) { - await sheet.appendSheetData( - setData, - sheetName, - headerRow, - (options.cellFormat as ValueInputOption) || cellFormatDefault(nodeVersion), - false, - undefined, - undefined, - options.useAppend as boolean, - ); + } + + const valueInputMode = (options.cellFormat as ValueInputOption) || cellFormatDefault(nodeVersion); + const useAppend = options.useAppend as boolean; + + if (options.useAppend) { + await sheet.appendSheetData({ + inputData, + range, + keyRowIndex, + valueInputMode, + useAppend, + }); } else { + //if no trailing empty row exists in the sheet update operation will fail await sheet.appendEmptyRowsOrColumns(sheetId, 1, 0); - await sheet.appendSheetData( - setData, - sheetName, - headerRow, - (options.cellFormat as ValueInputOption) || cellFormatDefault(nodeVersion), - false, - ); + // if sheetData is undefined it means that the sheet was empty + // we did add row with column names in the first row (autoMapInputData) + // to account for that length has to be 1 and we append data in the next row + const lastRow = (sheetData ?? [{}]).length + 1; + + await sheet.appendSheetData({ + inputData, + range, + keyRowIndex, + valueInputMode, + lastRow, + }); } if (nodeVersion < 4 || dataMode === 'autoMapInputData') { @@ -288,7 +293,7 @@ export async function execute( }); } else { const returnData: INodeExecutionData[] = []; - for (const [index, entry] of setData.entries()) { + for (const [index, entry] of inputData.entries()) { returnData.push({ json: entry, pairedItem: { item: index }, diff --git a/packages/nodes-base/nodes/Google/Sheet/v2/actions/sheet/appendOrUpdate.operation.ts b/packages/nodes-base/nodes/Google/Sheet/v2/actions/sheet/appendOrUpdate.operation.ts index b6b5b6a4cc..f6f3e5cd3d 100644 --- a/packages/nodes-base/nodes/Google/Sheet/v2/actions/sheet/appendOrUpdate.operation.ts +++ b/packages/nodes-base/nodes/Google/Sheet/v2/actions/sheet/appendOrUpdate.operation.ts @@ -5,11 +5,12 @@ import type { ResourceMapperField, } from 'n8n-workflow'; import { NodeOperationError } from 'n8n-workflow'; -import type { - ISheetUpdateData, - SheetProperties, - ValueInputOption, - ValueRenderOption, +import { + ROW_NUMBER, + type ISheetUpdateData, + type SheetProperties, + type ValueInputOption, + type ValueRenderOption, } from '../../helpers/GoogleSheets.types'; import type { GoogleSheet } from '../../helpers/GoogleSheet'; import { @@ -17,7 +18,12 @@ import { checkForSchemaChanges, untilSheetSelected, } from '../../helpers/GoogleSheets.utils'; -import { cellFormat, handlingExtraData, locationDefine } from './commonDescription'; +import { + cellFormat, + handlingExtraData, + locationDefine, + useAppendOption, +} from './commonDescription'; export const description: SheetProperties = [ { @@ -60,7 +66,7 @@ export const description: SheetProperties = [ name: 'columnToMatchOn', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsDependsOn: ['sheetName.value'], loadOptionsMethod: 'getSheetHeaderRowAndSkipEmpty', @@ -126,7 +132,7 @@ export const description: SheetProperties = [ name: 'column', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsDependsOn: ['sheetName.value', 'columnToMatchOn'], loadOptionsMethod: 'getSheetHeaderRowAndAddColumn', @@ -192,7 +198,7 @@ export const description: SheetProperties = [ displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, displayOptions: { show: { @@ -211,14 +217,7 @@ export const description: SheetProperties = [ ...handlingExtraData, displayOptions: { show: { '/columns.mappingMode': ['autoMapInputData'] } }, }, - { - displayName: 'Use Append', - name: 'useAppend', - type: 'boolean', - default: false, - description: - 'Whether to use append instead of update(default), this is more efficient but in some cases data might be misaligned', - }, + useAppendOption, ], }, ]; @@ -246,19 +245,19 @@ export async function execute( const locationDefineOption = (options.locationDefine as IDataObject)?.values as IDataObject; - let headerRow = 0; - let firstDataRow = 1; + let keyRowIndex = 0; + let dataStartRowIndex = 1; if (locationDefineOption) { if (locationDefineOption.headerRow) { - headerRow = parseInt(locationDefineOption.headerRow as string, 10) - 1; + keyRowIndex = parseInt(locationDefineOption.headerRow as string, 10) - 1; } if (locationDefineOption.firstDataRow) { - firstDataRow = parseInt(locationDefineOption.firstDataRow as string, 10) - 1; + dataStartRowIndex = parseInt(locationDefineOption.firstDataRow as string, 10) - 1; } } - const dataMode = + let dataMode = nodeVersion < 4 ? (this.getNodeParameter('dataMode', 0) as string) : (this.getNodeParameter('columns.mappingMode', 0) as string); @@ -267,14 +266,18 @@ export async function execute( const sheetData = (await sheet.getData(sheetName, 'FORMATTED_VALUE')) ?? []; - if (!sheetData[headerRow] && dataMode !== 'autoMapInputData') { - throw new NodeOperationError( - this.getNode(), - `Could not retrieve the column names from row ${headerRow + 1}`, - ); + if (!sheetData[keyRowIndex] && dataMode !== 'autoMapInputData') { + if (!sheetData.length) { + dataMode = 'autoMapInputData'; + } else { + throw new NodeOperationError( + this.getNode(), + `Could not retrieve the column names from row ${keyRowIndex + 1}`, + ); + } } - columnNames = sheetData[headerRow] ?? []; + columnNames = sheetData[keyRowIndex] ?? []; if (nodeVersion >= 4.4) { const schema = this.getNodeParameter('columns.schema', 0) as ResourceMapperField[]; @@ -291,13 +294,13 @@ export async function execute( // TODO: Add support for multiple columns to match on in the next overhaul const keyIndex = columnNames.indexOf(columnsToMatchOn[0]); - const columnValues = await sheet.getColumnValues( + const columnValuesList = await sheet.getColumnValues({ range, keyIndex, - firstDataRow, + dataStartRowIndex, valueRenderMode, sheetData, - ); + }); const updateData: ISheetUpdateData[] = []; const appendData: IDataObject[] = []; @@ -312,7 +315,7 @@ export async function execute( }; const addNewColumn = (key: string) => { - if (!columnNames.includes(key)) { + if (!columnNames.includes(key) && key !== ROW_NUMBER) { newColumns.add(key); } }; @@ -321,26 +324,36 @@ export async function execute( for (let i = 0; i < items.length; i++) { if (dataMode === 'nothing') continue; - const data: IDataObject[] = []; + const inputData: IDataObject[] = []; if (dataMode === 'autoMapInputData') { const handlingExtraDataOption = (options.handlingExtraData as string) || 'insertInNewColumn'; if (handlingExtraDataOption === 'ignoreIt') { - data.push(items[i].json); + inputData.push(items[i].json); } if (handlingExtraDataOption === 'error') { Object.keys(items[i].json).forEach((key) => errorOnUnexpectedColumn(key, i)); - data.push(items[i].json); + inputData.push(items[i].json); } if (handlingExtraDataOption === 'insertInNewColumn') { Object.keys(items[i].json).forEach(addNewColumn); - data.push(items[i].json); + inputData.push(items[i].json); } } else { const valueToMatchOn = nodeVersion < 4 - ? (this.getNodeParameter('valueToMatchOn', i) as string) - : (this.getNodeParameter(`columns.value[${columnsToMatchOn[0]}]`, i) as string); + ? (this.getNodeParameter('valueToMatchOn', i, '') as string) + : (this.getNodeParameter(`columns.value[${columnsToMatchOn[0]}]`, i, '') as string); + + if (valueToMatchOn === '') { + throw new NodeOperationError( + this.getNode(), + "The 'Column to Match On' parameter is required", + { + itemIndex: i, + }, + ); + } if (nodeVersion < 4) { const valuesToSend = this.getNodeParameter('fieldsUi.values', i, []) as IDataObject[]; @@ -364,7 +377,7 @@ export async function execute( return acc; }, {} as IDataObject); fields[columnsToMatchOn[0]] = valueToMatchOn; - data.push(fields); + inputData.push(fields); } else { const mappingValues = this.getNodeParameter('columns.value', i) as IDataObject; if (Object.keys(mappingValues).length === 0) { @@ -379,7 +392,7 @@ export async function execute( mappingValues[key] = ''; } }); - data.push(mappingValues); + inputData.push(mappingValues); mappedValues.push(mappingValues); } } @@ -390,56 +403,60 @@ export async function execute( sheetName, [newColumnNames], (options.cellFormat as ValueInputOption) || cellFormatDefault(nodeVersion), - headerRow + 1, + keyRowIndex + 1, ); columnNames = newColumnNames; - sheetData[headerRow] = newColumnNames; + sheetData[keyRowIndex] = newColumnNames; newColumns.clear(); } - const preparedData = await sheet.prepareDataForUpdateOrUpsert( - data, - columnsToMatchOn[0], + const indexKey = columnsToMatchOn[0]; + + const preparedData = await sheet.prepareDataForUpdateOrUpsert({ + inputData, + indexKey, range, - headerRow, - firstDataRow, + keyRowIndex, + dataStartRowIndex, valueRenderMode, - true, - [columnNames.concat([...newColumns])], - columnValues, - ); + upsert: true, + columnNamesList: [columnNames.concat([...newColumns])], + columnValuesList, + }); updateData.push(...preparedData.updateData); appendData.push(...preparedData.appendData); } + const columnNamesList = [columnNames.concat([...newColumns])]; + if (updateData.length) { await sheet.batchUpdate(updateData, valueInputMode); } if (appendData.length) { const lastRow = sheetData.length + 1; + const useAppend = options.useAppend as boolean; + if (options.useAppend) { - await sheet.appendSheetData( - appendData, + await sheet.appendSheetData({ + inputData: appendData, range, - headerRow + 1, + keyRowIndex: keyRowIndex + 1, valueInputMode, - false, - [columnNames.concat([...newColumns])], + columnNamesList, lastRow, - options.useAppend as boolean, - ); + useAppend, + }); } else { await sheet.appendEmptyRowsOrColumns(sheetId, 1, 0); - await sheet.appendSheetData( - appendData, + await sheet.appendSheetData({ + inputData: appendData, range, - headerRow + 1, + keyRowIndex: keyRowIndex + 1, valueInputMode, - false, - [columnNames.concat([...newColumns])], + columnNamesList, lastRow, - ); + }); } } diff --git a/packages/nodes-base/nodes/Google/Sheet/v2/actions/sheet/commonDescription.ts b/packages/nodes-base/nodes/Google/Sheet/v2/actions/sheet/commonDescription.ts index 66fdd1166c..bd73aaaebf 100644 --- a/packages/nodes-base/nodes/Google/Sheet/v2/actions/sheet/commonDescription.ts +++ b/packages/nodes-base/nodes/Google/Sheet/v2/actions/sheet/commonDescription.ts @@ -258,3 +258,13 @@ export const handlingExtraData: INodeProperties = { default: 'insertInNewColumn', description: "What do to with fields that don't match any columns in the Google Sheet", }; + +export const useAppendOption: INodeProperties = { + displayName: 'Minimise API Calls', + name: 'useAppend', + type: 'boolean', + default: false, + hint: 'Use if your sheet has no gaps between rows or columns', + description: + 'Whether to use append instead of update(default), this is more efficient but in some cases data might be misaligned', +}; diff --git a/packages/nodes-base/nodes/Google/Sheet/v2/actions/sheet/create.operation.ts b/packages/nodes-base/nodes/Google/Sheet/v2/actions/sheet/create.operation.ts index 7dd880fb52..4c57bf1dea 100644 --- a/packages/nodes-base/nodes/Google/Sheet/v2/actions/sheet/create.operation.ts +++ b/packages/nodes-base/nodes/Google/Sheet/v2/actions/sheet/create.operation.ts @@ -24,7 +24,7 @@ export const description: SheetProperties = [ displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, displayOptions: { show: { diff --git a/packages/nodes-base/nodes/Google/Sheet/v2/actions/sheet/read.operation.ts b/packages/nodes-base/nodes/Google/Sheet/v2/actions/sheet/read.operation.ts index 9650e73a4a..9f65ffb52c 100644 --- a/packages/nodes-base/nodes/Google/Sheet/v2/actions/sheet/read.operation.ts +++ b/packages/nodes-base/nodes/Google/Sheet/v2/actions/sheet/read.operation.ts @@ -68,7 +68,7 @@ export const description: SheetProperties = [ }, default: '', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', }, { displayName: 'Value', @@ -121,7 +121,7 @@ export const description: SheetProperties = [ displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, displayOptions: { show: { @@ -135,6 +135,19 @@ export const description: SheetProperties = [ options: [ dataLocationOnSheet, outputFormatting, + { + displayName: 'Return only First Matching Row', + name: 'returnFirstMatch', + type: 'boolean', + default: false, + description: + 'Whether to select the first row of the sheet or the first matching row (if filters are set)', + displayOptions: { + show: { + '@version': [{ _cnd: { gte: 4.5 } }], + }, + }, + }, { displayName: 'When Filter Has Multiple Matches', name: 'returnAllMatches', @@ -154,6 +167,11 @@ export const description: SheetProperties = [ ], description: 'By default only the first result gets returned, Set to "Return All Matches" to get multiple matches', + displayOptions: { + show: { + '@version': [{ _cnd: { lt: 4.5 } }], + }, + }, }, ], }, @@ -202,10 +220,11 @@ export async function execute( return []; } - const { data, headerRow, firstDataRow } = prepareSheetData( - sheetData, - dataLocationOnSheetOptions, - ); + const { + data, + headerRow: keyRowIndex, + firstDataRow: dataStartRowIndex, + } = prepareSheetData(sheetData, dataLocationOnSheetOptions); let responseData = []; @@ -215,8 +234,15 @@ export async function execute( [], ) as ILookupValues[]; + const inputData = data as string[][]; + if (lookupValues.length) { - const returnAllMatches = options.returnAllMatches === 'returnAllMatches' ? true : false; + let returnAllMatches; + if (nodeVersion < 4.5) { + returnAllMatches = options.returnAllMatches === 'returnAllMatches' ? true : false; + } else { + returnAllMatches = options.returnFirstMatch ? false : true; + } if (nodeVersion <= 4.1) { for (let i = 1; i < items.length; i++) { @@ -235,16 +261,16 @@ export async function execute( | 'AND' | 'OR'; - responseData = await sheet.lookupValues( - data as string[][], - headerRow, - firstDataRow, + responseData = await sheet.lookupValues({ + inputData, + keyRowIndex, + dataStartRowIndex, lookupValues, returnAllMatches, combineFilters, - ); + }); } else { - responseData = sheet.structureArrayDataByColumn(data as string[][], headerRow, firstDataRow); + responseData = sheet.structureArrayDataByColumn(inputData, keyRowIndex, dataStartRowIndex); } returnData.push( diff --git a/packages/nodes-base/nodes/Google/Sheet/v2/actions/sheet/update.operation.ts b/packages/nodes-base/nodes/Google/Sheet/v2/actions/sheet/update.operation.ts index bf5fb0c142..16478cb11c 100644 --- a/packages/nodes-base/nodes/Google/Sheet/v2/actions/sheet/update.operation.ts +++ b/packages/nodes-base/nodes/Google/Sheet/v2/actions/sheet/update.operation.ts @@ -1,22 +1,14 @@ -import type { - IExecuteFunctions, - IDataObject, - INodeExecutionData, - ResourceMapperField, -} from 'n8n-workflow'; +import type { IExecuteFunctions, IDataObject, INodeExecutionData } from 'n8n-workflow'; import { NodeOperationError } from 'n8n-workflow'; -import type { - ISheetUpdateData, - SheetProperties, - ValueInputOption, - ValueRenderOption, +import { + ROW_NUMBER, + type ISheetUpdateData, + type SheetProperties, + type ValueInputOption, + type ValueRenderOption, } from '../../helpers/GoogleSheets.types'; import type { GoogleSheet } from '../../helpers/GoogleSheet'; -import { - cellFormatDefault, - checkForSchemaChanges, - untilSheetSelected, -} from '../../helpers/GoogleSheets.utils'; +import { cellFormatDefault, untilSheetSelected } from '../../helpers/GoogleSheets.utils'; import { cellFormat, handlingExtraData, locationDefine } from './commonDescription'; export const description: SheetProperties = [ @@ -60,7 +52,7 @@ export const description: SheetProperties = [ name: 'columnToMatchOn', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsDependsOn: ['sheetName.value'], loadOptionsMethod: 'getSheetHeaderRowAndSkipEmpty', @@ -126,7 +118,7 @@ export const description: SheetProperties = [ name: 'column', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsDependsOn: ['sheetName.value', 'columnToMatchOn'], loadOptionsMethod: 'getSheetHeaderRowAndAddColumn', @@ -192,7 +184,7 @@ export const description: SheetProperties = [ displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, displayOptions: { show: { @@ -237,15 +229,15 @@ export async function execute( const locationDefineOptions = (options.locationDefine as IDataObject)?.values as IDataObject; - let headerRow = 0; - let firstDataRow = 1; + let keyRowIndex = 0; + let dataStartRowIndex = 1; if (locationDefineOptions) { if (locationDefineOptions.headerRow) { - headerRow = parseInt(locationDefineOptions.headerRow as string, 10) - 1; + keyRowIndex = parseInt(locationDefineOptions.headerRow as string, 10) - 1; } if (locationDefineOptions.firstDataRow) { - firstDataRow = parseInt(locationDefineOptions.firstDataRow as string, 10) - 1; + dataStartRowIndex = parseInt(locationDefineOptions.firstDataRow as string, 10) - 1; } } @@ -253,19 +245,14 @@ export async function execute( const sheetData = await sheet.getData(sheetName, 'FORMATTED_VALUE'); - if (sheetData?.[headerRow] === undefined) { + if (sheetData?.[keyRowIndex] === undefined) { throw new NodeOperationError( this.getNode(), - `Could not retrieve the column names from row ${headerRow + 1}`, + `Could not retrieve the column names from row ${keyRowIndex + 1}`, ); } - columnNames = sheetData[headerRow]; - - if (nodeVersion >= 4.4) { - const schema = this.getNodeParameter('columns.schema', 0) as ResourceMapperField[]; - checkForSchemaChanges(this.getNode(), columnNames, schema); - } + columnNames = sheetData[keyRowIndex]; const newColumns = new Set(); @@ -283,13 +270,13 @@ export async function execute( const keyIndex = columnNames.indexOf(columnsToMatchOn[0]); //not used when updating row - const columnValues = await sheet.getColumnValues( + const columnValuesList = await sheet.getColumnValues({ range, keyIndex, - firstDataRow, + dataStartRowIndex, valueRenderMode, sheetData, - ); + }); const updateData: ISheetUpdateData[] = []; @@ -305,7 +292,7 @@ export async function execute( }; const addNewColumn = (key: string) => { - if (!columnNames.includes(key)) { + if (!columnNames.includes(key) && key !== ROW_NUMBER) { newColumns.add(key); } }; @@ -313,26 +300,36 @@ export async function execute( for (let i = 0; i < items.length; i++) { if (dataMode === 'nothing') continue; - const data: IDataObject[] = []; + const inputData: IDataObject[] = []; if (dataMode === 'autoMapInputData') { const handlingExtraDataOption = (options.handlingExtraData as string) || 'insertInNewColumn'; if (handlingExtraDataOption === 'ignoreIt') { - data.push(items[i].json); + inputData.push(items[i].json); } - if (handlingExtraDataOption === 'error' && columnsToMatchOn[0] !== 'row_number') { + if (handlingExtraDataOption === 'error') { Object.keys(items[i].json).forEach((key) => errorOnUnexpectedColumn(key, i)); - data.push(items[i].json); + inputData.push(items[i].json); } - if (handlingExtraDataOption === 'insertInNewColumn' && columnsToMatchOn[0] !== 'row_number') { + if (handlingExtraDataOption === 'insertInNewColumn') { Object.keys(items[i].json).forEach(addNewColumn); - data.push(items[i].json); + inputData.push(items[i].json); } } else { const valueToMatchOn = nodeVersion < 4 - ? (this.getNodeParameter('valueToMatchOn', i) as string) - : (this.getNodeParameter(`columns.value[${columnsToMatchOn[0]}]`, i) as string); + ? (this.getNodeParameter('valueToMatchOn', i, '') as string) + : (this.getNodeParameter(`columns.value[${columnsToMatchOn[0]}]`, i, '') as string); + + if (valueToMatchOn === '') { + throw new NodeOperationError( + this.getNode(), + "The 'Column to Match On' parameter is required", + { + itemIndex: i, + }, + ); + } if (nodeVersion < 4) { const valuesToSend = this.getNodeParameter('fieldsUi.values', i, []) as IDataObject[]; @@ -360,7 +357,7 @@ export async function execute( fields[columnsToMatchOn[0]] = valueToMatchOn; - data.push(fields); + inputData.push(fields); } else { const mappingValues = this.getNodeParameter('columns.value', i) as IDataObject; if (Object.keys(mappingValues).length === 0) { @@ -375,7 +372,7 @@ export async function execute( mappingValues[key] = ''; } }); - data.push(mappingValues); + inputData.push(mappingValues); mappedValues.push(mappingValues); } } @@ -386,29 +383,30 @@ export async function execute( sheetName, [newColumnNames], (options.cellFormat as ValueInputOption) || cellFormatDefault(nodeVersion), - headerRow + 1, + keyRowIndex + 1, ); columnNames = newColumnNames; newColumns.clear(); } let preparedData; + const columnNamesList = [columnNames.concat([...newColumns])]; + if (columnsToMatchOn[0] === 'row_number') { - preparedData = sheet.prepareDataForUpdatingByRowNumber(data, range, [ - columnNames.concat([...newColumns]), - ]); + preparedData = sheet.prepareDataForUpdatingByRowNumber(inputData, range, columnNamesList); } else { - preparedData = await sheet.prepareDataForUpdateOrUpsert( - data, - columnsToMatchOn[0], + const indexKey = columnsToMatchOn[0]; + + preparedData = await sheet.prepareDataForUpdateOrUpsert({ + inputData, + indexKey, range, - headerRow, - firstDataRow, + keyRowIndex, + dataStartRowIndex, valueRenderMode, - false, - [columnNames.concat([...newColumns])], - columnValues, - ); + columnNamesList, + columnValuesList, + }); } updateData.push(...preparedData.updateData); diff --git a/packages/nodes-base/nodes/Google/Sheet/v2/actions/spreadsheet/create.operation.ts b/packages/nodes-base/nodes/Google/Sheet/v2/actions/spreadsheet/create.operation.ts index 155203e376..cc0dd57f48 100644 --- a/packages/nodes-base/nodes/Google/Sheet/v2/actions/spreadsheet/create.operation.ts +++ b/packages/nodes-base/nodes/Google/Sheet/v2/actions/spreadsheet/create.operation.ts @@ -59,7 +59,7 @@ export const description: SpreadSheetProperties = [ displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, displayOptions: { show: { diff --git a/packages/nodes-base/nodes/Google/Sheet/v2/actions/versionDescription.ts b/packages/nodes-base/nodes/Google/Sheet/v2/actions/versionDescription.ts index c18a6c75b8..37c1b6c2ba 100644 --- a/packages/nodes-base/nodes/Google/Sheet/v2/actions/versionDescription.ts +++ b/packages/nodes-base/nodes/Google/Sheet/v2/actions/versionDescription.ts @@ -1,5 +1,5 @@ /* eslint-disable n8n-nodes-base/node-filename-against-convention */ -import type { INodeTypeDescription } from 'n8n-workflow'; +import { NodeConnectionType, type INodeTypeDescription } from 'n8n-workflow'; import * as sheet from './sheet/Sheet.resource'; import * as spreadsheet from './spreadsheet/SpreadSheet.resource'; @@ -9,14 +9,32 @@ export const versionDescription: INodeTypeDescription = { name: 'googleSheets', icon: 'file:googleSheets.svg', group: ['input', 'output'], - version: [3, 4, 4.1, 4.2, 4.3, 4.4], + version: [3, 4, 4.1, 4.2, 4.3, 4.4, 4.5], subtitle: '={{$parameter["operation"] + ": " + $parameter["resource"]}}', description: 'Read, update and write data to Google Sheets', defaults: { name: 'Google Sheets', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], + usableAsTool: true, + hints: [ + { + message: + "Use the 'Minimise API Calls' option for greater efficiency if your sheet is uniformly formatted without gaps between columns or rows", + displayCondition: + '={{$parameter["operation"] === "append" && !$parameter["options"]["useAppend"]}}', + whenToDisplay: 'beforeExecution', + location: 'outputPane', + }, + { + message: 'No columns found in Google Sheet. All rows will be appended', + displayCondition: + '={{ ["appendOrUpdate", "append"].includes($parameter["operation"]) && $parameter?.columns?.mappingMode === "defineBelow" && !$parameter?.columns?.schema?.length }}', + whenToDisplay: 'beforeExecution', + location: 'outputPane', + }, + ], credentials: [ { name: 'googleApi', diff --git a/packages/nodes-base/nodes/Google/Sheet/v2/helpers/GoogleSheet.ts b/packages/nodes-base/nodes/Google/Sheet/v2/helpers/GoogleSheet.ts index 993c49a0ff..c5f8a8dc79 100644 --- a/packages/nodes-base/nodes/Google/Sheet/v2/helpers/GoogleSheet.ts +++ b/packages/nodes-base/nodes/Google/Sheet/v2/helpers/GoogleSheet.ts @@ -380,16 +380,25 @@ export class GoogleSheet { return keys; } - async appendSheetData( - inputData: IDataObject[], - range: string, - keyRowIndex: number, - valueInputMode: ValueInputOption, - usePathForKeyRow: boolean, - columnNamesList?: string[][], - lastRow?: number, - useAppend?: boolean, - ): Promise { + async appendSheetData({ + inputData, + range, + keyRowIndex, + valueInputMode, + usePathForKeyRow, + columnNamesList, + lastRow, + useAppend, + }: { + inputData: IDataObject[]; + range: string; + keyRowIndex: number; + valueInputMode: ValueInputOption; + usePathForKeyRow?: boolean; + columnNamesList?: string[][]; + lastRow?: number; + useAppend?: boolean; + }): Promise { const data = await this.convertObjectArrayToSheetDataArray( inputData, range, @@ -406,13 +415,19 @@ export class GoogleSheet { return xlsxUtils.encode_col(columnIndex); } - async getColumnValues( - range: string, - keyIndex: number, - dataStartRowIndex: number, - valueRenderMode: ValueRenderOption, - sheetData?: string[][], - ): Promise { + async getColumnValues({ + range, + keyIndex, + dataStartRowIndex, + valueRenderMode, + sheetData, + }: { + range: string; + keyIndex: number; + dataStartRowIndex: number; + valueRenderMode: ValueRenderOption; + sheetData?: string[][]; + }): Promise { let columnValuesList; if (sheetData) { columnValuesList = sheetData.slice(dataStartRowIndex - 1).map((row) => row[keyIndex]); @@ -448,20 +463,29 @@ export class GoogleSheet { * @returns {Promise} * @memberof GoogleSheet */ - async prepareDataForUpdateOrUpsert( - inputData: IDataObject[], - indexKey: string, - range: string, - keyRowIndex: number, - dataStartRowIndex: number, - valueRenderMode: ValueRenderOption, + async prepareDataForUpdateOrUpsert({ + inputData, + indexKey, + range, + keyRowIndex, + dataStartRowIndex, + valueRenderMode, upsert = false, - columnNamesList?: string[][], - columnValuesList?: string[], - ) { + columnNamesList, + columnValuesList, + }: { + inputData: IDataObject[]; + indexKey: string; + range: string; + keyRowIndex: number; + dataStartRowIndex: number; + valueRenderMode: ValueRenderOption; + upsert?: boolean; + columnNamesList?: string[][]; + columnValuesList?: string[]; + }) { const decodedRange = this.getDecodedSheetRange(range); - // prettier-ignore - const keyRowRange = `${decodedRange.name}!${decodedRange.start?.column || ''}${keyRowIndex + 1}:${decodedRange.end?.column || ''}${keyRowIndex + 1}`; + const keyRowRange = `${decodedRange.name}!${decodedRange.start?.column || ''}${keyRowIndex + 1}:${decodedRange.end?.column || ''}${keyRowIndex + 1}`; const sheetDatakeyRow = columnNamesList || (await this.getData(keyRowRange, valueRenderMode)); @@ -485,7 +509,7 @@ export class GoogleSheet { const columnValues: Array = columnValuesList || - (await this.getColumnValues(range, keyIndex, dataStartRowIndex, valueRenderMode)); + (await this.getColumnValues({ range, keyIndex, dataStartRowIndex, valueRenderMode })); const updateData: ISheetUpdateData[] = []; const appendData: IDataObject[] = []; @@ -620,14 +644,21 @@ export class GoogleSheet { * @returns {Promise} * @memberof GoogleSheet */ - async lookupValues( - inputData: string[][], - keyRowIndex: number, - dataStartRowIndex: number, - lookupValues: ILookupValues[], - returnAllMatches?: boolean, - combineFilters: 'AND' | 'OR' = 'OR', - ): Promise { + async lookupValues({ + inputData, + keyRowIndex, + dataStartRowIndex, + lookupValues, + returnAllMatches, + combineFilters = 'OR', + }: { + inputData: string[][]; + keyRowIndex: number; + dataStartRowIndex: number; + lookupValues: ILookupValues[]; + returnAllMatches?: boolean; + combineFilters?: 'AND' | 'OR'; + }): Promise { const keys: string[] = []; if (keyRowIndex < 0 || dataStartRowIndex < keyRowIndex || keyRowIndex >= inputData.length) { @@ -740,7 +771,7 @@ export class GoogleSheet { inputData: IDataObject[], range: string, keyRowIndex: number, - usePathForKeyRow: boolean, + usePathForKeyRow?: boolean, columnNamesList?: string[][], emptyValue: string | null = '', ): Promise { diff --git a/packages/nodes-base/nodes/Google/Sheet/v2/helpers/GoogleSheets.utils.ts b/packages/nodes-base/nodes/Google/Sheet/v2/helpers/GoogleSheets.utils.ts index f2f39b5c4d..f3ad02e273 100644 --- a/packages/nodes-base/nodes/Google/Sheet/v2/helpers/GoogleSheets.utils.ts +++ b/packages/nodes-base/nodes/Google/Sheet/v2/helpers/GoogleSheets.utils.ts @@ -343,11 +343,16 @@ export function checkForSchemaChanges( ) { const updatedColumnNames: Array<{ oldName: string; newName: string }> = []; + //if sheet does not contain ROW_NUMBER ignore it as data come from read rows operation + const schemaColumns = columnNames.includes(ROW_NUMBER) + ? schema.map((s) => s.id) + : schema.filter((s) => s.id !== ROW_NUMBER).map((s) => s.id); + for (const [columnIndex, columnName] of columnNames.entries()) { - const schemaEntry = schema[columnIndex]; + const schemaEntry = schemaColumns[columnIndex]; if (schemaEntry === undefined) break; - if (columnName !== schema[columnIndex].id) { - updatedColumnNames.push({ oldName: schema[columnIndex].id, newName: columnName }); + if (columnName !== schemaEntry) { + updatedColumnNames.push({ oldName: schemaEntry, newName: columnName }); } } diff --git a/packages/nodes-base/nodes/Google/Sheet/v2/methods/listSearch.ts b/packages/nodes-base/nodes/Google/Sheet/v2/methods/listSearch.ts index 36f18521e4..6c0c8b74ca 100644 --- a/packages/nodes-base/nodes/Google/Sheet/v2/methods/listSearch.ts +++ b/packages/nodes-base/nodes/Google/Sheet/v2/methods/listSearch.ts @@ -84,7 +84,6 @@ export async function sheetsSearch( returnData.push({ name: sheet.properties!.title as string, value: (sheet.properties!.sheetId as number) || 'gid=0', - //prettier-ignore url: `https://docs.google.com/spreadsheets/d/${spreadsheetId}/edit#gid=${sheet.properties!.sheetId}`, }); } diff --git a/packages/nodes-base/nodes/Google/Slides/GoogleSlides.node.ts b/packages/nodes-base/nodes/Google/Slides/GoogleSlides.node.ts index c1f5073492..64a260564d 100644 --- a/packages/nodes-base/nodes/Google/Slides/GoogleSlides.node.ts +++ b/packages/nodes-base/nodes/Google/Slides/GoogleSlides.node.ts @@ -7,6 +7,7 @@ import type { INodeType, INodeTypeDescription, } from 'n8n-workflow'; +import { NodeConnectionType } from 'n8n-workflow'; import { googleApiRequest } from './GenericFunctions'; @@ -22,8 +23,8 @@ export class GoogleSlides implements INodeType { defaults: { name: 'Google Slides', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'googleApi', @@ -282,7 +283,7 @@ export class GoogleSlides implements INodeType { loadOptionsDependsOn: ['presentationId'], }, description: - 'If non-empty, limits the matches to page elements only on the given pages. Choose from the list, or specify IDs using an expression.', + 'If non-empty, limits the matches to page elements only on the given pages. Choose from the list, or specify IDs using an expression.', }, { displayName: 'Replace Text', @@ -306,7 +307,7 @@ export class GoogleSlides implements INodeType { displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', displayOptions: { show: { operation: ['replaceText'], @@ -579,7 +580,7 @@ export class GoogleSlides implements INodeType { } } } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { const executionErrorData = this.helpers.constructExecutionMetaData( this.helpers.returnJsonArray({ error: error.message }), { itemData: { item: i } }, diff --git a/packages/nodes-base/nodes/Google/Task/GoogleTasks.node.ts b/packages/nodes-base/nodes/Google/Task/GoogleTasks.node.ts index d0d9dd851f..d7fe05561f 100644 --- a/packages/nodes-base/nodes/Google/Task/GoogleTasks.node.ts +++ b/packages/nodes-base/nodes/Google/Task/GoogleTasks.node.ts @@ -7,6 +7,7 @@ import type { INodeType, INodeTypeDescription, } from 'n8n-workflow'; +import { NodeConnectionType } from 'n8n-workflow'; import { googleApiRequest, googleApiRequestAllItems } from './GenericFunctions'; @@ -25,8 +26,8 @@ export class GoogleTasks implements INodeType { defaults: { name: 'Google Tasks', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'googleTasksOAuth2Api', @@ -259,7 +260,7 @@ export class GoogleTasks implements INodeType { returnData.push(...executionData); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { const executionErrorData = this.helpers.constructExecutionMetaData( this.helpers.returnJsonArray({ error: error.message }), { itemData: { item: i } }, diff --git a/packages/nodes-base/nodes/Google/Task/TaskDescription.ts b/packages/nodes-base/nodes/Google/Task/TaskDescription.ts index cc5f5a3552..33bcef54ba 100644 --- a/packages/nodes-base/nodes/Google/Task/TaskDescription.ts +++ b/packages/nodes-base/nodes/Google/Task/TaskDescription.ts @@ -56,7 +56,7 @@ export const taskFields: INodeProperties[] = [ name: 'task', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getTasks', }, @@ -167,7 +167,7 @@ export const taskFields: INodeProperties[] = [ name: 'task', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getTasks', }, @@ -201,7 +201,7 @@ export const taskFields: INodeProperties[] = [ name: 'task', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getTasks', }, @@ -235,7 +235,7 @@ export const taskFields: INodeProperties[] = [ name: 'task', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getTasks', }, @@ -363,7 +363,7 @@ export const taskFields: INodeProperties[] = [ name: 'task', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getTasks', }, diff --git a/packages/nodes-base/nodes/Google/Translate/GoogleTranslate.node.ts b/packages/nodes-base/nodes/Google/Translate/GoogleTranslate.node.ts index cee1333ee8..d694d09981 100644 --- a/packages/nodes-base/nodes/Google/Translate/GoogleTranslate.node.ts +++ b/packages/nodes-base/nodes/Google/Translate/GoogleTranslate.node.ts @@ -7,6 +7,7 @@ import type { INodeType, INodeTypeDescription, } from 'n8n-workflow'; +import { NodeConnectionType } from 'n8n-workflow'; import { googleApiRequest } from './GenericFunctions'; @@ -28,8 +29,8 @@ export class GoogleTranslate implements INodeType { defaults: { name: 'Google Translate', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'googleApi', @@ -153,7 +154,7 @@ export class GoogleTranslate implements INodeType { }, default: '', description: - 'The language to use for translation of the input text, set to one of the language codes listed in Language Support. Choose from the list, or specify an ID using an expression.', + 'The language to use for translation of the input text, set to one of the language codes listed in Language Support. Choose from the list, or specify an ID using an expression.', required: true, displayOptions: { show: { diff --git a/packages/nodes-base/nodes/Google/YouTube/ChannelDescription.ts b/packages/nodes-base/nodes/Google/YouTube/ChannelDescription.ts index 7503b0af01..d89442d24d 100644 --- a/packages/nodes-base/nodes/Google/YouTube/ChannelDescription.ts +++ b/packages/nodes-base/nodes/Google/YouTube/ChannelDescription.ts @@ -137,7 +137,7 @@ export const channelFields: INodeProperties[] = [ displayName: 'Filters', name: 'filters', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, displayOptions: { show: { @@ -184,7 +184,7 @@ export const channelFields: INodeProperties[] = [ displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, displayOptions: { show: { @@ -203,7 +203,7 @@ export const channelFields: INodeProperties[] = [ }, default: '', description: - 'The hl parameter instructs the API to retrieve localized resource metadata for a specific application language that the YouTube website supports. Choose from the list, or specify an ID using an expression.', + 'The hl parameter instructs the API to retrieve localized resource metadata for a specific application language that the YouTube website supports. Choose from the list, or specify an ID using an expression.', }, { displayName: 'On Behalf Of Content Owner', diff --git a/packages/nodes-base/nodes/Google/YouTube/CountryCodes.ts b/packages/nodes-base/nodes/Google/YouTube/CountryCodes.ts deleted file mode 100644 index b73da14ec9..0000000000 --- a/packages/nodes-base/nodes/Google/YouTube/CountryCodes.ts +++ /dev/null @@ -1,1579 +0,0 @@ -export const countriesCodes = [ - { - name: 'Afghanistan', - alpha2: 'AF', - alpha3: 'AFG', - numeric: '004', - }, - { - name: 'Åland Islands', - alpha2: 'AX', - alpha3: 'ALA', - numeric: '248', - altName: 'Aland Islands', - }, - { - name: 'Albania', - alpha2: 'AL', - alpha3: 'ALB', - numeric: '008', - }, - { - name: 'Algeria', - alpha2: 'DZ', - alpha3: 'DZA', - numeric: '012', - }, - { - name: 'American Samoa', - alpha2: 'AS', - alpha3: 'ASM', - numeric: '016', - }, - { - name: 'Andorra', - alpha2: 'AD', - alpha3: 'AND', - numeric: '020', - }, - { - name: 'Angola', - alpha2: 'AO', - alpha3: 'AGO', - numeric: '024', - }, - { - name: 'Anguilla', - alpha2: 'AI', - alpha3: 'AIA', - numeric: '660', - }, - { - name: 'Antarctica', - alpha2: 'AQ', - alpha3: 'ATA', - numeric: '010', - }, - { - name: 'Antigua and Barbuda', - alpha2: 'AG', - alpha3: 'ATG', - numeric: '028', - }, - { - name: 'Argentina', - alpha2: 'AR', - alpha3: 'ARG', - numeric: '032', - }, - { - name: 'Armenia', - alpha2: 'AM', - alpha3: 'ARM', - numeric: '051', - }, - { - name: 'Aruba', - alpha2: 'AW', - alpha3: 'ABW', - numeric: '533', - }, - { - name: 'Australia', - alpha2: 'AU', - alpha3: 'AUS', - numeric: '036', - }, - { - name: 'Austria', - alpha2: 'AT', - alpha3: 'AUT', - numeric: '040', - }, - { - name: 'Azerbaijan', - alpha2: 'AZ', - alpha3: 'AZE', - numeric: '031', - }, - { - name: 'Bahamas (the)', - alpha2: 'BS', - alpha3: 'BHS', - numeric: '044', - altName: 'Bahamas', - }, - { - name: 'Bahrain', - alpha2: 'BH', - alpha3: 'BHR', - numeric: '048', - }, - { - name: 'Bangladesh', - alpha2: 'BD', - alpha3: 'BGD', - numeric: '050', - }, - { - name: 'Barbados', - alpha2: 'BB', - alpha3: 'BRB', - numeric: '052', - }, - { - name: 'Belarus', - alpha2: 'BY', - alpha3: 'BLR', - numeric: '112', - }, - { - name: 'Belgium', - alpha2: 'BE', - alpha3: 'BEL', - numeric: '056', - }, - { - name: 'Belize', - alpha2: 'BZ', - alpha3: 'BLZ', - numeric: '084', - }, - { - name: 'Benin', - alpha2: 'BJ', - alpha3: 'BEN', - numeric: '204', - }, - { - name: 'Bermuda', - alpha2: 'BM', - alpha3: 'BMU', - numeric: '060', - }, - { - name: 'Bhutan', - alpha2: 'BT', - alpha3: 'BTN', - numeric: '064', - }, - { - name: 'Bolivia (Plurinational State of)', - alpha2: 'BO', - alpha3: 'BOL', - numeric: '068', - altName: 'Bolivia', - }, - { - name: 'Bonaire, Sint Eustatius and Saba', - alpha2: 'BQ', - alpha3: 'BES', - numeric: '535', - }, - { - name: 'Bosnia and Herzegovina', - alpha2: 'BA', - alpha3: 'BIH', - numeric: '070', - }, - { - name: 'Botswana', - alpha2: 'BW', - alpha3: 'BWA', - numeric: '072', - }, - { - name: 'Bouvet Island', - alpha2: 'BV', - alpha3: 'BVT', - numeric: '074', - }, - { - name: 'Brazil', - alpha2: 'BR', - alpha3: 'BRA', - numeric: '076', - }, - { - name: 'British Indian Ocean Territory (the)', - alpha2: 'IO', - alpha3: 'IOT', - numeric: '086', - altName: 'British Indian Ocean Territory', - }, - { - name: 'Brunei Darussalam', - alpha2: 'BN', - alpha3: 'BRN', - numeric: '096', - shortName: 'Brunei', - }, - { - name: 'Bulgaria', - alpha2: 'BG', - alpha3: 'BGR', - numeric: '100', - }, - { - name: 'Burkina Faso', - alpha2: 'BF', - alpha3: 'BFA', - numeric: '854', - }, - { - name: 'Burundi', - alpha2: 'BI', - alpha3: 'BDI', - numeric: '108', - }, - { - name: 'Cabo Verde', - alpha2: 'CV', - alpha3: 'CPV', - numeric: '132', - altName: 'Cape Verde', - }, - { - name: 'Cambodia', - alpha2: 'KH', - alpha3: 'KHM', - numeric: '116', - }, - { - name: 'Cameroon', - alpha2: 'CM', - alpha3: 'CMR', - numeric: '120', - }, - { - name: 'Canada', - alpha2: 'CA', - alpha3: 'CAN', - numeric: '124', - }, - { - name: 'Cayman Islands (the)', - alpha2: 'KY', - alpha3: 'CYM', - numeric: '136', - altName: 'Cayman Islands', - }, - { - name: 'Central African Republic (the)', - alpha2: 'CF', - alpha3: 'CAF', - numeric: '140', - altName: 'Central African Republic', - }, - { - name: 'Chad', - alpha2: 'TD', - alpha3: 'TCD', - numeric: '148', - }, - { - name: 'Chile', - alpha2: 'CL', - alpha3: 'CHL', - numeric: '152', - }, - { - name: 'China', - alpha2: 'CN', - alpha3: 'CHN', - numeric: '156', - }, - { - name: 'Christmas Island', - alpha2: 'CX', - alpha3: 'CXR', - numeric: '162', - }, - { - name: 'Cocos (Keeling) Islands (the)', - alpha2: 'CC', - alpha3: 'CCK', - numeric: '166', - altName: 'Cocos (Keeling) Islands', - shortName: 'Cocos Islands', - }, - { - name: 'Colombia', - alpha2: 'CO', - alpha3: 'COL', - numeric: '170', - }, - { - name: 'Comoros (the)', - alpha2: 'KM', - alpha3: 'COM', - numeric: '174', - altName: 'Comoros', - }, - { - name: 'Congo (the Democratic Republic of the)', - alpha2: 'CD', - alpha3: 'COD', - numeric: '180', - altName: 'Congo, (Kinshasa)', - shortName: 'Democratic Republic of the Congo', - }, - { - name: 'Congo (the)', - alpha2: 'CG', - alpha3: 'COG', - numeric: '178', - altName: 'Congo (Brazzaville)', - shortName: 'Republic of the Congo', - }, - { - name: 'Cook Islands (the)', - alpha2: 'CK', - alpha3: 'COK', - numeric: '184', - altName: 'Cook Islands', - }, - { - name: 'Costa Rica', - alpha2: 'CR', - alpha3: 'CRI', - numeric: '188', - }, - { - name: "Côte d'Ivoire", - alpha2: 'CI', - alpha3: 'CIV', - numeric: '384', - shortName: 'Ivory Coast', - }, - { - name: 'Croatia', - alpha2: 'HR', - alpha3: 'HRV', - numeric: '191', - }, - { - name: 'Cuba', - alpha2: 'CU', - alpha3: 'CUB', - numeric: '192', - }, - { - name: 'Curaçao', - alpha2: 'CW', - alpha3: 'CUW', - numeric: '531', - shortName: 'Curacao', - }, - { - name: 'Cyprus', - alpha2: 'CY', - alpha3: 'CYP', - numeric: '196', - }, - { - name: 'Czechia', - alpha2: 'CZ', - alpha3: 'CZE', - numeric: '203', - altName: 'Czech Republic', - }, - { - name: 'Denmark', - alpha2: 'DK', - alpha3: 'DNK', - numeric: '208', - }, - { - name: 'Djibouti', - alpha2: 'DJ', - alpha3: 'DJI', - numeric: '262', - }, - { - name: 'Dominica', - alpha2: 'DM', - alpha3: 'DMA', - numeric: '212', - }, - { - name: 'Dominican Republic (the)', - alpha2: 'DO', - alpha3: 'DOM', - numeric: '214', - altName: 'Dominican Republic', - }, - { - name: 'Ecuador', - alpha2: 'EC', - alpha3: 'ECU', - numeric: '218', - }, - { - name: 'Egypt', - alpha2: 'EG', - alpha3: 'EGY', - numeric: '818', - }, - { - name: 'El Salvador', - alpha2: 'SV', - alpha3: 'SLV', - numeric: '222', - }, - { - name: 'Equatorial Guinea', - alpha2: 'GQ', - alpha3: 'GNQ', - numeric: '226', - }, - { - name: 'Eritrea', - alpha2: 'ER', - alpha3: 'ERI', - numeric: '232', - }, - { - name: 'Estonia', - alpha2: 'EE', - alpha3: 'EST', - numeric: '233', - }, - { - name: 'Ethiopia', - alpha2: 'ET', - alpha3: 'ETH', - numeric: '231', - }, - { - name: 'Falkland Islands (the) [Malvinas]', - alpha2: 'FK', - alpha3: 'FLK', - numeric: '238', - altName: 'Falkland Islands (Malvinas)', - shortName: 'Falkland Islands', - }, - { - name: 'Faroe Islands (the)', - alpha2: 'FO', - alpha3: 'FRO', - numeric: '234', - altName: 'Faroe Islands', - }, - { - name: 'Fiji', - alpha2: 'FJ', - alpha3: 'FJI', - numeric: '242', - }, - { - name: 'Finland', - alpha2: 'FI', - alpha3: 'FIN', - numeric: '246', - }, - { - name: 'France', - alpha2: 'FR', - alpha3: 'FRA', - numeric: '250', - }, - { - name: 'French Guiana', - alpha2: 'GF', - alpha3: 'GUF', - numeric: '254', - }, - { - name: 'French Polynesia', - alpha2: 'PF', - alpha3: 'PYF', - numeric: '258', - }, - { - name: 'French Southern Territories (the)', - alpha2: 'TF', - alpha3: 'ATF', - numeric: '260', - altName: 'French Southern Territories', - }, - { - name: 'Gabon', - alpha2: 'GA', - alpha3: 'GAB', - numeric: '266', - }, - { - name: 'Gambia (the)', - alpha2: 'GM', - alpha3: 'GMB', - numeric: '270', - altName: 'Gambia', - }, - { - name: 'Georgia', - alpha2: 'GE', - alpha3: 'GEO', - numeric: '268', - }, - { - name: 'Germany', - alpha2: 'DE', - alpha3: 'DEU', - numeric: '276', - }, - { - name: 'Ghana', - alpha2: 'GH', - alpha3: 'GHA', - numeric: '288', - }, - { - name: 'Gibraltar', - alpha2: 'GI', - alpha3: 'GIB', - numeric: '292', - }, - { - name: 'Greece', - alpha2: 'GR', - alpha3: 'GRC', - numeric: '300', - }, - { - name: 'Greenland', - alpha2: 'GL', - alpha3: 'GRL', - numeric: '304', - }, - { - name: 'Grenada', - alpha2: 'GD', - alpha3: 'GRD', - numeric: '308', - }, - { - name: 'Guadeloupe', - alpha2: 'GP', - alpha3: 'GLP', - numeric: '312', - }, - { - name: 'Guam', - alpha2: 'GU', - alpha3: 'GUM', - numeric: '316', - }, - { - name: 'Guatemala', - alpha2: 'GT', - alpha3: 'GTM', - numeric: '320', - }, - { - name: 'Guernsey', - alpha2: 'GG', - alpha3: 'GGY', - numeric: '831', - }, - { - name: 'Guinea', - alpha2: 'GN', - alpha3: 'GIN', - numeric: '324', - }, - { - name: 'Guinea-Bissau', - alpha2: 'GW', - alpha3: 'GNB', - numeric: '624', - }, - { - name: 'Guyana', - alpha2: 'GY', - alpha3: 'GUY', - numeric: '328', - }, - { - name: 'Haiti', - alpha2: 'HT', - alpha3: 'HTI', - numeric: '332', - }, - { - name: 'Heard Island and McDonald Islands', - alpha2: 'HM', - alpha3: 'HMD', - numeric: '334', - altName: 'Heard and Mcdonald Islands', - }, - { - name: 'Holy See (the)', - alpha2: 'VA', - alpha3: 'VAT', - numeric: '336', - altName: 'Holy See (Vatican City State)', - shortName: 'Vatican', - }, - { - name: 'Honduras', - alpha2: 'HN', - alpha3: 'HND', - numeric: '340', - }, - { - name: 'Hong Kong', - alpha2: 'HK', - alpha3: 'HKG', - numeric: '344', - altName: 'Hong Kong, SAR China', - }, - { - name: 'Hungary', - alpha2: 'HU', - alpha3: 'HUN', - numeric: '348', - }, - { - name: 'Iceland', - alpha2: 'IS', - alpha3: 'ISL', - numeric: '352', - }, - { - name: 'India', - alpha2: 'IN', - alpha3: 'IND', - numeric: '356', - }, - { - name: 'Indonesia', - alpha2: 'ID', - alpha3: 'IDN', - numeric: '360', - }, - { - name: 'Iran (Islamic Republic of)', - alpha2: 'IR', - alpha3: 'IRN', - numeric: '364', - altName: 'Iran, Islamic Republic of', - shortName: 'Iran', - }, - { - name: 'Iraq', - alpha2: 'IQ', - alpha3: 'IRQ', - numeric: '368', - }, - { - name: 'Ireland', - alpha2: 'IE', - alpha3: 'IRL', - numeric: '372', - }, - { - name: 'Isle of Man', - alpha2: 'IM', - alpha3: 'IMN', - numeric: '833', - }, - { - name: 'Israel', - alpha2: 'IL', - alpha3: 'ISR', - numeric: '376', - }, - { - name: 'Italy', - alpha2: 'IT', - alpha3: 'ITA', - numeric: '380', - }, - { - name: 'Jamaica', - alpha2: 'JM', - alpha3: 'JAM', - numeric: '388', - }, - { - name: 'Japan', - alpha2: 'JP', - alpha3: 'JPN', - numeric: '392', - }, - { - name: 'Jersey', - alpha2: 'JE', - alpha3: 'JEY', - numeric: '832', - }, - { - name: 'Jordan', - alpha2: 'JO', - alpha3: 'JOR', - numeric: '400', - }, - { - name: 'Kazakhstan', - alpha2: 'KZ', - alpha3: 'KAZ', - numeric: '398', - }, - { - name: 'Kenya', - alpha2: 'KE', - alpha3: 'KEN', - numeric: '404', - }, - { - name: 'Kiribati', - alpha2: 'KI', - alpha3: 'KIR', - numeric: '296', - }, - { - name: "Korea (the Democratic People's Republic of)", - alpha2: 'KP', - alpha3: 'PRK', - numeric: '408', - altName: 'Korea (North)', - shortName: 'North Korea', - }, - { - name: 'Korea (the Republic of)', - alpha2: 'KR', - alpha3: 'KOR', - numeric: '410', - altName: 'Korea (South)', - shortName: 'South Korea', - }, - { - name: 'Kuwait', - alpha2: 'KW', - alpha3: 'KWT', - numeric: '414', - }, - { - name: 'Kyrgyzstan', - alpha2: 'KG', - alpha3: 'KGZ', - numeric: '417', - }, - { - name: "Lao People's Democratic Republic (the)", - alpha2: 'LA', - alpha3: 'LAO', - numeric: '418', - altName: 'Lao PDR', - shortName: 'Laos', - }, - { - name: 'Latvia', - alpha2: 'LV', - alpha3: 'LVA', - numeric: '428', - }, - { - name: 'Lebanon', - alpha2: 'LB', - alpha3: 'LBN', - numeric: '422', - }, - { - name: 'Lesotho', - alpha2: 'LS', - alpha3: 'LSO', - numeric: '426', - }, - { - name: 'Liberia', - alpha2: 'LR', - alpha3: 'LBR', - numeric: '430', - }, - { - name: 'Libya', - alpha2: 'LY', - alpha3: 'LBY', - numeric: '434', - }, - { - name: 'Liechtenstein', - alpha2: 'LI', - alpha3: 'LIE', - numeric: '438', - }, - { - name: 'Lithuania', - alpha2: 'LT', - alpha3: 'LTU', - numeric: '440', - }, - { - name: 'Luxembourg', - alpha2: 'LU', - alpha3: 'LUX', - numeric: '442', - }, - { - name: 'Macao', - alpha2: 'MO', - alpha3: 'MAC', - numeric: '446', - altName: 'Macao, SAR China', - shortName: 'Macau', - }, - { - name: 'Macedonia (the former Yugoslav Republic of)', - alpha2: 'MK', - alpha3: 'MKD', - numeric: '807', - altName: 'Macedonia, Republic of', - shortName: 'Macedonia', - }, - { - name: 'Madagascar', - alpha2: 'MG', - alpha3: 'MDG', - numeric: '450', - }, - { - name: 'Malawi', - alpha2: 'MW', - alpha3: 'MWI', - numeric: '454', - }, - { - name: 'Malaysia', - alpha2: 'MY', - alpha3: 'MYS', - numeric: '458', - }, - { - name: 'Maldives', - alpha2: 'MV', - alpha3: 'MDV', - numeric: '462', - }, - { - name: 'Mali', - alpha2: 'ML', - alpha3: 'MLI', - numeric: '466', - }, - { - name: 'Malta', - alpha2: 'MT', - alpha3: 'MLT', - numeric: '470', - }, - { - name: 'Marshall Islands (the)', - alpha2: 'MH', - alpha3: 'MHL', - numeric: '584', - altName: 'Marshall Islands', - }, - { - name: 'Martinique', - alpha2: 'MQ', - alpha3: 'MTQ', - numeric: '474', - }, - { - name: 'Mauritania', - alpha2: 'MR', - alpha3: 'MRT', - numeric: '478', - }, - { - name: 'Mauritius', - alpha2: 'MU', - alpha3: 'MUS', - numeric: '480', - }, - { - name: 'Mayotte', - alpha2: 'YT', - alpha3: 'MYT', - numeric: '175', - }, - { - name: 'Mexico', - alpha2: 'MX', - alpha3: 'MEX', - numeric: '484', - }, - { - name: 'Micronesia (Federated States of)', - alpha2: 'FM', - alpha3: 'FSM', - numeric: '583', - altName: 'Micronesia, Federated States of', - shortName: 'Micronesia', - }, - { - name: 'Moldova (the Republic of)', - alpha2: 'MD', - alpha3: 'MDA', - numeric: '498', - altName: 'Moldova', - }, - { - name: 'Monaco', - alpha2: 'MC', - alpha3: 'MCO', - numeric: '492', - }, - { - name: 'Mongolia', - alpha2: 'MN', - alpha3: 'MNG', - numeric: '496', - }, - { - name: 'Montenegro', - alpha2: 'ME', - alpha3: 'MNE', - numeric: '499', - }, - { - name: 'Montserrat', - alpha2: 'MS', - alpha3: 'MSR', - numeric: '500', - }, - { - name: 'Morocco', - alpha2: 'MA', - alpha3: 'MAR', - numeric: '504', - }, - { - name: 'Mozambique', - alpha2: 'MZ', - alpha3: 'MOZ', - numeric: '508', - }, - { - name: 'Myanmar', - alpha2: 'MM', - alpha3: 'MMR', - numeric: '104', - }, - { - name: 'Namibia', - alpha2: 'NA', - alpha3: 'NAM', - numeric: '516', - }, - { - name: 'Nauru', - alpha2: 'NR', - alpha3: 'NRU', - numeric: '520', - }, - { - name: 'Nepal', - alpha2: 'NP', - alpha3: 'NPL', - numeric: '524', - }, - { - name: 'Netherlands (the)', - alpha2: 'NL', - alpha3: 'NLD', - numeric: '528', - altName: 'Netherlands', - }, - { - name: 'New Caledonia', - alpha2: 'NC', - alpha3: 'NCL', - numeric: '540', - }, - { - name: 'New Zealand', - alpha2: 'NZ', - alpha3: 'NZL', - numeric: '554', - }, - { - name: 'Nicaragua', - alpha2: 'NI', - alpha3: 'NIC', - numeric: '558', - }, - { - name: 'Niger (the)', - alpha2: 'NE', - alpha3: 'NER', - numeric: '562', - altName: 'Niger', - }, - { - name: 'Nigeria', - alpha2: 'NG', - alpha3: 'NGA', - numeric: '566', - }, - { - name: 'Niue', - alpha2: 'NU', - alpha3: 'NIU', - numeric: '570', - }, - { - name: 'Norfolk Island', - alpha2: 'NF', - alpha3: 'NFK', - numeric: '574', - }, - { - name: 'Northern Mariana Islands (the)', - alpha2: 'MP', - alpha3: 'MNP', - numeric: '580', - altName: 'Northern Mariana Islands', - }, - { - name: 'Norway', - alpha2: 'NO', - alpha3: 'NOR', - numeric: '578', - }, - { - name: 'Oman', - alpha2: 'OM', - alpha3: 'OMN', - numeric: '512', - }, - { - name: 'Pakistan', - alpha2: 'PK', - alpha3: 'PAK', - numeric: '586', - }, - { - name: 'Palau', - alpha2: 'PW', - alpha3: 'PLW', - numeric: '585', - }, - { - name: 'Palestine, State of', - alpha2: 'PS', - alpha3: 'PSE', - numeric: '275', - altName: 'Palestinian Territory', - shortName: 'Palestine', - }, - { - name: 'Panama', - alpha2: 'PA', - alpha3: 'PAN', - numeric: '591', - }, - { - name: 'Papua New Guinea', - alpha2: 'PG', - alpha3: 'PNG', - numeric: '598', - }, - { - name: 'Paraguay', - alpha2: 'PY', - alpha3: 'PRY', - numeric: '600', - }, - { - name: 'Peru', - alpha2: 'PE', - alpha3: 'PER', - numeric: '604', - }, - { - name: 'Philippines (the)', - alpha2: 'PH', - alpha3: 'PHL', - numeric: '608', - altName: 'Philippines', - }, - { - name: 'Pitcairn', - alpha2: 'PN', - alpha3: 'PCN', - numeric: '612', - }, - { - name: 'Poland', - alpha2: 'PL', - alpha3: 'POL', - numeric: '616', - }, - { - name: 'Portugal', - alpha2: 'PT', - alpha3: 'PRT', - numeric: '620', - }, - { - name: 'Puerto Rico', - alpha2: 'PR', - alpha3: 'PRI', - numeric: '630', - }, - { - name: 'Qatar', - alpha2: 'QA', - alpha3: 'QAT', - numeric: '634', - }, - { - name: 'Réunion', - alpha2: 'RE', - alpha3: 'REU', - numeric: '638', - shortName: 'Reunion', - }, - { - name: 'Romania', - alpha2: 'RO', - alpha3: 'ROU', - numeric: '642', - }, - { - name: 'Russian Federation (the)', - alpha2: 'RU', - alpha3: 'RUS', - numeric: '643', - altName: 'Russian Federation', - shortName: 'Russia', - }, - { - name: 'Rwanda', - alpha2: 'RW', - alpha3: 'RWA', - numeric: '646', - }, - { - name: 'Saint Barthélemy', - alpha2: 'BL', - alpha3: 'BLM', - numeric: '652', - altName: 'Saint-Barthélemy', - shortName: 'Saint Barthelemy', - }, - { - name: 'Saint Helena, Ascension and Tristan da Cunha', - alpha2: 'SH', - alpha3: 'SHN', - numeric: '654', - altName: 'Saint Helena', - }, - { - name: 'Saint Kitts and Nevis', - alpha2: 'KN', - alpha3: 'KNA', - numeric: '659', - }, - { - name: 'Saint Lucia', - alpha2: 'LC', - alpha3: 'LCA', - numeric: '662', - }, - { - name: 'Saint Martin (French part)', - alpha2: 'MF', - alpha3: 'MAF', - numeric: '663', - altName: 'Saint-Martin (French part)', - shortName: 'Saint Martin', - }, - { - name: 'Saint Pierre and Miquelon', - alpha2: 'PM', - alpha3: 'SPM', - numeric: '666', - }, - { - name: 'Saint Vincent and the Grenadines', - alpha2: 'VC', - alpha3: 'VCT', - numeric: '670', - altName: 'Saint Vincent and Grenadines', - }, - { - name: 'Samoa', - alpha2: 'WS', - alpha3: 'WSM', - numeric: '882', - }, - { - name: 'San Marino', - alpha2: 'SM', - alpha3: 'SMR', - numeric: '674', - }, - { - name: 'Sao Tome and Principe', - alpha2: 'ST', - alpha3: 'STP', - numeric: '678', - }, - { - name: 'Saudi Arabia', - alpha2: 'SA', - alpha3: 'SAU', - numeric: '682', - }, - { - name: 'Senegal', - alpha2: 'SN', - alpha3: 'SEN', - numeric: '686', - }, - { - name: 'Serbia', - alpha2: 'RS', - alpha3: 'SRB', - numeric: '688', - }, - { - name: 'Seychelles', - alpha2: 'SC', - alpha3: 'SYC', - numeric: '690', - }, - { - name: 'Sierra Leone', - alpha2: 'SL', - alpha3: 'SLE', - numeric: '694', - }, - { - name: 'Singapore', - alpha2: 'SG', - alpha3: 'SGP', - numeric: '702', - }, - { - name: 'Sint Maarten (Dutch part)', - alpha2: 'SX', - alpha3: 'SXM', - numeric: '534', - shortName: 'Sint Maarten', - }, - { - name: 'Slovakia', - alpha2: 'SK', - alpha3: 'SVK', - numeric: '703', - }, - { - name: 'Slovenia', - alpha2: 'SI', - alpha3: 'SVN', - numeric: '705', - }, - { - name: 'Solomon Islands', - alpha2: 'SB', - alpha3: 'SLB', - numeric: '090', - }, - { - name: 'Somalia', - alpha2: 'SO', - alpha3: 'SOM', - numeric: '706', - }, - { - name: 'South Africa', - alpha2: 'ZA', - alpha3: 'ZAF', - numeric: '710', - }, - { - name: 'South Georgia and the South Sandwich Islands', - alpha2: 'GS', - alpha3: 'SGS', - numeric: '239', - }, - { - name: 'South Sudan', - alpha2: 'SS', - alpha3: 'SSD', - numeric: '728', - }, - { - name: 'Spain', - alpha2: 'ES', - alpha3: 'ESP', - numeric: '724', - }, - { - name: 'Sri Lanka', - alpha2: 'LK', - alpha3: 'LKA', - numeric: '144', - }, - { - name: 'Sudan (the)', - alpha2: 'SD', - alpha3: 'SDN', - numeric: '729', - altName: 'Sudan', - }, - { - name: 'Suriname', - alpha2: 'SR', - alpha3: 'SUR', - numeric: '740', - }, - { - name: 'Svalbard and Jan Mayen', - alpha2: 'SJ', - alpha3: 'SJM', - numeric: '744', - altName: 'Svalbard and Jan Mayen Islands', - }, - { - name: 'Swaziland', - alpha2: 'SZ', - alpha3: 'SWZ', - numeric: '748', - }, - { - name: 'Sweden', - alpha2: 'SE', - alpha3: 'SWE', - numeric: '752', - }, - { - name: 'Switzerland', - alpha2: 'CH', - alpha3: 'CHE', - numeric: '756', - }, - { - name: 'Syrian Arab Republic', - alpha2: 'SY', - alpha3: 'SYR', - numeric: '760', - altName: 'Syrian Arab Republic (Syria)', - shortName: 'Syria', - }, - { - name: 'Taiwan (Province of China)', - alpha2: 'TW', - alpha3: 'TWN', - numeric: '158', - altName: 'Taiwan, Republic of China', - shortName: 'Taiwan', - }, - { - name: 'Tajikistan', - alpha2: 'TJ', - alpha3: 'TJK', - numeric: '762', - }, - { - name: 'Tanzania, United Republic of', - alpha2: 'TZ', - alpha3: 'TZA', - numeric: '834', - shortName: 'Tanzania', - }, - { - name: 'Thailand', - alpha2: 'TH', - alpha3: 'THA', - numeric: '764', - }, - { - name: 'Timor-Leste', - alpha2: 'TL', - alpha3: 'TLS', - numeric: '626', - shortName: 'East Timor', - }, - { - name: 'Togo', - alpha2: 'TG', - alpha3: 'TGO', - numeric: '768', - }, - { - name: 'Tokelau', - alpha2: 'TK', - alpha3: 'TKL', - numeric: '772', - }, - { - name: 'Tonga', - alpha2: 'TO', - alpha3: 'TON', - numeric: '776', - }, - { - name: 'Trinidad and Tobago', - alpha2: 'TT', - alpha3: 'TTO', - numeric: '780', - }, - { - name: 'Tunisia', - alpha2: 'TN', - alpha3: 'TUN', - numeric: '788', - }, - { - name: 'Turkey', - alpha2: 'TR', - alpha3: 'TUR', - numeric: '792', - }, - { - name: 'Turkmenistan', - alpha2: 'TM', - alpha3: 'TKM', - numeric: '795', - }, - { - name: 'Turks and Caicos Islands (the)', - alpha2: 'TC', - alpha3: 'TCA', - numeric: '796', - altName: 'Turks and Caicos Islands', - }, - { - name: 'Tuvalu', - alpha2: 'TV', - alpha3: 'TUV', - numeric: '798', - }, - { - name: 'Uganda', - alpha2: 'UG', - alpha3: 'UGA', - numeric: '800', - }, - { - name: 'Ukraine', - alpha2: 'UA', - alpha3: 'UKR', - numeric: '804', - }, - { - name: 'United Arab Emirates (the)', - alpha2: 'AE', - alpha3: 'ARE', - numeric: '784', - altName: 'United Arab Emirates', - }, - { - name: 'United Kingdom of Great Britain and Northern Ireland (the)', - alpha2: 'GB', - alpha3: 'GBR', - numeric: '826', - altName: 'United Kingdom', - }, - { - name: 'United States Minor Outlying Islands (the)', - alpha2: 'UM', - alpha3: 'UMI', - numeric: '581', - altName: 'US Minor Outlying Islands', - }, - { - name: 'United States of America (the)', - alpha2: 'US', - alpha3: 'USA', - numeric: '840', - altName: 'United States of America', - shortName: 'United States', - }, - { - name: 'Uruguay', - alpha2: 'UY', - alpha3: 'URY', - numeric: '858', - }, - { - name: 'Uzbekistan', - alpha2: 'UZ', - alpha3: 'UZB', - numeric: '860', - }, - { - name: 'Vanuatu', - alpha2: 'VU', - alpha3: 'VUT', - numeric: '548', - }, - { - name: 'Venezuela (Bolivarian Republic of)', - alpha2: 'VE', - alpha3: 'VEN', - numeric: '862', - altName: 'Venezuela (Bolivarian Republic)', - shortName: 'Venezuela', - }, - { - name: 'Viet Nam', - alpha2: 'VN', - alpha3: 'VNM', - numeric: '704', - shortName: 'Vietnam', - }, - { - name: 'Virgin Islands (British)', - alpha2: 'VG', - alpha3: 'VGB', - numeric: '092', - altName: 'British Virgin Islands', - }, - { - name: 'Virgin Islands (U.S.)', - alpha2: 'VI', - alpha3: 'VIR', - numeric: '850', - altName: 'Virgin Islands, US', - shortName: 'U.S. Virgin Islands', - }, - { - name: 'Wallis and Futuna', - alpha2: 'WF', - alpha3: 'WLF', - numeric: '876', - altName: 'Wallis and Futuna Islands', - }, - { - name: 'Western Sahara*', - alpha2: 'EH', - alpha3: 'ESH', - numeric: '732', - altName: 'Western Sahara', - }, - { - name: 'Yemen', - alpha2: 'YE', - alpha3: 'YEM', - numeric: '887', - }, - { - name: 'Zambia', - alpha2: 'ZM', - alpha3: 'ZMB', - numeric: '894', - }, - { - name: 'Zimbabwe', - alpha2: 'ZW', - alpha3: 'ZWE', - numeric: '716', - }, -]; diff --git a/packages/nodes-base/nodes/Google/YouTube/PlaylistDescription.ts b/packages/nodes-base/nodes/Google/YouTube/PlaylistDescription.ts index 893035d453..be3e07959f 100644 --- a/packages/nodes-base/nodes/Google/YouTube/PlaylistDescription.ts +++ b/packages/nodes-base/nodes/Google/YouTube/PlaylistDescription.ts @@ -69,7 +69,7 @@ export const playlistFields: INodeProperties[] = [ displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, displayOptions: { show: { @@ -123,7 +123,7 @@ export const playlistFields: INodeProperties[] = [ }, default: '', description: - 'The language of the text in the playlist resource\'s title and description properties. Choose from the list, or specify an ID using an expression.', + 'The language of the text in the playlist resource\'s title and description properties. Choose from the list, or specify an ID using an expression.', }, { displayName: 'On Behalf Of Content Owner Channel', @@ -208,7 +208,7 @@ export const playlistFields: INodeProperties[] = [ displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, displayOptions: { show: { @@ -255,7 +255,7 @@ export const playlistFields: INodeProperties[] = [ displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, displayOptions: { show: { @@ -357,7 +357,7 @@ export const playlistFields: INodeProperties[] = [ displayName: 'Filters', name: 'filters', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, displayOptions: { show: { @@ -388,7 +388,7 @@ export const playlistFields: INodeProperties[] = [ displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, displayOptions: { show: { @@ -468,7 +468,7 @@ export const playlistFields: INodeProperties[] = [ }, default: '', description: - 'The language of the text in the playlist resource\'s title and description properties. Choose from the list, or specify an ID using an expression.', + 'The language of the text in the playlist resource\'s title and description properties. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Description', diff --git a/packages/nodes-base/nodes/Google/YouTube/PlaylistItemDescription.ts b/packages/nodes-base/nodes/Google/YouTube/PlaylistItemDescription.ts index cfbd06add5..defdd19244 100644 --- a/packages/nodes-base/nodes/Google/YouTube/PlaylistItemDescription.ts +++ b/packages/nodes-base/nodes/Google/YouTube/PlaylistItemDescription.ts @@ -50,7 +50,7 @@ export const playlistItemFields: INodeProperties[] = [ name: 'playlistId', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getPlaylists', }, @@ -80,7 +80,7 @@ export const playlistItemFields: INodeProperties[] = [ displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, displayOptions: { show: { @@ -191,7 +191,7 @@ export const playlistItemFields: INodeProperties[] = [ displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, displayOptions: { show: { @@ -230,7 +230,7 @@ export const playlistItemFields: INodeProperties[] = [ displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, displayOptions: { show: { @@ -257,7 +257,7 @@ export const playlistItemFields: INodeProperties[] = [ name: 'playlistId', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getPlaylists', }, @@ -342,7 +342,7 @@ export const playlistItemFields: INodeProperties[] = [ displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, displayOptions: { show: { diff --git a/packages/nodes-base/nodes/Google/YouTube/VideoCategoryDescription.ts b/packages/nodes-base/nodes/Google/YouTube/VideoCategoryDescription.ts index bcc95b41ed..72cf4238cb 100644 --- a/packages/nodes-base/nodes/Google/YouTube/VideoCategoryDescription.ts +++ b/packages/nodes-base/nodes/Google/YouTube/VideoCategoryDescription.ts @@ -33,7 +33,7 @@ export const videoCategoryFields: INodeProperties[] = [ name: 'regionCode', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', required: true, displayOptions: { show: { diff --git a/packages/nodes-base/nodes/Google/YouTube/VideoDescription.ts b/packages/nodes-base/nodes/Google/YouTube/VideoDescription.ts index 339d20e3f0..c71f4ee6bd 100644 --- a/packages/nodes-base/nodes/Google/YouTube/VideoDescription.ts +++ b/packages/nodes-base/nodes/Google/YouTube/VideoDescription.ts @@ -76,7 +76,7 @@ export const videoFields: INodeProperties[] = [ name: 'regionCode', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getCountriesCodes', }, @@ -93,7 +93,7 @@ export const videoFields: INodeProperties[] = [ name: 'categoryId', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getVideoCategories', loadOptionsDependsOn: ['regionCode'], @@ -124,7 +124,7 @@ export const videoFields: INodeProperties[] = [ displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, displayOptions: { show: { @@ -142,7 +142,7 @@ export const videoFields: INodeProperties[] = [ }, default: '', description: - 'The language of the text in the playlist resource\'s title and description properties. Choose from the list, or specify an ID using an expression.', + 'The language of the text in the playlist resource\'s title and description properties. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Description', @@ -266,7 +266,7 @@ export const videoFields: INodeProperties[] = [ displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, displayOptions: { show: { @@ -366,7 +366,7 @@ export const videoFields: INodeProperties[] = [ displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, displayOptions: { show: { @@ -423,7 +423,7 @@ export const videoFields: INodeProperties[] = [ displayName: 'Filters', name: 'filters', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, displayOptions: { show: { @@ -481,7 +481,7 @@ export const videoFields: INodeProperties[] = [ }, default: '', description: - 'The regionCode parameter instructs the API to select a video chart available in the specified region. Choose from the list, or specify an ID using an expression.', + 'The regionCode parameter instructs the API to select a video chart available in the specified region. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Related To Video ID', @@ -535,7 +535,7 @@ export const videoFields: INodeProperties[] = [ displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, displayOptions: { show: { @@ -668,7 +668,7 @@ export const videoFields: INodeProperties[] = [ name: 'regionCode', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getCountriesCodes', }, @@ -685,7 +685,7 @@ export const videoFields: INodeProperties[] = [ name: 'categoryId', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getVideoCategories', loadOptionsDependsOn: ['regionCode'], @@ -702,7 +702,7 @@ export const videoFields: INodeProperties[] = [ displayName: 'Update Fields', name: 'updateFields', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, displayOptions: { show: { @@ -720,7 +720,7 @@ export const videoFields: INodeProperties[] = [ }, default: '', description: - 'The language of the text in the playlist resource\'s title and description properties. Choose from the list, or specify an ID using an expression.', + 'The language of the text in the playlist resource\'s title and description properties. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Description', diff --git a/packages/nodes-base/nodes/Google/YouTube/YouTube.node.ts b/packages/nodes-base/nodes/Google/YouTube/YouTube.node.ts index 8520fb2f34..07de1d36fa 100644 --- a/packages/nodes-base/nodes/Google/YouTube/YouTube.node.ts +++ b/packages/nodes-base/nodes/Google/YouTube/YouTube.node.ts @@ -8,8 +8,9 @@ import type { INodeType, INodeTypeDescription, } from 'n8n-workflow'; -import { BINARY_ENCODING, NodeOperationError } from 'n8n-workflow'; +import { NodeConnectionType, BINARY_ENCODING, NodeOperationError } from 'n8n-workflow'; +import { DateTime } from 'luxon'; import { googleApiRequest, googleApiRequestAllItems } from './GenericFunctions'; import { channelFields, channelOperations } from './ChannelDescription'; @@ -22,7 +23,7 @@ import { videoFields, videoOperations } from './VideoDescription'; import { videoCategoryFields, videoCategoryOperations } from './VideoCategoryDescription'; -import { countriesCodes } from './CountryCodes'; +import { isoCountryCodes } from '@utils/ISOCountryCodes'; const UPLOAD_CHUNK_SIZE = 1024 * 1024; @@ -39,8 +40,8 @@ export class YouTube implements INodeType { defaults: { name: 'YouTube', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'youTubeOAuth2Api', @@ -120,7 +121,7 @@ export class YouTube implements INodeType { // select them easily async getCountriesCodes(this: ILoadOptionsFunctions): Promise { const returnData: INodePropertyOptions[] = []; - for (const countryCode of countriesCodes) { + for (const countryCode of isoCountryCodes) { const countryCodeName = `${countryCode.name} - ${countryCode.alpha2}`; const countryCodeId = countryCode.alpha2; returnData.push({ @@ -762,6 +763,28 @@ export class YouTube implements INodeType { qs.type = 'video'; qs.forMine = true; + if (filters.publishedAfter) { + const publishedAfter = DateTime.fromISO(filters.publishedAfter as string); + if (publishedAfter.isValid) { + filters.publishedAfter = publishedAfter.setZone(this.getTimezone()).toISO(); + } else { + throw new NodeOperationError( + this.getNode(), + `The value "${filters.publishedAfter as string}" is not a valid DateTime.`, + ); + } + } + if (filters.publishedBefore) { + const publishedBefore = DateTime.fromISO(filters.publishedBefore as string); + if (publishedBefore.isValid) { + filters.publishedAfter = publishedBefore.setZone(this.getTimezone()).toISO(); + } else { + throw new NodeOperationError( + this.getNode(), + `The value "${filters.publishedBefore as string}" is not a valid DateTime.`, + ); + } + } Object.assign(qs, options, filters); @@ -1049,7 +1072,7 @@ export class YouTube implements INodeType { } } } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { const executionErrorData = this.helpers.constructExecutionMetaData( this.helpers.returnJsonArray({ error: error.message }), { itemData: { item: i } }, diff --git a/packages/nodes-base/nodes/Gotify/Gotify.node.json b/packages/nodes-base/nodes/Gotify/Gotify.node.json index 02cc119ed7..ed40f0dfc8 100644 --- a/packages/nodes-base/nodes/Gotify/Gotify.node.json +++ b/packages/nodes-base/nodes/Gotify/Gotify.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/gotify" + "url": "https://docs.n8n.io/integrations/builtin/credentials/gotify/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Gotify/Gotify.node.ts b/packages/nodes-base/nodes/Gotify/Gotify.node.ts index e5edb61f7b..aba203c5de 100644 --- a/packages/nodes-base/nodes/Gotify/Gotify.node.ts +++ b/packages/nodes-base/nodes/Gotify/Gotify.node.ts @@ -5,6 +5,7 @@ import type { INodeType, INodeTypeDescription, } from 'n8n-workflow'; +import { NodeConnectionType } from 'n8n-workflow'; import { gotifyApiRequest, gotifyApiRequestAllItems } from './GenericFunctions'; @@ -21,8 +22,8 @@ export class Gotify implements INodeType { defaults: { name: 'Gotify', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'gotifyApi', @@ -119,7 +120,7 @@ export class Gotify implements INodeType { displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', displayOptions: { show: { resource: ['message'], @@ -259,7 +260,7 @@ export class Gotify implements INodeType { ); returnData.push(...executionData); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push({ json: { error: error.message } }); continue; } diff --git a/packages/nodes-base/nodes/Grafana/GenericFunctions.ts b/packages/nodes-base/nodes/Grafana/GenericFunctions.ts index 9fb11f7c0e..03476fc8c6 100644 --- a/packages/nodes-base/nodes/Grafana/GenericFunctions.ts +++ b/packages/nodes-base/nodes/Grafana/GenericFunctions.ts @@ -21,7 +21,7 @@ export async function grafanaApiRequest( body: IDataObject = {}, qs: IDataObject = {}, ) { - const { baseUrl: rawBaseUrl } = (await this.getCredentials('grafanaApi')) as GrafanaCredentials; + const { baseUrl: rawBaseUrl } = await this.getCredentials('grafanaApi'); const baseUrl = tolerateTrailingSlash(rawBaseUrl); diff --git a/packages/nodes-base/nodes/Grafana/Grafana.node.json b/packages/nodes-base/nodes/Grafana/Grafana.node.json index ae39d64c16..5a03939d99 100644 --- a/packages/nodes-base/nodes/Grafana/Grafana.node.json +++ b/packages/nodes-base/nodes/Grafana/Grafana.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/grafana" + "url": "https://docs.n8n.io/integrations/builtin/credentials/grafana/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Grafana/Grafana.node.ts b/packages/nodes-base/nodes/Grafana/Grafana.node.ts index e89ee4eb52..ce3f0b8276 100644 --- a/packages/nodes-base/nodes/Grafana/Grafana.node.ts +++ b/packages/nodes-base/nodes/Grafana/Grafana.node.ts @@ -7,7 +7,7 @@ import type { INodeType, INodeTypeDescription, } from 'n8n-workflow'; -import { NodeApiError } from 'n8n-workflow'; +import { NodeConnectionType, NodeApiError } from 'n8n-workflow'; import { deriveUid, grafanaApiRequest, throwOnEmptyUpdate } from './GenericFunctions'; @@ -43,8 +43,8 @@ export class Grafana implements INodeType { defaults: { name: 'Grafana', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'grafanaApi', @@ -482,7 +482,7 @@ export class Grafana implements INodeType { ? returnData.push(...(responseData as IDataObject[])) : returnData.push(responseData as IDataObject); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push({ error: error.message }); continue; } diff --git a/packages/nodes-base/nodes/Grafana/descriptions/DashboardDescription.ts b/packages/nodes-base/nodes/Grafana/descriptions/DashboardDescription.ts index efef82c906..f1c581b0c4 100644 --- a/packages/nodes-base/nodes/Grafana/descriptions/DashboardDescription.ts +++ b/packages/nodes-base/nodes/Grafana/descriptions/DashboardDescription.ts @@ -81,7 +81,7 @@ export const dashboardFields: INodeProperties[] = [ type: 'options', default: '', description: - 'Folder to create the dashboard in - if the folder is unspecified, the dashboard will be saved to the General folder. Choose from the list, or specify an ID using an expression.', + 'Folder to create the dashboard in - if the folder is unspecified, the dashboard will be saved to the General folder. Choose from the list, or specify an ID using an expression.', typeOptions: { loadOptionsMethod: 'getFolders', }, @@ -219,7 +219,7 @@ export const dashboardFields: INodeProperties[] = [ type: 'options', default: '', description: - 'Folder to move the dashboard into - if the folder is unspecified, the dashboard will be saved to the General folder. Choose from the list, or specify an ID using an expression.', + 'Folder to move the dashboard into - if the folder is unspecified, the dashboard will be saved to the General folder. Choose from the list, or specify an ID using an expression.', typeOptions: { loadOptionsMethod: 'getFolders', }, diff --git a/packages/nodes-base/nodes/Grafana/descriptions/TeamMemberDescription.ts b/packages/nodes-base/nodes/Grafana/descriptions/TeamMemberDescription.ts index 9af04c3886..8bda11b4b8 100644 --- a/packages/nodes-base/nodes/Grafana/descriptions/TeamMemberDescription.ts +++ b/packages/nodes-base/nodes/Grafana/descriptions/TeamMemberDescription.ts @@ -43,7 +43,7 @@ export const teamMemberFields: INodeProperties[] = [ displayName: 'User Name or ID', name: 'userId', description: - 'User to add to a team. Choose from the list, or specify an ID using an expression.', + 'User to add to a team. Choose from the list, or specify an ID using an expression.', type: 'options', required: true, default: '', @@ -61,7 +61,7 @@ export const teamMemberFields: INodeProperties[] = [ displayName: 'Team Name or ID', name: 'teamId', description: - 'Team to add the user to. Choose from the list, or specify an ID using an expression.', + 'Team to add the user to. Choose from the list, or specify an ID using an expression.', type: 'options', required: true, default: '', @@ -83,7 +83,7 @@ export const teamMemberFields: INodeProperties[] = [ displayName: 'User Name or ID', name: 'memberId', description: - 'User to remove from the team. Choose from the list, or specify an ID using an expression.', + 'User to remove from the team. Choose from the list, or specify an ID using an expression.', type: 'options', required: true, default: '', @@ -101,7 +101,7 @@ export const teamMemberFields: INodeProperties[] = [ displayName: 'Team Name or ID', name: 'teamId', description: - 'Team to remove the user from. Choose from the list, or specify an ID using an expression.', + 'Team to remove the user from. Choose from the list, or specify an ID using an expression.', type: 'options', required: true, default: '', @@ -123,7 +123,7 @@ export const teamMemberFields: INodeProperties[] = [ displayName: 'Team Name or ID', name: 'teamId', description: - 'Team to retrieve all members from. Choose from the list, or specify an ID using an expression.', + 'Team to retrieve all members from. Choose from the list, or specify an ID using an expression.', typeOptions: { loadOptionsMethod: 'getTeams', }, diff --git a/packages/nodes-base/nodes/GraphQL/GraphQL.node.ts b/packages/nodes-base/nodes/GraphQL/GraphQL.node.ts index 58c9132769..89891bd1c6 100644 --- a/packages/nodes-base/nodes/GraphQL/GraphQL.node.ts +++ b/packages/nodes-base/nodes/GraphQL/GraphQL.node.ts @@ -10,7 +10,7 @@ import type { IRequestOptions, IHttpRequestMethods, } from 'n8n-workflow'; -import { NodeApiError, NodeOperationError, jsonParse } from 'n8n-workflow'; +import { NodeApiError, NodeConnectionType, NodeOperationError, jsonParse } from 'n8n-workflow'; export class GraphQL implements INodeType { description: INodeTypeDescription = { @@ -24,8 +24,8 @@ export class GraphQL implements INodeType { defaults: { name: 'GraphQL', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'httpBasicAuth', @@ -509,7 +509,7 @@ export class GraphQL implements INodeType { throw new NodeApiError(this.getNode(), response.errors as JsonObject, { message }); } } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { const errorData = this.helpers.returnJsonArray({ $error: error, json: this.getInputData(itemIndex), diff --git a/packages/nodes-base/nodes/Grist/Grist.node.json b/packages/nodes-base/nodes/Grist/Grist.node.json index c189c7ba1d..ba490989c2 100644 --- a/packages/nodes-base/nodes/Grist/Grist.node.json +++ b/packages/nodes-base/nodes/Grist/Grist.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/grist" + "url": "https://docs.n8n.io/integrations/builtin/credentials/grist/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Grist/Grist.node.ts b/packages/nodes-base/nodes/Grist/Grist.node.ts index c957b17a6f..2ebd3cdd43 100644 --- a/packages/nodes-base/nodes/Grist/Grist.node.ts +++ b/packages/nodes-base/nodes/Grist/Grist.node.ts @@ -1,14 +1,15 @@ -import type { - IExecuteFunctions, - ICredentialsDecrypted, - ICredentialTestFunctions, - IDataObject, - ILoadOptionsFunctions, - INodeCredentialTestResult, - INodeExecutionData, - INodeType, - INodeTypeDescription, - IRequestOptions, +import { + type IExecuteFunctions, + type ICredentialsDecrypted, + type ICredentialTestFunctions, + type IDataObject, + type ILoadOptionsFunctions, + type INodeCredentialTestResult, + type INodeExecutionData, + type INodeType, + type INodeTypeDescription, + type IRequestOptions, + NodeConnectionType, } from 'n8n-workflow'; import { @@ -44,8 +45,8 @@ export class Grist implements INodeType { defaults: { name: 'Grist', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'gristApi', @@ -244,7 +245,7 @@ export class Grist implements INodeType { }); } } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { const executionData = this.helpers.constructExecutionMetaData( this.helpers.returnJsonArray({ error: error.message }), { itemData: { item: i } }, diff --git a/packages/nodes-base/nodes/Grist/OperationDescription.ts b/packages/nodes-base/nodes/Grist/OperationDescription.ts index b3011e1822..7c9a9a4f6d 100644 --- a/packages/nodes-base/nodes/Grist/OperationDescription.ts +++ b/packages/nodes-base/nodes/Grist/OperationDescription.ts @@ -115,7 +115,7 @@ export const operationFields: INodeProperties[] = [ }, }, default: {}, - placeholder: 'Add Option', + placeholder: 'Add option', options: [ { displayName: 'Filter', @@ -143,7 +143,7 @@ export const operationFields: INodeProperties[] = [ }, default: '', description: - 'Column to apply the filter in. Choose from the list, or specify an ID using an expression.', + 'Column to apply the filter in. Choose from the list, or specify an ID using an expression.', required: true, }, { @@ -182,7 +182,7 @@ export const operationFields: INodeProperties[] = [ default: '', required: true, description: - 'Column to sort on. Choose from the list, or specify an ID using an expression.', + 'Column to sort on. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Direction', @@ -292,7 +292,7 @@ export const operationFields: INodeProperties[] = [ displayName: 'Column Name or ID', name: 'fieldId', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', type: 'options', typeOptions: { loadOptionsDependsOn: ['tableId'], diff --git a/packages/nodes-base/nodes/Gumroad/GumroadTrigger.node.json b/packages/nodes-base/nodes/Gumroad/GumroadTrigger.node.json index 7dab996b22..c24d5cb428 100644 --- a/packages/nodes-base/nodes/Gumroad/GumroadTrigger.node.json +++ b/packages/nodes-base/nodes/Gumroad/GumroadTrigger.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/gumroad" + "url": "https://docs.n8n.io/integrations/builtin/credentials/gumroad/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Gumroad/GumroadTrigger.node.ts b/packages/nodes-base/nodes/Gumroad/GumroadTrigger.node.ts index c8394cf93a..eae2f52b9b 100644 --- a/packages/nodes-base/nodes/Gumroad/GumroadTrigger.node.ts +++ b/packages/nodes-base/nodes/Gumroad/GumroadTrigger.node.ts @@ -6,6 +6,7 @@ import type { INodeTypeDescription, IWebhookResponseData, } from 'n8n-workflow'; +import { NodeConnectionType } from 'n8n-workflow'; import { gumroadApiRequest } from './GenericFunctions'; @@ -23,7 +24,7 @@ export class GumroadTrigger implements INodeType { name: 'Gumroad Trigger', }, inputs: [], - outputs: ['main'], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'gumroadApi', diff --git a/packages/nodes-base/nodes/HackerNews/HackerNews.node.ts b/packages/nodes-base/nodes/HackerNews/HackerNews.node.ts index 972eb65b17..d91fa35d44 100644 --- a/packages/nodes-base/nodes/HackerNews/HackerNews.node.ts +++ b/packages/nodes-base/nodes/HackerNews/HackerNews.node.ts @@ -5,7 +5,7 @@ import type { INodeType, INodeTypeDescription, } from 'n8n-workflow'; -import { NodeOperationError } from 'n8n-workflow'; +import { NodeConnectionType, NodeOperationError } from 'n8n-workflow'; import { hackerNewsApiRequest, hackerNewsApiRequestAllItems } from './GenericFunctions'; @@ -22,8 +22,9 @@ export class HackerNews implements INodeType { defaults: { name: 'Hacker News', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], + usableAsTool: true, properties: [ // ---------------------------------- // Resources @@ -348,7 +349,7 @@ export class HackerNews implements INodeType { returnData.push(...executionData); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { const executionErrorData = this.helpers.constructExecutionMetaData( this.helpers.returnJsonArray({ error: error.message }), { itemData: { item: i } }, diff --git a/packages/nodes-base/nodes/HaloPSA/HaloPSA.node.json b/packages/nodes-base/nodes/HaloPSA/HaloPSA.node.json index 8694e232b2..9e757227c0 100644 --- a/packages/nodes-base/nodes/HaloPSA/HaloPSA.node.json +++ b/packages/nodes-base/nodes/HaloPSA/HaloPSA.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/haloPSA/" + "url": "https://docs.n8n.io/integrations/builtin/credentials/haloPSA/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/HaloPSA/HaloPSA.node.ts b/packages/nodes-base/nodes/HaloPSA/HaloPSA.node.ts index bcbb54d40a..ebf25294d7 100644 --- a/packages/nodes-base/nodes/HaloPSA/HaloPSA.node.ts +++ b/packages/nodes-base/nodes/HaloPSA/HaloPSA.node.ts @@ -1,16 +1,17 @@ -import type { - IExecuteFunctions, - ICredentialDataDecryptedObject, - ICredentialsDecrypted, - ICredentialTestFunctions, - IDataObject, - ILoadOptionsFunctions, - INodeCredentialTestResult, - INodeExecutionData, - INodePropertyOptions, - INodeType, - INodeTypeDescription, - JsonObject, +import { + type IExecuteFunctions, + type ICredentialDataDecryptedObject, + type ICredentialsDecrypted, + type ICredentialTestFunctions, + type IDataObject, + type ILoadOptionsFunctions, + type INodeCredentialTestResult, + type INodeExecutionData, + type INodePropertyOptions, + type INodeType, + type INodeTypeDescription, + type JsonObject, + NodeConnectionType, } from 'n8n-workflow'; import { @@ -46,8 +47,8 @@ export class HaloPSA implements INodeType { defaults: { name: 'HaloPSA', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'haloPSAApi', @@ -666,7 +667,7 @@ export class HaloPSA implements INodeType { returnData.push(...executionData); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { const executionErrorData = this.helpers.constructExecutionMetaData( this.helpers.returnJsonArray({ error: error.message }), { itemData: { item: i } }, diff --git a/packages/nodes-base/nodes/HaloPSA/descriptions/SiteDescription.ts b/packages/nodes-base/nodes/HaloPSA/descriptions/SiteDescription.ts index 9d2d275e04..5820ae7349 100644 --- a/packages/nodes-base/nodes/HaloPSA/descriptions/SiteDescription.ts +++ b/packages/nodes-base/nodes/HaloPSA/descriptions/SiteDescription.ts @@ -97,7 +97,7 @@ export const siteFields: INodeProperties[] = [ name: 'clientId', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', default: '', required: true, typeOptions: { diff --git a/packages/nodes-base/nodes/HaloPSA/descriptions/TicketDescription.ts b/packages/nodes-base/nodes/HaloPSA/descriptions/TicketDescription.ts index 181bb090fa..b409d711e1 100644 --- a/packages/nodes-base/nodes/HaloPSA/descriptions/TicketDescription.ts +++ b/packages/nodes-base/nodes/HaloPSA/descriptions/TicketDescription.ts @@ -56,7 +56,7 @@ export const ticketFields: INodeProperties[] = [ name: 'ticketType', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', default: '', required: true, typeOptions: { @@ -115,7 +115,7 @@ export const ticketFields: INodeProperties[] = [ name: 'agent_id', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', default: '', typeOptions: { loadOptionsMethod: 'getHaloPSAAgents', @@ -277,7 +277,7 @@ export const ticketFields: INodeProperties[] = [ name: 'agent_id', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', default: '', typeOptions: { loadOptionsMethod: 'getHaloPSAAgents', diff --git a/packages/nodes-base/nodes/HaloPSA/descriptions/UserDescription.ts b/packages/nodes-base/nodes/HaloPSA/descriptions/UserDescription.ts index a40dd3ff30..f916124778 100644 --- a/packages/nodes-base/nodes/HaloPSA/descriptions/UserDescription.ts +++ b/packages/nodes-base/nodes/HaloPSA/descriptions/UserDescription.ts @@ -70,7 +70,7 @@ export const userFields: INodeProperties[] = [ name: 'siteId', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', default: '', required: true, typeOptions: { @@ -302,7 +302,7 @@ export const userFields: INodeProperties[] = [ name: 'site_id', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', default: '', typeOptions: { loadOptionsMethod: 'getHaloPSASites', diff --git a/packages/nodes-base/nodes/Harvest/Harvest.node.json b/packages/nodes-base/nodes/Harvest/Harvest.node.json index 3dd350929c..584f3c9531 100644 --- a/packages/nodes-base/nodes/Harvest/Harvest.node.json +++ b/packages/nodes-base/nodes/Harvest/Harvest.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/harvest" + "url": "https://docs.n8n.io/integrations/builtin/credentials/harvest/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Harvest/Harvest.node.ts b/packages/nodes-base/nodes/Harvest/Harvest.node.ts index 55e0c03f08..90fc166080 100644 --- a/packages/nodes-base/nodes/Harvest/Harvest.node.ts +++ b/packages/nodes-base/nodes/Harvest/Harvest.node.ts @@ -8,7 +8,7 @@ import type { INodeTypeDescription, IHttpRequestMethods, } from 'n8n-workflow'; -import { NodeOperationError } from 'n8n-workflow'; +import { NodeConnectionType, NodeOperationError } from 'n8n-workflow'; import { clientFields, clientOperations } from './ClientDescription'; @@ -45,8 +45,8 @@ export class Harvest implements INodeType { defaults: { name: 'Harvest', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'harvestApi', @@ -152,7 +152,7 @@ export class Harvest implements INodeType { name: 'accountId', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', required: true, typeOptions: { loadOptionsMethod: 'getAccounts', @@ -1333,7 +1333,7 @@ export class Harvest implements INodeType { }); } } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { const executionErrorData = this.helpers.constructExecutionMetaData( this.helpers.returnJsonArray({ error: error.message }), { itemData: { item: i } }, diff --git a/packages/nodes-base/nodes/HelpScout/ConversationDescription.ts b/packages/nodes-base/nodes/HelpScout/ConversationDescription.ts index 695f2ccb09..5ef5761387 100644 --- a/packages/nodes-base/nodes/HelpScout/ConversationDescription.ts +++ b/packages/nodes-base/nodes/HelpScout/ConversationDescription.ts @@ -61,7 +61,7 @@ export const conversationFields: INodeProperties[] = [ }, default: '', description: - 'ID of a mailbox where the conversation is being created. Choose from the list, or specify an ID using an expression.', + 'ID of a mailbox where the conversation is being created. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Status', @@ -218,7 +218,7 @@ export const conversationFields: INodeProperties[] = [ }, default: [], description: - 'List of tags to be added to the conversation. Choose from the list, or specify IDs using an expression.', + 'List of tags to be added to the conversation. Choose from the list, or specify IDs using an expression.', }, { displayName: 'User ID', @@ -401,7 +401,7 @@ export const conversationFields: INodeProperties[] = [ displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, displayOptions: { show: { @@ -572,7 +572,7 @@ export const conversationFields: INodeProperties[] = [ }, default: [], description: - 'Filter conversation by tags. Choose from the list, or specify IDs using an expression.', + 'Filter conversation by tags. Choose from the list, or specify IDs using an expression.', }, ], }, diff --git a/packages/nodes-base/nodes/HelpScout/CountriesCodes.ts b/packages/nodes-base/nodes/HelpScout/CountriesCodes.ts deleted file mode 100644 index b73da14ec9..0000000000 --- a/packages/nodes-base/nodes/HelpScout/CountriesCodes.ts +++ /dev/null @@ -1,1579 +0,0 @@ -export const countriesCodes = [ - { - name: 'Afghanistan', - alpha2: 'AF', - alpha3: 'AFG', - numeric: '004', - }, - { - name: 'Åland Islands', - alpha2: 'AX', - alpha3: 'ALA', - numeric: '248', - altName: 'Aland Islands', - }, - { - name: 'Albania', - alpha2: 'AL', - alpha3: 'ALB', - numeric: '008', - }, - { - name: 'Algeria', - alpha2: 'DZ', - alpha3: 'DZA', - numeric: '012', - }, - { - name: 'American Samoa', - alpha2: 'AS', - alpha3: 'ASM', - numeric: '016', - }, - { - name: 'Andorra', - alpha2: 'AD', - alpha3: 'AND', - numeric: '020', - }, - { - name: 'Angola', - alpha2: 'AO', - alpha3: 'AGO', - numeric: '024', - }, - { - name: 'Anguilla', - alpha2: 'AI', - alpha3: 'AIA', - numeric: '660', - }, - { - name: 'Antarctica', - alpha2: 'AQ', - alpha3: 'ATA', - numeric: '010', - }, - { - name: 'Antigua and Barbuda', - alpha2: 'AG', - alpha3: 'ATG', - numeric: '028', - }, - { - name: 'Argentina', - alpha2: 'AR', - alpha3: 'ARG', - numeric: '032', - }, - { - name: 'Armenia', - alpha2: 'AM', - alpha3: 'ARM', - numeric: '051', - }, - { - name: 'Aruba', - alpha2: 'AW', - alpha3: 'ABW', - numeric: '533', - }, - { - name: 'Australia', - alpha2: 'AU', - alpha3: 'AUS', - numeric: '036', - }, - { - name: 'Austria', - alpha2: 'AT', - alpha3: 'AUT', - numeric: '040', - }, - { - name: 'Azerbaijan', - alpha2: 'AZ', - alpha3: 'AZE', - numeric: '031', - }, - { - name: 'Bahamas (the)', - alpha2: 'BS', - alpha3: 'BHS', - numeric: '044', - altName: 'Bahamas', - }, - { - name: 'Bahrain', - alpha2: 'BH', - alpha3: 'BHR', - numeric: '048', - }, - { - name: 'Bangladesh', - alpha2: 'BD', - alpha3: 'BGD', - numeric: '050', - }, - { - name: 'Barbados', - alpha2: 'BB', - alpha3: 'BRB', - numeric: '052', - }, - { - name: 'Belarus', - alpha2: 'BY', - alpha3: 'BLR', - numeric: '112', - }, - { - name: 'Belgium', - alpha2: 'BE', - alpha3: 'BEL', - numeric: '056', - }, - { - name: 'Belize', - alpha2: 'BZ', - alpha3: 'BLZ', - numeric: '084', - }, - { - name: 'Benin', - alpha2: 'BJ', - alpha3: 'BEN', - numeric: '204', - }, - { - name: 'Bermuda', - alpha2: 'BM', - alpha3: 'BMU', - numeric: '060', - }, - { - name: 'Bhutan', - alpha2: 'BT', - alpha3: 'BTN', - numeric: '064', - }, - { - name: 'Bolivia (Plurinational State of)', - alpha2: 'BO', - alpha3: 'BOL', - numeric: '068', - altName: 'Bolivia', - }, - { - name: 'Bonaire, Sint Eustatius and Saba', - alpha2: 'BQ', - alpha3: 'BES', - numeric: '535', - }, - { - name: 'Bosnia and Herzegovina', - alpha2: 'BA', - alpha3: 'BIH', - numeric: '070', - }, - { - name: 'Botswana', - alpha2: 'BW', - alpha3: 'BWA', - numeric: '072', - }, - { - name: 'Bouvet Island', - alpha2: 'BV', - alpha3: 'BVT', - numeric: '074', - }, - { - name: 'Brazil', - alpha2: 'BR', - alpha3: 'BRA', - numeric: '076', - }, - { - name: 'British Indian Ocean Territory (the)', - alpha2: 'IO', - alpha3: 'IOT', - numeric: '086', - altName: 'British Indian Ocean Territory', - }, - { - name: 'Brunei Darussalam', - alpha2: 'BN', - alpha3: 'BRN', - numeric: '096', - shortName: 'Brunei', - }, - { - name: 'Bulgaria', - alpha2: 'BG', - alpha3: 'BGR', - numeric: '100', - }, - { - name: 'Burkina Faso', - alpha2: 'BF', - alpha3: 'BFA', - numeric: '854', - }, - { - name: 'Burundi', - alpha2: 'BI', - alpha3: 'BDI', - numeric: '108', - }, - { - name: 'Cabo Verde', - alpha2: 'CV', - alpha3: 'CPV', - numeric: '132', - altName: 'Cape Verde', - }, - { - name: 'Cambodia', - alpha2: 'KH', - alpha3: 'KHM', - numeric: '116', - }, - { - name: 'Cameroon', - alpha2: 'CM', - alpha3: 'CMR', - numeric: '120', - }, - { - name: 'Canada', - alpha2: 'CA', - alpha3: 'CAN', - numeric: '124', - }, - { - name: 'Cayman Islands (the)', - alpha2: 'KY', - alpha3: 'CYM', - numeric: '136', - altName: 'Cayman Islands', - }, - { - name: 'Central African Republic (the)', - alpha2: 'CF', - alpha3: 'CAF', - numeric: '140', - altName: 'Central African Republic', - }, - { - name: 'Chad', - alpha2: 'TD', - alpha3: 'TCD', - numeric: '148', - }, - { - name: 'Chile', - alpha2: 'CL', - alpha3: 'CHL', - numeric: '152', - }, - { - name: 'China', - alpha2: 'CN', - alpha3: 'CHN', - numeric: '156', - }, - { - name: 'Christmas Island', - alpha2: 'CX', - alpha3: 'CXR', - numeric: '162', - }, - { - name: 'Cocos (Keeling) Islands (the)', - alpha2: 'CC', - alpha3: 'CCK', - numeric: '166', - altName: 'Cocos (Keeling) Islands', - shortName: 'Cocos Islands', - }, - { - name: 'Colombia', - alpha2: 'CO', - alpha3: 'COL', - numeric: '170', - }, - { - name: 'Comoros (the)', - alpha2: 'KM', - alpha3: 'COM', - numeric: '174', - altName: 'Comoros', - }, - { - name: 'Congo (the Democratic Republic of the)', - alpha2: 'CD', - alpha3: 'COD', - numeric: '180', - altName: 'Congo, (Kinshasa)', - shortName: 'Democratic Republic of the Congo', - }, - { - name: 'Congo (the)', - alpha2: 'CG', - alpha3: 'COG', - numeric: '178', - altName: 'Congo (Brazzaville)', - shortName: 'Republic of the Congo', - }, - { - name: 'Cook Islands (the)', - alpha2: 'CK', - alpha3: 'COK', - numeric: '184', - altName: 'Cook Islands', - }, - { - name: 'Costa Rica', - alpha2: 'CR', - alpha3: 'CRI', - numeric: '188', - }, - { - name: "Côte d'Ivoire", - alpha2: 'CI', - alpha3: 'CIV', - numeric: '384', - shortName: 'Ivory Coast', - }, - { - name: 'Croatia', - alpha2: 'HR', - alpha3: 'HRV', - numeric: '191', - }, - { - name: 'Cuba', - alpha2: 'CU', - alpha3: 'CUB', - numeric: '192', - }, - { - name: 'Curaçao', - alpha2: 'CW', - alpha3: 'CUW', - numeric: '531', - shortName: 'Curacao', - }, - { - name: 'Cyprus', - alpha2: 'CY', - alpha3: 'CYP', - numeric: '196', - }, - { - name: 'Czechia', - alpha2: 'CZ', - alpha3: 'CZE', - numeric: '203', - altName: 'Czech Republic', - }, - { - name: 'Denmark', - alpha2: 'DK', - alpha3: 'DNK', - numeric: '208', - }, - { - name: 'Djibouti', - alpha2: 'DJ', - alpha3: 'DJI', - numeric: '262', - }, - { - name: 'Dominica', - alpha2: 'DM', - alpha3: 'DMA', - numeric: '212', - }, - { - name: 'Dominican Republic (the)', - alpha2: 'DO', - alpha3: 'DOM', - numeric: '214', - altName: 'Dominican Republic', - }, - { - name: 'Ecuador', - alpha2: 'EC', - alpha3: 'ECU', - numeric: '218', - }, - { - name: 'Egypt', - alpha2: 'EG', - alpha3: 'EGY', - numeric: '818', - }, - { - name: 'El Salvador', - alpha2: 'SV', - alpha3: 'SLV', - numeric: '222', - }, - { - name: 'Equatorial Guinea', - alpha2: 'GQ', - alpha3: 'GNQ', - numeric: '226', - }, - { - name: 'Eritrea', - alpha2: 'ER', - alpha3: 'ERI', - numeric: '232', - }, - { - name: 'Estonia', - alpha2: 'EE', - alpha3: 'EST', - numeric: '233', - }, - { - name: 'Ethiopia', - alpha2: 'ET', - alpha3: 'ETH', - numeric: '231', - }, - { - name: 'Falkland Islands (the) [Malvinas]', - alpha2: 'FK', - alpha3: 'FLK', - numeric: '238', - altName: 'Falkland Islands (Malvinas)', - shortName: 'Falkland Islands', - }, - { - name: 'Faroe Islands (the)', - alpha2: 'FO', - alpha3: 'FRO', - numeric: '234', - altName: 'Faroe Islands', - }, - { - name: 'Fiji', - alpha2: 'FJ', - alpha3: 'FJI', - numeric: '242', - }, - { - name: 'Finland', - alpha2: 'FI', - alpha3: 'FIN', - numeric: '246', - }, - { - name: 'France', - alpha2: 'FR', - alpha3: 'FRA', - numeric: '250', - }, - { - name: 'French Guiana', - alpha2: 'GF', - alpha3: 'GUF', - numeric: '254', - }, - { - name: 'French Polynesia', - alpha2: 'PF', - alpha3: 'PYF', - numeric: '258', - }, - { - name: 'French Southern Territories (the)', - alpha2: 'TF', - alpha3: 'ATF', - numeric: '260', - altName: 'French Southern Territories', - }, - { - name: 'Gabon', - alpha2: 'GA', - alpha3: 'GAB', - numeric: '266', - }, - { - name: 'Gambia (the)', - alpha2: 'GM', - alpha3: 'GMB', - numeric: '270', - altName: 'Gambia', - }, - { - name: 'Georgia', - alpha2: 'GE', - alpha3: 'GEO', - numeric: '268', - }, - { - name: 'Germany', - alpha2: 'DE', - alpha3: 'DEU', - numeric: '276', - }, - { - name: 'Ghana', - alpha2: 'GH', - alpha3: 'GHA', - numeric: '288', - }, - { - name: 'Gibraltar', - alpha2: 'GI', - alpha3: 'GIB', - numeric: '292', - }, - { - name: 'Greece', - alpha2: 'GR', - alpha3: 'GRC', - numeric: '300', - }, - { - name: 'Greenland', - alpha2: 'GL', - alpha3: 'GRL', - numeric: '304', - }, - { - name: 'Grenada', - alpha2: 'GD', - alpha3: 'GRD', - numeric: '308', - }, - { - name: 'Guadeloupe', - alpha2: 'GP', - alpha3: 'GLP', - numeric: '312', - }, - { - name: 'Guam', - alpha2: 'GU', - alpha3: 'GUM', - numeric: '316', - }, - { - name: 'Guatemala', - alpha2: 'GT', - alpha3: 'GTM', - numeric: '320', - }, - { - name: 'Guernsey', - alpha2: 'GG', - alpha3: 'GGY', - numeric: '831', - }, - { - name: 'Guinea', - alpha2: 'GN', - alpha3: 'GIN', - numeric: '324', - }, - { - name: 'Guinea-Bissau', - alpha2: 'GW', - alpha3: 'GNB', - numeric: '624', - }, - { - name: 'Guyana', - alpha2: 'GY', - alpha3: 'GUY', - numeric: '328', - }, - { - name: 'Haiti', - alpha2: 'HT', - alpha3: 'HTI', - numeric: '332', - }, - { - name: 'Heard Island and McDonald Islands', - alpha2: 'HM', - alpha3: 'HMD', - numeric: '334', - altName: 'Heard and Mcdonald Islands', - }, - { - name: 'Holy See (the)', - alpha2: 'VA', - alpha3: 'VAT', - numeric: '336', - altName: 'Holy See (Vatican City State)', - shortName: 'Vatican', - }, - { - name: 'Honduras', - alpha2: 'HN', - alpha3: 'HND', - numeric: '340', - }, - { - name: 'Hong Kong', - alpha2: 'HK', - alpha3: 'HKG', - numeric: '344', - altName: 'Hong Kong, SAR China', - }, - { - name: 'Hungary', - alpha2: 'HU', - alpha3: 'HUN', - numeric: '348', - }, - { - name: 'Iceland', - alpha2: 'IS', - alpha3: 'ISL', - numeric: '352', - }, - { - name: 'India', - alpha2: 'IN', - alpha3: 'IND', - numeric: '356', - }, - { - name: 'Indonesia', - alpha2: 'ID', - alpha3: 'IDN', - numeric: '360', - }, - { - name: 'Iran (Islamic Republic of)', - alpha2: 'IR', - alpha3: 'IRN', - numeric: '364', - altName: 'Iran, Islamic Republic of', - shortName: 'Iran', - }, - { - name: 'Iraq', - alpha2: 'IQ', - alpha3: 'IRQ', - numeric: '368', - }, - { - name: 'Ireland', - alpha2: 'IE', - alpha3: 'IRL', - numeric: '372', - }, - { - name: 'Isle of Man', - alpha2: 'IM', - alpha3: 'IMN', - numeric: '833', - }, - { - name: 'Israel', - alpha2: 'IL', - alpha3: 'ISR', - numeric: '376', - }, - { - name: 'Italy', - alpha2: 'IT', - alpha3: 'ITA', - numeric: '380', - }, - { - name: 'Jamaica', - alpha2: 'JM', - alpha3: 'JAM', - numeric: '388', - }, - { - name: 'Japan', - alpha2: 'JP', - alpha3: 'JPN', - numeric: '392', - }, - { - name: 'Jersey', - alpha2: 'JE', - alpha3: 'JEY', - numeric: '832', - }, - { - name: 'Jordan', - alpha2: 'JO', - alpha3: 'JOR', - numeric: '400', - }, - { - name: 'Kazakhstan', - alpha2: 'KZ', - alpha3: 'KAZ', - numeric: '398', - }, - { - name: 'Kenya', - alpha2: 'KE', - alpha3: 'KEN', - numeric: '404', - }, - { - name: 'Kiribati', - alpha2: 'KI', - alpha3: 'KIR', - numeric: '296', - }, - { - name: "Korea (the Democratic People's Republic of)", - alpha2: 'KP', - alpha3: 'PRK', - numeric: '408', - altName: 'Korea (North)', - shortName: 'North Korea', - }, - { - name: 'Korea (the Republic of)', - alpha2: 'KR', - alpha3: 'KOR', - numeric: '410', - altName: 'Korea (South)', - shortName: 'South Korea', - }, - { - name: 'Kuwait', - alpha2: 'KW', - alpha3: 'KWT', - numeric: '414', - }, - { - name: 'Kyrgyzstan', - alpha2: 'KG', - alpha3: 'KGZ', - numeric: '417', - }, - { - name: "Lao People's Democratic Republic (the)", - alpha2: 'LA', - alpha3: 'LAO', - numeric: '418', - altName: 'Lao PDR', - shortName: 'Laos', - }, - { - name: 'Latvia', - alpha2: 'LV', - alpha3: 'LVA', - numeric: '428', - }, - { - name: 'Lebanon', - alpha2: 'LB', - alpha3: 'LBN', - numeric: '422', - }, - { - name: 'Lesotho', - alpha2: 'LS', - alpha3: 'LSO', - numeric: '426', - }, - { - name: 'Liberia', - alpha2: 'LR', - alpha3: 'LBR', - numeric: '430', - }, - { - name: 'Libya', - alpha2: 'LY', - alpha3: 'LBY', - numeric: '434', - }, - { - name: 'Liechtenstein', - alpha2: 'LI', - alpha3: 'LIE', - numeric: '438', - }, - { - name: 'Lithuania', - alpha2: 'LT', - alpha3: 'LTU', - numeric: '440', - }, - { - name: 'Luxembourg', - alpha2: 'LU', - alpha3: 'LUX', - numeric: '442', - }, - { - name: 'Macao', - alpha2: 'MO', - alpha3: 'MAC', - numeric: '446', - altName: 'Macao, SAR China', - shortName: 'Macau', - }, - { - name: 'Macedonia (the former Yugoslav Republic of)', - alpha2: 'MK', - alpha3: 'MKD', - numeric: '807', - altName: 'Macedonia, Republic of', - shortName: 'Macedonia', - }, - { - name: 'Madagascar', - alpha2: 'MG', - alpha3: 'MDG', - numeric: '450', - }, - { - name: 'Malawi', - alpha2: 'MW', - alpha3: 'MWI', - numeric: '454', - }, - { - name: 'Malaysia', - alpha2: 'MY', - alpha3: 'MYS', - numeric: '458', - }, - { - name: 'Maldives', - alpha2: 'MV', - alpha3: 'MDV', - numeric: '462', - }, - { - name: 'Mali', - alpha2: 'ML', - alpha3: 'MLI', - numeric: '466', - }, - { - name: 'Malta', - alpha2: 'MT', - alpha3: 'MLT', - numeric: '470', - }, - { - name: 'Marshall Islands (the)', - alpha2: 'MH', - alpha3: 'MHL', - numeric: '584', - altName: 'Marshall Islands', - }, - { - name: 'Martinique', - alpha2: 'MQ', - alpha3: 'MTQ', - numeric: '474', - }, - { - name: 'Mauritania', - alpha2: 'MR', - alpha3: 'MRT', - numeric: '478', - }, - { - name: 'Mauritius', - alpha2: 'MU', - alpha3: 'MUS', - numeric: '480', - }, - { - name: 'Mayotte', - alpha2: 'YT', - alpha3: 'MYT', - numeric: '175', - }, - { - name: 'Mexico', - alpha2: 'MX', - alpha3: 'MEX', - numeric: '484', - }, - { - name: 'Micronesia (Federated States of)', - alpha2: 'FM', - alpha3: 'FSM', - numeric: '583', - altName: 'Micronesia, Federated States of', - shortName: 'Micronesia', - }, - { - name: 'Moldova (the Republic of)', - alpha2: 'MD', - alpha3: 'MDA', - numeric: '498', - altName: 'Moldova', - }, - { - name: 'Monaco', - alpha2: 'MC', - alpha3: 'MCO', - numeric: '492', - }, - { - name: 'Mongolia', - alpha2: 'MN', - alpha3: 'MNG', - numeric: '496', - }, - { - name: 'Montenegro', - alpha2: 'ME', - alpha3: 'MNE', - numeric: '499', - }, - { - name: 'Montserrat', - alpha2: 'MS', - alpha3: 'MSR', - numeric: '500', - }, - { - name: 'Morocco', - alpha2: 'MA', - alpha3: 'MAR', - numeric: '504', - }, - { - name: 'Mozambique', - alpha2: 'MZ', - alpha3: 'MOZ', - numeric: '508', - }, - { - name: 'Myanmar', - alpha2: 'MM', - alpha3: 'MMR', - numeric: '104', - }, - { - name: 'Namibia', - alpha2: 'NA', - alpha3: 'NAM', - numeric: '516', - }, - { - name: 'Nauru', - alpha2: 'NR', - alpha3: 'NRU', - numeric: '520', - }, - { - name: 'Nepal', - alpha2: 'NP', - alpha3: 'NPL', - numeric: '524', - }, - { - name: 'Netherlands (the)', - alpha2: 'NL', - alpha3: 'NLD', - numeric: '528', - altName: 'Netherlands', - }, - { - name: 'New Caledonia', - alpha2: 'NC', - alpha3: 'NCL', - numeric: '540', - }, - { - name: 'New Zealand', - alpha2: 'NZ', - alpha3: 'NZL', - numeric: '554', - }, - { - name: 'Nicaragua', - alpha2: 'NI', - alpha3: 'NIC', - numeric: '558', - }, - { - name: 'Niger (the)', - alpha2: 'NE', - alpha3: 'NER', - numeric: '562', - altName: 'Niger', - }, - { - name: 'Nigeria', - alpha2: 'NG', - alpha3: 'NGA', - numeric: '566', - }, - { - name: 'Niue', - alpha2: 'NU', - alpha3: 'NIU', - numeric: '570', - }, - { - name: 'Norfolk Island', - alpha2: 'NF', - alpha3: 'NFK', - numeric: '574', - }, - { - name: 'Northern Mariana Islands (the)', - alpha2: 'MP', - alpha3: 'MNP', - numeric: '580', - altName: 'Northern Mariana Islands', - }, - { - name: 'Norway', - alpha2: 'NO', - alpha3: 'NOR', - numeric: '578', - }, - { - name: 'Oman', - alpha2: 'OM', - alpha3: 'OMN', - numeric: '512', - }, - { - name: 'Pakistan', - alpha2: 'PK', - alpha3: 'PAK', - numeric: '586', - }, - { - name: 'Palau', - alpha2: 'PW', - alpha3: 'PLW', - numeric: '585', - }, - { - name: 'Palestine, State of', - alpha2: 'PS', - alpha3: 'PSE', - numeric: '275', - altName: 'Palestinian Territory', - shortName: 'Palestine', - }, - { - name: 'Panama', - alpha2: 'PA', - alpha3: 'PAN', - numeric: '591', - }, - { - name: 'Papua New Guinea', - alpha2: 'PG', - alpha3: 'PNG', - numeric: '598', - }, - { - name: 'Paraguay', - alpha2: 'PY', - alpha3: 'PRY', - numeric: '600', - }, - { - name: 'Peru', - alpha2: 'PE', - alpha3: 'PER', - numeric: '604', - }, - { - name: 'Philippines (the)', - alpha2: 'PH', - alpha3: 'PHL', - numeric: '608', - altName: 'Philippines', - }, - { - name: 'Pitcairn', - alpha2: 'PN', - alpha3: 'PCN', - numeric: '612', - }, - { - name: 'Poland', - alpha2: 'PL', - alpha3: 'POL', - numeric: '616', - }, - { - name: 'Portugal', - alpha2: 'PT', - alpha3: 'PRT', - numeric: '620', - }, - { - name: 'Puerto Rico', - alpha2: 'PR', - alpha3: 'PRI', - numeric: '630', - }, - { - name: 'Qatar', - alpha2: 'QA', - alpha3: 'QAT', - numeric: '634', - }, - { - name: 'Réunion', - alpha2: 'RE', - alpha3: 'REU', - numeric: '638', - shortName: 'Reunion', - }, - { - name: 'Romania', - alpha2: 'RO', - alpha3: 'ROU', - numeric: '642', - }, - { - name: 'Russian Federation (the)', - alpha2: 'RU', - alpha3: 'RUS', - numeric: '643', - altName: 'Russian Federation', - shortName: 'Russia', - }, - { - name: 'Rwanda', - alpha2: 'RW', - alpha3: 'RWA', - numeric: '646', - }, - { - name: 'Saint Barthélemy', - alpha2: 'BL', - alpha3: 'BLM', - numeric: '652', - altName: 'Saint-Barthélemy', - shortName: 'Saint Barthelemy', - }, - { - name: 'Saint Helena, Ascension and Tristan da Cunha', - alpha2: 'SH', - alpha3: 'SHN', - numeric: '654', - altName: 'Saint Helena', - }, - { - name: 'Saint Kitts and Nevis', - alpha2: 'KN', - alpha3: 'KNA', - numeric: '659', - }, - { - name: 'Saint Lucia', - alpha2: 'LC', - alpha3: 'LCA', - numeric: '662', - }, - { - name: 'Saint Martin (French part)', - alpha2: 'MF', - alpha3: 'MAF', - numeric: '663', - altName: 'Saint-Martin (French part)', - shortName: 'Saint Martin', - }, - { - name: 'Saint Pierre and Miquelon', - alpha2: 'PM', - alpha3: 'SPM', - numeric: '666', - }, - { - name: 'Saint Vincent and the Grenadines', - alpha2: 'VC', - alpha3: 'VCT', - numeric: '670', - altName: 'Saint Vincent and Grenadines', - }, - { - name: 'Samoa', - alpha2: 'WS', - alpha3: 'WSM', - numeric: '882', - }, - { - name: 'San Marino', - alpha2: 'SM', - alpha3: 'SMR', - numeric: '674', - }, - { - name: 'Sao Tome and Principe', - alpha2: 'ST', - alpha3: 'STP', - numeric: '678', - }, - { - name: 'Saudi Arabia', - alpha2: 'SA', - alpha3: 'SAU', - numeric: '682', - }, - { - name: 'Senegal', - alpha2: 'SN', - alpha3: 'SEN', - numeric: '686', - }, - { - name: 'Serbia', - alpha2: 'RS', - alpha3: 'SRB', - numeric: '688', - }, - { - name: 'Seychelles', - alpha2: 'SC', - alpha3: 'SYC', - numeric: '690', - }, - { - name: 'Sierra Leone', - alpha2: 'SL', - alpha3: 'SLE', - numeric: '694', - }, - { - name: 'Singapore', - alpha2: 'SG', - alpha3: 'SGP', - numeric: '702', - }, - { - name: 'Sint Maarten (Dutch part)', - alpha2: 'SX', - alpha3: 'SXM', - numeric: '534', - shortName: 'Sint Maarten', - }, - { - name: 'Slovakia', - alpha2: 'SK', - alpha3: 'SVK', - numeric: '703', - }, - { - name: 'Slovenia', - alpha2: 'SI', - alpha3: 'SVN', - numeric: '705', - }, - { - name: 'Solomon Islands', - alpha2: 'SB', - alpha3: 'SLB', - numeric: '090', - }, - { - name: 'Somalia', - alpha2: 'SO', - alpha3: 'SOM', - numeric: '706', - }, - { - name: 'South Africa', - alpha2: 'ZA', - alpha3: 'ZAF', - numeric: '710', - }, - { - name: 'South Georgia and the South Sandwich Islands', - alpha2: 'GS', - alpha3: 'SGS', - numeric: '239', - }, - { - name: 'South Sudan', - alpha2: 'SS', - alpha3: 'SSD', - numeric: '728', - }, - { - name: 'Spain', - alpha2: 'ES', - alpha3: 'ESP', - numeric: '724', - }, - { - name: 'Sri Lanka', - alpha2: 'LK', - alpha3: 'LKA', - numeric: '144', - }, - { - name: 'Sudan (the)', - alpha2: 'SD', - alpha3: 'SDN', - numeric: '729', - altName: 'Sudan', - }, - { - name: 'Suriname', - alpha2: 'SR', - alpha3: 'SUR', - numeric: '740', - }, - { - name: 'Svalbard and Jan Mayen', - alpha2: 'SJ', - alpha3: 'SJM', - numeric: '744', - altName: 'Svalbard and Jan Mayen Islands', - }, - { - name: 'Swaziland', - alpha2: 'SZ', - alpha3: 'SWZ', - numeric: '748', - }, - { - name: 'Sweden', - alpha2: 'SE', - alpha3: 'SWE', - numeric: '752', - }, - { - name: 'Switzerland', - alpha2: 'CH', - alpha3: 'CHE', - numeric: '756', - }, - { - name: 'Syrian Arab Republic', - alpha2: 'SY', - alpha3: 'SYR', - numeric: '760', - altName: 'Syrian Arab Republic (Syria)', - shortName: 'Syria', - }, - { - name: 'Taiwan (Province of China)', - alpha2: 'TW', - alpha3: 'TWN', - numeric: '158', - altName: 'Taiwan, Republic of China', - shortName: 'Taiwan', - }, - { - name: 'Tajikistan', - alpha2: 'TJ', - alpha3: 'TJK', - numeric: '762', - }, - { - name: 'Tanzania, United Republic of', - alpha2: 'TZ', - alpha3: 'TZA', - numeric: '834', - shortName: 'Tanzania', - }, - { - name: 'Thailand', - alpha2: 'TH', - alpha3: 'THA', - numeric: '764', - }, - { - name: 'Timor-Leste', - alpha2: 'TL', - alpha3: 'TLS', - numeric: '626', - shortName: 'East Timor', - }, - { - name: 'Togo', - alpha2: 'TG', - alpha3: 'TGO', - numeric: '768', - }, - { - name: 'Tokelau', - alpha2: 'TK', - alpha3: 'TKL', - numeric: '772', - }, - { - name: 'Tonga', - alpha2: 'TO', - alpha3: 'TON', - numeric: '776', - }, - { - name: 'Trinidad and Tobago', - alpha2: 'TT', - alpha3: 'TTO', - numeric: '780', - }, - { - name: 'Tunisia', - alpha2: 'TN', - alpha3: 'TUN', - numeric: '788', - }, - { - name: 'Turkey', - alpha2: 'TR', - alpha3: 'TUR', - numeric: '792', - }, - { - name: 'Turkmenistan', - alpha2: 'TM', - alpha3: 'TKM', - numeric: '795', - }, - { - name: 'Turks and Caicos Islands (the)', - alpha2: 'TC', - alpha3: 'TCA', - numeric: '796', - altName: 'Turks and Caicos Islands', - }, - { - name: 'Tuvalu', - alpha2: 'TV', - alpha3: 'TUV', - numeric: '798', - }, - { - name: 'Uganda', - alpha2: 'UG', - alpha3: 'UGA', - numeric: '800', - }, - { - name: 'Ukraine', - alpha2: 'UA', - alpha3: 'UKR', - numeric: '804', - }, - { - name: 'United Arab Emirates (the)', - alpha2: 'AE', - alpha3: 'ARE', - numeric: '784', - altName: 'United Arab Emirates', - }, - { - name: 'United Kingdom of Great Britain and Northern Ireland (the)', - alpha2: 'GB', - alpha3: 'GBR', - numeric: '826', - altName: 'United Kingdom', - }, - { - name: 'United States Minor Outlying Islands (the)', - alpha2: 'UM', - alpha3: 'UMI', - numeric: '581', - altName: 'US Minor Outlying Islands', - }, - { - name: 'United States of America (the)', - alpha2: 'US', - alpha3: 'USA', - numeric: '840', - altName: 'United States of America', - shortName: 'United States', - }, - { - name: 'Uruguay', - alpha2: 'UY', - alpha3: 'URY', - numeric: '858', - }, - { - name: 'Uzbekistan', - alpha2: 'UZ', - alpha3: 'UZB', - numeric: '860', - }, - { - name: 'Vanuatu', - alpha2: 'VU', - alpha3: 'VUT', - numeric: '548', - }, - { - name: 'Venezuela (Bolivarian Republic of)', - alpha2: 'VE', - alpha3: 'VEN', - numeric: '862', - altName: 'Venezuela (Bolivarian Republic)', - shortName: 'Venezuela', - }, - { - name: 'Viet Nam', - alpha2: 'VN', - alpha3: 'VNM', - numeric: '704', - shortName: 'Vietnam', - }, - { - name: 'Virgin Islands (British)', - alpha2: 'VG', - alpha3: 'VGB', - numeric: '092', - altName: 'British Virgin Islands', - }, - { - name: 'Virgin Islands (U.S.)', - alpha2: 'VI', - alpha3: 'VIR', - numeric: '850', - altName: 'Virgin Islands, US', - shortName: 'U.S. Virgin Islands', - }, - { - name: 'Wallis and Futuna', - alpha2: 'WF', - alpha3: 'WLF', - numeric: '876', - altName: 'Wallis and Futuna Islands', - }, - { - name: 'Western Sahara*', - alpha2: 'EH', - alpha3: 'ESH', - numeric: '732', - altName: 'Western Sahara', - }, - { - name: 'Yemen', - alpha2: 'YE', - alpha3: 'YEM', - numeric: '887', - }, - { - name: 'Zambia', - alpha2: 'ZM', - alpha3: 'ZMB', - numeric: '894', - }, - { - name: 'Zimbabwe', - alpha2: 'ZW', - alpha3: 'ZWE', - numeric: '716', - }, -]; diff --git a/packages/nodes-base/nodes/HelpScout/CustomerDescription.ts b/packages/nodes-base/nodes/HelpScout/CustomerDescription.ts index b22c6e5092..59d3073f25 100644 --- a/packages/nodes-base/nodes/HelpScout/CustomerDescription.ts +++ b/packages/nodes-base/nodes/HelpScout/CustomerDescription.ts @@ -206,7 +206,7 @@ export const customerFields: INodeProperties[] = [ name: 'country', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getCountriesCodes', }, @@ -566,7 +566,7 @@ export const customerFields: INodeProperties[] = [ displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, displayOptions: { show: { diff --git a/packages/nodes-base/nodes/HelpScout/HelpScout.node.json b/packages/nodes-base/nodes/HelpScout/HelpScout.node.json index 2d91e510e4..d5fb07e8c9 100644 --- a/packages/nodes-base/nodes/HelpScout/HelpScout.node.json +++ b/packages/nodes-base/nodes/HelpScout/HelpScout.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/helpScout" + "url": "https://docs.n8n.io/integrations/builtin/credentials/helpScout/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/HelpScout/HelpScout.node.ts b/packages/nodes-base/nodes/HelpScout/HelpScout.node.ts index 69284961dd..cd94986b7d 100644 --- a/packages/nodes-base/nodes/HelpScout/HelpScout.node.ts +++ b/packages/nodes-base/nodes/HelpScout/HelpScout.node.ts @@ -8,9 +8,7 @@ import type { INodeType, INodeTypeDescription, } from 'n8n-workflow'; -import { NodeOperationError } from 'n8n-workflow'; - -import { countriesCodes } from './CountriesCodes'; +import { NodeConnectionType, NodeOperationError } from 'n8n-workflow'; import { conversationFields, conversationOperations } from './ConversationDescription'; @@ -27,6 +25,7 @@ import { mailboxFields, mailboxOperations } from './MailboxDescription'; import { threadFields, threadOperations } from './ThreadDescription'; import type { IAttachment, IThread } from './ThreadInterface'; +import { isoCountryCodes } from '@utils/ISOCountryCodes'; export class HelpScout implements INodeType { description: INodeTypeDescription = { @@ -40,8 +39,8 @@ export class HelpScout implements INodeType { defaults: { name: 'HelpScout', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'helpScoutOAuth2Api', @@ -91,7 +90,7 @@ export class HelpScout implements INodeType { // select them easily async getCountriesCodes(this: ILoadOptionsFunctions): Promise { const returnData: INodePropertyOptions[] = []; - for (const countryCode of countriesCodes) { + for (const countryCode of isoCountryCodes) { const countryCodeName = `${countryCode.name} - ${countryCode.alpha2}`; const countryCodeId = countryCode.alpha2; returnData.push({ @@ -459,6 +458,13 @@ export class HelpScout implements INodeType { const text = this.getNodeParameter('text', i) as string; const additionalFields = this.getNodeParameter('additionalFields', i); const attachments = this.getNodeParameter('attachmentsUi', i) as IDataObject; + let threadType = this.getNodeParameter('type', i) as string; + + // We need to update the types to match the API - Avoids a breaking change + const singular = ['reply', 'customer']; + if (!singular.includes(threadType)) { + threadType = `${threadType}s`; + } const body: IThread = { text, attachments: [], @@ -527,7 +533,7 @@ export class HelpScout implements INodeType { responseData = await helpscoutApiRequest.call( this, 'POST', - `/v2/conversations/${conversationId}/chats`, + `/v2/conversations/${conversationId}/${threadType}`, body, ); responseData = { success: true }; @@ -558,7 +564,7 @@ export class HelpScout implements INodeType { } } } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { const executionErrorData = this.helpers.constructExecutionMetaData( this.helpers.returnJsonArray({ error: error.message }), { itemData: { item: i } }, diff --git a/packages/nodes-base/nodes/HelpScout/HelpScoutTrigger.node.json b/packages/nodes-base/nodes/HelpScout/HelpScoutTrigger.node.json index a7452ce508..7e4ce6b1fa 100644 --- a/packages/nodes-base/nodes/HelpScout/HelpScoutTrigger.node.json +++ b/packages/nodes-base/nodes/HelpScout/HelpScoutTrigger.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/helpScout" + "url": "https://docs.n8n.io/integrations/builtin/credentials/helpScout/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/HelpScout/HelpScoutTrigger.node.ts b/packages/nodes-base/nodes/HelpScout/HelpScoutTrigger.node.ts index e64ca604af..4f56e47f09 100644 --- a/packages/nodes-base/nodes/HelpScout/HelpScoutTrigger.node.ts +++ b/packages/nodes-base/nodes/HelpScout/HelpScoutTrigger.node.ts @@ -7,7 +7,7 @@ import type { INodeTypeDescription, IWebhookResponseData, } from 'n8n-workflow'; -import { randomString } from 'n8n-workflow'; +import { NodeConnectionType, randomString } from 'n8n-workflow'; import { helpscoutApiRequest, helpscoutApiRequestAllItems } from './GenericFunctions'; @@ -23,7 +23,7 @@ export class HelpScoutTrigger implements INodeType { name: 'HelpScout Trigger', }, inputs: [], - outputs: ['main'], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'helpScoutOAuth2Api', diff --git a/packages/nodes-base/nodes/HighLevel/HighLevel.node.json b/packages/nodes-base/nodes/HighLevel/HighLevel.node.json index 305d966ca1..e675978196 100644 --- a/packages/nodes-base/nodes/HighLevel/HighLevel.node.json +++ b/packages/nodes-base/nodes/HighLevel/HighLevel.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/highLevel" + "url": "https://docs.n8n.io/integrations/builtin/credentials/highLevel/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/HighLevel/v1/HighLevelV1.node.ts b/packages/nodes-base/nodes/HighLevel/v1/HighLevelV1.node.ts index 2fb5bc2520..f176781e22 100644 --- a/packages/nodes-base/nodes/HighLevel/v1/HighLevelV1.node.ts +++ b/packages/nodes-base/nodes/HighLevel/v1/HighLevelV1.node.ts @@ -1,10 +1,10 @@ -/* eslint-disable n8n-nodes-base/node-filename-against-convention */ import type { INodeProperties, INodeType, INodeTypeBaseDescription, INodeTypeDescription, } from 'n8n-workflow'; +import { NodeConnectionType } from 'n8n-workflow'; import { contactFields, contactNotes, contactOperations } from './description/ContactDescription'; import { opportunityFields, opportunityOperations } from './description/OpportunityDescription'; @@ -52,8 +52,8 @@ const versionDescription: INodeTypeDescription = { defaults: { name: 'HighLevel', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'highLevelApi', diff --git a/packages/nodes-base/nodes/HighLevel/v1/description/ContactDescription.ts b/packages/nodes-base/nodes/HighLevel/v1/description/ContactDescription.ts index bd9e84a4fb..d76ce3f402 100644 --- a/packages/nodes-base/nodes/HighLevel/v1/description/ContactDescription.ts +++ b/packages/nodes-base/nodes/HighLevel/v1/description/ContactDescription.ts @@ -180,7 +180,7 @@ const customFields: INodeProperties = { required: true, default: '', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptions: { routing: { @@ -422,7 +422,7 @@ const createProperties: INodeProperties[] = [ type: 'options', default: '', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getTimezones', }, @@ -625,7 +625,7 @@ const updateProperties: INodeProperties[] = [ type: 'options', default: '', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getTimezones', }, @@ -757,7 +757,7 @@ const getAllProperties: INodeProperties[] = [ displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, displayOptions: { show: { diff --git a/packages/nodes-base/nodes/HighLevel/v1/description/OpportunityDescription.ts b/packages/nodes-base/nodes/HighLevel/v1/description/OpportunityDescription.ts index 05b8235195..12c86911d3 100644 --- a/packages/nodes-base/nodes/HighLevel/v1/description/OpportunityDescription.ts +++ b/packages/nodes-base/nodes/HighLevel/v1/description/OpportunityDescription.ts @@ -109,7 +109,7 @@ const pipelineId: INodeProperties = { }, }, description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptions: { routing: { @@ -153,7 +153,7 @@ const createProperties: INodeProperties[] = [ type: 'options', required: true, description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', displayOptions: { show: { resource: ['opportunity'], @@ -269,7 +269,7 @@ const createProperties: INodeProperties[] = [ default: '', // eslint-disable-next-line n8n-nodes-base/node-param-description-wrong-for-dynamic-options description: - 'Choose staff member from the list, or specify an ID using an expression', + 'Choose staff member from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getUsers', }, @@ -427,7 +427,7 @@ const getAllProperties: INodeProperties[] = [ default: '', // eslint-disable-next-line n8n-nodes-base/node-param-description-wrong-for-dynamic-options description: - 'Choose staff member from the list, or specify an ID using an expression', + 'Choose staff member from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getUsers', }, @@ -482,7 +482,7 @@ const getAllProperties: INodeProperties[] = [ type: 'options', default: '', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsDependsOn: ['pipelineId'], loadOptionsMethod: 'getPipelineStages', @@ -591,7 +591,7 @@ const updateProperties: INodeProperties[] = [ default: '', // eslint-disable-next-line n8n-nodes-base/node-param-description-wrong-for-dynamic-options description: - 'Choose staff member from the list, or specify an ID using an expression', + 'Choose staff member from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getUsers', }, @@ -659,7 +659,7 @@ const updateProperties: INodeProperties[] = [ type: 'options', default: '', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsDependsOn: ['pipelineId'], loadOptionsMethod: 'getPipelineStages', diff --git a/packages/nodes-base/nodes/HighLevel/v1/description/TaskDescription.ts b/packages/nodes-base/nodes/HighLevel/v1/description/TaskDescription.ts index 5704cbdfa4..601423f158 100644 --- a/packages/nodes-base/nodes/HighLevel/v1/description/TaskDescription.ts +++ b/packages/nodes-base/nodes/HighLevel/v1/description/TaskDescription.ts @@ -185,7 +185,7 @@ const createProperties: INodeProperties[] = [ type: 'options', default: '', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getUsers', }, @@ -396,7 +396,7 @@ const updateProperties: INodeProperties[] = [ type: 'options', default: '', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getUsers', }, diff --git a/packages/nodes-base/nodes/HighLevel/v2/HighLevelV2.node.ts b/packages/nodes-base/nodes/HighLevel/v2/HighLevelV2.node.ts index 8b22237076..cb596319f9 100644 --- a/packages/nodes-base/nodes/HighLevel/v2/HighLevelV2.node.ts +++ b/packages/nodes-base/nodes/HighLevel/v2/HighLevelV2.node.ts @@ -1,10 +1,10 @@ -/* eslint-disable n8n-nodes-base/node-filename-against-convention */ import type { INodeProperties, INodeType, INodeTypeBaseDescription, INodeTypeDescription, } from 'n8n-workflow'; +import { NodeConnectionType } from 'n8n-workflow'; import { contactFields, contactNotes, contactOperations } from './description/ContactDescription'; import { opportunityFields, opportunityOperations } from './description/OpportunityDescription'; @@ -54,8 +54,8 @@ const versionDescription: INodeTypeDescription = { defaults: { name: 'HighLevel', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'highLevelOAuth2Api', diff --git a/packages/nodes-base/nodes/HighLevel/v2/description/ContactDescription.ts b/packages/nodes-base/nodes/HighLevel/v2/description/ContactDescription.ts index 60122e192b..f3f7bc8e98 100644 --- a/packages/nodes-base/nodes/HighLevel/v2/description/ContactDescription.ts +++ b/packages/nodes-base/nodes/HighLevel/v2/description/ContactDescription.ts @@ -168,7 +168,7 @@ const customFields: INodeProperties = { required: true, default: '', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptions: { routing: { @@ -410,7 +410,7 @@ const createProperties: INodeProperties[] = [ type: 'options', default: '', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getTimezones', }, @@ -613,7 +613,7 @@ const updateProperties: INodeProperties[] = [ type: 'options', default: '', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getTimezones', }, @@ -746,7 +746,7 @@ const getAllProperties: INodeProperties[] = [ displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, displayOptions: { show: { diff --git a/packages/nodes-base/nodes/HighLevel/v2/description/OpportunityDescription.ts b/packages/nodes-base/nodes/HighLevel/v2/description/OpportunityDescription.ts index debac10216..b9d7860b7e 100644 --- a/packages/nodes-base/nodes/HighLevel/v2/description/OpportunityDescription.ts +++ b/packages/nodes-base/nodes/HighLevel/v2/description/OpportunityDescription.ts @@ -106,7 +106,7 @@ const pipelineId: INodeProperties = { }, }, description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getPipelines', }, @@ -127,7 +127,7 @@ const createProperties: INodeProperties[] = [ required: true, type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', hint: 'There can only be one opportunity for each contact', displayOptions: { show: { @@ -222,7 +222,7 @@ const createProperties: INodeProperties[] = [ type: 'options', default: '', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getUsers', }, @@ -276,7 +276,7 @@ const createProperties: INodeProperties[] = [ name: 'stageId', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', default: '', typeOptions: { @@ -384,7 +384,7 @@ const getAllProperties: INodeProperties[] = [ type: 'options', default: '', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getUsers', }, @@ -425,7 +425,7 @@ const getAllProperties: INodeProperties[] = [ name: 'pipelineId', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getPipelines', }, @@ -443,7 +443,7 @@ const getAllProperties: INodeProperties[] = [ type: 'options', default: '', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', hint: "Select 'Pipeline Name or ID' first to see stages", typeOptions: { loadOptionsDependsOn: ['pipelineId'], @@ -552,7 +552,7 @@ const updateProperties: INodeProperties[] = [ type: 'options', default: '', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getUsers', }, @@ -594,7 +594,7 @@ const updateProperties: INodeProperties[] = [ name: 'pipelineId', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getPipelines', }, @@ -612,7 +612,7 @@ const updateProperties: INodeProperties[] = [ type: 'options', default: '', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', hint: "Select 'Pipeline Name or ID' first to see stages", typeOptions: { loadOptionsDependsOn: ['pipelineId'], diff --git a/packages/nodes-base/nodes/HighLevel/v2/description/TaskDescription.ts b/packages/nodes-base/nodes/HighLevel/v2/description/TaskDescription.ts index 599c583a7c..3869d1e326 100644 --- a/packages/nodes-base/nodes/HighLevel/v2/description/TaskDescription.ts +++ b/packages/nodes-base/nodes/HighLevel/v2/description/TaskDescription.ts @@ -129,7 +129,7 @@ const createProperties: INodeProperties[] = [ default: '', required: true, description: - 'Contact the task belongs to. Choose from the list, or specify an ID using an expression.', + 'Contact the task belongs to. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Title', @@ -209,7 +209,7 @@ const createProperties: INodeProperties[] = [ type: 'options', default: '', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getUsers', }, @@ -254,7 +254,7 @@ const deleteProperties: INodeProperties[] = [ default: '', required: true, description: - 'Contact the task belongs to. Choose from the list, or specify an ID using an expression.', + 'Contact the task belongs to. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Task ID', @@ -289,7 +289,7 @@ const getProperties: INodeProperties[] = [ default: '', required: true, description: - 'Contact the task belongs to. Choose from the list, or specify an ID using an expression.', + 'Contact the task belongs to. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Task ID', @@ -324,7 +324,7 @@ const getAllProperties: INodeProperties[] = [ default: '', required: true, description: - 'Contact the task belongs to. Choose from the list, or specify an ID using an expression.', + 'Contact the task belongs to. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Return All', @@ -383,7 +383,7 @@ const updateProperties: INodeProperties[] = [ default: '', required: true, description: - 'Contact the task belongs to. Choose from the list, or specify an ID using an expression.', + 'Contact the task belongs to. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Task ID', @@ -418,7 +418,7 @@ const updateProperties: INodeProperties[] = [ type: 'options', default: '', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getUsers', }, diff --git a/packages/nodes-base/nodes/HomeAssistant/CameraProxyDescription.ts b/packages/nodes-base/nodes/HomeAssistant/CameraProxyDescription.ts index 540a4af70d..224b5e0b08 100644 --- a/packages/nodes-base/nodes/HomeAssistant/CameraProxyDescription.ts +++ b/packages/nodes-base/nodes/HomeAssistant/CameraProxyDescription.ts @@ -32,7 +32,7 @@ export const cameraProxyFields: INodeProperties[] = [ name: 'cameraEntityId', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getCameraEntities', }, diff --git a/packages/nodes-base/nodes/HomeAssistant/HomeAssistant.node.json b/packages/nodes-base/nodes/HomeAssistant/HomeAssistant.node.json index 67759bb5b8..a1b89796f0 100644 --- a/packages/nodes-base/nodes/HomeAssistant/HomeAssistant.node.json +++ b/packages/nodes-base/nodes/HomeAssistant/HomeAssistant.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/homeAssistant" + "url": "https://docs.n8n.io/integrations/builtin/credentials/homeAssistant/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/HomeAssistant/HomeAssistant.node.ts b/packages/nodes-base/nodes/HomeAssistant/HomeAssistant.node.ts index 923f14713c..ef8ad0990d 100644 --- a/packages/nodes-base/nodes/HomeAssistant/HomeAssistant.node.ts +++ b/packages/nodes-base/nodes/HomeAssistant/HomeAssistant.node.ts @@ -1,14 +1,15 @@ -import type { - IExecuteFunctions, - ICredentialsDecrypted, - ICredentialTestFunctions, - IDataObject, - ILoadOptionsFunctions, - INodeCredentialTestResult, - INodeExecutionData, - INodePropertyOptions, - INodeType, - INodeTypeDescription, +import { + type IExecuteFunctions, + type ICredentialsDecrypted, + type ICredentialTestFunctions, + type IDataObject, + type ILoadOptionsFunctions, + type INodeCredentialTestResult, + type INodeExecutionData, + type INodePropertyOptions, + type INodeType, + type INodeTypeDescription, + NodeConnectionType, } from 'n8n-workflow'; import { configOperations } from './ConfigDescription'; @@ -45,8 +46,8 @@ export class HomeAssistant implements INodeType { defaults: { name: 'Home Assistant', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'homeAssistantApi', @@ -437,7 +438,7 @@ export class HomeAssistant implements INodeType { } } } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { if (resource === 'cameraProxy' && operation === 'get') { items[i].json = { error: error.message }; } else { diff --git a/packages/nodes-base/nodes/HomeAssistant/ServiceDescription.ts b/packages/nodes-base/nodes/HomeAssistant/ServiceDescription.ts index 51e53f020a..5028e2369d 100644 --- a/packages/nodes-base/nodes/HomeAssistant/ServiceDescription.ts +++ b/packages/nodes-base/nodes/HomeAssistant/ServiceDescription.ts @@ -73,7 +73,7 @@ export const serviceFields: INodeProperties[] = [ name: 'domain', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getDomains', }, @@ -91,7 +91,7 @@ export const serviceFields: INodeProperties[] = [ name: 'service', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsDependsOn: ['domain'], loadOptionsMethod: 'getDomainServices', diff --git a/packages/nodes-base/nodes/HomeAssistant/StateDescription.ts b/packages/nodes-base/nodes/HomeAssistant/StateDescription.ts index d6b1f5eff2..973092bd99 100644 --- a/packages/nodes-base/nodes/HomeAssistant/StateDescription.ts +++ b/packages/nodes-base/nodes/HomeAssistant/StateDescription.ts @@ -44,7 +44,7 @@ export const stateFields: INodeProperties[] = [ name: 'entityId', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getAllEntities', }, @@ -112,7 +112,7 @@ export const stateFields: INodeProperties[] = [ required: true, default: '', description: - 'The entity ID for which a state will be created. Choose from the list, or specify an ID using an expression.', + 'The entity ID for which a state will be created. Choose from the list, or specify an ID using an expression.', }, { displayName: 'State', diff --git a/packages/nodes-base/nodes/Html/Html.node.ts b/packages/nodes-base/nodes/Html/Html.node.ts index 260f7ffaf1..3d5814244e 100644 --- a/packages/nodes-base/nodes/Html/Html.node.ts +++ b/packages/nodes-base/nodes/Html/Html.node.ts @@ -7,7 +7,7 @@ import type { IDataObject, INodeProperties, } from 'n8n-workflow'; -import { NodeOperationError } from 'n8n-workflow'; +import { NodeConnectionType, NodeOperationError } from 'n8n-workflow'; import get from 'lodash/get'; import { placeholder } from './placeholder'; import { getValue } from './utils'; @@ -133,8 +133,8 @@ export class Html implements INodeType { defaults: { name: 'HTML', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], parameterPane: 'wide', properties: [ { @@ -274,7 +274,7 @@ export class Html implements INodeType { displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, displayOptions: { show: { @@ -296,7 +296,7 @@ export class Html implements INodeType { type: 'boolean', default: true, description: - 'Whether to remove remove leading and trailing whitespaces, line breaks (newlines) and condense multiple consecutive whitespaces into a single space', + 'Whether to remove leading and trailing whitespaces, line breaks (newlines) and condense multiple consecutive whitespaces into a single space', }, ], }, @@ -307,7 +307,7 @@ export class Html implements INodeType { displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, displayOptions: { show: { @@ -588,7 +588,7 @@ export class Html implements INodeType { } } } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push({ json: { error: error.message, diff --git a/packages/nodes-base/nodes/HtmlExtract/HtmlExtract.node.ts b/packages/nodes-base/nodes/HtmlExtract/HtmlExtract.node.ts index 161c491dac..719c128a28 100644 --- a/packages/nodes-base/nodes/HtmlExtract/HtmlExtract.node.ts +++ b/packages/nodes-base/nodes/HtmlExtract/HtmlExtract.node.ts @@ -6,7 +6,7 @@ import type { INodeType, INodeTypeDescription, } from 'n8n-workflow'; -import { NodeOperationError } from 'n8n-workflow'; +import { NodeConnectionType, NodeOperationError } from 'n8n-workflow'; import get from 'lodash/get'; @@ -57,8 +57,8 @@ export class HtmlExtract implements INodeType { name: 'HTML Extract', color: '#333377', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], properties: [ { displayName: 'Source Data', @@ -192,7 +192,7 @@ export class HtmlExtract implements INodeType { displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, options: [ { @@ -283,7 +283,7 @@ export class HtmlExtract implements INodeType { returnData.push(newItem); } } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push({ json: { error: error.message, diff --git a/packages/nodes-base/nodes/HttpRequest/GenericFunctions.ts b/packages/nodes-base/nodes/HttpRequest/GenericFunctions.ts index a6994be255..c7ffe7451c 100644 --- a/packages/nodes-base/nodes/HttpRequest/GenericFunctions.ts +++ b/packages/nodes-base/nodes/HttpRequest/GenericFunctions.ts @@ -1,11 +1,12 @@ import type { SecureContextOptions } from 'tls'; -import type { - ICredentialDataDecryptedObject, - IDataObject, - INodeExecutionData, - INodeProperties, - IOAuth2Options, - IRequestOptions, +import { + deepCopy, + type ICredentialDataDecryptedObject, + type IDataObject, + type INodeExecutionData, + type INodeProperties, + type IOAuth2Options, + type IRequestOptions, } from 'n8n-workflow'; import set from 'lodash/set'; @@ -60,7 +61,12 @@ export function sanitizeUiMessage( authDataKeys: IAuthDataSanitizeKeys, secrets?: string[], ) { - let sendRequest = request as unknown as IDataObject; + const { body, ...rest } = request as IDataObject; + + let sendRequest: IDataObject = { body }; + for (const [key, value] of Object.entries(rest)) { + sendRequest[key] = deepCopy(value); + } // Protect browser from sending large binary data if (Buffer.isBuffer(sendRequest.body) && sendRequest.body.length > 250000) { @@ -88,7 +94,24 @@ export function sanitizeUiMessage( ), }; } + const HEADER_BLOCKLIST = new Set([ + 'authorization', + 'x-api-key', + 'x-auth-token', + 'cookie', + 'proxy-authorization', + 'sslclientcert', + ]); + const headers = sendRequest.headers as IDataObject; + + if (headers) { + for (const headerName of Object.keys(headers)) { + if (HEADER_BLOCKLIST.has(headerName.toLowerCase())) { + headers[headerName] = REDACTED; + } + } + } if (secrets && secrets.length > 0) { return redact(sendRequest, secrets); } diff --git a/packages/nodes-base/nodes/HttpRequest/V1/HttpRequestV1.node.ts b/packages/nodes-base/nodes/HttpRequest/V1/HttpRequestV1.node.ts index b0c5185373..740489f23c 100644 --- a/packages/nodes-base/nodes/HttpRequest/V1/HttpRequestV1.node.ts +++ b/packages/nodes-base/nodes/HttpRequest/V1/HttpRequestV1.node.ts @@ -11,7 +11,13 @@ import type { IHttpRequestMethods, IRequestOptions, } from 'n8n-workflow'; -import { NodeApiError, NodeOperationError, sleep, removeCircularRefs } from 'n8n-workflow'; +import { + NodeApiError, + NodeOperationError, + sleep, + removeCircularRefs, + NodeConnectionType, +} from 'n8n-workflow'; import type { IAuthDataSanitizeKeys } from '../GenericFunctions'; import { replaceNullValues, sanitizeUiMessage } from '../GenericFunctions'; @@ -37,8 +43,8 @@ export class HttpRequestV1 implements INodeType { name: 'HTTP Request', color: '#2200DD', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ // ---------------------------------- // v1 creds @@ -259,7 +265,7 @@ export class HttpRequestV1 implements INodeType { displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, options: [ { diff --git a/packages/nodes-base/nodes/HttpRequest/V2/HttpRequestV2.node.ts b/packages/nodes-base/nodes/HttpRequest/V2/HttpRequestV2.node.ts index 5b1b53af7f..1b08aeb096 100644 --- a/packages/nodes-base/nodes/HttpRequest/V2/HttpRequestV2.node.ts +++ b/packages/nodes-base/nodes/HttpRequest/V2/HttpRequestV2.node.ts @@ -11,7 +11,13 @@ import type { IRequestOptions, JsonObject, } from 'n8n-workflow'; -import { NodeApiError, NodeOperationError, sleep, removeCircularRefs } from 'n8n-workflow'; +import { + NodeApiError, + NodeOperationError, + sleep, + removeCircularRefs, + NodeConnectionType, +} from 'n8n-workflow'; import type { IAuthDataSanitizeKeys } from '../GenericFunctions'; import { @@ -41,8 +47,8 @@ export class HttpRequestV2 implements INodeType { color: '#2200DD', }, version: 2, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'httpBasicAuth', @@ -274,7 +280,7 @@ export class HttpRequestV2 implements INodeType { displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, options: [ { diff --git a/packages/nodes-base/nodes/HttpRequest/V3/Description.ts b/packages/nodes-base/nodes/HttpRequest/V3/Description.ts new file mode 100644 index 0000000000..827c8f32ea --- /dev/null +++ b/packages/nodes-base/nodes/HttpRequest/V3/Description.ts @@ -0,0 +1,1177 @@ +import type { INodeProperties } from 'n8n-workflow'; + +export const mainProperties: INodeProperties[] = [ + { + displayName: '', + name: 'curlImport', + type: 'curlImport', + default: '', + }, + { + displayName: 'Method', + name: 'method', + type: 'options', + options: [ + { + name: 'DELETE', + value: 'DELETE', + }, + { + name: 'GET', + value: 'GET', + }, + { + name: 'HEAD', + value: 'HEAD', + }, + { + name: 'OPTIONS', + value: 'OPTIONS', + }, + { + name: 'PATCH', + value: 'PATCH', + }, + { + name: 'POST', + value: 'POST', + }, + { + name: 'PUT', + value: 'PUT', + }, + ], + default: 'GET', + description: 'The request method to use', + }, + { + displayName: 'URL', + name: 'url', + type: 'string', + default: '', + placeholder: 'http://example.com/index.html', + description: 'The URL to make the request to', + required: true, + }, + { + displayName: 'Authentication', + name: 'authentication', + noDataExpression: true, + type: 'options', + options: [ + { + name: 'None', + value: 'none', + }, + { + name: 'Predefined Credential Type', + value: 'predefinedCredentialType', + description: + "We've already implemented auth for many services so that you don't have to set it up manually", + }, + { + name: 'Generic Credential Type', + value: 'genericCredentialType', + description: 'Fully customizable. Choose between basic, header, OAuth2, etc.', + }, + ], + default: 'none', + }, + { + displayName: 'Credential Type', + name: 'nodeCredentialType', + type: 'credentialsSelect', + noDataExpression: true, + required: true, + default: '', + credentialTypes: ['extends:oAuth2Api', 'extends:oAuth1Api', 'has:authenticate'], + displayOptions: { + show: { + authentication: ['predefinedCredentialType'], + }, + }, + }, + { + displayName: + 'Make sure you have specified the scope(s) for the Service Account in the credential', + name: 'googleApiWarning', + type: 'notice', + default: '', + displayOptions: { + show: { + nodeCredentialType: ['googleApi'], + }, + }, + }, + { + displayName: 'Generic Auth Type', + name: 'genericAuthType', + type: 'credentialsSelect', + required: true, + default: '', + credentialTypes: ['has:genericAuth'], + displayOptions: { + show: { + authentication: ['genericCredentialType'], + }, + }, + }, + { + displayName: 'SSL Certificates', + name: 'provideSslCertificates', + type: 'boolean', + default: false, + isNodeSetting: true, + }, + { + displayName: "Provide certificates in node's 'Credential for SSL Certificates' parameter", + name: 'provideSslCertificatesNotice', + type: 'notice', + default: '', + isNodeSetting: true, + displayOptions: { + show: { + provideSslCertificates: [true], + }, + }, + }, + { + displayName: 'SSL Certificate', + name: 'sslCertificate', + type: 'credentials', + default: '', + displayOptions: { + show: { + provideSslCertificates: [true], + }, + }, + }, + { + displayName: 'Send Query Parameters', + name: 'sendQuery', + type: 'boolean', + default: false, + noDataExpression: true, + description: 'Whether the request has query params or not', + }, + { + displayName: 'Specify Query Parameters', + name: 'specifyQuery', + type: 'options', + displayOptions: { + show: { + sendQuery: [true], + }, + }, + options: [ + { + name: 'Using Fields Below', + value: 'keypair', + }, + { + name: 'Using JSON', + value: 'json', + }, + ], + default: 'keypair', + }, + { + displayName: 'Query Parameters', + name: 'queryParameters', + type: 'fixedCollection', + displayOptions: { + show: { + sendQuery: [true], + specifyQuery: ['keypair'], + }, + }, + typeOptions: { + multipleValues: true, + }, + placeholder: 'Add Parameter', + default: { + parameters: [ + { + name: '', + value: '', + }, + ], + }, + options: [ + { + name: 'parameters', + displayName: 'Parameter', + values: [ + { + displayName: 'Name', + name: 'name', + type: 'string', + default: '', + }, + { + displayName: 'Value', + name: 'value', + type: 'string', + default: '', + }, + ], + }, + ], + }, + { + displayName: 'JSON', + name: 'jsonQuery', + type: 'json', + displayOptions: { + show: { + sendQuery: [true], + specifyQuery: ['json'], + }, + }, + default: '', + }, + { + displayName: 'Send Headers', + name: 'sendHeaders', + type: 'boolean', + default: false, + noDataExpression: true, + description: 'Whether the request has headers or not', + }, + { + displayName: 'Specify Headers', + name: 'specifyHeaders', + type: 'options', + displayOptions: { + show: { + sendHeaders: [true], + }, + }, + options: [ + { + name: 'Using Fields Below', + value: 'keypair', + }, + { + name: 'Using JSON', + value: 'json', + }, + ], + default: 'keypair', + }, + { + displayName: 'Header Parameters', + name: 'headerParameters', + type: 'fixedCollection', + displayOptions: { + show: { + sendHeaders: [true], + specifyHeaders: ['keypair'], + }, + }, + typeOptions: { + multipleValues: true, + }, + placeholder: 'Add Parameter', + default: { + parameters: [ + { + name: '', + value: '', + }, + ], + }, + options: [ + { + name: 'parameters', + displayName: 'Parameter', + values: [ + { + displayName: 'Name', + name: 'name', + type: 'string', + default: '', + }, + { + displayName: 'Value', + name: 'value', + type: 'string', + default: '', + }, + ], + }, + ], + }, + { + displayName: 'JSON', + name: 'jsonHeaders', + type: 'json', + displayOptions: { + show: { + sendHeaders: [true], + specifyHeaders: ['json'], + }, + }, + default: '', + }, + { + displayName: 'Send Body', + name: 'sendBody', + type: 'boolean', + default: false, + noDataExpression: true, + description: 'Whether the request has a body or not', + }, + { + displayName: 'Body Content Type', + name: 'contentType', + type: 'options', + displayOptions: { + show: { + sendBody: [true], + }, + }, + options: [ + { + name: 'Form Urlencoded', + value: 'form-urlencoded', + }, + { + name: 'Form-Data', + value: 'multipart-form-data', + }, + { + name: 'JSON', + value: 'json', + }, + { + // eslint-disable-next-line n8n-nodes-base/node-param-display-name-miscased + name: 'n8n Binary File', + value: 'binaryData', + }, + { + name: 'Raw', + value: 'raw', + }, + ], + default: 'json', + description: 'Content-Type to use to send body parameters', + }, + { + displayName: 'Specify Body', + name: 'specifyBody', + type: 'options', + displayOptions: { + show: { + sendBody: [true], + contentType: ['json'], + }, + }, + options: [ + { + name: 'Using Fields Below', + value: 'keypair', + }, + { + name: 'Using JSON', + value: 'json', + }, + ], + default: 'keypair', + // eslint-disable-next-line n8n-nodes-base/node-param-description-miscased-json + description: + 'The body can be specified using explicit fields (keypair) or using a JavaScript object (json)', + }, + { + displayName: 'Body Parameters', + name: 'bodyParameters', + type: 'fixedCollection', + displayOptions: { + show: { + sendBody: [true], + contentType: ['json'], + specifyBody: ['keypair'], + }, + }, + typeOptions: { + multipleValues: true, + }, + placeholder: 'Add Parameter', + default: { + parameters: [ + { + name: '', + value: '', + }, + ], + }, + options: [ + { + name: 'parameters', + displayName: 'Parameter', + values: [ + { + displayName: 'Name', + name: 'name', + type: 'string', + default: '', + description: + 'ID of the field to set. Choose from the list, or specify an ID using an expression.', + }, + { + displayName: 'Value', + name: 'value', + type: 'string', + default: '', + description: 'Value of the field to set', + }, + ], + }, + ], + }, + { + displayName: 'JSON', + name: 'jsonBody', + type: 'json', + displayOptions: { + show: { + sendBody: [true], + contentType: ['json'], + specifyBody: ['json'], + }, + }, + default: '', + }, + { + displayName: 'Body Parameters', + name: 'bodyParameters', + type: 'fixedCollection', + displayOptions: { + show: { + sendBody: [true], + contentType: ['multipart-form-data'], + }, + }, + typeOptions: { + multipleValues: true, + }, + placeholder: 'Add Parameter', + default: { + parameters: [ + { + name: '', + value: '', + }, + ], + }, + options: [ + { + name: 'parameters', + displayName: 'Parameter', + values: [ + { + displayName: 'Parameter Type', + name: 'parameterType', + type: 'options', + options: [ + { + // eslint-disable-next-line n8n-nodes-base/node-param-display-name-miscased + name: 'n8n Binary File', + value: 'formBinaryData', + }, + { + name: 'Form Data', + value: 'formData', + }, + ], + default: 'formData', + }, + { + displayName: 'Name', + name: 'name', + type: 'string', + default: '', + description: + 'ID of the field to set. Choose from the list, or specify an ID using an expression.', + }, + { + displayName: 'Value', + name: 'value', + type: 'string', + displayOptions: { + show: { + parameterType: ['formData'], + }, + }, + default: '', + description: 'Value of the field to set', + }, + { + displayName: 'Input Data Field Name', + name: 'inputDataFieldName', + type: 'string', + displayOptions: { + show: { + parameterType: ['formBinaryData'], + }, + }, + default: '', + description: + 'The name of the incoming field containing the binary file data to be processed', + }, + ], + }, + ], + }, + { + displayName: 'Specify Body', + name: 'specifyBody', + type: 'options', + displayOptions: { + show: { + sendBody: [true], + contentType: ['form-urlencoded'], + }, + }, + options: [ + { + name: 'Using Fields Below', + value: 'keypair', + }, + { + name: 'Using Single Field', + value: 'string', + }, + ], + default: 'keypair', + }, + { + displayName: 'Body Parameters', + name: 'bodyParameters', + type: 'fixedCollection', + displayOptions: { + show: { + sendBody: [true], + contentType: ['form-urlencoded'], + specifyBody: ['keypair'], + }, + }, + typeOptions: { + multipleValues: true, + }, + placeholder: 'Add Parameter', + default: { + parameters: [ + { + name: '', + value: '', + }, + ], + }, + options: [ + { + name: 'parameters', + displayName: 'Parameter', + values: [ + { + displayName: 'Name', + name: 'name', + type: 'string', + default: '', + description: + 'ID of the field to set. Choose from the list, or specify an ID using an expression.', + }, + { + displayName: 'Value', + name: 'value', + type: 'string', + default: '', + description: 'Value of the field to set', + }, + ], + }, + ], + }, + { + displayName: 'Body', + name: 'body', + type: 'string', + displayOptions: { + show: { + sendBody: [true], + specifyBody: ['string'], + }, + }, + default: '', + placeholder: 'field1=value1&field2=value2', + }, + { + displayName: 'Input Data Field Name', + name: 'inputDataFieldName', + type: 'string', + displayOptions: { + show: { + sendBody: [true], + contentType: ['binaryData'], + }, + }, + default: '', + description: 'The name of the incoming field containing the binary file data to be processed', + }, + { + displayName: 'Content Type', + name: 'rawContentType', + type: 'string', + displayOptions: { + show: { + sendBody: [true], + contentType: ['raw'], + }, + }, + default: '', + placeholder: 'text/html', + }, + { + displayName: 'Body', + name: 'body', + type: 'string', + displayOptions: { + show: { + sendBody: [true], + contentType: ['raw'], + }, + }, + default: '', + placeholder: '', + }, + { + displayName: 'Options', + name: 'options', + type: 'collection', + placeholder: 'Add option', + default: {}, + options: [ + { + displayName: 'Batching', + name: 'batching', + placeholder: 'Add Batching', + type: 'fixedCollection', + typeOptions: { + multipleValues: false, + }, + default: { + batch: {}, + }, + options: [ + { + displayName: 'Batching', + name: 'batch', + values: [ + { + displayName: 'Items per Batch', + name: 'batchSize', + type: 'number', + typeOptions: { + minValue: -1, + }, + default: 50, + description: + 'Input will be split in batches to throttle requests. -1 for disabled. 0 will be treated as 1.', + }, + { + // eslint-disable-next-line n8n-nodes-base/node-param-display-name-miscased + displayName: 'Batch Interval (ms)', + name: 'batchInterval', + type: 'number', + typeOptions: { + minValue: 0, + }, + default: 1000, + description: + 'Time (in milliseconds) between each batch of requests. 0 for disabled.', + }, + ], + }, + ], + }, + { + displayName: 'Ignore SSL Issues', + name: 'allowUnauthorizedCerts', + type: 'boolean', + noDataExpression: true, + default: false, + // eslint-disable-next-line n8n-nodes-base/node-param-description-wrong-for-ignore-ssl-issues + description: + 'Whether to download the response even if SSL certificate validation is not possible', + }, + { + displayName: 'Array Format in Query Parameters', + name: 'queryParameterArrays', + type: 'options', + displayOptions: { + show: { + '/sendQuery': [true], + }, + }, + options: [ + { + name: 'No Brackets', + value: 'repeat', + // eslint-disable-next-line n8n-nodes-base/node-param-description-lowercase-first-char + description: 'e.g. foo=bar&foo=qux', + }, + { + name: 'Brackets Only', + value: 'brackets', + // eslint-disable-next-line n8n-nodes-base/node-param-description-lowercase-first-char + description: 'e.g. foo[]=bar&foo[]=qux', + }, + { + name: 'Brackets with Indices', + value: 'indices', + // eslint-disable-next-line n8n-nodes-base/node-param-description-lowercase-first-char + description: 'e.g. foo[0]=bar&foo[1]=qux', + }, + ], + default: 'brackets', + }, + { + displayName: 'Lowercase Headers', + name: 'lowercaseHeaders', + type: 'boolean', + default: true, + description: 'Whether to lowercase header names', + }, + { + displayName: 'Redirects', + name: 'redirect', + placeholder: 'Add Redirect', + type: 'fixedCollection', + typeOptions: { + multipleValues: false, + }, + default: { redirect: {} }, + options: [ + { + displayName: 'Redirect', + name: 'redirect', + values: [ + { + displayName: 'Follow Redirects', + name: 'followRedirects', + type: 'boolean', + default: false, + noDataExpression: true, + description: 'Whether to follow all redirects', + }, + { + displayName: 'Max Redirects', + name: 'maxRedirects', + type: 'number', + displayOptions: { + show: { + followRedirects: [true], + }, + }, + default: 21, + description: 'Max number of redirects to follow', + }, + ], + }, + ], + displayOptions: { + show: { + '@version': [1, 2, 3], + }, + }, + }, + { + displayName: 'Redirects', + name: 'redirect', + placeholder: 'Add Redirect', + type: 'fixedCollection', + typeOptions: { + multipleValues: false, + }, + default: { + redirect: {}, + }, + options: [ + { + displayName: 'Redirect', + name: 'redirect', + values: [ + { + displayName: 'Follow Redirects', + name: 'followRedirects', + type: 'boolean', + default: true, + noDataExpression: true, + description: 'Whether to follow all redirects', + }, + { + displayName: 'Max Redirects', + name: 'maxRedirects', + type: 'number', + displayOptions: { + show: { + followRedirects: [true], + }, + }, + default: 21, + description: 'Max number of redirects to follow', + }, + ], + }, + ], + displayOptions: { + hide: { + '@version': [1, 2, 3], + }, + }, + }, + { + displayName: 'Response', + name: 'response', + placeholder: 'Add response', + type: 'fixedCollection', + typeOptions: { + multipleValues: false, + }, + default: { + response: {}, + }, + options: [ + { + displayName: 'Response', + name: 'response', + values: [ + { + displayName: 'Include Response Headers and Status', + name: 'fullResponse', + type: 'boolean', + default: false, + description: + 'Whether to return the full response (headers and response status code) data instead of only the body', + }, + { + displayName: 'Never Error', + name: 'neverError', + type: 'boolean', + default: false, + description: 'Whether to succeeds also when status code is not 2xx', + }, + { + displayName: 'Response Format', + name: 'responseFormat', + type: 'options', + noDataExpression: true, + options: [ + { + name: 'Autodetect', + value: 'autodetect', + }, + { + name: 'File', + value: 'file', + }, + { + name: 'JSON', + value: 'json', + }, + { + name: 'Text', + value: 'text', + }, + ], + default: 'autodetect', + description: 'The format in which the data gets returned from the URL', + }, + { + displayName: 'Put Output in Field', + name: 'outputPropertyName', + type: 'string', + default: 'data', + required: true, + displayOptions: { + show: { + responseFormat: ['file', 'text'], + }, + }, + description: + 'Name of the binary property to which to write the data of the read file', + }, + ], + }, + ], + }, + { + displayName: 'Pagination', + name: 'pagination', + placeholder: 'Add pagination', + type: 'fixedCollection', + typeOptions: { + multipleValues: false, + }, + default: { + pagination: {}, + }, + options: [ + { + displayName: 'Pagination', + name: 'pagination', + values: [ + { + displayName: 'Pagination Mode', + name: 'paginationMode', + type: 'options', + typeOptions: { + noDataExpression: true, + }, + options: [ + { + name: 'Off', + value: 'off', + }, + { + name: 'Update a Parameter in Each Request', + value: 'updateAParameterInEachRequest', + }, + { + name: 'Response Contains Next URL', + value: 'responseContainsNextURL', + }, + ], + default: 'updateAParameterInEachRequest', + description: 'If pagination should be used', + }, + { + displayName: + 'Use the $response variables to access the data of the previous response. Refer to the docs for more info about pagination/', + name: 'webhookNotice', + displayOptions: { + hide: { + paginationMode: ['off'], + }, + }, + type: 'notice', + default: '', + }, + { + displayName: 'Next URL', + name: 'nextURL', + type: 'string', + displayOptions: { + show: { + paginationMode: ['responseContainsNextURL'], + }, + }, + default: '', + description: + 'Should evaluate to the URL of the next page. More info.', + }, + { + displayName: 'Parameters', + name: 'parameters', + type: 'fixedCollection', + displayOptions: { + show: { + paginationMode: ['updateAParameterInEachRequest'], + }, + }, + typeOptions: { + multipleValues: true, + noExpression: true, + }, + placeholder: 'Add Parameter', + default: { + parameters: [ + { + type: 'qs', + name: '', + value: '', + }, + ], + }, + options: [ + { + name: 'parameters', + displayName: 'Parameter', + values: [ + { + displayName: 'Type', + name: 'type', + type: 'options', + options: [ + { + name: 'Body', + value: 'body', + }, + { + name: 'Header', + value: 'headers', + }, + { + name: 'Query', + value: 'qs', + }, + ], + default: 'qs', + description: 'Where the parameter should be set', + }, + { + displayName: 'Name', + name: 'name', + type: 'string', + default: '', + placeholder: 'e.g page', + }, + { + displayName: 'Value', + name: 'value', + type: 'string', + default: '', + hint: 'Use expression mode and $response to access response data', + }, + ], + }, + ], + }, + { + displayName: 'Pagination Complete When', + name: 'paginationCompleteWhen', + type: 'options', + typeOptions: { + noDataExpression: true, + }, + displayOptions: { + hide: { + paginationMode: ['off'], + }, + }, + options: [ + { + name: 'Response Is Empty', + value: 'responseIsEmpty', + }, + { + name: 'Receive Specific Status Code(s)', + value: 'receiveSpecificStatusCodes', + }, + { + name: 'Other', + value: 'other', + }, + ], + default: 'responseIsEmpty', + description: 'When should no further requests be made?', + }, + { + displayName: 'Status Code(s) when Complete', + name: 'statusCodesWhenComplete', + type: 'string', + typeOptions: { + noDataExpression: true, + }, + displayOptions: { + show: { + paginationCompleteWhen: ['receiveSpecificStatusCodes'], + }, + }, + default: '', + description: 'Accepts comma-separated values', + }, + { + displayName: 'Complete Expression', + name: 'completeExpression', + type: 'string', + displayOptions: { + show: { + paginationCompleteWhen: ['other'], + }, + }, + default: '', + description: + 'Should evaluate to true when pagination is complete. More info.', + }, + { + displayName: 'Limit Pages Fetched', + name: 'limitPagesFetched', + type: 'boolean', + typeOptions: { + noDataExpression: true, + }, + displayOptions: { + hide: { + paginationMode: ['off'], + }, + }, + default: false, + noDataExpression: true, + description: 'Whether the number of requests should be limited', + }, + { + displayName: 'Max Pages', + name: 'maxRequests', + type: 'number', + typeOptions: { + noDataExpression: true, + }, + displayOptions: { + show: { + limitPagesFetched: [true], + }, + }, + default: 100, + description: 'Maximum amount of request to be make', + }, + { + // eslint-disable-next-line n8n-nodes-base/node-param-display-name-miscased + displayName: 'Interval Between Requests (ms)', + name: 'requestInterval', + type: 'number', + displayOptions: { + hide: { + paginationMode: ['off'], + }, + }, + default: 0, + description: 'Time in milliseconds to wait between requests', + hint: 'At 0 no delay will be added', + typeOptions: { + minValue: 0, + }, + }, + ], + }, + ], + }, + { + displayName: 'Proxy', + name: 'proxy', + type: 'string', + default: '', + placeholder: 'e.g. http://myproxy:3128', + description: 'HTTP proxy to use', + }, + { + displayName: 'Timeout', + name: 'timeout', + type: 'number', + typeOptions: { + minValue: 1, + }, + default: 10000, + description: + 'Time in ms to wait for the server to send response headers (and start the response body) before aborting the request', + }, + ], + }, + { + displayName: + "You can view the raw requests this node makes in your browser's developer console", + name: 'infoMessage', + type: 'notice', + default: '', + }, +]; diff --git a/packages/nodes-base/nodes/HttpRequest/V3/HttpRequestV3.node.ts b/packages/nodes-base/nodes/HttpRequest/V3/HttpRequestV3.node.ts index b9b989213b..7ef4b5b3b6 100644 --- a/packages/nodes-base/nodes/HttpRequest/V3/HttpRequestV3.node.ts +++ b/packages/nodes-base/nodes/HttpRequest/V3/HttpRequestV3.node.ts @@ -1,5 +1,4 @@ -import type { Readable } from 'stream'; - +import set from 'lodash/set'; import type { IBinaryKeyData, IDataObject, @@ -14,17 +13,20 @@ import type { IRequestOptions, IHttpRequestMethods, } from 'n8n-workflow'; - import { BINARY_ENCODING, NodeApiError, + NodeExecutionOutput, + NodeConnectionType, NodeOperationError, jsonParse, removeCircularRefs, sleep, } from 'n8n-workflow'; +import type { Readable } from 'stream'; + +import { keysToLowercase } from '@utils/utilities'; -import set from 'lodash/set'; import type { BodyParameter, IAuthDataSanitizeKeys } from '../GenericFunctions'; import { binaryContentTypes, @@ -36,8 +38,7 @@ import { sanitizeUiMessage, setAgentOptions, } from '../GenericFunctions'; -import type { HttpSslAuthCredentials } from '../interfaces'; -import { keysToLowercase } from '@utils/utilities'; +import { mainProperties } from './Description'; function toText(data: T) { if (typeof data === 'object' && data !== null) { @@ -57,8 +58,8 @@ export class HttpRequestV3 implements INodeType { name: 'HTTP Request', color: '#0004F5', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'httpSslAuth', @@ -70,1175 +71,7 @@ export class HttpRequestV3 implements INodeType { }, }, ], - properties: [ - { - displayName: '', - name: 'curlImport', - type: 'curlImport', - default: '', - }, - { - displayName: 'Method', - name: 'method', - type: 'options', - options: [ - { - name: 'DELETE', - value: 'DELETE', - }, - { - name: 'GET', - value: 'GET', - }, - { - name: 'HEAD', - value: 'HEAD', - }, - { - name: 'OPTIONS', - value: 'OPTIONS', - }, - { - name: 'PATCH', - value: 'PATCH', - }, - { - name: 'POST', - value: 'POST', - }, - { - name: 'PUT', - value: 'PUT', - }, - ], - default: 'GET', - description: 'The request method to use', - }, - { - displayName: 'URL', - name: 'url', - type: 'string', - default: '', - placeholder: 'http://example.com/index.html', - description: 'The URL to make the request to', - required: true, - }, - { - displayName: 'Authentication', - name: 'authentication', - noDataExpression: true, - type: 'options', - options: [ - { - name: 'None', - value: 'none', - }, - { - name: 'Predefined Credential Type', - value: 'predefinedCredentialType', - description: - "We've already implemented auth for many services so that you don't have to set it up manually", - }, - { - name: 'Generic Credential Type', - value: 'genericCredentialType', - description: 'Fully customizable. Choose between basic, header, OAuth2, etc.', - }, - ], - default: 'none', - }, - { - displayName: 'Credential Type', - name: 'nodeCredentialType', - type: 'credentialsSelect', - noDataExpression: true, - required: true, - default: '', - credentialTypes: ['extends:oAuth2Api', 'extends:oAuth1Api', 'has:authenticate'], - displayOptions: { - show: { - authentication: ['predefinedCredentialType'], - }, - }, - }, - { - displayName: - 'Make sure you have specified the scope(s) for the Service Account in the credential', - name: 'googleApiWarning', - type: 'notice', - default: '', - displayOptions: { - show: { - nodeCredentialType: ['googleApi'], - }, - }, - }, - { - displayName: 'Generic Auth Type', - name: 'genericAuthType', - type: 'credentialsSelect', - required: true, - default: '', - credentialTypes: ['has:genericAuth'], - displayOptions: { - show: { - authentication: ['genericCredentialType'], - }, - }, - }, - { - displayName: 'SSL Certificates', - name: 'provideSslCertificates', - type: 'boolean', - default: false, - isNodeSetting: true, - }, - { - displayName: "Provide certificates in node's 'Credential for SSL Certificates' parameter", - name: 'provideSslCertificatesNotice', - type: 'notice', - default: '', - isNodeSetting: true, - displayOptions: { - show: { - provideSslCertificates: [true], - }, - }, - }, - { - displayName: 'SSL Certificate', - name: 'sslCertificate', - type: 'credentials', - default: '', - displayOptions: { - show: { - provideSslCertificates: [true], - }, - }, - }, - { - displayName: 'Send Query Parameters', - name: 'sendQuery', - type: 'boolean', - default: false, - noDataExpression: true, - description: 'Whether the request has query params or not', - }, - { - displayName: 'Specify Query Parameters', - name: 'specifyQuery', - type: 'options', - displayOptions: { - show: { - sendQuery: [true], - }, - }, - options: [ - { - name: 'Using Fields Below', - value: 'keypair', - }, - { - name: 'Using JSON', - value: 'json', - }, - ], - default: 'keypair', - }, - { - displayName: 'Query Parameters', - name: 'queryParameters', - type: 'fixedCollection', - displayOptions: { - show: { - sendQuery: [true], - specifyQuery: ['keypair'], - }, - }, - typeOptions: { - multipleValues: true, - }, - placeholder: 'Add Parameter', - default: { - parameters: [ - { - name: '', - value: '', - }, - ], - }, - options: [ - { - name: 'parameters', - displayName: 'Parameter', - values: [ - { - displayName: 'Name', - name: 'name', - type: 'string', - default: '', - }, - { - displayName: 'Value', - name: 'value', - type: 'string', - default: '', - }, - ], - }, - ], - }, - { - displayName: 'JSON', - name: 'jsonQuery', - type: 'json', - displayOptions: { - show: { - sendQuery: [true], - specifyQuery: ['json'], - }, - }, - default: '', - }, - { - displayName: 'Send Headers', - name: 'sendHeaders', - type: 'boolean', - default: false, - noDataExpression: true, - description: 'Whether the request has headers or not', - }, - { - displayName: 'Specify Headers', - name: 'specifyHeaders', - type: 'options', - displayOptions: { - show: { - sendHeaders: [true], - }, - }, - options: [ - { - name: 'Using Fields Below', - value: 'keypair', - }, - { - name: 'Using JSON', - value: 'json', - }, - ], - default: 'keypair', - }, - { - displayName: 'Header Parameters', - name: 'headerParameters', - type: 'fixedCollection', - displayOptions: { - show: { - sendHeaders: [true], - specifyHeaders: ['keypair'], - }, - }, - typeOptions: { - multipleValues: true, - }, - placeholder: 'Add Parameter', - default: { - parameters: [ - { - name: '', - value: '', - }, - ], - }, - options: [ - { - name: 'parameters', - displayName: 'Parameter', - values: [ - { - displayName: 'Name', - name: 'name', - type: 'string', - default: '', - }, - { - displayName: 'Value', - name: 'value', - type: 'string', - default: '', - }, - ], - }, - ], - }, - { - displayName: 'JSON', - name: 'jsonHeaders', - type: 'json', - displayOptions: { - show: { - sendHeaders: [true], - specifyHeaders: ['json'], - }, - }, - default: '', - }, - { - displayName: 'Send Body', - name: 'sendBody', - type: 'boolean', - default: false, - noDataExpression: true, - description: 'Whether the request has a body or not', - }, - { - displayName: 'Body Content Type', - name: 'contentType', - type: 'options', - displayOptions: { - show: { - sendBody: [true], - }, - }, - options: [ - { - name: 'Form Urlencoded', - value: 'form-urlencoded', - }, - { - name: 'Form-Data', - value: 'multipart-form-data', - }, - { - name: 'JSON', - value: 'json', - }, - { - // eslint-disable-next-line n8n-nodes-base/node-param-display-name-miscased - name: 'n8n Binary File', - value: 'binaryData', - }, - { - name: 'Raw', - value: 'raw', - }, - ], - default: 'json', - description: 'Content-Type to use to send body parameters', - }, - { - displayName: 'Specify Body', - name: 'specifyBody', - type: 'options', - displayOptions: { - show: { - sendBody: [true], - contentType: ['json'], - }, - }, - options: [ - { - name: 'Using Fields Below', - value: 'keypair', - }, - { - name: 'Using JSON', - value: 'json', - }, - ], - default: 'keypair', - // eslint-disable-next-line n8n-nodes-base/node-param-description-miscased-json - description: - 'The body can be specified using explicit fields (keypair) or using a JavaScript object (json)', - }, - { - displayName: 'Body Parameters', - name: 'bodyParameters', - type: 'fixedCollection', - displayOptions: { - show: { - sendBody: [true], - contentType: ['json'], - specifyBody: ['keypair'], - }, - }, - typeOptions: { - multipleValues: true, - }, - placeholder: 'Add Parameter', - default: { - parameters: [ - { - name: '', - value: '', - }, - ], - }, - options: [ - { - name: 'parameters', - displayName: 'Parameter', - values: [ - { - displayName: 'Name', - name: 'name', - type: 'string', - default: '', - description: - 'ID of the field to set. Choose from the list, or specify an ID using an expression.', - }, - { - displayName: 'Value', - name: 'value', - type: 'string', - default: '', - description: 'Value of the field to set', - }, - ], - }, - ], - }, - { - displayName: 'JSON', - name: 'jsonBody', - type: 'json', - displayOptions: { - show: { - sendBody: [true], - contentType: ['json'], - specifyBody: ['json'], - }, - }, - default: '', - }, - { - displayName: 'Body Parameters', - name: 'bodyParameters', - type: 'fixedCollection', - displayOptions: { - show: { - sendBody: [true], - contentType: ['multipart-form-data'], - }, - }, - typeOptions: { - multipleValues: true, - }, - placeholder: 'Add Parameter', - default: { - parameters: [ - { - name: '', - value: '', - }, - ], - }, - options: [ - { - name: 'parameters', - displayName: 'Parameter', - values: [ - { - displayName: 'Parameter Type', - name: 'parameterType', - type: 'options', - options: [ - { - // eslint-disable-next-line n8n-nodes-base/node-param-display-name-miscased - name: 'n8n Binary File', - value: 'formBinaryData', - }, - { - name: 'Form Data', - value: 'formData', - }, - ], - default: 'formData', - }, - { - displayName: 'Name', - name: 'name', - type: 'string', - default: '', - description: - 'ID of the field to set. Choose from the list, or specify an ID using an expression.', - }, - { - displayName: 'Value', - name: 'value', - type: 'string', - displayOptions: { - show: { - parameterType: ['formData'], - }, - }, - default: '', - description: 'Value of the field to set', - }, - { - displayName: 'Input Data Field Name', - name: 'inputDataFieldName', - type: 'string', - displayOptions: { - show: { - parameterType: ['formBinaryData'], - }, - }, - default: '', - description: - 'The name of the incoming field containing the binary file data to be processed', - }, - ], - }, - ], - }, - { - displayName: 'Specify Body', - name: 'specifyBody', - type: 'options', - displayOptions: { - show: { - sendBody: [true], - contentType: ['form-urlencoded'], - }, - }, - options: [ - { - name: 'Using Fields Below', - value: 'keypair', - }, - { - name: 'Using Single Field', - value: 'string', - }, - ], - default: 'keypair', - }, - { - displayName: 'Body Parameters', - name: 'bodyParameters', - type: 'fixedCollection', - displayOptions: { - show: { - sendBody: [true], - contentType: ['form-urlencoded'], - specifyBody: ['keypair'], - }, - }, - typeOptions: { - multipleValues: true, - }, - placeholder: 'Add Parameter', - default: { - parameters: [ - { - name: '', - value: '', - }, - ], - }, - options: [ - { - name: 'parameters', - displayName: 'Parameter', - values: [ - { - displayName: 'Name', - name: 'name', - type: 'string', - default: '', - description: - 'ID of the field to set. Choose from the list, or specify an ID using an expression.', - }, - { - displayName: 'Value', - name: 'value', - type: 'string', - default: '', - description: 'Value of the field to set', - }, - ], - }, - ], - }, - { - displayName: 'Body', - name: 'body', - type: 'string', - displayOptions: { - show: { - sendBody: [true], - specifyBody: ['string'], - }, - }, - default: '', - placeholder: 'field1=value1&field2=value2', - }, - { - displayName: 'Input Data Field Name', - name: 'inputDataFieldName', - type: 'string', - displayOptions: { - show: { - sendBody: [true], - contentType: ['binaryData'], - }, - }, - default: '', - description: - 'The name of the incoming field containing the binary file data to be processed', - }, - { - displayName: 'Content Type', - name: 'rawContentType', - type: 'string', - displayOptions: { - show: { - sendBody: [true], - contentType: ['raw'], - }, - }, - default: '', - placeholder: 'text/html', - }, - { - displayName: 'Body', - name: 'body', - type: 'string', - displayOptions: { - show: { - sendBody: [true], - contentType: ['raw'], - }, - }, - default: '', - placeholder: '', - }, - { - displayName: 'Options', - name: 'options', - type: 'collection', - placeholder: 'Add Option', - default: {}, - options: [ - { - displayName: 'Batching', - name: 'batching', - placeholder: 'Add Batching', - type: 'fixedCollection', - typeOptions: { - multipleValues: false, - }, - default: { - batch: {}, - }, - options: [ - { - displayName: 'Batching', - name: 'batch', - values: [ - { - displayName: 'Items per Batch', - name: 'batchSize', - type: 'number', - typeOptions: { - minValue: -1, - }, - default: 50, - description: - 'Input will be split in batches to throttle requests. -1 for disabled. 0 will be treated as 1.', - }, - { - // eslint-disable-next-line n8n-nodes-base/node-param-display-name-miscased - displayName: 'Batch Interval (ms)', - name: 'batchInterval', - type: 'number', - typeOptions: { - minValue: 0, - }, - default: 1000, - description: - 'Time (in milliseconds) between each batch of requests. 0 for disabled.', - }, - ], - }, - ], - }, - { - displayName: 'Ignore SSL Issues', - name: 'allowUnauthorizedCerts', - type: 'boolean', - noDataExpression: true, - default: false, - // eslint-disable-next-line n8n-nodes-base/node-param-description-wrong-for-ignore-ssl-issues - description: - 'Whether to download the response even if SSL certificate validation is not possible', - }, - { - displayName: 'Array Format in Query Parameters', - name: 'queryParameterArrays', - type: 'options', - displayOptions: { - show: { - '/sendQuery': [true], - }, - }, - options: [ - { - name: 'No Brackets', - value: 'repeat', - // eslint-disable-next-line n8n-nodes-base/node-param-description-lowercase-first-char - description: 'e.g. foo=bar&foo=qux', - }, - { - name: 'Brackets Only', - value: 'brackets', - // eslint-disable-next-line n8n-nodes-base/node-param-description-lowercase-first-char - description: 'e.g. foo[]=bar&foo[]=qux', - }, - { - name: 'Brackets with Indices', - value: 'indices', - // eslint-disable-next-line n8n-nodes-base/node-param-description-lowercase-first-char - description: 'e.g. foo[0]=bar&foo[1]=qux', - }, - ], - default: 'brackets', - }, - { - displayName: 'Redirects', - name: 'redirect', - placeholder: 'Add Redirect', - type: 'fixedCollection', - typeOptions: { - multipleValues: false, - }, - default: { redirect: {} }, - options: [ - { - displayName: 'Redirect', - name: 'redirect', - values: [ - { - displayName: 'Follow Redirects', - name: 'followRedirects', - type: 'boolean', - default: false, - noDataExpression: true, - description: 'Whether to follow all redirects', - }, - { - displayName: 'Max Redirects', - name: 'maxRedirects', - type: 'number', - displayOptions: { - show: { - followRedirects: [true], - }, - }, - default: 21, - description: 'Max number of redirects to follow', - }, - ], - }, - ], - displayOptions: { - show: { - '@version': [1, 2, 3], - }, - }, - }, - { - displayName: 'Redirects', - name: 'redirect', - placeholder: 'Add Redirect', - type: 'fixedCollection', - typeOptions: { - multipleValues: false, - }, - default: { - redirect: {}, - }, - options: [ - { - displayName: 'Redirect', - name: 'redirect', - values: [ - { - displayName: 'Follow Redirects', - name: 'followRedirects', - type: 'boolean', - default: true, - noDataExpression: true, - description: 'Whether to follow all redirects', - }, - { - displayName: 'Max Redirects', - name: 'maxRedirects', - type: 'number', - displayOptions: { - show: { - followRedirects: [true], - }, - }, - default: 21, - description: 'Max number of redirects to follow', - }, - ], - }, - ], - displayOptions: { - hide: { - '@version': [1, 2, 3], - }, - }, - }, - { - displayName: 'Response', - name: 'response', - placeholder: 'Add response', - type: 'fixedCollection', - typeOptions: { - multipleValues: false, - }, - default: { - response: {}, - }, - options: [ - { - displayName: 'Response', - name: 'response', - values: [ - { - displayName: 'Include Response Headers and Status', - name: 'fullResponse', - type: 'boolean', - default: false, - description: - 'Whether to return the full response (headers and response status code) data instead of only the body', - }, - { - displayName: 'Never Error', - name: 'neverError', - type: 'boolean', - default: false, - description: 'Whether to succeeds also when status code is not 2xx', - }, - { - displayName: 'Response Format', - name: 'responseFormat', - type: 'options', - noDataExpression: true, - options: [ - { - name: 'Autodetect', - value: 'autodetect', - }, - { - name: 'File', - value: 'file', - }, - { - name: 'JSON', - value: 'json', - }, - { - name: 'Text', - value: 'text', - }, - ], - default: 'autodetect', - description: 'The format in which the data gets returned from the URL', - }, - { - displayName: 'Put Output in Field', - name: 'outputPropertyName', - type: 'string', - default: 'data', - required: true, - displayOptions: { - show: { - responseFormat: ['file', 'text'], - }, - }, - description: - 'Name of the binary property to which to write the data of the read file', - }, - ], - }, - ], - }, - { - displayName: 'Pagination', - name: 'pagination', - placeholder: 'Add pagination', - type: 'fixedCollection', - typeOptions: { - multipleValues: false, - }, - default: { - pagination: {}, - }, - options: [ - { - displayName: 'Pagination', - name: 'pagination', - values: [ - { - displayName: 'Pagination Mode', - name: 'paginationMode', - type: 'options', - typeOptions: { - noDataExpression: true, - }, - options: [ - { - name: 'Off', - value: 'off', - }, - { - name: 'Update a Parameter in Each Request', - value: 'updateAParameterInEachRequest', - }, - { - name: 'Response Contains Next URL', - value: 'responseContainsNextURL', - }, - ], - default: 'updateAParameterInEachRequest', - description: 'If pagination should be used', - }, - { - displayName: - 'Use the $response variables to access the data of the previous response. Refer to the docs for more info about pagination/', - name: 'webhookNotice', - displayOptions: { - hide: { - paginationMode: ['off'], - }, - }, - type: 'notice', - default: '', - }, - { - displayName: 'Next URL', - name: 'nextURL', - type: 'string', - displayOptions: { - show: { - paginationMode: ['responseContainsNextURL'], - }, - }, - default: '', - description: - 'Should evaluate to the URL of the next page. More info.', - }, - { - displayName: 'Parameters', - name: 'parameters', - type: 'fixedCollection', - displayOptions: { - show: { - paginationMode: ['updateAParameterInEachRequest'], - }, - }, - typeOptions: { - multipleValues: true, - noExpression: true, - }, - placeholder: 'Add Parameter', - default: { - parameters: [ - { - type: 'qs', - name: '', - value: '', - }, - ], - }, - options: [ - { - name: 'parameters', - displayName: 'Parameter', - values: [ - { - displayName: 'Type', - name: 'type', - type: 'options', - options: [ - { - name: 'Body', - value: 'body', - }, - { - name: 'Header', - value: 'headers', - }, - { - name: 'Query', - value: 'qs', - }, - ], - default: 'qs', - description: 'Where the parameter should be set', - }, - { - displayName: 'Name', - name: 'name', - type: 'string', - default: '', - placeholder: 'e.g page', - }, - { - displayName: 'Value', - name: 'value', - type: 'string', - default: '', - hint: 'Use expression mode and $response to access response data', - }, - ], - }, - ], - }, - { - displayName: 'Pagination Complete When', - name: 'paginationCompleteWhen', - type: 'options', - typeOptions: { - noDataExpression: true, - }, - displayOptions: { - hide: { - paginationMode: ['off'], - }, - }, - options: [ - { - name: 'Response Is Empty', - value: 'responseIsEmpty', - }, - { - name: 'Receive Specific Status Code(s)', - value: 'receiveSpecificStatusCodes', - }, - { - name: 'Other', - value: 'other', - }, - ], - default: 'responseIsEmpty', - description: 'When should no further requests be made?', - }, - { - displayName: 'Status Code(s) when Complete', - name: 'statusCodesWhenComplete', - type: 'string', - typeOptions: { - noDataExpression: true, - }, - displayOptions: { - show: { - paginationCompleteWhen: ['receiveSpecificStatusCodes'], - }, - }, - default: '', - description: 'Accepts comma-separated values', - }, - { - displayName: 'Complete Expression', - name: 'completeExpression', - type: 'string', - displayOptions: { - show: { - paginationCompleteWhen: ['other'], - }, - }, - default: '', - description: - 'Should evaluate to true when pagination is complete. More info.', - }, - { - displayName: 'Limit Pages Fetched', - name: 'limitPagesFetched', - type: 'boolean', - typeOptions: { - noDataExpression: true, - }, - displayOptions: { - hide: { - paginationMode: ['off'], - }, - }, - default: false, - noDataExpression: true, - description: 'Whether the number of requests should be limited', - }, - { - displayName: 'Max Pages', - name: 'maxRequests', - type: 'number', - typeOptions: { - noDataExpression: true, - }, - displayOptions: { - show: { - limitPagesFetched: [true], - }, - }, - default: 100, - description: 'Maximum amount of request to be make', - }, - { - // eslint-disable-next-line n8n-nodes-base/node-param-display-name-miscased - displayName: 'Interval Between Requests (ms)', - name: 'requestInterval', - type: 'number', - displayOptions: { - hide: { - paginationMode: ['off'], - }, - }, - default: 0, - description: 'Time in milliseconds to wait between requests', - hint: 'At 0 no delay will be added', - typeOptions: { - minValue: 0, - }, - }, - ], - }, - ], - }, - { - displayName: 'Proxy', - name: 'proxy', - type: 'string', - default: '', - placeholder: 'e.g. http://myproxy:3128', - description: 'HTTP proxy to use', - }, - { - displayName: 'Timeout', - name: 'timeout', - type: 'number', - typeOptions: { - minValue: 1, - }, - default: 10000, - description: - 'Time in ms to wait for the server to send response headers (and start the response body) before aborting the request', - }, - ], - }, - { - displayName: - "You can view the raw requests this node makes in your browser's developer console", - name: 'infoMessage', - type: 'notice', - default: '', - }, - ], + properties: mainProperties, }; } @@ -1336,10 +169,7 @@ export class HttpRequestV3 implements INodeType { ); if (provideSslCertificates) { - sslCertificates = (await this.getCredentials( - 'httpSslAuth', - itemIndex, - )) as HttpSslAuthCredentials; + sslCertificates = await this.getCredentials('httpSslAuth', itemIndex); } const requestMethod = this.getNodeParameter('method', itemIndex) as IHttpRequestMethods; @@ -1388,6 +218,7 @@ export class HttpRequestV3 implements INodeType { allowUnauthorizedCerts, queryParameterArrays, response, + lowercaseHeaders, } = this.getNodeParameter('options', itemIndex, {}) as { batching: { batch: { batchSize: number; batchInterval: number } }; proxy: string; @@ -1398,6 +229,7 @@ export class HttpRequestV3 implements INodeType { response: { neverError: boolean; responseFormat: string; fullResponse: boolean }; }; redirect: { redirect: { maxRedirects: number; followRedirects: boolean } }; + lowercaseHeaders: boolean; }; const url = this.getNodeParameter('url', itemIndex) as string; @@ -1508,7 +340,7 @@ export class HttpRequestV3 implements INodeType { } catch { throw new NodeOperationError( this.getNode(), - 'JSON parameter need to be an valid JSON', + 'JSON parameter needs to be valid JSON', { itemIndex, }, @@ -1572,13 +404,9 @@ export class HttpRequestV3 implements INodeType { try { JSON.parse(jsonQueryParameter); } catch { - throw new NodeOperationError( - this.getNode(), - 'JSON parameter need to be an valid JSON', - { - itemIndex, - }, - ); + throw new NodeOperationError(this.getNode(), 'JSON parameter needs to be valid JSON', { + itemIndex, + }); } requestOptions.qs = jsonParse(jsonQueryParameter); @@ -1598,20 +426,18 @@ export class HttpRequestV3 implements INodeType { try { JSON.parse(jsonHeadersParameter); } catch { - throw new NodeOperationError( - this.getNode(), - 'JSON parameter need to be an valid JSON', - { - itemIndex, - }, - ); + throw new NodeOperationError(this.getNode(), 'JSON parameter needs to be valid JSON', { + itemIndex, + }); } additionalHeaders = jsonParse(jsonHeadersParameter); } requestOptions.headers = { ...requestOptions.headers, - ...keysToLowercase(additionalHeaders), + ...(lowercaseHeaders === undefined || lowercaseHeaders + ? keysToLowercase(additionalHeaders) + : additionalHeaders), }; } @@ -1945,9 +771,7 @@ export class HttpRequestV3 implements INodeType { false, ) as boolean; - const data = await this.helpers - .binaryToBuffer(response.body as Buffer | Readable) - .then((body) => body.toString()); + const data = await this.helpers.binaryToString(response.body as Buffer | Readable); response.body = jsonParse(data, { ...(neverError ? { fallbackValue: {} } @@ -1959,9 +783,7 @@ export class HttpRequestV3 implements INodeType { } else { responseFormat = 'text'; if (!response.__bodyResolved) { - const data = await this.helpers - .binaryToBuffer(response.body as Buffer | Readable) - .then((body) => body.toString()); + const data = await this.helpers.binaryToString(response.body as Buffer | Readable); response.body = !data ? undefined : data; } } @@ -2130,6 +952,23 @@ export class HttpRequestV3 implements INodeType { returnItems = returnItems.map(replaceNullValues); + if ( + returnItems.length === 1 && + returnItems[0].json.data && + Array.isArray(returnItems[0].json.data) + ) { + return new NodeExecutionOutput( + [returnItems], + [ + { + message: + 'To split the contents of ‘data’ into separate items for easier processing, add a ‘Spilt Out’ node after this one', + location: 'outputPane', + }, + ], + ); + } + return [returnItems]; } } diff --git a/packages/nodes-base/nodes/HttpRequest/test/encoding/HttpRequest.test.ts b/packages/nodes-base/nodes/HttpRequest/test/encoding/HttpRequest.test.ts new file mode 100644 index 0000000000..6ca5cfa437 --- /dev/null +++ b/packages/nodes-base/nodes/HttpRequest/test/encoding/HttpRequest.test.ts @@ -0,0 +1,40 @@ +import nock from 'nock'; +import { + setup, + equalityTest, + workflowToTests, + getWorkflowFilenames, + initBinaryDataService, +} from '@test/nodes/Helpers'; + +describe('Test Response Encoding', () => { + const workflows = getWorkflowFilenames(__dirname); + const tests = workflowToTests(workflows); + + const baseUrl = 'https://dummy.domain'; + const payload = Buffer.from( + 'El rápido zorro marrón salta sobre el perro perezoso. ¡Qué bello día en París! Árbol, cañón, façade.', + 'latin1', + ); + + beforeAll(async () => { + await initBinaryDataService(); + + nock.disableNetConnect(); + + nock(baseUrl) + .persist() + .get('/index.html') + .reply(200, payload, { 'content-type': 'text/plain; charset=latin1' }); + }); + + afterAll(() => { + nock.restore(); + }); + + const nodeTypes = setup(tests); + + for (const testData of tests) { + test(testData.description, async () => await equalityTest(testData, nodeTypes)); + } +}); diff --git a/packages/nodes-base/nodes/HttpRequest/test/encoding/encoding.test.json b/packages/nodes-base/nodes/HttpRequest/test/encoding/encoding.test.json new file mode 100644 index 0000000000..14deea23c2 --- /dev/null +++ b/packages/nodes-base/nodes/HttpRequest/test/encoding/encoding.test.json @@ -0,0 +1,78 @@ +{ + "name": "Response Encoding Test", + "nodes": [ + { + "parameters": {}, + "name": "When clicking \"Execute Workflow\"", + "type": "n8n-nodes-base.manualTrigger", + "typeVersion": 1, + "position": [ + 180, + 820 + ], + "id": "635fb102-a760-4b9e-836c-82e71bba7974" + }, + { + "parameters": { + "url": "https://dummy.domain/index.html", + "options": {} + }, + "name": "HTTP Request (v3)", + "type": "n8n-nodes-base.httpRequest", + "typeVersion": 3, + "position": [ + 520, + 720 + ], + "id": "eb243cfd-fbd6-41ef-935d-4ea98617355f" + }, + { + "parameters": { + "url": "https://dummy.domain/index.html", + "options": {} + }, + "name": "HTTP Request (v4)", + "type": "n8n-nodes-base.httpRequest", + "typeVersion": 4, + "position": [ + 520, + 920 + ], + "id": "cc2f185d-df6a-4fa3-b7f4-29f0dbad0f9b" + } + ], + "connections": { + "When clicking \"Execute Workflow\"": { + "main": [ + [ + { + "node": "HTTP Request (v3)", + "type": "main", + "index": 0 + }, + { + "node": "HTTP Request (v4)", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "pinData": { + "HTTP Request (v3)": [ + { + "json": { + "data": "El rápido zorro marrón salta sobre el perro perezoso. ¡Qué bello día en París! Árbol, cañón, façade." + } + } + ], + "HTTP Request (v4)": [ + { + "json": { + "data": "El rápido zorro marrón salta sobre el perro perezoso. ¡Qué bello día en París! Árbol, cañón, façade." + } + } + ] + } +} diff --git a/packages/nodes-base/nodes/HttpRequest/test/node/HttpRequestV3.test.ts b/packages/nodes-base/nodes/HttpRequest/test/node/HttpRequestV3.test.ts new file mode 100644 index 0000000000..d245c77e7f --- /dev/null +++ b/packages/nodes-base/nodes/HttpRequest/test/node/HttpRequestV3.test.ts @@ -0,0 +1,229 @@ +/* eslint-disable n8n-nodes-base/node-filename-against-convention */ +import type { IExecuteFunctions, INodeTypeBaseDescription } from 'n8n-workflow'; + +import { HttpRequestV3 } from '../../V3/HttpRequestV3.node'; + +describe('HttpRequestV3', () => { + let node: HttpRequestV3; + let executeFunctions: IExecuteFunctions; + + const baseUrl = 'http://example.com'; + const options = { + redirect: '', + batching: { batch: { batchSize: 1, batchInterval: 1 } }, + proxy: '', + timeout: '', + allowUnauthoridCerts: '', + queryParameterArrays: '', + response: '', + lowercaseHeaders: '', + }; + + beforeEach(() => { + const baseDescription: INodeTypeBaseDescription = { + displayName: 'HTTP Request', + name: 'httpRequest', + description: 'Makes an HTTP request and returns the response data', + group: [], + }; + node = new HttpRequestV3(baseDescription); + executeFunctions = { + getInputData: jest.fn(), + getNodeParameter: jest.fn(), + getNode: jest.fn(() => { + return { + type: 'n8n-nodes-base.httpRequest', + typeVersion: 3, + }; + }), + getCredentials: jest.fn(), + helpers: { + request: jest.fn(), + requestOAuth1: jest.fn( + async () => + await Promise.resolve({ + statusCode: 200, + headers: { 'content-type': 'application/json' }, + body: Buffer.from(JSON.stringify({ success: true })), + }), + ), + requestOAuth2: jest.fn( + async () => + await Promise.resolve({ + statusCode: 200, + headers: { 'content-type': 'application/json' }, + body: Buffer.from(JSON.stringify({ success: true })), + }), + ), + requestWithAuthentication: jest.fn(), + requestWithAuthenticationPaginated: jest.fn(), + assertBinaryData: jest.fn(), + getBinaryStream: jest.fn(), + getBinaryMetadata: jest.fn(), + binaryToString: jest.fn((buffer: Buffer) => { + return buffer.toString(); + }), + prepareBinaryData: jest.fn(), + }, + getContext: jest.fn(), + sendMessageToUI: jest.fn(), + continueOnFail: jest.fn(), + getMode: jest.fn(), + } as unknown as IExecuteFunctions; + }); + + it('should make a GET request', async () => { + (executeFunctions.getInputData as jest.Mock).mockReturnValue([{ json: {} }]); + (executeFunctions.getNodeParameter as jest.Mock).mockImplementation((paramName: string) => { + switch (paramName) { + case 'method': + return 'GET'; + case 'url': + return baseUrl; + case 'authentication': + return 'none'; + case 'options': + return options; + default: + return undefined; + } + }); + const response = { + headers: { 'content-type': 'application/json' }, + body: Buffer.from(JSON.stringify({ success: true })), + }; + + (executeFunctions.helpers.request as jest.Mock).mockResolvedValue(response); + + const result = await node.execute.call(executeFunctions); + + expect(result).toEqual([[{ json: { success: true }, pairedItem: { item: 0 } }]]); + }); + + it('should handle authentication', async () => { + (executeFunctions.getInputData as jest.Mock).mockReturnValue([{ json: {} }]); + (executeFunctions.getNodeParameter as jest.Mock).mockImplementation((paramName: string) => { + switch (paramName) { + case 'method': + return 'GET'; + case 'url': + return baseUrl; + case 'authentication': + return 'genericCredentialType'; + case 'genericAuthType': + return 'httpBasicAuth'; + case 'options': + return options; + default: + return undefined; + } + }); + (executeFunctions.getCredentials as jest.Mock).mockResolvedValue({ + user: 'username', + password: 'password', + }); + const response = { + headers: { 'content-type': 'application/json' }, + body: Buffer.from(JSON.stringify({ success: true })), + }; + (executeFunctions.helpers.request as jest.Mock).mockResolvedValue(response); + + const result = await node.execute.call(executeFunctions); + + expect(result).toEqual([[{ json: { success: true }, pairedItem: { item: 0 } }]]); + expect(executeFunctions.helpers.request).toHaveBeenCalledWith( + expect.objectContaining({ + auth: { + user: 'username', + pass: 'password', + }, + }), + ); + }); + + describe('Authentication Handling', () => { + const authenticationTypes = [ + { + genericCredentialType: 'httpBasicAuth', + credentials: { user: 'username', password: 'password' }, + authField: 'auth', + authValue: { user: 'username', pass: 'password' }, + }, + { + genericCredentialType: 'httpDigestAuth', + credentials: { user: 'username', password: 'password' }, + authField: 'auth', + authValue: { user: 'username', pass: 'password', sendImmediately: false }, + }, + { + genericCredentialType: 'httpHeaderAuth', + credentials: { name: 'Authorization', value: 'Bearer token' }, + authField: 'headers', + authValue: { Authorization: 'Bearer token' }, + }, + { + genericCredentialType: 'httpQueryAuth', + credentials: { name: 'Token', value: 'secretToken' }, + authField: 'qs', + authValue: { Token: 'secretToken' }, + }, + { + genericCredentialType: 'oAuth1Api', + credentials: { oauth_token: 'token', oauth_token_secret: 'secret' }, + authField: 'oauth', + authValue: { oauth_token: 'token', oauth_token_secret: 'secret' }, + }, + { + genericCredentialType: 'oAuth2Api', + credentials: { access_token: 'accessToken' }, + authField: 'auth', + authValue: { bearer: 'accessToken' }, + }, + ]; + + it.each(authenticationTypes)( + 'should handle %s authentication', + async ({ genericCredentialType, credentials, authField, authValue }) => { + (executeFunctions.getInputData as jest.Mock).mockReturnValue([{ json: {} }]); + (executeFunctions.getNodeParameter as jest.Mock).mockImplementation((paramName: string) => { + switch (paramName) { + case 'method': + return 'GET'; + case 'url': + return baseUrl; + case 'authentication': + return 'genericCredentialType'; + case 'genericAuthType': + return genericCredentialType; + case 'options': + return options; + default: + return undefined; + } + }); + + (executeFunctions.getCredentials as jest.Mock).mockResolvedValue(credentials); + const response = { + headers: { 'content-type': 'application/json' }, + body: Buffer.from(JSON.stringify({ success: true })), + }; + (executeFunctions.helpers.request as jest.Mock).mockResolvedValue(response); + + const result = await node.execute.call(executeFunctions); + + expect(result).toEqual([[{ json: { success: true }, pairedItem: { item: 0 } }]]); + if (genericCredentialType === 'oAuth1Api') { + expect(executeFunctions.helpers.requestOAuth1).toHaveBeenCalled(); + } else if (genericCredentialType === 'oAuth2Api') { + expect(executeFunctions.helpers.requestOAuth2).toHaveBeenCalled(); + } else { + expect(executeFunctions.helpers.request).toHaveBeenCalledWith( + expect.objectContaining({ + [authField]: expect.objectContaining(authValue), + }), + ); + } + }, + ); + }); +}); diff --git a/packages/nodes-base/nodes/HttpRequest/test/node/workflow.pagination.json b/packages/nodes-base/nodes/HttpRequest/test/node/workflow.pagination.json index 8411887e13..af54f6c267 100644 --- a/packages/nodes-base/nodes/HttpRequest/test/node/workflow.pagination.json +++ b/packages/nodes-base/nodes/HttpRequest/test/node/workflow.pagination.json @@ -1,1868 +1,1897 @@ { - "name": "HTTP Pagination Test", - "nodes": [ - { - "parameters": { - "url": "https://dummyjson.com/users", - "sendQuery": true, - "queryParameters": { - "parameters": [ - { - "name": "limit", - "value": "3" - } - ] - }, - "options": { - "response": { - "response": { - "responseFormat": "json" - } - }, - "pagination": { - "pagination": { - "parameters": { - "parameters": [ - { - "name": "skip", - "value": "={{ $pageCount * 3 }}" - } - ] - }, - "limitPagesFetched": true, - "maxRequests": 3 - } - } - } - }, - "id": "c42631bf-5122-4b84-86c7-00ad9dcdcdfb", - "name": "Page Limit", - "type": "n8n-nodes-base.httpRequest", - "typeVersion": 4.1, - "position": [ - 980, - 1980 - ] - }, - { - "parameters": { - "url": "https://dummyjson.com/users", - "sendQuery": true, - "queryParameters": { - "parameters": [ - { - "name": "limit", - "value": "3" - } - ] - }, - "options": { - "response": { - "response": { - "neverError": true, - "responseFormat": "json" - } - }, - "pagination": { - "pagination": { - "parameters": { - "parameters": [ - { - "name": "skip", - "value": "={{ $pageCount * 3 }}" - } - ] - } - } - } - } - }, - "id": "337101b7-9815-466b-8920-b69529c90c73", - "name": "Response Empty", - "type": "n8n-nodes-base.httpRequest", - "typeVersion": 4.1, - "position": [ - 980, - 2160 - ] - }, - { - "parameters": { - "url": "https://dummyjson.com/users", - "sendQuery": true, - "queryParameters": { - "parameters": [ - { - "name": "limit", - "value": "3" - } - ] - }, - "options": { - "response": { - "response": { - "responseFormat": "json" - } - }, - "pagination": { - "pagination": { - "parameters": { - "parameters": [ - { - "name": "skip", - "value": "={{ $pageCount * 3 }}" - } - ] - }, - "paginationCompleteWhen": "receiveSpecificStatusCodes", - "statusCodesWhenComplete": "404", - "limitPagesFetched": true - } - } - } - }, - "id": "a2953ca3-e17c-4e83-8bf0-149587c14088", - "name": "Receive Status Code", - "type": "n8n-nodes-base.httpRequest", - "typeVersion": 4.1, - "position": [ - 980, - 2320 - ] - }, - { - "parameters": { - "url": "https://dummyjson.com/users", - "sendQuery": true, - "queryParameters": { - "parameters": [ - { - "name": "limit", - "value": "3" - } - ] - }, - "options": { - "response": { - "response": { - "neverError": true, - "responseFormat": "json" - } - }, - "pagination": { - "pagination": { - "parameters": { - "parameters": [ - { - "name": "skip", - "value": "={{ $pageCount * 3 }}" - } - ] - }, - "paginationCompleteWhen": "other", - "completeExpression": "={{ $response.statusCode === 404 }}" - } - } - } - }, - "id": "aad6795d-4156-445b-8b6c-968692ed3620", - "name": "Complete Expression", - "type": "n8n-nodes-base.httpRequest", - "typeVersion": 4.1, - "position": [ - 980, - 2500 - ] - }, - { - "parameters": { - "content": "### Next URL\nResponse Format: JSON", - "height": 223.6542431762359, - "width": 365.5274479049966 - }, - "id": "036cf1e4-0534-4422-9aea-36a9bb308e79", - "name": "Sticky Note", - "type": "n8n-nodes-base.stickyNote", - "typeVersion": 1, - "position": [ - 920, - 3100 - ] - }, - { - "parameters": { - "content": "### Update a Parameter in Each Request\nResponse Format: JSON", - "height": 1140.0832129820226, - "width": 354.2110090941684 - }, - "id": "e36564a0-d1d9-4f15-9c78-b4713f75b13f", - "name": "Sticky Note1", - "type": "n8n-nodes-base.stickyNote", - "typeVersion": 1, - "position": [ - 927, - 1901 - ] - }, - { - "parameters": { - "url": "https://dummyjson.com/users", - "sendQuery": true, - "queryParameters": { - "parameters": [ - { - "name": "limit", - "value": "4" - } - ] - }, - "options": { - "response": { - "response": { - "neverError": true, - "responseFormat": "text" - } - }, - "pagination": { - "pagination": { - "paginationMode": "responseContainsNextURL", - "nextURL": "={{ $response.headers[\"next-url\"] }}", - "paginationCompleteWhen": "receiveSpecificStatusCodes", - "statusCodesWhenComplete": "404" - } - } - } - }, - "id": "83ca19dd-f110-4b36-8c52-836c0b501a7e", - "name": "Response Empty - Text", - "type": "n8n-nodes-base.httpRequest", - "typeVersion": 4.1, - "position": [ - 980, - 3420 - ] - }, - { - "parameters": { - "url": "https://dummyjson.com/users", - "sendQuery": true, - "queryParameters": { - "parameters": [ - { - "name": "limit", - "value": "4" - } - ] - }, - "options": { - "response": { - "response": { - "responseFormat": "json" - } - }, - "pagination": { - "pagination": { - "paginationMode": "responseContainsNextURL", - "nextURL": "={{ $response.headers[\"next-url\"] }}", - "limitPagesFetched": true, - "maxRequests": 3 - } - } - } - }, - "id": "2b770b1b-0c66-4668-a037-f7b2986fd793", - "name": "Response Empty Next with Max Pages", - "type": "n8n-nodes-base.httpRequest", - "typeVersion": 4.1, - "position": [ - 980, - 3160 - ] - }, - { - "parameters": { - "content": "### Next URL\nResponse Format: Text", - "height": 388.6542431762359, - "width": 363.5274479049966 - }, - "id": "fee3b5a3-9af9-44d6-8814-a8334e29ed0e", - "name": "Sticky Note2", - "type": "n8n-nodes-base.stickyNote", - "typeVersion": 1, - "position": [ - 920, - 3360 - ] - }, - { - "parameters": { - "url": "https://dummyjson.com/users", - "sendQuery": true, - "queryParameters": { - "parameters": [ - { - "name": "limit", - "value": "3" - } - ] - }, - "options": { - "response": { - "response": { - "neverError": true, - "responseFormat": "json" - } - }, - "pagination": { - "pagination": { - "parameters": { - "parameters": [ - { - "name": "skip", - "value": "={{ $pageCount * 3 }}" - } - ] - }, - "paginationCompleteWhen": "other", - "completeExpression": "={{ $response.statusCode === 404 }}" - } - } - } - }, - "id": "d91beb91-8716-4817-a729-91114a8d4a63", - "name": "Complete Expression - JSON", - "type": "n8n-nodes-base.httpRequest", - "typeVersion": 4.1, - "position": [ - 980, - 1700 - ] - }, - { - "parameters": { - "content": "### Update a Parameter in Each Request\nResponse Format: JSON", - "height": 232.15942469988397, - "width": 323.21100909416833 - }, - "id": "693b1adb-1be8-4e87-bad8-23936c685155", - "name": "Sticky Note3", - "type": "n8n-nodes-base.stickyNote", - "typeVersion": 1, - "position": [ - 920, - 1632.366284408126 - ] - }, - { - "parameters": { - "url": "https://dummyjson.com/users", - "sendQuery": true, - "queryParameters": { - "parameters": [ - { - "name": "limit", - "value": "4" - } - ] - }, - "options": { - "response": { - "response": { - "fullResponse": true, - "neverError": true, - "responseFormat": "text" - } - }, - "pagination": { - "pagination": { - "paginationMode": "responseContainsNextURL", - "nextURL": "={{ $response.headers[\"next-url\"] }}", - "paginationCompleteWhen": "receiveSpecificStatusCodes", - "statusCodesWhenComplete": "404" - } - } - } - }, - "id": "72a3ce0d-f428-41cc-a93e-8692f5ed97f9", - "name": "Response Empty - Include Full Response", - "type": "n8n-nodes-base.httpRequest", - "typeVersion": 4.1, - "position": [ - 980, - 3600 - ] - }, - { - "parameters": { - "url": "https://dummyjson.com/users", - "sendQuery": true, - "queryParameters": { - "parameters": [ - { - "name": "limit", - "value": "3" - } - ] - }, - "options": { - "response": { - "response": { - "neverError": true, - "responseFormat": "json" - } - }, - "pagination": { - "pagination": { - "paginationMode": "off" - } - } - } - }, - "id": "b579b38a-ac67-40ab-ab82-b465dc6387dc", - "name": "Pagination Off", - "type": "n8n-nodes-base.httpRequest", - "typeVersion": 4.1, - "position": [ - 980, - 3820 - ] - }, - { - "parameters": { - "content": "### Pagination Off", - "height": 373, - "width": 363 - }, - "id": "601cef96-0ac0-4890-b1c3-8ca15fbc2571", - "name": "Sticky Note4", - "type": "n8n-nodes-base.stickyNote", - "typeVersion": 1, - "position": [ - 920, - 3780 - ] - }, - { - "parameters": { - "url": "https://dummyjson.com/users", - "sendQuery": true, - "queryParameters": { - "parameters": [ - { - "name": "limit", - "value": "3" - } - ] - }, - "options": { - "response": { - "response": { - "neverError": true, - "responseFormat": "json" - } - } - } - }, - "id": "bdd6cf22-746e-4fda-84b2-df178f5d3dab", - "name": "Pagination Not Set", - "type": "n8n-nodes-base.httpRequest", - "typeVersion": 4.1, - "position": [ - 980, - 4000 - ] - }, - { - "parameters": { - "content": "### Detect identical responses\nThrow then error", - "height": 232.15942469988397, - "width": 394.89100909416834 - }, - "id": "1e7bfcfb-93d0-4ee2-8c0f-380ee2dd7fcb", - "name": "Sticky Note5", - "type": "n8n-nodes-base.stickyNote", - "typeVersion": 1, - "position": [ - 920, - 4220 - ] - }, - { - "parameters": { - "fields": { - "values": [ - { - "name": "Error", - "stringValue": "={{ $json.error.name }}" - } - ] - }, - "include": "none", - "options": {} - }, - "id": "35a1f1f3-d701-4252-9dea-5b2b0ef7f32f", - "name": "Edit Fields", - "type": "n8n-nodes-base.set", - "typeVersion": 3.2, - "position": [ - 1160, - 4300 - ] - }, - { - "parameters": { - "url": "https://dummyjson.com/users", - "sendQuery": true, - "queryParameters": { - "parameters": [ - { - "name": "limit", - "value": "3" - } - ] - }, - "options": { - "response": { - "response": { - "responseFormat": "json" - } - }, - "pagination": { - "pagination": { - "parameters": { - "parameters": [ - { - "name": "does_not_matter", - "value": "0" - } - ] - } - } - } - } - }, - "id": "12f6310f-e88e-490f-9dd1-2012586bf9c9", - "name": "Loop", - "type": "n8n-nodes-base.httpRequest", - "typeVersion": 4.1, - "position": [ - 980, - 4300 - ], - "continueOnFail": true - }, - { - "parameters": { - "content": "### Next URL\nResponse Format: Autodetect\nActual Response Format: JSON", - "height": 650.4724697091658, - "width": 323.21100909416833 - }, - "id": "0074b955-3217-4fc9-b7c4-58f11fc323c1", - "name": "Sticky Note6", - "type": "n8n-nodes-base.stickyNote", - "typeVersion": 1, - "position": [ - 900, - 507.8499967658788 - ] - }, - { - "parameters": { - "content": "# Response Format: Autodetect\n", - "width": 545.8929725020898 - }, - "id": "e7b7440f-aad2-49df-9c10-695497aec7c5", - "name": "Sticky Note7", - "type": "n8n-nodes-base.stickyNote", - "typeVersion": 1, - "position": [ - 280, - 708 - ] - }, - { - "parameters": { - "content": "# Response Format: set", - "width": 545.8929725020898 - }, - "id": "1ad4fad8-4c66-4afe-8893-2727c852ba44", - "name": "Sticky Note8", - "type": "n8n-nodes-base.stickyNote", - "typeVersion": 1, - "position": [ - 300, - 1640 - ] - }, - { - "parameters": { - "url": "https://dummyjson.com/users", - "sendQuery": true, - "queryParameters": { - "parameters": [ - { - "name": "limit", - "value": "3" - } - ] - }, - "options": { - "response": { - "response": {} - }, - "pagination": { - "pagination": { - "paginationMode": "responseContainsNextURL", - "nextURL": "={{ $response.headers[\"next-url\"] }}", - "limitPagesFetched": true, - "maxRequests": 2 - } - } - } - }, - "id": "415e52cd-bdb4-42a8-af18-fec7eb9e6a1f", - "name": "Complete Expression - JSON Autodetect set", - "type": "n8n-nodes-base.httpRequest", - "typeVersion": 4.1, - "position": [ - 960, - 600 - ] - }, - { - "parameters": { - "url": "https://dummyjson.com/users", - "sendQuery": true, - "queryParameters": { - "parameters": [ - { - "name": "limit", - "value": "3" - } - ] - }, - "options": { - "pagination": { - "pagination": { - "paginationMode": "responseContainsNextURL", - "nextURL": "={{ $response.headers[\"next-url\"] }}", - "limitPagesFetched": true, - "maxRequests": 2 - } - } - } - }, - "id": "a111a0a4-ae9c-4b27-af04-5ab9584798ae", - "name": "Complete Expression - JSON unset", - "type": "n8n-nodes-base.httpRequest", - "typeVersion": 4.1, - "position": [ - 960, - 780 - ] - }, - { - "parameters": {}, - "id": "aaa4d56b-5d72-4ecb-bcc4-9ccdf0c7c139", - "name": "No Operation, do nothing1", - "type": "n8n-nodes-base.noOp", - "typeVersion": 1, - "position": [ - 500, - 2500 - ] - }, - { - "parameters": {}, - "id": "6fbde1fb-8f7d-4947-84f1-2695b919cc43", - "name": "Data 2", - "type": "n8n-nodes-base.manualTrigger", - "typeVersion": 1, - "position": [ - 200, - 1980 - ] - }, - { - "parameters": {}, - "id": "f13379f2-5867-46d9-9af1-48b9ff9524d0", - "name": "Data 1", - "type": "n8n-nodes-base.noOp", - "typeVersion": 1, - "position": [ - 520, - 960 - ] - }, - { - "parameters": { - "url": "https://dummyjson.com/users", - "sendQuery": true, - "queryParameters": { - "parameters": [ - { - "name": "limit", - "value": "4" - } - ] - }, - "sendHeaders": true, - "headerParameters": { - "parameters": [ - { - "name": "content-type", - "value": "text/plain" - } - ] - }, - "options": { - "response": { - "response": { - "neverError": true - } - }, - "pagination": { - "pagination": { - "paginationMode": "responseContainsNextURL", - "nextURL": "={{ $response.headers[\"next-url\"] }}", - "paginationCompleteWhen": "receiveSpecificStatusCodes", - "statusCodesWhenComplete": "404" - } - } - } - }, - "id": "bcbb8fe5-1613-4dc6-a92c-89f1415c1821", - "name": "Response Empty - Text1", - "type": "n8n-nodes-base.httpRequest", - "typeVersion": 4.1, - "position": [ - 960, - 1260 - ] - }, - { - "parameters": { - "content": "### Next URL\nResponse Format: Autodetect\nActual Response Format: text", - "height": 437.60980047313967, - "width": 323.31395441111135 - }, - "id": "4e73a489-5c9f-4b8f-a32f-ad6d91fc187a", - "name": "Sticky Note9", - "type": "n8n-nodes-base.stickyNote", - "typeVersion": 1, - "position": [ - 900, - 1173.7738085909446 - ] - }, - { - "parameters": { - "url": "https://dummyjson.com/users", - "sendQuery": true, - "queryParameters": { - "parameters": [ - { - "name": "limit", - "value": "4" - } - ] - }, - "sendHeaders": true, - "headerParameters": { - "parameters": [ - { - "name": "content-type", - "value": "text/plain" - } - ] - }, - "options": { - "response": { - "response": { - "fullResponse": true, - "neverError": true - } - }, - "pagination": { - "pagination": { - "paginationMode": "responseContainsNextURL", - "nextURL": "={{ $response.headers[\"next-url\"] }}", - "paginationCompleteWhen": "receiveSpecificStatusCodes", - "statusCodesWhenComplete": "404" - } - } - } - }, - "id": "c02661c0-b6e7-45f8-8049-ef1a97f4b590", - "name": "Response Empty - Include Full Response1", - "type": "n8n-nodes-base.httpRequest", - "typeVersion": 4.1, - "position": [ - 960, - 1440 - ] - }, - { - "parameters": { - "method": "POST", - "url": "https://dummyjson.com/users", - "sendBody": true, - "contentType": "multipart-form-data", - "bodyParameters": { - "parameters": [ - { - "name": "limit", - "value": "3" - }, - { - "name": "skip", - "value": "0" - } - ] - }, - "options": { - "response": { - "response": { - "responseFormat": "json" - } - }, - "pagination": { - "pagination": { - "parameters": { - "parameters": [ - { - "type": "body", - "name": "skip", - "value": "={{ $pageCount * 3 }}" - } - ] - }, - "limitPagesFetched": true, - "maxRequests": 3 - } - } - } - }, - "id": "69569627-0e1b-45e0-a279-bf53c3f99c8f", - "name": "POST Form Data", - "type": "n8n-nodes-base.httpRequest", - "typeVersion": 4.1, - "position": [ - 980, - 2860 - ] - }, - { - "parameters": { - "method": "POST", - "url": "https://dummyjson.com/users", - "sendBody": true, - "bodyParameters": { - "parameters": [ - { - "name": "limit", - "value": "3" - }, - { - "name": "skip", - "value": "0" - } - ] - }, - "options": { - "response": { - "response": { - "responseFormat": "json" - } - }, - "pagination": { - "pagination": { - "parameters": { - "parameters": [ - { - "type": "body", - "name": "skip", - "value": "={{ $pageCount * 3 }}" - } - ] - }, - "limitPagesFetched": true, - "maxRequests": 3 - } - } - } - }, - "id": "c68c8649-298e-42fe-bc61-df4a4b9d5c39", - "name": "POST JSON", - "type": "n8n-nodes-base.httpRequest", - "typeVersion": 4.1, - "position": [ - 980, - 2680 - ] - }, - { - "parameters": { - "url": "https://dummyjson.com/users", - "options": { - "pagination": { - "pagination": { - "paginationMode": "responseContainsNextURL", - "limitPagesFetched": true, - "maxRequests": 2 - } - } - } - }, - "id": "c004d7eb-d755-4d65-b359-6e0ddab0406d", - "name": "Complete Expression - JSON unset1", - "type": "n8n-nodes-base.httpRequest", - "typeVersion": 4.1, - "position": [ - 960, - 980 - ], - "onError": "continueRegularOutput" - } - ], - "pinData": { - "Page Limit": [ - { - "json": { - "id": 0 - } - }, - { - "json": { - "id": 1 - } - }, - { - "json": { - "id": 2 - } - }, - { - "json": { - "id": 3 - } - }, - { - "json": { - "id": 4 - } - }, - { - "json": { - "id": 5 - } - }, - { - "json": { - "id": 6 - } - }, - { - "json": { - "id": 7 - } - }, - { - "json": { - "id": 8 - } - } - ], - "Response Empty": [ - { - "json": { - "id": 0 - } - }, - { - "json": { - "id": 1 - } - }, - { - "json": { - "id": 2 - } - }, - { - "json": { - "id": 3 - } - }, - { - "json": { - "id": 4 - } - }, - { - "json": { - "id": 5 - } - }, - { - "json": { - "id": 6 - } - }, - { - "json": { - "id": 7 - } - }, - { - "json": { - "id": 8 - } - }, - { - "json": { - "id": 9 - } - }, - { - "json": { - "id": 10 - } - }, - { - "json": { - "id": 11 - } - }, - { - "json": { - "id": 12 - } - }, - { - "json": { - "id": 13 - } - }, - { - "json": { - "id": 14 - } - } - ], - "Receive Status Code": [ - { - "json": { - "id": 0 - } - }, - { - "json": { - "id": 1 - } - }, - { - "json": { - "id": 2 - } - }, - { - "json": { - "id": 3 - } - }, - { - "json": { - "id": 4 - } - }, - { - "json": { - "id": 5 - } - }, - { - "json": { - "id": 6 - } - }, - { - "json": { - "id": 7 - } - }, - { - "json": { - "id": 8 - } - }, - { - "json": { - "id": 9 - } - }, - { - "json": { - "id": 10 - } - }, - { - "json": { - "id": 11 - } - }, - { - "json": { - "id": 12 - } - }, - { - "json": { - "id": 13 - } - }, - { - "json": { - "id": 14 - } - } - ], - "Complete Expression": [ - { - "json": { - "id": 0 - } - }, - { - "json": { - "id": 1 - } - }, - { - "json": { - "id": 2 - } - }, - { - "json": { - "id": 3 - } - }, - { - "json": { - "id": 4 - } - }, - { - "json": { - "id": 5 - } - }, - { - "json": { - "id": 6 - } - }, - { - "json": { - "id": 7 - } - }, - { - "json": { - "id": 8 - } - }, - { - "json": { - "id": 9 - } - }, - { - "json": { - "id": 10 - } - }, - { - "json": { - "id": 11 - } - }, - { - "json": { - "id": 12 - } - }, - { - "json": { - "id": 13 - } - }, - { - "json": { - "id": 14 - } - } - ], - "Response Empty - Text": [ - { - "json": { - "data": "[{\"id\":0},{\"id\":1},{\"id\":2},{\"id\":3}]" - } - }, - { - "json": { - "data": "[{\"id\":4},{\"id\":5},{\"id\":6},{\"id\":7}]" - } - }, - { - "json": { - "data": "[{\"id\":8},{\"id\":9},{\"id\":10},{\"id\":11}]" - } - }, - { - "json": { - "data": "[{\"id\":12},{\"id\":13},{\"id\":14}]" - } - }, - { - "json": { - "data": "[]" - } - } - ], - "Response Empty Next with Max Pages": [ - { - "json": { - "id": 0 - } - }, - { - "json": { - "id": 1 - } - }, - { - "json": { - "id": 2 - } - }, - { - "json": { - "id": 3 - } - }, - { - "json": { - "id": 4 - } - }, - { - "json": { - "id": 5 - } - }, - { - "json": { - "id": 6 - } - }, - { - "json": { - "id": 7 - } - }, - { - "json": { - "id": 8 - } - }, - { - "json": { - "id": 9 - } - }, - { - "json": { - "id": 10 - } - }, - { - "json": { - "id": 11 - } - } - ], - "Response Empty - Include Full Response": [ - { - "json": { - "data": "[{\"id\":0},{\"id\":1},{\"id\":2},{\"id\":3}]", - "headers": { - "content-type": "application/json", - "next-url": "https://dummyjson.com/users?skip=4&limit=4" - }, - "statusCode": 200, - "statusMessage": null - } - }, - { - "json": { - "data": "[{\"id\":4},{\"id\":5},{\"id\":6},{\"id\":7}]", - "headers": { - "content-type": "application/json", - "next-url": "https://dummyjson.com/users?skip=8&limit=4" - }, - "statusCode": 200, - "statusMessage": null - } - }, - { - "json": { - "data": "[{\"id\":8},{\"id\":9},{\"id\":10},{\"id\":11}]", - "headers": { - "content-type": "application/json", - "next-url": "https://dummyjson.com/users?skip=12&limit=4" - }, - "statusCode": 200, - "statusMessage": null - } - }, - { - "json": { - "data": "[{\"id\":12},{\"id\":13},{\"id\":14}]", - "headers": { - "content-type": "application/json", - "next-url": "https://dummyjson.com/users?skip=16&limit=4" - }, - "statusCode": 200, - "statusMessage": null - } - }, - { - "json": { - "data": "[]", - "headers": { - "content-type": "application/json", - "next-url": "https://dummyjson.com/users?skip=20&limit=4" - }, - "statusCode": 404, - "statusMessage": null - } - } - ], - "Complete Expression - JSON": [ - { - "json": { - "id": 0 - } - }, - { - "json": { - "id": 1 - } - }, - { - "json": { - "id": 2 - } - }, - { - "json": { - "id": 3 - } - }, - { - "json": { - "id": 4 - } - }, - { - "json": { - "id": 5 - } - }, - { - "json": { - "id": 6 - } - }, - { - "json": { - "id": 7 - } - }, - { - "json": { - "id": 8 - } - }, - { - "json": { - "id": 9 - } - }, - { - "json": { - "id": 10 - } - }, - { - "json": { - "id": 11 - } - }, - { - "json": { - "id": 12 - } - }, - { - "json": { - "id": 13 - } - }, - { - "json": { - "id": 14 - } - } - ], - "Pagination Off": [ - { - "json": { - "id": 0 - } - }, - { - "json": { - "id": 1 - } - }, - { - "json": { - "id": 2 - } - } - ], - "Pagination Not Set": [ - { - "json": { - "id": 0 - } - }, - { - "json": { - "id": 1 - } - }, - { - "json": { - "id": 2 - } - } - ], - "Edit Fields": [ - { - "json": { - "Error": "NodeOperationError" - } - } - ], - "Complete Expression - JSON Autodetect set": [ - { - "json": { - "id": 0 - } - }, - { - "json": { - "id": 1 - } - }, - { - "json": { - "id": 2 - } - }, - { - "json": { - "id": 3 - } - }, - { - "json": { - "id": 4 - } - }, - { - "json": { - "id": 5 - } - } - ], - "Complete Expression - JSON unset": [ - { - "json": { - "id": 0 - } - }, - { - "json": { - "id": 1 - } - }, - { - "json": { - "id": 2 - } - }, - { - "json": { - "id": 3 - } - }, - { - "json": { - "id": 4 - } - }, - { - "json": { - "id": 5 - } - } - ], - "Response Empty - Text1": [ - { - "json": { - "data": "[{\"id\":0},{\"id\":1},{\"id\":2},{\"id\":3}]" - } - }, - { - "json": { - "data": "[{\"id\":4},{\"id\":5},{\"id\":6},{\"id\":7}]" - } - }, - { - "json": { - "data": "[{\"id\":8},{\"id\":9},{\"id\":10},{\"id\":11}]" - } - }, - { - "json": { - "data": "[{\"id\":12},{\"id\":13},{\"id\":14}]" - } - }, - { - "json": { - "data": "[]" - } - } - ], - "Response Empty - Include Full Response1": [ - { - "json": { - "data": "[{\"id\":0},{\"id\":1},{\"id\":2},{\"id\":3}]", - "headers": { - "content-type": "text/plain", - "next-url": "https://dummyjson.com/users?skip=4&limit=4" - }, - "statusCode": 200, - "statusMessage": null - } - }, - { - "json": { - "data": "[{\"id\":4},{\"id\":5},{\"id\":6},{\"id\":7}]", - "headers": { - "content-type": "text/plain", - "next-url": "https://dummyjson.com/users?skip=8&limit=4" - }, - "statusCode": 200, - "statusMessage": null - } - }, - { - "json": { - "data": "[{\"id\":8},{\"id\":9},{\"id\":10},{\"id\":11}]", - "headers": { - "content-type": "text/plain", - "next-url": "https://dummyjson.com/users?skip=12&limit=4" - }, - "statusCode": 200, - "statusMessage": null - } - }, - { - "json": { - "data": "[{\"id\":12},{\"id\":13},{\"id\":14}]", - "headers": { - "content-type": "text/plain", - "next-url": "https://dummyjson.com/users?skip=16&limit=4" - }, - "statusCode": 200, - "statusMessage": null - } - }, - { - "json": { - "data": "[]", - "headers": { - "content-type": "text/plain", - "next-url": "https://dummyjson.com/users?skip=20&limit=4" - }, - "statusCode": 404, - "statusMessage": null - } - } - ], - "POST Form Data": [ - { - "json": { - "id": 0 - } - }, - { - "json": { - "id": 1 - } - }, - { - "json": { - "id": 2 - } - }, - { - "json": { - "id": 3 - } - }, - { - "json": { - "id": 4 - } - }, - { - "json": { - "id": 5 - } - }, - { - "json": { - "id": 6 - } - }, - { - "json": { - "id": 7 - } - }, - { - "json": { - "id": 8 - } - } - ], - "POST JSON": [ - { - "json": { - "id": 0 - } - }, - { - "json": { - "id": 1 - } - }, - { - "json": { - "id": 2 - } - }, - { - "json": { - "id": 3 - } - }, - { - "json": { - "id": 4 - } - }, - { - "json": { - "id": 5 - } - }, - { - "json": { - "id": 6 - } - }, - { - "json": { - "id": 7 - } - }, - { - "json": { - "id": 8 - } - } - ], - "Complete Expression - JSON unset1": [ - { - "json": { - "error": { - "message": "'' is not a valid URL.", - "name": "NodeOperationError", - "description": "Make sure the \"Next URL\" parameter evaluates to a valid URL.", - "context": {} - } - } - } - ] - }, - "connections": { - "Loop": { - "main": [ - [ - { - "node": "Edit Fields", - "type": "main", - "index": 0 - } - ] - ] - }, - "No Operation, do nothing1": { - "main": [ - [ - { - "node": "Receive Status Code", - "type": "main", - "index": 0 - }, - { - "node": "Complete Expression", - "type": "main", - "index": 0 - }, - { - "node": "Response Empty Next with Max Pages", - "type": "main", - "index": 0 - }, - { - "node": "Response Empty - Text", - "type": "main", - "index": 0 - }, - { - "node": "Response Empty - Include Full Response", - "type": "main", - "index": 0 - }, - { - "node": "Pagination Off", - "type": "main", - "index": 0 - }, - { - "node": "Pagination Not Set", - "type": "main", - "index": 0 - }, - { - "node": "Loop", - "type": "main", - "index": 0 - }, - { - "node": "Response Empty", - "type": "main", - "index": 0 - }, - { - "node": "Page Limit", - "type": "main", - "index": 0 - }, - { - "node": "Complete Expression - JSON", - "type": "main", - "index": 0 - }, - { - "node": "POST JSON", - "type": "main", - "index": 0 - }, - { - "node": "POST Form Data", - "type": "main", - "index": 0 - } - ] - ] - }, - "Data 2": { - "main": [ - [ - { - "node": "Data 1", - "type": "main", - "index": 0 - }, - { - "node": "No Operation, do nothing1", - "type": "main", - "index": 0 - } - ] - ] - }, - "Data 1": { - "main": [ - [ - { - "node": "Complete Expression - JSON Autodetect set", - "type": "main", - "index": 0 - }, - { - "node": "Complete Expression - JSON unset", - "type": "main", - "index": 0 - }, - { - "node": "Response Empty - Text1", - "type": "main", - "index": 0 - }, - { - "node": "Response Empty - Include Full Response1", - "type": "main", - "index": 0 - }, - { - "node": "Complete Expression - JSON unset1", - "type": "main", - "index": 0 - } - ] - ] - } - }, - "active": false, - "settings": { - "executionOrder": "v1" - }, - "versionId": "5189ec73-b659-4740-83f5-d5bf3995f5df", - "meta": { - "templateCredsSetupCompleted": true, - "instanceId": "27cc9b56542ad45b38725555722c50a1c3fee1670bbb67980558314ee08517c4" - }, - "id": "4WORX7JyBFP94dXM", - "tags": [] + "name": "HTTP Pagination Test", + "nodes": [ + { + "parameters": { + "url": "https://dummyjson.com/users", + "sendQuery": true, + "queryParameters": { + "parameters": [ + { + "name": "limit", + "value": "3" + } + ] + }, + "options": { + "response": { + "response": { + "responseFormat": "json" + } + }, + "pagination": { + "pagination": { + "parameters": { + "parameters": [ + { + "name": "skip", + "value": "={{ $pageCount * 3 }}" + } + ] + }, + "limitPagesFetched": true, + "maxRequests": 3 + } + } + } + }, + "id": "363a12c4-5af8-411e-a0f9-071e07a8ec48", + "name": "Page Limit", + "type": "n8n-nodes-base.httpRequest", + "typeVersion": 4.1, + "position": [80, 1480] + }, + { + "parameters": { + "url": "https://dummyjson.com/users", + "sendQuery": true, + "queryParameters": { + "parameters": [ + { + "name": "limit", + "value": "3" + } + ] + }, + "options": { + "response": { + "response": { + "neverError": true, + "responseFormat": "json" + } + }, + "pagination": { + "pagination": { + "parameters": { + "parameters": [ + { + "name": "skip", + "value": "={{ $pageCount * 3 }}" + } + ] + } + } + } + } + }, + "id": "834de1fa-7568-4f79-8ae5-a5241ed92876", + "name": "Response Empty", + "type": "n8n-nodes-base.httpRequest", + "typeVersion": 4.1, + "position": [80, 1820] + }, + { + "parameters": { + "url": "https://dummyjson.com/users", + "sendQuery": true, + "queryParameters": { + "parameters": [ + { + "name": "limit", + "value": "3" + } + ] + }, + "options": { + "response": { + "response": { + "responseFormat": "json" + } + }, + "pagination": { + "pagination": { + "parameters": { + "parameters": [ + { + "name": "skip", + "value": "={{ $pageCount * 3 }}" + } + ] + }, + "paginationCompleteWhen": "receiveSpecificStatusCodes", + "statusCodesWhenComplete": "404", + "limitPagesFetched": true + } + } + } + }, + "id": "97ba6e36-8fea-424d-a1a1-2c34dc573e65", + "name": "Receive Status Code", + "type": "n8n-nodes-base.httpRequest", + "typeVersion": 4.1, + "position": [80, 1980] + }, + { + "parameters": { + "url": "https://dummyjson.com/users", + "sendQuery": true, + "queryParameters": { + "parameters": [ + { + "name": "limit", + "value": "3" + } + ] + }, + "options": { + "response": { + "response": { + "neverError": true, + "responseFormat": "json" + } + }, + "pagination": { + "pagination": { + "parameters": { + "parameters": [ + { + "name": "skip", + "value": "={{ $pageCount * 3 }}" + } + ] + }, + "paginationCompleteWhen": "other", + "completeExpression": "={{ $response.statusCode === 404 }}" + } + } + } + }, + "id": "446a7da0-8c23-4421-8bf4-0028d4c46919", + "name": "Complete Expression", + "type": "n8n-nodes-base.httpRequest", + "typeVersion": 4.1, + "position": [80, 2160] + }, + { + "parameters": { + "content": "### Next URL\nResponse Format: JSON", + "height": 223.6542431762359, + "width": 365.5274479049966 + }, + "id": "4277a919-66a0-4598-a51a-fb28be9838fe", + "name": "Sticky Note", + "type": "n8n-nodes-base.stickyNote", + "typeVersion": 1, + "position": [20, 2800] + }, + { + "parameters": { + "content": "### Update a Parameter in Each Request\nResponse Format: JSON", + "height": 1360, + "width": 354 + }, + "id": "14589c89-65e4-4ee3-bbbc-5112e9a247b5", + "name": "Sticky Note1", + "type": "n8n-nodes-base.stickyNote", + "typeVersion": 1, + "position": [20, 1400] + }, + { + "parameters": { + "url": "https://dummyjson.com/users", + "sendQuery": true, + "queryParameters": { + "parameters": [ + { + "name": "limit", + "value": "4" + } + ] + }, + "options": { + "response": { + "response": { + "neverError": true, + "responseFormat": "text" + } + }, + "pagination": { + "pagination": { + "paginationMode": "responseContainsNextURL", + "nextURL": "={{ $response.headers[\"next-url\"] }}", + "paginationCompleteWhen": "receiveSpecificStatusCodes", + "statusCodesWhenComplete": "404" + } + } + } + }, + "id": "87dfc0aa-3cda-465e-9a89-4c78ba8dc91d", + "name": "Response Empty - Text", + "type": "n8n-nodes-base.httpRequest", + "typeVersion": 4.1, + "position": [80, 3120] + }, + { + "parameters": { + "url": "https://dummyjson.com/users", + "sendQuery": true, + "queryParameters": { + "parameters": [ + { + "name": "limit", + "value": "4" + } + ] + }, + "options": { + "response": { + "response": { + "responseFormat": "json" + } + }, + "pagination": { + "pagination": { + "paginationMode": "responseContainsNextURL", + "nextURL": "={{ $response.headers[\"next-url\"] }}", + "limitPagesFetched": true, + "maxRequests": 3 + } + } + } + }, + "id": "1d5f7772-a646-4ce2-8e1d-10d14b66a4b1", + "name": "Response Empty Next with Max Pages", + "type": "n8n-nodes-base.httpRequest", + "typeVersion": 4.1, + "position": [80, 2860] + }, + { + "parameters": { + "content": "### Next URL\nResponse Format: Text", + "height": 388.6542431762359, + "width": 363.5274479049966 + }, + "id": "f7f7affa-96dc-4845-856a-40842131cf1c", + "name": "Sticky Note2", + "type": "n8n-nodes-base.stickyNote", + "typeVersion": 1, + "position": [20, 3060] + }, + { + "parameters": { + "url": "https://dummyjson.com/users", + "sendQuery": true, + "queryParameters": { + "parameters": [ + { + "name": "limit", + "value": "3" + } + ] + }, + "options": { + "response": { + "response": { + "neverError": true, + "responseFormat": "json" + } + }, + "pagination": { + "pagination": { + "parameters": { + "parameters": [ + { + "name": "skip", + "value": "={{ $pageCount * 3 }}" + } + ] + }, + "paginationCompleteWhen": "other", + "completeExpression": "={{ $response.statusCode === 404 }}" + } + } + } + }, + "id": "40299b65-81a6-4a7a-b74f-5ba01f01cafc", + "name": "Complete Expression - JSON", + "type": "n8n-nodes-base.httpRequest", + "typeVersion": 4.1, + "position": [80, 1200] + }, + { + "parameters": { + "content": "### Update a Parameter in Each Request\nResponse Format: JSON", + "height": 232.15942469988397, + "width": 323.21100909416833 + }, + "id": "61d8b266-f399-4a3b-882d-90db2764833b", + "name": "Sticky Note3", + "type": "n8n-nodes-base.stickyNote", + "typeVersion": 1, + "position": [20, 1140] + }, + { + "parameters": { + "url": "https://dummyjson.com/users", + "sendQuery": true, + "queryParameters": { + "parameters": [ + { + "name": "limit", + "value": "4" + } + ] + }, + "options": { + "response": { + "response": { + "fullResponse": true, + "neverError": true, + "responseFormat": "text" + } + }, + "pagination": { + "pagination": { + "paginationMode": "responseContainsNextURL", + "nextURL": "={{ $response.headers[\"next-url\"] }}", + "paginationCompleteWhen": "receiveSpecificStatusCodes", + "statusCodesWhenComplete": "404" + } + } + } + }, + "id": "570660cc-5361-4b75-9222-08c006e83937", + "name": "Response Empty - Include Full Response", + "type": "n8n-nodes-base.httpRequest", + "typeVersion": 4.1, + "position": [80, 3300] + }, + { + "parameters": { + "url": "https://dummyjson.com/users", + "sendQuery": true, + "queryParameters": { + "parameters": [ + { + "name": "limit", + "value": "3" + } + ] + }, + "options": { + "response": { + "response": { + "neverError": true, + "responseFormat": "json" + } + }, + "pagination": { + "pagination": { + "paginationMode": "off" + } + } + } + }, + "id": "6418e1dc-e637-47e5-8d40-51b74c618c5d", + "name": "Pagination Off", + "type": "n8n-nodes-base.httpRequest", + "typeVersion": 4.1, + "position": [80, 3520] + }, + { + "parameters": { + "content": "### Pagination Off", + "height": 373, + "width": 363 + }, + "id": "8144d108-1e1b-473c-bc69-ff233fc809ef", + "name": "Sticky Note4", + "type": "n8n-nodes-base.stickyNote", + "typeVersion": 1, + "position": [20, 3480] + }, + { + "parameters": { + "url": "https://dummyjson.com/users", + "sendQuery": true, + "queryParameters": { + "parameters": [ + { + "name": "limit", + "value": "3" + } + ] + }, + "options": { + "response": { + "response": { + "neverError": true, + "responseFormat": "json" + } + } + } + }, + "id": "f94a61b9-8bff-49d4-8007-30ba93cfa749", + "name": "Pagination Not Set", + "type": "n8n-nodes-base.httpRequest", + "typeVersion": 4.1, + "position": [80, 3700] + }, + { + "parameters": { + "content": "### Detect identical responses\nThrow then error", + "height": 232.15942469988397, + "width": 394.89100909416834 + }, + "id": "74f93f2a-a399-46d6-a953-4de7751e3fcd", + "name": "Sticky Note5", + "type": "n8n-nodes-base.stickyNote", + "typeVersion": 1, + "position": [20, 3920] + }, + { + "parameters": { + "fields": { + "values": [ + { + "name": "Error", + "stringValue": "={{ $json.error.name }}" + } + ] + }, + "include": "none", + "options": {} + }, + "id": "53bfa924-95cd-40da-bd31-d4ed3669fedc", + "name": "Edit Fields", + "type": "n8n-nodes-base.set", + "typeVersion": 3.2, + "position": [260, 4000] + }, + { + "parameters": { + "url": "https://dummyjson.com/users", + "sendQuery": true, + "queryParameters": { + "parameters": [ + { + "name": "limit", + "value": "3" + } + ] + }, + "options": { + "response": { + "response": { + "responseFormat": "json" + } + }, + "pagination": { + "pagination": { + "parameters": { + "parameters": [ + { + "name": "does_not_matter", + "value": "0" + } + ] + } + } + } + } + }, + "id": "be59f9c2-f2ad-4c68-b3c4-80038660ece7", + "name": "Loop", + "type": "n8n-nodes-base.httpRequest", + "typeVersion": 4.1, + "position": [80, 4000], + "continueOnFail": true + }, + { + "parameters": { + "content": "### Next URL\nResponse Format: Autodetect\nActual Response Format: JSON", + "height": 650.4724697091658, + "width": 323.21100909416833 + }, + "id": "46d75487-5549-4e98-bf7e-09c7805908af", + "name": "Sticky Note6", + "type": "n8n-nodes-base.stickyNote", + "typeVersion": 1, + "position": [0, 0] + }, + { + "parameters": { + "content": "# Response Format: Autodetect\n", + "width": 545.8929725020898 + }, + "id": "1f16875c-f65b-4c00-9718-b0b44f9cf821", + "name": "Sticky Note7", + "type": "n8n-nodes-base.stickyNote", + "typeVersion": 1, + "position": [-620, 220] + }, + { + "parameters": { + "content": "# Response Format: set", + "width": 545.8929725020898 + }, + "id": "a609821f-3f0a-4718-a031-b6d2740e01bc", + "name": "Sticky Note8", + "type": "n8n-nodes-base.stickyNote", + "typeVersion": 1, + "position": [-600, 1140] + }, + { + "parameters": { + "url": "https://dummyjson.com/users", + "sendQuery": true, + "queryParameters": { + "parameters": [ + { + "name": "limit", + "value": "3" + } + ] + }, + "options": { + "response": { + "response": {} + }, + "pagination": { + "pagination": { + "paginationMode": "responseContainsNextURL", + "nextURL": "={{ $response.headers[\"next-url\"] }}", + "limitPagesFetched": true, + "maxRequests": 2 + } + } + } + }, + "id": "d8185b9f-a2ec-484e-b57c-6ac6b7ac9d57", + "name": "Complete Expression - JSON Autodetect set", + "type": "n8n-nodes-base.httpRequest", + "typeVersion": 4.1, + "position": [60, 100] + }, + { + "parameters": { + "url": "https://dummyjson.com/users", + "sendQuery": true, + "queryParameters": { + "parameters": [ + { + "name": "limit", + "value": "3" + } + ] + }, + "options": { + "pagination": { + "pagination": { + "paginationMode": "responseContainsNextURL", + "nextURL": "={{ $response.headers[\"next-url\"] }}", + "limitPagesFetched": true, + "maxRequests": 2 + } + } + } + }, + "id": "b29a2d0b-43aa-467e-a654-9716c445a6b0", + "name": "Complete Expression - JSON unset", + "type": "n8n-nodes-base.httpRequest", + "typeVersion": 4.1, + "position": [60, 280] + }, + { + "parameters": {}, + "id": "08f83213-2e7e-487b-90af-f0acba0c5fc7", + "name": "No Operation, do nothing1", + "type": "n8n-nodes-base.noOp", + "typeVersion": 1, + "position": [-400, 2000] + }, + { + "parameters": {}, + "id": "a97d0a1b-2bce-42de-ada9-61eabee947dd", + "name": "Data 2", + "type": "n8n-nodes-base.manualTrigger", + "typeVersion": 1, + "position": [-700, 1480] + }, + { + "parameters": {}, + "id": "097086b0-6594-4a45-9bcf-0f8bcb61283a", + "name": "Data 1", + "type": "n8n-nodes-base.noOp", + "typeVersion": 1, + "position": [-380, 460] + }, + { + "parameters": { + "url": "https://dummyjson.com/users", + "sendQuery": true, + "queryParameters": { + "parameters": [ + { + "name": "limit", + "value": "4" + } + ] + }, + "sendHeaders": true, + "headerParameters": { + "parameters": [ + { + "name": "content-type", + "value": "text/plain" + } + ] + }, + "options": { + "response": { + "response": { + "neverError": true + } + }, + "pagination": { + "pagination": { + "paginationMode": "responseContainsNextURL", + "nextURL": "={{ $response.headers[\"next-url\"] }}", + "paginationCompleteWhen": "receiveSpecificStatusCodes", + "statusCodesWhenComplete": "404" + } + } + } + }, + "id": "59015f28-eba8-483e-ab6b-64a0251c1146", + "name": "Response Empty - Text1", + "type": "n8n-nodes-base.httpRequest", + "typeVersion": 4.1, + "position": [60, 760] + }, + { + "parameters": { + "content": "### Next URL\nResponse Format: Autodetect\nActual Response Format: text", + "height": 437.60980047313967, + "width": 323.31395441111135 + }, + "id": "065479b1-4da7-4704-81d2-d682aa4afc8f", + "name": "Sticky Note9", + "type": "n8n-nodes-base.stickyNote", + "typeVersion": 1, + "position": [0, 680] + }, + { + "parameters": { + "url": "https://dummyjson.com/users", + "sendQuery": true, + "queryParameters": { + "parameters": [ + { + "name": "limit", + "value": "4" + } + ] + }, + "sendHeaders": true, + "headerParameters": { + "parameters": [ + { + "name": "content-type", + "value": "text/plain" + } + ] + }, + "options": { + "response": { + "response": { + "fullResponse": true, + "neverError": true + } + }, + "pagination": { + "pagination": { + "paginationMode": "responseContainsNextURL", + "nextURL": "={{ $response.headers[\"next-url\"] }}", + "paginationCompleteWhen": "receiveSpecificStatusCodes", + "statusCodesWhenComplete": "404" + } + } + } + }, + "id": "6788ee1a-0816-427e-aa65-c110ecae9500", + "name": "Response Empty - Include Full Response1", + "type": "n8n-nodes-base.httpRequest", + "typeVersion": 4.1, + "position": [60, 940] + }, + { + "parameters": { + "method": "POST", + "url": "https://dummyjson.com/users", + "sendBody": true, + "contentType": "multipart-form-data", + "bodyParameters": { + "parameters": [ + { + "name": "limit", + "value": "3" + }, + { + "name": "skip", + "value": "0" + } + ] + }, + "options": { + "response": { + "response": { + "responseFormat": "json" + } + }, + "pagination": { + "pagination": { + "parameters": { + "parameters": [ + { + "type": "body", + "name": "skip", + "value": "={{ $pageCount * 3 }}" + } + ] + }, + "limitPagesFetched": true, + "maxRequests": 3 + } + } + } + }, + "id": "7c3ae844-8f2f-4e38-972f-54a56bc71b46", + "name": "POST Form Data", + "type": "n8n-nodes-base.httpRequest", + "typeVersion": 4.1, + "position": [80, 2520] + }, + { + "parameters": { + "method": "POST", + "url": "https://dummyjson.com/users", + "sendBody": true, + "bodyParameters": { + "parameters": [ + { + "name": "limit", + "value": "3" + }, + { + "name": "skip", + "value": "0" + } + ] + }, + "options": { + "response": { + "response": { + "responseFormat": "json" + } + }, + "pagination": { + "pagination": { + "parameters": { + "parameters": [ + { + "type": "body", + "name": "skip", + "value": "={{ $pageCount * 3 }}" + } + ] + }, + "limitPagesFetched": true, + "maxRequests": 3 + } + } + } + }, + "id": "0e9bbc1b-902a-40ad-be73-709ce4917422", + "name": "POST JSON", + "type": "n8n-nodes-base.httpRequest", + "typeVersion": 4.1, + "position": [80, 2340] + }, + { + "parameters": { + "url": "https://dummyjson.com/users", + "options": { + "pagination": { + "pagination": { + "paginationMode": "responseContainsNextURL", + "limitPagesFetched": true, + "maxRequests": 2 + } + } + } + }, + "id": "c4d85fd5-09c4-4688-9e2d-c5711d5d5b59", + "name": "Complete Expression - JSON unset1", + "type": "n8n-nodes-base.httpRequest", + "typeVersion": 4.1, + "position": [60, 480], + "onError": "continueRegularOutput" + }, + { + "parameters": { + "url": "https://dummyjson.com/users", + "sendQuery": true, + "queryParameters": { + "parameters": [ + { + "name": "limit", + "value": "3" + } + ] + }, + "options": { + "response": { + "response": { + "responseFormat": "json" + } + }, + "pagination": { + "pagination": { + "parameters": { + "parameters": [ + { + "name": "skip", + "value": "={{ $pageCount * 3 }}" + } + ] + }, + "limitPagesFetched": true, + "maxRequests": "={{ 3 }}" + } + } + } + }, + "id": "cd885033-15a6-4102-bcc6-f31555a86c34", + "name": "Page Limit Expression", + "type": "n8n-nodes-base.httpRequest", + "typeVersion": 4.1, + "position": [240, 1660] + }, + { + "parameters": { + "assignments": { + "assignments": [ + { + "id": "d3f0ff85-a900-447e-bc50-1ed1d0277a59", + "name": "pageLimit", + "value": 3, + "type": "number" + } + ] + }, + "options": {} + }, + "type": "n8n-nodes-base.set", + "typeVersion": 3.4, + "position": [80, 1660], + "id": "d5a16020-25e6-4756-be2e-0203345651b3", + "name": "Set Page Limit" + } + ], + "pinData": { + "Page Limit": [ + { + "json": { + "id": 0 + } + }, + { + "json": { + "id": 1 + } + }, + { + "json": { + "id": 2 + } + }, + { + "json": { + "id": 3 + } + }, + { + "json": { + "id": 4 + } + }, + { + "json": { + "id": 5 + } + }, + { + "json": { + "id": 6 + } + }, + { + "json": { + "id": 7 + } + }, + { + "json": { + "id": 8 + } + } + ], + "Response Empty": [ + { + "json": { + "id": 0 + } + }, + { + "json": { + "id": 1 + } + }, + { + "json": { + "id": 2 + } + }, + { + "json": { + "id": 3 + } + }, + { + "json": { + "id": 4 + } + }, + { + "json": { + "id": 5 + } + }, + { + "json": { + "id": 6 + } + }, + { + "json": { + "id": 7 + } + }, + { + "json": { + "id": 8 + } + }, + { + "json": { + "id": 9 + } + }, + { + "json": { + "id": 10 + } + }, + { + "json": { + "id": 11 + } + }, + { + "json": { + "id": 12 + } + }, + { + "json": { + "id": 13 + } + }, + { + "json": { + "id": 14 + } + } + ], + "Receive Status Code": [ + { + "json": { + "id": 0 + } + }, + { + "json": { + "id": 1 + } + }, + { + "json": { + "id": 2 + } + }, + { + "json": { + "id": 3 + } + }, + { + "json": { + "id": 4 + } + }, + { + "json": { + "id": 5 + } + }, + { + "json": { + "id": 6 + } + }, + { + "json": { + "id": 7 + } + }, + { + "json": { + "id": 8 + } + }, + { + "json": { + "id": 9 + } + }, + { + "json": { + "id": 10 + } + }, + { + "json": { + "id": 11 + } + }, + { + "json": { + "id": 12 + } + }, + { + "json": { + "id": 13 + } + }, + { + "json": { + "id": 14 + } + } + ], + "Complete Expression": [ + { + "json": { + "id": 0 + } + }, + { + "json": { + "id": 1 + } + }, + { + "json": { + "id": 2 + } + }, + { + "json": { + "id": 3 + } + }, + { + "json": { + "id": 4 + } + }, + { + "json": { + "id": 5 + } + }, + { + "json": { + "id": 6 + } + }, + { + "json": { + "id": 7 + } + }, + { + "json": { + "id": 8 + } + }, + { + "json": { + "id": 9 + } + }, + { + "json": { + "id": 10 + } + }, + { + "json": { + "id": 11 + } + }, + { + "json": { + "id": 12 + } + }, + { + "json": { + "id": 13 + } + }, + { + "json": { + "id": 14 + } + } + ], + "Response Empty - Text": [ + { + "json": { + "data": "[{\"id\":0},{\"id\":1},{\"id\":2},{\"id\":3}]" + } + }, + { + "json": { + "data": "[{\"id\":4},{\"id\":5},{\"id\":6},{\"id\":7}]" + } + }, + { + "json": { + "data": "[{\"id\":8},{\"id\":9},{\"id\":10},{\"id\":11}]" + } + }, + { + "json": { + "data": "[{\"id\":12},{\"id\":13},{\"id\":14}]" + } + }, + { + "json": { + "data": "[]" + } + } + ], + "Response Empty Next with Max Pages": [ + { + "json": { + "id": 0 + } + }, + { + "json": { + "id": 1 + } + }, + { + "json": { + "id": 2 + } + }, + { + "json": { + "id": 3 + } + }, + { + "json": { + "id": 4 + } + }, + { + "json": { + "id": 5 + } + }, + { + "json": { + "id": 6 + } + }, + { + "json": { + "id": 7 + } + }, + { + "json": { + "id": 8 + } + }, + { + "json": { + "id": 9 + } + }, + { + "json": { + "id": 10 + } + }, + { + "json": { + "id": 11 + } + } + ], + "Response Empty - Include Full Response": [ + { + "json": { + "data": "[{\"id\":0},{\"id\":1},{\"id\":2},{\"id\":3}]", + "headers": { + "content-type": "application/json", + "next-url": "https://dummyjson.com/users?skip=4&limit=4" + }, + "statusCode": 200, + "statusMessage": null + } + }, + { + "json": { + "data": "[{\"id\":4},{\"id\":5},{\"id\":6},{\"id\":7}]", + "headers": { + "content-type": "application/json", + "next-url": "https://dummyjson.com/users?skip=8&limit=4" + }, + "statusCode": 200, + "statusMessage": null + } + }, + { + "json": { + "data": "[{\"id\":8},{\"id\":9},{\"id\":10},{\"id\":11}]", + "headers": { + "content-type": "application/json", + "next-url": "https://dummyjson.com/users?skip=12&limit=4" + }, + "statusCode": 200, + "statusMessage": null + } + }, + { + "json": { + "data": "[{\"id\":12},{\"id\":13},{\"id\":14}]", + "headers": { + "content-type": "application/json", + "next-url": "https://dummyjson.com/users?skip=16&limit=4" + }, + "statusCode": 200, + "statusMessage": null + } + }, + { + "json": { + "data": "[]", + "headers": { + "content-type": "application/json", + "next-url": "https://dummyjson.com/users?skip=20&limit=4" + }, + "statusCode": 404, + "statusMessage": null + } + } + ], + "Complete Expression - JSON": [ + { + "json": { + "id": 0 + } + }, + { + "json": { + "id": 1 + } + }, + { + "json": { + "id": 2 + } + }, + { + "json": { + "id": 3 + } + }, + { + "json": { + "id": 4 + } + }, + { + "json": { + "id": 5 + } + }, + { + "json": { + "id": 6 + } + }, + { + "json": { + "id": 7 + } + }, + { + "json": { + "id": 8 + } + }, + { + "json": { + "id": 9 + } + }, + { + "json": { + "id": 10 + } + }, + { + "json": { + "id": 11 + } + }, + { + "json": { + "id": 12 + } + }, + { + "json": { + "id": 13 + } + }, + { + "json": { + "id": 14 + } + } + ], + "Pagination Off": [ + { + "json": { + "id": 0 + } + }, + { + "json": { + "id": 1 + } + }, + { + "json": { + "id": 2 + } + } + ], + "Pagination Not Set": [ + { + "json": { + "id": 0 + } + }, + { + "json": { + "id": 1 + } + }, + { + "json": { + "id": 2 + } + } + ], + "Edit Fields": [ + { + "json": { + "Error": "NodeOperationError" + } + } + ], + "Complete Expression - JSON Autodetect set": [ + { + "json": { + "id": 0 + } + }, + { + "json": { + "id": 1 + } + }, + { + "json": { + "id": 2 + } + }, + { + "json": { + "id": 3 + } + }, + { + "json": { + "id": 4 + } + }, + { + "json": { + "id": 5 + } + } + ], + "Complete Expression - JSON unset": [ + { + "json": { + "id": 0 + } + }, + { + "json": { + "id": 1 + } + }, + { + "json": { + "id": 2 + } + }, + { + "json": { + "id": 3 + } + }, + { + "json": { + "id": 4 + } + }, + { + "json": { + "id": 5 + } + } + ], + "Response Empty - Text1": [ + { + "json": { + "data": "[{\"id\":0},{\"id\":1},{\"id\":2},{\"id\":3}]" + } + }, + { + "json": { + "data": "[{\"id\":4},{\"id\":5},{\"id\":6},{\"id\":7}]" + } + }, + { + "json": { + "data": "[{\"id\":8},{\"id\":9},{\"id\":10},{\"id\":11}]" + } + }, + { + "json": { + "data": "[{\"id\":12},{\"id\":13},{\"id\":14}]" + } + }, + { + "json": { + "data": "[]" + } + } + ], + "Response Empty - Include Full Response1": [ + { + "json": { + "data": "[{\"id\":0},{\"id\":1},{\"id\":2},{\"id\":3}]", + "headers": { + "content-type": "text/plain", + "next-url": "https://dummyjson.com/users?skip=4&limit=4" + }, + "statusCode": 200, + "statusMessage": null + } + }, + { + "json": { + "data": "[{\"id\":4},{\"id\":5},{\"id\":6},{\"id\":7}]", + "headers": { + "content-type": "text/plain", + "next-url": "https://dummyjson.com/users?skip=8&limit=4" + }, + "statusCode": 200, + "statusMessage": null + } + }, + { + "json": { + "data": "[{\"id\":8},{\"id\":9},{\"id\":10},{\"id\":11}]", + "headers": { + "content-type": "text/plain", + "next-url": "https://dummyjson.com/users?skip=12&limit=4" + }, + "statusCode": 200, + "statusMessage": null + } + }, + { + "json": { + "data": "[{\"id\":12},{\"id\":13},{\"id\":14}]", + "headers": { + "content-type": "text/plain", + "next-url": "https://dummyjson.com/users?skip=16&limit=4" + }, + "statusCode": 200, + "statusMessage": null + } + }, + { + "json": { + "data": "[]", + "headers": { + "content-type": "text/plain", + "next-url": "https://dummyjson.com/users?skip=20&limit=4" + }, + "statusCode": 404, + "statusMessage": null + } + } + ], + "POST Form Data": [ + { + "json": { + "id": 0 + } + }, + { + "json": { + "id": 1 + } + }, + { + "json": { + "id": 2 + } + }, + { + "json": { + "id": 3 + } + }, + { + "json": { + "id": 4 + } + }, + { + "json": { + "id": 5 + } + }, + { + "json": { + "id": 6 + } + }, + { + "json": { + "id": 7 + } + }, + { + "json": { + "id": 8 + } + } + ], + "POST JSON": [ + { + "json": { + "id": 0 + } + }, + { + "json": { + "id": 1 + } + }, + { + "json": { + "id": 2 + } + }, + { + "json": { + "id": 3 + } + }, + { + "json": { + "id": 4 + } + }, + { + "json": { + "id": 5 + } + }, + { + "json": { + "id": 6 + } + }, + { + "json": { + "id": 7 + } + }, + { + "json": { + "id": 8 + } + } + ], + "Complete Expression - JSON unset1": [ + { + "json": { + "error": { + "message": "'' is not a valid URL.", + "name": "NodeOperationError", + "description": "Make sure the \"Next URL\" parameter evaluates to a valid URL.", + "context": {} + } + } + } + ], + "Page Limit Expression": [ + { + "json": { + "id": 0 + } + }, + { + "json": { + "id": 1 + } + }, + { + "json": { + "id": 2 + } + }, + { + "json": { + "id": 3 + } + }, + { + "json": { + "id": 4 + } + }, + { + "json": { + "id": 5 + } + }, + { + "json": { + "id": 6 + } + }, + { + "json": { + "id": 7 + } + }, + { + "json": { + "id": 8 + } + } + ] + }, + "connections": { + "Loop": { + "main": [ + [ + { + "node": "Edit Fields", + "type": "main", + "index": 0 + } + ] + ] + }, + "No Operation, do nothing1": { + "main": [ + [ + { + "node": "Receive Status Code", + "type": "main", + "index": 0 + }, + { + "node": "Complete Expression", + "type": "main", + "index": 0 + }, + { + "node": "Response Empty Next with Max Pages", + "type": "main", + "index": 0 + }, + { + "node": "Response Empty - Text", + "type": "main", + "index": 0 + }, + { + "node": "Response Empty - Include Full Response", + "type": "main", + "index": 0 + }, + { + "node": "Pagination Off", + "type": "main", + "index": 0 + }, + { + "node": "Pagination Not Set", + "type": "main", + "index": 0 + }, + { + "node": "Loop", + "type": "main", + "index": 0 + }, + { + "node": "Response Empty", + "type": "main", + "index": 0 + }, + { + "node": "Page Limit", + "type": "main", + "index": 0 + }, + { + "node": "Complete Expression - JSON", + "type": "main", + "index": 0 + }, + { + "node": "POST JSON", + "type": "main", + "index": 0 + }, + { + "node": "POST Form Data", + "type": "main", + "index": 0 + }, + { + "node": "Set Page Limit", + "type": "main", + "index": 0 + } + ] + ] + }, + "Data 2": { + "main": [ + [ + { + "node": "Data 1", + "type": "main", + "index": 0 + }, + { + "node": "No Operation, do nothing1", + "type": "main", + "index": 0 + } + ] + ] + }, + "Data 1": { + "main": [ + [ + { + "node": "Complete Expression - JSON Autodetect set", + "type": "main", + "index": 0 + }, + { + "node": "Complete Expression - JSON unset", + "type": "main", + "index": 0 + }, + { + "node": "Response Empty - Text1", + "type": "main", + "index": 0 + }, + { + "node": "Response Empty - Include Full Response1", + "type": "main", + "index": 0 + }, + { + "node": "Complete Expression - JSON unset1", + "type": "main", + "index": 0 + } + ] + ] + }, + "Page Limit Expression": { + "main": [[]] + }, + "Set Page Limit": { + "main": [ + [ + { + "node": "Page Limit Expression", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "active": false, + "settings": { + "executionOrder": "v1" + }, + "versionId": "ced3a46e-5b98-4fe6-9050-25f2dbd11844", + "meta": { + "instanceId": "27cc9b56542ad45b38725555722c50a1c3fee1670bbb67980558314ee08517c4" + }, + "id": "DW81RnxFN27lqW8y", + "tags": [] } diff --git a/packages/nodes-base/nodes/HttpRequest/test/utils/utils.test.ts b/packages/nodes-base/nodes/HttpRequest/test/utils/utils.test.ts index b3e9d5fbd7..ae021bf574 100644 --- a/packages/nodes-base/nodes/HttpRequest/test/utils/utils.test.ts +++ b/packages/nodes-base/nodes/HttpRequest/test/utils/utils.test.ts @@ -1,9 +1,17 @@ -import type { IRequestOptions } from 'n8n-workflow'; +import type { + ICredentialDataDecryptedObject, + INodeExecutionData, + INodeProperties, + IRequestOptions, +} from 'n8n-workflow'; + import { REDACTED, prepareRequestBody, sanitizeUiMessage, setAgentOptions, + replaceNullValues, + getSecrets, } from '../../GenericFunctions'; import type { BodyParameter, BodyParametersReducer } from '../../GenericFunctions'; @@ -93,7 +101,7 @@ describe('HTTP Node Utils', () => { ); }); - it('should remove keys that contain sensitive data', async () => { + it('should remove keys that contain sensitive data and do not modify requestOptions', async () => { const requestOptions: IRequestOptions = { method: 'POST', uri: 'https://example.com', @@ -115,6 +123,14 @@ describe('HTTP Node Utils', () => { method: 'POST', uri: 'https://example.com', }); + + expect(requestOptions).toEqual({ + method: 'POST', + uri: 'https://example.com', + body: { sessionToken: 'secret', other: 'foo' }, + headers: { authorization: 'secret', other: 'foo' }, + auth: { user: 'user', password: 'secret' }, + }); }); it('should remove secrets', async () => { @@ -125,7 +141,9 @@ describe('HTTP Node Utils', () => { headers: { authorization: 'secretAccessToken', other: 'foo' }, }; - expect(sanitizeUiMessage(requestOptions, {}, ['secretAccessToken'])).toEqual({ + const sanitizedRequest = sanitizeUiMessage(requestOptions, {}, ['secretAccessToken']); + + expect(sanitizedRequest).toEqual({ body: { nested: { secret: REDACTED, @@ -136,5 +154,177 @@ describe('HTTP Node Utils', () => { uri: 'https://example.com', }); }); + + const headersToTest = [ + 'authorization', + 'x-api-key', + 'x-auth-token', + 'cookie', + 'proxy-authorization', + 'sslclientcert', + ]; + + headersToTest.forEach((header) => { + it(`should redact the ${header} header when the key is lowercase`, () => { + const requestOptions: IRequestOptions = { + method: 'POST', + uri: 'https://example.com', + body: { sessionToken: 'secret', other: 'foo' }, + headers: { [header]: 'some-sensitive-token', other: 'foo' }, + auth: { user: 'user', password: 'secret' }, + }; + + const sanitizedRequest = sanitizeUiMessage(requestOptions, {}); + + expect(sanitizedRequest.headers).toEqual({ [header]: REDACTED, other: 'foo' }); + }); + + it(`should redact the ${header} header when the key is uppercase`, () => { + const requestOptions: IRequestOptions = { + method: 'POST', + uri: 'https://example.com', + body: { sessionToken: 'secret', other: 'foo' }, + headers: { [header.toUpperCase()]: 'some-sensitive-token', other: 'foo' }, + auth: { user: 'user', password: 'secret' }, + }; + + const sanitizedRequest = sanitizeUiMessage(requestOptions, {}); + + expect(sanitizedRequest.headers).toEqual({ + [header.toUpperCase()]: REDACTED, + other: 'foo', + }); + }); + }); + + it('should leave headers unchanged if Authorization header is not present', () => { + const requestOptions: IRequestOptions = { + method: 'POST', + uri: 'https://example.com', + body: { sessionToken: 'secret', other: 'foo' }, + headers: { other: 'foo' }, + auth: { user: 'user', password: 'secret' }, + }; + const sanitizedRequest = sanitizeUiMessage(requestOptions, {}); + + expect(sanitizedRequest.headers).toEqual({ other: 'foo' }); + }); + + it('should handle case when headers are undefined', () => { + const requestOptions: IRequestOptions = {}; + + const sanitizedRequest = sanitizeUiMessage(requestOptions, {}); + + expect(sanitizedRequest.headers).toBeUndefined(); + }); + }); + + describe('replaceNullValues', () => { + it('should replace null json with an empty object', () => { + const item: INodeExecutionData = { + json: {}, + }; + const result = replaceNullValues(item); + expect(result.json).toEqual({}); + }); + + it('should not modify json if it is already an object', () => { + const jsonObject = { key: 'value' }; + const item: INodeExecutionData = { json: jsonObject }; + const result = replaceNullValues(item); + expect(result.json).toBe(jsonObject); + }); + }); + + describe('getSecrets', () => { + afterEach(() => { + jest.clearAllMocks(); + }); + + it('should return secrets for sensitive properties', () => { + const properties: INodeProperties[] = [ + { + displayName: 'Api Key', + name: 'apiKey', + typeOptions: { password: true }, + type: 'string', + default: undefined, + }, + { + displayName: 'Username', + name: 'username', + type: 'string', + default: undefined, + }, + ]; + const credentials: ICredentialDataDecryptedObject = { + apiKey: 'sensitive-api-key', + username: 'user123', + }; + + const secrets = getSecrets(properties, credentials); + expect(secrets).toEqual(['sensitive-api-key']); + }); + + it('should not return non-sensitive properties', () => { + const properties: INodeProperties[] = [ + { + displayName: 'Username', + name: 'username', + type: 'string', + default: undefined, + }, + ]; + const credentials: ICredentialDataDecryptedObject = { + username: 'user123', + }; + + const secrets = getSecrets(properties, credentials); + expect(secrets).toEqual([]); + }); + + it('should not include non-string values in sensitive properties', () => { + const properties: INodeProperties[] = [ + { + displayName: 'ApiKey', + name: 'apiKey', + typeOptions: { password: true }, + type: 'string', + default: undefined, + }, + ]; + const credentials: ICredentialDataDecryptedObject = { + apiKey: 12345, + }; + + const secrets = getSecrets(properties, credentials); + expect(secrets).toEqual([]); + }); + + it('should return an empty array if properties and credentials are empty', () => { + const properties: INodeProperties[] = []; + const credentials: ICredentialDataDecryptedObject = {}; + + const secrets = getSecrets(properties, credentials); + expect(secrets).toEqual([]); + }); + + it('should not include null or undefined values in sensitive properties', () => { + const properties: INodeProperties[] = [ + { + displayName: 'ApiKey', + name: 'apiKey', + typeOptions: { password: true }, + type: 'string', + default: undefined, + }, + ]; + const credentials: ICredentialDataDecryptedObject = { + apiKey: {}, + }; + + const secrets = getSecrets(properties, credentials); + expect(secrets).toEqual([]); + }); }); }); diff --git a/packages/nodes-base/nodes/Hubspot/Hubspot.node.json b/packages/nodes-base/nodes/Hubspot/Hubspot.node.json index 2503c381bb..183a303b43 100644 --- a/packages/nodes-base/nodes/Hubspot/Hubspot.node.json +++ b/packages/nodes-base/nodes/Hubspot/Hubspot.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/hubspot" + "url": "https://docs.n8n.io/integrations/builtin/credentials/hubspot/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Hubspot/HubspotTrigger.node.json b/packages/nodes-base/nodes/Hubspot/HubspotTrigger.node.json index eaedd67075..99e1bde56b 100644 --- a/packages/nodes-base/nodes/Hubspot/HubspotTrigger.node.json +++ b/packages/nodes-base/nodes/Hubspot/HubspotTrigger.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/hubspot" + "url": "https://docs.n8n.io/integrations/builtin/credentials/hubspot/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Hubspot/HubspotTrigger.node.ts b/packages/nodes-base/nodes/Hubspot/HubspotTrigger.node.ts index aed2bc704d..5ce15a9b1c 100644 --- a/packages/nodes-base/nodes/Hubspot/HubspotTrigger.node.ts +++ b/packages/nodes-base/nodes/Hubspot/HubspotTrigger.node.ts @@ -9,7 +9,7 @@ import type { INodeTypeDescription, IWebhookResponseData, } from 'n8n-workflow'; -import { NodeOperationError } from 'n8n-workflow'; +import { NodeConnectionType, NodeOperationError } from 'n8n-workflow'; import { hubspotApiRequest, propertyEvents } from './V1/GenericFunctions'; @@ -25,7 +25,7 @@ export class HubspotTrigger implements INodeType { name: 'HubSpot Trigger', }, inputs: [], - outputs: ['main'], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'hubspotDeveloperApi', @@ -175,7 +175,7 @@ export class HubspotTrigger implements INodeType { name: 'property', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsDependsOn: ['contact.propertyChange'], loadOptionsMethod: 'getContactProperties', @@ -193,7 +193,7 @@ export class HubspotTrigger implements INodeType { name: 'property', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsDependsOn: ['company.propertyChange'], loadOptionsMethod: 'getCompanyProperties', @@ -211,7 +211,7 @@ export class HubspotTrigger implements INodeType { name: 'property', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsDependsOn: ['deal.propertyChange'], loadOptionsMethod: 'getDealProperties', diff --git a/packages/nodes-base/nodes/Hubspot/V1/CompanyDescription.ts b/packages/nodes-base/nodes/Hubspot/V1/CompanyDescription.ts index 501f6d0f99..da7617bfd4 100644 --- a/packages/nodes-base/nodes/Hubspot/V1/CompanyDescription.ts +++ b/packages/nodes-base/nodes/Hubspot/V1/CompanyDescription.ts @@ -141,7 +141,7 @@ export const companyFields: INodeProperties[] = [ }, default: '', description: - 'The owner of the company. Choose from the list, or specify an ID using an expression.', + 'The owner of the company. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Country/Region', @@ -173,7 +173,7 @@ export const companyFields: INodeProperties[] = [ }, default: '', description: - 'Name of the property. Choose from the list, or specify an ID using an expression.', + 'Name of the property. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Value', @@ -219,7 +219,7 @@ export const companyFields: INodeProperties[] = [ }, default: '', description: - 'The type of business the company performs. Choose from the list, or specify an ID using an expression.', + 'The type of business the company performs. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Is Public', @@ -237,7 +237,7 @@ export const companyFields: INodeProperties[] = [ }, default: '', description: - 'The company\'s sales, prospecting or outreach status. Choose from the list, or specify an ID using an expression.', + 'The company\'s sales, prospecting or outreach status. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Lifecycle Stage Name or ID', @@ -248,7 +248,7 @@ export const companyFields: INodeProperties[] = [ }, default: '', description: - 'The most advanced lifecycle stage across all contacts associated with this company or organization. Choose from the list, or specify an ID using an expression.', + 'The most advanced lifecycle stage across all contacts associated with this company or organization. Choose from the list, or specify an ID using an expression.', }, { displayName: 'LinkedIn Bio', @@ -283,7 +283,7 @@ export const companyFields: INodeProperties[] = [ }, default: '', description: - 'Original source for the contact with the earliest activity for this company or organization. Choose from the list, or specify an ID using an expression.', + 'Original source for the contact with the earliest activity for this company or organization. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Phone Number', @@ -334,7 +334,7 @@ export const companyFields: INodeProperties[] = [ }, default: '', description: - 'The Target Account property is a means to flag high priority companies if you are following an account based strategy. Choose from the list, or specify an ID using an expression.', + 'The Target Account property is a means to flag high priority companies if you are following an account based strategy. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Timezone', @@ -388,7 +388,7 @@ export const companyFields: INodeProperties[] = [ }, default: '', description: - 'The optional classification of this company record - prospect, partner, etc. Choose from the list, or specify an ID using an expression.', + 'The optional classification of this company record - prospect, partner, etc. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Web Technologies Name or ID', @@ -399,7 +399,7 @@ export const companyFields: INodeProperties[] = [ }, default: '', description: - 'The web technologies used by the company or organization. Powered by HubSpot Insights. Choose from the list, or specify an ID using an expression.', + 'The web technologies used by the company or organization. Powered by HubSpot Insights. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Website URL', @@ -495,7 +495,7 @@ export const companyFields: INodeProperties[] = [ }, default: '', description: - 'The owner of the company. Choose from the list, or specify an ID using an expression.', + 'The owner of the company. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Country/Region', @@ -527,7 +527,7 @@ export const companyFields: INodeProperties[] = [ }, default: '', description: - 'Name of the property. Choose from the list, or specify an ID using an expression.', + 'Name of the property. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Value', @@ -573,7 +573,7 @@ export const companyFields: INodeProperties[] = [ }, default: '', description: - 'The type of business the company performs. Choose from the list, or specify an ID using an expression.', + 'The type of business the company performs. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Is Public', @@ -591,7 +591,7 @@ export const companyFields: INodeProperties[] = [ }, default: '', description: - 'The company\'s sales, prospecting or outreach status. Choose from the list, or specify an ID using an expression.', + 'The company\'s sales, prospecting or outreach status. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Lifecycle Stage Name or ID', @@ -602,7 +602,7 @@ export const companyFields: INodeProperties[] = [ }, default: '', description: - 'The most advanced lifecycle stage across all contacts associated with this company or organization. Choose from the list, or specify an ID using an expression.', + 'The most advanced lifecycle stage across all contacts associated with this company or organization. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Linkedin Bio', @@ -643,7 +643,7 @@ export const companyFields: INodeProperties[] = [ }, default: '', description: - 'Original source for the contact with the earliest activity for this company or organization. Choose from the list, or specify an ID using an expression.', + 'Original source for the contact with the earliest activity for this company or organization. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Phone Number', @@ -694,7 +694,7 @@ export const companyFields: INodeProperties[] = [ }, default: '', description: - 'The Target Account property is a means to flag high priority companies if you are following an account based strategy. Choose from the list, or specify an ID using an expression.', + 'The Target Account property is a means to flag high priority companies if you are following an account based strategy. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Timezone', @@ -748,7 +748,7 @@ export const companyFields: INodeProperties[] = [ }, default: '', description: - 'The optional classification of this company record - prospect, partner, etc. Choose from the list, or specify an ID using an expression.', + 'The optional classification of this company record - prospect, partner, etc. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Web Technologies Name or ID', @@ -759,7 +759,7 @@ export const companyFields: INodeProperties[] = [ }, default: '', description: - 'The web technologies used by the company or organization. Powered by HubSpot Insights. Choose from the list, or specify an ID using an expression.', + 'The web technologies used by the company or organization. Powered by HubSpot Insights. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Website URL', @@ -884,7 +884,7 @@ export const companyFields: INodeProperties[] = [ }, default: [], description: - '

Used to include specific company properties in the results. By default, the results will only include company ID and will not include the values for any properties for your companies.

Including this parameter will include the data for the specified property in the results. You can include this parameter multiple times to request multiple properties separated by a comma: ,.

. Choose from the list, or specify IDs using an expression.', + '

Used to include specific company properties in the results. By default, the results will only include company ID and will not include the values for any properties for your companies.

Including this parameter will include the data for the specified property in the results. You can include this parameter multiple times to request multiple properties separated by a comma: ,.

. Choose from the list, or specify IDs using an expression.', }, { displayName: 'Properties With History', @@ -1051,7 +1051,7 @@ export const companyFields: INodeProperties[] = [ }, default: [], description: - '

Used to include specific company properties in the results. By default, the results will only include company ID and will not include the values for any properties for your company.

Including this parameter will include the data for the specified property in the results. You can include this parameter multiple times to request multiple properties separated by a comma: ,.

. Choose from the list, or specify IDs using an expression.', + '

Used to include specific company properties in the results. By default, the results will only include company ID and will not include the values for any properties for your company.

Including this parameter will include the data for the specified property in the results. You can include this parameter multiple times to request multiple properties separated by a comma: ,.

. Choose from the list, or specify IDs using an expression.', }, ], }, diff --git a/packages/nodes-base/nodes/Hubspot/V1/ContactDescription.ts b/packages/nodes-base/nodes/Hubspot/V1/ContactDescription.ts index 14352f08cb..e0d2fd70a7 100644 --- a/packages/nodes-base/nodes/Hubspot/V1/ContactDescription.ts +++ b/packages/nodes-base/nodes/Hubspot/V1/ContactDescription.ts @@ -118,7 +118,7 @@ export const contactFields: INodeProperties[] = [ }, default: '', description: - 'Companies associated with the ticket. Choose from the list, or specify an ID using an expression.', + 'Companies associated with the ticket. Choose from the list, or specify an ID using an expression.', }, { displayName: 'City', @@ -155,7 +155,7 @@ export const contactFields: INodeProperties[] = [ name: 'contactOwner', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getOwners', }, @@ -190,7 +190,7 @@ export const contactFields: INodeProperties[] = [ }, default: '', description: - 'Name of the property. Choose from the list, or specify an ID using an expression.', + 'Name of the property. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Value', @@ -300,7 +300,7 @@ export const contactFields: INodeProperties[] = [ }, default: '', description: - 'The contact\'s sales, prospecting or outreach status. Choose from the list, or specify an ID using an expression.', + 'The contact\'s sales, prospecting or outreach status. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Legal Basic For Processing Contact Data Name or ID', @@ -311,7 +311,7 @@ export const contactFields: INodeProperties[] = [ }, default: '', description: - "Legal basis for processing contact's data; 'Not applicable' will exempt the contact from GDPR protections. Choose from the list, or specify an ID using an expression.", + "Legal basis for processing contact's data; 'Not applicable' will exempt the contact from GDPR protections. Choose from the list, or specify an ID using an expression.", }, { displayName: 'Lifecycle Stage Name or ID', @@ -322,7 +322,7 @@ export const contactFields: INodeProperties[] = [ }, default: '', description: - 'The qualification of contacts to sales readiness. It can be set through imports, forms, workflows, and manually on a per contact basis. Choose from the list, or specify an ID using an expression.', + 'The qualification of contacts to sales readiness. It can be set through imports, forms, workflows, and manually on a per contact basis. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Marital Status', @@ -364,7 +364,7 @@ export const contactFields: INodeProperties[] = [ }, default: '', description: - 'The number of company employees. Choose from the list, or specify an ID using an expression.', + 'The number of company employees. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Original Source Name or ID', @@ -375,7 +375,7 @@ export const contactFields: INodeProperties[] = [ }, default: '', description: - 'The first known source through which a contact found your website. Source is automatically set by HubSpot, but may be updated manually. Choose from the list, or specify an ID using an expression.', + 'The first known source through which a contact found your website. Source is automatically set by HubSpot, but may be updated manually. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Phone Number', @@ -398,7 +398,7 @@ export const contactFields: INodeProperties[] = [ }, default: [], description: - '

Used to include specific company properties in the results. By default, the results will only include company ID and will not include the values for any properties for your company.

Including this parameter will include the data for the specified property in the results. You can include this parameter multiple times to request multiple properties separated by a comma: ,.

. Choose from the list, or specify IDs using an expression.', + '

Used to include specific company properties in the results. By default, the results will only include company ID and will not include the values for any properties for your company.

Including this parameter will include the data for the specified property in the results. You can include this parameter multiple times to request multiple properties separated by a comma: ,.

. Choose from the list, or specify IDs using an expression.', }, { displayName: 'Postal Code', @@ -416,7 +416,7 @@ export const contactFields: INodeProperties[] = [ }, default: '', description: - 'Set your contact\'s preferred language for communications. This property can be changed from an import, form, or integration. Choose from the list, or specify an ID using an expression.', + 'Set your contact\'s preferred language for communications. This property can be changed from an import, form, or integration. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Relationship Status', @@ -474,7 +474,7 @@ export const contactFields: INodeProperties[] = [ }, default: '', description: - 'The status of the contact\'s content membership. Choose from the list, or specify an ID using an expression.', + 'The status of the contact\'s content membership. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Street Address', @@ -580,7 +580,7 @@ export const contactFields: INodeProperties[] = [ }, default: [], description: - '

Used to include specific company properties in the results. By default, the results will only include company ID and will not include the values for any properties for your company.

Including this parameter will include the data for the specified property in the results. You can include this parameter multiple times to request multiple properties separated by a comma: ,.

. Choose from the list, or specify IDs using an expression.', + '

Used to include specific company properties in the results. By default, the results will only include company ID and will not include the values for any properties for your company.

Including this parameter will include the data for the specified property in the results. You can include this parameter multiple times to request multiple properties separated by a comma: ,.

. Choose from the list, or specify IDs using an expression.', }, { displayName: 'Property Mode', @@ -691,7 +691,7 @@ export const contactFields: INodeProperties[] = [ }, default: [], description: - '

Used to include specific company properties in the results. By default, the results will only include company ID and will not include the values for any properties for your company.

Including this parameter will include the data for the specified property in the results. You can include this parameter multiple times to request multiple properties separated by a comma: ,.

. Choose from the list, or specify IDs using an expression.', + '

Used to include specific company properties in the results. By default, the results will only include company ID and will not include the values for any properties for your company.

Including this parameter will include the data for the specified property in the results. You can include this parameter multiple times to request multiple properties separated by a comma: ,.

. Choose from the list, or specify IDs using an expression.', }, { displayName: 'Property Mode', @@ -820,7 +820,7 @@ export const contactFields: INodeProperties[] = [ }, default: [], description: - '

Used to include specific company properties in the results. By default, the results will only include company ID and will not include the values for any properties for your company.

Including this parameter will include the data for the specified property in the results. You can include this parameter multiple times to request multiple properties separated by a comma: ,.

. Choose from the list, or specify IDs using an expression.', + '

Used to include specific company properties in the results. By default, the results will only include company ID and will not include the values for any properties for your company.

Including this parameter will include the data for the specified property in the results. You can include this parameter multiple times to request multiple properties separated by a comma: ,.

. Choose from the list, or specify IDs using an expression.', }, { displayName: 'Property Mode', @@ -916,7 +916,7 @@ export const contactFields: INodeProperties[] = [ name: 'propertyName', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getContactProperties', }, @@ -1029,7 +1029,7 @@ export const contactFields: INodeProperties[] = [ }, default: ['firstname', 'lastname', 'email'], description: - '

Used to include specific company properties in the results. By default, the results will only include company ID and will not include the values for any properties for your company.

Including this parameter will include the data for the specified property in the results. You can include this parameter multiple times to request multiple properties separated by a comma: ,.

. Choose from the list, or specify IDs using an expression.', + '

Used to include specific company properties in the results. By default, the results will only include company ID and will not include the values for any properties for your company.

Including this parameter will include the data for the specified property in the results. You can include this parameter multiple times to request multiple properties separated by a comma: ,.

. Choose from the list, or specify IDs using an expression.', }, { displayName: 'Query', @@ -1044,7 +1044,7 @@ export const contactFields: INodeProperties[] = [ name: 'sortBy', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getContactProperties', }, diff --git a/packages/nodes-base/nodes/Hubspot/V1/DealDescription.ts b/packages/nodes-base/nodes/Hubspot/V1/DealDescription.ts index b8953f0711..4a8aacf63e 100644 --- a/packages/nodes-base/nodes/Hubspot/V1/DealDescription.ts +++ b/packages/nodes-base/nodes/Hubspot/V1/DealDescription.ts @@ -86,7 +86,7 @@ export const dealFields: INodeProperties[] = [ default: '', options: [], description: - 'The dealstage is required when creating a deal. See the CRM Pipelines API for details on managing pipelines and stages. Choose from the list, or specify an ID using an expression.', + 'The dealstage is required when creating a deal. See the CRM Pipelines API for details on managing pipelines and stages. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Additional Fields', @@ -112,7 +112,7 @@ export const dealFields: INodeProperties[] = [ name: 'associatedCompany', type: 'multiOptions', description: - 'Choose from the list, or specify IDs using an expression', + 'Choose from the list, or specify IDs using an expression', typeOptions: { loadOptionsMethod: 'getCompanies', }, @@ -123,7 +123,7 @@ export const dealFields: INodeProperties[] = [ name: 'associatedVids', type: 'multiOptions', description: - 'Choose from the list, or specify IDs using an expression', + 'Choose from the list, or specify IDs using an expression', typeOptions: { loadOptionsMethod: 'getContacts', }, @@ -158,7 +158,7 @@ export const dealFields: INodeProperties[] = [ }, default: '', description: - 'Name of the property. Choose from the list, or specify an ID using an expression.', + 'Name of the property. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Value', @@ -188,7 +188,7 @@ export const dealFields: INodeProperties[] = [ name: 'dealType', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getDealTypes', }, @@ -268,7 +268,7 @@ export const dealFields: INodeProperties[] = [ }, default: '', description: - 'Name of the property. Choose from the list, or specify an ID using an expression.', + 'Name of the property. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Value', @@ -302,14 +302,14 @@ export const dealFields: INodeProperties[] = [ }, default: '', description: - 'The dealstage is required when creating a deal. See the CRM Pipelines API for details on managing pipelines and stages. Choose from the list, or specify an ID using an expression.', + 'The dealstage is required when creating a deal. See the CRM Pipelines API for details on managing pipelines and stages. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Deal Type Name or ID', name: 'dealType', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getDealTypes', }, @@ -430,7 +430,7 @@ export const dealFields: INodeProperties[] = [ }, default: [], description: - '

Used to include specific deal properties in the results. By default, the results will only include Deal ID and will not include the values for any properties for your Deals.

Including this parameter will include the data for the specified property in the results. You can include this parameter multiple times to request multiple properties separated by a comma: ,.

. Choose from the list, or specify IDs using an expression.', + '

Used to include specific deal properties in the results. By default, the results will only include Deal ID and will not include the values for any properties for your Deals.

Including this parameter will include the data for the specified property in the results. You can include this parameter multiple times to request multiple properties separated by a comma: ,.

. Choose from the list, or specify IDs using an expression.', }, { displayName: 'Properties with History', @@ -441,7 +441,7 @@ export const dealFields: INodeProperties[] = [ }, default: [], description: - 'Works similarly to properties=, but this parameter will include the history for the specified property, instead of just including the current value. Use this parameter when you need the full history of changes to a property\'s value. Choose from the list, or specify IDs using an expression.', + 'Works similarly to properties=, but this parameter will include the history for the specified property, instead of just including the current value. Use this parameter when you need the full history of changes to a property\'s value. Choose from the list, or specify IDs using an expression.', }, ], }, @@ -603,7 +603,7 @@ export const dealFields: INodeProperties[] = [ name: 'propertyName', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getDealProperties', }, @@ -716,7 +716,7 @@ export const dealFields: INodeProperties[] = [ }, default: [], description: - '

Used to include specific deal properties in the results. By default, the results will only include Deal ID and will not include the values for any properties for your company.

Including this parameter will include the data for the specified property in the results. You can include this parameter multiple times to request multiple properties separated by a comma: ,.

. Choose from the list, or specify IDs using an expression.', + '

Used to include specific deal properties in the results. By default, the results will only include Deal ID and will not include the values for any properties for your company.

Including this parameter will include the data for the specified property in the results. You can include this parameter multiple times to request multiple properties separated by a comma: ,.

. Choose from the list, or specify IDs using an expression.', }, { displayName: 'Query', @@ -731,7 +731,7 @@ export const dealFields: INodeProperties[] = [ name: 'sortBy', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getDealProperties', }, diff --git a/packages/nodes-base/nodes/Hubspot/V1/FormDescription.ts b/packages/nodes-base/nodes/Hubspot/V1/FormDescription.ts index 22aad74f15..b45d5e9d9b 100644 --- a/packages/nodes-base/nodes/Hubspot/V1/FormDescription.ts +++ b/packages/nodes-base/nodes/Hubspot/V1/FormDescription.ts @@ -49,7 +49,7 @@ export const formFields: INodeProperties[] = [ }, default: '', description: - 'The ID of the form you\'re sending data to. Choose from the list, or specify an ID using an expression.', + 'The ID of the form you\'re sending data to. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Additional Fields', @@ -213,7 +213,7 @@ export const formFields: INodeProperties[] = [ }, default: '', description: - 'The ID of the specific subscription type. Choose from the list, or specify an ID using an expression.', + 'The ID of the specific subscription type. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Value', @@ -250,7 +250,7 @@ export const formFields: INodeProperties[] = [ }, default: '', description: - 'The ID of the specific subscription type that this forms indicates interest to. Choose from the list, or specify an ID using an expression.', + 'The ID of the specific subscription type that this forms indicates interest to. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Value', @@ -309,6 +309,6 @@ export const formFields: INodeProperties[] = [ }, default: '', description: - 'The ID of the form. Choose from the list, or specify an ID using an expression.', + 'The ID of the form. Choose from the list, or specify an ID using an expression.', }, ]; diff --git a/packages/nodes-base/nodes/Hubspot/V1/HubspotV1.node.ts b/packages/nodes-base/nodes/Hubspot/V1/HubspotV1.node.ts index 983461de8d..de46d8a484 100644 --- a/packages/nodes-base/nodes/Hubspot/V1/HubspotV1.node.ts +++ b/packages/nodes-base/nodes/Hubspot/V1/HubspotV1.node.ts @@ -13,7 +13,7 @@ import type { INodeTypeDescription, JsonObject, } from 'n8n-workflow'; -import { NodeOperationError } from 'n8n-workflow'; +import { NodeConnectionType, NodeOperationError } from 'n8n-workflow'; import { snakeCase } from 'change-case'; import { @@ -58,8 +58,8 @@ export class HubspotV1 implements INodeType { defaults: { name: 'HubSpot', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'hubspotApi', @@ -862,11 +862,11 @@ export class HubspotV1 implements INodeType { // select them easily async getOwners(this: ILoadOptionsFunctions): Promise { const returnData: INodePropertyOptions[] = []; - const endpoint = '/owners/v2/owners'; - const owners = await hubspotApiRequest.call(this, 'GET', endpoint); - for (const owner of owners) { + const endpoint = '/crm/v3/owners'; + const { results } = await hubspotApiRequest.call(this, 'GET', endpoint); + for (const owner of results) { const ownerName = owner.email; - const ownerId = owner.ownerId; + const ownerId = isNaN(parseInt(owner.id)) ? owner.id : parseInt(owner.id); returnData.push({ name: ownerName, value: ownerId, @@ -977,7 +977,7 @@ export class HubspotV1 implements INodeType { returnData.push.apply(returnData, responseData as INodeExecutionData[]); } } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push({ json: { error: (error as JsonObject).message } }); } else { throw error; @@ -2724,7 +2724,7 @@ export class HubspotV1 implements INodeType { ); returnData.push(...executionData); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push({ json: { error: (error as JsonObject).message } }); continue; } diff --git a/packages/nodes-base/nodes/Hubspot/V1/TicketDescription.ts b/packages/nodes-base/nodes/Hubspot/V1/TicketDescription.ts index 7b0198c6a1..321d6d24fa 100644 --- a/packages/nodes-base/nodes/Hubspot/V1/TicketDescription.ts +++ b/packages/nodes-base/nodes/Hubspot/V1/TicketDescription.ts @@ -67,7 +67,7 @@ export const ticketFields: INodeProperties[] = [ }, default: '', description: - 'The ID of the pipeline the ticket is in. Choose from the list, or specify an ID using an expression.', + 'The ID of the pipeline the ticket is in. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Stage Name or ID', @@ -86,7 +86,7 @@ export const ticketFields: INodeProperties[] = [ }, default: '', description: - 'The ID of the pipeline the ticket is in. Choose from the list, or specify an ID using an expression.', + 'The ID of the pipeline the ticket is in. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Ticket Name', @@ -124,7 +124,7 @@ export const ticketFields: INodeProperties[] = [ }, default: [], description: - 'Companies associated with the ticket. Choose from the list, or specify IDs using an expression.', + 'Companies associated with the ticket. Choose from the list, or specify IDs using an expression.', }, { displayName: 'Contact Names or IDs', @@ -135,7 +135,7 @@ export const ticketFields: INodeProperties[] = [ }, default: [], description: - 'Contacts associated with the ticket. Choose from the list, or specify IDs using an expression.', + 'Contacts associated with the ticket. Choose from the list, or specify IDs using an expression.', }, { displayName: 'Category Name or ID', @@ -146,7 +146,7 @@ export const ticketFields: INodeProperties[] = [ }, default: '', description: - 'Main reason customer reached out for help. Choose from the list, or specify an ID using an expression.', + 'Main reason customer reached out for help. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Close Date', @@ -178,7 +178,7 @@ export const ticketFields: INodeProperties[] = [ }, default: '', description: - 'The level of attention needed on the ticket. Choose from the list, or specify an ID using an expression.', + 'The level of attention needed on the ticket. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Resolution Name or ID', @@ -189,7 +189,7 @@ export const ticketFields: INodeProperties[] = [ }, default: '', description: - 'The action taken to resolve the ticket. Choose from the list, or specify an ID using an expression.', + 'The action taken to resolve the ticket. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Source Name or ID', @@ -200,7 +200,7 @@ export const ticketFields: INodeProperties[] = [ }, default: '', description: - 'Channel where ticket was originally submitted. Choose from the list, or specify an ID using an expression.', + 'Channel where ticket was originally submitted. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Ticket Owner Name or ID', @@ -211,7 +211,7 @@ export const ticketFields: INodeProperties[] = [ }, default: '', description: - 'The user from your team that the ticket is assigned to. You can assign additional users to a ticket record by creating a custom HubSpot user property. Choose from the list, or specify an ID using an expression.', + 'The user from your team that the ticket is assigned to. You can assign additional users to a ticket record by creating a custom HubSpot user property. Choose from the list, or specify an ID using an expression.', }, ], }, @@ -254,7 +254,7 @@ export const ticketFields: INodeProperties[] = [ }, default: [], description: - 'Companies associated with the ticket. Choose from the list, or specify IDs using an expression.', + 'Companies associated with the ticket. Choose from the list, or specify IDs using an expression.', }, { displayName: 'Contact Names or IDs', @@ -265,7 +265,7 @@ export const ticketFields: INodeProperties[] = [ }, default: [], description: - 'Contact associated with the ticket. Choose from the list, or specify IDs using an expression.', + 'Contact associated with the ticket. Choose from the list, or specify IDs using an expression.', }, { displayName: 'Category Name or ID', @@ -276,7 +276,7 @@ export const ticketFields: INodeProperties[] = [ }, default: '', description: - 'Main reason customer reached out for help. Choose from the list, or specify an ID using an expression.', + 'Main reason customer reached out for help. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Close Date', @@ -308,7 +308,7 @@ export const ticketFields: INodeProperties[] = [ }, default: '', description: - 'The ID of the pipeline the ticket is in. Choose from the list, or specify an ID using an expression.', + 'The ID of the pipeline the ticket is in. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Priority Name or ID', @@ -319,7 +319,7 @@ export const ticketFields: INodeProperties[] = [ }, default: '', description: - 'The level of attention needed on the ticket. Choose from the list, or specify an ID using an expression.', + 'The level of attention needed on the ticket. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Resolution Name or ID', @@ -330,7 +330,7 @@ export const ticketFields: INodeProperties[] = [ }, default: '', description: - 'The action taken to resolve the ticket. Choose from the list, or specify an ID using an expression.', + 'The action taken to resolve the ticket. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Source Name or ID', @@ -341,7 +341,7 @@ export const ticketFields: INodeProperties[] = [ }, default: '', description: - 'Channel where ticket was originally submitted. Choose from the list, or specify an ID using an expression.', + 'Channel where ticket was originally submitted. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Stage Name or ID', @@ -353,7 +353,7 @@ export const ticketFields: INodeProperties[] = [ }, default: '', description: - 'The stage ID of the pipeline the ticket is in; depends on Pipeline ID. Choose from the list, or specify an ID using an expression.', + 'The stage ID of the pipeline the ticket is in; depends on Pipeline ID. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Ticket Name', @@ -371,7 +371,7 @@ export const ticketFields: INodeProperties[] = [ }, default: '', description: - 'The user from your team that the ticket is assigned to. You can assign additional users to a ticket record by creating a custom HubSpot user property. Choose from the list, or specify an ID using an expression.', + 'The user from your team that the ticket is assigned to. You can assign additional users to a ticket record by creating a custom HubSpot user property. Choose from the list, or specify an ID using an expression.', }, ], }, @@ -421,7 +421,7 @@ export const ticketFields: INodeProperties[] = [ }, default: [], description: - '

Used to include specific ticket properties in the results. By default, the results will only include ticket ID and will not include the values for any properties for your tickets.

Including this parameter will include the data for the specified property in the results. You can include this parameter multiple times to request multiple properties separated by a comma: ,.

. Choose from the list, or specify IDs using an expression.', + '

Used to include specific ticket properties in the results. By default, the results will only include ticket ID and will not include the values for any properties for your tickets.

Including this parameter will include the data for the specified property in the results. You can include this parameter multiple times to request multiple properties separated by a comma: ,.

. Choose from the list, or specify IDs using an expression.', }, { displayName: 'Properties With History', @@ -490,7 +490,7 @@ export const ticketFields: INodeProperties[] = [ }, default: [], description: - '

Used to include specific ticket properties in the results. By default, the results will only include ticket ID and will not include the values for any properties for your company.

Including this parameter will include the data for the specified property in the results. You can include this parameter multiple times to request multiple properties separated by a comma: ,.

. Choose from the list, or specify IDs using an expression.', + '

Used to include specific ticket properties in the results. By default, the results will only include ticket ID and will not include the values for any properties for your company.

Including this parameter will include the data for the specified property in the results. You can include this parameter multiple times to request multiple properties separated by a comma: ,.

. Choose from the list, or specify IDs using an expression.', }, { displayName: 'Properties With History', diff --git a/packages/nodes-base/nodes/Hubspot/V2/CompanyDescription.ts b/packages/nodes-base/nodes/Hubspot/V2/CompanyDescription.ts index 04244059e1..85858e1d92 100644 --- a/packages/nodes-base/nodes/Hubspot/V2/CompanyDescription.ts +++ b/packages/nodes-base/nodes/Hubspot/V2/CompanyDescription.ts @@ -139,7 +139,7 @@ export const companyFields: INodeProperties[] = [ }, default: '', description: - 'The owner of the company. Choose from the list, or specify an ID using an expression.', + 'The owner of the company. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Country/Region', @@ -171,7 +171,7 @@ export const companyFields: INodeProperties[] = [ }, default: {}, description: - 'Name of the property. Choose from the list, or specify an ID using an expression.', + 'Name of the property. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Value', @@ -218,7 +218,7 @@ export const companyFields: INodeProperties[] = [ }, default: '', description: - 'The type of business the company performs. Choose from the list, or specify an ID using an expression.', + 'The type of business the company performs. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Is Public', @@ -236,7 +236,7 @@ export const companyFields: INodeProperties[] = [ }, default: '', description: - 'The company\'s sales, prospecting or outreach status. Choose from the list, or specify an ID using an expression.', + 'The company\'s sales, prospecting or outreach status. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Lifecycle Stage Name or ID', @@ -247,7 +247,7 @@ export const companyFields: INodeProperties[] = [ }, default: '', description: - 'The most advanced lifecycle stage across all contacts associated with this company or organization. Choose from the list, or specify an ID using an expression.', + 'The most advanced lifecycle stage across all contacts associated with this company or organization. Choose from the list, or specify an ID using an expression.', }, { displayName: 'LinkedIn Bio', @@ -282,7 +282,7 @@ export const companyFields: INodeProperties[] = [ }, default: '', description: - 'Original source for the contact with the earliest activity for this company or organization. Choose from the list, or specify an ID using an expression.', + 'Original source for the contact with the earliest activity for this company or organization. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Phone Number', @@ -333,7 +333,7 @@ export const companyFields: INodeProperties[] = [ }, default: '', description: - 'The Target Account property is a means to flag high priority companies if you are following an account based strategy. Choose from the list, or specify an ID using an expression.', + 'The Target Account property is a means to flag high priority companies if you are following an account based strategy. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Timezone', @@ -390,7 +390,7 @@ export const companyFields: INodeProperties[] = [ }, default: '', description: - 'The optional classification of this company record - prospect, partner, etc. Choose from the list, or specify an ID using an expression.', + 'The optional classification of this company record - prospect, partner, etc. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Web Technologies Name or ID', @@ -401,7 +401,7 @@ export const companyFields: INodeProperties[] = [ }, default: '', description: - 'The web technologies used by the company or organization. Powered by HubSpot Insights. Choose from the list, or specify an ID using an expression.', + 'The web technologies used by the company or organization. Powered by HubSpot Insights. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Website URL', @@ -526,7 +526,7 @@ export const companyFields: INodeProperties[] = [ }, default: '', description: - 'The owner of the company. Choose from the list, or specify an ID using an expression.', + 'The owner of the company. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Country/Region', @@ -558,7 +558,7 @@ export const companyFields: INodeProperties[] = [ }, default: '', description: - 'Name of the property. Choose from the list, or specify an ID using an expression.', + 'Name of the property. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Value', @@ -605,7 +605,7 @@ export const companyFields: INodeProperties[] = [ }, default: '', description: - 'The type of business the company performs. Choose from the list, or specify an ID using an expression.', + 'The type of business the company performs. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Is Public', @@ -623,7 +623,7 @@ export const companyFields: INodeProperties[] = [ }, default: '', description: - 'The company\'s sales, prospecting or outreach status. Choose from the list, or specify an ID using an expression.', + 'The company\'s sales, prospecting or outreach status. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Lifecycle Stage Name or ID', @@ -634,7 +634,7 @@ export const companyFields: INodeProperties[] = [ }, default: '', description: - 'The most advanced lifecycle stage across all contacts associated with this company or organization. Choose from the list, or specify an ID using an expression.', + 'The most advanced lifecycle stage across all contacts associated with this company or organization. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Linkedin Bio', @@ -675,7 +675,7 @@ export const companyFields: INodeProperties[] = [ }, default: '', description: - 'Original source for the contact with the earliest activity for this company or organization. Choose from the list, or specify an ID using an expression.', + 'Original source for the contact with the earliest activity for this company or organization. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Phone Number', @@ -726,7 +726,7 @@ export const companyFields: INodeProperties[] = [ }, default: '', description: - 'The Target Account property is a means to flag high priority companies if you are following an account based strategy. Choose from the list, or specify an ID using an expression.', + 'The Target Account property is a means to flag high priority companies if you are following an account based strategy. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Timezone', @@ -783,7 +783,7 @@ export const companyFields: INodeProperties[] = [ }, default: '', description: - 'The optional classification of this company record - prospect, partner, etc. Choose from the list, or specify an ID using an expression.', + 'The optional classification of this company record - prospect, partner, etc. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Web Technologies Name or ID', @@ -794,7 +794,7 @@ export const companyFields: INodeProperties[] = [ }, default: '', description: - 'The web technologies used by the company or organization. Powered by HubSpot Insights. Choose from the list, or specify an ID using an expression.', + 'The web technologies used by the company or organization. Powered by HubSpot Insights. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Website URL', @@ -860,7 +860,7 @@ export const companyFields: INodeProperties[] = [ displayName: 'Options', name: 'additionalFields', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, displayOptions: { show: { @@ -954,7 +954,7 @@ export const companyFields: INodeProperties[] = [ }, default: [], description: - 'Whether to include specific Company properties in the returned results. Choose from a list, or specify IDs using an expression. Choose from the list, or specify IDs using an expression.', + 'Whether to include specific Company properties in the returned results. Choose from a list, or specify IDs using an expression. Choose from the list, or specify IDs using an expression.', }, { displayName: 'Include', @@ -978,7 +978,7 @@ export const companyFields: INodeProperties[] = [ }, ], description: - 'Whether to include specific Company properties in the returned results. Choose from a list, or specify IDs using an expression.', + 'Whether to include specific Company properties in the returned results. Choose from a list, or specify IDs using an expression.', }, ], }, @@ -1064,7 +1064,7 @@ export const companyFields: INodeProperties[] = [ displayName: 'Options', name: 'additionalFields', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, displayOptions: { show: { @@ -1100,7 +1100,7 @@ export const companyFields: INodeProperties[] = [ }, default: [], description: - 'Whether to include specific Company properties in the returned results. Choose from a list, or specify IDs using an expression. Choose from the list, or specify IDs using an expression.', + 'Whether to include specific Company properties in the returned results. Choose from a list, or specify IDs using an expression. Choose from the list, or specify IDs using an expression.', }, { displayName: 'Include', @@ -1124,7 +1124,7 @@ export const companyFields: INodeProperties[] = [ }, ], description: - 'Whether to include specific Company properties in the returned results. Choose from a list, or specify IDs using an expression.', + 'Whether to include specific Company properties in the returned results. Choose from a list, or specify IDs using an expression.', }, ], }, @@ -1181,7 +1181,7 @@ export const companyFields: INodeProperties[] = [ displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, displayOptions: { show: { @@ -1199,7 +1199,7 @@ export const companyFields: INodeProperties[] = [ }, default: [], description: - 'Whether to include specific Company properties in the returned results. Choose from a list, or specify IDs using an expression. Choose from the list, or specify IDs using an expression.', + 'Whether to include specific Company properties in the returned results. Choose from a list, or specify IDs using an expression. Choose from the list, or specify IDs using an expression.', }, ], }, diff --git a/packages/nodes-base/nodes/Hubspot/V2/ContactDescription.ts b/packages/nodes-base/nodes/Hubspot/V2/ContactDescription.ts index c8a9417ce6..81041e10f1 100644 --- a/packages/nodes-base/nodes/Hubspot/V2/ContactDescription.ts +++ b/packages/nodes-base/nodes/Hubspot/V2/ContactDescription.ts @@ -103,7 +103,7 @@ export const contactFields: INodeProperties[] = [ }, default: '', description: - 'Companies associated with the ticket. Choose from the list, or specify an ID using an expression.', + 'Companies associated with the ticket. Choose from the list, or specify an ID using an expression.', }, { displayName: 'City', @@ -142,7 +142,7 @@ export const contactFields: INodeProperties[] = [ name: 'contactOwner', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getOwners', }, @@ -177,7 +177,7 @@ export const contactFields: INodeProperties[] = [ }, default: '', description: - 'Name of the property. Choose from the list, or specify an ID using an expression.', + 'Name of the property. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Value', @@ -290,7 +290,7 @@ export const contactFields: INodeProperties[] = [ }, default: '', description: - 'The contact\'s sales, prospecting or outreach status. Choose from the list, or specify an ID using an expression.', + 'The contact\'s sales, prospecting or outreach status. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Legal Basic For Processing Contact Data Name or ID', @@ -301,7 +301,7 @@ export const contactFields: INodeProperties[] = [ }, default: '', description: - "Legal basis for processing contact's data; 'Not applicable' will exempt the contact from GDPR protections. Choose from the list, or specify an ID using an expression.", + "Legal basis for processing contact's data; 'Not applicable' will exempt the contact from GDPR protections. Choose from the list, or specify an ID using an expression.", }, { displayName: 'Lifecycle Stage Name or ID', @@ -312,7 +312,7 @@ export const contactFields: INodeProperties[] = [ }, default: '', description: - 'The qualification of contacts to sales readiness. It can be set through imports, forms, workflows, and manually on a per contact basis. Choose from the list, or specify an ID using an expression.', + 'The qualification of contacts to sales readiness. It can be set through imports, forms, workflows, and manually on a per contact basis. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Marital Status', @@ -360,7 +360,7 @@ export const contactFields: INodeProperties[] = [ }, default: '', description: - 'The number of company employees. Choose from the list, or specify an ID using an expression.', + 'The number of company employees. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Original Source Name or ID', @@ -371,7 +371,7 @@ export const contactFields: INodeProperties[] = [ }, default: '', description: - 'The first known source through which a contact found your website. Source is automatically set by HubSpot, but may be updated manually. Choose from the list, or specify an ID using an expression.', + 'The first known source through which a contact found your website. Source is automatically set by HubSpot, but may be updated manually. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Phone Number', @@ -394,7 +394,7 @@ export const contactFields: INodeProperties[] = [ }, default: [], description: - 'Whether to include specific Contact properties in the returned results. Choose from a list, or specify IDs using an expression. Choose from the list, or specify IDs using an expression.', + 'Whether to include specific Contact properties in the returned results. Choose from a list, or specify IDs using an expression. Choose from the list, or specify IDs using an expression.', }, { displayName: 'Postal Code', @@ -412,7 +412,7 @@ export const contactFields: INodeProperties[] = [ }, default: '', description: - 'Set your contact\'s preferred language for communications. This property can be changed from an import, form, or integration. Choose from the list, or specify an ID using an expression.', + 'Set your contact\'s preferred language for communications. This property can be changed from an import, form, or integration. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Relationship Status', @@ -470,7 +470,7 @@ export const contactFields: INodeProperties[] = [ }, default: '', description: - 'The status of the contact\'s content membership. Choose from the list, or specify an ID using an expression.', + 'The status of the contact\'s content membership. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Street Address', @@ -508,7 +508,7 @@ export const contactFields: INodeProperties[] = [ displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, displayOptions: { show: { @@ -578,7 +578,7 @@ export const contactFields: INodeProperties[] = [ displayName: 'Options', name: 'additionalFields', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, displayOptions: { show: { @@ -639,7 +639,7 @@ export const contactFields: INodeProperties[] = [ }, default: [], description: - 'Whether to include specific Contact properties in the returned results. Choose from a list, or specify IDs using an expression. Choose from the list, or specify IDs using an expression.', + 'Whether to include specific Contact properties in the returned results. Choose from a list, or specify IDs using an expression. Choose from the list, or specify IDs using an expression.', }, { displayName: 'Include', @@ -663,7 +663,7 @@ export const contactFields: INodeProperties[] = [ }, ], description: - '

Used to include specific contact properties in the results. By default, the results will only include Contact ID and will not include the values for any properties for your Contact.

Including this parameter will include the data for the specified property in the results. You can include this parameter multiple times to request multiple properties separated by a comma: ,.

. Choose from the list, or specify IDs using an expression.', + '

Used to include specific contact properties in the results. By default, the results will only include Contact ID and will not include the values for any properties for your Contact.

Including this parameter will include the data for the specified property in the results. You can include this parameter multiple times to request multiple properties separated by a comma: ,.

. Choose from the list, or specify IDs using an expression.', }, ], }, @@ -706,7 +706,7 @@ export const contactFields: INodeProperties[] = [ displayName: 'Options', name: 'additionalFields', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, displayOptions: { show: { @@ -766,7 +766,7 @@ export const contactFields: INodeProperties[] = [ }, default: [], description: - 'Whether to include specific Contact properties in the returned results. Choose from a list, or specify IDs using an expression. Choose from the list, or specify IDs using an expression.', + 'Whether to include specific Contact properties in the returned results. Choose from a list, or specify IDs using an expression. Choose from the list, or specify IDs using an expression.', }, { displayName: 'Include', @@ -790,7 +790,7 @@ export const contactFields: INodeProperties[] = [ }, ], description: - '

Used to include specific contact properties in the results. By default, the results will only include Contact ID and will not include the values for any properties for your Contact.

Including this parameter will include the data for the specified property in the results. You can include this parameter multiple times to request multiple properties separated by a comma: ,.

. Choose from the list, or specify IDs using an expression.', + '

Used to include specific contact properties in the results. By default, the results will only include Contact ID and will not include the values for any properties for your Contact.

Including this parameter will include the data for the specified property in the results. You can include this parameter multiple times to request multiple properties separated by a comma: ,.

. Choose from the list, or specify IDs using an expression.', }, ], }, @@ -879,7 +879,7 @@ export const contactFields: INodeProperties[] = [ displayName: 'Options', name: 'additionalFields', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, displayOptions: { show: { @@ -939,7 +939,7 @@ export const contactFields: INodeProperties[] = [ }, default: [], description: - 'Whether to include specific Contact properties in the returned results. Choose from a list, or specify IDs using an expression. Choose from the list, or specify IDs using an expression.', + 'Whether to include specific Contact properties in the returned results. Choose from a list, or specify IDs using an expression. Choose from the list, or specify IDs using an expression.', }, { displayName: 'Include', @@ -963,7 +963,7 @@ export const contactFields: INodeProperties[] = [ }, ], description: - '

Used to include specific contact properties in the results. By default, the results will only include Contact ID and will not include the values for any properties for your Contact.

Including this parameter will include the data for the specified property in the results. You can include this parameter multiple times to request multiple properties separated by a comma: ,.

. Choose from the list, or specify IDs using an expression.', + '

Used to include specific contact properties in the results. By default, the results will only include Contact ID and will not include the values for any properties for your Contact.

Including this parameter will include the data for the specified property in the results. You can include this parameter multiple times to request multiple properties separated by a comma: ,.

. Choose from the list, or specify IDs using an expression.', }, ], }, @@ -1041,7 +1041,7 @@ export const contactFields: INodeProperties[] = [ name: 'propertyName', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getContactPropertiesWithType', }, @@ -1163,7 +1163,7 @@ export const contactFields: INodeProperties[] = [ displayName: 'Options', name: 'additionalFields', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, displayOptions: { show: { @@ -1199,7 +1199,7 @@ export const contactFields: INodeProperties[] = [ }, default: ['firstname', 'lastname', 'email'], description: - 'Whether to include specific Contact properties in the returned results. Choose from a list, or specify IDs using an expression. Choose from the list, or specify IDs using an expression.', + 'Whether to include specific Contact properties in the returned results. Choose from a list, or specify IDs using an expression. Choose from the list, or specify IDs using an expression.', }, { displayName: 'Query', @@ -1214,7 +1214,7 @@ export const contactFields: INodeProperties[] = [ name: 'sortBy', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getContactProperties', }, diff --git a/packages/nodes-base/nodes/Hubspot/V2/DealDescription.ts b/packages/nodes-base/nodes/Hubspot/V2/DealDescription.ts index ad28d00d0e..7887f7f44d 100644 --- a/packages/nodes-base/nodes/Hubspot/V2/DealDescription.ts +++ b/packages/nodes-base/nodes/Hubspot/V2/DealDescription.ts @@ -80,7 +80,7 @@ export const dealFields: INodeProperties[] = [ default: '', options: [], description: - 'The deal stage is required when creating a deal. See the CRM Pipelines API for details on managing pipelines and stages. Choose from the list, or specify an ID using an expression.', + 'The deal stage is required when creating a deal. See the CRM Pipelines API for details on managing pipelines and stages. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Deal Properties', @@ -106,7 +106,7 @@ export const dealFields: INodeProperties[] = [ name: 'associatedCompany', type: 'multiOptions', description: - 'Whether to include specific Associated Company properties in the returned results. Choose from a list, or specify IDs using an expression. Choose from the list, or specify IDs using an expression.', + 'Whether to include specific Associated Company properties in the returned results. Choose from a list, or specify IDs using an expression. Choose from the list, or specify IDs using an expression.', typeOptions: { loadOptionsMethod: 'getCompanies', }, @@ -117,7 +117,7 @@ export const dealFields: INodeProperties[] = [ name: 'associatedVids', type: 'multiOptions', description: - 'Whether to include specific Associated Vid in the returned results. Choose from a list, or specify IDs using an expression. Choose from the list, or specify IDs using an expression.', + 'Whether to include specific Associated Vid in the returned results. Choose from a list, or specify IDs using an expression. Choose from the list, or specify IDs using an expression.', typeOptions: { loadOptionsMethod: 'getContacts', }, @@ -154,7 +154,7 @@ export const dealFields: INodeProperties[] = [ }, default: '', description: - 'Name of the property. Choose from the list, or specify an ID using an expression.', + 'Name of the property. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Value', @@ -218,7 +218,7 @@ export const dealFields: INodeProperties[] = [ name: 'dealType', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getDealTypes', }, @@ -229,7 +229,7 @@ export const dealFields: INodeProperties[] = [ name: 'pipeline', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getDealPipelines', }, @@ -331,7 +331,7 @@ export const dealFields: INodeProperties[] = [ }, default: '', description: - 'Name of the property. Choose from the list, or specify an ID using an expression.', + 'Name of the property. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Value', @@ -399,14 +399,14 @@ export const dealFields: INodeProperties[] = [ }, default: '', description: - 'The deal stage is required when creating a deal. See the CRM Pipelines API for details on managing pipelines and stages. Choose from the list, or specify an ID using an expression.', + 'The deal stage is required when creating a deal. See the CRM Pipelines API for details on managing pipelines and stages. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Deal Type Name or ID', name: 'dealType', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getDealTypes', }, @@ -505,7 +505,7 @@ export const dealFields: INodeProperties[] = [ }, default: [], description: - 'Whether to include specific Deal properties in the returned results. Choose from a list, or specify IDs using an expression. Choose from the list, or specify IDs using an expression.', + 'Whether to include specific Deal properties in the returned results. Choose from a list, or specify IDs using an expression. Choose from the list, or specify IDs using an expression.', }, { displayName: 'Include', @@ -529,7 +529,7 @@ export const dealFields: INodeProperties[] = [ }, ], description: - '

Used to include specific deal properties in the results. By default, the results will only include Deal ID and will not include the values for any properties for your Deals.

Including this parameter will include the data for the specified property in the results. You can include this parameter multiple times to request multiple properties separated by a comma: ,.

. Choose from the list, or specify IDs using an expression.', + '

Used to include specific deal properties in the results. By default, the results will only include Deal ID and will not include the values for any properties for your Deals.

Including this parameter will include the data for the specified property in the results. You can include this parameter multiple times to request multiple properties separated by a comma: ,.

. Choose from the list, or specify IDs using an expression.', }, ], }, @@ -571,7 +571,7 @@ export const dealFields: INodeProperties[] = [ displayName: 'Options', name: 'filters', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, displayOptions: { show: { @@ -641,7 +641,7 @@ export const dealFields: INodeProperties[] = [ }, default: [], description: - 'Whether to include specific Deal properties in the returned results. Choose from a list, or specify IDs using an expression. Choose from the list, or specify IDs using an expression.', + 'Whether to include specific Deal properties in the returned results. Choose from a list, or specify IDs using an expression. Choose from the list, or specify IDs using an expression.', }, { displayName: 'Include', @@ -665,7 +665,7 @@ export const dealFields: INodeProperties[] = [ }, ], description: - '

Used to include specific deal properties in the results. By default, the results will only include Deal ID and will not include the values for any properties for your Deals.

Including this parameter will include the data for the specified property in the results. You can include this parameter multiple times to request multiple properties separated by a comma: ,.

. Choose from the list, or specify IDs using an expression.', + '

Used to include specific deal properties in the results. By default, the results will only include Deal ID and will not include the values for any properties for your Deals.

Including this parameter will include the data for the specified property in the results. You can include this parameter multiple times to request multiple properties separated by a comma: ,.

. Choose from the list, or specify IDs using an expression.', displayOptions: { show: { '@version': [2], @@ -757,7 +757,7 @@ export const dealFields: INodeProperties[] = [ displayName: 'Options', name: 'filters', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, displayOptions: { show: { @@ -859,7 +859,7 @@ export const dealFields: INodeProperties[] = [ name: 'propertyName', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getDealProperties', }, @@ -981,7 +981,7 @@ export const dealFields: INodeProperties[] = [ displayName: 'Options', name: 'additionalFields', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, displayOptions: { show: { @@ -1017,7 +1017,7 @@ export const dealFields: INodeProperties[] = [ }, default: [], description: - 'Whether to include specific Deal properties in the returned results. Choose from a list, or specify IDs using an expression. Choose from the list, or specify IDs using an expression.', + 'Whether to include specific Deal properties in the returned results. Choose from a list, or specify IDs using an expression. Choose from the list, or specify IDs using an expression.', }, { displayName: 'Query', @@ -1032,7 +1032,7 @@ export const dealFields: INodeProperties[] = [ name: 'sortBy', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getDealProperties', }, diff --git a/packages/nodes-base/nodes/Hubspot/V2/FormDescription.ts b/packages/nodes-base/nodes/Hubspot/V2/FormDescription.ts index 09c12497f5..23b0a82f57 100644 --- a/packages/nodes-base/nodes/Hubspot/V2/FormDescription.ts +++ b/packages/nodes-base/nodes/Hubspot/V2/FormDescription.ts @@ -49,13 +49,13 @@ export const formFields: INodeProperties[] = [ }, default: '', description: - 'The ID of the form you\'re sending data to. Choose from the list, or specify an ID using an expression.', + 'The ID of the form you\'re sending data to. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Options', name: 'additionalFields', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, displayOptions: { show: { @@ -214,7 +214,7 @@ export const formFields: INodeProperties[] = [ }, default: '', description: - 'The ID of the specific subscription type. Choose from the list, or specify an ID using an expression.', + 'The ID of the specific subscription type. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Value', @@ -251,7 +251,7 @@ export const formFields: INodeProperties[] = [ }, default: '', description: - 'The ID of the specific subscription type that this forms indicates interest to. Choose from the list, or specify an ID using an expression.', + 'The ID of the specific subscription type that this forms indicates interest to. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Value', @@ -310,6 +310,6 @@ export const formFields: INodeProperties[] = [ }, default: '', description: - 'The ID of the form. Choose from the list, or specify an ID using an expression.', + 'The ID of the form. Choose from the list, or specify an ID using an expression.', }, ]; diff --git a/packages/nodes-base/nodes/Hubspot/V2/HubspotV2.node.ts b/packages/nodes-base/nodes/Hubspot/V2/HubspotV2.node.ts index 3bd8d4ab8d..f25f7dc0de 100644 --- a/packages/nodes-base/nodes/Hubspot/V2/HubspotV2.node.ts +++ b/packages/nodes-base/nodes/Hubspot/V2/HubspotV2.node.ts @@ -15,7 +15,7 @@ import type { INodeTypeDescription, JsonObject, } from 'n8n-workflow'; -import { NodeApiError, NodeOperationError } from 'n8n-workflow'; +import { NodeApiError, NodeConnectionType, NodeOperationError } from 'n8n-workflow'; import { snakeCase } from 'change-case'; import set from 'lodash/set'; @@ -60,8 +60,8 @@ export class HubspotV2 implements INodeType { defaults: { name: 'HubSpot', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'hubspotApi', @@ -939,11 +939,11 @@ export class HubspotV2 implements INodeType { // select them easily async getOwners(this: ILoadOptionsFunctions): Promise { const returnData: INodePropertyOptions[] = []; - const endpoint = '/owners/v2/owners'; - const owners = await hubspotApiRequest.call(this, 'GET', endpoint); - for (const owner of owners) { + const endpoint = '/crm/v3/owners'; + const { results } = await hubspotApiRequest.call(this, 'GET', endpoint); + for (const owner of results) { const ownerName = owner.email; - const ownerId = owner.ownerId; + const ownerId = isNaN(parseInt(owner.id)) ? owner.id : parseInt(owner.id); returnData.push({ name: ownerName, value: ownerId, @@ -1130,13 +1130,13 @@ export class HubspotV2 implements INodeType { }; }, async searchOwners(this: ILoadOptionsFunctions): Promise { - const endpoint = '/owners/v2/owners'; - const owners = await hubspotApiRequest.call(this, 'GET', endpoint, {}); + const endpoint = '/crm/v3/owners'; + const { results } = await hubspotApiRequest.call(this, 'GET', endpoint, {}); return { // tslint:disable-next-line: no-any - results: owners.map((b: any) => ({ + results: results.map((b: any) => ({ name: b.email, - value: b.ownerId, + value: isNaN(parseInt(b.id)) ? b.id : parseInt(b.id), })), }; }, @@ -1200,7 +1200,7 @@ export class HubspotV2 implements INodeType { ); returnData.push(...executionData); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push({ json: { error: (error as JsonObject).message } }); } else { throw error; @@ -3071,7 +3071,7 @@ export class HubspotV2 implements INodeType { set(error, 'message', message); } } - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push({ json: { error: (error as JsonObject).message }, pairedItem: { item: i }, diff --git a/packages/nodes-base/nodes/Hubspot/V2/TicketDescription.ts b/packages/nodes-base/nodes/Hubspot/V2/TicketDescription.ts index 50a4082f41..6885761738 100644 --- a/packages/nodes-base/nodes/Hubspot/V2/TicketDescription.ts +++ b/packages/nodes-base/nodes/Hubspot/V2/TicketDescription.ts @@ -67,7 +67,7 @@ export const ticketFields: INodeProperties[] = [ }, default: '', description: - 'The ID of the pipeline the ticket is in. Choose from the list, or specify an ID using an expression.', + 'The ID of the pipeline the ticket is in. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Stage Name or ID', @@ -86,7 +86,7 @@ export const ticketFields: INodeProperties[] = [ }, default: '', description: - 'The stage ID of the pipeline the ticket is in; depends on Pipeline ID. Choose from the list, or specify an ID using an expression.', + 'The stage ID of the pipeline the ticket is in; depends on Pipeline ID. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Ticket Name', @@ -123,7 +123,7 @@ export const ticketFields: INodeProperties[] = [ }, default: [], description: - 'Whether to include specific Company properties in the returned results. Choose from a list, or specify IDs using an expression. Choose from the list, or specify IDs using an expression.', + 'Whether to include specific Company properties in the returned results. Choose from a list, or specify IDs using an expression. Choose from the list, or specify IDs using an expression.', }, { displayName: 'Contact Names or IDs', @@ -134,7 +134,7 @@ export const ticketFields: INodeProperties[] = [ }, default: [], description: - 'Whether to include specific Contact properties in the returned results. Choose from a list, or specify IDs using an expression. Choose from the list, or specify IDs using an expression.', + 'Whether to include specific Contact properties in the returned results. Choose from a list, or specify IDs using an expression. Choose from the list, or specify IDs using an expression.', }, { displayName: 'Category Name or ID', @@ -145,7 +145,7 @@ export const ticketFields: INodeProperties[] = [ }, default: '', description: - 'Main reason customer reached out for help. Choose from the list, or specify an ID using an expression.', + 'Main reason customer reached out for help. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Close Date', @@ -182,7 +182,7 @@ export const ticketFields: INodeProperties[] = [ }, default: '', description: - 'The level of attention needed on the ticket. Choose from the list, or specify an ID using an expression.', + 'The level of attention needed on the ticket. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Resolution Name or ID', @@ -193,7 +193,7 @@ export const ticketFields: INodeProperties[] = [ }, default: '', description: - 'The action taken to resolve the ticket. Choose from the list, or specify an ID using an expression.', + 'The action taken to resolve the ticket. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Source Name or ID', @@ -204,7 +204,7 @@ export const ticketFields: INodeProperties[] = [ }, default: '', description: - 'Channel where ticket was originally submitted. Choose from the list, or specify an ID using an expression.', + 'Channel where ticket was originally submitted. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Ticket Owner Name or ID', @@ -215,7 +215,7 @@ export const ticketFields: INodeProperties[] = [ }, default: '', description: - 'The user from your team that the ticket is assigned to. You can assign additional users to a ticket record by creating a custom HubSpot user property. Choose from the list, or specify an ID using an expression.', + 'The user from your team that the ticket is assigned to. You can assign additional users to a ticket record by creating a custom HubSpot user property. Choose from the list, or specify an ID using an expression.', }, ], }, @@ -283,7 +283,7 @@ export const ticketFields: INodeProperties[] = [ }, default: [], description: - 'Whether to include specific Company properties in the returned results. Choose from a list, or specify IDs using an expression. Choose from the list, or specify IDs using an expression.', + 'Whether to include specific Company properties in the returned results. Choose from a list, or specify IDs using an expression. Choose from the list, or specify IDs using an expression.', }, { displayName: 'Contact Names or IDs', @@ -294,7 +294,7 @@ export const ticketFields: INodeProperties[] = [ }, default: [], description: - 'Whether to include specific Contact properties in the returned results. Choose from a list, or specify IDs using an expression. Choose from the list, or specify IDs using an expression.', + 'Whether to include specific Contact properties in the returned results. Choose from a list, or specify IDs using an expression. Choose from the list, or specify IDs using an expression.', }, { displayName: 'Category Name or ID', @@ -305,7 +305,7 @@ export const ticketFields: INodeProperties[] = [ }, default: '', description: - 'Main reason customer reached out for help. Choose from the list, or specify an ID using an expression.', + 'Main reason customer reached out for help. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Close Date', @@ -342,7 +342,7 @@ export const ticketFields: INodeProperties[] = [ }, default: '', description: - 'The ID of the pipeline the ticket is in. Choose from the list, or specify an ID using an expression.', + 'The ID of the pipeline the ticket is in. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Priority Name or ID', @@ -353,7 +353,7 @@ export const ticketFields: INodeProperties[] = [ }, default: '', description: - 'The level of attention needed on the ticket. Choose from the list, or specify an ID using an expression.', + 'The level of attention needed on the ticket. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Resolution Name or ID', @@ -364,7 +364,7 @@ export const ticketFields: INodeProperties[] = [ }, default: '', description: - 'The action taken to resolve the ticket. Choose from the list, or specify an ID using an expression.', + 'The action taken to resolve the ticket. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Source Name or ID', @@ -375,7 +375,7 @@ export const ticketFields: INodeProperties[] = [ }, default: '', description: - 'Channel where ticket was originally submitted. Choose from the list, or specify an ID using an expression.', + 'Channel where ticket was originally submitted. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Stage Name or ID', @@ -387,7 +387,7 @@ export const ticketFields: INodeProperties[] = [ }, default: '', description: - 'The stage ID of the pipeline the ticket is in; depends on Pipeline ID. Choose from the list, or specify an ID using an expression.', + 'The stage ID of the pipeline the ticket is in; depends on Pipeline ID. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Ticket Name', @@ -404,7 +404,7 @@ export const ticketFields: INodeProperties[] = [ }, default: '', description: - 'The user from your team that the ticket is assigned to. You can assign additional users to a ticket record by creating a custom HubSpot user property. Choose from the list, or specify an ID using an expression.', + 'The user from your team that the ticket is assigned to. You can assign additional users to a ticket record by creating a custom HubSpot user property. Choose from the list, or specify an ID using an expression.', }, ], }, @@ -455,7 +455,7 @@ export const ticketFields: INodeProperties[] = [ displayName: 'Options', name: 'additionalFields', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, displayOptions: { show: { @@ -479,7 +479,7 @@ export const ticketFields: INodeProperties[] = [ }, default: [], description: - 'Whether to include specific Ticket properties in the returned results. Choose from a list, or specify IDs using an expression. Choose from the list, or specify IDs using an expression.', + 'Whether to include specific Ticket properties in the returned results. Choose from a list, or specify IDs using an expression. Choose from the list, or specify IDs using an expression.', }, { displayName: 'Properties With History', @@ -530,7 +530,7 @@ export const ticketFields: INodeProperties[] = [ displayName: 'Options', name: 'additionalFields', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, displayOptions: { show: { @@ -548,7 +548,7 @@ export const ticketFields: INodeProperties[] = [ }, default: [], description: - 'Whether to include specific Ticket properties in the returned results. Choose from a list, or specify IDs using an expression. Choose from the list, or specify IDs using an expression.', + 'Whether to include specific Ticket properties in the returned results. Choose from a list, or specify IDs using an expression. Choose from the list, or specify IDs using an expression.', }, { displayName: 'Properties With History', diff --git a/packages/nodes-base/nodes/HumanticAI/HumanticAi.node.json b/packages/nodes-base/nodes/HumanticAI/HumanticAi.node.json index ea4add60fc..5758d73071 100644 --- a/packages/nodes-base/nodes/HumanticAI/HumanticAi.node.json +++ b/packages/nodes-base/nodes/HumanticAI/HumanticAi.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/humanticAi" + "url": "https://docs.n8n.io/integrations/builtin/credentials/humanticAi/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/HumanticAI/HumanticAi.node.ts b/packages/nodes-base/nodes/HumanticAI/HumanticAi.node.ts index 41fc6b1260..fcbd86ef09 100644 --- a/packages/nodes-base/nodes/HumanticAI/HumanticAi.node.ts +++ b/packages/nodes-base/nodes/HumanticAI/HumanticAi.node.ts @@ -5,6 +5,7 @@ import type { INodeType, INodeTypeDescription, } from 'n8n-workflow'; +import { NodeConnectionType } from 'n8n-workflow'; import { humanticAiApiRequest } from './GenericFunctions'; @@ -23,8 +24,8 @@ export class HumanticAi implements INodeType { defaults: { name: 'Humantic AI', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'humanticAiApi', diff --git a/packages/nodes-base/nodes/HumanticAI/ProfileDescription.ts b/packages/nodes-base/nodes/HumanticAI/ProfileDescription.ts index e27350232e..f6bdf0108a 100644 --- a/packages/nodes-base/nodes/HumanticAI/ProfileDescription.ts +++ b/packages/nodes-base/nodes/HumanticAI/ProfileDescription.ts @@ -104,7 +104,7 @@ export const profileFields: INodeProperties[] = [ displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, displayOptions: { show: { diff --git a/packages/nodes-base/nodes/Hunter/Hunter.node.json b/packages/nodes-base/nodes/Hunter/Hunter.node.json index 4ad049edf0..7835ee69ed 100644 --- a/packages/nodes-base/nodes/Hunter/Hunter.node.json +++ b/packages/nodes-base/nodes/Hunter/Hunter.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/hunter" + "url": "https://docs.n8n.io/integrations/builtin/credentials/hunter/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Hunter/Hunter.node.ts b/packages/nodes-base/nodes/Hunter/Hunter.node.ts index 35e730837f..c8eed8e9ba 100644 --- a/packages/nodes-base/nodes/Hunter/Hunter.node.ts +++ b/packages/nodes-base/nodes/Hunter/Hunter.node.ts @@ -5,6 +5,7 @@ import type { INodeType, INodeTypeDescription, } from 'n8n-workflow'; +import { NodeConnectionType } from 'n8n-workflow'; import { hunterApiRequest, hunterApiRequestAllItems } from './GenericFunctions'; export class Hunter implements INodeType { @@ -20,8 +21,8 @@ export class Hunter implements INodeType { defaults: { name: 'Hunter', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'hunterApi', @@ -372,7 +373,7 @@ export class Hunter implements INodeType { returnData.push(...executionData); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { const executionErrorData = this.helpers.constructExecutionMetaData( this.helpers.returnJsonArray({ error: error.message }), { itemData: { item: i } }, diff --git a/packages/nodes-base/nodes/ICalendar/ICalendar.node.ts b/packages/nodes-base/nodes/ICalendar/ICalendar.node.ts index f24a3644d7..b11706bb7a 100644 --- a/packages/nodes-base/nodes/ICalendar/ICalendar.node.ts +++ b/packages/nodes-base/nodes/ICalendar/ICalendar.node.ts @@ -5,6 +5,7 @@ import type { INodeType, INodeTypeDescription, } from 'n8n-workflow'; +import { NodeConnectionType } from 'n8n-workflow'; import * as createEvent from './createEvent.operation'; @@ -22,8 +23,8 @@ export class ICalendar implements INodeType { name: 'iCalendar', color: '#408000', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [], properties: [ { diff --git a/packages/nodes-base/nodes/ICalendar/createEvent.operation.ts b/packages/nodes-base/nodes/ICalendar/createEvent.operation.ts index ec6c5c4d88..99e2bcf816 100644 --- a/packages/nodes-base/nodes/ICalendar/createEvent.operation.ts +++ b/packages/nodes-base/nodes/ICalendar/createEvent.operation.ts @@ -28,7 +28,6 @@ export const description: INodeProperties[] = [ required: true, description: 'Date and time at which the event begins. (For all-day events, the time will be ignored.).', - validateType: 'dateTime', }, { displayName: 'End', @@ -60,7 +59,7 @@ export const description: INodeProperties[] = [ displayName: 'Options', name: 'additionalFields', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, options: [ { @@ -354,7 +353,7 @@ export async function execute(this: IExecuteFunctions, items: INodeExecutionData }); } catch (error) { const errorDescription = error.description; - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push({ json: { error: error.message, diff --git a/packages/nodes-base/nodes/If/If.node.ts b/packages/nodes-base/nodes/If/If.node.ts index 7bc1d459ca..48732ea75b 100644 --- a/packages/nodes-base/nodes/If/If.node.ts +++ b/packages/nodes-base/nodes/If/If.node.ts @@ -13,12 +13,14 @@ export class If extends VersionedNodeType { iconColor: 'green', group: ['transform'], description: 'Route items to different branches (true/false)', - defaultVersion: 2, + defaultVersion: 2.2, }; const nodeVersions: IVersionedNodeType['nodeVersions'] = { 1: new IfV1(baseDescription), 2: new IfV2(baseDescription), + 2.1: new IfV2(baseDescription), + 2.2: new IfV2(baseDescription), }; super(nodeVersions, baseDescription); diff --git a/packages/nodes-base/nodes/If/V1/IfV1.node.ts b/packages/nodes-base/nodes/If/V1/IfV1.node.ts index b256a8a5cd..e7fa6b339a 100644 --- a/packages/nodes-base/nodes/If/V1/IfV1.node.ts +++ b/packages/nodes-base/nodes/If/V1/IfV1.node.ts @@ -8,7 +8,7 @@ import type { INodeTypeDescription, NodeParameterValue, } from 'n8n-workflow'; -import { NodeOperationError } from 'n8n-workflow'; +import { NodeConnectionType, NodeOperationError } from 'n8n-workflow'; export class IfV1 implements INodeType { description: INodeTypeDescription; @@ -21,9 +21,9 @@ export class IfV1 implements INodeType { name: 'If', color: '#408000', }, - inputs: ['main'], + inputs: [NodeConnectionType.Main], - outputs: ['main', 'main'], + outputs: [NodeConnectionType.Main, NodeConnectionType.Main], outputNames: ['true', 'false'], properties: [ { diff --git a/packages/nodes-base/nodes/If/V2/IfV2.node.ts b/packages/nodes-base/nodes/If/V2/IfV2.node.ts index dc3d55c004..6ef2dcb626 100644 --- a/packages/nodes-base/nodes/If/V2/IfV2.node.ts +++ b/packages/nodes-base/nodes/If/V2/IfV2.node.ts @@ -1,11 +1,17 @@ import set from 'lodash/set'; -import type { - IExecuteFunctions, - INodeExecutionData, - INodeType, - INodeTypeBaseDescription, - INodeTypeDescription, +import { + ApplicationError, + NodeOperationError, + type IExecuteFunctions, + type INodeExecutionData, + type INodeType, + type INodeTypeBaseDescription, + type INodeTypeDescription, + NodeConnectionType, } from 'n8n-workflow'; +import { ENABLE_LESS_STRICT_TYPE_VALIDATION } from '../../../utils/constants'; +import { looseTypeValidationProperty } from '../../../utils/descriptions'; +import { getTypeValidationParameter, getTypeValidationStrictness } from './utils'; export class IfV2 implements INodeType { description: INodeTypeDescription; @@ -13,13 +19,13 @@ export class IfV2 implements INodeType { constructor(baseDescription: INodeTypeBaseDescription) { this.description = { ...baseDescription, - version: 2, + version: [2, 2.1, 2.2], defaults: { name: 'If', color: '#408000', }, - inputs: ['main'], - outputs: ['main', 'main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main, NodeConnectionType.Main], outputNames: ['true', 'false'], parameterPane: 'wide', properties: [ @@ -32,7 +38,17 @@ export class IfV2 implements INodeType { typeOptions: { filter: { caseSensitive: '={{!$parameter.options.ignoreCase}}', - typeValidation: '={{$parameter.options.looseTypeValidation ? "loose" : "strict"}}', + typeValidation: getTypeValidationStrictness(2.1), + version: '={{ $nodeVersion >= 2.2 ? 2 : 1 }}', + }, + }, + }, + { + ...looseTypeValidationProperty, + default: false, + displayOptions: { + show: { + '@version': [{ _cnd: { gte: 2.1 } }], }, }, }, @@ -51,11 +67,12 @@ export class IfV2 implements INodeType { default: true, }, { - displayName: 'Less Strict Type Validation', - description: 'Whether to try casting value types based on the selected operator', - name: 'looseTypeValidation', - type: 'boolean', - default: true, + ...looseTypeValidationProperty, + displayOptions: { + show: { + '@version': [{ _cnd: { lt: 2.1 } }], + }, + }, }, ], }, @@ -79,12 +96,11 @@ export class IfV2 implements INodeType { extractValue: true, }) as boolean; } catch (error) { - if (!options.looseTypeValidation) { - set( - error, - 'description', - "Try changing the type of comparison. Alternatively you can enable 'Less Strict Type Validation' in the options.", - ); + if ( + !getTypeValidationParameter(2.1)(this, itemIndex, options.looseTypeValidation) && + !error.description + ) { + set(error, 'description', ENABLE_LESS_STRICT_TYPE_VALIDATION); } set(error, 'context.itemIndex', itemIndex); set(error, 'node', this.getNode()); @@ -101,10 +117,21 @@ export class IfV2 implements INodeType { falseItems.push(item); } } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { falseItems.push(item); } else { - throw error; + if (error instanceof NodeOperationError) { + throw error; + } + + if (error instanceof ApplicationError) { + set(error, 'context.itemIndex', itemIndex); + throw error; + } + + throw new NodeOperationError(this.getNode(), error, { + itemIndex, + }); } } }); diff --git a/packages/nodes-base/nodes/If/V2/utils.ts b/packages/nodes-base/nodes/If/V2/utils.ts new file mode 100644 index 0000000000..21af372421 --- /dev/null +++ b/packages/nodes-base/nodes/If/V2/utils.ts @@ -0,0 +1,15 @@ +import type { IExecuteFunctions } from 'n8n-workflow'; + +export const getTypeValidationStrictness = (version: number) => { + return `={{ ($nodeVersion < ${version} ? $parameter.options.looseTypeValidation : $parameter.looseTypeValidation) ? "loose" : "strict" }}`; +}; + +export const getTypeValidationParameter = (version: number) => { + return (context: IExecuteFunctions, itemIndex: number, option: boolean | undefined) => { + if (context.getNode().typeVersion < version) { + return option; + } else { + return context.getNodeParameter('looseTypeValidation', itemIndex, false) as boolean; + } + }; +}; diff --git a/packages/nodes-base/nodes/If/test/v2/IfV2.boolean.json b/packages/nodes-base/nodes/If/test/v2/IfV2.boolean.json new file mode 100644 index 0000000000..3579d00c43 --- /dev/null +++ b/packages/nodes-base/nodes/If/test/v2/IfV2.boolean.json @@ -0,0 +1,174 @@ +{ + "name": "Filter test: boolean", + "nodes": [ + { + "parameters": {}, + "id": "9e2c2dc5-bd37-460b-a5a4-943860dcc03e", + "name": "When clicking \"Execute Workflow\"", + "type": "n8n-nodes-base.manualTrigger", + "typeVersion": 1, + "position": [ + -720, + 160 + ] + }, + { + "parameters": {}, + "id": "3184fda2-b1d0-400a-a882-5844bbe99ae3", + "name": "false", + "type": "n8n-nodes-base.noOp", + "typeVersion": 1, + "position": [ + 0, + 260 + ] + }, + { + "parameters": { + "jsCode": "return [\n {\n email: \"shane@yahoo.com\",\n admin: false\n },\n {\n email: \"sharon@yahoo.com\",\n admin: true\n },\n {\n email: \"sarah@gmail.com\",\n admin: 'false'\n },\n {\n email: \"tom@gmail.com\",\n admin: '0'\n },\n {\n email: \"jane@gmail.com\",\n admin: 1\n }\n]" + }, + "id": "85de5f5c-0a4c-4da1-805b-9e056089bcd5", + "name": "Code", + "type": "n8n-nodes-base.code", + "typeVersion": 2, + "position": [ + -500, + 160 + ] + }, + { + "parameters": {}, + "id": "8577ab3b-b9f8-4c4d-a3a1-abb6a9269473", + "name": "true", + "type": "n8n-nodes-base.noOp", + "typeVersion": 1, + "position": [ + 0, + 100 + ] + }, + { + "parameters": { + "conditions": { + "options": { + "caseSensitive": true, + "leftValue": "", + "typeValidation": "loose", + "version": 2 + }, + "conditions": [ + { + "id": "307e4ea0-3a82-4722-aca6-68d882115e8b", + "leftValue": "={{ $json.admin }}", + "rightValue": "", + "operator": { + "type": "boolean", + "operation": "true", + "singleValue": true + } + } + ], + "combinator": "and" + }, + "looseTypeValidation": true, + "options": {} + }, + "type": "n8n-nodes-base.if", + "typeVersion": 2.2, + "position": [ + -280, + 160 + ], + "id": "d5d17556-45e6-44a1-8580-a08395ca38c4", + "name": "loose" + } + ], + "pinData": { + "true": [ + { + "json": { + "email": "sharon@yahoo.com", + "admin": true + } + }, + { + "json": { + "email": "jane@gmail.com", + "admin": 1 + } + } + ], + "false": [ + { + "json": { + "email": "shane@yahoo.com", + "admin": false + } + }, + { + "json": { + "email": "sarah@gmail.com", + "admin": "false" + } + }, + { + "json": { + "email": "tom@gmail.com", + "admin": "0" + } + } + ] + }, + "connections": { + "When clicking \"Execute Workflow\"": { + "main": [ + [ + { + "node": "Code", + "type": "main", + "index": 0 + } + ] + ] + }, + "Code": { + "main": [ + [ + { + "node": "loose", + "type": "main", + "index": 0 + } + ] + ] + }, + "loose": { + "main": [ + [ + { + "node": "true", + "type": "main", + "index": 0 + } + ], + [ + { + "node": "false", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "active": false, + "settings": { + "executionOrder": "v1" + }, + "versionId": "35631b37-dc5e-4155-a54f-41b38584f38e", + "meta": { + "instanceId": "27cc9b56542ad45b38725555722c50a1c3fee1670bbb67980558314ee08517c4" + }, + "id": "JQsdJ4gnZtuDb7Oo", + "tags": [] +} diff --git a/packages/nodes-base/nodes/Intercom/Intercom.node.json b/packages/nodes-base/nodes/Intercom/Intercom.node.json index 6209356b27..6947898916 100644 --- a/packages/nodes-base/nodes/Intercom/Intercom.node.json +++ b/packages/nodes-base/nodes/Intercom/Intercom.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/intercom" + "url": "https://docs.n8n.io/integrations/builtin/credentials/intercom/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Intercom/Intercom.node.ts b/packages/nodes-base/nodes/Intercom/Intercom.node.ts index 8c8dec79bd..dead14c67b 100644 --- a/packages/nodes-base/nodes/Intercom/Intercom.node.ts +++ b/packages/nodes-base/nodes/Intercom/Intercom.node.ts @@ -8,7 +8,7 @@ import type { INodeTypeDescription, JsonObject, } from 'n8n-workflow'; -import { NodeApiError, NodeOperationError } from 'n8n-workflow'; +import { NodeConnectionType, NodeApiError, NodeOperationError } from 'n8n-workflow'; import { leadFields, leadOperations } from './LeadDescription'; import { intercomApiRequest, intercomApiRequestAllItems, validateJSON } from './GenericFunctions'; import type { IAvatar, ILead, ILeadCompany } from './LeadInterface'; @@ -30,8 +30,8 @@ export class Intercom implements INodeType { defaults: { name: 'Intercom', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'intercomApi', @@ -621,7 +621,7 @@ export class Intercom implements INodeType { returnData.push(...executionData); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { const executionErrorData = this.helpers.constructExecutionMetaData( this.helpers.returnJsonArray({ error: error.message }), { itemData: { item: i } }, diff --git a/packages/nodes-base/nodes/Intercom/LeadDescription.ts b/packages/nodes-base/nodes/Intercom/LeadDescription.ts index e59982fa94..bb15e353b9 100644 --- a/packages/nodes-base/nodes/Intercom/LeadDescription.ts +++ b/packages/nodes-base/nodes/Intercom/LeadDescription.ts @@ -310,7 +310,7 @@ export const leadFields: INodeProperties[] = [ }, default: [], description: - 'Identifies the companies this user belongs to. Choose from the list, or specify IDs using an expression.', + 'Identifies the companies this user belongs to. Choose from the list, or specify IDs using an expression.', }, { displayName: 'Email', diff --git a/packages/nodes-base/nodes/Intercom/UserDescription.ts b/packages/nodes-base/nodes/Intercom/UserDescription.ts index c2d0458569..84cc84e866 100644 --- a/packages/nodes-base/nodes/Intercom/UserDescription.ts +++ b/packages/nodes-base/nodes/Intercom/UserDescription.ts @@ -323,7 +323,7 @@ export const userFields: INodeProperties[] = [ }, default: [], description: - 'Identifies the companies this user belongs to. Choose from the list, or specify IDs using an expression.', + 'Identifies the companies this user belongs to. Choose from the list, or specify IDs using an expression.', }, { displayName: 'Email', diff --git a/packages/nodes-base/nodes/Interval/Interval.node.ts b/packages/nodes-base/nodes/Interval/Interval.node.ts index b4a2f088c8..10d60b93c5 100644 --- a/packages/nodes-base/nodes/Interval/Interval.node.ts +++ b/packages/nodes-base/nodes/Interval/Interval.node.ts @@ -4,7 +4,7 @@ import type { INodeTypeDescription, ITriggerResponse, } from 'n8n-workflow'; -import { NodeOperationError } from 'n8n-workflow'; +import { NodeConnectionType, NodeOperationError } from 'n8n-workflow'; export class Interval implements INodeType { description: INodeTypeDescription = { @@ -22,9 +22,9 @@ export class Interval implements INodeType { name: 'Interval', color: '#00FF00', }, - // eslint-disable-next-line n8n-nodes-base/node-class-description-inputs-wrong-regular-node + inputs: [], - outputs: ['main'], + outputs: [NodeConnectionType.Main], properties: [ { displayName: diff --git a/packages/nodes-base/nodes/InvoiceNinja/BankTransactionDescription.ts b/packages/nodes-base/nodes/InvoiceNinja/BankTransactionDescription.ts new file mode 100644 index 0000000000..abf39ab493 --- /dev/null +++ b/packages/nodes-base/nodes/InvoiceNinja/BankTransactionDescription.ts @@ -0,0 +1,213 @@ +import type { INodeProperties } from 'n8n-workflow'; + +export const bankTransactionOperations: INodeProperties[] = [ + { + displayName: 'Operation', + name: 'operation', + type: 'options', + noDataExpression: true, + displayOptions: { + show: { + resource: ['bank_transaction'], + }, + }, + options: [ + { + name: 'Create', + value: 'create', + description: 'Create a new bank transaction', + action: 'Create a bank transaction', + }, + { + name: 'Delete', + value: 'delete', + description: 'Delete a bank transaction', + action: 'Delete a bank transaction', + }, + { + name: 'Get', + value: 'get', + description: 'Get data of a bank transaction', + action: 'Get a bank transaction', + }, + { + name: 'Get Many', + value: 'getAll', + description: 'Get data of many bank transactions', + action: 'Get many bank transactions', + }, + { + name: 'Match Payment', + value: 'matchPayment', + description: 'Match payment to a bank transaction', + action: 'Match payment to a bank transaction', + }, + ], + default: 'create', + }, +]; + +export const bankTransactionFields: INodeProperties[] = [ + /* -------------------------------------------------------------------------- */ + /* bankTransaction:create */ + /* -------------------------------------------------------------------------- */ + { + displayName: 'Additional Fields', + name: 'additionalFields', + type: 'collection', + placeholder: 'Add Field', + default: {}, + displayOptions: { + show: { + operation: ['create'], + resource: ['bank_transaction'], + }, + }, + options: [ + { + displayName: 'Amount', + name: 'amount', + type: 'number', + default: 0, + }, + { + displayName: 'Bank Integration Name or ID', + name: 'bankIntegrationId', + type: 'options', + description: + 'Choose from the list, or specify an ID using an expression', + typeOptions: { + loadOptionsMethod: 'getBankIntegrations', + }, + default: '', + }, + { + displayName: 'Base Type', + name: 'baseType', + type: 'options', + options: [ + { + name: 'Deposit', + value: 'CREDIT', + }, + { + name: 'Withdrawal', + value: 'DEBIT', + }, + ], + default: '', + }, + { + displayName: 'Date', + name: 'date', + type: 'dateTime', + default: '', + }, + { + displayName: 'Description', + name: 'description', + type: 'string', + default: '', + }, + ], + }, + /* -------------------------------------------------------------------------- */ + /* bankTransaction:delete */ + /* -------------------------------------------------------------------------- */ + { + displayName: 'Bank Transaction ID', + name: 'bankTransactionId', + type: 'string', + default: '', + required: true, + displayOptions: { + show: { + resource: ['bank_transaction'], + operation: ['delete'], + }, + }, + }, + /* -------------------------------------------------------------------------- */ + /* bankTransaction:get */ + /* -------------------------------------------------------------------------- */ + { + displayName: 'Bank Transaction ID', + name: 'bankTransactionId', + type: 'string', + default: '', + required: true, + displayOptions: { + show: { + resource: ['bank_transaction'], + operation: ['get'], + }, + }, + }, + /* -------------------------------------------------------------------------- */ + /* bankTransaction:getAll */ + /* -------------------------------------------------------------------------- */ + { + displayName: 'Return All', + name: 'returnAll', + type: 'boolean', + displayOptions: { + show: { + resource: ['bank_transaction'], + operation: ['getAll'], + }, + }, + default: false, + description: 'Whether to return all results or only up to a given limit', + }, + { + displayName: 'Limit', + name: 'limit', + type: 'number', + displayOptions: { + show: { + resource: ['bank_transaction'], + operation: ['getAll'], + returnAll: [false], + }, + }, + typeOptions: { + minValue: 1, + maxValue: 60, + }, + default: 50, + description: 'Max number of results to return', + }, + /* -------------------------------------------------------------------------- */ + /* bankTransaction:matchPayment */ + /* -------------------------------------------------------------------------- */ + { + displayName: 'Bank Transaction ID', + name: 'bankTransactionId', + type: 'string', + default: '', + required: true, + displayOptions: { + show: { + resource: ['bank_transaction'], + operation: ['matchPayment'], + }, + }, + }, + { + displayName: 'Payment Name or ID', + name: 'paymentId', + type: 'options', + description: + 'Choose from the list, or specify an ID using an expression', + typeOptions: { + loadOptionsMethod: 'getPayments', + }, + default: '', + displayOptions: { + show: { + resource: ['bank_transaction'], + operation: ['matchPayment'], + }, + }, + }, +]; diff --git a/packages/nodes-base/nodes/InvoiceNinja/BankTransactionInterface.ts b/packages/nodes-base/nodes/InvoiceNinja/BankTransactionInterface.ts new file mode 100644 index 0000000000..735f339ab8 --- /dev/null +++ b/packages/nodes-base/nodes/InvoiceNinja/BankTransactionInterface.ts @@ -0,0 +1,9 @@ +export interface IBankTransaction { + amount?: number; + bank_integration_id?: number; + base_type?: string; + date?: string; + description?: string; + id?: string; + paymentId?: string; +} diff --git a/packages/nodes-base/nodes/InvoiceNinja/ClientDescription.ts b/packages/nodes-base/nodes/InvoiceNinja/ClientDescription.ts index 149dae9e81..ef5a9a34e5 100644 --- a/packages/nodes-base/nodes/InvoiceNinja/ClientDescription.ts +++ b/packages/nodes-base/nodes/InvoiceNinja/ClientDescription.ts @@ -151,7 +151,7 @@ export const clientFields: INodeProperties[] = [ name: 'countryCode', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getCountryCodes', }, @@ -178,6 +178,7 @@ export const clientFields: INodeProperties[] = [ default: {}, options: [ { + // TODO: in v2.0, rename to contactsValue name: 'contacstValues', displayName: 'Contact', values: [ @@ -265,7 +266,7 @@ export const clientFields: INodeProperties[] = [ name: 'countryCode', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getCountryCodes', }, @@ -393,6 +394,44 @@ export const clientFields: INodeProperties[] = [ ], default: 'invoices', }, + { + displayName: 'Status', + name: 'status', + type: 'options', + options: [ + { + name: 'Active', + value: 'active', + }, + { + name: 'Archived', + value: 'archived', + }, + { + name: 'Deleted', + value: 'deleted', + }, + ], + default: 'active', + }, + { + displayName: 'Created At', + name: 'createdAt', + type: 'dateTime', + default: '', + }, + { + displayName: 'Updated At', + name: 'updatedAt', + type: 'dateTime', + default: '', + }, + { + displayName: 'Is Deleted', + name: 'isDeleted', + type: 'boolean', + default: false, + }, ], }, ]; diff --git a/packages/nodes-base/nodes/InvoiceNinja/ExpenseDescription.ts b/packages/nodes-base/nodes/InvoiceNinja/ExpenseDescription.ts index 310c66b9c1..209d14eb51 100644 --- a/packages/nodes-base/nodes/InvoiceNinja/ExpenseDescription.ts +++ b/packages/nodes-base/nodes/InvoiceNinja/ExpenseDescription.ts @@ -53,6 +53,7 @@ export const expenseFields: INodeProperties[] = [ default: {}, displayOptions: { show: { + apiVersion: ['v4'], operation: ['create'], resource: ['expense'], }, @@ -75,7 +76,7 @@ export const expenseFields: INodeProperties[] = [ name: 'client', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getClients', }, @@ -98,7 +99,7 @@ export const expenseFields: INodeProperties[] = [ name: 'category', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getExpenseCategories', }, @@ -299,7 +300,330 @@ export const expenseFields: INodeProperties[] = [ name: 'vendor', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', + typeOptions: { + loadOptionsMethod: 'getVendors', + }, + default: '', + }, + ], + }, + { + displayName: 'Additional Fields', + name: 'additionalFields', + type: 'collection', + placeholder: 'Add Field', + default: {}, + displayOptions: { + show: { + apiVersion: ['v5'], + operation: ['create'], + resource: ['expense'], + }, + }, + options: [ + { + displayName: 'Amount', + name: 'amount', + type: 'number', + default: 0, + }, + { + displayName: 'Billable', + name: 'billable', + type: 'boolean', + default: false, + }, + { + displayName: 'Client Name or ID', + name: 'client', + type: 'options', + description: + 'Choose from the list, or specify an ID using an expression', + typeOptions: { + loadOptionsMethod: 'getClients', + }, + default: '', + }, + { + displayName: 'Custom Value 1', + name: 'customValue1', + type: 'string', + default: '', + }, + { + displayName: 'Custom Value 2', + name: 'customValue2', + type: 'string', + default: '', + }, + { + displayName: 'Category Name or ID', + name: 'category', + type: 'options', + description: + 'Choose from the list, or specify an ID using an expression', + typeOptions: { + loadOptionsMethod: 'getExpenseCategories', + }, + default: '', + }, + { + displayName: 'Expense Date', + name: 'expenseDate', + type: 'dateTime', + default: '', + }, + { + displayName: 'Payment Date', + name: 'paymentDate', + type: 'dateTime', + default: '', + }, + { + displayName: 'Payment Type', + name: 'paymentType', + type: 'options', + options: [ + { + name: 'Bank Transfer', + value: 1, + }, + { + name: 'Cash', + value: 2, + }, + { + name: 'ACH', + value: 4, + }, + { + name: 'Visa', + value: 5, + }, + { + name: 'Mastercard', + value: 6, + }, + { + name: 'American Express', + value: 7, + }, + { + name: 'Discover', + value: 8, + }, + { + name: 'Diners', + value: 9, + }, + { + name: 'Eurocard', + value: 10, + }, + { + name: 'Nova', + value: 11, + }, + { + name: 'Credit Card Other', + value: 12, + }, + { + name: 'PayPal', + value: 13, + }, + { + name: 'Check', + value: 15, + }, + { + name: 'Carte Blanche', + value: 16, + }, + { + name: 'UnionPay', + value: 17, + }, + { + name: 'JCB', + value: 18, + }, + { + name: 'Laser', + value: 19, + }, + { + name: 'Maestro', + value: 20, + }, + { + name: 'Solo', + value: 21, + }, + { + name: 'Switch', + value: 22, + }, + { + name: 'Venmo', + value: 24, + }, + { + name: 'Alipay', + value: 27, + }, + { + name: 'Sofort', + value: 28, + }, + { + name: 'SEPA', + value: 29, + }, + { + name: 'GoCardless', + value: 30, + }, + { + name: 'Crypto', + value: 31, + }, + { + name: 'Credit', + value: 32, + }, + { + name: 'Zelle', + value: 33, + }, + { + name: 'Mollie Bank Transfer', + value: 34, + }, + { + name: 'KBC', + value: 35, + }, + { + name: 'Bancontact', + value: 36, + }, + { + name: 'iDEAL', + value: 37, + }, + { + name: 'Hosted Page', + value: 38, + }, + { + name: 'Giropay', + value: 39, + }, + { + name: 'Przelewy24', + value: 40, + }, + { + name: 'EPS', + value: 41, + }, + { + name: 'Direct Debit', + value: 42, + }, + { + name: 'BECS', + value: 43, + }, + { + name: 'ACSS', + value: 44, + }, + { + name: 'Instant Bank Pay', + value: 45, + }, + { + name: 'FPX', + value: 46, + }, + { + name: 'Klarna', + value: 47, + }, + { + name: 'Interac E-Transfer', + value: 48, + }, + { + name: 'BACS', + value: 49, + }, + { + name: 'Stripe Bank Transfer', + value: 50, + }, + { + name: 'Cash App', + value: 51, + }, + { + name: 'Pay Later', + value: 52, + }, + ], + default: 1, + }, + { + displayName: 'Private Notes', + name: 'privateNotes', + type: 'string', + default: '', + }, + { + displayName: 'Public Notes', + name: 'publicNotes', + type: 'string', + default: '', + }, + { + displayName: 'Tax Name 1', + name: 'taxName1', + type: 'string', + default: '', + }, + { + displayName: 'Tax Name 2', + name: 'taxName2', + type: 'string', + default: '', + }, + { + displayName: 'Tax Rate 1', + name: 'taxRate1', + type: 'number', + default: 0, + }, + { + displayName: 'Tax Rate 2', + name: 'taxRate2', + type: 'number', + default: 0, + }, + { + displayName: 'Transaction Reference', + name: 'transactionReference', + type: 'string', + default: '', + }, + { + displayName: 'Vendor Name or ID', + name: 'vendor', + type: 'options', + description: + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getVendors', }, diff --git a/packages/nodes-base/nodes/InvoiceNinja/InvoiceDescription.ts b/packages/nodes-base/nodes/InvoiceNinja/InvoiceDescription.ts index e6ff91df4c..6c4f1a6cdb 100644 --- a/packages/nodes-base/nodes/InvoiceNinja/InvoiceDescription.ts +++ b/packages/nodes-base/nodes/InvoiceNinja/InvoiceDescription.ts @@ -69,7 +69,7 @@ export const invoiceFields: INodeProperties[] = [ name: 'client', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getClients', }, @@ -158,6 +158,12 @@ export const invoiceFields: INodeProperties[] = [ type: 'boolean', default: false, }, + { + displayName: 'Mark Sent', + name: 'markSent', + type: 'boolean', + default: false, + }, { displayName: 'Paid', name: 'paid', @@ -435,6 +441,68 @@ export const invoiceFields: INodeProperties[] = [ ], default: 'client', }, + { + displayName: 'Status', + name: 'status', + type: 'options', + options: [ + { + name: 'Active', + value: 'active', + }, + { + name: 'Archived', + value: 'archived', + }, + { + name: 'Deleted', + value: 'deleted', + }, + ], + default: 'active', + }, + { + displayName: 'Created At', + name: 'createdAt', + type: 'dateTime', + default: '', + }, + { + displayName: 'Updated At', + name: 'updatedAt', + type: 'dateTime', + default: '', + }, + { + displayName: 'Is Deleted', + name: 'isDeleted', + type: 'boolean', + default: false, + }, + { + displayName: 'Client Status', + name: 'clientStatus', + type: 'options', + options: [ + { + name: 'All', + value: 'all', + }, + { + name: 'Paid', + value: 'paid', + }, + { + name: 'Unpaid', + value: 'unpaid', + }, + { + name: 'Overdue', + value: 'overdue', + }, + ], + default: 'all', + }, ], }, ]; diff --git a/packages/nodes-base/nodes/InvoiceNinja/InvoiceNinja.node.json b/packages/nodes-base/nodes/InvoiceNinja/InvoiceNinja.node.json index c143be77f6..c8a564d25d 100644 --- a/packages/nodes-base/nodes/InvoiceNinja/InvoiceNinja.node.json +++ b/packages/nodes-base/nodes/InvoiceNinja/InvoiceNinja.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/invoiceNinja" + "url": "https://docs.n8n.io/integrations/builtin/credentials/invoiceNinja/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/InvoiceNinja/InvoiceNinja.node.ts b/packages/nodes-base/nodes/InvoiceNinja/InvoiceNinja.node.ts index b056949150..ef7494d306 100644 --- a/packages/nodes-base/nodes/InvoiceNinja/InvoiceNinja.node.ts +++ b/packages/nodes-base/nodes/InvoiceNinja/InvoiceNinja.node.ts @@ -7,6 +7,7 @@ import type { INodeType, INodeTypeDescription, } from 'n8n-workflow'; +import { NodeConnectionType } from 'n8n-workflow'; import { invoiceNinjaApiRequest, invoiceNinjaApiRequestAllItems } from './GenericFunctions'; @@ -16,8 +17,6 @@ import { invoiceFields, invoiceOperations } from './InvoiceDescription'; import type { IClient, IContact } from './ClientInterface'; -import { countryCodes } from './ISOCountryCodes'; - import type { IInvoice, IItem } from './invoiceInterface'; import { taskFields, taskOperations } from './TaskDescription'; @@ -35,6 +34,11 @@ import type { IExpense } from './ExpenseInterface'; import { quoteFields, quoteOperations } from './QuoteDescription'; import type { IQuote } from './QuoteInterface'; +import { isoCountryCodes } from '@utils/ISOCountryCodes'; + +import { bankTransactionFields, bankTransactionOperations } from './BankTransactionDescription'; + +import type { IBankTransaction } from './BankTransactionInterface'; export class InvoiceNinja implements INodeType { description: INodeTypeDescription = { @@ -48,8 +52,8 @@ export class InvoiceNinja implements INodeType { defaults: { name: 'Invoice Ninja', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'invoiceNinjaApi', @@ -107,6 +111,15 @@ export class InvoiceNinja implements INodeType { type: 'options', noDataExpression: true, options: [ + { + name: 'Bank Transaction', + value: 'bank_transaction', + displayOptions: { + show: { + apiVersion: ['v5'], + }, + }, + }, { name: 'Client', value: 'client', @@ -146,6 +159,8 @@ export class InvoiceNinja implements INodeType { ...expenseFields, ...quoteOperations, ...quoteFields, + ...bankTransactionOperations, + ...bankTransactionFields, ], }; @@ -210,9 +225,9 @@ export class InvoiceNinja implements INodeType { // select them easily async getCountryCodes(this: ILoadOptionsFunctions): Promise { const returnData: INodePropertyOptions[] = []; - for (let i = 0; i < countryCodes.length; i++) { - const countryName = countryCodes[i].name as string; - const countryId = countryCodes[i].numeric as string; + for (let i = 0; i < isoCountryCodes.length; i++) { + const countryName = isoCountryCodes[i].name; + const countryId = isoCountryCodes[i].numeric; returnData.push({ name: countryName, value: countryId, @@ -255,6 +270,58 @@ export class InvoiceNinja implements INodeType { } return returnData; }, + // Get all the available bank integrations to display them to user so that they can + // select them easily + async getBankIntegrations(this: ILoadOptionsFunctions): Promise { + const returnData: INodePropertyOptions[] = []; + let banks = await invoiceNinjaApiRequestAllItems.call( + this, + 'data', + 'GET', + '/bank_integrations', + ); + banks = banks.filter((e) => !e.is_deleted); + for (const bank of banks) { + const providerName = bank.provider_name as string; + const accountName = bank.bank_account_name as string; + const bankId = bank.id as string; + returnData.push({ + name: + providerName != accountName + ? `${providerName} - ${accountName}` + : accountName || providerName, + value: bankId, + }); + } + return returnData; + }, + // Get all the available users to display them to user so that they can + // select them easily + async getPayments(this: ILoadOptionsFunctions): Promise { + const returnData: INodePropertyOptions[] = []; + const qs: IDataObject = {}; + // Only select payments that can be matched to transactions + qs.match_transactions = true; + const payments = await invoiceNinjaApiRequestAllItems.call( + this, + 'data', + 'GET', + '/payments', + {}, + qs, + ); + for (const payment of payments) { + const paymentName = [payment.number, payment.date, payment.amount] + .filter((e) => e) + .join(' - '); + const paymentId = payment.id as string; + returnData.push({ + name: paymentName, + value: paymentId, + }); + } + return returnData; + }, }, }; @@ -367,6 +434,18 @@ export class InvoiceNinja implements INodeType { if (options.include) { qs.include = options.include as string; } + if (options.status) { + qs.status = options.status as string; + } + if (options.createdAt) { + qs.created_at = options.createdAt as string; + } + if (options.updatedAt) { + qs.updated_at = options.updatedAt as string; + } + if (options.isDeleted) { + qs.is_deleted = options.isDeleted as boolean; + } if (returnAll) { responseData = await invoiceNinjaApiRequestAllItems.call( this, @@ -421,7 +500,6 @@ export class InvoiceNinja implements INodeType { if (apiVersion === 'v4') { body.invoice_number = additionalFields.invoiceNumber as string; } else if (apiVersion === 'v5') { - // eslint-disable-next-line id-denylist body.number = additionalFields.invoiceNumber as string; } } @@ -452,26 +530,37 @@ export class InvoiceNinja implements INodeType { if (additionalFields.taxName2) { body.tax_name2 = additionalFields.taxName2 as string; } - if (additionalFields.taxtRate1) { - body.tax_rate1 = additionalFields.taxtRate1 as number; + if (additionalFields.taxRate1) { + body.tax_rate1 = additionalFields.taxRate1 as number; } - if (additionalFields.taxtRate2) { - body.tax_rate2 = additionalFields.taxtRate2 as number; + if (additionalFields.taxRate2) { + body.tax_rate2 = additionalFields.taxRate2 as number; } if (additionalFields.discount) { body.discount = additionalFields.discount as number; } if (additionalFields.paid) { - body.paid = additionalFields.paid as number; + if (apiVersion === 'v4') { + body.paid = additionalFields.paid as number; + } else if (apiVersion === 'v5') { + qs.amount_paid = additionalFields.paid as number; + } } if (additionalFields.emailInvoice) { - body.email_invoice = additionalFields.emailInvoice as boolean; + if (apiVersion === 'v4') { + body.email_invoice = additionalFields.emailInvoice as boolean; + } else if (apiVersion === 'v5') { + qs.send_email = additionalFields.emailInvoice as boolean; + } } - const invoceItemsValues = (this.getNodeParameter('invoiceItemsUi', i) as IDataObject) + if (additionalFields.markSent) { + qs.mark_sent = additionalFields.markSent as boolean; + } + const invoiceItemsValues = (this.getNodeParameter('invoiceItemsUi', i) as IDataObject) .invoiceItemsValues as IDataObject[]; - if (invoceItemsValues) { + if (invoiceItemsValues) { const invoiceItems: IItem[] = []; - for (const itemValue of invoceItemsValues) { + for (const itemValue of invoiceItemsValues) { const item: IItem = { cost: itemValue.cost as number, notes: itemValue.description as string, @@ -501,6 +590,7 @@ export class InvoiceNinja implements INodeType { 'POST', '/invoices', body as IDataObject, + qs, ); responseData = responseData.data; } @@ -541,7 +631,27 @@ export class InvoiceNinja implements INodeType { qs.include = options.include as string; } if (options.invoiceNumber) { - qs.invoice_number = options.invoiceNumber as string; + if (apiVersion === 'v4') { + qs.invoice_number = options.invoiceNumber as string; + } else if (apiVersion === 'v5') { + // eslint-disable-next-line id-denylist + qs.number = options.invoiceNumber as string; + } + } + if (options.status) { + qs.status = options.status as string; + } + if (options.createdAt) { + qs.created_at = options.createdAt as string; + } + if (options.updatedAt) { + qs.updated_at = options.updatedAt as string; + } + if (options.isDeleted) { + qs.is_deleted = options.isDeleted as boolean; + } + if (options.clientStatus) { + qs.client_status = options.clientStatus as string; } if (returnAll) { responseData = await invoiceNinjaApiRequestAllItems.call( @@ -660,18 +770,31 @@ export class InvoiceNinja implements INodeType { if (resource === 'payment') { if (operation === 'create') { const additionalFields = this.getNodeParameter('additionalFields', i); - const invoice = this.getNodeParameter('invoice', i) as number; + const invoice = this.getNodeParameter('invoice', i) as number | string; const client = ( await invoiceNinjaApiRequest.call(this, 'GET', `/invoices/${invoice}`, {}, qs) ).data?.client_id as string; const amount = this.getNodeParameter('amount', i) as number; const body: IPayment = { - invoice_id: invoice, amount, client_id: client, }; + if (apiVersion === 'v4') { + body.invoice_id = invoice as number; + } else if (apiVersion === 'v5') { + body.invoices = [ + { + invoice_id: invoice as string, + amount, + }, + ]; + } if (additionalFields.paymentType) { - body.payment_type_id = additionalFields.paymentType as number; + if (apiVersion === 'v4') { + body.payment_type_id = additionalFields.paymentType as number; + } else if (apiVersion == 'v5') { + body.type_id = additionalFields.paymentType as number; + } } if (additionalFields.transferReference) { body.transaction_reference = additionalFields.transferReference as string; @@ -708,6 +831,18 @@ export class InvoiceNinja implements INodeType { if (options.include) { qs.include = options.include as string; } + if (options.status) { + qs.status = options.status as string; + } + if (options.createdAt) { + qs.created_at = options.createdAt as string; + } + if (options.updatedAt) { + qs.updated_at = options.updatedAt as string; + } + if (options.isDeleted) { + qs.is_deleted = options.isDeleted as boolean; + } if (returnAll) { responseData = await invoiceNinjaApiRequestAllItems.call( this, @@ -834,6 +969,106 @@ export class InvoiceNinja implements INodeType { responseData = responseData.data; } } + if (resource === 'bank_transaction') { + const resourceEndpoint = '/bank_transactions'; + if (operation === 'create') { + const additionalFields = this.getNodeParameter('additionalFields', i); + const body: IBankTransaction = {}; + if (additionalFields.amount) { + body.amount = additionalFields.amount as number; + } + if (additionalFields.baseType) { + body.base_type = additionalFields.baseType as string; + } + if (additionalFields.bankIntegrationId) { + body.bank_integration_id = additionalFields.bankIntegrationId as number; + } + if (additionalFields.client) { + body.date = additionalFields.date as string; + } + if (additionalFields.email) { + body.description = additionalFields.description as string; + } + responseData = await invoiceNinjaApiRequest.call( + this, + 'POST', + resourceEndpoint, + body as IDataObject, + ); + responseData = responseData.data; + } + if (operation === 'get') { + const bankTransactionId = this.getNodeParameter('bankTransactionId', i) as string; + const options = this.getNodeParameter('options', i); + if (options.include) { + qs.include = options.include as string; + } + responseData = await invoiceNinjaApiRequest.call( + this, + 'GET', + `${resourceEndpoint}/${bankTransactionId}`, + {}, + qs, + ); + responseData = responseData.data; + } + if (operation === 'getAll') { + const returnAll = this.getNodeParameter('returnAll', 0); + const options = this.getNodeParameter('options', i); + if (options.include) { + qs.include = options.include as string; + } + if (options.invoiceNumber) { + qs.invoice_number = options.invoiceNumber as string; + } + if (returnAll) { + responseData = await invoiceNinjaApiRequestAllItems.call( + this, + 'data', + 'GET', + resourceEndpoint, + {}, + qs, + ); + } else { + qs.per_page = this.getNodeParameter('limit', 0); + responseData = await invoiceNinjaApiRequest.call( + this, + 'GET', + resourceEndpoint, + {}, + qs, + ); + responseData = responseData.data; + } + } + if (operation === 'delete') { + const bankTransactionId = this.getNodeParameter('bankTransactionId', i) as string; + responseData = await invoiceNinjaApiRequest.call( + this, + 'DELETE', + `${resourceEndpoint}/${bankTransactionId}`, + ); + responseData = responseData.data; + } + if (operation === 'matchPayment') { + const bankTransactionId = this.getNodeParameter('bankTransactionId', i) as string; + const paymentId = this.getNodeParameter('paymentId', i) as string; + const body: IBankTransaction = {}; + if (bankTransactionId) { + body.id = bankTransactionId; + } + if (paymentId) { + body.paymentId = paymentId; + } + responseData = await invoiceNinjaApiRequest.call( + this, + 'POST', + `${resourceEndpoint}/match`, + body as IDataObject, + ); + } + } if (resource === 'quote') { const resourceEndpoint = apiVersion === 'v4' ? '/invoices' : '/quotes'; if (operation === 'create') { @@ -859,14 +1094,13 @@ export class InvoiceNinja implements INodeType { if (additionalFields.dueDate) { body.due_date = additionalFields.dueDate as string; } - if (additionalFields.quouteDate) { - body.invoice_date = additionalFields.quouteDate as string; + if (additionalFields.quoteDate) { + body.invoice_date = additionalFields.quoteDate as string; } if (additionalFields.quoteNumber) { if (apiVersion === 'v4') { body.invoice_number = additionalFields.quoteNumber as string; } else if (apiVersion === 'v5') { - // eslint-disable-next-line id-denylist body.number = additionalFields.quoteNumber as string; } } @@ -897,11 +1131,11 @@ export class InvoiceNinja implements INodeType { if (additionalFields.taxName2) { body.tax_name2 = additionalFields.taxName2 as string; } - if (additionalFields.taxtRate1) { - body.tax_rate1 = additionalFields.taxtRate1 as number; + if (additionalFields.taxRate1) { + body.tax_rate1 = additionalFields.taxRate1 as number; } - if (additionalFields.taxtRate2) { - body.tax_rate2 = additionalFields.taxtRate2 as number; + if (additionalFields.taxRate2) { + body.tax_rate2 = additionalFields.taxRate2 as number; } if (additionalFields.discount) { body.discount = additionalFields.discount as number; @@ -912,11 +1146,11 @@ export class InvoiceNinja implements INodeType { if (additionalFields.emailQuote) { body.email_invoice = additionalFields.emailQuote as boolean; } - const invoceItemsValues = (this.getNodeParameter('invoiceItemsUi', i) as IDataObject) + const invoiceItemsValues = (this.getNodeParameter('invoiceItemsUi', i) as IDataObject) .invoiceItemsValues as IDataObject[]; - if (invoceItemsValues) { + if (invoiceItemsValues) { const invoiceItems: IItem[] = []; - for (const itemValue of invoceItemsValues) { + for (const itemValue of invoiceItemsValues) { const item: IItem = { cost: itemValue.cost as number, notes: itemValue.description as string, @@ -960,7 +1194,7 @@ export class InvoiceNinja implements INodeType { responseData = await invoiceNinjaApiRequest.call( this, 'GET', - `/quotes/${quoteId}/email`, + `${resourceEndpoint}/${quoteId}/email`, ); } } @@ -988,18 +1222,36 @@ export class InvoiceNinja implements INodeType { if (options.invoiceNumber) { qs.invoice_number = options.invoiceNumber as string; } + if (options.status) { + qs.status = options.status as string; + } + if (options.createdAt) { + qs.created_at = options.createdAt as string; + } + if (options.updatedAt) { + qs.updated_at = options.updatedAt as string; + } + if (options.isDeleted) { + qs.is_deleted = options.isDeleted as boolean; + } if (returnAll) { responseData = await invoiceNinjaApiRequestAllItems.call( this, 'data', 'GET', - '/quotes', + resourceEndpoint, {}, qs, ); } else { qs.per_page = this.getNodeParameter('limit', 0); - responseData = await invoiceNinjaApiRequest.call(this, 'GET', '/quotes', {}, qs); + responseData = await invoiceNinjaApiRequest.call( + this, + 'GET', + resourceEndpoint, + {}, + qs, + ); responseData = responseData.data; } } @@ -1021,7 +1273,7 @@ export class InvoiceNinja implements INodeType { returnData.push(...executionData); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { const executionErrorData = this.helpers.constructExecutionMetaData( this.helpers.returnJsonArray({ error: error.message }), { itemData: { item: i } }, diff --git a/packages/nodes-base/nodes/InvoiceNinja/InvoiceNinjaTrigger.node.json b/packages/nodes-base/nodes/InvoiceNinja/InvoiceNinjaTrigger.node.json index f50a67a1e9..86345c242a 100644 --- a/packages/nodes-base/nodes/InvoiceNinja/InvoiceNinjaTrigger.node.json +++ b/packages/nodes-base/nodes/InvoiceNinja/InvoiceNinjaTrigger.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/invoiceNinja" + "url": "https://docs.n8n.io/integrations/builtin/credentials/invoiceNinja/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/InvoiceNinja/InvoiceNinjaTrigger.node.ts b/packages/nodes-base/nodes/InvoiceNinja/InvoiceNinjaTrigger.node.ts index 022973b724..54608d66d1 100644 --- a/packages/nodes-base/nodes/InvoiceNinja/InvoiceNinjaTrigger.node.ts +++ b/packages/nodes-base/nodes/InvoiceNinja/InvoiceNinjaTrigger.node.ts @@ -1,9 +1,10 @@ -import type { - IHookFunctions, - IWebhookFunctions, - INodeType, - INodeTypeDescription, - IWebhookResponseData, +import { + type IHookFunctions, + type IWebhookFunctions, + type INodeType, + type INodeTypeDescription, + type IWebhookResponseData, + NodeConnectionType, } from 'n8n-workflow'; import { @@ -24,7 +25,7 @@ export class InvoiceNinjaTrigger implements INodeType { name: 'Invoice Ninja Trigger', }, inputs: [], - outputs: ['main'], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'invoiceNinjaApi', diff --git a/packages/nodes-base/nodes/InvoiceNinja/PaymentDescription.ts b/packages/nodes-base/nodes/InvoiceNinja/PaymentDescription.ts index ff1a456259..99a683ecb2 100644 --- a/packages/nodes-base/nodes/InvoiceNinja/PaymentDescription.ts +++ b/packages/nodes-base/nodes/InvoiceNinja/PaymentDescription.ts @@ -50,7 +50,7 @@ export const paymentFields: INodeProperties[] = [ name: 'invoice', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getInvoices', }, @@ -85,6 +85,7 @@ export const paymentFields: INodeProperties[] = [ default: {}, displayOptions: { show: { + apiVersion: ['v4'], operation: ['create'], resource: ['payment'], }, @@ -240,6 +241,230 @@ export const paymentFields: INodeProperties[] = [ }, ], }, + { + displayName: 'Additional Fields', + name: 'additionalFields', + type: 'collection', + placeholder: 'Add Field', + default: {}, + displayOptions: { + show: { + apiVersion: ['v5'], + operation: ['create'], + resource: ['payment'], + }, + }, + options: [ + { + displayName: 'Payment Type', + name: 'paymentType', + type: 'options', + options: [ + { + name: 'Bank Transfer', + value: 1, + }, + { + name: 'Cash', + value: 2, + }, + { + name: 'ACH', + value: 4, + }, + { + name: 'Visa', + value: 5, + }, + { + name: 'Mastercard', + value: 6, + }, + { + name: 'American Express', + value: 7, + }, + { + name: 'Discover', + value: 8, + }, + { + name: 'Diners', + value: 9, + }, + { + name: 'Eurocard', + value: 10, + }, + { + name: 'Nova', + value: 11, + }, + { + name: 'Credit Card Other', + value: 12, + }, + { + name: 'PayPal', + value: 13, + }, + { + name: 'Check', + value: 15, + }, + { + name: 'Carte Blanche', + value: 16, + }, + { + name: 'UnionPay', + value: 17, + }, + { + name: 'JCB', + value: 18, + }, + { + name: 'Laser', + value: 19, + }, + { + name: 'Maestro', + value: 20, + }, + { + name: 'Solo', + value: 21, + }, + { + name: 'Switch', + value: 22, + }, + { + name: 'Venmo', + value: 24, + }, + { + name: 'Alipay', + value: 27, + }, + { + name: 'Sofort', + value: 28, + }, + { + name: 'SEPA', + value: 29, + }, + { + name: 'GoCardless', + value: 30, + }, + { + name: 'Crypto', + value: 31, + }, + { + name: 'Credit', + value: 32, + }, + { + name: 'Zelle', + value: 33, + }, + { + name: 'Mollie Bank Transfer', + value: 34, + }, + { + name: 'KBC', + value: 35, + }, + { + name: 'Bancontact', + value: 36, + }, + { + name: 'iDEAL', + value: 37, + }, + { + name: 'Hosted Page', + value: 38, + }, + { + name: 'Giropay', + value: 39, + }, + { + name: 'Przelewy24', + value: 40, + }, + { + name: 'EPS', + value: 41, + }, + { + name: 'Direct Debit', + value: 42, + }, + { + name: 'BECS', + value: 43, + }, + { + name: 'ACSS', + value: 44, + }, + { + name: 'Instant Bank Pay', + value: 45, + }, + { + name: 'FPX', + value: 46, + }, + { + name: 'Klarna', + value: 47, + }, + { + name: 'Interac E-Transfer', + value: 48, + }, + { + name: 'BACS', + value: 49, + }, + { + name: 'Stripe Bank Transfer', + value: 50, + }, + { + name: 'Cash App', + value: 51, + }, + { + name: 'Pay Later', + value: 52, + }, + ], + default: 1, + }, + { + displayName: 'Transfer Reference', + name: 'transferReference', + type: 'string', + default: '', + }, + { + displayName: 'Private Notes', + name: 'privateNotes', + type: 'string', + default: '', + }, + ], + }, /* -------------------------------------------------------------------------- */ /* payment:delete */ @@ -359,6 +584,44 @@ export const paymentFields: INodeProperties[] = [ ], default: 'client', }, + { + displayName: 'Status', + name: 'status', + type: 'options', + options: [ + { + name: 'Active', + value: 'active', + }, + { + name: 'Archived', + value: 'archived', + }, + { + name: 'Deleted', + value: 'deleted', + }, + ], + default: 'active', + }, + { + displayName: 'Created At', + name: 'createdAt', + type: 'dateTime', + default: '', + }, + { + displayName: 'Updated At', + name: 'updatedAt', + type: 'dateTime', + default: '', + }, + { + displayName: 'Is Deleted', + name: 'isDeleted', + type: 'boolean', + default: false, + }, ], }, ]; diff --git a/packages/nodes-base/nodes/InvoiceNinja/PaymentInterface.ts b/packages/nodes-base/nodes/InvoiceNinja/PaymentInterface.ts index 6b0d04fad9..c7df748950 100644 --- a/packages/nodes-base/nodes/InvoiceNinja/PaymentInterface.ts +++ b/packages/nodes-base/nodes/InvoiceNinja/PaymentInterface.ts @@ -2,7 +2,14 @@ export interface IPayment { invoice_id?: number; amount?: number; payment_type_id?: number; + type_id?: number; transaction_reference?: string; private_notes?: string; client_id?: string; + invoices?: IInvoice[]; +} + +export interface IInvoice { + invoice_id: string; + amount: number; } diff --git a/packages/nodes-base/nodes/InvoiceNinja/QuoteDescription.ts b/packages/nodes-base/nodes/InvoiceNinja/QuoteDescription.ts index c780e9589d..ea40608a5a 100644 --- a/packages/nodes-base/nodes/InvoiceNinja/QuoteDescription.ts +++ b/packages/nodes-base/nodes/InvoiceNinja/QuoteDescription.ts @@ -27,7 +27,7 @@ export const quoteOperations: INodeProperties[] = [ { name: 'Email', value: 'email', - description: 'Email an quote', + description: 'Email a quote', action: 'Email a quote', }, { @@ -69,7 +69,7 @@ export const quoteFields: INodeProperties[] = [ name: 'client', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getClients', }, @@ -435,6 +435,44 @@ export const quoteFields: INodeProperties[] = [ ], default: 'client', }, + { + displayName: 'Status', + name: 'status', + type: 'options', + options: [ + { + name: 'Active', + value: 'active', + }, + { + name: 'Archived', + value: 'archived', + }, + { + name: 'Deleted', + value: 'deleted', + }, + ], + default: 'active', + }, + { + displayName: 'Created At', + name: 'createdAt', + type: 'dateTime', + default: '', + }, + { + displayName: 'Updated At', + name: 'updatedAt', + type: 'dateTime', + default: '', + }, + { + displayName: 'Is Deleted', + name: 'isDeleted', + type: 'boolean', + default: false, + }, ], }, ]; diff --git a/packages/nodes-base/nodes/InvoiceNinja/TaskDescription.ts b/packages/nodes-base/nodes/InvoiceNinja/TaskDescription.ts index c043948b4c..a49934dc40 100644 --- a/packages/nodes-base/nodes/InvoiceNinja/TaskDescription.ts +++ b/packages/nodes-base/nodes/InvoiceNinja/TaskDescription.ts @@ -63,7 +63,7 @@ export const taskFields: INodeProperties[] = [ name: 'client', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getClients', }, @@ -92,7 +92,7 @@ export const taskFields: INodeProperties[] = [ name: 'project', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getProjects', }, diff --git a/packages/nodes-base/nodes/InvoiceNinja/invoiceInterface.ts b/packages/nodes-base/nodes/InvoiceNinja/invoiceInterface.ts index 752fbbf4a7..8cfda5a211 100644 --- a/packages/nodes-base/nodes/InvoiceNinja/invoiceInterface.ts +++ b/packages/nodes-base/nodes/InvoiceNinja/invoiceInterface.ts @@ -15,10 +15,10 @@ export interface IInvoice { client_id?: number; custom_value1?: number; custom_value2?: number; - email_invoice?: boolean; - email?: string; discount?: number; due_date?: string; + email_invoice?: boolean; + email?: string; invoice_date?: string; invoice_items?: IItem[]; line_items?: IItem[]; diff --git a/packages/nodes-base/nodes/ItemLists/V1/ItemListsV1.node.ts b/packages/nodes-base/nodes/ItemLists/V1/ItemListsV1.node.ts index 30a1eb6ce9..e5319eb6e2 100644 --- a/packages/nodes-base/nodes/ItemLists/V1/ItemListsV1.node.ts +++ b/packages/nodes-base/nodes/ItemLists/V1/ItemListsV1.node.ts @@ -6,7 +6,7 @@ import type { INodeTypeBaseDescription, INodeTypeDescription, } from 'n8n-workflow'; -import { NodeOperationError } from 'n8n-workflow'; +import { NodeConnectionType, NodeOperationError } from 'n8n-workflow'; import get from 'lodash/get'; import isEmpty from 'lodash/isEmpty'; @@ -30,8 +30,8 @@ export class ItemListsV1 implements INodeType { defaults: { name: 'Item Lists', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [], properties: [ { diff --git a/packages/nodes-base/nodes/ItemLists/V1/summarize.operation.ts b/packages/nodes-base/nodes/ItemLists/V1/summarize.operation.ts index c1f5b0d43f..673119063b 100644 --- a/packages/nodes-base/nodes/ItemLists/V1/summarize.operation.ts +++ b/packages/nodes-base/nodes/ItemLists/V1/summarize.operation.ts @@ -272,7 +272,7 @@ export const description: INodeProperties[] = [ displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, displayOptions: { show: { diff --git a/packages/nodes-base/nodes/ItemLists/V2/ItemListsV2.node.ts b/packages/nodes-base/nodes/ItemLists/V2/ItemListsV2.node.ts index 0bca88500c..5447f9e95d 100644 --- a/packages/nodes-base/nodes/ItemLists/V2/ItemListsV2.node.ts +++ b/packages/nodes-base/nodes/ItemLists/V2/ItemListsV2.node.ts @@ -7,7 +7,7 @@ import type { INodeTypeDescription, IPairedItemData, } from 'n8n-workflow'; -import { NodeOperationError, deepCopy } from 'n8n-workflow'; +import { NodeConnectionType, NodeOperationError, deepCopy } from 'n8n-workflow'; import get from 'lodash/get'; import isEmpty from 'lodash/isEmpty'; @@ -31,8 +31,8 @@ export class ItemListsV2 implements INodeType { defaults: { name: 'Item Lists', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [], properties: [ { diff --git a/packages/nodes-base/nodes/ItemLists/V2/summarize.operation.ts b/packages/nodes-base/nodes/ItemLists/V2/summarize.operation.ts index f29df77035..f6fc2ddd72 100644 --- a/packages/nodes-base/nodes/ItemLists/V2/summarize.operation.ts +++ b/packages/nodes-base/nodes/ItemLists/V2/summarize.operation.ts @@ -272,7 +272,7 @@ export const description: INodeProperties[] = [ displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, displayOptions: { show: { diff --git a/packages/nodes-base/nodes/ItemLists/V3/actions/itemList/splitOutItems.operation.ts b/packages/nodes-base/nodes/ItemLists/V3/actions/itemList/splitOutItems.operation.ts index 13d5bd8918..544192fd99 100644 --- a/packages/nodes-base/nodes/ItemLists/V3/actions/itemList/splitOutItems.operation.ts +++ b/packages/nodes-base/nodes/ItemLists/V3/actions/itemList/splitOutItems.operation.ts @@ -172,7 +172,7 @@ export async function execute( if (splited[elementIndex].binary === undefined) { splited[elementIndex].binary = {}; } - splited[elementIndex].binary![Object.keys(element)[0]] = Object.values( + splited[elementIndex].binary[Object.keys(element)[0]] = Object.values( element, )[0] as IBinaryData; diff --git a/packages/nodes-base/nodes/ItemLists/V3/actions/itemList/summarize.operation.ts b/packages/nodes-base/nodes/ItemLists/V3/actions/itemList/summarize.operation.ts index 059446ac0f..d026beb2d7 100644 --- a/packages/nodes-base/nodes/ItemLists/V3/actions/itemList/summarize.operation.ts +++ b/packages/nodes-base/nodes/ItemLists/V3/actions/itemList/summarize.operation.ts @@ -262,7 +262,7 @@ export const properties: INodeProperties[] = [ displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, options: [ disableDotNotationBoolean, diff --git a/packages/nodes-base/nodes/ItemLists/V3/actions/versionDescription.ts b/packages/nodes-base/nodes/ItemLists/V3/actions/versionDescription.ts index 8c992a308e..692869406c 100644 --- a/packages/nodes-base/nodes/ItemLists/V3/actions/versionDescription.ts +++ b/packages/nodes-base/nodes/ItemLists/V3/actions/versionDescription.ts @@ -1,5 +1,5 @@ /* eslint-disable n8n-nodes-base/node-filename-against-convention */ -import type { INodeTypeDescription } from 'n8n-workflow'; +import { NodeConnectionType, type INodeTypeDescription } from 'n8n-workflow'; import * as itemList from './itemList'; @@ -14,8 +14,8 @@ export const versionDescription: INodeTypeDescription = { defaults: { name: 'Item Lists', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [], properties: [ { diff --git a/packages/nodes-base/nodes/Iterable/GenericFunctions.ts b/packages/nodes-base/nodes/Iterable/GenericFunctions.ts index 7ecc3cae02..3253c046de 100644 --- a/packages/nodes-base/nodes/Iterable/GenericFunctions.ts +++ b/packages/nodes-base/nodes/Iterable/GenericFunctions.ts @@ -2,8 +2,8 @@ import type { IDataObject, IExecuteFunctions, IHttpRequestMethods, + IHttpRequestOptions, ILoadOptionsFunctions, - IRequestOptions, JsonObject, } from 'n8n-workflow'; import { NodeApiError } from 'n8n-workflow'; @@ -12,7 +12,6 @@ export async function iterableApiRequest( this: IExecuteFunctions | ILoadOptionsFunctions, method: IHttpRequestMethods, resource: string, - body: any = {}, qs: IDataObject = {}, uri?: string, @@ -20,15 +19,14 @@ export async function iterableApiRequest( ): Promise { const credentials = await this.getCredentials('iterableApi'); - const options: IRequestOptions = { + const options: IHttpRequestOptions = { headers: { 'Content-Type': 'application/json', - Api_Key: credentials.apiKey, }, method, body, qs, - uri: uri || `https://api.iterable.com/api${resource}`, + url: uri || `${credentials.region}/api${resource}`, json: true, }; try { @@ -38,8 +36,7 @@ export async function iterableApiRequest( if (Object.keys(body as IDataObject).length === 0) { delete options.body; } - //@ts-ignore - return await this.helpers.request.call(this, options); + return await this.helpers.httpRequestWithAuthentication.call(this, 'iterableApi', options); } catch (error) { throw new NodeApiError(this.getNode(), error as JsonObject); } diff --git a/packages/nodes-base/nodes/Iterable/Iterable.node.json b/packages/nodes-base/nodes/Iterable/Iterable.node.json index bcba64b39f..31d943cc4a 100644 --- a/packages/nodes-base/nodes/Iterable/Iterable.node.json +++ b/packages/nodes-base/nodes/Iterable/Iterable.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/iterable" + "url": "https://docs.n8n.io/integrations/builtin/credentials/iterable/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Iterable/Iterable.node.ts b/packages/nodes-base/nodes/Iterable/Iterable.node.ts index ddc10590ba..2159705475 100644 --- a/packages/nodes-base/nodes/Iterable/Iterable.node.ts +++ b/packages/nodes-base/nodes/Iterable/Iterable.node.ts @@ -8,7 +8,7 @@ import type { INodeTypeDescription, JsonObject, } from 'n8n-workflow'; -import { NodeApiError, NodeOperationError } from 'n8n-workflow'; +import { NodeConnectionType, NodeApiError, NodeOperationError } from 'n8n-workflow'; import moment from 'moment-timezone'; import { iterableApiRequest } from './GenericFunctions'; @@ -32,8 +32,8 @@ export class Iterable implements INodeType { defaults: { name: 'Iterable', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'iterableApi', diff --git a/packages/nodes-base/nodes/Iterable/UserListDescription.ts b/packages/nodes-base/nodes/Iterable/UserListDescription.ts index 3e33d2008c..26c22a762d 100644 --- a/packages/nodes-base/nodes/Iterable/UserListDescription.ts +++ b/packages/nodes-base/nodes/Iterable/UserListDescription.ts @@ -49,7 +49,7 @@ export const userListFields: INodeProperties[] = [ }, default: '', description: - 'Identifier to be used. Choose from the list, or specify an ID using an expression.', + 'Identifier to be used. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Identifier', @@ -108,7 +108,7 @@ export const userListFields: INodeProperties[] = [ }, default: '', description: - 'Identifier to be used. Choose from the list, or specify an ID using an expression.', + 'Identifier to be used. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Identifier', diff --git a/packages/nodes-base/nodes/Jenkins/Jenkins.node.json b/packages/nodes-base/nodes/Jenkins/Jenkins.node.json index 6f28938f67..bc8f0314d3 100644 --- a/packages/nodes-base/nodes/Jenkins/Jenkins.node.json +++ b/packages/nodes-base/nodes/Jenkins/Jenkins.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/jenkins" + "url": "https://docs.n8n.io/integrations/builtin/credentials/jenkins/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Jenkins/Jenkins.node.ts b/packages/nodes-base/nodes/Jenkins/Jenkins.node.ts index 3d06e85292..6517cb0dd7 100644 --- a/packages/nodes-base/nodes/Jenkins/Jenkins.node.ts +++ b/packages/nodes-base/nodes/Jenkins/Jenkins.node.ts @@ -11,7 +11,7 @@ import type { INodeTypeDescription, JsonObject, } from 'n8n-workflow'; -import { NodeApiError } from 'n8n-workflow'; +import { NodeApiError, NodeConnectionType } from 'n8n-workflow'; import { jenkinsApiRequest, tolerateTrailingSlash } from './GenericFunctions'; @@ -33,8 +33,8 @@ export class Jenkins implements INodeType { defaults: { name: 'Jenkins', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'jenkinsApi', @@ -136,7 +136,7 @@ export class Jenkins implements INodeType { required: true, default: '', description: - 'Name of the job. Choose from the list, or specify an ID using an expression.', + 'Name of the job. Choose from the list, or specify an ID using an expression.', }, // -------------------------------------------------------------------------------------------------------- @@ -168,7 +168,7 @@ export class Jenkins implements INodeType { name: 'name', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getJobParameters', loadOptionsDependsOn: ['job'], @@ -353,7 +353,7 @@ export class Jenkins implements INodeType { required: true, default: '', description: - 'Name of the job. Choose from the list, or specify an ID using an expression.', + 'Name of the job. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Return All', @@ -640,7 +640,7 @@ export class Jenkins implements INodeType { returnData.push(responseData as IDataObject); } } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push({ error: error.message }); continue; } diff --git a/packages/nodes-base/nodes/Jira/IssueCommentDescription.ts b/packages/nodes-base/nodes/Jira/IssueCommentDescription.ts index 627e26cf63..08b42e2d4f 100644 --- a/packages/nodes-base/nodes/Jira/IssueCommentDescription.ts +++ b/packages/nodes-base/nodes/Jira/IssueCommentDescription.ts @@ -111,7 +111,7 @@ export const issueCommentFields: INodeProperties[] = [ displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, displayOptions: { show: { @@ -414,7 +414,7 @@ export const issueCommentFields: INodeProperties[] = [ displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, displayOptions: { show: { diff --git a/packages/nodes-base/nodes/Jira/IssueDescription.ts b/packages/nodes-base/nodes/Jira/IssueDescription.ts index f2364cf59b..0c862d5e64 100644 --- a/packages/nodes-base/nodes/Jira/IssueDescription.ts +++ b/packages/nodes-base/nodes/Jira/IssueDescription.ts @@ -233,7 +233,7 @@ export const issueFields: INodeProperties[] = [ name: 'componentIds', type: 'multiOptions', description: - 'Choose from the list, or specify IDs using an expression', + 'Choose from the list, or specify IDs using an expression', typeOptions: { loadOptionsMethod: 'getProjectComponents', loadOptionsDependsOn: ['project'], @@ -307,7 +307,7 @@ export const issueFields: INodeProperties[] = [ name: 'labels', type: 'multiOptions', description: - 'Choose from the list, or specify IDs using an expression', + 'Choose from the list, or specify IDs using an expression', typeOptions: { loadOptionsMethod: 'getLabels', }, @@ -568,7 +568,7 @@ export const issueFields: INodeProperties[] = [ name: 'labels', type: 'multiOptions', description: - 'Choose from the list, or specify IDs using an expression', + 'Choose from the list, or specify IDs using an expression', typeOptions: { loadOptionsMethod: 'getLabels', }, @@ -878,7 +878,7 @@ export const issueFields: INodeProperties[] = [ displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', displayOptions: { show: { operation: ['getAll'], @@ -1134,7 +1134,7 @@ export const issueFields: INodeProperties[] = [ }, default: [], description: - 'List of users to receive the notification. Choose from the list, or specify IDs using an expression.', + 'List of users to receive the notification. Choose from the list, or specify IDs using an expression.', }, { displayName: 'Group Names or IDs', @@ -1145,7 +1145,7 @@ export const issueFields: INodeProperties[] = [ }, default: [], description: - 'List of groups to receive the notification. Choose from the list, or specify IDs using an expression.', + 'List of groups to receive the notification. Choose from the list, or specify IDs using an expression.', }, ], }, @@ -1199,7 +1199,7 @@ export const issueFields: INodeProperties[] = [ }, default: [], description: - 'List of users to receive the notification. Choose from the list, or specify IDs using an expression.', + 'List of users to receive the notification. Choose from the list, or specify IDs using an expression.', }, { displayName: 'Group Names or IDs', @@ -1210,7 +1210,7 @@ export const issueFields: INodeProperties[] = [ }, default: [], description: - 'List of groups to receive the notification. Choose from the list, or specify IDs using an expression.', + 'List of groups to receive the notification. Choose from the list, or specify IDs using an expression.', }, ], }, diff --git a/packages/nodes-base/nodes/Jira/Jira.node.json b/packages/nodes-base/nodes/Jira/Jira.node.json index dce5f98aa1..af9a6fe2c0 100644 --- a/packages/nodes-base/nodes/Jira/Jira.node.json +++ b/packages/nodes-base/nodes/Jira/Jira.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/jira" + "url": "https://docs.n8n.io/integrations/builtin/credentials/jira/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Jira/Jira.node.ts b/packages/nodes-base/nodes/Jira/Jira.node.ts index ba4b766d1e..2c21328f78 100644 --- a/packages/nodes-base/nodes/Jira/Jira.node.ts +++ b/packages/nodes-base/nodes/Jira/Jira.node.ts @@ -2,7 +2,6 @@ import type { Readable } from 'stream'; import mergeWith from 'lodash/mergeWith'; import type { - IBinaryKeyData, IDataObject, IExecuteFunctions, ILoadOptionsFunctions, @@ -13,7 +12,7 @@ import type { INodeType, INodeTypeDescription, } from 'n8n-workflow'; -import { BINARY_ENCODING, NodeOperationError } from 'n8n-workflow'; +import { BINARY_ENCODING, NodeConnectionType, NodeOperationError } from 'n8n-workflow'; import { filterSortSearchListItems, @@ -52,8 +51,9 @@ export class Jira implements INodeType { defaults: { name: 'Jira Software', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], + usableAsTool: true, credentials: [ { name: 'jiraSoftwareCloudApi', @@ -1105,12 +1105,11 @@ export class Jira implements INodeType { { json: false, encoding: null, useStream: true }, ); - (returnData[index].binary as IBinaryKeyData)[binaryPropertyName] = - await this.helpers.prepareBinaryData( - buffer as Buffer, - attachment.json.filename as string, - attachment.json.mimeType as string, - ); + returnData[index].binary[binaryPropertyName] = await this.helpers.prepareBinaryData( + buffer as Buffer, + attachment.json.filename as string, + attachment.json.mimeType as string, + ); } } } @@ -1155,12 +1154,11 @@ export class Jira implements INodeType { attachment.json.content as string, { json: false, encoding: null, useStream: true }, ); - (returnData[index].binary as IBinaryKeyData)[binaryPropertyName] = - await this.helpers.prepareBinaryData( - buffer as Buffer, - attachment.json.filename as string, - attachment.json.mimeType as string, - ); + returnData[index].binary[binaryPropertyName] = await this.helpers.prepareBinaryData( + buffer as Buffer, + attachment.json.filename as string, + attachment.json.mimeType as string, + ); } } } diff --git a/packages/nodes-base/nodes/Jira/JiraTrigger.node.json b/packages/nodes-base/nodes/Jira/JiraTrigger.node.json index 4077e9f703..ae87985d24 100644 --- a/packages/nodes-base/nodes/Jira/JiraTrigger.node.json +++ b/packages/nodes-base/nodes/Jira/JiraTrigger.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/jira" + "url": "https://docs.n8n.io/integrations/builtin/credentials/jira/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Jira/JiraTrigger.node.ts b/packages/nodes-base/nodes/Jira/JiraTrigger.node.ts index cf16b62e15..aa39a0da82 100644 --- a/packages/nodes-base/nodes/Jira/JiraTrigger.node.ts +++ b/packages/nodes-base/nodes/Jira/JiraTrigger.node.ts @@ -7,7 +7,7 @@ import type { INodeTypeDescription, IWebhookResponseData, } from 'n8n-workflow'; -import { NodeOperationError } from 'n8n-workflow'; +import { NodeConnectionType, NodeOperationError } from 'n8n-workflow'; import { allEvents, eventExists, getId, jiraSoftwareCloudApiRequest } from './GenericFunctions'; @@ -23,7 +23,7 @@ export class JiraTrigger implements INodeType { name: 'Jira Trigger', }, inputs: [], - outputs: ['main'], + outputs: [NodeConnectionType.Main], credentials: [ { displayName: 'Credentials to Connect to Jira', @@ -534,7 +534,7 @@ export class JiraTrigger implements INodeType { let httpQueryAuth: ICredentialDataDecryptedObject | undefined; try { - httpQueryAuth = await this.getCredentials('httpQueryAuth'); + httpQueryAuth = await this.getCredentials('httpQueryAuth'); } catch (error) {} if (httpQueryAuth === undefined || !httpQueryAuth.name || !httpQueryAuth.value) { diff --git a/packages/nodes-base/nodes/JotForm/JotFormTrigger.node.json b/packages/nodes-base/nodes/JotForm/JotFormTrigger.node.json index 6c7408b20e..e604ada225 100644 --- a/packages/nodes-base/nodes/JotForm/JotFormTrigger.node.json +++ b/packages/nodes-base/nodes/JotForm/JotFormTrigger.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/jotForm" + "url": "https://docs.n8n.io/integrations/builtin/credentials/jotForm/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/JotForm/JotFormTrigger.node.ts b/packages/nodes-base/nodes/JotForm/JotFormTrigger.node.ts index 0caf61d518..472d1bd485 100644 --- a/packages/nodes-base/nodes/JotForm/JotFormTrigger.node.ts +++ b/packages/nodes-base/nodes/JotForm/JotFormTrigger.node.ts @@ -9,7 +9,7 @@ import type { IWebhookResponseData, MultiPartFormData, } from 'n8n-workflow'; -import { jsonParse } from 'n8n-workflow'; +import { NodeConnectionType, jsonParse } from 'n8n-workflow'; import { jotformApiRequest } from './GenericFunctions'; @@ -31,7 +31,7 @@ export class JotFormTrigger implements INodeType { name: 'JotForm Trigger', }, inputs: [], - outputs: ['main'], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'jotFormApi', @@ -57,7 +57,7 @@ export class JotFormTrigger implements INodeType { }, default: '', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', }, { displayName: 'Resolve Data', diff --git a/packages/nodes-base/nodes/Jwt/Jwt.node.json b/packages/nodes-base/nodes/Jwt/Jwt.node.json index 83d0cad2b5..10fea69cde 100644 --- a/packages/nodes-base/nodes/Jwt/Jwt.node.json +++ b/packages/nodes-base/nodes/Jwt/Jwt.node.json @@ -7,7 +7,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/jwt" + "url": "https://docs.n8n.io/integrations/builtin/credentials/jwt/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Jwt/Jwt.node.ts b/packages/nodes-base/nodes/Jwt/Jwt.node.ts index e272123344..3a0815c906 100644 --- a/packages/nodes-base/nodes/Jwt/Jwt.node.ts +++ b/packages/nodes-base/nodes/Jwt/Jwt.node.ts @@ -5,7 +5,7 @@ import type { INodeType, INodeTypeDescription, } from 'n8n-workflow'; -import { NodeOperationError } from 'n8n-workflow'; +import { NodeConnectionType, NodeOperationError } from 'n8n-workflow'; import jwt from 'jsonwebtoken'; @@ -53,8 +53,8 @@ export class Jwt implements INodeType { defaults: { name: 'JWT', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { // eslint-disable-next-line n8n-nodes-base/node-class-description-credentials-name-unsuffixed @@ -204,7 +204,7 @@ export class Jwt implements INodeType { displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, options: [ { @@ -348,13 +348,13 @@ export class Jwt implements INodeType { const operation = this.getNodeParameter('operation', 0); - const credentials = (await this.getCredentials('jwtAuth')) as { + const credentials = await this.getCredentials<{ keyType: 'passphrase' | 'pemKey'; publicKey: string; privateKey: string; secret: string; algorithm: jwt.Algorithm; - }; + }>('jwtAuth'); for (let itemIndex = 0; itemIndex < items.length; itemIndex++) { const options = this.getNodeParameter('options', itemIndex, {}) as { @@ -452,7 +452,7 @@ export class Jwt implements INodeType { 'Be sure that the provided JWT token is correctly encoded and matches the selected credentials', }); } - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push({ json: this.getInputData(itemIndex)[0].json, error, diff --git a/packages/nodes-base/nodes/Kafka/Kafka.node.json b/packages/nodes-base/nodes/Kafka/Kafka.node.json index fb595734af..ba3ace598d 100644 --- a/packages/nodes-base/nodes/Kafka/Kafka.node.json +++ b/packages/nodes-base/nodes/Kafka/Kafka.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/kafka" + "url": "https://docs.n8n.io/integrations/builtin/credentials/kafka/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Kafka/Kafka.node.ts b/packages/nodes-base/nodes/Kafka/Kafka.node.ts index 4353019817..87e9f95b0d 100644 --- a/packages/nodes-base/nodes/Kafka/Kafka.node.ts +++ b/packages/nodes-base/nodes/Kafka/Kafka.node.ts @@ -14,7 +14,7 @@ import type { INodeType, INodeTypeDescription, } from 'n8n-workflow'; -import { ApplicationError, NodeOperationError } from 'n8n-workflow'; +import { ApplicationError, NodeConnectionType, NodeOperationError } from 'n8n-workflow'; import { generatePairedItemData } from '../../utils/utilities'; export class Kafka implements INodeType { @@ -28,8 +28,8 @@ export class Kafka implements INodeType { defaults: { name: 'Kafka', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'kafka', @@ -178,7 +178,7 @@ export class Kafka implements INodeType { name: 'options', type: 'collection', default: {}, - placeholder: 'Add Option', + placeholder: 'Add option', options: [ { displayName: 'Acks', @@ -229,7 +229,6 @@ export class Kafka implements INodeType { }; if (credentials.authentication === true) { if (!(credentials.username && credentials.password)) { - // eslint-disable-next-line n8n-nodes-base/node-execute-block-wrong-error-thrown throw new ApplicationError('Username and password are required for authentication', { level: 'warning', }); @@ -408,7 +407,7 @@ export class Kafka implements INodeType { return [executionData]; } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { return [[{ json: { error: error.message }, pairedItem: itemData }]]; } else { throw error; diff --git a/packages/nodes-base/nodes/Kafka/KafkaTrigger.node.json b/packages/nodes-base/nodes/Kafka/KafkaTrigger.node.json index c035d277bf..cdcc84213e 100644 --- a/packages/nodes-base/nodes/Kafka/KafkaTrigger.node.json +++ b/packages/nodes-base/nodes/Kafka/KafkaTrigger.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/kafka" + "url": "https://docs.n8n.io/integrations/builtin/credentials/kafka/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Kafka/KafkaTrigger.node.ts b/packages/nodes-base/nodes/Kafka/KafkaTrigger.node.ts index 55ddf40152..631566ffbd 100644 --- a/packages/nodes-base/nodes/Kafka/KafkaTrigger.node.ts +++ b/packages/nodes-base/nodes/Kafka/KafkaTrigger.node.ts @@ -11,7 +11,7 @@ import type { ITriggerResponse, IRun, } from 'n8n-workflow'; -import { createDeferredPromise, NodeOperationError } from 'n8n-workflow'; +import { NodeConnectionType, NodeOperationError } from 'n8n-workflow'; export class KafkaTrigger implements INodeType { description: INodeTypeDescription = { @@ -25,7 +25,7 @@ export class KafkaTrigger implements INodeType { name: 'Kafka Trigger', }, inputs: [], - outputs: ['main'], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'kafka', @@ -77,7 +77,7 @@ export class KafkaTrigger implements INodeType { name: 'options', type: 'collection', default: {}, - placeholder: 'Add Option', + placeholder: 'Add option', options: [ { displayName: 'Allow Topic Creation', @@ -281,13 +281,13 @@ export class KafkaTrigger implements INodeType { } let responsePromise = undefined; if (!parallelProcessing && (options.nodeVersion as number) > 1) { - responsePromise = await createDeferredPromise(); + responsePromise = this.helpers.createDeferredPromise(); this.emit([this.helpers.returnJsonArray([data])], undefined, responsePromise); } else { this.emit([this.helpers.returnJsonArray([data])]); } if (responsePromise) { - await responsePromise.promise(); + await responsePromise.promise; } }, }); diff --git a/packages/nodes-base/nodes/Keap/CompanyDescription.ts b/packages/nodes-base/nodes/Keap/CompanyDescription.ts index eb8678d2c7..175bfd58a3 100644 --- a/packages/nodes-base/nodes/Keap/CompanyDescription.ts +++ b/packages/nodes-base/nodes/Keap/CompanyDescription.ts @@ -268,7 +268,7 @@ export const companyFields: INodeProperties[] = [ displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, displayOptions: { show: { diff --git a/packages/nodes-base/nodes/Keap/ContactDescription.ts b/packages/nodes-base/nodes/Keap/ContactDescription.ts index ec60166889..322cfd23b6 100644 --- a/packages/nodes-base/nodes/Keap/ContactDescription.ts +++ b/packages/nodes-base/nodes/Keap/ContactDescription.ts @@ -104,7 +104,7 @@ export const contactFields: INodeProperties[] = [ name: 'contactType', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getContactTypes', }, @@ -157,7 +157,7 @@ export const contactFields: INodeProperties[] = [ name: 'ownerId', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getUsers', }, @@ -219,7 +219,7 @@ export const contactFields: INodeProperties[] = [ name: 'timezone', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getTimezones', }, @@ -278,7 +278,7 @@ export const contactFields: INodeProperties[] = [ name: 'countryCode', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getCountries', }, @@ -571,7 +571,7 @@ export const contactFields: INodeProperties[] = [ displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Options', + placeholder: 'Add option', default: {}, displayOptions: { show: { @@ -628,7 +628,7 @@ export const contactFields: INodeProperties[] = [ displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, displayOptions: { show: { diff --git a/packages/nodes-base/nodes/Keap/ContactNoteDescription.ts b/packages/nodes-base/nodes/Keap/ContactNoteDescription.ts index 4e3fa71557..30215ce689 100644 --- a/packages/nodes-base/nodes/Keap/ContactNoteDescription.ts +++ b/packages/nodes-base/nodes/Keap/ContactNoteDescription.ts @@ -66,7 +66,7 @@ export const contactNoteFields: INodeProperties[] = [ }, default: '', description: - 'The infusionsoft user to create the note on behalf of. Choose from the list, or specify an ID using an expression.', + 'The infusionsoft user to create the note on behalf of. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Contact ID', @@ -232,7 +232,7 @@ export const contactNoteFields: INodeProperties[] = [ name: 'userId', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getUsers', }, @@ -331,7 +331,7 @@ export const contactNoteFields: INodeProperties[] = [ }, default: '', description: - 'The infusionsoft user to create the note on behalf of. Choose from the list, or specify an ID using an expression.', + 'The infusionsoft user to create the note on behalf of. Choose from the list, or specify an ID using an expression.', }, ], }, diff --git a/packages/nodes-base/nodes/Keap/ContactTagDescription.ts b/packages/nodes-base/nodes/Keap/ContactTagDescription.ts index 11fb9bc670..e53a4833a0 100644 --- a/packages/nodes-base/nodes/Keap/ContactTagDescription.ts +++ b/packages/nodes-base/nodes/Keap/ContactTagDescription.ts @@ -57,7 +57,7 @@ export const contactTagFields: INodeProperties[] = [ name: 'tagIds', type: 'multiOptions', description: - 'Choose from the list, or specify IDs using an expression', + 'Choose from the list, or specify IDs using an expression', typeOptions: { loadOptionsMethod: 'getTags', }, diff --git a/packages/nodes-base/nodes/Keap/EcommerceOrderDescripion.ts b/packages/nodes-base/nodes/Keap/EcommerceOrderDescripion.ts index bb54be9731..1a7192a816 100644 --- a/packages/nodes-base/nodes/Keap/EcommerceOrderDescripion.ts +++ b/packages/nodes-base/nodes/Keap/EcommerceOrderDescripion.ts @@ -179,7 +179,7 @@ export const ecommerceOrderFields: INodeProperties[] = [ name: 'countryCode', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getCountries', }, @@ -378,7 +378,7 @@ export const ecommerceOrderFields: INodeProperties[] = [ displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, displayOptions: { show: { diff --git a/packages/nodes-base/nodes/Keap/EmailDescription.ts b/packages/nodes-base/nodes/Keap/EmailDescription.ts index b2fd8ba5f0..ac28aa03de 100644 --- a/packages/nodes-base/nodes/Keap/EmailDescription.ts +++ b/packages/nodes-base/nodes/Keap/EmailDescription.ts @@ -295,7 +295,7 @@ export const emailFields: INodeProperties[] = [ }, default: '', description: - 'The infusionsoft user to send the email on behalf of. Choose from the list, or specify an ID using an expression.', + 'The infusionsoft user to send the email on behalf of. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Contact IDs', diff --git a/packages/nodes-base/nodes/Keap/Keap.node.json b/packages/nodes-base/nodes/Keap/Keap.node.json index d926b7f082..e53d57f06e 100644 --- a/packages/nodes-base/nodes/Keap/Keap.node.json +++ b/packages/nodes-base/nodes/Keap/Keap.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/keap" + "url": "https://docs.n8n.io/integrations/builtin/credentials/keap/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Keap/Keap.node.ts b/packages/nodes-base/nodes/Keap/Keap.node.ts index 8c358f5fc6..43a766ab3a 100644 --- a/packages/nodes-base/nodes/Keap/Keap.node.ts +++ b/packages/nodes-base/nodes/Keap/Keap.node.ts @@ -7,6 +7,7 @@ import type { INodeType, INodeTypeDescription, } from 'n8n-workflow'; +import { NodeConnectionType } from 'n8n-workflow'; import { capitalCase, pascalCase } from 'change-case'; import moment from 'moment-timezone'; @@ -62,8 +63,8 @@ export class Keap implements INodeType { defaults: { name: 'Keap', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'keapOAuth2Api', diff --git a/packages/nodes-base/nodes/Keap/KeapTrigger.node.json b/packages/nodes-base/nodes/Keap/KeapTrigger.node.json index 2351396cba..1f9799aa83 100644 --- a/packages/nodes-base/nodes/Keap/KeapTrigger.node.json +++ b/packages/nodes-base/nodes/Keap/KeapTrigger.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/keap" + "url": "https://docs.n8n.io/integrations/builtin/credentials/keap/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Keap/KeapTrigger.node.ts b/packages/nodes-base/nodes/Keap/KeapTrigger.node.ts index 9fd1f6fd7f..066bceb0ff 100644 --- a/packages/nodes-base/nodes/Keap/KeapTrigger.node.ts +++ b/packages/nodes-base/nodes/Keap/KeapTrigger.node.ts @@ -8,6 +8,7 @@ import type { INodeTypeDescription, IWebhookResponseData, } from 'n8n-workflow'; +import { NodeConnectionType } from 'n8n-workflow'; import { capitalCase } from 'change-case'; import { keapApiRequest } from './GenericFunctions'; @@ -26,7 +27,7 @@ export class KeapTrigger implements INodeType { name: 'Keap Trigger', }, inputs: [], - outputs: ['main'], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'keapOAuth2Api', @@ -47,7 +48,7 @@ export class KeapTrigger implements INodeType { name: 'eventId', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getEvents', }, diff --git a/packages/nodes-base/nodes/Kitemaker/GenericFunctions.ts b/packages/nodes-base/nodes/Kitemaker/GenericFunctions.ts index b1ee217308..ebadcbaaba 100644 --- a/packages/nodes-base/nodes/Kitemaker/GenericFunctions.ts +++ b/packages/nodes-base/nodes/Kitemaker/GenericFunctions.ts @@ -12,9 +12,9 @@ export async function kitemakerRequest( this: IExecuteFunctions | ILoadOptionsFunctions | IHookFunctions, body: IDataObject = {}, ) { - const { personalAccessToken } = (await this.getCredentials('kitemakerApi')) as { + const { personalAccessToken } = await this.getCredentials<{ personalAccessToken: string; - }; + }>('kitemakerApi'); const options = { headers: { diff --git a/packages/nodes-base/nodes/Kitemaker/Kitemaker.node.json b/packages/nodes-base/nodes/Kitemaker/Kitemaker.node.json index d4bf9d70fc..16f16ffa8e 100644 --- a/packages/nodes-base/nodes/Kitemaker/Kitemaker.node.json +++ b/packages/nodes-base/nodes/Kitemaker/Kitemaker.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/kitemaker" + "url": "https://docs.n8n.io/integrations/builtin/credentials/kitemaker/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Kitemaker/Kitemaker.node.ts b/packages/nodes-base/nodes/Kitemaker/Kitemaker.node.ts index c29dbfd9e9..946db3742a 100644 --- a/packages/nodes-base/nodes/Kitemaker/Kitemaker.node.ts +++ b/packages/nodes-base/nodes/Kitemaker/Kitemaker.node.ts @@ -6,7 +6,7 @@ import type { INodeType, INodeTypeDescription, } from 'n8n-workflow'; -import { NodeOperationError } from 'n8n-workflow'; +import { NodeConnectionType, NodeOperationError } from 'n8n-workflow'; import { organizationOperations, @@ -48,8 +48,8 @@ export class Kitemaker implements INodeType { defaults: { name: 'Kitemaker', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'kitemakerApi', diff --git a/packages/nodes-base/nodes/Kitemaker/descriptions/WorkItemDescription.ts b/packages/nodes-base/nodes/Kitemaker/descriptions/WorkItemDescription.ts index 6b6a4c370e..7ad3559bd9 100644 --- a/packages/nodes-base/nodes/Kitemaker/descriptions/WorkItemDescription.ts +++ b/packages/nodes-base/nodes/Kitemaker/descriptions/WorkItemDescription.ts @@ -65,7 +65,7 @@ export const workItemFields: INodeProperties[] = [ default: [], required: true, description: - 'ID of the space to retrieve the work items from. Choose from the list, or specify an ID using an expression.', + 'ID of the space to retrieve the work items from. Choose from the list, or specify an ID using an expression.', displayOptions: { show: { resource: ['workItem'], @@ -84,7 +84,7 @@ export const workItemFields: INodeProperties[] = [ default: [], required: true, description: - 'ID of the status to set on the item to create. Choose from the list, or specify an ID using an expression.', + 'ID of the status to set on the item to create. Choose from the list, or specify an ID using an expression.', displayOptions: { show: { resource: ['workItem'], @@ -163,7 +163,7 @@ export const workItemFields: INodeProperties[] = [ }, default: [], description: - 'ID of the label to set on the item to create. Choose from the list, or specify IDs using an expression.', + 'ID of the label to set on the item to create. Choose from the list, or specify IDs using an expression.', }, { displayName: 'Member Names or IDs', @@ -174,7 +174,7 @@ export const workItemFields: INodeProperties[] = [ }, default: [], description: - 'ID of the user to assign to the item to create. Choose from the list, or specify IDs using an expression.', + 'ID of the user to assign to the item to create. Choose from the list, or specify IDs using an expression.', }, ], }, @@ -210,7 +210,7 @@ export const workItemFields: INodeProperties[] = [ default: [], required: true, description: - 'ID of the space to retrieve the work items from. Choose from the list, or specify an ID using an expression.', + 'ID of the space to retrieve the work items from. Choose from the list, or specify an ID using an expression.', displayOptions: { show: { resource: ['workItem'], @@ -338,7 +338,7 @@ export const workItemFields: INodeProperties[] = [ }, default: [], description: - 'ID of the status to set on the item to update. Choose from the list, or specify an ID using an expression.', + 'ID of the status to set on the item to update. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Title', diff --git a/packages/nodes-base/nodes/KoBoToolbox/FileDescription.ts b/packages/nodes-base/nodes/KoBoToolbox/FileDescription.ts index 868d1538d7..fc7e1540f8 100644 --- a/packages/nodes-base/nodes/KoBoToolbox/FileDescription.ts +++ b/packages/nodes-base/nodes/KoBoToolbox/FileDescription.ts @@ -60,7 +60,7 @@ export const fileFields: INodeProperties[] = [ }, }, description: - 'Form ID (e.g. aSAvYreNzVEkrWg5Gdcvg). Choose from the list, or specify an ID using an expression.', + 'Form ID (e.g. aSAvYreNzVEkrWg5Gdcvg). Choose from the list, or specify an ID using an expression.', }, /* -------------------------------------------------------------------------- */ /* file:delete */ diff --git a/packages/nodes-base/nodes/KoBoToolbox/FormDescription.ts b/packages/nodes-base/nodes/KoBoToolbox/FormDescription.ts index 4619b689c3..30693502d9 100644 --- a/packages/nodes-base/nodes/KoBoToolbox/FormDescription.ts +++ b/packages/nodes-base/nodes/KoBoToolbox/FormDescription.ts @@ -55,7 +55,7 @@ export const formFields: INodeProperties[] = [ }, }, description: - 'Form ID (e.g. aSAvYreNzVEkrWg5Gdcvg). Choose from the list, or specify an ID using an expression.', + 'Form ID (e.g. aSAvYreNzVEkrWg5Gdcvg). Choose from the list, or specify an ID using an expression.', }, /* -------------------------------------------------------------------------- */ /* form:getAll */ @@ -94,7 +94,7 @@ export const formFields: INodeProperties[] = [ { displayName: 'Options', name: 'options', - placeholder: 'Add Option', + placeholder: 'Add option', type: 'collection', default: {}, displayOptions: { diff --git a/packages/nodes-base/nodes/KoBoToolbox/HookDescription.ts b/packages/nodes-base/nodes/KoBoToolbox/HookDescription.ts index 99519421dc..2c3a9fb372 100644 --- a/packages/nodes-base/nodes/KoBoToolbox/HookDescription.ts +++ b/packages/nodes-base/nodes/KoBoToolbox/HookDescription.ts @@ -67,7 +67,7 @@ export const hookFields: INodeProperties[] = [ }, }, description: - 'Form ID (e.g. aSAvYreNzVEkrWg5Gdcvg). Choose from the list, or specify an ID using an expression.', + 'Form ID (e.g. aSAvYreNzVEkrWg5Gdcvg). Choose from the list, or specify an ID using an expression.', }, { displayName: 'Hook ID', diff --git a/packages/nodes-base/nodes/KoBoToolbox/KoBoToolbox.node.json b/packages/nodes-base/nodes/KoBoToolbox/KoBoToolbox.node.json index a24b69c51e..bd4d72fe4f 100644 --- a/packages/nodes-base/nodes/KoBoToolbox/KoBoToolbox.node.json +++ b/packages/nodes-base/nodes/KoBoToolbox/KoBoToolbox.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/kobotoolbox" + "url": "https://docs.n8n.io/integrations/builtin/credentials/kobotoolbox/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/KoBoToolbox/KoBoToolbox.node.ts b/packages/nodes-base/nodes/KoBoToolbox/KoBoToolbox.node.ts index 2fd41b86d0..2bb60b2b75 100644 --- a/packages/nodes-base/nodes/KoBoToolbox/KoBoToolbox.node.ts +++ b/packages/nodes-base/nodes/KoBoToolbox/KoBoToolbox.node.ts @@ -6,6 +6,7 @@ import type { INodeType, INodeTypeDescription, } from 'n8n-workflow'; +import { NodeConnectionType } from 'n8n-workflow'; import { downloadAttachments, @@ -36,8 +37,8 @@ export class KoBoToolbox implements INodeType { defaults: { name: 'KoBoToolbox', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'koBoToolboxApi', diff --git a/packages/nodes-base/nodes/KoBoToolbox/KoBoToolboxTrigger.node.json b/packages/nodes-base/nodes/KoBoToolbox/KoBoToolboxTrigger.node.json index b18a2b93ee..1d952cac5e 100644 --- a/packages/nodes-base/nodes/KoBoToolbox/KoBoToolboxTrigger.node.json +++ b/packages/nodes-base/nodes/KoBoToolbox/KoBoToolboxTrigger.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/kobotoolbox" + "url": "https://docs.n8n.io/integrations/builtin/credentials/kobotoolbox/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/KoBoToolbox/KoBoToolboxTrigger.node.ts b/packages/nodes-base/nodes/KoBoToolbox/KoBoToolboxTrigger.node.ts index 6da071ff27..503c100741 100644 --- a/packages/nodes-base/nodes/KoBoToolbox/KoBoToolboxTrigger.node.ts +++ b/packages/nodes-base/nodes/KoBoToolbox/KoBoToolboxTrigger.node.ts @@ -1,10 +1,11 @@ -import type { - IDataObject, - IHookFunctions, - INodeType, - INodeTypeDescription, - IWebhookFunctions, - IWebhookResponseData, +import { + NodeConnectionType, + type IDataObject, + type IHookFunctions, + type INodeType, + type INodeTypeDescription, + type IWebhookFunctions, + type IWebhookResponseData, } from 'n8n-workflow'; import { @@ -29,7 +30,7 @@ export class KoBoToolboxTrigger implements INodeType { name: 'KoBoToolbox Trigger', }, inputs: [], - outputs: ['main'], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'koBoToolboxApi', @@ -55,7 +56,7 @@ export class KoBoToolboxTrigger implements INodeType { required: true, default: '', description: - 'Form ID (e.g. aSAvYreNzVEkrWg5Gdcvg). Choose from the list, or specify an ID using an expression.', + 'Form ID (e.g. aSAvYreNzVEkrWg5Gdcvg). Choose from the list, or specify an ID using an expression.', }, { displayName: 'Trigger On', @@ -143,9 +144,12 @@ export class KoBoToolboxTrigger implements INodeType { const req = this.getRequestObject(); const formatOptions = this.getNodeParameter('formatOptions') as IDataObject; - // prettier-ignore const responseData = formatOptions.reformat - ? formatSubmission(req.body as IDataObject, parseStringList(formatOptions.selectMask as string), parseStringList(formatOptions.numberMask as string)) + ? formatSubmission( + req.body as IDataObject, + parseStringList(formatOptions.selectMask as string), + parseStringList(formatOptions.numberMask as string), + ) : req.body; if (formatOptions.download) { diff --git a/packages/nodes-base/nodes/KoBoToolbox/Options.ts b/packages/nodes-base/nodes/KoBoToolbox/Options.ts index c283da35f9..8ae59858ec 100644 --- a/packages/nodes-base/nodes/KoBoToolbox/Options.ts +++ b/packages/nodes-base/nodes/KoBoToolbox/Options.ts @@ -2,7 +2,7 @@ import type { INodeProperties } from 'n8n-workflow'; export const options = { displayName: 'Options', - placeholder: 'Add Option', + placeholder: 'Add option', name: 'formatOptions', type: 'collection', default: {}, diff --git a/packages/nodes-base/nodes/KoBoToolbox/SubmissionDescription.ts b/packages/nodes-base/nodes/KoBoToolbox/SubmissionDescription.ts index 52dc2c6d36..a3c62bd03a 100644 --- a/packages/nodes-base/nodes/KoBoToolbox/SubmissionDescription.ts +++ b/packages/nodes-base/nodes/KoBoToolbox/SubmissionDescription.ts @@ -67,7 +67,7 @@ export const submissionFields: INodeProperties[] = [ }, }, description: - 'Form ID (e.g. aSAvYreNzVEkrWg5Gdcvg). Choose from the list, or specify an ID using an expression.', + 'Form ID (e.g. aSAvYreNzVEkrWg5Gdcvg). Choose from the list, or specify an ID using an expression.', }, { displayName: 'Submission ID', @@ -205,7 +205,7 @@ export const submissionFields: INodeProperties[] = [ }, }, default: {}, - placeholder: 'Add Option', + placeholder: 'Add option', options: [ { displayName: 'Download Attachments', diff --git a/packages/nodes-base/nodes/Ldap/Ldap.node.json b/packages/nodes-base/nodes/Ldap/Ldap.node.json index 864cb53de4..f0f27934d5 100644 --- a/packages/nodes-base/nodes/Ldap/Ldap.node.json +++ b/packages/nodes-base/nodes/Ldap/Ldap.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/ldap" + "url": "https://docs.n8n.io/integrations/builtin/credentials/ldap/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Ldap/Ldap.node.ts b/packages/nodes-base/nodes/Ldap/Ldap.node.ts index 3e1a9c5d79..52e9cd9d15 100644 --- a/packages/nodes-base/nodes/Ldap/Ldap.node.ts +++ b/packages/nodes-base/nodes/Ldap/Ldap.node.ts @@ -10,7 +10,7 @@ import type { INodeType, INodeTypeDescription, } from 'n8n-workflow'; -import { NodeOperationError } from 'n8n-workflow'; +import { NodeConnectionType, NodeOperationError } from 'n8n-workflow'; import { Attribute, Change } from 'ldapts'; import { ldapFields } from './LdapDescription'; @@ -28,8 +28,8 @@ export class Ldap implements INodeType { defaults: { name: 'LDAP', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { // eslint-disable-next-line n8n-nodes-base/node-class-description-credentials-name-unsuffixed @@ -253,7 +253,7 @@ export class Ldap implements INodeType { } catch (error) { delete error.cert; await client.unbind(); - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { return [ items.map((x) => { x.json.error = error.reason || 'LDAP connection error occurred'; @@ -418,7 +418,7 @@ export class Ldap implements INodeType { ); } } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnItems.push({ json: items[itemIndex].json, error, pairedItem: itemIndex }); } else { await client.unbind(); diff --git a/packages/nodes-base/nodes/Ldap/LdapDescription.ts b/packages/nodes-base/nodes/Ldap/LdapDescription.ts index 0f523accb7..af8eb7b9a5 100644 --- a/packages/nodes-base/nodes/Ldap/LdapDescription.ts +++ b/packages/nodes-base/nodes/Ldap/LdapDescription.ts @@ -399,7 +399,7 @@ export const ldapFields: INodeProperties[] = [ displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, displayOptions: { show: { @@ -416,7 +416,7 @@ export const ldapFields: INodeProperties[] = [ }, default: [], description: - 'Comma-separated list of attributes to return. Choose from the list, or specify IDs using an expression.', + 'Comma-separated list of attributes to return. Choose from the list, or specify IDs using an expression.', }, { displayName: 'Page Size', diff --git a/packages/nodes-base/nodes/Lemlist/GenericFunctions.ts b/packages/nodes-base/nodes/Lemlist/GenericFunctions.ts index 8a587a9390..cc8875549c 100644 --- a/packages/nodes-base/nodes/Lemlist/GenericFunctions.ts +++ b/packages/nodes-base/nodes/Lemlist/GenericFunctions.ts @@ -59,32 +59,79 @@ export async function lemlistApiRequestAllItems( qs.limit = 100; qs.offset = 0; - - do { - responseData = await lemlistApiRequest.call(this, method, endpoint, {}, qs); - returnData.push(...(responseData as IDataObject[])); - qs.offset += qs.limit; - } while (responseData.length !== 0); - return returnData; + //when using v2, the pagination is different + if (qs.version && qs.version === 'v2') { + qs.page = 1; + do { + responseData = await lemlistApiRequest.call(this, method, endpoint, {}, qs); + returnData.push(...(responseData as IDataObject[])); + qs.page++; + } while (responseData.totalPage && qs.page < responseData.totalPage); + return returnData; + } else { + do { + responseData = await lemlistApiRequest.call(this, method, endpoint, {}, qs); + returnData.push(...(responseData as IDataObject[])); + qs.offset += qs.limit; + } while (responseData.length !== 0); + return returnData; + } } export function getEvents() { const events = [ '*', - 'emailsBounced', + 'contacted', + 'hooked', + 'attracted', + 'warmed', + 'interested', + 'skipped', + 'notInterested', + 'emailsSent', + 'emailsOpened', 'emailsClicked', + 'emailsReplied', + 'emailsBounced', + 'emailsSendFailed', 'emailsFailed', + 'emailsUnsubscribed', 'emailsInterested', 'emailsNotInterested', - 'emailsOpened', - 'emailsReplied', - 'emailsSendFailed', - 'emailsSent', - 'emailsUnsubscribed', + 'opportunitiesDone', + 'aircallCreated', + 'aircallEnded', + 'aircallDone', + 'aircallInterested', + 'aircallNotInterested', + 'apiDone', + 'apiInterested', + 'apiNotInterested', + 'apiFailed', + 'linkedinVisitDone', + 'linkedinVisitFailed', + 'linkedinInviteDone', + 'linkedinInviteFailed', + 'linkedinInviteAccepted', + 'linkedinReplied', + 'linkedinSent', + 'linkedinVoiceNoteDone', + 'linkedinVoiceNoteFailed', + 'linkedinInterested', + 'linkedinNotInterested', + 'linkedinSendFailed', + 'manualInterested', + 'manualNotInterested', + 'paused', + 'resumed', + 'customDomainErrors', + 'connectionIssue', + 'sendLimitReached', + 'lemwarmPaused', ]; return events.map((event: string) => ({ - name: event === '*' ? '*' : capitalCase(event), + name: event === '*' ? '*' : capitalCase(event).replace('Linkedin', 'LinkedIn'), value: event, })); } diff --git a/packages/nodes-base/nodes/Lemlist/Lemlist.node.json b/packages/nodes-base/nodes/Lemlist/Lemlist.node.json index ad4187c070..325f90160c 100644 --- a/packages/nodes-base/nodes/Lemlist/Lemlist.node.json +++ b/packages/nodes-base/nodes/Lemlist/Lemlist.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/lemlist" + "url": "https://docs.n8n.io/integrations/builtin/credentials/lemlist/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Lemlist/Lemlist.node.ts b/packages/nodes-base/nodes/Lemlist/Lemlist.node.ts index 49dd8e7136..e9b557ec04 100644 --- a/packages/nodes-base/nodes/Lemlist/Lemlist.node.ts +++ b/packages/nodes-base/nodes/Lemlist/Lemlist.node.ts @@ -1,313 +1,25 @@ -import type { - IExecuteFunctions, - IDataObject, - ILoadOptionsFunctions, - INodeExecutionData, - INodeType, - INodeTypeDescription, -} from 'n8n-workflow'; +import type { INodeTypeBaseDescription, IVersionedNodeType } from 'n8n-workflow'; +import { VersionedNodeType } from 'n8n-workflow'; -import isEmpty from 'lodash/isEmpty'; -import omit from 'lodash/omit'; -import { - activityFields, - activityOperations, - campaignFields, - campaignOperations, - leadFields, - leadOperations, - teamFields, - teamOperations, - unsubscribeFields, - unsubscribeOperations, -} from './descriptions'; +import { LemlistV1 } from './v1/LemlistV1.node'; +import { LemlistV2 } from './v2/LemlistV2.node'; -import { lemlistApiRequest, lemlistApiRequestAllItems } from './GenericFunctions'; +export class Lemlist extends VersionedNodeType { + constructor() { + const baseDescription: INodeTypeBaseDescription = { + displayName: 'Lemlist', + name: 'lemlist', + icon: 'file:lemlist.svg', + group: ['transform'], + defaultVersion: 2, + description: 'Consume the Lemlist API', + }; -export class Lemlist implements INodeType { - description: INodeTypeDescription = { - displayName: 'Lemlist', - name: 'lemlist', - icon: 'file:lemlist.svg', - group: ['transform'], - version: 1, - subtitle: '={{$parameter["operation"] + ": " + $parameter["resource"]}}', - description: 'Consume the Lemlist API', - defaults: { - name: 'Lemlist', - }, - inputs: ['main'], - outputs: ['main'], - credentials: [ - { - name: 'lemlistApi', - required: true, - }, - ], - properties: [ - { - displayName: 'Resource', - name: 'resource', - type: 'options', - noDataExpression: true, - options: [ - { - name: 'Activity', - value: 'activity', - }, - { - name: 'Campaign', - value: 'campaign', - }, - { - name: 'Lead', - value: 'lead', - }, - { - name: 'Team', - value: 'team', - }, - { - name: 'Unsubscribe', - value: 'unsubscribe', - }, - ], - default: 'activity', - }, - ...activityOperations, - ...activityFields, - ...campaignOperations, - ...campaignFields, - ...leadOperations, - ...leadFields, - ...teamOperations, - ...teamFields, - ...unsubscribeOperations, - ...unsubscribeFields, - ], - }; + const nodeVersions: IVersionedNodeType['nodeVersions'] = { + 1: new LemlistV1(baseDescription), + 2: new LemlistV2(baseDescription), + }; - methods = { - loadOptions: { - async getCampaigns(this: ILoadOptionsFunctions) { - const campaigns = await lemlistApiRequest.call(this, 'GET', '/campaigns'); - return campaigns.map(({ _id, name }: { _id: string; name: string }) => ({ - name, - value: _id, - })); - }, - }, - }; - - async execute(this: IExecuteFunctions) { - const items = this.getInputData(); - - const resource = this.getNodeParameter('resource', 0); - const operation = this.getNodeParameter('operation', 0); - - let responseData; - const returnData: INodeExecutionData[] = []; - - for (let i = 0; i < items.length; i++) { - try { - if (resource === 'activity') { - // ********************************************************************* - // activity - // ********************************************************************* - - if (operation === 'getAll') { - // ---------------------------------- - // activity: getAll - // ---------------------------------- - - // https://developer.lemlist.com/#activities - - const returnAll = this.getNodeParameter('returnAll', i); - - const qs = {} as IDataObject; - const filters = this.getNodeParameter('filters', i); - - if (!isEmpty(filters)) { - Object.assign(qs, filters); - } - - if (returnAll) { - responseData = await lemlistApiRequestAllItems.call(this, 'GET', '/activities', qs); - } else { - qs.limit = this.getNodeParameter('limit', i); - responseData = await lemlistApiRequest.call(this, 'GET', '/activities', {}, qs); - } - } - } else if (resource === 'campaign') { - // ********************************************************************* - // campaign - // ********************************************************************* - - if (operation === 'getAll') { - // ---------------------------------- - // campaign: getAll - // ---------------------------------- - - // https://developer.lemlist.com/#list-all-campaigns - - const returnAll = this.getNodeParameter('returnAll', i); - - if (returnAll) { - responseData = await lemlistApiRequestAllItems.call(this, 'GET', '/campaigns', {}); - } else { - const qs = { - limit: this.getNodeParameter('limit', i), - }; - responseData = await lemlistApiRequest.call(this, 'GET', '/campaigns', {}, qs); - } - } - } else if (resource === 'lead') { - // ********************************************************************* - // lead - // ********************************************************************* - - if (operation === 'create') { - // ---------------------------------- - // lead: create - // ---------------------------------- - - // https://developer.lemlist.com/#add-a-lead-in-a-campaign - - const qs = {} as IDataObject; - const additionalFields = this.getNodeParameter('additionalFields', i); - - if (additionalFields.deduplicate !== undefined) { - qs.deduplicate = additionalFields.deduplicate; - } - - const body = {} as IDataObject; - - const remainingAdditionalFields = omit(additionalFields, 'deduplicate'); - - if (!isEmpty(remainingAdditionalFields)) { - Object.assign(body, remainingAdditionalFields); - } - - const campaignId = this.getNodeParameter('campaignId', i); - const email = this.getNodeParameter('email', i); - const endpoint = `/campaigns/${campaignId}/leads/${email}`; - - responseData = await lemlistApiRequest.call(this, 'POST', endpoint, body, qs); - } else if (operation === 'delete') { - // ---------------------------------- - // lead: delete - // ---------------------------------- - - // https://developer.lemlist.com/#delete-a-lead-from-a-campaign - - const campaignId = this.getNodeParameter('campaignId', i); - const email = this.getNodeParameter('email', i); - const endpoint = `/campaigns/${campaignId}/leads/${email}`; - responseData = await lemlistApiRequest.call( - this, - 'DELETE', - endpoint, - {}, - { action: 'remove' }, - ); - } else if (operation === 'get') { - // ---------------------------------- - // lead: get - // ---------------------------------- - - // https://developer.lemlist.com/#get-a-specific-lead-by-email - - const email = this.getNodeParameter('email', i); - responseData = await lemlistApiRequest.call(this, 'GET', `/leads/${email}`); - } else if (operation === 'unsubscribe') { - // ---------------------------------- - // lead: unsubscribe - // ---------------------------------- - - // https://developer.lemlist.com/#unsubscribe-a-lead-from-a-campaign - - const campaignId = this.getNodeParameter('campaignId', i); - const email = this.getNodeParameter('email', i); - const endpoint = `/campaigns/${campaignId}/leads/${email}`; - responseData = await lemlistApiRequest.call(this, 'DELETE', endpoint); - } - } else if (resource === 'team') { - // ********************************************************************* - // team - // ********************************************************************* - - if (operation === 'get') { - // ---------------------------------- - // team: get - // ---------------------------------- - - // https://developer.lemlist.com/#team - - responseData = await lemlistApiRequest.call(this, 'GET', '/team'); - } - } else if (resource === 'unsubscribe') { - // ********************************************************************* - // unsubscribe - // ********************************************************************* - - if (operation === 'add') { - // ---------------------------------- - // unsubscribe: Add - // ---------------------------------- - - // https://developer.lemlist.com/#add-an-email-address-in-the-unsubscribes - - const email = this.getNodeParameter('email', i); - responseData = await lemlistApiRequest.call(this, 'POST', `/unsubscribes/${email}`); - } else if (operation === 'delete') { - // ---------------------------------- - // unsubscribe: delete - // ---------------------------------- - - // https://developer.lemlist.com/#delete-an-email-address-from-the-unsubscribes - - const email = this.getNodeParameter('email', i); - responseData = await lemlistApiRequest.call(this, 'DELETE', `/unsubscribes/${email}`); - } else if (operation === 'getAll') { - // ---------------------------------- - // unsubscribe: getAll - // ---------------------------------- - - // https://developer.lemlist.com/#list-all-unsubscribes - - const returnAll = this.getNodeParameter('returnAll', i); - - if (returnAll) { - responseData = await lemlistApiRequestAllItems.call(this, 'GET', '/unsubscribes', {}); - } else { - const qs = { - limit: this.getNodeParameter('limit', i), - }; - responseData = await lemlistApiRequest.call(this, 'GET', '/unsubscribes', {}, qs); - } - } - } - } catch (error) { - if (this.continueOnFail(error)) { - const executionErrorData = this.helpers.constructExecutionMetaData( - this.helpers.returnJsonArray({ error: error.message }), - { itemData: { item: i } }, - ); - returnData.push(...executionErrorData); - continue; - } - - throw error; - } - - const executionData = this.helpers.constructExecutionMetaData( - this.helpers.returnJsonArray(responseData as IDataObject), - { itemData: { item: i } }, - ); - - returnData.push(...executionData); - } - - return [returnData]; + super(nodeVersions, baseDescription); } } diff --git a/packages/nodes-base/nodes/Lemlist/LemlistTrigger.node.json b/packages/nodes-base/nodes/Lemlist/LemlistTrigger.node.json index 35a65a1950..132c4a5cef 100644 --- a/packages/nodes-base/nodes/Lemlist/LemlistTrigger.node.json +++ b/packages/nodes-base/nodes/Lemlist/LemlistTrigger.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/lemlist" + "url": "https://docs.n8n.io/integrations/builtin/credentials/lemlist/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Lemlist/LemlistTrigger.node.ts b/packages/nodes-base/nodes/Lemlist/LemlistTrigger.node.ts index a9306c21c5..8eabdcf353 100644 --- a/packages/nodes-base/nodes/Lemlist/LemlistTrigger.node.ts +++ b/packages/nodes-base/nodes/Lemlist/LemlistTrigger.node.ts @@ -7,6 +7,7 @@ import type { INodeTypeDescription, IWebhookResponseData, } from 'n8n-workflow'; +import { NodeConnectionType } from 'n8n-workflow'; import { getEvents, lemlistApiRequest } from './GenericFunctions'; @@ -23,7 +24,7 @@ export class LemlistTrigger implements INodeType { name: 'Lemlist Trigger', }, inputs: [], - outputs: ['main'], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'lemlistApi', @@ -55,7 +56,7 @@ export class LemlistTrigger implements INodeType { default: {}, options: [ { - displayName: 'Campaing Name or ID', + displayName: 'Campaign Name or ID', name: 'campaignId', type: 'options', typeOptions: { @@ -63,7 +64,7 @@ export class LemlistTrigger implements INodeType { }, default: '', description: - 'We\'ll call this hook only for this campaignId. Choose from the list, or specify an ID using an expression.', + 'We\'ll call this hook only for this campaignId. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Is First', diff --git a/packages/nodes-base/nodes/Lemlist/test/GenericFunctions.test.ts b/packages/nodes-base/nodes/Lemlist/test/GenericFunctions.test.ts new file mode 100644 index 0000000000..a0538678bd --- /dev/null +++ b/packages/nodes-base/nodes/Lemlist/test/GenericFunctions.test.ts @@ -0,0 +1,115 @@ +import type { + IExecuteFunctions, + IHookFunctions, + ILoadOptionsFunctions, + IDataObject, + IHttpRequestMethods, +} from 'n8n-workflow'; +import { lemlistApiRequest, lemlistApiRequestAllItems, getEvents } from '../GenericFunctions'; + +describe('GenericFunctions', () => { + describe('lemlistApiRequest', () => { + const mockThis = { + helpers: { + requestWithAuthentication: jest.fn(), + }, + } as unknown as IHookFunctions | IExecuteFunctions | ILoadOptionsFunctions; + + it('should make an authenticated API request to Lemlist', async () => { + const method: IHttpRequestMethods = 'GET'; + const endpoint = '/test-endpoint'; + const body: IDataObject = { key: 'value' }; + const qs: IDataObject = { query: 'value' }; + const option: IDataObject = { headers: {} }; + + await lemlistApiRequest.call(mockThis, method, endpoint, body, qs, option); + + expect(mockThis.helpers.requestWithAuthentication).toHaveBeenCalledWith('lemlistApi', { + headers: {}, + method: 'GET', + uri: 'https://api.lemlist.com/api/test-endpoint', + qs: { query: 'value' }, + body: { key: 'value' }, + json: true, + }); + }); + }); + + describe('lemlistApiRequestAllItems', () => { + const mockThis = { + helpers: { + requestWithAuthentication: jest + .fn() + .mockResolvedValue([{ id: 'cam_A1B2C3D4E5F6G7H8I9' }, { id: 'cam_A1B2C3D4E5F6G7H8I8' }]), + }, + } as unknown as IHookFunctions | IExecuteFunctions | ILoadOptionsFunctions; + + it('should return all results', async () => { + const method: IHttpRequestMethods = 'GET'; + const endpoint = '/test-endpoint'; + const qs: IDataObject = {}; + qs.version = 'v2'; + + const result = await lemlistApiRequestAllItems.call(mockThis, method, endpoint, qs); + + expect(result).toEqual([{ id: 'cam_A1B2C3D4E5F6G7H8I9' }, { id: 'cam_A1B2C3D4E5F6G7H8I8' }]); + }); + }); + + describe('getEvents', () => { + it('should return a list of events with capitalized names', () => { + const expectedEvents = [ + { name: '*', value: '*' }, + { name: 'Contacted', value: 'contacted' }, + { name: 'Hooked', value: 'hooked' }, + { name: 'Attracted', value: 'attracted' }, + { name: 'Warmed', value: 'warmed' }, + { name: 'Interested', value: 'interested' }, + { name: 'Skipped', value: 'skipped' }, + { name: 'Not Interested', value: 'notInterested' }, + { name: 'Emails Sent', value: 'emailsSent' }, + { name: 'Emails Opened', value: 'emailsOpened' }, + { name: 'Emails Clicked', value: 'emailsClicked' }, + { name: 'Emails Replied', value: 'emailsReplied' }, + { name: 'Emails Bounced', value: 'emailsBounced' }, + { name: 'Emails Send Failed', value: 'emailsSendFailed' }, + { name: 'Emails Failed', value: 'emailsFailed' }, + { name: 'Emails Unsubscribed', value: 'emailsUnsubscribed' }, + { name: 'Emails Interested', value: 'emailsInterested' }, + { name: 'Emails Not Interested', value: 'emailsNotInterested' }, + { name: 'Opportunities Done', value: 'opportunitiesDone' }, + { name: 'Aircall Created', value: 'aircallCreated' }, + { name: 'Aircall Ended', value: 'aircallEnded' }, + { name: 'Aircall Done', value: 'aircallDone' }, + { name: 'Aircall Interested', value: 'aircallInterested' }, + { name: 'Aircall Not Interested', value: 'aircallNotInterested' }, + { name: 'Api Done', value: 'apiDone' }, + { name: 'Api Interested', value: 'apiInterested' }, + { name: 'Api Not Interested', value: 'apiNotInterested' }, + { name: 'Api Failed', value: 'apiFailed' }, + { name: 'LinkedIn Visit Done', value: 'linkedinVisitDone' }, + { name: 'LinkedIn Visit Failed', value: 'linkedinVisitFailed' }, + { name: 'LinkedIn Invite Done', value: 'linkedinInviteDone' }, + { name: 'LinkedIn Invite Failed', value: 'linkedinInviteFailed' }, + { name: 'LinkedIn Invite Accepted', value: 'linkedinInviteAccepted' }, + { name: 'LinkedIn Replied', value: 'linkedinReplied' }, + { name: 'LinkedIn Sent', value: 'linkedinSent' }, + { name: 'LinkedIn Voice Note Done', value: 'linkedinVoiceNoteDone' }, + { name: 'LinkedIn Voice Note Failed', value: 'linkedinVoiceNoteFailed' }, + { name: 'LinkedIn Interested', value: 'linkedinInterested' }, + { name: 'LinkedIn Not Interested', value: 'linkedinNotInterested' }, + { name: 'LinkedIn Send Failed', value: 'linkedinSendFailed' }, + { name: 'Manual Interested', value: 'manualInterested' }, + { name: 'Manual Not Interested', value: 'manualNotInterested' }, + { name: 'Paused', value: 'paused' }, + { name: 'Resumed', value: 'resumed' }, + { name: 'Custom Domain Errors', value: 'customDomainErrors' }, + { name: 'Connection Issue', value: 'connectionIssue' }, + { name: 'Send Limit Reached', value: 'sendLimitReached' }, + { name: 'Lemwarm Paused', value: 'lemwarmPaused' }, + ]; + const result = getEvents(); + expect(result).toEqual(expectedEvents); + }); + }); +}); diff --git a/packages/nodes-base/nodes/Lemlist/v1/LemlistV1.node.ts b/packages/nodes-base/nodes/Lemlist/v1/LemlistV1.node.ts new file mode 100644 index 0000000000..9c313fc60f --- /dev/null +++ b/packages/nodes-base/nodes/Lemlist/v1/LemlistV1.node.ts @@ -0,0 +1,321 @@ +import { + type IExecuteFunctions, + type IDataObject, + type ILoadOptionsFunctions, + type INodeExecutionData, + type INodeType, + type INodeTypeDescription, + type INodeTypeBaseDescription, + NodeConnectionType, +} from 'n8n-workflow'; + +import isEmpty from 'lodash/isEmpty'; +import omit from 'lodash/omit'; +import { lemlistApiRequest, lemlistApiRequestAllItems } from '../GenericFunctions'; +import { + activityFields, + activityOperations, + campaignFields, + campaignOperations, + leadFields, + leadOperations, + teamFields, + teamOperations, + unsubscribeFields, + unsubscribeOperations, +} from './descriptions'; +const versionDescription: INodeTypeDescription = { + displayName: 'Lemlist', + name: 'lemlist', + icon: 'file:lemlist.svg', + group: ['transform'], + version: 1, + subtitle: '={{$parameter["operation"] + ": " + $parameter["resource"]}}', + description: 'Consume the Lemlist API', + defaults: { + name: 'Lemlist', + }, + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], + credentials: [ + { + name: 'lemlistApi', + required: true, + }, + ], + properties: [ + { + displayName: 'Resource', + name: 'resource', + type: 'options', + noDataExpression: true, + options: [ + { + name: 'Activity', + value: 'activity', + }, + { + name: 'Campaign', + value: 'campaign', + }, + { + name: 'Lead', + value: 'lead', + }, + { + name: 'Team', + value: 'team', + }, + { + name: 'Unsubscribe', + value: 'unsubscribe', + }, + ], + default: 'activity', + }, + ...activityOperations, + ...activityFields, + ...campaignOperations, + ...campaignFields, + ...leadOperations, + ...leadFields, + ...teamOperations, + ...teamFields, + ...unsubscribeOperations, + ...unsubscribeFields, + ], +}; +export class LemlistV1 implements INodeType { + description: INodeTypeDescription; + + constructor(baseDescription: INodeTypeBaseDescription) { + this.description = { + ...baseDescription, + ...versionDescription, + }; + } + + methods = { + loadOptions: { + async getCampaigns(this: ILoadOptionsFunctions) { + const campaigns = await lemlistApiRequest.call(this, 'GET', '/campaigns'); + return campaigns.map(({ _id, name }: { _id: string; name: string }) => ({ + name, + value: _id, + })); + }, + }, + }; + + async execute(this: IExecuteFunctions) { + const items = this.getInputData(); + + const resource = this.getNodeParameter('resource', 0); + const operation = this.getNodeParameter('operation', 0); + + let responseData; + const returnData: INodeExecutionData[] = []; + + for (let i = 0; i < items.length; i++) { + try { + if (resource === 'activity') { + // ********************************************************************* + // activity + // ********************************************************************* + + if (operation === 'getAll') { + // ---------------------------------- + // activity: getAll + // ---------------------------------- + + // https://developer.lemlist.com/#activities + + const returnAll = this.getNodeParameter('returnAll', i); + + const qs = {} as IDataObject; + const filters = this.getNodeParameter('filters', i); + + if (!isEmpty(filters)) { + Object.assign(qs, filters); + } + + if (returnAll) { + responseData = await lemlistApiRequestAllItems.call(this, 'GET', '/activities', qs); + } else { + qs.limit = this.getNodeParameter('limit', i); + responseData = await lemlistApiRequest.call(this, 'GET', '/activities', {}, qs); + } + } + } else if (resource === 'campaign') { + // ********************************************************************* + // campaign + // ********************************************************************* + + if (operation === 'getAll') { + // ---------------------------------- + // campaign: getAll + // ---------------------------------- + + // https://developer.lemlist.com/#list-all-campaigns + + const returnAll = this.getNodeParameter('returnAll', i); + + if (returnAll) { + responseData = await lemlistApiRequestAllItems.call(this, 'GET', '/campaigns', {}); + } else { + const qs = { + limit: this.getNodeParameter('limit', i), + }; + responseData = await lemlistApiRequest.call(this, 'GET', '/campaigns', {}, qs); + } + } + } else if (resource === 'lead') { + // ********************************************************************* + // lead + // ********************************************************************* + + if (operation === 'create') { + // ---------------------------------- + // lead: create + // ---------------------------------- + + // https://developer.lemlist.com/#add-a-lead-in-a-campaign + + const qs = {} as IDataObject; + const additionalFields = this.getNodeParameter('additionalFields', i); + + if (additionalFields.deduplicate !== undefined) { + qs.deduplicate = additionalFields.deduplicate; + } + + const body = {} as IDataObject; + + const remainingAdditionalFields = omit(additionalFields, 'deduplicate'); + + if (!isEmpty(remainingAdditionalFields)) { + Object.assign(body, remainingAdditionalFields); + } + + const campaignId = this.getNodeParameter('campaignId', i); + const email = this.getNodeParameter('email', i); + const endpoint = `/campaigns/${campaignId}/leads/${email}`; + + responseData = await lemlistApiRequest.call(this, 'POST', endpoint, body, qs); + } else if (operation === 'delete') { + // ---------------------------------- + // lead: delete + // ---------------------------------- + + // https://developer.lemlist.com/#delete-a-lead-from-a-campaign + + const campaignId = this.getNodeParameter('campaignId', i); + const email = this.getNodeParameter('email', i); + const endpoint = `/campaigns/${campaignId}/leads/${email}`; + responseData = await lemlistApiRequest.call( + this, + 'DELETE', + endpoint, + {}, + { action: 'remove' }, + ); + } else if (operation === 'get') { + // ---------------------------------- + // lead: get + // ---------------------------------- + + // https://developer.lemlist.com/#get-a-specific-lead-by-email + + const email = this.getNodeParameter('email', i); + responseData = await lemlistApiRequest.call(this, 'GET', `/leads/${email}`); + } else if (operation === 'unsubscribe') { + // ---------------------------------- + // lead: unsubscribe + // ---------------------------------- + + // https://developer.lemlist.com/#unsubscribe-a-lead-from-a-campaign + + const campaignId = this.getNodeParameter('campaignId', i); + const email = this.getNodeParameter('email', i); + const endpoint = `/campaigns/${campaignId}/leads/${email}`; + responseData = await lemlistApiRequest.call(this, 'DELETE', endpoint); + } + } else if (resource === 'team') { + // ********************************************************************* + // team + // ********************************************************************* + + if (operation === 'get') { + // ---------------------------------- + // team: get + // ---------------------------------- + + // https://developer.lemlist.com/#team + + responseData = await lemlistApiRequest.call(this, 'GET', '/team'); + } + } else if (resource === 'unsubscribe') { + // ********************************************************************* + // unsubscribe + // ********************************************************************* + + if (operation === 'add') { + // ---------------------------------- + // unsubscribe: Add + // ---------------------------------- + + // https://developer.lemlist.com/#add-an-email-address-in-the-unsubscribes + + const email = this.getNodeParameter('email', i); + responseData = await lemlistApiRequest.call(this, 'POST', `/unsubscribes/${email}`); + } else if (operation === 'delete') { + // ---------------------------------- + // unsubscribe: delete + // ---------------------------------- + + // https://developer.lemlist.com/#delete-an-email-address-from-the-unsubscribes + + const email = this.getNodeParameter('email', i); + responseData = await lemlistApiRequest.call(this, 'DELETE', `/unsubscribes/${email}`); + } else if (operation === 'getAll') { + // ---------------------------------- + // unsubscribe: getAll + // ---------------------------------- + + // https://developer.lemlist.com/#list-all-unsubscribes + + const returnAll = this.getNodeParameter('returnAll', i); + + if (returnAll) { + responseData = await lemlistApiRequestAllItems.call(this, 'GET', '/unsubscribes', {}); + } else { + const qs = { + limit: this.getNodeParameter('limit', i), + }; + responseData = await lemlistApiRequest.call(this, 'GET', '/unsubscribes', {}, qs); + } + } + } + } catch (error) { + if (this.continueOnFail()) { + const executionErrorData = this.helpers.constructExecutionMetaData( + this.helpers.returnJsonArray({ error: error.message }), + { itemData: { item: i } }, + ); + + returnData.push(...executionErrorData); + continue; + } + throw error; + } + + const executionData = this.helpers.constructExecutionMetaData( + this.helpers.returnJsonArray(responseData as IDataObject), + { itemData: { item: i } }, + ); + + returnData.push(...executionData); + } + + return [returnData]; + } +} diff --git a/packages/nodes-base/nodes/Lemlist/descriptions/ActivityDescription.ts b/packages/nodes-base/nodes/Lemlist/v1/descriptions/ActivityDescription.ts similarity index 98% rename from packages/nodes-base/nodes/Lemlist/descriptions/ActivityDescription.ts rename to packages/nodes-base/nodes/Lemlist/v1/descriptions/ActivityDescription.ts index 4143a1419d..caac29bf16 100644 --- a/packages/nodes-base/nodes/Lemlist/descriptions/ActivityDescription.ts +++ b/packages/nodes-base/nodes/Lemlist/v1/descriptions/ActivityDescription.ts @@ -79,7 +79,7 @@ export const activityFields: INodeProperties[] = [ loadOptionsMethod: 'getCampaigns', }, description: - 'ID of the campaign to retrieve activity for. Choose from the list, or specify an ID using an expression.', + 'ID of the campaign to retrieve activity for. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Type', diff --git a/packages/nodes-base/nodes/Lemlist/descriptions/CampaignDescription.ts b/packages/nodes-base/nodes/Lemlist/v1/descriptions/CampaignDescription.ts similarity index 100% rename from packages/nodes-base/nodes/Lemlist/descriptions/CampaignDescription.ts rename to packages/nodes-base/nodes/Lemlist/v1/descriptions/CampaignDescription.ts diff --git a/packages/nodes-base/nodes/Lemlist/descriptions/LeadDescription.ts b/packages/nodes-base/nodes/Lemlist/v1/descriptions/LeadDescription.ts similarity index 97% rename from packages/nodes-base/nodes/Lemlist/descriptions/LeadDescription.ts rename to packages/nodes-base/nodes/Lemlist/v1/descriptions/LeadDescription.ts index 80e906bd1c..5cf85279c4 100644 --- a/packages/nodes-base/nodes/Lemlist/descriptions/LeadDescription.ts +++ b/packages/nodes-base/nodes/Lemlist/v1/descriptions/LeadDescription.ts @@ -51,7 +51,7 @@ export const leadFields: INodeProperties[] = [ loadOptionsMethod: 'getCampaigns', }, description: - 'ID of the campaign to create the lead under. Choose from the list, or specify an ID using an expression.', + 'ID of the campaign to create the lead under. Choose from the list, or specify an ID using an expression.', displayOptions: { show: { resource: ['lead'], @@ -159,7 +159,7 @@ export const leadFields: INodeProperties[] = [ loadOptionsMethod: 'getCampaigns', }, description: - 'ID of the campaign to remove the lead from. Choose from the list, or specify an ID using an expression.', + 'ID of the campaign to remove the lead from. Choose from the list, or specify an ID using an expression.', displayOptions: { show: { resource: ['lead'], @@ -213,7 +213,7 @@ export const leadFields: INodeProperties[] = [ loadOptionsMethod: 'getCampaigns', }, description: - 'ID of the campaign to unsubscribe the lead from. Choose from the list, or specify an ID using an expression.', + 'ID of the campaign to unsubscribe the lead from. Choose from the list, or specify an ID using an expression.', displayOptions: { show: { resource: ['lead'], diff --git a/packages/nodes-base/nodes/Lemlist/descriptions/TeamDescription.ts b/packages/nodes-base/nodes/Lemlist/v1/descriptions/TeamDescription.ts similarity index 100% rename from packages/nodes-base/nodes/Lemlist/descriptions/TeamDescription.ts rename to packages/nodes-base/nodes/Lemlist/v1/descriptions/TeamDescription.ts diff --git a/packages/nodes-base/nodes/Lemlist/descriptions/UnsubscribeDescription.ts b/packages/nodes-base/nodes/Lemlist/v1/descriptions/UnsubscribeDescription.ts similarity index 100% rename from packages/nodes-base/nodes/Lemlist/descriptions/UnsubscribeDescription.ts rename to packages/nodes-base/nodes/Lemlist/v1/descriptions/UnsubscribeDescription.ts diff --git a/packages/nodes-base/nodes/Lemlist/descriptions/index.ts b/packages/nodes-base/nodes/Lemlist/v1/descriptions/index.ts similarity index 100% rename from packages/nodes-base/nodes/Lemlist/descriptions/index.ts rename to packages/nodes-base/nodes/Lemlist/v1/descriptions/index.ts diff --git a/packages/nodes-base/nodes/Lemlist/v2/LemlistV2.node.ts b/packages/nodes-base/nodes/Lemlist/v2/LemlistV2.node.ts new file mode 100644 index 0000000000..d49128ea9f --- /dev/null +++ b/packages/nodes-base/nodes/Lemlist/v2/LemlistV2.node.ts @@ -0,0 +1,416 @@ +import { + type IExecuteFunctions, + type IDataObject, + type ILoadOptionsFunctions, + type INodeExecutionData, + type INodeType, + type INodeTypeDescription, + type INodeTypeBaseDescription, + NodeConnectionType, +} from 'n8n-workflow'; + +import isEmpty from 'lodash/isEmpty'; +import omit from 'lodash/omit'; +import { lemlistApiRequest, lemlistApiRequestAllItems } from '../GenericFunctions'; +import { + activityFields, + activityOperations, + campaignFields, + campaignOperations, + enrichmentFields, + enrichmentOperations, + leadFields, + leadOperations, + teamFields, + teamOperations, + unsubscribeFields, + unsubscribeOperations, +} from './descriptions'; +const versionDescription: INodeTypeDescription = { + displayName: 'Lemlist', + name: 'lemlist', + icon: 'file:lemlist.svg', + group: ['transform'], + version: 2, + subtitle: '={{$parameter["operation"] + ": " + $parameter["resource"]}}', + description: 'Consume the Lemlist API', + defaults: { + name: 'Lemlist', + }, + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], + credentials: [ + { + name: 'lemlistApi', + required: true, + }, + ], + properties: [ + { + displayName: 'Resource', + name: 'resource', + type: 'options', + noDataExpression: true, + options: [ + { + name: 'Activity', + value: 'activity', + }, + { + name: 'Campaign', + value: 'campaign', + }, + { + name: 'Enrichment', + value: 'enrich', + }, + { + name: 'Lead', + value: 'lead', + }, + { + name: 'Team', + value: 'team', + }, + { + name: 'Unsubscribe', + value: 'unsubscribe', + }, + ], + default: 'activity', + }, + ...activityOperations, + ...activityFields, + ...campaignOperations, + ...campaignFields, + ...enrichmentOperations, + ...enrichmentFields, + ...leadOperations, + ...leadFields, + ...teamOperations, + ...teamFields, + ...unsubscribeOperations, + ...unsubscribeFields, + ], +}; +export class LemlistV2 implements INodeType { + description: INodeTypeDescription; + + constructor(baseDescription: INodeTypeBaseDescription) { + this.description = { + ...baseDescription, + ...versionDescription, + }; + } + + methods = { + loadOptions: { + async getCampaigns(this: ILoadOptionsFunctions) { + const campaigns = await lemlistApiRequest.call(this, 'GET', '/campaigns'); + return campaigns.map(({ _id, name }: { _id: string; name: string }) => ({ + name, + value: _id, + })); + }, + }, + }; + + async execute(this: IExecuteFunctions) { + const items = this.getInputData(); + + const resource = this.getNodeParameter('resource', 0); + const operation = this.getNodeParameter('operation', 0); + + let responseData; + const returnData: INodeExecutionData[] = []; + + for (let i = 0; i < items.length; i++) { + try { + if (resource === 'activity') { + // ********************************************************************* + // activity + // ********************************************************************* + + if (operation === 'getAll') { + // ---------------------------------- + // activity: getAll + // ---------------------------------- + + // https://developer.lemlist.com/#activities + + const returnAll = this.getNodeParameter('returnAll', i); + + const qs = {} as IDataObject; + const filters = this.getNodeParameter('filters', i); + + if (!isEmpty(filters)) { + Object.assign(qs, filters); + } + + if (returnAll) { + responseData = await lemlistApiRequestAllItems.call(this, 'GET', '/activities', qs); + } else { + qs.limit = this.getNodeParameter('limit', i); + responseData = await lemlistApiRequest.call(this, 'GET', '/activities', {}, qs); + } + } + } else if (resource === 'campaign') { + // ********************************************************************* + // campaign + // ********************************************************************* + + if (operation === 'getAll') { + // ---------------------------------- + // campaign: getAll + // ---------------------------------- + + // https://developer.lemlist.com/#32ab1bf9-9b2f-40ed-9bbd-0b8370fed3d9 + const qs = {} as IDataObject; + const filters = this.getNodeParameter('filters', i); + + if (!isEmpty(filters)) { + Object.assign(qs, filters); + } + const returnAll = this.getNodeParameter('returnAll', i); + + if (returnAll) { + responseData = await lemlistApiRequestAllItems.call(this, 'GET', '/campaigns', {}); + } else { + qs.limit = this.getNodeParameter('limit', i); + responseData = await lemlistApiRequest.call(this, 'GET', '/campaigns', {}, qs); + } + } else if (operation === 'getStats') { + // ---------------------------------- + // campaign: getStats + // ---------------------------------- + + // https://developer.lemlist.com/#0b5cc72c-c1c8-47d0-a086-32b1b63522e3 + const qs = {} as IDataObject; + + const campaignId = this.getNodeParameter('campaignId', i); + + qs.startDate = this.getNodeParameter('startDate', i); + qs.endDate = this.getNodeParameter('endDate', i); + qs.timezone = this.getNodeParameter('timezone', i); + responseData = await lemlistApiRequest.call( + this, + 'GET', + `/campaigns/${campaignId}/stats`, + {}, + qs, + ); + } + } else if (resource === 'lead') { + // ********************************************************************* + // lead + // ********************************************************************* + + if (operation === 'create') { + // ---------------------------------- + // lead: create + // ---------------------------------- + + // https://developer.lemlist.com/#add-a-lead-in-a-campaign + + const qs = {} as IDataObject; + const additionalFields = this.getNodeParameter('additionalFields', i); + + if (additionalFields.deduplicate !== undefined) { + qs.deduplicate = additionalFields.deduplicate; + } + + const body = {} as IDataObject; + + const remainingAdditionalFields = omit(additionalFields, 'deduplicate'); + + if (!isEmpty(remainingAdditionalFields)) { + Object.assign(body, remainingAdditionalFields); + } + + const campaignId = this.getNodeParameter('campaignId', i); + const email = this.getNodeParameter('email', i); + const endpoint = `/campaigns/${campaignId}/leads/${email}`; + + responseData = await lemlistApiRequest.call(this, 'POST', endpoint, body, qs); + } else if (operation === 'delete') { + // ---------------------------------- + // lead: delete + // ---------------------------------- + + // https://developer.lemlist.com/#delete-a-lead-from-a-campaign + + const campaignId = this.getNodeParameter('campaignId', i); + const email = this.getNodeParameter('email', i); + const endpoint = `/campaigns/${campaignId}/leads/${email}`; + responseData = await lemlistApiRequest.call( + this, + 'DELETE', + endpoint, + {}, + { action: 'remove' }, + ); + } else if (operation === 'get') { + // ---------------------------------- + // lead: get + // ---------------------------------- + + // https://developer.lemlist.com/#get-a-specific-lead-by-email + + const email = this.getNodeParameter('email', i); + responseData = await lemlistApiRequest.call(this, 'GET', `/leads/${email}`); + } else if (operation === 'unsubscribe') { + // ---------------------------------- + // lead: unsubscribe + // ---------------------------------- + + // https://developer.lemlist.com/#unsubscribe-a-lead-from-a-campaign + + const campaignId = this.getNodeParameter('campaignId', i); + const email = this.getNodeParameter('email', i); + const endpoint = `/campaigns/${campaignId}/leads/${email}`; + responseData = await lemlistApiRequest.call(this, 'DELETE', endpoint); + } + } else if (resource === 'team') { + // ********************************************************************* + // team + // ********************************************************************* + + if (operation === 'get') { + // ---------------------------------- + // team: get + // ---------------------------------- + + // https://developer.lemlist.com/#team + + responseData = await lemlistApiRequest.call(this, 'GET', '/team'); + } else if (operation === 'getCredits') { + // ---------------------------------- + // team: getCredits + // ---------------------------------- + + // https://developer.lemlist.com/#c9af1cf3-8d3d-469e-a548-268b579d2cb3 + + responseData = await lemlistApiRequest.call(this, 'GET', '/team/credits'); + } + } else if (resource === 'unsubscribe') { + // ********************************************************************* + // unsubscribe + // ********************************************************************* + + if (operation === 'add') { + // ---------------------------------- + // unsubscribe: Add + // ---------------------------------- + + // https://developer.lemlist.com/#add-an-email-address-in-the-unsubscribes + + const email = this.getNodeParameter('email', i); + responseData = await lemlistApiRequest.call(this, 'POST', `/unsubscribes/${email}`); + } else if (operation === 'delete') { + // ---------------------------------- + // unsubscribe: delete + // ---------------------------------- + + // https://developer.lemlist.com/#delete-an-email-address-from-the-unsubscribes + + const email = this.getNodeParameter('email', i); + responseData = await lemlistApiRequest.call(this, 'DELETE', `/unsubscribes/${email}`); + } else if (operation === 'getAll') { + // ---------------------------------- + // unsubscribe: getAll + // ---------------------------------- + + // https://developer.lemlist.com/#list-all-unsubscribes + + const returnAll = this.getNodeParameter('returnAll', i); + + if (returnAll) { + responseData = await lemlistApiRequestAllItems.call(this, 'GET', '/unsubscribes', {}); + } else { + const qs = { + limit: this.getNodeParameter('limit', i), + }; + responseData = await lemlistApiRequest.call(this, 'GET', '/unsubscribes', {}, qs); + } + } + } else if (resource === 'enrich') { + // ********************************************************************* + // enrichment + // ********************************************************************* + + if (operation === 'get') { + // ---------------------------------- + // enrichment: get + // ---------------------------------- + + // https://developer.lemlist.com/#71b74cc3-8098-4389-b3c2-67a027df9407 + + const enrichId = this.getNodeParameter('enrichId', i); + + responseData = await lemlistApiRequest.call(this, 'GET', `/enrich/${enrichId}`); + } else if (operation === 'enrichLead') { + // https://developer.lemlist.com/#fe2a52fc-fa73-46d0-8b7d-395d9653bfd5 + const findEmail = this.getNodeParameter('findEmail', i); + const verifyEmail = this.getNodeParameter('verifyEmail', i); + const linkedinEnrichment = this.getNodeParameter('linkedinEnrichment', i); + const findPhone = this.getNodeParameter('findPhone', i); + const qs = {} as IDataObject; + + qs.findEmail = findEmail; + qs.verifyEmail = verifyEmail; + qs.linkedinEnrichment = linkedinEnrichment; + qs.findPhone = findPhone; + + const body = {} as IDataObject; + + const leadId = this.getNodeParameter('leadId', i); + const endpoint = `/leads/${leadId}/enrich/`; + + responseData = await lemlistApiRequest.call(this, 'POST', endpoint, body, qs); + } else if (operation === 'enrichPerson') { + // https://developer.lemlist.com/#4ba3d505-0bfa-4f36-8549-f3cb343786bf + const findEmail = this.getNodeParameter('findEmail', i); + const verifyEmail = this.getNodeParameter('verifyEmail', i); + const linkedinEnrichment = this.getNodeParameter('linkedinEnrichment', i); + const findPhone = this.getNodeParameter('findPhone', i); + const additionalFields = this.getNodeParameter('additionalFields', i); + const qs = {} as IDataObject; + if (!isEmpty(additionalFields)) { + Object.assign(qs, additionalFields); + } + qs.findEmail = findEmail; + qs.verifyEmail = verifyEmail; + qs.linkedinEnrichment = linkedinEnrichment; + qs.findPhone = findPhone; + + const body = {} as IDataObject; + + const endpoint = '/enrich/'; + + responseData = await lemlistApiRequest.call(this, 'POST', endpoint, body, qs); + } + } + } catch (error) { + if (this.continueOnFail()) { + const executionErrorData = this.helpers.constructExecutionMetaData( + this.helpers.returnJsonArray({ error: error.message }), + { itemData: { item: i } }, + ); + + returnData.push(...executionErrorData); + continue; + } + throw error; + } + + const executionData = this.helpers.constructExecutionMetaData( + this.helpers.returnJsonArray(responseData as IDataObject), + { itemData: { item: i } }, + ); + + returnData.push(...executionData); + } + + return [returnData]; + } +} diff --git a/packages/nodes-base/nodes/Lemlist/v2/descriptions/ActivityDescription.ts b/packages/nodes-base/nodes/Lemlist/v2/descriptions/ActivityDescription.ts new file mode 100644 index 0000000000..3560ea6fff --- /dev/null +++ b/packages/nodes-base/nodes/Lemlist/v2/descriptions/ActivityDescription.ts @@ -0,0 +1,301 @@ +import type { INodeProperties } from 'n8n-workflow'; + +export const activityOperations: INodeProperties[] = [ + { + displayName: 'Operation', + name: 'operation', + type: 'options', + noDataExpression: true, + default: 'getAll', + options: [ + { + name: 'Get Many', + value: 'getAll', + action: 'Get many activities', + }, + ], + displayOptions: { + show: { + resource: ['activity'], + }, + }, + }, +]; + +export const activityFields: INodeProperties[] = [ + // ---------------------------------- + // activity: getAll + // ---------------------------------- + { + displayName: 'Return All', + name: 'returnAll', + type: 'boolean', + default: false, + description: 'Whether to return all results or only up to a given limit', + displayOptions: { + show: { + resource: ['activity'], + operation: ['getAll'], + }, + }, + }, + { + displayName: 'Limit', + name: 'limit', + type: 'number', + default: 5, + description: 'Max number of results to return', + typeOptions: { + minValue: 1, + maxValue: 1000, + }, + displayOptions: { + show: { + resource: ['activity'], + operation: ['getAll'], + returnAll: [false], + }, + }, + }, + { + displayName: 'Filters', + name: 'filters', + type: 'collection', + placeholder: 'Add Filter', + default: {}, + displayOptions: { + show: { + resource: ['activity'], + operation: ['getAll'], + }, + }, + options: [ + { + displayName: 'Campaign Name or ID', + name: 'campaignId', + type: 'options', + default: '', + typeOptions: { + loadOptionsMethod: 'getCampaigns', + }, + description: + 'ID of the campaign to retrieve activity for. Choose from the list, or specify an ID using an expression.', + }, + { + displayName: 'Is First', + name: 'isFirst', + type: 'boolean', + default: false, + }, + { + displayName: 'Lead ID', + name: 'leadId', + type: 'string', + default: '', + }, + { + displayName: 'Type', + name: 'type', + type: 'options', + default: 'emailsOpened', + description: 'Type of activity to retrieve', + options: [ + { + name: 'Aircall Created', + value: 'aircallCreated', + }, + { + name: 'Aircall Done', + value: 'aircallDone', + }, + { + name: 'Aircall Ended', + value: 'aircallEnded', + }, + { + name: 'Aircall Interested', + value: 'aircallInterested', + }, + { + name: 'Aircall Not Interested', + value: 'aircallNotInterested', + }, + { + name: 'Api Done', + value: 'apiDone', + }, + { + name: 'Api Failed', + value: 'apiFailed', + }, + { + name: 'Api Interested', + value: 'apiInterested', + }, + { + name: 'Api Not Interested', + value: 'apiNotInterested', + }, + { + name: 'Attracted', + value: 'attracted', + }, + { + name: 'Connection Issue', + value: 'connectionIssue', + }, + { + name: 'Contacted', + value: 'contacted', + }, + { + name: 'Custom Domain Errors', + value: 'customDomainErrors', + }, + { + name: 'Emails Bounced', + value: 'emailsBounced', + }, + { + name: 'Emails Clicked', + value: 'emailsClicked', + }, + { + name: 'Emails Failed', + value: 'emailsFailed', + }, + { + name: 'Emails Interested', + value: 'emailsInterested', + }, + { + name: 'Emails Not Interested', + value: 'emailsNotInterested', + }, + { + name: 'Emails Opened', + value: 'emailsOpened', + }, + { + name: 'Emails Replied', + value: 'emailsReplied', + }, + { + name: 'Emails Send Failed', + value: 'emailsSendFailed', + }, + { + name: 'Emails Sent', + value: 'emailsSent', + }, + { + name: 'Emails Unsubscribed', + value: 'emailsUnsubscribed', + }, + { + name: 'Hooked', + value: 'hooked', + }, + { + name: 'Interested', + value: 'interested', + }, + { + name: 'Lemwarm Paused', + value: 'lemwarmPaused', + }, + { + name: 'LinkedIn Interested', + value: 'linkedinInterested', + }, + { + name: 'LinkedIn Invite Accepted', + value: 'linkedinInviteAccepted', + }, + { + name: 'LinkedIn Invite Done', + value: 'linkedinInviteDone', + }, + { + name: 'LinkedIn Invite Failed', + value: 'linkedinInviteFailed', + }, + { + name: 'LinkedIn Not Interested', + value: 'linkedinNotInterested', + }, + { + name: 'LinkedIn Replied', + value: 'linkedinReplied', + }, + { + name: 'LinkedIn Send Failed', + value: 'linkedinSendFailed', + }, + { + name: 'LinkedIn Sent', + value: 'linkedinSent', + }, + { + name: 'LinkedIn Visit Done', + value: 'linkedinVisitDone', + }, + { + name: 'LinkedIn Visit Failed', + value: 'linkedinVisitFailed', + }, + { + name: 'LinkedIn Voice Note Done', + value: 'linkedinVoiceNoteDone', + }, + { + name: 'LinkedIn Voice Note Failed', + value: 'linkedinVoiceNoteFailed', + }, + { + name: 'Manual Interested', + value: 'manualInterested', + }, + { + name: 'Manual Not Interested', + value: 'manualNotInterested', + }, + { + name: 'Not Interested', + value: 'notInterested', + }, + { + name: 'Opportunities Done', + value: 'opportunitiesDone', + }, + { + name: 'Paused', + value: 'paused', + }, + { + name: 'Resumed', + value: 'resumed', + }, + { + name: 'Send Limit Reached', + value: 'sendLimitReached', + }, + { + name: 'Skipped', + value: 'skipped', + }, + { + name: 'Warmed', + value: 'warmed', + }, + ], + }, + { + displayName: 'Version', + name: 'version', + type: 'string', + default: 'v2', + }, + ], + }, +]; diff --git a/packages/nodes-base/nodes/Lemlist/v2/descriptions/CampaignDescription.ts b/packages/nodes-base/nodes/Lemlist/v2/descriptions/CampaignDescription.ts new file mode 100644 index 0000000000..cb2c497b56 --- /dev/null +++ b/packages/nodes-base/nodes/Lemlist/v2/descriptions/CampaignDescription.ts @@ -0,0 +1,149 @@ +import type { INodeProperties } from 'n8n-workflow'; + +export const campaignOperations: INodeProperties[] = [ + { + displayName: 'Operation', + name: 'operation', + type: 'options', + noDataExpression: true, + default: 'getAll', + options: [ + { + name: 'Get Many', + value: 'getAll', + action: 'Get many campaigns', + }, + { + name: 'Get Stats', + value: 'getStats', + action: 'Get campaign stats', + }, + ], + displayOptions: { + show: { + resource: ['campaign'], + }, + }, + }, +]; + +export const campaignFields: INodeProperties[] = [ + // ---------------------------------- + // campaign: getAll + // ---------------------------------- + { + displayName: 'Return All', + name: 'returnAll', + type: 'boolean', + default: false, + description: 'Whether to return all results or only up to a given limit', + displayOptions: { + show: { + resource: ['campaign'], + operation: ['getAll'], + }, + }, + }, + { + displayName: 'Limit', + name: 'limit', + type: 'number', + default: 5, + description: 'Max number of results to return', + typeOptions: { + minValue: 1, + maxValue: 1000, + }, + displayOptions: { + show: { + resource: ['campaign'], + operation: ['getAll'], + returnAll: [false], + }, + }, + }, + { + displayName: 'Filters', + name: 'filters', + type: 'collection', + placeholder: 'Add Filter', + default: {}, + displayOptions: { + show: { + resource: ['campaign'], + operation: ['getAll'], + }, + }, + options: [ + { + displayName: 'Version', + name: 'version', + type: 'string', + default: 'v2', + }, + ], + }, + // ---------------------------------- + // campaign: getStats + // ---------------------------------- + { + displayName: 'Campaign Name or ID', + name: 'campaignId', + type: 'options', + required: true, + default: [], + typeOptions: { + loadOptionsMethod: 'getCampaigns', + }, + description: + 'ID of the campaign to get stats for. Choose from the list, or specify an ID using an expression.', + displayOptions: { + show: { + resource: ['campaign'], + operation: ['getStats'], + }, + }, + }, + { + displayName: 'Start Date', + name: 'startDate', + type: 'dateTime', + default: '', + required: true, + placeholder: 'e.g. 2024-09-03 00:00:00Z', + displayOptions: { + show: { + resource: ['campaign'], + operation: ['getStats'], + }, + }, + }, + { + displayName: 'End Date', + name: 'endDate', + type: 'dateTime', + default: '', + placeholder: 'e.g. 2024-09-03 00:00:00Z', + required: true, + displayOptions: { + show: { + resource: ['campaign'], + operation: ['getStats'], + }, + }, + }, + { + displayName: 'Timezone', + name: 'timezone', + type: 'string', + default: '', + required: true, + placeholder: 'e.g. Europe/Paris', + displayOptions: { + show: { + resource: ['campaign'], + operation: ['getStats'], + }, + }, + }, +]; diff --git a/packages/nodes-base/nodes/Lemlist/v2/descriptions/EnrichmentDescription.ts b/packages/nodes-base/nodes/Lemlist/v2/descriptions/EnrichmentDescription.ts new file mode 100644 index 0000000000..1649699f00 --- /dev/null +++ b/packages/nodes-base/nodes/Lemlist/v2/descriptions/EnrichmentDescription.ts @@ -0,0 +1,172 @@ +import type { INodeProperties } from 'n8n-workflow'; + +export const enrichmentOperations: INodeProperties[] = [ + { + displayName: 'Operation', + name: 'operation', + type: 'options', + noDataExpression: true, + default: 'get', + options: [ + { + name: 'Get', + value: 'get', + action: 'Fetches a previously completed enrichment', + }, + { + name: 'Enrich Lead', + value: 'enrichLead', + action: 'Enrich a lead using an email or LinkedIn URL', + }, + { + name: 'Enrich Person', + value: 'enrichPerson', + action: 'Enrich a person using an email or LinkedIn URL', + }, + ], + displayOptions: { + show: { + resource: ['enrich'], + }, + }, + }, +]; + +export const enrichmentFields: INodeProperties[] = [ + // ---------------------------------- + // enrichment: get + // ---------------------------------- + { + displayName: 'Enrichment ID', + name: 'enrichId', + type: 'string', + default: '', + required: true, + description: 'ID of the enrichment to retrieve', + displayOptions: { + show: { + resource: ['enrich'], + operation: ['get'], + }, + }, + }, + // ---------------------------------- + // enrichment: enrichLead + // ---------------------------------- + { + displayName: 'Lead ID', + name: 'leadId', + type: 'string', + default: '', + required: true, + displayOptions: { + show: { + resource: ['enrich'], + operation: ['enrichLead'], + }, + }, + }, + { + displayName: 'Find Email', + name: 'findEmail', + type: 'boolean', + default: false, + displayOptions: { + show: { + resource: ['enrich'], + operation: ['enrichLead', 'enrichPerson'], + }, + }, + }, + { + displayName: 'Verify Email', + name: 'verifyEmail', + type: 'boolean', + default: false, + displayOptions: { + show: { + resource: ['enrich'], + operation: ['enrichLead', 'enrichPerson'], + }, + }, + }, + { + displayName: 'LinkedIn Enrichment', + name: 'linkedinEnrichment', + type: 'boolean', + default: false, + displayOptions: { + show: { + resource: ['enrich'], + operation: ['enrichLead', 'enrichPerson'], + }, + }, + }, + { + displayName: 'Find Phone', + name: 'findPhone', + type: 'boolean', + default: false, + displayOptions: { + show: { + resource: ['enrich'], + operation: ['enrichLead', 'enrichPerson'], + }, + }, + }, + // ---------------------------------- + // enrichment: enrichPerson + // ---------------------------------- + { + displayName: 'Additional Fields', + name: 'additionalFields', + type: 'collection', + placeholder: 'Add Field', + default: {}, + displayOptions: { + show: { + resource: ['enrich'], + operation: ['enrichPerson'], + }, + }, + options: [ + { + displayName: 'Email', + name: 'email', + type: 'string', + placeholder: 'name@email.com', + default: '', + }, + { + displayName: 'First Name', + name: 'firstName', + type: 'string', + default: '', + }, + { + displayName: 'Last Name', + name: 'lastName', + type: 'string', + default: '', + }, + { + displayName: 'LinkedIn Url', + name: 'linkedinUrl', + type: 'string', + default: '', + }, + { + displayName: 'Company Name', + name: 'companyName', + type: 'string', + default: '', + }, + { + displayName: 'Company Domain', + name: 'companyDomain', + type: 'string', + default: '', + }, + ], + }, +]; diff --git a/packages/nodes-base/nodes/Lemlist/v2/descriptions/LeadDescription.ts b/packages/nodes-base/nodes/Lemlist/v2/descriptions/LeadDescription.ts new file mode 100644 index 0000000000..432b82d455 --- /dev/null +++ b/packages/nodes-base/nodes/Lemlist/v2/descriptions/LeadDescription.ts @@ -0,0 +1,281 @@ +import type { INodeProperties } from 'n8n-workflow'; + +export const leadOperations: INodeProperties[] = [ + { + displayName: 'Operation', + name: 'operation', + type: 'options', + noDataExpression: true, + default: 'create', + options: [ + { + name: 'Create', + value: 'create', + action: 'Create a lead', + }, + { + name: 'Delete', + value: 'delete', + action: 'Delete a lead', + }, + { + name: 'Get', + value: 'get', + action: 'Get a lead', + }, + { + name: 'Unsubscribe', + value: 'unsubscribe', + action: 'Unsubscribe a lead', + }, + ], + displayOptions: { + show: { + resource: ['lead'], + }, + }, + }, +]; + +export const leadFields: INodeProperties[] = [ + // ---------------------------------- + // lead: create + // ---------------------------------- + { + displayName: 'Campaign Name or ID', + name: 'campaignId', + type: 'options', + required: true, + default: [], + typeOptions: { + loadOptionsMethod: 'getCampaigns', + }, + description: + 'ID of the campaign to create the lead under. Choose from the list, or specify an ID using an expression.', + displayOptions: { + show: { + resource: ['lead'], + operation: ['create'], + }, + }, + }, + { + displayName: 'Email', + name: 'email', + type: 'string', + placeholder: 'name@email.com', + default: '', + description: 'Email of the lead to create', + displayOptions: { + show: { + resource: ['lead'], + operation: ['create'], + }, + }, + }, + { + displayName: 'Additional Fields', + name: 'additionalFields', + type: 'collection', + placeholder: 'Add Field', + default: {}, + displayOptions: { + show: { + resource: ['lead'], + operation: ['create'], + }, + }, + options: [ + { + displayName: 'Company Name', + name: 'companyName', + type: 'string', + default: '', + description: 'Company name of the lead to create', + }, + { + displayName: 'Company Domain', + name: 'companyDomain', + type: 'string', + default: '', + description: 'Company domain of the lead to create', + }, + { + displayName: 'Deduplicate', + name: 'deduplicate', + type: 'boolean', + default: false, + description: + 'Whether to do not insert if this email is already present in another campaign', + }, + { + displayName: 'Find Email', + name: 'findEmail', + type: 'boolean', + default: false, + description: 'Whether to find verified email', + }, + { + displayName: 'Find Phone', + name: 'findPhone', + type: 'boolean', + default: false, + description: 'Whether to find phone number', + }, + { + displayName: 'First Name', + name: 'firstName', + type: 'string', + default: '', + description: 'First name of the lead to create', + }, + { + displayName: 'Icebreaker', + name: 'icebreaker', + type: 'string', + default: '', + description: 'Icebreaker of the lead to create', + }, + { + displayName: 'Job Title', + name: 'jobTitle', + type: 'string', + default: '', + description: 'Job title of the lead to create', + }, + { + displayName: 'Last Name', + name: 'lastName', + type: 'string', + default: '', + description: 'Last name of the lead to create', + }, + { + displayName: 'LinkedIn Enrichment', + name: 'linkedinEnrichment', + type: 'boolean', + default: false, + description: 'Whether to run the LinkedIn enrichment', + }, + + { + displayName: 'LinkedIn URL', + name: 'linkedinUrl', + type: 'string', + default: '', + description: 'LinkedIn URL of the lead to create', + }, + { + displayName: 'Phone', + name: 'phone', + type: 'string', + default: '', + description: 'Phone number of the lead to create', + }, + { + displayName: 'Picture URL', + name: 'picture', + type: 'string', + default: '', + description: 'Picture URL of the lead to create', + }, + { + displayName: 'Verify Email', + name: 'verifyEmail', + type: 'boolean', + default: false, + description: 'Whether to verify existing email (debounce)', + }, + ], + }, + + // ---------------------------------- + // lead: delete + // ---------------------------------- + { + displayName: 'Campaign Name or ID', + name: 'campaignId', + type: 'options', + required: true, + default: [], + typeOptions: { + loadOptionsMethod: 'getCampaigns', + }, + description: + 'ID of the campaign to remove the lead from. Choose from the list, or specify an ID using an expression.', + displayOptions: { + show: { + resource: ['lead'], + operation: ['delete'], + }, + }, + }, + { + displayName: 'Email', + name: 'email', + type: 'string', + placeholder: 'name@email.com', + default: '', + description: 'Email of the lead to delete', + displayOptions: { + show: { + resource: ['lead'], + operation: ['delete'], + }, + }, + }, + + // ---------------------------------- + // lead: get + // ---------------------------------- + { + displayName: 'Email', + name: 'email', + type: 'string', + placeholder: 'name@email.com', + default: '', + description: 'Email of the lead to retrieve', + displayOptions: { + show: { + resource: ['lead'], + operation: ['get'], + }, + }, + }, + + // ---------------------------------- + // lead: unsubscribe + // ---------------------------------- + { + displayName: 'Campaign Name or ID', + name: 'campaignId', + type: 'options', + required: true, + default: [], + typeOptions: { + loadOptionsMethod: 'getCampaigns', + }, + description: + 'ID of the campaign to unsubscribe the lead from. Choose from the list, or specify an ID using an expression.', + displayOptions: { + show: { + resource: ['lead'], + operation: ['unsubscribe'], + }, + }, + }, + { + displayName: 'Email', + name: 'email', + type: 'string', + placeholder: 'name@email.com', + default: '', + description: 'Email of the lead to unsubscribe', + displayOptions: { + show: { + resource: ['lead'], + operation: ['unsubscribe'], + }, + }, + }, +]; diff --git a/packages/nodes-base/nodes/Lemlist/v2/descriptions/TeamDescription.ts b/packages/nodes-base/nodes/Lemlist/v2/descriptions/TeamDescription.ts new file mode 100644 index 0000000000..66a7baa5e6 --- /dev/null +++ b/packages/nodes-base/nodes/Lemlist/v2/descriptions/TeamDescription.ts @@ -0,0 +1,34 @@ +import type { INodeProperties } from 'n8n-workflow'; + +export const teamOperations: INodeProperties[] = [ + { + displayName: 'Operation', + name: 'operation', + type: 'options', + noDataExpression: true, + default: 'get', + options: [ + { + name: 'Get', + value: 'get', + action: 'Get a team', + }, + { + name: 'Get Credits', + value: 'getCredits', + action: 'Get team credits', + }, + ], + displayOptions: { + show: { + resource: ['team'], + }, + }, + }, +]; + +export const teamFields: INodeProperties[] = [ + // ---------------------------------- + // team: get + // ---------------------------------- +]; diff --git a/packages/nodes-base/nodes/Lemlist/v2/descriptions/UnsubscribeDescription.ts b/packages/nodes-base/nodes/Lemlist/v2/descriptions/UnsubscribeDescription.ts new file mode 100644 index 0000000000..fc87c69d1d --- /dev/null +++ b/packages/nodes-base/nodes/Lemlist/v2/descriptions/UnsubscribeDescription.ts @@ -0,0 +1,106 @@ +import type { INodeProperties } from 'n8n-workflow'; + +export const unsubscribeOperations: INodeProperties[] = [ + { + displayName: 'Operation', + name: 'operation', + type: 'options', + noDataExpression: true, + default: 'add', + options: [ + { + name: 'Add', + value: 'add', + action: 'Add an email to an unsubscribe list', + }, + { + name: 'Delete', + value: 'delete', + action: 'Delete an email from an unsubscribe list', + }, + { + name: 'Get Many', + value: 'getAll', + action: 'Get many unsubscribed emails', + }, + ], + displayOptions: { + show: { + resource: ['unsubscribe'], + }, + }, + }, +]; + +export const unsubscribeFields: INodeProperties[] = [ + // ---------------------------------- + // unsubscribe: add + // ---------------------------------- + { + displayName: 'Email', + name: 'email', + type: 'string', + placeholder: 'name@email.com', + default: '', + description: 'Email to add to the unsubscribes', + displayOptions: { + show: { + resource: ['unsubscribe'], + operation: ['add'], + }, + }, + }, + + // ---------------------------------- + // unsubscribe: delete + // ---------------------------------- + { + displayName: 'Email', + name: 'email', + type: 'string', + placeholder: 'name@email.com', + default: '', + description: 'Email to delete from the unsubscribes', + displayOptions: { + show: { + resource: ['unsubscribe'], + operation: ['delete'], + }, + }, + }, + + // ---------------------------------- + // unsubscribe: getAll + // ---------------------------------- + { + displayName: 'Return All', + name: 'returnAll', + type: 'boolean', + default: false, + description: 'Whether to return all results or only up to a given limit', + displayOptions: { + show: { + resource: ['unsubscribe'], + operation: ['getAll'], + }, + }, + }, + { + displayName: 'Limit', + name: 'limit', + type: 'number', + default: 5, + description: 'Max number of results to return', + typeOptions: { + minValue: 1, + maxValue: 1000, + }, + displayOptions: { + show: { + resource: ['unsubscribe'], + operation: ['getAll'], + returnAll: [false], + }, + }, + }, +]; diff --git a/packages/nodes-base/nodes/Lemlist/v2/descriptions/index.ts b/packages/nodes-base/nodes/Lemlist/v2/descriptions/index.ts new file mode 100644 index 0000000000..42ccef0ec6 --- /dev/null +++ b/packages/nodes-base/nodes/Lemlist/v2/descriptions/index.ts @@ -0,0 +1,6 @@ +export * from './ActivityDescription'; +export * from './CampaignDescription'; +export * from './EnrichmentDescription'; +export * from './LeadDescription'; +export * from './TeamDescription'; +export * from './UnsubscribeDescription'; diff --git a/packages/nodes-base/nodes/Line/Line.node.json b/packages/nodes-base/nodes/Line/Line.node.json index 16065ab5cf..38cdc836aa 100644 --- a/packages/nodes-base/nodes/Line/Line.node.json +++ b/packages/nodes-base/nodes/Line/Line.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/line" + "url": "https://docs.n8n.io/integrations/builtin/credentials/line/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Line/Line.node.ts b/packages/nodes-base/nodes/Line/Line.node.ts index 4756fd0d4b..f8cd832aa5 100644 --- a/packages/nodes-base/nodes/Line/Line.node.ts +++ b/packages/nodes-base/nodes/Line/Line.node.ts @@ -5,6 +5,7 @@ import type { INodeType, INodeTypeDescription, } from 'n8n-workflow'; +import { NodeConnectionType } from 'n8n-workflow'; import { lineApiRequest } from './GenericFunctions'; @@ -23,8 +24,8 @@ export class Line implements INodeType { defaults: { name: 'Line', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'lineNotifyOAuth2Api', @@ -37,6 +38,13 @@ export class Line implements INodeType { }, ], properties: [ + { + displayName: + 'End of service: LINE Notify will be discontinued from April 1st 2025, You can find more information here', + name: 'notice', + type: 'notice', + default: '', + }, { displayName: 'Resource', name: 'resource', @@ -128,7 +136,7 @@ export class Line implements INodeType { returnData.push(...executionData); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { const executionErrorData = this.helpers.constructExecutionMetaData( this.helpers.returnJsonArray({ error: error.message }), { itemData: { item: i } }, diff --git a/packages/nodes-base/nodes/Linear/IssueDescription.ts b/packages/nodes-base/nodes/Linear/IssueDescription.ts index 207bfd6028..5b0eb94b0c 100644 --- a/packages/nodes-base/nodes/Linear/IssueDescription.ts +++ b/packages/nodes-base/nodes/Linear/IssueDescription.ts @@ -56,7 +56,7 @@ export const issueFields: INodeProperties[] = [ name: 'teamId', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', required: true, displayOptions: { show: { @@ -100,7 +100,7 @@ export const issueFields: INodeProperties[] = [ name: 'assigneeId', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getUsers', }, @@ -145,7 +145,7 @@ export const issueFields: INodeProperties[] = [ name: 'stateId', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getStates', }, @@ -236,7 +236,7 @@ export const issueFields: INodeProperties[] = [ name: 'assigneeId', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getUsers', }, @@ -282,7 +282,7 @@ export const issueFields: INodeProperties[] = [ name: 'stateId', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getStates', }, @@ -293,7 +293,7 @@ export const issueFields: INodeProperties[] = [ name: 'teamId', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getTeams', }, diff --git a/packages/nodes-base/nodes/Linear/Linear.node.json b/packages/nodes-base/nodes/Linear/Linear.node.json index 47e5494258..1811f99efd 100644 --- a/packages/nodes-base/nodes/Linear/Linear.node.json +++ b/packages/nodes-base/nodes/Linear/Linear.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/linear/" + "url": "https://docs.n8n.io/integrations/builtin/credentials/linear/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Linear/Linear.node.ts b/packages/nodes-base/nodes/Linear/Linear.node.ts index 5852ce150e..7ea6f2aca5 100644 --- a/packages/nodes-base/nodes/Linear/Linear.node.ts +++ b/packages/nodes-base/nodes/Linear/Linear.node.ts @@ -1,16 +1,17 @@ -import type { - IExecuteFunctions, - ICredentialDataDecryptedObject, - ICredentialsDecrypted, - ICredentialTestFunctions, - IDataObject, - ILoadOptionsFunctions, - INodeCredentialTestResult, - INodeExecutionData, - INodePropertyOptions, - INodeType, - INodeTypeDescription, - JsonObject, +import { + type IExecuteFunctions, + type ICredentialDataDecryptedObject, + type ICredentialsDecrypted, + type ICredentialTestFunctions, + type IDataObject, + type ILoadOptionsFunctions, + type INodeCredentialTestResult, + type INodeExecutionData, + type INodePropertyOptions, + type INodeType, + type INodeTypeDescription, + type JsonObject, + NodeConnectionType, } from 'n8n-workflow'; import { @@ -39,8 +40,8 @@ export class Linear implements INodeType { defaults: { name: 'Linear', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'linearApi', @@ -298,7 +299,7 @@ export class Linear implements INodeType { returnData.push(...executionData); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { const executionErrorData = this.helpers.constructExecutionMetaData( this.helpers.returnJsonArray({ error: error.message }), { itemData: { item: i } }, diff --git a/packages/nodes-base/nodes/Linear/LinearTrigger.node.json b/packages/nodes-base/nodes/Linear/LinearTrigger.node.json index 15e509889e..3749529558 100644 --- a/packages/nodes-base/nodes/Linear/LinearTrigger.node.json +++ b/packages/nodes-base/nodes/Linear/LinearTrigger.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/linear/" + "url": "https://docs.n8n.io/integrations/builtin/credentials/linear/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Linear/LinearTrigger.node.ts b/packages/nodes-base/nodes/Linear/LinearTrigger.node.ts index 643f6b70b8..ea95e4879e 100644 --- a/packages/nodes-base/nodes/Linear/LinearTrigger.node.ts +++ b/packages/nodes-base/nodes/Linear/LinearTrigger.node.ts @@ -1,11 +1,12 @@ -import type { - IHookFunctions, - IWebhookFunctions, - ILoadOptionsFunctions, - INodePropertyOptions, - INodeType, - INodeTypeDescription, - IWebhookResponseData, +import { + type IHookFunctions, + type IWebhookFunctions, + type ILoadOptionsFunctions, + type INodePropertyOptions, + type INodeType, + type INodeTypeDescription, + type IWebhookResponseData, + NodeConnectionType, } from 'n8n-workflow'; import { capitalizeFirstLetter, linearApiRequest } from './GenericFunctions'; @@ -23,7 +24,7 @@ export class LinearTrigger implements INodeType { name: 'Linear Trigger', }, inputs: [], - outputs: ['main'], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'linearApi', @@ -75,7 +76,7 @@ export class LinearTrigger implements INodeType { name: 'teamId', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getTeams', }, diff --git a/packages/nodes-base/nodes/LingvaNex/ActivityDescription.ts b/packages/nodes-base/nodes/LingvaNex/ActivityDescription.ts index b37055b14e..7bbb8a4a7a 100644 --- a/packages/nodes-base/nodes/LingvaNex/ActivityDescription.ts +++ b/packages/nodes-base/nodes/LingvaNex/ActivityDescription.ts @@ -38,7 +38,7 @@ export const activityFields: INodeProperties[] = [ name: 'workspaceId', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getWorkspaces', }, @@ -99,7 +99,7 @@ export const activityFields: INodeProperties[] = [ }, default: '', description: - 'A user-defined way to group activities of the same nature. Choose from the list, or specify an ID using an expression.', + 'A user-defined way to group activities of the same nature. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Description', @@ -147,7 +147,7 @@ export const activityFields: INodeProperties[] = [ name: 'workspaceId', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getWorkspaces', }, diff --git a/packages/nodes-base/nodes/LingvaNex/LingvaNex.node.json b/packages/nodes-base/nodes/LingvaNex/LingvaNex.node.json index d62c9d15bb..dec352f944 100644 --- a/packages/nodes-base/nodes/LingvaNex/LingvaNex.node.json +++ b/packages/nodes-base/nodes/LingvaNex/LingvaNex.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/lingvaNex" + "url": "https://docs.n8n.io/integrations/builtin/credentials/lingvaNex/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/LingvaNex/LingvaNex.node.ts b/packages/nodes-base/nodes/LingvaNex/LingvaNex.node.ts index fd1f03b120..db82cec6f0 100644 --- a/packages/nodes-base/nodes/LingvaNex/LingvaNex.node.ts +++ b/packages/nodes-base/nodes/LingvaNex/LingvaNex.node.ts @@ -7,6 +7,7 @@ import type { INodeType, INodeTypeDescription, } from 'n8n-workflow'; +import { NodeConnectionType } from 'n8n-workflow'; import { lingvaNexApiRequest } from './GenericFunctions'; @@ -23,8 +24,8 @@ export class LingvaNex implements INodeType { defaults: { name: 'LingvaNex', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'lingvaNexApi', @@ -73,7 +74,7 @@ export class LingvaNex implements INodeType { }, default: '', description: - 'The language to use for translation of the input text, set to one of the language codes listed in Language Support. Choose from the list, or specify an ID using an expression.', + 'The language to use for translation of the input text, set to one of the language codes listed in Language Support. Choose from the list, or specify an ID using an expression.', required: true, displayOptions: { show: { @@ -85,7 +86,7 @@ export class LingvaNex implements INodeType { displayName: 'Additional Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, displayOptions: { show: { @@ -103,7 +104,7 @@ export class LingvaNex implements INodeType { }, default: '', description: - 'The language code in the format “language code_code of the country”. If this parameter is not present, the auto-detect language mode is enabled. Choose from the list, or specify an ID using an expression.', + 'The language code in the format “language code_code of the country”. If this parameter is not present, the auto-detect language mode is enabled. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Platform', diff --git a/packages/nodes-base/nodes/LinkedIn/LinkedIn.node.json b/packages/nodes-base/nodes/LinkedIn/LinkedIn.node.json index 01509a97af..885e2ca6f5 100644 --- a/packages/nodes-base/nodes/LinkedIn/LinkedIn.node.json +++ b/packages/nodes-base/nodes/LinkedIn/LinkedIn.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/linkedIn" + "url": "https://docs.n8n.io/integrations/builtin/credentials/linkedIn/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/LinkedIn/LinkedIn.node.ts b/packages/nodes-base/nodes/LinkedIn/LinkedIn.node.ts index c434cd2372..9732176da9 100644 --- a/packages/nodes-base/nodes/LinkedIn/LinkedIn.node.ts +++ b/packages/nodes-base/nodes/LinkedIn/LinkedIn.node.ts @@ -7,6 +7,7 @@ import type { INodeType, INodeTypeDescription, } from 'n8n-workflow'; +import { NodeConnectionType } from 'n8n-workflow'; import { linkedInApiRequest } from './GenericFunctions'; import { postFields, postOperations } from './PostDescription'; @@ -22,8 +23,8 @@ export class LinkedIn implements INodeType { defaults: { name: 'LinkedIn', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'linkedInOAuth2Api', @@ -86,7 +87,7 @@ export class LinkedIn implements INodeType { // https://docs.microsoft.com/en-us/linkedin/consumer/integrations/self-serve/sign-in-with-linkedin async getPersonUrn(this: ILoadOptionsFunctions): Promise { const authentication = this.getNodeParameter('authentication', 0); - let endpoint = '/me'; + let endpoint = '/v2/me'; if (authentication === 'standard') { const { legacy } = await this.getCredentials('linkedInOAuth2Api'); if (!legacy) { @@ -121,11 +122,14 @@ export class LinkedIn implements INodeType { try { if (resource === 'post') { if (operation === 'create') { - const text = this.getNodeParameter('text', i) as string; + let text = this.getNodeParameter('text', i) as string; const shareMediaCategory = this.getNodeParameter('shareMediaCategory', i) as string; const postAs = this.getNodeParameter('postAs', i) as string; const additionalFields = this.getNodeParameter('additionalFields', i); + // LinkedIn uses "little text" https://learn.microsoft.com/en-us/linkedin/marketing/community-management/shares/little-text-format?view=li-lms-2024-06 + text = text.replace(/[\(*\)\[\]\{\}<>@|~_]/gm, (char) => '\\' + char); + let authorUrn = ''; let visibility = 'PUBLIC'; @@ -264,7 +268,9 @@ export class LinkedIn implements INodeType { delete body.title; } } else { - Object.assign(body, { commentary: text }); + Object.assign(body, { + commentary: text, + }); } const endpoint = '/posts'; responseData = await linkedInApiRequest.call(this, 'POST', endpoint, body); @@ -276,7 +282,7 @@ export class LinkedIn implements INodeType { ); returnData.push(...executionData); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { const executionData = this.helpers.constructExecutionMetaData( this.helpers.returnJsonArray({ error: error.message }), { itemData: { item: i } }, diff --git a/packages/nodes-base/nodes/LinkedIn/PostDescription.ts b/packages/nodes-base/nodes/LinkedIn/PostDescription.ts index 8f2512f09f..04aa28ea6e 100644 --- a/packages/nodes-base/nodes/LinkedIn/PostDescription.ts +++ b/packages/nodes-base/nodes/LinkedIn/PostDescription.ts @@ -54,7 +54,7 @@ export const postFields: INodeProperties[] = [ default: '', required: true, description: - 'Person as which the post should be posted as. Choose from the list, or specify an ID using an expression.', + 'Person as which the post should be posted as. Choose from the list, or specify an ID using an expression.', displayOptions: { show: { operation: ['create'], diff --git a/packages/nodes-base/nodes/LocalFileTrigger/LocalFileTrigger.node.ts b/packages/nodes-base/nodes/LocalFileTrigger/LocalFileTrigger.node.ts index fa8322a73c..d01bc1ba1a 100644 --- a/packages/nodes-base/nodes/LocalFileTrigger/LocalFileTrigger.node.ts +++ b/packages/nodes-base/nodes/LocalFileTrigger/LocalFileTrigger.node.ts @@ -1,9 +1,10 @@ -import type { - ITriggerFunctions, - IDataObject, - INodeType, - INodeTypeDescription, - ITriggerResponse, +import { + type ITriggerFunctions, + type IDataObject, + type INodeType, + type INodeTypeDescription, + type ITriggerResponse, + NodeConnectionType, } from 'n8n-workflow'; import { watch } from 'chokidar'; @@ -35,7 +36,7 @@ export class LocalFileTrigger implements INodeType { "Once you’ve finished building your workflow, activate it to have it also listen continuously (you just won’t see those executions here).", }, inputs: [], - outputs: ['main'], + outputs: [NodeConnectionType.Main], properties: [ { displayName: 'Trigger On', @@ -123,7 +124,7 @@ export class LocalFileTrigger implements INodeType { displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, options: [ { @@ -220,7 +221,7 @@ export class LocalFileTrigger implements INodeType { } const watcher = watch(path, { - ignored: options.ignored === '' ? undefined : options.ignored, + ignored: options.ignored === '' ? undefined : (options.ignored as string), persistent: true, ignoreInitial: options.ignoreInitial === undefined ? true : (options.ignoreInitial as boolean), diff --git a/packages/nodes-base/nodes/LoneScale/LoneScale.node.json b/packages/nodes-base/nodes/LoneScale/LoneScale.node.json index 06cc5f1531..4bcae80514 100644 --- a/packages/nodes-base/nodes/LoneScale/LoneScale.node.json +++ b/packages/nodes-base/nodes/LoneScale/LoneScale.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/lonescale" + "url": "https://docs.n8n.io/integrations/builtin/credentials/lonescale/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/LoneScale/LoneScale.node.ts b/packages/nodes-base/nodes/LoneScale/LoneScale.node.ts index 3f0a78e70b..acce979a97 100644 --- a/packages/nodes-base/nodes/LoneScale/LoneScale.node.ts +++ b/packages/nodes-base/nodes/LoneScale/LoneScale.node.ts @@ -7,6 +7,7 @@ import type { INodeType, INodeTypeDescription, } from 'n8n-workflow'; +import { NodeConnectionType } from 'n8n-workflow'; import { lonescaleApiRequest } from './GenericFunctions'; @@ -22,8 +23,8 @@ export class LoneScale implements INodeType { defaults: { name: 'LoneScale', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'loneScaleApi', @@ -133,7 +134,7 @@ export class LoneScale implements INodeType { }, default: '', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', required: true, }, { @@ -465,7 +466,7 @@ export class LoneScale implements INodeType { } } } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { const executionData = this.helpers.constructExecutionMetaData( this.helpers.returnJsonArray({ error: error.message }), { itemData: { item: i } }, diff --git a/packages/nodes-base/nodes/LoneScale/LoneScaleTrigger.node.json b/packages/nodes-base/nodes/LoneScale/LoneScaleTrigger.node.json index 1870fed507..f4dbcbf856 100644 --- a/packages/nodes-base/nodes/LoneScale/LoneScaleTrigger.node.json +++ b/packages/nodes-base/nodes/LoneScale/LoneScaleTrigger.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/lonescale" + "url": "https://docs.n8n.io/integrations/builtin/credentials/lonescale/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/LoneScale/LoneScaleTrigger.node.ts b/packages/nodes-base/nodes/LoneScale/LoneScaleTrigger.node.ts index 905d887109..2c5fe1d640 100644 --- a/packages/nodes-base/nodes/LoneScale/LoneScaleTrigger.node.ts +++ b/packages/nodes-base/nodes/LoneScale/LoneScaleTrigger.node.ts @@ -1,12 +1,13 @@ -import type { - IDataObject, - IHookFunctions, - ILoadOptionsFunctions, - INodePropertyOptions, - INodeType, - INodeTypeDescription, - IWebhookFunctions, - IWebhookResponseData, +import { + NodeConnectionType, + type IDataObject, + type IHookFunctions, + type ILoadOptionsFunctions, + type INodePropertyOptions, + type INodeType, + type INodeTypeDescription, + type IWebhookFunctions, + type IWebhookResponseData, } from 'n8n-workflow'; import { lonescaleApiRequest } from './GenericFunctions'; @@ -23,7 +24,7 @@ export class LoneScaleTrigger implements INodeType { name: 'LoneScale Trigger', }, inputs: [], - outputs: ['main'], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'loneScaleApi', diff --git a/packages/nodes-base/nodes/MQTT/GenericFunctions.ts b/packages/nodes-base/nodes/MQTT/GenericFunctions.ts index 2500af2a16..e3deaba923 100644 --- a/packages/nodes-base/nodes/MQTT/GenericFunctions.ts +++ b/packages/nodes-base/nodes/MQTT/GenericFunctions.ts @@ -1,5 +1,6 @@ -import { connectAsync, type IClientOptions, type MqttClient } from 'mqtt'; -import { randomString } from 'n8n-workflow'; +import { connect, type IClientOptions, type MqttClient } from 'mqtt'; +import { ApplicationError, randomString } from 'n8n-workflow'; + import { formatPrivateKey } from '@utils/utilities'; interface BaseMqttCredential { @@ -49,5 +50,27 @@ export const createClient = async (credentials: MqttCredential): Promise { + const client = connect(clientOptions); + + const onConnect = () => { + client.removeListener('connect', onConnect); + // eslint-disable-next-line @typescript-eslint/no-use-before-define + client.removeListener('error', onError); + resolve(client); + }; + + const onError = (error: Error) => { + client.removeListener('connect', onConnect); + client.removeListener('error', onError); + // mqtt client has an automatic reconnect mechanism that will + // keep trying to reconnect until it succeeds unless we + // explicitly close the client + client.end(); + reject(new ApplicationError(error.message)); + }; + + client.once('connect', onConnect); + client.once('error', onError); + }); }; diff --git a/packages/nodes-base/nodes/MQTT/Mqtt.node.json b/packages/nodes-base/nodes/MQTT/Mqtt.node.json index c5ffe97609..564d4810bf 100644 --- a/packages/nodes-base/nodes/MQTT/Mqtt.node.json +++ b/packages/nodes-base/nodes/MQTT/Mqtt.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/mqtt" + "url": "https://docs.n8n.io/integrations/builtin/credentials/mqtt/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/MQTT/Mqtt.node.ts b/packages/nodes-base/nodes/MQTT/Mqtt.node.ts index 40674103b9..0ddc4ff924 100644 --- a/packages/nodes-base/nodes/MQTT/Mqtt.node.ts +++ b/packages/nodes-base/nodes/MQTT/Mqtt.node.ts @@ -1,12 +1,14 @@ import type { IClientPublishOptions } from 'mqtt'; -import type { - IExecuteFunctions, - ICredentialsDecrypted, - ICredentialTestFunctions, - INodeCredentialTestResult, - INodeExecutionData, - INodeType, - INodeTypeDescription, +import { + type IExecuteFunctions, + type ICredentialsDecrypted, + type ICredentialTestFunctions, + type INodeCredentialTestResult, + type INodeExecutionData, + type INodeType, + type INodeTypeDescription, + NodeConnectionType, + ensureError, } from 'n8n-workflow'; import { createClient, type MqttCredential } from './GenericFunctions'; @@ -24,8 +26,8 @@ export class Mqtt implements INodeType { defaults: { name: 'MQTT', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'mqtt', @@ -66,7 +68,7 @@ export class Mqtt implements INodeType { displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, options: [ { @@ -115,10 +117,12 @@ export class Mqtt implements INodeType { try { const client = await createClient(credentials); client.end(); - } catch (error) { + } catch (e) { + const error = ensureError(e); + return { status: 'Error', - message: (error as Error).message, + message: error.message, }; } return { @@ -130,7 +134,7 @@ export class Mqtt implements INodeType { }; async execute(this: IExecuteFunctions): Promise { - const credentials = (await this.getCredentials('mqtt')) as unknown as MqttCredential; + const credentials = await this.getCredentials('mqtt'); const client = await createClient(credentials); const publishPromises = []; diff --git a/packages/nodes-base/nodes/MQTT/MqttTrigger.node.json b/packages/nodes-base/nodes/MQTT/MqttTrigger.node.json index 265919ff61..b0d44ac576 100644 --- a/packages/nodes-base/nodes/MQTT/MqttTrigger.node.json +++ b/packages/nodes-base/nodes/MQTT/MqttTrigger.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/mqtt" + "url": "https://docs.n8n.io/integrations/builtin/credentials/mqtt/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/MQTT/MqttTrigger.node.ts b/packages/nodes-base/nodes/MQTT/MqttTrigger.node.ts index f88029c2b1..e9cea7412c 100644 --- a/packages/nodes-base/nodes/MQTT/MqttTrigger.node.ts +++ b/packages/nodes-base/nodes/MQTT/MqttTrigger.node.ts @@ -8,7 +8,7 @@ import type { ITriggerResponse, IRun, } from 'n8n-workflow'; -import { NodeOperationError } from 'n8n-workflow'; +import { NodeConnectionType, NodeOperationError } from 'n8n-workflow'; import { createClient, type MqttCredential } from './GenericFunctions'; @@ -42,7 +42,7 @@ export class MqttTrigger implements INodeType { "Once you’ve finished building your workflow, activate it to have it also listen continuously (you just won’t see those executions here).", }, inputs: [], - outputs: ['main'], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'mqtt', @@ -62,7 +62,7 @@ export class MqttTrigger implements INodeType { displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, options: [ { @@ -107,7 +107,7 @@ export class MqttTrigger implements INodeType { } const options = this.getNodeParameter('options') as Options; - const credentials = (await this.getCredentials('mqtt')) as unknown as MqttCredential; + const credentials = await this.getCredentials('mqtt'); const client = await createClient(credentials); const parsePayload = (topic: string, payload: Buffer) => { @@ -140,11 +140,11 @@ export class MqttTrigger implements INodeType { if (this.getMode() === 'trigger') { const donePromise = !options.parallelProcessing - ? await this.helpers.createDeferredPromise() + ? this.helpers.createDeferredPromise() : undefined; client.on('message', async (topic, payload) => { this.emit(parsePayload(topic, payload), undefined, donePromise); - await donePromise?.promise(); + await donePromise?.promise; }); await client.subscribeAsync(topicsQoS); } diff --git a/packages/nodes-base/nodes/MQTT/test/GenericFunctions.test.ts b/packages/nodes-base/nodes/MQTT/test/GenericFunctions.test.ts index 6d68777fe3..7b2a12ae40 100644 --- a/packages/nodes-base/nodes/MQTT/test/GenericFunctions.test.ts +++ b/packages/nodes-base/nodes/MQTT/test/GenericFunctions.test.ts @@ -1,19 +1,20 @@ -import { MqttClient } from 'mqtt'; import { mock } from 'jest-mock-extended'; +import { MqttClient } from 'mqtt'; +import { ApplicationError } from 'n8n-workflow'; import { createClient, type MqttCredential } from '../GenericFunctions'; describe('createClient', () => { - const mockConnect = jest.spyOn(MqttClient.prototype, 'connect').mockImplementation(function ( - this: MqttClient, - ) { - setImmediate(() => this.emit('connect', mock())); - return this; - }); - beforeEach(() => jest.clearAllMocks()); it('should create a client with minimal credentials', async () => { + const mockConnect = jest.spyOn(MqttClient.prototype, 'connect').mockImplementation(function ( + this: MqttClient, + ) { + setImmediate(() => this.emit('connect', mock())); + return this; + }); + const credentials = mock({ protocol: 'mqtt', host: 'localhost', @@ -35,4 +36,31 @@ describe('createClient', () => { clientId: 'testClient', }); }); + + it('should reject with ApplicationError on connection error and close connection', async () => { + const mockConnect = jest.spyOn(MqttClient.prototype, 'connect').mockImplementation(function ( + this: MqttClient, + ) { + setImmediate(() => this.emit('error', new Error('Connection failed'))); + return this; + }); + const mockEnd = jest.spyOn(MqttClient.prototype, 'end').mockImplementation(); + + const credentials: MqttCredential = { + protocol: 'mqtt', + host: 'localhost', + port: 1883, + clean: true, + clientId: 'testClientId', + username: 'testUser', + password: 'testPass', + ssl: false, + }; + + const clientPromise = createClient(credentials); + + await expect(clientPromise).rejects.toThrow(ApplicationError); + expect(mockConnect).toBeCalledTimes(1); + expect(mockEnd).toBeCalledTimes(1); + }); }); diff --git a/packages/nodes-base/nodes/Magento/CustomerDescription.ts b/packages/nodes-base/nodes/Magento/CustomerDescription.ts index 1ece2e9a97..d910a9f8d2 100644 --- a/packages/nodes-base/nodes/Magento/CustomerDescription.ts +++ b/packages/nodes-base/nodes/Magento/CustomerDescription.ts @@ -169,7 +169,7 @@ export const customerFields: INodeProperties[] = [ name: 'website_id', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', displayOptions: { show: { resource: ['customer'], diff --git a/packages/nodes-base/nodes/Magento/GenericFunctions.ts b/packages/nodes-base/nodes/Magento/GenericFunctions.ts index f4255a3194..2b83721b28 100644 --- a/packages/nodes-base/nodes/Magento/GenericFunctions.ts +++ b/packages/nodes-base/nodes/Magento/GenericFunctions.ts @@ -115,7 +115,7 @@ export function getAddressesUi(): INodeProperties { name: 'country_id', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getCountries', }, @@ -405,7 +405,7 @@ export function getSearchFilters( displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, displayOptions: { show: { @@ -555,7 +555,7 @@ export function getCustomerOptionalFields(): INodeProperties[] { name: 'attribute_code', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getCustomAttributes', }, @@ -614,7 +614,7 @@ export function getCustomerOptionalFields(): INodeProperties[] { name: 'group_id', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getGroups', }, @@ -650,7 +650,7 @@ export function getCustomerOptionalFields(): INodeProperties[] { name: 'store_id', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getStores', }, @@ -679,7 +679,7 @@ export function getCustomerOptionalFields(): INodeProperties[] { name: 'website_id', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', displayOptions: { show: { '/operation': ['create'], @@ -700,7 +700,7 @@ export function getProductOptionalFields(): INodeProperties[] { name: 'attribute_set_id', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', displayOptions: { show: { '/operation': ['update'], @@ -796,7 +796,7 @@ export function getProductOptionalFields(): INodeProperties[] { name: 'type_id', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getProductTypes', }, diff --git a/packages/nodes-base/nodes/Magento/Magento2.node.json b/packages/nodes-base/nodes/Magento/Magento2.node.json index 8c08d91ee9..f7f03a19b6 100644 --- a/packages/nodes-base/nodes/Magento/Magento2.node.json +++ b/packages/nodes-base/nodes/Magento/Magento2.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/magento2" + "url": "https://docs.n8n.io/integrations/builtin/credentials/magento2/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Magento/Magento2.node.ts b/packages/nodes-base/nodes/Magento/Magento2.node.ts index 286086cb08..0d7196eb75 100644 --- a/packages/nodes-base/nodes/Magento/Magento2.node.ts +++ b/packages/nodes-base/nodes/Magento/Magento2.node.ts @@ -7,7 +7,7 @@ import type { INodeType, INodeTypeDescription, } from 'n8n-workflow'; -import { NodeApiError } from 'n8n-workflow'; +import { NodeConnectionType, NodeApiError } from 'n8n-workflow'; import { capitalCase } from 'change-case'; import { @@ -50,8 +50,8 @@ export class Magento2 implements INodeType { defaults: { name: 'Magento 2', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'magento2Api', @@ -800,7 +800,7 @@ export class Magento2 implements INodeType { returnData.push(...executionData); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { const executionErrorData = this.helpers.constructExecutionMetaData( this.helpers.returnJsonArray({ error: error.message }), { itemData: { item: i } }, diff --git a/packages/nodes-base/nodes/Magento/ProductDescription.ts b/packages/nodes-base/nodes/Magento/ProductDescription.ts index 2c43e621e6..86553679ef 100644 --- a/packages/nodes-base/nodes/Magento/ProductDescription.ts +++ b/packages/nodes-base/nodes/Magento/ProductDescription.ts @@ -85,7 +85,7 @@ export const productFields: INodeProperties[] = [ name: 'attributeSetId', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', displayOptions: { show: { resource: ['product'], diff --git a/packages/nodes-base/nodes/Mailcheck/Mailcheck.node.json b/packages/nodes-base/nodes/Mailcheck/Mailcheck.node.json index 5c90a04db8..c6db1a38e7 100644 --- a/packages/nodes-base/nodes/Mailcheck/Mailcheck.node.json +++ b/packages/nodes-base/nodes/Mailcheck/Mailcheck.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/mailcheck" + "url": "https://docs.n8n.io/integrations/builtin/credentials/mailcheck/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Mailcheck/Mailcheck.node.ts b/packages/nodes-base/nodes/Mailcheck/Mailcheck.node.ts index 5278211bfd..2c5562dbc4 100644 --- a/packages/nodes-base/nodes/Mailcheck/Mailcheck.node.ts +++ b/packages/nodes-base/nodes/Mailcheck/Mailcheck.node.ts @@ -5,6 +5,7 @@ import type { INodeType, INodeTypeDescription, } from 'n8n-workflow'; +import { NodeConnectionType } from 'n8n-workflow'; import { mailCheckApiRequest } from './GenericFunctions'; @@ -20,8 +21,8 @@ export class Mailcheck implements INodeType { defaults: { name: 'Mailcheck', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'mailcheckApi', @@ -97,7 +98,7 @@ export class Mailcheck implements INodeType { } } } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push({ error: error.message }); continue; } diff --git a/packages/nodes-base/nodes/Mailchimp/Mailchimp.node.json b/packages/nodes-base/nodes/Mailchimp/Mailchimp.node.json index 9706e68aa6..11b2af25d1 100644 --- a/packages/nodes-base/nodes/Mailchimp/Mailchimp.node.json +++ b/packages/nodes-base/nodes/Mailchimp/Mailchimp.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/mailchimp" + "url": "https://docs.n8n.io/integrations/builtin/credentials/mailchimp/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Mailchimp/Mailchimp.node.ts b/packages/nodes-base/nodes/Mailchimp/Mailchimp.node.ts index dc8325d3ac..3c30d6c0d9 100644 --- a/packages/nodes-base/nodes/Mailchimp/Mailchimp.node.ts +++ b/packages/nodes-base/nodes/Mailchimp/Mailchimp.node.ts @@ -7,6 +7,7 @@ import type { INodeType, INodeTypeDescription, } from 'n8n-workflow'; +import { NodeConnectionType } from 'n8n-workflow'; import moment from 'moment-timezone'; import { @@ -58,8 +59,8 @@ export class Mailchimp implements INodeType { defaults: { name: 'Mailchimp', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'mailchimpApi', @@ -287,7 +288,7 @@ export class Mailchimp implements INodeType { options: [], required: true, description: - 'List of lists. Choose from the list, or specify an ID using an expression.', + 'List of lists. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Email', @@ -356,7 +357,7 @@ export class Mailchimp implements INodeType { displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, displayOptions: { show: { @@ -510,7 +511,7 @@ export class Mailchimp implements INodeType { }, required: true, description: - 'Merge Field name. Choose from the list, or specify an ID using an expression.', + 'Merge Field name. Choose from the list, or specify an ID using an expression.', default: '', }, { @@ -586,7 +587,7 @@ export class Mailchimp implements INodeType { name: 'categoryId', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getGroupCategories', loadOptionsDependsOn: ['list'], @@ -645,7 +646,7 @@ export class Mailchimp implements INodeType { options: [], required: true, description: - 'List of lists. Choose from the list, or specify an ID using an expression.', + 'List of lists. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Email', @@ -682,7 +683,7 @@ export class Mailchimp implements INodeType { options: [], required: true, description: - 'List of lists. Choose from the list, or specify an ID using an expression.', + 'List of lists. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Email', @@ -703,7 +704,7 @@ export class Mailchimp implements INodeType { displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, displayOptions: { show: { @@ -748,7 +749,7 @@ export class Mailchimp implements INodeType { options: [], required: true, description: - 'List of lists. Choose from the list, or specify an ID using an expression.', + 'List of lists. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Return All', @@ -785,7 +786,7 @@ export class Mailchimp implements INodeType { displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, displayOptions: { show: { @@ -899,7 +900,7 @@ export class Mailchimp implements INodeType { options: [], required: true, description: - 'List of lists. Choose from the list, or specify an ID using an expression.', + 'List of lists. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Email', @@ -987,7 +988,7 @@ export class Mailchimp implements INodeType { name: 'categoryId', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getGroupCategories', loadOptionsDependsOn: ['list'], @@ -1052,7 +1053,7 @@ export class Mailchimp implements INodeType { }, required: true, description: - 'Merge Field name. Choose from the list, or specify an ID using an expression.', + 'Merge Field name. Choose from the list, or specify an ID using an expression.', default: '', }, { @@ -1251,7 +1252,7 @@ export class Mailchimp implements INodeType { options: [], required: true, description: - 'List of lists. Choose from the list, or specify an ID using an expression.', + 'List of lists. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Email', @@ -1288,7 +1289,7 @@ export class Mailchimp implements INodeType { displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, displayOptions: { show: { @@ -1326,14 +1327,14 @@ export class Mailchimp implements INodeType { options: [], required: true, description: - 'List of lists. Choose from the list, or specify an ID using an expression.', + 'List of lists. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Group Category Name or ID', name: 'groupCategory', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getGroupCategories', loadOptionsDependsOn: ['list'], @@ -1417,7 +1418,7 @@ export class Mailchimp implements INodeType { displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, displayOptions: { show: { @@ -1449,7 +1450,7 @@ export class Mailchimp implements INodeType { }, default: [], description: - 'A comma-separated list of fields to exclude. Choose from the list, or specify IDs using an expression.', + 'A comma-separated list of fields to exclude. Choose from the list, or specify IDs using an expression.', }, { displayName: 'Field Names or IDs', @@ -1467,7 +1468,7 @@ export class Mailchimp implements INodeType { 'campaigns.settings.title', ], description: - 'A comma-separated list of fields to return. Choose from the list, or specify IDs using an expression.', + 'A comma-separated list of fields to return. Choose from the list, or specify IDs using an expression.', }, { displayName: 'List Name or ID', @@ -1478,7 +1479,7 @@ export class Mailchimp implements INodeType { }, default: '', description: - 'List of lists. Choose from the list, or specify an ID using an expression.', + 'List of lists. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Since Create Time', @@ -2189,7 +2190,7 @@ export class Mailchimp implements INodeType { ); returnData.push(...executionData); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push({ json: { error: error.message } }); continue; } diff --git a/packages/nodes-base/nodes/Mailchimp/MailchimpTrigger.node.json b/packages/nodes-base/nodes/Mailchimp/MailchimpTrigger.node.json index 7adc9fa014..85fabc7b59 100644 --- a/packages/nodes-base/nodes/Mailchimp/MailchimpTrigger.node.json +++ b/packages/nodes-base/nodes/Mailchimp/MailchimpTrigger.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/mailchimp" + "url": "https://docs.n8n.io/integrations/builtin/credentials/mailchimp/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Mailchimp/MailchimpTrigger.node.ts b/packages/nodes-base/nodes/Mailchimp/MailchimpTrigger.node.ts index b45dc421f4..928296c32d 100644 --- a/packages/nodes-base/nodes/Mailchimp/MailchimpTrigger.node.ts +++ b/packages/nodes-base/nodes/Mailchimp/MailchimpTrigger.node.ts @@ -9,7 +9,7 @@ import type { IWebhookResponseData, JsonObject, } from 'n8n-workflow'; -import { NodeApiError } from 'n8n-workflow'; +import { NodeApiError, NodeConnectionType } from 'n8n-workflow'; import { mailchimpApiRequest } from './GenericFunctions'; export class MailchimpTrigger implements INodeType { @@ -24,7 +24,7 @@ export class MailchimpTrigger implements INodeType { name: 'Mailchimp Trigger', }, inputs: [], - outputs: ['main'], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'mailchimpApi', @@ -83,7 +83,7 @@ export class MailchimpTrigger implements INodeType { required: true, default: '', description: - 'The list that is gonna fire the event. Choose from the list, or specify an ID using an expression.', + 'The list that is gonna fire the event. Choose from the list, or specify an ID using an expression.', typeOptions: { loadOptionsMethod: 'getLists', }, diff --git a/packages/nodes-base/nodes/MailerLite/MailerLite.node.json b/packages/nodes-base/nodes/MailerLite/MailerLite.node.json index 2da2b12404..486004a199 100644 --- a/packages/nodes-base/nodes/MailerLite/MailerLite.node.json +++ b/packages/nodes-base/nodes/MailerLite/MailerLite.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/mailerLite" + "url": "https://docs.n8n.io/integrations/builtin/credentials/mailerLite/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/MailerLite/MailerLite.node.ts b/packages/nodes-base/nodes/MailerLite/MailerLite.node.ts index d23ec1ebb7..6fe7c621b1 100644 --- a/packages/nodes-base/nodes/MailerLite/MailerLite.node.ts +++ b/packages/nodes-base/nodes/MailerLite/MailerLite.node.ts @@ -7,6 +7,7 @@ import type { INodeType, INodeTypeDescription, } from 'n8n-workflow'; +import { NodeConnectionType } from 'n8n-workflow'; import { mailerliteApiRequest, mailerliteApiRequestAllItems } from './GenericFunctions'; @@ -25,8 +26,8 @@ export class MailerLite implements INodeType { defaults: { name: 'MailerLite', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'mailerLiteApi', @@ -181,7 +182,7 @@ export class MailerLite implements INodeType { } } } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { const executionErrorData = this.helpers.constructExecutionMetaData( this.helpers.returnJsonArray({ error: error.message }), { itemData: { item: i } }, diff --git a/packages/nodes-base/nodes/MailerLite/MailerLiteTrigger.node.json b/packages/nodes-base/nodes/MailerLite/MailerLiteTrigger.node.json index 94abbee715..af3532f8c7 100644 --- a/packages/nodes-base/nodes/MailerLite/MailerLiteTrigger.node.json +++ b/packages/nodes-base/nodes/MailerLite/MailerLiteTrigger.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/mailerLite" + "url": "https://docs.n8n.io/integrations/builtin/credentials/mailerLite/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/MailerLite/MailerLiteTrigger.node.ts b/packages/nodes-base/nodes/MailerLite/MailerLiteTrigger.node.ts index 84f3261d09..697720aa72 100644 --- a/packages/nodes-base/nodes/MailerLite/MailerLiteTrigger.node.ts +++ b/packages/nodes-base/nodes/MailerLite/MailerLiteTrigger.node.ts @@ -6,6 +6,7 @@ import type { INodeTypeDescription, IWebhookResponseData, } from 'n8n-workflow'; +import { NodeConnectionType } from 'n8n-workflow'; import { mailerliteApiRequest } from './GenericFunctions'; @@ -22,7 +23,7 @@ export class MailerLiteTrigger implements INodeType { name: 'MailerLite Trigger', }, inputs: [], - outputs: ['main'], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'mailerLiteApi', diff --git a/packages/nodes-base/nodes/MailerLite/SubscriberDescription.ts b/packages/nodes-base/nodes/MailerLite/SubscriberDescription.ts index 7d1419ac5f..b3a5a5311c 100644 --- a/packages/nodes-base/nodes/MailerLite/SubscriberDescription.ts +++ b/packages/nodes-base/nodes/MailerLite/SubscriberDescription.ts @@ -109,7 +109,7 @@ export const subscriberFields: INodeProperties[] = [ }, default: '', description: - 'The ID of the field to add custom field to. Choose from the list, or specify an ID using an expression.', + 'The ID of the field to add custom field to. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Value', @@ -224,7 +224,7 @@ export const subscriberFields: INodeProperties[] = [ }, default: '', description: - 'The ID of the field to add custom field to. Choose from the list, or specify an ID using an expression.', + 'The ID of the field to add custom field to. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Value', diff --git a/packages/nodes-base/nodes/Mailgun/Mailgun.node.json b/packages/nodes-base/nodes/Mailgun/Mailgun.node.json index f02842cfd5..8932ce1879 100644 --- a/packages/nodes-base/nodes/Mailgun/Mailgun.node.json +++ b/packages/nodes-base/nodes/Mailgun/Mailgun.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/mailgun" + "url": "https://docs.n8n.io/integrations/builtin/credentials/mailgun/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Mailgun/Mailgun.node.ts b/packages/nodes-base/nodes/Mailgun/Mailgun.node.ts index f92c1918b1..324118a46e 100644 --- a/packages/nodes-base/nodes/Mailgun/Mailgun.node.ts +++ b/packages/nodes-base/nodes/Mailgun/Mailgun.node.ts @@ -7,7 +7,7 @@ import type { JsonObject, IRequestOptions, } from 'n8n-workflow'; -import { NodeApiError } from 'n8n-workflow'; +import { NodeApiError, NodeConnectionType } from 'n8n-workflow'; export class Mailgun implements INodeType { description: INodeTypeDescription = { @@ -20,8 +20,8 @@ export class Mailgun implements INodeType { defaults: { name: 'Mailgun', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'mailgunApi', @@ -194,7 +194,7 @@ export class Mailgun implements INodeType { returnData.push(...executionData); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { const executionErrorData = this.helpers.constructExecutionMetaData( this.helpers.returnJsonArray({ error: error.message }), { itemData: { item: itemIndex } }, diff --git a/packages/nodes-base/nodes/Mailjet/EmailDescription.ts b/packages/nodes-base/nodes/Mailjet/EmailDescription.ts index 66e43ed418..c6daf24ce6 100644 --- a/packages/nodes-base/nodes/Mailjet/EmailDescription.ts +++ b/packages/nodes-base/nodes/Mailjet/EmailDescription.ts @@ -300,7 +300,7 @@ export const emailFields: INodeProperties[] = [ name: 'templateId', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getTemplates', }, diff --git a/packages/nodes-base/nodes/Mailjet/GenericFunctions.ts b/packages/nodes-base/nodes/Mailjet/GenericFunctions.ts index d25b301b2b..1276d5931c 100644 --- a/packages/nodes-base/nodes/Mailjet/GenericFunctions.ts +++ b/packages/nodes-base/nodes/Mailjet/GenericFunctions.ts @@ -23,9 +23,9 @@ export async function mailjetApiRequest( if (resource === 'email' || this.getNode().type.includes('Trigger')) { credentialType = 'mailjetEmailApi'; - const { sandboxMode } = (await this.getCredentials('mailjetEmailApi')) as { + const { sandboxMode } = await this.getCredentials<{ sandboxMode: boolean; - }; + }>('mailjetEmailApi'); if (!this.getNode().type.includes('Trigger')) { Object.assign(body, { SandboxMode: sandboxMode }); diff --git a/packages/nodes-base/nodes/Mailjet/Mailjet.node.json b/packages/nodes-base/nodes/Mailjet/Mailjet.node.json index 52be2a0d51..11892a4787 100644 --- a/packages/nodes-base/nodes/Mailjet/Mailjet.node.json +++ b/packages/nodes-base/nodes/Mailjet/Mailjet.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/mailjet" + "url": "https://docs.n8n.io/integrations/builtin/credentials/mailjet/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Mailjet/Mailjet.node.ts b/packages/nodes-base/nodes/Mailjet/Mailjet.node.ts index f46bf8a6df..0b02a4590c 100644 --- a/packages/nodes-base/nodes/Mailjet/Mailjet.node.ts +++ b/packages/nodes-base/nodes/Mailjet/Mailjet.node.ts @@ -7,7 +7,7 @@ import type { INodeType, INodeTypeDescription, } from 'n8n-workflow'; -import { NodeOperationError } from 'n8n-workflow'; +import { NodeConnectionType, NodeOperationError } from 'n8n-workflow'; import type { IMessage } from './GenericFunctions'; import { mailjetApiRequest, validateJSON } from './GenericFunctions'; @@ -27,8 +27,8 @@ export class Mailjet implements INodeType { defaults: { name: 'Mailjet', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'mailjetEmailApi', @@ -310,7 +310,7 @@ export class Mailjet implements INodeType { returnData.push(...executionData); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { const executionErrorData = this.helpers.constructExecutionMetaData( this.helpers.returnJsonArray({ error: error.message }), { itemData: { item: i } }, diff --git a/packages/nodes-base/nodes/Mailjet/MailjetTrigger.node.json b/packages/nodes-base/nodes/Mailjet/MailjetTrigger.node.json index be043f3598..26fb4dcd0a 100644 --- a/packages/nodes-base/nodes/Mailjet/MailjetTrigger.node.json +++ b/packages/nodes-base/nodes/Mailjet/MailjetTrigger.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/mailjet" + "url": "https://docs.n8n.io/integrations/builtin/credentials/mailjet/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Mailjet/MailjetTrigger.node.ts b/packages/nodes-base/nodes/Mailjet/MailjetTrigger.node.ts index cc2968dfed..3428dc9951 100644 --- a/packages/nodes-base/nodes/Mailjet/MailjetTrigger.node.ts +++ b/packages/nodes-base/nodes/Mailjet/MailjetTrigger.node.ts @@ -6,6 +6,7 @@ import type { INodeTypeDescription, IWebhookResponseData, } from 'n8n-workflow'; +import { NodeConnectionType } from 'n8n-workflow'; import { mailjetApiRequest } from './GenericFunctions'; @@ -21,7 +22,7 @@ export class MailjetTrigger implements INodeType { name: 'Mailjet Trigger', }, inputs: [], - outputs: ['main'], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'mailjetEmailApi', diff --git a/packages/nodes-base/nodes/Mandrill/Mandrill.node.json b/packages/nodes-base/nodes/Mandrill/Mandrill.node.json index 3fb079f9e3..2bf62f777f 100644 --- a/packages/nodes-base/nodes/Mandrill/Mandrill.node.json +++ b/packages/nodes-base/nodes/Mandrill/Mandrill.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/mandrill" + "url": "https://docs.n8n.io/integrations/builtin/credentials/mandrill/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Mandrill/Mandrill.node.ts b/packages/nodes-base/nodes/Mandrill/Mandrill.node.ts index 13da57be9e..ddd3d4d792 100644 --- a/packages/nodes-base/nodes/Mandrill/Mandrill.node.ts +++ b/packages/nodes-base/nodes/Mandrill/Mandrill.node.ts @@ -8,7 +8,7 @@ import type { INodeTypeDescription, JsonObject, } from 'n8n-workflow'; -import { NodeApiError } from 'n8n-workflow'; +import { NodeConnectionType, NodeApiError } from 'n8n-workflow'; import moment from 'moment-timezone'; @@ -106,8 +106,8 @@ export class Mandrill implements INodeType { defaults: { name: 'Mandrill', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'mandrillApi', @@ -171,7 +171,7 @@ export class Mandrill implements INodeType { options: [], required: true, description: - 'The template you want to send. Choose from the list, or specify an ID using an expression.', + 'The template you want to send. Choose from the list, or specify an ID using an expression.', }, { displayName: 'From Email', @@ -216,7 +216,7 @@ export class Mandrill implements INodeType { displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, displayOptions: { show: { @@ -891,7 +891,7 @@ export class Mandrill implements INodeType { returnData.push(...executionData); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { const executionErrorData = this.helpers.constructExecutionMetaData( this.helpers.returnJsonArray({ error: error.message }), { itemData: { item: i } }, diff --git a/packages/nodes-base/nodes/ManualTrigger/ManualTrigger.node.ts b/packages/nodes-base/nodes/ManualTrigger/ManualTrigger.node.ts index 29f1dfd74f..b235d3fb64 100644 --- a/packages/nodes-base/nodes/ManualTrigger/ManualTrigger.node.ts +++ b/packages/nodes-base/nodes/ManualTrigger/ManualTrigger.node.ts @@ -4,6 +4,7 @@ import type { INodeTypeDescription, ITriggerResponse, } from 'n8n-workflow'; +import { NodeConnectionType } from 'n8n-workflow'; export class ManualTrigger implements INodeType { description: INodeTypeDescription = { @@ -21,7 +22,7 @@ export class ManualTrigger implements INodeType { }, inputs: [], - outputs: ['main'], + outputs: [NodeConnectionType.Main], properties: [ { displayName: diff --git a/packages/nodes-base/nodes/Markdown/Markdown.node.ts b/packages/nodes-base/nodes/Markdown/Markdown.node.ts index 6289fbab69..bcd270797d 100644 --- a/packages/nodes-base/nodes/Markdown/Markdown.node.ts +++ b/packages/nodes-base/nodes/Markdown/Markdown.node.ts @@ -6,7 +6,7 @@ import type { INodeTypeDescription, JsonObject, } from 'n8n-workflow'; -import { deepCopy } from 'n8n-workflow'; +import { NodeConnectionType, deepCopy } from 'n8n-workflow'; import { Converter } from 'showdown'; @@ -28,8 +28,8 @@ export class Markdown implements INodeType { defaults: { name: 'Markdown', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [], properties: [ { @@ -97,7 +97,7 @@ export class Markdown implements INodeType { displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, displayOptions: { show: { @@ -299,7 +299,7 @@ export class Markdown implements INodeType { displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, displayOptions: { show: { @@ -608,7 +608,7 @@ export class Markdown implements INodeType { returnData.push(newItem); } } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push({ error: (error as JsonObject).message }); continue; } diff --git a/packages/nodes-base/nodes/Marketstack/Marketstack.node.json b/packages/nodes-base/nodes/Marketstack/Marketstack.node.json index 34ca65c3c6..c295af5f55 100644 --- a/packages/nodes-base/nodes/Marketstack/Marketstack.node.json +++ b/packages/nodes-base/nodes/Marketstack/Marketstack.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/marketstack" + "url": "https://docs.n8n.io/integrations/builtin/credentials/marketstack/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Marketstack/Marketstack.node.ts b/packages/nodes-base/nodes/Marketstack/Marketstack.node.ts index 247b713dce..62617ee6fa 100644 --- a/packages/nodes-base/nodes/Marketstack/Marketstack.node.ts +++ b/packages/nodes-base/nodes/Marketstack/Marketstack.node.ts @@ -5,7 +5,7 @@ import type { INodeType, INodeTypeDescription, } from 'n8n-workflow'; -import { NodeOperationError } from 'n8n-workflow'; +import { NodeConnectionType, NodeOperationError } from 'n8n-workflow'; import { endOfDayDataFields, @@ -37,8 +37,8 @@ export class Marketstack implements INodeType { defaults: { name: 'Marketstack', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'marketstackApi', @@ -161,7 +161,7 @@ export class Marketstack implements INodeType { } } } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { const executionErrorData = this.helpers.constructExecutionMetaData( this.helpers.returnJsonArray({ error: error.message }), { itemData: { item: i } }, diff --git a/packages/nodes-base/nodes/Matrix/Matrix.node.json b/packages/nodes-base/nodes/Matrix/Matrix.node.json index 4e06553157..efa3091506 100644 --- a/packages/nodes-base/nodes/Matrix/Matrix.node.json +++ b/packages/nodes-base/nodes/Matrix/Matrix.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/matrix" + "url": "https://docs.n8n.io/integrations/builtin/credentials/matrix/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Matrix/Matrix.node.ts b/packages/nodes-base/nodes/Matrix/Matrix.node.ts index eb29563808..141a6c5181 100644 --- a/packages/nodes-base/nodes/Matrix/Matrix.node.ts +++ b/packages/nodes-base/nodes/Matrix/Matrix.node.ts @@ -7,6 +7,7 @@ import type { INodeType, INodeTypeDescription, } from 'n8n-workflow'; +import { NodeConnectionType } from 'n8n-workflow'; import { handleMatrixCall, matrixApiRequest } from './GenericFunctions'; @@ -35,8 +36,8 @@ export class Matrix implements INodeType { defaults: { name: 'Matrix', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'matrixApi', @@ -150,7 +151,7 @@ export class Matrix implements INodeType { ); returnData.push(...executionData); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { const executionData = this.helpers.constructExecutionMetaData( this.helpers.returnJsonArray({ error: error.message }), { itemData: { item: i } }, diff --git a/packages/nodes-base/nodes/Matrix/MediaDescription.ts b/packages/nodes-base/nodes/Matrix/MediaDescription.ts index 23f6ddeb0b..3830981641 100644 --- a/packages/nodes-base/nodes/Matrix/MediaDescription.ts +++ b/packages/nodes-base/nodes/Matrix/MediaDescription.ts @@ -42,7 +42,7 @@ export const mediaFields: INodeProperties[] = [ }, }, description: - 'Room ID to post. Choose from the list, or specify an ID using an expression.', + 'Room ID to post. Choose from the list, or specify an ID using an expression.', required: true, }, { diff --git a/packages/nodes-base/nodes/Matrix/MessageDescription.ts b/packages/nodes-base/nodes/Matrix/MessageDescription.ts index 973ea6ecc8..b5e6604f3f 100644 --- a/packages/nodes-base/nodes/Matrix/MessageDescription.ts +++ b/packages/nodes-base/nodes/Matrix/MessageDescription.ts @@ -50,7 +50,7 @@ export const messageFields: INodeProperties[] = [ }, required: true, description: - 'The channel to send the message to. Choose from the list, or specify an ID using an expression.', + 'The channel to send the message to. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Text', @@ -155,7 +155,7 @@ export const messageFields: INodeProperties[] = [ }, }, description: - 'The token to start returning events from. This token can be obtained from a prev_batch token returned for each room by the sync API. Choose from the list, or specify an ID using an expression.', + 'The token to start returning events from. This token can be obtained from a prev_batch token returned for each room by the sync API. Choose from the list, or specify an ID using an expression.', required: true, }, { @@ -201,7 +201,7 @@ export const messageFields: INodeProperties[] = [ }, }, default: {}, - placeholder: 'Add options', + placeholder: 'Add option', options: [ { displayName: 'Filter', diff --git a/packages/nodes-base/nodes/Matrix/RoomDescription.ts b/packages/nodes-base/nodes/Matrix/RoomDescription.ts index cf2236c4ab..107742efc6 100644 --- a/packages/nodes-base/nodes/Matrix/RoomDescription.ts +++ b/packages/nodes-base/nodes/Matrix/RoomDescription.ts @@ -129,7 +129,7 @@ export const roomFields: INodeProperties[] = [ name: 'roomId', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getChannels', }, @@ -151,7 +151,7 @@ export const roomFields: INodeProperties[] = [ name: 'roomId', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getChannels', }, @@ -189,7 +189,7 @@ export const roomFields: INodeProperties[] = [ name: 'roomId', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getChannels', }, diff --git a/packages/nodes-base/nodes/Matrix/RoomMemberDescription.ts b/packages/nodes-base/nodes/Matrix/RoomMemberDescription.ts index 1dbfdb9e64..fc087a0c44 100644 --- a/packages/nodes-base/nodes/Matrix/RoomMemberDescription.ts +++ b/packages/nodes-base/nodes/Matrix/RoomMemberDescription.ts @@ -32,7 +32,7 @@ export const roomMemberFields: INodeProperties[] = [ name: 'roomId', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getChannels', }, diff --git a/packages/nodes-base/nodes/Mattermost/Mattermost.node.json b/packages/nodes-base/nodes/Mattermost/Mattermost.node.json index be0a6aa892..642f1fb4cf 100644 --- a/packages/nodes-base/nodes/Mattermost/Mattermost.node.json +++ b/packages/nodes-base/nodes/Mattermost/Mattermost.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/mattermost" + "url": "https://docs.n8n.io/integrations/builtin/credentials/mattermost/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Mattermost/v1/actions/channel/addUser/description.ts b/packages/nodes-base/nodes/Mattermost/v1/actions/channel/addUser/description.ts index 140ae10d81..1517b23b65 100644 --- a/packages/nodes-base/nodes/Mattermost/v1/actions/channel/addUser/description.ts +++ b/packages/nodes-base/nodes/Mattermost/v1/actions/channel/addUser/description.ts @@ -18,7 +18,7 @@ export const channelAddUserDescription: ChannelProperties = [ }, }, description: - 'The ID of the channel to invite user to. Choose from the list, or specify an ID using an expression.', + 'The ID of the channel to invite user to. Choose from the list, or specify an ID using an expression.', }, { displayName: 'User Name or ID', @@ -37,6 +37,6 @@ export const channelAddUserDescription: ChannelProperties = [ }, }, description: - 'The ID of the user to invite into channel. Choose from the list, or specify an ID using an expression.', + 'The ID of the user to invite into channel. Choose from the list, or specify an ID using an expression.', }, ]; diff --git a/packages/nodes-base/nodes/Mattermost/v1/actions/channel/create/description.ts b/packages/nodes-base/nodes/Mattermost/v1/actions/channel/create/description.ts index 1405776574..fc3654e218 100644 --- a/packages/nodes-base/nodes/Mattermost/v1/actions/channel/create/description.ts +++ b/packages/nodes-base/nodes/Mattermost/v1/actions/channel/create/description.ts @@ -18,7 +18,7 @@ export const channelCreateDescription: ChannelProperties = [ }, }, description: - 'The Mattermost Team. Choose from the list, or specify an ID using an expression.', + 'The Mattermost Team. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Display Name', diff --git a/packages/nodes-base/nodes/Mattermost/v1/actions/channel/del/description.ts b/packages/nodes-base/nodes/Mattermost/v1/actions/channel/del/description.ts index c87af5bbdd..ccfd50d206 100644 --- a/packages/nodes-base/nodes/Mattermost/v1/actions/channel/del/description.ts +++ b/packages/nodes-base/nodes/Mattermost/v1/actions/channel/del/description.ts @@ -18,6 +18,6 @@ export const channelDeleteDescription: ChannelProperties = [ }, }, description: - 'The ID of the channel to soft delete. Choose from the list, or specify an ID using an expression.', + 'The ID of the channel to soft delete. Choose from the list, or specify an ID using an expression.', }, ]; diff --git a/packages/nodes-base/nodes/Mattermost/v1/actions/channel/members/description.ts b/packages/nodes-base/nodes/Mattermost/v1/actions/channel/members/description.ts index 2fa0b75ba2..6142c830d7 100644 --- a/packages/nodes-base/nodes/Mattermost/v1/actions/channel/members/description.ts +++ b/packages/nodes-base/nodes/Mattermost/v1/actions/channel/members/description.ts @@ -18,7 +18,7 @@ export const channelMembersDescription: ChannelProperties = [ }, }, description: - 'The Mattermost Team. Choose from the list, or specify an ID using an expression.', + 'The Mattermost Team. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Channel Name or ID', @@ -38,7 +38,7 @@ export const channelMembersDescription: ChannelProperties = [ }, }, description: - 'The Mattermost Team. Choose from the list, or specify an ID using an expression.', + 'The Mattermost Team. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Resolve Data', diff --git a/packages/nodes-base/nodes/Mattermost/v1/actions/channel/search/description.ts b/packages/nodes-base/nodes/Mattermost/v1/actions/channel/search/description.ts index 00e530be6b..606415eaae 100644 --- a/packages/nodes-base/nodes/Mattermost/v1/actions/channel/search/description.ts +++ b/packages/nodes-base/nodes/Mattermost/v1/actions/channel/search/description.ts @@ -18,7 +18,7 @@ export const channelSearchDescription: ChannelProperties = [ }, }, description: - 'The Mattermost Team. Choose from the list, or specify an ID using an expression.', + 'The Mattermost Team. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Search Term', diff --git a/packages/nodes-base/nodes/Mattermost/v1/actions/channel/statistics/description.ts b/packages/nodes-base/nodes/Mattermost/v1/actions/channel/statistics/description.ts index ca38fafe77..a34beb20bc 100644 --- a/packages/nodes-base/nodes/Mattermost/v1/actions/channel/statistics/description.ts +++ b/packages/nodes-base/nodes/Mattermost/v1/actions/channel/statistics/description.ts @@ -18,6 +18,6 @@ export const channelStatisticsDescription: ChannelProperties = [ }, }, description: - 'The ID of the channel to get the statistics from. Choose from the list, or specify an ID using an expression.', + 'The ID of the channel to get the statistics from. Choose from the list, or specify an ID using an expression.', }, ]; diff --git a/packages/nodes-base/nodes/Mattermost/v1/actions/message/post/description.ts b/packages/nodes-base/nodes/Mattermost/v1/actions/message/post/description.ts index 4f7fd29fe5..5b8f18e50c 100644 --- a/packages/nodes-base/nodes/Mattermost/v1/actions/message/post/description.ts +++ b/packages/nodes-base/nodes/Mattermost/v1/actions/message/post/description.ts @@ -18,7 +18,7 @@ export const messagePostDescription: MessageProperties = [ }, }, description: - 'The ID of the channel to post to. Choose from the list, or specify an ID using an expression.', + 'The ID of the channel to post to. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Message', @@ -113,7 +113,7 @@ export const messagePostDescription: MessageProperties = [ { displayName: 'Options', name: 'options', - placeholder: 'Add Option', + placeholder: 'Add option', description: 'Adds a new option to select field', type: 'fixedCollection', typeOptions: { @@ -367,7 +367,7 @@ export const messagePostDescription: MessageProperties = [ }, default: {}, description: 'Other options to set', - placeholder: 'Add options', + placeholder: 'Add option', options: [ { displayName: 'Make Comment', diff --git a/packages/nodes-base/nodes/Mattermost/v1/actions/message/postEphemeral/description.ts b/packages/nodes-base/nodes/Mattermost/v1/actions/message/postEphemeral/description.ts index b4cf526f4f..f529331362 100644 --- a/packages/nodes-base/nodes/Mattermost/v1/actions/message/postEphemeral/description.ts +++ b/packages/nodes-base/nodes/Mattermost/v1/actions/message/postEphemeral/description.ts @@ -18,7 +18,7 @@ export const messagePostEphemeralDescription: MessageProperties = [ }, }, description: - 'ID of the user to send the ephemeral message to. Choose from the list, or specify an ID using an expression.', + 'ID of the user to send the ephemeral message to. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Channel Name or ID', @@ -36,7 +36,7 @@ export const messagePostEphemeralDescription: MessageProperties = [ }, }, description: - 'ID of the channel to send the ephemeral message in. Choose from the list, or specify an ID using an expression.', + 'ID of the channel to send the ephemeral message in. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Message', diff --git a/packages/nodes-base/nodes/Mattermost/v1/actions/reaction/create/description.ts b/packages/nodes-base/nodes/Mattermost/v1/actions/reaction/create/description.ts index 98b21b97e5..b58d08ee6e 100644 --- a/packages/nodes-base/nodes/Mattermost/v1/actions/reaction/create/description.ts +++ b/packages/nodes-base/nodes/Mattermost/v1/actions/reaction/create/description.ts @@ -18,7 +18,7 @@ export const reactionCreateDescription: ReactionProperties = [ }, }, description: - 'ID of the user sending the reaction. Choose from the list, or specify an ID using an expression.', + 'ID of the user sending the reaction. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Post ID', diff --git a/packages/nodes-base/nodes/Mattermost/v1/actions/reaction/del/description.ts b/packages/nodes-base/nodes/Mattermost/v1/actions/reaction/del/description.ts index c7d9185960..e3f94d5827 100644 --- a/packages/nodes-base/nodes/Mattermost/v1/actions/reaction/del/description.ts +++ b/packages/nodes-base/nodes/Mattermost/v1/actions/reaction/del/description.ts @@ -18,7 +18,7 @@ export const reactionDeleteDescription: ReactionProperties = [ }, }, description: - 'ID of the user whose reaction to delete. Choose from the list, or specify an ID using an expression.', + 'ID of the user whose reaction to delete. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Post ID', diff --git a/packages/nodes-base/nodes/Mattermost/v1/actions/router.ts b/packages/nodes-base/nodes/Mattermost/v1/actions/router.ts index 17ce9945fa..bd1af59af2 100644 --- a/packages/nodes-base/nodes/Mattermost/v1/actions/router.ts +++ b/packages/nodes-base/nodes/Mattermost/v1/actions/router.ts @@ -42,7 +42,7 @@ export async function router(this: IExecuteFunctions): Promiseexpression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getTeams', }, diff --git a/packages/nodes-base/nodes/Mattermost/v1/actions/versionDescription.ts b/packages/nodes-base/nodes/Mattermost/v1/actions/versionDescription.ts index 1fa66bdf39..787c1af46a 100644 --- a/packages/nodes-base/nodes/Mattermost/v1/actions/versionDescription.ts +++ b/packages/nodes-base/nodes/Mattermost/v1/actions/versionDescription.ts @@ -1,5 +1,5 @@ /* eslint-disable n8n-nodes-base/node-filename-against-convention */ -import type { INodeTypeDescription } from 'n8n-workflow'; +import { NodeConnectionType, type INodeTypeDescription } from 'n8n-workflow'; import * as channel from './channel'; import * as message from './message'; import * as reaction from './reaction'; @@ -16,8 +16,8 @@ export const versionDescription: INodeTypeDescription = { defaults: { name: 'Mattermost', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'mattermostApi', diff --git a/packages/nodes-base/nodes/Mautic/CampaignContactDescription.ts b/packages/nodes-base/nodes/Mautic/CampaignContactDescription.ts index 98555277da..38f6cf6d37 100644 --- a/packages/nodes-base/nodes/Mautic/CampaignContactDescription.ts +++ b/packages/nodes-base/nodes/Mautic/CampaignContactDescription.ts @@ -51,7 +51,7 @@ export const campaignContactFields: INodeProperties[] = [ name: 'campaignId', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', required: true, displayOptions: { show: { diff --git a/packages/nodes-base/nodes/Mautic/CompanyDescription.ts b/packages/nodes-base/nodes/Mautic/CompanyDescription.ts index 3c72a608a2..6c5e7182de 100644 --- a/packages/nodes-base/nodes/Mautic/CompanyDescription.ts +++ b/packages/nodes-base/nodes/Mautic/CompanyDescription.ts @@ -180,7 +180,7 @@ export const companyFields: INodeProperties[] = [ }, default: '', description: - 'ID of the field to set. Choose from the list, or specify an ID using an expression.', + 'ID of the field to set. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Field Value', @@ -210,7 +210,7 @@ export const companyFields: INodeProperties[] = [ name: 'industry', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getIndustries', }, @@ -389,7 +389,7 @@ export const companyFields: INodeProperties[] = [ }, default: '', description: - 'ID of the field to set. Choose from the list, or specify an ID using an expression.', + 'ID of the field to set. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Field Value', @@ -419,7 +419,7 @@ export const companyFields: INodeProperties[] = [ name: 'industry', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getIndustries', }, @@ -576,7 +576,7 @@ export const companyFields: INodeProperties[] = [ }, default: '', description: - 'Column to sort by. Can use any column listed in the response. Choose from the list, or specify an ID using an expression.', + 'Column to sort by. Can use any column listed in the response. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Search', diff --git a/packages/nodes-base/nodes/Mautic/ContactDescription.ts b/packages/nodes-base/nodes/Mautic/ContactDescription.ts index 65b6b3ed3d..76d8c34d9d 100644 --- a/packages/nodes-base/nodes/Mautic/ContactDescription.ts +++ b/packages/nodes-base/nodes/Mautic/ContactDescription.ts @@ -127,7 +127,7 @@ export const contactFields: INodeProperties[] = [ name: 'company', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getCompanies', }, @@ -293,7 +293,7 @@ export const contactFields: INodeProperties[] = [ }, default: '', description: - 'ID of the field to set. Choose from the list, or specify an ID using an expression.', + 'ID of the field to set. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Field Value', @@ -378,7 +378,7 @@ export const contactFields: INodeProperties[] = [ name: 'stage', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getStages', }, @@ -389,7 +389,7 @@ export const contactFields: INodeProperties[] = [ name: 'tags', type: 'multiOptions', description: - 'Choose from the list, or specify IDs using an expression', + 'Choose from the list, or specify IDs using an expression', typeOptions: { loadOptionsMethod: 'getTags', }, @@ -625,7 +625,7 @@ export const contactFields: INodeProperties[] = [ }, default: '', description: - 'ID of the field to set. Choose from the list, or specify an ID using an expression.', + 'ID of the field to set. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Field Value', @@ -770,7 +770,7 @@ export const contactFields: INodeProperties[] = [ name: 'company', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getCompanies', }, @@ -818,7 +818,7 @@ export const contactFields: INodeProperties[] = [ name: 'stage', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', displayOptions: { show: { '/jsonParameters': [false], @@ -834,7 +834,7 @@ export const contactFields: INodeProperties[] = [ name: 'tags', type: 'multiOptions', description: - 'Choose from the list, or specify IDs using an expression', + 'Choose from the list, or specify IDs using an expression', displayOptions: { show: { '/jsonParameters': [false], @@ -1178,7 +1178,7 @@ export const contactFields: INodeProperties[] = [ operation: ['sendEmail', 'editDoNotContactList', 'editContactPoint'], }, }, - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, options: [ { @@ -1275,7 +1275,7 @@ export const contactFields: INodeProperties[] = [ name: 'campaignEmailId', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', required: true, displayOptions: { show: { diff --git a/packages/nodes-base/nodes/Mautic/ContactSegmentDescription.ts b/packages/nodes-base/nodes/Mautic/ContactSegmentDescription.ts index 6a761ed168..29fcd8644c 100644 --- a/packages/nodes-base/nodes/Mautic/ContactSegmentDescription.ts +++ b/packages/nodes-base/nodes/Mautic/ContactSegmentDescription.ts @@ -51,7 +51,7 @@ export const contactSegmentFields: INodeProperties[] = [ name: 'segmentId', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', required: true, displayOptions: { show: { diff --git a/packages/nodes-base/nodes/Mautic/Mautic.node.json b/packages/nodes-base/nodes/Mautic/Mautic.node.json index e9f83fc777..e8eb45f85b 100644 --- a/packages/nodes-base/nodes/Mautic/Mautic.node.json +++ b/packages/nodes-base/nodes/Mautic/Mautic.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/mautic" + "url": "https://docs.n8n.io/integrations/builtin/credentials/mautic/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Mautic/Mautic.node.ts b/packages/nodes-base/nodes/Mautic/Mautic.node.ts index cdfb0e4b44..25a1aad381 100644 --- a/packages/nodes-base/nodes/Mautic/Mautic.node.ts +++ b/packages/nodes-base/nodes/Mautic/Mautic.node.ts @@ -8,7 +8,7 @@ import type { INodeTypeDescription, JsonObject, } from 'n8n-workflow'; -import { NodeApiError, NodeOperationError } from 'n8n-workflow'; +import { NodeConnectionType, NodeApiError, NodeOperationError } from 'n8n-workflow'; import { snakeCase } from 'change-case'; import { mauticApiRequest, mauticApiRequestAllItems, validateJSON } from './GenericFunctions'; @@ -37,8 +37,8 @@ export class Mautic implements INodeType { defaults: { name: 'Mautic', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'mauticApi', @@ -1020,7 +1020,7 @@ export class Mautic implements INodeType { ); returnData.push(...executionData); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push({ json: { error: (error as JsonObject).message } }); continue; } diff --git a/packages/nodes-base/nodes/Mautic/MauticTrigger.node.json b/packages/nodes-base/nodes/Mautic/MauticTrigger.node.json index 2becfe6148..51ba49029b 100644 --- a/packages/nodes-base/nodes/Mautic/MauticTrigger.node.json +++ b/packages/nodes-base/nodes/Mautic/MauticTrigger.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/mautic" + "url": "https://docs.n8n.io/integrations/builtin/credentials/mautic/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Mautic/MauticTrigger.node.ts b/packages/nodes-base/nodes/Mautic/MauticTrigger.node.ts index 576321c036..01a87bd7ca 100644 --- a/packages/nodes-base/nodes/Mautic/MauticTrigger.node.ts +++ b/packages/nodes-base/nodes/Mautic/MauticTrigger.node.ts @@ -1,14 +1,15 @@ import { parse as urlParse } from 'url'; -import type { - IHookFunctions, - IWebhookFunctions, - IDataObject, - ILoadOptionsFunctions, - INodePropertyOptions, - INodeType, - INodeTypeDescription, - IWebhookResponseData, +import { + type IHookFunctions, + type IWebhookFunctions, + type IDataObject, + type ILoadOptionsFunctions, + type INodePropertyOptions, + type INodeType, + type INodeTypeDescription, + type IWebhookResponseData, + NodeConnectionType, } from 'n8n-workflow'; import { mauticApiRequest } from './GenericFunctions'; @@ -25,7 +26,7 @@ export class MauticTrigger implements INodeType { name: 'Mautic Trigger', }, inputs: [], - outputs: ['main'], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'mauticApi', @@ -76,7 +77,7 @@ export class MauticTrigger implements INodeType { name: 'events', type: 'multiOptions', description: - 'Choose from the list, or specify IDs using an expression', + 'Choose from the list, or specify IDs using an expression', required: true, typeOptions: { loadOptionsMethod: 'getEvents', diff --git a/packages/nodes-base/nodes/Mautic/SegmentEmailDescription.ts b/packages/nodes-base/nodes/Mautic/SegmentEmailDescription.ts index b15d305f1e..6fa728b29e 100644 --- a/packages/nodes-base/nodes/Mautic/SegmentEmailDescription.ts +++ b/packages/nodes-base/nodes/Mautic/SegmentEmailDescription.ts @@ -31,7 +31,7 @@ export const segmentEmailFields: INodeProperties[] = [ name: 'segmentEmailId', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', required: true, displayOptions: { show: { diff --git a/packages/nodes-base/nodes/Medium/Medium.node.json b/packages/nodes-base/nodes/Medium/Medium.node.json index 6280f35f4d..9d312db7d4 100644 --- a/packages/nodes-base/nodes/Medium/Medium.node.json +++ b/packages/nodes-base/nodes/Medium/Medium.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/medium" + "url": "https://docs.n8n.io/integrations/builtin/credentials/medium/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Medium/Medium.node.ts b/packages/nodes-base/nodes/Medium/Medium.node.ts index dca3db0e3c..87c0768154 100644 --- a/packages/nodes-base/nodes/Medium/Medium.node.ts +++ b/packages/nodes-base/nodes/Medium/Medium.node.ts @@ -7,7 +7,7 @@ import type { INodeType, INodeTypeDescription, } from 'n8n-workflow'; -import { NodeOperationError } from 'n8n-workflow'; +import { NodeConnectionType, NodeOperationError } from 'n8n-workflow'; import { mediumApiRequest } from './GenericFunctions'; @@ -24,8 +24,8 @@ export class Medium implements INodeType { defaults: { name: 'Medium', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'mediumApi', @@ -133,7 +133,7 @@ export class Medium implements INodeType { }, default: '', description: - 'Publication IDs. Choose from the list, or specify an ID using an expression.', + 'Publication IDs. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Title', @@ -516,7 +516,7 @@ export class Medium implements INodeType { returnData.push(responseData as IDataObject); } } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push({ error: error.message }); continue; } diff --git a/packages/nodes-base/nodes/Merge/Merge.node.ts b/packages/nodes-base/nodes/Merge/Merge.node.ts index d20883d2bd..8dcfc71c03 100644 --- a/packages/nodes-base/nodes/Merge/Merge.node.ts +++ b/packages/nodes-base/nodes/Merge/Merge.node.ts @@ -3,6 +3,7 @@ import { VersionedNodeType } from 'n8n-workflow'; import { MergeV1 } from './v1/MergeV1.node'; import { MergeV2 } from './v2/MergeV2.node'; +import { MergeV3 } from './v3/MergeV3.node'; export class Merge extends VersionedNodeType { constructor() { @@ -13,13 +14,14 @@ export class Merge extends VersionedNodeType { group: ['transform'], subtitle: '={{$parameter["mode"]}}', description: 'Merges data of multiple streams once data from both is available', - defaultVersion: 2.1, + defaultVersion: 3, }; const nodeVersions: IVersionedNodeType['nodeVersions'] = { 1: new MergeV1(baseDescription), 2: new MergeV2(baseDescription), 2.1: new MergeV2(baseDescription), + 3: new MergeV3(baseDescription), }; super(nodeVersions, baseDescription); diff --git a/packages/nodes-base/nodes/Merge/test/v3/operations.test.ts b/packages/nodes-base/nodes/Merge/test/v3/operations.test.ts new file mode 100644 index 0000000000..17502459f6 --- /dev/null +++ b/packages/nodes-base/nodes/Merge/test/v3/operations.test.ts @@ -0,0 +1,356 @@ +import type { IDataObject, INode } from 'n8n-workflow'; +import { createMockExecuteFunction } from '../../../../test/nodes/Helpers'; +import * as mode from '../../v3/actions/mode'; + +const node: INode = { + id: '123456', + name: 'Merge', + typeVersion: 3, + type: 'n8n-nodes-base.merge', + position: [50, 50], + parameters: {}, +}; + +const inputsData = [ + [ + { + json: { + id: 1, + data: 'a', + name: 'Sam', + }, + }, + { + json: { + id: 2, + data: 'b', + name: 'Dan', + }, + }, + { + json: { + id: 3, + data: 'c', + name: 'Jon', + }, + }, + { + json: { + id: 6, + data: 'e', + name: 'Ron', + }, + }, + { + json: { + id: 7, + data: 'f', + name: 'Joe', + }, + }, + ], + [ + { + json: { + id: 1, + data: 'aa', + country: 'PL', + }, + }, + { + json: { + id: 2, + data: 'bb', + country: 'FR', + }, + }, + { + json: { + id: 3, + data: 'cc', + country: 'UA', + }, + }, + { + json: { + id: 4, + data: 'ee', + country: 'US', + }, + }, + { + json: { + id: 5, + data: 'ff', + country: 'ES', + }, + }, + ], +]; +describe('Test MergeV3, combineBySql operation', () => { + it('LEFT JOIN', async () => { + const nodeParameters: IDataObject = { + operation: 'combineBySql', + query: + 'SELECT *, input1.data as data_1\nFROM input1\nLEFT JOIN input2\nON input1.id = input2.id\n', + }; + + const returnData = await mode.combineBySql.execute.call( + createMockExecuteFunction(nodeParameters, node), + inputsData, + ); + + expect(returnData[0].json).toEqual({ + data_1: 'a', + id: 1, + data: 'aa', + name: 'Sam', + country: 'PL', + }); + }); + it('LEFT JOIN, missing input 2(empty array)', async () => { + const nodeParameters: IDataObject = { + operation: 'combineBySql', + query: + 'SELECT *, input1.data as data_1\nFROM input1\nLEFT JOIN input2\nON input1.id = input2.id\n', + }; + + const returnData = await mode.combineBySql.execute.call( + createMockExecuteFunction(nodeParameters, node), + [inputsData[0], []], + ); + + expect(returnData[0].json).toEqual({ + data: 'a', + data_1: 'a', + id: 1, + name: 'Sam', + }); + }); + + it('LEFT JOIN, missing data in input 2', async () => { + const nodeParameters: IDataObject = { + operation: 'combineBySql', + query: + 'SELECT *, input1.data as data_1\nFROM input1\nLEFT JOIN input2\nON input1.id = input2.id\n', + }; + + try { + await mode.combineBySql.execute.call(createMockExecuteFunction(nodeParameters, node), [ + inputsData[0], + ]); + + expect(true).toBe(false); + } catch (error) { + expect(error.message).toBe('Issue while executing query'); + expect(error.description).toBe('Table does not exist: input2'); + } + }); + + it('LEFT JOIN, invalid syntax', async () => { + const nodeParameters: IDataObject = { + operation: 'combineBySql', + query: + 'SELECTTT *, input1.data as data_1\nFROM input1\nLEFT JOIN input2\nON input1.id = input2.id\n', + }; + + try { + await mode.combineBySql.execute.call( + createMockExecuteFunction(nodeParameters, node), + inputsData, + ); + + expect(true).toBe(false); + } catch (error) { + expect(error.message).toBe('Issue while executing query'); + expect(error.description.includes('Parse error')).toBe(true); + expect(error.description.includes('SELECTTT')).toBe(true); + } + }); + + it('RIGHT JOIN', async () => { + const nodeParameters: IDataObject = { + operation: 'combineBySql', + query: 'SELECT *\nFROM input1\nRIGHT JOIN input2\nON input1.id = input2.id;\n', + }; + + const returnData = await mode.combineBySql.execute.call( + createMockExecuteFunction(nodeParameters, node), + inputsData, + ); + + expect(returnData[0].json).toEqual({ + id: 1, + data: 'aa', + name: 'Sam', + country: 'PL', + }); + expect(returnData[4].json).toEqual({ + id: 5, + data: 'ff', + country: 'ES', + }); + }); + + it('INNER JOIN', async () => { + const nodeParameters: IDataObject = { + operation: 'combineBySql', + query: 'SELECT *\nFROM input1\nINNER JOIN input2\nON input1.id = input2.id;\n', + }; + + const returnData = await mode.combineBySql.execute.call( + createMockExecuteFunction(nodeParameters, node), + inputsData, + ); + + expect(returnData.length).toEqual(3); + expect(returnData[2].json).toEqual({ + id: 3, + data: 'cc', + name: 'Jon', + country: 'UA', + }); + }); + + it('FULL OUTER JOIN', async () => { + const nodeParameters: IDataObject = { + operation: 'combineBySql', + query: 'SELECT *\nFROM input1\nFULL OUTER JOIN input2\nON input1.id = input2.id;\n', + }; + + const returnData = await mode.combineBySql.execute.call( + createMockExecuteFunction(nodeParameters, node), + inputsData, + ); + + expect(returnData.length).toEqual(7); + expect(returnData[2].json).toEqual({ + id: 3, + data: 'cc', + name: 'Jon', + country: 'UA', + }); + }); + it('CROSS JOIN', async () => { + const nodeParameters: IDataObject = { + operation: 'combineBySql', + query: 'SELECT *, input1.data AS data_1\nFROM input1\nCROSS JOIN input2;\n', + }; + + const returnData = await mode.combineBySql.execute.call( + createMockExecuteFunction(nodeParameters, node), + inputsData, + ); + + expect(returnData.length).toEqual(25); + expect(returnData[0].json).toEqual({ + data_1: 'a', + id: 1, + data: 'aa', + name: 'Sam', + country: 'PL', + }); + }); +}); + +describe('Test MergeV3, append operation', () => { + it('append inputs', async () => { + const nodeParameters: IDataObject = {}; + + const returnData = await mode.append.execute.call( + createMockExecuteFunction(nodeParameters, node), + inputsData, + ); + + expect(returnData.length).toEqual(10); + expect(returnData[0].json).toEqual({ + id: 1, + data: 'a', + name: 'Sam', + }); + }); +}); +describe('Test MergeV3, combineByFields operation', () => { + it('merge inputs', async () => { + const nodeParameters: IDataObject = { + joinMode: 'keepMatches', + fieldsToMatchString: 'id', + options: {}, + }; + + const returnData = await mode.combineByFields.execute.call( + createMockExecuteFunction(nodeParameters, node), + inputsData, + ); + + expect(returnData.length).toEqual(3); + expect(returnData[1].json).toEqual({ + id: 2, + data: 'bb', + name: 'Dan', + country: 'FR', + }); + }); +}); + +describe('Test MergeV3, combineByPosition operation', () => { + it('combine inputs', async () => { + const nodeParameters: IDataObject = {}; + + const returnData = await mode.combineByPosition.execute.call( + createMockExecuteFunction(nodeParameters, node), + inputsData, + ); + + expect(returnData.length).toEqual(5); + expect(returnData[4].json).toEqual({ + id: 5, + data: 'ff', + name: 'Joe', + country: 'ES', + }); + }); +}); + +describe('Test MergeV3, chooseBranch operation', () => { + it('choose input', async () => { + const nodeParameters: IDataObject = { + useDataOfInput: 2, + chooseBranchMode: 'waitForAll', + output: 'specifiedInput', + }; + + const returnData = await mode.chooseBranch.execute.call( + createMockExecuteFunction(nodeParameters, node), + inputsData, + ); + + expect(returnData.length).toEqual(5); + expect(returnData[0].json).toEqual({ + id: 1, + data: 'aa', + country: 'PL', + }); + }); +}); + +describe('Test MergeV3, combineAll operation', () => { + it('combine inputs', async () => { + const nodeParameters: IDataObject = { + options: {}, + }; + + const returnData = await mode.combineAll.execute.call( + createMockExecuteFunction(nodeParameters, node), + inputsData, + ); + + expect(returnData.length).toEqual(25); + expect(returnData[0].json).toEqual({ + id: 1, + data: 'aa', + name: 'Sam', + country: 'PL', + }); + }); +}); diff --git a/packages/nodes-base/nodes/Merge/v1/MergeV1.node.ts b/packages/nodes-base/nodes/Merge/v1/MergeV1.node.ts index 10f185b25a..7105e1aa9a 100644 --- a/packages/nodes-base/nodes/Merge/v1/MergeV1.node.ts +++ b/packages/nodes-base/nodes/Merge/v1/MergeV1.node.ts @@ -9,7 +9,7 @@ import type { INodeTypeDescription, IPairedItemData, } from 'n8n-workflow'; -import { deepCopy } from 'n8n-workflow'; +import { NodeConnectionType, deepCopy } from 'n8n-workflow'; import { generatePairedItemData } from '../../../utils/utilities'; import { oldVersionNotice } from '@utils/descriptions'; @@ -27,8 +27,8 @@ export class MergeV1 implements INodeType { color: '#00bbcc', }, - inputs: ['main', 'main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main, NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], inputNames: ['Input 1', 'Input 2'], properties: [ oldVersionNotice, diff --git a/packages/nodes-base/nodes/Merge/v2/MergeV2.node.ts b/packages/nodes-base/nodes/Merge/v2/MergeV2.node.ts index e5f4c3dbd2..6adc63aa1e 100644 --- a/packages/nodes-base/nodes/Merge/v2/MergeV2.node.ts +++ b/packages/nodes-base/nodes/Merge/v2/MergeV2.node.ts @@ -1,13 +1,14 @@ import merge from 'lodash/merge'; -import type { - IExecuteFunctions, - IDataObject, - INodeExecutionData, - INodeType, - INodeTypeBaseDescription, - INodeTypeDescription, - IPairedItemData, +import { + type IExecuteFunctions, + type IDataObject, + type INodeExecutionData, + type INodeType, + type INodeTypeBaseDescription, + type INodeTypeDescription, + type IPairedItemData, + NodeConnectionType, } from 'n8n-workflow'; import type { @@ -15,7 +16,8 @@ import type { MatchFieldsJoinMode, MatchFieldsOptions, MatchFieldsOutput, -} from './GenericFunctions'; +} from './interfaces'; + import { addSourceField, addSuffixToEntriesKeys, @@ -24,9 +26,9 @@ import { findMatches, mergeMatched, selectMergeMethod, -} from './GenericFunctions'; +} from './utils'; -import { optionsDescription } from './OptionsDescription'; +import { optionsDescription } from './descriptions'; import { preparePairedItemDataArray } from '@utils/utilities'; export class MergeV2 implements INodeType { @@ -40,8 +42,8 @@ export class MergeV2 implements INodeType { name: 'Merge', }, - inputs: ['main', 'main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main, NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], inputNames: ['Input 1', 'Input 2'], // If mode is chooseBranch data from both branches is required // to continue, else data from any input suffices diff --git a/packages/nodes-base/nodes/Merge/v2/OptionsDescription.ts b/packages/nodes-base/nodes/Merge/v2/descriptions.ts similarity index 99% rename from packages/nodes-base/nodes/Merge/v2/OptionsDescription.ts rename to packages/nodes-base/nodes/Merge/v2/descriptions.ts index 77e791be58..e5c0979adb 100644 --- a/packages/nodes-base/nodes/Merge/v2/OptionsDescription.ts +++ b/packages/nodes-base/nodes/Merge/v2/descriptions.ts @@ -80,7 +80,7 @@ export const optionsDescription: INodeProperties[] = [ displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, options: [ { diff --git a/packages/nodes-base/nodes/Merge/v2/interfaces.ts b/packages/nodes-base/nodes/Merge/v2/interfaces.ts new file mode 100644 index 0000000000..841930c585 --- /dev/null +++ b/packages/nodes-base/nodes/Merge/v2/interfaces.ts @@ -0,0 +1,27 @@ +type MultipleMatches = 'all' | 'first'; + +export type MatchFieldsOptions = { + joinMode: MatchFieldsJoinMode; + outputDataFrom: MatchFieldsOutput; + multipleMatches: MultipleMatches; + disableDotNotation: boolean; + fuzzyCompare?: boolean; +}; + +type ClashMergeMode = 'deepMerge' | 'shallowMerge'; +type ClashResolveMode = 'addSuffix' | 'preferInput1' | 'preferInput2'; + +export type ClashResolveOptions = { + resolveClash: ClashResolveMode; + mergeMode: ClashMergeMode; + overrideEmpty: boolean; +}; + +export type MatchFieldsOutput = 'both' | 'input1' | 'input2'; + +export type MatchFieldsJoinMode = + | 'keepEverything' + | 'keepMatches' + | 'keepNonMatches' + | 'enrichInput2' + | 'enrichInput1'; diff --git a/packages/nodes-base/nodes/Merge/v2/GenericFunctions.ts b/packages/nodes-base/nodes/Merge/v2/utils.ts similarity index 93% rename from packages/nodes-base/nodes/Merge/v2/GenericFunctions.ts rename to packages/nodes-base/nodes/Merge/v2/utils.ts index 5255ffa392..ec5180c5a5 100644 --- a/packages/nodes-base/nodes/Merge/v2/GenericFunctions.ts +++ b/packages/nodes-base/nodes/Merge/v2/utils.ts @@ -12,6 +12,8 @@ import assignWith from 'lodash/assignWith'; import get from 'lodash/get'; import merge from 'lodash/merge'; import mergeWith from 'lodash/mergeWith'; + +import type { ClashResolveOptions, MatchFieldsJoinMode, MatchFieldsOptions } from './interfaces'; import { fuzzyCompare, preparePairedItemDataArray } from '@utils/utilities'; type PairToMatch = { @@ -19,35 +21,6 @@ type PairToMatch = { field2: string; }; -export type MatchFieldsOptions = { - joinMode: MatchFieldsJoinMode; - outputDataFrom: MatchFieldsOutput; - multipleMatches: MultipleMatches; - disableDotNotation: boolean; - fuzzyCompare?: boolean; -}; - -export type ClashResolveOptions = { - resolveClash: ClashResolveMode; - mergeMode: ClashMergeMode; - overrideEmpty: boolean; -}; - -type ClashMergeMode = 'deepMerge' | 'shallowMerge'; - -type ClashResolveMode = 'addSuffix' | 'preferInput1' | 'preferInput2'; - -type MultipleMatches = 'all' | 'first'; - -export type MatchFieldsOutput = 'both' | 'input1' | 'input2'; - -export type MatchFieldsJoinMode = - | 'keepEverything' - | 'keepMatches' - | 'keepNonMatches' - | 'enrichInput2' - | 'enrichInput1'; - type EntryMatches = { entry: INodeExecutionData; matches: INodeExecutionData[]; diff --git a/packages/nodes-base/nodes/Merge/v3/MergeV3.node.ts b/packages/nodes-base/nodes/Merge/v3/MergeV3.node.ts new file mode 100644 index 0000000000..f194d9e54a --- /dev/null +++ b/packages/nodes-base/nodes/Merge/v3/MergeV3.node.ts @@ -0,0 +1,29 @@ +import type { + IExecuteFunctions, + INodeType, + INodeTypeBaseDescription, + INodeTypeDescription, +} from 'n8n-workflow'; + +import { versionDescription } from './actions/versionDescription'; +import { router } from './actions/router'; +import { loadOptions } from './methods'; + +export class MergeV3 implements INodeType { + description: INodeTypeDescription; + + constructor(baseDescription: INodeTypeBaseDescription) { + this.description = { + ...baseDescription, + ...versionDescription, + }; + } + + methods = { + loadOptions, + }; + + async execute(this: IExecuteFunctions) { + return await router.call(this); + } +} diff --git a/packages/nodes-base/nodes/Merge/v3/actions/mode/append.ts b/packages/nodes-base/nodes/Merge/v3/actions/mode/append.ts new file mode 100644 index 0000000000..1eaf58a0a8 --- /dev/null +++ b/packages/nodes-base/nodes/Merge/v3/actions/mode/append.ts @@ -0,0 +1,31 @@ +import { + type IExecuteFunctions, + type INodeExecutionData, + type INodeProperties, +} from 'n8n-workflow'; + +import { numberInputsProperty } from '../../helpers/descriptions'; +import { updateDisplayOptions } from '@utils/utilities'; + +export const properties: INodeProperties[] = [numberInputsProperty]; + +const displayOptions = { + show: { + mode: ['append'], + }, +}; + +export const description = updateDisplayOptions(displayOptions, properties); + +export async function execute( + this: IExecuteFunctions, + inputsData: INodeExecutionData[][], +): Promise { + const returnData: INodeExecutionData[] = []; + + for (let i = 0; i < inputsData.length; i++) { + returnData.push.apply(returnData, inputsData[i]); + } + + return returnData; +} diff --git a/packages/nodes-base/nodes/Merge/v3/actions/mode/chooseBranch.ts b/packages/nodes-base/nodes/Merge/v3/actions/mode/chooseBranch.ts new file mode 100644 index 0000000000..5bd416ca18 --- /dev/null +++ b/packages/nodes-base/nodes/Merge/v3/actions/mode/chooseBranch.ts @@ -0,0 +1,109 @@ +import { NodeOperationError } from 'n8n-workflow'; +import type { IExecuteFunctions, INodeExecutionData, INodeProperties } from 'n8n-workflow'; + +import { numberInputsProperty } from '../../helpers/descriptions'; +import { preparePairedItemDataArray, updateDisplayOptions } from '@utils/utilities'; + +export const properties: INodeProperties[] = [ + numberInputsProperty, + { + displayName: 'Output Type', + name: 'chooseBranchMode', + type: 'options', + options: [ + { + name: 'Wait for All Inputs to Arrive', + value: 'waitForAll', + }, + ], + default: 'waitForAll', + }, + { + displayName: 'Output', + name: 'output', + type: 'options', + options: [ + { + name: 'Data of Specified Input', + value: 'specifiedInput', + }, + { + name: 'A Single, Empty Item', + value: 'empty', + }, + ], + default: 'specifiedInput', + displayOptions: { + show: { + chooseBranchMode: ['waitForAll'], + }, + }, + }, + { + // eslint-disable-next-line n8n-nodes-base/node-param-display-name-wrong-for-dynamic-options + displayName: 'Use Data of Input', + name: 'useDataOfInput', + type: 'options', + default: 1, + displayOptions: { + show: { + output: ['specifiedInput'], + }, + }, + typeOptions: { + minValue: 1, + loadOptionsMethod: 'getInputs', + loadOptionsDependsOn: ['numberInputs'], + }, + // eslint-disable-next-line n8n-nodes-base/node-param-description-wrong-for-dynamic-options + description: 'The number of the input to use data of', + validateType: 'number', + }, +]; + +const displayOptions = { + show: { + mode: ['chooseBranch'], + }, +}; + +export const description = updateDisplayOptions(displayOptions, properties); + +export async function execute( + this: IExecuteFunctions, + inputsData: INodeExecutionData[][], +): Promise { + const returnData: INodeExecutionData[] = []; + + const chooseBranchMode = this.getNodeParameter('chooseBranchMode', 0) as string; + + if (chooseBranchMode === 'waitForAll') { + const output = this.getNodeParameter('output', 0) as string; + + if (output === 'specifiedInput') { + const useDataOfInput = this.getNodeParameter('useDataOfInput', 0) as number; + if (useDataOfInput > inputsData.length) { + throw new NodeOperationError(this.getNode(), `Input ${useDataOfInput} doesn't exist`, { + description: `The node has only ${inputsData.length} inputs, so selecting input ${useDataOfInput} is not possible.`, + }); + } + + const inputData = inputsData[useDataOfInput - 1]; + + returnData.push.apply(returnData, inputData); + } + if (output === 'empty') { + const pairedItem = [ + ...this.getInputData(0).map((inputData) => inputData.pairedItem), + ...this.getInputData(1).map((inputData) => inputData.pairedItem), + ].flatMap(preparePairedItemDataArray); + + returnData.push({ + json: {}, + pairedItem, + }); + } + } + + return returnData; +} diff --git a/packages/nodes-base/nodes/Merge/v3/actions/mode/combineAll.ts b/packages/nodes-base/nodes/Merge/v3/actions/mode/combineAll.ts new file mode 100644 index 0000000000..504fab3d1f --- /dev/null +++ b/packages/nodes-base/nodes/Merge/v3/actions/mode/combineAll.ts @@ -0,0 +1,83 @@ +import type { + IExecuteFunctions, + INodeExecutionData, + INodeProperties, + IPairedItemData, +} from 'n8n-workflow'; + +import merge from 'lodash/merge'; +import type { ClashResolveOptions } from '../../helpers/interfaces'; + +import { clashHandlingProperties, fuzzyCompareProperty } from '../../helpers/descriptions'; +import { addSuffixToEntriesKeys, selectMergeMethod } from '../../helpers/utils'; +import { updateDisplayOptions } from '@utils/utilities'; + +export const properties: INodeProperties[] = [ + { + displayName: 'Options', + name: 'options', + type: 'collection', + placeholder: 'Add option', + default: {}, + options: [clashHandlingProperties, fuzzyCompareProperty], + }, +]; + +const displayOptions = { + show: { + mode: ['combine'], + combineBy: ['combineAll'], + }, +}; + +export const description = updateDisplayOptions(displayOptions, properties); + +export async function execute( + this: IExecuteFunctions, + inputsData: INodeExecutionData[][], +): Promise { + const returnData: INodeExecutionData[] = []; + + const clashHandling = this.getNodeParameter( + 'options.clashHandling.values', + 0, + {}, + ) as ClashResolveOptions; + + let input1 = inputsData[0]; + let input2 = inputsData[1]; + + if (clashHandling.resolveClash === 'preferInput1') { + [input1, input2] = [input2, input1]; + } + + if (clashHandling.resolveClash === 'addSuffix') { + input1 = addSuffixToEntriesKeys(input1, '1'); + input2 = addSuffixToEntriesKeys(input2, '2'); + } + + const mergeIntoSingleObject = selectMergeMethod(clashHandling); + + if (!input1 || !input2) { + return returnData; + } + + let entry1: INodeExecutionData; + let entry2: INodeExecutionData; + + for (entry1 of input1) { + for (entry2 of input2) { + returnData.push({ + json: { + ...mergeIntoSingleObject(entry1.json, entry2.json), + }, + binary: { + ...merge({}, entry1.binary, entry2.binary), + }, + pairedItem: [entry1.pairedItem as IPairedItemData, entry2.pairedItem as IPairedItemData], + }); + } + } + + return returnData; +} diff --git a/packages/nodes-base/nodes/Merge/v3/actions/mode/combineByFields.ts b/packages/nodes-base/nodes/Merge/v3/actions/mode/combineByFields.ts new file mode 100644 index 0000000000..53620d3b05 --- /dev/null +++ b/packages/nodes-base/nodes/Merge/v3/actions/mode/combineByFields.ts @@ -0,0 +1,419 @@ +import type { + IDataObject, + IExecuteFunctions, + INodeExecutionData, + INodeProperties, +} from 'n8n-workflow'; + +import type { + ClashResolveOptions, + MatchFieldsJoinMode, + MatchFieldsOptions, + MatchFieldsOutput, +} from '../../helpers/interfaces'; +import { clashHandlingProperties, fuzzyCompareProperty } from '../../helpers/descriptions'; +import { + addSourceField, + addSuffixToEntriesKeys, + checkInput, + checkMatchFieldsInput, + findMatches, + mergeMatched, +} from '../../helpers/utils'; +import { updateDisplayOptions } from '@utils/utilities'; + +const multipleMatchesProperty: INodeProperties = { + displayName: 'Multiple Matches', + name: 'multipleMatches', + type: 'options', + default: 'all', + options: [ + { + name: 'Include All Matches', + value: 'all', + description: 'Output multiple items if there are multiple matches', + }, + { + name: 'Include First Match Only', + value: 'first', + description: 'Only ever output a single item per match', + }, + ], +}; + +export const properties: INodeProperties[] = [ + { + displayName: 'Fields To Match Have Different Names', + name: 'advanced', + type: 'boolean', + default: false, + description: 'Whether name(s) of field to match are different in input 1 and input 2', + }, + { + displayName: 'Fields to Match', + name: 'fieldsToMatchString', + type: 'string', + // eslint-disable-next-line n8n-nodes-base/node-param-placeholder-miscased-id + placeholder: 'e.g. id, name', + default: '', + requiresDataPath: 'multiple', + description: 'Specify the fields to use for matching input items', + hint: 'Drag or type the input field name', + displayOptions: { + show: { + advanced: [false], + }, + }, + }, + { + displayName: 'Fields to Match', + name: 'mergeByFields', + type: 'fixedCollection', + placeholder: 'Add Fields to Match', + default: { values: [{ field1: '', field2: '' }] }, + typeOptions: { + multipleValues: true, + }, + description: 'Specify the fields to use for matching input items', + displayOptions: { + show: { + advanced: [true], + }, + }, + options: [ + { + displayName: 'Values', + name: 'values', + values: [ + { + displayName: 'Input 1 Field', + name: 'field1', + type: 'string', + default: '', + // eslint-disable-next-line n8n-nodes-base/node-param-placeholder-miscased-id + placeholder: 'e.g. id', + hint: 'Drag or type the input field name', + requiresDataPath: 'single', + }, + { + displayName: 'Input 2 Field', + name: 'field2', + type: 'string', + default: '', + // eslint-disable-next-line n8n-nodes-base/node-param-placeholder-miscased-id + placeholder: 'e.g. id', + hint: 'Drag or type the input field name', + requiresDataPath: 'single', + }, + ], + }, + ], + }, + { + displayName: 'Output Type', + name: 'joinMode', + type: 'options', + description: 'How to select the items to send to output', + // eslint-disable-next-line n8n-nodes-base/node-param-options-type-unsorted-items + options: [ + { + name: 'Keep Matches', + value: 'keepMatches', + description: 'Items that match, merged together (inner join)', + }, + { + name: 'Keep Non-Matches', + value: 'keepNonMatches', + description: "Items that don't match", + }, + { + name: 'Keep Everything', + value: 'keepEverything', + description: "Items that match merged together, plus items that don't match (outer join)", + }, + { + name: 'Enrich Input 1', + value: 'enrichInput1', + description: 'All of input 1, with data from input 2 added in (left join)', + }, + { + name: 'Enrich Input 2', + value: 'enrichInput2', + description: 'All of input 2, with data from input 1 added in (right join)', + }, + ], + default: 'keepMatches', + }, + { + displayName: 'Output Data From', + name: 'outputDataFrom', + type: 'options', + options: [ + { + name: 'Both Inputs Merged Together', + value: 'both', + }, + { + name: 'Input 1', + value: 'input1', + }, + { + name: 'Input 2', + value: 'input2', + }, + ], + default: 'both', + displayOptions: { + show: { + joinMode: ['keepMatches'], + }, + }, + }, + { + displayName: 'Output Data From', + name: 'outputDataFrom', + type: 'options', + options: [ + { + name: 'Both Inputs Appended Together', + value: 'both', + }, + { + name: 'Input 1', + value: 'input1', + }, + { + name: 'Input 2', + value: 'input2', + }, + ], + default: 'both', + displayOptions: { + show: { + joinMode: ['keepNonMatches'], + }, + }, + }, + { + displayName: 'Options', + name: 'options', + type: 'collection', + placeholder: 'Add option', + default: {}, + options: [ + { + ...clashHandlingProperties, + displayOptions: { + hide: { + '/joinMode': ['keepMatches', 'keepNonMatches'], + }, + }, + }, + { + ...clashHandlingProperties, + displayOptions: { + show: { + '/joinMode': ['keepMatches'], + '/outputDataFrom': ['both'], + }, + }, + }, + { + displayName: 'Disable Dot Notation', + name: 'disableDotNotation', + type: 'boolean', + default: false, + description: + 'Whether to disallow referencing child fields using `parent.child` in the field name', + }, + fuzzyCompareProperty, + { + ...multipleMatchesProperty, + displayOptions: { + show: { + '/joinMode': ['keepMatches'], + '/outputDataFrom': ['both'], + }, + }, + }, + { + ...multipleMatchesProperty, + displayOptions: { + show: { + '/joinMode': ['enrichInput1', 'enrichInput2', 'keepEverything'], + }, + }, + }, + ], + }, +]; + +const displayOptions = { + show: { + mode: ['combine'], + combineBy: ['combineByFields'], + }, +}; + +export const description = updateDisplayOptions(displayOptions, properties); + +export async function execute( + this: IExecuteFunctions, + inputsData: INodeExecutionData[][], +): Promise { + const returnData: INodeExecutionData[] = []; + const advanced = this.getNodeParameter('advanced', 0) as boolean; + let matchFields; + + if (advanced) { + matchFields = this.getNodeParameter('mergeByFields.values', 0, []) as IDataObject[]; + } else { + matchFields = (this.getNodeParameter('fieldsToMatchString', 0, '') as string) + .split(',') + .map((f) => { + const field = f.trim(); + return { field1: field, field2: field }; + }); + } + + matchFields = checkMatchFieldsInput(matchFields); + + const joinMode = this.getNodeParameter('joinMode', 0) as MatchFieldsJoinMode; + const outputDataFrom = this.getNodeParameter('outputDataFrom', 0, 'both') as MatchFieldsOutput; + const options = this.getNodeParameter('options', 0, {}) as MatchFieldsOptions; + + options.joinMode = joinMode; + options.outputDataFrom = outputDataFrom; + + const nodeVersion = this.getNode().typeVersion; + + let input1 = inputsData[0]; + let input2 = inputsData[1]; + + if (nodeVersion < 2.1) { + input1 = checkInput( + this.getInputData(0), + matchFields.map((pair) => pair.field1), + options.disableDotNotation || false, + 'Input 1', + ); + if (!input1) return returnData; + + input2 = checkInput( + this.getInputData(1), + matchFields.map((pair) => pair.field2), + options.disableDotNotation || false, + 'Input 2', + ); + } else { + if (!input1) return returnData; + } + + if (input1.length === 0 || input2.length === 0) { + if (!input1.length && joinMode === 'keepNonMatches' && outputDataFrom === 'input1') + return returnData; + if (!input2.length && joinMode === 'keepNonMatches' && outputDataFrom === 'input2') + return returnData; + + if (joinMode === 'keepMatches') { + // Stop the execution + return []; + } else if (joinMode === 'enrichInput1' && input1.length === 0) { + // No data to enrich so stop + return []; + } else if (joinMode === 'enrichInput2' && input2.length === 0) { + // No data to enrich so stop + return []; + } else { + // Return the data of any of the inputs that contains data + return [...input1, ...input2]; + } + } + + if (!input1) return returnData; + + if (!input2 || !matchFields.length) { + if ( + joinMode === 'keepMatches' || + joinMode === 'keepEverything' || + joinMode === 'enrichInput2' + ) { + return returnData; + } + return input1; + } + + const matches = findMatches(input1, input2, matchFields, options); + + if (joinMode === 'keepMatches' || joinMode === 'keepEverything') { + let output: INodeExecutionData[] = []; + const clashResolveOptions = this.getNodeParameter( + 'options.clashHandling.values', + 0, + {}, + ) as ClashResolveOptions; + + if (outputDataFrom === 'input1') { + output = matches.matched.map((match) => match.entry); + } + if (outputDataFrom === 'input2') { + output = matches.matched2; + } + if (outputDataFrom === 'both') { + output = mergeMatched(matches.matched, clashResolveOptions); + } + + if (joinMode === 'keepEverything') { + let unmatched1 = matches.unmatched1; + let unmatched2 = matches.unmatched2; + if (clashResolveOptions.resolveClash === 'addSuffix') { + unmatched1 = addSuffixToEntriesKeys(unmatched1, '1'); + unmatched2 = addSuffixToEntriesKeys(unmatched2, '2'); + } + output = [...output, ...unmatched1, ...unmatched2]; + } + + returnData.push(...output); + } + + if (joinMode === 'keepNonMatches') { + if (outputDataFrom === 'input1') { + return matches.unmatched1; + } + if (outputDataFrom === 'input2') { + return matches.unmatched2; + } + if (outputDataFrom === 'both') { + let output: INodeExecutionData[] = []; + output = output.concat(addSourceField(matches.unmatched1, 'input1')); + output = output.concat(addSourceField(matches.unmatched2, 'input2')); + return output; + } + } + + if (joinMode === 'enrichInput1' || joinMode === 'enrichInput2') { + const clashResolveOptions = this.getNodeParameter( + 'options.clashHandling.values', + 0, + {}, + ) as ClashResolveOptions; + + const mergedEntries = mergeMatched(matches.matched, clashResolveOptions, joinMode); + + if (joinMode === 'enrichInput1') { + if (clashResolveOptions.resolveClash === 'addSuffix') { + returnData.push(...mergedEntries, ...addSuffixToEntriesKeys(matches.unmatched1, '1')); + } else { + returnData.push(...mergedEntries, ...matches.unmatched1); + } + } else { + if (clashResolveOptions.resolveClash === 'addSuffix') { + returnData.push(...mergedEntries, ...addSuffixToEntriesKeys(matches.unmatched2, '2')); + } else { + returnData.push(...mergedEntries, ...matches.unmatched2); + } + } + } + + return returnData; +} diff --git a/packages/nodes-base/nodes/Merge/v3/actions/mode/combineByPosition.ts b/packages/nodes-base/nodes/Merge/v3/actions/mode/combineByPosition.ts new file mode 100644 index 0000000000..67ed47c15b --- /dev/null +++ b/packages/nodes-base/nodes/Merge/v3/actions/mode/combineByPosition.ts @@ -0,0 +1,124 @@ +import { + NodeExecutionOutput, + type IExecuteFunctions, + type INodeExecutionData, + type INodeProperties, + type IPairedItemData, +} from 'n8n-workflow'; + +import merge from 'lodash/merge'; +import type { ClashResolveOptions } from '../../helpers/interfaces'; + +import { clashHandlingProperties, numberInputsProperty } from '../../helpers/descriptions'; +import { addSuffixToEntriesKeys, selectMergeMethod } from '../../helpers/utils'; +import { updateDisplayOptions } from '@utils/utilities'; + +export const properties: INodeProperties[] = [ + numberInputsProperty, + { + displayName: 'Options', + name: 'options', + type: 'collection', + placeholder: 'Add option', + default: {}, + options: [ + { + ...clashHandlingProperties, + default: { values: { resolveClash: 'addSuffix' } }, + }, + { + displayName: 'Include Any Unpaired Items', + name: 'includeUnpaired', + type: 'boolean', + default: false, + description: + 'Whether unpaired items should be included in the result when there are differing numbers of items among the inputs', + }, + ], + }, +]; + +const displayOptions = { + show: { + mode: ['combine'], + combineBy: ['combineByPosition'], + }, +}; + +export const description = updateDisplayOptions(displayOptions, properties); + +export async function execute( + this: IExecuteFunctions, + inputsData: INodeExecutionData[][], +): Promise { + const returnData: INodeExecutionData[] = []; + + const clashHandling = this.getNodeParameter( + 'options.clashHandling.values', + 0, + {}, + ) as ClashResolveOptions; + const includeUnpaired = this.getNodeParameter('options.includeUnpaired', 0, false) as boolean; + + let preferredInputIndex: number; + + if (clashHandling?.resolveClash?.includes('preferInput')) { + preferredInputIndex = Number(clashHandling.resolveClash.replace('preferInput', '')) - 1; + } else { + preferredInputIndex = inputsData.length - 1; + } + + const preferred = inputsData[preferredInputIndex]; + + if (clashHandling.resolveClash === 'addSuffix') { + for (const [inputIndex, input] of inputsData.entries()) { + inputsData[inputIndex] = addSuffixToEntriesKeys(input, String(inputIndex + 1)); + } + } + + let numEntries: number; + if (includeUnpaired) { + numEntries = Math.max(...inputsData.map((input) => input.length), preferred.length); + } else { + numEntries = Math.min(...inputsData.map((input) => input.length), preferred.length); + if (numEntries === 0) { + return new NodeExecutionOutput( + [returnData], + [ + { + message: + 'Consider enabling "Include Any Unpaired Items" in options or check your inputs', + }, + ], + ); + } + } + + const mergeIntoSingleObject = selectMergeMethod(clashHandling); + + for (let i = 0; i < numEntries; i++) { + const preferredEntry = preferred[i] ?? {}; + const restEntries = inputsData.map((input) => input[i] ?? {}); + + const json = { + ...mergeIntoSingleObject( + {}, + ...restEntries.map((entry) => entry.json ?? {}), + preferredEntry.json ?? {}, + ), + }; + + const binary = { + ...merge({}, ...restEntries.map((entry) => entry.binary ?? {}), preferredEntry.binary ?? {}), + }; + + const pairedItem = [ + ...restEntries.map((entry) => entry.pairedItem as IPairedItemData).flat(), + preferredEntry.pairedItem as IPairedItemData, + ].filter((item) => item !== undefined); + + returnData.push({ json, binary, pairedItem }); + } + + return returnData; +} diff --git a/packages/nodes-base/nodes/Merge/v3/actions/mode/combineBySql.ts b/packages/nodes-base/nodes/Merge/v3/actions/mode/combineBySql.ts new file mode 100644 index 0000000000..055db7572d --- /dev/null +++ b/packages/nodes-base/nodes/Merge/v3/actions/mode/combineBySql.ts @@ -0,0 +1,136 @@ +import type { + IDataObject, + IExecuteFunctions, + INodeExecutionData, + INodeProperties, + IPairedItemData, +} from 'n8n-workflow'; +import { NodeOperationError } from 'n8n-workflow'; + +import alasql from 'alasql'; +import type { Database } from 'alasql'; +import { numberInputsProperty } from '../../helpers/descriptions'; +import { getResolvables, updateDisplayOptions } from '@utils/utilities'; + +export const properties: INodeProperties[] = [ + numberInputsProperty, + { + displayName: 'Query', + name: 'query', + type: 'string', + default: 'SELECT * FROM input1 LEFT JOIN input2 ON input1.name = input2.id', + noDataExpression: true, + description: 'Input data available as tables with corresponding number, e.g. input1, input2', + hint: 'Supports most of the SQL-99 language', + required: true, + typeOptions: { + rows: 5, + editor: 'sqlEditor', + }, + }, +]; + +const displayOptions = { + show: { + mode: ['combineBySql'], + }, +}; + +export const description = updateDisplayOptions(displayOptions, properties); + +export async function execute( + this: IExecuteFunctions, + inputsData: INodeExecutionData[][], +): Promise { + const nodeId = this.getNode().id; + const returnData: INodeExecutionData[] = []; + const pairedItem: IPairedItemData[] = []; + + const db: typeof Database = new (alasql as any).Database(nodeId); + + try { + for (let i = 0; i < inputsData.length; i++) { + const inputData = inputsData[i]; + + inputData.forEach((item, index) => { + if (item.pairedItem === undefined) { + item.pairedItem = index; + } + + if (typeof item.pairedItem === 'number') { + pairedItem.push({ + item: item.pairedItem, + input: i, + }); + return; + } + + if (Array.isArray(item.pairedItem)) { + const pairedItems = item.pairedItem + .filter((p) => p !== undefined) + .map((p) => (typeof p === 'number' ? { item: p } : p)) + .map((p) => { + return { + item: p.item, + input: i, + }; + }); + pairedItem.push(...pairedItems); + return; + } + + pairedItem.push({ + item: item.pairedItem.item, + input: i, + }); + }); + + db.exec(`CREATE TABLE input${i + 1}`); + db.tables[`input${i + 1}`].data = inputData.map((entry) => entry.json); + } + } catch (error) { + throw new NodeOperationError(this.getNode(), error, { + message: 'Issue while creating table from', + description: error.message, + itemIndex: 0, + }); + } + + try { + let query = this.getNodeParameter('query', 0) as string; + + for (const resolvable of getResolvables(query)) { + query = query.replace(resolvable, this.evaluateExpression(resolvable, 0) as string); + } + + const result: IDataObject[] = db.exec(query); + + for (const item of result) { + if (Array.isArray(item)) { + returnData.push(...item.map((json) => ({ json, pairedItem }))); + } else if (typeof item === 'object') { + returnData.push({ json: item, pairedItem }); + } + } + + if (!returnData.length) { + returnData.push({ json: { success: true }, pairedItem }); + } + } catch (error) { + let message = ''; + if (typeof error === 'string') { + message = error; + } else { + message = error.message; + } + throw new NodeOperationError(this.getNode(), error, { + message: 'Issue while executing query', + description: message, + itemIndex: 0, + }); + } + + delete alasql.databases[nodeId]; + + return returnData; +} diff --git a/packages/nodes-base/nodes/Merge/v3/actions/mode/index.ts b/packages/nodes-base/nodes/Merge/v3/actions/mode/index.ts new file mode 100644 index 0000000000..fb10117b79 --- /dev/null +++ b/packages/nodes-base/nodes/Merge/v3/actions/mode/index.ts @@ -0,0 +1,77 @@ +import type { INodeProperties } from 'n8n-workflow'; + +import * as append from './append'; +import * as chooseBranch from './chooseBranch'; +import * as combineAll from './combineAll'; +import * as combineByFields from './combineByFields'; +import * as combineBySql from './combineBySql'; +import * as combineByPosition from './combineByPosition'; + +export { append, chooseBranch, combineAll, combineByFields, combineBySql, combineByPosition }; + +export const description: INodeProperties[] = [ + { + displayName: 'Mode', + name: 'mode', + type: 'options', + noDataExpression: true, + options: [ + { + name: 'Append', + value: 'append', + description: 'Output items of each input, one after the other', + }, + { + name: 'Combine', + value: 'combine', + description: 'Merge matching items together', + }, + { + name: 'SQL Query', + value: 'combineBySql', + description: 'Write a query to do the merge', + }, + { + name: 'Choose Branch', + value: 'chooseBranch', + description: 'Output data from a specific branch, without modifying it', + }, + ], + default: 'append', + description: 'How input data should be merged', + }, + { + displayName: 'Combine By', + name: 'combineBy', + type: 'options', + noDataExpression: true, + options: [ + { + name: 'Matching Fields', + value: 'combineByFields', + description: 'Combine items with the same field values', + }, + { + name: 'Position', + value: 'combineByPosition', + description: 'Combine items based on their order', + }, + { + name: 'All Possible Combinations', + value: 'combineAll', + description: 'Every pairing of every two items (cross join)', + }, + ], + default: 'combineByFields', + description: 'How input data should be merged', + displayOptions: { + show: { mode: ['combine'] }, + }, + }, + ...append.description, + ...combineAll.description, + ...combineByFields.description, + ...combineBySql.description, + ...combineByPosition.description, + ...chooseBranch.description, +]; diff --git a/packages/nodes-base/nodes/Merge/v3/actions/node.type.ts b/packages/nodes-base/nodes/Merge/v3/actions/node.type.ts new file mode 100644 index 0000000000..03dfebc896 --- /dev/null +++ b/packages/nodes-base/nodes/Merge/v3/actions/node.type.ts @@ -0,0 +1,7 @@ +export type MergeType = + | 'append' + | 'combineByFields' + | 'combineBySql' + | 'combineByPosition' + | 'combineAll' + | 'chooseBranch'; diff --git a/packages/nodes-base/nodes/Merge/v3/actions/router.ts b/packages/nodes-base/nodes/Merge/v3/actions/router.ts new file mode 100644 index 0000000000..fe87969a6f --- /dev/null +++ b/packages/nodes-base/nodes/Merge/v3/actions/router.ts @@ -0,0 +1,22 @@ +import { NodeExecutionOutput, type IExecuteFunctions } from 'n8n-workflow'; +import { getNodeInputsData } from '../helpers/utils'; +import type { MergeType } from './node.type'; +import * as mode from './mode'; + +export async function router(this: IExecuteFunctions) { + const inputsData = getNodeInputsData.call(this); + let operationMode = this.getNodeParameter('mode', 0) as string; + + if (operationMode === 'combine') { + const combineBy = this.getNodeParameter('combineBy', 0) as string; + operationMode = combineBy; + } + + const returnData = await mode[operationMode as MergeType].execute.call(this, inputsData); + + if (returnData instanceof NodeExecutionOutput) { + return returnData; + } else { + return [returnData]; + } +} diff --git a/packages/nodes-base/nodes/Merge/v3/actions/versionDescription.ts b/packages/nodes-base/nodes/Merge/v3/actions/versionDescription.ts new file mode 100644 index 0000000000..efcd726f82 --- /dev/null +++ b/packages/nodes-base/nodes/Merge/v3/actions/versionDescription.ts @@ -0,0 +1,22 @@ +/* eslint-disable n8n-nodes-base/node-filename-against-convention */ +import { NodeConnectionType, type INodeTypeDescription } from 'n8n-workflow'; + +import { configuredInputs } from '../helpers/utils'; +import * as mode from './mode'; + +export const versionDescription: INodeTypeDescription = { + displayName: 'Merge', + name: 'merge', + group: ['transform'], + description: 'Merges data of multiple streams once data from both is available', + version: [3], + defaults: { + name: 'Merge', + }, + inputs: `={{(${configuredInputs})($parameter)}}`, + outputs: [NodeConnectionType.Main], + // If mode is chooseBranch data from both branches is required + // to continue, else data from any input suffices + requiredInputs: '={{ $parameter["mode"] === "chooseBranch" ? [0, 1] : 1 }}', + properties: [...mode.description], +}; diff --git a/packages/nodes-base/nodes/Merge/v3/helpers/descriptions.ts b/packages/nodes-base/nodes/Merge/v3/helpers/descriptions.ts new file mode 100644 index 0000000000..439e31b1e4 --- /dev/null +++ b/packages/nodes-base/nodes/Merge/v3/helpers/descriptions.ts @@ -0,0 +1,125 @@ +import type { INodeProperties } from 'n8n-workflow'; + +export const fuzzyCompareProperty: INodeProperties = { + displayName: 'Fuzzy Compare', + name: 'fuzzyCompare', + type: 'boolean', + default: false, + description: + "Whether to tolerate small type differences when comparing fields. E.g. the number 3 and the string '3' are treated as the same.", +}; +export const numberInputsProperty: INodeProperties = { + displayName: 'Number of Inputs', + name: 'numberInputs', + type: 'options', + noDataExpression: true, + default: 2, + options: [ + { + name: '2', + value: 2, + }, + { + name: '3', + value: 3, + }, + { + name: '4', + value: 4, + }, + { + name: '5', + value: 5, + }, + { + name: '6', + value: 6, + }, + { + name: '7', + value: 7, + }, + { + name: '8', + value: 8, + }, + { + name: '9', + value: 9, + }, + { + name: '10', + value: 10, + }, + ], + validateType: 'number', + description: + 'The number of data inputs you want to merge. The node waits for all connected inputs to be executed.', +}; + +export const clashHandlingProperties: INodeProperties = { + displayName: 'Clash Handling', + name: 'clashHandling', + type: 'fixedCollection', + default: { + values: { resolveClash: 'preferLast', mergeMode: 'deepMerge', overrideEmpty: false }, + }, + options: [ + { + displayName: 'Values', + name: 'values', + values: [ + { + // eslint-disable-next-line n8n-nodes-base/node-param-display-name-wrong-for-dynamic-options + displayName: 'When Field Values Clash', + name: 'resolveClash', + // eslint-disable-next-line n8n-nodes-base/node-param-description-missing-from-dynamic-options + type: 'options', + default: '', + typeOptions: { + loadOptionsMethod: 'getResolveClashOptions', + loadOptionsDependsOn: ['numberInputs'], + }, + }, + { + displayName: 'Merging Nested Fields', + name: 'mergeMode', + type: 'options', + default: 'deepMerge', + options: [ + { + name: 'Deep Merge', + value: 'deepMerge', + description: 'Merge at every level of nesting', + }, + { + name: 'Shallow Merge', + value: 'shallowMerge', + description: + 'Merge at the top level only (all nested fields will come from the same input)', + }, + ], + hint: 'How to merge when there are sub-fields below the top-level ones', + displayOptions: { + show: { + resolveClash: [{ _cnd: { not: 'addSuffix' } }], + }, + }, + }, + { + displayName: 'Minimize Empty Fields', + name: 'overrideEmpty', + type: 'boolean', + default: false, + description: + "Whether to override the preferred input version for a field if it is empty and the other version isn't. Here 'empty' means undefined, null or an empty string.", + displayOptions: { + show: { + resolveClash: [{ _cnd: { not: 'addSuffix' } }], + }, + }, + }, + ], + }, + ], +}; diff --git a/packages/nodes-base/nodes/Merge/v3/helpers/interfaces.ts b/packages/nodes-base/nodes/Merge/v3/helpers/interfaces.ts new file mode 100644 index 0000000000..f497f33654 --- /dev/null +++ b/packages/nodes-base/nodes/Merge/v3/helpers/interfaces.ts @@ -0,0 +1,27 @@ +type MultipleMatches = 'all' | 'first'; + +export type MatchFieldsOptions = { + joinMode: MatchFieldsJoinMode; + outputDataFrom: MatchFieldsOutput; + multipleMatches: MultipleMatches; + disableDotNotation: boolean; + fuzzyCompare?: boolean; +}; + +type ClashMergeMode = 'deepMerge' | 'shallowMerge'; +type ClashResolveMode = 'addSuffix' | 'preferInput1' | 'preferLast'; + +export type ClashResolveOptions = { + resolveClash: ClashResolveMode; + mergeMode: ClashMergeMode; + overrideEmpty: boolean; +}; + +export type MatchFieldsOutput = 'both' | 'input1' | 'input2'; + +export type MatchFieldsJoinMode = + | 'keepEverything' + | 'keepMatches' + | 'keepNonMatches' + | 'enrichInput2' + | 'enrichInput1'; diff --git a/packages/nodes-base/nodes/Merge/v3/helpers/utils.ts b/packages/nodes-base/nodes/Merge/v3/helpers/utils.ts new file mode 100644 index 0000000000..0dd650f790 --- /dev/null +++ b/packages/nodes-base/nodes/Merge/v3/helpers/utils.ts @@ -0,0 +1,388 @@ +import { ApplicationError, NodeConnectionType, NodeHelpers } from 'n8n-workflow'; +import type { + GenericValue, + IBinaryKeyData, + IDataObject, + IExecuteFunctions, + INodeExecutionData, + INodeParameters, + IPairedItemData, +} from 'n8n-workflow'; + +import assign from 'lodash/assign'; +import assignWith from 'lodash/assignWith'; +import get from 'lodash/get'; +import merge from 'lodash/merge'; +import mergeWith from 'lodash/mergeWith'; + +import type { ClashResolveOptions, MatchFieldsJoinMode, MatchFieldsOptions } from './interfaces'; +import { fuzzyCompare, preparePairedItemDataArray } from '@utils/utilities'; + +type PairToMatch = { + field1: string; + field2: string; +}; + +type EntryMatches = { + entry: INodeExecutionData; + matches: INodeExecutionData[]; +}; + +type CompareFunction = (a: T, b: U) => boolean; + +export function addSuffixToEntriesKeys(data: INodeExecutionData[], suffix: string) { + return data.map((entry) => { + const json: IDataObject = {}; + Object.keys(entry.json).forEach((key) => { + json[`${key}_${suffix}`] = entry.json[key]; + }); + return { ...entry, json }; + }); +} + +function findAllMatches( + data: INodeExecutionData[], + lookup: IDataObject, + disableDotNotation: boolean, + isEntriesEqual: CompareFunction, +) { + return data.reduce((acc, entry2, i) => { + if (entry2 === undefined) return acc; + + for (const key of Object.keys(lookup)) { + const expectedValue = lookup[key]; + let entry2FieldValue; + + if (disableDotNotation) { + entry2FieldValue = entry2.json[key]; + } else { + entry2FieldValue = get(entry2.json, key); + } + + if (!isEntriesEqual(expectedValue, entry2FieldValue)) { + return acc; + } + } + + return acc.concat({ + entry: entry2, + index: i, + }); + }, [] as IDataObject[]); +} + +function findFirstMatch( + data: INodeExecutionData[], + lookup: IDataObject, + disableDotNotation: boolean, + isEntriesEqual: CompareFunction, +) { + const index = data.findIndex((entry2) => { + if (entry2 === undefined) return false; + + for (const key of Object.keys(lookup)) { + const expectedValue = lookup[key]; + let entry2FieldValue; + + if (disableDotNotation) { + entry2FieldValue = entry2.json[key]; + } else { + entry2FieldValue = get(entry2.json, key); + } + + if (!isEntriesEqual(expectedValue, entry2FieldValue)) { + return false; + } + } + + return true; + }); + if (index === -1) return []; + + return [{ entry: data[index], index }]; +} + +export function findMatches( + input1: INodeExecutionData[], + input2: INodeExecutionData[], + fieldsToMatch: PairToMatch[], + options: MatchFieldsOptions, +) { + const data1 = [...input1]; + const data2 = [...input2]; + + const isEntriesEqual = fuzzyCompare(options.fuzzyCompare as boolean); + const disableDotNotation = options.disableDotNotation || false; + const multipleMatches = (options.multipleMatches as string) || 'all'; + + const filteredData = { + matched: [] as EntryMatches[], + matched2: [] as INodeExecutionData[], + unmatched1: [] as INodeExecutionData[], + unmatched2: [] as INodeExecutionData[], + }; + + const matchedInInput2 = new Set(); + + matchesLoop: for (const entry1 of data1) { + const lookup: IDataObject = {}; + + fieldsToMatch.forEach((matchCase) => { + let valueToCompare; + if (disableDotNotation) { + valueToCompare = entry1.json[matchCase.field1]; + } else { + valueToCompare = get(entry1.json, matchCase.field1); + } + lookup[matchCase.field2] = valueToCompare; + }); + + for (const fieldValue of Object.values(lookup)) { + if (fieldValue === undefined) { + filteredData.unmatched1.push(entry1); + continue matchesLoop; + } + } + + const foundedMatches = + multipleMatches === 'all' + ? findAllMatches(data2, lookup, disableDotNotation, isEntriesEqual) + : findFirstMatch(data2, lookup, disableDotNotation, isEntriesEqual); + + const matches = foundedMatches.map((match) => match.entry) as INodeExecutionData[]; + foundedMatches.map((match) => matchedInInput2.add(match.index as number)); + + if (matches.length) { + if ( + options.outputDataFrom === 'both' || + options.joinMode === 'enrichInput1' || + options.joinMode === 'enrichInput2' + ) { + matches.forEach((match) => { + filteredData.matched.push({ + entry: entry1, + matches: [match], + }); + }); + } else { + filteredData.matched.push({ + entry: entry1, + matches, + }); + } + } else { + filteredData.unmatched1.push(entry1); + } + } + + data2.forEach((entry, i) => { + if (matchedInInput2.has(i)) { + filteredData.matched2.push(entry); + } else { + filteredData.unmatched2.push(entry); + } + }); + + return filteredData; +} + +export function selectMergeMethod(clashResolveOptions: ClashResolveOptions) { + const mergeMode = clashResolveOptions.mergeMode as string; + + if (clashResolveOptions.overrideEmpty) { + function customizer(targetValue: GenericValue, srcValue: GenericValue) { + if (srcValue === undefined || srcValue === null || srcValue === '') { + return targetValue; + } + } + if (mergeMode === 'deepMerge') { + return (target: IDataObject, ...source: IDataObject[]) => { + const targetCopy = Object.assign({}, target); + return mergeWith(targetCopy, ...source, customizer); + }; + } + if (mergeMode === 'shallowMerge') { + return (target: IDataObject, ...source: IDataObject[]) => { + const targetCopy = Object.assign({}, target); + return assignWith(targetCopy, ...source, customizer); + }; + } + } else { + if (mergeMode === 'deepMerge') { + return (target: IDataObject, ...source: IDataObject[]) => merge({}, target, ...source); + } + if (mergeMode === 'shallowMerge') { + return (target: IDataObject, ...source: IDataObject[]) => assign({}, target, ...source); + } + } + return (target: IDataObject, ...source: IDataObject[]) => merge({}, target, ...source); +} + +export function mergeMatched( + matched: EntryMatches[], + clashResolveOptions: ClashResolveOptions, + joinMode?: MatchFieldsJoinMode, +) { + const returnData: INodeExecutionData[] = []; + let resolveClash = clashResolveOptions.resolveClash as string; + + const mergeIntoSingleObject = selectMergeMethod(clashResolveOptions); + + for (const match of matched) { + let { entry, matches } = match; + + let json: IDataObject = {}; + let binary: IBinaryKeyData = {}; + let pairedItem: IPairedItemData[] = []; + + if (resolveClash === 'addSuffix') { + const suffix1 = '1'; + const suffix2 = '2'; + + [entry] = addSuffixToEntriesKeys([entry], suffix1); + matches = addSuffixToEntriesKeys(matches, suffix2); + + json = mergeIntoSingleObject({ ...entry.json }, ...matches.map((item) => item.json)); + binary = mergeIntoSingleObject( + { ...entry.binary }, + ...matches.map((item) => item.binary as IDataObject), + ); + pairedItem = [ + ...preparePairedItemDataArray(entry.pairedItem), + ...matches.map((item) => preparePairedItemDataArray(item.pairedItem)).flat(), + ]; + } else { + const preferInput1 = 'preferInput1'; + const preferLast = 'preferLast'; + + if (resolveClash === undefined) { + if (joinMode !== 'enrichInput2') { + resolveClash = 'preferLast'; + } else { + resolveClash = 'preferInput1'; + } + } + + if (resolveClash === preferInput1) { + const [firstMatch, ...restMatches] = matches; + json = mergeIntoSingleObject( + { ...firstMatch.json }, + ...restMatches.map((item) => item.json), + entry.json, + ); + binary = mergeIntoSingleObject( + { ...firstMatch.binary }, + ...restMatches.map((item) => item.binary as IDataObject), + entry.binary as IDataObject, + ); + + pairedItem = [ + ...preparePairedItemDataArray(firstMatch.pairedItem), + ...restMatches.map((item) => preparePairedItemDataArray(item.pairedItem)).flat(), + ...preparePairedItemDataArray(entry.pairedItem), + ]; + } + + if (resolveClash === preferLast) { + json = mergeIntoSingleObject({ ...entry.json }, ...matches.map((item) => item.json)); + binary = mergeIntoSingleObject( + { ...entry.binary }, + ...matches.map((item) => item.binary as IDataObject), + ); + pairedItem = [ + ...preparePairedItemDataArray(entry.pairedItem), + ...matches.map((item) => preparePairedItemDataArray(item.pairedItem)).flat(), + ]; + } + } + + returnData.push({ + json, + binary, + pairedItem, + }); + } + + return returnData; +} + +export function checkMatchFieldsInput(data: IDataObject[]) { + if (data.length === 1 && data[0].field1 === '' && data[0].field2 === '') { + throw new ApplicationError( + 'You need to define at least one pair of fields in "Fields to Match" to match on', + { level: 'warning' }, + ); + } + for (const [index, pair] of data.entries()) { + if (pair.field1 === '' || pair.field2 === '') { + throw new ApplicationError( + `You need to define both fields in "Fields to Match" for pair ${index + 1}, + field 1 = '${pair.field1}' + field 2 = '${pair.field2}'`, + { level: 'warning' }, + ); + } + } + return data as PairToMatch[]; +} + +export function checkInput( + input: INodeExecutionData[], + fields: string[], + disableDotNotation: boolean, + inputLabel: string, +) { + for (const field of fields) { + const isPresent = (input || []).some((entry) => { + if (disableDotNotation) { + return entry.json.hasOwnProperty(field); + } + return get(entry.json, field, undefined) !== undefined; + }); + if (!isPresent) { + throw new ApplicationError( + `Field '${field}' is not present in any of items in '${inputLabel}'`, + { level: 'warning' }, + ); + } + } + return input; +} + +export function addSourceField(data: INodeExecutionData[], sourceField: string) { + return data.map((entry) => { + const json = { + ...entry.json, + _source: sourceField, + }; + return { + ...entry, + json, + }; + }); +} + +export const configuredInputs = (parameters: INodeParameters) => { + return Array.from({ length: (parameters.numberInputs as number) || 2 }, (_, i) => ({ + type: `${NodeConnectionType.Main}`, + displayName: `Input ${(i + 1).toString()}`, + })); +}; + +export function getNodeInputsData(this: IExecuteFunctions) { + const returnData: INodeExecutionData[][] = []; + + const inputs = NodeHelpers.getConnectionTypes(this.getNodeInputs()).filter( + (type) => type === NodeConnectionType.Main, + ); + + for (let i = 0; i < inputs.length; i++) { + try { + returnData.push(this.getInputData(i) ?? []); + } catch (error) { + returnData.push([]); + } + } + + return returnData; +} diff --git a/packages/nodes-base/nodes/Merge/v3/methods/index.ts b/packages/nodes-base/nodes/Merge/v3/methods/index.ts new file mode 100644 index 0000000000..65ff6192a3 --- /dev/null +++ b/packages/nodes-base/nodes/Merge/v3/methods/index.ts @@ -0,0 +1 @@ +export * as loadOptions from './loadOptions'; diff --git a/packages/nodes-base/nodes/Merge/v3/methods/loadOptions.ts b/packages/nodes-base/nodes/Merge/v3/methods/loadOptions.ts new file mode 100644 index 0000000000..4855b2d81a --- /dev/null +++ b/packages/nodes-base/nodes/Merge/v3/methods/loadOptions.ts @@ -0,0 +1,49 @@ +import type { ILoadOptionsFunctions, INodePropertyOptions } from 'n8n-workflow'; + +export async function getResolveClashOptions( + this: ILoadOptionsFunctions, +): Promise { + const numberOfInputs = this.getNodeParameter('numberInputs', 2) as number; + + if (numberOfInputs <= 2) { + return [ + { + name: 'Always Add Input Number to Field Names', + value: 'addSuffix', + }, + { + name: 'Prefer Input 1 Version', + value: 'preferInput1', + }, + { + name: 'Prefer Input 2 Version', + value: 'preferLast', + }, + ]; + } else { + return [ + { + name: 'Always Add Input Number to Field Names', + value: 'addSuffix', + }, + { + name: 'Use Earliest Version', + value: 'preferInput1', + }, + ]; + } +} +export async function getInputs(this: ILoadOptionsFunctions): Promise { + const numberOfInputs = this.getNodeParameter('numberInputs', 2) as number; + + const returnData: INodePropertyOptions[] = []; + + for (let i = 0; i < numberOfInputs; i++) { + returnData.push({ + name: `${i + 1}`, + value: i + 1, + }); + } + + return returnData; +} diff --git a/packages/nodes-base/nodes/MessageBird/MessageBird.node.json b/packages/nodes-base/nodes/MessageBird/MessageBird.node.json index 9b6e7942b2..b7961c6a01 100644 --- a/packages/nodes-base/nodes/MessageBird/MessageBird.node.json +++ b/packages/nodes-base/nodes/MessageBird/MessageBird.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/messageBird" + "url": "https://docs.n8n.io/integrations/builtin/credentials/messageBird/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/MessageBird/MessageBird.node.ts b/packages/nodes-base/nodes/MessageBird/MessageBird.node.ts index abf6ae531c..b008af7962 100644 --- a/packages/nodes-base/nodes/MessageBird/MessageBird.node.ts +++ b/packages/nodes-base/nodes/MessageBird/MessageBird.node.ts @@ -6,7 +6,7 @@ import type { INodeTypeDescription, IHttpRequestMethods, } from 'n8n-workflow'; -import { NodeOperationError } from 'n8n-workflow'; +import { NodeConnectionType, NodeOperationError } from 'n8n-workflow'; import { messageBirdApiRequest } from './GenericFunctions'; @@ -22,8 +22,8 @@ export class MessageBird implements INodeType { defaults: { name: 'MessageBird', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'messageBirdApi', @@ -383,7 +383,7 @@ export class MessageBird implements INodeType { returnData.push(responseData as IDataObject); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push({ error: error.message }); continue; } diff --git a/packages/nodes-base/nodes/Metabase/Metabase.node.json b/packages/nodes-base/nodes/Metabase/Metabase.node.json index 38dc83ff4c..1b4965b0e3 100644 --- a/packages/nodes-base/nodes/Metabase/Metabase.node.json +++ b/packages/nodes-base/nodes/Metabase/Metabase.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/metabase" + "url": "https://docs.n8n.io/integrations/builtin/credentials/metabase/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Metabase/Metabase.node.ts b/packages/nodes-base/nodes/Metabase/Metabase.node.ts index 64fce71671..cf13c705cd 100644 --- a/packages/nodes-base/nodes/Metabase/Metabase.node.ts +++ b/packages/nodes-base/nodes/Metabase/Metabase.node.ts @@ -1,4 +1,5 @@ import type { INodeType, INodeTypeDescription } from 'n8n-workflow'; +import { NodeConnectionType } from 'n8n-workflow'; import { questionsFields, questionsOperations } from './QuestionsDescription'; @@ -20,8 +21,8 @@ export class Metabase implements INodeType { defaults: { name: 'Metabase', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'metabaseApi', diff --git a/packages/nodes-base/nodes/Microsoft/Dynamics/GenericFunctions.ts b/packages/nodes-base/nodes/Microsoft/Dynamics/GenericFunctions.ts index c4ec696878..b24a95b6a7 100644 --- a/packages/nodes-base/nodes/Microsoft/Dynamics/GenericFunctions.ts +++ b/packages/nodes-base/nodes/Microsoft/Dynamics/GenericFunctions.ts @@ -20,10 +20,10 @@ export async function microsoftApiRequest( uri?: string, option: IDataObject = {}, ): Promise { - const credentials = (await this.getCredentials('microsoftDynamicsOAuth2Api')) as { + const credentials = await this.getCredentials<{ subdomain: string; region: string; - }; + }>('microsoftDynamicsOAuth2Api'); let options: IRequestOptions = { headers: { @@ -126,14 +126,14 @@ export function getAccountFields(): INodeProperties[] { }, default: '', description: - 'Category to indicate whether the customer account is standard or preferred. Choose from the list, or specify an ID using an expression.', + 'Category to indicate whether the customer account is standard or preferred. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Account Rating Name or ID', name: 'accountratingcode', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getAccountRatingCodes', }, @@ -158,7 +158,7 @@ export function getAccountFields(): INodeProperties[] { name: 'addresstypecode', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getAddressTypes', }, @@ -249,14 +249,14 @@ export function getAccountFields(): INodeProperties[] { }, default: '', description: - 'The legal designation or other business type of the account for contracts or reporting purposes. Choose from the list, or specify an ID using an expression.', + 'The legal designation or other business type of the account for contracts or reporting purposes. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Customer Size Name or ID', name: 'customersizecode', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getCustomerSizeCodes', }, @@ -267,7 +267,7 @@ export function getAccountFields(): INodeProperties[] { name: 'customertypecode', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getCustomerTypeCodes', }, @@ -325,7 +325,7 @@ export function getAccountFields(): INodeProperties[] { }, default: '', description: - 'The account’s primary industry for use in marketing segmentation and demographic analysis. Choose from the list, or specify an ID using an expression.', + 'The account’s primary industry for use in marketing segmentation and demographic analysis. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Name', @@ -365,7 +365,7 @@ export function getAccountFields(): INodeProperties[] { }, default: '', description: - 'The payment terms to indicate when the customer needs to pay the total amount. Choose from the list, or specify an ID using an expression.', + 'The payment terms to indicate when the customer needs to pay the total amount. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Preferred Appointment Day Name or ID', @@ -376,7 +376,7 @@ export function getAccountFields(): INodeProperties[] { }, default: '', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', }, { displayName: 'Preferred Appointment Time Name or ID', @@ -387,7 +387,7 @@ export function getAccountFields(): INodeProperties[] { }, default: '', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', }, { displayName: 'Preferred Contact Method Name or ID', @@ -398,7 +398,7 @@ export function getAccountFields(): INodeProperties[] { }, default: '', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', }, { displayName: 'Primary Satori ID', @@ -437,7 +437,7 @@ export function getAccountFields(): INodeProperties[] { }, default: '', description: - 'Shipping method for deliveries sent to the account’s address to designate the preferred carrier or other delivery option. Choose from the list, or specify an ID using an expression.', + 'Shipping method for deliveries sent to the account’s address to designate the preferred carrier or other delivery option. Choose from the list, or specify an ID using an expression.', }, { displayName: 'SIC', @@ -491,7 +491,7 @@ export function getAccountFields(): INodeProperties[] { }, default: '', description: - 'Region or territory for the account for use in segmentation and analysis. Choose from the list, or specify an ID using an expression.', + 'Region or territory for the account for use in segmentation and analysis. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Ticker Symbol', diff --git a/packages/nodes-base/nodes/Microsoft/Dynamics/MicrosoftDynamicsCrm.node.json b/packages/nodes-base/nodes/Microsoft/Dynamics/MicrosoftDynamicsCrm.node.json index 48483e1767..a90210597b 100644 --- a/packages/nodes-base/nodes/Microsoft/Dynamics/MicrosoftDynamicsCrm.node.json +++ b/packages/nodes-base/nodes/Microsoft/Dynamics/MicrosoftDynamicsCrm.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/microsoft" + "url": "https://docs.n8n.io/integrations/builtin/credentials/microsoft/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Microsoft/Dynamics/MicrosoftDynamicsCrm.node.ts b/packages/nodes-base/nodes/Microsoft/Dynamics/MicrosoftDynamicsCrm.node.ts index 9313fa2474..08ee11ae4a 100644 --- a/packages/nodes-base/nodes/Microsoft/Dynamics/MicrosoftDynamicsCrm.node.ts +++ b/packages/nodes-base/nodes/Microsoft/Dynamics/MicrosoftDynamicsCrm.node.ts @@ -7,6 +7,7 @@ import type { INodeType, INodeTypeDescription, } from 'n8n-workflow'; +import { NodeConnectionType } from 'n8n-workflow'; import type { IField } from './GenericFunctions'; import { @@ -32,8 +33,8 @@ export class MicrosoftDynamicsCrm implements INodeType { defaults: { name: 'Microsoft Dynamics CRM', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'microsoftDynamicsOAuth2Api', @@ -281,7 +282,7 @@ export class MicrosoftDynamicsCrm implements INodeType { returnData.push(...executionData); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { const executionErrorData = this.helpers.constructExecutionMetaData( this.helpers.returnJsonArray({ error: error.message }), { itemData: { item: i } }, diff --git a/packages/nodes-base/nodes/Microsoft/Dynamics/descriptions/AccountDescription.ts b/packages/nodes-base/nodes/Microsoft/Dynamics/descriptions/AccountDescription.ts index 2d3cfc87ea..aae1a9123d 100644 --- a/packages/nodes-base/nodes/Microsoft/Dynamics/descriptions/AccountDescription.ts +++ b/packages/nodes-base/nodes/Microsoft/Dynamics/descriptions/AccountDescription.ts @@ -130,7 +130,7 @@ export const accountFields: INodeProperties[] = [ displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, displayOptions: { show: { @@ -144,7 +144,7 @@ export const accountFields: INodeProperties[] = [ name: 'returnFields', type: 'multiOptions', description: - 'Choose from the list, or specify IDs using an expression', + 'Choose from the list, or specify IDs using an expression', typeOptions: { loadOptionsMethod: 'getAccountFields', }, @@ -155,7 +155,7 @@ export const accountFields: INodeProperties[] = [ name: 'expandFields', type: 'multiOptions', description: - 'Choose from the list, or specify IDs using an expression', + 'Choose from the list, or specify IDs using an expression', typeOptions: { loadOptionsMethod: 'getExpandableAccountFields', }, @@ -208,7 +208,7 @@ export const accountFields: INodeProperties[] = [ displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, displayOptions: { show: { @@ -226,7 +226,7 @@ export const accountFields: INodeProperties[] = [ }, default: [], description: - 'Fields the response will include. Choose from the list, or specify IDs using an expression.', + 'Fields the response will include. Choose from the list, or specify IDs using an expression.', }, ], }, diff --git a/packages/nodes-base/nodes/Microsoft/Excel/MicrosoftExcel.node.json b/packages/nodes-base/nodes/Microsoft/Excel/MicrosoftExcel.node.json index 10fbad6b1a..2ece337261 100644 --- a/packages/nodes-base/nodes/Microsoft/Excel/MicrosoftExcel.node.json +++ b/packages/nodes-base/nodes/Microsoft/Excel/MicrosoftExcel.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/microsoft" + "url": "https://docs.n8n.io/integrations/builtin/credentials/microsoft/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Microsoft/Excel/v1/MicrosoftExcelV1.node.ts b/packages/nodes-base/nodes/Microsoft/Excel/v1/MicrosoftExcelV1.node.ts index 900a1da242..9eecb99e2b 100644 --- a/packages/nodes-base/nodes/Microsoft/Excel/v1/MicrosoftExcelV1.node.ts +++ b/packages/nodes-base/nodes/Microsoft/Excel/v1/MicrosoftExcelV1.node.ts @@ -1,4 +1,3 @@ -/* eslint-disable n8n-nodes-base/node-filename-against-convention */ import type { IDataObject, IExecuteFunctions, @@ -10,7 +9,7 @@ import type { INodeTypeDescription, JsonObject, } from 'n8n-workflow'; -import { NodeApiError } from 'n8n-workflow'; +import { NodeApiError, NodeConnectionType } from 'n8n-workflow'; import { generatePairedItemData } from '../../../../utils/utilities'; import { @@ -38,8 +37,8 @@ const versionDescription: INodeTypeDescription = { defaults: { name: 'Microsoft Excel', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'microsoftExcelOAuth2Api', @@ -256,7 +255,7 @@ export class MicrosoftExcelV1 implements INodeType { returnData.push(...executionData); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { const executionErrorData = this.helpers.constructExecutionMetaData( this.helpers.returnJsonArray({ error: error.message }), { itemData }, @@ -317,7 +316,7 @@ export class MicrosoftExcelV1 implements INodeType { returnData.push(...executionData); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { const executionErrorData = this.helpers.constructExecutionMetaData( this.helpers.returnJsonArray({ error: error.message }), { itemData: { item: i } }, @@ -402,7 +401,7 @@ export class MicrosoftExcelV1 implements INodeType { returnData.push(...executionData); } } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { const executionErrorData = this.helpers.constructExecutionMetaData( this.helpers.returnJsonArray({ error: error.message }), { itemData: { item: i } }, @@ -483,7 +482,7 @@ export class MicrosoftExcelV1 implements INodeType { returnData.push(...executionData); } } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { const executionErrorData = this.helpers.constructExecutionMetaData( this.helpers.returnJsonArray({ error: error.message }), { itemData: { item: i } }, @@ -577,7 +576,7 @@ export class MicrosoftExcelV1 implements INodeType { returnData.push(...executionData); } } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { const executionErrorData = this.helpers.constructExecutionMetaData( this.helpers.returnJsonArray({ error: error.message }), { itemData: { item: i } }, @@ -675,7 +674,7 @@ export class MicrosoftExcelV1 implements INodeType { } } } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { const executionErrorData = this.helpers.constructExecutionMetaData( this.helpers.returnJsonArray({ error: error.message }), { itemData: { item: i } }, diff --git a/packages/nodes-base/nodes/Microsoft/Excel/v1/TableDescription.ts b/packages/nodes-base/nodes/Microsoft/Excel/v1/TableDescription.ts index ccb10faae6..7a8ef66b78 100644 --- a/packages/nodes-base/nodes/Microsoft/Excel/v1/TableDescription.ts +++ b/packages/nodes-base/nodes/Microsoft/Excel/v1/TableDescription.ts @@ -50,7 +50,7 @@ export const tableFields: INodeProperties[] = [ name: 'workbook', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getWorkbooks', }, @@ -67,7 +67,7 @@ export const tableFields: INodeProperties[] = [ name: 'worksheet', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', required: true, typeOptions: { loadOptionsMethod: 'getworksheets', @@ -86,7 +86,7 @@ export const tableFields: INodeProperties[] = [ name: 'table', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', required: true, typeOptions: { loadOptionsMethod: 'getTables', @@ -134,7 +134,7 @@ export const tableFields: INodeProperties[] = [ name: 'workbook', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getWorkbooks', }, @@ -151,7 +151,7 @@ export const tableFields: INodeProperties[] = [ name: 'worksheet', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', required: true, typeOptions: { loadOptionsMethod: 'getworksheets', @@ -170,7 +170,7 @@ export const tableFields: INodeProperties[] = [ name: 'table', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', required: true, typeOptions: { loadOptionsMethod: 'getTables', @@ -274,7 +274,7 @@ export const tableFields: INodeProperties[] = [ name: 'workbook', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getWorkbooks', }, @@ -291,7 +291,7 @@ export const tableFields: INodeProperties[] = [ name: 'worksheet', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', required: true, typeOptions: { loadOptionsMethod: 'getworksheets', @@ -310,7 +310,7 @@ export const tableFields: INodeProperties[] = [ name: 'table', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', required: true, typeOptions: { loadOptionsMethod: 'getTables', @@ -414,7 +414,7 @@ export const tableFields: INodeProperties[] = [ name: 'workbook', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', required: true, typeOptions: { loadOptionsMethod: 'getWorkbooks', @@ -432,7 +432,7 @@ export const tableFields: INodeProperties[] = [ name: 'worksheet', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', required: true, typeOptions: { loadOptionsMethod: 'getworksheets', @@ -451,7 +451,7 @@ export const tableFields: INodeProperties[] = [ name: 'table', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', required: true, typeOptions: { loadOptionsMethod: 'getTables', @@ -499,7 +499,7 @@ export const tableFields: INodeProperties[] = [ displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, displayOptions: { show: { diff --git a/packages/nodes-base/nodes/Microsoft/Excel/v1/WorkbookDescription.ts b/packages/nodes-base/nodes/Microsoft/Excel/v1/WorkbookDescription.ts index 57ba88d4c6..0c50f4dd27 100644 --- a/packages/nodes-base/nodes/Microsoft/Excel/v1/WorkbookDescription.ts +++ b/packages/nodes-base/nodes/Microsoft/Excel/v1/WorkbookDescription.ts @@ -38,7 +38,7 @@ export const workbookFields: INodeProperties[] = [ name: 'workbook', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', required: true, typeOptions: { loadOptionsMethod: 'getWorkbooks', diff --git a/packages/nodes-base/nodes/Microsoft/Excel/v1/WorksheetDescription.ts b/packages/nodes-base/nodes/Microsoft/Excel/v1/WorksheetDescription.ts index 28746e5e50..77ce5555b1 100644 --- a/packages/nodes-base/nodes/Microsoft/Excel/v1/WorksheetDescription.ts +++ b/packages/nodes-base/nodes/Microsoft/Excel/v1/WorksheetDescription.ts @@ -38,7 +38,7 @@ export const worksheetFields: INodeProperties[] = [ name: 'workbook', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getWorkbooks', }, @@ -111,7 +111,7 @@ export const worksheetFields: INodeProperties[] = [ name: 'workbook', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', required: true, typeOptions: { loadOptionsMethod: 'getWorkbooks', @@ -129,7 +129,7 @@ export const worksheetFields: INodeProperties[] = [ name: 'worksheet', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', required: true, typeOptions: { loadOptionsMethod: 'getworksheets', diff --git a/packages/nodes-base/nodes/Microsoft/Excel/v2/actions/table/addTable.operation.ts b/packages/nodes-base/nodes/Microsoft/Excel/v2/actions/table/addTable.operation.ts index cb6c0f80df..6ab2109211 100644 --- a/packages/nodes-base/nodes/Microsoft/Excel/v2/actions/table/addTable.operation.ts +++ b/packages/nodes-base/nodes/Microsoft/Excel/v2/actions/table/addTable.operation.ts @@ -115,7 +115,7 @@ export async function execute( returnData.push(...executionData); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { const executionErrorData = this.helpers.constructExecutionMetaData( this.helpers.returnJsonArray({ error: error.message }), { itemData: { item: i } }, diff --git a/packages/nodes-base/nodes/Microsoft/Excel/v2/actions/table/append.operation.ts b/packages/nodes-base/nodes/Microsoft/Excel/v2/actions/table/append.operation.ts index 965986762e..11095e27cf 100644 --- a/packages/nodes-base/nodes/Microsoft/Excel/v2/actions/table/append.operation.ts +++ b/packages/nodes-base/nodes/Microsoft/Excel/v2/actions/table/append.operation.ts @@ -76,7 +76,7 @@ const properties: INodeProperties[] = [ name: 'column', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsDependsOn: ['table.value', 'worksheet.value', 'workbook.value'], loadOptionsMethod: 'getTableColumns', @@ -98,7 +98,7 @@ const properties: INodeProperties[] = [ displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, options: [ { @@ -271,7 +271,7 @@ export async function execute( }), ); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { const itemData = generatePairedItemData(this.getInputData().length); const executionErrorData = this.helpers.constructExecutionMetaData( this.helpers.returnJsonArray({ error: error.message }), diff --git a/packages/nodes-base/nodes/Microsoft/Excel/v2/actions/table/convertToRange.operation.ts b/packages/nodes-base/nodes/Microsoft/Excel/v2/actions/table/convertToRange.operation.ts index 9056dd2703..9b20ab77c3 100644 --- a/packages/nodes-base/nodes/Microsoft/Excel/v2/actions/table/convertToRange.operation.ts +++ b/packages/nodes-base/nodes/Microsoft/Excel/v2/actions/table/convertToRange.operation.ts @@ -52,7 +52,7 @@ export async function execute( returnData.push(...executionData); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { const executionErrorData = this.helpers.constructExecutionMetaData( this.helpers.returnJsonArray({ error: error.message }), { itemData: { item: i } }, diff --git a/packages/nodes-base/nodes/Microsoft/Excel/v2/actions/table/deleteTable.operation.ts b/packages/nodes-base/nodes/Microsoft/Excel/v2/actions/table/deleteTable.operation.ts index 7c38d90006..5e1ec86f4f 100644 --- a/packages/nodes-base/nodes/Microsoft/Excel/v2/actions/table/deleteTable.operation.ts +++ b/packages/nodes-base/nodes/Microsoft/Excel/v2/actions/table/deleteTable.operation.ts @@ -47,7 +47,7 @@ export async function execute( returnData.push(...executionData); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { const executionErrorData = this.helpers.constructExecutionMetaData( this.helpers.returnJsonArray({ error: error.message }), { itemData: { item: i } }, diff --git a/packages/nodes-base/nodes/Microsoft/Excel/v2/actions/table/getColumns.operation.ts b/packages/nodes-base/nodes/Microsoft/Excel/v2/actions/table/getColumns.operation.ts index d905ee3292..e91596a402 100644 --- a/packages/nodes-base/nodes/Microsoft/Excel/v2/actions/table/getColumns.operation.ts +++ b/packages/nodes-base/nodes/Microsoft/Excel/v2/actions/table/getColumns.operation.ts @@ -153,7 +153,7 @@ export async function execute( returnData.push(...executionData); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { const executionErrorData = this.helpers.constructExecutionMetaData( this.helpers.returnJsonArray({ error: error.message }), { itemData: { item: i } }, diff --git a/packages/nodes-base/nodes/Microsoft/Excel/v2/actions/table/getRows.operation.ts b/packages/nodes-base/nodes/Microsoft/Excel/v2/actions/table/getRows.operation.ts index af5139153c..059c195a2b 100644 --- a/packages/nodes-base/nodes/Microsoft/Excel/v2/actions/table/getRows.operation.ts +++ b/packages/nodes-base/nodes/Microsoft/Excel/v2/actions/table/getRows.operation.ts @@ -79,7 +79,7 @@ const properties: INodeProperties[] = [ name: 'column', type: 'multiOptions', description: - 'Choose from the list, or specify an ID using an expression. Choose from the list, or specify IDs using an expression.', + 'Choose from the list, or specify an ID using an expression. Choose from the list, or specify IDs using an expression.', typeOptions: { loadOptionsDependsOn: ['table.value', 'worksheet.value', 'workbook.value'], loadOptionsMethod: 'getTableColumns', @@ -210,7 +210,7 @@ export async function execute( returnData.push(...executionData); } } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { const executionErrorData = this.helpers.constructExecutionMetaData( this.helpers.returnJsonArray({ error: error.message }), { itemData: { item: i } }, diff --git a/packages/nodes-base/nodes/Microsoft/Excel/v2/actions/table/lookup.operation.ts b/packages/nodes-base/nodes/Microsoft/Excel/v2/actions/table/lookup.operation.ts index 83f04dd812..9e2f9f3cef 100644 --- a/packages/nodes-base/nodes/Microsoft/Excel/v2/actions/table/lookup.operation.ts +++ b/packages/nodes-base/nodes/Microsoft/Excel/v2/actions/table/lookup.operation.ts @@ -36,7 +36,7 @@ const properties: INodeProperties[] = [ displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, options: [ { @@ -145,7 +145,7 @@ export async function execute( returnData.push(...executionData); } } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { const executionErrorData = this.helpers.constructExecutionMetaData( this.helpers.returnJsonArray({ error: error.message }), { itemData: { item: i } }, diff --git a/packages/nodes-base/nodes/Microsoft/Excel/v2/actions/versionDescription.ts b/packages/nodes-base/nodes/Microsoft/Excel/v2/actions/versionDescription.ts index f0b31b9d0a..88d111731c 100644 --- a/packages/nodes-base/nodes/Microsoft/Excel/v2/actions/versionDescription.ts +++ b/packages/nodes-base/nodes/Microsoft/Excel/v2/actions/versionDescription.ts @@ -1,5 +1,5 @@ /* eslint-disable n8n-nodes-base/node-filename-against-convention */ -import type { INodeTypeDescription } from 'n8n-workflow'; +import { NodeConnectionType, type INodeTypeDescription } from 'n8n-workflow'; import * as table from './table/Table.resource'; import * as workbook from './workbook/Workbook.resource'; @@ -16,8 +16,8 @@ export const versionDescription: INodeTypeDescription = { defaults: { name: 'Microsoft Excel 365', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'microsoftExcelOAuth2Api', diff --git a/packages/nodes-base/nodes/Microsoft/Excel/v2/actions/workbook/addWorksheet.operation.ts b/packages/nodes-base/nodes/Microsoft/Excel/v2/actions/workbook/addWorksheet.operation.ts index a27d9c56ca..69294c0911 100644 --- a/packages/nodes-base/nodes/Microsoft/Excel/v2/actions/workbook/addWorksheet.operation.ts +++ b/packages/nodes-base/nodes/Microsoft/Excel/v2/actions/workbook/addWorksheet.operation.ts @@ -14,7 +14,7 @@ const properties: INodeProperties[] = [ displayName: 'Options', name: 'additionalFields', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, options: [ { @@ -97,7 +97,7 @@ export async function execute( returnData.push(...executionData); } } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { const executionErrorData = this.helpers.constructExecutionMetaData( this.helpers.returnJsonArray({ error: error.message }), { itemData: { item: i } }, diff --git a/packages/nodes-base/nodes/Microsoft/Excel/v2/actions/workbook/deleteWorkbook.operation.ts b/packages/nodes-base/nodes/Microsoft/Excel/v2/actions/workbook/deleteWorkbook.operation.ts index 9af0f851da..297fbc37c4 100644 --- a/packages/nodes-base/nodes/Microsoft/Excel/v2/actions/workbook/deleteWorkbook.operation.ts +++ b/packages/nodes-base/nodes/Microsoft/Excel/v2/actions/workbook/deleteWorkbook.operation.ts @@ -60,7 +60,7 @@ export async function execute( returnData.push(...executionData); } } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { const executionErrorData = this.helpers.constructExecutionMetaData( this.helpers.returnJsonArray({ error: error.message }), { itemData: { item: i } }, diff --git a/packages/nodes-base/nodes/Microsoft/Excel/v2/actions/workbook/getAll.operation.ts b/packages/nodes-base/nodes/Microsoft/Excel/v2/actions/workbook/getAll.operation.ts index 1e942b0397..81a2081572 100644 --- a/packages/nodes-base/nodes/Microsoft/Excel/v2/actions/workbook/getAll.operation.ts +++ b/packages/nodes-base/nodes/Microsoft/Excel/v2/actions/workbook/getAll.operation.ts @@ -110,7 +110,7 @@ export async function execute( returnData.push(...executionData); } } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { const executionErrorData = this.helpers.constructExecutionMetaData( this.helpers.returnJsonArray({ error: error.message }), { itemData: { item: i } }, diff --git a/packages/nodes-base/nodes/Microsoft/Excel/v2/actions/worksheet/append.operation.ts b/packages/nodes-base/nodes/Microsoft/Excel/v2/actions/worksheet/append.operation.ts index 05247e6780..e8af1938c8 100644 --- a/packages/nodes-base/nodes/Microsoft/Excel/v2/actions/worksheet/append.operation.ts +++ b/packages/nodes-base/nodes/Microsoft/Excel/v2/actions/worksheet/append.operation.ts @@ -75,7 +75,7 @@ const properties: INodeProperties[] = [ name: 'column', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsDependsOn: ['worksheet.value'], loadOptionsMethod: 'getWorksheetColumnRow', @@ -96,7 +96,7 @@ const properties: INodeProperties[] = [ displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, options: [ { diff --git a/packages/nodes-base/nodes/Microsoft/Excel/v2/actions/worksheet/clear.operation.ts b/packages/nodes-base/nodes/Microsoft/Excel/v2/actions/worksheet/clear.operation.ts index 7b3d9aad51..8299ee18b1 100644 --- a/packages/nodes-base/nodes/Microsoft/Excel/v2/actions/worksheet/clear.operation.ts +++ b/packages/nodes-base/nodes/Microsoft/Excel/v2/actions/worksheet/clear.operation.ts @@ -104,7 +104,7 @@ export async function execute( returnData.push(...executionData); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { const executionErrorData = this.helpers.constructExecutionMetaData( this.helpers.returnJsonArray({ error: error.message }), { itemData: { item: i } }, diff --git a/packages/nodes-base/nodes/Microsoft/Excel/v2/actions/worksheet/deleteWorksheet.operation.ts b/packages/nodes-base/nodes/Microsoft/Excel/v2/actions/worksheet/deleteWorksheet.operation.ts index 2bbaceb559..0ecae73b46 100644 --- a/packages/nodes-base/nodes/Microsoft/Excel/v2/actions/worksheet/deleteWorksheet.operation.ts +++ b/packages/nodes-base/nodes/Microsoft/Excel/v2/actions/worksheet/deleteWorksheet.operation.ts @@ -43,7 +43,7 @@ export async function execute( returnData.push(...executionData); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { const executionErrorData = this.helpers.constructExecutionMetaData( this.helpers.returnJsonArray({ error: error.message }), { itemData: { item: i } }, diff --git a/packages/nodes-base/nodes/Microsoft/Excel/v2/actions/worksheet/getAll.operation.ts b/packages/nodes-base/nodes/Microsoft/Excel/v2/actions/worksheet/getAll.operation.ts index 9b3b0d96d2..3681b60270 100644 --- a/packages/nodes-base/nodes/Microsoft/Excel/v2/actions/worksheet/getAll.operation.ts +++ b/packages/nodes-base/nodes/Microsoft/Excel/v2/actions/worksheet/getAll.operation.ts @@ -107,7 +107,7 @@ export async function execute( returnData.push(...executionData); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { const executionErrorData = this.helpers.constructExecutionMetaData( this.helpers.returnJsonArray({ error: error.message }), { itemData: { item: i } }, diff --git a/packages/nodes-base/nodes/Microsoft/Excel/v2/actions/worksheet/readRows.operation.ts b/packages/nodes-base/nodes/Microsoft/Excel/v2/actions/worksheet/readRows.operation.ts index 5a37c5294d..7b6389d814 100644 --- a/packages/nodes-base/nodes/Microsoft/Excel/v2/actions/worksheet/readRows.operation.ts +++ b/packages/nodes-base/nodes/Microsoft/Excel/v2/actions/worksheet/readRows.operation.ts @@ -70,7 +70,7 @@ const properties: INodeProperties[] = [ displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, options: [ { @@ -189,7 +189,7 @@ export async function execute( ); } } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { const executionErrorData = this.helpers.constructExecutionMetaData( this.helpers.returnJsonArray({ error: error.message }), { itemData: { item: i } }, diff --git a/packages/nodes-base/nodes/Microsoft/Excel/v2/actions/worksheet/update.operation.ts b/packages/nodes-base/nodes/Microsoft/Excel/v2/actions/worksheet/update.operation.ts index 7d7c14384d..40a08a975e 100644 --- a/packages/nodes-base/nodes/Microsoft/Excel/v2/actions/worksheet/update.operation.ts +++ b/packages/nodes-base/nodes/Microsoft/Excel/v2/actions/worksheet/update.operation.ts @@ -101,7 +101,7 @@ const properties: INodeProperties[] = [ name: 'columnToMatchOn', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsDependsOn: ['worksheet.value', 'workbook.value', 'range'], loadOptionsMethod: 'getWorksheetColumnRow', @@ -150,7 +150,7 @@ const properties: INodeProperties[] = [ name: 'column', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsDependsOn: ['columnToMatchOn', 'range'], loadOptionsMethod: 'getWorksheetColumnRowSkipColumnToMatchOn', @@ -171,7 +171,7 @@ const properties: INodeProperties[] = [ displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, options: [ { @@ -372,7 +372,7 @@ export async function execute( ); } } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { const itemData = generatePairedItemData(this.getInputData().length); const executionErrorData = this.helpers.constructExecutionMetaData( this.helpers.returnJsonArray({ error: error.message }), diff --git a/packages/nodes-base/nodes/Microsoft/Excel/v2/actions/worksheet/upsert.operation.ts b/packages/nodes-base/nodes/Microsoft/Excel/v2/actions/worksheet/upsert.operation.ts index 9da839324b..3745c76cac 100644 --- a/packages/nodes-base/nodes/Microsoft/Excel/v2/actions/worksheet/upsert.operation.ts +++ b/packages/nodes-base/nodes/Microsoft/Excel/v2/actions/worksheet/upsert.operation.ts @@ -65,7 +65,7 @@ const properties: INodeProperties[] = [ name: 'columnToMatchOn', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsDependsOn: ['worksheet.value', 'workbook.value', 'range'], loadOptionsMethod: 'getWorksheetColumnRow', @@ -114,7 +114,7 @@ const properties: INodeProperties[] = [ name: 'column', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsDependsOn: ['columnToMatchOn', 'range'], loadOptionsMethod: 'getWorksheetColumnRowSkipColumnToMatchOn', @@ -135,7 +135,7 @@ const properties: INodeProperties[] = [ displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, options: [ { @@ -379,7 +379,7 @@ export async function execute( }), ); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { const itemData = generatePairedItemData(this.getInputData().length); const executionErrorData = this.helpers.constructExecutionMetaData( this.helpers.returnJsonArray({ error: error.message }), diff --git a/packages/nodes-base/nodes/Microsoft/GraphSecurity/GenericFunctions.ts b/packages/nodes-base/nodes/Microsoft/GraphSecurity/GenericFunctions.ts index dbc1c40661..0b10e02b3d 100644 --- a/packages/nodes-base/nodes/Microsoft/GraphSecurity/GenericFunctions.ts +++ b/packages/nodes-base/nodes/Microsoft/GraphSecurity/GenericFunctions.ts @@ -17,11 +17,11 @@ export async function msGraphSecurityApiRequest( ) { const { oauthTokenData: { access_token }, - } = (await this.getCredentials('microsoftGraphSecurityOAuth2Api')) as { + } = await this.getCredentials<{ oauthTokenData: { access_token: string; }; - }; + }>('microsoftGraphSecurityOAuth2Api'); const options: IRequestOptions = { headers: { diff --git a/packages/nodes-base/nodes/Microsoft/GraphSecurity/MicrosoftGraphSecurity.node.json b/packages/nodes-base/nodes/Microsoft/GraphSecurity/MicrosoftGraphSecurity.node.json index 36e445898a..b4781bf641 100644 --- a/packages/nodes-base/nodes/Microsoft/GraphSecurity/MicrosoftGraphSecurity.node.json +++ b/packages/nodes-base/nodes/Microsoft/GraphSecurity/MicrosoftGraphSecurity.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/microsoft" + "url": "https://docs.n8n.io/integrations/builtin/credentials/microsoft/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Microsoft/GraphSecurity/MicrosoftGraphSecurity.node.ts b/packages/nodes-base/nodes/Microsoft/GraphSecurity/MicrosoftGraphSecurity.node.ts index b74d76a81a..0f465b0b52 100644 --- a/packages/nodes-base/nodes/Microsoft/GraphSecurity/MicrosoftGraphSecurity.node.ts +++ b/packages/nodes-base/nodes/Microsoft/GraphSecurity/MicrosoftGraphSecurity.node.ts @@ -5,6 +5,7 @@ import type { INodeType, INodeTypeDescription, } from 'n8n-workflow'; +import { NodeConnectionType } from 'n8n-workflow'; import { msGraphSecurityApiRequest, @@ -31,8 +32,8 @@ export class MicrosoftGraphSecurity implements INodeType { defaults: { name: 'Microsoft Graph Security', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'microsoftGraphSecurityOAuth2Api', @@ -215,7 +216,7 @@ export class MicrosoftGraphSecurity implements INodeType { } } } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push({ error: error.message }); continue; } diff --git a/packages/nodes-base/nodes/Microsoft/OneDrive/MicrosoftOneDrive.node.json b/packages/nodes-base/nodes/Microsoft/OneDrive/MicrosoftOneDrive.node.json index e596232b66..2753e37a30 100644 --- a/packages/nodes-base/nodes/Microsoft/OneDrive/MicrosoftOneDrive.node.json +++ b/packages/nodes-base/nodes/Microsoft/OneDrive/MicrosoftOneDrive.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/microsoft" + "url": "https://docs.n8n.io/integrations/builtin/credentials/microsoft/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Microsoft/OneDrive/MicrosoftOneDrive.node.ts b/packages/nodes-base/nodes/Microsoft/OneDrive/MicrosoftOneDrive.node.ts index cbc74b8c74..bc067531ec 100644 --- a/packages/nodes-base/nodes/Microsoft/OneDrive/MicrosoftOneDrive.node.ts +++ b/packages/nodes-base/nodes/Microsoft/OneDrive/MicrosoftOneDrive.node.ts @@ -6,7 +6,7 @@ import type { INodeTypeDescription, JsonObject, } from 'n8n-workflow'; -import { NodeApiError, NodeOperationError } from 'n8n-workflow'; +import { NodeApiError, NodeConnectionType, NodeOperationError } from 'n8n-workflow'; import { microsoftApiRequest, microsoftApiRequestAllItems } from './GenericFunctions'; @@ -26,8 +26,8 @@ export class MicrosoftOneDrive implements INodeType { defaults: { name: 'Microsoft OneDrive', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'microsoftOneDriveOAuth2Api', @@ -325,7 +325,7 @@ export class MicrosoftOneDrive implements INodeType { } } } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { if (resource === 'file' && operation === 'download') { items[i].json = { error: error.message }; } else { diff --git a/packages/nodes-base/nodes/Microsoft/OneDrive/MicrosoftOneDriveTrigger.node.json b/packages/nodes-base/nodes/Microsoft/OneDrive/MicrosoftOneDriveTrigger.node.json index 90b99c598f..1c2b35f8b9 100644 --- a/packages/nodes-base/nodes/Microsoft/OneDrive/MicrosoftOneDriveTrigger.node.json +++ b/packages/nodes-base/nodes/Microsoft/OneDrive/MicrosoftOneDriveTrigger.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/microsoft" + "url": "https://docs.n8n.io/integrations/builtin/credentials/microsoft/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Microsoft/OneDrive/MicrosoftOneDriveTrigger.node.ts b/packages/nodes-base/nodes/Microsoft/OneDrive/MicrosoftOneDriveTrigger.node.ts index 789447f213..3c49766adf 100644 --- a/packages/nodes-base/nodes/Microsoft/OneDrive/MicrosoftOneDriveTrigger.node.ts +++ b/packages/nodes-base/nodes/Microsoft/OneDrive/MicrosoftOneDriveTrigger.node.ts @@ -1,9 +1,10 @@ -import type { - IPollFunctions, - IDataObject, - INodeExecutionData, - INodeType, - INodeTypeDescription, +import { + type IPollFunctions, + type IDataObject, + type INodeExecutionData, + type INodeType, + type INodeTypeDescription, + NodeConnectionType, } from 'n8n-workflow'; import { DateTime } from 'luxon'; @@ -30,7 +31,7 @@ export class MicrosoftOneDriveTrigger implements INodeType { ], polling: true, inputs: [], - outputs: ['main'], + outputs: [NodeConnectionType.Main], properties: [...triggerDescription], }; diff --git a/packages/nodes-base/nodes/Microsoft/OneDrive/TriggerDescription.ts b/packages/nodes-base/nodes/Microsoft/OneDrive/TriggerDescription.ts index 0a1a713b3d..3c7c5e2674 100644 --- a/packages/nodes-base/nodes/Microsoft/OneDrive/TriggerDescription.ts +++ b/packages/nodes-base/nodes/Microsoft/OneDrive/TriggerDescription.ts @@ -245,7 +245,7 @@ export const triggerDescription: INodeProperties[] = [ displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, displayOptions: { show: { @@ -267,7 +267,7 @@ export const triggerDescription: INodeProperties[] = [ displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, displayOptions: { show: { diff --git a/packages/nodes-base/nodes/Microsoft/Outlook/MicrosoftOutlook.node.json b/packages/nodes-base/nodes/Microsoft/Outlook/MicrosoftOutlook.node.json index 7cb73e35b1..abe9a68bf9 100644 --- a/packages/nodes-base/nodes/Microsoft/Outlook/MicrosoftOutlook.node.json +++ b/packages/nodes-base/nodes/Microsoft/Outlook/MicrosoftOutlook.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/microsoft" + "url": "https://docs.n8n.io/integrations/builtin/credentials/microsoft/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Microsoft/Outlook/MicrosoftOutlookTrigger.node.json b/packages/nodes-base/nodes/Microsoft/Outlook/MicrosoftOutlookTrigger.node.json index 66c21892ae..a4c042732b 100644 --- a/packages/nodes-base/nodes/Microsoft/Outlook/MicrosoftOutlookTrigger.node.json +++ b/packages/nodes-base/nodes/Microsoft/Outlook/MicrosoftOutlookTrigger.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/microsoft" + "url": "https://docs.n8n.io/integrations/builtin/credentials/microsoft/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Microsoft/Outlook/MicrosoftOutlookTrigger.node.ts b/packages/nodes-base/nodes/Microsoft/Outlook/MicrosoftOutlookTrigger.node.ts index d0845710af..6c1e6805ff 100644 --- a/packages/nodes-base/nodes/Microsoft/Outlook/MicrosoftOutlookTrigger.node.ts +++ b/packages/nodes-base/nodes/Microsoft/Outlook/MicrosoftOutlookTrigger.node.ts @@ -1,8 +1,9 @@ -import type { - IPollFunctions, - INodeExecutionData, - INodeType, - INodeTypeDescription, +import { + type IPollFunctions, + type INodeExecutionData, + type INodeType, + type INodeTypeDescription, + NodeConnectionType, } from 'n8n-workflow'; import { DateTime } from 'luxon'; @@ -33,7 +34,7 @@ export class MicrosoftOutlookTrigger implements INodeType { ], polling: true, inputs: [], - outputs: ['main'], + outputs: [NodeConnectionType.Main], properties: [ { displayName: 'Trigger On', diff --git a/packages/nodes-base/nodes/Microsoft/Outlook/trigger/MessageDescription.ts b/packages/nodes-base/nodes/Microsoft/Outlook/trigger/MessageDescription.ts index 9ff9af88bf..7c65cf37bb 100644 --- a/packages/nodes-base/nodes/Microsoft/Outlook/trigger/MessageDescription.ts +++ b/packages/nodes-base/nodes/Microsoft/Outlook/trigger/MessageDescription.ts @@ -65,7 +65,7 @@ export const properties: INodeProperties[] = [ }, default: [], description: - 'Choose from the list, or specify IDs using an expression', + 'Choose from the list, or specify IDs using an expression', }, { displayName: 'Folders to Include', @@ -76,7 +76,7 @@ export const properties: INodeProperties[] = [ }, default: [], description: - 'Choose from the list, or specify IDs using an expression', + 'Choose from the list, or specify IDs using an expression', }, { displayName: 'Read Status', @@ -115,7 +115,7 @@ export const properties: INodeProperties[] = [ displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, options: [ { diff --git a/packages/nodes-base/nodes/Microsoft/Outlook/v1/DraftDescription.ts b/packages/nodes-base/nodes/Microsoft/Outlook/v1/DraftDescription.ts index 9a770cfb63..24dbdaef8a 100644 --- a/packages/nodes-base/nodes/Microsoft/Outlook/v1/DraftDescription.ts +++ b/packages/nodes-base/nodes/Microsoft/Outlook/v1/DraftDescription.ts @@ -157,7 +157,7 @@ export const draftFields: INodeProperties[] = [ name: 'categories', type: 'multiOptions', description: - 'Choose from the list, or specify IDs using an expression', + 'Choose from the list, or specify IDs using an expression', typeOptions: { loadOptionsMethod: 'getCategories', }, diff --git a/packages/nodes-base/nodes/Microsoft/Outlook/v1/DraftMessageSharedDescription.ts b/packages/nodes-base/nodes/Microsoft/Outlook/v1/DraftMessageSharedDescription.ts index 59190650f2..6ed38431e4 100644 --- a/packages/nodes-base/nodes/Microsoft/Outlook/v1/DraftMessageSharedDescription.ts +++ b/packages/nodes-base/nodes/Microsoft/Outlook/v1/DraftMessageSharedDescription.ts @@ -92,7 +92,7 @@ export const draftMessageSharedFields: INodeProperties[] = [ name: 'categories', type: 'multiOptions', description: - 'Choose from the list, or specify IDs using an expression', + 'Choose from the list, or specify IDs using an expression', typeOptions: { loadOptionsMethod: 'getCategories', }, diff --git a/packages/nodes-base/nodes/Microsoft/Outlook/v1/MessageDescription.ts b/packages/nodes-base/nodes/Microsoft/Outlook/v1/MessageDescription.ts index a490489c72..0865fa3b35 100644 --- a/packages/nodes-base/nodes/Microsoft/Outlook/v1/MessageDescription.ts +++ b/packages/nodes-base/nodes/Microsoft/Outlook/v1/MessageDescription.ts @@ -452,7 +452,7 @@ export const messageFields: INodeProperties[] = [ name: 'categories', type: 'multiOptions', description: - 'Choose from the list, or specify IDs using an expression', + 'Choose from the list, or specify IDs using an expression', typeOptions: { loadOptionsMethod: 'getCategories', }, diff --git a/packages/nodes-base/nodes/Microsoft/Outlook/v1/MicrosoftOutlookV1.node.ts b/packages/nodes-base/nodes/Microsoft/Outlook/v1/MicrosoftOutlookV1.node.ts index 19ef735e88..e9f8362116 100644 --- a/packages/nodes-base/nodes/Microsoft/Outlook/v1/MicrosoftOutlookV1.node.ts +++ b/packages/nodes-base/nodes/Microsoft/Outlook/v1/MicrosoftOutlookV1.node.ts @@ -1,5 +1,3 @@ -/* eslint-disable n8n-nodes-base/node-filename-against-convention */ - import type { IBinaryKeyData, IDataObject, @@ -12,7 +10,7 @@ import type { INodeTypeDescription, JsonObject, } from 'n8n-workflow'; -import { NodeApiError, NodeOperationError } from 'n8n-workflow'; +import { NodeApiError, NodeConnectionType, NodeOperationError } from 'n8n-workflow'; import { createMessage, @@ -50,8 +48,8 @@ const versionDescription: INodeTypeDescription = { defaults: { name: 'Microsoft Outlook', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'microsoftOutlookOAuth2Api', @@ -162,7 +160,7 @@ export class MicrosoftOutlookV1 implements INodeType { returnData.push({ success: true }); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push({ error: error.message }); continue; } @@ -209,7 +207,7 @@ export class MicrosoftOutlookV1 implements INodeType { return [returnData as INodeExecutionData[]]; } } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push({ error: error.message }); continue; } @@ -237,7 +235,7 @@ export class MicrosoftOutlookV1 implements INodeType { ); returnData.push(responseData as IDataObject); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push({ error: error.message }); continue; } @@ -299,7 +297,7 @@ export class MicrosoftOutlookV1 implements INodeType { returnData.push(responseData as IDataObject); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push({ error: error.message }); continue; } @@ -333,7 +331,7 @@ export class MicrosoftOutlookV1 implements INodeType { returnData.push({ success: true }); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push({ error: error.message }); continue; } @@ -419,7 +417,7 @@ export class MicrosoftOutlookV1 implements INodeType { returnData.push(responseData as IDataObject); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push({ error: error.message }); continue; } @@ -471,7 +469,7 @@ export class MicrosoftOutlookV1 implements INodeType { mimeType, ); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { items[i].json = { error: error.message }; continue; } @@ -524,7 +522,7 @@ export class MicrosoftOutlookV1 implements INodeType { returnData.push.apply(returnData, responseData as IDataObject[]); } } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push({ error: error.message }); continue; } @@ -554,7 +552,7 @@ export class MicrosoftOutlookV1 implements INodeType { ); returnData.push({ success: true }); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push({ error: error.message }); continue; } @@ -627,7 +625,7 @@ export class MicrosoftOutlookV1 implements INodeType { responseData = await microsoftApiRequest.call(this, 'POST', '/sendMail', body, {}); returnData.push({ success: true }); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push({ error: error.message }); continue; } @@ -738,7 +736,7 @@ export class MicrosoftOutlookV1 implements INodeType { } returnData.push({ success: true }); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push({ error: error.message }); continue; } @@ -800,7 +798,7 @@ export class MicrosoftOutlookV1 implements INodeType { mimeType, ); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { items[i].json = { error: error.message }; continue; } @@ -831,7 +829,7 @@ export class MicrosoftOutlookV1 implements INodeType { ); returnData.push(responseData as IDataObject); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push({ error: error.message }); continue; } @@ -874,7 +872,7 @@ export class MicrosoftOutlookV1 implements INodeType { } returnData.push.apply(returnData, responseData as IDataObject[]); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push({ error: error.message }); continue; } @@ -912,7 +910,7 @@ export class MicrosoftOutlookV1 implements INodeType { responseData = await microsoftApiRequest.call(this, 'POST', endpoint, body); returnData.push(responseData as IDataObject); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push({ error: error.message }); continue; } @@ -932,7 +930,7 @@ export class MicrosoftOutlookV1 implements INodeType { ); returnData.push({ success: true }); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push({ error: error.message }); continue; } @@ -963,7 +961,7 @@ export class MicrosoftOutlookV1 implements INodeType { ); returnData.push(responseData as IDataObject); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push({ error: error.message }); continue; } @@ -1002,7 +1000,7 @@ export class MicrosoftOutlookV1 implements INodeType { } returnData.push.apply(returnData, responseData as IDataObject[]); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push({ error: error.message }); continue; } @@ -1047,7 +1045,7 @@ export class MicrosoftOutlookV1 implements INodeType { } returnData.push.apply(returnData, responseData as IDataObject[]); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push({ error: error.message }); continue; } @@ -1074,7 +1072,7 @@ export class MicrosoftOutlookV1 implements INodeType { ); returnData.push(responseData as IDataObject); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push({ error: error.message }); continue; } @@ -1117,7 +1115,7 @@ export class MicrosoftOutlookV1 implements INodeType { returnData.push.apply(returnData, responseData as IDataObject[]); } } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push({ error: error.message }); continue; } diff --git a/packages/nodes-base/nodes/Microsoft/Outlook/v2/actions/calendar/create.operation.ts b/packages/nodes-base/nodes/Microsoft/Outlook/v2/actions/calendar/create.operation.ts index 7602109481..87239e12c0 100644 --- a/packages/nodes-base/nodes/Microsoft/Outlook/v2/actions/calendar/create.operation.ts +++ b/packages/nodes-base/nodes/Microsoft/Outlook/v2/actions/calendar/create.operation.ts @@ -29,7 +29,7 @@ export const properties: INodeProperties[] = [ }, default: [], description: - 'If set, the calendar will be created in the specified calendar group. Choose from the list, or specify an ID using an expression.', + 'If set, the calendar will be created in the specified calendar group. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Color', diff --git a/packages/nodes-base/nodes/Microsoft/Outlook/v2/actions/draft/create.operation.ts b/packages/nodes-base/nodes/Microsoft/Outlook/v2/actions/draft/create.operation.ts index f7f6bb3c48..7f7f7d4771 100644 --- a/packages/nodes-base/nodes/Microsoft/Outlook/v2/actions/draft/create.operation.ts +++ b/packages/nodes-base/nodes/Microsoft/Outlook/v2/actions/draft/create.operation.ts @@ -1,5 +1,4 @@ import type { - IBinaryKeyData, IDataObject, IExecuteFunctions, INodeExecutionData, @@ -74,7 +73,7 @@ export const properties: INodeProperties[] = [ name: 'categories', type: 'multiOptions', description: - 'Choose from the list, or specify IDs using an expression', + 'Choose from the list, or specify IDs using an expression', typeOptions: { loadOptionsMethod: 'getCategoriesNames', }, @@ -239,7 +238,7 @@ export async function execute(this: IExecuteFunctions, index: number, items: INo ); } - const binaryData = (items[index].binary as IBinaryKeyData)[binaryPropertyName]; + const binaryData = items[index].binary[binaryPropertyName]; return { '@odata.type': '#microsoft.graph.fileAttachment', name: binaryData.fileName, diff --git a/packages/nodes-base/nodes/Microsoft/Outlook/v2/actions/draft/get.operation.ts b/packages/nodes-base/nodes/Microsoft/Outlook/v2/actions/draft/get.operation.ts index 3e69d91f5b..d8321768a9 100644 --- a/packages/nodes-base/nodes/Microsoft/Outlook/v2/actions/draft/get.operation.ts +++ b/packages/nodes-base/nodes/Microsoft/Outlook/v2/actions/draft/get.operation.ts @@ -48,7 +48,7 @@ export const properties: INodeProperties[] = [ displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, options: [ { diff --git a/packages/nodes-base/nodes/Microsoft/Outlook/v2/actions/draft/update.operation.ts b/packages/nodes-base/nodes/Microsoft/Outlook/v2/actions/draft/update.operation.ts index bc5a03564e..9f8f100d13 100644 --- a/packages/nodes-base/nodes/Microsoft/Outlook/v2/actions/draft/update.operation.ts +++ b/packages/nodes-base/nodes/Microsoft/Outlook/v2/actions/draft/update.operation.ts @@ -26,7 +26,7 @@ export const properties: INodeProperties[] = [ name: 'categories', type: 'multiOptions', description: - 'Choose from the list, or specify IDs using an expression', + 'Choose from the list, or specify IDs using an expression', typeOptions: { loadOptionsMethod: 'getCategoriesNames', }, diff --git a/packages/nodes-base/nodes/Microsoft/Outlook/v2/actions/event/create.operation.ts b/packages/nodes-base/nodes/Microsoft/Outlook/v2/actions/event/create.operation.ts index dd4c7f7bc4..774110002d 100644 --- a/packages/nodes-base/nodes/Microsoft/Outlook/v2/actions/event/create.operation.ts +++ b/packages/nodes-base/nodes/Microsoft/Outlook/v2/actions/event/create.operation.ts @@ -42,7 +42,7 @@ export const properties: INodeProperties[] = [ name: 'categories', type: 'multiOptions', description: - 'Choose from the list, or specify IDs using an expression', + 'Choose from the list, or specify IDs using an expression', typeOptions: { loadOptionsMethod: 'getCategoriesNames', }, diff --git a/packages/nodes-base/nodes/Microsoft/Outlook/v2/actions/event/update.operation.ts b/packages/nodes-base/nodes/Microsoft/Outlook/v2/actions/event/update.operation.ts index ab3336fd8b..12bb952469 100644 --- a/packages/nodes-base/nodes/Microsoft/Outlook/v2/actions/event/update.operation.ts +++ b/packages/nodes-base/nodes/Microsoft/Outlook/v2/actions/event/update.operation.ts @@ -22,7 +22,7 @@ export const properties: INodeProperties[] = [ name: 'categories', type: 'multiOptions', description: - 'Choose from the list, or specify IDs using an expression', + 'Choose from the list, or specify IDs using an expression', typeOptions: { loadOptionsMethod: 'getCategoriesNames', }, diff --git a/packages/nodes-base/nodes/Microsoft/Outlook/v2/actions/folder/create.operation.ts b/packages/nodes-base/nodes/Microsoft/Outlook/v2/actions/folder/create.operation.ts index ad4d1ef4f1..521cdbeae9 100644 --- a/packages/nodes-base/nodes/Microsoft/Outlook/v2/actions/folder/create.operation.ts +++ b/packages/nodes-base/nodes/Microsoft/Outlook/v2/actions/folder/create.operation.ts @@ -18,7 +18,7 @@ export const properties: INodeProperties[] = [ displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, options: [{ ...folderRLC, displayName: 'Parent Folder', required: false }], }, diff --git a/packages/nodes-base/nodes/Microsoft/Outlook/v2/actions/folder/get.operation.ts b/packages/nodes-base/nodes/Microsoft/Outlook/v2/actions/folder/get.operation.ts index 6ea2867a4f..b3f1c9014e 100644 --- a/packages/nodes-base/nodes/Microsoft/Outlook/v2/actions/folder/get.operation.ts +++ b/packages/nodes-base/nodes/Microsoft/Outlook/v2/actions/folder/get.operation.ts @@ -10,7 +10,7 @@ export const properties: INodeProperties[] = [ displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, options: [ { diff --git a/packages/nodes-base/nodes/Microsoft/Outlook/v2/actions/folderMessage/getAll.operation.ts b/packages/nodes-base/nodes/Microsoft/Outlook/v2/actions/folderMessage/getAll.operation.ts index 7d3b57c7e0..eec59b5061 100644 --- a/packages/nodes-base/nodes/Microsoft/Outlook/v2/actions/folderMessage/getAll.operation.ts +++ b/packages/nodes-base/nodes/Microsoft/Outlook/v2/actions/folderMessage/getAll.operation.ts @@ -191,7 +191,7 @@ export const properties: INodeProperties[] = [ displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, options: [ { diff --git a/packages/nodes-base/nodes/Microsoft/Outlook/v2/actions/message/get.operation.ts b/packages/nodes-base/nodes/Microsoft/Outlook/v2/actions/message/get.operation.ts index b253659e43..a69ca7efb8 100644 --- a/packages/nodes-base/nodes/Microsoft/Outlook/v2/actions/message/get.operation.ts +++ b/packages/nodes-base/nodes/Microsoft/Outlook/v2/actions/message/get.operation.ts @@ -49,7 +49,7 @@ export const properties: INodeProperties[] = [ displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, options: [ { diff --git a/packages/nodes-base/nodes/Microsoft/Outlook/v2/actions/message/getAll.operation.ts b/packages/nodes-base/nodes/Microsoft/Outlook/v2/actions/message/getAll.operation.ts index 6991118e14..dad68701e8 100644 --- a/packages/nodes-base/nodes/Microsoft/Outlook/v2/actions/message/getAll.operation.ts +++ b/packages/nodes-base/nodes/Microsoft/Outlook/v2/actions/message/getAll.operation.ts @@ -136,7 +136,7 @@ export const properties: INodeProperties[] = [ }, default: [], description: - 'Choose from the list, or specify IDs using an expression', + 'Choose from the list, or specify IDs using an expression', }, { displayName: 'Folders to Include', @@ -147,7 +147,7 @@ export const properties: INodeProperties[] = [ }, default: [], description: - 'Choose from the list, or specify IDs using an expression', + 'Choose from the list, or specify IDs using an expression', }, { displayName: 'Read Status', @@ -206,7 +206,7 @@ export const properties: INodeProperties[] = [ displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, options: [ { diff --git a/packages/nodes-base/nodes/Microsoft/Outlook/v2/actions/message/send.operation.ts b/packages/nodes-base/nodes/Microsoft/Outlook/v2/actions/message/send.operation.ts index 0e45dbb8cf..54b8b5108e 100644 --- a/packages/nodes-base/nodes/Microsoft/Outlook/v2/actions/message/send.operation.ts +++ b/packages/nodes-base/nodes/Microsoft/Outlook/v2/actions/message/send.operation.ts @@ -80,7 +80,7 @@ export const properties: INodeProperties[] = [ name: 'categories', type: 'multiOptions', description: - 'Choose from the list, or specify IDs using an expression', + 'Choose from the list, or specify IDs using an expression', typeOptions: { loadOptionsMethod: 'getCategoriesNames', }, diff --git a/packages/nodes-base/nodes/Microsoft/Outlook/v2/actions/message/update.operation.ts b/packages/nodes-base/nodes/Microsoft/Outlook/v2/actions/message/update.operation.ts index e6399489fc..18d2114804 100644 --- a/packages/nodes-base/nodes/Microsoft/Outlook/v2/actions/message/update.operation.ts +++ b/packages/nodes-base/nodes/Microsoft/Outlook/v2/actions/message/update.operation.ts @@ -26,7 +26,7 @@ export const properties: INodeProperties[] = [ name: 'categories', type: 'multiOptions', description: - 'Choose from the list, or specify IDs using an expression', + 'Choose from the list, or specify IDs using an expression', typeOptions: { loadOptionsMethod: 'getCategoriesNames', }, diff --git a/packages/nodes-base/nodes/Microsoft/Outlook/v2/actions/messageAttachment/add.operation.ts b/packages/nodes-base/nodes/Microsoft/Outlook/v2/actions/messageAttachment/add.operation.ts index dd3f596197..a2216b7255 100644 --- a/packages/nodes-base/nodes/Microsoft/Outlook/v2/actions/messageAttachment/add.operation.ts +++ b/packages/nodes-base/nodes/Microsoft/Outlook/v2/actions/messageAttachment/add.operation.ts @@ -1,5 +1,4 @@ import type { - IBinaryKeyData, IDataObject, IExecuteFunctions, INodeExecutionData, @@ -26,7 +25,7 @@ export const properties: INodeProperties[] = [ displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, options: [ { @@ -75,7 +74,7 @@ export async function execute(this: IExecuteFunctions, index: number, items: INo ); } - const binaryData = (items[index].binary as IBinaryKeyData)[binaryPropertyName]; + const binaryData = items[index].binary[binaryPropertyName]; const dataBuffer = await this.helpers.getBinaryDataBuffer(index, binaryPropertyName); const fileName = options.fileName === undefined ? binaryData.fileName : options.fileName; diff --git a/packages/nodes-base/nodes/Microsoft/Outlook/v2/actions/messageAttachment/getAll.operation.ts b/packages/nodes-base/nodes/Microsoft/Outlook/v2/actions/messageAttachment/getAll.operation.ts index 81df8d111a..be250c309a 100644 --- a/packages/nodes-base/nodes/Microsoft/Outlook/v2/actions/messageAttachment/getAll.operation.ts +++ b/packages/nodes-base/nodes/Microsoft/Outlook/v2/actions/messageAttachment/getAll.operation.ts @@ -10,7 +10,7 @@ export const properties: INodeProperties[] = [ displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, options: [ { diff --git a/packages/nodes-base/nodes/Microsoft/Outlook/v2/actions/node.description.ts b/packages/nodes-base/nodes/Microsoft/Outlook/v2/actions/node.description.ts index 586f3860a5..cbcc328fd0 100644 --- a/packages/nodes-base/nodes/Microsoft/Outlook/v2/actions/node.description.ts +++ b/packages/nodes-base/nodes/Microsoft/Outlook/v2/actions/node.description.ts @@ -1,5 +1,5 @@ /* eslint-disable n8n-nodes-base/node-filename-against-convention */ -import type { INodeTypeDescription } from 'n8n-workflow'; +import { NodeConnectionType, type INodeTypeDescription } from 'n8n-workflow'; import * as calendar from './calendar'; import * as contact from './contact'; import * as draft from './draft'; @@ -20,8 +20,9 @@ export const description: INodeTypeDescription = { defaults: { name: 'Microsoft Outlook', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], + usableAsTool: true, credentials: [ { name: 'microsoftOutlookOAuth2Api', diff --git a/packages/nodes-base/nodes/Microsoft/Outlook/v2/actions/router.ts b/packages/nodes-base/nodes/Microsoft/Outlook/v2/actions/router.ts index 2f477293f7..d6033e3ec8 100644 --- a/packages/nodes-base/nodes/Microsoft/Outlook/v2/actions/router.ts +++ b/packages/nodes-base/nodes/Microsoft/Outlook/v2/actions/router.ts @@ -62,7 +62,7 @@ export async function router(this: IExecuteFunctions) { returnData.push(...responseData); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { const executionErrorData = this.helpers.constructExecutionMetaData( this.helpers.returnJsonArray({ error: error.message }), { itemData: { item: i } }, diff --git a/packages/nodes-base/nodes/Microsoft/Sql/GenericFunctions.ts b/packages/nodes-base/nodes/Microsoft/Sql/GenericFunctions.ts index 14e880bb04..126ae45e03 100644 --- a/packages/nodes-base/nodes/Microsoft/Sql/GenericFunctions.ts +++ b/packages/nodes-base/nodes/Microsoft/Sql/GenericFunctions.ts @@ -1,9 +1,12 @@ +import type { IResult } from 'mssql'; +import mssql from 'mssql'; import type { IDataObject, INodeExecutionData } from 'n8n-workflow'; import { deepCopy } from 'n8n-workflow'; -import mssql from 'mssql'; -import type { ITables, OperationInputData } from './interfaces'; + import { chunk, flatten } from '@utils/utilities'; +import type { ITables, OperationInputData } from './interfaces'; + /** * Returns a copy of the item which only contains the json data and * of that only the defined properties @@ -234,3 +237,36 @@ export async function deleteOperation(tables: ITables, pool: mssql.ConnectionPoo 0, ); } + +export async function executeSqlQueryAndPrepareResults( + pool: mssql.ConnectionPool, + rawQuery: string, + itemIndex: number, +): Promise { + const rawResult: IResult = await pool.request().query(rawQuery); + const { recordsets, rowsAffected } = rawResult; + if (Array.isArray(recordsets) && recordsets.length > 0) { + const result: IDataObject[] = recordsets.length > 1 ? flatten(recordsets) : recordsets[0]; + + return result.map((entry) => ({ + json: entry, + pairedItem: [{ item: itemIndex }], + })); + } else if (rowsAffected && rowsAffected.length > 0) { + // Handle non-SELECT queries (e.g., INSERT, UPDATE, DELETE) + return rowsAffected.map((affectedRows, idx) => ({ + json: { + message: `Query ${idx + 1} executed successfully`, + rowsAffected: affectedRows, + }, + pairedItem: [{ item: itemIndex }], + })); + } else { + return [ + { + json: { message: 'Query executed successfully, but no rows were affected' }, + pairedItem: [{ item: itemIndex }], + }, + ]; + } +} diff --git a/packages/nodes-base/nodes/Microsoft/Sql/MicrosoftSql.node.json b/packages/nodes-base/nodes/Microsoft/Sql/MicrosoftSql.node.json index 887483e6a0..95823e5b2c 100644 --- a/packages/nodes-base/nodes/Microsoft/Sql/MicrosoftSql.node.json +++ b/packages/nodes-base/nodes/Microsoft/Sql/MicrosoftSql.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/microsoftSql" + "url": "https://docs.n8n.io/integrations/builtin/credentials/microsoftSql/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Microsoft/Sql/MicrosoftSql.node.ts b/packages/nodes-base/nodes/Microsoft/Sql/MicrosoftSql.node.ts index b701679773..0112c0f8bb 100644 --- a/packages/nodes-base/nodes/Microsoft/Sql/MicrosoftSql.node.ts +++ b/packages/nodes-base/nodes/Microsoft/Sql/MicrosoftSql.node.ts @@ -1,27 +1,28 @@ import type { IResult } from 'mssql'; -import type { - IExecuteFunctions, - ICredentialDataDecryptedObject, - ICredentialsDecrypted, - ICredentialTestFunctions, - IDataObject, - INodeCredentialTestResult, - INodeExecutionData, - INodeType, - INodeTypeDescription, +import { + type IExecuteFunctions, + type ICredentialDataDecryptedObject, + type ICredentialsDecrypted, + type ICredentialTestFunctions, + type IDataObject, + type INodeCredentialTestResult, + type INodeExecutionData, + type INodeType, + type INodeTypeDescription, + NodeConnectionType, } from 'n8n-workflow'; -import type { ITables } from './interfaces'; +import { flatten, generatePairedItemData, getResolvables } from '@utils/utilities'; import { configurePool, createTableStruct, deleteOperation, + executeSqlQueryAndPrepareResults, insertOperation, updateOperation, } from './GenericFunctions'; - -import { flatten, generatePairedItemData, getResolvables } from '@utils/utilities'; +import type { ITables } from './interfaces'; export class MicrosoftSql implements INodeType { description: INodeTypeDescription = { @@ -34,8 +35,9 @@ export class MicrosoftSql implements INodeType { defaults: { name: 'Microsoft SQL', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], + usableAsTool: true, parameterPane: 'wide', credentials: [ { @@ -266,19 +268,10 @@ export class MicrosoftSql implements INodeType { this.evaluateExpression(resolvable, i) as string, ); } - - const { recordsets }: IResult = await pool.request().query(rawQuery); - - const result: IDataObject[] = recordsets.length > 1 ? flatten(recordsets) : recordsets[0]; - - for (const entry of result) { - returnData.push({ - json: entry, - pairedItem: [{ item: i }], - }); - } + const results = await executeSqlQueryAndPrepareResults(pool, rawQuery, i); + returnData.push(...results); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push({ json: { error: error.message }, pairedItem: [{ item: i }], @@ -357,7 +350,7 @@ export class MicrosoftSql implements INodeType { { itemData }, ); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { responseData = items; } else { await pool.close(); diff --git a/packages/nodes-base/nodes/Microsoft/Sql/test/utils.test.ts b/packages/nodes-base/nodes/Microsoft/Sql/test/utils.test.ts index 12ecdd7998..25357dd2e9 100644 --- a/packages/nodes-base/nodes/Microsoft/Sql/test/utils.test.ts +++ b/packages/nodes-base/nodes/Microsoft/Sql/test/utils.test.ts @@ -1,15 +1,19 @@ import { Request } from 'mssql'; +import type { IResult } from 'mssql'; +import type mssql from 'mssql'; import type { IDataObject } from 'n8n-workflow'; + import { configurePool, deleteOperation, + executeSqlQueryAndPrepareResults, insertOperation, mssqlChunk, updateOperation, } from '../GenericFunctions'; describe('MSSQL tests', () => { - let querySpy: jest.SpyInstance>; + let querySpy: jest.SpyInstance; let request: Request; const assertParameters = (parameters: unknown[][] | IDataObject) => { @@ -34,18 +38,12 @@ describe('MSSQL tests', () => { ) { // eslint-disable-next-line @typescript-eslint/no-this-alias request = this; - return [ - [ - [ - { - recordsets: [], - recordset: undefined, - output: {}, - rowsAffected: [0], - }, - ], - ], - ]; + return { + recordsets: [], + recordset: [], + output: {}, + rowsAffected: [0], + } as unknown as IResult; }); }); @@ -154,4 +152,94 @@ describe('MSSQL tests', () => { expect(chunks.map((chunk) => chunk.length)).toEqual([699, 699, 699, 699, 204]); }); }); + + describe('executeSqlQueryAndPrepareResults', () => { + it('should handle SELECT query with single record', async () => { + querySpy.mockResolvedValueOnce({ + recordsets: [[{ id: 1, name: 'Test' }]] as any, + recordset: [{ id: 1, name: 'Test', columns: [{ name: 'id' }, { name: 'name' }] }], + rowsAffected: [1], + output: {}, + } as unknown as IResult); + + const pool = { request: () => new Request() } as any as mssql.ConnectionPool; + const result = await executeSqlQueryAndPrepareResults(pool, 'SELECT * FROM users', 0); + + expect(result).toEqual([ + { + json: { id: 1, name: 'Test' }, + pairedItem: [{ item: 0 }], + }, + ]); + expect(querySpy).toHaveBeenCalledWith('SELECT * FROM users'); + }); + + it('should handle SELECT query with multiple records', async () => { + querySpy.mockResolvedValueOnce({ + recordsets: [[{ id: 1 }], [{ name: 'Test' }]] as unknown, + rowsAffected: [1, 1], + output: {}, + } as unknown as IResult); + + const pool = { request: () => new Request() } as any as mssql.ConnectionPool; + const result = await executeSqlQueryAndPrepareResults(pool, 'SELECT id; SELECT name', 1); + + expect(result).toEqual([ + { json: { id: 1 }, pairedItem: [{ item: 1 }] }, + { json: { name: 'Test' }, pairedItem: [{ item: 1 }] }, + ]); + }); + + it('should handle non-SELECT query', async () => { + querySpy.mockResolvedValueOnce({ + recordsets: [], + recordset: [], + rowsAffected: [5], + output: {}, + } as unknown as IResult); + + const pool = { request: () => new Request() } as any as mssql.ConnectionPool; + const result = await executeSqlQueryAndPrepareResults(pool, 'UPDATE users SET active = 1', 2); + + expect(result).toEqual([ + { + json: { message: 'Query 1 executed successfully', rowsAffected: 5 }, + pairedItem: [{ item: 2 }], + }, + ]); + }); + + it('should handle query with no affected rows', async () => { + querySpy.mockResolvedValueOnce({ + recordsets: [], + recordset: [], + rowsAffected: [], + output: {}, + } as unknown as IResult); + + const pool = { request: () => new Request() } as any as mssql.ConnectionPool; + const result = await executeSqlQueryAndPrepareResults( + pool, + 'DELETE FROM users WHERE id = 999', + 3, + ); + + expect(result).toEqual([ + { + json: { message: 'Query executed successfully, but no rows were affected' }, + pairedItem: [{ item: 3 }], + }, + ]); + }); + + it('should throw an error when query fails', async () => { + const errorMessage = 'Database error'; + querySpy.mockRejectedValueOnce(new Error(errorMessage)); + + const pool = { request: () => new Request() } as any as mssql.ConnectionPool; + await expect(executeSqlQueryAndPrepareResults(pool, 'INVALID SQL', 4)).rejects.toThrow( + errorMessage, + ); + }); + }); }); diff --git a/packages/nodes-base/nodes/Microsoft/Teams/MicrosoftTeams.node.json b/packages/nodes-base/nodes/Microsoft/Teams/MicrosoftTeams.node.json index 569b5b8df7..03d322e99f 100644 --- a/packages/nodes-base/nodes/Microsoft/Teams/MicrosoftTeams.node.json +++ b/packages/nodes-base/nodes/Microsoft/Teams/MicrosoftTeams.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/microsoft" + "url": "https://docs.n8n.io/integrations/builtin/credentials/microsoft/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Microsoft/Teams/v1/ChannelDescription.ts b/packages/nodes-base/nodes/Microsoft/Teams/v1/ChannelDescription.ts index 5e9f63082f..486c60371f 100644 --- a/packages/nodes-base/nodes/Microsoft/Teams/v1/ChannelDescription.ts +++ b/packages/nodes-base/nodes/Microsoft/Teams/v1/ChannelDescription.ts @@ -57,7 +57,7 @@ export const channelFields: INodeProperties[] = [ required: true, type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getTeams', }, @@ -132,7 +132,7 @@ export const channelFields: INodeProperties[] = [ required: true, type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getTeams', }, @@ -149,7 +149,7 @@ export const channelFields: INodeProperties[] = [ name: 'channelId', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getChannels', loadOptionsDependsOn: ['teamId'], @@ -172,7 +172,7 @@ export const channelFields: INodeProperties[] = [ required: true, type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getTeams', }, @@ -189,7 +189,7 @@ export const channelFields: INodeProperties[] = [ name: 'channelId', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getChannels', loadOptionsDependsOn: ['teamId'], @@ -212,7 +212,7 @@ export const channelFields: INodeProperties[] = [ required: true, type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getTeams', }, @@ -265,7 +265,7 @@ export const channelFields: INodeProperties[] = [ required: true, type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getTeams', }, @@ -282,7 +282,7 @@ export const channelFields: INodeProperties[] = [ name: 'channelId', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getChannels', loadOptionsDependsOn: ['teamId'], diff --git a/packages/nodes-base/nodes/Microsoft/Teams/v1/ChannelMessageDescription.ts b/packages/nodes-base/nodes/Microsoft/Teams/v1/ChannelMessageDescription.ts index 1f3b469bd6..ff55815357 100644 --- a/packages/nodes-base/nodes/Microsoft/Teams/v1/ChannelMessageDescription.ts +++ b/packages/nodes-base/nodes/Microsoft/Teams/v1/ChannelMessageDescription.ts @@ -39,7 +39,7 @@ export const channelMessageFields: INodeProperties[] = [ required: true, type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getTeams', }, @@ -56,7 +56,7 @@ export const channelMessageFields: INodeProperties[] = [ name: 'channelId', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getChannels', loadOptionsDependsOn: ['teamId'], @@ -146,7 +146,7 @@ export const channelMessageFields: INodeProperties[] = [ required: true, type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getTeams', }, @@ -163,7 +163,7 @@ export const channelMessageFields: INodeProperties[] = [ name: 'channelId', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getChannels', loadOptionsDependsOn: ['teamId'], diff --git a/packages/nodes-base/nodes/Microsoft/Teams/v1/ChatMessageDescription.ts b/packages/nodes-base/nodes/Microsoft/Teams/v1/ChatMessageDescription.ts index ccc309e565..8728146cbd 100644 --- a/packages/nodes-base/nodes/Microsoft/Teams/v1/ChatMessageDescription.ts +++ b/packages/nodes-base/nodes/Microsoft/Teams/v1/ChatMessageDescription.ts @@ -45,7 +45,7 @@ export const chatMessageFields: INodeProperties[] = [ required: true, type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getChats', }, @@ -107,7 +107,7 @@ export const chatMessageFields: INodeProperties[] = [ }, default: {}, description: 'Other options to set', - placeholder: 'Add options', + placeholder: 'Add option', options: [ { displayName: 'Include Link to Workflow', @@ -145,7 +145,7 @@ export const chatMessageFields: INodeProperties[] = [ required: true, type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getChats', }, diff --git a/packages/nodes-base/nodes/Microsoft/Teams/v1/MicrosoftTeamsV1.node.ts b/packages/nodes-base/nodes/Microsoft/Teams/v1/MicrosoftTeamsV1.node.ts index d9ac396989..88e4b71357 100644 --- a/packages/nodes-base/nodes/Microsoft/Teams/v1/MicrosoftTeamsV1.node.ts +++ b/packages/nodes-base/nodes/Microsoft/Teams/v1/MicrosoftTeamsV1.node.ts @@ -1,13 +1,13 @@ -/* eslint-disable n8n-nodes-base/node-filename-against-convention */ -import type { - IExecuteFunctions, - IDataObject, - ILoadOptionsFunctions, - INodeExecutionData, - INodePropertyOptions, - INodeType, - INodeTypeDescription, - INodeTypeBaseDescription, +import { + type IExecuteFunctions, + type IDataObject, + type ILoadOptionsFunctions, + type INodeExecutionData, + type INodePropertyOptions, + type INodeType, + type INodeTypeDescription, + type INodeTypeBaseDescription, + NodeConnectionType, } from 'n8n-workflow'; import { oldVersionNotice } from '../../../../utils/descriptions'; @@ -36,8 +36,8 @@ const versionDescription: INodeTypeDescription = { defaults: { name: 'Microsoft Teams', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'microsoftTeamsOAuth2Api', @@ -667,7 +667,7 @@ export class MicrosoftTeamsV1 implements INodeType { returnData.push(...executionData); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { const executionErrorData = this.helpers.constructExecutionMetaData( this.helpers.returnJsonArray({ error: error.message }), { itemData: { item: i } }, diff --git a/packages/nodes-base/nodes/Microsoft/Teams/v1/TaskDescription.ts b/packages/nodes-base/nodes/Microsoft/Teams/v1/TaskDescription.ts index 32bbe56a13..4cf1a60578 100644 --- a/packages/nodes-base/nodes/Microsoft/Teams/v1/TaskDescription.ts +++ b/packages/nodes-base/nodes/Microsoft/Teams/v1/TaskDescription.ts @@ -84,7 +84,7 @@ export const taskFields: INodeProperties[] = [ required: true, type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getGroups', loadOptionsDependsOn: ['groupSource'], @@ -114,7 +114,7 @@ export const taskFields: INodeProperties[] = [ }, default: '', description: - 'The plan for the task to belong to. Choose from the list, or specify an ID using an expression.', + 'The plan for the task to belong to. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Bucket Name or ID', @@ -133,7 +133,7 @@ export const taskFields: INodeProperties[] = [ }, default: '', description: - 'The bucket for the task to belong to. Choose from the list, or specify an ID using an expression.', + 'The bucket for the task to belong to. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Title', @@ -172,7 +172,7 @@ export const taskFields: INodeProperties[] = [ }, default: '', description: - 'Who the task should be assigned to. Choose from the list, or specify an ID using an expression.', + 'Who the task should be assigned to. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Due Date Time', @@ -192,7 +192,7 @@ export const taskFields: INodeProperties[] = [ }, default: [], description: - 'Labels to assign to the task. Choose from the list, or specify IDs using an expression.', + 'Labels to assign to the task. Choose from the list, or specify IDs using an expression.', }, { displayName: 'Percent Complete', @@ -278,7 +278,7 @@ export const taskFields: INodeProperties[] = [ required: true, type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getGroups', loadOptionsDependsOn: ['groupSource'], @@ -296,7 +296,7 @@ export const taskFields: INodeProperties[] = [ name: 'memberId', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getMembers', loadOptionsDependsOn: ['groupId'], @@ -315,7 +315,7 @@ export const taskFields: INodeProperties[] = [ name: 'planId', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getPlans', loadOptionsDependsOn: ['groupId'], @@ -401,7 +401,7 @@ export const taskFields: INodeProperties[] = [ }, default: '', description: - 'Who the task should be assigned to. Choose from the list, or specify an ID using an expression.', + 'Who the task should be assigned to. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Bucket Name or ID', @@ -413,7 +413,7 @@ export const taskFields: INodeProperties[] = [ }, default: '', description: - 'The bucket for the task to belong to. Choose from the list, or specify an ID using an expression.', + 'The bucket for the task to belong to. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Due Date Time', @@ -428,7 +428,7 @@ export const taskFields: INodeProperties[] = [ name: 'groupId', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getGroups', loadOptionsDependsOn: ['groupSource'], @@ -445,7 +445,7 @@ export const taskFields: INodeProperties[] = [ }, default: [], description: - 'Labels to assign to the task. Choose from the list, or specify IDs using an expression.', + 'Labels to assign to the task. Choose from the list, or specify IDs using an expression.', }, { displayName: 'Percent Complete', @@ -469,7 +469,7 @@ export const taskFields: INodeProperties[] = [ }, default: '', description: - 'The plan for the task to belong to. Choose from the list, or specify an ID using an expression.', + 'The plan for the task to belong to. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Title', diff --git a/packages/nodes-base/nodes/Microsoft/Teams/v2/actions/channel/create.operation.ts b/packages/nodes-base/nodes/Microsoft/Teams/v2/actions/channel/create.operation.ts index 7635dfc905..e41110a0b6 100644 --- a/packages/nodes-base/nodes/Microsoft/Teams/v2/actions/channel/create.operation.ts +++ b/packages/nodes-base/nodes/Microsoft/Teams/v2/actions/channel/create.operation.ts @@ -19,7 +19,7 @@ const properties: INodeProperties[] = [ name: 'options', type: 'collection', default: {}, - placeholder: 'Add Option', + placeholder: 'Add option', options: [ { displayName: 'Description', diff --git a/packages/nodes-base/nodes/Microsoft/Teams/v2/actions/channel/update.operation.ts b/packages/nodes-base/nodes/Microsoft/Teams/v2/actions/channel/update.operation.ts index 3a60563b56..a88b19981d 100644 --- a/packages/nodes-base/nodes/Microsoft/Teams/v2/actions/channel/update.operation.ts +++ b/packages/nodes-base/nodes/Microsoft/Teams/v2/actions/channel/update.operation.ts @@ -19,7 +19,7 @@ const properties: INodeProperties[] = [ name: 'options', type: 'collection', default: {}, - placeholder: 'Add Option', + placeholder: 'Add option', options: [ { displayName: 'Description', diff --git a/packages/nodes-base/nodes/Microsoft/Teams/v2/actions/channelMessage/create.operation.ts b/packages/nodes-base/nodes/Microsoft/Teams/v2/actions/channelMessage/create.operation.ts index 34c32341d9..8054bccbd6 100644 --- a/packages/nodes-base/nodes/Microsoft/Teams/v2/actions/channelMessage/create.operation.ts +++ b/packages/nodes-base/nodes/Microsoft/Teams/v2/actions/channelMessage/create.operation.ts @@ -40,7 +40,7 @@ const properties: INodeProperties[] = [ displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, options: [ { diff --git a/packages/nodes-base/nodes/Microsoft/Teams/v2/actions/chatMessage/create.operation.ts b/packages/nodes-base/nodes/Microsoft/Teams/v2/actions/chatMessage/create.operation.ts index fbb5d56839..de4cf5dcab 100644 --- a/packages/nodes-base/nodes/Microsoft/Teams/v2/actions/chatMessage/create.operation.ts +++ b/packages/nodes-base/nodes/Microsoft/Teams/v2/actions/chatMessage/create.operation.ts @@ -41,7 +41,7 @@ const properties: INodeProperties[] = [ type: 'collection', default: {}, description: 'Other options to set', - placeholder: 'Add options', + placeholder: 'Add option', options: [ { displayName: 'Include Link to Workflow', diff --git a/packages/nodes-base/nodes/Microsoft/Teams/v2/actions/router.ts b/packages/nodes-base/nodes/Microsoft/Teams/v2/actions/router.ts index 733ebb79a5..d3111a95e3 100644 --- a/packages/nodes-base/nodes/Microsoft/Teams/v2/actions/router.ts +++ b/packages/nodes-base/nodes/Microsoft/Teams/v2/actions/router.ts @@ -66,7 +66,7 @@ export async function router(this: IExecuteFunctions): Promiseexpression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getTaskLists', }, diff --git a/packages/nodes-base/nodes/Microsoft/ToDo/MicrosoftToDo.node.json b/packages/nodes-base/nodes/Microsoft/ToDo/MicrosoftToDo.node.json index 4cb5033368..7838918142 100644 --- a/packages/nodes-base/nodes/Microsoft/ToDo/MicrosoftToDo.node.json +++ b/packages/nodes-base/nodes/Microsoft/ToDo/MicrosoftToDo.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/microsoft" + "url": "https://docs.n8n.io/integrations/builtin/credentials/microsoft/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Microsoft/ToDo/MicrosoftToDo.node.ts b/packages/nodes-base/nodes/Microsoft/ToDo/MicrosoftToDo.node.ts index 012433efb0..eb8622ee6f 100644 --- a/packages/nodes-base/nodes/Microsoft/ToDo/MicrosoftToDo.node.ts +++ b/packages/nodes-base/nodes/Microsoft/ToDo/MicrosoftToDo.node.ts @@ -7,7 +7,7 @@ import type { INodeType, INodeTypeDescription, } from 'n8n-workflow'; -import { NodeOperationError } from 'n8n-workflow'; +import { NodeConnectionType, NodeOperationError } from 'n8n-workflow'; import moment from 'moment-timezone'; import { microsoftApiRequest, microsoftApiRequestAllItems } from './GenericFunctions'; @@ -30,8 +30,8 @@ export class MicrosoftToDo implements INodeType { defaults: { name: 'Microsoft To Do', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'microsoftToDoOAuth2Api', @@ -414,7 +414,7 @@ export class MicrosoftToDo implements INodeType { } } } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { const executionErrorData = this.helpers.constructExecutionMetaData( this.helpers.returnJsonArray({ error: error.message }), { itemData: { item: i } }, diff --git a/packages/nodes-base/nodes/Microsoft/ToDo/TaskDescription.ts b/packages/nodes-base/nodes/Microsoft/ToDo/TaskDescription.ts index f46177b56c..50a01eafd0 100644 --- a/packages/nodes-base/nodes/Microsoft/ToDo/TaskDescription.ts +++ b/packages/nodes-base/nodes/Microsoft/ToDo/TaskDescription.ts @@ -62,7 +62,7 @@ export const taskFields: INodeProperties[] = [ required: true, default: '', description: - 'The identifier of the list, unique in the user\'s mailbox. Choose from the list, or specify an ID using an expression.', + 'The identifier of the list, unique in the user\'s mailbox. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Subject', @@ -185,7 +185,7 @@ export const taskFields: INodeProperties[] = [ required: true, default: '', description: - 'The identifier of the list, unique in the user\'s mailbox. Choose from the list, or specify an ID using an expression.', + 'The identifier of the list, unique in the user\'s mailbox. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Task ID', diff --git a/packages/nodes-base/nodes/Mindee/Mindee.node.json b/packages/nodes-base/nodes/Mindee/Mindee.node.json index 768717cb23..ea07ec44df 100644 --- a/packages/nodes-base/nodes/Mindee/Mindee.node.json +++ b/packages/nodes-base/nodes/Mindee/Mindee.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/mindee" + "url": "https://docs.n8n.io/integrations/builtin/credentials/mindee/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Mindee/Mindee.node.ts b/packages/nodes-base/nodes/Mindee/Mindee.node.ts index 2abb1f9d67..3891736b24 100644 --- a/packages/nodes-base/nodes/Mindee/Mindee.node.ts +++ b/packages/nodes-base/nodes/Mindee/Mindee.node.ts @@ -5,7 +5,7 @@ import type { INodeType, INodeTypeDescription, } from 'n8n-workflow'; -import { NodeOperationError } from 'n8n-workflow'; +import { NodeConnectionType, NodeOperationError } from 'n8n-workflow'; import { cleanData, cleanDataPreviousApiVersions, mindeeApiRequest } from './GenericFunctions'; @@ -21,8 +21,8 @@ export class Mindee implements INodeType { defaults: { name: 'Mindee', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'mindeeReceiptApi', @@ -352,7 +352,7 @@ export class Mindee implements INodeType { returnData.push(responseData as IDataObject); } } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push({ error: error.message }); continue; } diff --git a/packages/nodes-base/nodes/Misp/GenericFunctions.ts b/packages/nodes-base/nodes/Misp/GenericFunctions.ts index bdf59bda34..e7e994f174 100644 --- a/packages/nodes-base/nodes/Misp/GenericFunctions.ts +++ b/packages/nodes-base/nodes/Misp/GenericFunctions.ts @@ -8,7 +8,6 @@ import type { IRequestOptions, } from 'n8n-workflow'; import { NodeApiError, NodeOperationError, jsonParse } from 'n8n-workflow'; - import type { MispCredentials } from './types'; export async function mispApiRequest( diff --git a/packages/nodes-base/nodes/Misp/Misp.node.json b/packages/nodes-base/nodes/Misp/Misp.node.json index 16b91eadfc..2d7ec79d97 100644 --- a/packages/nodes-base/nodes/Misp/Misp.node.json +++ b/packages/nodes-base/nodes/Misp/Misp.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/misp" + "url": "https://docs.n8n.io/integrations/builtin/credentials/misp/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Misp/Misp.node.ts b/packages/nodes-base/nodes/Misp/Misp.node.ts index e534f4e165..59ce7b8095 100644 --- a/packages/nodes-base/nodes/Misp/Misp.node.ts +++ b/packages/nodes-base/nodes/Misp/Misp.node.ts @@ -1,10 +1,11 @@ -import type { - IExecuteFunctions, - ILoadOptionsFunctions, - IDataObject, - INodeExecutionData, - INodeType, - INodeTypeDescription, +import { + type IExecuteFunctions, + type ILoadOptionsFunctions, + type IDataObject, + type INodeExecutionData, + type INodeType, + type INodeTypeDescription, + NodeConnectionType, } from 'n8n-workflow'; import { @@ -55,8 +56,8 @@ export class Misp implements INodeType { defaults: { name: 'MISP', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'mispApi', @@ -767,7 +768,7 @@ export class Misp implements INodeType { } } } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { const executionErrorData = this.helpers.constructExecutionMetaData( this.helpers.returnJsonArray({ error: error.message }), { itemData: { item: i } }, diff --git a/packages/nodes-base/nodes/Misp/descriptions/AttributeDescription.ts b/packages/nodes-base/nodes/Misp/descriptions/AttributeDescription.ts index 09e54912b4..a04d76eb11 100644 --- a/packages/nodes-base/nodes/Misp/descriptions/AttributeDescription.ts +++ b/packages/nodes-base/nodes/Misp/descriptions/AttributeDescription.ts @@ -168,7 +168,7 @@ export const attributeFields: INodeProperties[] = [ type: 'options', default: '', description: - 'Use only for when Sharing Group is selected in Distribution. Choose from the list, or specify an ID using an expression.', + 'Use only for when Sharing Group is selected in Distribution. Choose from the list, or specify an ID using an expression.', typeOptions: { loadOptionsMethod: 'getSharingGroups', }, @@ -317,7 +317,7 @@ export const attributeFields: INodeProperties[] = [ default: '', // eslint-disable-next-line n8n-nodes-base/node-param-description-wrong-for-dynamic-options description: - 'Choose from the list, or specify an ID using an expression. Use only for when Sharing Group is selected in Distribution.', + 'Choose from the list, or specify an ID using an expression. Use only for when Sharing Group is selected in Distribution.', typeOptions: { loadOptionsMethod: 'getSharingGroups', }, diff --git a/packages/nodes-base/nodes/Misp/descriptions/EventDescription.ts b/packages/nodes-base/nodes/Misp/descriptions/EventDescription.ts index ca46869f7f..94d2a1a1e5 100644 --- a/packages/nodes-base/nodes/Misp/descriptions/EventDescription.ts +++ b/packages/nodes-base/nodes/Misp/descriptions/EventDescription.ts @@ -79,7 +79,7 @@ export const eventFields: INodeProperties[] = [ default: '', required: true, description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getOrgs', }, @@ -177,7 +177,7 @@ export const eventFields: INodeProperties[] = [ type: 'options', default: '', description: - 'Use only for when Sharing Group is selected in Distribution. Choose from the list, or specify an ID using an expression.', + 'Use only for when Sharing Group is selected in Distribution. Choose from the list, or specify an ID using an expression.', typeOptions: { loadOptionsMethod: 'getSharingGroups', }, @@ -414,7 +414,7 @@ export const eventFields: INodeProperties[] = [ default: '', // eslint-disable-next-line n8n-nodes-base/node-param-description-wrong-for-dynamic-options description: - 'Choose from the list, or specify an ID using an expression. Use only for when Sharing Group is selected in Distribution.', + 'Choose from the list, or specify an ID using an expression. Use only for when Sharing Group is selected in Distribution.', typeOptions: { loadOptionsMethod: 'getSharingGroups', }, diff --git a/packages/nodes-base/nodes/Misp/descriptions/EventTagDescription.ts b/packages/nodes-base/nodes/Misp/descriptions/EventTagDescription.ts index a1695882db..c0b7b0625d 100644 --- a/packages/nodes-base/nodes/Misp/descriptions/EventTagDescription.ts +++ b/packages/nodes-base/nodes/Misp/descriptions/EventTagDescription.ts @@ -49,7 +49,7 @@ export const eventTagFields: INodeProperties[] = [ displayName: 'Tag Name or ID', name: 'tagId', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', type: 'options', required: true, default: '', @@ -85,7 +85,7 @@ export const eventTagFields: INodeProperties[] = [ displayName: 'Tag Name or ID', name: 'tagId', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', type: 'options', required: true, default: '', diff --git a/packages/nodes-base/nodes/Misp/descriptions/UserDescription.ts b/packages/nodes-base/nodes/Misp/descriptions/UserDescription.ts index e98a971e01..40e9ff69f6 100644 --- a/packages/nodes-base/nodes/Misp/descriptions/UserDescription.ts +++ b/packages/nodes-base/nodes/Misp/descriptions/UserDescription.ts @@ -100,7 +100,7 @@ export const userFields: INodeProperties[] = [ type: 'options', default: '', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getUsers', }, @@ -110,7 +110,7 @@ export const userFields: INodeProperties[] = [ name: 'org_id', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', default: '', typeOptions: { loadOptionsMethod: 'getOrgs', @@ -233,7 +233,7 @@ export const userFields: INodeProperties[] = [ name: 'invited_by', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', default: '', typeOptions: { loadOptionsMethod: 'getUsers', @@ -244,7 +244,7 @@ export const userFields: INodeProperties[] = [ name: 'org_id', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', default: '', typeOptions: { loadOptionsMethod: 'getOrgs', diff --git a/packages/nodes-base/nodes/Mocean/Mocean.node.json b/packages/nodes-base/nodes/Mocean/Mocean.node.json index d969c2159f..60668ac35f 100644 --- a/packages/nodes-base/nodes/Mocean/Mocean.node.json +++ b/packages/nodes-base/nodes/Mocean/Mocean.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/mocean" + "url": "https://docs.n8n.io/integrations/builtin/credentials/mocean/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Mocean/Mocean.node.ts b/packages/nodes-base/nodes/Mocean/Mocean.node.ts index f1bbe8b5c9..e6bc70242c 100644 --- a/packages/nodes-base/nodes/Mocean/Mocean.node.ts +++ b/packages/nodes-base/nodes/Mocean/Mocean.node.ts @@ -10,7 +10,7 @@ import type { JsonObject, IHttpRequestMethods, } from 'n8n-workflow'; -import { NodeOperationError } from 'n8n-workflow'; +import { NodeConnectionType, NodeOperationError } from 'n8n-workflow'; import { moceanApiRequest } from './GenericFunctions'; @@ -26,8 +26,8 @@ export class Mocean implements INodeType { defaults: { name: 'Mocean', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'moceanApi', @@ -283,7 +283,7 @@ export class Mocean implements INodeType { }); } } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push({ error: (error as JsonObject).message }); continue; } diff --git a/packages/nodes-base/nodes/MondayCom/BoardColumnDescription.ts b/packages/nodes-base/nodes/MondayCom/BoardColumnDescription.ts index 6d011ab02f..3116f5c8fe 100644 --- a/packages/nodes-base/nodes/MondayCom/BoardColumnDescription.ts +++ b/packages/nodes-base/nodes/MondayCom/BoardColumnDescription.ts @@ -38,7 +38,7 @@ export const boardColumnFields: INodeProperties[] = [ name: 'boardId', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', default: '', typeOptions: { loadOptionsMethod: 'getBoards', @@ -196,7 +196,7 @@ export const boardColumnFields: INodeProperties[] = [ name: 'boardId', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', default: '', typeOptions: { loadOptionsMethod: 'getBoards', diff --git a/packages/nodes-base/nodes/MondayCom/BoardDescription.ts b/packages/nodes-base/nodes/MondayCom/BoardDescription.ts index 2bb61a0669..e342c32ef4 100644 --- a/packages/nodes-base/nodes/MondayCom/BoardDescription.ts +++ b/packages/nodes-base/nodes/MondayCom/BoardDescription.ts @@ -61,7 +61,7 @@ export const boardFields: INodeProperties[] = [ }, }, description: - 'Board unique identifiers. Choose from the list, or specify an ID using an expression.', + 'Board unique identifiers. Choose from the list, or specify an ID using an expression.', }, /* -------------------------------------------------------------------------- */ /* board:create */ @@ -152,7 +152,7 @@ export const boardFields: INodeProperties[] = [ }, }, description: - 'Board unique identifiers. Choose from the list, or specify an ID using an expression.', + 'Board unique identifiers. Choose from the list, or specify an ID using an expression.', }, /* -------------------------------------------------------------------------- */ /* board:getAll */ diff --git a/packages/nodes-base/nodes/MondayCom/BoardGroupDescription.ts b/packages/nodes-base/nodes/MondayCom/BoardGroupDescription.ts index eba9cc8140..cb81e2a48f 100644 --- a/packages/nodes-base/nodes/MondayCom/BoardGroupDescription.ts +++ b/packages/nodes-base/nodes/MondayCom/BoardGroupDescription.ts @@ -44,7 +44,7 @@ export const boardGroupFields: INodeProperties[] = [ name: 'boardId', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', default: '', typeOptions: { loadOptionsMethod: 'getBoards', @@ -79,7 +79,7 @@ export const boardGroupFields: INodeProperties[] = [ name: 'boardId', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getBoards', }, @@ -97,7 +97,7 @@ export const boardGroupFields: INodeProperties[] = [ name: 'groupId', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', default: '', typeOptions: { loadOptionsMethod: 'getGroups', @@ -119,7 +119,7 @@ export const boardGroupFields: INodeProperties[] = [ name: 'boardId', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', default: '', typeOptions: { loadOptionsMethod: 'getBoards', diff --git a/packages/nodes-base/nodes/MondayCom/BoardItemDescription.ts b/packages/nodes-base/nodes/MondayCom/BoardItemDescription.ts index e6a11ae0ac..37c6d48d78 100644 --- a/packages/nodes-base/nodes/MondayCom/BoardItemDescription.ts +++ b/packages/nodes-base/nodes/MondayCom/BoardItemDescription.ts @@ -122,7 +122,7 @@ export const boardItemFields: INodeProperties[] = [ }, }, description: - 'The unique identifier of the board. Choose from the list, or specify an ID using an expression.', + 'The unique identifier of the board. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Item ID', @@ -155,7 +155,7 @@ export const boardItemFields: INodeProperties[] = [ }, }, description: - 'The column\'s unique identifier. Choose from the list, or specify an ID using an expression.', + 'The column\'s unique identifier. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Value', @@ -191,7 +191,7 @@ export const boardItemFields: INodeProperties[] = [ }, }, description: - 'The unique identifier of the board. Choose from the list, or specify an ID using an expression.', + 'The unique identifier of the board. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Item ID', @@ -233,7 +233,7 @@ export const boardItemFields: INodeProperties[] = [ name: 'boardId', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getBoards', }, @@ -251,7 +251,7 @@ export const boardItemFields: INodeProperties[] = [ name: 'groupId', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', default: '', typeOptions: { loadOptionsMethod: 'getGroups', @@ -346,7 +346,7 @@ export const boardItemFields: INodeProperties[] = [ name: 'boardId', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', default: '', typeOptions: { loadOptionsMethod: 'getBoards', @@ -365,7 +365,7 @@ export const boardItemFields: INodeProperties[] = [ default: '', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getGroups', loadOptionsDependsOn: ['boardId'], @@ -428,7 +428,7 @@ export const boardItemFields: INodeProperties[] = [ }, }, description: - 'The unique identifier of the board. Choose from the list, or specify an ID using an expression.', + 'The unique identifier of the board. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Column Name or ID', @@ -447,7 +447,7 @@ export const boardItemFields: INodeProperties[] = [ }, }, description: - 'The column\'s unique identifier. Choose from the list, or specify an ID using an expression.', + 'The column\'s unique identifier. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Column Value', @@ -502,7 +502,7 @@ export const boardItemFields: INodeProperties[] = [ name: 'boardId', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getBoards', }, @@ -534,7 +534,7 @@ export const boardItemFields: INodeProperties[] = [ name: 'groupId', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', default: '', typeOptions: { loadOptionsMethod: 'getGroups', diff --git a/packages/nodes-base/nodes/MondayCom/MondayCom.node.json b/packages/nodes-base/nodes/MondayCom/MondayCom.node.json index 125d473a40..89f115296b 100644 --- a/packages/nodes-base/nodes/MondayCom/MondayCom.node.json +++ b/packages/nodes-base/nodes/MondayCom/MondayCom.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/mondayCom" + "url": "https://docs.n8n.io/integrations/builtin/credentials/mondayCom/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/MondayCom/MondayCom.node.ts b/packages/nodes-base/nodes/MondayCom/MondayCom.node.ts index 7b367aa927..c84cd9d872 100644 --- a/packages/nodes-base/nodes/MondayCom/MondayCom.node.ts +++ b/packages/nodes-base/nodes/MondayCom/MondayCom.node.ts @@ -7,7 +7,7 @@ import type { INodeType, INodeTypeDescription, } from 'n8n-workflow'; -import { NodeOperationError } from 'n8n-workflow'; +import { NodeConnectionType, NodeOperationError } from 'n8n-workflow'; import { snakeCase } from 'change-case'; import { @@ -41,8 +41,8 @@ export class MondayCom implements INodeType { defaults: { name: 'Monday.com', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'mondayComApi', @@ -765,7 +765,7 @@ export class MondayCom implements INodeType { returnData.push(...executionData); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { const executionErrorData = this.helpers.constructExecutionMetaData( this.helpers.returnJsonArray({ error: error.message }), { itemData: { item: i } }, diff --git a/packages/nodes-base/nodes/MongoDb/MongoDb.node.json b/packages/nodes-base/nodes/MongoDb/MongoDb.node.json index 21242c01b9..3cd1da80a3 100644 --- a/packages/nodes-base/nodes/MongoDb/MongoDb.node.json +++ b/packages/nodes-base/nodes/MongoDb/MongoDb.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/mongoDb" + "url": "https://docs.n8n.io/integrations/builtin/credentials/mongoDb/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/MongoDb/MongoDb.node.ts b/packages/nodes-base/nodes/MongoDb/MongoDb.node.ts index 1a200d9bd9..14d8718b92 100644 --- a/packages/nodes-base/nodes/MongoDb/MongoDb.node.ts +++ b/packages/nodes-base/nodes/MongoDb/MongoDb.node.ts @@ -9,7 +9,7 @@ import type { INodeTypeDescription, JsonObject, } from 'n8n-workflow'; -import { ApplicationError } from 'n8n-workflow'; +import { ApplicationError, NodeConnectionType } from 'n8n-workflow'; import type { FindOneAndReplaceOptions, @@ -43,8 +43,9 @@ export class MongoDb implements INodeType { defaults: { name: 'MongoDB', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], + usableAsTool: true, credentials: [ { name: 'mongoDb', @@ -80,7 +81,6 @@ export class MongoDb implements INodeType { const { databases } = await client.db().admin().listDatabases(); if (!(databases as IDataObject[]).map((db) => db.name).includes(database)) { - // eslint-disable-next-line n8n-nodes-base/node-execute-block-wrong-error-thrown throw new ApplicationError(`Database "${database}" does not exist`, { level: 'warning', }); @@ -142,7 +142,7 @@ export class MongoDb implements INodeType { returnData.push({ json: entry, pairedItem: fallbackPairedItems ?? [{ item: i }] }); } } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push({ json: { error: (error as JsonObject).message }, pairedItem: fallbackPairedItems ?? [{ item: i }], @@ -166,7 +166,7 @@ export class MongoDb implements INodeType { pairedItem: fallbackPairedItems ?? [{ item: i }], }); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push({ json: { error: (error as JsonObject).message }, pairedItem: fallbackPairedItems ?? [{ item: i }], @@ -196,6 +196,8 @@ export class MongoDb implements INodeType { const options = this.getNodeParameter('options', i); const limit = options.limit as number; const skip = options.skip as number; + const projection = + options.projection && (JSON.parse(options.projection as string) as Document); const sort = options.sort && (JSON.parse(options.sort as string) as Sort); if (skip > 0) { @@ -208,13 +210,17 @@ export class MongoDb implements INodeType { query = query.sort(sort); } + if (projection && projection instanceof Document) { + query = query.project(projection); + } + const queryResult = await query.toArray(); for (const entry of queryResult) { returnData.push({ json: entry, pairedItem: fallbackPairedItems ?? [{ item: i }] }); } } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push({ json: { error: (error as JsonObject).message }, pairedItem: fallbackPairedItems ?? [{ item: i }], @@ -254,7 +260,7 @@ export class MongoDb implements INodeType { .collection(this.getNodeParameter('collection', 0) as string) .findOneAndReplace(filter, item, updateOptions as FindOneAndReplaceOptions); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { item.json = { error: (error as JsonObject).message }; continue; } @@ -296,7 +302,7 @@ export class MongoDb implements INodeType { .collection(this.getNodeParameter('collection', 0) as string) .findOneAndUpdate(filter, { $set: item }, updateOptions as FindOneAndUpdateOptions); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { item.json = { error: (error as JsonObject).message }; continue; } @@ -335,7 +341,7 @@ export class MongoDb implements INodeType { }); } } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { responseData = [{ error: (error as JsonObject).message }]; } else { throw error; @@ -376,7 +382,7 @@ export class MongoDb implements INodeType { .collection(this.getNodeParameter('collection', 0) as string) .updateOne(filter, { $set: item }, updateOptions as UpdateOptions); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { item.json = { error: (error as JsonObject).message }; continue; } diff --git a/packages/nodes-base/nodes/MongoDb/MongoDbProperties.ts b/packages/nodes-base/nodes/MongoDb/MongoDbProperties.ts index bc7dc1e918..95b7fb93a5 100644 --- a/packages/nodes-base/nodes/MongoDb/MongoDbProperties.ts +++ b/packages/nodes-base/nodes/MongoDb/MongoDbProperties.ts @@ -118,7 +118,7 @@ export const nodeProperties: INodeProperties[] = [ }, }, default: {}, - placeholder: 'Add options', + placeholder: 'Add option', description: 'Add query options', options: [ { @@ -151,6 +151,18 @@ export const nodeProperties: INodeProperties[] = [ placeholder: '{ "field": -1 }', description: 'A JSON that defines the sort order of the result set', }, + { + displayName: 'Projection (JSON Format)', + name: 'projection', + type: 'json', + typeOptions: { + rows: 4, + }, + default: '{}', + placeholder: '{ "_id": 0, "field": 1 }', + description: + 'A JSON that defines a selection of fields to retrieve or exclude from the result set', + }, ], }, { @@ -240,7 +252,7 @@ export const nodeProperties: INodeProperties[] = [ operation: ['update', 'insert', 'findOneAndReplace', 'findOneAndUpdate'], }, }, - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, options: [ { @@ -248,7 +260,7 @@ export const nodeProperties: INodeProperties[] = [ name: 'dateFields', type: 'string', default: '', - description: 'Comma separeted list of fields that will be parsed as Mongo Date type', + description: 'Comma-separated list of fields that will be parsed as Mongo Date type', }, { displayName: 'Use Dot Notation', diff --git a/packages/nodes-base/nodes/MonicaCrm/GenericFunctions.ts b/packages/nodes-base/nodes/MonicaCrm/GenericFunctions.ts index e8f9e66778..24c143a30b 100644 --- a/packages/nodes-base/nodes/MonicaCrm/GenericFunctions.ts +++ b/packages/nodes-base/nodes/MonicaCrm/GenericFunctions.ts @@ -17,11 +17,11 @@ export async function monicaCrmApiRequest( body: IDataObject = {}, qs: IDataObject = {}, ) { - const credentials = (await this.getCredentials('monicaCrmApi')) as { + const credentials = await this.getCredentials<{ apiToken: string; environment: string; domain: string; - }; + }>('monicaCrmApi'); if (credentials === undefined) { throw new NodeOperationError(this.getNode(), 'No credentials got returned!'); diff --git a/packages/nodes-base/nodes/MonicaCrm/MonicaCrm.node.json b/packages/nodes-base/nodes/MonicaCrm/MonicaCrm.node.json index 4a0e148251..6e01f854b7 100644 --- a/packages/nodes-base/nodes/MonicaCrm/MonicaCrm.node.json +++ b/packages/nodes-base/nodes/MonicaCrm/MonicaCrm.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/monicaCrm/" + "url": "https://docs.n8n.io/integrations/builtin/credentials/monicaCrm/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/MonicaCrm/MonicaCrm.node.ts b/packages/nodes-base/nodes/MonicaCrm/MonicaCrm.node.ts index 19eb1ae7e4..32ef253ef8 100644 --- a/packages/nodes-base/nodes/MonicaCrm/MonicaCrm.node.ts +++ b/packages/nodes-base/nodes/MonicaCrm/MonicaCrm.node.ts @@ -1,10 +1,11 @@ -import type { - IExecuteFunctions, - IDataObject, - ILoadOptionsFunctions, - INodeExecutionData, - INodeType, - INodeTypeDescription, +import { + type IExecuteFunctions, + type IDataObject, + type ILoadOptionsFunctions, + type INodeExecutionData, + type INodeType, + type INodeTypeDescription, + NodeConnectionType, } from 'n8n-workflow'; import { @@ -56,8 +57,8 @@ export class MonicaCrm implements INodeType { defaults: { name: 'Monica CRM', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'monicaCrmApi', @@ -1148,7 +1149,7 @@ export class MonicaCrm implements INodeType { } } } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { const executionErrorData = this.helpers.constructExecutionMetaData( this.helpers.returnJsonArray({ error: error.message }), { itemData: { item: i } }, diff --git a/packages/nodes-base/nodes/MonicaCrm/descriptions/ActivityDescription.ts b/packages/nodes-base/nodes/MonicaCrm/descriptions/ActivityDescription.ts index 4d7c348a0e..32904e3a68 100644 --- a/packages/nodes-base/nodes/MonicaCrm/descriptions/ActivityDescription.ts +++ b/packages/nodes-base/nodes/MonicaCrm/descriptions/ActivityDescription.ts @@ -56,7 +56,7 @@ export const activityFields: INodeProperties[] = [ name: 'activityTypeId', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', required: true, default: '', typeOptions: { @@ -239,7 +239,7 @@ export const activityFields: INodeProperties[] = [ name: 'activity_type_id', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', default: '', typeOptions: { loadOptionsMethod: 'getActivityTypes', diff --git a/packages/nodes-base/nodes/MonicaCrm/descriptions/ContactDescription.ts b/packages/nodes-base/nodes/MonicaCrm/descriptions/ContactDescription.ts index c39bd20a75..2e86fd9c96 100644 --- a/packages/nodes-base/nodes/MonicaCrm/descriptions/ContactDescription.ts +++ b/packages/nodes-base/nodes/MonicaCrm/descriptions/ContactDescription.ts @@ -69,7 +69,7 @@ export const contactFields: INodeProperties[] = [ name: 'genderId', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', required: true, default: '', typeOptions: { @@ -316,7 +316,7 @@ export const contactFields: INodeProperties[] = [ name: 'gender_id', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', default: '', typeOptions: { loadOptionsMethod: 'getGenders', diff --git a/packages/nodes-base/nodes/MonicaCrm/descriptions/ContactFieldDescription.ts b/packages/nodes-base/nodes/MonicaCrm/descriptions/ContactFieldDescription.ts index dfab21ebb3..8ed6237d51 100644 --- a/packages/nodes-base/nodes/MonicaCrm/descriptions/ContactFieldDescription.ts +++ b/packages/nodes-base/nodes/MonicaCrm/descriptions/ContactFieldDescription.ts @@ -69,7 +69,7 @@ export const contactFieldFields: INodeProperties[] = [ name: 'contactFieldTypeId', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', required: true, typeOptions: { loadOptionsMethod: 'getContactFieldTypes', @@ -217,7 +217,7 @@ export const contactFieldFields: INodeProperties[] = [ name: 'contactFieldTypeId', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getContactFieldTypes', }, diff --git a/packages/nodes-base/nodes/MonicaCrm/descriptions/ContactTagDescription.ts b/packages/nodes-base/nodes/MonicaCrm/descriptions/ContactTagDescription.ts index 91a89cfe64..cee1864cc2 100644 --- a/packages/nodes-base/nodes/MonicaCrm/descriptions/ContactTagDescription.ts +++ b/packages/nodes-base/nodes/MonicaCrm/descriptions/ContactTagDescription.ts @@ -49,7 +49,7 @@ export const contactTagFields: INodeProperties[] = [ displayName: 'Tag Names or IDs', name: 'tagsToAdd', description: - 'Tags to add to the contact. Choose from the list, or specify IDs using an expression.', + 'Tags to add to the contact. Choose from the list, or specify IDs using an expression.', type: 'multiOptions', typeOptions: { loadOptionsMethod: 'getTagsToAdd', @@ -85,7 +85,7 @@ export const contactTagFields: INodeProperties[] = [ displayName: 'Tag Names or IDs', name: 'tagsToRemove', description: - 'Tags to remove from the contact. Choose from the list, or specify IDs using an expression.', + 'Tags to remove from the contact. Choose from the list, or specify IDs using an expression.', type: 'multiOptions', required: true, typeOptions: { diff --git a/packages/nodes-base/nodes/MonicaCrm/descriptions/ConversationDescription.ts b/packages/nodes-base/nodes/MonicaCrm/descriptions/ConversationDescription.ts index a9a8bc1545..ca5176dc24 100644 --- a/packages/nodes-base/nodes/MonicaCrm/descriptions/ConversationDescription.ts +++ b/packages/nodes-base/nodes/MonicaCrm/descriptions/ConversationDescription.ts @@ -64,7 +64,7 @@ export const conversationFields: INodeProperties[] = [ name: 'contactFieldTypeId', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', required: true, default: '', typeOptions: { @@ -150,7 +150,7 @@ export const conversationFields: INodeProperties[] = [ name: 'contactFieldTypeId', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', required: true, default: '', typeOptions: { diff --git a/packages/nodes-base/nodes/MoveBinaryData/MoveBinaryData.node.ts b/packages/nodes-base/nodes/MoveBinaryData/MoveBinaryData.node.ts index e4c536250a..fa2597a341 100644 --- a/packages/nodes-base/nodes/MoveBinaryData/MoveBinaryData.node.ts +++ b/packages/nodes-base/nodes/MoveBinaryData/MoveBinaryData.node.ts @@ -10,7 +10,13 @@ import type { INodeType, INodeTypeDescription, } from 'n8n-workflow'; -import { BINARY_ENCODING, deepCopy, jsonParse, NodeOperationError } from 'n8n-workflow'; +import { + BINARY_ENCODING, + deepCopy, + jsonParse, + NodeConnectionType, + NodeOperationError, +} from 'n8n-workflow'; import iconv from 'iconv-lite'; @@ -54,8 +60,8 @@ export class MoveBinaryData implements INodeType { name: 'Convert to/from binary data', color: '#7722CC', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], properties: [ { displayName: 'Mode', @@ -177,7 +183,7 @@ export class MoveBinaryData implements INodeType { displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, options: [ { diff --git a/packages/nodes-base/nodes/Msg91/Msg91.node.json b/packages/nodes-base/nodes/Msg91/Msg91.node.json index a027d82015..91111ccf94 100644 --- a/packages/nodes-base/nodes/Msg91/Msg91.node.json +++ b/packages/nodes-base/nodes/Msg91/Msg91.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/msg91" + "url": "https://docs.n8n.io/integrations/builtin/credentials/msg91/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Msg91/Msg91.node.ts b/packages/nodes-base/nodes/Msg91/Msg91.node.ts index b2fb8e4414..9067fec27a 100644 --- a/packages/nodes-base/nodes/Msg91/Msg91.node.ts +++ b/packages/nodes-base/nodes/Msg91/Msg91.node.ts @@ -6,7 +6,7 @@ import type { INodeTypeDescription, IHttpRequestMethods, } from 'n8n-workflow'; -import { NodeOperationError } from 'n8n-workflow'; +import { NodeConnectionType, NodeOperationError } from 'n8n-workflow'; import { msg91ApiRequest } from './GenericFunctions'; @@ -23,8 +23,8 @@ export class Msg91 implements INodeType { defaults: { name: 'MSG91', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'msg91Api', diff --git a/packages/nodes-base/nodes/MySql/MySql.node.json b/packages/nodes-base/nodes/MySql/MySql.node.json index 71be902059..b0625db9a8 100644 --- a/packages/nodes-base/nodes/MySql/MySql.node.json +++ b/packages/nodes-base/nodes/MySql/MySql.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/mySql" + "url": "https://docs.n8n.io/integrations/builtin/credentials/mySql/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/MySql/v1/MySqlV1.node.ts b/packages/nodes-base/nodes/MySql/v1/MySqlV1.node.ts index c0f369cc82..6209111b67 100644 --- a/packages/nodes-base/nodes/MySql/v1/MySqlV1.node.ts +++ b/packages/nodes-base/nodes/MySql/v1/MySqlV1.node.ts @@ -1,4 +1,3 @@ -/* eslint-disable n8n-nodes-base/node-filename-against-convention */ import type { ICredentialDataDecryptedObject, ICredentialsDecrypted, @@ -11,7 +10,7 @@ import type { INodeTypeBaseDescription, INodeTypeDescription, } from 'n8n-workflow'; -import { NodeOperationError } from 'n8n-workflow'; +import { NodeConnectionType, NodeOperationError } from 'n8n-workflow'; import type mysql2 from 'mysql2/promise'; @@ -30,8 +29,8 @@ const versionDescription: INodeTypeDescription = { defaults: { name: 'MySQL', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'mySql', @@ -328,14 +327,14 @@ export class MySqlV1 implements INodeType { { itemData: { item: index } }, ); - collection.push(...executionData); + collection = collection.concat(executionData); return collection; }, [] as INodeExecutionData[], ); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnItems = this.helpers.returnJsonArray({ error: error.message }); } else { await connection.end(); @@ -372,7 +371,7 @@ export class MySqlV1 implements INodeType { returnItems = this.helpers.returnJsonArray(queryResult[0] as unknown as IDataObject); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnItems = this.helpers.returnJsonArray({ error: error.message }); } else { await connection.end(); @@ -407,7 +406,7 @@ export class MySqlV1 implements INodeType { queryResult.map((result) => result[0]) as unknown as IDataObject[], ); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnItems = this.helpers.returnJsonArray({ error: error.message }); } else { await connection.end(); diff --git a/packages/nodes-base/nodes/MySql/v2/actions/common.descriptions.ts b/packages/nodes-base/nodes/MySql/v2/actions/common.descriptions.ts index 3454f97562..6591e62233 100644 --- a/packages/nodes-base/nodes/MySql/v2/actions/common.descriptions.ts +++ b/packages/nodes-base/nodes/MySql/v2/actions/common.descriptions.ts @@ -33,7 +33,7 @@ export const optionsCollection: INodeProperties = { name: 'options', type: 'collection', default: {}, - placeholder: 'Add Option', + placeholder: 'Add option', options: [ { displayName: 'Connection Timeout', @@ -102,7 +102,7 @@ export const optionsCollection: INodeProperties = { type: 'multiOptions', // eslint-disable-next-line n8n-nodes-base/node-param-description-wrong-for-dynamic-multi-options description: - 'Choose from the list, or specify IDs using an expression', + 'Choose from the list, or specify IDs using an expression', typeOptions: { loadOptionsMethod: 'getColumnsMultiOptions', loadOptionsDependsOn: ['table.value'], @@ -134,6 +134,16 @@ export const optionsCollection: INodeProperties = { show: { '/operation': ['select', 'executeQuery'] }, }, }, + { + displayName: 'Output Decimals as Numbers', + name: 'decimalNumbers', + type: 'boolean', + default: false, + description: 'Whether to output DECIMAL types as numbers instead of strings', + displayOptions: { + show: { '/operation': ['select', 'executeQuery'] }, + }, + }, { displayName: 'Priority', name: 'priority', @@ -231,7 +241,7 @@ export const selectRowsFixedCollection: INodeProperties = { type: 'options', // eslint-disable-next-line n8n-nodes-base/node-param-description-wrong-for-dynamic-options description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', default: '', placeholder: 'e.g. ID', typeOptions: { @@ -323,7 +333,7 @@ export const sortFixedCollection: INodeProperties = { type: 'options', // eslint-disable-next-line n8n-nodes-base/node-param-description-wrong-for-dynamic-options description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', default: '', typeOptions: { loadOptionsMethod: 'getColumns', diff --git a/packages/nodes-base/nodes/MySql/v2/actions/database/insert.operation.ts b/packages/nodes-base/nodes/MySql/v2/actions/database/insert.operation.ts index f3578f8d99..5ff05181ed 100644 --- a/packages/nodes-base/nodes/MySql/v2/actions/database/insert.operation.ts +++ b/packages/nodes-base/nodes/MySql/v2/actions/database/insert.operation.ts @@ -80,7 +80,7 @@ const properties: INodeProperties[] = [ type: 'options', // eslint-disable-next-line n8n-nodes-base/node-param-description-wrong-for-dynamic-options description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getColumns', loadOptionsDependsOn: ['table.value'], diff --git a/packages/nodes-base/nodes/MySql/v2/actions/database/update.operation.ts b/packages/nodes-base/nodes/MySql/v2/actions/database/update.operation.ts index 22bc332548..62ba0c23ab 100644 --- a/packages/nodes-base/nodes/MySql/v2/actions/database/update.operation.ts +++ b/packages/nodes-base/nodes/MySql/v2/actions/database/update.operation.ts @@ -55,7 +55,7 @@ const properties: INodeProperties[] = [ required: true, // eslint-disable-next-line n8n-nodes-base/node-param-description-wrong-for-dynamic-options description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getColumns', loadOptionsDependsOn: ['schema.value', 'table.value'], @@ -103,7 +103,7 @@ const properties: INodeProperties[] = [ type: 'options', // eslint-disable-next-line n8n-nodes-base/node-param-description-wrong-for-dynamic-options description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getColumnsWithoutColumnToMatchOn', loadOptionsDependsOn: ['schema.value', 'table.value'], diff --git a/packages/nodes-base/nodes/MySql/v2/actions/database/upsert.operation.ts b/packages/nodes-base/nodes/MySql/v2/actions/database/upsert.operation.ts index eccc36c0fe..7009edecc2 100644 --- a/packages/nodes-base/nodes/MySql/v2/actions/database/upsert.operation.ts +++ b/packages/nodes-base/nodes/MySql/v2/actions/database/upsert.operation.ts @@ -55,7 +55,7 @@ const properties: INodeProperties[] = [ required: true, // eslint-disable-next-line n8n-nodes-base/node-param-description-wrong-for-dynamic-options description: - 'The column to compare when finding the rows to update. Choose from the list, or specify an ID using an expression.', + 'The column to compare when finding the rows to update. Choose from the list, or specify an ID using an expression.', typeOptions: { loadOptionsMethod: 'getColumns', loadOptionsDependsOn: ['schema.value', 'table.value'], @@ -103,7 +103,7 @@ const properties: INodeProperties[] = [ type: 'options', // eslint-disable-next-line n8n-nodes-base/node-param-description-wrong-for-dynamic-options description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getColumnsWithoutColumnToMatchOn', loadOptionsDependsOn: ['schema.value', 'table.value'], diff --git a/packages/nodes-base/nodes/MySql/v2/actions/router.ts b/packages/nodes-base/nodes/MySql/v2/actions/router.ts index f5d75347cd..e9ef6a8591 100644 --- a/packages/nodes-base/nodes/MySql/v2/actions/router.ts +++ b/packages/nodes-base/nodes/MySql/v2/actions/router.ts @@ -1,11 +1,8 @@ import type { IExecuteFunctions, INodeExecutionData } from 'n8n-workflow'; import { NodeOperationError } from 'n8n-workflow'; -import { Client } from 'ssh2'; - -import type { QueryRunner } from '../helpers/interfaces'; - import { createPool } from '../transport'; +import type { MysqlNodeCredentials, QueryRunner } from '../helpers/interfaces'; import { configureQueryRunner } from '../helpers/utils'; import * as database from './database/Database.resource'; import type { MySqlType } from './node.type'; @@ -19,14 +16,9 @@ export async function router(this: IExecuteFunctions): Promise('mySql'); - let sshClient: Client | undefined = undefined; - - if (credentials.sshTunnel) { - sshClient = new Client(); - } - const pool = await createPool(credentials, nodeOptions, sshClient); + const pool = await createPool.call(this, credentials, nodeOptions); const runQueries: QueryRunner = configureQueryRunner.call(this, nodeOptions, pool); @@ -53,12 +45,7 @@ export async function router(this: IExecuteFunctions): Promise NodeExecutionWithMetadata[], itemData: IPairedItemData | IPairedItemData[], ) { - const returnData: INodeExecutionData[] = []; + let returnData: INodeExecutionData[] = []; if (options.detailedOutput) { response.forEach((entry, index) => { @@ -154,7 +154,7 @@ export function prepareOutput( itemData, }); - returnData.push(...executionData); + returnData = returnData.concat(executionData); }); } else { response @@ -164,7 +164,7 @@ export function prepareOutput( itemData: Array.isArray(itemData) ? itemData[index] : itemData, }); - returnData.push(...executionData); + returnData = returnData.concat(executionData); }); } @@ -209,22 +209,22 @@ export function configureQueryRunner( return []; } - const returnData: INodeExecutionData[] = []; + let returnData: INodeExecutionData[] = []; const mode = (options.queryBatching as QueryMode) || BATCH_MODE.SINGLE; const connection = await pool.getConnection(); if (mode === BATCH_MODE.SINGLE) { - const formatedQueries = queries.map(({ query, values }) => connection.format(query, values)); + const formattedQueries = queries.map(({ query, values }) => connection.format(query, values)); try { - //releasing connection after formating queries, otherwise pool.query() will fail with timeout + //releasing connection after formatting queries, otherwise pool.query() will fail with timeout connection.release(); let singleQuery = ''; - if (formatedQueries.length > 1) { - singleQuery = formatedQueries.map((query) => query.trim().replace(/;$/, '')).join(';'); + if (formattedQueries.length > 1) { + singleQuery = formattedQueries.map((query) => query.trim().replace(/;$/, '')).join(';'); } else { - singleQuery = formatedQueries[0]; + singleQuery = formattedQueries[0]; } let response: IDataObject | IDataObject[] = ( @@ -249,11 +249,11 @@ export function configureQueryRunner( response = [response]; } - //because single query is used in this mode mapping itemIndex not posible, setting all items as paired + //because single query is used in this mode mapping itemIndex not possible, setting all items as paired const pairedItem = generatePairedItemData(queries.length); - returnData.push( - ...prepareOutput( + returnData = returnData.concat( + prepareOutput( response, options, statements, @@ -262,24 +262,24 @@ export function configureQueryRunner( ), ); } catch (err) { - const error = parseMySqlError.call(this, err, 0, formatedQueries); + const error = parseMySqlError.call(this, err, 0, formattedQueries); - if (!this.continueOnFail(err)) throw error; + if (!this.continueOnFail()) throw error; returnData.push({ json: { message: error.message, error: { ...error } } }); } } else { if (mode === BATCH_MODE.INDEPENDENTLY) { - let formatedQuery = ''; + let formattedQuery = ''; for (const [index, queryWithValues] of queries.entries()) { try { const { query, values } = queryWithValues; - formatedQuery = connection.format(query, values); + formattedQuery = connection.format(query, values); let statements; if ((options?.nodeVersion as number) <= 2.3) { - statements = formatedQuery.split(';').map((q) => q.trim()); + statements = formattedQuery.split(';').map((q) => q.trim()); } else { - statements = splitQueryToStatements(formatedQuery, false); + statements = splitQueryToStatements(formattedQuery, false); } const responses: IDataObject[] = []; @@ -290,8 +290,8 @@ export function configureQueryRunner( responses.push(response); } - returnData.push( - ...prepareOutput( + returnData = returnData.concat( + prepareOutput( responses, options, statements, @@ -300,9 +300,9 @@ export function configureQueryRunner( ), ); } catch (err) { - const error = parseMySqlError.call(this, err, index, [formatedQuery]); + const error = parseMySqlError.call(this, err, index, [formattedQuery]); - if (!this.continueOnFail(err)) { + if (!this.continueOnFail()) { connection.release(); throw error; } @@ -314,17 +314,17 @@ export function configureQueryRunner( if (mode === BATCH_MODE.TRANSACTION) { await connection.beginTransaction(); - let formatedQuery = ''; + let formattedQuery = ''; for (const [index, queryWithValues] of queries.entries()) { try { const { query, values } = queryWithValues; - formatedQuery = connection.format(query, values); + formattedQuery = connection.format(query, values); let statements; if ((options?.nodeVersion as number) <= 2.3) { - statements = formatedQuery.split(';').map((q) => q.trim()); + statements = formattedQuery.split(';').map((q) => q.trim()); } else { - statements = splitQueryToStatements(formatedQuery, false); + statements = splitQueryToStatements(formattedQuery, false); } const responses: IDataObject[] = []; @@ -335,8 +335,8 @@ export function configureQueryRunner( responses.push(response); } - returnData.push( - ...prepareOutput( + returnData = returnData.concat( + prepareOutput( responses, options, statements, @@ -345,14 +345,14 @@ export function configureQueryRunner( ), ); } catch (err) { - const error = parseMySqlError.call(this, err, index, [formatedQuery]); + const error = parseMySqlError.call(this, err, index, [formattedQuery]); if (connection) { await connection.rollback(); connection.release(); } - if (!this.continueOnFail(err)) throw error; + if (!this.continueOnFail()) throw error; returnData.push(prepareErrorItem(queries[index], error as Error, index)); // Return here because we already rolled back the transaction diff --git a/packages/nodes-base/nodes/MySql/v2/methods/credentialTest.ts b/packages/nodes-base/nodes/MySql/v2/methods/credentialTest.ts index b4310480d7..b89e18f691 100644 --- a/packages/nodes-base/nodes/MySql/v2/methods/credentialTest.ts +++ b/packages/nodes-base/nodes/MySql/v2/methods/credentialTest.ts @@ -1,25 +1,19 @@ import type { - ICredentialDataDecryptedObject, ICredentialsDecrypted, ICredentialTestFunctions, INodeCredentialTestResult, } from 'n8n-workflow'; -import { Client } from 'ssh2'; import { createPool } from '../transport'; +import type { MysqlNodeCredentials } from '../helpers/interfaces'; export async function mysqlConnectionTest( this: ICredentialTestFunctions, credential: ICredentialsDecrypted, ): Promise { - const credentials = credential.data as ICredentialDataDecryptedObject; + const credentials = credential.data as MysqlNodeCredentials; - let sshClient: Client | undefined = undefined; - - if (credentials.sshTunnel) { - sshClient = new Client(); - } - const pool = await createPool(credentials, {}, sshClient); + const pool = await createPool.call(this, credentials); try { const connection = await pool.getConnection(); @@ -30,9 +24,6 @@ export async function mysqlConnectionTest( message: error.message, }; } finally { - if (sshClient) { - sshClient.end(); - } await pool.end(); } diff --git a/packages/nodes-base/nodes/MySql/v2/methods/listSearch.ts b/packages/nodes-base/nodes/MySql/v2/methods/listSearch.ts index 2b6db1db0e..bf4af6b612 100644 --- a/packages/nodes-base/nodes/MySql/v2/methods/listSearch.ts +++ b/packages/nodes-base/nodes/MySql/v2/methods/listSearch.ts @@ -1,24 +1,19 @@ import type { IDataObject, ILoadOptionsFunctions, INodeListSearchResult } from 'n8n-workflow'; -import { Client } from 'ssh2'; import { createPool } from '../transport'; +import type { MysqlNodeCredentials } from '../helpers/interfaces'; export async function searchTables(this: ILoadOptionsFunctions): Promise { - const credentials = await this.getCredentials('mySql'); + const credentials = await this.getCredentials('mySql'); const nodeOptions = this.getNodeParameter('options', 0) as IDataObject; - let sshClient: Client | undefined = undefined; - - if (credentials.sshTunnel) { - sshClient = new Client(); - } - const pool = await createPool(credentials, nodeOptions, sshClient); + const pool = await createPool.call(this, credentials, nodeOptions); try { const connection = await pool.getConnection(); const query = 'SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE table_schema = ?'; - const values = [credentials.database as string]; + const values = [credentials.database]; const formatedQuery = connection.format(query, values); @@ -32,12 +27,7 @@ export async function searchTables(this: ILoadOptionsFunctions): Promise { - const credentials = await this.getCredentials('mySql'); + const credentials = await this.getCredentials('mySql'); const nodeOptions = this.getNodeParameter('options', 0) as IDataObject; - let sshClient: Client | undefined = undefined; - - if (credentials.sshTunnel) { - sshClient = new Client(); - } - const pool = await createPool(credentials, nodeOptions, sshClient); + const pool = await createPool.call(this, credentials, nodeOptions); try { const connection = await pool.getConnection(); @@ -24,7 +19,7 @@ export async function getColumns(this: ILoadOptionsFunctions): Promise { - if (credentials === undefined) { - throw new ApplicationError('Credentials not selected, select or add new credentials', { - level: 'warning', - }); - } - const { - ssl, - caCertificate, - clientCertificate, - clientPrivateKey, - sshTunnel, - sshHost, - sshUser, - sshPassword, - sshPort, - sshMysqlPort, - privateKey, - passphrase, - sshAuthenticateWith, - ...baseCredentials - } = credentials; - - if (ssl) { - baseCredentials.ssl = {}; - - if (caCertificate) { - baseCredentials.ssl.ca = formatPrivateKey(caCertificate as string); - } - - if (clientCertificate || clientPrivateKey) { - baseCredentials.ssl.cert = formatPrivateKey(clientCertificate as string); - baseCredentials.ssl.key = formatPrivateKey(clientPrivateKey as string); - } - } - const connectionOptions: mysql2.ConnectionOptions = { - ...baseCredentials, + host: credentials.host, + port: credentials.port, + database: credentials.database, + user: credentials.user, + password: credentials.password, multipleStatements: true, supportBigNumbers: true, + decimalNumbers: false, }; + if (credentials.ssl) { + connectionOptions.ssl = {}; + + if (credentials.caCertificate) { + connectionOptions.ssl.ca = formatPrivateKey(credentials.caCertificate); + } + + if (credentials.clientCertificate || credentials.clientPrivateKey) { + connectionOptions.ssl.cert = formatPrivateKey(credentials.clientCertificate); + connectionOptions.ssl.key = formatPrivateKey(credentials.clientPrivateKey); + } + } + if (options?.nodeVersion && (options.nodeVersion as number) >= 2.1) { connectionOptions.dateStrings = true; } @@ -93,46 +56,43 @@ export async function createPool( connectionOptions.bigNumberStrings = true; } - if (!sshTunnel) { + if (options?.decimalNumbers === true) { + connectionOptions.decimalNumbers = true; + } + + if (!credentials.sshTunnel) { return mysql2.createPool(connectionOptions); } else { - if (!sshClient) { - throw new ApplicationError('SSH Tunnel is enabled but no SSH Client was provided', { - level: 'warning', - }); + if (credentials.sshAuthenticateWith === 'privateKey' && credentials.privateKey) { + credentials.privateKey = formatPrivateKey(credentials.privateKey); } + const sshClient = await this.helpers.getSSHClient(credentials); - const tunnelConfig = await createSshConnectConfig(credentials); - - const forwardConfig = { - srcHost: '127.0.0.1', - srcPort: sshMysqlPort as number, - dstHost: credentials.host as string, - dstPort: credentials.port as number, - }; - - const poolSetup = new Promise((resolve, reject) => { - sshClient - .on('ready', () => { - sshClient.forwardOut( - forwardConfig.srcHost, - forwardConfig.srcPort, - forwardConfig.dstHost, - forwardConfig.dstPort, - (err, stream) => { - if (err) reject(err); - const updatedDbServer = { - ...connectionOptions, - stream, - }; - const connection = mysql2.createPool(updatedDbServer); - resolve(connection); - }, - ); - }) - .connect(tunnelConfig); + // Find a free TCP port + const localPort = await new Promise((resolve) => { + const tempServer = createServer(); + tempServer.listen(0, LOCALHOST, () => { + resolve((tempServer.address() as AddressInfo).port); + tempServer.close(); + }); }); - return await poolSetup; + const stream = await new Promise((resolve, reject) => { + sshClient.forwardOut( + LOCALHOST, + localPort, + credentials.host, + credentials.port, + (err, clientChannel) => { + if (err) return reject(err); + resolve(clientChannel); + }, + ); + }); + + return mysql2.createPool({ + ...connectionOptions, + stream, + }); } } diff --git a/packages/nodes-base/nodes/N8n/ExecutionDescription.ts b/packages/nodes-base/nodes/N8n/ExecutionDescription.ts index eb951e19c2..b37184c772 100644 --- a/packages/nodes-base/nodes/N8n/ExecutionDescription.ts +++ b/packages/nodes-base/nodes/N8n/ExecutionDescription.ts @@ -173,7 +173,7 @@ const getAllOperation: INodeProperties[] = [ name: 'options', type: 'collection', default: {}, - placeholder: 'Add Option', + placeholder: 'Add option', displayOptions: { show: { resource: ['execution'], @@ -218,7 +218,7 @@ const getOperation: INodeProperties[] = [ name: 'options', type: 'collection', default: {}, - placeholder: 'Add Option', + placeholder: 'Add option', displayOptions: { show: { resource: ['execution'], diff --git a/packages/nodes-base/nodes/N8n/GenericFunctions.ts b/packages/nodes-base/nodes/N8n/GenericFunctions.ts index e190d8abb0..cf814bc345 100644 --- a/packages/nodes-base/nodes/N8n/GenericFunctions.ts +++ b/packages/nodes-base/nodes/N8n/GenericFunctions.ts @@ -32,7 +32,7 @@ export async function apiRequest( baseUrl: string; }; - const credentials = (await this.getCredentials('n8nApi')) as N8nApiCredentials; + const credentials = await this.getCredentials('n8nApi'); const baseUrl = credentials.baseUrl; const options: IRequestOptions = { diff --git a/packages/nodes-base/nodes/N8n/N8n.node.ts b/packages/nodes-base/nodes/N8n/N8n.node.ts index 91f21bd5c7..a58c855164 100644 --- a/packages/nodes-base/nodes/N8n/N8n.node.ts +++ b/packages/nodes-base/nodes/N8n/N8n.node.ts @@ -1,4 +1,4 @@ -import type { INodeType, INodeTypeDescription } from 'n8n-workflow'; +import { NodeConnectionType, type INodeType, type INodeTypeDescription } from 'n8n-workflow'; import { auditFields, auditOperations } from './AuditDescription'; import { credentialFields, credentialOperations } from './CredentialDescription'; import { executionFields, executionOperations } from './ExecutionDescription'; @@ -22,8 +22,8 @@ export class N8n implements INodeType { defaults: { name: 'n8n', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'n8nApi', diff --git a/packages/nodes-base/nodes/N8nTrainingCustomerDatastore/N8nTrainingCustomerDatastore.node.ts b/packages/nodes-base/nodes/N8nTrainingCustomerDatastore/N8nTrainingCustomerDatastore.node.ts index c7807afcd3..426fa523b6 100644 --- a/packages/nodes-base/nodes/N8nTrainingCustomerDatastore/N8nTrainingCustomerDatastore.node.ts +++ b/packages/nodes-base/nodes/N8nTrainingCustomerDatastore/N8nTrainingCustomerDatastore.node.ts @@ -4,6 +4,7 @@ import type { INodeType, INodeTypeDescription, } from 'n8n-workflow'; +import { NodeConnectionType } from 'n8n-workflow'; const data = [ { @@ -63,8 +64,8 @@ export class N8nTrainingCustomerDatastore implements INodeType { defaults: { name: 'Customer Datastore (n8n training)', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], properties: [ { displayName: 'Operation', diff --git a/packages/nodes-base/nodes/N8nTrainingCustomerMessenger/N8nTrainingCustomerMessenger.node.ts b/packages/nodes-base/nodes/N8nTrainingCustomerMessenger/N8nTrainingCustomerMessenger.node.ts index 403af6d683..5c8a2d2a4c 100644 --- a/packages/nodes-base/nodes/N8nTrainingCustomerMessenger/N8nTrainingCustomerMessenger.node.ts +++ b/packages/nodes-base/nodes/N8nTrainingCustomerMessenger/N8nTrainingCustomerMessenger.node.ts @@ -1,8 +1,9 @@ -import type { - IExecuteFunctions, - INodeExecutionData, - INodeType, - INodeTypeDescription, +import { + NodeConnectionType, + type IExecuteFunctions, + type INodeExecutionData, + type INodeType, + type INodeTypeDescription, } from 'n8n-workflow'; export class N8nTrainingCustomerMessenger implements INodeType { @@ -19,8 +20,8 @@ export class N8nTrainingCustomerMessenger implements INodeType { defaults: { name: 'Customer Messenger (n8n training)', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], properties: [ { displayName: 'Customer ID', diff --git a/packages/nodes-base/nodes/N8nTrigger/N8nTrigger.node.ts b/packages/nodes-base/nodes/N8nTrigger/N8nTrigger.node.ts index 758a22c9b6..4224381e1e 100644 --- a/packages/nodes-base/nodes/N8nTrigger/N8nTrigger.node.ts +++ b/packages/nodes-base/nodes/N8nTrigger/N8nTrigger.node.ts @@ -4,8 +4,9 @@ import type { INodeTypeDescription, ITriggerResponse, } from 'n8n-workflow'; +import { NodeConnectionType } from 'n8n-workflow'; -type eventType = 'Instance started' | undefined; +type eventType = 'Instance started' | 'Workflow activated' | 'Workflow updated' | undefined; export class N8nTrigger implements INodeType { description: INodeTypeDescription = { @@ -21,7 +22,7 @@ export class N8nTrigger implements INodeType { name: 'n8n Trigger', }, inputs: [], - outputs: ['main'], + outputs: [NodeConnectionType.Main], properties: [ { displayName: 'Events', @@ -29,26 +30,46 @@ export class N8nTrigger implements INodeType { type: 'multiOptions', required: true, default: [], - description: - 'Specifies under which conditions an execution should happen: Instance started: Triggers when this n8n instance is started or re-started', + description: `Specifies under which conditions an execution should happen: +
    +
  • Active Workflow Updated: Triggers when this workflow is updated
  • +
  • Instance Started: Triggers when this n8n instance is started or re-started
  • +
  • Workflow Activated: Triggers when this workflow is activated
  • +
`, options: [ + { + name: 'Active Workflow Updated', + value: 'update', + description: 'Triggers when this workflow is updated', + }, { name: 'Instance Started', value: 'init', description: 'Triggers when this n8n instance is started or re-started', }, + { + name: 'Workflow Activated', + value: 'activate', + description: 'Triggers when this workflow is activated', + }, ], }, ], }; async trigger(this: ITriggerFunctions): Promise { - const events = this.getNodeParameter('events', []) as string[]; + const events = (this.getNodeParameter('events') as string[]) || []; const activationMode = this.getActivationMode(); if (events.includes(activationMode)) { let event: eventType; + if (activationMode === 'activate') { + event = 'Workflow activated'; + } + if (activationMode === 'update') { + event = 'Workflow updated'; + } if (activationMode === 'init') { event = 'Instance started'; } diff --git a/packages/nodes-base/nodes/N8nTrigger/test/trigger.test.ts b/packages/nodes-base/nodes/N8nTrigger/test/trigger.test.ts new file mode 100644 index 0000000000..43e49554ac --- /dev/null +++ b/packages/nodes-base/nodes/N8nTrigger/test/trigger.test.ts @@ -0,0 +1,109 @@ +/* eslint-disable n8n-nodes-base/node-filename-against-convention */ +import { N8nTrigger } from '../N8nTrigger.node'; + +describe('N8nTrigger', () => { + let n8nTrigger: N8nTrigger; + let mockTriggerFunctions: any; + + beforeEach(() => { + n8nTrigger = new N8nTrigger(); + + // Mock trigger functions + mockTriggerFunctions = { + emit: jest.fn(), + getNodeParameter: jest.fn(), + getActivationMode: jest.fn(), + getWorkflow: jest.fn(() => ({ id: 'test-workflow-id' })), + helpers: { + returnJsonArray: jest.fn((data) => data), + }, + }; + }); + + describe('trigger', () => { + it('should emit event when activation mode matches selected events', async () => { + mockTriggerFunctions.getNodeParameter.mockReturnValue(['activate']); + mockTriggerFunctions.getActivationMode.mockReturnValue('activate'); + + await n8nTrigger.trigger.call(mockTriggerFunctions); + + expect(mockTriggerFunctions.emit).toHaveBeenCalledWith([ + [ + { + event: 'Workflow activated', + timestamp: expect.any(String), + workflow_id: 'test-workflow-id', + }, + ], + ]); + }); + + it('should not emit event when activation mode does not match selected events', async () => { + mockTriggerFunctions.getNodeParameter.mockReturnValue(['update']); + mockTriggerFunctions.getActivationMode.mockReturnValue('activate'); + + await n8nTrigger.trigger.call(mockTriggerFunctions); + + expect(mockTriggerFunctions.emit).not.toHaveBeenCalled(); + }); + + it('should return manual trigger function', async () => { + const result = await n8nTrigger.trigger.call(mockTriggerFunctions); + + expect(result).toHaveProperty('manualTriggerFunction'); + expect(typeof result.manualTriggerFunction).toBe('function'); + }); + + it('should emit correct event for instance started', async () => { + mockTriggerFunctions.getNodeParameter.mockReturnValue(['init']); + mockTriggerFunctions.getActivationMode.mockReturnValue('init'); + + await n8nTrigger.trigger.call(mockTriggerFunctions); + + expect(mockTriggerFunctions.emit).toHaveBeenCalledWith([ + [ + { + event: 'Instance started', + timestamp: expect.any(String), + workflow_id: 'test-workflow-id', + }, + ], + ]); + }); + + it('should emit correct event for workflow updated', async () => { + mockTriggerFunctions.getNodeParameter.mockReturnValue(['update']); + mockTriggerFunctions.getActivationMode.mockReturnValue('update'); + + await n8nTrigger.trigger.call(mockTriggerFunctions); + + expect(mockTriggerFunctions.emit).toHaveBeenCalledWith([ + [ + { + event: 'Workflow updated', + timestamp: expect.any(String), + workflow_id: 'test-workflow-id', + }, + ], + ]); + }); + }); + + describe('description', () => { + it('should have correct properties', () => { + expect(n8nTrigger.description).toMatchObject({ + displayName: 'n8n Trigger', + name: 'n8nTrigger', + group: ['trigger'], + version: 1, + }); + }); + + it('should have required properties configuration', () => { + const eventsProperty = n8nTrigger.description.properties.find((p) => p.name === 'events'); + expect(eventsProperty).toBeDefined(); + expect(eventsProperty?.required).toBe(true); + expect(eventsProperty?.type).toBe('multiOptions'); + }); + }); +}); diff --git a/packages/nodes-base/nodes/Nasa/Nasa.node.json b/packages/nodes-base/nodes/Nasa/Nasa.node.json index ba40379333..e6942b9379 100644 --- a/packages/nodes-base/nodes/Nasa/Nasa.node.json +++ b/packages/nodes-base/nodes/Nasa/Nasa.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/nasa" + "url": "https://docs.n8n.io/integrations/builtin/credentials/nasa/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Nasa/Nasa.node.ts b/packages/nodes-base/nodes/Nasa/Nasa.node.ts index fab2fa8280..7088465009 100644 --- a/packages/nodes-base/nodes/Nasa/Nasa.node.ts +++ b/packages/nodes-base/nodes/Nasa/Nasa.node.ts @@ -5,7 +5,7 @@ import type { INodeType, INodeTypeDescription, } from 'n8n-workflow'; -import { NodeOperationError } from 'n8n-workflow'; +import { NodeConnectionType, NodeOperationError } from 'n8n-workflow'; import moment from 'moment-timezone'; import { nasaApiRequest, nasaApiRequestAllItems } from './GenericFunctions'; @@ -23,8 +23,8 @@ export class Nasa implements INodeType { defaults: { name: 'NASA', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'nasaApi', @@ -1069,7 +1069,7 @@ export class Nasa implements INodeType { if (resource === 'astronomyPictureOfTheDay') { download = this.getNodeParameter('download', 0); - if (download) { + if (download && responseData?.media_type === 'image') { const binaryProperty = this.getNodeParameter('binaryPropertyName', i); const data = await nasaApiRequest.call( @@ -1110,7 +1110,7 @@ export class Nasa implements INodeType { returnData.push(...executionData); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { if (resource === 'earthImagery' && operation === 'get') { items[i].json = { error: error.message }; } else if (resource === 'astronomyPictureOfTheDay' && operation === 'get' && download) { @@ -1130,7 +1130,12 @@ export class Nasa implements INodeType { if (resource === 'earthImagery' && operation === 'get') { return [items]; - } else if (resource === 'astronomyPictureOfTheDay' && operation === 'get' && download) { + } else if ( + resource === 'astronomyPictureOfTheDay' && + operation === 'get' && + download && + responseData?.media_type === 'image' + ) { return [items]; } else { return [returnData]; diff --git a/packages/nodes-base/nodes/Netlify/DeployDescription.ts b/packages/nodes-base/nodes/Netlify/DeployDescription.ts index 2c016a4b6c..259ff099ba 100644 --- a/packages/nodes-base/nodes/Netlify/DeployDescription.ts +++ b/packages/nodes-base/nodes/Netlify/DeployDescription.ts @@ -52,7 +52,7 @@ export const deployFields: INodeProperties[] = [ loadOptionsMethod: 'getSites', }, description: - 'Enter the Site ID. Choose from the list, or specify an ID using an expression.', + 'Enter the Site ID. Choose from the list, or specify an ID using an expression.', displayOptions: { show: { resource: ['deploy'], diff --git a/packages/nodes-base/nodes/Netlify/Netlify.node.json b/packages/nodes-base/nodes/Netlify/Netlify.node.json index 5108033718..ee55cea88c 100644 --- a/packages/nodes-base/nodes/Netlify/Netlify.node.json +++ b/packages/nodes-base/nodes/Netlify/Netlify.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/netlify" + "url": "https://docs.n8n.io/integrations/builtin/credentials/netlify/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Netlify/Netlify.node.ts b/packages/nodes-base/nodes/Netlify/Netlify.node.ts index 4237c02db0..c2f6f93320 100644 --- a/packages/nodes-base/nodes/Netlify/Netlify.node.ts +++ b/packages/nodes-base/nodes/Netlify/Netlify.node.ts @@ -7,6 +7,7 @@ import type { INodeType, INodeTypeDescription, } from 'n8n-workflow'; +import { NodeConnectionType } from 'n8n-workflow'; import { netlifyApiRequest, netlifyRequestAllItems } from './GenericFunctions'; @@ -26,8 +27,8 @@ export class Netlify implements INodeType { defaults: { name: 'Netlify', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'netlifyApi', @@ -194,7 +195,7 @@ export class Netlify implements INodeType { returnData.push(...executionData); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { const executionErrorData = this.helpers.constructExecutionMetaData( this.helpers.returnJsonArray({ error: error.message }), { itemData: { item: i } }, diff --git a/packages/nodes-base/nodes/Netlify/NetlifyTrigger.node.json b/packages/nodes-base/nodes/Netlify/NetlifyTrigger.node.json index 790a8e4f5e..3d630b4c34 100644 --- a/packages/nodes-base/nodes/Netlify/NetlifyTrigger.node.json +++ b/packages/nodes-base/nodes/Netlify/NetlifyTrigger.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/netlify" + "url": "https://docs.n8n.io/integrations/builtin/credentials/netlify/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Netlify/NetlifyTrigger.node.ts b/packages/nodes-base/nodes/Netlify/NetlifyTrigger.node.ts index fe506f1fb8..4723001318 100644 --- a/packages/nodes-base/nodes/Netlify/NetlifyTrigger.node.ts +++ b/packages/nodes-base/nodes/Netlify/NetlifyTrigger.node.ts @@ -8,6 +8,7 @@ import type { INodeTypeDescription, IWebhookResponseData, } from 'n8n-workflow'; +import { NodeConnectionType } from 'n8n-workflow'; import { snakeCase } from 'change-case'; import { netlifyApiRequest } from './GenericFunctions'; @@ -25,7 +26,7 @@ export class NetlifyTrigger implements INodeType { name: 'Netlify Trigger', }, inputs: [], - outputs: ['main'], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'netlifyApi', @@ -51,7 +52,7 @@ export class NetlifyTrigger implements INodeType { loadOptionsMethod: 'getSites', }, description: - 'Select the Site ID. Choose from the list, or specify an ID using an expression.', + 'Select the Site ID. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Event', @@ -93,7 +94,7 @@ export class NetlifyTrigger implements INodeType { loadOptionsMethod: 'getForms', }, description: - 'Select a form. Choose from the list, or specify an ID using an expression.', + 'Select a form. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Simplify', diff --git a/packages/nodes-base/nodes/Citrix/ADC/CertificateDescription.ts b/packages/nodes-base/nodes/Netscaler/ADC/CertificateDescription.ts similarity index 95% rename from packages/nodes-base/nodes/Citrix/ADC/CertificateDescription.ts rename to packages/nodes-base/nodes/Netscaler/ADC/CertificateDescription.ts index a2f77c3675..f1faa8f1af 100644 --- a/packages/nodes-base/nodes/Citrix/ADC/CertificateDescription.ts +++ b/packages/nodes-base/nodes/Netscaler/ADC/CertificateDescription.ts @@ -214,7 +214,7 @@ export const certificateDescription: INodeProperties[] = [ }, }, description: - 'Name for and, optionally, path to the private key. You can either use an existing RSA or DSA key that you own or create a new private key on the Citrix ADC. This file is required only when creating a self-signed Root-CA certificate. The key file is stored in the /nsconfig/ssl directory by default.', + 'Name for and, optionally, path to the private key. You can either use an existing RSA or DSA key that you own or create a new private key on the Netscaler ADC. This file is required only when creating a self-signed Root-CA certificate. The key file is stored in the /nsconfig/ssl directory by default.', }, { displayName: 'CA Serial File Number', @@ -281,7 +281,7 @@ export const certificateDescription: INodeProperties[] = [ }, default: '', description: - 'Name for and, optionally, path to the private key. You can either use an existing RSA or DSA key that you own or create a new private key on the Citrix ADC. This file is required only when creating a self-signed Root-CA certificate. The key file is stored in the /nsconfig/ssl directory by default.', + 'Name for and, optionally, path to the private key. You can either use an existing RSA or DSA key that you own or create a new private key on the Netscaler ADC. This file is required only when creating a self-signed Root-CA certificate. The key file is stored in the /nsconfig/ssl directory by default.', }, { displayName: 'PEM Passphrase (For Encrypted CA Key)', @@ -294,7 +294,7 @@ export const certificateDescription: INodeProperties[] = [ }, default: '', description: - 'Name for and, optionally, path to the private key. You can either use an existing RSA or DSA key that you own or create a new private key on the Citrix ADC. This file is required only when creating a self-signed Root-CA certificate. The key file is stored in the /nsconfig/ssl directory by default.', + 'Name for and, optionally, path to the private key. You can either use an existing RSA or DSA key that you own or create a new private key on the Netscaler ADC. This file is required only when creating a self-signed Root-CA certificate. The key file is stored in the /nsconfig/ssl directory by default.', }, { displayName: 'Subject Alternative Name', diff --git a/packages/nodes-base/nodes/Citrix/ADC/FileDescription.ts b/packages/nodes-base/nodes/Netscaler/ADC/FileDescription.ts similarity index 98% rename from packages/nodes-base/nodes/Citrix/ADC/FileDescription.ts rename to packages/nodes-base/nodes/Netscaler/ADC/FileDescription.ts index b6a45dd2d9..b03f6e3963 100644 --- a/packages/nodes-base/nodes/Citrix/ADC/FileDescription.ts +++ b/packages/nodes-base/nodes/Netscaler/ADC/FileDescription.ts @@ -62,7 +62,7 @@ export const fileDescription: INodeProperties[] = [ displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, displayOptions: { show: { diff --git a/packages/nodes-base/nodes/Citrix/ADC/GenericFunctions.ts b/packages/nodes-base/nodes/Netscaler/ADC/GenericFunctions.ts similarity index 88% rename from packages/nodes-base/nodes/Citrix/ADC/GenericFunctions.ts rename to packages/nodes-base/nodes/Netscaler/ADC/GenericFunctions.ts index 4b9e0ea9b5..d57f821396 100644 --- a/packages/nodes-base/nodes/Citrix/ADC/GenericFunctions.ts +++ b/packages/nodes-base/nodes/Netscaler/ADC/GenericFunctions.ts @@ -10,7 +10,7 @@ import type { } from 'n8n-workflow'; import { NodeApiError } from 'n8n-workflow'; -export async function citrixADCApiRequest( +export async function netscalerADCApiRequest( this: IExecuteFunctions | IWebhookFunctions | IHookFunctions | ILoadOptionsFunctions, method: IHttpRequestMethods, resource: string, @@ -19,7 +19,7 @@ export async function citrixADCApiRequest( uri?: string, option: IDataObject = {}, ): Promise { - const { url } = (await this.getCredentials('citrixAdcApi')) as { url: string }; + const { url } = await this.getCredentials<{ url: string }>('citrixAdcApi'); let options: IRequestOptions = { headers: { diff --git a/packages/nodes-base/nodes/Citrix/ADC/CitrixAdc.node.json b/packages/nodes-base/nodes/Netscaler/ADC/NetscalerAdc.node.json similarity index 74% rename from packages/nodes-base/nodes/Citrix/ADC/CitrixAdc.node.json rename to packages/nodes-base/nodes/Netscaler/ADC/NetscalerAdc.node.json index 384d4273e0..cf357f9d10 100644 --- a/packages/nodes-base/nodes/Citrix/ADC/CitrixAdc.node.json +++ b/packages/nodes-base/nodes/Netscaler/ADC/NetscalerAdc.node.json @@ -1,18 +1,19 @@ { - "node": "n8n-nodes-base.citrixAdc", + "node": "n8n-nodes-base.netscalerAdc", "nodeVersion": "1.0", "codexVersion": "1.0", "categories": ["Development"], "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/integrations/builtin/credentials/citrixAdc/" + "url": "https://docs.n8n.io/integrations/builtin/credentials/netscalerAdc/" } ], "primaryDocumentation": [ { - "url": "https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.citrixadc/" + "url": "https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.netscaleradc/" } ] - } + }, + "alias": ["Citrix"] } diff --git a/packages/nodes-base/nodes/Citrix/ADC/CitrixAdc.node.ts b/packages/nodes-base/nodes/Netscaler/ADC/NetscalerAdc.node.ts similarity index 86% rename from packages/nodes-base/nodes/Citrix/ADC/CitrixAdc.node.ts rename to packages/nodes-base/nodes/Netscaler/ADC/NetscalerAdc.node.ts index 7570672c4a..2f7fff154d 100644 --- a/packages/nodes-base/nodes/Citrix/ADC/CitrixAdc.node.ts +++ b/packages/nodes-base/nodes/Netscaler/ADC/NetscalerAdc.node.ts @@ -1,29 +1,32 @@ -import type { - IDataObject, - IExecuteFunctions, - INodeExecutionData, - INodeType, - INodeTypeDescription, - JsonObject, +/* eslint-disable n8n-nodes-base/node-filename-against-convention */ +import { + NodeConnectionType, + type IDataObject, + type IExecuteFunctions, + type INodeExecutionData, + type INodeType, + type INodeTypeDescription, + type JsonObject, } from 'n8n-workflow'; -import { citrixADCApiRequest } from './GenericFunctions'; +import { netscalerADCApiRequest } from './GenericFunctions'; import { fileDescription } from './FileDescription'; import { certificateDescription } from './CertificateDescription'; -export class CitrixAdc implements INodeType { +export class NetscalerAdc implements INodeType { description: INodeTypeDescription = { - displayName: 'Citrix ADC', + displayName: 'Netscaler ADC', + // This prevents a breaking change name: 'citrixAdc', - icon: { light: 'file:citrix.svg', dark: 'file:citrix.dark.svg' }, + icon: { light: 'file:netscaler.svg', dark: 'file:netscaler.dark.svg' }, group: ['output'], version: 1, subtitle: '={{$parameter["operation"] + ": " + $parameter["resource"]}}', - description: 'Consume Citrix ADC API', + description: 'Consume Netscaler ADC API', defaults: { - name: 'Citrix ADC', + name: 'Netscaler ADC', }, credentials: [ { @@ -31,8 +34,8 @@ export class CitrixAdc implements INodeType { required: true, }, ], - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], properties: [ { displayName: 'Resource', @@ -88,7 +91,7 @@ export class CitrixAdc implements INodeType { body.systemfile.filename = options.fileName as string; } - await citrixADCApiRequest.call(this, 'POST', endpoint, body); + await netscalerADCApiRequest.call(this, 'POST', endpoint, body); responseData = { success: true }; } if (operation === 'delete') { @@ -99,7 +102,7 @@ export class CitrixAdc implements INodeType { fileLocation, )}`; - await citrixADCApiRequest.call(this, 'DELETE', endpoint); + await netscalerADCApiRequest.call(this, 'DELETE', endpoint); responseData = { success: true }; } if (operation === 'download') { @@ -111,7 +114,7 @@ export class CitrixAdc implements INodeType { fileLocation, )}`; - const { systemfile } = await citrixADCApiRequest.call(this, 'GET', endpoint); + const { systemfile } = await netscalerADCApiRequest.call(this, 'GET', endpoint); const file = systemfile[0]; @@ -185,7 +188,7 @@ export class CitrixAdc implements INodeType { const endpoint = '/config/sslcert?action=create'; - await citrixADCApiRequest.call(this, 'POST', endpoint, { sslcert: body }); + await netscalerADCApiRequest.call(this, 'POST', endpoint, { sslcert: body }); responseData = { success: true }; } @@ -225,7 +228,7 @@ export class CitrixAdc implements INodeType { const endpoint = '/config/sslcertkey'; - await citrixADCApiRequest.call(this, 'POST', endpoint, { sslcertkey: body }); + await netscalerADCApiRequest.call(this, 'POST', endpoint, { sslcertkey: body }); responseData = { success: true }; } @@ -237,7 +240,7 @@ export class CitrixAdc implements INodeType { }), ); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push({ error: (error as JsonObject).toString() }); continue; } diff --git a/packages/nodes-base/nodes/Citrix/ADC/citrix.dark.svg b/packages/nodes-base/nodes/Netscaler/ADC/netscaler.dark.svg similarity index 100% rename from packages/nodes-base/nodes/Citrix/ADC/citrix.dark.svg rename to packages/nodes-base/nodes/Netscaler/ADC/netscaler.dark.svg diff --git a/packages/nodes-base/nodes/Citrix/ADC/citrix.svg b/packages/nodes-base/nodes/Netscaler/ADC/netscaler.svg similarity index 100% rename from packages/nodes-base/nodes/Citrix/ADC/citrix.svg rename to packages/nodes-base/nodes/Netscaler/ADC/netscaler.svg diff --git a/packages/nodes-base/nodes/NextCloud/GenericFunctions.ts b/packages/nodes-base/nodes/NextCloud/GenericFunctions.ts index 882df0d658..9506f015fb 100644 --- a/packages/nodes-base/nodes/NextCloud/GenericFunctions.ts +++ b/packages/nodes-base/nodes/NextCloud/GenericFunctions.ts @@ -27,9 +27,9 @@ export async function nextCloudApiRequest( let credentials; if (authenticationMethod === 'accessToken') { - credentials = (await this.getCredentials('nextCloudApi')) as { webDavUrl: string }; + credentials = await this.getCredentials<{ webDavUrl: string }>('nextCloudApi'); } else { - credentials = (await this.getCredentials('nextCloudOAuth2Api')) as { webDavUrl: string }; + credentials = await this.getCredentials<{ webDavUrl: string }>('nextCloudOAuth2Api'); } const options: IRequestOptions = { diff --git a/packages/nodes-base/nodes/NextCloud/NextCloud.node.json b/packages/nodes-base/nodes/NextCloud/NextCloud.node.json index eac0530d66..217355aa58 100644 --- a/packages/nodes-base/nodes/NextCloud/NextCloud.node.json +++ b/packages/nodes-base/nodes/NextCloud/NextCloud.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/nextCloud" + "url": "https://docs.n8n.io/integrations/builtin/credentials/nextCloud/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/NextCloud/NextCloud.node.ts b/packages/nodes-base/nodes/NextCloud/NextCloud.node.ts index 5ba8b7f5b6..9a710c2a9c 100644 --- a/packages/nodes-base/nodes/NextCloud/NextCloud.node.ts +++ b/packages/nodes-base/nodes/NextCloud/NextCloud.node.ts @@ -9,7 +9,7 @@ import type { INodeTypeDescription, JsonObject, } from 'n8n-workflow'; -import { NodeApiError, NodeOperationError } from 'n8n-workflow'; +import { NodeApiError, NodeConnectionType, NodeOperationError } from 'n8n-workflow'; import { parseString } from 'xml2js'; @@ -28,8 +28,8 @@ export class NextCloud implements INodeType { defaults: { name: 'Nextcloud', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'nextCloudApi', @@ -544,7 +544,7 @@ export class NextCloud implements INodeType { displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, displayOptions: { show: { @@ -757,7 +757,7 @@ export class NextCloud implements INodeType { displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, displayOptions: { show: { @@ -792,7 +792,7 @@ export class NextCloud implements INodeType { typeOptions: { multipleValues: false, }, - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, displayOptions: { show: { @@ -1099,7 +1099,7 @@ export class NextCloud implements INodeType { qs, ); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { if (resource === 'file' && operation === 'download') { items[i].json = { error: error.message }; } else { @@ -1288,7 +1288,7 @@ export class NextCloud implements INodeType { returnData.push(...executionData); } } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { if (resource === 'file' && operation === 'download') { items[i].json = { error: error.message }; } else { diff --git a/packages/nodes-base/nodes/NoOp/NoOp.node.ts b/packages/nodes-base/nodes/NoOp/NoOp.node.ts index 4116a3a52f..beef97a283 100644 --- a/packages/nodes-base/nodes/NoOp/NoOp.node.ts +++ b/packages/nodes-base/nodes/NoOp/NoOp.node.ts @@ -4,6 +4,7 @@ import type { INodeType, INodeTypeDescription, } from 'n8n-workflow'; +import { NodeConnectionType } from 'n8n-workflow'; export class NoOp implements INodeType { description: INodeTypeDescription = { @@ -18,8 +19,8 @@ export class NoOp implements INodeType { name: 'No Operation, do nothing', color: '#b0b0b0', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], properties: [], }; diff --git a/packages/nodes-base/nodes/NocoDB/NocoDB.node.json b/packages/nodes-base/nodes/NocoDB/NocoDB.node.json index 8e3898877c..94ce576d73 100644 --- a/packages/nodes-base/nodes/NocoDB/NocoDB.node.json +++ b/packages/nodes-base/nodes/NocoDB/NocoDB.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/nocoDb" + "url": "https://docs.n8n.io/integrations/builtin/credentials/nocoDb/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/NocoDB/NocoDB.node.ts b/packages/nodes-base/nodes/NocoDB/NocoDB.node.ts index e9f469eebe..0cadbc5b1d 100644 --- a/packages/nodes-base/nodes/NocoDB/NocoDB.node.ts +++ b/packages/nodes-base/nodes/NocoDB/NocoDB.node.ts @@ -9,7 +9,7 @@ import type { INodeTypeDescription, JsonObject, } from 'n8n-workflow'; -import { NodeApiError, NodeOperationError } from 'n8n-workflow'; +import { NodeApiError, NodeConnectionType, NodeOperationError } from 'n8n-workflow'; import { apiRequest, apiRequestAllItems, downloadRecordAttachments } from './GenericFunctions'; @@ -27,8 +27,9 @@ export class NocoDB implements INodeType { defaults: { name: 'NocoDB', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], + usableAsTool: true, credentials: [ { name: 'nocoDb', @@ -238,6 +239,9 @@ export class NocoDB implements INodeType { new Error(`Error while fetching ${version === 3 ? 'bases' : 'projects'}!`, { cause: e, }), + { + level: 'warning', + }, ); } }, @@ -258,12 +262,18 @@ export class NocoDB implements INodeType { throw new NodeOperationError( this.getNode(), new Error('Error while fetching tables!', { cause: e }), + { + level: 'warning', + }, ); } } else { throw new NodeOperationError( this.getNode(), `No ${version === 3 ? 'base' : 'project'} selected!`, + { + level: 'warning', + }, ); } }, @@ -396,7 +406,7 @@ export class NocoDB implements INodeType { returnData.push(...body); } } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push({ error: error.toString() }); } throw new NodeApiError(this.getNode(), error as JsonObject); @@ -459,7 +469,7 @@ export class NocoDB implements INodeType { returnData.push(...responseData); } } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push({ error: error.toString() }); } throw new NodeApiError(this.getNode(), error as JsonObject); @@ -532,7 +542,7 @@ export class NocoDB implements INodeType { return [data]; } } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push({ json: { error: error.toString() } }); } else { throw error; @@ -608,7 +618,7 @@ export class NocoDB implements INodeType { newItems.push(...executionData); } } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { const executionData = this.helpers.constructExecutionMetaData( this.helpers.returnJsonArray({ error: error.toString() }), { itemData: { item: i } }, @@ -750,7 +760,7 @@ export class NocoDB implements INodeType { returnData.push(...body); } } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push({ error: error.toString() }); } throw new NodeApiError(this.getNode(), error as JsonObject); diff --git a/packages/nodes-base/nodes/NocoDB/OperationDescription.ts b/packages/nodes-base/nodes/NocoDB/OperationDescription.ts index 0d1b7ec743..361f44a1f7 100644 --- a/packages/nodes-base/nodes/NocoDB/OperationDescription.ts +++ b/packages/nodes-base/nodes/NocoDB/OperationDescription.ts @@ -15,7 +15,7 @@ export const operationFields: INodeProperties[] = [ }, }, description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getWorkspaces', }, @@ -32,7 +32,7 @@ export const operationFields: INodeProperties[] = [ }, required: true, description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsDependsOn: ['workspaceId'], loadOptionsMethod: 'getBases', @@ -63,7 +63,7 @@ export const operationFields: INodeProperties[] = [ }, required: true, description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getBases', }, @@ -80,7 +80,7 @@ export const operationFields: INodeProperties[] = [ }, required: true, description: - 'The table to operate on. Choose from the list, or specify an ID using an expression.', + 'The table to operate on. Choose from the list, or specify an ID using an expression.', typeOptions: { loadOptionsDependsOn: ['projectId'], loadOptionsMethod: 'getTables', @@ -288,7 +288,7 @@ export const operationFields: INodeProperties[] = [ }, }, default: {}, - placeholder: 'Add Option', + placeholder: 'Add option', options: [ { displayName: 'View ID', diff --git a/packages/nodes-base/nodes/Notion/Notion.node.json b/packages/nodes-base/nodes/Notion/Notion.node.json index d92fd7ed38..48d5a637e4 100644 --- a/packages/nodes-base/nodes/Notion/Notion.node.json +++ b/packages/nodes-base/nodes/Notion/Notion.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/notion" + "url": "https://docs.n8n.io/integrations/builtin/credentials/notion/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Notion/NotionTrigger.node.json b/packages/nodes-base/nodes/Notion/NotionTrigger.node.json index 5b4c343f2c..a4ede9541a 100644 --- a/packages/nodes-base/nodes/Notion/NotionTrigger.node.json +++ b/packages/nodes-base/nodes/Notion/NotionTrigger.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/notion" + "url": "https://docs.n8n.io/integrations/builtin/credentials/notion/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Notion/NotionTrigger.node.ts b/packages/nodes-base/nodes/Notion/NotionTrigger.node.ts index 537fbfa43d..49079c3c81 100644 --- a/packages/nodes-base/nodes/Notion/NotionTrigger.node.ts +++ b/packages/nodes-base/nodes/Notion/NotionTrigger.node.ts @@ -1,15 +1,22 @@ -import type { - IPollFunctions, - IDataObject, - INodeExecutionData, - INodeType, - INodeTypeDescription, +import { + type IPollFunctions, + type IDataObject, + type INodeExecutionData, + type INodeType, + type INodeTypeDescription, + NodeConnectionType, } from 'n8n-workflow'; import moment from 'moment-timezone'; import { notionApiRequest, simplifyObjects } from './shared/GenericFunctions'; import { listSearch } from './shared/methods'; +import { + databaseUrlExtractionRegexp, + databaseUrlValidationRegexp, + idExtractionRegexp, + idValidationRegexp, +} from './shared/constants'; export class NotionTrigger implements INodeType { description: INodeTypeDescription = { @@ -31,7 +38,7 @@ export class NotionTrigger implements INodeType { ], polling: true, inputs: [], - outputs: ['main'], + outputs: [NodeConnectionType.Main], properties: [ { displayName: 'Event', @@ -84,16 +91,14 @@ export class NotionTrigger implements INodeType { { type: 'regex', properties: { - regex: - '(?:https|http)://www.notion.so/(?:[a-z0-9-]{2,}/)?([0-9a-f]{8}[0-9a-f]{4}4[0-9a-f]{3}[89ab][0-9a-f]{3}[0-9a-f]{12}).*', + regex: databaseUrlValidationRegexp, errorMessage: 'Not a valid Notion Database URL', }, }, ], extractValue: { type: 'regex', - regex: - '(?:https|http)://www.notion.so/(?:[a-z0-9-]{2,}/)?([0-9a-f]{8}[0-9a-f]{4}4[0-9a-f]{3}[89ab][0-9a-f]{3}[0-9a-f]{12})', + regex: databaseUrlExtractionRegexp, }, }, { @@ -105,15 +110,14 @@ export class NotionTrigger implements INodeType { { type: 'regex', properties: { - regex: - '^(([0-9a-f]{8}[0-9a-f]{4}4[0-9a-f]{3}[89ab][0-9a-f]{3}[0-9a-f]{12})|([0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}))[ \t]*', + regex: idValidationRegexp, errorMessage: 'Not a valid Notion Database ID', }, }, ], extractValue: { type: 'regex', - regex: '^([0-9a-f]{8}-?[0-9a-f]{4}-?4[0-9a-f]{3}-?[89ab][0-9a-f]{3}-?[0-9a-f]{12})', + regex: idExtractionRegexp, }, url: '=https://www.notion.so/{{$value.replace(/-/g, "")}}', }, diff --git a/packages/nodes-base/nodes/Notion/shared/GenericFunctions.ts b/packages/nodes-base/nodes/Notion/shared/GenericFunctions.ts index af27d2c4cb..2fd594756f 100644 --- a/packages/nodes-base/nodes/Notion/shared/GenericFunctions.ts +++ b/packages/nodes-base/nodes/Notion/shared/GenericFunctions.ts @@ -23,11 +23,11 @@ import moment from 'moment-timezone'; import { validate as uuidValidate } from 'uuid'; import set from 'lodash/set'; import { filters } from './descriptions/Filters'; +import { blockUrlExtractionRegexp } from './constants'; function uuidValidateWithoutDashes(this: IExecuteFunctions, value: string) { if (uuidValidate(value)) return true; if (value.length == 32) { - //prettier-ignore const strWithDashes = `${value.slice(0, 8)}-${value.slice(8, 12)}-${value.slice(12, 16)}-${value.slice(16, 20)}-${value.slice(20)}`; if (uuidValidate(strWithDashes)) return true; } @@ -309,7 +309,6 @@ export function formatBlocks(blocks: IDataObject[]) { [block.type as string]: { ...(block.type === 'to_do' ? { checked: block.checked } : {}), ...(block.type === 'image' ? { type: 'external', external: { url: block.url } } : {}), - // prettier-ignore, ...(!['image'].includes(block.type as string) ? getTextBlocks(block) : {}), }, }); @@ -867,9 +866,12 @@ export type FileRecord = { }; }; }; -// prettier-ignore -export async function downloadFiles(this: IExecuteFunctions | IPollFunctions, records: FileRecord[], pairedItem?: IPairedItemData[]): Promise { +export async function downloadFiles( + this: IExecuteFunctions | IPollFunctions, + records: FileRecord[], + pairedItem?: IPairedItemData[], +): Promise { const elements: INodeExecutionData[] = []; for (const record of records) { const element: INodeExecutionData = { json: {}, binary: {} }; @@ -887,10 +889,12 @@ export async function downloadFiles(this: IExecuteFunctions | IPollFunctions, re '', {}, {}, - file?.file?.url as string || file?.external?.url as string, + (file?.file?.url as string) || (file?.external?.url as string), { json: false, encoding: null }, ); - element.binary![`${key}_${index}`] = await this.helpers.prepareBinaryData(data as Buffer); + element.binary![`${key}_${index}`] = await this.helpers.prepareBinaryData( + data as Buffer, + ); } } } @@ -1149,8 +1153,7 @@ export function extractBlockId(this: IExecuteFunctions, nodeVersion: number, ite const match = (blockIdRLCData.value as string).match(blockRegex); if (match === null) { - const pageRegex = - /(?:https|http):\/\/www\.notion\.so\/(?:[a-z0-9-]{2,}\/)?(?:[a-zA-Z0-9-]{2,}-)?([0-9a-f]{8}[0-9a-f]{4}4[0-9a-f]{3}[89ab][0-9a-f]{3}[0-9a-f]{12})/; + const pageRegex = new RegExp(blockUrlExtractionRegexp); const pageMatch = (blockIdRLCData.value as string).match(pageRegex); if (pageMatch === null) { diff --git a/packages/nodes-base/nodes/Notion/shared/constants.ts b/packages/nodes-base/nodes/Notion/shared/constants.ts new file mode 100644 index 0000000000..d2121741e5 --- /dev/null +++ b/packages/nodes-base/nodes/Notion/shared/constants.ts @@ -0,0 +1,15 @@ +const notionIdRegexp = '[0-9a-f]{8}-?[0-9a-f]{4}-?[0-9a-f]{4}-?[0-9a-f]{4}-?[0-9a-f]{12}'; + +export const idExtractionRegexp = `^(${notionIdRegexp})`; +export const idValidationRegexp = `${idExtractionRegexp}.*`; + +const baseUrlRegexp = '(?:https|http)://www\\.notion\\.so/(?:[a-z0-9-]{2,}/)?'; + +export const databaseUrlExtractionRegexp = `${baseUrlRegexp}(${notionIdRegexp})`; +export const databaseUrlValidationRegexp = `${databaseUrlExtractionRegexp}.*`; + +export const databasePageUrlExtractionRegexp = `${baseUrlRegexp}(?:[a-zA-Z0-9-]{1,}-)?(${notionIdRegexp})`; +export const databasePageUrlValidationRegexp = `${databasePageUrlExtractionRegexp}.*`; + +export const blockUrlExtractionRegexp = `${baseUrlRegexp}(?:[a-zA-Z0-9-]{2,}-)?(${notionIdRegexp})`; +export const blockUrlValidationRegexp = `${blockUrlExtractionRegexp}.*`; diff --git a/packages/nodes-base/nodes/Notion/shared/descriptions/BlockDescription.ts b/packages/nodes-base/nodes/Notion/shared/descriptions/BlockDescription.ts index fbb48ce26b..a2cab6049f 100644 --- a/packages/nodes-base/nodes/Notion/shared/descriptions/BlockDescription.ts +++ b/packages/nodes-base/nodes/Notion/shared/descriptions/BlockDescription.ts @@ -1,6 +1,12 @@ import type { INodeProperties } from 'n8n-workflow'; import { blocks } from './Blocks'; +import { + blockUrlExtractionRegexp, + blockUrlValidationRegexp, + idExtractionRegexp, + idValidationRegexp, +} from '../constants'; //RLC with fixed regex for blockId const blockIdRLC: INodeProperties = { @@ -20,15 +26,14 @@ const blockIdRLC: INodeProperties = { { type: 'regex', properties: { - regex: - '(?:https|http)://www.notion.so/(?:[a-z0-9-]{2,}/)?(?:[a-zA-Z0-9-]{2,}-)?([0-9a-f]{8}[0-9a-f]{4}4[0-9a-f]{3}[89ab][0-9a-f]{3}[0-9a-f]{12}).*', + regex: blockUrlValidationRegexp, errorMessage: 'Not a valid Notion Block URL', }, }, ], // extractValue: { // type: 'regex', - // regex: 'https:\\/\\/www\\.notion\\.so\\/.+\\?pvs=[0-9]+#([a-f0-9]{2,})', + // regex: blockUrlExtractionRegexp, // }, }, { @@ -101,16 +106,14 @@ export const blockFields: INodeProperties[] = [ { type: 'regex', properties: { - regex: - '(?:https|http)://www.notion.so/(?:[a-z0-9-]{2,}/)?(?:[a-zA-Z0-9-]{2,}-)?([0-9a-f]{8}[0-9a-f]{4}4[0-9a-f]{3}[89ab][0-9a-f]{3}[0-9a-f]{12}).*', + regex: blockUrlValidationRegexp, errorMessage: 'Not a valid Notion Block URL', }, }, ], extractValue: { type: 'regex', - regex: - '(?:https|http)://www.notion.so/(?:[a-z0-9-]{2,}/)?(?:[a-zA-Z0-9-]{2,}-)?([0-9a-f]{8}[0-9a-f]{4}4[0-9a-f]{3}[89ab][0-9a-f]{3}[0-9a-f]{12})', + regex: blockUrlExtractionRegexp, }, }, { @@ -122,15 +125,14 @@ export const blockFields: INodeProperties[] = [ { type: 'regex', properties: { - regex: - '^(([0-9a-f]{8}[0-9a-f]{4}4[0-9a-f]{3}[89ab][0-9a-f]{3}[0-9a-f]{12})|([0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}))[ \t]*', + regex: idValidationRegexp, errorMessage: 'Not a valid Notion Block ID', }, }, ], extractValue: { type: 'regex', - regex: '^([0-9a-f]{8}-?[0-9a-f]{4}-?4[0-9a-f]{3}-?[89ab][0-9a-f]{3}-?[0-9a-f]{12})', + regex: idExtractionRegexp, }, url: '=https://www.notion.so/{{$value.replace(/-/g, "")}}', }, @@ -176,16 +178,14 @@ export const blockFields: INodeProperties[] = [ { type: 'regex', properties: { - regex: - '(?:https|http)://www.notion.so/(?:[a-z0-9-]{2,}/)?(?:[a-zA-Z0-9-]{2,}-)?([0-9a-f]{8}[0-9a-f]{4}4[0-9a-f]{3}[89ab][0-9a-f]{3}[0-9a-f]{12}).*', + regex: blockUrlValidationRegexp, errorMessage: 'Not a valid Notion Block URL', }, }, ], extractValue: { type: 'regex', - regex: - '(?:https|http)://www.notion.so/(?:[a-z0-9-]{2,}/)?(?:[a-zA-Z0-9-]{2,}-)?([0-9a-f]{8}[0-9a-f]{4}4[0-9a-f]{3}[89ab][0-9a-f]{3}[0-9a-f]{12})', + regex: blockUrlExtractionRegexp, }, }, { @@ -197,15 +197,14 @@ export const blockFields: INodeProperties[] = [ { type: 'regex', properties: { - regex: - '^(([0-9a-f]{8}[0-9a-f]{4}4[0-9a-f]{3}[89ab][0-9a-f]{3}[0-9a-f]{12})|([0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}))[ \t]*', + regex: idValidationRegexp, errorMessage: 'Not a valid Notion Block ID', }, }, ], extractValue: { type: 'regex', - regex: '^([0-9a-f]{8}-?[0-9a-f]{4}-?4[0-9a-f]{3}-?[89ab][0-9a-f]{3}-?[0-9a-f]{12})', + regex: idExtractionRegexp, }, url: '=https://www.notion.so/{{$value.replace(/-/g, "")}}', }, diff --git a/packages/nodes-base/nodes/Notion/shared/descriptions/Blocks.ts b/packages/nodes-base/nodes/Notion/shared/descriptions/Blocks.ts index 1947cfa7c2..3b49e23fbe 100644 --- a/packages/nodes-base/nodes/Notion/shared/descriptions/Blocks.ts +++ b/packages/nodes-base/nodes/Notion/shared/descriptions/Blocks.ts @@ -1,4 +1,10 @@ import type { IDisplayOptions, INodeProperties } from 'n8n-workflow'; +import { + databaseUrlExtractionRegexp, + databaseUrlValidationRegexp, + idExtractionRegexp, + idValidationRegexp, +} from '../constants'; const colors = [ { @@ -181,7 +187,7 @@ const typeMention: INodeProperties[] = [ }, default: '', description: - 'The ID of the user being mentioned. Choose from the list, or specify an ID using an expression.', + 'The ID of the user being mentioned. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Page ID', @@ -221,16 +227,14 @@ const typeMention: INodeProperties[] = [ { type: 'regex', properties: { - regex: - '(?:https|http)://www.notion.so/(?:[a-z0-9-]{2,}/)?([0-9a-f]{8}[0-9a-f]{4}4[0-9a-f]{3}[89ab][0-9a-f]{3}[0-9a-f]{12}).*', + regex: databaseUrlValidationRegexp, errorMessage: 'Not a valid Notion Database URL', }, }, ], extractValue: { type: 'regex', - regex: - '(?:https|http)://www.notion.so/(?:[a-z0-9-]{2,}/)?([0-9a-f]{8}[0-9a-f]{4}4[0-9a-f]{3}[89ab][0-9a-f]{3}[0-9a-f]{12})', + regex: databaseUrlExtractionRegexp, }, }, { @@ -242,15 +246,14 @@ const typeMention: INodeProperties[] = [ { type: 'regex', properties: { - regex: - '^(([0-9a-f]{8}[0-9a-f]{4}4[0-9a-f]{3}[89ab][0-9a-f]{3}[0-9a-f]{12})|([0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}))[ \t]*', + regex: idValidationRegexp, errorMessage: 'Not a valid Notion Database ID', }, }, ], extractValue: { type: 'regex', - regex: '^([0-9a-f]{8}-?[0-9a-f]{4}-?4[0-9a-f]{3}-?[89ab][0-9a-f]{3}-?[0-9a-f]{12})', + regex: idExtractionRegexp, }, url: '=https://www.notion.so/{{$value.replace(/-/g, "")}}', }, @@ -576,7 +579,7 @@ export const blocks = (resource: string, operation: string): INodeProperties[] = name: 'type', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getBlockTypes', }, diff --git a/packages/nodes-base/nodes/Notion/shared/descriptions/DatabaseDescription.ts b/packages/nodes-base/nodes/Notion/shared/descriptions/DatabaseDescription.ts index aee9c8d886..f814139603 100644 --- a/packages/nodes-base/nodes/Notion/shared/descriptions/DatabaseDescription.ts +++ b/packages/nodes-base/nodes/Notion/shared/descriptions/DatabaseDescription.ts @@ -1,4 +1,10 @@ import type { INodeProperties } from 'n8n-workflow'; +import { + databaseUrlExtractionRegexp, + databaseUrlValidationRegexp, + idExtractionRegexp, + idValidationRegexp, +} from '../constants'; export const databaseOperations: INodeProperties[] = [ { @@ -97,8 +103,7 @@ export const databaseFields: INodeProperties[] = [ { type: 'regex', properties: { - regex: - '(?:https|http)://www.notion.so/(?:[a-z0-9-]{2,}/)?([0-9a-f]{8}[0-9a-f]{4}4[0-9a-f]{3}[89ab][0-9a-f]{3}[0-9a-f]{12}).*', + regex: databaseUrlValidationRegexp, errorMessage: 'Not a valid Notion Database URL. Hint: use the URL of the database itself, not a page containing it.', }, @@ -106,8 +111,7 @@ export const databaseFields: INodeProperties[] = [ ], extractValue: { type: 'regex', - regex: - '(?:https|http)://www.notion.so/(?:[a-z0-9-]{2,}/)?([0-9a-f]{8}[0-9a-f]{4}4[0-9a-f]{3}[89ab][0-9a-f]{3}[0-9a-f]{12})', + regex: databaseUrlExtractionRegexp, }, }, { @@ -119,15 +123,14 @@ export const databaseFields: INodeProperties[] = [ { type: 'regex', properties: { - regex: - '^(([0-9a-f]{8}[0-9a-f]{4}4[0-9a-f]{3}[89ab][0-9a-f]{3}[0-9a-f]{12})|([0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}))[ \t]*', + regex: idValidationRegexp, errorMessage: 'Not a valid Notion Database ID', }, }, ], extractValue: { type: 'regex', - regex: '^([0-9a-f]{8}-?[0-9a-f]{4}-?4[0-9a-f]{3}-?[89ab][0-9a-f]{3}-?[0-9a-f]{12})', + regex: idExtractionRegexp, }, url: '=https://www.notion.so/{{$value.replace(/-/g, "")}}', }, diff --git a/packages/nodes-base/nodes/Notion/shared/descriptions/DatabasePageDescription.ts b/packages/nodes-base/nodes/Notion/shared/descriptions/DatabasePageDescription.ts index 4916a36223..1a590457da 100644 --- a/packages/nodes-base/nodes/Notion/shared/descriptions/DatabasePageDescription.ts +++ b/packages/nodes-base/nodes/Notion/shared/descriptions/DatabasePageDescription.ts @@ -5,6 +5,14 @@ import { getConditions, getSearchFilters } from '../GenericFunctions'; import { blocks, text } from './Blocks'; import { filters } from './Filters'; +import { + databaseUrlExtractionRegexp, + databaseUrlValidationRegexp, + databasePageUrlExtractionRegexp, + databasePageUrlValidationRegexp, + idExtractionRegexp, + idValidationRegexp, +} from '../constants'; export const databasePageOperations: INodeProperties[] = [ { @@ -114,16 +122,14 @@ export const databasePageFields: INodeProperties[] = [ { type: 'regex', properties: { - regex: - '(?:https|http)://www.notion.so/(?:[a-z0-9-]{2,}/)?([0-9a-f]{8}[0-9a-f]{4}4[0-9a-f]{3}[89ab][0-9a-f]{3}[0-9a-f]{12}).*', + regex: databaseUrlValidationRegexp, errorMessage: 'Not a valid Notion Database URL', }, }, ], extractValue: { type: 'regex', - regex: - '(?:https|http)://www.notion.so/(?:[a-z0-9-]{2,}/)?([0-9a-f]{8}[0-9a-f]{4}4[0-9a-f]{3}[89ab][0-9a-f]{3}[0-9a-f]{12})', + regex: databaseUrlExtractionRegexp, }, }, { @@ -135,15 +141,14 @@ export const databasePageFields: INodeProperties[] = [ { type: 'regex', properties: { - regex: - '^(([0-9a-f]{8}[0-9a-f]{4}4[0-9a-f]{3}[89ab][0-9a-f]{3}[0-9a-f]{12})|([0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}))[ \t]*', + regex: idValidationRegexp, errorMessage: 'Not a valid Notion Database ID', }, }, ], extractValue: { type: 'regex', - regex: '^([0-9a-f]{8}-?[0-9a-f]{4}-?4[0-9a-f]{3}-?[89ab][0-9a-f]{3}-?[0-9a-f]{12})', + regex: idExtractionRegexp, }, url: '=https://www.notion.so/{{$value.replace(/-/g, "")}}', }, @@ -210,7 +215,7 @@ export const databasePageFields: INodeProperties[] = [ name: 'key', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getDatabaseProperties', loadOptionsDependsOn: ['databaseId'], @@ -289,7 +294,7 @@ export const databasePageFields: INodeProperties[] = [ }, default: [], description: - 'Name of the options you want to set. Multiples can be defined separated by comma. Choose from the list, or specify IDs using an expression.', + 'Name of the options you want to set. Multiples can be defined separated by comma. Choose from the list, or specify IDs using an expression.', }, { displayName: 'Option Name or ID', @@ -305,7 +310,7 @@ export const databasePageFields: INodeProperties[] = [ }, default: '', description: - 'Name of the option you want to set. Choose from the list, or specify an ID using an expression.', + 'Name of the option you want to set. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Status Name or ID', @@ -321,7 +326,7 @@ export const databasePageFields: INodeProperties[] = [ }, default: '', description: - 'Name of the option you want to set. Choose from the list, or specify an ID using an expression.', + 'Name of the option you want to set. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Email', @@ -372,7 +377,7 @@ export const databasePageFields: INodeProperties[] = [ }, default: [], description: - 'List of users. Multiples can be defined separated by comma. Choose from the list, or specify IDs using an expression.', + 'List of users. Multiples can be defined separated by comma. Choose from the list, or specify IDs using an expression.', }, { displayName: 'Relation IDs', @@ -493,7 +498,7 @@ export const databasePageFields: INodeProperties[] = [ }, default: 'default', description: - 'Time zone to use. By default n8n timezone is used. Choose from the list, or specify an ID using an expression.', + 'Time zone to use. By default n8n timezone is used. Choose from the list, or specify an ID using an expression.', }, { displayName: 'File URLs', @@ -551,7 +556,7 @@ export const databasePageFields: INodeProperties[] = [ }, }, default: {}, - placeholder: 'Add Option', + placeholder: 'Add option', options: [ { displayName: 'Icon Type', @@ -600,16 +605,14 @@ export const databasePageFields: INodeProperties[] = [ { type: 'regex', properties: { - regex: - '(?:https|http)://www.notion.so/(?:[a-z0-9-]{2,}/)?(?:[a-zA-Z0-9-]{2,}-)?([0-9a-f]{8}[0-9a-f]{4}4[0-9a-f]{3}[89ab][0-9a-f]{3}[0-9a-f]{12}).*', + regex: databasePageUrlValidationRegexp, errorMessage: 'Not a valid Notion Database Page URL', }, }, ], extractValue: { type: 'regex', - regex: - '(?:https|http)://www.notion.so/(?:[a-z0-9-]{2,}/)?(?:[a-zA-Z0-9-]{2,}-)?([0-9a-f]{8}[0-9a-f]{4}4[0-9a-f]{3}[89ab][0-9a-f]{3}[0-9a-f]{12})', + regex: databasePageUrlExtractionRegexp, }, }, { @@ -621,15 +624,14 @@ export const databasePageFields: INodeProperties[] = [ { type: 'regex', properties: { - regex: - '^(([0-9a-f]{8}[0-9a-f]{4}4[0-9a-f]{3}[89ab][0-9a-f]{3}[0-9a-f]{12})|([0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}))[ \t]*', + regex: idValidationRegexp, errorMessage: 'Not a valid Notion Database Page ID', }, }, ], extractValue: { type: 'regex', - regex: '^([0-9a-f]{8}-?[0-9a-f]{4}-?4[0-9a-f]{3}-?[89ab][0-9a-f]{3}-?[0-9a-f]{12})', + regex: idExtractionRegexp, }, url: '=https://www.notion.so/{{$value.replace(/-/g, "")}}', }, @@ -680,7 +682,7 @@ export const databasePageFields: INodeProperties[] = [ name: 'key', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getDatabaseIdFromPage', loadOptionsDependsOn: ['pageId'], @@ -750,7 +752,7 @@ export const databasePageFields: INodeProperties[] = [ name: 'multiSelectValue', type: 'multiOptions', description: - 'Choose from the list, or specify IDs using an expression', + 'Choose from the list, or specify IDs using an expression', typeOptions: { loadOptionsMethod: 'getDatabaseOptionsFromPage', }, @@ -766,7 +768,7 @@ export const databasePageFields: INodeProperties[] = [ name: 'selectValue', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getDatabaseOptionsFromPage', }, @@ -791,7 +793,7 @@ export const databasePageFields: INodeProperties[] = [ }, default: '', description: - 'Name of the option you want to set. Choose from the list, or specify an ID using an expression.', + 'Name of the option you want to set. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Email', @@ -841,7 +843,7 @@ export const databasePageFields: INodeProperties[] = [ }, default: [], description: - 'List of users. Multiples can be defined separated by comma. Choose from the list, or specify IDs using an expression.', + 'List of users. Multiples can be defined separated by comma. Choose from the list, or specify IDs using an expression.', }, { displayName: 'Relation IDs', @@ -962,7 +964,7 @@ export const databasePageFields: INodeProperties[] = [ }, default: 'default', description: - 'Time zone to use. By default n8n timezone is used. Choose from the list, or specify an ID using an expression.', + 'Time zone to use. By default n8n timezone is used. Choose from the list, or specify an ID using an expression.', }, { displayName: 'File URLs', @@ -1019,7 +1021,7 @@ export const databasePageFields: INodeProperties[] = [ }, }, default: {}, - placeholder: 'Add Option', + placeholder: 'Add option', options: [ { displayName: 'Icon Type', @@ -1069,16 +1071,14 @@ export const databasePageFields: INodeProperties[] = [ { type: 'regex', properties: { - regex: - '(?:https|http)://www.notion.so/(?:[a-z0-9-]{2,}/)?(?:[a-zA-Z0-9-]{2,}-)?([0-9a-f]{8}[0-9a-f]{4}4[0-9a-f]{3}[89ab][0-9a-f]{3}[0-9a-f]{12}).*', + regex: databasePageUrlValidationRegexp, errorMessage: 'Not a valid Notion Database Page URL', }, }, ], extractValue: { type: 'regex', - regex: - '(?:https|http)://www.notion.so/(?:[a-z0-9-]{2,}/)?(?:[a-zA-Z0-9-]{2,}-)?([0-9a-f]{8}[0-9a-f]{4}4[0-9a-f]{3}[89ab][0-9a-f]{3}[0-9a-f]{12})', + regex: databasePageUrlExtractionRegexp, }, }, { @@ -1090,15 +1090,14 @@ export const databasePageFields: INodeProperties[] = [ { type: 'regex', properties: { - regex: - '^(([0-9a-f]{8}[0-9a-f]{4}4[0-9a-f]{3}[89ab][0-9a-f]{3}[0-9a-f]{12})|([0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}))[ \t]*', + regex: idValidationRegexp, errorMessage: 'Not a valid Notion Database Page ID', }, }, ], extractValue: { type: 'regex', - regex: '^([0-9a-f]{8}-?[0-9a-f]{4}-?4[0-9a-f]{3}-?[89ab][0-9a-f]{3}-?[0-9a-f]{12})', + regex: idExtractionRegexp, }, url: '=https://www.notion.so/{{$value.replace(/-/g, "")}}', }, @@ -1160,16 +1159,14 @@ export const databasePageFields: INodeProperties[] = [ { type: 'regex', properties: { - regex: - '(?:https|http)://www.notion.so/(?:[a-z0-9-]{2,}/)?([0-9a-f]{8}[0-9a-f]{4}4[0-9a-f]{3}[89ab][0-9a-f]{3}[0-9a-f]{12}).*', - errorMessage: 'Not a valid Notion Database URL', + regex: databasePageUrlValidationRegexp, + errorMessage: 'Not a valid Notion Database Page URL', }, }, ], extractValue: { type: 'regex', - regex: - '(?:https|http)://www.notion.so/(?:[a-z0-9-]{2,}/)?([0-9a-f]{8}[0-9a-f]{4}4[0-9a-f]{3}[89ab][0-9a-f]{3}[0-9a-f]{12})', + regex: databasePageUrlExtractionRegexp, }, }, { @@ -1181,15 +1178,14 @@ export const databasePageFields: INodeProperties[] = [ { type: 'regex', properties: { - regex: - '^(([0-9a-f]{8}[0-9a-f]{4}4[0-9a-f]{3}[89ab][0-9a-f]{3}[0-9a-f]{12})|([0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}))[ \t]*', - errorMessage: 'Not a valid Notion Database ID', + regex: idValidationRegexp, + errorMessage: 'Not a valid Notion Database Page ID', }, }, ], extractValue: { type: 'regex', - regex: '^([0-9a-f]{8}-?[0-9a-f]{4}-?4[0-9a-f]{3}-?[89ab][0-9a-f]{3}-?[0-9a-f]{12})', + regex: idExtractionRegexp, }, url: '=https://www.notion.so/{{$value.replace(/-/g, "")}}', }, @@ -1362,7 +1358,7 @@ export const databasePageFields: INodeProperties[] = [ }, default: '', description: - 'The name of the property to filter by. Choose from the list, or specify an ID using an expression.', + 'The name of the property to filter by. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Property Name', diff --git a/packages/nodes-base/nodes/Notion/shared/descriptions/Filters.ts b/packages/nodes-base/nodes/Notion/shared/descriptions/Filters.ts index 75e4d918b7..e38f71ae9d 100644 --- a/packages/nodes-base/nodes/Notion/shared/descriptions/Filters.ts +++ b/packages/nodes-base/nodes/Notion/shared/descriptions/Filters.ts @@ -9,7 +9,7 @@ export const filters = (conditions: any) => [ }, default: '', description: - 'The name of the property to filter by. Choose from the list, or specify an ID using an expression.', + 'The name of the property to filter by. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Type', @@ -66,7 +66,7 @@ export const filters = (conditions: any) => [ name: 'multiSelectValue', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getPropertySelectValues', }, @@ -85,7 +85,7 @@ export const filters = (conditions: any) => [ name: 'selectValue', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getPropertySelectValues', }, @@ -113,7 +113,7 @@ export const filters = (conditions: any) => [ }, default: '', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', }, { displayName: 'Email', @@ -160,7 +160,7 @@ export const filters = (conditions: any) => [ }, default: '', description: - 'List of users. Multiples can be defined separated by comma. Choose from the list, or specify an ID using an expression.', + 'List of users. Multiples can be defined separated by comma. Choose from the list, or specify an ID using an expression.', }, { displayName: 'User Name or ID', @@ -179,7 +179,7 @@ export const filters = (conditions: any) => [ }, default: '', description: - 'List of users. Multiples can be defined separated by comma. Choose from the list, or specify an ID using an expression.', + 'List of users. Multiples can be defined separated by comma. Choose from the list, or specify an ID using an expression.', }, { displayName: 'User Name or ID', @@ -198,7 +198,7 @@ export const filters = (conditions: any) => [ }, default: '', description: - 'List of users. Multiples can be defined separated by comma. Choose from the list, or specify an ID using an expression.', + 'List of users. Multiples can be defined separated by comma. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Relation ID', diff --git a/packages/nodes-base/nodes/Notion/shared/descriptions/PageDescription.ts b/packages/nodes-base/nodes/Notion/shared/descriptions/PageDescription.ts index d0abb0f3f0..37d57799cb 100644 --- a/packages/nodes-base/nodes/Notion/shared/descriptions/PageDescription.ts +++ b/packages/nodes-base/nodes/Notion/shared/descriptions/PageDescription.ts @@ -1,6 +1,12 @@ import type { INodeProperties } from 'n8n-workflow'; import { blocks } from './Blocks'; +import { + databasePageUrlExtractionRegexp, + databasePageUrlValidationRegexp, + idExtractionRegexp, + idValidationRegexp, +} from '../constants'; export const pageOperations: INodeProperties[] = [ { @@ -93,16 +99,14 @@ export const pageFields: INodeProperties[] = [ { type: 'regex', properties: { - regex: - '(?:https|http)://www.notion.so/(?:[a-z0-9-]{2,}/)?(?:[a-zA-Z0-9-]{2,}-)?([0-9a-f]{8}[0-9a-f]{4}4[0-9a-f]{3}[89ab][0-9a-f]{3}[0-9a-f]{12}).*', - errorMessage: 'Not a valid Notion Page URL', + regex: databasePageUrlValidationRegexp, + errorMessage: 'Not a valid Notion Database Page URL', }, }, ], extractValue: { type: 'regex', - regex: - '(?:https|http)://www.notion.so/(?:[a-z0-9-]{2,}/)?(?:[a-zA-Z0-9-]{2,}-)?([0-9a-f]{8}[0-9a-f]{4}4[0-9a-f]{3}[89ab][0-9a-f]{3}[0-9a-f]{12})', + regex: databasePageUrlExtractionRegexp, }, }, { @@ -114,15 +118,14 @@ export const pageFields: INodeProperties[] = [ { type: 'regex', properties: { - regex: - '^(([0-9a-f]{8}[0-9a-f]{4}4[0-9a-f]{3}[89ab][0-9a-f]{3}[0-9a-f]{12})|([0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}))[ \t]*', + regex: idValidationRegexp, errorMessage: 'Not a valid Notion Page ID', }, }, ], extractValue: { type: 'regex', - regex: '^([0-9a-f]{8}-?[0-9a-f]{4}-?4[0-9a-f]{3}-?[89ab][0-9a-f]{3}-?[0-9a-f]{12})', + regex: idExtractionRegexp, }, url: '=https://www.notion.so/{{$value.replace(/-/g, "")}}', }, @@ -173,16 +176,14 @@ export const pageFields: INodeProperties[] = [ { type: 'regex', properties: { - regex: - '(?:https|http)://www.notion.so/(?:[a-z0-9-]{2,}/)?(?:[a-zA-Z0-9-]{2,}-)?([0-9a-f]{8}[0-9a-f]{4}4[0-9a-f]{3}[89ab][0-9a-f]{3}[0-9a-f]{12}).*', - errorMessage: 'Not a valid Notion Page URL', + regex: databasePageUrlValidationRegexp, + errorMessage: 'Not a valid Notion Database Page URL', }, }, ], extractValue: { type: 'regex', - regex: - '(?:https|http)://www.notion.so/(?:[a-z0-9-]{2,}/)?(?:[a-zA-Z0-9-]{2,}-)?([0-9a-f]{8}[0-9a-f]{4}4[0-9a-f]{3}[89ab][0-9a-f]{3}[0-9a-f]{12})', + regex: databasePageUrlExtractionRegexp, }, }, { @@ -194,15 +195,14 @@ export const pageFields: INodeProperties[] = [ { type: 'regex', properties: { - regex: - '^(([0-9a-f]{8}[0-9a-f]{4}4[0-9a-f]{3}[89ab][0-9a-f]{3}[0-9a-f]{12})|([0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}))[ \t]*', + regex: idValidationRegexp, errorMessage: 'Not a valid Notion Page ID', }, }, ], extractValue: { type: 'regex', - regex: '^([0-9a-f]{8}-?[0-9a-f]{4}-?4[0-9a-f]{3}-?[89ab][0-9a-f]{3}-?[0-9a-f]{12})', + regex: idExtractionRegexp, }, url: '=https://www.notion.so/{{$value.replace(/-/g, "")}}', }, @@ -254,7 +254,7 @@ export const pageFields: INodeProperties[] = [ }, }, default: {}, - placeholder: 'Add Option', + placeholder: 'Add option', options: [ { displayName: 'Icon Type', diff --git a/packages/nodes-base/nodes/Notion/test/GenericFunctions.test.ts b/packages/nodes-base/nodes/Notion/test/GenericFunctions.test.ts index dc5baba799..40b01ea18b 100644 --- a/packages/nodes-base/nodes/Notion/test/GenericFunctions.test.ts +++ b/packages/nodes-base/nodes/Notion/test/GenericFunctions.test.ts @@ -1,4 +1,5 @@ -import { formatBlocks } from '../shared/GenericFunctions'; +import { databasePageUrlExtractionRegexp } from '../shared/constants'; +import { extractPageId, formatBlocks } from '../shared/GenericFunctions'; describe('Test NotionV2, formatBlocks', () => { it('should format to_do block', () => { @@ -31,3 +32,60 @@ describe('Test NotionV2, formatBlocks', () => { ]); }); }); + +describe('Test Notion', () => { + const baseUrl = 'https://www.notion.so/fake-instance'; + const testIds = [ + '4eb10d5001254b7faaa831d72d9445aa', // Taken from Notion + 'fffb95d3060b80309027eb9c99605ec3', // Taken from user comment + 'a6356387779d4df485449a72a408f0d4', // Random v4 UUID + 'f4c1217e48f711ef94540242ac120002', // Random v1 UUID + ]; + describe('extractPageId From URL', () => { + // RLC does some Regex extraction before extractPageId is called + const extractIdFromUrl = (url: string): string => { + const match = url.match(databasePageUrlExtractionRegexp); + return match ? match[1] : url; + }; + + test('should return the part after "p="', () => { + for (const testId of testIds) { + const page = `${baseUrl}?p=${testId}`; + const result = extractPageId(extractIdFromUrl(page)); + expect(result).toBe(testId); + } + }); + + test('should return the last part after splitting by "-" when URL contains multiple "-"', () => { + for (const testId of testIds) { + const page = `${baseUrl}/some-page-${testId}`; + const result = extractPageId(extractIdFromUrl(page)); + expect(result).toBe(testId); + } + }); + + test('should return the last part after splitting by "-" when URL contains one "-"', () => { + for (const testId of testIds) { + const page = `${baseUrl}/1-${testId}`; + const result = extractPageId(extractIdFromUrl(page)); + expect(result).toBe(testId); + } + }); + + test('should return just the id when there is an instance name', () => { + for (const testId of testIds) { + const page = `${baseUrl}/${testId}`; + const result = extractPageId(extractIdFromUrl(page)); + expect(result).toBe(testId); + } + }); + + test('should return the id when there is no instance name', () => { + for (const testId of testIds) { + const page = `https://www.notion.so/${testId}`; + const result = extractPageId(extractIdFromUrl(page)); + expect(result).toBe(testId); + } + }); + }); +}); diff --git a/packages/nodes-base/nodes/Notion/v1/VersionDescription.ts b/packages/nodes-base/nodes/Notion/v1/VersionDescription.ts index 6f08675439..3d0334a04f 100644 --- a/packages/nodes-base/nodes/Notion/v1/VersionDescription.ts +++ b/packages/nodes-base/nodes/Notion/v1/VersionDescription.ts @@ -1,5 +1,5 @@ /* eslint-disable n8n-nodes-base/node-filename-against-convention */ -import type { INodeTypeDescription } from 'n8n-workflow'; +import { NodeConnectionType, type INodeTypeDescription } from 'n8n-workflow'; import { databaseFields, databaseOperations } from '../shared/descriptions/DatabaseDescription'; import { userFields, userOperations } from '../shared/descriptions/UserDescription'; @@ -24,8 +24,8 @@ export const versionDescription: INodeTypeDescription = { defaults: { name: 'Notion', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'notionApi', diff --git a/packages/nodes-base/nodes/Notion/v2/NotionV2.node.ts b/packages/nodes-base/nodes/Notion/v2/NotionV2.node.ts index c69bb8ee7b..6c5205f9d0 100644 --- a/packages/nodes-base/nodes/Notion/v2/NotionV2.node.ts +++ b/packages/nodes-base/nodes/Notion/v2/NotionV2.node.ts @@ -86,7 +86,7 @@ export class NotionV2 implements INodeType { ); returnData = returnData.concat(executionData); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push({ json: { error: error.message }, pairedItem: { item: i }, @@ -161,7 +161,7 @@ export class NotionV2 implements INodeType { ); returnData = returnData.concat(executionData); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push({ json: { error: error.message }, pairedItem: { item: i }, @@ -193,7 +193,7 @@ export class NotionV2 implements INodeType { ); returnData = returnData.concat(executionData); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push({ json: { error: error.message }, pairedItem: { item: i }, @@ -236,7 +236,7 @@ export class NotionV2 implements INodeType { ); returnData = returnData.concat(executionData); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push({ json: { error: error.message }, pairedItem: { item: i }, @@ -299,7 +299,7 @@ export class NotionV2 implements INodeType { ); returnData = returnData.concat(executionData); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push({ json: { error: error.message }, pairedItem: { item: i }, @@ -386,7 +386,7 @@ export class NotionV2 implements INodeType { ); returnData = returnData.concat(executionData); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push({ json: { error: error.message }, pairedItem: { item: i }, @@ -416,7 +416,7 @@ export class NotionV2 implements INodeType { ); returnData = returnData.concat(executionData); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push({ json: { error: error.message }, pairedItem: { item: i }, @@ -511,7 +511,7 @@ export class NotionV2 implements INodeType { ); returnData = returnData.concat(executionData); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push({ json: { error: error.message }, pairedItem: { item: i }, @@ -563,7 +563,7 @@ export class NotionV2 implements INodeType { ); returnData = returnData.concat(executionData); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push({ json: { error: error.message }, pairedItem: { item: i }, @@ -589,7 +589,7 @@ export class NotionV2 implements INodeType { ); returnData = returnData.concat(executionData); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push({ json: { error: error.message }, pairedItem: { item: i }, @@ -618,7 +618,7 @@ export class NotionV2 implements INodeType { ); returnData = returnData.concat(executionData); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push({ json: { error: error.message }, pairedItem: { item: i }, @@ -652,7 +652,7 @@ export class NotionV2 implements INodeType { ); returnData = returnData.concat(executionData); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push({ json: { error: error.message }, pairedItem: { item: i }, @@ -704,7 +704,7 @@ export class NotionV2 implements INodeType { ); returnData = returnData.concat(executionData); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push({ json: { error: error.message }, pairedItem: { item: i }, @@ -766,7 +766,7 @@ export class NotionV2 implements INodeType { ); returnData = returnData.concat(executionData); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push({ json: { error: error.message }, pairedItem: { item: i }, diff --git a/packages/nodes-base/nodes/Notion/v2/VersionDescription.ts b/packages/nodes-base/nodes/Notion/v2/VersionDescription.ts index 934152fa26..4114d681db 100644 --- a/packages/nodes-base/nodes/Notion/v2/VersionDescription.ts +++ b/packages/nodes-base/nodes/Notion/v2/VersionDescription.ts @@ -1,5 +1,5 @@ /* eslint-disable n8n-nodes-base/node-filename-against-convention */ -import type { INodeTypeDescription } from 'n8n-workflow'; +import { NodeConnectionType, type INodeTypeDescription } from 'n8n-workflow'; import { databaseFields, databaseOperations } from '../shared/descriptions/DatabaseDescription'; import { userFields, userOperations } from '../shared/descriptions/UserDescription'; @@ -24,8 +24,9 @@ export const versionDescription: INodeTypeDescription = { defaults: { name: 'Notion', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], + usableAsTool: true, credentials: [ { name: 'notionApi', diff --git a/packages/nodes-base/nodes/Npm/Npm.node.json b/packages/nodes-base/nodes/Npm/Npm.node.json index 39394b5ed4..323ebbd9c8 100644 --- a/packages/nodes-base/nodes/Npm/Npm.node.json +++ b/packages/nodes-base/nodes/Npm/Npm.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/npm" + "url": "https://docs.n8n.io/integrations/builtin/credentials/npm/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Npm/Npm.node.ts b/packages/nodes-base/nodes/Npm/Npm.node.ts index 54d8a44fbd..d86c82fe0d 100644 --- a/packages/nodes-base/nodes/Npm/Npm.node.ts +++ b/packages/nodes-base/nodes/Npm/Npm.node.ts @@ -1,4 +1,5 @@ import type { INodeType, INodeTypeDescription } from 'n8n-workflow'; +import { NodeConnectionType } from 'n8n-workflow'; import { packageFields, packageOperations } from './PackageDescription'; import { distTagFields, distTagOperations } from './DistTagDescription'; @@ -14,8 +15,8 @@ export class Npm implements INodeType { defaults: { name: 'npm', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'npmApi', diff --git a/packages/nodes-base/nodes/Odoo/Odoo.node.json b/packages/nodes-base/nodes/Odoo/Odoo.node.json index bbe953ee18..18aee65b97 100644 --- a/packages/nodes-base/nodes/Odoo/Odoo.node.json +++ b/packages/nodes-base/nodes/Odoo/Odoo.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/odoo" + "url": "https://docs.n8n.io/integrations/builtin/credentials/odoo/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Odoo/Odoo.node.ts b/packages/nodes-base/nodes/Odoo/Odoo.node.ts index 051af948f7..58472d9340 100644 --- a/packages/nodes-base/nodes/Odoo/Odoo.node.ts +++ b/packages/nodes-base/nodes/Odoo/Odoo.node.ts @@ -11,7 +11,7 @@ import type { INodeTypeDescription, IRequestOptions, } from 'n8n-workflow'; -import { deepCopy, randomInt } from 'n8n-workflow'; +import { NodeConnectionType, deepCopy, randomInt } from 'n8n-workflow'; import { capitalCase } from 'change-case'; import { @@ -51,8 +51,8 @@ export class Odoo implements INodeType { defaults: { name: 'Odoo', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'odooApi', @@ -751,7 +751,7 @@ export class Odoo implements INodeType { returnData.push(...executionData); } } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { const executionData = this.helpers.constructExecutionMetaData( this.helpers.returnJsonArray({ error: error.message }), { itemData: { item: i } }, diff --git a/packages/nodes-base/nodes/Odoo/descriptions/ContactDescription.ts b/packages/nodes-base/nodes/Odoo/descriptions/ContactDescription.ts index 88b9872244..b78287ecaf 100644 --- a/packages/nodes-base/nodes/Odoo/descriptions/ContactDescription.ts +++ b/packages/nodes-base/nodes/Odoo/descriptions/ContactDescription.ts @@ -102,7 +102,7 @@ export const contactDescription: INodeProperties[] = [ name: 'country_id', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', default: '', typeOptions: { loadOptionsMethod: 'getCountries', @@ -113,7 +113,7 @@ export const contactDescription: INodeProperties[] = [ name: 'state_id', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', default: '', typeOptions: { loadOptionsMethod: 'getStates', @@ -258,7 +258,7 @@ export const contactDescription: INodeProperties[] = [ name: 'fieldsList', type: 'multiOptions', description: - 'Choose from the list, or specify IDs using an expression', + 'Choose from the list, or specify IDs using an expression', default: [], typeOptions: { loadOptionsMethod: 'getModelFields', @@ -321,7 +321,7 @@ export const contactDescription: INodeProperties[] = [ name: 'country_id', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', default: '', typeOptions: { loadOptionsMethod: 'getCountries', @@ -332,7 +332,7 @@ export const contactDescription: INodeProperties[] = [ name: 'state_id', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', default: '', typeOptions: { loadOptionsMethod: 'getStates', diff --git a/packages/nodes-base/nodes/Odoo/descriptions/CustomResourceDescription.ts b/packages/nodes-base/nodes/Odoo/descriptions/CustomResourceDescription.ts index a59a592c5f..67552c19d9 100644 --- a/packages/nodes-base/nodes/Odoo/descriptions/CustomResourceDescription.ts +++ b/packages/nodes-base/nodes/Odoo/descriptions/CustomResourceDescription.ts @@ -6,7 +6,7 @@ export const customResourceOperations: INodeProperties[] = [ name: 'customResource', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', default: '', typeOptions: { loadOptionsMethod: 'getModels', @@ -93,7 +93,7 @@ export const customResourceDescription: INodeProperties[] = [ name: 'fieldName', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', default: '', typeOptions: { loadOptionsMethod: 'getModelFields', @@ -179,7 +179,7 @@ export const customResourceDescription: INodeProperties[] = [ name: 'fieldsList', type: 'multiOptions', description: - 'Choose from the list, or specify IDs using an expression', + 'Choose from the list, or specify IDs using an expression', default: [], typeOptions: { loadOptionsMethod: 'getModelFields', @@ -215,7 +215,7 @@ export const customResourceDescription: INodeProperties[] = [ name: 'fieldName', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', default: '', typeOptions: { loadOptionsDependsOn: ['customResource'], @@ -325,7 +325,7 @@ export const customResourceDescription: INodeProperties[] = [ name: 'fieldName', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', default: '', typeOptions: { loadOptionsMethod: 'getModelFields', diff --git a/packages/nodes-base/nodes/Odoo/descriptions/NoteDescription.ts b/packages/nodes-base/nodes/Odoo/descriptions/NoteDescription.ts index e144d2a4c3..0cd8f81e7f 100644 --- a/packages/nodes-base/nodes/Odoo/descriptions/NoteDescription.ts +++ b/packages/nodes-base/nodes/Odoo/descriptions/NoteDescription.ts @@ -160,7 +160,7 @@ export const noteDescription: INodeProperties[] = [ name: 'fieldsList', type: 'multiOptions', description: - 'Choose from the list, or specify IDs using an expression', + 'Choose from the list, or specify IDs using an expression', default: [], typeOptions: { loadOptionsMethod: 'getModelFields', diff --git a/packages/nodes-base/nodes/Odoo/descriptions/OpportunityDescription.ts b/packages/nodes-base/nodes/Odoo/descriptions/OpportunityDescription.ts index 1256052cdc..a6d62f7b13 100644 --- a/packages/nodes-base/nodes/Odoo/descriptions/OpportunityDescription.ts +++ b/packages/nodes-base/nodes/Odoo/descriptions/OpportunityDescription.ts @@ -211,7 +211,7 @@ export const opportunityDescription: INodeProperties[] = [ name: 'fieldsList', type: 'multiOptions', description: - 'Choose from the list, or specify IDs using an expression', + 'Choose from the list, or specify IDs using an expression', default: [], typeOptions: { loadOptionsMethod: 'getModelFields', diff --git a/packages/nodes-base/nodes/Okta/Okta.dark.svg b/packages/nodes-base/nodes/Okta/Okta.dark.svg new file mode 100644 index 0000000000..b6f1fd7e2b --- /dev/null +++ b/packages/nodes-base/nodes/Okta/Okta.dark.svg @@ -0,0 +1,3 @@ + + + diff --git a/packages/nodes-base/nodes/Okta/Okta.node.json b/packages/nodes-base/nodes/Okta/Okta.node.json new file mode 100644 index 0000000000..682a247192 --- /dev/null +++ b/packages/nodes-base/nodes/Okta/Okta.node.json @@ -0,0 +1,20 @@ +{ + "node": "n8n-nodes-base.okta", + "nodeVersion": "1.0", + "codexVersion": "1.0", + "categories": ["Development"], + "alias": ["authentication", "users", "Security"], + "resources": { + "credentialDocumentation": [ + { + "url": "https://docs.n8n.io/integrations/builtin/credentials/okta/" + } + ], + "primaryDocumentation": [ + { + "url": "https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.okta/" + } + ], + "generic": [] + } +} diff --git a/packages/nodes-base/nodes/Okta/Okta.node.ts b/packages/nodes-base/nodes/Okta/Okta.node.ts new file mode 100644 index 0000000000..550cffcd67 --- /dev/null +++ b/packages/nodes-base/nodes/Okta/Okta.node.ts @@ -0,0 +1,57 @@ +import type { INodeType, INodeTypeDescription } from 'n8n-workflow'; +import { NodeConnectionType } from 'n8n-workflow'; +import { userFields, userOperations } from './UserDescription'; +import { getUsers } from './UserFunctions'; + +export class Okta implements INodeType { + description: INodeTypeDescription = { + displayName: 'Okta', + name: 'okta', + icon: { light: 'file:Okta.svg', dark: 'file:Okta.dark.svg' }, + group: ['transform'], + version: 1, + subtitle: '={{$parameter["operation"] + ": " + $parameter["resource"]}}', + description: 'Use the Okta API', + defaults: { + name: 'Okta', + }, + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], + credentials: [ + { + name: 'oktaApi', + required: true, + }, + ], + requestDefaults: { + returnFullResponse: true, + baseURL: '={{$credentials.url.replace(new RegExp("/$"), "")}}', + headers: {}, + }, + properties: [ + { + displayName: 'Resource', + name: 'resource', + type: 'options', + noDataExpression: true, + options: [ + { + name: 'User', + value: 'user', + }, + ], + default: 'user', + }, + + // USER + ...userOperations, + ...userFields, + ], + }; + + methods = { + listSearch: { + getUsers, + }, + }; +} diff --git a/packages/nodes-base/nodes/Okta/Okta.svg b/packages/nodes-base/nodes/Okta/Okta.svg new file mode 100644 index 0000000000..4ba579621f --- /dev/null +++ b/packages/nodes-base/nodes/Okta/Okta.svg @@ -0,0 +1,3 @@ + + + diff --git a/packages/nodes-base/nodes/Okta/UserDescription.ts b/packages/nodes-base/nodes/Okta/UserDescription.ts new file mode 100644 index 0000000000..b10d580339 --- /dev/null +++ b/packages/nodes-base/nodes/Okta/UserDescription.ts @@ -0,0 +1,795 @@ +import type { INodeProperties } from 'n8n-workflow'; +import { getCursorPaginator, simplifyGetAllResponse, simplifyGetResponse } from './UserFunctions'; +const BASE_API_URL = '/api/v1/users/'; +export const userOperations: INodeProperties[] = [ + { + displayName: 'Operation', + name: 'operation', + type: 'options', + noDataExpression: true, + displayOptions: { + show: { + resource: ['user'], + }, + }, + options: [ + // Create Operation + { + name: 'Create', + value: 'create', + description: 'Create a new user', + routing: { + request: { + method: 'POST', + url: BASE_API_URL, + qs: { activate: '={{$parameter["activate"]}}' }, + returnFullResponse: true, + }, + }, + action: 'Create a new user', + }, + // Delete Operation + { + name: 'Delete', + value: 'delete', + description: 'Delete an existing user', + routing: { + request: { + method: 'DELETE', + url: '={{"/api/v1/users/" + $parameter["userId"]}}', + returnFullResponse: true, + }, + output: { + postReceive: [ + { + type: 'set', + properties: { + value: '={{ { "success": true } }}', + }, + }, + ], + }, + }, + action: 'Delete a user', + }, + // Get Operation + { + name: 'Get', + value: 'get', + description: 'Get details of a user', + routing: { + request: { + method: 'GET', + url: '={{"/api/v1/users/" + $parameter["userId"]}}', + returnFullResponse: true, + qs: {}, + }, + output: { + postReceive: [simplifyGetResponse], + }, + }, + action: 'Get a user', + }, + // Get All Operation + { + name: 'Get Many', + value: 'getAll', + description: 'Get many users', + routing: { + request: { + method: 'GET', + url: BASE_API_URL, + qs: { search: '={{$parameter["searchQuery"]}}' }, + returnFullResponse: true, + }, + output: { + postReceive: [simplifyGetAllResponse], + }, + send: { + paginate: true, + }, + operations: { + pagination: getCursorPaginator(), + }, + }, + action: 'Get many users', + }, + // Update Operation + { + name: 'Update', + value: 'update', + description: 'Update an existing user', + routing: { + request: { + method: 'POST', + url: '={{"/api/v1/users/" + $parameter["userId"]}}', + returnFullResponse: true, + }, + }, + action: 'Update a user', + }, + ], + default: 'getAll', + }, +]; +const mainProfileFields: INodeProperties[] = [ + { + displayName: 'First Name', + name: 'firstName', + type: 'string', + placeholder: 'e.g. Nathan', + default: '', + routing: { + send: { + property: 'profile.firstName', + type: 'body', + }, + }, + }, + { + displayName: 'Last Name', + name: 'lastName', + type: 'string', + placeholder: 'e.g. Smith', + default: '', + routing: { + send: { + property: 'profile.lastName', + type: 'body', + }, + }, + }, + { + displayName: 'Username', + name: 'login', + type: 'string', + placeholder: 'e.g. nathan@example.com', + hint: 'Unique identifier for the user, must be an email', + default: '', + routing: { + send: { + property: 'profile.login', + type: 'body', + }, + }, + }, + { + displayName: 'Email', + name: 'email', + type: 'string', + placeholder: 'e.g. nathan@example.com', + default: '', + routing: { + send: { + property: 'profile.email', + type: 'body', + }, + }, + }, +]; +const createFields: INodeProperties[] = [ + { + displayName: 'City', + name: 'city', + type: 'string', + default: '', + routing: { + send: { + property: 'profile.city', + type: 'body', + }, + }, + }, + { + displayName: 'Cost Center', + name: 'costCenter', + type: 'string', + default: '', + routing: { + send: { + property: 'profile.costCenter', + type: 'body', + }, + }, + }, + { + displayName: 'Country Code', + name: 'countryCode', + type: 'string', + default: '', + routing: { + send: { + property: 'profile.countryCode', + type: 'body', + }, + }, + }, + { + displayName: 'Department', + name: 'department', + type: 'string', + default: '', + routing: { + send: { + property: 'profile.department', + type: 'body', + }, + }, + }, + { + displayName: 'Display Name', + name: 'displayName', + type: 'string', + default: '', + routing: { + send: { + property: 'profile.displayName', + type: 'body', + }, + }, + }, + { + displayName: 'Division', + name: 'division', + type: 'string', + default: '', + routing: { + send: { + property: 'profile.division', + type: 'body', + }, + }, + }, + { + displayName: 'Employee Number', + name: 'employeeNumber', + type: 'string', + default: '', + routing: { + send: { + property: 'profile.employeeNumber', + type: 'body', + }, + }, + }, + { + displayName: 'Honorific Prefix', + name: 'honorificPrefix', + type: 'string', + default: '', + routing: { + send: { + property: 'profile.honorificPrefix', + type: 'body', + }, + }, + }, + { + displayName: 'Honorific Suffix', + name: 'honorificSuffix', + type: 'string', + default: '', + routing: { + send: { + property: 'profile.honorificSuffix', + type: 'body', + }, + }, + }, + { + displayName: 'Locale', + name: 'locale', + type: 'string', + default: '', + routing: { + send: { + property: 'profile.locale', + type: 'body', + }, + }, + }, + { + displayName: 'Manager', + name: 'manager', + type: 'string', + default: '', + routing: { + send: { + property: 'profile.manager', + type: 'body', + }, + }, + }, + { + displayName: 'ManagerId', + name: 'managerId', + type: 'string', + default: '', + routing: { + send: { + property: 'profile.managerId', + type: 'body', + }, + }, + }, + { + displayName: 'Middle Name', + name: 'middleName', + type: 'string', + default: '', + routing: { + send: { + property: 'profile.middleName', + type: 'body', + }, + }, + }, + { + displayName: 'Mobile Phone', + name: 'mobilePhone', + type: 'string', + default: '', + routing: { + send: { + property: 'profile.mobilePhone', + type: 'body', + }, + }, + }, + { + displayName: 'Nick Name', + name: 'nickName', + type: 'string', + default: '', + routing: { + send: { + property: 'profile.nickName', + type: 'body', + }, + }, + }, + { + displayName: 'Password', + name: 'password', + type: 'string', + typeOptions: { password: true }, + default: '', + routing: { + send: { + property: 'credentials.password.value', + type: 'body', + }, + }, + }, + { + displayName: 'Organization', + name: 'organization', + type: 'string', + default: '', + routing: { + send: { + property: 'profile.organization', + type: 'body', + }, + }, + }, + { + displayName: 'Postal Address', + name: 'postalAddress', + type: 'string', + default: '', + routing: { + send: { + property: 'profile.postalAddress', + type: 'body', + }, + }, + }, + { + displayName: 'Preferred Language', + name: 'preferredLanguage', + type: 'string', + default: '', + routing: { + send: { + property: 'profile.preferredLanguage', + type: 'body', + }, + }, + }, + { + displayName: 'Primary Phone', + name: 'primaryPhone', + type: 'string', + default: '', + routing: { + send: { + property: 'profile.primaryPhone', + type: 'body', + }, + }, + }, + { + displayName: 'Profile Url', + name: 'profileUrl', + type: 'string', + default: '', + routing: { + send: { + property: 'profile.profileUrl', + type: 'body', + }, + }, + }, + { + displayName: 'Recovery Question Answer', + name: 'recoveryQuestionAnswer', + type: 'string', + default: '', + routing: { + send: { + property: 'credentials.recovery_question.answer', + type: 'body', + }, + }, + }, + { + displayName: 'Recovery Question Question', + name: 'recoveryQuestionQuestion', + type: 'string', + default: '', + routing: { + send: { + property: 'credentials.recovery_question.question', + type: 'body', + }, + }, + }, + { + displayName: 'Second Email', + name: 'secondEmail', + type: 'string', + typeOptions: { email: true }, + default: '', + routing: { + send: { + property: 'profile.secondEmail', + type: 'body', + }, + }, + }, + { + displayName: 'State', + name: 'state', + type: 'string', + default: '', + routing: { + send: { + property: 'profile.state', + type: 'body', + }, + }, + }, + { + displayName: 'Street Address', + name: 'streetAddress', + type: 'string', + default: '', + routing: { + send: { + property: 'profile.streetAddress', + type: 'body', + }, + }, + }, + { + displayName: 'Timezone', + name: 'timezone', + type: 'string', + default: '', + routing: { + send: { + property: 'profile.timezone', + type: 'body', + }, + }, + }, + { + displayName: 'Title', + name: 'title', + type: 'string', + default: '', + routing: { + send: { + property: 'profile.title', + type: 'body', + }, + }, + }, + { + displayName: 'User Type', + name: 'userType', + type: 'string', + default: '', + routing: { + send: { + property: 'profile.userType', + type: 'body', + }, + }, + }, + { + displayName: 'Zip Code', + name: 'zipCode', + type: 'string', + default: '', + routing: { + send: { + property: 'profile.zipCode', + type: 'body', + }, + }, + }, +]; +const updateFields: INodeProperties[] = createFields + .concat(mainProfileFields) + .sort((a, b) => a.displayName.localeCompare(b.displayName)); + +export const userFields: INodeProperties[] = [ + // Fields for 'get', 'update', and 'delete' operations + + { + displayName: 'User', + name: 'userId', + type: 'resourceLocator', + default: { mode: 'list', value: '' }, + required: true, + modes: [ + { + displayName: 'From List', + name: 'list', + type: 'list', + placeholder: 'Select a user...', + typeOptions: { + searchListMethod: 'getUsers', + searchable: true, + }, + }, + { + displayName: 'By username', + name: 'login', + type: 'string', + placeholder: '', + }, + { + displayName: 'ID', + name: 'id', + type: 'string', + placeholder: 'e.g. 00u1abcd2345EfGHIjk6', + }, + ], + displayOptions: { + show: { + resource: ['user'], + operation: ['get', 'update', 'delete'], + }, + }, + description: 'The user you want to operate on. Choose from the list, or specify an ID.', + }, + // Fields specific to 'create' operation + { + displayName: 'First Name', + name: 'firstName', + type: 'string', + required: true, + placeholder: 'e.g. Nathan', + displayOptions: { + show: { + resource: ['user'], + operation: ['create'], + }, + }, + default: '', + routing: { + send: { + property: 'profile.firstName', + type: 'body', + }, + }, + }, + { + displayName: 'Last Name', + name: 'lastName', + type: 'string', + required: true, + placeholder: 'e.g. Smith', + displayOptions: { + show: { + resource: ['user'], + operation: ['create'], + }, + }, + default: '', + routing: { + send: { + property: 'profile.lastName', + type: 'body', + }, + }, + }, + { + displayName: 'Username', + name: 'login', + type: 'string', + required: true, + placeholder: 'e.g. nathan@example.com', + hint: 'Unique identifier for the user, must be an email', + displayOptions: { + show: { + resource: ['user'], + operation: ['create'], + }, + }, + default: '', + routing: { + send: { + property: 'profile.login', + type: 'body', + }, + }, + }, + { + displayName: 'Email', + name: 'email', + type: 'string', + required: true, + placeholder: 'e.g. nathan@example.com', + displayOptions: { + show: { + resource: ['user'], + operation: ['create'], + }, + }, + default: '', + routing: { + send: { + property: 'profile.email', + type: 'body', + }, + }, + }, + { + displayName: 'Activate', + name: 'activate', + type: 'boolean', + displayOptions: { + show: { + resource: ['user'], + operation: ['create'], + }, + }, + default: true, + description: 'Whether to activate the user and allow access to all assigned applications', + }, + { + displayName: 'Fields', + name: 'getCreateFields', + type: 'collection', + displayOptions: { + show: { + resource: ['user'], + operation: ['create'], + }, + }, + default: {}, + placeholder: 'Add field', + options: createFields, + }, + + // Fields for 'update' operations + { + displayName: 'Fields', + name: 'getUpdateFields', + type: 'collection', + displayOptions: { + show: { + resource: ['user'], + operation: ['update'], + }, + }, + default: {}, + placeholder: 'Add field', + options: updateFields, + }, + + // Fields specific to 'getAll' operation + { + displayName: 'Search Query', + name: 'searchQuery', + type: 'string', + placeholder: 'e.g. profile.lastName sw "Smi"', + hint: 'Filter users by using the allowed syntax. More info.', + displayOptions: { + show: { + resource: ['user'], + operation: ['getAll'], + }, + }, + default: '', + routing: { + request: { + qs: { + prefix: '={{$value}}', + }, + }, + }, + }, + { + displayName: 'Limit', + name: 'limit', + type: 'number', + displayOptions: { + show: { + resource: ['user'], + operation: ['getAll'], + returnAll: [false], + }, + }, + typeOptions: { + minValue: 1, + maxValue: 200, + }, + default: 20, + routing: { + send: { + type: 'query', + property: 'limit', + }, + output: { + maxResults: '={{$value}}', // Set maxResults to the value of current parameter + }, + }, + description: 'Max number of results to return', + }, + { + displayName: 'Return All', + name: 'returnAll', + type: 'boolean', + displayOptions: { + show: { + resource: ['user'], + operation: ['getAll'], + }, + }, + default: false, + description: 'Whether to return all results or only up to a given limit', + }, + // Fields for 'get' and 'getAll' operations + { + displayName: 'Simplify', + name: 'simplify', + type: 'boolean', + displayOptions: { + show: { + resource: ['user'], + operation: ['get', 'getAll'], + }, + }, + default: true, + description: 'Whether to return a simplified version of the response instead of the raw data', + }, + // Fields specific to 'delete' operation + { + displayName: 'Send Email', + name: 'sendEmail', + type: 'boolean', + displayOptions: { + show: { + resource: ['user'], + operation: ['delete'], + }, + }, + default: false, + description: 'Whether to send a deactivation email to the administrator', + }, +]; diff --git a/packages/nodes-base/nodes/Okta/UserFunctions.ts b/packages/nodes-base/nodes/Okta/UserFunctions.ts new file mode 100644 index 0000000000..6def8ea296 --- /dev/null +++ b/packages/nodes-base/nodes/Okta/UserFunctions.ts @@ -0,0 +1,170 @@ +import type { + DeclarativeRestApiSettings, + IDataObject, + IExecuteFunctions, + IExecutePaginationFunctions, + IExecuteSingleFunctions, + IHookFunctions, + IHttpRequestMethods, + IHttpRequestOptions, + ILoadOptionsFunctions, + IN8nHttpFullResponse, + INodeExecutionData, + INodeListSearchResult, + INodePropertyOptions, +} from 'n8n-workflow'; + +type OktaUser = { + status: string; + created: string; + activated: string; + lastLogin: string; + lastUpdated: string; + passwordChanged: string; + profile: { + login: string; + email: string; + firstName: string; + lastName: string; + }; + id: string; +}; + +export async function oktaApiRequest( + this: IExecuteFunctions | IExecuteSingleFunctions | IHookFunctions | ILoadOptionsFunctions, + method: IHttpRequestMethods, + resource: string, + body: IDataObject = {}, + qs: IDataObject = {}, + url?: string, + option: IDataObject = {}, +): Promise { + const credentials = await this.getCredentials('oktaApi'); + const baseUrl = `${credentials.url as string}/api/v1/${resource}`; + const options: IHttpRequestOptions = { + headers: { + 'Content-Type': 'application/json', + }, + method, + body: Object.keys(body).length ? body : undefined, + qs: Object.keys(qs).length ? qs : undefined, + url: url ?? baseUrl, + json: true, + ...option, + }; + return await (this.helpers.httpRequestWithAuthentication.call( + this, + 'oktaApi', + options, + ) as Promise); +} + +export async function getUsers( + this: ILoadOptionsFunctions, + filter?: string, +): Promise { + const responseData: OktaUser[] = await oktaApiRequest.call(this, 'GET', '/users/'); + const filteredUsers = responseData.filter((user) => { + if (!filter) return true; + const username = `${user.profile.login}`.toLowerCase(); + return username.includes(filter.toLowerCase()); + }); + const users: INodePropertyOptions[] = filteredUsers.map((user) => ({ + name: `${user.profile.login}`, + value: user.id, + })); + return { + results: users, + }; +} + +function simplifyOktaUser(item: OktaUser): IDataObject { + return { + id: item.id, + status: item.status, + created: item.created, + activated: item.activated, + lastLogin: item.lastLogin, + lastUpdated: item.lastUpdated, + passwordChanged: item.passwordChanged, + profile: { + firstName: item.profile.firstName, + lastName: item.profile.lastName, + login: item.profile.login, + email: item.profile.email, + }, + }; +} + +export async function simplifyGetAllResponse( + this: IExecuteSingleFunctions, + items: INodeExecutionData[], + _response: IN8nHttpFullResponse, +): Promise { + if (items.length === 0) return items; + const simplify = this.getNodeParameter('simplify'); + if (!simplify) + return ((items[0].json as unknown as IDataObject[]) ?? []).map((item: IDataObject) => ({ + json: item, + headers: _response.headers, + })) as INodeExecutionData[]; + let simplifiedItems: INodeExecutionData[] = []; + if (items[0].json) { + const jsonArray = items[0].json as unknown; + simplifiedItems = (jsonArray as OktaUser[]).map((item: OktaUser) => { + const simplifiedItem = simplifyOktaUser(item); + return { + json: simplifiedItem, + headers: _response.headers, + }; + }); + } + + return simplifiedItems; +} + +export async function simplifyGetResponse( + this: IExecuteSingleFunctions, + items: INodeExecutionData[], + _response: IN8nHttpFullResponse, +): Promise { + const simplify = this.getNodeParameter('simplify'); + if (!simplify) return items; + const item = items[0].json as OktaUser; + const simplifiedItem = simplifyOktaUser(item); + + return [ + { + json: simplifiedItem, + }, + ] as INodeExecutionData[]; +} + +export const getCursorPaginator = () => { + return async function cursorPagination( + this: IExecutePaginationFunctions, + requestOptions: DeclarativeRestApiSettings.ResultOptions, + ): Promise { + if (!requestOptions.options.qs) { + requestOptions.options.qs = {}; + } + + let items: INodeExecutionData[] = []; + let responseData: INodeExecutionData[]; + let nextCursor: string | undefined = undefined; + const returnAll = this.getNodeParameter('returnAll', true) as boolean; + do { + requestOptions.options.qs.limit = 200; + requestOptions.options.qs.after = nextCursor; + responseData = await this.makeRoutingRequest(requestOptions); + if (responseData.length > 0) { + const headers = responseData[responseData.length - 1].headers; + const headersLink = (headers as IDataObject)?.link as string | undefined; + nextCursor = headersLink?.split('after=')[1]?.split('&')[0]?.split('>')[0]; + } + items = items.concat(responseData); + } while (returnAll && nextCursor); + + return items; + }; +}; diff --git a/packages/nodes-base/nodes/Okta/test/UserFunctions.test.ts b/packages/nodes-base/nodes/Okta/test/UserFunctions.test.ts new file mode 100644 index 0000000000..9e5262db67 --- /dev/null +++ b/packages/nodes-base/nodes/Okta/test/UserFunctions.test.ts @@ -0,0 +1,375 @@ +import type { + DeclarativeRestApiSettings, + IDataObject, + IExecuteFunctions, + IExecutePaginationFunctions, + IExecuteSingleFunctions, + ILoadOptionsFunctions, + IN8nHttpFullResponse, + INodeExecutionData, +} from 'n8n-workflow'; +import { + getCursorPaginator, + getUsers, + oktaApiRequest, + simplifyGetAllResponse, + simplifyGetResponse, +} from '../UserFunctions'; + +describe('oktaApiRequest', () => { + const mockGetCredentials = jest.fn(); + const mockHttpRequestWithAuthentication = jest.fn(); + + const mockContext = { + getCredentials: mockGetCredentials, + helpers: { + httpRequestWithAuthentication: mockHttpRequestWithAuthentication, + }, + } as unknown as IExecuteFunctions; + + beforeEach(() => { + mockGetCredentials.mockClear(); + mockHttpRequestWithAuthentication.mockClear(); + }); + + it('should make a GET request and return data', async () => { + mockGetCredentials.mockResolvedValue({ url: 'https://okta.example.com' }); + mockHttpRequestWithAuthentication.mockResolvedValue([ + { profile: { firstName: 'John', lastName: 'Doe' }, id: '1' }, + ]); + + const response = await oktaApiRequest.call(mockContext, 'GET', 'users'); + + expect(mockGetCredentials).toHaveBeenCalledWith('oktaApi'); + expect(mockHttpRequestWithAuthentication).toHaveBeenCalledWith('oktaApi', { + headers: { 'Content-Type': 'application/json' }, + method: 'GET', + body: undefined, + qs: undefined, + url: 'https://okta.example.com/api/v1/users', + json: true, + }); + expect(response).toEqual([{ profile: { firstName: 'John', lastName: 'Doe' }, id: '1' }]); + }); + + // Tests for error handling + it('should handle errors from oktaApiRequest', async () => { + mockHttpRequestWithAuthentication.mockRejectedValue(new Error('Network error')); + + await expect(oktaApiRequest.call(mockContext, 'GET', 'users')).rejects.toThrow('Network error'); + }); +}); + +describe('getUsers', () => { + const mockOktaApiRequest = jest.fn(); + const mockContext = { + getCredentials: jest.fn().mockResolvedValue({ url: 'https://okta.example.com' }), + helpers: { + httpRequestWithAuthentication: mockOktaApiRequest, + }, + } as unknown as ILoadOptionsFunctions; + + beforeEach(() => { + mockOktaApiRequest.mockClear(); + }); + + it('should return users with filtering', async () => { + mockOktaApiRequest.mockResolvedValue([ + { profile: { login: 'John@example.com' }, id: '1' }, + { profile: { login: 'Jane@example.com' }, id: '2' }, + ]); + + const response = await getUsers.call(mockContext, 'john'); + + expect(response).toEqual({ + results: [{ name: 'John@example.com', value: '1' }], + }); + }); + + it('should return all users when no filter is applied', async () => { + mockOktaApiRequest.mockResolvedValue([ + { profile: { login: 'John@example.com' }, id: '1' }, + { profile: { login: 'Jane@example.com' }, id: '2' }, + ]); + + const response = await getUsers.call(mockContext); + + expect(response).toEqual({ + results: [ + { name: 'John@example.com', value: '1' }, + { name: 'Jane@example.com', value: '2' }, + ], + }); + }); + + // Tests for empty results + it('should handle empty results from oktaApiRequest', async () => { + mockOktaApiRequest.mockResolvedValue([]); + + const response = await getUsers.call(mockContext); + + expect(response).toEqual({ + results: [], + }); + }); +}); + +describe('simplifyGetAllResponse', () => { + const mockGetNodeParameter = jest.fn(); + const mockContext = { + getNodeParameter: mockGetNodeParameter, + } as unknown as IExecuteSingleFunctions; + const mockResponse = jest.fn() as unknown as IN8nHttpFullResponse; + + const items: INodeExecutionData[] = [ + { + json: [ + { + id: '01', + status: 'ACTIVE', + created: '2023-01-01T00:00:00.000Z', + activated: '2023-01-01T00:00:01.000Z', + lastLogin: null, + lastUpdated: '2023-01-01T00:00:01.000Z', + passwordChanged: null, + some_item: 'some_value', + profile: { + firstName: 'John', + lastName: 'Doe', + login: 'john.doe@example.com', + email: 'john.doe@example.com', + some_profile_item: 'some_profile_value', + }, + }, + ] as unknown as IDataObject, + }, + ]; + + beforeEach(() => { + mockGetNodeParameter.mockClear(); + }); + + it('should return items unchanged when simplify parameter is not set', async () => { + mockGetNodeParameter.mockReturnValueOnce(false); + + const expectedResult: INodeExecutionData[] = [ + { + json: { + id: '01', + status: 'ACTIVE', + created: '2023-01-01T00:00:00.000Z', + activated: '2023-01-01T00:00:01.000Z', + lastLogin: null, + lastUpdated: '2023-01-01T00:00:01.000Z', + passwordChanged: null, + some_item: 'some_value', + profile: { + firstName: 'John', + lastName: 'Doe', + login: 'john.doe@example.com', + email: 'john.doe@example.com', + some_profile_item: 'some_profile_value', + }, + }, + }, + ]; + + const result = await simplifyGetAllResponse.call(mockContext, items, mockResponse); + expect(result).toEqual(expectedResult); + }); + + it('should simplify items correctly', async () => { + mockGetNodeParameter.mockReturnValueOnce(true); + + const expectedResult: INodeExecutionData[] = [ + { + json: { + id: '01', + status: 'ACTIVE', + created: '2023-01-01T00:00:00.000Z', + activated: '2023-01-01T00:00:01.000Z', + lastLogin: null, + lastUpdated: '2023-01-01T00:00:01.000Z', + passwordChanged: null, + profile: { + firstName: 'John', + lastName: 'Doe', + login: 'john.doe@example.com', + email: 'john.doe@example.com', + }, + }, + }, + ]; + + const result = await simplifyGetAllResponse.call(mockContext, items, mockResponse); + expect(result).toEqual(expectedResult); + }); + + it('should return an empty array when items is an empty array', async () => { + mockGetNodeParameter.mockReturnValueOnce(false); + + const emptyArrayItems: INodeExecutionData[] = []; + + const result = await simplifyGetAllResponse.call(mockContext, emptyArrayItems, mockResponse); + expect(result).toEqual([]); + }); +}); + +describe('simplifyGetResponse', () => { + const mockGetNodeParameter = jest.fn(); + const mockContext = { + getNodeParameter: mockGetNodeParameter, + } as unknown as IExecuteSingleFunctions; + const mockResponse = jest.fn() as unknown as IN8nHttpFullResponse; + + const items: INodeExecutionData[] = [ + { + json: { + id: '01', + status: 'ACTIVE', + created: '2023-01-01T00:00:00.000Z', + activated: '2023-01-01T00:00:01.000Z', + lastLogin: null, + lastUpdated: '2023-01-01T00:00:01.000Z', + passwordChanged: null, + some_item: 'some_value', + profile: { + firstName: 'John', + lastName: 'Doe', + login: 'john.doe@example.com', + email: 'john.doe@example.com', + some_profile_item: 'some_profile_value', + }, + } as unknown as IDataObject, + }, + ]; + beforeEach(() => { + mockGetNodeParameter.mockClear(); + }); + + it('should return the item unchanged when simplify parameter is not set', async () => { + mockGetNodeParameter.mockReturnValueOnce(false); + + const expectedResult: INodeExecutionData[] = [ + { + json: { + id: '01', + status: 'ACTIVE', + created: '2023-01-01T00:00:00.000Z', + activated: '2023-01-01T00:00:01.000Z', + lastLogin: null, + lastUpdated: '2023-01-01T00:00:01.000Z', + passwordChanged: null, + some_item: 'some_value', + profile: { + firstName: 'John', + lastName: 'Doe', + login: 'john.doe@example.com', + email: 'john.doe@example.com', + some_profile_item: 'some_profile_value', + }, + }, + }, + ]; + + const result = await simplifyGetResponse.call(mockContext, items, mockResponse); + expect(result).toEqual(expectedResult); + }); + + it('should simplify the item correctly', async () => { + mockGetNodeParameter.mockReturnValueOnce(true); + + const expectedResult: INodeExecutionData[] = [ + { + json: { + id: '01', + status: 'ACTIVE', + created: '2023-01-01T00:00:00.000Z', + activated: '2023-01-01T00:00:01.000Z', + lastLogin: null, + lastUpdated: '2023-01-01T00:00:01.000Z', + passwordChanged: null, + profile: { + firstName: 'John', + lastName: 'Doe', + login: 'john.doe@example.com', + email: 'john.doe@example.com', + }, + }, + }, + ]; + + const result = await simplifyGetResponse.call(mockContext, items, mockResponse); + expect(result).toEqual(expectedResult); + }); +}); +describe('getCursorPaginator', () => { + let mockContext: IExecutePaginationFunctions; + let mockRequestOptions: DeclarativeRestApiSettings.ResultOptions; + const baseUrl = 'https://api.example.com'; + + beforeEach(() => { + mockContext = { + getNodeParameter: jest.fn(), + makeRoutingRequest: jest.fn(), + } as unknown as IExecutePaginationFunctions; + + mockRequestOptions = { + options: { + qs: {}, + }, + } as DeclarativeRestApiSettings.ResultOptions; + }); + + it('should return all items when returnAll is true', async () => { + const mockResponseData: INodeExecutionData[] = [ + { json: { id: 1 }, headers: { link: `<${baseUrl}?after=cursor1>` } }, + { json: { id: 2 }, headers: { link: `<${baseUrl}?after=cursor2>` } }, + { json: { id: 3 }, headers: { link: `<${baseUrl}>` } }, + ]; + + (mockContext.getNodeParameter as jest.Mock).mockReturnValue(true); + (mockContext.makeRoutingRequest as jest.Mock) + .mockResolvedValueOnce([mockResponseData[0]]) + .mockResolvedValueOnce([mockResponseData[1]]) + .mockResolvedValueOnce([mockResponseData[2]]); + + const paginator = getCursorPaginator().bind(mockContext); + const result = await paginator(mockRequestOptions); + + expect(result).toEqual(mockResponseData); + expect(mockContext.getNodeParameter).toHaveBeenCalledWith('returnAll', true); + expect(mockContext.makeRoutingRequest).toHaveBeenCalledTimes(3); + }); + + it('should return items until nextCursor is undefined', async () => { + const mockResponseData: INodeExecutionData[] = [ + { json: { id: 1 }, headers: { link: `<${baseUrl}?after=cursor1>` } }, + { json: { id: 2 }, headers: { link: `<${baseUrl}>` } }, + ]; + + (mockContext.getNodeParameter as jest.Mock).mockReturnValue(true); + (mockContext.makeRoutingRequest as jest.Mock) + .mockResolvedValueOnce([mockResponseData[0]]) + .mockResolvedValueOnce([mockResponseData[1]]); + + const paginator = getCursorPaginator().bind(mockContext); + const result = await paginator(mockRequestOptions); + + expect(result).toEqual(mockResponseData); + expect(mockContext.getNodeParameter).toHaveBeenCalledWith('returnAll', true); + expect(mockContext.makeRoutingRequest).toHaveBeenCalledTimes(2); + }); + + it('should handle empty response data', async () => { + (mockContext.getNodeParameter as jest.Mock).mockReturnValue(true); + (mockContext.makeRoutingRequest as jest.Mock).mockResolvedValue([]); + + const paginator = getCursorPaginator().bind(mockContext); + const result = await paginator(mockRequestOptions); + + expect(result).toEqual([]); + expect(mockContext.getNodeParameter).toHaveBeenCalledWith('returnAll', true); + expect(mockContext.makeRoutingRequest).toHaveBeenCalledTimes(1); + }); +}); diff --git a/packages/nodes-base/nodes/OneSimpleApi/OneSimpleApi.node.json b/packages/nodes-base/nodes/OneSimpleApi/OneSimpleApi.node.json index 1de79188c3..37869a3615 100644 --- a/packages/nodes-base/nodes/OneSimpleApi/OneSimpleApi.node.json +++ b/packages/nodes-base/nodes/OneSimpleApi/OneSimpleApi.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/oneSimpleApi/" + "url": "https://docs.n8n.io/integrations/builtin/credentials/oneSimpleApi/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/OneSimpleApi/OneSimpleApi.node.ts b/packages/nodes-base/nodes/OneSimpleApi/OneSimpleApi.node.ts index b678b2d51d..e04dbaaedd 100644 --- a/packages/nodes-base/nodes/OneSimpleApi/OneSimpleApi.node.ts +++ b/packages/nodes-base/nodes/OneSimpleApi/OneSimpleApi.node.ts @@ -5,6 +5,7 @@ import type { INodeType, INodeTypeDescription, } from 'n8n-workflow'; +import { NodeConnectionType } from 'n8n-workflow'; import { oneSimpleApiRequest } from './GenericFunctions'; @@ -19,8 +20,8 @@ export class OneSimpleApi implements INodeType { defaults: { name: 'One Simple API', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'oneSimpleApi', @@ -222,7 +223,7 @@ export class OneSimpleApi implements INodeType { displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, displayOptions: { show: { @@ -342,7 +343,7 @@ export class OneSimpleApi implements INodeType { displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, displayOptions: { show: { @@ -439,7 +440,7 @@ export class OneSimpleApi implements INodeType { displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, displayOptions: { show: { @@ -603,7 +604,7 @@ export class OneSimpleApi implements INodeType { displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, displayOptions: { show: { @@ -864,7 +865,7 @@ export class OneSimpleApi implements INodeType { returnData.push(responseData as IDataObject); } } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push({ error: error.message }); continue; } diff --git a/packages/nodes-base/nodes/Onfleet/Onfleet.node.json b/packages/nodes-base/nodes/Onfleet/Onfleet.node.json index d6ca8f4fed..495b881b0d 100644 --- a/packages/nodes-base/nodes/Onfleet/Onfleet.node.json +++ b/packages/nodes-base/nodes/Onfleet/Onfleet.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/onfleet/" + "url": "https://docs.n8n.io/integrations/builtin/credentials/onfleet/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Onfleet/Onfleet.node.ts b/packages/nodes-base/nodes/Onfleet/Onfleet.node.ts index 16c135383c..fa6848da69 100644 --- a/packages/nodes-base/nodes/Onfleet/Onfleet.node.ts +++ b/packages/nodes-base/nodes/Onfleet/Onfleet.node.ts @@ -1,13 +1,14 @@ -import type { - IExecuteFunctions, - ICredentialsDecrypted, - ICredentialTestFunctions, - IDataObject, - INodeCredentialTestResult, - INodeExecutionData, - INodeType, - INodeTypeDescription, - IRequestOptions, +import { + type IExecuteFunctions, + type ICredentialsDecrypted, + type ICredentialTestFunctions, + type IDataObject, + type INodeCredentialTestResult, + type INodeExecutionData, + type INodeType, + type INodeTypeDescription, + type IRequestOptions, + NodeConnectionType, } from 'n8n-workflow'; import { taskFields, taskOperations } from './descriptions/TaskDescription'; @@ -48,8 +49,8 @@ export class Onfleet implements INodeType { defaults: { name: 'Onfleet', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'onfleetApi', diff --git a/packages/nodes-base/nodes/Onfleet/Onfleet.ts b/packages/nodes-base/nodes/Onfleet/Onfleet.ts index 1c49d8908c..b5c17186c5 100644 --- a/packages/nodes-base/nodes/Onfleet/Onfleet.ts +++ b/packages/nodes-base/nodes/Onfleet/Onfleet.ts @@ -879,7 +879,7 @@ export class Onfleet { } } catch (error) { //@ts-ignore - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { responseData.push({ error: (error as IDataObject).toString() }); continue; } @@ -923,7 +923,7 @@ export class Onfleet { responseData.push(await onfleetApiRequest.call(this, 'GET', path)); } } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { responseData.push({ error: (error as IDataObject).toString() }); continue; } @@ -965,7 +965,7 @@ export class Onfleet { responseData.push(await onfleetApiRequest.call(this, 'GET', path)); } } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { responseData.push({ error: (error as IDataObject).toString() }); continue; } @@ -1022,7 +1022,7 @@ export class Onfleet { responseData.push(await onfleetApiRequest.call(this, 'GET', path)); } } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { responseData.push({ error: (error as IDataObject).toString() }); continue; } @@ -1085,7 +1085,7 @@ export class Onfleet { responseData.push({ success: true }); } } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { responseData.push({ error: (error as IDataObject).toString() }); continue; } @@ -1140,7 +1140,7 @@ export class Onfleet { responseData.push(await onfleetApiRequest.call(this, 'PUT', path, hubData)); } } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { responseData.push({ error: (error as IDataObject).toString() }); continue; } @@ -1259,7 +1259,7 @@ export class Onfleet { responseData.push(await onfleetApiRequest.call(this, 'POST', path, workerSchedule)); } } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { responseData.push({ error: (error as IDataObject).toString() }); continue; } @@ -1308,7 +1308,7 @@ export class Onfleet { responseData.push({ success: true }); } } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { responseData.push({ error: (error as IDataObject).toString() }); continue; } @@ -1366,7 +1366,7 @@ export class Onfleet { responseData.push(await onfleetApiRequest.call(this, 'PUT', path, { tasks, ...options })); } } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { responseData.push({ error: (error as IDataObject).toString() }); continue; } @@ -1462,7 +1462,7 @@ export class Onfleet { responseData.push(await onfleetApiRequest.call(this, 'POST', path, teamAutoDispatch)); } } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { responseData.push({ error: (error as IDataObject).toString() }); continue; } diff --git a/packages/nodes-base/nodes/Onfleet/OnfleetTrigger.node.json b/packages/nodes-base/nodes/Onfleet/OnfleetTrigger.node.json index f0d6fd3e1f..ce88806cd6 100644 --- a/packages/nodes-base/nodes/Onfleet/OnfleetTrigger.node.json +++ b/packages/nodes-base/nodes/Onfleet/OnfleetTrigger.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/onfleet/" + "url": "https://docs.n8n.io/integrations/builtin/credentials/onfleet/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Onfleet/OnfleetTrigger.node.ts b/packages/nodes-base/nodes/Onfleet/OnfleetTrigger.node.ts index 3735a852df..24a1079cb4 100644 --- a/packages/nodes-base/nodes/Onfleet/OnfleetTrigger.node.ts +++ b/packages/nodes-base/nodes/Onfleet/OnfleetTrigger.node.ts @@ -7,7 +7,7 @@ import type { IWebhookResponseData, JsonObject, } from 'n8n-workflow'; -import { NodeApiError, NodeOperationError } from 'n8n-workflow'; +import { NodeApiError, NodeConnectionType, NodeOperationError } from 'n8n-workflow'; import { eventDisplay, eventNameField } from './descriptions/OnfleetWebhookDescription'; @@ -28,7 +28,7 @@ export class OnfleetTrigger implements INodeType { name: 'Onfleet Trigger', }, inputs: [], - outputs: ['main'], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'onfleetApi', diff --git a/packages/nodes-base/nodes/Onfleet/descriptions/ContainerDescription.ts b/packages/nodes-base/nodes/Onfleet/descriptions/ContainerDescription.ts index b309c8cc96..fd081bb886 100644 --- a/packages/nodes-base/nodes/Onfleet/descriptions/ContainerDescription.ts +++ b/packages/nodes-base/nodes/Onfleet/descriptions/ContainerDescription.ts @@ -170,7 +170,7 @@ export const containerFields: INodeProperties[] = [ displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, displayOptions: { show: { diff --git a/packages/nodes-base/nodes/Onfleet/descriptions/HubDescription.ts b/packages/nodes-base/nodes/Onfleet/descriptions/HubDescription.ts index 9d05ee8d5b..62bd943085 100644 --- a/packages/nodes-base/nodes/Onfleet/descriptions/HubDescription.ts +++ b/packages/nodes-base/nodes/Onfleet/descriptions/HubDescription.ts @@ -54,7 +54,7 @@ const teamsField = { }, default: [], description: - 'These are the teams that this Hub will be assigned to. Choose from the list, or specify IDs using an expression.', + 'These are the teams that this Hub will be assigned to. Choose from the list, or specify IDs using an expression.', } as INodeProperties; export const hubFields: INodeProperties[] = [ diff --git a/packages/nodes-base/nodes/Onfleet/descriptions/TeamDescription.ts b/packages/nodes-base/nodes/Onfleet/descriptions/TeamDescription.ts index 0c77be1af2..e42d6ff22d 100644 --- a/packages/nodes-base/nodes/Onfleet/descriptions/TeamDescription.ts +++ b/packages/nodes-base/nodes/Onfleet/descriptions/TeamDescription.ts @@ -76,7 +76,7 @@ const workersField = { }, default: [], description: - 'A list of workers. Choose from the list, or specify IDs using an expression.', + 'A list of workers. Choose from the list, or specify IDs using an expression.', } as INodeProperties; const managersField = { @@ -88,7 +88,7 @@ const managersField = { }, default: [], description: - 'A list of managing administrators. Choose from the list, or specify IDs using an expression.', + 'A list of managing administrators. Choose from the list, or specify IDs using an expression.', } as INodeProperties; const hubField = { @@ -100,7 +100,7 @@ const hubField = { }, default: '', description: - 'The team\'s hub. Choose from the list, or specify an ID using an expression.', + 'The team\'s hub. Choose from the list, or specify an ID using an expression.', } as INodeProperties; const enableSelfAssignmentField = { diff --git a/packages/nodes-base/nodes/Onfleet/descriptions/WorkerDescription.ts b/packages/nodes-base/nodes/Onfleet/descriptions/WorkerDescription.ts index ae919e7cae..760999b7e7 100644 --- a/packages/nodes-base/nodes/Onfleet/descriptions/WorkerDescription.ts +++ b/packages/nodes-base/nodes/Onfleet/descriptions/WorkerDescription.ts @@ -161,7 +161,7 @@ const teamsField = { }, default: [], description: - 'One or more teams of which the worker is a member. Choose from the list, or specify IDs using an expression.', + 'One or more teams of which the worker is a member. Choose from the list, or specify IDs using an expression.', } as INodeProperties; const teamsFilterField = { @@ -173,7 +173,7 @@ const teamsFilterField = { }, default: [], description: - 'A list of the teams that workers must be part of. Choose from the list, or specify IDs using an expression.', + 'A list of the teams that workers must be part of. Choose from the list, or specify IDs using an expression.', } as INodeProperties; const statesFilterField = { @@ -352,7 +352,7 @@ const scheduleTimezoneField = { }, default: '', description: - 'A valid timezone. Choose from the list, or specify an ID using an expression.', + 'A valid timezone. Choose from the list, or specify an ID using an expression.', } as INodeProperties; const scheduleStartField = { diff --git a/packages/nodes-base/nodes/OpenAi/ChatDescription.ts b/packages/nodes-base/nodes/OpenAi/ChatDescription.ts index 6bbea27f16..2b0ef3e8df 100644 --- a/packages/nodes-base/nodes/OpenAi/ChatDescription.ts +++ b/packages/nodes-base/nodes/OpenAi/ChatDescription.ts @@ -265,7 +265,7 @@ const sharedOperations: INodeProperties[] = [ { displayName: 'Options', name: 'options', - placeholder: 'Add Option', + placeholder: 'Add option', description: 'Additional options to add', type: 'collection', default: {}, diff --git a/packages/nodes-base/nodes/OpenAi/ImageDescription.ts b/packages/nodes-base/nodes/OpenAi/ImageDescription.ts index ca26967525..1cb5ceb89d 100644 --- a/packages/nodes-base/nodes/OpenAi/ImageDescription.ts +++ b/packages/nodes-base/nodes/OpenAi/ImageDescription.ts @@ -242,7 +242,7 @@ const createOperations: INodeProperties[] = [ { displayName: 'Options', name: 'options', - placeholder: 'Add Option', + placeholder: 'Add option', description: 'Additional options to add', type: 'collection', default: {}, diff --git a/packages/nodes-base/nodes/OpenAi/OpenAi.node.ts b/packages/nodes-base/nodes/OpenAi/OpenAi.node.ts index c7db40837a..dd2d221868 100644 --- a/packages/nodes-base/nodes/OpenAi/OpenAi.node.ts +++ b/packages/nodes-base/nodes/OpenAi/OpenAi.node.ts @@ -1,4 +1,5 @@ import type { INodeType, INodeTypeDescription } from 'n8n-workflow'; +import { NodeConnectionType } from 'n8n-workflow'; import { oldVersionNotice } from '../../utils/descriptions'; import { imageFields, imageOperations } from './ImageDescription'; import { textFields, textOperations } from './TextDescription'; @@ -17,8 +18,8 @@ export class OpenAi implements INodeType { defaults: { name: 'OpenAI', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'openAiApi', diff --git a/packages/nodes-base/nodes/OpenAi/TextDescription.ts b/packages/nodes-base/nodes/OpenAi/TextDescription.ts index 22d8b6a18c..30b533e90e 100644 --- a/packages/nodes-base/nodes/OpenAi/TextDescription.ts +++ b/packages/nodes-base/nodes/OpenAi/TextDescription.ts @@ -353,7 +353,7 @@ const sharedOperations: INodeProperties[] = [ { displayName: 'Options', name: 'options', - placeholder: 'Add Option', + placeholder: 'Add option', description: 'Additional options to add', type: 'collection', default: {}, diff --git a/packages/nodes-base/nodes/OpenThesaurus/OpenThesaurus.node.ts b/packages/nodes-base/nodes/OpenThesaurus/OpenThesaurus.node.ts index c2e2f0a228..0e2481f625 100644 --- a/packages/nodes-base/nodes/OpenThesaurus/OpenThesaurus.node.ts +++ b/packages/nodes-base/nodes/OpenThesaurus/OpenThesaurus.node.ts @@ -5,6 +5,7 @@ import type { INodeType, INodeTypeDescription, } from 'n8n-workflow'; +import { NodeConnectionType } from 'n8n-workflow'; import { openThesaurusApiRequest } from './GenericFunctions'; @@ -21,8 +22,8 @@ export class OpenThesaurus implements INodeType { defaults: { name: 'OpenThesaurus', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], properties: [ { displayName: 'Operation', @@ -56,7 +57,7 @@ export class OpenThesaurus implements INodeType { displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Options', + placeholder: 'Add option', displayOptions: { show: { operation: ['getSynonyms'], @@ -172,7 +173,7 @@ export class OpenThesaurus implements INodeType { returnData.push(...executionData); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { const executionErrorData = this.helpers.constructExecutionMetaData( this.helpers.returnJsonArray({ error: error.message }), { itemData: { item: i } }, diff --git a/packages/nodes-base/nodes/OpenWeatherMap/OpenWeatherMap.node.json b/packages/nodes-base/nodes/OpenWeatherMap/OpenWeatherMap.node.json index abe36d2585..75d4e81356 100644 --- a/packages/nodes-base/nodes/OpenWeatherMap/OpenWeatherMap.node.json +++ b/packages/nodes-base/nodes/OpenWeatherMap/OpenWeatherMap.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/openWeatherMap" + "url": "https://docs.n8n.io/integrations/builtin/credentials/openWeatherMap/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/OpenWeatherMap/OpenWeatherMap.node.ts b/packages/nodes-base/nodes/OpenWeatherMap/OpenWeatherMap.node.ts index c9d58f8ea5..c5766b5df8 100644 --- a/packages/nodes-base/nodes/OpenWeatherMap/OpenWeatherMap.node.ts +++ b/packages/nodes-base/nodes/OpenWeatherMap/OpenWeatherMap.node.ts @@ -7,7 +7,7 @@ import type { JsonObject, IRequestOptions, } from 'n8n-workflow'; -import { NodeApiError, NodeOperationError } from 'n8n-workflow'; +import { NodeApiError, NodeConnectionType, NodeOperationError } from 'n8n-workflow'; export class OpenWeatherMap implements INodeType { description: INodeTypeDescription = { @@ -20,8 +20,8 @@ export class OpenWeatherMap implements INodeType { defaults: { name: 'OpenWeatherMap', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'openWeatherMapApi', @@ -278,7 +278,7 @@ export class OpenWeatherMap implements INodeType { ); returnData.push(...executionData); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push({ json: { error: error.message } }); continue; } diff --git a/packages/nodes-base/nodes/Orbit/ActivityDescription.ts b/packages/nodes-base/nodes/Orbit/ActivityDescription.ts index b37055b14e..e5adf53766 100644 --- a/packages/nodes-base/nodes/Orbit/ActivityDescription.ts +++ b/packages/nodes-base/nodes/Orbit/ActivityDescription.ts @@ -38,11 +38,11 @@ export const activityFields: INodeProperties[] = [ name: 'workspaceId', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getWorkspaces', }, - default: '', + default: 'Deprecated', required: true, displayOptions: { show: { @@ -97,9 +97,9 @@ export const activityFields: INodeProperties[] = [ typeOptions: { loadOptionsMethod: 'getActivityTypes', }, - default: '', + default: 'Deprecated', description: - 'A user-defined way to group activities of the same nature. Choose from the list, or specify an ID using an expression.', + 'A user-defined way to group activities of the same nature. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Description', @@ -147,11 +147,11 @@ export const activityFields: INodeProperties[] = [ name: 'workspaceId', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getWorkspaces', }, - default: '', + default: 'Deprecated', required: true, displayOptions: { show: { diff --git a/packages/nodes-base/nodes/Orbit/MemberDescription.ts b/packages/nodes-base/nodes/Orbit/MemberDescription.ts index 6de1470f01..4015ac878d 100644 --- a/packages/nodes-base/nodes/Orbit/MemberDescription.ts +++ b/packages/nodes-base/nodes/Orbit/MemberDescription.ts @@ -62,11 +62,11 @@ export const memberFields: INodeProperties[] = [ name: 'workspaceId', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getWorkspaces', }, - default: '', + default: 'Deprecated', required: true, displayOptions: { show: { @@ -97,11 +97,11 @@ export const memberFields: INodeProperties[] = [ name: 'workspaceId', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getWorkspaces', }, - default: '', + default: 'Deprecated', required: true, displayOptions: { show: { @@ -147,11 +147,11 @@ export const memberFields: INodeProperties[] = [ name: 'workspaceId', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getWorkspaces', }, - default: '', + default: 'Deprecated', required: true, displayOptions: { show: { @@ -210,7 +210,7 @@ export const memberFields: INodeProperties[] = [ displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, displayOptions: { show: { @@ -253,11 +253,11 @@ export const memberFields: INodeProperties[] = [ name: 'workspaceId', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getWorkspaces', }, - default: '', + default: 'Deprecated', required: true, displayOptions: { show: { @@ -394,11 +394,11 @@ export const memberFields: INodeProperties[] = [ name: 'workspaceId', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getWorkspaces', }, - default: '', + default: 'Deprecated', required: true, displayOptions: { show: { @@ -524,11 +524,11 @@ export const memberFields: INodeProperties[] = [ name: 'workspaceId', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getWorkspaces', }, - default: '', + default: 'Deprecated', required: true, displayOptions: { show: { diff --git a/packages/nodes-base/nodes/Orbit/NoteDescription.ts b/packages/nodes-base/nodes/Orbit/NoteDescription.ts index 751e7fd23c..a64eccedb1 100644 --- a/packages/nodes-base/nodes/Orbit/NoteDescription.ts +++ b/packages/nodes-base/nodes/Orbit/NoteDescription.ts @@ -44,11 +44,11 @@ export const noteFields: INodeProperties[] = [ name: 'workspaceId', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getWorkspaces', }, - default: '', + default: 'Deprecated', required: true, displayOptions: { show: { @@ -92,11 +92,11 @@ export const noteFields: INodeProperties[] = [ name: 'workspaceId', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getWorkspaces', }, - default: '', + default: 'Deprecated', required: true, displayOptions: { show: { @@ -170,11 +170,11 @@ export const noteFields: INodeProperties[] = [ name: 'workspaceId', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getWorkspaces', }, - default: '', + default: 'Deprecated', required: true, displayOptions: { show: { diff --git a/packages/nodes-base/nodes/Orbit/Orbit.node.json b/packages/nodes-base/nodes/Orbit/Orbit.node.json index 143d6c436e..84710b6828 100644 --- a/packages/nodes-base/nodes/Orbit/Orbit.node.json +++ b/packages/nodes-base/nodes/Orbit/Orbit.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/orbit" + "url": "https://docs.n8n.io/integrations/builtin/credentials/orbit/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Orbit/Orbit.node.ts b/packages/nodes-base/nodes/Orbit/Orbit.node.ts index 2949205423..81141b3be4 100644 --- a/packages/nodes-base/nodes/Orbit/Orbit.node.ts +++ b/packages/nodes-base/nodes/Orbit/Orbit.node.ts @@ -1,6 +1,5 @@ import type { IExecuteFunctions, - IDataObject, ILoadOptionsFunctions, INodeExecutionData, INodePropertyOptions, @@ -8,8 +7,7 @@ import type { INodeTypeDescription, } from 'n8n-workflow'; -import moment from 'moment-timezone'; -import { orbitApiRequest, orbitApiRequestAllItems, resolveIdentities } from './GenericFunctions'; +import { NodeApiError, NodeConnectionType } from 'n8n-workflow'; import { activityFields, activityOperations } from './ActivityDescription'; @@ -19,8 +17,6 @@ import { noteFields, noteOperations } from './NoteDescription'; import { postFields, postOperations } from './PostDescription'; -import type { IRelation } from './Interfaces'; - export class Orbit implements INodeType { description: INodeTypeDescription = { displayName: 'Orbit', @@ -30,11 +26,12 @@ export class Orbit implements INodeType { version: 1, subtitle: '={{$parameter["operation"] + ": " + $parameter["resource"]}}', description: 'Consume Orbit API', + hidden: true, defaults: { name: 'Orbit', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'orbitApi', @@ -42,6 +39,13 @@ export class Orbit implements INodeType { }, ], properties: [ + { + displayName: + 'Orbit has been shutdown and will no longer function from July 11th, You can read more here.', + name: 'deprecated', + type: 'notice', + default: '', + }, { displayName: 'Resource', name: 'resource', @@ -85,463 +89,18 @@ export class Orbit implements INodeType { methods = { loadOptions: { async getWorkspaces(this: ILoadOptionsFunctions): Promise { - const returnData: INodePropertyOptions[] = []; - const workspaces = await orbitApiRequest.call(this, 'GET', '/workspaces'); - for (const workspace of workspaces.data) { - returnData.push({ - name: workspace.attributes.name, - value: workspace.attributes.slug, - }); - } - return returnData; + return [{ name: 'Deprecated', value: 'Deprecated' }]; }, async getActivityTypes(this: ILoadOptionsFunctions): Promise { - const returnData: INodePropertyOptions[] = []; - const { data } = await orbitApiRequest.call(this, 'GET', '/activity_types'); - for (const activityType of data) { - returnData.push({ - name: activityType.attributes.short_name, - value: activityType.id, - }); - } - return returnData; + return [{ name: 'Deprecated', value: 'Deprecated' }]; }, }, }; async execute(this: IExecuteFunctions): Promise { - const items = this.getInputData(); - const returnData: INodeExecutionData[] = []; - const length = items.length; - const qs: IDataObject = {}; - let responseData; - const resource = this.getNodeParameter('resource', 0); - const operation = this.getNodeParameter('operation', 0); - for (let i = 0; i < length; i++) { - try { - if (resource === 'activity') { - if (operation === 'create') { - const workspaceId = this.getNodeParameter('workspaceId', i) as string; - const memberId = this.getNodeParameter('memberId', i) as string; - const title = this.getNodeParameter('title', i) as string; - const additionalFields = this.getNodeParameter('additionalFields', i); - const body: IDataObject = { - title, - }; - if (additionalFields.description) { - body.description = additionalFields.description as string; - } - if (additionalFields.link) { - body.link = additionalFields.link as string; - } - if (additionalFields.linkText) { - body.link_text = additionalFields.linkText as string; - } - if (additionalFields.activityType) { - body.activity_type = additionalFields.activityType as string; - } - if (additionalFields.key) { - body.key = additionalFields.key as string; - } - if (additionalFields.occurredAt) { - body.occurred_at = additionalFields.occurredAt as string; - } - - responseData = await orbitApiRequest.call( - this, - 'POST', - `/${workspaceId}/members/${memberId}/activities`, - body, - ); - responseData = responseData.data; - } - if (operation === 'getAll') { - const workspaceId = this.getNodeParameter('workspaceId', i) as string; - const returnAll = this.getNodeParameter('returnAll', i); - const filters = this.getNodeParameter('filters', i); - let endpoint = `/${workspaceId}/activities`; - if (filters.memberId) { - endpoint = `/${workspaceId}/members/${filters.memberId}/activities`; - } - if (returnAll) { - responseData = await orbitApiRequestAllItems.call( - this, - 'data', - 'GET', - endpoint, - {}, - qs, - ); - } else { - qs.limit = this.getNodeParameter('limit', 0); - responseData = await orbitApiRequestAllItems.call( - this, - 'data', - 'GET', - endpoint, - {}, - qs, - ); - responseData = responseData.splice(0, qs.limit); - } - } - } - if (resource === 'member') { - if (operation === 'upsert') { - const workspaceId = this.getNodeParameter('workspaceId', i) as string; - const additionalFields = this.getNodeParameter('additionalFields', i); - const member: IDataObject = {}; - const identity: IDataObject = {}; - if (additionalFields.bio) { - member.bio = additionalFields.bio as string; - } - if (additionalFields.birthday) { - member.birthday = moment(additionalFields.birthday as string).format('MM-DD-YYYY'); - } - if (additionalFields.company) { - member.company = additionalFields.company as string; - } - if (additionalFields.location) { - member.location = additionalFields.location as string; - } - if (additionalFields.name) { - member.name = additionalFields.name as string; - } - if (additionalFields.bio) { - member.bio = additionalFields.bio as string; - } - if (additionalFields.pronouns) { - member.pronouns = additionalFields.pronouns as string; - } - if (additionalFields.shippingAddress) { - member.shipping_address = additionalFields.shippingAddress as string; - } - if (additionalFields.slug) { - member.slug = additionalFields.slug as string; - } - if (additionalFields.tagsToAdd) { - member.tags_to_add = additionalFields.tagsToAdd as string; - } - if (additionalFields.tagList) { - member.tag_list = additionalFields.tagList as string; - } - if (additionalFields.tshirt) { - member.tshirt = additionalFields.tshirt as string; - } - if (additionalFields.hasOwnProperty('teammate')) { - member.teammate = additionalFields.teammate as boolean; - } - if (additionalFields.url) { - member.url = additionalFields.url as string; - } - - const data = (this.getNodeParameter('identityUi', i) as IDataObject) - .identityValue as IDataObject; - if (data) { - if (['github', 'twitter', 'discourse'].includes(data.source as string)) { - identity.source = data.source as string; - const searchBy = data.searchBy as string; - if (searchBy === 'id') { - identity.uid = data.id as string; - } else { - identity.username = data.username as string; - } - if (data.source === 'discourse') { - identity.source_host = data.host as string; - } - } else { - //it's email - identity.email = data.email as string; - } - } - - responseData = await orbitApiRequest.call(this, 'POST', `/${workspaceId}/members`, { - member, - identity, - }); - responseData = responseData.data; - } - if (operation === 'delete') { - const workspaceId = this.getNodeParameter('workspaceId', i) as string; - const memberId = this.getNodeParameter('memberId', i) as string; - responseData = await orbitApiRequest.call( - this, - 'DELETE', - `/${workspaceId}/members/${memberId}`, - ); - responseData = { success: true }; - } - if (operation === 'get') { - const workspaceId = this.getNodeParameter('workspaceId', i) as string; - const memberId = this.getNodeParameter('memberId', i) as string; - const resolve = this.getNodeParameter('resolveIdentities', 0) as boolean; - responseData = await orbitApiRequest.call( - this, - 'GET', - `/${workspaceId}/members/${memberId}`, - ); - if (resolve) { - resolveIdentities(responseData as IRelation); - } - responseData = responseData.data; - } - if (operation === 'getAll') { - const workspaceId = this.getNodeParameter('workspaceId', i) as string; - const returnAll = this.getNodeParameter('returnAll', 0); - const options = this.getNodeParameter('options', i); - Object.assign(qs, options); - qs.resolveIdentities = this.getNodeParameter('resolveIdentities', 0) as boolean; - if (returnAll) { - responseData = await orbitApiRequestAllItems.call( - this, - 'data', - 'GET', - `/${workspaceId}/members`, - {}, - qs, - ); - } else { - qs.limit = this.getNodeParameter('limit', 0); - responseData = await orbitApiRequestAllItems.call( - this, - 'data', - 'GET', - `/${workspaceId}/members`, - {}, - qs, - ); - responseData = responseData.splice(0, qs.limit); - } - } - if (operation === 'lookup') { - const workspaceId = this.getNodeParameter('workspaceId', i) as string; - const source = this.getNodeParameter('source', i) as string; - - if (['github', 'twitter', 'discourse'].includes(source)) { - qs.source = this.getNodeParameter('source', i) as string; - const searchBy = this.getNodeParameter('searchBy', i) as string; - if (searchBy === 'id') { - qs.uid = this.getNodeParameter('id', i) as string; - } else { - qs.username = this.getNodeParameter('username', i) as string; - } - if (source === 'discourse') { - qs.source_host = this.getNodeParameter('host', i) as string; - } - } else { - //it's email - qs.email = this.getNodeParameter('email', i) as string; - } - - responseData = await orbitApiRequest.call( - this, - 'GET', - `/${workspaceId}/members/find`, - {}, - qs, - ); - responseData = responseData.data; - } - if (operation === 'update') { - const workspaceId = this.getNodeParameter('workspaceId', i) as string; - const memberId = this.getNodeParameter('memberId', i) as string; - const updateFields = this.getNodeParameter('updateFields', i); - const body: IDataObject = {}; - if (updateFields.bio) { - body.bio = updateFields.bio as string; - } - if (updateFields.birthday) { - body.birthday = moment(updateFields.birthday as string).format('MM-DD-YYYY'); - } - if (updateFields.company) { - body.company = updateFields.company as string; - } - if (updateFields.location) { - body.location = updateFields.location as string; - } - if (updateFields.name) { - body.name = updateFields.name as string; - } - if (updateFields.bio) { - body.bio = updateFields.bio as string; - } - if (updateFields.pronouns) { - body.pronouns = updateFields.pronouns as string; - } - if (updateFields.shippingAddress) { - body.shipping_address = updateFields.shippingAddress as string; - } - if (updateFields.slug) { - body.slug = updateFields.slug as string; - } - if (updateFields.tagsToAdd) { - body.tags_to_add = updateFields.tagsToAdd as string; - } - if (updateFields.tagList) { - body.tag_list = updateFields.tagList as string; - } - if (updateFields.tshirt) { - body.tshirt = updateFields.tshirt as string; - } - if (updateFields.hasOwnProperty('teammate')) { - body.teammate = updateFields.teammate as boolean; - } - if (updateFields.url) { - body.url = updateFields.url as string; - } - - responseData = await orbitApiRequest.call( - this, - 'PUT', - `/${workspaceId}/members/${memberId}`, - body, - ); - responseData = { success: true }; - } - } - if (resource === 'note') { - if (operation === 'create') { - const workspaceId = this.getNodeParameter('workspaceId', i) as string; - const memberId = this.getNodeParameter('memberId', i) as string; - const note = this.getNodeParameter('note', i) as string; - - responseData = await orbitApiRequest.call( - this, - 'POST', - `/${workspaceId}/members/${memberId}/notes`, - { body: note }, - ); - responseData = responseData.data; - } - if (operation === 'getAll') { - const workspaceId = this.getNodeParameter('workspaceId', i) as string; - const memberId = this.getNodeParameter('memberId', i) as string; - const returnAll = this.getNodeParameter('returnAll', i); - qs.resolveMember = this.getNodeParameter('resolveMember', 0) as boolean; - if (returnAll) { - responseData = await orbitApiRequestAllItems.call( - this, - 'data', - 'GET', - `/${workspaceId}/members/${memberId}/notes`, - {}, - qs, - ); - } else { - qs.limit = this.getNodeParameter('limit', 0); - responseData = await orbitApiRequestAllItems.call( - this, - 'data', - 'GET', - `/${workspaceId}/members/${memberId}/notes`, - {}, - qs, - ); - responseData = responseData.splice(0, qs.limit); - } - } - if (operation === 'update') { - const workspaceId = this.getNodeParameter('workspaceId', i) as string; - const memberId = this.getNodeParameter('memberId', i) as string; - const noteId = this.getNodeParameter('noteId', i) as string; - const note = this.getNodeParameter('note', i) as string; - - responseData = await orbitApiRequest.call( - this, - 'PUT', - `/${workspaceId}/members/${memberId}/notes/${noteId}`, - { body: note }, - ); - responseData = { success: true }; - } - } - if (resource === 'post') { - if (operation === 'create') { - const workspaceId = this.getNodeParameter('workspaceId', i) as string; - const memberId = this.getNodeParameter('memberId', i) as string; - const url = this.getNodeParameter('url', i) as string; - const additionalFields = this.getNodeParameter('additionalFields', i); - const body: IDataObject = { - type: 'post', - activity_type: 'post', - url, - }; - if (additionalFields.publishedAt) { - body.occurred_at = additionalFields.publishedAt as string; - delete body.publishedAt; - } - - responseData = await orbitApiRequest.call( - this, - 'POST', - `/${workspaceId}/members/${memberId}/activities/`, - body, - ); - responseData = responseData.data; - } - if (operation === 'getAll') { - const workspaceId = this.getNodeParameter('workspaceId', i) as string; - const returnAll = this.getNodeParameter('returnAll', i); - const filters = this.getNodeParameter('filters', i); - let endpoint = `/${workspaceId}/activities`; - qs.type = 'content'; - if (filters.memberId) { - endpoint = `/${workspaceId}/members/${filters.memberId}/activities`; - } - if (returnAll) { - responseData = await orbitApiRequestAllItems.call( - this, - 'data', - 'GET', - endpoint, - {}, - qs, - ); - } else { - qs.limit = this.getNodeParameter('limit', 0); - responseData = await orbitApiRequestAllItems.call( - this, - 'data', - 'GET', - endpoint, - {}, - qs, - ); - responseData = responseData.splice(0, qs.limit); - } - } - if (operation === 'delete') { - const workspaceId = this.getNodeParameter('workspaceId', i) as string; - const memberId = this.getNodeParameter('memberId', i) as string; - const postId = this.getNodeParameter('postId', i) as string; - - responseData = await orbitApiRequest.call( - this, - 'DELETE', - `/${workspaceId}/members/${memberId}/activities/${postId}`, - ); - responseData = { success: true }; - } - } - - const executionData = this.helpers.constructExecutionMetaData( - this.helpers.returnJsonArray(responseData as IDataObject), - { itemData: { item: i } }, - ); - - returnData.push(...executionData); - } catch (error) { - if (this.continueOnFail(error)) { - const executionErrorData = this.helpers.constructExecutionMetaData( - this.helpers.returnJsonArray({ error: error.message }), - { itemData: { item: i } }, - ); - returnData.push(...executionErrorData); - continue; - } - throw error; - } - } - return [returnData]; + throw new NodeApiError(this.getNode(), { + message: 'Service is deprecated, From July 11th Orbit will no longer function.', + level: 'warning', + }); } } diff --git a/packages/nodes-base/nodes/Orbit/PostDescription.ts b/packages/nodes-base/nodes/Orbit/PostDescription.ts index 0c153ef819..daefc28f85 100644 --- a/packages/nodes-base/nodes/Orbit/PostDescription.ts +++ b/packages/nodes-base/nodes/Orbit/PostDescription.ts @@ -44,11 +44,11 @@ export const postFields: INodeProperties[] = [ name: 'workspaceId', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getWorkspaces', }, - default: '', + default: 'Deprecated', required: true, displayOptions: { show: { @@ -115,11 +115,11 @@ export const postFields: INodeProperties[] = [ name: 'workspaceId', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getWorkspaces', }, - default: '', + default: 'Deprecated', required: true, displayOptions: { show: { @@ -190,11 +190,11 @@ export const postFields: INodeProperties[] = [ name: 'workspaceId', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getWorkspaces', }, - default: '', + default: 'Deprecated', required: true, displayOptions: { show: { diff --git a/packages/nodes-base/nodes/Oura/Oura.node.json b/packages/nodes-base/nodes/Oura/Oura.node.json index 898da47498..4ae25921fe 100644 --- a/packages/nodes-base/nodes/Oura/Oura.node.json +++ b/packages/nodes-base/nodes/Oura/Oura.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/oura" + "url": "https://docs.n8n.io/integrations/builtin/credentials/oura/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Oura/Oura.node.ts b/packages/nodes-base/nodes/Oura/Oura.node.ts index bf57b489da..17ef612cc4 100644 --- a/packages/nodes-base/nodes/Oura/Oura.node.ts +++ b/packages/nodes-base/nodes/Oura/Oura.node.ts @@ -5,6 +5,7 @@ import type { INodeType, INodeTypeDescription, } from 'n8n-workflow'; +import { NodeConnectionType } from 'n8n-workflow'; import moment from 'moment-timezone'; import { ouraApiRequest } from './GenericFunctions'; @@ -25,8 +26,8 @@ export class Oura implements INodeType { defaults: { name: 'Oura', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'ouraApi', diff --git a/packages/nodes-base/nodes/Paddle/CouponDescription.ts b/packages/nodes-base/nodes/Paddle/CouponDescription.ts index 296d8700e4..5a5c4bf97a 100644 --- a/packages/nodes-base/nodes/Paddle/CouponDescription.ts +++ b/packages/nodes-base/nodes/Paddle/CouponDescription.ts @@ -81,7 +81,7 @@ export const couponFields: INodeProperties[] = [ }, default: [], description: - 'Comma-separated list of product IDs. Required if coupon_type is product. Choose from the list, or specify IDs using an expression.', + 'Comma-separated list of product IDs. Required if coupon_type is product. Choose from the list, or specify IDs using an expression.', required: true, }, { diff --git a/packages/nodes-base/nodes/Paddle/Paddle.node.json b/packages/nodes-base/nodes/Paddle/Paddle.node.json index 4109b04f20..595830fea5 100644 --- a/packages/nodes-base/nodes/Paddle/Paddle.node.json +++ b/packages/nodes-base/nodes/Paddle/Paddle.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/paddle" + "url": "https://docs.n8n.io/integrations/builtin/credentials/paddle/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Paddle/Paddle.node.ts b/packages/nodes-base/nodes/Paddle/Paddle.node.ts index 39ad3142ff..cb9ce4b76a 100644 --- a/packages/nodes-base/nodes/Paddle/Paddle.node.ts +++ b/packages/nodes-base/nodes/Paddle/Paddle.node.ts @@ -8,7 +8,7 @@ import type { INodeTypeDescription, JsonObject, } from 'n8n-workflow'; -import { NodeApiError, NodeOperationError } from 'n8n-workflow'; +import { NodeApiError, NodeConnectionType, NodeOperationError } from 'n8n-workflow'; import moment from 'moment-timezone'; import { couponFields, couponOperations } from './CouponDescription'; @@ -41,8 +41,8 @@ export class Paddle implements INodeType { defaults: { name: 'Paddle', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'paddleApi', @@ -520,7 +520,7 @@ export class Paddle implements INodeType { } } } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { const executionErrorData = this.helpers.constructExecutionMetaData( this.helpers.returnJsonArray({ error: error.message }), { itemData: { item: i } }, diff --git a/packages/nodes-base/nodes/Paddle/PaymentDescription.ts b/packages/nodes-base/nodes/Paddle/PaymentDescription.ts index 4596c28472..991399a949 100644 --- a/packages/nodes-base/nodes/Paddle/PaymentDescription.ts +++ b/packages/nodes-base/nodes/Paddle/PaymentDescription.ts @@ -195,7 +195,7 @@ export const paymentFields: INodeProperties[] = [ }, }, description: - 'The upcoming subscription payment ID. Choose from the list, or specify an ID using an expression.', + 'The upcoming subscription payment ID. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Date', diff --git a/packages/nodes-base/nodes/PagerDuty/IncidentDescription.ts b/packages/nodes-base/nodes/PagerDuty/IncidentDescription.ts index 08b60750ac..f30d80d383 100644 --- a/packages/nodes-base/nodes/PagerDuty/IncidentDescription.ts +++ b/packages/nodes-base/nodes/PagerDuty/IncidentDescription.ts @@ -75,7 +75,7 @@ export const incidentFields: INodeProperties[] = [ }, }, description: - 'The incident will be created on this service. Choose from the list, or specify an ID using an expression.', + 'The incident will be created on this service. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Email', @@ -114,7 +114,7 @@ export const incidentFields: INodeProperties[] = [ }, default: '', description: - 'Delegate this incident to the specified escalation policy. Cannot be specified if an assignee is given. Choose from the list, or specify an ID using an expression.', + 'Delegate this incident to the specified escalation policy. Cannot be specified if an assignee is given. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Incident Details', @@ -140,7 +140,7 @@ export const incidentFields: INodeProperties[] = [ }, default: '', description: - 'The incident will be created on this service. Choose from the list, or specify an ID using an expression.', + 'The incident will be created on this service. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Urgency', @@ -340,7 +340,7 @@ export const incidentFields: INodeProperties[] = [ }, default: [], description: - 'Returns only the incidents associated with the passed service(s). Choose from the list, or specify IDs using an expression.', + 'Returns only the incidents associated with the passed service(s). Choose from the list, or specify IDs using an expression.', }, { displayName: 'Since', @@ -397,7 +397,7 @@ export const incidentFields: INodeProperties[] = [ }, default: '', description: - 'Time zone in which dates in the result will be rendered. If not set dates will return UTC. Choose from the list, or specify an ID using an expression.', + 'Time zone in which dates in the result will be rendered. If not set dates will return UTC. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Until', @@ -499,7 +499,7 @@ export const incidentFields: INodeProperties[] = [ }, default: '', description: - 'Delegate this incident to the specified escalation policy. Cannot be specified if an assignee is given. Choose from the list, or specify an ID using an expression.', + 'Delegate this incident to the specified escalation policy. Cannot be specified if an assignee is given. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Priority Name or ID', @@ -510,7 +510,7 @@ export const incidentFields: INodeProperties[] = [ }, default: '', description: - 'The incident will be created on this service. Choose from the list, or specify an ID using an expression.', + 'The incident will be created on this service. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Resolution', diff --git a/packages/nodes-base/nodes/PagerDuty/LogEntryDescription.ts b/packages/nodes-base/nodes/PagerDuty/LogEntryDescription.ts index 508875d987..04ac5c4cce 100644 --- a/packages/nodes-base/nodes/PagerDuty/LogEntryDescription.ts +++ b/packages/nodes-base/nodes/PagerDuty/LogEntryDescription.ts @@ -144,7 +144,7 @@ export const logEntryFields: INodeProperties[] = [ }, default: '', description: - 'Time zone in which dates in the result will be rendered. If not set dates will return UTC. Choose from the list, or specify an ID using an expression.', + 'Time zone in which dates in the result will be rendered. If not set dates will return UTC. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Until', diff --git a/packages/nodes-base/nodes/PagerDuty/PagerDuty.node.json b/packages/nodes-base/nodes/PagerDuty/PagerDuty.node.json index b058736842..cee40c55a3 100644 --- a/packages/nodes-base/nodes/PagerDuty/PagerDuty.node.json +++ b/packages/nodes-base/nodes/PagerDuty/PagerDuty.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/pagerDuty" + "url": "https://docs.n8n.io/integrations/builtin/credentials/pagerDuty/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/PagerDuty/PagerDuty.node.ts b/packages/nodes-base/nodes/PagerDuty/PagerDuty.node.ts index cebc859566..4a1cfbbe67 100644 --- a/packages/nodes-base/nodes/PagerDuty/PagerDuty.node.ts +++ b/packages/nodes-base/nodes/PagerDuty/PagerDuty.node.ts @@ -7,6 +7,7 @@ import type { INodeType, INodeTypeDescription, } from 'n8n-workflow'; +import { NodeConnectionType } from 'n8n-workflow'; import { snakeCase } from 'change-case'; import moment from 'moment-timezone'; @@ -38,8 +39,8 @@ export class PagerDuty implements INodeType { defaults: { name: 'PagerDuty', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'pagerDutyApi', @@ -459,7 +460,7 @@ export class PagerDuty implements INodeType { returnData.push(...executionData); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { const executionErrorData = this.helpers.constructExecutionMetaData( this.helpers.returnJsonArray({ error: error.message }), { itemData: { item: i } }, diff --git a/packages/nodes-base/nodes/PayPal/PayPal.node.json b/packages/nodes-base/nodes/PayPal/PayPal.node.json index 3f5e7c084e..a042f750ee 100644 --- a/packages/nodes-base/nodes/PayPal/PayPal.node.json +++ b/packages/nodes-base/nodes/PayPal/PayPal.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/payPal" + "url": "https://docs.n8n.io/integrations/builtin/credentials/payPal/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/PayPal/PayPal.node.ts b/packages/nodes-base/nodes/PayPal/PayPal.node.ts index fe9ea711bc..c046226a3e 100644 --- a/packages/nodes-base/nodes/PayPal/PayPal.node.ts +++ b/packages/nodes-base/nodes/PayPal/PayPal.node.ts @@ -9,7 +9,7 @@ import type { INodeTypeDescription, IRequestOptions, } from 'n8n-workflow'; -import { NodeOperationError } from 'n8n-workflow'; +import { NodeConnectionType, NodeOperationError } from 'n8n-workflow'; import { payoutFields, payoutItemFields, @@ -38,8 +38,8 @@ export class PayPal implements INodeType { defaults: { name: 'PayPal', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'payPalApi', @@ -242,7 +242,7 @@ export class PayPal implements INodeType { returnData.push(...executionData); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { const executionErrorData = this.helpers.constructExecutionMetaData( this.helpers.returnJsonArray({ error: error.message }), { itemData: { item: i } }, diff --git a/packages/nodes-base/nodes/PayPal/PayPalTrigger.node.json b/packages/nodes-base/nodes/PayPal/PayPalTrigger.node.json index cbb227bcde..e2d8e39bb1 100644 --- a/packages/nodes-base/nodes/PayPal/PayPalTrigger.node.json +++ b/packages/nodes-base/nodes/PayPal/PayPalTrigger.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/payPal" + "url": "https://docs.n8n.io/integrations/builtin/credentials/payPal/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/PayPal/PayPalTrigger.node.ts b/packages/nodes-base/nodes/PayPal/PayPalTrigger.node.ts index 309c6d5193..6d409202d4 100644 --- a/packages/nodes-base/nodes/PayPal/PayPalTrigger.node.ts +++ b/packages/nodes-base/nodes/PayPal/PayPalTrigger.node.ts @@ -9,7 +9,7 @@ import type { IWebhookResponseData, JsonObject, } from 'n8n-workflow'; -import { NodeApiError } from 'n8n-workflow'; +import { NodeApiError, NodeConnectionType } from 'n8n-workflow'; import { payPalApiRequest, upperFist } from './GenericFunctions'; export class PayPalTrigger implements INodeType { @@ -24,7 +24,7 @@ export class PayPalTrigger implements INodeType { name: 'PayPal Trigger', }, inputs: [], - outputs: ['main'], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'payPalApi', @@ -47,7 +47,7 @@ export class PayPalTrigger implements INodeType { required: true, default: [], description: - 'The event to listen to. Choose from the list, or specify IDs using an expression.', + 'The event to listen to. Choose from the list, or specify IDs using an expression.', typeOptions: { loadOptionsMethod: 'getEvents', }, @@ -162,7 +162,7 @@ export class PayPalTrigger implements INodeType { const headerData = this.getHeaderData() as IDataObject; const endpoint = '/notifications/verify-webhook-signature'; - const { env } = (await this.getCredentials('payPalApi')) as { env: string }; + const { env } = await this.getCredentials<{ env: string }>('payPalApi'); // if sanbox omit verification if (env === 'sanbox') { diff --git a/packages/nodes-base/nodes/Peekalink/Peekalink.node.json b/packages/nodes-base/nodes/Peekalink/Peekalink.node.json index 0af7638751..cae331fa02 100644 --- a/packages/nodes-base/nodes/Peekalink/Peekalink.node.json +++ b/packages/nodes-base/nodes/Peekalink/Peekalink.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/peekalink" + "url": "https://docs.n8n.io/integrations/builtin/credentials/peekalink/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Peekalink/Peekalink.node.ts b/packages/nodes-base/nodes/Peekalink/Peekalink.node.ts index 638ca9f409..5e18c8600a 100644 --- a/packages/nodes-base/nodes/Peekalink/Peekalink.node.ts +++ b/packages/nodes-base/nodes/Peekalink/Peekalink.node.ts @@ -5,6 +5,7 @@ import { type INodeExecutionData, type INodeTypeDescription, type JsonObject, + NodeConnectionType, } from 'n8n-workflow'; export const apiUrl = 'https://api.peekalink.io'; @@ -24,8 +25,8 @@ export class Peekalink extends Node { defaults: { name: 'Peekalink', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'peekalinkApi', diff --git a/packages/nodes-base/nodes/Phantombuster/AgentDescription.ts b/packages/nodes-base/nodes/Phantombuster/AgentDescription.ts index 46757379d1..0efcb71255 100644 --- a/packages/nodes-base/nodes/Phantombuster/AgentDescription.ts +++ b/packages/nodes-base/nodes/Phantombuster/AgentDescription.ts @@ -56,7 +56,7 @@ export const agentFields: INodeProperties[] = [ name: 'agentId', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getAgents', }, @@ -130,7 +130,7 @@ export const agentFields: INodeProperties[] = [ name: 'agentId', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getAgents', }, @@ -231,7 +231,7 @@ export const agentFields: INodeProperties[] = [ name: 'agentId', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getAgents', }, diff --git a/packages/nodes-base/nodes/Phantombuster/Phantombuster.node.json b/packages/nodes-base/nodes/Phantombuster/Phantombuster.node.json index b0f15495ed..de49337f80 100644 --- a/packages/nodes-base/nodes/Phantombuster/Phantombuster.node.json +++ b/packages/nodes-base/nodes/Phantombuster/Phantombuster.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/phantombuster" + "url": "https://docs.n8n.io/integrations/builtin/credentials/phantombuster/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Phantombuster/Phantombuster.node.ts b/packages/nodes-base/nodes/Phantombuster/Phantombuster.node.ts index a625444131..33a323830d 100644 --- a/packages/nodes-base/nodes/Phantombuster/Phantombuster.node.ts +++ b/packages/nodes-base/nodes/Phantombuster/Phantombuster.node.ts @@ -1,11 +1,12 @@ -import type { - IExecuteFunctions, - IDataObject, - ILoadOptionsFunctions, - INodeExecutionData, - INodePropertyOptions, - INodeType, - INodeTypeDescription, +import { + type IExecuteFunctions, + type IDataObject, + type ILoadOptionsFunctions, + type INodeExecutionData, + type INodePropertyOptions, + type INodeType, + type INodeTypeDescription, + NodeConnectionType, } from 'n8n-workflow'; import { phantombusterApiRequest, validateJSON } from './GenericFunctions'; @@ -29,8 +30,8 @@ export class Phantombuster implements INodeType { defaults: { name: 'Phantombuster', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'phantombusterApi', @@ -252,7 +253,7 @@ export class Phantombuster implements INodeType { ); returnData.push(...executionData); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { const executionData = this.helpers.constructExecutionMetaData( this.helpers.returnJsonArray({ error: error.message }), { itemData: { item: i } }, diff --git a/packages/nodes-base/nodes/PhilipsHue/LightDescription.ts b/packages/nodes-base/nodes/PhilipsHue/LightDescription.ts index 501c4e00aa..e39a3075d5 100644 --- a/packages/nodes-base/nodes/PhilipsHue/LightDescription.ts +++ b/packages/nodes-base/nodes/PhilipsHue/LightDescription.ts @@ -119,7 +119,7 @@ export const lightFields: INodeProperties[] = [ name: 'lightId', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getLights', }, diff --git a/packages/nodes-base/nodes/PhilipsHue/PhilipsHue.node.json b/packages/nodes-base/nodes/PhilipsHue/PhilipsHue.node.json index fddb858963..efd1b72b26 100644 --- a/packages/nodes-base/nodes/PhilipsHue/PhilipsHue.node.json +++ b/packages/nodes-base/nodes/PhilipsHue/PhilipsHue.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/philipsHue" + "url": "https://docs.n8n.io/integrations/builtin/credentials/philipsHue/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/PhilipsHue/PhilipsHue.node.ts b/packages/nodes-base/nodes/PhilipsHue/PhilipsHue.node.ts index b9ef5cffa2..63634980b6 100644 --- a/packages/nodes-base/nodes/PhilipsHue/PhilipsHue.node.ts +++ b/packages/nodes-base/nodes/PhilipsHue/PhilipsHue.node.ts @@ -7,6 +7,7 @@ import type { INodeType, INodeTypeDescription, } from 'n8n-workflow'; +import { NodeConnectionType } from 'n8n-workflow'; import { getUser, philipsHueApiRequest } from './GenericFunctions'; @@ -25,8 +26,8 @@ export class PhilipsHue implements INodeType { defaults: { name: 'Philips Hue', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'philipsHueOAuth2Api', diff --git a/packages/nodes-base/nodes/Pipedrive/Pipedrive.node.json b/packages/nodes-base/nodes/Pipedrive/Pipedrive.node.json index 1aec4204d9..d4335718b1 100644 --- a/packages/nodes-base/nodes/Pipedrive/Pipedrive.node.json +++ b/packages/nodes-base/nodes/Pipedrive/Pipedrive.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/pipedrive" + "url": "https://docs.n8n.io/integrations/builtin/credentials/pipedrive/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Pipedrive/Pipedrive.node.ts b/packages/nodes-base/nodes/Pipedrive/Pipedrive.node.ts index 947f13f11b..a92578a4d1 100644 --- a/packages/nodes-base/nodes/Pipedrive/Pipedrive.node.ts +++ b/packages/nodes-base/nodes/Pipedrive/Pipedrive.node.ts @@ -8,7 +8,7 @@ import type { INodeType, INodeTypeDescription, } from 'n8n-workflow'; -import { NodeOperationError } from 'n8n-workflow'; +import { NodeConnectionType, NodeOperationError } from 'n8n-workflow'; import type { ICustomProperties } from './GenericFunctions'; import { @@ -61,8 +61,8 @@ export class Pipedrive implements INodeType { defaults: { name: 'Pipedrive', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'pipedriveApi', @@ -697,7 +697,7 @@ export class Pipedrive implements INodeType { }, default: '', description: - 'ID of the organization this activity will be associated with. Choose from the list, or specify an ID using an expression.', + 'ID of the organization this activity will be associated with. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Person ID', @@ -715,7 +715,7 @@ export class Pipedrive implements INodeType { }, default: '', description: - 'ID of the active user whom the activity will be assigned to. If omitted, the activity will be assigned to the authorized user. Choose from the list, or specify an ID using an expression.', + 'ID of the active user whom the activity will be assigned to. If omitted, the activity will be assigned to the authorized user. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Custom Properties', @@ -875,7 +875,7 @@ export class Pipedrive implements INodeType { }, default: '', description: - 'ID of the organization this activity will be associated with. Choose from the list, or specify an ID using an expression.', + 'ID of the organization this activity will be associated with. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Person ID', @@ -916,7 +916,7 @@ export class Pipedrive implements INodeType { }, default: '', description: - 'ID of the active user whom the activity will be assigned to. If omitted, the activity will be assigned to the authorized user. Choose from the list, or specify an ID using an expression.', + 'ID of the active user whom the activity will be assigned to. If omitted, the activity will be assigned to the authorized user. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Custom Properties', @@ -1073,7 +1073,7 @@ export class Pipedrive implements INodeType { }, default: '', description: - 'Name of the property to set. Choose from the list, or specify an ID using an expression.', + 'Name of the property to set. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Property Value', @@ -1091,7 +1091,7 @@ export class Pipedrive implements INodeType { name: 'label', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getDealLabels', }, @@ -1148,7 +1148,7 @@ export class Pipedrive implements INodeType { }, default: '', description: - 'ID of the stage this deal will be placed in a pipeline. If omitted, the deal will be placed in the first stage of the default pipeline. (PIPELINE > STAGE). Choose from the list, or specify an ID using an expression.', + 'ID of the stage this deal will be placed in a pipeline. If omitted, the deal will be placed in the first stage of the default pipeline. (PIPELINE > STAGE). Choose from the list, or specify an ID using an expression.', }, { displayName: 'Status', @@ -1185,7 +1185,7 @@ export class Pipedrive implements INodeType { }, default: '', description: - 'ID of the active user whom the activity will be assigned to. If omitted, the activity will be assigned to the authorized user. Choose from the list, or specify an ID using an expression.', + 'ID of the active user whom the activity will be assigned to. If omitted, the activity will be assigned to the authorized user. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Value', @@ -1331,7 +1331,7 @@ export class Pipedrive implements INodeType { }, default: '', description: - 'Name of the custom field to set. Choose from the list, or specify an ID using an expression.', + 'Name of the custom field to set. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Property Value', @@ -1353,14 +1353,14 @@ export class Pipedrive implements INodeType { }, default: '', description: - 'ID of the active user whom the activity will be assigned to. If omitted, the activity will be assigned to the authorized user. Choose from the list, or specify an ID using an expression.', + 'ID of the active user whom the activity will be assigned to. If omitted, the activity will be assigned to the authorized user. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Label Name or ID', name: 'label', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getDealLabels', }, @@ -1382,7 +1382,7 @@ export class Pipedrive implements INodeType { }, default: '', description: - 'ID of the organization this deal will be associated with. Choose from the list, or specify an ID using an expression.', + 'ID of the organization this deal will be associated with. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Person ID', @@ -1411,7 +1411,7 @@ export class Pipedrive implements INodeType { }, default: '', description: - 'ID of the stage this deal will be placed in a pipeline. If omitted, the deal will be placed in the first stage of the default pipeline. (PIPELINE > STAGE). Choose from the list, or specify an ID using an expression.', + 'ID of the stage this deal will be placed in a pipeline. If omitted, the deal will be placed in the first stage of the default pipeline. (PIPELINE > STAGE). Choose from the list, or specify an ID using an expression.', }, { displayName: 'Status', @@ -1492,7 +1492,7 @@ export class Pipedrive implements INodeType { }, }, description: - 'The ID of the deal to add a product to. Choose from the list, or specify an ID using an expression.', + 'The ID of the deal to add a product to. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Product Name or ID', @@ -1510,7 +1510,7 @@ export class Pipedrive implements INodeType { }, }, description: - 'The ID of the product to add to a deal. Choose from the list, or specify an ID using an expression.', + 'The ID of the product to add to a deal. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Item Price', @@ -1608,7 +1608,7 @@ export class Pipedrive implements INodeType { }, }, description: - 'The ID of the deal whose product to update. Choose from the list, or specify an ID using an expression.', + 'The ID of the deal whose product to update. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Product Attachment Name or ID', @@ -1627,7 +1627,7 @@ export class Pipedrive implements INodeType { }, }, description: - 'ID of the deal-product (the ID of the product attached to the deal). Choose from the list, or specify an ID using an expression.', + 'ID of the deal-product (the ID of the product attached to the deal). Choose from the list, or specify an ID using an expression.', }, { displayName: 'Update Fields', @@ -1711,7 +1711,7 @@ export class Pipedrive implements INodeType { }, }, description: - 'The ID of the deal whose product to remove. Choose from the list, or specify an ID using an expression.', + 'The ID of the deal whose product to remove. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Product Attachment Name or ID', @@ -1730,7 +1730,7 @@ export class Pipedrive implements INodeType { }, }, description: - 'ID of the deal-product (the ID of the product attached to the deal). Choose from the list, or specify an ID using an expression.', + 'ID of the deal-product (the ID of the product attached to the deal). Choose from the list, or specify an ID using an expression.', }, // ---------------------------------- // dealProduct:getAll @@ -1751,7 +1751,7 @@ export class Pipedrive implements INodeType { }, }, description: - 'The ID of the deal whose products to retrieve. Choose from the list, or specify an ID using an expression.', + 'The ID of the deal whose products to retrieve. Choose from the list, or specify an ID using an expression.', }, // ---------------------------------- @@ -1955,7 +1955,7 @@ export class Pipedrive implements INodeType { }, default: '', description: - 'ID of the organization this deal will be associated with. Choose from the list, or specify an ID using an expression.', + 'ID of the organization this deal will be associated with. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Person ID', @@ -2193,7 +2193,7 @@ export class Pipedrive implements INodeType { }, default: [], description: - 'ID of the labels to attach to the lead to create. Choose from the list, or specify IDs using an expression.', + 'ID of the labels to attach to the lead to create. Choose from the list, or specify IDs using an expression.', }, { displayName: 'Organization ID', @@ -2216,7 +2216,7 @@ export class Pipedrive implements INodeType { }, default: '', description: - 'ID of the user who will own the lead to create. Choose from the list, or specify an ID using an expression.', + 'ID of the user who will own the lead to create. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Person ID', @@ -2343,7 +2343,7 @@ export class Pipedrive implements INodeType { }, default: '', description: - 'ID of the user who will own the lead to update. Choose from the list, or specify an ID using an expression.', + 'ID of the user who will own the lead to update. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Label Names or IDs', @@ -2354,7 +2354,7 @@ export class Pipedrive implements INodeType { }, default: [], description: - 'ID of the labels to attach to the lead to update. Choose from the list, or specify IDs using an expression.', + 'ID of the labels to attach to the lead to update. Choose from the list, or specify IDs using an expression.', }, { displayName: 'Person Name or ID', @@ -2365,7 +2365,7 @@ export class Pipedrive implements INodeType { }, default: '', description: - 'ID of the person to link to this lead. Choose from the list, or specify an ID using an expression.', + 'ID of the person to link to this lead. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Value', @@ -2573,7 +2573,7 @@ export class Pipedrive implements INodeType { }, default: '', description: - 'ID of the organization this deal will be associated with. Choose from the list, or specify an ID using an expression.', + 'ID of the organization this deal will be associated with. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Person ID', @@ -2657,7 +2657,7 @@ export class Pipedrive implements INodeType { name: 'label', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getOrganizationLabels', }, @@ -2862,7 +2862,7 @@ export class Pipedrive implements INodeType { name: 'label', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getOrganizationLabels', }, @@ -2962,7 +2962,7 @@ export class Pipedrive implements INodeType { }, default: '', description: - 'Name of the custom field to set. Choose from the list, or specify an ID using an expression.', + 'Name of the custom field to set. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Property Value', @@ -2991,7 +2991,7 @@ export class Pipedrive implements INodeType { name: 'label', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getPersonLabels', }, @@ -3032,7 +3032,7 @@ export class Pipedrive implements INodeType { }, default: '', description: - 'ID of the organization this deal will be associated with. Choose from the list, or specify an ID using an expression.', + 'ID of the organization this deal will be associated with. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Phone', @@ -3071,7 +3071,7 @@ export class Pipedrive implements INodeType { }, default: '', description: - 'ID of the User this deal will be associated with. Choose from the list, or specify an ID using an expression.', + 'ID of the User this deal will be associated with. Choose from the list, or specify an ID using an expression.', }, ], }, @@ -3167,7 +3167,7 @@ export class Pipedrive implements INodeType { }, default: '', description: - 'Name of the custom field to set. Choose from the list, or specify an ID using an expression.', + 'Name of the custom field to set. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Property Value', @@ -3196,7 +3196,7 @@ export class Pipedrive implements INodeType { name: 'label', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getPersonLabels', }, @@ -3244,7 +3244,7 @@ export class Pipedrive implements INodeType { }, default: '', description: - 'ID of the organization this deal will be associated with. Choose from the list, or specify an ID using an expression.', + 'ID of the organization this deal will be associated with. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Phone', @@ -3265,7 +3265,7 @@ export class Pipedrive implements INodeType { }, default: '', description: - 'ID of the User this person will be associated with. Choose from the list, or specify an ID using an expression.', + 'ID of the User this person will be associated with. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Visible To', @@ -3370,7 +3370,7 @@ export class Pipedrive implements INodeType { }, }, description: - 'The ID of the deal whose activity to retrieve. Choose from the list, or specify an ID using an expression.', + 'The ID of the deal whose activity to retrieve. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Additional Fields', @@ -3475,7 +3475,7 @@ export class Pipedrive implements INodeType { }, default: '', description: - 'ID of the filter to use. Choose from the list, or specify an ID using an expression.', + 'ID of the filter to use. Choose from the list, or specify an ID using an expression.', }, ], }, @@ -3505,7 +3505,7 @@ export class Pipedrive implements INodeType { }, default: '', description: - 'ID of the filter to use. Choose from the list, or specify an ID using an expression.', + 'ID of the filter to use. Choose from the list, or specify an ID using an expression.', }, { displayName: 'First Char', @@ -3638,7 +3638,7 @@ export class Pipedrive implements INodeType { }, default: '', description: - 'ID of the organization this deal will be associated with. Choose from the list, or specify an ID using an expression.', + 'ID of the organization this deal will be associated with. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Person ID', @@ -3690,7 +3690,7 @@ export class Pipedrive implements INodeType { }, default: '', description: - 'The ID of the Filter to use (will narrow down results if used together with user_id parameter). Choose from the list, or specify an ID using an expression.', + 'The ID of the Filter to use (will narrow down results if used together with user_id parameter). Choose from the list, or specify an ID using an expression.', }, { displayName: 'Star Date', @@ -3709,7 +3709,7 @@ export class Pipedrive implements INodeType { }, default: [], description: - 'Type of the Activity. Choose from the list, or specify IDs using an expression.', + 'Type of the Activity. Choose from the list, or specify IDs using an expression.', }, { displayName: 'User Name or ID', @@ -3720,7 +3720,7 @@ export class Pipedrive implements INodeType { }, default: '', description: - 'The ID of the User whose Activities will be fetched. If omitted, the User associated with the API token will be used. If 0, Activities for all company Users will be fetched based on the permission sets. Choose from the list, or specify an ID using an expression.', + 'The ID of the User whose Activities will be fetched. If omitted, the User associated with the API token will be used. If 0, Activities for all company Users will be fetched based on the permission sets. Choose from the list, or specify an ID using an expression.', }, ], }, @@ -3749,7 +3749,7 @@ export class Pipedrive implements INodeType { }, default: '', description: - 'Predefined filter to apply to the deals to retrieve. Choose from the list, or specify an ID using an expression.', + 'Predefined filter to apply to the deals to retrieve. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Stage Name or ID', @@ -3760,7 +3760,7 @@ export class Pipedrive implements INodeType { }, default: '', description: - 'ID of the stage to filter deals by. Choose from the list, or specify an ID using an expression.', + 'ID of the stage to filter deals by. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Status', @@ -3800,7 +3800,7 @@ export class Pipedrive implements INodeType { }, default: '', description: - 'ID of the user to filter deals by. Choose from the list, or specify an ID using an expression.', + 'ID of the user to filter deals by. Choose from the list, or specify an ID using an expression.', }, ], }, @@ -4962,7 +4962,7 @@ export class Pipedrive implements INodeType { returnData.push(...executionData); } } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { if (resource === 'file' && operation === 'download') { items[i].json = { error: error.message }; } else { diff --git a/packages/nodes-base/nodes/Pipedrive/PipedriveTrigger.node.json b/packages/nodes-base/nodes/Pipedrive/PipedriveTrigger.node.json index fdaf29933f..c623ba605c 100644 --- a/packages/nodes-base/nodes/Pipedrive/PipedriveTrigger.node.json +++ b/packages/nodes-base/nodes/Pipedrive/PipedriveTrigger.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/pipedrive" + "url": "https://docs.n8n.io/integrations/builtin/credentials/pipedrive/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Pipedrive/PipedriveTrigger.node.ts b/packages/nodes-base/nodes/Pipedrive/PipedriveTrigger.node.ts index fa523ac9c5..0ebe6792cb 100644 --- a/packages/nodes-base/nodes/Pipedrive/PipedriveTrigger.node.ts +++ b/packages/nodes-base/nodes/Pipedrive/PipedriveTrigger.node.ts @@ -1,11 +1,12 @@ -import type { - IHookFunctions, - IWebhookFunctions, - ICredentialDataDecryptedObject, - IDataObject, - INodeType, - INodeTypeDescription, - IWebhookResponseData, +import { + type IHookFunctions, + type IWebhookFunctions, + type ICredentialDataDecryptedObject, + type IDataObject, + type INodeType, + type INodeTypeDescription, + type IWebhookResponseData, + NodeConnectionType, } from 'n8n-workflow'; import basicAuth from 'basic-auth'; @@ -42,7 +43,7 @@ export class PipedriveTrigger implements INodeType { name: 'Pipedrive Trigger', }, inputs: [], - outputs: ['main'], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'pipedriveApi', @@ -325,7 +326,7 @@ export class PipedriveTrigger implements INodeType { let httpBasicAuth: ICredentialDataDecryptedObject | undefined; try { - httpBasicAuth = await this.getCredentials('httpBasicAuth'); + httpBasicAuth = await this.getCredentials('httpBasicAuth'); } catch (error) { // Do nothing } diff --git a/packages/nodes-base/nodes/Plivo/GenericFunctions.ts b/packages/nodes-base/nodes/Plivo/GenericFunctions.ts index 6ac63db30f..5120a24dbc 100644 --- a/packages/nodes-base/nodes/Plivo/GenericFunctions.ts +++ b/packages/nodes-base/nodes/Plivo/GenericFunctions.ts @@ -19,10 +19,10 @@ export async function plivoApiRequest( body: IDataObject = {}, qs: IDataObject = {}, ) { - const credentials = (await this.getCredentials('plivoApi')) as { + const credentials = await this.getCredentials<{ authId: string; authToken: string; - }; + }>('plivoApi'); const options: IRequestOptions = { headers: { diff --git a/packages/nodes-base/nodes/Plivo/Plivo.node.json b/packages/nodes-base/nodes/Plivo/Plivo.node.json index b067921073..d2b2bb78fa 100644 --- a/packages/nodes-base/nodes/Plivo/Plivo.node.json +++ b/packages/nodes-base/nodes/Plivo/Plivo.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/plivo" + "url": "https://docs.n8n.io/integrations/builtin/credentials/plivo/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Plivo/Plivo.node.ts b/packages/nodes-base/nodes/Plivo/Plivo.node.ts index bc3f5b674a..d6ce65de0e 100644 --- a/packages/nodes-base/nodes/Plivo/Plivo.node.ts +++ b/packages/nodes-base/nodes/Plivo/Plivo.node.ts @@ -1,9 +1,10 @@ -import type { - IExecuteFunctions, - IDataObject, - INodeExecutionData, - INodeType, - INodeTypeDescription, +import { + type IExecuteFunctions, + type IDataObject, + type INodeExecutionData, + type INodeType, + type INodeTypeDescription, + NodeConnectionType, } from 'n8n-workflow'; import { smsFields, smsOperations } from './SmsDescription'; @@ -26,8 +27,8 @@ export class Plivo implements INodeType { defaults: { name: 'Plivo', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'plivoApi', diff --git a/packages/nodes-base/nodes/PostBin/PostBin.node.ts b/packages/nodes-base/nodes/PostBin/PostBin.node.ts index 4190036ad7..ccad7205dc 100644 --- a/packages/nodes-base/nodes/PostBin/PostBin.node.ts +++ b/packages/nodes-base/nodes/PostBin/PostBin.node.ts @@ -1,4 +1,5 @@ import type { INodeType, INodeTypeDescription } from 'n8n-workflow'; +import { NodeConnectionType } from 'n8n-workflow'; import { binFields, binOperations } from './BinDescription'; @@ -16,8 +17,8 @@ export class PostBin implements INodeType { defaults: { name: 'PostBin', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [], requestDefaults: { baseURL: 'https://www.toptal.com', diff --git a/packages/nodes-base/nodes/PostHog/PostHog.node.json b/packages/nodes-base/nodes/PostHog/PostHog.node.json index c7bf696b17..d02e989925 100644 --- a/packages/nodes-base/nodes/PostHog/PostHog.node.json +++ b/packages/nodes-base/nodes/PostHog/PostHog.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/postHog" + "url": "https://docs.n8n.io/integrations/builtin/credentials/postHog/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/PostHog/PostHog.node.ts b/packages/nodes-base/nodes/PostHog/PostHog.node.ts index 4b44fee6b3..603bddcc02 100644 --- a/packages/nodes-base/nodes/PostHog/PostHog.node.ts +++ b/packages/nodes-base/nodes/PostHog/PostHog.node.ts @@ -5,6 +5,7 @@ import type { INodeType, INodeTypeDescription, } from 'n8n-workflow'; +import { NodeConnectionType } from 'n8n-workflow'; import moment from 'moment-timezone'; import type { IAlias, IEvent, IIdentity, ITrack } from './GenericFunctions'; @@ -30,8 +31,8 @@ export class PostHog implements INodeType { defaults: { name: 'PostHog', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'postHogApi', @@ -121,7 +122,7 @@ export class PostHog implements INodeType { returnData.push(responseData as IDataObject); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push({ error: error.message }); continue; } @@ -173,7 +174,7 @@ export class PostHog implements INodeType { returnData.push(responseData as IDataObject); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push({ error: error.message }); } else { throw error; @@ -217,7 +218,7 @@ export class PostHog implements INodeType { returnData.push(responseData as IDataObject); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push({ error: error.message }); continue; } @@ -273,7 +274,7 @@ export class PostHog implements INodeType { returnData.push(responseData as IDataObject); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push({ error: error.message }); continue; } diff --git a/packages/nodes-base/nodes/Postgres/Postgres.node.json b/packages/nodes-base/nodes/Postgres/Postgres.node.json index dcf357b422..93607ae0d3 100644 --- a/packages/nodes-base/nodes/Postgres/Postgres.node.json +++ b/packages/nodes-base/nodes/Postgres/Postgres.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/postgres" + "url": "https://docs.n8n.io/integrations/builtin/credentials/postgres/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Postgres/Postgres.node.ts b/packages/nodes-base/nodes/Postgres/Postgres.node.ts index 05e09dff4d..0e1760faea 100644 --- a/packages/nodes-base/nodes/Postgres/Postgres.node.ts +++ b/packages/nodes-base/nodes/Postgres/Postgres.node.ts @@ -11,7 +11,7 @@ export class Postgres extends VersionedNodeType { name: 'postgres', icon: 'file:postgres.svg', group: ['input'], - defaultVersion: 2.4, + defaultVersion: 2.5, description: 'Get, add and update data in Postgres', parameterPane: 'wide', }; @@ -23,6 +23,7 @@ export class Postgres extends VersionedNodeType { 2.2: new PostgresV2(baseDescription), 2.3: new PostgresV2(baseDescription), 2.4: new PostgresV2(baseDescription), + 2.5: new PostgresV2(baseDescription), }; super(nodeVersions, baseDescription); diff --git a/packages/nodes-base/nodes/Postgres/PostgresTrigger.functions.ts b/packages/nodes-base/nodes/Postgres/PostgresTrigger.functions.ts index e6830fc701..f46eba1481 100644 --- a/packages/nodes-base/nodes/Postgres/PostgresTrigger.functions.ts +++ b/packages/nodes-base/nodes/Postgres/PostgresTrigger.functions.ts @@ -6,8 +6,9 @@ import type { INodeListSearchResult, INodeListSearchItems, } from 'n8n-workflow'; -import pgPromise from 'pg-promise'; -import type pg from 'pg-promise/typescript/pg-subset'; + +import type { PgpDatabase, PostgresNodeCredentials } from './v2/helpers/interfaces'; +import { configurePostgres } from './v2/transport'; export function prepareNames(id: string, mode: string, additionalFields: IDataObject) { let suffix = id.replace(/-/g, '_'); @@ -35,7 +36,7 @@ export function prepareNames(id: string, mode: string, additionalFields: IDataOb export async function pgTriggerFunction( this: ITriggerFunctions, - db: pgPromise.IDatabase<{}, pg.IClient>, + db: PgpDatabase, additionalFields: IDataObject, functionName: string, triggerName: string, @@ -86,43 +87,12 @@ export async function pgTriggerFunction( } export async function initDB(this: ITriggerFunctions | ILoadOptionsFunctions) { - const credentials = await this.getCredentials('postgres'); + const credentials = await this.getCredentials('postgres'); const options = this.getNodeParameter('options', {}) as { connectionTimeout?: number; delayClosingIdleConnection?: number; }; - const pgp = pgPromise({ - // prevent spam in console "WARNING: Creating a duplicate database object for the same connection." - noWarnings: true, - }); - const config: IDataObject = { - host: credentials.host as string, - port: credentials.port as number, - database: credentials.database as string, - user: credentials.user as string, - password: credentials.password as string, - keepAlive: true, - }; - - if (options.connectionTimeout) { - config.connectionTimeoutMillis = options.connectionTimeout * 1000; - } - - if (options.delayClosingIdleConnection) { - config.keepAliveInitialDelayMillis = options.delayClosingIdleConnection * 1000; - } - - if (credentials.allowUnauthorizedCerts === true) { - config.ssl = { - rejectUnauthorized: false, - }; - } else { - config.ssl = !['disable', undefined].includes(credentials.ssl as string | undefined); - config.sslmode = (credentials.ssl as string) || 'disable'; - } - - const db = pgp(config); - return { db, pgp }; + return await configurePostgres.call(this, credentials, options); } export async function searchSchema(this: ILoadOptionsFunctions): Promise { diff --git a/packages/nodes-base/nodes/Postgres/PostgresTrigger.node.json b/packages/nodes-base/nodes/Postgres/PostgresTrigger.node.json index 49f18daf8e..df1b18ea77 100644 --- a/packages/nodes-base/nodes/Postgres/PostgresTrigger.node.json +++ b/packages/nodes-base/nodes/Postgres/PostgresTrigger.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/postgres" + "url": "https://docs.n8n.io/integrations/builtin/credentials/postgres/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Postgres/PostgresTrigger.node.ts b/packages/nodes-base/nodes/Postgres/PostgresTrigger.node.ts index 639da1d3e6..1bf2334071 100644 --- a/packages/nodes-base/nodes/Postgres/PostgresTrigger.node.ts +++ b/packages/nodes-base/nodes/Postgres/PostgresTrigger.node.ts @@ -5,6 +5,7 @@ import { type INodeTypeDescription, type ITriggerFunctions, type ITriggerResponse, + NodeConnectionType, } from 'n8n-workflow'; import { pgTriggerFunction, @@ -38,7 +39,7 @@ export class PostgresTrigger implements INodeType { "Once you've finished building your workflow, activate it to have it also listen continuously (you just won't see those executions here).", }, inputs: [], - outputs: ['main'], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'postgres', @@ -213,7 +214,7 @@ export class PostgresTrigger implements INodeType { displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, options: [ { @@ -289,7 +290,7 @@ export class PostgresTrigger implements INodeType { await connection.query('SELECT 1'); } catch { // connection already closed. Can't perform cleanup - // eslint-disable-next-line n8n-nodes-base/node-execute-block-wrong-error-thrown + throw new TriggerCloseError(this.getNode(), { level: 'warning' }); } @@ -315,7 +316,6 @@ export class PostgresTrigger implements INodeType { ]); } } catch (error) { - // eslint-disable-next-line n8n-nodes-base/node-execute-block-wrong-error-thrown throw new TriggerCloseError(this.getNode(), { cause: error as Error, level: 'error' }); } } finally { diff --git a/packages/nodes-base/nodes/Postgres/test/v2/operations.test.ts b/packages/nodes-base/nodes/Postgres/test/v2/operations.test.ts index 61484e54a1..0f97966769 100644 --- a/packages/nodes-base/nodes/Postgres/test/v2/operations.test.ts +++ b/packages/nodes-base/nodes/Postgres/test/v2/operations.test.ts @@ -46,6 +46,9 @@ const createMockExecuteFunction = (nodeParameters: IDataObject) => { node.parameters = { ...node.parameters, ...(nodeParameters as INodeParameters) }; return node; }, + evaluateExpression(str: string, _: number) { + return str.replace('{{', '').replace('}}', ''); + }, } as unknown as IExecuteFunctions; return fakeExecuteFunction; }; @@ -219,6 +222,97 @@ describe('Test PostgresV2, executeQuery operation', () => { nodeOptions, ); }); + + it('should call runQueries and insert enclosed placeholder into values', async () => { + const nodeParameters: IDataObject = { + operation: 'executeQuery', + query: "select '$1';", + options: {}, + }; + const nodeOptions = nodeParameters.options as IDataObject; + + await executeQuery.execute.call( + createMockExecuteFunction(nodeParameters), + runQueries, + items, + nodeOptions, + ); + + expect(runQueries).toHaveBeenCalledWith( + [{ query: 'select $1;', values: ['$1'] }], + items, + nodeOptions, + ); + }); + + it('should call runQueries and not insert enclosed placeholder into values because queryReplacement is defined', async () => { + const nodeParameters: IDataObject = { + operation: 'executeQuery', + query: "select '$1';", + options: { + queryReplacement: 'my_table', + }, + }; + const nodeOptions = nodeParameters.options as IDataObject; + + await executeQuery.execute.call( + createMockExecuteFunction(nodeParameters), + runQueries, + items, + nodeOptions, + ); + + expect(runQueries).toHaveBeenCalledWith( + [{ query: "select '$1';", values: ['my_table'] }], + items, + nodeOptions, + ); + }); + + it('should call runQueries and insert enclosed placeholder into values because treatQueryParametersInSingleQuotesAsText is true', async () => { + const nodeParameters: IDataObject = { + operation: 'executeQuery', + query: "select '$1';", + options: { + queryReplacement: 'my_table', + treatQueryParametersInSingleQuotesAsText: true, + }, + }; + const nodeOptions = nodeParameters.options as IDataObject; + + await executeQuery.execute.call( + createMockExecuteFunction(nodeParameters), + runQueries, + items, + nodeOptions, + ); + + expect(runQueries).toHaveBeenCalledWith( + [{ query: 'select $2;', values: ['my_table', '$1'] }], + items, + nodeOptions, + ); + }); + + it('should call runQueries with falsy query replacements', async () => { + const nodeParameters: IDataObject = { + operation: 'executeQuery', + query: 'SELECT *\nFROM users\nWHERE username IN ($1, $2, $3)', + options: { + queryReplacement: '={{ 0 }}, {{ null }}, {{ 0 }}', + }, + }; + const nodeOptions = nodeParameters.options as IDataObject; + + expect(async () => { + await executeQuery.execute.call( + createMockExecuteFunction(nodeParameters), + runQueries, + items, + nodeOptions, + ); + }).not.toThrow(); + }); }); describe('Test PostgresV2, insert operation', () => { diff --git a/packages/nodes-base/nodes/Postgres/v1/PostgresV1.node.ts b/packages/nodes-base/nodes/Postgres/v1/PostgresV1.node.ts index f4b780f423..e45f5232c9 100644 --- a/packages/nodes-base/nodes/Postgres/v1/PostgresV1.node.ts +++ b/packages/nodes-base/nodes/Postgres/v1/PostgresV1.node.ts @@ -1,4 +1,3 @@ -/* eslint-disable n8n-nodes-base/node-filename-against-convention */ import type { ICredentialsDecrypted, ICredentialTestFunctions, @@ -10,7 +9,7 @@ import type { INodeTypeBaseDescription, INodeTypeDescription, } from 'n8n-workflow'; -import { NodeOperationError } from 'n8n-workflow'; +import { NodeConnectionType, NodeOperationError } from 'n8n-workflow'; import pgPromise from 'pg-promise'; @@ -28,8 +27,8 @@ const versionDescription: INodeTypeDescription = { defaults: { name: 'Postgres', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'postgres', diff --git a/packages/nodes-base/nodes/Postgres/v1/genericFunctions.ts b/packages/nodes-base/nodes/Postgres/v1/genericFunctions.ts index 9420c427a1..834779d1a0 100644 --- a/packages/nodes-base/nodes/Postgres/v1/genericFunctions.ts +++ b/packages/nodes-base/nodes/Postgres/v1/genericFunctions.ts @@ -536,8 +536,10 @@ export async function pgUpdate( } else { const where = ' WHERE ' + - // eslint-disable-next-line n8n-local-rules/no-interpolation-in-regular-string - updateKeys.map((entry) => pgp.as.name(entry.name) + ' = ${' + entry.prop + '}').join(' AND '); + updateKeys + // eslint-disable-next-line n8n-local-rules/no-interpolation-in-regular-string + .map((entry) => pgp.as.name(entry.name) + ' = ${' + entry.prop + '}') + .join(' AND '); if (mode === 'transaction') { return await db.tx(async (t) => { const result: IDataObject[] = []; @@ -664,8 +666,10 @@ export async function pgUpdateV2( } else { const where = ' WHERE ' + - // eslint-disable-next-line n8n-local-rules/no-interpolation-in-regular-string - updateKeys.map((entry) => pgp.as.name(entry.name) + ' = ${' + entry.prop + '}').join(' AND '); + updateKeys + // eslint-disable-next-line n8n-local-rules/no-interpolation-in-regular-string + .map((entry) => pgp.as.name(entry.name) + ' = ${' + entry.prop + '}') + .join(' AND '); if (mode === 'transaction') { return await db.tx(async (t) => { const result: IDataObject[] = []; diff --git a/packages/nodes-base/nodes/Postgres/v2/actions/common.descriptions.ts b/packages/nodes-base/nodes/Postgres/v2/actions/common.descriptions.ts index 1d4088820f..d737758399 100644 --- a/packages/nodes-base/nodes/Postgres/v2/actions/common.descriptions.ts +++ b/packages/nodes-base/nodes/Postgres/v2/actions/common.descriptions.ts @@ -4,7 +4,7 @@ export const optionsCollection: INodeProperties = { displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, options: [ { @@ -79,6 +79,17 @@ export const optionsCollection: INodeProperties = { show: { '/operation': ['executeQuery'] }, }, }, + { + // eslint-disable-next-line n8n-nodes-base/node-param-display-name-miscased + displayName: 'Treat query parameters in single quotes as text', + name: 'treatQueryParametersInSingleQuotesAsText', + type: 'boolean', + default: false, + description: "Whether to treat query parameters enclosed in single quotes as text e.g. '$1'", + displayOptions: { + show: { queryReplacement: [{ _cnd: { exists: true } }] }, + }, + }, { // eslint-disable-next-line n8n-nodes-base/node-param-display-name-wrong-for-dynamic-multi-options displayName: 'Output Columns', @@ -86,7 +97,7 @@ export const optionsCollection: INodeProperties = { type: 'multiOptions', // eslint-disable-next-line n8n-nodes-base/node-param-description-wrong-for-dynamic-multi-options description: - 'Choose from the list, or specify IDs using an expression', + 'Choose from the list, or specify IDs using an expression', typeOptions: { loadOptionsMethod: 'getColumnsMultiOptions', loadOptionsDependsOn: ['table.value'], @@ -215,7 +226,7 @@ export const whereFixedCollection: INodeProperties = { type: 'options', // eslint-disable-next-line n8n-nodes-base/node-param-description-wrong-for-dynamic-options description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', default: '', placeholder: 'e.g. ID', typeOptions: { @@ -307,7 +318,7 @@ export const sortFixedCollection: INodeProperties = { type: 'options', // eslint-disable-next-line n8n-nodes-base/node-param-description-wrong-for-dynamic-options description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', default: '', typeOptions: { loadOptionsMethod: 'getColumns', diff --git a/packages/nodes-base/nodes/Postgres/v2/actions/database/executeQuery.operation.ts b/packages/nodes-base/nodes/Postgres/v2/actions/database/executeQuery.operation.ts index 6d7908905e..d103abd399 100644 --- a/packages/nodes-base/nodes/Postgres/v2/actions/database/executeQuery.operation.ts +++ b/packages/nodes-base/nodes/Postgres/v2/actions/database/executeQuery.operation.ts @@ -3,6 +3,7 @@ import type { IExecuteFunctions, INodeExecutionData, INodeProperties, + NodeParameterValueType, } from 'n8n-workflow'; import { NodeOperationError } from 'n8n-workflow'; @@ -78,22 +79,45 @@ export async function execute( const rawReplacements = (node.parameters.options as IDataObject)?.queryReplacement as string; - if (rawReplacements) { - const rawValues = rawReplacements - .replace(/^=+/, '') + const stringToArray = (str: NodeParameterValueType | undefined) => { + if (str === undefined) return []; + return String(str) .split(',') .filter((entry) => entry) .map((entry) => entry.trim()); + }; - for (const rawValue of rawValues) { - const resolvables = getResolvables(rawValue); + if (rawReplacements) { + const nodeVersion = nodeOptions.nodeVersion as number; + if (nodeVersion >= 2.5) { + const rawValues = rawReplacements.replace(/^=+/, ''); + const resolvables = getResolvables(rawValues); if (resolvables.length) { for (const resolvable of resolvables) { - values.push(this.evaluateExpression(`${resolvable}`, i) as IDataObject); + const evaluatedValues = stringToArray(this.evaluateExpression(`${resolvable}`, i)); + if (evaluatedValues.length) values.push(...evaluatedValues); } } else { - values.push(rawValue); + values.push(...stringToArray(rawValues)); + } + } else { + const rawValues = rawReplacements + .replace(/^=+/, '') + .split(',') + .filter((entry) => entry) + .map((entry) => entry.trim()); + + for (const rawValue of rawValues) { + const resolvables = getResolvables(rawValue); + + if (resolvables.length) { + for (const resolvable of resolvables) { + values.push(this.evaluateExpression(`${resolvable}`, i) as IDataObject); + } + } else { + values.push(rawValue); + } } } } @@ -109,6 +133,16 @@ export async function execute( } } + if (!queryReplacement || nodeOptions.treatQueryParametersInSingleQuotesAsText) { + let nextValueIndex = values.length + 1; + const literals = query.match(/'\$[0-9]+'/g) ?? []; + for (const literal of literals) { + query = query.replace(literal, `$${nextValueIndex}`); + values.push(literal.replace(/'/g, '')); + nextValueIndex++; + } + } + queries.push({ query, values }); } diff --git a/packages/nodes-base/nodes/Postgres/v2/actions/database/insert.operation.ts b/packages/nodes-base/nodes/Postgres/v2/actions/database/insert.operation.ts index 13927797c7..e76c4f95cb 100644 --- a/packages/nodes-base/nodes/Postgres/v2/actions/database/insert.operation.ts +++ b/packages/nodes-base/nodes/Postgres/v2/actions/database/insert.operation.ts @@ -94,7 +94,7 @@ const properties: INodeProperties[] = [ type: 'options', // eslint-disable-next-line n8n-nodes-base/node-param-description-wrong-for-dynamic-options description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getColumns', loadOptionsDependsOn: ['schema.value', 'table.value'], diff --git a/packages/nodes-base/nodes/Postgres/v2/actions/database/update.operation.ts b/packages/nodes-base/nodes/Postgres/v2/actions/database/update.operation.ts index 6c5db84770..e04b845e2f 100644 --- a/packages/nodes-base/nodes/Postgres/v2/actions/database/update.operation.ts +++ b/packages/nodes-base/nodes/Postgres/v2/actions/database/update.operation.ts @@ -76,13 +76,13 @@ const properties: INodeProperties[] = [ required: true, // eslint-disable-next-line n8n-nodes-base/node-param-description-wrong-for-dynamic-options description: - 'The column to compare when finding the rows to update. Choose from the list, or specify an ID using an expression.', + 'The column to compare when finding the rows to update. Choose from the list, or specify an ID using an expression.', typeOptions: { loadOptionsMethod: 'getColumns', loadOptionsDependsOn: ['schema.value', 'table.value'], }, default: '', - hint: 'The column that identifies the row(s) to modify', + hint: 'The column to use when matching rows in Postgres to the input items of this node. Usually an ID.', displayOptions: { show: { '@version': [2, 2.1], @@ -131,7 +131,7 @@ const properties: INodeProperties[] = [ type: 'options', // eslint-disable-next-line n8n-nodes-base/node-param-description-wrong-for-dynamic-options description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getColumnsWithoutColumnToMatchOn', loadOptionsDependsOn: ['schema.value', 'table.value'], diff --git a/packages/nodes-base/nodes/Postgres/v2/actions/database/upsert.operation.ts b/packages/nodes-base/nodes/Postgres/v2/actions/database/upsert.operation.ts index 47a0a94493..5ccc01a9e3 100644 --- a/packages/nodes-base/nodes/Postgres/v2/actions/database/upsert.operation.ts +++ b/packages/nodes-base/nodes/Postgres/v2/actions/database/upsert.operation.ts @@ -75,7 +75,7 @@ const properties: INodeProperties[] = [ required: true, // eslint-disable-next-line n8n-nodes-base/node-param-description-wrong-for-dynamic-options description: - 'The column to compare when finding the rows to update. Choose from the list, or specify an ID using an expression.', + 'The column to compare when finding the rows to update. Choose from the list, or specify an ID using an expression.', typeOptions: { loadOptionsMethod: 'getColumns', loadOptionsDependsOn: ['schema.value', 'table.value'], @@ -130,7 +130,7 @@ const properties: INodeProperties[] = [ type: 'options', // eslint-disable-next-line n8n-nodes-base/node-param-description-wrong-for-dynamic-options description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getColumnsWithoutColumnToMatchOn', loadOptionsDependsOn: ['schema.value', 'table.value'], diff --git a/packages/nodes-base/nodes/Postgres/v2/actions/router.ts b/packages/nodes-base/nodes/Postgres/v2/actions/router.ts index ec9d97499a..f48060ec3b 100644 --- a/packages/nodes-base/nodes/Postgres/v2/actions/router.ts +++ b/packages/nodes-base/nodes/Postgres/v2/actions/router.ts @@ -15,13 +15,13 @@ export async function router(this: IExecuteFunctions): Promise('resource', 0); const operation = this.getNodeParameter('operation', 0); - const credentials = (await this.getCredentials('postgres')) as PostgresNodeCredentials; + const credentials = await this.getCredentials('postgres'); const options = this.getNodeParameter('options', 0, {}) as PostgresNodeOptions; const node = this.getNode(); options.nodeVersion = node.typeVersion; options.operation = operation; - const { db, pgp, sshClient } = await configurePostgres(credentials, options); + const { db, pgp } = await configurePostgres.call(this, credentials, options); const runQueries = configureQueryRunner.call( this, @@ -53,13 +53,7 @@ export async function router(this: IExecuteFunctions): Promise; export type PgpDatabase = pgPromise.IDatabase<{}, pg.IClient>; export type PgpConnectionParameters = pg.IConnectionParameters; -export type ConnectionsData = { db: PgpDatabase; pgp: PgpClient; sshClient?: Client }; +export type ConnectionsData = { db: PgpDatabase; pgp: PgpClient }; export type QueriesRunner = ( queries: QueryWithValues[], @@ -48,10 +47,10 @@ export type PostgresNodeOptions = { largeNumbersOutput?: 'numbers' | 'text'; skipOnConflict?: boolean; replaceEmptyStrings?: boolean; + treatQueryParametersInSingleQuotesAsText?: boolean; }; export type PostgresNodeCredentials = { - sshAuthenticateWith: 'password' | 'privateKey'; host: string; port: number; database: string; @@ -59,12 +58,9 @@ export type PostgresNodeCredentials = { password: string; allowUnauthorizedCerts?: boolean; ssl?: 'disable' | 'allow' | 'require' | 'verify' | 'verify-full'; - sshTunnel?: boolean; - sshHost?: string; - sshPort?: number; - sshPostgresPort?: number; - sshUser?: string; - sshPassword?: string; - privateKey?: string; - passphrase?: string; -}; +} & ( + | { sshTunnel: false } + | ({ + sshTunnel: true; + } & SSHCredentials) +); diff --git a/packages/nodes-base/nodes/Postgres/v2/methods/credentialTest.ts b/packages/nodes-base/nodes/Postgres/v2/methods/credentialTest.ts index 1b4d588fa3..59cb83b5da 100644 --- a/packages/nodes-base/nodes/Postgres/v2/methods/credentialTest.ts +++ b/packages/nodes-base/nodes/Postgres/v2/methods/credentialTest.ts @@ -4,7 +4,6 @@ import type { INodeCredentialTestResult, } from 'n8n-workflow'; -import { Client } from 'ssh2'; import { configurePostgres } from '../transport'; import type { PgpClient, PostgresNodeCredentials } from '../helpers/interfaces'; @@ -15,13 +14,11 @@ export async function postgresConnectionTest( ): Promise { const credentials = credential.data as PostgresNodeCredentials; - let sshClientCreated: Client | undefined = new Client(); let pgpClientCreated: PgpClient | undefined; try { - const { db, pgp, sshClient } = await configurePostgres(credentials, {}, sshClientCreated); + const { db, pgp } = await configurePostgres.call(this, credentials, {}); - sshClientCreated = sshClient; pgpClientCreated = pgp; await db.connect(); @@ -45,9 +42,6 @@ export async function postgresConnectionTest( message, }; } finally { - if (sshClientCreated) { - sshClientCreated.end(); - } if (pgpClientCreated) { pgpClientCreated.end(); } diff --git a/packages/nodes-base/nodes/Postgres/v2/methods/listSearch.ts b/packages/nodes-base/nodes/Postgres/v2/methods/listSearch.ts index 68c5c3d9ef..f81a66700f 100644 --- a/packages/nodes-base/nodes/Postgres/v2/methods/listSearch.ts +++ b/packages/nodes-base/nodes/Postgres/v2/methods/listSearch.ts @@ -4,10 +4,10 @@ import { configurePostgres } from '../transport'; import type { PostgresNodeCredentials } from '../helpers/interfaces'; export async function schemaSearch(this: ILoadOptionsFunctions): Promise { - const credentials = (await this.getCredentials('postgres')) as PostgresNodeCredentials; + const credentials = await this.getCredentials('postgres'); const options = { nodeVersion: this.getNode().typeVersion }; - const { db, sshClient } = await configurePostgres(credentials, options); + const { db } = await configurePostgres.call(this, credentials, options); try { const response = await db.any('SELECT schema_name FROM information_schema.schemata'); @@ -18,20 +18,15 @@ export async function schemaSearch(this: ILoadOptionsFunctions): Promise { - const credentials = (await this.getCredentials('postgres')) as PostgresNodeCredentials; + const credentials = await this.getCredentials('postgres'); const options = { nodeVersion: this.getNode().typeVersion }; - const { db, sshClient } = await configurePostgres(credentials, options); + const { db } = await configurePostgres.call(this, credentials, options); const schema = this.getNodeParameter('schema', 0, { extractValue: true, @@ -49,12 +44,7 @@ export async function tableSearch(this: ILoadOptionsFunctions): Promise { - const credentials = (await this.getCredentials('postgres')) as PostgresNodeCredentials; + const credentials = await this.getCredentials('postgres'); const options = { nodeVersion: this.getNode().typeVersion }; - const { db, sshClient } = await configurePostgres(credentials, options); + const { db } = await configurePostgres.call(this, credentials, options); const schema = this.getNodeParameter('schema', 0, { extractValue: true, @@ -26,12 +26,7 @@ export async function getColumns(this: ILoadOptionsFunctions): Promise { - const credentials = (await this.getCredentials('postgres')) as PostgresNodeCredentials; + const credentials = await this.getCredentials('postgres'); - const { db, sshClient } = await configurePostgres(credentials); + const { db } = await configurePostgres.call(this, credentials); const schema = this.getNodeParameter('schema', 0, { extractValue: true, @@ -89,12 +89,7 @@ export async function getMappingColumns( }), ); return { fields }; - } catch (error) { - throw error; } finally { - if (sshClient) { - sshClient.end(); - } if (!db.$pool.ending) await db.$pool.end(); } } diff --git a/packages/nodes-base/nodes/Postgres/v2/transport/index.ts b/packages/nodes-base/nodes/Postgres/v2/transport/index.ts index 7736805812..895c5738ab 100644 --- a/packages/nodes-base/nodes/Postgres/v2/transport/index.ts +++ b/packages/nodes-base/nodes/Postgres/v2/transport/index.ts @@ -1,72 +1,26 @@ -import type { Server } from 'net'; -import { createServer } from 'net'; -import { Client } from 'ssh2'; -import type { ConnectConfig } from 'ssh2'; - -import type { IDataObject } from 'n8n-workflow'; - +import { createServer, type AddressInfo } from 'node:net'; import pgPromise from 'pg-promise'; import type { - PgpDatabase, + IExecuteFunctions, + ICredentialTestFunctions, + ILoadOptionsFunctions, + ITriggerFunctions, +} from 'n8n-workflow'; + +import type { + ConnectionsData, + PgpConnectionParameters, PostgresNodeCredentials, PostgresNodeOptions, } from '../helpers/interfaces'; import { formatPrivateKey } from '@utils/utilities'; +import { LOCALHOST } from '@utils/constants'; -async function createSshConnectConfig(credentials: PostgresNodeCredentials) { - if (credentials.sshAuthenticateWith === 'password') { - return { - host: credentials.sshHost as string, - port: credentials.sshPort as number, - username: credentials.sshUser as string, - password: credentials.sshPassword as string, - } as ConnectConfig; - } else { - const options: ConnectConfig = { - host: credentials.sshHost as string, - username: credentials.sshUser as string, - port: credentials.sshPort as number, - privateKey: formatPrivateKey(credentials.privateKey as string), - }; - - if (credentials.passphrase) { - options.passphrase = credentials.passphrase; - } - - return options; - } -} - -export async function configurePostgres( +const getPostgresConfig = ( credentials: PostgresNodeCredentials, options: PostgresNodeOptions = {}, - createdSshClient?: Client, -) { - const pgp = pgPromise({ - // prevent spam in console "WARNING: Creating a duplicate database object for the same connection." - // duplicate connections created when auto loading parameters, they are closed imidiatly after, but several could be open at the same time - noWarnings: true, - }); - - if (typeof options.nodeVersion === 'number' && options.nodeVersion >= 2.1) { - // Always return dates as ISO strings - [pgp.pg.types.builtins.TIMESTAMP, pgp.pg.types.builtins.TIMESTAMPTZ].forEach((type) => { - pgp.pg.types.setTypeParser(type, (value: string) => { - return new Date(value).toISOString(); - }); - }); - } - - if (options.largeNumbersOutput === 'numbers') { - pgp.pg.types.setTypeParser(20, (value: string) => { - return parseInt(value, 10); - }); - pgp.pg.types.setTypeParser(1700, (value: string) => { - return parseFloat(value); - }); - } - - const dbConfig: IDataObject = { +) => { + const dbConfig: PgpConnectionParameters = { host: credentials.host, port: credentials.port, database: credentials.database, @@ -89,70 +43,97 @@ export async function configurePostgres( }; } else { dbConfig.ssl = !['disable', undefined].includes(credentials.ssl as string | undefined); + // @ts-ignore these typings need to be updated dbConfig.sslmode = credentials.ssl || 'disable'; } + return dbConfig; +}; + +export async function configurePostgres( + this: IExecuteFunctions | ICredentialTestFunctions | ILoadOptionsFunctions | ITriggerFunctions, + credentials: PostgresNodeCredentials, + options: PostgresNodeOptions = {}, +): Promise { + const pgp = pgPromise({ + // prevent spam in console "WARNING: Creating a duplicate database object for the same connection." + // duplicate connections created when auto loading parameters, they are closed immediately after, but several could be open at the same time + noWarnings: true, + }); + + if (typeof options.nodeVersion === 'number' && options.nodeVersion >= 2.1) { + // Always return dates as ISO strings + [pgp.pg.types.builtins.TIMESTAMP, pgp.pg.types.builtins.TIMESTAMPTZ].forEach((type) => { + pgp.pg.types.setTypeParser(type, (value: string) => { + const parsedDate = new Date(value); + + if (isNaN(parsedDate.getTime())) { + return value; + } + + return parsedDate.toISOString(); + }); + }); + } + + if (options.largeNumbersOutput === 'numbers') { + pgp.pg.types.setTypeParser(20, (value: string) => { + return parseInt(value, 10); + }); + pgp.pg.types.setTypeParser(1700, (value: string) => { + return parseFloat(value); + }); + } + + const dbConfig = getPostgresConfig(credentials, options); + if (!credentials.sshTunnel) { const db = pgp(dbConfig); return { db, pgp }; } else { - const sshClient = createdSshClient || new Client(); + if (credentials.sshAuthenticateWith === 'privateKey' && credentials.privateKey) { + credentials.privateKey = formatPrivateKey(credentials.privateKey); + } + const sshClient = await this.helpers.getSSHClient(credentials); - const tunnelConfig = await createSshConnectConfig(credentials); + // Create a TCP proxy listening on a random available port + const proxy = createServer(); + const proxyPort = await new Promise((resolve) => { + proxy.listen(0, LOCALHOST, () => { + resolve((proxy.address() as AddressInfo).port); + }); + }); - const localHost = '127.0.0.1'; - const localPort = credentials.sshPostgresPort as number; - - let proxy: Server | undefined; - - const db = await new Promise((resolve, reject) => { - let sshClientReady = false; - - proxy = createServer((socket) => { - if (!sshClientReady) return socket.destroy(); + const close = () => { + proxy.close(); + sshClient.off('end', close); + sshClient.off('error', close); + }; + sshClient.on('end', close); + sshClient.on('error', close); + await new Promise((resolve, reject) => { + proxy.on('error', (err) => reject(err)); + proxy.on('connection', (localSocket) => { sshClient.forwardOut( - socket.remoteAddress as string, - socket.remotePort as number, + LOCALHOST, + localSocket.remotePort!, credentials.host, credentials.port, - (err, stream) => { - if (err) reject(err); - - socket.pipe(stream); - stream.pipe(socket); + (err, clientChannel) => { + if (err) { + proxy.close(); + localSocket.destroy(); + } else { + localSocket.pipe(clientChannel); + clientChannel.pipe(localSocket); + } }, ); - }).listen(localPort, localHost); - - proxy.on('error', (err) => { - reject(err); - }); - - sshClient.connect(tunnelConfig); - - sshClient.on('ready', () => { - sshClientReady = true; - - const updatedDbConfig = { - ...dbConfig, - port: localPort, - host: localHost, - }; - const dbConnection = pgp(updatedDbConfig); - resolve(dbConnection); - }); - - sshClient.on('error', (err) => { - reject(err); - }); - - sshClient.on('end', async () => { - if (proxy) proxy.close(); }); + resolve(); }).catch((err) => { - if (proxy) proxy.close(); - if (sshClient) sshClient.end(); + proxy.close(); let message = err.message; let description = err.description; @@ -183,6 +164,11 @@ export async function configurePostgres( throw err; }); - return { db, pgp, sshClient }; + const db = pgp({ + ...dbConfig, + port: proxyPort, + host: LOCALHOST, + }); + return { db, pgp }; } } diff --git a/packages/nodes-base/nodes/Postmark/PostmarkTrigger.node.json b/packages/nodes-base/nodes/Postmark/PostmarkTrigger.node.json index 0b97c07095..cefc0e8e9d 100644 --- a/packages/nodes-base/nodes/Postmark/PostmarkTrigger.node.json +++ b/packages/nodes-base/nodes/Postmark/PostmarkTrigger.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/postmark" + "url": "https://docs.n8n.io/integrations/builtin/credentials/postmark/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Postmark/PostmarkTrigger.node.ts b/packages/nodes-base/nodes/Postmark/PostmarkTrigger.node.ts index 54252a6cc5..50197ef01d 100644 --- a/packages/nodes-base/nodes/Postmark/PostmarkTrigger.node.ts +++ b/packages/nodes-base/nodes/Postmark/PostmarkTrigger.node.ts @@ -1,10 +1,11 @@ -import type { - IDataObject, - IHookFunctions, - IWebhookFunctions, - INodeType, - INodeTypeDescription, - IWebhookResponseData, +import { + type IDataObject, + type IHookFunctions, + type IWebhookFunctions, + type INodeType, + type INodeTypeDescription, + type IWebhookResponseData, + NodeConnectionType, } from 'n8n-workflow'; import { @@ -26,7 +27,7 @@ export class PostmarkTrigger implements INodeType { name: 'Postmark Trigger', }, inputs: [], - outputs: ['main'], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'postmarkApi', diff --git a/packages/nodes-base/nodes/ProfitWell/MetricDescription.ts b/packages/nodes-base/nodes/ProfitWell/MetricDescription.ts index 3b39bb302c..9502f335b3 100644 --- a/packages/nodes-base/nodes/ProfitWell/MetricDescription.ts +++ b/packages/nodes-base/nodes/ProfitWell/MetricDescription.ts @@ -88,7 +88,7 @@ export const metricFields: INodeProperties[] = [ displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', displayOptions: { show: { resource: ['metric'], @@ -106,7 +106,7 @@ export const metricFields: INodeProperties[] = [ }, default: '', description: - 'Only return the metric for this Plan ID. Choose from the list, or specify an ID using an expression.', + 'Only return the metric for this Plan ID. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Metrics', diff --git a/packages/nodes-base/nodes/ProfitWell/ProfitWell.node.json b/packages/nodes-base/nodes/ProfitWell/ProfitWell.node.json index fed13d60f6..07ad5a8ab5 100644 --- a/packages/nodes-base/nodes/ProfitWell/ProfitWell.node.json +++ b/packages/nodes-base/nodes/ProfitWell/ProfitWell.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/profitWell" + "url": "https://docs.n8n.io/integrations/builtin/credentials/profitWell/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/ProfitWell/ProfitWell.node.ts b/packages/nodes-base/nodes/ProfitWell/ProfitWell.node.ts index 47c29d133a..8298e68340 100644 --- a/packages/nodes-base/nodes/ProfitWell/ProfitWell.node.ts +++ b/packages/nodes-base/nodes/ProfitWell/ProfitWell.node.ts @@ -1,11 +1,12 @@ -import type { - IExecuteFunctions, - IDataObject, - ILoadOptionsFunctions, - INodeExecutionData, - INodePropertyOptions, - INodeType, - INodeTypeDescription, +import { + type IExecuteFunctions, + type IDataObject, + type ILoadOptionsFunctions, + type INodeExecutionData, + type INodePropertyOptions, + type INodeType, + type INodeTypeDescription, + NodeConnectionType, } from 'n8n-workflow'; import type { Metrics } from './GenericFunctions'; @@ -32,8 +33,8 @@ export class ProfitWell implements INodeType { defaults: { name: 'ProfitWell', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'profitWellApi', @@ -138,7 +139,7 @@ export class ProfitWell implements INodeType { returnData.push(responseData as IDataObject); } } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push({ error: error.message }); continue; } diff --git a/packages/nodes-base/nodes/Pushbullet/Pushbullet.node.json b/packages/nodes-base/nodes/Pushbullet/Pushbullet.node.json index 32604edfb5..55d1a43f70 100644 --- a/packages/nodes-base/nodes/Pushbullet/Pushbullet.node.json +++ b/packages/nodes-base/nodes/Pushbullet/Pushbullet.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/pushbullet" + "url": "https://docs.n8n.io/integrations/builtin/credentials/pushbullet/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Pushbullet/Pushbullet.node.ts b/packages/nodes-base/nodes/Pushbullet/Pushbullet.node.ts index e918bc1352..1393d07ccd 100644 --- a/packages/nodes-base/nodes/Pushbullet/Pushbullet.node.ts +++ b/packages/nodes-base/nodes/Pushbullet/Pushbullet.node.ts @@ -7,6 +7,7 @@ import type { INodeType, INodeTypeDescription, } from 'n8n-workflow'; +import { NodeConnectionType } from 'n8n-workflow'; import moment from 'moment-timezone'; import { pushbulletApiRequest, pushbulletApiRequestAllItems } from './GenericFunctions'; @@ -23,8 +24,8 @@ export class Pushbullet implements INodeType { defaults: { name: 'Pushbullet', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'pushbulletOAuth2Api', @@ -242,7 +243,7 @@ export class Pushbullet implements INodeType { }, default: '', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', }, { displayName: 'Push ID', @@ -492,7 +493,7 @@ export class Pushbullet implements INodeType { returnData.push(...executionData); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { const executionErrorData = this.helpers.constructExecutionMetaData( this.helpers.returnJsonArray({ error: error.message }), { itemData: { item: i } }, diff --git a/packages/nodes-base/nodes/Pushcut/Pushcut.node.json b/packages/nodes-base/nodes/Pushcut/Pushcut.node.json index 52f6eaaf0e..9f96c232aa 100644 --- a/packages/nodes-base/nodes/Pushcut/Pushcut.node.json +++ b/packages/nodes-base/nodes/Pushcut/Pushcut.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/pushcut" + "url": "https://docs.n8n.io/integrations/builtin/credentials/pushcut/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Pushcut/Pushcut.node.ts b/packages/nodes-base/nodes/Pushcut/Pushcut.node.ts index 9b35c6c54c..0e67a72c84 100644 --- a/packages/nodes-base/nodes/Pushcut/Pushcut.node.ts +++ b/packages/nodes-base/nodes/Pushcut/Pushcut.node.ts @@ -7,6 +7,7 @@ import type { INodeType, INodeTypeDescription, } from 'n8n-workflow'; +import { NodeConnectionType } from 'n8n-workflow'; import { pushcutApiRequest } from './GenericFunctions'; @@ -23,8 +24,8 @@ export class Pushcut implements INodeType { defaults: { name: 'Pushcut', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'pushcutApi', @@ -70,7 +71,7 @@ export class Pushcut implements INodeType { name: 'notificationName', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getNotifications', }, @@ -104,7 +105,7 @@ export class Pushcut implements INodeType { }, default: [], description: - 'List of devices this notification is sent to. (default is all devices). Choose from the list, or specify IDs using an expression.', + 'List of devices this notification is sent to. (default is all devices). Choose from the list, or specify IDs using an expression.', }, { displayName: 'Input', diff --git a/packages/nodes-base/nodes/Pushcut/PushcutTrigger.node.json b/packages/nodes-base/nodes/Pushcut/PushcutTrigger.node.json index d7e75da64c..22a487eade 100644 --- a/packages/nodes-base/nodes/Pushcut/PushcutTrigger.node.json +++ b/packages/nodes-base/nodes/Pushcut/PushcutTrigger.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/pushcut" + "url": "https://docs.n8n.io/integrations/builtin/credentials/pushcut/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Pushcut/PushcutTrigger.node.ts b/packages/nodes-base/nodes/Pushcut/PushcutTrigger.node.ts index 58ad01d373..9be7738117 100644 --- a/packages/nodes-base/nodes/Pushcut/PushcutTrigger.node.ts +++ b/packages/nodes-base/nodes/Pushcut/PushcutTrigger.node.ts @@ -1,9 +1,10 @@ -import type { - IHookFunctions, - IWebhookFunctions, - INodeType, - INodeTypeDescription, - IWebhookResponseData, +import { + type IHookFunctions, + type IWebhookFunctions, + type INodeType, + type INodeTypeDescription, + type IWebhookResponseData, + NodeConnectionType, } from 'n8n-workflow'; import { pushcutApiRequest } from './GenericFunctions'; @@ -21,7 +22,7 @@ export class PushcutTrigger implements INodeType { name: 'Pushcut Trigger', }, inputs: [], - outputs: ['main'], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'pushcutApi', diff --git a/packages/nodes-base/nodes/Pushover/Pushover.node.json b/packages/nodes-base/nodes/Pushover/Pushover.node.json index 024c4e6e1b..7bd2281141 100644 --- a/packages/nodes-base/nodes/Pushover/Pushover.node.json +++ b/packages/nodes-base/nodes/Pushover/Pushover.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/pushover" + "url": "https://docs.n8n.io/integrations/builtin/credentials/pushover/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Pushover/Pushover.node.ts b/packages/nodes-base/nodes/Pushover/Pushover.node.ts index d7d24f69b9..4bde7d7e38 100644 --- a/packages/nodes-base/nodes/Pushover/Pushover.node.ts +++ b/packages/nodes-base/nodes/Pushover/Pushover.node.ts @@ -7,6 +7,7 @@ import type { INodeType, INodeTypeDescription, } from 'n8n-workflow'; +import { NodeConnectionType } from 'n8n-workflow'; import { pushoverApiRequest } from './GenericFunctions'; @@ -22,8 +23,8 @@ export class Pushover implements INodeType { defaults: { name: 'Pushover', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'pushoverApi', @@ -232,7 +233,7 @@ export class Pushover implements INodeType { }, default: '', description: - 'The name of one of the sounds supported by device clients to override the user\'s default sound choice. Choose from the list, or specify an ID using an expression.', + 'The name of one of the sounds supported by device clients to override the user\'s default sound choice. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Timestamp', @@ -358,7 +359,7 @@ export class Pushover implements INodeType { } } } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { const executionData = this.helpers.constructExecutionMetaData( this.helpers.returnJsonArray({ error: error.message }), { itemData: { item: i } }, diff --git a/packages/nodes-base/nodes/QuestDb/QuestDb.node.json b/packages/nodes-base/nodes/QuestDb/QuestDb.node.json index e4308777b2..a46c7d6893 100644 --- a/packages/nodes-base/nodes/QuestDb/QuestDb.node.json +++ b/packages/nodes-base/nodes/QuestDb/QuestDb.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/questDb" + "url": "https://docs.n8n.io/integrations/builtin/credentials/questDb/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/QuestDb/QuestDb.node.ts b/packages/nodes-base/nodes/QuestDb/QuestDb.node.ts index ad065b1d1d..5a26bfcfa7 100644 --- a/packages/nodes-base/nodes/QuestDb/QuestDb.node.ts +++ b/packages/nodes-base/nodes/QuestDb/QuestDb.node.ts @@ -4,7 +4,7 @@ import type { INodeType, INodeTypeDescription, } from 'n8n-workflow'; -import { NodeOperationError } from 'n8n-workflow'; +import { NodeConnectionType, NodeOperationError } from 'n8n-workflow'; import pgPromise from 'pg-promise'; @@ -22,8 +22,8 @@ export class QuestDb implements INodeType { defaults: { name: 'QuestDB', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], parameterPane: 'wide', credentials: [ { diff --git a/packages/nodes-base/nodes/QuickBase/GenericFunctions.ts b/packages/nodes-base/nodes/QuickBase/GenericFunctions.ts index 73d8232aa6..0f2cbee6db 100644 --- a/packages/nodes-base/nodes/QuickBase/GenericFunctions.ts +++ b/packages/nodes-base/nodes/QuickBase/GenericFunctions.ts @@ -62,9 +62,10 @@ export async function quickbaseApiRequest( } } -//@ts-ignore -// prettier-ignore -export async function getFieldsObject(this: IHookFunctions | ILoadOptionsFunctions | IExecuteFunctions, tableId: string): any { +export async function getFieldsObject( + this: IHookFunctions | ILoadOptionsFunctions | IExecuteFunctions, + tableId: string, +): Promise { const fieldsLabelKey: { [key: string]: number } = {}; const fieldsIdKey: { [key: number]: string } = {}; const data = await quickbaseApiRequest.call(this, 'GET', '/fields', {}, { tableId }); diff --git a/packages/nodes-base/nodes/QuickBase/QuickBase.node.json b/packages/nodes-base/nodes/QuickBase/QuickBase.node.json index 7ec1c64309..58af1bca67 100644 --- a/packages/nodes-base/nodes/QuickBase/QuickBase.node.json +++ b/packages/nodes-base/nodes/QuickBase/QuickBase.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/quickbase" + "url": "https://docs.n8n.io/integrations/builtin/credentials/quickbase/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/QuickBase/QuickBase.node.ts b/packages/nodes-base/nodes/QuickBase/QuickBase.node.ts index 55e081553c..fcd71125ce 100644 --- a/packages/nodes-base/nodes/QuickBase/QuickBase.node.ts +++ b/packages/nodes-base/nodes/QuickBase/QuickBase.node.ts @@ -8,7 +8,7 @@ import type { INodeType, INodeTypeDescription, } from 'n8n-workflow'; -import { NodeOperationError } from 'n8n-workflow'; +import { NodeConnectionType, NodeOperationError } from 'n8n-workflow'; import { generatePairedItemData } from '../../utils/utilities'; import { @@ -38,8 +38,8 @@ export class QuickBase implements INodeType { defaults: { name: 'Quick Base', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'quickbaseApi', diff --git a/packages/nodes-base/nodes/QuickBase/RecordDescription.ts b/packages/nodes-base/nodes/QuickBase/RecordDescription.ts index 4593027a6c..9d2f46c31e 100644 --- a/packages/nodes-base/nodes/QuickBase/RecordDescription.ts +++ b/packages/nodes-base/nodes/QuickBase/RecordDescription.ts @@ -98,7 +98,7 @@ export const recordFields: INodeProperties[] = [ displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, displayOptions: { show: { @@ -117,7 +117,7 @@ export const recordFields: INodeProperties[] = [ }, default: [], description: - 'Specify an array of field IDs that will return data for any updates or added record. Record ID (FID 3) is always returned if any field ID is requested. Choose from the list, or specify IDs using an expression.', + 'Specify an array of field IDs that will return data for any updates or added record. Record ID (FID 3) is always returned if any field ID is requested. Choose from the list, or specify IDs using an expression.', }, { displayName: 'Use Field IDs', @@ -231,7 +231,7 @@ export const recordFields: INodeProperties[] = [ }, default: [], description: - 'An array of field IDs for the fields that should be returned in the response. If empty, the default columns on the table will be returned. Choose from the list, or specify IDs using an expression.', + 'An array of field IDs for the fields that should be returned in the response. If empty, the default columns on the table will be returned. Choose from the list, or specify IDs using an expression.', }, { displayName: 'Sort By', @@ -256,7 +256,7 @@ export const recordFields: INodeProperties[] = [ }, default: '', description: - 'The unique identifier of a field in a table. Choose from the list, or specify an ID using an expression.', + 'The unique identifier of a field in a table. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Order', @@ -353,7 +353,7 @@ export const recordFields: INodeProperties[] = [ displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, displayOptions: { show: { @@ -372,7 +372,7 @@ export const recordFields: INodeProperties[] = [ }, default: [], description: - 'Specify an array of field IDs that will return data for any updates or added record. Record ID (FID 3) is always returned if any field ID is requested. Choose from the list, or specify IDs using an expression.', + 'Specify an array of field IDs that will return data for any updates or added record. Record ID (FID 3) is always returned if any field ID is requested. Choose from the list, or specify IDs using an expression.', }, { displayName: 'Use Field IDs', @@ -456,7 +456,7 @@ export const recordFields: INodeProperties[] = [ }, default: '', description: - '

You\'re updating records in a Quick Base table with data from an external file. In order for a merge like this to work, Quick Base needs a way to match records in the source data with corresponding records in the destination table.

You make this possible by choosing the field in the app table that holds unique matching values. This is called a merge field.

. Choose from the list, or specify an ID using an expression.', + '

You\'re updating records in a Quick Base table with data from an external file. In order for a merge like this to work, Quick Base needs a way to match records in the source data with corresponding records in the destination table.

You make this possible by choosing the field in the app table that holds unique matching values. This is called a merge field.

. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Simplify', @@ -475,7 +475,7 @@ export const recordFields: INodeProperties[] = [ displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, displayOptions: { show: { @@ -494,7 +494,7 @@ export const recordFields: INodeProperties[] = [ }, default: [], description: - 'Specify an array of field IDs that will return data for any updates or added record. Record ID (FID 3) is always returned if any field ID is requested. Choose from the list, or specify IDs using an expression.', + 'Specify an array of field IDs that will return data for any updates or added record. Record ID (FID 3) is always returned if any field ID is requested. Choose from the list, or specify IDs using an expression.', }, { displayName: 'Use Field IDs', diff --git a/packages/nodes-base/nodes/QuickBooks/GenericFunctions.ts b/packages/nodes-base/nodes/QuickBooks/GenericFunctions.ts index ebf727c366..16ef41b80e 100644 --- a/packages/nodes-base/nodes/QuickBooks/GenericFunctions.ts +++ b/packages/nodes-base/nodes/QuickBooks/GenericFunctions.ts @@ -254,9 +254,9 @@ export async function loadResource(this: ILoadOptionsFunctions, resource: string oauthTokenData: { callbackQueryString: { realmId }, }, - } = (await this.getCredentials('quickBooksOAuth2Api')) as { + } = await this.getCredentials<{ oauthTokenData: { callbackQueryString: { realmId: string } }; - }; + }>('quickBooksOAuth2Api'); const endpoint = `/v3/company/${realmId}/query`; const resourceItems = await quickBooksApiRequestAllItems.call( diff --git a/packages/nodes-base/nodes/QuickBooks/QuickBooks.node.json b/packages/nodes-base/nodes/QuickBooks/QuickBooks.node.json index 7d281c94c4..9f92726a97 100644 --- a/packages/nodes-base/nodes/QuickBooks/QuickBooks.node.json +++ b/packages/nodes-base/nodes/QuickBooks/QuickBooks.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/quickbooks" + "url": "https://docs.n8n.io/integrations/builtin/credentials/quickbooks/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/QuickBooks/QuickBooks.node.ts b/packages/nodes-base/nodes/QuickBooks/QuickBooks.node.ts index b95189f478..17e1e01e9d 100644 --- a/packages/nodes-base/nodes/QuickBooks/QuickBooks.node.ts +++ b/packages/nodes-base/nodes/QuickBooks/QuickBooks.node.ts @@ -7,7 +7,7 @@ import type { INodeType, INodeTypeDescription, } from 'n8n-workflow'; -import { NodeOperationError } from 'n8n-workflow'; +import { NodeConnectionType, NodeOperationError } from 'n8n-workflow'; import { capitalCase } from 'change-case'; import isEmpty from 'lodash/isEmpty'; @@ -61,8 +61,8 @@ export class QuickBooks implements INodeType { defaults: { name: 'QuickBooks Online', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'quickBooksOAuth2Api', @@ -1119,7 +1119,7 @@ export class QuickBooks implements INodeType { } } } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { const download = this.getNodeParameter('download', 0, false); if ( ['invoice', 'estimate', 'payment'].includes(resource) && diff --git a/packages/nodes-base/nodes/QuickBooks/descriptions/Bill/BillDescription.ts b/packages/nodes-base/nodes/QuickBooks/descriptions/Bill/BillDescription.ts index e30c80364c..d6a2ddbe19 100644 --- a/packages/nodes-base/nodes/QuickBooks/descriptions/Bill/BillDescription.ts +++ b/packages/nodes-base/nodes/QuickBooks/descriptions/Bill/BillDescription.ts @@ -54,7 +54,7 @@ export const billFields: INodeProperties[] = [ type: 'options', required: true, description: - 'The ID of the vendor who the bill is for. Choose from the list, or specify an ID using an expression.', + 'The ID of the vendor who the bill is for. Choose from the list, or specify an ID using an expression.', default: [], typeOptions: { loadOptionsMethod: 'getVendors', @@ -124,7 +124,7 @@ export const billFields: INodeProperties[] = [ name: 'itemId', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', default: [], typeOptions: { loadOptionsMethod: 'getItems', diff --git a/packages/nodes-base/nodes/QuickBooks/descriptions/Estimate/EstimateAdditionalFieldsOptions.ts b/packages/nodes-base/nodes/QuickBooks/descriptions/Estimate/EstimateAdditionalFieldsOptions.ts index ea1cbe1b68..615a8f9144 100644 --- a/packages/nodes-base/nodes/QuickBooks/descriptions/Estimate/EstimateAdditionalFieldsOptions.ts +++ b/packages/nodes-base/nodes/QuickBooks/descriptions/Estimate/EstimateAdditionalFieldsOptions.ts @@ -88,7 +88,7 @@ export const estimateAdditionalFieldsOptions: INodeProperties[] = [ }, default: '', description: - 'ID of the field to set. Choose from the list, or specify an ID using an expression.', + 'ID of the field to set. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Field Value', diff --git a/packages/nodes-base/nodes/QuickBooks/descriptions/Estimate/EstimateDescription.ts b/packages/nodes-base/nodes/QuickBooks/descriptions/Estimate/EstimateDescription.ts index 6c19bd7743..df0cf59473 100644 --- a/packages/nodes-base/nodes/QuickBooks/descriptions/Estimate/EstimateDescription.ts +++ b/packages/nodes-base/nodes/QuickBooks/descriptions/Estimate/EstimateDescription.ts @@ -59,7 +59,7 @@ export const estimateFields: INodeProperties[] = [ type: 'options', required: true, description: - 'The ID of the customer who the estimate is for. Choose from the list, or specify an ID using an expression.', + 'The ID of the customer who the estimate is for. Choose from the list, or specify an ID using an expression.', default: [], typeOptions: { loadOptionsMethod: 'getCustomers', @@ -119,7 +119,7 @@ export const estimateFields: INodeProperties[] = [ name: 'itemId', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', default: [], typeOptions: { loadOptionsMethod: 'getItems', @@ -137,7 +137,7 @@ export const estimateFields: INodeProperties[] = [ name: 'TaxCodeRef', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', default: [], typeOptions: { loadOptionsMethod: 'getTaxCodeRefs', diff --git a/packages/nodes-base/nodes/QuickBooks/descriptions/Invoice/InvoiceAdditionalFieldsOptions.ts b/packages/nodes-base/nodes/QuickBooks/descriptions/Invoice/InvoiceAdditionalFieldsOptions.ts index 2e1b4539c2..ba56b44215 100644 --- a/packages/nodes-base/nodes/QuickBooks/descriptions/Invoice/InvoiceAdditionalFieldsOptions.ts +++ b/packages/nodes-base/nodes/QuickBooks/descriptions/Invoice/InvoiceAdditionalFieldsOptions.ts @@ -97,7 +97,7 @@ export const invoiceAdditionalFieldsOptions: INodeProperties[] = [ }, default: '', description: - 'ID of the field to set. Choose from the list, or specify an ID using an expression.', + 'ID of the field to set. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Field Value', diff --git a/packages/nodes-base/nodes/QuickBooks/descriptions/Invoice/InvoiceDescription.ts b/packages/nodes-base/nodes/QuickBooks/descriptions/Invoice/InvoiceDescription.ts index d15cd417f9..8482828f69 100644 --- a/packages/nodes-base/nodes/QuickBooks/descriptions/Invoice/InvoiceDescription.ts +++ b/packages/nodes-base/nodes/QuickBooks/descriptions/Invoice/InvoiceDescription.ts @@ -64,7 +64,7 @@ export const invoiceFields: INodeProperties[] = [ type: 'options', required: true, description: - 'The ID of the customer who the invoice is for. Choose from the list, or specify an ID using an expression.', + 'The ID of the customer who the invoice is for. Choose from the list, or specify an ID using an expression.', default: [], typeOptions: { loadOptionsMethod: 'getCustomers', @@ -124,7 +124,7 @@ export const invoiceFields: INodeProperties[] = [ name: 'itemId', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', default: [], typeOptions: { loadOptionsMethod: 'getItems', @@ -142,7 +142,7 @@ export const invoiceFields: INodeProperties[] = [ name: 'TaxCodeRef', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', default: [], typeOptions: { loadOptionsMethod: 'getTaxCodeRefs', diff --git a/packages/nodes-base/nodes/QuickBooks/descriptions/Payment/PaymentDescription.ts b/packages/nodes-base/nodes/QuickBooks/descriptions/Payment/PaymentDescription.ts index faeec56d4a..a1d88d3bd2 100644 --- a/packages/nodes-base/nodes/QuickBooks/descriptions/Payment/PaymentDescription.ts +++ b/packages/nodes-base/nodes/QuickBooks/descriptions/Payment/PaymentDescription.ts @@ -64,7 +64,7 @@ export const paymentFields: INodeProperties[] = [ type: 'options', required: true, description: - 'The ID of the customer who the payment is for. Choose from the list, or specify an ID using an expression.', + 'The ID of the customer who the payment is for. Choose from the list, or specify an ID using an expression.', default: [], typeOptions: { loadOptionsMethod: 'getCustomers', diff --git a/packages/nodes-base/nodes/QuickBooks/descriptions/Transaction/TransactionDescription.ts b/packages/nodes-base/nodes/QuickBooks/descriptions/Transaction/TransactionDescription.ts index de30a9380f..18c46098ca 100644 --- a/packages/nodes-base/nodes/QuickBooks/descriptions/Transaction/TransactionDescription.ts +++ b/packages/nodes-base/nodes/QuickBooks/descriptions/Transaction/TransactionDescription.ts @@ -98,7 +98,7 @@ export const transactionFields: INodeProperties[] = [ type: 'multiOptions', default: [], description: - 'Customer to filter results by. Choose from the list, or specify IDs using an expression.', + 'Customer to filter results by. Choose from the list, or specify IDs using an expression.', typeOptions: { loadOptionsMethod: 'getCustomers', }, @@ -258,7 +258,7 @@ export const transactionFields: INodeProperties[] = [ type: 'multiOptions', default: [], description: - 'Department to filter results by. Choose from the list, or specify IDs using an expression.', + 'Department to filter results by. Choose from the list, or specify IDs using an expression.', typeOptions: { loadOptionsMethod: 'getDepartments', }, @@ -284,7 +284,7 @@ export const transactionFields: INodeProperties[] = [ type: 'multiOptions', default: [], description: - 'Memo to filter results by. Choose from the list, or specify IDs using an expression.', + 'Memo to filter results by. Choose from the list, or specify IDs using an expression.', typeOptions: { loadOptionsMethod: 'getMemos', }, @@ -350,7 +350,7 @@ export const transactionFields: INodeProperties[] = [ type: 'multiOptions', default: [], description: - 'Term to filter results by. Choose from the list, or specify IDs using an expression.', + 'Term to filter results by. Choose from the list, or specify IDs using an expression.', typeOptions: { loadOptionsMethod: 'getTerms', }, @@ -379,7 +379,7 @@ export const transactionFields: INodeProperties[] = [ type: 'multiOptions', default: [], description: - 'Vendor to filter results by. Choose from the list, or specify IDs using an expression.', + 'Vendor to filter results by. Choose from the list, or specify IDs using an expression.', typeOptions: { loadOptionsMethod: 'getVendors', }, diff --git a/packages/nodes-base/nodes/QuickChart/QuickChart.node.json b/packages/nodes-base/nodes/QuickChart/QuickChart.node.json index 3d8ea22e1d..f0282834fe 100644 --- a/packages/nodes-base/nodes/QuickChart/QuickChart.node.json +++ b/packages/nodes-base/nodes/QuickChart/QuickChart.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/integrations/builtin/credentials/quickchart" + "url": "https://docs.n8n.io/integrations/builtin/credentials/quickchart/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/QuickChart/QuickChart.node.ts b/packages/nodes-base/nodes/QuickChart/QuickChart.node.ts index defe162abd..c89249e84f 100644 --- a/packages/nodes-base/nodes/QuickChart/QuickChart.node.ts +++ b/packages/nodes-base/nodes/QuickChart/QuickChart.node.ts @@ -7,7 +7,7 @@ import type { INodeType, INodeTypeDescription, } from 'n8n-workflow'; -import { jsonParse, NodeOperationError } from 'n8n-workflow'; +import { jsonParse, NodeConnectionType, NodeOperationError } from 'n8n-workflow'; import { CHART_TYPE_OPTIONS, @@ -29,8 +29,8 @@ export class QuickChart implements INodeType { defaults: { name: 'QuickChart', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], properties: [ { displayName: 'Chart Type', @@ -126,7 +126,7 @@ export class QuickChart implements INodeType { displayName: 'Chart Options', name: 'chartOptions', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, options: [ { @@ -207,7 +207,7 @@ export class QuickChart implements INodeType { displayName: 'Dataset Options', name: 'datasetOptions', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, options: [ { diff --git a/packages/nodes-base/nodes/RabbitMQ/GenericFunctions.ts b/packages/nodes-base/nodes/RabbitMQ/GenericFunctions.ts index f85b20f078..c551e61863 100644 --- a/packages/nodes-base/nodes/RabbitMQ/GenericFunctions.ts +++ b/packages/nodes-base/nodes/RabbitMQ/GenericFunctions.ts @@ -1,64 +1,55 @@ -import type { IDataObject, IExecuteFunctions, ITriggerFunctions } from 'n8n-workflow'; -import { sleep } from 'n8n-workflow'; +import type { + IDataObject, + IExecuteFunctions, + INodeExecutionData, + ITriggerFunctions, +} from 'n8n-workflow'; +import { jsonParse, sleep } from 'n8n-workflow'; import * as amqplib from 'amqplib'; import { formatPrivateKey } from '@utils/utilities'; +import type { ExchangeType, Options, RabbitMQCredentials, TriggerOptions } from './types'; + +const credentialKeys = ['hostname', 'port', 'username', 'password', 'vhost'] as const; export async function rabbitmqConnect( - this: IExecuteFunctions | ITriggerFunctions, - options: IDataObject, -): Promise { - const credentials = await this.getCredentials('rabbitmq'); - - const credentialKeys = ['hostname', 'port', 'username', 'password', 'vhost']; - - const credentialData: IDataObject = {}; - credentialKeys.forEach((key) => { - credentialData[key] = credentials[key] === '' ? undefined : credentials[key]; - }); + credentials: RabbitMQCredentials, +): Promise { + const credentialData = credentialKeys.reduce((acc, key) => { + acc[key] = credentials[key] === '' ? undefined : credentials[key]; + return acc; + }, {} as IDataObject) as amqplib.Options.Connect; const optsData: IDataObject = {}; - if (credentials.ssl === true) { + if (credentials.ssl) { credentialData.protocol = 'amqps'; optsData.ca = - credentials.ca === '' ? undefined : [Buffer.from(formatPrivateKey(credentials.ca as string))]; - if (credentials.passwordless === true) { + credentials.ca === '' ? undefined : [Buffer.from(formatPrivateKey(credentials.ca))]; + if (credentials.passwordless) { optsData.cert = - credentials.cert === '' - ? undefined - : Buffer.from(formatPrivateKey(credentials.cert as string)); + credentials.cert === '' ? undefined : Buffer.from(formatPrivateKey(credentials.cert)); optsData.key = - credentials.key === '' - ? undefined - : Buffer.from(formatPrivateKey(credentials.key as string)); + credentials.key === '' ? undefined : Buffer.from(formatPrivateKey(credentials.key)); optsData.passphrase = credentials.passphrase === '' ? undefined : credentials.passphrase; optsData.credentials = amqplib.credentials.external(); } } + return await amqplib.connect(credentialData, optsData); +} + +export async function rabbitmqCreateChannel( + this: IExecuteFunctions | ITriggerFunctions, +): Promise { + const credentials = await this.getCredentials('rabbitmq'); + return await new Promise(async (resolve, reject) => { try { - const connection = await amqplib.connect(credentialData, optsData); - - connection.on('error', (error: Error) => { - reject(error); - }); - - const channel = (await connection.createChannel().catch(console.warn)) as amqplib.Channel; - - if ( - options.arguments && - ((options.arguments as IDataObject).argument! as IDataObject[]).length - ) { - const additionalArguments: IDataObject = {}; - ((options.arguments as IDataObject).argument as IDataObject[]).forEach( - (argument: IDataObject) => { - additionalArguments[argument.key as string] = argument.value; - }, - ); - options.arguments = additionalArguments; - } + const connection = await rabbitmqConnect(credentials); + // TODO: why is this error handler being added here? + connection.on('error', reject); + const channel = await connection.createChannel(); resolve(channel); } catch (error) { reject(error); @@ -69,9 +60,9 @@ export async function rabbitmqConnect( export async function rabbitmqConnectQueue( this: IExecuteFunctions | ITriggerFunctions, queue: string, - options: IDataObject, + options: Options | TriggerOptions, ): Promise { - const channel = await rabbitmqConnect.call(this, options); + const channel = await rabbitmqCreateChannel.call(this); return await new Promise(async (resolve, reject) => { try { @@ -81,16 +72,10 @@ export async function rabbitmqConnectQueue( await channel.checkQueue(queue); } - if (options.binding && ((options.binding as IDataObject).bindings! as IDataObject[]).length) { - ((options.binding as IDataObject).bindings as IDataObject[]).forEach( - async (binding: IDataObject) => { - await channel.bindQueue( - queue, - binding.exchange as string, - binding.routingKey as string, - ); - }, - ); + if ('binding' in options && options.binding?.bindings.length) { + options.binding.bindings.forEach(async (binding) => { + await channel.bindQueue(queue, binding.exchange, binding.routingKey); + }); } resolve(channel); @@ -103,15 +88,15 @@ export async function rabbitmqConnectQueue( export async function rabbitmqConnectExchange( this: IExecuteFunctions | ITriggerFunctions, exchange: string, - type: string, - options: IDataObject, + options: Options | TriggerOptions, ): Promise { - const channel = await rabbitmqConnect.call(this, options); + const exchangeType = this.getNodeParameter('exchangeType', 0) as ExchangeType; + const channel = await rabbitmqCreateChannel.call(this); return await new Promise(async (resolve, reject) => { try { if (options.assertExchange) { - await channel.assertExchange(exchange, type, options); + await channel.assertExchange(exchange, exchangeType, options); } else { await channel.checkExchange(exchange); } @@ -170,3 +155,41 @@ export class MessageTracker { await channel.connection.close(); } } + +export const parsePublishArguments = (options: Options) => { + const additionalArguments: IDataObject = {}; + if (options.arguments?.argument.length) { + options.arguments.argument.forEach((argument) => { + additionalArguments[argument.key] = argument.value; + }); + } + return additionalArguments as amqplib.Options.Publish; +}; + +export const parseMessage = async ( + message: amqplib.Message, + options: TriggerOptions, + helpers: ITriggerFunctions['helpers'], +): Promise => { + if (options.contentIsBinary) { + const { content } = message; + message.content = undefined as unknown as Buffer; + return { + binary: { + data: await helpers.prepareBinaryData(content), + }, + json: message as unknown as IDataObject, + }; + } else { + let content: IDataObject | string = message.content.toString(); + if (options.jsonParseBody) { + content = jsonParse(content); + } + if (options.onlyContent) { + return { json: content as IDataObject }; + } else { + message.content = content as unknown as Buffer; + return { json: message as unknown as IDataObject }; + } + } +}; diff --git a/packages/nodes-base/nodes/RabbitMQ/RabbitMQ.node.json b/packages/nodes-base/nodes/RabbitMQ/RabbitMQ.node.json index 2c8a46de71..d61960e84f 100644 --- a/packages/nodes-base/nodes/RabbitMQ/RabbitMQ.node.json +++ b/packages/nodes-base/nodes/RabbitMQ/RabbitMQ.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/rabbitMQ" + "url": "https://docs.n8n.io/integrations/builtin/credentials/rabbitMQ/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/RabbitMQ/RabbitMQ.node.ts b/packages/nodes-base/nodes/RabbitMQ/RabbitMQ.node.ts index b40aa981fd..29475c1ace 100644 --- a/packages/nodes-base/nodes/RabbitMQ/RabbitMQ.node.ts +++ b/packages/nodes-base/nodes/RabbitMQ/RabbitMQ.node.ts @@ -1,5 +1,5 @@ /* eslint-disable n8n-nodes-base/node-filename-against-convention */ -import * as amqplib from 'amqplib'; +import type * as amqplib from 'amqplib'; import type { IExecuteFunctions, ICredentialsDecrypted, @@ -11,10 +11,15 @@ import type { INodeTypeDescription, JsonObject, } from 'n8n-workflow'; -import { NodeApiError, NodeOperationError } from 'n8n-workflow'; +import { NodeApiError, NodeConnectionType, NodeOperationError } from 'n8n-workflow'; -import { rabbitmqConnectExchange, rabbitmqConnectQueue } from './GenericFunctions'; -import { formatPrivateKey } from '@utils/utilities'; +import { + parsePublishArguments, + rabbitmqConnect, + rabbitmqConnectExchange, + rabbitmqConnectQueue, +} from './GenericFunctions'; +import type { Options, RabbitMQCredentials } from './types'; export class RabbitMQ implements INodeType { description: INodeTypeDescription = { @@ -27,8 +32,8 @@ export class RabbitMQ implements INodeType { defaults: { name: 'RabbitMQ', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'rabbitmq', @@ -246,7 +251,7 @@ export class RabbitMQ implements INodeType { operation: ['sendMessage'], }, }, - placeholder: 'Add Option', + placeholder: 'Add option', options: [ { displayName: 'Alternate Exchange', @@ -265,7 +270,8 @@ export class RabbitMQ implements INodeType { displayName: 'Arguments', name: 'arguments', placeholder: 'Add Argument', - description: 'Arguments to add', + description: + 'Arguments to add, See here for valid options', type: 'fixedCollection', typeOptions: { multipleValues: true, @@ -361,38 +367,8 @@ export class RabbitMQ implements INodeType { this: ICredentialTestFunctions, credential: ICredentialsDecrypted, ): Promise { - const credentials = credential.data as IDataObject; try { - const credentialKeys = ['hostname', 'port', 'username', 'password', 'vhost']; - - const credentialData: IDataObject = {}; - credentialKeys.forEach((key) => { - credentialData[key] = credentials[key] === '' ? undefined : credentials[key]; - }); - - const optsData: IDataObject = {}; - if (credentials.ssl === true) { - credentialData.protocol = 'amqps'; - - optsData.ca = - credentials.ca === '' - ? undefined - : [Buffer.from(formatPrivateKey(credentials.ca as string))]; - if (credentials.passwordless === true) { - optsData.cert = - credentials.cert === '' - ? undefined - : Buffer.from(formatPrivateKey(credentials.cert as string)); - optsData.key = - credentials.key === '' - ? undefined - : Buffer.from(formatPrivateKey(credentials.key as string)); - optsData.passphrase = - credentials.passphrase === '' ? undefined : credentials.passphrase; - optsData.credentials = amqplib.credentials.external(); - } - } - const connection = await amqplib.connect(credentialData, optsData); + const connection = await rabbitmqConnect(credential.data as RabbitMQCredentials); await connection.close(); } catch (error) { return { @@ -409,7 +385,7 @@ export class RabbitMQ implements INodeType { }; async execute(this: IExecuteFunctions): Promise { - let channel, options: IDataObject; + let channel: amqplib.Channel | undefined; try { const items = this.getInputData(); const operation = this.getNodeParameter('operation', 0); @@ -422,7 +398,7 @@ export class RabbitMQ implements INodeType { if (mode === 'queue') { const queue = this.getNodeParameter('queue', 0) as string; - options = this.getNodeParameter('options', 0, {}); + const options = this.getNodeParameter('options', 0, {}) as Options; channel = await rabbitmqConnectQueue.call(this, queue, options); @@ -451,7 +427,13 @@ export class RabbitMQ implements INodeType { ); headers = additionalHeaders; } - queuePromises.push(channel.sendToQueue(queue, Buffer.from(message), { headers })); + + queuePromises.push( + channel.sendToQueue(queue, Buffer.from(message), { + headers, + ...parsePublishArguments(options), + }), + ); } // @ts-ignore @@ -484,12 +466,11 @@ export class RabbitMQ implements INodeType { await channel.connection.close(); } else if (mode === 'exchange') { const exchange = this.getNodeParameter('exchange', 0) as string; - const type = this.getNodeParameter('exchangeType', 0) as string; const routingKey = this.getNodeParameter('routingKey', 0) as string; - options = this.getNodeParameter('options', 0, {}); + const options = this.getNodeParameter('options', 0, {}) as Options; - channel = await rabbitmqConnectExchange.call(this, exchange, type, options); + channel = await rabbitmqConnectExchange.call(this, exchange, options); const sendInputData = this.getNodeParameter('sendInputData', 0) as boolean; @@ -519,7 +500,10 @@ export class RabbitMQ implements INodeType { } exchangePromises.push( - channel.publish(exchange, routingKey, Buffer.from(message), { headers }), + channel.publish(exchange, routingKey, Buffer.from(message), { + headers, + ...parsePublishArguments(options), + }), ); } diff --git a/packages/nodes-base/nodes/RabbitMQ/RabbitMQTrigger.node.json b/packages/nodes-base/nodes/RabbitMQ/RabbitMQTrigger.node.json index f2c58e7efe..777c9b1a1c 100644 --- a/packages/nodes-base/nodes/RabbitMQ/RabbitMQTrigger.node.json +++ b/packages/nodes-base/nodes/RabbitMQ/RabbitMQTrigger.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/rabbitMQ" + "url": "https://docs.n8n.io/integrations/builtin/credentials/rabbitMQ/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/RabbitMQ/RabbitMQTrigger.node.ts b/packages/nodes-base/nodes/RabbitMQ/RabbitMQTrigger.node.ts index ca9dd3c840..c57659b2c7 100644 --- a/packages/nodes-base/nodes/RabbitMQ/RabbitMQTrigger.node.ts +++ b/packages/nodes-base/nodes/RabbitMQ/RabbitMQTrigger.node.ts @@ -1,9 +1,8 @@ /* eslint-disable n8n-nodes-base/node-filename-against-convention */ +import type { Message } from 'amqplib'; import type { - IDataObject, IDeferredPromise, IExecuteResponsePromiseData, - INodeExecutionData, INodeProperties, INodeType, INodeTypeDescription, @@ -11,11 +10,12 @@ import type { ITriggerFunctions, ITriggerResponse, } from 'n8n-workflow'; -import { NodeOperationError } from 'n8n-workflow'; +import { NodeConnectionType, NodeOperationError } from 'n8n-workflow'; import { rabbitDefaultOptions } from './DefaultOptions'; -import { MessageTracker, rabbitmqConnectQueue } from './GenericFunctions'; +import { MessageTracker, rabbitmqConnectQueue, parseMessage } from './GenericFunctions'; +import type { TriggerOptions } from './types'; export class RabbitMQTrigger implements INodeType { description: INodeTypeDescription = { @@ -41,7 +41,7 @@ export class RabbitMQTrigger implements INodeType { "Once you’ve finished building your workflow, activate it to have it also listen continuously (you just won’t see those executions here).", }, inputs: [], - outputs: ['main'], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'rabbitmq', @@ -62,7 +62,7 @@ export class RabbitMQTrigger implements INodeType { name: 'options', type: 'collection', default: {}, - placeholder: 'Add Option', + placeholder: 'Add option', options: [ { displayName: 'Content Is Binary', @@ -205,28 +205,50 @@ export class RabbitMQTrigger implements INodeType { async trigger(this: ITriggerFunctions): Promise { const queue = this.getNodeParameter('queue') as string; - const options = this.getNodeParameter('options', {}) as IDataObject; - + const options = this.getNodeParameter('options', {}) as TriggerOptions; const channel = await rabbitmqConnectQueue.call(this, queue, options); - let parallelMessages = - options.parallelMessages !== undefined && options.parallelMessages !== -1 - ? parseInt(options.parallelMessages as string, 10) - : -1; + if (this.getMode() === 'manual') { + const manualTriggerFunction = async () => { + // Do only catch a single message when executing manually, else messages will leak + await channel.prefetch(1); - if (parallelMessages === 0 || parallelMessages < -1) { + const processMessage = async (message: Message | null) => { + if (message !== null) { + const item = await parseMessage(message, options, this.helpers); + channel.ack(message); + this.emit([[item]]); + } else { + this.emitError(new Error('Connection got closed unexpectedly')); + } + }; + + const existingMessage = await channel.get(queue); + if (existingMessage) await processMessage(existingMessage); + else await channel.consume(queue, processMessage); + }; + + const closeFunction = async () => { + await channel.close(); + await channel.connection.close(); + return; + }; + + return { + closeFunction, + manualTriggerFunction, + }; + } + + const parallelMessages = options.parallelMessages ?? -1; + if (isNaN(parallelMessages) || parallelMessages === 0 || parallelMessages < -1) { throw new NodeOperationError( this.getNode(), - 'Parallel message processing limit must be greater than zero (or -1 for no limit)', + 'Parallel message processing limit must be a number greater than zero (or -1 for no limit)', ); } - if (this.getMode() === 'manual') { - // Do only catch a single message when executing manually, else messages will leak - parallelMessages = 1; - } - - let acknowledgeMode = options.acknowledge ? options.acknowledge : 'immediately'; + let acknowledgeMode = options.acknowledge ?? 'immediately'; if (parallelMessages !== -1 && acknowledgeMode === 'immediately') { // If parallel message limit is set, then the default mode is "executionFinishes" @@ -236,108 +258,81 @@ export class RabbitMQTrigger implements INodeType { } const messageTracker = new MessageTracker(); - let consumerTag: string; let closeGotCalled = false; - const startConsumer = async () => { - if (parallelMessages !== -1) { - await channel.prefetch(parallelMessages); + if (parallelMessages !== -1) { + await channel.prefetch(parallelMessages); + } + + channel.on('close', () => { + if (!closeGotCalled) { + this.emitError(new Error('Connection got closed unexpectedly')); } + }); - channel.on('close', () => { - if (!closeGotCalled) { - this.emitError(new Error('Connection got closed unexpectedly')); - } - }); - - const consumerInfo = await channel.consume(queue, async (message) => { - if (message !== null) { - try { - if (acknowledgeMode !== 'immediately') { - messageTracker.received(message); - } - - let content: IDataObject | string = message.content.toString(); - - const item: INodeExecutionData = { - json: {}, - }; - if (options.contentIsBinary === true) { - item.binary = { - data: await this.helpers.prepareBinaryData(message.content), - }; - - item.json = message as unknown as IDataObject; - message.content = undefined as unknown as Buffer; - } else { - if (options.jsonParseBody === true) { - content = JSON.parse(content); - } - if (options.onlyContent === true) { - item.json = content as IDataObject; - } else { - message.content = content as unknown as Buffer; - item.json = message as unknown as IDataObject; - } - } - - let responsePromise: IDeferredPromise | undefined = undefined; - let responsePromiseHook: IDeferredPromise | undefined = - undefined; - if (acknowledgeMode !== 'immediately' && acknowledgeMode !== 'laterMessageNode') { - responsePromise = await this.helpers.createDeferredPromise(); - } else if (acknowledgeMode === 'laterMessageNode') { - responsePromiseHook = - await this.helpers.createDeferredPromise(); - } - if (responsePromiseHook) { - this.emit([[item]], responsePromiseHook, undefined); - } else { - this.emit([[item]], undefined, responsePromise); - } - if (responsePromise && acknowledgeMode !== 'laterMessageNode') { - // Acknowledge message after the execution finished - await responsePromise.promise().then(async (data: IRun) => { - if (data.data.resultData.error) { - // The execution did fail - if (acknowledgeMode === 'executionFinishesSuccessfully') { - channel.nack(message); - messageTracker.answered(message); - return; - } - } - channel.ack(message); - messageTracker.answered(message); - }); - } else if (responsePromiseHook && acknowledgeMode === 'laterMessageNode') { - await responsePromiseHook.promise().then(() => { - channel.ack(message); - messageTracker.answered(message); - }); - } else { - // Acknowledge message directly - channel.ack(message); - } - } catch (error) { - const workflow = this.getWorkflow(); - const node = this.getNode(); - if (acknowledgeMode !== 'immediately') { - messageTracker.answered(message); - } - - this.logger.error( - `There was a problem with the RabbitMQ Trigger node "${node.name}" in workflow "${workflow.id}": "${error.message}"`, - { - node: node.name, - workflowId: workflow.id, - }, - ); + const consumerInfo = await channel.consume(queue, async (message) => { + if (message !== null) { + try { + if (acknowledgeMode !== 'immediately') { + messageTracker.received(message); } + + const item = await parseMessage(message, options, this.helpers); + + let responsePromise: IDeferredPromise | undefined = undefined; + let responsePromiseHook: IDeferredPromise | undefined = + undefined; + if (acknowledgeMode !== 'immediately' && acknowledgeMode !== 'laterMessageNode') { + responsePromise = this.helpers.createDeferredPromise(); + } else if (acknowledgeMode === 'laterMessageNode') { + responsePromiseHook = this.helpers.createDeferredPromise(); + } + if (responsePromiseHook) { + this.emit([[item]], responsePromiseHook, undefined); + } else { + this.emit([[item]], undefined, responsePromise); + } + if (responsePromise && acknowledgeMode !== 'laterMessageNode') { + // Acknowledge message after the execution finished + await responsePromise.promise.then(async (data: IRun) => { + if (data.data.resultData.error) { + // The execution did fail + if (acknowledgeMode === 'executionFinishesSuccessfully') { + channel.nack(message); + messageTracker.answered(message); + return; + } + } + channel.ack(message); + messageTracker.answered(message); + }); + } else if (responsePromiseHook && acknowledgeMode === 'laterMessageNode') { + await responsePromiseHook.promise.then(() => { + channel.ack(message); + messageTracker.answered(message); + }); + } else { + // Acknowledge message directly + channel.ack(message); + } + } catch (error) { + const workflow = this.getWorkflow(); + const node = this.getNode(); + if (acknowledgeMode !== 'immediately') { + messageTracker.answered(message); + } + + this.logger.error( + `There was a problem with the RabbitMQ Trigger node "${node.name}" in workflow "${workflow.id}": "${error.message}"`, + { + node: node.name, + workflowId: workflow.id, + }, + ); } - }); - consumerTag = consumerInfo.consumerTag; - }; - await startConsumer(); + } + }); + const consumerTag = consumerInfo.consumerTag; // The "closeFunction" function gets called by n8n whenever // the workflow gets deactivated and can so clean up. diff --git a/packages/nodes-base/nodes/RabbitMQ/test/GenericFunctions.test.ts b/packages/nodes-base/nodes/RabbitMQ/test/GenericFunctions.test.ts new file mode 100644 index 0000000000..0532e67ae4 --- /dev/null +++ b/packages/nodes-base/nodes/RabbitMQ/test/GenericFunctions.test.ts @@ -0,0 +1,192 @@ +import type { Channel, Connection, ConsumeMessage, Message } from 'amqplib'; +import { mock } from 'jest-mock-extended'; +import type { ITriggerFunctions } from 'n8n-workflow'; + +const mockChannel = mock(); +const mockConnection = mock({ createChannel: async () => mockChannel }); +mockChannel.connection = mockConnection; +const connect = jest.fn().mockReturnValue(mockConnection); +jest.mock('amqplib', () => ({ connect })); + +import type { TriggerOptions } from '../types'; +import { + parseMessage, + rabbitmqConnect, + rabbitmqConnectExchange, + rabbitmqConnectQueue, + rabbitmqCreateChannel, + MessageTracker, +} from '../GenericFunctions'; + +describe('RabbitMQ GenericFunctions', () => { + const credentials = { + hostname: 'some.host', + port: 5672, + username: 'user', + password: 'pass', + vhost: '/', + }; + const context = mock(); + + beforeEach(() => jest.clearAllMocks()); + + describe('parseMessage', () => { + const helpers = mock(); + + it('should handle binary data', async () => { + const message = mock(); + const content = Buffer.from('test'); + message.content = content; + const options = mock({ contentIsBinary: true }); + helpers.prepareBinaryData.mockResolvedValue(mock()); + + const item = await parseMessage(message, options, helpers); + expect(item.json).toBe(message); + expect(item.binary?.data).toBeDefined(); + expect(helpers.prepareBinaryData).toHaveBeenCalledWith(content); + expect(message.content).toBeUndefined(); + }); + + it('should handle JSON data', async () => { + const message = mock(); + const content = Buffer.from(JSON.stringify({ test: 'test' })); + message.content = content; + const options = mock({ + contentIsBinary: false, + jsonParseBody: true, + onlyContent: false, + }); + + const item = await parseMessage(message, options, helpers); + expect(item.json).toBe(message); + expect(item.binary).toBeUndefined(); + expect(helpers.prepareBinaryData).not.toHaveBeenCalled(); + expect(message.content).toEqual({ test: 'test' }); + }); + + it('should return only content, when requested', async () => { + const message = mock(); + const content = Buffer.from(JSON.stringify({ test: 'test' })); + message.content = content; + const options = mock({ + contentIsBinary: false, + jsonParseBody: false, + onlyContent: true, + }); + + const item = await parseMessage(message, options, helpers); + expect(item.json).toBe(content.toString()); + expect(item.binary).toBeUndefined(); + expect(helpers.prepareBinaryData).not.toHaveBeenCalled(); + expect(message.content).toEqual(content); + }); + }); + + describe('rabbitmqConnect', () => { + it('should connect to RabbitMQ', async () => { + const connection = await rabbitmqConnect({ ...credentials, ssl: false }); + expect(connect).toHaveBeenCalledWith(credentials, {}); + expect(connection).toBe(mockConnection); + }); + + it('should connect to RabbitMQ over SSL', async () => { + const connection = await rabbitmqConnect({ + ...credentials, + ssl: true, + ca: 'ca', + passwordless: false, + }); + expect(connect).toHaveBeenCalledWith( + { ...credentials, protocol: 'amqps' }, + { ca: [Buffer.from('ca')] }, + ); + expect(connection).toBe(mockConnection); + }); + }); + + describe('rabbitmqCreateChannel', () => { + it('should create a channel', async () => { + context.getCredentials.mockResolvedValue(credentials); + const channel = await rabbitmqCreateChannel.call(context); + expect(channel).toBe(mockChannel); + }); + }); + + describe('rabbitmqConnectQueue', () => { + it('should assert a queue', async () => { + context.getCredentials.mockResolvedValue(credentials); + const options = mock({ assertQueue: true }); + await rabbitmqConnectQueue.call(context, 'queue', options); + + expect(mockChannel.assertQueue).toHaveBeenCalledWith('queue', options); + expect(mockChannel.checkQueue).not.toHaveBeenCalled(); + expect(mockChannel.bindQueue).not.toHaveBeenCalled(); + }); + + it('should check a queue', async () => { + context.getCredentials.mockResolvedValue(credentials); + const options = mock({ assertQueue: false }); + await rabbitmqConnectQueue.call(context, 'queue', options); + + expect(mockChannel.assertQueue).not.toHaveBeenCalled(); + expect(mockChannel.checkQueue).toHaveBeenCalledWith('queue'); + expect(mockChannel.bindQueue).not.toHaveBeenCalled(); + }); + }); + + describe('rabbitmqConnectExchange', () => { + it('should assert a queue', async () => { + context.getCredentials.mockResolvedValue(credentials); + context.getNodeParameter.calledWith('exchangeType', 0).mockReturnValue('topic'); + const options = mock({ assertExchange: true }); + await rabbitmqConnectExchange.call(context, 'exchange', options); + + expect(mockChannel.assertExchange).toHaveBeenCalledWith('exchange', 'topic', options); + expect(mockChannel.checkExchange).not.toHaveBeenCalled(); + }); + + it('should check a queue', async () => { + context.getCredentials.mockResolvedValue(credentials); + const options = mock({ assertExchange: false }); + await rabbitmqConnectExchange.call(context, 'exchange', options); + + expect(mockChannel.assertExchange).not.toHaveBeenCalled(); + expect(mockChannel.checkExchange).toHaveBeenCalledWith('exchange'); + }); + }); + + describe('MessageTracker', () => { + let messageTracker: MessageTracker; + + beforeEach(() => { + messageTracker = new MessageTracker(); + }); + + it('should track received messages', () => { + const message = { fields: { deliveryTag: 1 } } as ConsumeMessage; + messageTracker.received(message); + expect(messageTracker.messages).toContain(1); + }); + + it('should track answered messages', () => { + const message = { fields: { deliveryTag: 1 } } as ConsumeMessage; + messageTracker.received(message); + messageTracker.answered(message); + expect(messageTracker.messages).not.toContain(1); + }); + + it('should return the number of unanswered messages', () => { + const message = { fields: { deliveryTag: 1 } } as ConsumeMessage; + messageTracker.received(message); + expect(messageTracker.unansweredMessages()).toBe(1); + }); + + it('should close the channel and connection', async () => { + await messageTracker.closeChannel(mockChannel, 'consumerTag'); + + expect(mockChannel.cancel).toHaveBeenCalledWith('consumerTag'); + expect(mockChannel.close).toHaveBeenCalled(); + expect(mockConnection.close).toHaveBeenCalled(); + }); + }); +}); diff --git a/packages/nodes-base/nodes/RabbitMQ/types.ts b/packages/nodes-base/nodes/RabbitMQ/types.ts new file mode 100644 index 0000000000..f70272d696 --- /dev/null +++ b/packages/nodes-base/nodes/RabbitMQ/types.ts @@ -0,0 +1,71 @@ +type Argument = { + key: string; + value?: string; +}; + +type Binding = { + exchange: string; + routingKey: string; +}; + +type Header = { + key: string; + value?: string; +}; + +export type Options = { + autoDelete: boolean; + assertExchange: boolean; + assertQueue: boolean; + durable: boolean; + exclusive: boolean; + arguments: { + argument: Argument[]; + }; + headers: { + header: Header[]; + }; +}; + +type ContentOptions = + | { + contentIsBinary: true; + } + | { + contentIsBinary: false; + jsonParseBody: boolean; + onlyContent: boolean; + }; + +export type TriggerOptions = Options & { + acknowledge: + | 'executionFinishes' + | 'executionFinishesSuccessfully' + | 'immediately' + | 'laterMessageNode'; + parallelMessages: number; + binding: { + bindings: Binding[]; + }; +} & ContentOptions; + +export type RabbitMQCredentials = { + hostname: string; + port: number; + username: string; + password: string; + vhost: string; +} & ( + | { ssl: false } + | ({ ssl: true; ca: string } & ( + | { passwordless: false } + | { + passwordless: true; + cert: string; + key: string; + passphrase: string; + } + )) +); + +export type ExchangeType = 'direct' | 'topic' | 'headers' | 'fanout'; diff --git a/packages/nodes-base/nodes/Raindrop/Raindrop.node.json b/packages/nodes-base/nodes/Raindrop/Raindrop.node.json index 2843487ad2..e896b85fc4 100644 --- a/packages/nodes-base/nodes/Raindrop/Raindrop.node.json +++ b/packages/nodes-base/nodes/Raindrop/Raindrop.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/raindrop" + "url": "https://docs.n8n.io/integrations/builtin/credentials/raindrop/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Raindrop/Raindrop.node.ts b/packages/nodes-base/nodes/Raindrop/Raindrop.node.ts index 3e5d047b90..9a14e77854 100644 --- a/packages/nodes-base/nodes/Raindrop/Raindrop.node.ts +++ b/packages/nodes-base/nodes/Raindrop/Raindrop.node.ts @@ -6,7 +6,7 @@ import type { INodeType, INodeTypeDescription, } from 'n8n-workflow'; -import { NodeOperationError } from 'n8n-workflow'; +import { NodeConnectionType, NodeOperationError } from 'n8n-workflow'; import isEmpty from 'lodash/isEmpty'; import omit from 'lodash/omit'; @@ -36,8 +36,8 @@ export class Raindrop implements INodeType { defaults: { name: 'Raindrop', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'raindropOAuth2Api', @@ -417,7 +417,7 @@ export class Raindrop implements INodeType { ? returnData.push(...(responseData as IDataObject[])) : returnData.push(responseData as IDataObject); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push({ error: error.message }); continue; } diff --git a/packages/nodes-base/nodes/Raindrop/descriptions/BookmarkDescription.ts b/packages/nodes-base/nodes/Raindrop/descriptions/BookmarkDescription.ts index d778c9f281..4cea3aab1a 100644 --- a/packages/nodes-base/nodes/Raindrop/descriptions/BookmarkDescription.ts +++ b/packages/nodes-base/nodes/Raindrop/descriptions/BookmarkDescription.ts @@ -51,7 +51,7 @@ export const bookmarkFields: INodeProperties[] = [ name: 'collectionId', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', displayOptions: { show: { resource: ['bookmark'], @@ -178,7 +178,7 @@ export const bookmarkFields: INodeProperties[] = [ default: [], required: true, description: - 'The ID of the collection from which to retrieve all bookmarks. Choose from the list, or specify an ID using an expression.', + 'The ID of the collection from which to retrieve all bookmarks. Choose from the list, or specify an ID using an expression.', displayOptions: { show: { resource: ['bookmark'], @@ -253,7 +253,7 @@ export const bookmarkFields: INodeProperties[] = [ name: 'collectionId', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getCollections', }, diff --git a/packages/nodes-base/nodes/Raindrop/descriptions/TagDescription.ts b/packages/nodes-base/nodes/Raindrop/descriptions/TagDescription.ts index 992aaef624..34481c34e9 100644 --- a/packages/nodes-base/nodes/Raindrop/descriptions/TagDescription.ts +++ b/packages/nodes-base/nodes/Raindrop/descriptions/TagDescription.ts @@ -68,7 +68,7 @@ export const tagFields: INodeProperties[] = [ }, default: '', description: - 'It\'s possible to restrict remove action to just one collection. It\'s optional. Choose from the list, or specify an ID using an expression.', + 'It\'s possible to restrict remove action to just one collection. It\'s optional. Choose from the list, or specify an ID using an expression.', }, ], }, @@ -124,7 +124,7 @@ export const tagFields: INodeProperties[] = [ name: 'collectionId', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getCollections', }, diff --git a/packages/nodes-base/nodes/ReadBinaryFile/ReadBinaryFile.node.json b/packages/nodes-base/nodes/ReadBinaryFile/ReadBinaryFile.node.json index 73b50bbc64..3dca37bd62 100644 --- a/packages/nodes-base/nodes/ReadBinaryFile/ReadBinaryFile.node.json +++ b/packages/nodes-base/nodes/ReadBinaryFile/ReadBinaryFile.node.json @@ -6,7 +6,7 @@ "resources": { "primaryDocumentation": [ { - "url": "https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.filesreadwrite/" + "url": "https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.readwritefile/" } ], "generic": [ diff --git a/packages/nodes-base/nodes/ReadBinaryFile/ReadBinaryFile.node.ts b/packages/nodes-base/nodes/ReadBinaryFile/ReadBinaryFile.node.ts index a7e239d000..dedc00d37c 100644 --- a/packages/nodes-base/nodes/ReadBinaryFile/ReadBinaryFile.node.ts +++ b/packages/nodes-base/nodes/ReadBinaryFile/ReadBinaryFile.node.ts @@ -1,8 +1,9 @@ -import type { - IExecuteFunctions, - INodeExecutionData, - INodeType, - INodeTypeDescription, +import { + NodeConnectionType, + type IExecuteFunctions, + type INodeExecutionData, + type INodeType, + type INodeTypeDescription, } from 'n8n-workflow'; export class ReadBinaryFile implements INodeType { @@ -18,8 +19,8 @@ export class ReadBinaryFile implements INodeType { name: 'Read Binary File', color: '#449922', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], properties: [ { displayName: 'File Path', @@ -74,7 +75,7 @@ export class ReadBinaryFile implements INodeType { newItem.binary![dataPropertyName] = await this.helpers.prepareBinaryData(stream, filePath); returnData.push(newItem); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push({ json: { error: (error as Error).message, diff --git a/packages/nodes-base/nodes/ReadBinaryFiles/ReadBinaryFiles.node.json b/packages/nodes-base/nodes/ReadBinaryFiles/ReadBinaryFiles.node.json index b9c9911ab2..8eda9032a0 100644 --- a/packages/nodes-base/nodes/ReadBinaryFiles/ReadBinaryFiles.node.json +++ b/packages/nodes-base/nodes/ReadBinaryFiles/ReadBinaryFiles.node.json @@ -6,7 +6,7 @@ "resources": { "primaryDocumentation": [ { - "url": "https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.filesreadwrite/" + "url": "https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.readwritefile/" } ] }, diff --git a/packages/nodes-base/nodes/ReadBinaryFiles/ReadBinaryFiles.node.ts b/packages/nodes-base/nodes/ReadBinaryFiles/ReadBinaryFiles.node.ts index a1f0939c9e..b81530f62a 100644 --- a/packages/nodes-base/nodes/ReadBinaryFiles/ReadBinaryFiles.node.ts +++ b/packages/nodes-base/nodes/ReadBinaryFiles/ReadBinaryFiles.node.ts @@ -1,8 +1,9 @@ -import type { - IExecuteFunctions, - INodeExecutionData, - INodeType, - INodeTypeDescription, +import { + NodeConnectionType, + type IExecuteFunctions, + type INodeExecutionData, + type INodeType, + type INodeTypeDescription, } from 'n8n-workflow'; import glob from 'fast-glob'; @@ -21,8 +22,8 @@ export class ReadBinaryFiles implements INodeType { name: 'Read Binary Files', color: '#44AA44', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], properties: [ { displayName: 'File Selector', diff --git a/packages/nodes-base/nodes/ReadPdf/ReadPDF.node.ts b/packages/nodes-base/nodes/ReadPdf/ReadPDF.node.ts index 6652ca191f..c7a1485cb1 100644 --- a/packages/nodes-base/nodes/ReadPdf/ReadPDF.node.ts +++ b/packages/nodes-base/nodes/ReadPdf/ReadPDF.node.ts @@ -1,5 +1,6 @@ import { NodeOperationError, + NodeConnectionType, type IExecuteFunctions, type INodeExecutionData, type INodeType, @@ -21,8 +22,8 @@ export class ReadPDF implements INodeType { name: 'Read PDF', color: '#003355', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], properties: [ { displayName: 'Input Binary Field', @@ -84,7 +85,7 @@ export class ReadPDF implements INodeType { json, }); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push({ json: { error: error.message, diff --git a/packages/nodes-base/nodes/Reddit/Reddit.node.json b/packages/nodes-base/nodes/Reddit/Reddit.node.json index 85969e575a..4d5fe13ee9 100644 --- a/packages/nodes-base/nodes/Reddit/Reddit.node.json +++ b/packages/nodes-base/nodes/Reddit/Reddit.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/reddit" + "url": "https://docs.n8n.io/integrations/builtin/credentials/reddit/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Reddit/Reddit.node.ts b/packages/nodes-base/nodes/Reddit/Reddit.node.ts index 481ed75a91..d04e6406aa 100644 --- a/packages/nodes-base/nodes/Reddit/Reddit.node.ts +++ b/packages/nodes-base/nodes/Reddit/Reddit.node.ts @@ -6,7 +6,7 @@ import type { INodeTypeDescription, JsonObject, } from 'n8n-workflow'; -import { NodeApiError } from 'n8n-workflow'; +import { NodeApiError, NodeConnectionType } from 'n8n-workflow'; import { handleListing, redditApiRequest } from './GenericFunctions'; @@ -32,8 +32,8 @@ export class Reddit implements INodeType { defaults: { name: 'Reddit', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'redditOAuth2Api', @@ -428,7 +428,7 @@ export class Reddit implements INodeType { returnData.push(...executionData); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { const executionErrorData = this.helpers.constructExecutionMetaData( this.helpers.returnJsonArray({ error: error.message }), { itemData: { item: i } }, diff --git a/packages/nodes-base/nodes/Redis/Redis.node.json b/packages/nodes-base/nodes/Redis/Redis.node.json index 4a68a1ed18..25e5dd2409 100644 --- a/packages/nodes-base/nodes/Redis/Redis.node.json +++ b/packages/nodes-base/nodes/Redis/Redis.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/redis" + "url": "https://docs.n8n.io/integrations/builtin/credentials/redis/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Redis/Redis.node.ts b/packages/nodes-base/nodes/Redis/Redis.node.ts index 70d2dfc681..59d1582fdb 100644 --- a/packages/nodes-base/nodes/Redis/Redis.node.ts +++ b/packages/nodes-base/nodes/Redis/Redis.node.ts @@ -4,6 +4,7 @@ import type { INodeType, INodeTypeDescription, } from 'n8n-workflow'; +import { NodeConnectionType } from 'n8n-workflow'; import set from 'lodash/set'; @@ -26,8 +27,9 @@ export class Redis implements INodeType { defaults: { name: 'Redis', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], + usableAsTool: true, credentials: [ { name: 'redis', @@ -196,7 +198,7 @@ export class Redis implements INodeType { operation: ['get'], }, }, - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, options: [ { @@ -484,7 +486,7 @@ export class Redis implements INodeType { operation: ['pop'], }, }, - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, options: [ { diff --git a/packages/nodes-base/nodes/Redis/RedisTrigger.node.json b/packages/nodes-base/nodes/Redis/RedisTrigger.node.json index 6861d631a8..8d11c30a23 100644 --- a/packages/nodes-base/nodes/Redis/RedisTrigger.node.json +++ b/packages/nodes-base/nodes/Redis/RedisTrigger.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/redis" + "url": "https://docs.n8n.io/integrations/builtin/credentials/redis/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Redis/RedisTrigger.node.ts b/packages/nodes-base/nodes/Redis/RedisTrigger.node.ts index 4a45c24707..34b4bb8d62 100644 --- a/packages/nodes-base/nodes/Redis/RedisTrigger.node.ts +++ b/packages/nodes-base/nodes/Redis/RedisTrigger.node.ts @@ -4,7 +4,7 @@ import type { INodeTypeDescription, ITriggerResponse, } from 'n8n-workflow'; -import { NodeOperationError } from 'n8n-workflow'; +import { NodeConnectionType, NodeOperationError } from 'n8n-workflow'; import { redisConnectionTest, setupRedisClient } from './utils'; @@ -25,7 +25,7 @@ export class RedisTrigger implements INodeType { name: 'Redis Trigger', }, inputs: [], - outputs: ['main'], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'redis', @@ -47,7 +47,7 @@ export class RedisTrigger implements INodeType { displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, options: [ { diff --git a/packages/nodes-base/nodes/RenameKeys/RenameKeys.node.ts b/packages/nodes-base/nodes/RenameKeys/RenameKeys.node.ts index 940bb04d17..7e53e9b0cb 100644 --- a/packages/nodes-base/nodes/RenameKeys/RenameKeys.node.ts +++ b/packages/nodes-base/nodes/RenameKeys/RenameKeys.node.ts @@ -5,7 +5,7 @@ import type { INodeType, INodeTypeDescription, } from 'n8n-workflow'; -import { deepCopy } from 'n8n-workflow'; +import { NodeConnectionType, deepCopy } from 'n8n-workflow'; import get from 'lodash/get'; import set from 'lodash/set'; @@ -29,8 +29,8 @@ export class RenameKeys implements INodeType { name: 'Rename Keys', color: '#772244', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], properties: [ { displayName: 'Keys', @@ -76,7 +76,7 @@ export class RenameKeys implements INodeType { name: 'additionalOptions', type: 'collection', default: {}, - placeholder: 'Add Option', + placeholder: 'Add option', options: [ { displayName: 'Regex', diff --git a/packages/nodes-base/nodes/RespondToWebhook/RespondToWebhook.node.ts b/packages/nodes-base/nodes/RespondToWebhook/RespondToWebhook.node.ts index 075ad8a950..0ad0dd85c3 100644 --- a/packages/nodes-base/nodes/RespondToWebhook/RespondToWebhook.node.ts +++ b/packages/nodes-base/nodes/RespondToWebhook/RespondToWebhook.node.ts @@ -8,7 +8,16 @@ import type { INodeType, INodeTypeDescription, } from 'n8n-workflow'; -import { jsonParse, BINARY_ENCODING, NodeOperationError } from 'n8n-workflow'; +import { + jsonParse, + BINARY_ENCODING, + NodeOperationError, + NodeConnectionType, + WEBHOOK_NODE_TYPE, + FORM_TRIGGER_NODE_TYPE, + CHAT_TRIGGER_NODE_TYPE, + WAIT_NODE_TYPE, +} from 'n8n-workflow'; import set from 'lodash/set'; import jwt from 'jsonwebtoken'; import { formatPrivateKey, generatePairedItemData } from '../../utils/utilities'; @@ -24,8 +33,8 @@ export class RespondToWebhook implements INodeType { defaults: { name: 'Respond to Webhook', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'jwtAuth', @@ -221,7 +230,7 @@ export class RespondToWebhook implements INodeType { displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, options: [ { @@ -290,7 +299,12 @@ export class RespondToWebhook implements INodeType { const items = this.getInputData(); const nodeVersion = this.getNode().typeVersion; - const WEBHOOK_NODE_TYPES = ['n8n-nodes-base.webhook', 'n8n-nodes-base.formTrigger']; + const WEBHOOK_NODE_TYPES = [ + WEBHOOK_NODE_TYPE, + FORM_TRIGGER_NODE_TYPE, + CHAT_TRIGGER_NODE_TYPE, + WAIT_NODE_TYPE, + ]; try { if (nodeVersion >= 1.1) { @@ -429,7 +443,7 @@ export class RespondToWebhook implements INodeType { this.sendResponse(response); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { const itemData = generatePairedItemData(items.length); const returnData = this.helpers.constructExecutionMetaData( [{ json: { error: error.message } }], diff --git a/packages/nodes-base/nodes/RespondToWebhook/test/RespondToWebhook.test.ts b/packages/nodes-base/nodes/RespondToWebhook/test/RespondToWebhook.test.ts new file mode 100644 index 0000000000..c090511552 --- /dev/null +++ b/packages/nodes-base/nodes/RespondToWebhook/test/RespondToWebhook.test.ts @@ -0,0 +1,47 @@ +import type { MockProxy } from 'jest-mock-extended'; +import { mock } from 'jest-mock-extended'; +import { + WAIT_NODE_TYPE, + type IExecuteFunctions, + type INode, + type NodeTypeAndVersion, +} from 'n8n-workflow'; + +import { RespondToWebhook } from '../RespondToWebhook.node'; + +describe('RespondToWebhook Node', () => { + let respondToWebhook: RespondToWebhook; + let mockExecuteFunctions: MockProxy; + + beforeEach(() => { + respondToWebhook = new RespondToWebhook(); + mockExecuteFunctions = mock(); + }); + + describe('execute method', () => { + it('should throw an error if no WEBHOOK_NODE_TYPES in parents', async () => { + mockExecuteFunctions.getInputData.mockReturnValue([]); + mockExecuteFunctions.getNode.mockReturnValue(mock({ typeVersion: 1.1 })); + mockExecuteFunctions.getParentNodes.mockReturnValue([ + mock({ type: 'n8n-nodes-base.someNode' }), + ]); + + await expect(respondToWebhook.execute.call(mockExecuteFunctions)).rejects.toThrow( + 'No Webhook node found in the workflow', + ); + }); + it('should not throw an error if WEBHOOK_NODE_TYPES is in parents', async () => { + mockExecuteFunctions.getInputData.mockReturnValue([]); + mockExecuteFunctions.getNode.mockReturnValue(mock({ typeVersion: 1.1 })); + mockExecuteFunctions.getParentNodes.mockReturnValue([ + mock({ type: WAIT_NODE_TYPE }), + ]); + mockExecuteFunctions.getNodeParameter.mockReturnValue('text'); + mockExecuteFunctions.getNodeParameter.mockReturnValue({}); + mockExecuteFunctions.getNodeParameter.mockReturnValue('noData'); + mockExecuteFunctions.sendResponse.mockReturnValue(); + + await expect(respondToWebhook.execute.call(mockExecuteFunctions)).resolves.not.toThrow(); + }); + }); +}); diff --git a/packages/nodes-base/nodes/Rocketchat/Rocketchat.node.json b/packages/nodes-base/nodes/Rocketchat/Rocketchat.node.json index f3a7b697e4..f5288616a7 100644 --- a/packages/nodes-base/nodes/Rocketchat/Rocketchat.node.json +++ b/packages/nodes-base/nodes/Rocketchat/Rocketchat.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/rocketchat" + "url": "https://docs.n8n.io/integrations/builtin/credentials/rocketchat/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Rocketchat/Rocketchat.node.ts b/packages/nodes-base/nodes/Rocketchat/Rocketchat.node.ts index 9ef0551efa..274aae41ab 100644 --- a/packages/nodes-base/nodes/Rocketchat/Rocketchat.node.ts +++ b/packages/nodes-base/nodes/Rocketchat/Rocketchat.node.ts @@ -5,6 +5,7 @@ import type { INodeType, INodeTypeDescription, } from 'n8n-workflow'; +import { NodeConnectionType } from 'n8n-workflow'; import { rocketchatApiRequest, validateJSON } from './GenericFunctions'; @@ -54,8 +55,8 @@ export class Rocketchat implements INodeType { defaults: { name: 'RocketChat', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'rocketchatApi', @@ -139,7 +140,7 @@ export class Rocketchat implements INodeType { displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, displayOptions: { show: { @@ -483,7 +484,7 @@ export class Rocketchat implements INodeType { ); returnData.push(...executionData); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { const executionData = this.helpers.constructExecutionMetaData( this.helpers.returnJsonArray({ error: error.message }), { itemData: { item: i } }, diff --git a/packages/nodes-base/nodes/RssFeedRead/RssFeedRead.node.ts b/packages/nodes-base/nodes/RssFeedRead/RssFeedRead.node.ts index 18f4d72dd4..de9f602b81 100644 --- a/packages/nodes-base/nodes/RssFeedRead/RssFeedRead.node.ts +++ b/packages/nodes-base/nodes/RssFeedRead/RssFeedRead.node.ts @@ -6,7 +6,7 @@ import type { INodeType, INodeTypeDescription, } from 'n8n-workflow'; -import { NodeOperationError } from 'n8n-workflow'; +import { NodeConnectionType, NodeOperationError } from 'n8n-workflow'; import Parser from 'rss-parser'; import { generatePairedItemData } from '../../utils/utilities'; @@ -35,8 +35,8 @@ export class RssFeedRead implements INodeType { name: 'RSS Read', color: '#b02020', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], properties: [ { displayName: 'URL', @@ -50,7 +50,7 @@ export class RssFeedRead implements INodeType { displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, options: [ { @@ -137,7 +137,7 @@ export class RssFeedRead implements INodeType { returnData.push(...executionData); } } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push({ json: { error: error.message }, pairedItem: fallbackPairedItems || [{ item: i }], diff --git a/packages/nodes-base/nodes/RssFeedRead/RssFeedReadTrigger.node.ts b/packages/nodes-base/nodes/RssFeedRead/RssFeedReadTrigger.node.ts index 91823e7e26..523860ddd1 100644 --- a/packages/nodes-base/nodes/RssFeedRead/RssFeedReadTrigger.node.ts +++ b/packages/nodes-base/nodes/RssFeedRead/RssFeedReadTrigger.node.ts @@ -5,10 +5,15 @@ import type { INodeTypeDescription, IPollFunctions, } from 'n8n-workflow'; -import { NodeOperationError } from 'n8n-workflow'; +import { NodeConnectionType, NodeOperationError } from 'n8n-workflow'; import Parser from 'rss-parser'; import moment from 'moment-timezone'; +interface PollData { + lastItemDate?: string; + lastTimeChecked?: string; +} + export class RssFeedReadTrigger implements INodeType { description: INodeTypeDescription = { displayName: 'RSS Feed Trigger', @@ -25,7 +30,7 @@ export class RssFeedReadTrigger implements INodeType { }, polling: true, inputs: [], - outputs: ['main'], + outputs: [NodeConnectionType.Main], properties: [ { displayName: 'Feed URL', @@ -39,12 +44,12 @@ export class RssFeedReadTrigger implements INodeType { }; async poll(this: IPollFunctions): Promise { - const pollData = this.getWorkflowStaticData('node'); + const pollData = this.getWorkflowStaticData('node') as PollData; const feedUrl = this.getNodeParameter('feedUrl') as string; - const now = moment().utc().format(); - const dateToCheck = - (pollData.lastItemDate as string) || (pollData.lastTimeChecked as string) || now; + const dateToCheck = Date.parse( + pollData.lastItemDate ?? pollData.lastTimeChecked ?? moment().utc().format(), + ); if (!feedUrl) { throw new NodeOperationError(this.getNode(), 'The parameter "URL" has to be set!'); @@ -73,14 +78,16 @@ export class RssFeedReadTrigger implements INodeType { return [this.helpers.returnJsonArray(feed.items[0])]; } feed.items.forEach((item) => { - if (Date.parse(item.isoDate as string) > Date.parse(dateToCheck)) { + if (item.isoDate && Date.parse(item.isoDate) > dateToCheck) { returnData.push(item); } }); - const maxIsoDate = feed.items.reduce((a, b) => - new Date(a.isoDate as string) > new Date(b.isoDate as string) ? a : b, - ).isoDate; - pollData.lastItemDate = maxIsoDate; + + if (feed.items.length) { + pollData.lastItemDate = feed.items.reduce((a, b) => + new Date(a.isoDate!) > new Date(b.isoDate!) ? a : b, + ).isoDate; + } } if (Array.isArray(returnData) && returnData.length !== 0) { diff --git a/packages/nodes-base/nodes/RssFeedRead/test/RssFeedRead.test.ts b/packages/nodes-base/nodes/RssFeedRead/test/RssFeedRead.test.ts new file mode 100644 index 0000000000..d942859764 --- /dev/null +++ b/packages/nodes-base/nodes/RssFeedRead/test/RssFeedRead.test.ts @@ -0,0 +1,78 @@ +import { mock } from 'jest-mock-extended'; +import type { IPollFunctions } from 'n8n-workflow'; +import Parser from 'rss-parser'; +import { returnJsonArray } from 'n8n-core'; +import { RssFeedReadTrigger } from '../RssFeedReadTrigger.node'; + +jest.mock('rss-parser'); + +const now = new Date('2024-02-01T01:23:45.678Z'); +jest.useFakeTimers({ now }); + +describe('RssFeedReadTrigger', () => { + describe('poll', () => { + const feedUrl = 'https://example.com/feed'; + const lastItemDate = '2022-01-01T00:00:00.000Z'; + const newItemDate = '2022-01-02T00:00:00.000Z'; + + const node = new RssFeedReadTrigger(); + const pollFunctions = mock({ + helpers: mock({ returnJsonArray }), + }); + + it('should throw an error if the feed URL is empty', async () => { + pollFunctions.getNodeParameter.mockReturnValue(''); + + await expect(node.poll.call(pollFunctions)).rejects.toThrowError(); + + expect(pollFunctions.getNodeParameter).toHaveBeenCalledWith('feedUrl'); + expect(Parser.prototype.parseURL).not.toHaveBeenCalled(); + }); + + it('should return new items from the feed', async () => { + const pollData = mock({ lastItemDate }); + pollFunctions.getNodeParameter.mockReturnValue(feedUrl); + pollFunctions.getWorkflowStaticData.mockReturnValue(pollData); + (Parser.prototype.parseURL as jest.Mock).mockResolvedValue({ + items: [{ isoDate: lastItemDate }, { isoDate: newItemDate }], + }); + + const result = await node.poll.call(pollFunctions); + + expect(result).toEqual([[{ json: { isoDate: newItemDate } }]]); + expect(pollFunctions.getWorkflowStaticData).toHaveBeenCalledWith('node'); + expect(pollFunctions.getNodeParameter).toHaveBeenCalledWith('feedUrl'); + expect(Parser.prototype.parseURL).toHaveBeenCalledWith(feedUrl); + expect(pollData.lastItemDate).toEqual(newItemDate); + }); + + it('should gracefully handle missing timestamps', async () => { + const pollData = mock(); + pollFunctions.getNodeParameter.mockReturnValue(feedUrl); + pollFunctions.getWorkflowStaticData.mockReturnValue(pollData); + (Parser.prototype.parseURL as jest.Mock).mockResolvedValue({ items: [{}, {}] }); + + const result = await node.poll.call(pollFunctions); + + expect(result).toEqual(null); + expect(pollFunctions.getWorkflowStaticData).toHaveBeenCalledWith('node'); + expect(pollFunctions.getNodeParameter).toHaveBeenCalledWith('feedUrl'); + expect(Parser.prototype.parseURL).toHaveBeenCalledWith(feedUrl); + }); + + it('should return null if the feed is empty', async () => { + const pollData = mock({ lastItemDate }); + pollFunctions.getNodeParameter.mockReturnValue(feedUrl); + pollFunctions.getWorkflowStaticData.mockReturnValue(pollData); + (Parser.prototype.parseURL as jest.Mock).mockResolvedValue({ items: [] }); + + const result = await node.poll.call(pollFunctions); + + expect(result).toEqual(null); + expect(pollFunctions.getWorkflowStaticData).toHaveBeenCalledWith('node'); + expect(pollFunctions.getNodeParameter).toHaveBeenCalledWith('feedUrl'); + expect(Parser.prototype.parseURL).toHaveBeenCalledWith(feedUrl); + expect(pollData.lastItemDate).toEqual(lastItemDate); + }); + }); +}); diff --git a/packages/nodes-base/nodes/RssFeedRead/test/node/RssFeedRead.test.ts b/packages/nodes-base/nodes/RssFeedRead/test/node/RssFeedRead.test.ts index 62806e448c..7238dcfa00 100644 --- a/packages/nodes-base/nodes/RssFeedRead/test/node/RssFeedRead.test.ts +++ b/packages/nodes-base/nodes/RssFeedRead/test/node/RssFeedRead.test.ts @@ -4,7 +4,7 @@ import { setup, equalityTest, workflowToTests, getWorkflowFilenames } from '@tes // eslint-disable-next-line n8n-local-rules/no-unneeded-backticks const feed = `<![CDATA[Lorem ipsum feed for an interval of 1 minutes with 3 item(s)]]>http://example.com/RSS for NodeThu, 09 Feb 2023 13:40:32 GMTThu, 09 Feb 2023 13:40:00 GMT1<![CDATA[Lorem ipsum 2023-02-09T13:40:00Z]]>http://example.com/test/1675950000http://example.com/test/1675950000Thu, 09 Feb 2023 13:40:00 GMT<![CDATA[Lorem ipsum 2023-02-09T13:39:00Z]]>http://example.com/test/1675949940http://example.com/test/1675949940Thu, 09 Feb 2023 13:39:00 GMT<![CDATA[Lorem ipsum 2023-02-09T13:38:00Z]]>http://example.com/test/1675949880http://example.com/test/1675949880Thu, 09 Feb 2023 13:38:00 GMT`; -describe('Test HTTP Request Node', () => { +describe('Test RSS Feed Trigger Node', () => { const workflows = getWorkflowFilenames(__dirname); const tests = workflowToTests(workflows); diff --git a/packages/nodes-base/nodes/Rundeck/Rundeck.node.json b/packages/nodes-base/nodes/Rundeck/Rundeck.node.json index ce0b7efc4e..65ec711538 100644 --- a/packages/nodes-base/nodes/Rundeck/Rundeck.node.json +++ b/packages/nodes-base/nodes/Rundeck/Rundeck.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/rundeck" + "url": "https://docs.n8n.io/integrations/builtin/credentials/rundeck/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Rundeck/Rundeck.node.ts b/packages/nodes-base/nodes/Rundeck/Rundeck.node.ts index 439c9501d4..631853a8ec 100644 --- a/packages/nodes-base/nodes/Rundeck/Rundeck.node.ts +++ b/packages/nodes-base/nodes/Rundeck/Rundeck.node.ts @@ -5,7 +5,7 @@ import type { INodeType, INodeTypeDescription, } from 'n8n-workflow'; -import { NodeOperationError } from 'n8n-workflow'; +import { NodeConnectionType, NodeOperationError } from 'n8n-workflow'; import { RundeckApi } from './RundeckApi'; export class Rundeck implements INodeType { @@ -21,8 +21,8 @@ export class Rundeck implements INodeType { defaults: { name: 'Rundeck', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'rundeckApi', diff --git a/packages/nodes-base/nodes/S3/S3.node.json b/packages/nodes-base/nodes/S3/S3.node.json index c681e5163e..a8ab8e2d1a 100644 --- a/packages/nodes-base/nodes/S3/S3.node.json +++ b/packages/nodes-base/nodes/S3/S3.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/s3" + "url": "https://docs.n8n.io/integrations/builtin/credentials/s3/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/S3/S3.node.ts b/packages/nodes-base/nodes/S3/S3.node.ts index 3751081cc6..bfb581447c 100644 --- a/packages/nodes-base/nodes/S3/S3.node.ts +++ b/packages/nodes-base/nodes/S3/S3.node.ts @@ -11,7 +11,7 @@ import type { INodeTypeDescription, JsonObject, } from 'n8n-workflow'; -import { NodeApiError, NodeOperationError } from 'n8n-workflow'; +import { NodeApiError, NodeConnectionType, NodeOperationError } from 'n8n-workflow'; import { bucketFields, bucketOperations } from '../Aws/S3/V1/BucketDescription'; @@ -34,8 +34,8 @@ export class S3 implements INodeType { defaults: { name: 'S3', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 's3', @@ -43,6 +43,13 @@ export class S3 implements INodeType { }, ], properties: [ + { + displayName: + "This node is for services that use the S3 standard, e.g. Minio or Digital Ocean Spaces. For AWS S3 use the 'AWS S3' node.", + name: 's3StandardNotice', + type: 'notice', + default: '', + }, { displayName: 'Resource', name: 'resource', @@ -883,7 +890,7 @@ export class S3 implements INodeType { } } } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { if (resource === 'file' && operation === 'download') { items[i].json = { error: error.message }; } else { diff --git a/packages/nodes-base/nodes/Salesforce/AccountDescription.ts b/packages/nodes-base/nodes/Salesforce/AccountDescription.ts index 7f8a9ac88a..925d9bbcae 100644 --- a/packages/nodes-base/nodes/Salesforce/AccountDescription.ts +++ b/packages/nodes-base/nodes/Salesforce/AccountDescription.ts @@ -88,7 +88,7 @@ export const accountFields: INodeProperties[] = [ }, }, description: - 'The field to check to see if the account already exists. Choose from the list, or specify an ID using an expression.', + 'The field to check to see if the account already exists. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Value to Match', @@ -159,7 +159,7 @@ export const accountFields: INodeProperties[] = [ }, default: '', description: - 'The source of the account record. Choose from the list, or specify an ID using an expression.', + 'The source of the account record. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Billing City', @@ -224,7 +224,7 @@ export const accountFields: INodeProperties[] = [ }, default: '', description: - 'The ID of the field to add custom field to. Choose from the list, or specify an ID using an expression.', + 'The ID of the field to add custom field to. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Value', @@ -280,7 +280,7 @@ export const accountFields: INodeProperties[] = [ }, default: '', description: - 'The owner of the account. Choose from the list, or specify an ID using an expression.', + 'The owner of the account. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Parent ID', @@ -301,7 +301,7 @@ export const accountFields: INodeProperties[] = [ name: 'recordTypeId', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getRecordTypes', }, @@ -324,7 +324,7 @@ export const accountFields: INodeProperties[] = [ loadOptionsMethod: 'getAccountTypes', }, description: - 'Type of account. Choose from the list, or specify an ID using an expression.', + 'Type of account. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Shipping City', @@ -423,7 +423,7 @@ export const accountFields: INodeProperties[] = [ }, default: '', description: - 'The source of the account record. Choose from the list, or specify an ID using an expression.', + 'The source of the account record. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Annual Revenue', @@ -498,7 +498,7 @@ export const accountFields: INodeProperties[] = [ }, default: '', description: - 'The ID of the field to add custom field to. Choose from the list, or specify an ID using an expression.', + 'The ID of the field to add custom field to. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Value', @@ -561,7 +561,7 @@ export const accountFields: INodeProperties[] = [ }, default: '', description: - 'The owner of the account. Choose from the list, or specify an ID using an expression.', + 'The owner of the account. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Parent ID', @@ -582,7 +582,7 @@ export const accountFields: INodeProperties[] = [ name: 'recordTypeId', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getRecordTypes', }, @@ -645,7 +645,7 @@ export const accountFields: INodeProperties[] = [ loadOptionsMethod: 'getAccountTypes', }, description: - 'Type of account. Choose from the list, or specify an ID using an expression.', + 'Type of account. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Website', @@ -771,7 +771,7 @@ export const accountFields: INodeProperties[] = [ }, default: '', description: - 'For date, number, or boolean, please use expressions. Choose from the list, or specify an ID using an expression.', + 'For date, number, or boolean, please use expressions. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Operation', @@ -883,7 +883,7 @@ export const accountFields: INodeProperties[] = [ }, default: '', description: - 'ID of the user who owns the note. Choose from the list, or specify an ID using an expression.', + 'ID of the user who owns the note. Choose from the list, or specify an ID using an expression.', }, ], }, diff --git a/packages/nodes-base/nodes/Salesforce/AttachmentDescription.ts b/packages/nodes-base/nodes/Salesforce/AttachmentDescription.ts index 0a6c17968c..5efe74ee96 100644 --- a/packages/nodes-base/nodes/Salesforce/AttachmentDescription.ts +++ b/packages/nodes-base/nodes/Salesforce/AttachmentDescription.ts @@ -137,7 +137,7 @@ export const attachmentFields: INodeProperties[] = [ }, default: '', description: - 'ID of the User who owns the attachment. Choose from the list, or specify an ID using an expression.', + 'ID of the User who owns the attachment. Choose from the list, or specify an ID using an expression.', }, ], }, @@ -212,7 +212,7 @@ export const attachmentFields: INodeProperties[] = [ }, default: '', description: - 'ID of the User who owns the attachment. Choose from the list, or specify an ID using an expression.', + 'ID of the User who owns the attachment. Choose from the list, or specify an ID using an expression.', }, ], }, @@ -324,7 +324,7 @@ export const attachmentFields: INodeProperties[] = [ }, default: '', description: - 'For date, number, or boolean, please use expressions. Choose from the list, or specify an ID using an expression.', + 'For date, number, or boolean, please use expressions. Choose from the list, or specify an ID using an expression.', }, // eslint-disable-next-line n8n-nodes-base/node-param-operation-without-no-data-expression { diff --git a/packages/nodes-base/nodes/Salesforce/CaseDescription.ts b/packages/nodes-base/nodes/Salesforce/CaseDescription.ts index b81ddefe35..69d0e694de 100644 --- a/packages/nodes-base/nodes/Salesforce/CaseDescription.ts +++ b/packages/nodes-base/nodes/Salesforce/CaseDescription.ts @@ -79,7 +79,7 @@ export const caseFields: INodeProperties[] = [ }, default: '', description: - 'The type of case. Choose from the list, or specify an ID using an expression.', + 'The type of case. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Additional Fields', @@ -132,7 +132,7 @@ export const caseFields: INodeProperties[] = [ }, default: '', description: - 'The ID of the field to add custom field to. Choose from the list, or specify an ID using an expression.', + 'The ID of the field to add custom field to. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Value', @@ -168,7 +168,7 @@ export const caseFields: INodeProperties[] = [ }, default: '', description: - 'The source of the case, such as Email, Phone, or Web. Label is Case Origin. Choose from the list, or specify an ID using an expression.', + 'The source of the case, such as Email, Phone, or Web. Label is Case Origin. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Owner Name or ID', @@ -179,7 +179,7 @@ export const caseFields: INodeProperties[] = [ }, default: '', description: - 'The owner of the case. Choose from the list, or specify an ID using an expression.', + 'The owner of the case. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Parent ID', @@ -197,7 +197,7 @@ export const caseFields: INodeProperties[] = [ }, default: '', description: - 'The importance or urgency of the case, such as High, Medium, or Low. Choose from the list, or specify an ID using an expression.', + 'The importance or urgency of the case, such as High, Medium, or Low. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Reason Name or ID', @@ -208,14 +208,14 @@ export const caseFields: INodeProperties[] = [ }, default: '', description: - 'The reason why the case was created, such as Instructions not clear, or User didn’t attend training. Choose from the list, or specify an ID using an expression.', + 'The reason why the case was created, such as Instructions not clear, or User didn’t attend training. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Record Type Name or ID', name: 'recordTypeId', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getRecordTypes', }, @@ -230,7 +230,7 @@ export const caseFields: INodeProperties[] = [ }, default: '', description: - 'The status of the case, such as “New,” “Closed,” or “Escalated.” This field directly controls the IsClosed flag. Choose from the list, or specify an ID using an expression.', + 'The status of the case, such as “New,” “Closed,” or “Escalated.” This field directly controls the IsClosed flag. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Subject', @@ -342,7 +342,7 @@ export const caseFields: INodeProperties[] = [ }, default: '', description: - 'The ID of the field to add custom field to. Choose from the list, or specify an ID using an expression.', + 'The ID of the field to add custom field to. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Value', @@ -378,7 +378,7 @@ export const caseFields: INodeProperties[] = [ }, default: '', description: - 'The source of the case, such as Email, Phone, or Web. Label is Case Origin. Choose from the list, or specify an ID using an expression.', + 'The source of the case, such as Email, Phone, or Web. Label is Case Origin. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Owner Name or ID', @@ -389,7 +389,7 @@ export const caseFields: INodeProperties[] = [ }, default: '', description: - 'The owner of the case. Choose from the list, or specify an ID using an expression.', + 'The owner of the case. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Parent ID', @@ -407,7 +407,7 @@ export const caseFields: INodeProperties[] = [ }, default: '', description: - 'The importance or urgency of the case, such as High, Medium, or Low. Choose from the list, or specify an ID using an expression.', + 'The importance or urgency of the case, such as High, Medium, or Low. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Reason Name or ID', @@ -418,14 +418,14 @@ export const caseFields: INodeProperties[] = [ }, default: '', description: - 'The reason why the case was created, such as Instructions not clear, or User didn’t attend training. Choose from the list, or specify an ID using an expression.', + 'The reason why the case was created, such as Instructions not clear, or User didn’t attend training. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Record Type Name or ID', name: 'recordTypeId', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getRecordTypes', }, @@ -440,7 +440,7 @@ export const caseFields: INodeProperties[] = [ }, default: '', description: - 'The status of the case, such as “New,” “Closed,” or “Escalated.” This field directly controls the IsClosed flag. Choose from the list, or specify an ID using an expression.', + 'The status of the case, such as “New,” “Closed,” or “Escalated.” This field directly controls the IsClosed flag. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Subject', @@ -490,7 +490,7 @@ export const caseFields: INodeProperties[] = [ }, default: '', description: - 'The type of case. Choose from the list, or specify an ID using an expression.', + 'The type of case. Choose from the list, or specify an ID using an expression.', }, ], }, @@ -602,7 +602,7 @@ export const caseFields: INodeProperties[] = [ }, default: '', description: - 'For date, number, or boolean, please use expressions. Choose from the list, or specify an ID using an expression.', + 'For date, number, or boolean, please use expressions. Choose from the list, or specify an ID using an expression.', }, // eslint-disable-next-line n8n-nodes-base/node-param-operation-without-no-data-expression { diff --git a/packages/nodes-base/nodes/Salesforce/ContactDescription.ts b/packages/nodes-base/nodes/Salesforce/ContactDescription.ts index 39680eaab2..41d5528aed 100644 --- a/packages/nodes-base/nodes/Salesforce/ContactDescription.ts +++ b/packages/nodes-base/nodes/Salesforce/ContactDescription.ts @@ -94,7 +94,7 @@ export const contactFields: INodeProperties[] = [ }, }, description: - 'The field to check to see if the contact already exists. Choose from the list, or specify an ID using an expression.', + 'The field to check to see if the contact already exists. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Value to Match', @@ -147,7 +147,7 @@ export const contactFields: INodeProperties[] = [ }, default: '', description: - 'ID of the account that is the parent of this contact. Choose from the list, or specify an ID using an expression.', + 'ID of the account that is the parent of this contact. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Assistant Name', @@ -194,7 +194,7 @@ export const contactFields: INodeProperties[] = [ }, default: '', description: - 'The ID of the field to add custom field to. Choose from the list, or specify an ID using an expression.', + 'The ID of the field to add custom field to. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Value', @@ -283,7 +283,7 @@ export const contactFields: INodeProperties[] = [ }, default: '', description: - 'Source from which the lead was obtained. Choose from the list, or specify an ID using an expression.', + 'Source from which the lead was obtained. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Mailing City', @@ -370,7 +370,7 @@ export const contactFields: INodeProperties[] = [ }, default: '', description: - 'The owner of the contact. Choose from the list, or specify an ID using an expression.', + 'The owner of the contact. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Phone', @@ -384,7 +384,7 @@ export const contactFields: INodeProperties[] = [ name: 'recordTypeId', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getRecordTypes', }, @@ -447,7 +447,7 @@ export const contactFields: INodeProperties[] = [ }, default: '', description: - 'ID of the account that is the parent of this contact. Choose from the list, or specify an ID using an expression.', + 'ID of the account that is the parent of this contact. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Assistant Name', @@ -494,7 +494,7 @@ export const contactFields: INodeProperties[] = [ }, default: '', description: - 'The ID of the field to add custom field to. Choose from the list, or specify an ID using an expression.', + 'The ID of the field to add custom field to. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Value', @@ -590,7 +590,7 @@ export const contactFields: INodeProperties[] = [ }, default: '', description: - 'Source from which the lead was obtained. Choose from the list, or specify an ID using an expression.', + 'Source from which the lead was obtained. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Mailing City', @@ -677,7 +677,7 @@ export const contactFields: INodeProperties[] = [ }, default: '', description: - 'The owner of the contact. Choose from the list, or specify an ID using an expression.', + 'The owner of the contact. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Phone', @@ -691,7 +691,7 @@ export const contactFields: INodeProperties[] = [ name: 'recordTypeId', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getRecordTypes', }, @@ -822,7 +822,7 @@ export const contactFields: INodeProperties[] = [ }, default: '', description: - 'For date, number, or boolean, please use expressions. Choose from the list, or specify an ID using an expression.', + 'For date, number, or boolean, please use expressions. Choose from the list, or specify an ID using an expression.', }, // eslint-disable-next-line n8n-nodes-base/node-param-operation-without-no-data-expression { @@ -906,7 +906,7 @@ export const contactFields: INodeProperties[] = [ }, }, description: - 'ID of the campaign that needs to be fetched. Choose from the list, or specify an ID using an expression.', + 'ID of the campaign that needs to be fetched. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Options', @@ -999,7 +999,7 @@ export const contactFields: INodeProperties[] = [ }, default: '', description: - 'ID of the user who owns the note. Choose from the list, or specify an ID using an expression.', + 'ID of the user who owns the note. Choose from the list, or specify an ID using an expression.', }, ], }, diff --git a/packages/nodes-base/nodes/Salesforce/CustomObjectDescription.ts b/packages/nodes-base/nodes/Salesforce/CustomObjectDescription.ts index b1cd0f8c15..df12fd1348 100644 --- a/packages/nodes-base/nodes/Salesforce/CustomObjectDescription.ts +++ b/packages/nodes-base/nodes/Salesforce/CustomObjectDescription.ts @@ -73,7 +73,7 @@ export const customObjectFields: INodeProperties[] = [ }, }, description: - 'Name of the custom object. Choose from the list, or specify an ID using an expression.', + 'Name of the custom object. Choose from the list, or specify an ID using an expression.', }, { // eslint-disable-next-line n8n-nodes-base/node-param-display-name-wrong-for-dynamic-options @@ -93,7 +93,7 @@ export const customObjectFields: INodeProperties[] = [ }, }, description: - 'The field to check to see if the object already exists. Choose from the list, or specify an ID using an expression.', + 'The field to check to see if the object already exists. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Value to Match', @@ -141,7 +141,7 @@ export const customObjectFields: INodeProperties[] = [ }, default: '', description: - 'The ID of the field. Choose from the list, or specify an ID using an expression.', + 'The ID of the field. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Value', @@ -174,7 +174,7 @@ export const customObjectFields: INodeProperties[] = [ }, }, description: - 'Name of the custom object. Choose from the list, or specify an ID using an expression.', + 'Name of the custom object. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Record ID', @@ -221,7 +221,7 @@ export const customObjectFields: INodeProperties[] = [ }, default: '', description: - 'The ID of the field. Choose from the list, or specify an ID using an expression.', + 'The ID of the field. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Value', @@ -254,7 +254,7 @@ export const customObjectFields: INodeProperties[] = [ }, }, description: - 'Name of the custom object. Choose from the list, or specify an ID using an expression.', + 'Name of the custom object. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Record ID', @@ -290,7 +290,7 @@ export const customObjectFields: INodeProperties[] = [ }, }, description: - 'Name of the custom object. Choose from the list, or specify an ID using an expression.', + 'Name of the custom object. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Record ID', @@ -326,7 +326,7 @@ export const customObjectFields: INodeProperties[] = [ }, }, description: - 'Name of the custom object. Choose from the list, or specify an ID using an expression.', + 'Name of the custom object. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Return All', @@ -397,7 +397,7 @@ export const customObjectFields: INodeProperties[] = [ }, default: '', description: - 'For date, number, or boolean, please use expressions. Choose from the list, or specify an ID using an expression.', + 'For date, number, or boolean, please use expressions. Choose from the list, or specify an ID using an expression.', }, // eslint-disable-next-line n8n-nodes-base/node-param-operation-without-no-data-expression { @@ -448,7 +448,7 @@ export const customObjectFields: INodeProperties[] = [ }, default: [], description: - 'Fields to include separated by commas. Choose from the list, or specify IDs using an expression.', + 'Fields to include separated by commas. Choose from the list, or specify IDs using an expression.', }, ], }, @@ -470,7 +470,7 @@ export const customObjectFields: INodeProperties[] = [ name: 'recordTypeId', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getRecordTypes', loadOptionsDependsOn: ['customObject'], @@ -497,7 +497,7 @@ export const customObjectFields: INodeProperties[] = [ name: 'recordTypeId', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getRecordTypes', loadOptionsDependsOn: ['customObject'], diff --git a/packages/nodes-base/nodes/Salesforce/DocumentDescription.ts b/packages/nodes-base/nodes/Salesforce/DocumentDescription.ts index 20b4062a47..cfc7993266 100644 --- a/packages/nodes-base/nodes/Salesforce/DocumentDescription.ts +++ b/packages/nodes-base/nodes/Salesforce/DocumentDescription.ts @@ -94,7 +94,7 @@ export const documentFields: INodeProperties[] = [ }, default: '', description: - 'ID of the owner of this document. Choose from the list, or specify an ID using an expression.', + 'ID of the owner of this document. Choose from the list, or specify an ID using an expression.', }, ], }, diff --git a/packages/nodes-base/nodes/Salesforce/LeadDescription.ts b/packages/nodes-base/nodes/Salesforce/LeadDescription.ts index 4395a48b9e..792c50708c 100644 --- a/packages/nodes-base/nodes/Salesforce/LeadDescription.ts +++ b/packages/nodes-base/nodes/Salesforce/LeadDescription.ts @@ -93,7 +93,7 @@ export const leadFields: INodeProperties[] = [ }, }, description: - 'The field to check to see if the lead already exists. Choose from the list, or specify an ID using an expression.', + 'The field to check to see if the lead already exists. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Value to Match', @@ -200,7 +200,7 @@ export const leadFields: INodeProperties[] = [ }, default: '', description: - 'The ID of the field to add custom field to. Choose from the list, or specify an ID using an expression.', + 'The ID of the field to add custom field to. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Value', @@ -290,7 +290,7 @@ export const leadFields: INodeProperties[] = [ }, default: '', description: - 'Source from which the lead was obtained. Choose from the list, or specify an ID using an expression.', + 'Source from which the lead was obtained. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Mobile Phone', @@ -315,7 +315,7 @@ export const leadFields: INodeProperties[] = [ }, default: '', description: - 'The owner of the lead. Choose from the list, or specify an ID using an expression.', + 'The owner of the lead. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Phone', @@ -336,7 +336,7 @@ export const leadFields: INodeProperties[] = [ name: 'recordTypeId', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getRecordTypes', }, @@ -372,7 +372,7 @@ export const leadFields: INodeProperties[] = [ }, default: '', description: - 'Status code for this converted lead. Choose from the list, or specify an ID using an expression.', + 'Status code for this converted lead. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Street', @@ -484,7 +484,7 @@ export const leadFields: INodeProperties[] = [ }, default: '', description: - 'The ID of the field to add custom field to. Choose from the list, or specify an ID using an expression.', + 'The ID of the field to add custom field to. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Value', @@ -581,7 +581,7 @@ export const leadFields: INodeProperties[] = [ }, default: '', description: - 'Source from which the lead was obtained. Choose from the list, or specify an ID using an expression.', + 'Source from which the lead was obtained. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Mobile Phone', @@ -606,7 +606,7 @@ export const leadFields: INodeProperties[] = [ }, default: '', description: - 'The owner of the lead. Choose from the list, or specify an ID using an expression.', + 'The owner of the lead. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Postal Code', @@ -627,7 +627,7 @@ export const leadFields: INodeProperties[] = [ name: 'recordTypeId', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getRecordTypes', }, @@ -663,7 +663,7 @@ export const leadFields: INodeProperties[] = [ }, default: '', description: - 'Status code for this converted lead. Choose from the list, or specify an ID using an expression.', + 'Status code for this converted lead. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Street', @@ -796,7 +796,7 @@ export const leadFields: INodeProperties[] = [ }, default: '', description: - 'For date, number, or boolean, please use expressions. Choose from the list, or specify an ID using an expression.', + 'For date, number, or boolean, please use expressions. Choose from the list, or specify an ID using an expression.', }, // eslint-disable-next-line n8n-nodes-base/node-param-operation-without-no-data-expression { @@ -880,7 +880,7 @@ export const leadFields: INodeProperties[] = [ }, }, description: - 'ID of the campaign that needs to be fetched. Choose from the list, or specify an ID using an expression.', + 'ID of the campaign that needs to be fetched. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Options', @@ -973,7 +973,7 @@ export const leadFields: INodeProperties[] = [ }, default: '', description: - 'ID of the user who owns the note. Choose from the list, or specify an ID using an expression.', + 'ID of the user who owns the note. Choose from the list, or specify an ID using an expression.', }, ], }, diff --git a/packages/nodes-base/nodes/Salesforce/OpportunityDescription.ts b/packages/nodes-base/nodes/Salesforce/OpportunityDescription.ts index b1572ff10f..2ea1559fee 100644 --- a/packages/nodes-base/nodes/Salesforce/OpportunityDescription.ts +++ b/packages/nodes-base/nodes/Salesforce/OpportunityDescription.ts @@ -88,7 +88,7 @@ export const opportunityFields: INodeProperties[] = [ }, }, description: - 'The field to check to see if the opportunity already exists. Choose from the list, or specify an ID using an expression.', + 'The field to check to see if the opportunity already exists. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Value to Match', @@ -149,7 +149,7 @@ export const opportunityFields: INodeProperties[] = [ }, }, description: - 'Required. Date when the opportunity is expected to close. Choose from the list, or specify an ID using an expression.', + 'Required. Date when the opportunity is expected to close. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Additional Fields', @@ -173,7 +173,7 @@ export const opportunityFields: INodeProperties[] = [ loadOptionsMethod: 'getAccounts', }, description: - 'ID of the account associated with this opportunity. Choose from the list, or specify an ID using an expression.', + 'ID of the account associated with this opportunity. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Amount', @@ -194,7 +194,7 @@ export const opportunityFields: INodeProperties[] = [ }, default: '', description: - 'ID of the campaign that needs to be fetched. Choose from the list, or specify an ID using an expression.', + 'ID of the campaign that needs to be fetched. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Custom Fields', @@ -220,7 +220,7 @@ export const opportunityFields: INodeProperties[] = [ }, default: '', description: - 'The ID of the field to add custom field to. Choose from the list, or specify an ID using an expression.', + 'The ID of the field to add custom field to. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Value', @@ -257,7 +257,7 @@ export const opportunityFields: INodeProperties[] = [ }, default: '', description: - 'Source from which the lead was obtained. Choose from the list, or specify an ID using an expression.', + 'Source from which the lead was obtained. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Next Step', @@ -275,7 +275,7 @@ export const opportunityFields: INodeProperties[] = [ }, default: '', description: - 'The owner of the opportunity. Choose from the list, or specify an ID using an expression.', + 'The owner of the opportunity. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Phone', @@ -361,7 +361,7 @@ export const opportunityFields: INodeProperties[] = [ loadOptionsMethod: 'getAccounts', }, description: - 'ID of the account associated with this opportunity. Choose from the list, or specify an ID using an expression.', + 'ID of the account associated with this opportunity. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Amount', @@ -382,7 +382,7 @@ export const opportunityFields: INodeProperties[] = [ }, default: '', description: - 'ID of the campaign that needs to be fetched. Choose from the list, or specify an ID using an expression.', + 'ID of the campaign that needs to be fetched. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Close Date', @@ -415,7 +415,7 @@ export const opportunityFields: INodeProperties[] = [ }, default: '', description: - 'The ID of the field to add custom field to. Choose from the list, or specify an ID using an expression.', + 'The ID of the field to add custom field to. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Value', @@ -452,7 +452,7 @@ export const opportunityFields: INodeProperties[] = [ }, default: '', description: - 'Source from which the lead was obtained. Choose from the list, or specify an ID using an expression.', + 'Source from which the lead was obtained. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Name', @@ -477,7 +477,7 @@ export const opportunityFields: INodeProperties[] = [ }, default: '', description: - 'The owner of the opportunity. Choose from the list, or specify an ID using an expression.', + 'The owner of the opportunity. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Phone', @@ -512,7 +512,7 @@ export const opportunityFields: INodeProperties[] = [ }, default: '', description: - 'Required. Date when the opportunity is expected to close. Choose from the list, or specify an ID using an expression.', + 'Required. Date when the opportunity is expected to close. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Type', @@ -642,7 +642,7 @@ export const opportunityFields: INodeProperties[] = [ }, default: '', description: - 'For date, number, or boolean, please use expressions. Choose from the list, or specify an ID using an expression.', + 'For date, number, or boolean, please use expressions. Choose from the list, or specify an ID using an expression.', }, // eslint-disable-next-line n8n-nodes-base/node-param-operation-without-no-data-expression { @@ -761,7 +761,7 @@ export const opportunityFields: INodeProperties[] = [ }, default: '', description: - 'ID of the user who owns the note. Choose from the list, or specify an ID using an expression.', + 'ID of the user who owns the note. Choose from the list, or specify an ID using an expression.', }, ], }, diff --git a/packages/nodes-base/nodes/Salesforce/Salesforce.node.json b/packages/nodes-base/nodes/Salesforce/Salesforce.node.json index e449f57358..872729b5da 100644 --- a/packages/nodes-base/nodes/Salesforce/Salesforce.node.json +++ b/packages/nodes-base/nodes/Salesforce/Salesforce.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/salesforce" + "url": "https://docs.n8n.io/integrations/builtin/credentials/salesforce/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Salesforce/Salesforce.node.ts b/packages/nodes-base/nodes/Salesforce/Salesforce.node.ts index badf507c51..df0fd29515 100644 --- a/packages/nodes-base/nodes/Salesforce/Salesforce.node.ts +++ b/packages/nodes-base/nodes/Salesforce/Salesforce.node.ts @@ -9,7 +9,7 @@ import type { JsonObject, IHttpRequestMethods, } from 'n8n-workflow'; -import { NodeApiError, NodeOperationError } from 'n8n-workflow'; +import { NodeApiError, NodeConnectionType, NodeOperationError } from 'n8n-workflow'; import { accountFields, accountOperations } from './AccountDescription'; @@ -72,8 +72,8 @@ export class Salesforce implements INodeType { defaults: { name: 'Salesforce', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'salesforceOAuth2Api', @@ -3084,7 +3084,7 @@ export class Salesforce implements INodeType { returnData.push(...executionData); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { const executionErrorData = this.helpers.constructExecutionMetaData( this.helpers.returnJsonArray({ error: error.message }), { itemData: { item: i } }, diff --git a/packages/nodes-base/nodes/Salesforce/SalesforceTrigger.node.json b/packages/nodes-base/nodes/Salesforce/SalesforceTrigger.node.json index d8a798c330..5b2c3aa73f 100644 --- a/packages/nodes-base/nodes/Salesforce/SalesforceTrigger.node.json +++ b/packages/nodes-base/nodes/Salesforce/SalesforceTrigger.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/salesforce" + "url": "https://docs.n8n.io/integrations/builtin/credentials/salesforce/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Salesforce/SalesforceTrigger.node.ts b/packages/nodes-base/nodes/Salesforce/SalesforceTrigger.node.ts index 613ff5daca..257a778ba3 100644 --- a/packages/nodes-base/nodes/Salesforce/SalesforceTrigger.node.ts +++ b/packages/nodes-base/nodes/Salesforce/SalesforceTrigger.node.ts @@ -1,4 +1,4 @@ -import { NodeApiError } from 'n8n-workflow'; +import { NodeApiError, NodeConnectionType } from 'n8n-workflow'; import type { IDataObject, @@ -40,7 +40,7 @@ export class SalesforceTrigger implements INodeType { ], polling: true, inputs: [], - outputs: ['main'], + outputs: [NodeConnectionType.Main], properties: [ { displayName: 'Trigger On', @@ -156,7 +156,7 @@ export class SalesforceTrigger implements INodeType { }, }, description: - 'Name of the custom object. Choose from the list, or specify an ID using an expression.', + 'Name of the custom object. Choose from the list, or specify an ID using an expression.', }, ], }; diff --git a/packages/nodes-base/nodes/Salesforce/TaskDescription.ts b/packages/nodes-base/nodes/Salesforce/TaskDescription.ts index 5b2fb6ebbf..9b7ff4dcfe 100644 --- a/packages/nodes-base/nodes/Salesforce/TaskDescription.ts +++ b/packages/nodes-base/nodes/Salesforce/TaskDescription.ts @@ -73,7 +73,7 @@ export const taskFields: INodeProperties[] = [ loadOptionsMethod: 'getTaskStatuses', }, description: - 'The current status of the task, such as In Progress or Completed. Choose from the list, or specify an ID using an expression.', + 'The current status of the task, such as In Progress or Completed. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Additional Fields', @@ -129,7 +129,7 @@ export const taskFields: INodeProperties[] = [ loadOptionsMethod: 'getTaskCallTypes', }, description: - 'The type of call being answered: Inbound, Internal, or Outbound. Choose from the list, or specify an ID using an expression.', + 'The type of call being answered: Inbound, Internal, or Outbound. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Custom Fields', @@ -155,7 +155,7 @@ export const taskFields: INodeProperties[] = [ }, default: '', description: - 'The ID of the field to add custom field to. Choose from the list, or specify an ID using an expression.', + 'The ID of the field to add custom field to. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Value', @@ -191,7 +191,7 @@ export const taskFields: INodeProperties[] = [ }, default: '', description: - 'ID of the User who owns the record. Choose from the list, or specify an ID using an expression.', + 'ID of the User who owns the record. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Priority Name or ID', @@ -202,7 +202,7 @@ export const taskFields: INodeProperties[] = [ loadOptionsMethod: 'getTaskPriorities', }, description: - 'Indicates the importance or urgency of a task, such as high or low. Choose from the list, or specify an ID using an expression.', + 'Indicates the importance or urgency of a task, such as high or low. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Recurrence Type Name or ID', @@ -213,7 +213,7 @@ export const taskFields: INodeProperties[] = [ loadOptionsMethod: 'getTaskRecurrenceTypes', }, description: - 'Recurrence Type of the task. Choose from the list, or specify an ID using an expression.', + 'Recurrence Type of the task. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Recurrence Instance Name or ID', @@ -224,7 +224,7 @@ export const taskFields: INodeProperties[] = [ }, default: '', description: - 'The frequency of the recurring task. For example, “2nd” or “3rd.”. Choose from the list, or specify an ID using an expression.', + 'The frequency of the recurring task. For example, “2nd” or “3rd.”. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Recurrence Interval', @@ -369,7 +369,7 @@ export const taskFields: INodeProperties[] = [ loadOptionsMethod: 'getTaskSubjects', }, description: - 'The subject line of the task, such as “Call” or “Send Quote.” Limit: 255 characters. Choose from the list, or specify an ID using an expression.', + 'The subject line of the task, such as “Call” or “Send Quote.” Limit: 255 characters. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Type Name or ID', @@ -380,7 +380,7 @@ export const taskFields: INodeProperties[] = [ loadOptionsMethod: 'getTaskTypes', }, description: - 'Represents Type of the task, such as Call or Meeting. Choose from the list, or specify an ID using an expression.', + 'Represents Type of the task, such as Call or Meeting. Choose from the list, or specify an ID using an expression.', }, { displayName: 'What ID', @@ -472,7 +472,7 @@ export const taskFields: INodeProperties[] = [ loadOptionsMethod: 'getTaskCallTypes', }, description: - 'The type of call being answered: Inbound, Internal, or Outbound. Choose from the list, or specify an ID using an expression.', + 'The type of call being answered: Inbound, Internal, or Outbound. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Custom Fields', @@ -498,7 +498,7 @@ export const taskFields: INodeProperties[] = [ }, default: '', description: - 'The ID of the field to add custom field to. Choose from the list, or specify an ID using an expression.', + 'The ID of the field to add custom field to. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Value', @@ -534,7 +534,7 @@ export const taskFields: INodeProperties[] = [ }, default: '', description: - 'ID of the User who owns the record. Choose from the list, or specify an ID using an expression.', + 'ID of the User who owns the record. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Priority Name or ID', @@ -545,7 +545,7 @@ export const taskFields: INodeProperties[] = [ loadOptionsMethod: 'getTaskPriorities', }, description: - 'Indicates the importance or urgency of a task, such as high or low. Choose from the list, or specify an ID using an expression.', + 'Indicates the importance or urgency of a task, such as high or low. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Status Name or ID', @@ -556,7 +556,7 @@ export const taskFields: INodeProperties[] = [ loadOptionsMethod: 'getTaskStatuses', }, description: - 'The current status of the task, such as In Progress or Completed. Choose from the list, or specify an ID using an expression.', + 'The current status of the task, such as In Progress or Completed. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Subject Name or ID', @@ -567,7 +567,7 @@ export const taskFields: INodeProperties[] = [ loadOptionsMethod: 'getTaskSubjects', }, description: - 'The subject line of the task, such as “Call” or “Send Quote.” Limit: 255 characters. Choose from the list, or specify an ID using an expression.', + 'The subject line of the task, such as “Call” or “Send Quote.” Limit: 255 characters. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Recurrence Day Of Month', @@ -601,7 +601,7 @@ export const taskFields: INodeProperties[] = [ }, default: '', description: - 'The frequency of the recurring task. For example, “2nd” or “3rd.”. Choose from the list, or specify an ID using an expression.', + 'The frequency of the recurring task. For example, “2nd” or “3rd.”. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Recurrence Interval', @@ -707,7 +707,7 @@ export const taskFields: INodeProperties[] = [ loadOptionsMethod: 'getTaskRecurrenceTypes', }, description: - 'Website for the task. Choose from the list, or specify an ID using an expression.', + 'Website for the task. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Recurrence TimeZone SidKey', @@ -734,7 +734,7 @@ export const taskFields: INodeProperties[] = [ loadOptionsMethod: 'getTaskTypes', }, description: - 'Represents Type of the task, such as Call or Meeting. Choose from the list, or specify an ID using an expression.', + 'Represents Type of the task, such as Call or Meeting. Choose from the list, or specify an ID using an expression.', }, { displayName: 'What ID', @@ -862,7 +862,7 @@ export const taskFields: INodeProperties[] = [ }, default: '', description: - 'For date, number, or boolean, please use expressions. Choose from the list, or specify an ID using an expression.', + 'For date, number, or boolean, please use expressions. Choose from the list, or specify an ID using an expression.', }, // eslint-disable-next-line n8n-nodes-base/node-param-operation-without-no-data-expression { diff --git a/packages/nodes-base/nodes/Salesforce/UserDescription.ts b/packages/nodes-base/nodes/Salesforce/UserDescription.ts index 90714da597..cfb69e6a2a 100644 --- a/packages/nodes-base/nodes/Salesforce/UserDescription.ts +++ b/packages/nodes-base/nodes/Salesforce/UserDescription.ts @@ -119,7 +119,7 @@ export const userFields: INodeProperties[] = [ }, default: '', description: - 'For date, number, or boolean, please use expressions. Choose from the list, or specify an ID using an expression.', + 'For date, number, or boolean, please use expressions. Choose from the list, or specify an ID using an expression.', }, // eslint-disable-next-line n8n-nodes-base/node-param-operation-without-no-data-expression { diff --git a/packages/nodes-base/nodes/Salesmate/ActivityDescription.ts b/packages/nodes-base/nodes/Salesmate/ActivityDescription.ts index 8ae1e0fdac..fd0efb820e 100644 --- a/packages/nodes-base/nodes/Salesmate/ActivityDescription.ts +++ b/packages/nodes-base/nodes/Salesmate/ActivityDescription.ts @@ -69,7 +69,7 @@ export const activityFields: INodeProperties[] = [ name: 'owner', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', default: '', typeOptions: { loadOptionsMethod: 'getUsers', @@ -349,7 +349,7 @@ export const activityFields: INodeProperties[] = [ displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, displayOptions: { show: { diff --git a/packages/nodes-base/nodes/Salesmate/CompanyDescription.ts b/packages/nodes-base/nodes/Salesmate/CompanyDescription.ts index 6dc4d77fd2..ba72a6ef6a 100644 --- a/packages/nodes-base/nodes/Salesmate/CompanyDescription.ts +++ b/packages/nodes-base/nodes/Salesmate/CompanyDescription.ts @@ -69,7 +69,7 @@ export const companyFields: INodeProperties[] = [ name: 'owner', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', default: '', typeOptions: { loadOptionsMethod: 'getUsers', @@ -265,7 +265,7 @@ export const companyFields: INodeProperties[] = [ name: 'owner', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', default: '', typeOptions: { loadOptionsMethod: 'getUsers', @@ -454,7 +454,7 @@ export const companyFields: INodeProperties[] = [ displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, displayOptions: { show: { diff --git a/packages/nodes-base/nodes/Salesmate/DealDescription.ts b/packages/nodes-base/nodes/Salesmate/DealDescription.ts index d855b3c8a9..2013752390 100644 --- a/packages/nodes-base/nodes/Salesmate/DealDescription.ts +++ b/packages/nodes-base/nodes/Salesmate/DealDescription.ts @@ -69,7 +69,7 @@ export const dealFields: INodeProperties[] = [ name: 'owner', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', default: '', typeOptions: { loadOptionsMethod: 'getUsers', @@ -97,7 +97,7 @@ export const dealFields: INodeProperties[] = [ }, }, description: - 'Primary contact for the deal. Choose from the list, or specify an ID using an expression.', + 'Primary contact for the deal. Choose from the list, or specify an ID using an expression.', required: true, }, { @@ -240,7 +240,7 @@ export const dealFields: INodeProperties[] = [ name: 'primaryCompany', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getCompanies', }, @@ -360,7 +360,7 @@ export const dealFields: INodeProperties[] = [ name: 'owner', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', default: '', typeOptions: { loadOptionsMethod: 'getUsers', @@ -371,7 +371,7 @@ export const dealFields: INodeProperties[] = [ name: 'primaryContact', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', default: '', typeOptions: { loadOptionsMethod: 'getContacts', @@ -462,7 +462,7 @@ export const dealFields: INodeProperties[] = [ name: 'primaryCompany', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getCompanies', }, @@ -608,7 +608,7 @@ export const dealFields: INodeProperties[] = [ displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, displayOptions: { show: { diff --git a/packages/nodes-base/nodes/Salesmate/Salesmate.node.json b/packages/nodes-base/nodes/Salesmate/Salesmate.node.json index b2cb2e8677..e55e070149 100644 --- a/packages/nodes-base/nodes/Salesmate/Salesmate.node.json +++ b/packages/nodes-base/nodes/Salesmate/Salesmate.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/salesmate" + "url": "https://docs.n8n.io/integrations/builtin/credentials/salesmate/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Salesmate/Salesmate.node.ts b/packages/nodes-base/nodes/Salesmate/Salesmate.node.ts index 820f46f7f5..c0b8d00029 100644 --- a/packages/nodes-base/nodes/Salesmate/Salesmate.node.ts +++ b/packages/nodes-base/nodes/Salesmate/Salesmate.node.ts @@ -7,7 +7,7 @@ import type { INodeType, INodeTypeDescription, } from 'n8n-workflow'; -import { NodeOperationError } from 'n8n-workflow'; +import { NodeConnectionType, NodeOperationError } from 'n8n-workflow'; import { salesmateApiRequest, salesmateApiRequestAllItems, @@ -34,8 +34,8 @@ export class Salesmate implements INodeType { defaults: { name: 'Salesmate', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'salesmateApi', diff --git a/packages/nodes-base/nodes/Schedule/GenericFunctions.ts b/packages/nodes-base/nodes/Schedule/GenericFunctions.ts index 97cec57241..42d31bd582 100644 --- a/packages/nodes-base/nodes/Schedule/GenericFunctions.ts +++ b/packages/nodes-base/nodes/Schedule/GenericFunctions.ts @@ -1,93 +1,128 @@ -import type { IDataObject } from 'n8n-workflow'; import moment from 'moment-timezone'; -import type { IRecurencyRule } from './SchedulerInterface'; +import { type CronExpression, randomInt } from 'n8n-workflow'; +import type { IRecurrenceRule, ScheduleInterval } from './SchedulerInterface'; -export function recurencyCheck( - recurrency: IRecurencyRule, - recurrencyRules: number[], +export function recurrenceCheck( + recurrence: IRecurrenceRule, + recurrenceRules: number[], timezone: string, ): boolean { - const recurrencyRuleIndex = recurrency.index; - const intervalSize = recurrency.intervalSize; - const typeInterval = recurrency.typeInterval; + if (!recurrence.activated) return true; - const lastExecution = - recurrencyRuleIndex !== undefined ? recurrencyRules[recurrencyRuleIndex] : undefined; + const intervalSize = recurrence.intervalSize; + if (!intervalSize) return false; - if ( - intervalSize && - recurrencyRuleIndex !== undefined && - (typeInterval === 'weeks' || typeInterval === 'undefined') - ) { + const index = recurrence.index; + const typeInterval = recurrence.typeInterval; + const lastExecution = recurrenceRules[index]; + + const momentTz = moment.tz(timezone); + if (typeInterval === 'hours') { + const hour = momentTz.hour(); + if (lastExecution === undefined || hour === (intervalSize + lastExecution) % 24) { + recurrenceRules[index] = hour; + return true; + } + } else if (typeInterval === 'days') { + const dayOfYear = momentTz.dayOfYear(); + if (lastExecution === undefined || dayOfYear === (intervalSize + lastExecution) % 365) { + recurrenceRules[index] = dayOfYear; + return true; + } + } else if (typeInterval === 'weeks') { + const week = momentTz.week(); if ( lastExecution === undefined || // First time executing this rule - moment.tz(timezone).week() === (intervalSize + lastExecution) % 52 || // not first time, but minimum interval has passed - moment.tz(timezone).week() === lastExecution // Trigger on multiple days in the same week + week === (intervalSize + lastExecution) % 52 || // not first time, but minimum interval has passed + week === lastExecution // Trigger on multiple days in the same week ) { - recurrencyRules[recurrencyRuleIndex] = moment.tz(timezone).week(); + recurrenceRules[index] = week; return true; } - } else if (intervalSize && recurrencyRuleIndex !== undefined && typeInterval === 'days') { - if ( - lastExecution === undefined || - moment.tz(timezone).dayOfYear() === (intervalSize + lastExecution) % 365 - ) { - recurrencyRules[recurrencyRuleIndex] = moment.tz(timezone).dayOfYear(); + } else if (typeInterval === 'months') { + const month = momentTz.month(); + if (lastExecution === undefined || month === (intervalSize + lastExecution) % 12) { + recurrenceRules[index] = month; return true; } - } else if (intervalSize && recurrencyRuleIndex !== undefined && typeInterval === 'hours') { - if ( - lastExecution === undefined || - moment.tz(timezone).hour() === (intervalSize + lastExecution) % 24 - ) { - recurrencyRules[recurrencyRuleIndex] = moment.tz(timezone).hour(); - return true; - } - } else if (intervalSize && recurrencyRuleIndex !== undefined && typeInterval === 'months') { - if ( - lastExecution === undefined || - moment.tz(timezone).month() === (intervalSize + lastExecution) % 12 - ) { - recurrencyRules[recurrencyRuleIndex] = moment.tz(timezone).month(); - return true; - } - } else { - return true; } return false; } -export function convertMonthToUnix(expression: string): string { - if (!isNaN(parseInt(expression)) || expression.includes('-') || expression.includes(',')) { - let matches = expression.match(/([0-9])+/g) as string[]; - if (matches) { - matches = matches.map((match) => - parseInt(match) !== 0 ? String(parseInt(match) - 1) : match, - ); - } - expression = matches?.join(expression.includes('-') ? '-' : ',') || ''; - } - return expression; -} +export const toCronExpression = (interval: ScheduleInterval): CronExpression => { + if (interval.field === 'cronExpression') return interval.expression; + if (interval.field === 'seconds') return `*/${interval.secondsInterval} * * * * *`; -export function convertToUnixFormat(interval: IDataObject) { - const expression = (interval.expression as string).split(' '); - if (expression.length === 5) { - expression[3] = convertMonthToUnix(expression[3]); - expression[4] = expression[4].replace('7', '0'); - } else if (expression.length === 6) { - expression[4] = convertMonthToUnix(expression[4]); - expression[5] = expression[5].replace('7', '0'); - } - interval.expression = expression.join(' '); -} + const randomSecond = randomInt(0, 60); + if (interval.field === 'minutes') return `${randomSecond} */${interval.minutesInterval} * * * *`; -export const addFallbackValue = (enabled: boolean, fallback: T) => { - if (enabled) { - return (value: T) => { - if (!value) return fallback; - return value; - }; + const minute = interval.triggerAtMinute ?? randomInt(0, 60); + if (interval.field === 'hours') + return `${randomSecond} ${minute} */${interval.hoursInterval} * * *`; + + // Since Cron does not support `*/` for days or weeks, all following expressions trigger more often, but are then filtered by `recurrenceCheck` + const hour = interval.triggerAtHour ?? randomInt(0, 24); + if (interval.field === 'days') return `${randomSecond} ${minute} ${hour} * * *`; + if (interval.field === 'weeks') { + const days = interval.triggerAtDay; + const daysOfWeek = days.length === 0 ? '*' : days.join(','); + return `${randomSecond} ${minute} ${hour} * * ${daysOfWeek}` as CronExpression; } - return (value: T) => value; + + const dayOfMonth = interval.triggerAtDayOfMonth ?? randomInt(0, 31); + return `${randomSecond} ${minute} ${hour} ${dayOfMonth} */${interval.monthsInterval} *`; }; + +export function intervalToRecurrence(interval: ScheduleInterval, index: number) { + let recurrence: IRecurrenceRule = { activated: false }; + + if (interval.field === 'hours') { + const { hoursInterval } = interval; + if (hoursInterval !== 1) { + recurrence = { + activated: true, + index, + intervalSize: hoursInterval, + typeInterval: 'hours', + }; + } + } + + if (interval.field === 'days') { + const { daysInterval } = interval; + if (daysInterval !== 1) { + recurrence = { + activated: true, + index, + intervalSize: daysInterval, + typeInterval: 'days', + }; + } + } + + if (interval.field === 'weeks') { + const { weeksInterval } = interval; + if (weeksInterval !== 1) { + recurrence = { + activated: true, + index, + intervalSize: weeksInterval, + typeInterval: 'weeks', + }; + } + } + + if (interval.field === 'months') { + const { monthsInterval } = interval; + if (monthsInterval !== 1) { + recurrence = { + activated: true, + index, + intervalSize: monthsInterval, + typeInterval: 'months', + }; + } + } + + return recurrence; +} diff --git a/packages/nodes-base/nodes/Schedule/ScheduleTrigger.node.ts b/packages/nodes-base/nodes/Schedule/ScheduleTrigger.node.ts index 09627e8d4b..904c5f6567 100644 --- a/packages/nodes-base/nodes/Schedule/ScheduleTrigger.node.ts +++ b/packages/nodes-base/nodes/Schedule/ScheduleTrigger.node.ts @@ -1,16 +1,15 @@ import type { ITriggerFunctions, - IDataObject, INodeType, INodeTypeDescription, ITriggerResponse, } from 'n8n-workflow'; -import { NodeOperationError } from 'n8n-workflow'; - -import { CronJob } from 'cron'; +import { NodeConnectionType, NodeOperationError } from 'n8n-workflow'; import moment from 'moment-timezone'; -import type { IRecurencyRule } from './SchedulerInterface'; -import { addFallbackValue, convertToUnixFormat, recurencyCheck } from './GenericFunctions'; +import { sendAt } from 'cron'; + +import type { IRecurrenceRule, Rule } from './SchedulerInterface'; +import { intervalToRecurrence, recurrenceCheck, toCronExpression } from './GenericFunctions'; export class ScheduleTrigger implements INodeType { description: INodeTypeDescription = { @@ -29,7 +28,7 @@ export class ScheduleTrigger implements INodeType { }, inputs: [], - outputs: ['main'], + outputs: [NodeConnectionType.Main], properties: [ { displayName: @@ -402,7 +401,7 @@ export class ScheduleTrigger implements INodeType { field: ['cronExpression'], }, }, - hint: 'Format: [Minute] [Hour] [Day of Month] [Month] [Day of Week]', + hint: 'Format: [Second] [Minute] [Hour] [Day of Month] [Month] [Day of Week]', }, ], }, @@ -412,239 +411,74 @@ export class ScheduleTrigger implements INodeType { }; async trigger(this: ITriggerFunctions): Promise { - const rule = this.getNodeParameter('rule', []) as IDataObject; - const interval = rule.interval as IDataObject[]; + const { interval: intervals } = this.getNodeParameter('rule', []) as Rule; const timezone = this.getTimezone(); - const nodeVersion = this.getNode().typeVersion; - const cronJobs: CronJob[] = []; - const intervalArr: NodeJS.Timeout[] = []; const staticData = this.getWorkflowStaticData('node') as { - recurrencyRules: number[]; + recurrenceRules: number[]; }; - if (!staticData.recurrencyRules) { - staticData.recurrencyRules = []; + if (!staticData.recurrenceRules) { + staticData.recurrenceRules = []; } - const fallbackToZero = addFallbackValue(nodeVersion >= 1.2, '0'); - const executeTrigger = async (recurency: IRecurencyRule) => { + + const executeTrigger = (recurrence: IRecurrenceRule) => { + const shouldTrigger = recurrenceCheck(recurrence, staticData.recurrenceRules, timezone); + if (!shouldTrigger) return; + + const momentTz = moment.tz(timezone); const resultData = { - timestamp: moment.tz(timezone).toISOString(true), - 'Readable date': moment.tz(timezone).format('MMMM Do YYYY, h:mm:ss a'), - 'Readable time': moment.tz(timezone).format('h:mm:ss a'), - 'Day of week': moment.tz(timezone).format('dddd'), - Year: moment.tz(timezone).format('YYYY'), - Month: moment.tz(timezone).format('MMMM'), - 'Day of month': moment.tz(timezone).format('DD'), - Hour: moment.tz(timezone).format('HH'), - Minute: moment.tz(timezone).format('mm'), - Second: moment.tz(timezone).format('ss'), - Timezone: moment.tz(timezone).format('z Z'), + timestamp: momentTz.toISOString(true), + 'Readable date': momentTz.format('MMMM Do YYYY, h:mm:ss a'), + 'Readable time': momentTz.format('h:mm:ss a'), + 'Day of week': momentTz.format('dddd'), + Year: momentTz.format('YYYY'), + Month: momentTz.format('MMMM'), + 'Day of month': momentTz.format('DD'), + Hour: momentTz.format('HH'), + Minute: momentTz.format('mm'), + Second: momentTz.format('ss'), + Timezone: `${timezone} (UTC${momentTz.format('Z')})`, }; - if (!recurency.activated) { - this.emit([this.helpers.returnJsonArray([resultData])]); - } else { - if (recurencyCheck(recurency, staticData.recurrencyRules, timezone)) { - this.emit([this.helpers.returnJsonArray([resultData])]); - } - } + this.emit([this.helpers.returnJsonArray([resultData])]); }; - for (let i = 0; i < interval.length; i++) { - let intervalValue = 1000; - if (interval[i].field === 'cronExpression') { - if (nodeVersion > 1) { - // ! Remove this part if we use a cron library that follows unix cron expression - convertToUnixFormat(interval[i]); - } - const cronExpression = interval[i].expression as string; + const rules = intervals.map((interval, i) => ({ + interval, + cronExpression: toCronExpression(interval), + recurrence: intervalToRecurrence(interval, i), + })); + + if (this.getMode() !== 'manual') { + for (const { interval, cronExpression, recurrence } of rules) { try { - const cronJob = new CronJob( - cronExpression, - async () => await executeTrigger({ activated: false } as IRecurencyRule), - undefined, - true, - timezone, - ); - cronJobs.push(cronJob); + this.helpers.registerCron(cronExpression, () => executeTrigger(recurrence)); } catch (error) { - throw new NodeOperationError(this.getNode(), 'Invalid cron expression', { - description: 'More information on how to build them at https://crontab.guru/', - }); + if (interval.field === 'cronExpression') { + throw new NodeOperationError(this.getNode(), 'Invalid cron expression', { + description: 'More information on how to build them at https://crontab.guru/', + }); + } else { + throw error; + } } } - - if (interval[i].field === 'seconds') { - const seconds = interval[i].secondsInterval as number; - intervalValue *= seconds; - const intervalObj = setInterval( - async () => await executeTrigger({ activated: false } as IRecurencyRule), - intervalValue, - ) as NodeJS.Timeout; - intervalArr.push(intervalObj); - } - - if (interval[i].field === 'minutes') { - const minutes = interval[i].minutesInterval as number; - intervalValue *= 60 * minutes; - const intervalObj = setInterval( - async () => await executeTrigger({ activated: false } as IRecurencyRule), - intervalValue, - ) as NodeJS.Timeout; - intervalArr.push(intervalObj); - } - - if (interval[i].field === 'hours') { - const hour = interval[i].hoursInterval as number; - const minute = fallbackToZero(interval[i].triggerAtMinute?.toString() as string); - - const cronTimes: string[] = [minute, '*', '*', '*', '*']; - const cronExpression: string = cronTimes.join(' '); - if (hour === 1) { - const cronJob = new CronJob( - cronExpression, - async () => await executeTrigger({ activated: false } as IRecurencyRule), - undefined, - true, - timezone, - ); - cronJobs.push(cronJob); - } else { - const cronJob = new CronJob( - cronExpression, - async () => - await executeTrigger({ - activated: true, - index: i, - intervalSize: hour, - typeInterval: 'hours', - } as IRecurencyRule), - undefined, - true, - timezone, - ); - cronJobs.push(cronJob); + return {}; + } else { + const manualTriggerFunction = async () => { + const { interval, cronExpression, recurrence } = rules[0]; + if (interval.field === 'cronExpression') { + try { + sendAt(cronExpression); + } catch (error) { + throw new NodeOperationError(this.getNode(), 'Invalid cron expression', { + description: 'More information on how to build them at https://crontab.guru/', + }); + } } - } + executeTrigger(recurrence); + }; - if (interval[i].field === 'days') { - const day = interval[i].daysInterval as number; - const hour = interval[i].triggerAtHour?.toString() as string; - const minute = fallbackToZero(interval[i].triggerAtMinute?.toString() as string); - const cronTimes: string[] = [minute, hour, '*', '*', '*']; - const cronExpression: string = cronTimes.join(' '); - if (day === 1) { - const cronJob = new CronJob( - cronExpression, - async () => await executeTrigger({ activated: false } as IRecurencyRule), - undefined, - true, - timezone, - ); - cronJobs.push(cronJob); - } else { - const cronJob = new CronJob( - cronExpression, - async () => - await executeTrigger({ - activated: true, - index: i, - intervalSize: day, - typeInterval: 'days', - } as IRecurencyRule), - undefined, - true, - timezone, - ); - cronJobs.push(cronJob); - } - } - - if (interval[i].field === 'weeks') { - const hour = interval[i].triggerAtHour?.toString() as string; - const minute = fallbackToZero(interval[i].triggerAtMinute?.toString() as string); - const week = interval[i].weeksInterval as number; - const days = interval[i].triggerAtDay as IDataObject[]; - const day = days.length === 0 ? '*' : days.join(','); - const cronTimes: string[] = [minute, hour, '*', '*', day]; - const cronExpression = cronTimes.join(' '); - if (week === 1) { - const cronJob = new CronJob( - cronExpression, - async () => await executeTrigger({ activated: false } as IRecurencyRule), - undefined, - true, - timezone, - ); - cronJobs.push(cronJob); - } else { - const cronJob = new CronJob( - cronExpression, - async () => - await executeTrigger({ - activated: true, - index: i, - intervalSize: week, - typeInterval: 'weeks', - } as IRecurencyRule), - undefined, - true, - timezone, - ); - cronJobs.push(cronJob); - } - } - - if (interval[i].field === 'months') { - const month = interval[i].monthsInterval; - const day = interval[i].triggerAtDayOfMonth?.toString() as string; - const hour = interval[i].triggerAtHour?.toString() as string; - const minute = fallbackToZero(interval[i].triggerAtMinute?.toString() as string); - const cronTimes: string[] = [minute, hour, day, '*', '*']; - const cronExpression: string = cronTimes.join(' '); - if (month === 1) { - const cronJob = new CronJob( - cronExpression, - async () => await executeTrigger({ activated: false } as IRecurencyRule), - undefined, - true, - timezone, - ); - cronJobs.push(cronJob); - } else { - const cronJob = new CronJob( - cronExpression, - async () => - await executeTrigger({ - activated: true, - index: i, - intervalSize: month, - typeInterval: 'months', - } as IRecurencyRule), - undefined, - true, - timezone, - ); - cronJobs.push(cronJob); - } - } + return { manualTriggerFunction }; } - - async function closeFunction() { - for (const cronJob of cronJobs) { - cronJob.stop(); - } - for (const entry of intervalArr) { - clearInterval(entry); - } - } - - async function manualTriggerFunction() { - void executeTrigger({ activated: false } as IRecurencyRule); - } - - return { - closeFunction, - manualTriggerFunction, - }; } } diff --git a/packages/nodes-base/nodes/Schedule/SchedulerInterface.ts b/packages/nodes-base/nodes/Schedule/SchedulerInterface.ts index b2aec0d748..1acc9ee9ed 100644 --- a/packages/nodes-base/nodes/Schedule/SchedulerInterface.ts +++ b/packages/nodes-base/nodes/Schedule/SchedulerInterface.ts @@ -1,6 +1,53 @@ -export interface IRecurencyRule { - activated: boolean; - index?: number; - intervalSize?: number; - typeInterval?: string; +import type { CronExpression } from 'n8n-workflow'; + +export type IRecurrenceRule = + | { activated: false } + | { + activated: true; + index: number; + intervalSize: number; + typeInterval: 'hours' | 'days' | 'weeks' | 'months'; + }; + +export type ScheduleInterval = + | { + field: 'cronExpression'; + expression: CronExpression; + } + | { + field: 'seconds'; + secondsInterval: number; + } + | { + field: 'minutes'; + minutesInterval: number; + } + | { + field: 'hours'; + hoursInterval: number; + triggerAtMinute?: number; + } + | { + field: 'days'; + daysInterval: number; + triggerAtHour?: number; + triggerAtMinute?: number; + } + | { + field: 'weeks'; + weeksInterval: number; + triggerAtDay: number[]; + triggerAtHour?: number; + triggerAtMinute?: number; + } + | { + field: 'months'; + monthsInterval: number; + triggerAtDayOfMonth?: number; + triggerAtHour?: number; + triggerAtMinute?: number; + }; + +export interface Rule { + interval: ScheduleInterval[]; } diff --git a/packages/nodes-base/nodes/Schedule/test/GenericFunctions.test.ts b/packages/nodes-base/nodes/Schedule/test/GenericFunctions.test.ts new file mode 100644 index 0000000000..d6c124cc4c --- /dev/null +++ b/packages/nodes-base/nodes/Schedule/test/GenericFunctions.test.ts @@ -0,0 +1,257 @@ +import * as n8nWorkflow from 'n8n-workflow'; +import { intervalToRecurrence, recurrenceCheck, toCronExpression } from '../GenericFunctions'; +import type { IRecurrenceRule } from '../SchedulerInterface'; + +describe('toCronExpression', () => { + Object.defineProperty(n8nWorkflow, 'randomInt', { + value: (min: number, max: number) => Math.floor((min + max) / 2), + }); + + it('should return cron expression for cronExpression field', () => { + const result = toCronExpression({ + field: 'cronExpression', + expression: '1 2 3 * * *', + }); + expect(result).toEqual('1 2 3 * * *'); + }); + + it('should return cron expression for seconds interval', () => { + const result = toCronExpression({ + field: 'seconds', + secondsInterval: 10, + }); + expect(result).toEqual('*/10 * * * * *'); + }); + + it('should return cron expression for minutes interval', () => { + const result = toCronExpression({ + field: 'minutes', + minutesInterval: 30, + }); + expect(result).toEqual('30 */30 * * * *'); + }); + + it('should return cron expression for hours interval', () => { + const result = toCronExpression({ + field: 'hours', + hoursInterval: 3, + triggerAtMinute: 22, + }); + expect(result).toEqual('30 22 */3 * * *'); + + const result1 = toCronExpression({ + field: 'hours', + hoursInterval: 3, + }); + expect(result1).toEqual('30 30 */3 * * *'); + }); + + it('should return cron expression for days interval', () => { + const result = toCronExpression({ + field: 'days', + daysInterval: 4, + triggerAtMinute: 30, + triggerAtHour: 10, + }); + expect(result).toEqual('30 30 10 * * *'); + + const result1 = toCronExpression({ + field: 'days', + daysInterval: 4, + }); + expect(result1).toEqual('30 30 12 * * *'); + }); + + it('should return cron expression for weeks interval', () => { + const result = toCronExpression({ + field: 'weeks', + weeksInterval: 2, + triggerAtMinute: 0, + triggerAtHour: 9, + triggerAtDay: [1, 3, 5], + }); + expect(result).toEqual('30 0 9 * * 1,3,5'); + const result1 = toCronExpression({ + field: 'weeks', + weeksInterval: 2, + triggerAtDay: [1, 3, 5], + }); + expect(result1).toEqual('30 30 12 * * 1,3,5'); + }); + + it('should return cron expression for months interval', () => { + const result = toCronExpression({ + field: 'months', + monthsInterval: 3, + triggerAtMinute: 0, + triggerAtHour: 0, + triggerAtDayOfMonth: 1, + }); + expect(result).toEqual('30 0 0 1 */3 *'); + const result1 = toCronExpression({ + field: 'months', + monthsInterval: 3, + }); + expect(result1).toEqual('30 30 12 15 */3 *'); + }); +}); + +describe('recurrenceCheck', () => { + it('should return true if activated=false', () => { + const result = recurrenceCheck({ activated: false }, [], 'UTC'); + expect(result).toBe(true); + }); + + it('should return false if intervalSize is falsey', () => { + const result = recurrenceCheck( + { + activated: true, + index: 0, + intervalSize: 0, + typeInterval: 'days', + }, + [], + 'UTC', + ); + expect(result).toBe(false); + }); + + it('should return true only once for a day cron', () => { + const recurrence: IRecurrenceRule = { + activated: true, + index: 0, + intervalSize: 2, + typeInterval: 'days', + }; + const recurrenceRules: number[] = []; + const result1 = recurrenceCheck(recurrence, recurrenceRules, 'UTC'); + expect(result1).toBe(true); + const result2 = recurrenceCheck(recurrence, recurrenceRules, 'UTC'); + expect(result2).toBe(false); + }); +}); + +describe('intervalToRecurrence', () => { + it('should return recurrence rule for seconds interval', () => { + const result = intervalToRecurrence( + { + field: 'seconds', + secondsInterval: 10, + }, + 0, + ); + expect(result.activated).toBe(false); + }); + + it('should return recurrence rule for minutes interval', () => { + const result = intervalToRecurrence( + { + field: 'minutes', + minutesInterval: 30, + }, + 1, + ); + expect(result.activated).toBe(false); + }); + + it('should return recurrence rule for hours interval', () => { + const result = intervalToRecurrence( + { + field: 'hours', + hoursInterval: 3, + triggerAtMinute: 22, + }, + 2, + ); + expect(result).toEqual({ + activated: true, + index: 2, + intervalSize: 3, + typeInterval: 'hours', + }); + + const result1 = intervalToRecurrence( + { + field: 'hours', + hoursInterval: 3, + }, + 3, + ); + expect(result1).toEqual({ + activated: true, + index: 3, + intervalSize: 3, + typeInterval: 'hours', + }); + }); + + it('should return recurrence rule for days interval', () => { + const result = intervalToRecurrence( + { + field: 'days', + daysInterval: 4, + triggerAtMinute: 30, + triggerAtHour: 10, + }, + 4, + ); + expect(result).toEqual({ + activated: true, + index: 4, + intervalSize: 4, + typeInterval: 'days', + }); + + const result1 = intervalToRecurrence( + { + field: 'days', + daysInterval: 4, + }, + 5, + ); + expect(result1).toEqual({ + activated: true, + index: 5, + intervalSize: 4, + typeInterval: 'days', + }); + }); + + it('should return recurrence rule for weeks interval', () => { + const result = intervalToRecurrence( + { + field: 'weeks', + weeksInterval: 2, + triggerAtMinute: 0, + triggerAtHour: 9, + triggerAtDay: [1, 3, 5], + }, + 6, + ); + expect(result).toEqual({ + activated: true, + index: 6, + intervalSize: 2, + typeInterval: 'weeks', + }); + }); + + it('should return recurrence rule for months interval', () => { + const result = intervalToRecurrence( + { + field: 'months', + monthsInterval: 3, + triggerAtMinute: 0, + triggerAtHour: 0, + triggerAtDayOfMonth: 1, + }, + 8, + ); + expect(result).toEqual({ + activated: true, + index: 8, + intervalSize: 3, + typeInterval: 'months', + }); + }); +}); diff --git a/packages/nodes-base/nodes/Schedule/test/ScheduleTrigger.node.test.ts b/packages/nodes-base/nodes/Schedule/test/ScheduleTrigger.node.test.ts new file mode 100644 index 0000000000..aa81a05857 --- /dev/null +++ b/packages/nodes-base/nodes/Schedule/test/ScheduleTrigger.node.test.ts @@ -0,0 +1,158 @@ +import * as n8nWorkflow from 'n8n-workflow'; + +import { testTriggerNode } from '@test/nodes/TriggerHelpers'; + +import { ScheduleTrigger } from '../ScheduleTrigger.node'; + +describe('ScheduleTrigger', () => { + Object.defineProperty(n8nWorkflow, 'randomInt', { + value: (min: number, max: number) => Math.floor((min + max) / 2), + }); + + const HOUR = 60 * 60 * 1000; + const mockDate = new Date('2023-12-28 12:34:56.789Z'); + const timezone = 'Europe/Berlin'; + + beforeEach(() => { + jest.clearAllMocks(); + jest.useFakeTimers(); + jest.setSystemTime(mockDate); + }); + + describe('trigger', () => { + it('should emit on defined schedule', async () => { + const { emit } = await testTriggerNode(ScheduleTrigger, { + timezone, + node: { parameters: { rule: { interval: [{ field: 'hours', hoursInterval: 3 }] } } }, + workflowStaticData: { recurrenceRules: [] }, + }); + + expect(emit).not.toHaveBeenCalled(); + + jest.advanceTimersByTime(HOUR); + expect(emit).not.toHaveBeenCalled(); + + jest.advanceTimersByTime(2 * HOUR); + expect(emit).toHaveBeenCalledTimes(1); + + const firstTriggerData = emit.mock.calls[0][0][0][0]; + expect(firstTriggerData.json).toEqual({ + 'Day of month': '28', + 'Day of week': 'Thursday', + Hour: '15', + Minute: '30', + Month: 'December', + 'Readable date': 'December 28th 2023, 3:30:30 pm', + 'Readable time': '3:30:30 pm', + Second: '30', + Timezone: 'Europe/Berlin (UTC+01:00)', + Year: '2023', + timestamp: '2023-12-28T15:30:30.000+01:00', + }); + + jest.setSystemTime(new Date(firstTriggerData.json.timestamp as string)); + + jest.advanceTimersByTime(2 * HOUR); + expect(emit).toHaveBeenCalledTimes(1); + + jest.advanceTimersByTime(HOUR); + expect(emit).toHaveBeenCalledTimes(2); + }); + + it('should emit on schedule defined as a cron expression', async () => { + const { emit } = await testTriggerNode(ScheduleTrigger, { + timezone, + node: { + parameters: { + rule: { + interval: [ + { + field: 'cronExpression', + expression: '0 */2 * * *', // every 2 hours + }, + ], + }, + }, + }, + workflowStaticData: {}, + }); + + expect(emit).not.toHaveBeenCalled(); + + jest.advanceTimersByTime(2 * HOUR); + expect(emit).toHaveBeenCalledTimes(1); + + jest.advanceTimersByTime(2 * HOUR); + expect(emit).toHaveBeenCalledTimes(2); + }); + + it('should throw on invalid cron expressions', async () => { + await expect( + testTriggerNode(ScheduleTrigger, { + timezone, + node: { + parameters: { + rule: { + interval: [ + { + field: 'cronExpression', + expression: '100 * * * *', // minute should be 0-59 -> invalid + }, + ], + }, + }, + }, + workflowStaticData: {}, + }), + ).rejects.toBeInstanceOf(n8nWorkflow.NodeOperationError); + }); + + it('should emit when manually executed', async () => { + const { emit } = await testTriggerNode(ScheduleTrigger, { + mode: 'manual', + timezone, + node: { parameters: { rule: { interval: [{ field: 'hours', hoursInterval: 3 }] } } }, + workflowStaticData: { recurrenceRules: [] }, + }); + + expect(emit).toHaveBeenCalledTimes(1); + + const firstTriggerData = emit.mock.calls[0][0][0][0]; + expect(firstTriggerData.json).toEqual({ + 'Day of month': '28', + 'Day of week': 'Thursday', + Hour: '13', + Minute: '34', + Month: 'December', + 'Readable date': 'December 28th 2023, 1:34:56 pm', + 'Readable time': '1:34:56 pm', + Second: '56', + Timezone: 'Europe/Berlin (UTC+01:00)', + Year: '2023', + timestamp: '2023-12-28T13:34:56.789+01:00', + }); + }); + + it('should throw on invalid cron expressions in manual mode', async () => { + await expect( + testTriggerNode(ScheduleTrigger, { + mode: 'manual', + timezone, + node: { + parameters: { + rule: { + interval: [ + { + field: 'cronExpression', + expression: '@daily *', // adding extra fields to shorthand not allowed -> invalid + }, + ], + }, + }, + }, + workflowStaticData: {}, + }), + ).rejects.toBeInstanceOf(n8nWorkflow.NodeOperationError); + }); + }); +}); diff --git a/packages/nodes-base/nodes/SeaTable/SeaTable.node.json b/packages/nodes-base/nodes/SeaTable/SeaTable.node.json index 47685f82cd..ed00b66702 100644 --- a/packages/nodes-base/nodes/SeaTable/SeaTable.node.json +++ b/packages/nodes-base/nodes/SeaTable/SeaTable.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/seaTable" + "url": "https://docs.n8n.io/integrations/builtin/credentials/seaTable/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/SeaTable/SeaTableTrigger.node.json b/packages/nodes-base/nodes/SeaTable/SeaTableTrigger.node.json index 9676b9e9c0..1f321d807e 100644 --- a/packages/nodes-base/nodes/SeaTable/SeaTableTrigger.node.json +++ b/packages/nodes-base/nodes/SeaTable/SeaTableTrigger.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/seaTable" + "url": "https://docs.n8n.io/integrations/builtin/credentials/seaTable/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/SeaTable/v1/RowDescription.ts b/packages/nodes-base/nodes/SeaTable/v1/RowDescription.ts index 29e4c19637..29141a10cf 100644 --- a/packages/nodes-base/nodes/SeaTable/v1/RowDescription.ts +++ b/packages/nodes-base/nodes/SeaTable/v1/RowDescription.ts @@ -86,7 +86,7 @@ export const rowFields: INodeProperties[] = [ default: '', // eslint-disable-next-line n8n-nodes-base/node-param-description-wrong-for-dynamic-options description: - 'The name of SeaTable table to access. Choose from the list, or specify an ID using an expression.', + 'The name of SeaTable table to access. Choose from the list, or specify an ID using an expression.', }, // ---------------------------------- @@ -284,7 +284,7 @@ export const rowFields: INodeProperties[] = [ displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, displayOptions: { show: { diff --git a/packages/nodes-base/nodes/SecurityScorecard/SecurityScorecard.node.json b/packages/nodes-base/nodes/SecurityScorecard/SecurityScorecard.node.json index c01fdc930f..7c9b7c8d65 100644 --- a/packages/nodes-base/nodes/SecurityScorecard/SecurityScorecard.node.json +++ b/packages/nodes-base/nodes/SecurityScorecard/SecurityScorecard.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/securityScorecard" + "url": "https://docs.n8n.io/integrations/builtin/credentials/securityScorecard/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/SecurityScorecard/SecurityScorecard.node.ts b/packages/nodes-base/nodes/SecurityScorecard/SecurityScorecard.node.ts index 978135609e..a1e533f6c9 100644 --- a/packages/nodes-base/nodes/SecurityScorecard/SecurityScorecard.node.ts +++ b/packages/nodes-base/nodes/SecurityScorecard/SecurityScorecard.node.ts @@ -5,6 +5,7 @@ import type { INodeType, INodeTypeDescription, } from 'n8n-workflow'; +import { NodeConnectionType } from 'n8n-workflow'; import moment from 'moment-timezone'; import { companyFields, companyOperations } from './descriptions/CompanyDescription'; @@ -36,8 +37,8 @@ export class SecurityScorecard implements INodeType { defaults: { name: 'SecurityScorecard', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'securityScorecardApi', diff --git a/packages/nodes-base/nodes/SecurityScorecard/descriptions/CompanyDescription.ts b/packages/nodes-base/nodes/SecurityScorecard/descriptions/CompanyDescription.ts index da50c84132..fe76e38b1c 100644 --- a/packages/nodes-base/nodes/SecurityScorecard/descriptions/CompanyDescription.ts +++ b/packages/nodes-base/nodes/SecurityScorecard/descriptions/CompanyDescription.ts @@ -172,7 +172,7 @@ export const companyFields: INodeProperties[] = [ }, }, type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, options: [ { diff --git a/packages/nodes-base/nodes/SecurityScorecard/descriptions/IndustryDescription.ts b/packages/nodes-base/nodes/SecurityScorecard/descriptions/IndustryDescription.ts index 06345a46c4..ce762c1f2c 100644 --- a/packages/nodes-base/nodes/SecurityScorecard/descriptions/IndustryDescription.ts +++ b/packages/nodes-base/nodes/SecurityScorecard/descriptions/IndustryDescription.ts @@ -123,7 +123,7 @@ export const industryFields: INodeProperties[] = [ }, }, type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, options: [ { diff --git a/packages/nodes-base/nodes/Segment/Segment.node.json b/packages/nodes-base/nodes/Segment/Segment.node.json index 5fbd15a890..fe063f458a 100644 --- a/packages/nodes-base/nodes/Segment/Segment.node.json +++ b/packages/nodes-base/nodes/Segment/Segment.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/segment" + "url": "https://docs.n8n.io/integrations/builtin/credentials/segment/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Segment/Segment.node.ts b/packages/nodes-base/nodes/Segment/Segment.node.ts index 9e878c5a14..bfef2985a5 100644 --- a/packages/nodes-base/nodes/Segment/Segment.node.ts +++ b/packages/nodes-base/nodes/Segment/Segment.node.ts @@ -5,6 +5,7 @@ import type { INodeType, INodeTypeDescription, } from 'n8n-workflow'; +import { NodeConnectionType } from 'n8n-workflow'; import { v4 as uuid } from 'uuid'; import { segmentApiRequest } from './GenericFunctions'; @@ -31,8 +32,8 @@ export class Segment implements INodeType { defaults: { name: 'Segment', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'segmentApi', @@ -616,7 +617,7 @@ export class Segment implements INodeType { } } } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push({ error: error.message }); continue; } diff --git a/packages/nodes-base/nodes/SendGrid/ContactDescription.ts b/packages/nodes-base/nodes/SendGrid/ContactDescription.ts index 6c16c1f78e..87431dace9 100644 --- a/packages/nodes-base/nodes/SendGrid/ContactDescription.ts +++ b/packages/nodes-base/nodes/SendGrid/ContactDescription.ts @@ -225,7 +225,7 @@ export const contactFields: INodeProperties[] = [ }, default: [], description: - 'ID of the field to set. Choose from the list, or specify IDs using an expression.', + 'ID of the field to set. Choose from the list, or specify IDs using an expression.', }, ], }, @@ -255,7 +255,7 @@ export const contactFields: INodeProperties[] = [ }, default: '', description: - 'ID of the field. Choose from the list, or specify an ID using an expression.', + 'ID of the field. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Field Value', diff --git a/packages/nodes-base/nodes/SendGrid/MailDescription.ts b/packages/nodes-base/nodes/SendGrid/MailDescription.ts index 9cfe572f2e..067c52597c 100644 --- a/packages/nodes-base/nodes/SendGrid/MailDescription.ts +++ b/packages/nodes-base/nodes/SendGrid/MailDescription.ts @@ -141,7 +141,7 @@ export const mailFields: INodeProperties[] = [ name: 'templateId', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', default: [], typeOptions: { loadOptionsMethod: 'getTemplateIds', diff --git a/packages/nodes-base/nodes/SendGrid/SendGrid.node.json b/packages/nodes-base/nodes/SendGrid/SendGrid.node.json index 0bccd6cf99..2aea57de95 100644 --- a/packages/nodes-base/nodes/SendGrid/SendGrid.node.json +++ b/packages/nodes-base/nodes/SendGrid/SendGrid.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/sendGrid" + "url": "https://docs.n8n.io/integrations/builtin/credentials/sendGrid/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/SendGrid/SendGrid.node.ts b/packages/nodes-base/nodes/SendGrid/SendGrid.node.ts index 69c83d889f..c803521206 100644 --- a/packages/nodes-base/nodes/SendGrid/SendGrid.node.ts +++ b/packages/nodes-base/nodes/SendGrid/SendGrid.node.ts @@ -1,12 +1,13 @@ -import type { - IDataObject, - IExecuteFunctions, - IHttpRequestMethods, - ILoadOptionsFunctions, - INodeExecutionData, - INodePropertyOptions, - INodeType, - INodeTypeDescription, +import { + NodeConnectionType, + type IDataObject, + type IExecuteFunctions, + type IHttpRequestMethods, + type ILoadOptionsFunctions, + type INodeExecutionData, + type INodePropertyOptions, + type INodeType, + type INodeTypeDescription, } from 'n8n-workflow'; import moment from 'moment-timezone'; @@ -31,8 +32,8 @@ export class SendGrid implements INodeType { defaults: { name: 'SendGrid', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'sendGridApi', @@ -172,7 +173,7 @@ export class SendGrid implements INodeType { ); returnData.push(...executionData); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { const executionData = this.helpers.constructExecutionMetaData( this.helpers.returnJsonArray({ error: error.message }), { itemData: { item: i } }, @@ -213,7 +214,7 @@ export class SendGrid implements INodeType { ); returnData.push(...executionData); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { const executionData = this.helpers.constructExecutionMetaData( this.helpers.returnJsonArray({ error: error.message }), { itemData: { item: i } }, @@ -305,7 +306,7 @@ export class SendGrid implements INodeType { ); returnData.push(responseData as INodeExecutionData); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push({ json: { error: error.message } }); } else { throw error; @@ -334,7 +335,7 @@ export class SendGrid implements INodeType { ); returnData.push(...executionData); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { const executionData = this.helpers.constructExecutionMetaData( this.helpers.returnJsonArray({ error: error.message }), { itemData: { item: i } }, @@ -371,7 +372,7 @@ export class SendGrid implements INodeType { ); returnData.push(...executionData); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { const executionData = this.helpers.constructExecutionMetaData( this.helpers.returnJsonArray({ error: error.message }), { itemData: { item: i } }, @@ -402,7 +403,7 @@ export class SendGrid implements INodeType { ); returnData.push(...executionData); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { const executionData = this.helpers.constructExecutionMetaData( this.helpers.returnJsonArray({ error: error.message }), { itemData: { item: i } }, @@ -432,7 +433,7 @@ export class SendGrid implements INodeType { ); returnData.push(...executionData); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { const executionData = this.helpers.constructExecutionMetaData( this.helpers.returnJsonArray({ error: error.message }), { itemData: { item: i } }, @@ -463,7 +464,7 @@ export class SendGrid implements INodeType { ); returnData.push(...executionData); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { const executionData = this.helpers.constructExecutionMetaData( this.helpers.returnJsonArray({ error: error.message }), { itemData: { item: i } }, @@ -493,7 +494,7 @@ export class SendGrid implements INodeType { ); returnData.push(...executionData); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { const executionData = this.helpers.constructExecutionMetaData( this.helpers.returnJsonArray({ error: error.message }), { itemData: { item: i } }, @@ -641,7 +642,7 @@ export class SendGrid implements INodeType { ); returnData.push(...executionData); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { const executionData = this.helpers.constructExecutionMetaData( this.helpers.returnJsonArray({ error: error.message }), { itemData: { item: i } }, diff --git a/packages/nodes-base/nodes/Sendy/Sendy.node.json b/packages/nodes-base/nodes/Sendy/Sendy.node.json index b65a74caac..a29ae024dc 100644 --- a/packages/nodes-base/nodes/Sendy/Sendy.node.json +++ b/packages/nodes-base/nodes/Sendy/Sendy.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/sendy" + "url": "https://docs.n8n.io/integrations/builtin/credentials/sendy/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Sendy/Sendy.node.ts b/packages/nodes-base/nodes/Sendy/Sendy.node.ts index 0e8236c68c..9bf36b2e82 100644 --- a/packages/nodes-base/nodes/Sendy/Sendy.node.ts +++ b/packages/nodes-base/nodes/Sendy/Sendy.node.ts @@ -6,7 +6,7 @@ import type { INodeTypeDescription, JsonObject, } from 'n8n-workflow'; -import { NodeApiError, NodeOperationError } from 'n8n-workflow'; +import { NodeApiError, NodeConnectionType, NodeOperationError } from 'n8n-workflow'; import { sendyApiRequest } from './GenericFunctions'; @@ -27,8 +27,8 @@ export class Sendy implements INodeType { defaults: { name: 'Sendy', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'sendyApi', diff --git a/packages/nodes-base/nodes/SentryIo/EventDescription.ts b/packages/nodes-base/nodes/SentryIo/EventDescription.ts index a5025aaabc..2258d706df 100644 --- a/packages/nodes-base/nodes/SentryIo/EventDescription.ts +++ b/packages/nodes-base/nodes/SentryIo/EventDescription.ts @@ -49,7 +49,7 @@ export const eventFields: INodeProperties[] = [ }, required: true, description: - 'The slug of the organization the events belong to. Choose from the list, or specify an ID using an expression.', + 'The slug of the organization the events belong to. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Project Slug Name or ID', @@ -68,7 +68,7 @@ export const eventFields: INodeProperties[] = [ }, required: true, description: - 'The slug of the project the events belong to. Choose from the list, or specify an ID using an expression.', + 'The slug of the project the events belong to. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Full', @@ -135,7 +135,7 @@ export const eventFields: INodeProperties[] = [ }, required: true, description: - 'The slug of the organization the events belong to. Choose from the list, or specify an ID using an expression.', + 'The slug of the organization the events belong to. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Project Slug Name or ID', @@ -153,7 +153,7 @@ export const eventFields: INodeProperties[] = [ }, required: true, description: - 'The slug of the project the events belong to. Choose from the list, or specify an ID using an expression.', + 'The slug of the project the events belong to. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Event ID', diff --git a/packages/nodes-base/nodes/SentryIo/IssueDescription.ts b/packages/nodes-base/nodes/SentryIo/IssueDescription.ts index d23bef6c63..96a44089a2 100644 --- a/packages/nodes-base/nodes/SentryIo/IssueDescription.ts +++ b/packages/nodes-base/nodes/SentryIo/IssueDescription.ts @@ -80,7 +80,7 @@ export const issueFields: INodeProperties[] = [ }, required: true, description: - 'The slug of the organization the issues belong to. Choose from the list, or specify an ID using an expression.', + 'The slug of the organization the issues belong to. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Project Slug Name or ID', @@ -99,7 +99,7 @@ export const issueFields: INodeProperties[] = [ }, required: true, description: - 'The slug of the project the issues belong to. Choose from the list, or specify an ID using an expression.', + 'The slug of the project the issues belong to. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Return All', diff --git a/packages/nodes-base/nodes/SentryIo/OrganizationDescription.ts b/packages/nodes-base/nodes/SentryIo/OrganizationDescription.ts index fc5f6aa982..e039a902a8 100644 --- a/packages/nodes-base/nodes/SentryIo/OrganizationDescription.ts +++ b/packages/nodes-base/nodes/SentryIo/OrganizationDescription.ts @@ -125,7 +125,7 @@ export const organizationFields: INodeProperties[] = [ }, required: true, description: - 'The slug of the organization the team should be created for. Choose from the list, or specify an ID using an expression.', + 'The slug of the organization the team should be created for. Choose from the list, or specify an ID using an expression.', }, /* -------------------------------------------------------------------------- */ @@ -202,7 +202,7 @@ export const organizationFields: INodeProperties[] = [ }, required: true, description: - 'The slug of the organization to update. Choose from the list, or specify an ID using an expression.', + 'The slug of the organization to update. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Update Fields', diff --git a/packages/nodes-base/nodes/SentryIo/ProjectDescription.ts b/packages/nodes-base/nodes/SentryIo/ProjectDescription.ts index de1366b31d..be08ee2034 100644 --- a/packages/nodes-base/nodes/SentryIo/ProjectDescription.ts +++ b/packages/nodes-base/nodes/SentryIo/ProjectDescription.ts @@ -67,7 +67,7 @@ export const projectFields: INodeProperties[] = [ }, required: true, description: - 'The slug of the organization the events belong to. Choose from the list, or specify an ID using an expression.', + 'The slug of the organization the events belong to. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Project Slug Name or ID', @@ -86,7 +86,7 @@ export const projectFields: INodeProperties[] = [ }, required: true, description: - 'The slug of the project to retrieve. Choose from the list, or specify an ID using an expression.', + 'The slug of the project to retrieve. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Team Slug Name or ID', @@ -105,7 +105,7 @@ export const projectFields: INodeProperties[] = [ }, required: true, description: - 'The slug of the team to create a new project for. Choose from the list, or specify an ID using an expression.', + 'The slug of the team to create a new project for. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Name', @@ -199,7 +199,7 @@ export const projectFields: INodeProperties[] = [ }, required: true, description: - 'The slug of the organization the project belong to. Choose from the list, or specify an ID using an expression.', + 'The slug of the organization the project belong to. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Project Slug Name or ID', @@ -218,7 +218,7 @@ export const projectFields: INodeProperties[] = [ }, required: true, description: - 'The slug of the project to update. Choose from the list, or specify an ID using an expression.', + 'The slug of the project to update. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Update Fields', @@ -305,7 +305,7 @@ export const projectFields: INodeProperties[] = [ }, required: true, description: - 'The slug of the organization the project belong to. Choose from the list, or specify an ID using an expression.', + 'The slug of the organization the project belong to. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Project Slug Name or ID', @@ -324,6 +324,6 @@ export const projectFields: INodeProperties[] = [ }, required: true, description: - 'The slug of the project to delete. Choose from the list, or specify an ID using an expression.', + 'The slug of the project to delete. Choose from the list, or specify an ID using an expression.', }, ]; diff --git a/packages/nodes-base/nodes/SentryIo/ReleaseDescription.ts b/packages/nodes-base/nodes/SentryIo/ReleaseDescription.ts index 773d14ac4b..8c4ee77fe4 100644 --- a/packages/nodes-base/nodes/SentryIo/ReleaseDescription.ts +++ b/packages/nodes-base/nodes/SentryIo/ReleaseDescription.ts @@ -67,7 +67,7 @@ export const releaseFields: INodeProperties[] = [ }, required: true, description: - 'The slug of the organization the releases belong to. Choose from the list, or specify an ID using an expression.', + 'The slug of the organization the releases belong to. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Return All', @@ -142,7 +142,7 @@ export const releaseFields: INodeProperties[] = [ }, required: true, description: - 'The slug of the organization the release belongs to. Choose from the list, or specify an ID using an expression.', + 'The slug of the organization the release belongs to. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Version', @@ -178,7 +178,7 @@ export const releaseFields: INodeProperties[] = [ }, required: true, description: - 'The slug of the organization the release belongs to. Choose from the list, or specify an ID using an expression.', + 'The slug of the organization the release belongs to. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Version', @@ -226,7 +226,7 @@ export const releaseFields: INodeProperties[] = [ }, required: true, description: - 'A list of project slugs that are involved in this release. Choose from the list, or specify IDs using an expression.', + 'A list of project slugs that are involved in this release. Choose from the list, or specify IDs using an expression.', }, { displayName: 'Additional Fields', @@ -423,7 +423,7 @@ export const releaseFields: INodeProperties[] = [ }, required: true, description: - 'The slug of the organization the release belongs to. Choose from the list, or specify an ID using an expression.', + 'The slug of the organization the release belongs to. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Version', diff --git a/packages/nodes-base/nodes/SentryIo/SentryIo.node.json b/packages/nodes-base/nodes/SentryIo/SentryIo.node.json index 2104c73ca4..7d93412975 100644 --- a/packages/nodes-base/nodes/SentryIo/SentryIo.node.json +++ b/packages/nodes-base/nodes/SentryIo/SentryIo.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/sentryIo" + "url": "https://docs.n8n.io/integrations/builtin/credentials/sentryIo/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/SentryIo/SentryIo.node.ts b/packages/nodes-base/nodes/SentryIo/SentryIo.node.ts index eae28e44f9..ad83f771b6 100644 --- a/packages/nodes-base/nodes/SentryIo/SentryIo.node.ts +++ b/packages/nodes-base/nodes/SentryIo/SentryIo.node.ts @@ -1,11 +1,12 @@ -import type { - IExecuteFunctions, - IDataObject, - ILoadOptionsFunctions, - INodeExecutionData, - INodePropertyOptions, - INodeType, - INodeTypeDescription, +import { + type IExecuteFunctions, + type IDataObject, + type ILoadOptionsFunctions, + type INodeExecutionData, + type INodePropertyOptions, + type INodeType, + type INodeTypeDescription, + NodeConnectionType, } from 'n8n-workflow'; import { eventFields, eventOperations } from './EventDescription'; @@ -36,8 +37,8 @@ export class SentryIo implements INodeType { defaults: { name: 'Sentry.io', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'sentryIoOAuth2Api', @@ -732,7 +733,7 @@ export class SentryIo implements INodeType { returnData.push(...executionData); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { const executionErrorData = this.helpers.constructExecutionMetaData( this.helpers.returnJsonArray({ error: error.message }), { itemData: { item: i } }, diff --git a/packages/nodes-base/nodes/SentryIo/TeamDescription.ts b/packages/nodes-base/nodes/SentryIo/TeamDescription.ts index 2db78ff5ba..f6aabd0d18 100644 --- a/packages/nodes-base/nodes/SentryIo/TeamDescription.ts +++ b/packages/nodes-base/nodes/SentryIo/TeamDescription.ts @@ -67,7 +67,7 @@ export const teamFields: INodeProperties[] = [ }, required: true, description: - 'The slug of the organization for which the teams should be listed. Choose from the list, or specify an ID using an expression.', + 'The slug of the organization for which the teams should be listed. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Return All', @@ -120,7 +120,7 @@ export const teamFields: INodeProperties[] = [ }, required: true, description: - 'The slug of the organization the team belongs to. Choose from the list, or specify an ID using an expression.', + 'The slug of the organization the team belongs to. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Team Slug Name or ID', @@ -139,7 +139,7 @@ export const teamFields: INodeProperties[] = [ }, required: true, description: - 'The slug of the team to get. Choose from the list, or specify an ID using an expression.', + 'The slug of the team to get. Choose from the list, or specify an ID using an expression.', }, /* -------------------------------------------------------------------------- */ @@ -161,7 +161,7 @@ export const teamFields: INodeProperties[] = [ }, required: true, description: - 'The slug of the organization the team belongs to. Choose from the list, or specify an ID using an expression.', + 'The slug of the organization the team belongs to. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Name', @@ -220,7 +220,7 @@ export const teamFields: INodeProperties[] = [ }, required: true, description: - 'The slug of the organization the team belongs to. Choose from the list, or specify an ID using an expression.', + 'The slug of the organization the team belongs to. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Team Slug Name or ID', @@ -239,7 +239,7 @@ export const teamFields: INodeProperties[] = [ }, required: true, description: - 'The slug of the team to update. Choose from the list, or specify an ID using an expression.', + 'The slug of the team to update. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Update Fields', @@ -290,7 +290,7 @@ export const teamFields: INodeProperties[] = [ }, required: true, description: - 'The slug of the organization the team belongs to. Choose from the list, or specify an ID using an expression.', + 'The slug of the organization the team belongs to. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Team Slug Name or ID', @@ -309,6 +309,6 @@ export const teamFields: INodeProperties[] = [ }, required: true, description: - 'The slug of the team to delete. Choose from the list, or specify an ID using an expression.', + 'The slug of the team to delete. Choose from the list, or specify an ID using an expression.', }, ]; diff --git a/packages/nodes-base/nodes/ServiceNow/AttachmentDescription.ts b/packages/nodes-base/nodes/ServiceNow/AttachmentDescription.ts index c713ca4a70..2ada000a0a 100644 --- a/packages/nodes-base/nodes/ServiceNow/AttachmentDescription.ts +++ b/packages/nodes-base/nodes/ServiceNow/AttachmentDescription.ts @@ -51,7 +51,7 @@ export const attachmentFields: INodeProperties[] = [ name: 'tableName', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getTables', }, diff --git a/packages/nodes-base/nodes/ServiceNow/BusinessServiceDescription.ts b/packages/nodes-base/nodes/ServiceNow/BusinessServiceDescription.ts index 998399967d..edc9c735cb 100644 --- a/packages/nodes-base/nodes/ServiceNow/BusinessServiceDescription.ts +++ b/packages/nodes-base/nodes/ServiceNow/BusinessServiceDescription.ts @@ -87,7 +87,7 @@ export const businessServiceFields: INodeProperties[] = [ }, default: [], description: - 'A list of fields to return. Choose from the list, or specify IDs using an expression.', + 'A list of fields to return. Choose from the list, or specify IDs using an expression.', hint: 'String of comma separated values or an array of strings can be set in an expression', }, { diff --git a/packages/nodes-base/nodes/ServiceNow/ConfigurationItemsDescription.ts b/packages/nodes-base/nodes/ServiceNow/ConfigurationItemsDescription.ts index 70b070db05..2de78591a3 100644 --- a/packages/nodes-base/nodes/ServiceNow/ConfigurationItemsDescription.ts +++ b/packages/nodes-base/nodes/ServiceNow/ConfigurationItemsDescription.ts @@ -87,7 +87,7 @@ export const configurationItemsFields: INodeProperties[] = [ }, default: [], description: - 'A list of fields to return. Choose from the list, or specify IDs using an expression.', + 'A list of fields to return. Choose from the list, or specify IDs using an expression.', hint: 'String of comma separated values or an array of strings can be set in an expression', }, { diff --git a/packages/nodes-base/nodes/ServiceNow/DepartmentDescription.ts b/packages/nodes-base/nodes/ServiceNow/DepartmentDescription.ts index 3acc8e24ea..d09c3ce696 100644 --- a/packages/nodes-base/nodes/ServiceNow/DepartmentDescription.ts +++ b/packages/nodes-base/nodes/ServiceNow/DepartmentDescription.ts @@ -87,7 +87,7 @@ export const departmentFields: INodeProperties[] = [ }, default: [], description: - 'A list of fields to return. Choose from the list, or specify IDs using an expression.', + 'A list of fields to return. Choose from the list, or specify IDs using an expression.', hint: 'String of comma separated values or an array of strings can be set in an expression', }, { diff --git a/packages/nodes-base/nodes/ServiceNow/DictionaryDescription.ts b/packages/nodes-base/nodes/ServiceNow/DictionaryDescription.ts index 8cc93ee15e..ff2d1edc4f 100644 --- a/packages/nodes-base/nodes/ServiceNow/DictionaryDescription.ts +++ b/packages/nodes-base/nodes/ServiceNow/DictionaryDescription.ts @@ -87,7 +87,7 @@ export const dictionaryFields: INodeProperties[] = [ }, default: [], description: - 'A list of fields to return. Choose from the list, or specify IDs using an expression.', + 'A list of fields to return. Choose from the list, or specify IDs using an expression.', hint: 'String of comma separated values or an array of strings can be set in an expression', }, { diff --git a/packages/nodes-base/nodes/ServiceNow/IncidentDescription.ts b/packages/nodes-base/nodes/ServiceNow/IncidentDescription.ts index 97a52c0915..611d36b07a 100644 --- a/packages/nodes-base/nodes/ServiceNow/IncidentDescription.ts +++ b/packages/nodes-base/nodes/ServiceNow/IncidentDescription.ts @@ -85,7 +85,7 @@ export const incidentFields: INodeProperties[] = [ }, default: '', description: - 'Which user is the incident assigned to. Requires the selection of an assignment group. Choose from the list, or specify an ID using an expression.', + 'Which user is the incident assigned to. Requires the selection of an assignment group. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Assignment Group Name or ID', @@ -97,14 +97,14 @@ export const incidentFields: INodeProperties[] = [ }, default: '', description: - 'The assignment group of the incident. Choose from the list, or specify an ID using an expression.', + 'The assignment group of the incident. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Business Service Name or ID', name: 'business_service', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { // nodelinter-ignore-next-line loadOptionsMethod: 'getBusinessServices', @@ -128,7 +128,7 @@ export const incidentFields: INodeProperties[] = [ }, default: '', description: - 'The category of the incident. Choose from the list, or specify an ID using an expression.', + 'The category of the incident. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Close Notes', @@ -147,7 +147,7 @@ export const incidentFields: INodeProperties[] = [ }, default: [], description: - 'Configuration Items, \'cmdb_ci\' in metadata. Choose from the list, or specify IDs using an expression.', + 'Configuration Items, \'cmdb_ci\' in metadata. Choose from the list, or specify IDs using an expression.', }, { displayName: 'Contact Type', @@ -211,7 +211,7 @@ export const incidentFields: INodeProperties[] = [ }, default: '', description: - 'The resolution code of the incident, \'close_code\' in metadata. Choose from the list, or specify an ID using an expression.', + 'The resolution code of the incident, \'close_code\' in metadata. Choose from the list, or specify an ID using an expression.', }, { displayName: 'State Name or ID', @@ -223,7 +223,7 @@ export const incidentFields: INodeProperties[] = [ }, default: '', description: - 'The state of the incident. Choose from the list, or specify an ID using an expression.', + 'The state of the incident. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Subcategory Name or ID', @@ -236,7 +236,7 @@ export const incidentFields: INodeProperties[] = [ }, default: '', description: - 'The subcategory of the incident. Choose from the list, or specify an ID using an expression.', + 'The subcategory of the incident. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Urgency', @@ -300,7 +300,7 @@ export const incidentFields: INodeProperties[] = [ displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', displayOptions: { show: { resource: ['incident'], @@ -326,7 +326,7 @@ export const incidentFields: INodeProperties[] = [ }, default: [], description: - 'A list of fields to return. Choose from the list, or specify IDs using an expression.', + 'A list of fields to return. Choose from the list, or specify IDs using an expression.', hint: 'String of comma separated values or an array of strings can be set in an expression', }, { @@ -382,7 +382,7 @@ export const incidentFields: INodeProperties[] = [ displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', displayOptions: { show: { resource: ['incident'], @@ -408,7 +408,7 @@ export const incidentFields: INodeProperties[] = [ }, default: [], description: - 'A list of fields to return. Choose from the list, or specify IDs using an expression.', + 'A list of fields to return. Choose from the list, or specify IDs using an expression.', hint: 'String of comma separated values or an array of strings can be set in an expression', }, { @@ -476,7 +476,7 @@ export const incidentFields: INodeProperties[] = [ }, default: '', description: - 'Which user is the incident assigned to. Requires the selection of an assignment group. Choose from the list, or specify an ID using an expression.', + 'Which user is the incident assigned to. Requires the selection of an assignment group. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Assignment Group Name or ID', @@ -488,14 +488,14 @@ export const incidentFields: INodeProperties[] = [ }, default: '', description: - 'The assignment group of the incident. Choose from the list, or specify an ID using an expression.', + 'The assignment group of the incident. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Business Service Name or ID', name: 'business_service', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { // nodelinter-ignore-next-line loadOptionsMethod: 'getBusinessServices', @@ -519,7 +519,7 @@ export const incidentFields: INodeProperties[] = [ }, default: '', description: - 'The category of the incident. Choose from the list, or specify an ID using an expression.', + 'The category of the incident. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Close Notes', @@ -538,7 +538,7 @@ export const incidentFields: INodeProperties[] = [ }, default: [], description: - 'Configuration Items, \'cmdb_ci\' in metadata. Choose from the list, or specify IDs using an expression.', + 'Configuration Items, \'cmdb_ci\' in metadata. Choose from the list, or specify IDs using an expression.', }, { displayName: 'Contact Type', @@ -603,7 +603,7 @@ export const incidentFields: INodeProperties[] = [ default: '', // nodelinter-ignore-next-line description: - 'The resolution code of the incident. \'close_code\' in metadata. Choose from the list, or specify an ID using an expression.', + 'The resolution code of the incident. \'close_code\' in metadata. Choose from the list, or specify an ID using an expression.', }, { displayName: 'On Hold Reason Name or ID', @@ -615,7 +615,7 @@ export const incidentFields: INodeProperties[] = [ }, default: '', description: - 'The on hold reason for the incident. It applies if the state is On Hold. Choose from the list, or specify an ID using an expression.', + 'The on hold reason for the incident. It applies if the state is On Hold. Choose from the list, or specify an ID using an expression.', }, { displayName: 'State Name or ID', @@ -627,7 +627,7 @@ export const incidentFields: INodeProperties[] = [ }, default: '', description: - 'The state of the incident. Choose from the list, or specify an ID using an expression.', + 'The state of the incident. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Subcategory Name or ID', @@ -640,7 +640,7 @@ export const incidentFields: INodeProperties[] = [ }, default: '', description: - 'The subcategory of the incident. Choose from the list, or specify an ID using an expression.', + 'The subcategory of the incident. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Urgency', diff --git a/packages/nodes-base/nodes/ServiceNow/ServiceNow.node.json b/packages/nodes-base/nodes/ServiceNow/ServiceNow.node.json index 88eb7d6aef..a81053af7a 100644 --- a/packages/nodes-base/nodes/ServiceNow/ServiceNow.node.json +++ b/packages/nodes-base/nodes/ServiceNow/ServiceNow.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/serviceNow" + "url": "https://docs.n8n.io/integrations/builtin/credentials/serviceNow/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/ServiceNow/ServiceNow.node.ts b/packages/nodes-base/nodes/ServiceNow/ServiceNow.node.ts index 9c634b0953..50d78a31f5 100644 --- a/packages/nodes-base/nodes/ServiceNow/ServiceNow.node.ts +++ b/packages/nodes-base/nodes/ServiceNow/ServiceNow.node.ts @@ -7,7 +7,7 @@ import type { INodeType, INodeTypeDescription, } from 'n8n-workflow'; -import { NodeOperationError } from 'n8n-workflow'; +import { NodeConnectionType, NodeOperationError } from 'n8n-workflow'; import { mapEndpoint, @@ -52,8 +52,8 @@ export class ServiceNow implements INodeType { defaults: { name: 'ServiceNow', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'serviceNowOAuth2Api', @@ -1138,7 +1138,7 @@ export class ServiceNow implements INodeType { }); } } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { const executionErrorData = this.helpers.constructExecutionMetaData( this.helpers.returnJsonArray({ error: error.message }), { itemData: { item: i } }, diff --git a/packages/nodes-base/nodes/ServiceNow/TableRecordDescription.ts b/packages/nodes-base/nodes/ServiceNow/TableRecordDescription.ts index 82b73e88f6..7c862a9569 100644 --- a/packages/nodes-base/nodes/ServiceNow/TableRecordDescription.ts +++ b/packages/nodes-base/nodes/ServiceNow/TableRecordDescription.ts @@ -51,7 +51,7 @@ export const tableRecordFields: INodeProperties[] = [ name: 'tableName', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getTables', }, @@ -134,7 +134,7 @@ export const tableRecordFields: INodeProperties[] = [ name: 'column', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getColumns', loadOptionsDependsOn: ['tableName'], @@ -160,7 +160,7 @@ export const tableRecordFields: INodeProperties[] = [ name: 'tableName', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getTables', }, @@ -234,7 +234,7 @@ export const tableRecordFields: INodeProperties[] = [ }, default: [], description: - 'A list of fields to return. Choose from the list, or specify IDs using an expression.', + 'A list of fields to return. Choose from the list, or specify IDs using an expression.', hint: 'String of comma separated values or an array of strings can be set in an expression', }, { @@ -288,7 +288,7 @@ export const tableRecordFields: INodeProperties[] = [ }, required: true, description: - 'Name of the table in which the record exists. Choose from the list, or specify an ID using an expression.', + 'Name of the table in which the record exists. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Table Record ID', @@ -334,7 +334,7 @@ export const tableRecordFields: INodeProperties[] = [ }, default: [], description: - 'A list of fields to return. Choose from the list, or specify IDs using an expression.', + 'A list of fields to return. Choose from the list, or specify IDs using an expression.', hint: 'String of comma separated values or an array of strings can be set in an expression', }, { @@ -369,7 +369,7 @@ export const tableRecordFields: INodeProperties[] = [ name: 'tableName', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getTables', }, @@ -466,7 +466,7 @@ export const tableRecordFields: INodeProperties[] = [ name: 'column', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getColumns', loadOptionsDependsOn: ['tableName'], diff --git a/packages/nodes-base/nodes/ServiceNow/UserDescription.ts b/packages/nodes-base/nodes/ServiceNow/UserDescription.ts index b4d4ad0d88..247cf46476 100644 --- a/packages/nodes-base/nodes/ServiceNow/UserDescription.ts +++ b/packages/nodes-base/nodes/ServiceNow/UserDescription.ts @@ -211,7 +211,7 @@ export const userFields: INodeProperties[] = [ }, default: [], description: - 'Roles of the user. Choose from the list, or specify IDs using an expression.', + 'Roles of the user. Choose from the list, or specify IDs using an expression.', }, { displayName: 'Source', @@ -315,7 +315,7 @@ export const userFields: INodeProperties[] = [ }, default: [], description: - 'A list of fields to return. Choose from the list, or specify IDs using an expression.', + 'A list of fields to return. Choose from the list, or specify IDs using an expression.', hint: 'String of comma separated values or an array of strings can be set in an expression', }, { @@ -451,7 +451,7 @@ export const userFields: INodeProperties[] = [ }, default: [], description: - 'A list of fields to return. Choose from the list, or specify IDs using an expression.', + 'A list of fields to return. Choose from the list, or specify IDs using an expression.', hint: 'String of comma separated values or an array of strings can be set in an expression', }, { @@ -645,7 +645,7 @@ export const userFields: INodeProperties[] = [ }, default: [], description: - 'Roles of the user. Choose from the list, or specify IDs using an expression.', + 'Roles of the user. Choose from the list, or specify IDs using an expression.', }, { displayName: 'Source', diff --git a/packages/nodes-base/nodes/ServiceNow/UserGroupDescription.ts b/packages/nodes-base/nodes/ServiceNow/UserGroupDescription.ts index d708df6685..37543f17f0 100644 --- a/packages/nodes-base/nodes/ServiceNow/UserGroupDescription.ts +++ b/packages/nodes-base/nodes/ServiceNow/UserGroupDescription.ts @@ -86,7 +86,7 @@ export const userGroupFields: INodeProperties[] = [ }, default: [], description: - 'A list of fields to return. Choose from the list, or specify IDs using an expression.', + 'A list of fields to return. Choose from the list, or specify IDs using an expression.', hint: 'String of comma separated values or an array of strings can be set in an expression', }, { diff --git a/packages/nodes-base/nodes/ServiceNow/UserRoleDescription.ts b/packages/nodes-base/nodes/ServiceNow/UserRoleDescription.ts index 3d1ad9bf5f..63ecf3a5f3 100644 --- a/packages/nodes-base/nodes/ServiceNow/UserRoleDescription.ts +++ b/packages/nodes-base/nodes/ServiceNow/UserRoleDescription.ts @@ -86,7 +86,7 @@ export const userRoleFields: INodeProperties[] = [ }, default: [], description: - 'A list of fields to return. Choose from the list, or specify IDs using an expression.', + 'A list of fields to return. Choose from the list, or specify IDs using an expression.', hint: 'String of comma separated values or an array of strings can be set in an expression', }, { diff --git a/packages/nodes-base/nodes/Set/v1/SetV1.node.ts b/packages/nodes-base/nodes/Set/v1/SetV1.node.ts index b505b62451..55e92a5337 100644 --- a/packages/nodes-base/nodes/Set/v1/SetV1.node.ts +++ b/packages/nodes-base/nodes/Set/v1/SetV1.node.ts @@ -1,4 +1,3 @@ -/* eslint-disable n8n-nodes-base/node-filename-against-convention */ import type { IExecuteFunctions, INodeExecutionData, @@ -7,7 +6,7 @@ import type { INodeTypeBaseDescription, INodeTypeDescription, } from 'n8n-workflow'; -import { deepCopy } from 'n8n-workflow'; +import { NodeConnectionType, deepCopy } from 'n8n-workflow'; import set from 'lodash/set'; @@ -22,8 +21,8 @@ const versionDescription: INodeTypeDescription = { name: 'Set', color: '#0000FF', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], properties: [ { displayName: 'Keep Only Set', @@ -118,7 +117,7 @@ const versionDescription: INodeTypeDescription = { displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, options: [ { diff --git a/packages/nodes-base/nodes/Set/v2/SetV2.node.ts b/packages/nodes-base/nodes/Set/v2/SetV2.node.ts index fa5e6c4e16..b1dd055590 100644 --- a/packages/nodes-base/nodes/Set/v2/SetV2.node.ts +++ b/packages/nodes-base/nodes/Set/v2/SetV2.node.ts @@ -1,4 +1,3 @@ -/* eslint-disable n8n-nodes-base/node-filename-against-convention */ import type { IDataObject, IExecuteFunctions, @@ -7,6 +6,7 @@ import type { INodeTypeBaseDescription, INodeTypeDescription, } from 'n8n-workflow'; +import { NodeConnectionType } from 'n8n-workflow'; import type { IncludeMods, SetField, SetNodeOptions } from './helpers/interfaces'; import { INCLUDE } from './helpers/interfaces'; @@ -27,8 +27,8 @@ const versionDescription: INodeTypeDescription = { defaults: { name: 'Edit Fields', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], properties: [ { displayName: 'Mode', @@ -178,6 +178,7 @@ const versionDescription: INodeTypeDescription = { displayOptions: { show: { include: ['selected'], + '@version': [3, 3.1, 3.2], }, }, }, @@ -193,6 +194,45 @@ const versionDescription: INodeTypeDescription = { displayOptions: { show: { include: ['except'], + '@version': [3, 3.1, 3.2], + }, + }, + }, + { + displayName: 'Fields to Include', + name: 'includeFields', + type: 'string', + default: '', + placeholder: 'e.g. fieldToInclude1,fieldToInclude2', + description: + 'Comma-separated list of the field names you want to include in the output. You can drag the selected fields from the input panel.', + requiresDataPath: 'multiple', + displayOptions: { + show: { + include: ['selected'], + '/includeOtherFields': [true], + }, + hide: { + '@version': [3, 3.1, 3.2], + }, + }, + }, + { + displayName: 'Fields to Exclude', + name: 'excludeFields', + type: 'string', + default: '', + placeholder: 'e.g. fieldToExclude1,fieldToExclude2', + description: + 'Comma-separated list of the field names you want to exclude from the output. You can drag the selected fields from the input panel.', + requiresDataPath: 'multiple', + displayOptions: { + show: { + include: ['except'], + '/includeOtherFields': [true], + }, + hide: { + '@version': [3, 3.1, 3.2], }, }, }, @@ -200,7 +240,7 @@ const versionDescription: INodeTypeDescription = { displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, options: [ { diff --git a/packages/nodes-base/nodes/Set/v2/helpers/utils.ts b/packages/nodes-base/nodes/Set/v2/helpers/utils.ts index 46536f312b..d6754914ce 100644 --- a/packages/nodes-base/nodes/Set/v2/helpers/utils.ts +++ b/packages/nodes-base/nodes/Set/v2/helpers/utils.ts @@ -4,6 +4,7 @@ import type { IExecuteFunctions, INode, INodeExecutionData, + ISupplyDataFunctions, } from 'n8n-workflow'; import { ApplicationError, @@ -51,7 +52,7 @@ const configureFieldHelper = (dotNotation?: boolean) => { }; export function composeReturnItem( - this: IExecuteFunctions, + this: IExecuteFunctions | ISupplyDataFunctions, itemIndex: number, inputItem: INodeExecutionData, newFields: IDataObject, @@ -220,7 +221,11 @@ export const validateEntry = ( }; }; -export function resolveRawData(this: IExecuteFunctions, rawData: string, i: number) { +export function resolveRawData( + this: IExecuteFunctions | ISupplyDataFunctions, + rawData: string, + i: number, +) { const resolvables = getResolvables(rawData); let returnData: string = rawData; diff --git a/packages/nodes-base/nodes/Set/v2/manual.mode.ts b/packages/nodes-base/nodes/Set/v2/manual.mode.ts index 724a303336..0865e2c4ee 100644 --- a/packages/nodes-base/nodes/Set/v2/manual.mode.ts +++ b/packages/nodes-base/nodes/Set/v2/manual.mode.ts @@ -6,6 +6,7 @@ import type { INode, INodeExecutionData, INodeProperties, + ISupplyDataFunctions, } from 'n8n-workflow'; import { NodeOperationError } from 'n8n-workflow'; @@ -185,7 +186,7 @@ const displayOptions = { export const description = updateDisplayOptions(displayOptions, properties); export async function execute( - this: IExecuteFunctions, + this: IExecuteFunctions | ISupplyDataFunctions, item: INodeExecutionData, i: number, options: SetNodeOptions, @@ -249,7 +250,7 @@ export async function execute( ); return composeReturnItem.call(this, i, item, newData, options, node.typeVersion); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { return { json: { error: (error as Error).message, pairedItem: { item: i } } }; } throw new NodeOperationError(this.getNode(), error as Error, { diff --git a/packages/nodes-base/nodes/Set/v2/raw.mode.ts b/packages/nodes-base/nodes/Set/v2/raw.mode.ts index 86aa11c750..b24a5e2dd5 100644 --- a/packages/nodes-base/nodes/Set/v2/raw.mode.ts +++ b/packages/nodes-base/nodes/Set/v2/raw.mode.ts @@ -56,7 +56,7 @@ export async function execute( return composeReturnItem.call(this, i, item, newData, options, node.typeVersion); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { return { json: { error: (error as Error).message }, pairedItem: { item: i } }; } throw new NodeOperationError(node, error as Error, { diff --git a/packages/nodes-base/nodes/Shopify/GenericFunctions.ts b/packages/nodes-base/nodes/Shopify/GenericFunctions.ts index d2d1852ad6..ff515edfb1 100644 --- a/packages/nodes-base/nodes/Shopify/GenericFunctions.ts +++ b/packages/nodes-base/nodes/Shopify/GenericFunctions.ts @@ -38,7 +38,7 @@ export async function shopifyApiRequest( const options: IRequestOptions = { method, qs: query, - uri: uri || `https://${credentials.shopSubdomain}.myshopify.com/admin/api/2019-10${resource}`, + uri: uri || `https://${credentials.shopSubdomain}.myshopify.com/admin/api/2024-07/${resource}`, body, json: true, }; diff --git a/packages/nodes-base/nodes/Shopify/OrderDescription.ts b/packages/nodes-base/nodes/Shopify/OrderDescription.ts index 6ec7b4c5d8..40726d8231 100644 --- a/packages/nodes-base/nodes/Shopify/OrderDescription.ts +++ b/packages/nodes-base/nodes/Shopify/OrderDescription.ts @@ -269,7 +269,7 @@ export const orderFields: INodeProperties[] = [ }, default: '', description: - 'The ID of the physical location where the order was processed. Choose from the list, or specify an ID using an expression.', + 'The ID of the physical location where the order was processed. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Note', @@ -423,7 +423,7 @@ export const orderFields: INodeProperties[] = [ }, default: '', description: - 'The ID of the product that the line item belongs to. Choose from the list, or specify an ID using an expression.', + 'The ID of the product that the line item belongs to. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Variant ID', @@ -807,7 +807,7 @@ export const orderFields: INodeProperties[] = [ }, default: '', description: - 'The ID of the physical location where the order was processed. Choose from the list, or specify an ID using an expression.', + 'The ID of the physical location where the order was processed. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Note', diff --git a/packages/nodes-base/nodes/Shopify/ProductDescription.ts b/packages/nodes-base/nodes/Shopify/ProductDescription.ts index 2c97c153e7..b0af1381c4 100644 --- a/packages/nodes-base/nodes/Shopify/ProductDescription.ts +++ b/packages/nodes-base/nodes/Shopify/ProductDescription.ts @@ -193,7 +193,7 @@ export const productFields: INodeProperties[] = [ displayName: 'Options', name: 'productOptions', type: 'fixedCollection', - placeholder: 'Add Option', + placeholder: 'Add option', typeOptions: { multipleValues: true, }, @@ -417,7 +417,7 @@ export const productFields: INodeProperties[] = [ displayName: 'Options', name: 'productOptions', type: 'fixedCollection', - placeholder: 'Add Option', + placeholder: 'Add option', typeOptions: { multipleValues: true, }, diff --git a/packages/nodes-base/nodes/Shopify/Shopify.node.json b/packages/nodes-base/nodes/Shopify/Shopify.node.json index 3d2304ca21..9f7d7ae5f8 100644 --- a/packages/nodes-base/nodes/Shopify/Shopify.node.json +++ b/packages/nodes-base/nodes/Shopify/Shopify.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/shopify" + "url": "https://docs.n8n.io/integrations/builtin/credentials/shopify/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Shopify/Shopify.node.ts b/packages/nodes-base/nodes/Shopify/Shopify.node.ts index 5175dfe6fd..f2c70184e6 100644 --- a/packages/nodes-base/nodes/Shopify/Shopify.node.ts +++ b/packages/nodes-base/nodes/Shopify/Shopify.node.ts @@ -7,7 +7,7 @@ import type { INodeType, INodeTypeDescription, } from 'n8n-workflow'; -import { NodeOperationError } from 'n8n-workflow'; +import { NodeConnectionType, NodeOperationError } from 'n8n-workflow'; import { keysToSnakeCase, shopifyApiRequest, shopifyApiRequestAllItems } from './GenericFunctions'; @@ -31,8 +31,8 @@ export class Shopify implements INodeType { defaults: { name: 'Shopify', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'shopifyApi', @@ -63,6 +63,13 @@ export class Shopify implements INodeType { }, ], properties: [ + { + displayName: 'Shopify API Version: 2024-07', + type: 'notice', + name: 'apiVersion', + default: '', + isNodeSetting: true, + }, { displayName: 'Authentication', name: 'authentication', @@ -459,7 +466,7 @@ export class Shopify implements INodeType { returnData.push(...executionData); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { const executionErrorData = this.helpers.constructExecutionMetaData( this.helpers.returnJsonArray({ error: error.message }), { itemData: { item: i } }, diff --git a/packages/nodes-base/nodes/Shopify/ShopifyTrigger.node.json b/packages/nodes-base/nodes/Shopify/ShopifyTrigger.node.json index 0ccad56700..1f95464a30 100644 --- a/packages/nodes-base/nodes/Shopify/ShopifyTrigger.node.json +++ b/packages/nodes-base/nodes/Shopify/ShopifyTrigger.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/shopify" + "url": "https://docs.n8n.io/integrations/builtin/credentials/shopify/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Shopify/ShopifyTrigger.node.ts b/packages/nodes-base/nodes/Shopify/ShopifyTrigger.node.ts index c640e7c9f8..12a3b50542 100644 --- a/packages/nodes-base/nodes/Shopify/ShopifyTrigger.node.ts +++ b/packages/nodes-base/nodes/Shopify/ShopifyTrigger.node.ts @@ -1,11 +1,12 @@ import { createHmac } from 'crypto'; -import type { - IHookFunctions, - IWebhookFunctions, - IDataObject, - INodeType, - INodeTypeDescription, - IWebhookResponseData, +import { + type IHookFunctions, + type IWebhookFunctions, + type IDataObject, + type INodeType, + type INodeTypeDescription, + type IWebhookResponseData, + NodeConnectionType, } from 'n8n-workflow'; import { shopifyApiRequest } from './GenericFunctions'; @@ -23,7 +24,7 @@ export class ShopifyTrigger implements INodeType { name: 'Shopify Trigger', }, inputs: [], - outputs: ['main'], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'shopifyApi', diff --git a/packages/nodes-base/nodes/Signl4/Signl4.node.json b/packages/nodes-base/nodes/Signl4/Signl4.node.json index 6768d9fd84..7d1f159c17 100644 --- a/packages/nodes-base/nodes/Signl4/Signl4.node.json +++ b/packages/nodes-base/nodes/Signl4/Signl4.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/signl4" + "url": "https://docs.n8n.io/integrations/builtin/credentials/signl4/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Signl4/Signl4.node.ts b/packages/nodes-base/nodes/Signl4/Signl4.node.ts index 012ce4400a..6aa599b120 100644 --- a/packages/nodes-base/nodes/Signl4/Signl4.node.ts +++ b/packages/nodes-base/nodes/Signl4/Signl4.node.ts @@ -5,7 +5,7 @@ import type { INodeType, INodeTypeDescription, } from 'n8n-workflow'; -import { NodeOperationError } from 'n8n-workflow'; +import { NodeConnectionType, NodeOperationError } from 'n8n-workflow'; import { SIGNL4ApiRequest } from './GenericFunctions'; @@ -22,8 +22,8 @@ export class Signl4 implements INodeType { defaults: { name: 'SIGNL4', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'signl4Api', @@ -342,7 +342,7 @@ export class Signl4 implements INodeType { returnData.push(responseData as IDataObject); } } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push({ error: error.message }); continue; } diff --git a/packages/nodes-base/nodes/Simulate/Simulate.node.ts b/packages/nodes-base/nodes/Simulate/Simulate.node.ts index c91154347f..a80924551c 100644 --- a/packages/nodes-base/nodes/Simulate/Simulate.node.ts +++ b/packages/nodes-base/nodes/Simulate/Simulate.node.ts @@ -1,4 +1,4 @@ -import { sleep, jsonParse, NodeOperationError } from 'n8n-workflow'; +import { sleep, jsonParse, NodeOperationError, NodeConnectionType } from 'n8n-workflow'; import type { IExecuteFunctions, INodeExecutionData, @@ -29,8 +29,8 @@ export class Simulate implements INodeType { name: 'Simulate', color: '#b0b0b0', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], properties: [ iconSelector, subtitleProperty, diff --git a/packages/nodes-base/nodes/Simulate/SimulateTrigger.node.ts b/packages/nodes-base/nodes/Simulate/SimulateTrigger.node.ts index 4532908936..d793434ee1 100644 --- a/packages/nodes-base/nodes/Simulate/SimulateTrigger.node.ts +++ b/packages/nodes-base/nodes/Simulate/SimulateTrigger.node.ts @@ -1,4 +1,4 @@ -import { sleep, NodeOperationError, jsonParse } from 'n8n-workflow'; +import { sleep, NodeOperationError, jsonParse, NodeConnectionType } from 'n8n-workflow'; import type { IDataObject, ITriggerFunctions, @@ -30,7 +30,7 @@ export class SimulateTrigger implements INodeType { color: '#b0b0b0', }, inputs: [], - outputs: ['main'], + outputs: [NodeConnectionType.Main], properties: [ { ...iconSelector, default: 'n8n-nodes-base.manualTrigger' }, subtitleProperty, diff --git a/packages/nodes-base/nodes/Slack/Slack.node.json b/packages/nodes-base/nodes/Slack/Slack.node.json index a238774011..a81eeef453 100644 --- a/packages/nodes-base/nodes/Slack/Slack.node.json +++ b/packages/nodes-base/nodes/Slack/Slack.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/slack" + "url": "https://docs.n8n.io/integrations/builtin/credentials/slack/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Slack/SlackTrigger.node.json b/packages/nodes-base/nodes/Slack/SlackTrigger.node.json index 2d7fbb859e..eb5b34dc3a 100644 --- a/packages/nodes-base/nodes/Slack/SlackTrigger.node.json +++ b/packages/nodes-base/nodes/Slack/SlackTrigger.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/slack" + "url": "https://docs.n8n.io/integrations/builtin/credentials/slack/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Slack/SlackTrigger.node.ts b/packages/nodes-base/nodes/Slack/SlackTrigger.node.ts index 6f46b2b827..9dbe79d8d4 100644 --- a/packages/nodes-base/nodes/Slack/SlackTrigger.node.ts +++ b/packages/nodes-base/nodes/Slack/SlackTrigger.node.ts @@ -1,15 +1,16 @@ -import type { - INodeListSearchItems, - ILoadOptionsFunctions, - INodeListSearchResult, - INodePropertyOptions, - IHookFunctions, - IWebhookFunctions, - IDataObject, - INodeType, - INodeTypeDescription, - IWebhookResponseData, - IBinaryKeyData, +import { + type INodeListSearchItems, + type ILoadOptionsFunctions, + type INodeListSearchResult, + type INodePropertyOptions, + type IHookFunctions, + type IWebhookFunctions, + type IDataObject, + type INodeType, + type INodeTypeDescription, + type IWebhookResponseData, + type IBinaryKeyData, + NodeConnectionType, } from 'n8n-workflow'; import { slackApiRequestAllItems } from './V2/GenericFunctions'; @@ -28,7 +29,7 @@ export class SlackTrigger implements INodeType { name: 'Slack Trigger', }, inputs: [], - outputs: ['main'], + outputs: [NodeConnectionType.Main], webhooks: [ { name: 'default', @@ -227,7 +228,7 @@ export class SlackTrigger implements INodeType { }, default: [], description: - 'A comma-separated string of encoded user IDs. Choose from the list, or specify IDs using an expression.', + 'A comma-separated string of encoded user IDs. Choose from the list, or specify IDs using an expression.', }, ], }, diff --git a/packages/nodes-base/nodes/Slack/V1/ChannelDescription.ts b/packages/nodes-base/nodes/Slack/V1/ChannelDescription.ts index e232194fe3..f8c0b6488b 100644 --- a/packages/nodes-base/nodes/Slack/V1/ChannelDescription.ts +++ b/packages/nodes-base/nodes/Slack/V1/ChannelDescription.ts @@ -139,7 +139,7 @@ export const channelFields: INodeProperties[] = [ default: '', required: true, description: - 'The name of the channel to archive. Choose from the list, or specify an ID using an expression.', + 'The name of the channel to archive. Choose from the list, or specify an ID using an expression.', }, /* -------------------------------------------------------------------------- */ @@ -161,7 +161,7 @@ export const channelFields: INodeProperties[] = [ default: '', required: true, description: - 'The name of the channel to close. Choose from the list, or specify an ID using an expression.', + 'The name of the channel to close. Choose from the list, or specify an ID using an expression.', }, /* -------------------------------------------------------------------------- */ @@ -224,7 +224,7 @@ export const channelFields: INodeProperties[] = [ }, required: true, description: - 'The ID of the channel to invite user to. Choose from the list, or specify an ID using an expression.', + 'The ID of the channel to invite user to. Choose from the list, or specify an ID using an expression.', }, { displayName: 'User Names or IDs', @@ -242,7 +242,7 @@ export const channelFields: INodeProperties[] = [ }, required: true, description: - 'The ID of the user to invite into channel. Choose from the list, or specify IDs using an expression.', + 'The ID of the user to invite into channel. Choose from the list, or specify IDs using an expression.', }, /* -------------------------------------------------------------------------- */ @@ -304,14 +304,14 @@ export const channelFields: INodeProperties[] = [ }, required: true, description: - 'The name of the channel to create. Choose from the list, or specify an ID using an expression.', + 'The name of the channel to create. Choose from the list, or specify an ID using an expression.', }, { displayName: 'User Name or ID', name: 'userId', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getUsers', }, @@ -332,7 +332,7 @@ export const channelFields: INodeProperties[] = [ name: 'channelId', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getChannels', }, @@ -451,7 +451,7 @@ export const channelFields: INodeProperties[] = [ }, required: true, description: - 'The name of the channel to create. Choose from the list, or specify an ID using an expression.', + 'The name of the channel to create. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Return All', @@ -541,7 +541,7 @@ export const channelFields: INodeProperties[] = [ default: '', required: true, description: - 'The name of the channel to leave. Choose from the list, or specify an ID using an expression.', + 'The name of the channel to leave. Choose from the list, or specify an ID using an expression.', }, /* -------------------------------------------------------------------------- */ @@ -552,7 +552,7 @@ export const channelFields: INodeProperties[] = [ name: 'channelId', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getChannels', }, @@ -651,7 +651,7 @@ export const channelFields: INodeProperties[] = [ }, default: [], description: - 'If only one user is included, this creates a 1:1 DM. The ordering of the users is preserved whenever a multi-person direct message is returned. Supply a channel when not supplying users. Choose from the list, or specify IDs using an expression.', + 'If only one user is included, this creates a 1:1 DM. The ordering of the users is preserved whenever a multi-person direct message is returned. Supply a channel when not supplying users. Choose from the list, or specify IDs using an expression.', }, ], }, @@ -675,7 +675,7 @@ export const channelFields: INodeProperties[] = [ default: '', required: true, description: - 'The name of the channel to rename. Choose from the list, or specify an ID using an expression.', + 'The name of the channel to rename. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Name', @@ -712,7 +712,7 @@ export const channelFields: INodeProperties[] = [ }, required: true, description: - 'The name of the channel to create. Choose from the list, or specify an ID using an expression.', + 'The name of the channel to create. Choose from the list, or specify an ID using an expression.', }, { displayName: 'TS', @@ -816,7 +816,7 @@ export const channelFields: INodeProperties[] = [ default: '', required: true, description: - 'Conversation to set the purpose of. Choose from the list, or specify an ID using an expression.', + 'Conversation to set the purpose of. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Purpose', @@ -852,7 +852,7 @@ export const channelFields: INodeProperties[] = [ default: '', required: true, description: - 'Conversation to set the topic of. Choose from the list, or specify an ID using an expression.', + 'Conversation to set the topic of. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Topic', @@ -888,6 +888,6 @@ export const channelFields: INodeProperties[] = [ default: '', required: true, description: - 'The ID of the channel to unarchive. Choose from the list, or specify an ID using an expression.', + 'The ID of the channel to unarchive. Choose from the list, or specify an ID using an expression.', }, ]; diff --git a/packages/nodes-base/nodes/Slack/V1/FileDescription.ts b/packages/nodes-base/nodes/Slack/V1/FileDescription.ts index 57ffb0ac1a..9e03d097fd 100644 --- a/packages/nodes-base/nodes/Slack/V1/FileDescription.ts +++ b/packages/nodes-base/nodes/Slack/V1/FileDescription.ts @@ -95,7 +95,7 @@ export const fileFields: INodeProperties[] = [ }, default: {}, description: 'Other options to set', - placeholder: 'Add options', + placeholder: 'Add option', options: [ { displayName: 'Channel Names or IDs', @@ -106,7 +106,7 @@ export const fileFields: INodeProperties[] = [ }, default: [], description: - 'The channels to send the file to. Choose from the list, or specify IDs using an expression.', + 'The channels to send the file to. Choose from the list, or specify IDs using an expression.', }, { displayName: 'File Name', @@ -196,7 +196,7 @@ export const fileFields: INodeProperties[] = [ loadOptionsMethod: 'getChannels', }, description: - 'Channel containing the file to be listed. Choose from the list, or specify an ID using an expression.', + 'Channel containing the file to be listed. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Show Files Hidden By Limit', @@ -267,7 +267,7 @@ export const fileFields: INodeProperties[] = [ loadOptionsMethod: 'getUsers', }, description: - 'Filter files created by a single user. Choose from the list, or specify an ID using an expression.', + 'Filter files created by a single user. Choose from the list, or specify an ID using an expression.', }, ], }, diff --git a/packages/nodes-base/nodes/Slack/V1/MessageDescription.ts b/packages/nodes-base/nodes/Slack/V1/MessageDescription.ts index 039d783aaa..e919b3f2da 100644 --- a/packages/nodes-base/nodes/Slack/V1/MessageDescription.ts +++ b/packages/nodes-base/nodes/Slack/V1/MessageDescription.ts @@ -67,7 +67,7 @@ export const messageFields: INodeProperties[] = [ }, }, description: - 'Channel containing the message. Choose from the list, or specify an ID using an expression.', + 'Channel containing the message. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Timestamp', @@ -154,7 +154,7 @@ export const messageFields: INodeProperties[] = [ }, default: {}, description: 'Other options to set', - placeholder: 'Add options', + placeholder: 'Add option', options: [ { displayName: 'Icon Emoji', @@ -406,7 +406,7 @@ export const messageFields: INodeProperties[] = [ }, }, description: - 'Channel containing the message to be updated. Choose from the list, or specify an ID using an expression.', + 'Channel containing the message to be updated. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Text', @@ -1576,7 +1576,7 @@ export const messageFields: INodeProperties[] = [ }, }, description: - 'Channel containing the message to be deleted. Choose from the list, or specify an ID using an expression.', + 'Channel containing the message to be deleted. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Timestamp', diff --git a/packages/nodes-base/nodes/Slack/V1/ReactionDescription.ts b/packages/nodes-base/nodes/Slack/V1/ReactionDescription.ts index 6b2e5703a0..7074079974 100644 --- a/packages/nodes-base/nodes/Slack/V1/ReactionDescription.ts +++ b/packages/nodes-base/nodes/Slack/V1/ReactionDescription.ts @@ -52,7 +52,7 @@ export const reactionFields: INodeProperties[] = [ }, }, description: - 'Channel containing the message. Choose from the list, or specify an ID using an expression.', + 'Channel containing the message. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Emoji', diff --git a/packages/nodes-base/nodes/Slack/V1/SlackV1.node.ts b/packages/nodes-base/nodes/Slack/V1/SlackV1.node.ts index 5cae0a4350..585bde58e4 100644 --- a/packages/nodes-base/nodes/Slack/V1/SlackV1.node.ts +++ b/packages/nodes-base/nodes/Slack/V1/SlackV1.node.ts @@ -9,7 +9,7 @@ import type { INodeTypeDescription, JsonObject, } from 'n8n-workflow'; -import { NodeOperationError } from 'n8n-workflow'; +import { NodeConnectionType, NodeOperationError } from 'n8n-workflow'; import moment from 'moment-timezone'; import { channelFields, channelOperations } from './ChannelDescription'; @@ -75,8 +75,8 @@ export class SlackV1 implements INodeType { defaults: { name: 'Slack', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'slackApi', @@ -1372,7 +1372,7 @@ export class SlackV1 implements INodeType { ); returnData.push(...executionData); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push({ json: { error: (error as JsonObject).message } }); continue; } diff --git a/packages/nodes-base/nodes/Slack/V1/StarDescription.ts b/packages/nodes-base/nodes/Slack/V1/StarDescription.ts index 958abf53ae..9f1f843968 100644 --- a/packages/nodes-base/nodes/Slack/V1/StarDescription.ts +++ b/packages/nodes-base/nodes/Slack/V1/StarDescription.ts @@ -51,7 +51,7 @@ export const starFields: INodeProperties[] = [ }, default: {}, description: 'Options to set', - placeholder: 'Add options', + placeholder: 'Add option', options: [ { displayName: 'Channel Name or ID', @@ -62,7 +62,7 @@ export const starFields: INodeProperties[] = [ }, default: '', description: - 'Channel to add star to, or channel where the message to add star to was posted (used with timestamp). Choose from the list, or specify an ID using an expression.', + 'Channel to add star to, or channel where the message to add star to was posted (used with timestamp). Choose from the list, or specify an ID using an expression.', }, { displayName: 'File Comment', @@ -103,7 +103,7 @@ export const starFields: INodeProperties[] = [ }, default: {}, description: 'Options to set', - placeholder: 'Add options', + placeholder: 'Add option', options: [ { displayName: 'Channel Name or ID', @@ -114,7 +114,7 @@ export const starFields: INodeProperties[] = [ }, default: '', description: - 'Channel to add star to, or channel where the message to add star to was posted (used with timestamp). Choose from the list, or specify an ID using an expression.', + 'Channel to add star to, or channel where the message to add star to was posted (used with timestamp). Choose from the list, or specify an ID using an expression.', }, { displayName: 'File ID', diff --git a/packages/nodes-base/nodes/Slack/V1/UserGroupDescription.ts b/packages/nodes-base/nodes/Slack/V1/UserGroupDescription.ts index 5d208e1bf8..67916068f9 100644 --- a/packages/nodes-base/nodes/Slack/V1/UserGroupDescription.ts +++ b/packages/nodes-base/nodes/Slack/V1/UserGroupDescription.ts @@ -87,7 +87,7 @@ export const userGroupFields: INodeProperties[] = [ }, default: [], description: - 'A comma-separated string of encoded channel IDs for which the User Group uses as a default. Choose from the list, or specify IDs using an expression.', + 'A comma-separated string of encoded channel IDs for which the User Group uses as a default. Choose from the list, or specify IDs using an expression.', }, { displayName: 'Description', @@ -299,7 +299,7 @@ export const userGroupFields: INodeProperties[] = [ }, default: [], description: - 'A comma-separated string of encoded channel IDs for which the User Group uses as a default. Choose from the list, or specify IDs using an expression.', + 'A comma-separated string of encoded channel IDs for which the User Group uses as a default. Choose from the list, or specify IDs using an expression.', }, { displayName: 'Description', diff --git a/packages/nodes-base/nodes/Slack/V1/UserProfileDescription.ts b/packages/nodes-base/nodes/Slack/V1/UserProfileDescription.ts index f2736fd9fe..0fa2353bf2 100644 --- a/packages/nodes-base/nodes/Slack/V1/UserProfileDescription.ts +++ b/packages/nodes-base/nodes/Slack/V1/UserProfileDescription.ts @@ -69,7 +69,7 @@ export const userProfileFields: INodeProperties[] = [ }, default: '', description: - 'ID of the field to set. Choose from the list, or specify an ID using an expression.', + 'ID of the field to set. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Field Value', diff --git a/packages/nodes-base/nodes/Slack/V2/ChannelDescription.ts b/packages/nodes-base/nodes/Slack/V2/ChannelDescription.ts index 2f74d8e379..01f56a8cb7 100644 --- a/packages/nodes-base/nodes/Slack/V2/ChannelDescription.ts +++ b/packages/nodes-base/nodes/Slack/V2/ChannelDescription.ts @@ -371,7 +371,7 @@ export const channelFields: INodeProperties[] = [ }, required: true, description: - 'The ID of the user to invite into channel. Choose from the list, or specify IDs using an expression.', + 'The ID of the user to invite into channel. Choose from the list, or specify IDs using an expression.', }, /* -------------------------------------------------------------------------- */ @@ -529,7 +529,7 @@ export const channelFields: INodeProperties[] = [ name: 'userId', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getUsers', }, @@ -1039,7 +1039,7 @@ export const channelFields: INodeProperties[] = [ }, default: [], description: - 'If only one user is included, this creates a 1:1 DM. The ordering of the users is preserved whenever a multi-person direct message is returned. Supply a channel when not supplying users. Choose from the list, or specify IDs using an expression.', + 'If only one user is included, this creates a 1:1 DM. The ordering of the users is preserved whenever a multi-person direct message is returned. Supply a channel when not supplying users. Choose from the list, or specify IDs using an expression.', }, ], }, diff --git a/packages/nodes-base/nodes/Slack/V2/FileDescription.ts b/packages/nodes-base/nodes/Slack/V2/FileDescription.ts index 07d514ff49..44c555b9ab 100644 --- a/packages/nodes-base/nodes/Slack/V2/FileDescription.ts +++ b/packages/nodes-base/nodes/Slack/V2/FileDescription.ts @@ -112,7 +112,7 @@ export const fileFields: INodeProperties[] = [ }, default: {}, description: 'Other options to set', - placeholder: 'Add options', + placeholder: 'Add option', options: [ { displayName: 'Channel Names or IDs', @@ -128,7 +128,7 @@ export const fileFields: INodeProperties[] = [ }, default: [], description: - 'The channels to send the file to. Choose from the list, or specify IDs using an expression.', + 'The channels to send the file to. Choose from the list, or specify IDs using an expression.', }, { displayName: 'Channel Name or ID', @@ -144,7 +144,7 @@ export const fileFields: INodeProperties[] = [ }, default: [], description: - 'The channel to send the file to. Choose from the list, or specify an ID using an expression.', + 'The channel to send the file to. Choose from the list, or specify an ID using an expression.', }, { displayName: 'File Name', @@ -232,7 +232,7 @@ export const fileFields: INodeProperties[] = [ loadOptionsMethod: 'getChannels', }, description: - 'Channel containing the file to be listed. Choose from the list, or specify an ID using an expression.', + 'Channel containing the file to be listed. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Show Files Hidden By Limit', @@ -303,7 +303,7 @@ export const fileFields: INodeProperties[] = [ loadOptionsMethod: 'getUsers', }, description: - 'Filter files created by a single user. Choose from the list, or specify an ID using an expression.', + 'Filter files created by a single user. Choose from the list, or specify an ID using an expression.', }, ], }, diff --git a/packages/nodes-base/nodes/Slack/V2/GenericFunctions.ts b/packages/nodes-base/nodes/Slack/V2/GenericFunctions.ts index 5c00c3eb3f..590453308c 100644 --- a/packages/nodes-base/nodes/Slack/V2/GenericFunctions.ts +++ b/packages/nodes-base/nodes/Slack/V2/GenericFunctions.ts @@ -11,6 +11,7 @@ import type { import { NodeOperationError } from 'n8n-workflow'; import get from 'lodash/get'; +import { getSendAndWaitConfig } from '../../../utils/sendAndWait/utils'; export async function slackApiRequest( this: IExecuteFunctions | ILoadOptionsFunctions | IWebhookFunctions, @@ -78,6 +79,16 @@ export async function slackApiRequest( level: 'warning', }, ); + } else if (response.error === 'not_admin') { + throw new NodeOperationError( + this.getNode(), + 'Need higher Role Level for this Operation (e.g. Owner or Admin Rights)', + { + description: + 'Hint: Check the Role of your Slack App Integration. For more information see the Slack Documentation - https://slack.com/help/articles/360018112273-Types-of-roles-in-Slack', + level: 'warning', + }, + ); } throw new NodeOperationError( @@ -85,6 +96,7 @@ export async function slackApiRequest( 'Slack error response: ' + JSON.stringify(response.error), ); } + if (response.ts !== undefined) { Object.assign(response, { message_timestamp: response.ts }); delete response.ts; @@ -219,3 +231,81 @@ export function validateJSON(json: string | undefined): any { } return result; } + +export function getTarget( + context: IExecuteFunctions, + itemIndex: number, + idType: 'user' | 'channel', +): string { + let target = ''; + + if (idType === 'channel') { + target = context.getNodeParameter('channelId', itemIndex, undefined, { + extractValue: true, + }) as string; + } else { + target = context.getNodeParameter('user', itemIndex, undefined, { + extractValue: true, + }) as string; + } + + if ( + idType === 'user' && + (context.getNodeParameter('user', itemIndex) as IDataObject).mode === 'username' + ) { + target = target.slice(0, 1) === '@' ? target : `@${target}`; + } + + return target; +} + +export function createSendAndWaitMessageBody(context: IExecuteFunctions) { + const select = context.getNodeParameter('select', 0) as 'user' | 'channel'; + const target = getTarget(context, 0, select); + + const config = getSendAndWaitConfig(context); + + const body: IDataObject = { + channel: target, + blocks: [ + { + type: 'divider', + }, + { + type: 'section', + text: { + type: 'plain_text', + text: config.message, + emoji: true, + }, + }, + { + type: 'section', + text: { + type: 'plain_text', + text: ' ', + }, + }, + { + type: 'divider', + }, + { + type: 'actions', + elements: config.options.map((option) => { + return { + type: 'button', + style: option.style === 'primary' ? 'primary' : undefined, + text: { + type: 'plain_text', + text: option.label, + emoji: true, + }, + url: `${config.url}?approved=${option.value}`, + }; + }), + }, + ], + }; + + return body; +} diff --git a/packages/nodes-base/nodes/Slack/V2/MessageDescription.ts b/packages/nodes-base/nodes/Slack/V2/MessageDescription.ts index e3708889fb..de31614b44 100644 --- a/packages/nodes-base/nodes/Slack/V2/MessageDescription.ts +++ b/packages/nodes-base/nodes/Slack/V2/MessageDescription.ts @@ -1,4 +1,4 @@ -import type { INodeProperties } from 'n8n-workflow'; +import { SEND_AND_WAIT_OPERATION, type INodeProperties } from 'n8n-workflow'; export const messageOperations: INodeProperties[] = [ { @@ -32,6 +32,11 @@ export const messageOperations: INodeProperties[] = [ value: 'post', action: 'Send a message', }, + { + name: 'Send and Wait for Approval', + value: SEND_AND_WAIT_OPERATION, + action: 'Send a message and wait for approval', + }, { name: 'Update', value: 'update', @@ -42,6 +47,134 @@ export const messageOperations: INodeProperties[] = [ }, ]; +export const sendToSelector: INodeProperties = { + displayName: 'Send Message To', + name: 'select', + type: 'options', + required: true, + displayOptions: { + show: { + resource: ['message'], + operation: ['post'], + }, + }, + options: [ + { + name: 'Channel', + value: 'channel', + }, + { + name: 'User', + value: 'user', + }, + ], + default: '', + placeholder: 'Select...', +}; + +export const channelRLC: INodeProperties = { + displayName: 'Channel', + name: 'channelId', + type: 'resourceLocator', + default: { mode: 'list', value: '' }, + placeholder: 'Select a channel...', + modes: [ + { + displayName: 'From List', + name: 'list', + type: 'list', + placeholder: 'Select a channel...', + typeOptions: { + searchListMethod: 'getChannels', + searchable: true, + }, + }, + { + displayName: 'By ID', + name: 'id', + type: 'string', + validation: [ + { + type: 'regex', + properties: { + regex: '[a-zA-Z0-9]{2,}', + errorMessage: 'Not a valid Slack Channel ID', + }, + }, + ], + placeholder: 'C0122KQ70S7E', + }, + { + displayName: 'By Name', + name: 'name', + type: 'string', + placeholder: '#general', + }, + { + displayName: 'By URL', + name: 'url', + type: 'string', + placeholder: 'https://app.slack.com/client/TS9594PZK/B0556F47Z3A', + validation: [ + { + type: 'regex', + properties: { + regex: 'http(s)?://app.slack.com/client/.*/([a-zA-Z0-9]{2,})', + errorMessage: 'Not a valid Slack Channel URL', + }, + }, + ], + extractValue: { + type: 'regex', + regex: 'https://app.slack.com/client/.*/([a-zA-Z0-9]{2,})', + }, + }, + ], + required: true, + description: 'The Slack channel to send to', +}; + +export const userRLC: INodeProperties = { + displayName: 'User', + name: 'user', + type: 'resourceLocator', + default: { mode: 'list', value: '' }, + placeholder: 'Select a user...', + modes: [ + { + displayName: 'From List', + name: 'list', + type: 'list', + placeholder: 'Select a user...', + typeOptions: { + searchListMethod: 'getUsers', + searchable: true, + }, + }, + { + displayName: 'By ID', + name: 'id', + type: 'string', + validation: [ + { + type: 'regex', + properties: { + regex: '[a-zA-Z0-9]{2,}', + errorMessage: 'Not a valid Slack User ID', + }, + }, + ], + placeholder: 'U123AB45JGM', + }, + { + displayName: 'By username', + name: 'username', + type: 'string', + placeholder: '@username', + }, + ], +}; + export const messageFields: INodeProperties[] = [ /* ----------------------------------------------------------------------- */ /* message:getPermalink @@ -125,88 +258,9 @@ export const messageFields: INodeProperties[] = [ /* -------------------------------------------------------------------------- */ /* message:post */ /* -------------------------------------------------------------------------- */ + sendToSelector, { - displayName: 'Send Message To', - name: 'select', - type: 'options', - required: true, - displayOptions: { - show: { - resource: ['message'], - operation: ['post'], - }, - }, - options: [ - { - name: 'Channel', - value: 'channel', - }, - { - name: 'User', - value: 'user', - }, - ], - default: '', - placeholder: 'Select...', - }, - { - displayName: 'Channel', - name: 'channelId', - type: 'resourceLocator', - default: { mode: 'list', value: '' }, - placeholder: 'Select a channel...', - modes: [ - { - displayName: 'From List', - name: 'list', - type: 'list', - placeholder: 'Select a channel...', - typeOptions: { - searchListMethod: 'getChannels', - searchable: true, - }, - }, - { - displayName: 'By ID', - name: 'id', - type: 'string', - validation: [ - { - type: 'regex', - properties: { - regex: '[a-zA-Z0-9]{2,}', - errorMessage: 'Not a valid Slack Channel ID', - }, - }, - ], - placeholder: 'C0122KQ70S7E', - }, - { - displayName: 'By Name', - name: 'name', - type: 'string', - placeholder: '#general', - }, - { - displayName: 'By URL', - name: 'url', - type: 'string', - placeholder: 'https://app.slack.com/client/TS9594PZK/B0556F47Z3A', - validation: [ - { - type: 'regex', - properties: { - regex: 'http(s)?://app.slack.com/client/.*/([a-zA-Z0-9]{2,})', - errorMessage: 'Not a valid Slack Channel URL', - }, - }, - ], - extractValue: { - type: 'regex', - regex: 'https://app.slack.com/client/.*/([a-zA-Z0-9]{2,})', - }, - }, - ], + ...channelRLC, displayOptions: { show: { operation: ['post'], @@ -214,15 +268,9 @@ export const messageFields: INodeProperties[] = [ select: ['channel'], }, }, - required: true, - description: 'The Slack channel to send to', }, { - displayName: 'User', - name: 'user', - type: 'resourceLocator', - default: { mode: 'list', value: '' }, - placeholder: 'Select a user...', + ...userRLC, displayOptions: { show: { operation: ['post'], @@ -230,39 +278,6 @@ export const messageFields: INodeProperties[] = [ select: ['user'], }, }, - modes: [ - { - displayName: 'From List', - name: 'list', - type: 'list', - placeholder: 'Select a user...', - typeOptions: { - searchListMethod: 'getUsers', - searchable: true, - }, - }, - { - displayName: 'By ID', - name: 'id', - type: 'string', - validation: [ - { - type: 'regex', - properties: { - regex: '[a-zA-Z0-9]{2,}', - errorMessage: 'Not a valid Slack User ID', - }, - }, - ], - placeholder: 'U123AB45JGM', - }, - { - displayName: 'By username', - name: 'username', - type: 'string', - placeholder: '@username', - }, - ], }, { displayName: 'Message Type', @@ -555,7 +570,7 @@ export const messageFields: INodeProperties[] = [ }, default: {}, description: 'Other options to set', - placeholder: 'Add options', + placeholder: 'Add option', options: [ { displayName: 'Include Link to Workflow', @@ -944,7 +959,7 @@ export const messageFields: INodeProperties[] = [ displayName: 'Update Fields', name: 'updateFields', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, displayOptions: { show: { @@ -983,7 +998,30 @@ export const messageFields: INodeProperties[] = [ }, ], }, - + { + displayName: 'Options', + name: 'otherOptions', + type: 'collection', + displayOptions: { + show: { + operation: ['update'], + resource: ['message'], + }, + }, + default: {}, + description: 'Other options to set', + placeholder: 'Add option', + options: [ + { + displayName: 'Include Link to Workflow', + name: 'includeLinkToWorkflow', + type: 'boolean', + default: true, + description: + 'Whether to append a link to this workflow at the end of the message. This is helpful if you have many workflows sending Slack messages.', + }, + ], + }, /* ----------------------------------------------------------------------- */ /* message:delete /* ----------------------------------------------------------------------- */ @@ -1221,14 +1259,14 @@ export const messageFields: INodeProperties[] = [ name: 'searchChannel', type: 'multiOptions', description: - 'Choose from the list, or specify IDs using an expression', + 'Choose from the list, or specify IDs using an expression', default: [], - placeholder: 'Select a channel...', typeOptions: { loadOptionsMethod: 'getChannelsName', }, }, ], default: {}, + placeholder: 'Add option', }, ]; diff --git a/packages/nodes-base/nodes/Slack/V2/SlackV2.node.ts b/packages/nodes-base/nodes/Slack/V2/SlackV2.node.ts index 40df76b8cd..3ba8cca7b8 100644 --- a/packages/nodes-base/nodes/Slack/V2/SlackV2.node.ts +++ b/packages/nodes-base/nodes/Slack/V2/SlackV2.node.ts @@ -15,17 +15,36 @@ import type { JsonObject, } from 'n8n-workflow'; -import { BINARY_ENCODING, NodeOperationError } from 'n8n-workflow'; +import { + BINARY_ENCODING, + NodeConnectionType, + NodeOperationError, + SEND_AND_WAIT_OPERATION, + WAIT_TIME_UNLIMITED, +} from 'n8n-workflow'; import moment from 'moment-timezone'; import { channelFields, channelOperations } from './ChannelDescription'; -import { messageFields, messageOperations } from './MessageDescription'; +import { + channelRLC, + messageFields, + messageOperations, + sendToSelector, + userRLC, +} from './MessageDescription'; import { starFields, starOperations } from './StarDescription'; import { fileFields, fileOperations } from './FileDescription'; import { reactionFields, reactionOperations } from './ReactionDescription'; import { userGroupFields, userGroupOperations } from './UserGroupDescription'; import { userFields, userOperations } from './UserDescription'; -import { slackApiRequest, slackApiRequestAllItems, getMessageContent } from './GenericFunctions'; +import { + slackApiRequest, + slackApiRequestAllItems, + getMessageContent, + getTarget, + createSendAndWaitMessageBody, +} from './GenericFunctions'; +import { getSendAndWaitProperties, sendAndWaitWebhook } from '../../../utils/sendAndWait/utils'; export class SlackV2 implements INodeType { description: INodeTypeDescription; @@ -37,8 +56,9 @@ export class SlackV2 implements INodeType { defaults: { name: 'Slack', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], + usableAsTool: true, credentials: [ { name: 'slackApi', @@ -59,6 +79,17 @@ export class SlackV2 implements INodeType { }, }, ], + webhooks: [ + { + name: 'default', + httpMethod: 'GET', + responseMode: 'onReceived', + responseData: '', + path: '={{ $nodeId }}', + restartWebhook: true, + isFullPath: true, + }, + ], properties: [ { displayName: 'Authentication', @@ -119,6 +150,25 @@ export class SlackV2 implements INodeType { ...channelFields, ...messageOperations, ...messageFields, + ...getSendAndWaitProperties([ + { ...sendToSelector, default: 'user' }, + { + ...channelRLC, + displayOptions: { + show: { + select: ['channel'], + }, + }, + }, + { + ...userRLC, + displayOptions: { + show: { + select: ['user'], + }, + }, + }, + ]).filter((p) => p.name !== 'subject'), ...starOperations, ...starFields, ...fileOperations, @@ -306,6 +356,8 @@ export class SlackV2 implements INodeType { }, }; + webhook = sendAndWaitWebhook; + async execute(this: IExecuteFunctions): Promise { const items = this.getInputData(); const returnData: INodeExecutionData[] = []; @@ -319,6 +371,18 @@ export class SlackV2 implements INodeType { const nodeVersion = this.getNode().typeVersion; const instanceId = this.getInstanceId(); + if (resource === 'message' && operation === SEND_AND_WAIT_OPERATION) { + await slackApiRequest.call( + this, + 'POST', + '/chat.postMessage', + createSendAndWaitMessageBody(this), + ); + + await this.putExecutionToWait(new Date(WAIT_TIME_UNLIMITED)); + return [this.getInputData()]; + } + for (let i = 0; i < length; i++) { try { responseData = { @@ -748,22 +812,8 @@ export class SlackV2 implements INodeType { if (resource === 'message') { //https://api.slack.com/methods/chat.postMessage if (operation === 'post') { - const select = this.getNodeParameter('select', i) as string; - let target = - select === 'channel' - ? (this.getNodeParameter('channelId', i, undefined, { - extractValue: true, - }) as string) - : (this.getNodeParameter('user', i, undefined, { - extractValue: true, - }) as string); - - if ( - select === 'user' && - (this.getNodeParameter('user', i) as IDataObject).mode === 'username' - ) { - target = target.slice(0, 1) === '@' ? target : `@${target}`; - } + const select = this.getNodeParameter('select', i) as 'user' | 'channel'; + const target = getTarget(this, i, select); const { sendAsUser } = this.getNodeParameter('otherOptions', i) as IDataObject; const content = getMessageContent.call(this, i, nodeVersion, instanceId); @@ -1249,18 +1299,29 @@ export class SlackV2 implements INodeType { options.fields = fields; } + Object.assign(body, options); + let requestBody: IDataObject = { profile: body }; + + let userId; + if (options.user) { + userId = options.user; + delete body.user; + requestBody = { profile: body, user: userId }; + } + responseData = await slackApiRequest.call( this, 'POST', '/users.profile.set', - { profile: body }, + requestBody, qs, ); responseData = responseData.profile; } } + if (resource === 'userGroup') { //https://api.slack.com/methods/usergroups.create if (operation === 'create') { @@ -1359,7 +1420,7 @@ export class SlackV2 implements INodeType { ); returnData.push(...executionData); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push({ json: { error: (error as JsonObject).message } }); continue; } diff --git a/packages/nodes-base/nodes/Slack/V2/StarDescription.ts b/packages/nodes-base/nodes/Slack/V2/StarDescription.ts index d600202a9b..b4601c442c 100644 --- a/packages/nodes-base/nodes/Slack/V2/StarDescription.ts +++ b/packages/nodes-base/nodes/Slack/V2/StarDescription.ts @@ -166,7 +166,7 @@ export const starFields: INodeProperties[] = [ }, default: {}, description: 'Options to set', - placeholder: 'Add options', + placeholder: 'Add option', options: [ { displayName: 'File Comment', @@ -193,7 +193,7 @@ export const starFields: INodeProperties[] = [ }, default: {}, description: 'Options to set', - placeholder: 'Add options', + placeholder: 'Add option', options: [ { displayName: 'Channel Name or ID', @@ -204,7 +204,7 @@ export const starFields: INodeProperties[] = [ }, default: '', description: - 'Channel to add star to, or channel where the message to add star to was posted (used with timestamp). Choose from the list, or specify an ID using an expression.', + 'Channel to add star to, or channel where the message to add star to was posted (used with timestamp). Choose from the list, or specify an ID using an expression.', }, { displayName: 'File ID', diff --git a/packages/nodes-base/nodes/Slack/V2/UserDescription.ts b/packages/nodes-base/nodes/Slack/V2/UserDescription.ts index fc69e0eeb2..d20fbd0118 100644 --- a/packages/nodes-base/nodes/Slack/V2/UserDescription.ts +++ b/packages/nodes-base/nodes/Slack/V2/UserDescription.ts @@ -27,7 +27,7 @@ export const userOperations: INodeProperties[] = [ { name: "Get User's Profile", value: 'getProfile', - description: "Get a user's", + description: "Get a user's profile", action: "Get a user's profile", }, { @@ -210,7 +210,7 @@ export const userFields: INodeProperties[] = [ }, default: '', description: - 'ID of the field to set. Choose from the list, or specify an ID using an expression.', + 'ID of the field to set. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Field Value', diff --git a/packages/nodes-base/nodes/Slack/V2/UserGroupDescription.ts b/packages/nodes-base/nodes/Slack/V2/UserGroupDescription.ts index 08727b5cb2..4398613d16 100644 --- a/packages/nodes-base/nodes/Slack/V2/UserGroupDescription.ts +++ b/packages/nodes-base/nodes/Slack/V2/UserGroupDescription.ts @@ -82,7 +82,7 @@ export const userGroupFields: INodeProperties[] = [ }, default: [], description: - 'A comma-separated string of encoded channel IDs for which the User Group uses as a default. Choose from the list, or specify IDs using an expression.', + 'A comma-separated string of encoded channel IDs for which the User Group uses as a default. Choose from the list, or specify IDs using an expression.', }, { displayName: 'Description', @@ -294,7 +294,7 @@ export const userGroupFields: INodeProperties[] = [ }, default: [], description: - 'A comma-separated string of encoded channel IDs for which the User Group uses as a default. Choose from the list, or specify IDs using an expression.', + 'A comma-separated string of encoded channel IDs for which the User Group uses as a default. Choose from the list, or specify IDs using an expression.', }, { displayName: 'Description', diff --git a/packages/nodes-base/nodes/Slack/test/v2/utils.test.ts b/packages/nodes-base/nodes/Slack/test/v2/utils.test.ts new file mode 100644 index 0000000000..634ee25900 --- /dev/null +++ b/packages/nodes-base/nodes/Slack/test/v2/utils.test.ts @@ -0,0 +1,146 @@ +import { type MockProxy, mock } from 'jest-mock-extended'; +import type { IExecuteFunctions } from 'n8n-workflow'; +import { getTarget, createSendAndWaitMessageBody } from '../../V2/GenericFunctions'; + +describe('Slack Utility Functions', () => { + let mockExecuteFunctions: MockProxy; + + beforeEach(() => { + mockExecuteFunctions = mock(); + mockExecuteFunctions.getNode.mockReturnValue({ name: 'Slack', typeVersion: 1 } as any); + jest.clearAllMocks(); + }); + + describe('getTarget', () => { + it('should return corect target id', () => { + mockExecuteFunctions.getNodeParameter.mockImplementation((parameterName: string) => { + if (parameterName === 'user') { + return 'testUser'; + } + return 'testChannel'; + }); + expect(getTarget(mockExecuteFunctions, 0, 'channel')).toEqual('testChannel'); + + expect(getTarget(mockExecuteFunctions, 0, 'user')).toEqual('testUser'); + }); + }); + + describe('createSendAndWaitMessageBody', () => { + it('should create message with single button', () => { + mockExecuteFunctions.getNodeParameter.mockReturnValueOnce('channel'); + mockExecuteFunctions.getNodeParameter.mockReturnValueOnce('channelID'); + + mockExecuteFunctions.getNodeParameter.mockReturnValueOnce('message'); + mockExecuteFunctions.getNodeParameter.mockReturnValueOnce('subject'); + mockExecuteFunctions.evaluateExpression.mockReturnValueOnce('localhost'); + mockExecuteFunctions.evaluateExpression.mockReturnValueOnce('node123'); + mockExecuteFunctions.getNodeParameter.mockReturnValueOnce({}); + + expect(createSendAndWaitMessageBody(mockExecuteFunctions)).toEqual({ + blocks: [ + { + type: 'divider', + }, + { + text: { + emoji: true, + text: 'message', + type: 'plain_text', + }, + type: 'section', + }, + { + text: { + text: ' ', + type: 'plain_text', + }, + type: 'section', + }, + { + type: 'divider', + }, + { + elements: [ + { + style: 'primary', + text: { + emoji: true, + text: 'Approve', + type: 'plain_text', + }, + type: 'button', + url: 'localhost/node123?approved=true', + }, + ], + type: 'actions', + }, + ], + channel: 'channelID', + }); + }); + + it('should create message with double buttona', () => { + mockExecuteFunctions.getNodeParameter.mockReturnValueOnce('channel'); + mockExecuteFunctions.getNodeParameter.mockReturnValueOnce('channelID'); + + mockExecuteFunctions.getNodeParameter.mockReturnValueOnce('message'); + mockExecuteFunctions.getNodeParameter.mockReturnValueOnce('subject'); + mockExecuteFunctions.evaluateExpression.mockReturnValueOnce('localhost'); + mockExecuteFunctions.evaluateExpression.mockReturnValueOnce('node123'); + mockExecuteFunctions.getNodeParameter.mockReturnValueOnce({ approvalType: 'double' }); + + expect(createSendAndWaitMessageBody(mockExecuteFunctions)).toEqual({ + blocks: [ + { + type: 'divider', + }, + { + text: { + emoji: true, + text: 'message', + type: 'plain_text', + }, + type: 'section', + }, + { + text: { + text: ' ', + type: 'plain_text', + }, + type: 'section', + }, + { + type: 'divider', + }, + { + elements: [ + { + style: undefined, + text: { + emoji: true, + text: 'Disapprove', + type: 'plain_text', + }, + type: 'button', + url: 'localhost/node123?approved=false', + }, + + { + style: 'primary', + text: { + emoji: true, + text: 'Approve', + type: 'plain_text', + }, + type: 'button', + url: 'localhost/node123?approved=true', + }, + ], + type: 'actions', + }, + ], + channel: 'channelID', + }); + }); + }); +}); diff --git a/packages/nodes-base/nodes/Sms77/Sms77.node.json b/packages/nodes-base/nodes/Sms77/Sms77.node.json index 58d0776f62..7a4a6c3ae3 100644 --- a/packages/nodes-base/nodes/Sms77/Sms77.node.json +++ b/packages/nodes-base/nodes/Sms77/Sms77.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/sms77" + "url": "https://docs.n8n.io/integrations/builtin/credentials/sms77/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Sms77/Sms77.node.ts b/packages/nodes-base/nodes/Sms77/Sms77.node.ts index 565e41c347..a59f1ea217 100644 --- a/packages/nodes-base/nodes/Sms77/Sms77.node.ts +++ b/packages/nodes-base/nodes/Sms77/Sms77.node.ts @@ -1,9 +1,10 @@ -import type { - IDataObject, - IExecuteFunctions, - INodeExecutionData, - INodeType, - INodeTypeDescription, +import { + NodeConnectionType, + type IDataObject, + type IExecuteFunctions, + type INodeExecutionData, + type INodeType, + type INodeTypeDescription, } from 'n8n-workflow'; import { sms77ApiRequest } from './GenericFunctions'; @@ -20,8 +21,8 @@ export class Sms77 implements INodeType { defaults: { name: 'seven', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'sms77Api', @@ -297,7 +298,7 @@ export class Sms77 implements INodeType { returnData.push(responseData as IDataObject); } } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push({ error: error.message }); continue; } diff --git a/packages/nodes-base/nodes/Snowflake/Snowflake.node.json b/packages/nodes-base/nodes/Snowflake/Snowflake.node.json index aa3b50bbe0..0619d3390f 100644 --- a/packages/nodes-base/nodes/Snowflake/Snowflake.node.json +++ b/packages/nodes-base/nodes/Snowflake/Snowflake.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/snowflake" + "url": "https://docs.n8n.io/integrations/builtin/credentials/snowflake/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Snowflake/Snowflake.node.ts b/packages/nodes-base/nodes/Snowflake/Snowflake.node.ts index a2d33e95f3..83406e1b51 100644 --- a/packages/nodes-base/nodes/Snowflake/Snowflake.node.ts +++ b/packages/nodes-base/nodes/Snowflake/Snowflake.node.ts @@ -5,6 +5,7 @@ import type { INodeType, INodeTypeDescription, } from 'n8n-workflow'; +import { NodeConnectionType } from 'n8n-workflow'; import snowflake from 'snowflake-sdk'; import { connect, destroy, execute } from './GenericFunctions'; @@ -22,8 +23,8 @@ export class Snowflake implements INodeType { defaults: { name: 'Snowflake', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], parameterPane: 'wide', credentials: [ { diff --git a/packages/nodes-base/nodes/SplitInBatches/v1/SplitInBatchesV1.node.ts b/packages/nodes-base/nodes/SplitInBatches/v1/SplitInBatchesV1.node.ts index ba7d2c497a..fbee42dc10 100644 --- a/packages/nodes-base/nodes/SplitInBatches/v1/SplitInBatchesV1.node.ts +++ b/packages/nodes-base/nodes/SplitInBatches/v1/SplitInBatchesV1.node.ts @@ -1,4 +1,3 @@ -/* eslint-disable n8n-nodes-base/node-filename-against-convention */ import type { IExecuteFunctions, INodeExecutionData, @@ -6,7 +5,7 @@ import type { INodeTypeDescription, IPairedItemData, } from 'n8n-workflow'; -import { deepCopy } from 'n8n-workflow'; +import { NodeConnectionType, deepCopy } from 'n8n-workflow'; export class SplitInBatchesV1 implements INodeType { description: INodeTypeDescription = { @@ -20,8 +19,8 @@ export class SplitInBatchesV1 implements INodeType { name: 'Split In Batches', color: '#007755', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], properties: [ { displayName: @@ -44,7 +43,7 @@ export class SplitInBatchesV1 implements INodeType { displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, options: [ { diff --git a/packages/nodes-base/nodes/SplitInBatches/v2/SplitInBatchesV2.node.ts b/packages/nodes-base/nodes/SplitInBatches/v2/SplitInBatchesV2.node.ts index 27405a039c..d6c8b7fbb3 100644 --- a/packages/nodes-base/nodes/SplitInBatches/v2/SplitInBatchesV2.node.ts +++ b/packages/nodes-base/nodes/SplitInBatches/v2/SplitInBatchesV2.node.ts @@ -1,4 +1,3 @@ -/* eslint-disable n8n-nodes-base/node-filename-against-convention */ import type { IExecuteFunctions, INodeExecutionData, @@ -6,7 +5,7 @@ import type { INodeTypeDescription, IPairedItemData, } from 'n8n-workflow'; -import { deepCopy } from 'n8n-workflow'; +import { NodeConnectionType, deepCopy } from 'n8n-workflow'; export class SplitInBatchesV2 implements INodeType { description: INodeTypeDescription = { @@ -20,9 +19,9 @@ export class SplitInBatchesV2 implements INodeType { name: 'Split In Batches', color: '#007755', }, - inputs: ['main'], - // eslint-disable-next-line n8n-nodes-base/node-class-description-outputs-wrong - outputs: ['main', 'main'], + inputs: [NodeConnectionType.Main], + + outputs: [NodeConnectionType.Main, NodeConnectionType.Main], outputNames: ['loop', 'done'], properties: [ { @@ -46,7 +45,7 @@ export class SplitInBatchesV2 implements INodeType { displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, options: [ { diff --git a/packages/nodes-base/nodes/SplitInBatches/v3/SplitInBatchesV3.node.ts b/packages/nodes-base/nodes/SplitInBatches/v3/SplitInBatchesV3.node.ts index 0581c3d1bc..5c6edcc59d 100644 --- a/packages/nodes-base/nodes/SplitInBatches/v3/SplitInBatchesV3.node.ts +++ b/packages/nodes-base/nodes/SplitInBatches/v3/SplitInBatchesV3.node.ts @@ -1,4 +1,3 @@ -/* eslint-disable n8n-nodes-base/node-filename-against-convention */ import type { IExecuteFunctions, INodeExecutionData, @@ -6,7 +5,7 @@ import type { INodeTypeDescription, IPairedItemData, } from 'n8n-workflow'; -import { deepCopy } from 'n8n-workflow'; +import { NodeConnectionType, deepCopy } from 'n8n-workflow'; export class SplitInBatchesV3 implements INodeType { description: INodeTypeDescription = { @@ -21,9 +20,9 @@ export class SplitInBatchesV3 implements INodeType { name: 'Loop Over Items', color: '#007755', }, - inputs: ['main'], - // eslint-disable-next-line n8n-nodes-base/node-class-description-outputs-wrong - outputs: ['main', 'main'], + inputs: [NodeConnectionType.Main], + + outputs: [NodeConnectionType.Main, NodeConnectionType.Main], outputNames: ['done', 'loop'], properties: [ { @@ -47,7 +46,7 @@ export class SplitInBatchesV3 implements INodeType { displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, options: [ { diff --git a/packages/nodes-base/nodes/Splunk/Splunk.node.json b/packages/nodes-base/nodes/Splunk/Splunk.node.json index e63b03233d..7e06b7a1ba 100644 --- a/packages/nodes-base/nodes/Splunk/Splunk.node.json +++ b/packages/nodes-base/nodes/Splunk/Splunk.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/splunk" + "url": "https://docs.n8n.io/integrations/builtin/credentials/splunk/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Splunk/Splunk.node.ts b/packages/nodes-base/nodes/Splunk/Splunk.node.ts index c857418026..f8449708cf 100644 --- a/packages/nodes-base/nodes/Splunk/Splunk.node.ts +++ b/packages/nodes-base/nodes/Splunk/Splunk.node.ts @@ -1,486 +1,25 @@ -import { - type IExecuteFunctions, - type ICredentialsDecrypted, - type ICredentialTestFunctions, - type IDataObject, - type ILoadOptionsFunctions, - type INodeCredentialTestResult, - type INodeExecutionData, - type INodeType, - type INodeTypeDescription, - type IRequestOptions, - NodeApiError, - NodeOperationError, -} from 'n8n-workflow'; - -import set from 'lodash/set'; -import { - formatFeed, - formatResults, - formatSearch, - getId, - populate, - setCount, - splunkApiRequest, - toUnixEpoch, -} from './GenericFunctions'; - -import { - firedAlertOperations, - searchConfigurationFields, - searchConfigurationOperations, - searchJobFields, - searchJobOperations, - searchResultFields, - searchResultOperations, - userFields, - userOperations, -} from './descriptions'; - -import type { SplunkCredentials, SplunkFeedResponse } from './types'; - -export class Splunk implements INodeType { - description: INodeTypeDescription = { - displayName: 'Splunk', - name: 'splunk', - icon: 'file:splunk.svg', - group: ['transform'], - version: 1, - subtitle: '={{$parameter["operation"] + ": " + $parameter["resource"]}}', - description: 'Consume the Splunk Enterprise API', - defaults: { - name: 'Splunk', - }, - inputs: ['main'], - outputs: ['main'], - credentials: [ - { - name: 'splunkApi', - required: true, - testedBy: 'splunkApiTest', - }, - ], - properties: [ - { - displayName: 'Resource', - name: 'resource', - type: 'options', - noDataExpression: true, - options: [ - { - name: 'Fired Alert', - value: 'firedAlert', - }, - { - name: 'Search Configuration', - value: 'searchConfiguration', - }, - { - name: 'Search Job', - value: 'searchJob', - }, - { - name: 'Search Result', - value: 'searchResult', - }, - { - name: 'User', - value: 'user', - }, - ], - default: 'searchJob', - }, - ...firedAlertOperations, - ...searchConfigurationOperations, - ...searchConfigurationFields, - ...searchJobOperations, - ...searchJobFields, - ...searchResultOperations, - ...searchResultFields, - ...userOperations, - ...userFields, - ], - }; - - methods = { - loadOptions: { - async getRoles(this: ILoadOptionsFunctions) { - const endpoint = '/services/authorization/roles'; - const responseData = (await splunkApiRequest.call( - this, - 'GET', - endpoint, - )) as SplunkFeedResponse; - const { entry: entries } = responseData.feed; - - return Array.isArray(entries) - ? entries.map((entry) => ({ name: entry.title, value: entry.title })) - : [{ name: entries.title, value: entries.title }]; - }, - }, - credentialTest: { - async splunkApiTest( - this: ICredentialTestFunctions, - credential: ICredentialsDecrypted, - ): Promise { - const { authToken, baseUrl, allowUnauthorizedCerts } = credential.data as SplunkCredentials; - - const endpoint = '/services/alerts/fired_alerts'; - - const options: IRequestOptions = { - headers: { - Authorization: `Bearer ${authToken}`, - 'Content-Type': 'application/x-www-form-urlencoded', - }, - method: 'GET', - form: {}, - qs: {}, - uri: `${baseUrl}${endpoint}`, - json: true, - rejectUnauthorized: !allowUnauthorizedCerts, - }; - - try { - await this.helpers.request(options); - return { - status: 'OK', - message: 'Authentication successful', - }; - } catch (error) { - return { - status: 'Error', - message: error.message, - }; - } - }, - }, - }; - - async execute(this: IExecuteFunctions): Promise { - const items = this.getInputData(); - const returnData: INodeExecutionData[] = []; - - const resource = this.getNodeParameter('resource', 0); - const operation = this.getNodeParameter('operation', 0); - - let responseData; - - for (let i = 0; i < items.length; i++) { - try { - if (resource === 'firedAlert') { - // ********************************************************************** - // firedAlert - // ********************************************************************** - - if (operation === 'getReport') { - // ---------------------------------------- - // firedAlert: getReport - // ---------------------------------------- - - // https://docs.splunk.com/Documentation/Splunk/latest/RESTREF/RESTsearch#alerts.2Ffired_alerts - - const endpoint = '/services/alerts/fired_alerts'; - responseData = await splunkApiRequest.call(this, 'GET', endpoint).then(formatFeed); - } - } else if (resource === 'searchConfiguration') { - // ********************************************************************** - // searchConfiguration - // ********************************************************************** - - if (operation === 'delete') { - // ---------------------------------------- - // searchConfiguration: delete - // ---------------------------------------- - - // https://docs.splunk.com/Documentation/Splunk/8.2.2/RESTREF/RESTsearch#saved.2Fsearches.2F.7Bname.7D - - const partialEndpoint = '/services/saved/searches/'; - const searchConfigurationId = getId.call( - this, - i, - 'searchConfigurationId', - '/search/saved/searches/', - ); // id endpoint differs from operation endpoint - const endpoint = `${partialEndpoint}/${searchConfigurationId}`; - - responseData = await splunkApiRequest.call(this, 'DELETE', endpoint); - } else if (operation === 'get') { - // ---------------------------------------- - // searchConfiguration: get - // ---------------------------------------- - - // https://docs.splunk.com/Documentation/Splunk/8.2.2/RESTREF/RESTsearch#saved.2Fsearches.2F.7Bname.7D - - const partialEndpoint = '/services/saved/searches/'; - const searchConfigurationId = getId.call( - this, - i, - 'searchConfigurationId', - '/search/saved/searches/', - ); // id endpoint differs from operation endpoint - const endpoint = `${partialEndpoint}/${searchConfigurationId}`; - - responseData = await splunkApiRequest.call(this, 'GET', endpoint).then(formatFeed); - } else if (operation === 'getAll') { - // ---------------------------------------- - // searchConfiguration: getAll - // ---------------------------------------- - - // https://docs.splunk.com/Documentation/Splunk/8.2.2/RESTREF/RESTsearch#saved.2Fsearches - - const qs = {} as IDataObject; - const options = this.getNodeParameter('options', i); - - populate(options, qs); - setCount.call(this, qs); - - const endpoint = '/services/saved/searches'; - responseData = await splunkApiRequest - .call(this, 'GET', endpoint, {}, qs) - .then(formatFeed); - } - } else if (resource === 'searchJob') { - // ********************************************************************** - // searchJob - // ********************************************************************** - - if (operation === 'create') { - // ---------------------------------------- - // searchJob: create - // ---------------------------------------- - - // https://docs.splunk.com/Documentation/Splunk/8.2.2/RESTREF/RESTsearch#search.2Fjobs - - const body = { - search: this.getNodeParameter('search', i), - } as IDataObject; - - const { earliest_time, latest_time, index_earliest, index_latest, ...rest } = - this.getNodeParameter('additionalFields', i) as IDataObject & { - earliest_time?: string; - latest_time?: string; - index_earliest?: string; - index_latest?: string; - }; - - populate( - { - ...(earliest_time && { earliest_time: toUnixEpoch(earliest_time) }), - ...(latest_time && { latest_time: toUnixEpoch(latest_time) }), - ...(index_earliest && { index_earliest: toUnixEpoch(index_earliest) }), - ...(index_latest && { index_latest: toUnixEpoch(index_latest) }), - ...rest, - }, - body, - ); - - const endpoint = '/services/search/jobs'; - responseData = await splunkApiRequest.call(this, 'POST', endpoint, body); - - const getEndpoint = `/services/search/jobs/${responseData.response.sid}`; - responseData = await splunkApiRequest.call(this, 'GET', getEndpoint).then(formatSearch); - } else if (operation === 'delete') { - // ---------------------------------------- - // searchJob: delete - // ---------------------------------------- - - // https://docs.splunk.com/Documentation/Splunk/8.2.2/RESTREF/RESTsearch#search.2Fjobs.2F.7Bsearch_id.7D - - const partialEndpoint = '/services/search/jobs/'; - const searchJobId = getId.call(this, i, 'searchJobId', partialEndpoint); - const endpoint = `${partialEndpoint}/${searchJobId}`; - responseData = await splunkApiRequest.call(this, 'DELETE', endpoint); - } else if (operation === 'get') { - // ---------------------------------------- - // searchJob: get - // ---------------------------------------- - - // https://docs.splunk.com/Documentation/Splunk/8.2.2/RESTREF/RESTsearch#search.2Fjobs.2F.7Bsearch_id.7D - - const partialEndpoint = '/services/search/jobs/'; - const searchJobId = getId.call(this, i, 'searchJobId', partialEndpoint); - const endpoint = `${partialEndpoint}/${searchJobId}`; - responseData = await splunkApiRequest.call(this, 'GET', endpoint).then(formatSearch); - } else if (operation === 'getAll') { - // ---------------------------------------- - // searchJob: getAll - // ---------------------------------------- - - // https://docs.splunk.com/Documentation/Splunk/8.2.2/RESTREF/RESTsearch#search.2Fjobs - - const qs = {} as IDataObject; - const options = this.getNodeParameter('options', i); - - populate(options, qs); - setCount.call(this, qs); - - const endpoint = '/services/search/jobs'; - responseData = (await splunkApiRequest.call( - this, - 'GET', - endpoint, - {}, - qs, - )) as SplunkFeedResponse; - responseData = formatFeed(responseData); - } - } else if (resource === 'searchResult') { - // ********************************************************************** - // searchResult - // ********************************************************************** - - if (operation === 'getAll') { - // ---------------------------------------- - // searchResult: getAll - // ---------------------------------------- - - // https://docs.splunk.com/Documentation/Splunk/latest/RESTREF/RESTsearch#search.2Fjobs.2F.7Bsearch_id.7D.2Fresults - - const searchJobId = this.getNodeParameter('searchJobId', i); - - const qs = {} as IDataObject; - const filters = this.getNodeParameter('filters', i) as IDataObject & { - keyValueMatch?: { keyValuePair?: { key: string; value: string } }; - }; - const options = this.getNodeParameter('options', i); - - const keyValuePair = filters?.keyValueMatch?.keyValuePair; - - if (keyValuePair?.key && keyValuePair?.value) { - qs.search = `search ${keyValuePair.key}=${keyValuePair.value}`; - } - - populate(options, qs); - setCount.call(this, qs); - - const endpoint = `/services/search/jobs/${searchJobId}/results`; - responseData = await splunkApiRequest - .call(this, 'GET', endpoint, {}, qs) - .then(formatResults); - } - } else if (resource === 'user') { - // ********************************************************************** - // user - // ********************************************************************** - - if (operation === 'create') { - // ---------------------------------------- - // user: create - // ---------------------------------------- - - // https://docs.splunk.com/Documentation/Splunk/8.2.2/RESTREF/RESTaccess#authentication.2Fusers - - const roles = this.getNodeParameter('roles', i) as string[]; - - const body = { - name: this.getNodeParameter('name', i), - roles, - password: this.getNodeParameter('password', i), - } as IDataObject; - - const additionalFields = this.getNodeParameter('additionalFields', i); - - populate(additionalFields, body); - - const endpoint = '/services/authentication/users'; - responseData = (await splunkApiRequest.call( - this, - 'POST', - endpoint, - body, - )) as SplunkFeedResponse; - responseData = formatFeed(responseData); - } else if (operation === 'delete') { - // ---------------------------------------- - // user: delete - // ---------------------------------------- - - // https://docs.splunk.com/Documentation/Splunk/8.2.2/RESTREF/RESTaccess#authentication.2Fusers.2F.7Bname.7D - - const partialEndpoint = '/services/authentication/users'; - const userId = getId.call(this, i, 'userId', partialEndpoint); - const endpoint = `${partialEndpoint}/${userId}`; - await splunkApiRequest.call(this, 'DELETE', endpoint); - responseData = { success: true }; - } else if (operation === 'get') { - // ---------------------------------------- - // user: get - // ---------------------------------------- - - // https://docs.splunk.com/Documentation/Splunk/8.2.2/RESTREF/RESTaccess#authentication.2Fusers.2F.7Bname.7D - - const partialEndpoint = '/services/authentication/users/'; - const userId = getId.call(this, i, 'userId', '/services/authentication/users/'); - const endpoint = `${partialEndpoint}/${userId}`; - responseData = await splunkApiRequest.call(this, 'GET', endpoint).then(formatFeed); - } else if (operation === 'getAll') { - // ---------------------------------------- - // user: getAll - // ---------------------------------------- - - // https://docs.splunk.com/Documentation/Splunk/8.2.2/RESTREF/RESTaccess#authentication.2Fusers - - const qs = {} as IDataObject; - setCount.call(this, qs); - - const endpoint = '/services/authentication/users'; - responseData = await splunkApiRequest - .call(this, 'GET', endpoint, {}, qs) - .then(formatFeed); - } else if (operation === 'update') { - // ---------------------------------------- - // user: update - // ---------------------------------------- - - // https://docs.splunk.com/Documentation/Splunk/8.2.2/RESTREF/RESTaccess#authentication.2Fusers.2F.7Bname.7D - - const body = {} as IDataObject; - const { roles, ...rest } = this.getNodeParameter('updateFields', i) as IDataObject & { - roles: string[]; - }; - - populate( - { - ...(roles && { roles }), - ...rest, - }, - body, - ); - - const partialEndpoint = '/services/authentication/users/'; - const userId = getId.call(this, i, 'userId', partialEndpoint); - const endpoint = `${partialEndpoint}/${userId}`; - responseData = await splunkApiRequest - .call(this, 'POST', endpoint, body) - .then(formatFeed); - } - } - } catch (error) { - if (this.continueOnFail(error)) { - returnData.push({ json: { error: error.cause.error }, pairedItem: { item: i } }); - continue; - } - - if (error instanceof NodeApiError) { - set(error, 'context.itemIndex', i); - } - - if (error instanceof NodeOperationError && error?.context?.itemIndex === undefined) { - set(error, 'context.itemIndex', i); - } - - throw new NodeOperationError(this.getNode(), error, { itemIndex: i }); - } - - if (Array.isArray(responseData)) { - for (const item of responseData) { - returnData.push({ json: item, pairedItem: { item: i } }); - } - } else { - returnData.push({ json: responseData, pairedItem: { item: i } }); - } - } - - return [returnData]; +import type { INodeTypeBaseDescription, IVersionedNodeType } from 'n8n-workflow'; +import { VersionedNodeType } from 'n8n-workflow'; + +import { SplunkV1 } from './v1/SplunkV1.node'; +import { SplunkV2 } from './v2/SplunkV2.node'; + +export class Splunk extends VersionedNodeType { + constructor() { + const baseDescription: INodeTypeBaseDescription = { + displayName: 'Splunk', + name: 'splunk', + icon: 'file:splunk.svg', + group: ['transform'], + description: 'Consume the Splunk Enterprise API', + defaultVersion: 2, + }; + + const nodeVersions: IVersionedNodeType['nodeVersions'] = { + 1: new SplunkV1(baseDescription), + 2: new SplunkV2(baseDescription), + }; + + super(nodeVersions, baseDescription); } } diff --git a/packages/nodes-base/nodes/Splunk/splunk.svg b/packages/nodes-base/nodes/Splunk/splunk.svg index 8eb25b4a26..1cd8bc1c40 100644 --- a/packages/nodes-base/nodes/Splunk/splunk.svg +++ b/packages/nodes-base/nodes/Splunk/splunk.svg @@ -1,134 +1,381 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + diff --git a/packages/nodes-base/nodes/Splunk/test/v2/node/alert.test.ts b/packages/nodes-base/nodes/Splunk/test/v2/node/alert.test.ts new file mode 100644 index 0000000000..5857e14cd4 --- /dev/null +++ b/packages/nodes-base/nodes/Splunk/test/v2/node/alert.test.ts @@ -0,0 +1,37 @@ +import { mock } from 'jest-mock-extended'; +import type { IExecuteFunctions } from 'n8n-workflow'; +import * as alert from '../../../v2/actions/alert'; +import * as transport from '../../../v2/transport'; + +jest.mock('../../../v2/transport', () => ({ + splunkApiJsonRequest: jest.fn(), +})); + +describe('Splunk, alert resource', () => { + const response = [{ id: '123' }, { id: '345' }]; + + beforeEach(() => { + jest.clearAllMocks(); + }); + test('getMetrics operation', async () => { + const executeFunctions = mock(); + (transport.splunkApiJsonRequest as jest.Mock).mockReturnValue(response); + const responseData = await alert.getMetrics.execute.call(executeFunctions, 0); + expect(transport.splunkApiJsonRequest).toHaveBeenCalledWith( + 'GET', + '/services/alerts/metric_alerts', + ); + expect(responseData).toEqual(response); + }); + + test('getReport operation', async () => { + const executeFunctions = mock(); + (transport.splunkApiJsonRequest as jest.Mock).mockReturnValue(response); + const responseData = await alert.getReport.execute.call(executeFunctions, 0); + expect(transport.splunkApiJsonRequest).toHaveBeenCalledWith( + 'GET', + '/services/alerts/fired_alerts', + ); + expect(responseData).toEqual(response); + }); +}); diff --git a/packages/nodes-base/nodes/Splunk/test/v2/node/report.test.ts b/packages/nodes-base/nodes/Splunk/test/v2/node/report.test.ts new file mode 100644 index 0000000000..118ca8dd60 --- /dev/null +++ b/packages/nodes-base/nodes/Splunk/test/v2/node/report.test.ts @@ -0,0 +1,103 @@ +import { mock } from 'jest-mock-extended'; +import type { IExecuteFunctions } from 'n8n-workflow'; +import * as report from '../../../v2/actions/report'; +import * as transport from '../../../v2/transport'; +import { SPLUNK } from '../../../v1/types'; + +jest.mock('../../../v2/transport', () => ({ + splunkApiJsonRequest: jest.fn(), + splunkApiRequest: jest.fn(), +})); + +describe('Splunk, report resource', () => { + beforeEach(() => { + jest.clearAllMocks(); + }); + test('create operation', async () => { + const executeFunctions = mock(); + executeFunctions.getNodeParameter.calledWith('name', 0).mockReturnValue('someName'); + executeFunctions.getNodeParameter.calledWith('searchJobId', 0).mockReturnValue('12345'); + + (transport.splunkApiJsonRequest as jest.Mock).mockReturnValue([ + { + id: '12345', + cronSchedule: '*/5 * * * *', + earliestTime: '2020-01-01T00:00:00.000Z', + latestTime: '2020-01-01T00:05:00.000Z', + isScheduled: true, + search: 'search index=_internal | stats count by source', + name: 'someName', + }, + ]); + + const response = { + feed: { + entry: [ + { + id: '1', + content: { [SPLUNK.DICT]: { [SPLUNK.KEY]: [{ $: { name: 'key1' }, _: 'value1' }] } }, + }, + ], + }, + }; + (transport.splunkApiRequest as jest.Mock).mockReturnValue(Promise.resolve(response)); + + const responseData = await report.create.execute.call(executeFunctions, 0); + + expect(transport.splunkApiJsonRequest).toHaveBeenCalledWith( + 'GET', + '/services/search/jobs/12345', + ); + expect(transport.splunkApiRequest).toHaveBeenCalledWith('POST', '/services/saved/searches', { + alert_type: 'always', + cron_schedule: '*/5 * * * *', + 'dispatch.earliest_time': '2020-01-01T00:00:00.000Z', + 'dispatch.latest_time': '2020-01-01T00:05:00.000Z', + is_scheduled: true, + name: 'someName', + search: 'search index=_internal | stats count by source', + }); + expect(responseData).toEqual([{ entryUrl: '1', id: '1', key1: 'value1' }]); + }); + + test('deleteReport operation', async () => { + const executeFunctions = mock(); + executeFunctions.getNodeParameter.mockReturnValue('12345'); + (transport.splunkApiRequest as jest.Mock).mockReturnValue({}); + const responseData = await report.deleteReport.execute.call(executeFunctions, 0); + expect(transport.splunkApiRequest).toHaveBeenCalledWith( + 'DELETE', + '/services/saved/searches/12345', + ); + expect(responseData).toEqual({ success: true }); + }); + + test('get operation', async () => { + const executeFunctions = mock(); + executeFunctions.getNodeParameter.calledWith('reportId', 0).mockReturnValue('12345'); + + (transport.splunkApiJsonRequest as jest.Mock).mockReturnValue([{ test: 'test' }]); + const responseData = await report.get.execute.call(executeFunctions, 0); + expect(transport.splunkApiJsonRequest).toHaveBeenCalledWith( + 'GET', + '/services/saved/searches/12345', + ); + expect(responseData).toEqual([{ test: 'test' }]); + }); + + test('getAll operation', async () => { + const executeFunctions = mock(); + executeFunctions.getNodeParameter.calledWith('options', 0).mockReturnValue({}); + executeFunctions.getNodeParameter.calledWith('returnAll', 0).mockReturnValue(true); + + (transport.splunkApiJsonRequest as jest.Mock).mockReturnValue([{ test: 'test' }]); + const responseData = await report.getAll.execute.call(executeFunctions, 0); + expect(transport.splunkApiJsonRequest).toHaveBeenCalledWith( + 'GET', + '/services/saved/searches', + {}, + { count: 0 }, + ); + expect(responseData).toEqual([{ test: 'test' }]); + }); +}); diff --git a/packages/nodes-base/nodes/Splunk/test/v2/node/search.test.ts b/packages/nodes-base/nodes/Splunk/test/v2/node/search.test.ts new file mode 100644 index 0000000000..d8e02ec86b --- /dev/null +++ b/packages/nodes-base/nodes/Splunk/test/v2/node/search.test.ts @@ -0,0 +1,104 @@ +import { mock } from 'jest-mock-extended'; +import type { IExecuteFunctions } from 'n8n-workflow'; +import * as search from '../../../v2/actions/search'; +import * as transport from '../../../v2/transport'; + +jest.mock('../../../v2/transport', () => ({ + splunkApiJsonRequest: jest.fn(), + splunkApiRequest: jest.fn(), +})); +describe('Splunk, search resource', () => { + beforeEach(() => { + jest.clearAllMocks(); + }); + + test('create operation', async () => { + const executeFunctions = mock(); + executeFunctions.getNodeParameter + .calledWith('search', 0) + .mockReturnValue('search index=_internal | stats count by source'); + executeFunctions.getNodeParameter.calledWith('additionalFields', 0).mockReturnValue({ + earliest_time: '2020-01-01T00:00:00.000Z', + latest_time: '2020-01-01T00:05:00.000Z', + index_earliest: '2020-01-01T00:00:00.000Z', + index_latest: '2020-01-01T00:05:00.000Z', + }); + (transport.splunkApiRequest as jest.Mock).mockReturnValue({ response: { sid: '12345' } }); + (transport.splunkApiJsonRequest as jest.Mock).mockReturnValue([{ test: 'test' }]); + const responseData = await search.create.execute.call(executeFunctions, 0); + expect(transport.splunkApiRequest).toHaveBeenCalledWith('POST', '/services/search/jobs', { + earliest_time: 1577836800, + index_earliest: 1577836800, + index_latest: 1577837100, + latest_time: 1577837100, + search: 'search index=_internal | stats count by source', + }); + expect(transport.splunkApiJsonRequest).toHaveBeenCalledWith( + 'GET', + '/services/search/jobs/12345', + ); + expect(responseData).toEqual([{ test: 'test' }]); + }); + + test('deleteJob operation', async () => { + const executeFunctions = mock(); + executeFunctions.getNodeParameter.mockReturnValue('12345'); + (transport.splunkApiRequest as jest.Mock).mockReturnValue({}); + const responseData = await search.deleteJob.execute.call(executeFunctions, 0); + expect(transport.splunkApiRequest).toHaveBeenCalledWith( + 'DELETE', + '/services/search/jobs/12345', + ); + expect(responseData).toEqual({ success: true }); + }); + + test('get operation', async () => { + const executeFunctions = mock(); + executeFunctions.getNodeParameter.calledWith('searchJobId', 0).mockReturnValue('12345'); + + (transport.splunkApiJsonRequest as jest.Mock).mockReturnValue([{ test: 'test' }]); + const responseData = await search.get.execute.call(executeFunctions, 0); + expect(transport.splunkApiJsonRequest).toHaveBeenCalledWith( + 'GET', + '/services/search/jobs/12345', + ); + expect(responseData).toEqual([{ test: 'test' }]); + }); + + test('getAll operation', async () => { + const executeFunctions = mock(); + executeFunctions.getNodeParameter.calledWith('sort.values', 0).mockReturnValue({}); + executeFunctions.getNodeParameter.calledWith('returnAll', 0).mockReturnValue(true); + + (transport.splunkApiJsonRequest as jest.Mock).mockReturnValue([{ test: 'test' }]); + const responseData = await search.getAll.execute.call(executeFunctions, 0); + expect(transport.splunkApiJsonRequest).toHaveBeenCalledWith( + 'GET', + '/services/search/jobs', + {}, + { count: 0 }, + ); + expect(responseData).toEqual([{ test: 'test' }]); + }); + + test('getResult operation', async () => { + const executeFunctions = mock(); + executeFunctions.getNodeParameter.calledWith('searchJobId', 0).mockReturnValue('12345'); + executeFunctions.getNodeParameter.calledWith('filters', 0).mockReturnValue({ + keyValueMatch: { keyValuePair: { key: 'key1', value: 'test1' } }, + }); + executeFunctions.getNodeParameter.calledWith('returnAll', 0).mockReturnValue(false); + executeFunctions.getNodeParameter.calledWith('limit', 0).mockReturnValue(10); + executeFunctions.getNodeParameter.calledWith('options', 0).mockReturnValue({}); + + (transport.splunkApiJsonRequest as jest.Mock).mockReturnValue([{ test: 'test' }]); + const responseData = await search.getResult.execute.call(executeFunctions, 0); + expect(transport.splunkApiJsonRequest).toHaveBeenCalledWith( + 'GET', + '/services/search/jobs/12345/results', + {}, + { count: 10, search: 'search key1=test1' }, + ); + expect(responseData).toEqual([{ test: 'test' }]); + }); +}); diff --git a/packages/nodes-base/nodes/Splunk/test/v2/node/user.test.ts b/packages/nodes-base/nodes/Splunk/test/v2/node/user.test.ts new file mode 100644 index 0000000000..c33a38dc56 --- /dev/null +++ b/packages/nodes-base/nodes/Splunk/test/v2/node/user.test.ts @@ -0,0 +1,125 @@ +import { mock } from 'jest-mock-extended'; +import type { IExecuteFunctions } from 'n8n-workflow'; +import * as user from '../../../v2/actions/user'; +import * as transport from '../../../v2/transport'; +import { SPLUNK } from '../../../v1/types'; + +jest.mock('../../../v2/transport', () => ({ + splunkApiJsonRequest: jest.fn(), + splunkApiRequest: jest.fn(), +})); +describe('Splunk, user resource', () => { + beforeEach(() => { + jest.clearAllMocks(); + }); + + test('create operation', async () => { + const executeFunctions = mock(); + executeFunctions.getNodeParameter.calledWith('roles', 0).mockReturnValue(['role1', 'role2']); + executeFunctions.getNodeParameter.calledWith('name', 0).mockReturnValue('John Doe'); + executeFunctions.getNodeParameter.calledWith('password', 0).mockReturnValue('password'); + executeFunctions.getNodeParameter.calledWith('additionalFields', 0).mockReturnValue({}); + + (transport.splunkApiRequest as jest.Mock).mockReturnValue({ + feed: { + entry: [ + { + id: '1', + content: { [SPLUNK.DICT]: { [SPLUNK.KEY]: [{ $: { name: 'test' }, _: 'test1' }] } }, + }, + ], + }, + }); + + const responseData = await user.create.execute.call(executeFunctions, 0); + expect(transport.splunkApiRequest).toHaveBeenCalledWith( + 'POST', + '/services/authentication/users', + { name: 'John Doe', password: 'password', roles: ['role1', 'role2'] }, + ); + + expect(responseData).toEqual([ + { + id: '1', + test: 'test1', + entryUrl: '1', + }, + ]); + }); + + test('deleteUser operation', async () => { + const executeFunctions = mock(); + executeFunctions.getNodeParameter.mockReturnValue('12345'); + (transport.splunkApiRequest as jest.Mock).mockReturnValue({}); + const responseData = await user.deleteUser.execute.call(executeFunctions, 0); + expect(transport.splunkApiRequest).toHaveBeenCalledWith( + 'DELETE', + '/services/authentication/users/12345', + ); + expect(responseData).toEqual({ success: true }); + }); + + test('get operation', async () => { + const executeFunctions = mock(); + executeFunctions.getNodeParameter.calledWith('userId', 0).mockReturnValue('12345'); + + (transport.splunkApiJsonRequest as jest.Mock).mockReturnValue([{ test: 'test' }]); + const responseData = await user.get.execute.call(executeFunctions, 0); + expect(transport.splunkApiJsonRequest).toHaveBeenCalledWith( + 'GET', + '/services/authentication/users/12345', + ); + expect(responseData).toEqual([{ test: 'test' }]); + }); + + test('getAll operation', async () => { + const executeFunctions = mock(); + executeFunctions.getNodeParameter.calledWith('returnAll', 0).mockReturnValue(true); + + (transport.splunkApiJsonRequest as jest.Mock).mockReturnValue([{ test: 'test' }]); + const responseData = await user.getAll.execute.call(executeFunctions, 0); + expect(transport.splunkApiJsonRequest).toHaveBeenCalledWith( + 'GET', + '/services/authentication/users', + {}, + { count: 0 }, + ); + expect(responseData).toEqual([{ test: 'test' }]); + }); + + test('update operation', async () => { + const executeFunctions = mock(); + executeFunctions.getNodeParameter + .calledWith('updateFields', 0) + .mockReturnValue({ roles: ['role1', 'role2'], email: 'testW@example.com' }); + executeFunctions.getNodeParameter.calledWith('userId', 0).mockReturnValue('12345'); + + (transport.splunkApiRequest as jest.Mock).mockReturnValue( + Promise.resolve({ + feed: { + entry: [ + { + id: '1', + content: { [SPLUNK.DICT]: { [SPLUNK.KEY]: [{ $: { name: 'test' }, _: 'test1' }] } }, + }, + ], + }, + }), + ); + + const responseData = await user.update.execute.call(executeFunctions, 0); + expect(transport.splunkApiRequest).toHaveBeenCalledWith( + 'POST', + '/services/authentication/users/12345', + { email: 'testW@example.com', roles: ['role1', 'role2'] }, + ); + + expect(responseData).toEqual([ + { + id: '1', + test: 'test1', + entryUrl: '1', + }, + ]); + }); +}); diff --git a/packages/nodes-base/nodes/Splunk/test/v2/utils.test.ts b/packages/nodes-base/nodes/Splunk/test/v2/utils.test.ts new file mode 100644 index 0000000000..425c52daab --- /dev/null +++ b/packages/nodes-base/nodes/Splunk/test/v2/utils.test.ts @@ -0,0 +1,267 @@ +import { mock } from 'jest-mock-extended'; +import type { IDataObject, IExecuteFunctions } from 'n8n-workflow'; +import { + formatEntry, + extractErrorDescription, + getId, + populate, + formatFeed, + setReturnAllOrLimit, + parseXml, +} from '../../v2/helpers/utils'; +import { SPLUNK } from '../../v1/types'; + +describe('Splunk, formatEntry', () => { + test('should format the entry correctly when doNotFormatContent is false', () => { + const entry = { + id: 'http://example.com/id/123', + content: { + [SPLUNK.DICT]: { + [SPLUNK.KEY]: [ + { $: { name: 'key1' }, _: 'value1' }, + { $: { name: 'key2' }, _: 'value2' }, + ], + }, + }, + link: 'http://example.com/link', + otherField: 'otherValue', + }; + + const expectedFormattedEntry = { + otherField: 'otherValue', + key1: 'value1', + key2: 'value2', + entryUrl: 'http://example.com/id/123', + id: '123', + }; + + const result = formatEntry(entry); + expect(result).toEqual(expectedFormattedEntry); + }); + + test('should format the entry correctly when doNotFormatContent is true', () => { + const entry = { + id: 'http://example.com/id/123', + key1: 'value1', + key2: 'value2', + }; + + const expectedFormattedEntry = { + key1: 'value1', + key2: 'value2', + entryUrl: 'http://example.com/id/123', + id: '123', + }; + + const result = formatEntry(entry, true); + expect(result).toEqual(expectedFormattedEntry); + }); + + test('should handle entries without id correctly', () => { + const entry = { + content: { + [SPLUNK.DICT]: { + [SPLUNK.KEY]: [ + { $: { name: 'key1' }, _: 'value1' }, + { $: { name: 'key2' }, _: 'value2' }, + ], + }, + }, + otherField: 'otherValue', + }; + + const expectedFormattedEntry = { + otherField: 'otherValue', + key1: 'value1', + key2: 'value2', + }; + + const result = formatEntry(entry); + expect(result).toEqual(expectedFormattedEntry); + }); +}); + +describe('Splunk, extractErrorDescription', () => { + test('should extract the error description correctly when messages are present', () => { + const rawError = { + response: { + messages: { + msg: { + $: { type: 'ERROR' }, + _: 'This is an error message', + }, + }, + }, + }; + + const expectedErrorDescription = { + error: 'This is an error message', + }; + + const result = extractErrorDescription(rawError); + expect(result).toEqual(expectedErrorDescription); + }); + + test('should return the raw error when messages are not present', () => { + const rawError = { response: {} }; + + const result = extractErrorDescription(rawError); + expect(result).toEqual(rawError); + }); + + test('should return the raw error when response is not present', () => { + const rawError = {}; + + const result = extractErrorDescription(rawError); + expect(result).toEqual(rawError); + }); +}); + +describe('Splunk, getId', () => { + test('should return id extracted from the id parameter if it is url', () => { + const executeFunctionsMock = mock(); + const endpoint = 'http://example.com/endpoint/admin'; + + executeFunctionsMock.getNodeParameter.mockReturnValueOnce(endpoint); + const id = getId.call(executeFunctionsMock, 0, 'userId', 'http://example.com/endpoint/'); + + expect(id).toBe('admin'); + }); + + test('should return the unchanged id', () => { + const executeFunctionsMock = mock(); + + executeFunctionsMock.getNodeParameter.mockReturnValueOnce('123'); + const id = getId.call(executeFunctionsMock, 0, 'searchConfigurationId', 'endpoint'); + + expect(id).toBe('123'); + }); +}); + +describe('Splunk, populate', () => { + test('should populate destination object with source object properties', () => { + const source = { + key1: 'value1', + key2: 'value2', + }; + + const destination = { + existingKey: 'existingValue', + }; + + populate(source, destination); + + expect(destination).toEqual({ + existingKey: 'existingValue', + key1: 'value1', + key2: 'value2', + }); + }); + + test('should not modify destination object if source object is empty', () => { + const source = {}; + + const destination = { + existingKey: 'existingValue', + }; + + populate(source, destination); + + expect(destination).toEqual({ + existingKey: 'existingValue', + }); + }); +}); + +describe('Splunk, formatFeed', () => { + test('should return an empty array when feed entries are not present', () => { + const responseData = { + feed: { + entry: [], + }, + }; + + const result = formatFeed(responseData); + expect(result).toEqual([]); + }); + + test('should format feed entries correctly when entries are an array', () => { + const responseData = { + feed: { + entry: [ + { + id: '1', + content: { [SPLUNK.DICT]: { [SPLUNK.KEY]: [{ $: { name: 'key1' }, _: 'value1' }] } }, + }, + { + id: '2', + content: { [SPLUNK.DICT]: { [SPLUNK.KEY]: [{ $: { name: 'key2' }, _: 'value2' }] } }, + }, + ], + }, + }; + + const expectedFormattedEntries = [ + { id: '1', key1: 'value1', entryUrl: '1' }, + { id: '2', key2: 'value2', entryUrl: '2' }, + ]; + + const result = formatFeed(responseData); + expect(result).toEqual(expectedFormattedEntries); + }); + + test('should format feed entry correctly when entry is a single object', () => { + const responseData = { + feed: { + entry: { + id: '1', + content: { [SPLUNK.DICT]: { [SPLUNK.KEY]: [{ $: { name: 'key1' }, _: 'value1' }] } }, + }, + }, + }; + + const expectedFormattedEntries = [{ id: '1', key1: 'value1', entryUrl: '1' }]; + + const result = formatFeed(responseData); + expect(result).toEqual(expectedFormattedEntries); + }); +}); + +describe('Splunk, setCount', () => { + test('should set count to 0 if returnAll', () => { + const executeFunctionsMock = mock(); + const qs: IDataObject = {}; + executeFunctionsMock.getNodeParameter.calledWith('returnAll', 0).mockReturnValue(true); + + setReturnAllOrLimit.call(executeFunctionsMock, qs); + + expect(qs.count).toBe(0); + }); + + test('should set count to limit if returnAll is false', () => { + const executeFunctionsMock = mock(); + const qs: IDataObject = {}; + executeFunctionsMock.getNodeParameter.calledWith('returnAll', 0).mockReturnValue(false); + executeFunctionsMock.getNodeParameter.calledWith('limit', 0).mockReturnValue(10); + + setReturnAllOrLimit.call(executeFunctionsMock, qs); + + expect(qs.count).toBe(10); + }); +}); + +describe('Splunk, parseXml', () => { + test('should parse valid XML string correctly', async () => { + const xmlString = 'John30'; + + const result = await parseXml(xmlString); + + expect(result).toEqual({ root: { name: 'John', age: '30' } }); + }); + + test('should throw an error if XML string is invalid', async () => { + const xmlString = ''; + + await expect(parseXml(xmlString)).rejects.toThrow(); + }); +}); diff --git a/packages/nodes-base/nodes/Splunk/GenericFunctions.ts b/packages/nodes-base/nodes/Splunk/v1/GenericFunctions.ts similarity index 90% rename from packages/nodes-base/nodes/Splunk/GenericFunctions.ts rename to packages/nodes-base/nodes/Splunk/v1/GenericFunctions.ts index 5d463efaf5..c6594e1403 100644 --- a/packages/nodes-base/nodes/Splunk/GenericFunctions.ts +++ b/packages/nodes-base/nodes/Splunk/v1/GenericFunctions.ts @@ -10,17 +10,18 @@ import { NodeApiError, NodeOperationError, sleep } from 'n8n-workflow'; import { parseString } from 'xml2js'; -import type { - SplunkCredentials, - SplunkError, - SplunkFeedResponse, - SplunkResultResponse, - SplunkSearchResponse, +import { + SPLUNK, + type SplunkError, + type SplunkFeedResponse, + type SplunkResultResponse, + type SplunkSearchResponse, } from './types'; // ---------------------------------------- // entry formatting // ---------------------------------------- + function compactEntryContent(splunkObject: any): any { if (typeof splunkObject !== 'object') { return {}; @@ -33,13 +34,13 @@ function compactEntryContent(splunkObject: any): any { }, {}); } - if (splunkObject['s:dict']) { - const obj = splunkObject['s:dict']['s:key']; + if (splunkObject[SPLUNK.DICT]) { + const obj = splunkObject[SPLUNK.DICT][SPLUNK.KEY]; return { [splunkObject.$.name]: compactEntryContent(obj) }; } - if (splunkObject['s:list']) { - const items = splunkObject['s:list']['s:item']; + if (splunkObject[SPLUNK.LIST]) { + const items = splunkObject[SPLUNK.LIST][SPLUNK.ITEM]; return { [splunkObject.$.name]: items }; } @@ -55,7 +56,7 @@ function compactEntryContent(splunkObject: any): any { } function formatEntryContent(content: any): any { - return content['s:dict']['s:key'].reduce((acc: any, cur: any) => { + return content[SPLUNK.DICT][SPLUNK.KEY].reduce((acc: any, cur: any) => { acc = { ...acc, ...compactEntryContent(cur) }; return acc; }, {}); @@ -113,13 +114,10 @@ export async function splunkApiRequest( body: IDataObject = {}, qs: IDataObject = {}, ): Promise { - const { authToken, baseUrl, allowUnauthorizedCerts } = (await this.getCredentials( - 'splunkApi', - )) as SplunkCredentials; + const { baseUrl, allowUnauthorizedCerts } = await this.getCredentials('splunkApi'); const options: IRequestOptions = { headers: { - Authorization: `Bearer ${authToken}`, 'Content-Type': 'application/x-www-form-urlencoded', }, method, @@ -145,7 +143,11 @@ export async function splunkApiRequest( do { try { - const response = await this.helpers.request(options); + const response = await this.helpers.requestWithAuthentication.call( + this, + 'splunkApi', + options, + ); result = await parseXml(response); return result; } catch (error) { @@ -257,5 +259,5 @@ export function getId( ) { const id = this.getNodeParameter(idType, i) as string; - return id.includes(endpoint) ? id.split(endpoint).pop()! : id; + return id.includes(endpoint) ? id.split(endpoint).pop() : id; } diff --git a/packages/nodes-base/nodes/Splunk/v1/SplunkV1.node.ts b/packages/nodes-base/nodes/Splunk/v1/SplunkV1.node.ts new file mode 100644 index 0000000000..b6d793fc63 --- /dev/null +++ b/packages/nodes-base/nodes/Splunk/v1/SplunkV1.node.ts @@ -0,0 +1,456 @@ +import type { + IExecuteFunctions, + IDataObject, + ILoadOptionsFunctions, + INodeExecutionData, + INodeType, + INodeTypeDescription, + INodeTypeBaseDescription, +} from 'n8n-workflow'; +import { NodeApiError, NodeConnectionType, NodeOperationError } from 'n8n-workflow'; + +import set from 'lodash/set'; +import { oldVersionNotice } from '../../../utils/descriptions'; +import { + formatFeed, + formatResults, + formatSearch, + getId, + populate, + setCount, + splunkApiRequest, + toUnixEpoch, +} from './GenericFunctions'; + +import { + firedAlertOperations, + searchConfigurationFields, + searchConfigurationOperations, + searchJobFields, + searchJobOperations, + searchResultFields, + searchResultOperations, + userFields, + userOperations, +} from './descriptions'; + +import type { SplunkFeedResponse } from './types'; + +const versionDescription: INodeTypeDescription = { + displayName: 'Splunk', + name: 'splunk', + icon: 'file:splunk.svg', + group: ['transform'], + version: 1, + subtitle: '={{$parameter["operation"] + ": " + $parameter["resource"]}}', + description: 'Consume the Splunk Enterprise API', + defaults: { + name: 'Splunk', + }, + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], + credentials: [ + { + name: 'splunkApi', + required: true, + }, + ], + properties: [ + oldVersionNotice, + { + displayName: 'Resource', + name: 'resource', + type: 'options', + noDataExpression: true, + options: [ + { + name: 'Fired Alert', + value: 'firedAlert', + }, + { + name: 'Search Configuration', + value: 'searchConfiguration', + }, + { + name: 'Search Job', + value: 'searchJob', + }, + { + name: 'Search Result', + value: 'searchResult', + }, + { + name: 'User', + value: 'user', + }, + ], + default: 'searchJob', + }, + ...firedAlertOperations, + ...searchConfigurationOperations, + ...searchConfigurationFields, + ...searchJobOperations, + ...searchJobFields, + ...searchResultOperations, + ...searchResultFields, + ...userOperations, + ...userFields, + ], +}; + +export class SplunkV1 implements INodeType { + description: INodeTypeDescription; + + constructor(baseDescription: INodeTypeBaseDescription) { + this.description = { + ...baseDescription, + ...versionDescription, + }; + } + + methods = { + loadOptions: { + async getRoles(this: ILoadOptionsFunctions) { + const endpoint = '/services/authorization/roles'; + const responseData = (await splunkApiRequest.call( + this, + 'GET', + endpoint, + )) as SplunkFeedResponse; + const { entry: entries } = responseData.feed; + + return Array.isArray(entries) + ? entries.map((entry) => ({ name: entry.title, value: entry.title })) + : [{ name: entries.title, value: entries.title }]; + }, + }, + }; + + async execute(this: IExecuteFunctions): Promise { + const items = this.getInputData(); + const returnData: INodeExecutionData[] = []; + + const resource = this.getNodeParameter('resource', 0); + const operation = this.getNodeParameter('operation', 0); + + let responseData; + + for (let i = 0; i < items.length; i++) { + try { + if (resource === 'firedAlert') { + // ********************************************************************** + // firedAlert + // ********************************************************************** + + if (operation === 'getReport') { + // ---------------------------------------- + // firedAlert: getReport + // ---------------------------------------- + + // https://docs.splunk.com/Documentation/Splunk/latest/RESTREF/RESTsearch#alerts.2Ffired_alerts + + const endpoint = '/services/alerts/fired_alerts'; + responseData = await splunkApiRequest.call(this, 'GET', endpoint).then(formatFeed); + } + } else if (resource === 'searchConfiguration') { + // ********************************************************************** + // searchConfiguration + // ********************************************************************** + + if (operation === 'delete') { + // ---------------------------------------- + // searchConfiguration: delete + // ---------------------------------------- + + // https://docs.splunk.com/Documentation/Splunk/8.2.2/RESTREF/RESTsearch#saved.2Fsearches.2F.7Bname.7D + + const partialEndpoint = '/services/saved/searches/'; + const searchConfigurationId = getId.call( + this, + i, + 'searchConfigurationId', + '/search/saved/searches/', + ); // id endpoint differs from operation endpoint + const endpoint = `${partialEndpoint}/${searchConfigurationId}`; + + responseData = await splunkApiRequest.call(this, 'DELETE', endpoint); + } else if (operation === 'get') { + // ---------------------------------------- + // searchConfiguration: get + // ---------------------------------------- + + // https://docs.splunk.com/Documentation/Splunk/8.2.2/RESTREF/RESTsearch#saved.2Fsearches.2F.7Bname.7D + + const partialEndpoint = '/services/saved/searches/'; + const searchConfigurationId = getId.call( + this, + i, + 'searchConfigurationId', + '/search/saved/searches/', + ); // id endpoint differs from operation endpoint + const endpoint = `${partialEndpoint}/${searchConfigurationId}`; + + responseData = await splunkApiRequest.call(this, 'GET', endpoint).then(formatFeed); + } else if (operation === 'getAll') { + // ---------------------------------------- + // searchConfiguration: getAll + // ---------------------------------------- + + // https://docs.splunk.com/Documentation/Splunk/8.2.2/RESTREF/RESTsearch#saved.2Fsearches + + const qs = {} as IDataObject; + const options = this.getNodeParameter('options', i); + + populate(options, qs); + setCount.call(this, qs); + + const endpoint = '/services/saved/searches'; + responseData = await splunkApiRequest + .call(this, 'GET', endpoint, {}, qs) + .then(formatFeed); + } + } else if (resource === 'searchJob') { + // ********************************************************************** + // searchJob + // ********************************************************************** + + if (operation === 'create') { + // ---------------------------------------- + // searchJob: create + // ---------------------------------------- + + // https://docs.splunk.com/Documentation/Splunk/8.2.2/RESTREF/RESTsearch#search.2Fjobs + + const body = { + search: this.getNodeParameter('search', i), + } as IDataObject; + + const { earliest_time, latest_time, index_earliest, index_latest, ...rest } = + this.getNodeParameter('additionalFields', i) as IDataObject & { + earliest_time?: string; + latest_time?: string; + index_earliest?: string; + index_latest?: string; + }; + + populate( + { + ...(earliest_time && { earliest_time: toUnixEpoch(earliest_time) }), + ...(latest_time && { latest_time: toUnixEpoch(latest_time) }), + ...(index_earliest && { index_earliest: toUnixEpoch(index_earliest) }), + ...(index_latest && { index_latest: toUnixEpoch(index_latest) }), + ...rest, + }, + body, + ); + + const endpoint = '/services/search/jobs'; + responseData = await splunkApiRequest.call(this, 'POST', endpoint, body); + + const getEndpoint = `/services/search/jobs/${responseData.response.sid}`; + responseData = await splunkApiRequest.call(this, 'GET', getEndpoint).then(formatSearch); + } else if (operation === 'delete') { + // ---------------------------------------- + // searchJob: delete + // ---------------------------------------- + + // https://docs.splunk.com/Documentation/Splunk/8.2.2/RESTREF/RESTsearch#search.2Fjobs.2F.7Bsearch_id.7D + + const partialEndpoint = '/services/search/jobs/'; + const searchJobId = getId.call(this, i, 'searchJobId', partialEndpoint); + const endpoint = `${partialEndpoint}/${searchJobId}`; + responseData = await splunkApiRequest.call(this, 'DELETE', endpoint); + } else if (operation === 'get') { + // ---------------------------------------- + // searchJob: get + // ---------------------------------------- + + // https://docs.splunk.com/Documentation/Splunk/8.2.2/RESTREF/RESTsearch#search.2Fjobs.2F.7Bsearch_id.7D + + const partialEndpoint = '/services/search/jobs/'; + const searchJobId = getId.call(this, i, 'searchJobId', partialEndpoint); + const endpoint = `${partialEndpoint}/${searchJobId}`; + responseData = await splunkApiRequest.call(this, 'GET', endpoint).then(formatSearch); + } else if (operation === 'getAll') { + // ---------------------------------------- + // searchJob: getAll + // ---------------------------------------- + + // https://docs.splunk.com/Documentation/Splunk/8.2.2/RESTREF/RESTsearch#search.2Fjobs + + const qs = {} as IDataObject; + const options = this.getNodeParameter('options', i); + + populate(options, qs); + setCount.call(this, qs); + + const endpoint = '/services/search/jobs'; + responseData = (await splunkApiRequest.call( + this, + 'GET', + endpoint, + {}, + qs, + )) as SplunkFeedResponse; + responseData = formatFeed(responseData); + } + } else if (resource === 'searchResult') { + // ********************************************************************** + // searchResult + // ********************************************************************** + + if (operation === 'getAll') { + // ---------------------------------------- + // searchResult: getAll + // ---------------------------------------- + + // https://docs.splunk.com/Documentation/Splunk/latest/RESTREF/RESTsearch#search.2Fjobs.2F.7Bsearch_id.7D.2Fresults + + const searchJobId = this.getNodeParameter('searchJobId', i); + + const qs = {} as IDataObject; + const filters = this.getNodeParameter('filters', i) as IDataObject & { + keyValueMatch?: { keyValuePair?: { key: string; value: string } }; + }; + const options = this.getNodeParameter('options', i); + + const keyValuePair = filters?.keyValueMatch?.keyValuePair; + + if (keyValuePair?.key && keyValuePair?.value) { + qs.search = `search ${keyValuePair.key}=${keyValuePair.value}`; + } + + populate(options, qs); + setCount.call(this, qs); + + const endpoint = `/services/search/jobs/${searchJobId}/results`; + responseData = await splunkApiRequest + .call(this, 'GET', endpoint, {}, qs) + .then(formatResults); + } + } else if (resource === 'user') { + // ********************************************************************** + // user + // ********************************************************************** + + if (operation === 'create') { + // ---------------------------------------- + // user: create + // ---------------------------------------- + + // https://docs.splunk.com/Documentation/Splunk/8.2.2/RESTREF/RESTaccess#authentication.2Fusers + + const roles = this.getNodeParameter('roles', i) as string[]; + + const body = { + name: this.getNodeParameter('name', i), + roles, + password: this.getNodeParameter('password', i), + } as IDataObject; + + const additionalFields = this.getNodeParameter('additionalFields', i); + + populate(additionalFields, body); + + const endpoint = '/services/authentication/users'; + responseData = (await splunkApiRequest.call( + this, + 'POST', + endpoint, + body, + )) as SplunkFeedResponse; + responseData = formatFeed(responseData); + } else if (operation === 'delete') { + // ---------------------------------------- + // user: delete + // ---------------------------------------- + + // https://docs.splunk.com/Documentation/Splunk/8.2.2/RESTREF/RESTaccess#authentication.2Fusers.2F.7Bname.7D + + const partialEndpoint = '/services/authentication/users'; + const userId = getId.call(this, i, 'userId', partialEndpoint); + const endpoint = `${partialEndpoint}/${userId}`; + await splunkApiRequest.call(this, 'DELETE', endpoint); + responseData = { success: true }; + } else if (operation === 'get') { + // ---------------------------------------- + // user: get + // ---------------------------------------- + + // https://docs.splunk.com/Documentation/Splunk/8.2.2/RESTREF/RESTaccess#authentication.2Fusers.2F.7Bname.7D + + const partialEndpoint = '/services/authentication/users/'; + const userId = getId.call(this, i, 'userId', '/services/authentication/users/'); + const endpoint = `${partialEndpoint}/${userId}`; + responseData = await splunkApiRequest.call(this, 'GET', endpoint).then(formatFeed); + } else if (operation === 'getAll') { + // ---------------------------------------- + // user: getAll + // ---------------------------------------- + + // https://docs.splunk.com/Documentation/Splunk/8.2.2/RESTREF/RESTaccess#authentication.2Fusers + + const qs = {} as IDataObject; + setCount.call(this, qs); + + const endpoint = '/services/authentication/users'; + responseData = await splunkApiRequest + .call(this, 'GET', endpoint, {}, qs) + .then(formatFeed); + } else if (operation === 'update') { + // ---------------------------------------- + // user: update + // ---------------------------------------- + + // https://docs.splunk.com/Documentation/Splunk/8.2.2/RESTREF/RESTaccess#authentication.2Fusers.2F.7Bname.7D + + const body = {} as IDataObject; + const { roles, ...rest } = this.getNodeParameter('updateFields', i) as IDataObject & { + roles: string[]; + }; + + populate( + { + ...(roles && { roles }), + ...rest, + }, + body, + ); + + const partialEndpoint = '/services/authentication/users/'; + const userId = getId.call(this, i, 'userId', partialEndpoint); + const endpoint = `${partialEndpoint}/${userId}`; + responseData = await splunkApiRequest + .call(this, 'POST', endpoint, body) + .then(formatFeed); + } + } + } catch (error) { + if (this.continueOnFail()) { + returnData.push({ json: { error: error.cause.error }, pairedItem: { item: i } }); + continue; + } + + if (error instanceof NodeApiError) { + set(error, 'context.itemIndex', i); + } + + if (error instanceof NodeOperationError && error?.context?.itemIndex === undefined) { + set(error, 'context.itemIndex', i); + } + + throw new NodeOperationError(this.getNode(), error, { itemIndex: i }); + } + + if (Array.isArray(responseData)) { + for (const item of responseData) { + returnData.push({ json: item, pairedItem: { item: i } }); + } + } else { + returnData.push({ json: responseData, pairedItem: { item: i } }); + } + } + + return [returnData]; + } +} diff --git a/packages/nodes-base/nodes/Splunk/descriptions/FiredAlertDescription.ts b/packages/nodes-base/nodes/Splunk/v1/descriptions/FiredAlertDescription.ts similarity index 100% rename from packages/nodes-base/nodes/Splunk/descriptions/FiredAlertDescription.ts rename to packages/nodes-base/nodes/Splunk/v1/descriptions/FiredAlertDescription.ts diff --git a/packages/nodes-base/nodes/Splunk/descriptions/SearchConfigurationDescription.ts b/packages/nodes-base/nodes/Splunk/v1/descriptions/SearchConfigurationDescription.ts similarity index 99% rename from packages/nodes-base/nodes/Splunk/descriptions/SearchConfigurationDescription.ts rename to packages/nodes-base/nodes/Splunk/v1/descriptions/SearchConfigurationDescription.ts index 0d280b7f86..8908f0dedb 100644 --- a/packages/nodes-base/nodes/Splunk/descriptions/SearchConfigurationDescription.ts +++ b/packages/nodes-base/nodes/Splunk/v1/descriptions/SearchConfigurationDescription.ts @@ -109,7 +109,7 @@ export const searchConfigurationFields: INodeProperties[] = [ displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, displayOptions: { show: { diff --git a/packages/nodes-base/nodes/Splunk/descriptions/SearchJobDescription.ts b/packages/nodes-base/nodes/Splunk/v1/descriptions/SearchJobDescription.ts similarity index 99% rename from packages/nodes-base/nodes/Splunk/descriptions/SearchJobDescription.ts rename to packages/nodes-base/nodes/Splunk/v1/descriptions/SearchJobDescription.ts index a3a54930c0..345e3654c1 100644 --- a/packages/nodes-base/nodes/Splunk/descriptions/SearchJobDescription.ts +++ b/packages/nodes-base/nodes/Splunk/v1/descriptions/SearchJobDescription.ts @@ -329,7 +329,7 @@ export const searchJobFields: INodeProperties[] = [ displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, displayOptions: { show: { diff --git a/packages/nodes-base/nodes/Splunk/descriptions/SearchResultDescription.ts b/packages/nodes-base/nodes/Splunk/v1/descriptions/SearchResultDescription.ts similarity index 99% rename from packages/nodes-base/nodes/Splunk/descriptions/SearchResultDescription.ts rename to packages/nodes-base/nodes/Splunk/v1/descriptions/SearchResultDescription.ts index 33bae71d53..4152feccfb 100644 --- a/packages/nodes-base/nodes/Splunk/descriptions/SearchResultDescription.ts +++ b/packages/nodes-base/nodes/Splunk/v1/descriptions/SearchResultDescription.ts @@ -121,7 +121,7 @@ export const searchResultFields: INodeProperties[] = [ displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, displayOptions: { show: { diff --git a/packages/nodes-base/nodes/Splunk/descriptions/UserDescription.ts b/packages/nodes-base/nodes/Splunk/v1/descriptions/UserDescription.ts similarity index 98% rename from packages/nodes-base/nodes/Splunk/descriptions/UserDescription.ts rename to packages/nodes-base/nodes/Splunk/v1/descriptions/UserDescription.ts index 149e33da04..f3f61140b8 100644 --- a/packages/nodes-base/nodes/Splunk/descriptions/UserDescription.ts +++ b/packages/nodes-base/nodes/Splunk/v1/descriptions/UserDescription.ts @@ -70,7 +70,7 @@ export const userFields: INodeProperties[] = [ name: 'roles', type: 'multiOptions', description: - 'Comma-separated list of roles to assign to the user. Choose from the list, or specify IDs using an expression.', + 'Comma-separated list of roles to assign to the user. Choose from the list, or specify IDs using an expression.', required: true, default: [], typeOptions: { @@ -253,7 +253,7 @@ export const userFields: INodeProperties[] = [ name: 'roles', type: 'multiOptions', description: - 'Comma-separated list of roles to assign to the user. Choose from the list, or specify IDs using an expression.', + 'Comma-separated list of roles to assign to the user. Choose from the list, or specify IDs using an expression.', default: [], typeOptions: { loadOptionsMethod: 'getRoles', diff --git a/packages/nodes-base/nodes/Splunk/descriptions/index.ts b/packages/nodes-base/nodes/Splunk/v1/descriptions/index.ts similarity index 100% rename from packages/nodes-base/nodes/Splunk/descriptions/index.ts rename to packages/nodes-base/nodes/Splunk/v1/descriptions/index.ts diff --git a/packages/nodes-base/nodes/Splunk/types.ts b/packages/nodes-base/nodes/Splunk/v1/types.ts similarity index 84% rename from packages/nodes-base/nodes/Splunk/types.ts rename to packages/nodes-base/nodes/Splunk/v1/types.ts index 61e87490ca..091812a265 100644 --- a/packages/nodes-base/nodes/Splunk/types.ts +++ b/packages/nodes-base/nodes/Splunk/v1/types.ts @@ -28,3 +28,10 @@ export type SplunkError = { }; }; }; + +export const SPLUNK = { + DICT: 's:dict', + LIST: 's:list', + ITEM: 's:item', + KEY: 's:key', +}; diff --git a/packages/nodes-base/nodes/Splunk/v2/SplunkV2.node.ts b/packages/nodes-base/nodes/Splunk/v2/SplunkV2.node.ts new file mode 100644 index 0000000000..de80d113ea --- /dev/null +++ b/packages/nodes-base/nodes/Splunk/v2/SplunkV2.node.ts @@ -0,0 +1,27 @@ +import type { + IExecuteFunctions, + INodeType, + INodeTypeDescription, + INodeTypeBaseDescription, +} from 'n8n-workflow'; + +import { router } from './actions/router'; +import { versionDescription } from './actions/versionDescription'; +import { loadOptions, listSearch } from './methods'; + +export class SplunkV2 implements INodeType { + description: INodeTypeDescription; + + constructor(baseDescription: INodeTypeBaseDescription) { + this.description = { + ...baseDescription, + ...versionDescription, + }; + } + + methods = { loadOptions, listSearch }; + + async execute(this: IExecuteFunctions) { + return await router.call(this); + } +} diff --git a/packages/nodes-base/nodes/Splunk/v2/actions/alert/getMetrics.operation.ts b/packages/nodes-base/nodes/Splunk/v2/actions/alert/getMetrics.operation.ts new file mode 100644 index 0000000000..aef07773c3 --- /dev/null +++ b/packages/nodes-base/nodes/Splunk/v2/actions/alert/getMetrics.operation.ts @@ -0,0 +1,24 @@ +import type { INodeProperties, IExecuteFunctions, IDataObject } from 'n8n-workflow'; +import { updateDisplayOptions } from '../../../../../utils/utilities'; +import { splunkApiJsonRequest } from '../../transport'; + +const properties: INodeProperties[] = []; + +const displayOptions = { + show: { + resource: ['alert'], + operation: ['getMetrics'], + }, +}; + +export const description = updateDisplayOptions(displayOptions, properties); + +export async function execute( + this: IExecuteFunctions, + _i: number, +): Promise { + const endpoint = '/services/alerts/metric_alerts'; + const returnData = await splunkApiJsonRequest.call(this, 'GET', endpoint); + + return returnData; +} diff --git a/packages/nodes-base/nodes/Splunk/v2/actions/alert/getReport.operation.ts b/packages/nodes-base/nodes/Splunk/v2/actions/alert/getReport.operation.ts new file mode 100644 index 0000000000..b76a3506d5 --- /dev/null +++ b/packages/nodes-base/nodes/Splunk/v2/actions/alert/getReport.operation.ts @@ -0,0 +1,26 @@ +import type { INodeProperties, IExecuteFunctions, IDataObject } from 'n8n-workflow'; +import { updateDisplayOptions } from '../../../../../utils/utilities'; +import { splunkApiJsonRequest } from '../../transport'; + +const properties: INodeProperties[] = []; + +const displayOptions = { + show: { + resource: ['alert'], + operation: ['getReport'], + }, +}; + +export const description = updateDisplayOptions(displayOptions, properties); + +export async function execute( + this: IExecuteFunctions, + _i: number, +): Promise { + // https://docs.splunk.com/Documentation/Splunk/latest/RESTREF/RESTsearch#alerts.2Ffired_alerts + + const endpoint = '/services/alerts/fired_alerts'; + const returnData = await splunkApiJsonRequest.call(this, 'GET', endpoint); + + return returnData; +} diff --git a/packages/nodes-base/nodes/Splunk/v2/actions/alert/index.ts b/packages/nodes-base/nodes/Splunk/v2/actions/alert/index.ts new file mode 100644 index 0000000000..8d3a1f3342 --- /dev/null +++ b/packages/nodes-base/nodes/Splunk/v2/actions/alert/index.ts @@ -0,0 +1,38 @@ +import type { INodeProperties } from 'n8n-workflow'; + +import * as getReport from './getReport.operation'; +import * as getMetrics from './getMetrics.operation'; + +export { getReport, getMetrics }; + +export const description: INodeProperties[] = [ + { + displayName: 'Operation', + name: 'operation', + type: 'options', + noDataExpression: true, + displayOptions: { + show: { + resource: ['alert'], + }, + }, + options: [ + { + name: 'Get Fired Alerts', + value: 'getReport', + description: 'Retrieve a fired alerts report', + action: 'Get a fired alerts report', + }, + { + name: 'Get Metrics', + value: 'getMetrics', + description: 'Retrieve metrics', + action: 'Get metrics', + }, + ], + default: 'getReport', + }, + + ...getReport.description, + ...getMetrics.description, +]; diff --git a/packages/nodes-base/nodes/Splunk/v2/actions/node.type.ts b/packages/nodes-base/nodes/Splunk/v2/actions/node.type.ts new file mode 100644 index 0000000000..109c72cdff --- /dev/null +++ b/packages/nodes-base/nodes/Splunk/v2/actions/node.type.ts @@ -0,0 +1,10 @@ +import type { AllEntities } from 'n8n-workflow'; + +type NodeMap = { + alert: 'getReport' | 'getMetrics'; + report: 'create' | 'deleteReport' | 'get' | 'getAll'; + search: 'create' | 'deleteJob' | 'get' | 'getAll' | 'getResult'; + user: 'create' | 'deleteUser' | 'get' | 'getAll' | 'update'; +}; + +export type SplunkType = AllEntities; diff --git a/packages/nodes-base/nodes/Splunk/v2/actions/report/create.operation.ts b/packages/nodes-base/nodes/Splunk/v2/actions/report/create.operation.ts new file mode 100644 index 0000000000..1f3b59e273 --- /dev/null +++ b/packages/nodes-base/nodes/Splunk/v2/actions/report/create.operation.ts @@ -0,0 +1,52 @@ +import type { INodeProperties, IExecuteFunctions, IDataObject } from 'n8n-workflow'; +import { updateDisplayOptions } from '../../../../../utils/utilities'; +import { splunkApiJsonRequest, splunkApiRequest } from '../../transport'; +import { searchJobRLC } from '../../helpers/descriptions'; +import { formatFeed } from '../../helpers/utils'; + +const properties: INodeProperties[] = [ + searchJobRLC, + { + displayName: 'Name', + name: 'name', + type: 'string', + default: '', + description: 'The name of the report', + }, +]; + +const displayOptions = { + show: { + resource: ['report'], + operation: ['create'], + }, +}; + +export const description = updateDisplayOptions(displayOptions, properties); + +export async function execute( + this: IExecuteFunctions, + i: number, +): Promise { + const name = this.getNodeParameter('name', i) as string; + const searchJobId = this.getNodeParameter('searchJobId', i, '', { extractValue: true }) as string; + const endpoint = `/services/search/jobs/${searchJobId}`; + + const searchJob = ((await splunkApiJsonRequest.call(this, 'GET', endpoint)) ?? [])[0]; + + const body: IDataObject = { + name, + search: searchJob.search, + alert_type: 'always', + 'dispatch.earliest_time': searchJob.earliestTime, + 'dispatch.latest_time': searchJob.latestTime, + is_scheduled: searchJob.isScheduled, + cron_schedule: searchJob.cronSchedule, + }; + + const returnData = await splunkApiRequest + .call(this, 'POST', '/services/saved/searches', body) + .then(formatFeed); + + return returnData; +} diff --git a/packages/nodes-base/nodes/Splunk/v2/actions/report/deleteReport.operation.ts b/packages/nodes-base/nodes/Splunk/v2/actions/report/deleteReport.operation.ts new file mode 100644 index 0000000000..41aad443d1 --- /dev/null +++ b/packages/nodes-base/nodes/Splunk/v2/actions/report/deleteReport.operation.ts @@ -0,0 +1,29 @@ +import type { INodeProperties, IExecuteFunctions, IDataObject } from 'n8n-workflow'; +import { updateDisplayOptions } from '../../../../../utils/utilities'; +import { splunkApiRequest } from '../../transport'; +import { reportRLC } from '../../helpers/descriptions'; + +const properties: INodeProperties[] = [reportRLC]; + +const displayOptions = { + show: { + resource: ['report'], + operation: ['deleteReport'], + }, +}; + +export const description = updateDisplayOptions(displayOptions, properties); + +export async function execute( + this: IExecuteFunctions, + i: number, +): Promise { + // https://docs.splunk.com/Documentation/Splunk/8.2.2/RESTREF/RESTsearch#saved.2Fsearches.2F.7Bname.7D + + const reportId = this.getNodeParameter('reportId', i, '', { extractValue: true }) as string; + const endpoint = `/services/saved/searches/${reportId}`; + + await splunkApiRequest.call(this, 'DELETE', endpoint); + + return { success: true }; +} diff --git a/packages/nodes-base/nodes/Splunk/v2/actions/report/get.operation.ts b/packages/nodes-base/nodes/Splunk/v2/actions/report/get.operation.ts new file mode 100644 index 0000000000..32972c08f3 --- /dev/null +++ b/packages/nodes-base/nodes/Splunk/v2/actions/report/get.operation.ts @@ -0,0 +1,29 @@ +import type { INodeProperties, IExecuteFunctions, IDataObject } from 'n8n-workflow'; +import { updateDisplayOptions } from '../../../../../utils/utilities'; +import { splunkApiJsonRequest } from '../../transport'; +import { reportRLC } from '../../helpers/descriptions'; + +const properties: INodeProperties[] = [reportRLC]; + +const displayOptions = { + show: { + resource: ['report'], + operation: ['get'], + }, +}; + +export const description = updateDisplayOptions(displayOptions, properties); + +export async function execute( + this: IExecuteFunctions, + i: number, +): Promise { + // https://docs.splunk.com/Documentation/Splunk/8.2.2/RESTREF/RESTsearch#saved.2Fsearches.2F.7Bname.7D + + const reportId = this.getNodeParameter('reportId', i, '', { extractValue: true }) as string; + const endpoint = `/services/saved/searches/${reportId}`; + + const returnData = await splunkApiJsonRequest.call(this, 'GET', endpoint); + + return returnData; +} diff --git a/packages/nodes-base/nodes/Splunk/v2/actions/report/getAll.operation.ts b/packages/nodes-base/nodes/Splunk/v2/actions/report/getAll.operation.ts new file mode 100644 index 0000000000..c667d9ad93 --- /dev/null +++ b/packages/nodes-base/nodes/Splunk/v2/actions/report/getAll.operation.ts @@ -0,0 +1,79 @@ +import type { INodeProperties, IExecuteFunctions, IDataObject } from 'n8n-workflow'; +import { updateDisplayOptions } from '../../../../../utils/utilities'; +import { populate, setReturnAllOrLimit } from '../../helpers/utils'; +import { splunkApiJsonRequest } from '../../transport'; + +const properties: INodeProperties[] = [ + { + displayName: 'Return All', + name: 'returnAll', + type: 'boolean', + default: false, + description: 'Whether to return all results or only up to a given limit', + }, + { + displayName: 'Limit', + name: 'limit', + type: 'number', + default: 50, + description: 'Max number of results to return', + typeOptions: { + minValue: 1, + }, + displayOptions: { + show: { + returnAll: [false], + }, + }, + }, + { + displayName: 'Options', + name: 'options', + type: 'collection', + placeholder: 'Add option', + default: {}, + options: [ + { + displayName: 'Add Orphan Field', + name: 'add_orphan_field', + description: + 'Whether to include a boolean value for each saved search to show whether the search is orphaned, meaning that it has no valid owner', + type: 'boolean', + default: false, + }, + { + displayName: 'List Default Actions', + name: 'listDefaultActionArgs', + type: 'boolean', + default: false, + }, + ], + }, +]; + +const displayOptions = { + show: { + resource: ['report'], + operation: ['getAll'], + }, +}; + +export const description = updateDisplayOptions(displayOptions, properties); + +export async function execute( + this: IExecuteFunctions, + i: number, +): Promise { + // https://docs.splunk.com/Documentation/Splunk/8.2.2/RESTREF/RESTsearch#saved.2Fsearches + + const qs = {} as IDataObject; + const options = this.getNodeParameter('options', i); + + populate(options, qs); + setReturnAllOrLimit.call(this, qs); + + const endpoint = '/services/saved/searches'; + const returnData = await splunkApiJsonRequest.call(this, 'GET', endpoint, {}, qs); + + return returnData; +} diff --git a/packages/nodes-base/nodes/Splunk/v2/actions/report/index.ts b/packages/nodes-base/nodes/Splunk/v2/actions/report/index.ts new file mode 100644 index 0000000000..26c13da11e --- /dev/null +++ b/packages/nodes-base/nodes/Splunk/v2/actions/report/index.ts @@ -0,0 +1,54 @@ +import type { INodeProperties } from 'n8n-workflow'; + +import * as create from './create.operation'; +import * as deleteReport from './deleteReport.operation'; +import * as get from './get.operation'; +import * as getAll from './getAll.operation'; + +export { create, deleteReport, get, getAll }; + +export const description: INodeProperties[] = [ + { + displayName: 'Operation', + name: 'operation', + type: 'options', + noDataExpression: true, + displayOptions: { + show: { + resource: ['report'], + }, + }, + options: [ + { + name: 'Create From Search', + value: 'create', + description: 'Create a search report from a search job', + action: 'Create a search report', + }, + { + name: 'Delete', + value: 'deleteReport', + description: 'Delete a search report', + action: 'Delete a search report', + }, + { + name: 'Get', + value: 'get', + description: 'Retrieve a search report', + action: 'Get a search report', + }, + { + name: 'Get Many', + value: 'getAll', + description: 'Retrieve many search reports', + action: 'Get many search reports', + }, + ], + default: 'getAll', + }, + + ...create.description, + ...deleteReport.description, + ...get.description, + ...getAll.description, +]; diff --git a/packages/nodes-base/nodes/Splunk/v2/actions/router.ts b/packages/nodes-base/nodes/Splunk/v2/actions/router.ts new file mode 100644 index 0000000000..3b0d3965e8 --- /dev/null +++ b/packages/nodes-base/nodes/Splunk/v2/actions/router.ts @@ -0,0 +1,74 @@ +import type { IExecuteFunctions, INodeExecutionData } from 'n8n-workflow'; +import { NodeApiError, NodeOperationError } from 'n8n-workflow'; + +import set from 'lodash/set'; +import * as alert from './alert'; +import * as report from './report'; +import * as search from './search'; +import * as user from './user'; + +import type { SplunkType } from './node.type'; + +export async function router(this: IExecuteFunctions): Promise { + const items = this.getInputData(); + let returnData: INodeExecutionData[] = []; + + const resource = this.getNodeParameter('resource', 0); + const operation = this.getNodeParameter('operation', 0); + + const splunkNodeData = { + resource, + operation, + } as SplunkType; + + let responseData; + + for (let i = 0; i < items.length; i++) { + try { + switch (splunkNodeData.resource) { + case 'alert': + responseData = await alert[splunkNodeData.operation].execute.call(this, i); + break; + case 'report': + responseData = await report[splunkNodeData.operation].execute.call(this, i); + break; + case 'search': + responseData = await search[splunkNodeData.operation].execute.call(this, i); + break; + case 'user': + responseData = await user[splunkNodeData.operation].execute.call(this, i); + break; + default: + throw new NodeOperationError(this.getNode(), 'Resource not found', { itemIndex: i }); + } + } catch (error) { + if (this.continueOnFail()) { + returnData.push({ json: { error: error.cause.error }, pairedItem: { item: i } }); + continue; + } + + if (error instanceof NodeApiError) { + set(error, 'context.itemIndex', i); + throw error; + } + + if (error instanceof NodeOperationError) { + if (error?.context?.itemIndex === undefined) { + set(error, 'context.itemIndex', i); + } + throw error; + } + + throw new NodeOperationError(this.getNode(), error, { itemIndex: i }); + } + + const executionData = this.helpers.constructExecutionMetaData( + this.helpers.returnJsonArray(responseData), + { itemData: { item: i } }, + ); + + returnData = returnData.concat(executionData); + } + + return [returnData]; +} diff --git a/packages/nodes-base/nodes/Splunk/v2/actions/search/create.operation.ts b/packages/nodes-base/nodes/Splunk/v2/actions/search/create.operation.ts new file mode 100644 index 0000000000..b617b162aa --- /dev/null +++ b/packages/nodes-base/nodes/Splunk/v2/actions/search/create.operation.ts @@ -0,0 +1,255 @@ +import type { INodeProperties, IExecuteFunctions, IDataObject } from 'n8n-workflow'; +import { updateDisplayOptions } from '../../../../../utils/utilities'; +import { populate, toUnixEpoch } from '../../helpers/utils'; +import { splunkApiJsonRequest, splunkApiRequest } from '../../transport'; + +const properties: INodeProperties[] = [ + { + displayName: 'Query', + name: 'search', + description: + 'Search language string to execute, in Splunk\'s Search Processing Language', + placeholder: 'e.g. search index=_internal | stats count by source', + type: 'string', + required: true, + default: '', + typeOptions: { + rows: 2, + }, + }, + { + displayName: 'Additional Fields', + name: 'additionalFields', + type: 'collection', + placeholder: 'Add Field', + default: {}, + options: [ + { + displayName: 'Ad Hoc Search Level', + name: 'adhoc_search_level', + type: 'options', + default: 'verbose', + options: [ + { + name: 'Fast', + value: 'fast', + }, + { + name: 'Smart', + value: 'smart', + }, + { + name: 'Verbose', + value: 'verbose', + }, + ], + }, + { + displayName: 'Auto-Cancel After (Seconds)', + name: 'auto_cancel', + type: 'number', + default: 0, + description: 'Seconds after which the search job automatically cancels', + }, + { + displayName: 'Auto-Finalize After (Num Events)', + name: 'auto_finalize_ec', + type: 'number', + default: 0, + description: 'Auto-finalize the search after at least this many events are processed', + }, + { + displayName: 'Auto Pause After (Seconds)', + name: 'auto_pause', + type: 'number', + default: 0, + description: 'Seconds of inactivity after which the search job automatically pauses', + }, + { + displayName: 'Earliest Index', + name: 'index_earliest', + type: 'dateTime', + default: '', + description: 'The earliest index time for the search (inclusive)', + }, + { + displayName: 'Earliest Time', + name: 'earliest_time', + type: 'dateTime', + default: '', + description: 'The earliest cut-off for the search (inclusive)', + }, + { + displayName: 'Exec Mode', + name: 'exec_mode', + type: 'options', + default: 'blocking', + options: [ + { + name: 'Blocking', + value: 'blocking', + }, + { + name: 'Normal', + value: 'normal', + }, + { + name: 'One Shot', + value: 'oneshot', + }, + ], + }, + { + displayName: 'Indexed Real Time Offset', + name: 'indexedRealtimeOffset', + type: 'number', + default: 0, + description: 'Seconds of disk sync delay for indexed real-time search', + }, + { + displayName: 'Latest Index', + name: 'index_latest', + type: 'dateTime', + default: '', + description: 'The latest index time for the search (inclusive)', + }, + { + displayName: 'Latest Time', + name: 'latest_time', + type: 'dateTime', + default: '', + description: 'The latest cut-off for the search (inclusive)', + }, + { + displayName: 'Max Time', + name: 'max_time', + type: 'number', + default: 0, + description: + 'Number of seconds to run this search before finalizing. Enter 0 to never finalize.', + }, + { + displayName: 'Namespace', + name: 'namespace', + type: 'string', + default: '', + description: 'Application namespace in which to restrict searches', + }, + { + displayName: 'Reduce Frequency', + name: 'reduce_freq', + type: 'number', + default: 0, + description: 'How frequently to run the MapReduce reduce phase on accumulated map values', + }, + { + displayName: 'Remote Server List', + name: 'remote_server_list', + type: 'string', + default: '', + description: + 'Comma-separated list of (possibly wildcarded) servers from which raw events should be pulled. This same server list is to be used in subsearches.', + }, + { + displayName: 'Reuse Limit (Seconds)', + name: 'reuse_max_seconds_ago', + type: 'number', + default: 0, + description: + 'Number of seconds ago to check when an identical search is started and return the job’s search ID instead of starting a new job', + }, + { + displayName: 'Required Field', + name: 'rf', + type: 'string', + default: '', + description: + 'Name of a required field to add to the search. Even if not referenced or used directly by the search, a required field is still included in events and summary endpoints.', + }, + { + displayName: 'Search Mode', + name: 'search_mode', + type: 'options', + default: 'normal', + options: [ + { + name: 'Normal', + value: 'normal', + }, + { + name: 'Real Time', + value: 'realtime', + }, + ], + }, + { + displayName: 'Status Buckets', + name: 'status_buckets', + type: 'number', + default: 0, + description: + 'The most status buckets to generate. Set 0 generate no timeline information.', + }, + { + displayName: 'Timeout', + name: 'timeout', + type: 'number', + default: 86400, + description: 'Number of seconds to keep this search after processing has stopped', + }, + { + displayName: 'Workload Pool', + name: 'workload_pool', + type: 'string', + default: '', + description: 'New workload pool where the existing running search should be placed', + }, + ], + }, +]; + +const displayOptions = { + show: { + resource: ['search'], + operation: ['create'], + }, +}; + +export const description = updateDisplayOptions(displayOptions, properties); + +export async function execute( + this: IExecuteFunctions, + i: number, +): Promise { + // https://docs.splunk.com/Documentation/Splunk/8.2.2/RESTREF/RESTsearch#search.2Fjobs + + const body = { + search: this.getNodeParameter('search', i), + } as IDataObject; + + const { earliest_time, latest_time, index_earliest, index_latest, ...rest } = + this.getNodeParameter('additionalFields', i) as IDataObject & { + earliest_time?: string; + latest_time?: string; + index_earliest?: string; + index_latest?: string; + }; + + populate( + { + ...(earliest_time && { earliest_time: toUnixEpoch(earliest_time) }), + ...(latest_time && { latest_time: toUnixEpoch(latest_time) }), + ...(index_earliest && { index_earliest: toUnixEpoch(index_earliest) }), + ...(index_latest && { index_latest: toUnixEpoch(index_latest) }), + ...rest, + }, + body, + ); + + const endpoint = '/services/search/jobs'; + const responseData = await splunkApiRequest.call(this, 'POST', endpoint, body); + + const getEndpoint = `/services/search/jobs/${responseData.response.sid}`; + const returnData = await splunkApiJsonRequest.call(this, 'GET', getEndpoint); + return returnData; +} diff --git a/packages/nodes-base/nodes/Splunk/v2/actions/search/deleteJob.operation.ts b/packages/nodes-base/nodes/Splunk/v2/actions/search/deleteJob.operation.ts new file mode 100644 index 0000000000..1bb463a515 --- /dev/null +++ b/packages/nodes-base/nodes/Splunk/v2/actions/search/deleteJob.operation.ts @@ -0,0 +1,29 @@ +import type { INodeProperties, IExecuteFunctions, IDataObject } from 'n8n-workflow'; +import { updateDisplayOptions } from '../../../../../utils/utilities'; +import { splunkApiRequest } from '../../transport'; +import { searchJobRLC } from '../../helpers/descriptions'; + +const properties: INodeProperties[] = [searchJobRLC]; + +const displayOptions = { + show: { + resource: ['search'], + operation: ['deleteJob'], + }, +}; + +export const description = updateDisplayOptions(displayOptions, properties); + +export async function execute( + this: IExecuteFunctions, + i: number, +): Promise { + // https://docs.splunk.com/Documentation/Splunk/8.2.2/RESTREF/RESTsearch#search.2Fjobs.2F.7Bsearch_id.7D + + const searchJobId = this.getNodeParameter('searchJobId', i, '', { extractValue: true }) as string; + const endpoint = `/services/search/jobs/${searchJobId}`; + + await splunkApiRequest.call(this, 'DELETE', endpoint); + + return { success: true }; +} diff --git a/packages/nodes-base/nodes/Splunk/v2/actions/search/get.operation.ts b/packages/nodes-base/nodes/Splunk/v2/actions/search/get.operation.ts new file mode 100644 index 0000000000..1df3721de1 --- /dev/null +++ b/packages/nodes-base/nodes/Splunk/v2/actions/search/get.operation.ts @@ -0,0 +1,29 @@ +import type { INodeProperties, IExecuteFunctions, IDataObject } from 'n8n-workflow'; +import { updateDisplayOptions } from '../../../../../utils/utilities'; +import { splunkApiJsonRequest } from '../../transport'; +import { searchJobRLC } from '../../helpers/descriptions'; + +const properties: INodeProperties[] = [searchJobRLC]; + +const displayOptions = { + show: { + resource: ['search'], + operation: ['get'], + }, +}; + +export const description = updateDisplayOptions(displayOptions, properties); + +export async function execute( + this: IExecuteFunctions, + i: number, +): Promise { + // https://docs.splunk.com/Documentation/Splunk/8.2.2/RESTREF/RESTsearch#search.2Fjobs.2F.7Bsearch_id.7D + + const searchJobId = this.getNodeParameter('searchJobId', i, '', { extractValue: true }) as string; + const endpoint = `/services/search/jobs/${searchJobId}`; + + const returnData = await splunkApiJsonRequest.call(this, 'GET', endpoint); + + return returnData; +} diff --git a/packages/nodes-base/nodes/Splunk/v2/actions/search/getAll.operation.ts b/packages/nodes-base/nodes/Splunk/v2/actions/search/getAll.operation.ts new file mode 100644 index 0000000000..5ea3bb3685 --- /dev/null +++ b/packages/nodes-base/nodes/Splunk/v2/actions/search/getAll.operation.ts @@ -0,0 +1,123 @@ +import type { INodeProperties, IExecuteFunctions, IDataObject } from 'n8n-workflow'; +import { updateDisplayOptions } from '../../../../../utils/utilities'; +import { populate, setReturnAllOrLimit } from '../../helpers/utils'; +import { splunkApiJsonRequest } from '../../transport'; + +const properties: INodeProperties[] = [ + { + displayName: 'Return All', + name: 'returnAll', + type: 'boolean', + default: false, + description: 'Whether to return all results or only up to a given limit', + }, + { + displayName: 'Limit', + name: 'limit', + type: 'number', + default: 50, + description: 'Max number of results to return', + typeOptions: { + minValue: 1, + }, + displayOptions: { + show: { + returnAll: [false], + }, + }, + }, + { + displayName: 'Sort', + name: 'sort', + type: 'fixedCollection', + default: {}, + options: [ + { + displayName: 'Values', + name: 'values', + values: [ + { + displayName: 'Sort Direction', + name: 'sort_dir', + type: 'options', + options: [ + { + name: 'Ascending', + value: 'asc', + }, + { + name: 'Descending', + value: 'desc', + }, + ], + default: 'asc', + }, + { + displayName: 'Sort Key', + name: 'sort_key', + description: 'Key name to use for sorting', + type: 'string', + placeholder: 'e.g. diskUsage', + default: '', + }, + { + displayName: 'Sort Mode', + name: 'sort_mode', + type: 'options', + options: [ + { + name: 'Automatic', + value: 'auto', + description: + 'If all field values are numeric, collate numerically. Otherwise, collate alphabetically.', + }, + { + name: 'Alphabetic', + value: 'alpha', + description: 'Collate alphabetically, case-insensitive', + }, + { + name: 'Alphabetic and Case-Sensitive', + value: 'alpha_case', + description: 'Collate alphabetically, case-sensitive', + }, + { + name: 'Numeric', + value: 'num', + description: 'Collate numerically', + }, + ], + default: 'auto', + }, + ], + }, + ], + }, +]; + +const displayOptions = { + show: { + resource: ['search'], + operation: ['getAll'], + }, +}; + +export const description = updateDisplayOptions(displayOptions, properties); + +export async function execute( + this: IExecuteFunctions, + i: number, +): Promise { + // https://docs.splunk.com/Documentation/Splunk/8.2.2/RESTREF/RESTsearch#search.2Fjobs + + const qs = {} as IDataObject; + const sort = this.getNodeParameter('sort.values', i, {}) as IDataObject; + + populate(sort, qs); + setReturnAllOrLimit.call(this, qs); + + const endpoint = '/services/search/jobs'; + const returnData = await splunkApiJsonRequest.call(this, 'GET', endpoint, {}, qs); + + return returnData; +} diff --git a/packages/nodes-base/nodes/Splunk/v2/actions/search/getResult.operation.ts b/packages/nodes-base/nodes/Splunk/v2/actions/search/getResult.operation.ts new file mode 100644 index 0000000000..246cce383e --- /dev/null +++ b/packages/nodes-base/nodes/Splunk/v2/actions/search/getResult.operation.ts @@ -0,0 +1,125 @@ +import type { INodeProperties, IExecuteFunctions, IDataObject } from 'n8n-workflow'; +import { updateDisplayOptions } from '../../../../../utils/utilities'; +import { splunkApiJsonRequest } from '../../transport'; +import { populate, setReturnAllOrLimit } from '../../helpers/utils'; +import { searchJobRLC } from '../../helpers/descriptions'; + +const properties: INodeProperties[] = [ + searchJobRLC, + { + displayName: 'Return All', + name: 'returnAll', + type: 'boolean', + default: false, + description: 'Whether to return all results or only up to a given limit', + }, + { + displayName: 'Limit', + name: 'limit', + type: 'number', + default: 50, + description: 'Max number of results to return', + typeOptions: { + minValue: 1, + }, + displayOptions: { + show: { + returnAll: [false], + }, + }, + }, + { + displayName: 'Filters', + name: 'filters', + type: 'collection', + placeholder: 'Add Filter', + default: {}, + options: [ + { + displayName: 'Key-Value Match', + name: 'keyValueMatch', + description: + 'Key-value pair to match against. Example: if "Key" is set to user and "Field" is set to john, only the results where user is john will be returned.', + type: 'fixedCollection', + default: {}, + placeholder: 'Add Key-Value Pair', + options: [ + { + displayName: 'Key-Value Pair', + name: 'keyValuePair', + values: [ + { + displayName: 'Key', + name: 'key', + description: 'Key to match against', + type: 'string', + default: '', + }, + { + displayName: 'Value', + name: 'value', + description: 'Value to match against', + type: 'string', + default: '', + }, + ], + }, + ], + }, + ], + }, + { + displayName: 'Options', + name: 'options', + type: 'collection', + placeholder: 'Add option', + default: {}, + options: [ + { + displayName: 'Add Summary to Metadata', + name: 'add_summary_to_metadata', + description: 'Whether to include field summary statistics in the response', + type: 'boolean', + default: false, + }, + ], + }, +]; + +const displayOptions = { + show: { + resource: ['search'], + operation: ['getResult'], + }, +}; + +export const description = updateDisplayOptions(displayOptions, properties); + +export async function execute( + this: IExecuteFunctions, + i: number, +): Promise { + // https://docs.splunk.com/Documentation/Splunk/latest/RESTREF/RESTsearch#search.2Fjobs.2F.7Bsearch_id.7D.2Fresults + + const searchJobId = this.getNodeParameter('searchJobId', i, '', { extractValue: true }) as string; + + const qs = {} as IDataObject; + const filters = this.getNodeParameter('filters', i) as IDataObject & { + keyValueMatch?: { keyValuePair?: { key: string; value: string } }; + }; + const options = this.getNodeParameter('options', i); + + const keyValuePair = filters?.keyValueMatch?.keyValuePair; + + if (keyValuePair?.key && keyValuePair?.value) { + qs.search = `search ${keyValuePair.key}=${keyValuePair.value}`; + } + + populate(options, qs); + setReturnAllOrLimit.call(this, qs); + + const endpoint = `/services/search/jobs/${searchJobId}/results`; + const returnData = await splunkApiJsonRequest.call(this, 'GET', endpoint, {}, qs); + + return returnData; +} diff --git a/packages/nodes-base/nodes/Splunk/v2/actions/search/index.ts b/packages/nodes-base/nodes/Splunk/v2/actions/search/index.ts new file mode 100644 index 0000000000..51eba23c25 --- /dev/null +++ b/packages/nodes-base/nodes/Splunk/v2/actions/search/index.ts @@ -0,0 +1,62 @@ +import type { INodeProperties } from 'n8n-workflow'; + +import * as create from './create.operation'; +import * as deleteJob from './deleteJob.operation'; +import * as get from './get.operation'; +import * as getAll from './getAll.operation'; +import * as getResult from './getResult.operation'; + +export { create, deleteJob, get, getAll, getResult }; + +export const description: INodeProperties[] = [ + { + displayName: 'Operation', + name: 'operation', + type: 'options', + noDataExpression: true, + displayOptions: { + show: { + resource: ['search'], + }, + }, + options: [ + { + name: 'Create', + value: 'create', + description: 'Create a search job', + action: 'Create a search job', + }, + { + name: 'Delete', + value: 'deleteJob', + description: 'Delete a search job', + action: 'Delete a search job', + }, + { + name: 'Get', + value: 'get', + description: 'Retrieve a search job', + action: 'Get a search job', + }, + { + name: 'Get Many', + value: 'getAll', + description: 'Retrieve many search jobs', + action: 'Get many search jobs', + }, + { + name: 'Get Result', + value: 'getResult', + description: 'Get the result of a search job', + action: 'Get the result of a search job', + }, + ], + default: 'create', + }, + + ...create.description, + ...deleteJob.description, + ...get.description, + ...getAll.description, + ...getResult.description, +]; diff --git a/packages/nodes-base/nodes/Splunk/v2/actions/user/create.operation.ts b/packages/nodes-base/nodes/Splunk/v2/actions/user/create.operation.ts new file mode 100644 index 0000000000..950391e611 --- /dev/null +++ b/packages/nodes-base/nodes/Splunk/v2/actions/user/create.operation.ts @@ -0,0 +1,99 @@ +import type { INodeProperties, IExecuteFunctions, IDataObject } from 'n8n-workflow'; +import { updateDisplayOptions } from '../../../../../utils/utilities'; +import { formatFeed, populate } from '../../helpers/utils'; +import { splunkApiRequest } from '../../transport'; +import type { SplunkFeedResponse } from '../../helpers/interfaces'; + +const properties: INodeProperties[] = [ + { + displayName: 'Name', + name: 'name', + description: 'Login name of the user', + type: 'string', + required: true, + default: '', + }, + { + // eslint-disable-next-line n8n-nodes-base/node-param-display-name-wrong-for-dynamic-multi-options + displayName: 'Roles', + name: 'roles', + type: 'multiOptions', + description: + 'Comma-separated list of roles to assign to the user. Choose from the list, or specify IDs using an expression.', + required: true, + default: ['user'], + typeOptions: { + loadOptionsMethod: 'getRoles', + }, + }, + { + displayName: 'Password', + name: 'password', + type: 'string', + typeOptions: { password: true }, + required: true, + default: '', + }, + { + displayName: 'Additional Fields', + name: 'additionalFields', + type: 'collection', + placeholder: 'Add Field', + default: {}, + options: [ + { + displayName: 'Email', + name: 'email', + type: 'string', + placeholder: 'name@email.com', + default: '', + }, + { + displayName: 'Full Name', + name: 'realname', + type: 'string', + default: '', + description: 'Full name of the user', + }, + ], + }, +]; + +const displayOptions = { + show: { + resource: ['user'], + operation: ['create'], + }, +}; + +export const description = updateDisplayOptions(displayOptions, properties); + +export async function execute( + this: IExecuteFunctions, + i: number, +): Promise { + // https://docs.splunk.com/Documentation/Splunk/8.2.2/RESTREF/RESTaccess#authentication.2Fusers + + const roles = this.getNodeParameter('roles', i) as string[]; + + const body = { + name: this.getNodeParameter('name', i), + roles, + password: this.getNodeParameter('password', i), + } as IDataObject; + + const additionalFields = this.getNodeParameter('additionalFields', i); + + populate(additionalFields, body); + + const endpoint = '/services/authentication/users'; + const responseData = (await splunkApiRequest.call( + this, + 'POST', + endpoint, + body, + )) as SplunkFeedResponse; + const returnData = formatFeed(responseData); + + return returnData; +} diff --git a/packages/nodes-base/nodes/Splunk/v2/actions/user/deleteUser.operation.ts b/packages/nodes-base/nodes/Splunk/v2/actions/user/deleteUser.operation.ts new file mode 100644 index 0000000000..e3d9a05605 --- /dev/null +++ b/packages/nodes-base/nodes/Splunk/v2/actions/user/deleteUser.operation.ts @@ -0,0 +1,29 @@ +import type { INodeProperties, IExecuteFunctions, IDataObject } from 'n8n-workflow'; +import { updateDisplayOptions } from '../../../../../utils/utilities'; +import { splunkApiRequest } from '../../transport'; +import { userRLC } from '../../helpers/descriptions'; + +const properties: INodeProperties[] = [userRLC]; + +const displayOptions = { + show: { + resource: ['user'], + operation: ['deleteUser'], + }, +}; + +export const description = updateDisplayOptions(displayOptions, properties); + +export async function execute( + this: IExecuteFunctions, + i: number, +): Promise { + // https://docs.splunk.com/Documentation/Splunk/8.2.2/RESTREF/RESTaccess#authentication.2Fusers.2F.7Bname.7D + + const userId = this.getNodeParameter('userId', i, '', { extractValue: true }) as string; + const endpoint = `/services/authentication/users/${userId}`; + + await splunkApiRequest.call(this, 'DELETE', endpoint); + + return { success: true }; +} diff --git a/packages/nodes-base/nodes/Splunk/v2/actions/user/get.operation.ts b/packages/nodes-base/nodes/Splunk/v2/actions/user/get.operation.ts new file mode 100644 index 0000000000..46ffad1e9d --- /dev/null +++ b/packages/nodes-base/nodes/Splunk/v2/actions/user/get.operation.ts @@ -0,0 +1,29 @@ +import type { INodeProperties, IExecuteFunctions, IDataObject } from 'n8n-workflow'; +import { updateDisplayOptions } from '../../../../../utils/utilities'; +import { splunkApiJsonRequest } from '../../transport'; +import { userRLC } from '../../helpers/descriptions'; + +const properties: INodeProperties[] = [userRLC]; + +const displayOptions = { + show: { + resource: ['user'], + operation: ['get'], + }, +}; + +export const description = updateDisplayOptions(displayOptions, properties); + +export async function execute( + this: IExecuteFunctions, + i: number, +): Promise { + // https://docs.splunk.com/Documentation/Splunk/8.2.2/RESTREF/RESTaccess#authentication.2Fusers.2F.7Bname.7D + + const userId = this.getNodeParameter('userId', i, '', { extractValue: true }) as string; + const endpoint = `/services/authentication/users/${userId}`; + + const returnData = await splunkApiJsonRequest.call(this, 'GET', endpoint); + + return returnData; +} diff --git a/packages/nodes-base/nodes/Splunk/v2/actions/user/getAll.operation.ts b/packages/nodes-base/nodes/Splunk/v2/actions/user/getAll.operation.ts new file mode 100644 index 0000000000..822a40f269 --- /dev/null +++ b/packages/nodes-base/nodes/Splunk/v2/actions/user/getAll.operation.ts @@ -0,0 +1,53 @@ +import type { INodeProperties, IExecuteFunctions, IDataObject } from 'n8n-workflow'; +import { updateDisplayOptions } from '../../../../../utils/utilities'; +import { splunkApiJsonRequest } from '../../transport'; +import { setReturnAllOrLimit } from '../../helpers/utils'; + +const properties: INodeProperties[] = [ + { + displayName: 'Return All', + name: 'returnAll', + type: 'boolean', + default: false, + description: 'Whether to return all results or only up to a given limit', + }, + { + displayName: 'Limit', + name: 'limit', + type: 'number', + default: 50, + description: 'Max number of results to return', + typeOptions: { + minValue: 1, + }, + displayOptions: { + show: { + returnAll: [false], + }, + }, + }, +]; + +const displayOptions = { + show: { + resource: ['user'], + operation: ['getAll'], + }, +}; + +export const description = updateDisplayOptions(displayOptions, properties); + +export async function execute( + this: IExecuteFunctions, + _i: number, +): Promise { + // https://docs.splunk.com/Documentation/Splunk/8.2.2/RESTREF/RESTaccess#authentication.2Fusers + + const qs = {} as IDataObject; + setReturnAllOrLimit.call(this, qs); + + const endpoint = '/services/authentication/users'; + const returnData = await splunkApiJsonRequest.call(this, 'GET', endpoint, {}, qs); + + return returnData; +} diff --git a/packages/nodes-base/nodes/Splunk/v2/actions/user/index.ts b/packages/nodes-base/nodes/Splunk/v2/actions/user/index.ts new file mode 100644 index 0000000000..7aeab0e8f3 --- /dev/null +++ b/packages/nodes-base/nodes/Splunk/v2/actions/user/index.ts @@ -0,0 +1,62 @@ +import type { INodeProperties } from 'n8n-workflow'; + +import * as create from './create.operation'; +import * as deleteUser from './deleteUser.operation'; +import * as get from './get.operation'; +import * as getAll from './getAll.operation'; +import * as update from './update.operation'; + +export { create, deleteUser, get, getAll, update }; + +export const description: INodeProperties[] = [ + { + displayName: 'Operation', + name: 'operation', + type: 'options', + noDataExpression: true, + displayOptions: { + show: { + resource: ['user'], + }, + }, + options: [ + { + name: 'Create', + value: 'create', + description: 'Create an user', + action: 'Create a user', + }, + { + name: 'Delete', + value: 'deleteUser', + description: 'Delete an user', + action: 'Delete a user', + }, + { + name: 'Get', + value: 'get', + description: 'Retrieve an user', + action: 'Get a user', + }, + { + name: 'Get Many', + value: 'getAll', + description: 'Retrieve many users', + action: 'Get many users', + }, + { + name: 'Update', + value: 'update', + description: 'Update an user', + action: 'Update a user', + }, + ], + default: 'create', + }, + + ...create.description, + ...deleteUser.description, + ...get.description, + ...getAll.description, + ...update.description, +]; diff --git a/packages/nodes-base/nodes/Splunk/v2/actions/user/update.operation.ts b/packages/nodes-base/nodes/Splunk/v2/actions/user/update.operation.ts new file mode 100644 index 0000000000..e680a8214e --- /dev/null +++ b/packages/nodes-base/nodes/Splunk/v2/actions/user/update.operation.ts @@ -0,0 +1,86 @@ +import type { INodeProperties, IExecuteFunctions, IDataObject } from 'n8n-workflow'; +import { updateDisplayOptions } from '../../../../../utils/utilities'; +import { formatFeed, populate } from '../../helpers/utils'; +import { splunkApiRequest } from '../../transport'; +import { userRLC } from '../../helpers/descriptions'; + +const properties: INodeProperties[] = [ + userRLC, + { + displayName: 'Update Fields', + name: 'updateFields', + type: 'collection', + placeholder: 'Add Field', + default: {}, + options: [ + { + displayName: 'Email', + name: 'email', + type: 'string', + placeholder: 'name@email.com', + default: '', + }, + { + displayName: 'Full Name', + name: 'realname', + type: 'string', + default: '', + description: 'Full name of the user', + }, + { + displayName: 'Password', + name: 'password', + type: 'string', + typeOptions: { password: true }, + default: '', + }, + { + displayName: 'Role Names or IDs', + name: 'roles', + type: 'multiOptions', + description: + 'Comma-separated list of roles to assign to the user. Choose from the list, or specify IDs using an expression.', + default: [], + typeOptions: { + loadOptionsMethod: 'getRoles', + }, + }, + ], + }, +]; + +const displayOptions = { + show: { + resource: ['user'], + operation: ['update'], + }, +}; + +export const description = updateDisplayOptions(displayOptions, properties); + +export async function execute( + this: IExecuteFunctions, + i: number, +): Promise { + // https://docs.splunk.com/Documentation/Splunk/8.2.2/RESTREF/RESTaccess#authentication.2Fusers.2F.7Bname.7D + + const body = {} as IDataObject; + const { roles, ...rest } = this.getNodeParameter('updateFields', i) as IDataObject & { + roles: string[]; + }; + + populate( + { + ...(roles && { roles }), + ...rest, + }, + body, + ); + + const userId = this.getNodeParameter('userId', i, '', { extractValue: true }) as string; + const endpoint = `/services/authentication/users/${userId}`; + + const returnData = await splunkApiRequest.call(this, 'POST', endpoint, body).then(formatFeed); + + return returnData; +} diff --git a/packages/nodes-base/nodes/Splunk/v2/actions/versionDescription.ts b/packages/nodes-base/nodes/Splunk/v2/actions/versionDescription.ts new file mode 100644 index 0000000000..e21b787e65 --- /dev/null +++ b/packages/nodes-base/nodes/Splunk/v2/actions/versionDescription.ts @@ -0,0 +1,60 @@ +/* eslint-disable n8n-nodes-base/node-filename-against-convention */ +import { NodeConnectionType, type INodeTypeDescription } from 'n8n-workflow'; + +import * as alert from './alert'; +import * as report from './report'; +import * as search from './search'; +import * as user from './user'; + +export const versionDescription: INodeTypeDescription = { + displayName: 'Splunk', + name: 'splunk', + icon: 'file:splunk.svg', + group: ['transform'], + version: 2, + subtitle: '={{$parameter["operation"] + ": " + $parameter["resource"]}}', + description: 'Consume the Splunk Enterprise API', + defaults: { + name: 'Splunk', + }, + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], + credentials: [ + { + name: 'splunkApi', + required: true, + }, + ], + properties: [ + { + displayName: 'Resource', + name: 'resource', + type: 'options', + noDataExpression: true, + options: [ + { + name: 'Alert', + value: 'alert', + }, + { + name: 'Report', + value: 'report', + }, + { + name: 'Search', + value: 'search', + }, + { + name: 'User', + value: 'user', + }, + ], + default: 'search', + }, + + ...alert.description, + ...report.description, + ...search.description, + ...user.description, + ], +}; diff --git a/packages/nodes-base/nodes/Splunk/v2/helpers/descriptions/index.ts b/packages/nodes-base/nodes/Splunk/v2/helpers/descriptions/index.ts new file mode 100644 index 0000000000..71fceedc4a --- /dev/null +++ b/packages/nodes-base/nodes/Splunk/v2/helpers/descriptions/index.ts @@ -0,0 +1 @@ +export * from './rlc.description'; diff --git a/packages/nodes-base/nodes/Splunk/v2/helpers/descriptions/rlc.description.ts b/packages/nodes-base/nodes/Splunk/v2/helpers/descriptions/rlc.description.ts new file mode 100644 index 0000000000..67022627d4 --- /dev/null +++ b/packages/nodes-base/nodes/Splunk/v2/helpers/descriptions/rlc.description.ts @@ -0,0 +1,79 @@ +import type { INodeProperties } from 'n8n-workflow'; + +export const reportRLC: INodeProperties = { + displayName: 'Report', + name: 'reportId', + type: 'resourceLocator', + default: { mode: 'list', value: '' }, + required: true, + modes: [ + { + displayName: 'From List', + name: 'list', + type: 'list', + placeholder: 'Select a report...', + typeOptions: { + searchListMethod: 'searchReports', + searchable: true, + }, + }, + { + displayName: 'ID', + name: 'id', + type: 'string', + placeholder: 'e.g. Errors%20in%20the%20last%20hour', + }, + ], +}; + +export const searchJobRLC: INodeProperties = { + displayName: 'Search Job', + name: 'searchJobId', + type: 'resourceLocator', + default: { mode: 'list', value: '' }, + required: true, + modes: [ + { + displayName: 'From List', + name: 'list', + type: 'list', + placeholder: 'Select a search job...', + typeOptions: { + searchListMethod: 'searchJobs', + searchable: true, + }, + }, + { + displayName: 'ID', + name: 'id', + type: 'string', + placeholder: 'e.g. 1718944376.178', + }, + ], +}; + +export const userRLC: INodeProperties = { + displayName: 'User', + name: 'userId', + type: 'resourceLocator', + default: { mode: 'list', value: '' }, + required: true, + modes: [ + { + displayName: 'From List', + name: 'list', + type: 'list', + placeholder: 'Select a user...', + typeOptions: { + searchListMethod: 'searchUsers', + searchable: true, + }, + }, + { + displayName: 'ID', + name: 'id', + type: 'string', + placeholder: 'e.g. admin', + }, + ], +}; diff --git a/packages/nodes-base/nodes/Splunk/v2/helpers/interfaces.ts b/packages/nodes-base/nodes/Splunk/v2/helpers/interfaces.ts new file mode 100644 index 0000000000..b4bc35e985 --- /dev/null +++ b/packages/nodes-base/nodes/Splunk/v2/helpers/interfaces.ts @@ -0,0 +1,24 @@ +import type { IDataObject } from 'n8n-workflow'; + +export type SplunkCredentials = { + authToken: string; + baseUrl: string; + allowUnauthorizedCerts: boolean; +}; + +export type SplunkFeedResponse = { + feed: { + entry: IDataObject[] | IDataObject; + }; +}; + +export type SplunkError = { + response?: { + messages?: { + msg: { + $: { type: string }; + _: string; + }; + }; + }; +}; diff --git a/packages/nodes-base/nodes/Splunk/v2/helpers/utils.ts b/packages/nodes-base/nodes/Splunk/v2/helpers/utils.ts new file mode 100644 index 0000000000..7515ba509f --- /dev/null +++ b/packages/nodes-base/nodes/Splunk/v2/helpers/utils.ts @@ -0,0 +1,107 @@ +import type { IExecuteFunctions, IDataObject } from 'n8n-workflow'; + +import { parseString } from 'xml2js'; + +import { SPLUNK } from '../../v1/types'; +import type { SplunkError, SplunkFeedResponse } from './interfaces'; + +function compactEntryContent(splunkObject: any): any { + if (typeof splunkObject !== 'object') { + return {}; + } + + if (Array.isArray(splunkObject)) { + return splunkObject.reduce((acc, cur) => { + acc = { ...acc, ...compactEntryContent(cur) }; + return acc; + }, {}); + } + + if (splunkObject[SPLUNK.DICT]) { + const obj = splunkObject[SPLUNK.DICT][SPLUNK.KEY]; + return { [splunkObject.$.name]: compactEntryContent(obj) }; + } + + if (splunkObject[SPLUNK.LIST]) { + const items = splunkObject[SPLUNK.LIST][SPLUNK.ITEM]; + return { [splunkObject.$.name]: items }; + } + + if (splunkObject._) { + return { + [splunkObject.$.name]: splunkObject._, + }; + } + + return { + [splunkObject.$.name]: '', + }; +} + +function formatEntryContent(content: any): any { + return content[SPLUNK.DICT][SPLUNK.KEY].reduce((acc: any, cur: any) => { + acc = { ...acc, ...compactEntryContent(cur) }; + return acc; + }, {}); +} + +export function formatEntry(entry: any, doNotFormatContent = false): any { + const { content, link, ...rest } = entry; + const formattedContent = doNotFormatContent ? content : formatEntryContent(content); + const formattedEntry = { ...rest, ...formattedContent }; + + if (formattedEntry.id) { + formattedEntry.entryUrl = formattedEntry.id; + formattedEntry.id = formattedEntry.id.split('/').pop(); + } + + return formattedEntry; +} + +export async function parseXml(xml: string) { + return await new Promise((resolve, reject) => { + parseString(xml, { explicitArray: false }, (error, result) => { + error ? reject(error) : resolve(result); + }); + }); +} + +export function extractErrorDescription(rawError: SplunkError) { + const messages = rawError.response?.messages; + return messages ? { [messages.msg.$.type.toLowerCase()]: messages.msg._ } : rawError; +} + +export function toUnixEpoch(timestamp: string) { + return Date.parse(timestamp) / 1000; +} + +export function formatFeed(responseData: SplunkFeedResponse) { + const { entry: entries } = responseData.feed; + + if (!entries) return []; + + return Array.isArray(entries) + ? entries.map((entry) => formatEntry(entry)) + : [formatEntry(entries)]; +} + +export function setReturnAllOrLimit(this: IExecuteFunctions, qs: IDataObject) { + qs.count = this.getNodeParameter('returnAll', 0) ? 0 : this.getNodeParameter('limit', 0); +} + +export function populate(source: IDataObject, destination: IDataObject) { + if (Object.keys(source).length) { + Object.assign(destination, source); + } +} + +export function getId( + this: IExecuteFunctions, + i: number, + idType: 'userId' | 'searchJobId' | 'searchConfigurationId', + endpoint: string, +) { + const id = this.getNodeParameter(idType, i) as string; + + return id.includes(endpoint) ? id.split(endpoint).pop() : id; +} diff --git a/packages/nodes-base/nodes/Splunk/v2/methods/index.ts b/packages/nodes-base/nodes/Splunk/v2/methods/index.ts new file mode 100644 index 0000000000..a5508a3e0f --- /dev/null +++ b/packages/nodes-base/nodes/Splunk/v2/methods/index.ts @@ -0,0 +1,2 @@ +export * as loadOptions from './loadOptions'; +export * as listSearch from './listSearch'; diff --git a/packages/nodes-base/nodes/Splunk/v2/methods/listSearch.ts b/packages/nodes-base/nodes/Splunk/v2/methods/listSearch.ts new file mode 100644 index 0000000000..087163cb72 --- /dev/null +++ b/packages/nodes-base/nodes/Splunk/v2/methods/listSearch.ts @@ -0,0 +1,74 @@ +import type { IDataObject, ILoadOptionsFunctions, INodeListSearchResult } from 'n8n-workflow'; +import { splunkApiJsonRequest } from '../transport'; + +export async function searchReports( + this: ILoadOptionsFunctions, + filter?: string, +): Promise { + const qs: IDataObject = {}; + + if (filter) { + qs.search = filter; + } + + const endpoint = '/services/saved/searches'; + const response = await splunkApiJsonRequest.call(this, 'GET', endpoint, undefined, qs); + + return { + results: (response as IDataObject[]).map((entry: IDataObject) => { + return { + name: entry.name as string, + value: entry.id as string, + url: entry.entryUrl as string, + }; + }), + }; +} + +export async function searchJobs( + this: ILoadOptionsFunctions, + filter?: string, +): Promise { + const qs: IDataObject = {}; + + if (filter) { + qs.search = filter; + } + + const endpoint = '/services/search/jobs'; + const response = await splunkApiJsonRequest.call(this, 'GET', endpoint, undefined, qs); + + return { + results: (response as IDataObject[]).map((entry: IDataObject) => { + return { + name: (entry.name as string).replace(/^\|\s*/, ''), + value: entry.id as string, + url: entry.entryUrl as string, + }; + }), + }; +} + +export async function searchUsers( + this: ILoadOptionsFunctions, + filter?: string, +): Promise { + const qs: IDataObject = {}; + + if (filter) { + qs.search = filter; + } + + const endpoint = '/services/authentication/users'; + const response = await splunkApiJsonRequest.call(this, 'GET', endpoint, undefined, qs); + + return { + results: (response as IDataObject[]).map((entry: IDataObject) => { + return { + name: entry.name as string, + value: entry.id as string, + url: entry.entryUrl as string, + }; + }), + }; +} diff --git a/packages/nodes-base/nodes/Splunk/v2/methods/loadOptions.ts b/packages/nodes-base/nodes/Splunk/v2/methods/loadOptions.ts new file mode 100644 index 0000000000..a55459fbed --- /dev/null +++ b/packages/nodes-base/nodes/Splunk/v2/methods/loadOptions.ts @@ -0,0 +1,13 @@ +import type { ILoadOptionsFunctions, INodePropertyOptions } from 'n8n-workflow'; + +import { splunkApiJsonRequest } from '../transport'; + +export async function getRoles(this: ILoadOptionsFunctions): Promise { + const endpoint = '/services/authorization/roles'; + const responseData = await splunkApiJsonRequest.call(this, 'GET', endpoint); + + return (responseData as Array<{ id: string }>).map((entry) => ({ + name: entry.id, + value: entry.id, + })); +} diff --git a/packages/nodes-base/nodes/Splunk/v2/transport/index.ts b/packages/nodes-base/nodes/Splunk/v2/transport/index.ts new file mode 100644 index 0000000000..ee6fd8ea4f --- /dev/null +++ b/packages/nodes-base/nodes/Splunk/v2/transport/index.ts @@ -0,0 +1,153 @@ +import type { + IExecuteFunctions, + IDataObject, + ILoadOptionsFunctions, + JsonObject, + IHttpRequestMethods, + IHttpRequestOptions, + IRequestOptions, +} from 'n8n-workflow'; +import { NodeApiError, NodeOperationError, sleep } from 'n8n-workflow'; + +import type { SplunkCredentials, SplunkError } from '../helpers/interfaces'; +import { extractErrorDescription, formatEntry, parseXml } from '../helpers/utils'; + +export async function splunkApiRequest( + this: IExecuteFunctions | ILoadOptionsFunctions, + method: IHttpRequestMethods, + endpoint: string, + body: IDataObject = {}, + qs: IDataObject = {}, +): Promise { + const { baseUrl, allowUnauthorizedCerts } = (await this.getCredentials( + 'splunkApi', + )) as SplunkCredentials; + + const options: IRequestOptions = { + headers: { + 'Content-Type': 'application/x-www-form-urlencoded', + }, + method, + form: body, + qs, + uri: `${baseUrl}${endpoint}`, + json: true, + rejectUnauthorized: !allowUnauthorizedCerts, + useQuerystring: true, // serialize roles array as `roles=A&roles=B` + }; + + if (!Object.keys(body).length) { + delete options.body; + } + + if (!Object.keys(qs).length) { + delete options.qs; + } + + let result; + try { + let attempts = 0; + + do { + try { + const response = await this.helpers.requestWithAuthentication.call( + this, + 'splunkApi', + options, + ); + result = await parseXml(response); + return result; + } catch (error) { + if (attempts >= 5) { + throw error; + } + await sleep(1000); + attempts++; + } + } while (true); + } catch (error) { + if (error instanceof NodeApiError) throw error; + + if (result === undefined) { + throw new NodeOperationError(this.getNode(), 'No response from API call', { + description: "Try to use 'Retry On Fail' option from node's settings", + }); + } + if (error?.cause?.code === 'ECONNREFUSED') { + throw new NodeApiError(this.getNode(), { ...(error as JsonObject), code: 401 }); + } + + const rawError = (await parseXml(error.error as string)) as SplunkError; + error = extractErrorDescription(rawError); + + if ('fatal' in error) { + error = { error: error.fatal }; + } + + throw new NodeApiError(this.getNode(), error as JsonObject); + } +} + +export async function splunkApiJsonRequest( + this: IExecuteFunctions | ILoadOptionsFunctions, + method: IHttpRequestMethods, + endpoint: string, + body: IDataObject = {}, + qs: IDataObject = {}, +) { + const { baseUrl, allowUnauthorizedCerts } = (await this.getCredentials( + 'splunkApi', + )) as SplunkCredentials; + + qs.output_mode = 'json'; + + const options: IHttpRequestOptions = { + method, + body, + qs: qs ?? {}, + url: `${baseUrl}${endpoint}`, + json: true, + skipSslCertificateValidation: allowUnauthorizedCerts, + }; + + if (!Object.keys(body).length) delete options.body; + + let result; + try { + let attempts = 0; + + do { + try { + result = await this.helpers.httpRequestWithAuthentication.call(this, 'splunkApi', options); + + if (result.entry) { + const { entry } = result; + return (entry as IDataObject[]).map((e) => formatEntry(e, true)); + } + + return result; + } catch (error) { + if (attempts >= 5) { + throw error; + } + await sleep(1000); + attempts++; + } + } while (true); + } catch (error) { + if (error instanceof NodeApiError) throw error; + + if (result === undefined) { + throw new NodeOperationError(this.getNode(), 'No response from API call', { + description: "Try to use 'Retry On Fail' option from node's settings", + }); + } + if (error?.cause?.code === 'ECONNREFUSED') { + throw new NodeApiError(this.getNode(), { ...(error as JsonObject), code: 401 }); + } + + if ('fatal' in error) error = { error: error.fatal }; + + throw new NodeApiError(this.getNode(), error as JsonObject); + } +} diff --git a/packages/nodes-base/nodes/Spontit/Spontit.node.json b/packages/nodes-base/nodes/Spontit/Spontit.node.json index 48fc74c8c0..3b86105ee1 100644 --- a/packages/nodes-base/nodes/Spontit/Spontit.node.json +++ b/packages/nodes-base/nodes/Spontit/Spontit.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/spontit" + "url": "https://docs.n8n.io/integrations/builtin/credentials/spontit/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Spontit/Spontit.node.ts b/packages/nodes-base/nodes/Spontit/Spontit.node.ts index 70f4baf5d0..9e20cd87cd 100644 --- a/packages/nodes-base/nodes/Spontit/Spontit.node.ts +++ b/packages/nodes-base/nodes/Spontit/Spontit.node.ts @@ -5,6 +5,7 @@ import type { INodeType, INodeTypeDescription, } from 'n8n-workflow'; +import { NodeConnectionType } from 'n8n-workflow'; import moment from 'moment-timezone'; import { spontitApiRequest } from './GenericFunctions'; @@ -24,8 +25,8 @@ export class Spontit implements INodeType { defaults: { name: 'Spontit', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'spontitApi', @@ -102,7 +103,7 @@ export class Spontit implements INodeType { returnData.push(responseData as IDataObject); } } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push({ error: error.message }); continue; } diff --git a/packages/nodes-base/nodes/Spotify/IsoCountryCodes.ts b/packages/nodes-base/nodes/Spotify/IsoCountryCodes.ts deleted file mode 100644 index 53196c7a31..0000000000 --- a/packages/nodes-base/nodes/Spotify/IsoCountryCodes.ts +++ /dev/null @@ -1,1000 +0,0 @@ -// `getNewReleases` requires an ISO 3166-1 alpha-2 country code - -export const isoCountryCodes = [ - { - name: 'Afghanistan', - alpha2: 'AF', - }, - { - name: 'Åland Islands', - alpha2: 'AX', - }, - { - name: 'Albania', - alpha2: 'AL', - }, - { - name: 'Algeria', - alpha2: 'DZ', - }, - { - name: 'American Samoa', - alpha2: 'AS', - }, - { - name: 'Andorra', - alpha2: 'AD', - }, - { - name: 'Angola', - alpha2: 'AO', - }, - { - name: 'Anguilla', - alpha2: 'AI', - }, - { - name: 'Antarctica', - alpha2: 'AQ', - }, - { - name: 'Antigua and Barbuda', - alpha2: 'AG', - }, - { - name: 'Argentina', - alpha2: 'AR', - }, - { - name: 'Armenia', - alpha2: 'AM', - }, - { - name: 'Aruba', - alpha2: 'AW', - }, - { - name: 'Australia', - alpha2: 'AU', - }, - { - name: 'Austria', - alpha2: 'AT', - }, - { - name: 'Azerbaijan', - alpha2: 'AZ', - }, - { - name: 'Bahamas (the)', - alpha2: 'BS', - }, - { - name: 'Bahrain', - alpha2: 'BH', - }, - { - name: 'Bangladesh', - alpha2: 'BD', - }, - { - name: 'Barbados', - alpha2: 'BB', - }, - { - name: 'Belarus', - alpha2: 'BY', - }, - { - name: 'Belgium', - alpha2: 'BE', - }, - { - name: 'Belize', - alpha2: 'BZ', - }, - { - name: 'Benin', - alpha2: 'BJ', - }, - { - name: 'Bermuda', - alpha2: 'BM', - }, - { - name: 'Bhutan', - alpha2: 'BT', - }, - { - name: 'Bolivia (Plurinational State of)', - alpha2: 'BO', - }, - { - name: 'Bonaire, Sint Eustatius and Saba', - alpha2: 'BQ', - }, - { - name: 'Bosnia and Herzegovina', - alpha2: 'BA', - }, - { - name: 'Botswana', - alpha2: 'BW', - }, - { - name: 'Bouvet Island', - alpha2: 'BV', - }, - { - name: 'Brazil', - alpha2: 'BR', - }, - { - name: 'British Indian Ocean Territory (the)', - alpha2: 'IO', - }, - { - name: 'Brunei Darussalam', - alpha2: 'BN', - }, - { - name: 'Bulgaria', - alpha2: 'BG', - }, - { - name: 'Burkina Faso', - alpha2: 'BF', - }, - { - name: 'Burundi', - alpha2: 'BI', - }, - { - name: 'Cabo Verde', - alpha2: 'CV', - }, - { - name: 'Cambodia', - alpha2: 'KH', - }, - { - name: 'Cameroon', - alpha2: 'CM', - }, - { - name: 'Canada', - alpha2: 'CA', - }, - { - name: 'Cayman Islands (the)', - alpha2: 'KY', - }, - { - name: 'Central African Republic (the)', - alpha2: 'CF', - }, - { - name: 'Chad', - alpha2: 'TD', - }, - { - name: 'Chile', - alpha2: 'CL', - }, - { - name: 'China', - alpha2: 'CN', - }, - { - name: 'Christmas Island', - alpha2: 'CX', - }, - { - name: 'Cocos (Keeling) Islands (the)', - alpha2: 'CC', - }, - { - name: 'Colombia', - alpha2: 'CO', - }, - { - name: 'Comoros (the)', - alpha2: 'KM', - }, - { - name: 'Congo (the Democratic Republic of the)', - alpha2: 'CD', - }, - { - name: 'Congo (the)', - alpha2: 'CG', - }, - { - name: 'Cook Islands (the)', - alpha2: 'CK', - }, - { - name: 'Costa Rica', - alpha2: 'CR', - }, - { - name: "Côte d'Ivoire", - alpha2: 'CI', - }, - { - name: 'Croatia', - alpha2: 'HR', - }, - { - name: 'Cuba', - alpha2: 'CU', - }, - { - name: 'Curaçao', - alpha2: 'CW', - }, - { - name: 'Cyprus', - alpha2: 'CY', - }, - { - name: 'Czechia', - alpha2: 'CZ', - }, - { - name: 'Denmark', - alpha2: 'DK', - }, - { - name: 'Djibouti', - alpha2: 'DJ', - }, - { - name: 'Dominica', - alpha2: 'DM', - }, - { - name: 'Dominican Republic (the)', - alpha2: 'DO', - }, - { - name: 'Ecuador', - alpha2: 'EC', - }, - { - name: 'Egypt', - alpha2: 'EG', - }, - { - name: 'El Salvador', - alpha2: 'SV', - }, - { - name: 'Equatorial Guinea', - alpha2: 'GQ', - }, - { - name: 'Eritrea', - alpha2: 'ER', - }, - { - name: 'Estonia', - alpha2: 'EE', - }, - { - name: 'Ethiopia', - alpha2: 'ET', - }, - { - name: 'Falkland Islands (the) [Malvinas]', - alpha2: 'FK', - }, - { - name: 'Faroe Islands (the)', - alpha2: 'FO', - }, - { - name: 'Fiji', - alpha2: 'FJ', - }, - { - name: 'Finland', - alpha2: 'FI', - }, - { - name: 'France', - alpha2: 'FR', - }, - { - name: 'French Guiana', - alpha2: 'GF', - }, - { - name: 'French Polynesia', - alpha2: 'PF', - }, - { - name: 'French Southern Territories (the)', - alpha2: 'TF', - }, - { - name: 'Gabon', - alpha2: 'GA', - }, - { - name: 'Gambia (the)', - alpha2: 'GM', - }, - { - name: 'Georgia', - alpha2: 'GE', - }, - { - name: 'Germany', - alpha2: 'DE', - }, - { - name: 'Ghana', - alpha2: 'GH', - }, - { - name: 'Gibraltar', - alpha2: 'GI', - }, - { - name: 'Greece', - alpha2: 'GR', - }, - { - name: 'Greenland', - alpha2: 'GL', - }, - { - name: 'Grenada', - alpha2: 'GD', - }, - { - name: 'Guadeloupe', - alpha2: 'GP', - }, - { - name: 'Guam', - alpha2: 'GU', - }, - { - name: 'Guatemala', - alpha2: 'GT', - }, - { - name: 'Guernsey', - alpha2: 'GG', - }, - { - name: 'Guinea', - alpha2: 'GN', - }, - { - name: 'Guinea-Bissau', - alpha2: 'GW', - }, - { - name: 'Guyana', - alpha2: 'GY', - }, - { - name: 'Haiti', - alpha2: 'HT', - }, - { - name: 'Heard Island and McDonald Islands', - alpha2: 'HM', - }, - { - name: 'Holy See (the)', - alpha2: 'VA', - }, - { - name: 'Honduras', - alpha2: 'HN', - }, - { - name: 'Hong Kong', - alpha2: 'HK', - }, - { - name: 'Hungary', - alpha2: 'HU', - }, - { - name: 'Iceland', - alpha2: 'IS', - }, - { - name: 'India', - alpha2: 'IN', - }, - { - name: 'Indonesia', - alpha2: 'ID', - }, - { - name: 'Iran (Islamic Republic of)', - alpha2: 'IR', - }, - { - name: 'Iraq', - alpha2: 'IQ', - }, - { - name: 'Ireland', - alpha2: 'IE', - }, - { - name: 'Isle of Man', - alpha2: 'IM', - }, - { - name: 'Israel', - alpha2: 'IL', - }, - { - name: 'Italy', - alpha2: 'IT', - }, - { - name: 'Jamaica', - alpha2: 'JM', - }, - { - name: 'Japan', - alpha2: 'JP', - }, - { - name: 'Jersey', - alpha2: 'JE', - }, - { - name: 'Jordan', - alpha2: 'JO', - }, - { - name: 'Kazakhstan', - alpha2: 'KZ', - }, - { - name: 'Kenya', - alpha2: 'KE', - }, - { - name: 'Kiribati', - alpha2: 'KI', - }, - { - name: "Korea (the Democratic People's Republic of)", - alpha2: 'KP', - }, - { - name: 'Korea (the Republic of)', - alpha2: 'KR', - }, - { - name: 'Kuwait', - alpha2: 'KW', - }, - { - name: 'Kyrgyzstan', - alpha2: 'KG', - }, - { - name: "Lao People's Democratic Republic (the)", - alpha2: 'LA', - }, - { - name: 'Latvia', - alpha2: 'LV', - }, - { - name: 'Lebanon', - alpha2: 'LB', - }, - { - name: 'Lesotho', - alpha2: 'LS', - }, - { - name: 'Liberia', - alpha2: 'LR', - }, - { - name: 'Libya', - alpha2: 'LY', - }, - { - name: 'Liechtenstein', - alpha2: 'LI', - }, - { - name: 'Lithuania', - alpha2: 'LT', - }, - { - name: 'Luxembourg', - alpha2: 'LU', - }, - { - name: 'Macao', - alpha2: 'MO', - }, - { - name: 'Macedonia (the former Yugoslav Republic of)', - alpha2: 'MK', - }, - { - name: 'Madagascar', - alpha2: 'MG', - }, - { - name: 'Malawi', - alpha2: 'MW', - }, - { - name: 'Malaysia', - alpha2: 'MY', - }, - { - name: 'Maldives', - alpha2: 'MV', - }, - { - name: 'Mali', - alpha2: 'ML', - }, - { - name: 'Malta', - alpha2: 'MT', - }, - { - name: 'Marshall Islands (the)', - alpha2: 'MH', - }, - { - name: 'Martinique', - alpha2: 'MQ', - }, - { - name: 'Mauritania', - alpha2: 'MR', - }, - { - name: 'Mauritius', - alpha2: 'MU', - }, - { - name: 'Mayotte', - alpha2: 'YT', - }, - { - name: 'Mexico', - alpha2: 'MX', - }, - { - name: 'Micronesia (Federated States of)', - alpha2: 'FM', - }, - { - name: 'Moldova (the Republic of)', - alpha2: 'MD', - }, - { - name: 'Monaco', - alpha2: 'MC', - }, - { - name: 'Mongolia', - alpha2: 'MN', - }, - { - name: 'Montenegro', - alpha2: 'ME', - }, - { - name: 'Montserrat', - alpha2: 'MS', - }, - { - name: 'Morocco', - alpha2: 'MA', - }, - { - name: 'Mozambique', - alpha2: 'MZ', - }, - { - name: 'Myanmar', - alpha2: 'MM', - }, - { - name: 'Namibia', - alpha2: 'NA', - }, - { - name: 'Nauru', - alpha2: 'NR', - }, - { - name: 'Nepal', - alpha2: 'NP', - }, - { - name: 'Netherlands (the)', - alpha2: 'NL', - }, - { - name: 'New Caledonia', - alpha2: 'NC', - }, - { - name: 'New Zealand', - alpha2: 'NZ', - }, - { - name: 'Nicaragua', - alpha2: 'NI', - }, - { - name: 'Niger (the)', - alpha2: 'NE', - }, - { - name: 'Nigeria', - alpha2: 'NG', - }, - { - name: 'Niue', - alpha2: 'NU', - }, - { - name: 'Norfolk Island', - alpha2: 'NF', - }, - { - name: 'Northern Mariana Islands (the)', - alpha2: 'MP', - }, - { - name: 'Norway', - alpha2: 'NO', - }, - { - name: 'Oman', - alpha2: 'OM', - }, - { - name: 'Pakistan', - alpha2: 'PK', - }, - { - name: 'Palau', - alpha2: 'PW', - }, - { - name: 'Palestine, State of', - alpha2: 'PS', - }, - { - name: 'Panama', - alpha2: 'PA', - }, - { - name: 'Papua New Guinea', - alpha2: 'PG', - }, - { - name: 'Paraguay', - alpha2: 'PY', - }, - { - name: 'Peru', - alpha2: 'PE', - }, - { - name: 'Philippines (the)', - alpha2: 'PH', - }, - { - name: 'Pitcairn', - alpha2: 'PN', - }, - { - name: 'Poland', - alpha2: 'PL', - }, - { - name: 'Portugal', - alpha2: 'PT', - }, - { - name: 'Puerto Rico', - alpha2: 'PR', - }, - { - name: 'Qatar', - alpha2: 'QA', - }, - { - name: 'Réunion', - alpha2: 'RE', - }, - { - name: 'Romania', - alpha2: 'RO', - }, - { - name: 'Russian Federation (the)', - alpha2: 'RU', - }, - { - name: 'Rwanda', - alpha2: 'RW', - }, - { - name: 'Saint Barthélemy', - alpha2: 'BL', - }, - { - name: 'Saint Helena, Ascension and Tristan da Cunha', - alpha2: 'SH', - }, - { - name: 'Saint Kitts and Nevis', - alpha2: 'KN', - }, - { - name: 'Saint Lucia', - alpha2: 'LC', - }, - { - name: 'Saint Martin (French part)', - alpha2: 'MF', - }, - { - name: 'Saint Pierre and Miquelon', - alpha2: 'PM', - }, - { - name: 'Saint Vincent and the Grenadines', - alpha2: 'VC', - }, - { - name: 'Samoa', - alpha2: 'WS', - }, - { - name: 'San Marino', - alpha2: 'SM', - }, - { - name: 'Sao Tome and Principe', - alpha2: 'ST', - }, - { - name: 'Saudi Arabia', - alpha2: 'SA', - }, - { - name: 'Senegal', - alpha2: 'SN', - }, - { - name: 'Serbia', - alpha2: 'RS', - }, - { - name: 'Seychelles', - alpha2: 'SC', - }, - { - name: 'Sierra Leone', - alpha2: 'SL', - }, - { - name: 'Singapore', - alpha2: 'SG', - }, - { - name: 'Sint Maarten (Dutch part)', - alpha2: 'SX', - }, - { - name: 'Slovakia', - alpha2: 'SK', - }, - { - name: 'Slovenia', - alpha2: 'SI', - }, - { - name: 'Solomon Islands', - alpha2: 'SB', - }, - { - name: 'Somalia', - alpha2: 'SO', - }, - { - name: 'South Africa', - alpha2: 'ZA', - }, - { - name: 'South Georgia and the South Sandwich Islands', - alpha2: 'GS', - }, - { - name: 'South Sudan', - alpha2: 'SS', - }, - { - name: 'Spain', - alpha2: 'ES', - }, - { - name: 'Sri Lanka', - alpha2: 'LK', - }, - { - name: 'Sudan (the)', - alpha2: 'SD', - }, - { - name: 'Suriname', - alpha2: 'SR', - }, - { - name: 'Svalbard and Jan Mayen', - alpha2: 'SJ', - }, - { - name: 'Swaziland', - alpha2: 'SZ', - }, - { - name: 'Sweden', - alpha2: 'SE', - }, - { - name: 'Switzerland', - alpha2: 'CH', - }, - { - name: 'Syrian Arab Republic', - alpha2: 'SY', - }, - { - name: 'Taiwan (Province of China)', - alpha2: 'TW', - }, - { - name: 'Tajikistan', - alpha2: 'TJ', - }, - { - name: 'Tanzania, United Republic of', - alpha2: 'TZ', - }, - { - name: 'Thailand', - alpha2: 'TH', - }, - { - name: 'Timor-Leste', - alpha2: 'TL', - }, - { - name: 'Togo', - alpha2: 'TG', - }, - { - name: 'Tokelau', - alpha2: 'TK', - }, - { - name: 'Tonga', - alpha2: 'TO', - }, - { - name: 'Trinidad and Tobago', - alpha2: 'TT', - }, - { - name: 'Tunisia', - alpha2: 'TN', - }, - { - name: 'Turkey', - alpha2: 'TR', - }, - { - name: 'Turkmenistan', - alpha2: 'TM', - }, - { - name: 'Turks and Caicos Islands (the)', - alpha2: 'TC', - }, - { - name: 'Tuvalu', - alpha2: 'TV', - }, - { - name: 'Uganda', - alpha2: 'UG', - }, - { - name: 'Ukraine', - alpha2: 'UA', - }, - { - name: 'United Arab Emirates (the)', - alpha2: 'AE', - }, - { - name: 'United Kingdom of Great Britain and Northern Ireland (the)', - alpha2: 'GB', - }, - { - name: 'United States Minor Outlying Islands (the)', - alpha2: 'UM', - }, - { - name: 'United States of America (the)', - alpha2: 'US', - }, - { - name: 'Uruguay', - alpha2: 'UY', - }, - { - name: 'Uzbekistan', - alpha2: 'UZ', - }, - { - name: 'Vanuatu', - alpha2: 'VU', - }, - { - name: 'Venezuela (Bolivarian Republic of)', - alpha2: 'VE', - }, - { - name: 'Viet Nam', - alpha2: 'VN', - }, - { - name: 'Virgin Islands (British)', - alpha2: 'VG', - }, - { - name: 'Virgin Islands (U.S.)', - alpha2: 'VI', - }, - { - name: 'Wallis and Futuna', - alpha2: 'WF', - }, - { - name: 'Western Sahara*', - alpha2: 'EH', - }, - { - name: 'Yemen', - alpha2: 'YE', - }, - { - name: 'Zambia', - alpha2: 'ZM', - }, - { - name: 'Zimbabwe', - alpha2: 'ZW', - }, -]; diff --git a/packages/nodes-base/nodes/Spotify/Spotify.node.json b/packages/nodes-base/nodes/Spotify/Spotify.node.json index 2aaa3003ab..14ba24648f 100644 --- a/packages/nodes-base/nodes/Spotify/Spotify.node.json +++ b/packages/nodes-base/nodes/Spotify/Spotify.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/spotify" + "url": "https://docs.n8n.io/integrations/builtin/credentials/spotify/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Spotify/Spotify.node.ts b/packages/nodes-base/nodes/Spotify/Spotify.node.ts index 4da6196cc6..b951831c3b 100644 --- a/packages/nodes-base/nodes/Spotify/Spotify.node.ts +++ b/packages/nodes-base/nodes/Spotify/Spotify.node.ts @@ -1,15 +1,16 @@ -import type { - IExecuteFunctions, - IDataObject, - INodeExecutionData, - INodeType, - INodeTypeDescription, - IHttpRequestMethods, +import { + type IExecuteFunctions, + type IDataObject, + type INodeExecutionData, + type INodeType, + type INodeTypeDescription, + type IHttpRequestMethods, + NodeConnectionType, } from 'n8n-workflow'; import { spotifyApiRequest, spotifyApiRequestAllItems } from './GenericFunctions'; -import { isoCountryCodes } from './IsoCountryCodes'; +import { isoCountryCodes } from '@utils/ISOCountryCodes'; export class Spotify implements INodeType { description: INodeTypeDescription = { @@ -23,8 +24,8 @@ export class Spotify implements INodeType { defaults: { name: 'Spotify', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'spotifyOAuth2Api', @@ -1313,7 +1314,7 @@ export class Spotify implements INodeType { ); returnData.push(...executionData); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { const executionData = this.helpers.constructExecutionMetaData( this.helpers.returnJsonArray({ error: error.message }), { itemData: { item: i } }, diff --git a/packages/nodes-base/nodes/SpreadsheetFile/description.ts b/packages/nodes-base/nodes/SpreadsheetFile/description.ts index aac07f44d8..41c7ed21e8 100644 --- a/packages/nodes-base/nodes/SpreadsheetFile/description.ts +++ b/packages/nodes-base/nodes/SpreadsheetFile/description.ts @@ -102,7 +102,7 @@ export const toFileOptions: INodeProperties = { displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, displayOptions: { show: { @@ -156,7 +156,7 @@ export const fromFileOptions: INodeProperties = { displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, displayOptions: { show: { diff --git a/packages/nodes-base/nodes/SpreadsheetFile/v1/SpreadsheetFileV1.node.ts b/packages/nodes-base/nodes/SpreadsheetFile/v1/SpreadsheetFileV1.node.ts index 9d5c71d7b8..99c7cc80bb 100644 --- a/packages/nodes-base/nodes/SpreadsheetFile/v1/SpreadsheetFileV1.node.ts +++ b/packages/nodes-base/nodes/SpreadsheetFile/v1/SpreadsheetFileV1.node.ts @@ -6,7 +6,7 @@ import type { INodeTypeBaseDescription, INodeTypeDescription, } from 'n8n-workflow'; -import { BINARY_ENCODING, NodeOperationError } from 'n8n-workflow'; +import { BINARY_ENCODING, NodeConnectionType, NodeOperationError } from 'n8n-workflow'; import type { JSON2SheetOpts, @@ -43,8 +43,8 @@ export class SpreadsheetFileV1 implements INodeType { name: 'Spreadsheet File', color: '#2244FF', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], properties: [ oldVersionNotice, operationProperty, @@ -155,7 +155,7 @@ export class SpreadsheetFileV1 implements INodeType { } } } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { newItems.push({ json: { error: error.message, @@ -242,7 +242,7 @@ export class SpreadsheetFileV1 implements INodeType { newItems.push(newItem); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { newItems.push({ json: { error: error.message, diff --git a/packages/nodes-base/nodes/SpreadsheetFile/v2/SpreadsheetFileV2.node.ts b/packages/nodes-base/nodes/SpreadsheetFile/v2/SpreadsheetFileV2.node.ts index c1a75b69a9..4694c3efa9 100644 --- a/packages/nodes-base/nodes/SpreadsheetFile/v2/SpreadsheetFileV2.node.ts +++ b/packages/nodes-base/nodes/SpreadsheetFile/v2/SpreadsheetFileV2.node.ts @@ -5,6 +5,7 @@ import type { INodeTypeBaseDescription, INodeTypeDescription, } from 'n8n-workflow'; +import { NodeConnectionType } from 'n8n-workflow'; import { operationProperty } from '../description'; import * as fromFile from './fromFile.operation'; @@ -21,8 +22,8 @@ export class SpreadsheetFileV2 implements INodeType { name: 'Spreadsheet File', color: '#2244FF', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], properties: [operationProperty, ...fromFile.description, ...toFile.description], }; } diff --git a/packages/nodes-base/nodes/SpreadsheetFile/v2/fromFile.operation.ts b/packages/nodes-base/nodes/SpreadsheetFile/v2/fromFile.operation.ts index de0e41ba61..719faeb478 100644 --- a/packages/nodes-base/nodes/SpreadsheetFile/v2/fromFile.operation.ts +++ b/packages/nodes-base/nodes/SpreadsheetFile/v2/fromFile.operation.ts @@ -209,7 +209,7 @@ export async function execute( error.message = `The file selected in 'Input Binary Field' is not in ${fileFormat} format`; errorDescription = `Try to change the operation or select a ${fileFormat} file in 'Input Binary Field'`; } - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push({ json: { error: error.message, diff --git a/packages/nodes-base/nodes/SpreadsheetFile/v2/toFile.operation.ts b/packages/nodes-base/nodes/SpreadsheetFile/v2/toFile.operation.ts index 85948b9915..61f8f8509e 100644 --- a/packages/nodes-base/nodes/SpreadsheetFile/v2/toFile.operation.ts +++ b/packages/nodes-base/nodes/SpreadsheetFile/v2/toFile.operation.ts @@ -29,7 +29,7 @@ export async function execute(this: IExecuteFunctions, items: INodeExecutionData returnData.push(newItem); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push({ json: { error: error.message, diff --git a/packages/nodes-base/nodes/SseTrigger/SseTrigger.node.ts b/packages/nodes-base/nodes/SseTrigger/SseTrigger.node.ts index 48324668a6..5f93687bf1 100644 --- a/packages/nodes-base/nodes/SseTrigger/SseTrigger.node.ts +++ b/packages/nodes-base/nodes/SseTrigger/SseTrigger.node.ts @@ -6,7 +6,7 @@ import type { INodeTypeDescription, ITriggerResponse, } from 'n8n-workflow'; -import { jsonParse } from 'n8n-workflow'; +import { NodeConnectionType, jsonParse } from 'n8n-workflow'; export class SseTrigger implements INodeType { description: INodeTypeDescription = { @@ -35,7 +35,7 @@ export class SseTrigger implements INodeType { "Once you’ve finished building your workflow, activate it to have it also listen continuously (you just won’t see those executions here).", }, inputs: [], - outputs: ['main'], + outputs: [NodeConnectionType.Main], properties: [ { displayName: 'URL', diff --git a/packages/nodes-base/nodes/Ssh/Ssh.node.ts b/packages/nodes-base/nodes/Ssh/Ssh.node.ts index eaf193df65..322e53bd75 100644 --- a/packages/nodes-base/nodes/Ssh/Ssh.node.ts +++ b/packages/nodes-base/nodes/Ssh/Ssh.node.ts @@ -1,4 +1,4 @@ -import { rm, writeFile } from 'fs/promises'; +import { writeFile } from 'fs/promises'; import type { Readable } from 'stream'; import type { ICredentialTestFunctions, @@ -10,7 +10,7 @@ import type { INodeType, INodeTypeDescription, } from 'n8n-workflow'; -import { BINARY_ENCODING, NodeOperationError } from 'n8n-workflow'; +import { BINARY_ENCODING, NodeConnectionType, NodeOperationError } from 'n8n-workflow'; import { file as tmpFile } from 'tmp-promise'; @@ -61,8 +61,8 @@ export class Ssh implements INodeType { name: 'SSH', color: '#000000', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'sshPassword', @@ -256,7 +256,7 @@ export class Ssh implements INodeType { displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', displayOptions: { show: { resource: ['file'], @@ -285,8 +285,6 @@ export class Ssh implements INodeType { ): Promise { const credentials = credential.data as IDataObject; const ssh = new NodeSSH(); - const temporaryFiles: string[] = []; - try { if (!credentials.privateKey) { await ssh.connect({ @@ -317,7 +315,6 @@ export class Ssh implements INodeType { }; } finally { ssh.dispose(); - for (const tempFile of temporaryFiles) await rm(tempFile); } return { status: 'OK', @@ -336,8 +333,6 @@ export class Ssh implements INodeType { const operation = this.getNodeParameter('operation', 0); const authentication = this.getNodeParameter('authentication', 0) as string; - const temporaryFiles: string[] = []; - const ssh = new NodeSSH(); try { @@ -396,33 +391,35 @@ export class Ssh implements INodeType { i, ); - const { path } = await tmpFile({ prefix: 'n8n-ssh-' }); - temporaryFiles.push(path); + const binaryFile = await tmpFile({ prefix: 'n8n-ssh-' }); + try { + await ssh.getFile(binaryFile.path, parameterPath); - await ssh.getFile(path, parameterPath); + const newItem: INodeExecutionData = { + json: items[i].json, + binary: {}, + pairedItem: { + item: i, + }, + }; - const newItem: INodeExecutionData = { - json: items[i].json, - binary: {}, - pairedItem: { - item: i, - }, - }; + if (items[i].binary !== undefined && newItem.binary) { + // Create a shallow copy of the binary data so that the old + // data references which do not get changed still stay behind + // but the incoming data does not get changed. + Object.assign(newItem.binary, items[i].binary); + } - if (items[i].binary !== undefined && newItem.binary) { - // Create a shallow copy of the binary data so that the old - // data references which do not get changed still stay behind - // but the incoming data does not get changed. - Object.assign(newItem.binary, items[i].binary); + items[i] = newItem; + + const fileName = this.getNodeParameter('options.fileName', i, '') as string; + items[i].binary![dataPropertyNameDownload] = await this.nodeHelpers.copyBinaryFile( + binaryFile.path, + fileName || parameterPath, + ); + } finally { + await binaryFile.cleanup(); } - - items[i] = newItem; - - const fileName = this.getNodeParameter('options.fileName', i, '') as string; - items[i].binary![dataPropertyNameDownload] = await this.nodeHelpers.copyBinaryFile( - path, - fileName || parameterPath, - ); } if (operation === 'upload') { @@ -444,29 +441,32 @@ export class Ssh implements INodeType { uploadData = Buffer.from(binaryData.data, BINARY_ENCODING); } - const { path } = await tmpFile({ prefix: 'n8n-ssh-' }); - temporaryFiles.push(path); - await writeFile(path, uploadData); + const binaryFile = await tmpFile({ prefix: 'n8n-ssh-' }); + try { + await writeFile(binaryFile.path, uploadData); - await ssh.putFile( - path, - `${parameterPath}${ - parameterPath.charAt(parameterPath.length - 1) === '/' ? '' : '/' - }${fileName || binaryData.fileName}`, - ); + await ssh.putFile( + binaryFile.path, + `${parameterPath}${ + parameterPath.charAt(parameterPath.length - 1) === '/' ? '' : '/' + }${fileName || binaryData.fileName}`, + ); - returnItems.push({ - json: { - success: true, - }, - pairedItem: { - item: i, - }, - }); + returnItems.push({ + json: { + success: true, + }, + pairedItem: { + item: i, + }, + }); + } finally { + await binaryFile.cleanup(); + } } } } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { if (resource === 'file' && operation === 'download') { items[i] = { json: { @@ -488,16 +488,10 @@ export class Ssh implements INodeType { throw error; } } - } catch (error) { + } finally { ssh.dispose(); - for (const tempFile of temporaryFiles) await rm(tempFile); - throw error; } - for (const tempFile of temporaryFiles) await rm(tempFile); - - ssh.dispose(); - if (resource === 'file' && operation === 'download') { // For file downloads the files get attached to the existing items return [items]; diff --git a/packages/nodes-base/nodes/Stackby/Stackby.node.json b/packages/nodes-base/nodes/Stackby/Stackby.node.json index 442d6e7d61..9551ca2b93 100644 --- a/packages/nodes-base/nodes/Stackby/Stackby.node.json +++ b/packages/nodes-base/nodes/Stackby/Stackby.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/stackby" + "url": "https://docs.n8n.io/integrations/builtin/credentials/stackby/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Stackby/Stackby.node.ts b/packages/nodes-base/nodes/Stackby/Stackby.node.ts index 5cccaf4521..72c9ef4a18 100644 --- a/packages/nodes-base/nodes/Stackby/Stackby.node.ts +++ b/packages/nodes-base/nodes/Stackby/Stackby.node.ts @@ -5,7 +5,7 @@ import type { INodeType, INodeTypeDescription, } from 'n8n-workflow'; -import { NodeOperationError } from 'n8n-workflow'; +import { NodeConnectionType, NodeOperationError } from 'n8n-workflow'; import { generatePairedItemData } from '../../utils/utilities'; import type { IRecord } from './GenericFunction'; @@ -23,8 +23,8 @@ export class Stackby implements INodeType { defaults: { name: 'Stackby', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'stackbyApi', @@ -192,7 +192,7 @@ export class Stackby implements INodeType { responseData.map((data: any) => data.field) as INodeExecutionData[], ); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { const executionErrorData = this.helpers.constructExecutionMetaData( this.helpers.returnJsonArray({ error: error.message }), { itemData: { item: i } }, @@ -228,7 +228,7 @@ export class Stackby implements INodeType { returnData.push(...executionData); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { const executionErrorData = this.helpers.constructExecutionMetaData( this.helpers.returnJsonArray({ error: error.message }), { itemData: { item: i } }, @@ -282,7 +282,7 @@ export class Stackby implements INodeType { responseData.map((data: any) => data.field) as INodeExecutionData[], ); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { const itemData = generatePairedItemData(items.length); const executionErrorData = this.helpers.constructExecutionMetaData( this.helpers.returnJsonArray({ error: error.message }), @@ -332,7 +332,7 @@ export class Stackby implements INodeType { responseData.map((data: any) => data.field) as INodeExecutionData[], ); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { const executionErrorData = this.helpers.constructExecutionMetaData( this.helpers.returnJsonArray({ error: error.message }), { itemData: { item: i } }, diff --git a/packages/nodes-base/nodes/Start/Start.node.ts b/packages/nodes-base/nodes/Start/Start.node.ts index 7affed7c2c..4405e9def7 100644 --- a/packages/nodes-base/nodes/Start/Start.node.ts +++ b/packages/nodes-base/nodes/Start/Start.node.ts @@ -1,8 +1,9 @@ -import type { - IExecuteFunctions, - INodeExecutionData, - INodeType, - INodeTypeDescription, +import { + NodeConnectionType, + type IExecuteFunctions, + type INodeExecutionData, + type INodeType, + type INodeTypeDescription, } from 'n8n-workflow'; export class Start implements INodeType { @@ -19,9 +20,9 @@ export class Start implements INodeType { name: 'Start', color: '#00e000', }, - // eslint-disable-next-line n8n-nodes-base/node-class-description-inputs-wrong-regular-node + inputs: [], - outputs: ['main'], + outputs: [NodeConnectionType.Main], properties: [ { displayName: diff --git a/packages/nodes-base/nodes/StickyNote/StickyNote.node.ts b/packages/nodes-base/nodes/StickyNote/StickyNote.node.ts index 06106e0dad..3be50c00cb 100644 --- a/packages/nodes-base/nodes/StickyNote/StickyNote.node.ts +++ b/packages/nodes-base/nodes/StickyNote/StickyNote.node.ts @@ -17,9 +17,9 @@ export class StickyNote implements INodeType { name: 'Sticky Note', color: '#FFD233', }, - // eslint-disable-next-line n8n-nodes-base/node-class-description-inputs-wrong-regular-node + inputs: [], - // eslint-disable-next-line n8n-nodes-base/node-class-description-outputs-wrong + outputs: [], properties: [ { diff --git a/packages/nodes-base/nodes/StopAndError/StopAndError.node.ts b/packages/nodes-base/nodes/StopAndError/StopAndError.node.ts index addd4c0cf9..7007f81530 100644 --- a/packages/nodes-base/nodes/StopAndError/StopAndError.node.ts +++ b/packages/nodes-base/nodes/StopAndError/StopAndError.node.ts @@ -5,7 +5,7 @@ import type { INodeTypeDescription, JsonObject, } from 'n8n-workflow'; -import { jsonParse, NodeOperationError } from 'n8n-workflow'; +import { jsonParse, NodeConnectionType, NodeOperationError } from 'n8n-workflow'; const errorObjectPlaceholder = `{ "code": "404", @@ -25,8 +25,8 @@ export class StopAndError implements INodeType { name: 'Stop and Error', color: '#ff0000', }, - inputs: ['main'], - // eslint-disable-next-line n8n-nodes-base/node-class-description-outputs-wrong + inputs: [NodeConnectionType.Main], + outputs: [], properties: [ { diff --git a/packages/nodes-base/nodes/Storyblok/StoryManagementDescription.ts b/packages/nodes-base/nodes/Storyblok/StoryManagementDescription.ts index 67b0f21334..75cef40e4a 100644 --- a/packages/nodes-base/nodes/Storyblok/StoryManagementDescription.ts +++ b/packages/nodes-base/nodes/Storyblok/StoryManagementDescription.ts @@ -327,7 +327,7 @@ export const storyManagementFields: INodeProperties[] = [ }, }, description: - 'The name of the space. Choose from the list, or specify an ID using an expression.', + 'The name of the space. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Story ID', @@ -365,7 +365,7 @@ export const storyManagementFields: INodeProperties[] = [ }, }, description: - 'The name of the space. Choose from the list, or specify an ID using an expression.', + 'The name of the space. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Story ID', @@ -403,7 +403,7 @@ export const storyManagementFields: INodeProperties[] = [ }, }, description: - 'The name of the space. Choose from the list, or specify an ID using an expression.', + 'The name of the space. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Return All', @@ -482,7 +482,7 @@ export const storyManagementFields: INodeProperties[] = [ }, }, description: - 'The name of the space. Choose from the list, or specify an ID using an expression.', + 'The name of the space. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Story ID', @@ -503,7 +503,7 @@ export const storyManagementFields: INodeProperties[] = [ displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', displayOptions: { show: { source: ['managementApi'], @@ -551,7 +551,7 @@ export const storyManagementFields: INodeProperties[] = [ }, }, description: - 'The name of the space. Choose from the list, or specify an ID using an expression.', + 'The name of the space. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Story ID', diff --git a/packages/nodes-base/nodes/Storyblok/Storyblok.node.json b/packages/nodes-base/nodes/Storyblok/Storyblok.node.json index b9db04104e..1658fb3603 100644 --- a/packages/nodes-base/nodes/Storyblok/Storyblok.node.json +++ b/packages/nodes-base/nodes/Storyblok/Storyblok.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/storyblok" + "url": "https://docs.n8n.io/integrations/builtin/credentials/storyblok/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Storyblok/Storyblok.node.ts b/packages/nodes-base/nodes/Storyblok/Storyblok.node.ts index c0c45609a7..c921e6a26d 100644 --- a/packages/nodes-base/nodes/Storyblok/Storyblok.node.ts +++ b/packages/nodes-base/nodes/Storyblok/Storyblok.node.ts @@ -7,6 +7,7 @@ import type { INodeType, INodeTypeDescription, } from 'n8n-workflow'; +import { NodeConnectionType } from 'n8n-workflow'; import { storyblokApiRequest, storyblokApiRequestAllItems } from './GenericFunctions'; @@ -26,8 +27,8 @@ export class Storyblok implements INodeType { defaults: { name: 'Storyblok', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'storyblokContentApi', @@ -348,7 +349,7 @@ export class Storyblok implements INodeType { returnData.push(...executionData); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { const executionErrorData = this.helpers.constructExecutionMetaData( this.helpers.returnJsonArray({ error: error.message }), { itemData: { item: i } }, diff --git a/packages/nodes-base/nodes/Strapi/Strapi.node.json b/packages/nodes-base/nodes/Strapi/Strapi.node.json index 07df9ead6d..1129cb5c7e 100644 --- a/packages/nodes-base/nodes/Strapi/Strapi.node.json +++ b/packages/nodes-base/nodes/Strapi/Strapi.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/integrations/builtin/credentials/strapi" + "url": "https://docs.n8n.io/integrations/builtin/credentials/strapi/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Strapi/Strapi.node.ts b/packages/nodes-base/nodes/Strapi/Strapi.node.ts index 277f67e0d8..c3ff781b6f 100644 --- a/packages/nodes-base/nodes/Strapi/Strapi.node.ts +++ b/packages/nodes-base/nodes/Strapi/Strapi.node.ts @@ -9,7 +9,7 @@ import type { INodeTypeDescription, IRequestOptions, } from 'n8n-workflow'; -import { NodeOperationError } from 'n8n-workflow'; +import { NodeConnectionType, NodeOperationError } from 'n8n-workflow'; import { getToken, @@ -33,8 +33,8 @@ export class Strapi implements INodeType { defaults: { name: 'Strapi', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'strapiApi', @@ -389,7 +389,7 @@ export class Strapi implements INodeType { } } } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { const executionErrorData = this.helpers.constructExecutionMetaData( this.helpers.returnJsonArray({ error: error.message }), { itemData: { item: i } }, diff --git a/packages/nodes-base/nodes/Strava/GenericFunctions.ts b/packages/nodes-base/nodes/Strava/GenericFunctions.ts index d5488b7e0e..deaeb425b3 100644 --- a/packages/nodes-base/nodes/Strava/GenericFunctions.ts +++ b/packages/nodes-base/nodes/Strava/GenericFunctions.ts @@ -36,14 +36,13 @@ export async function stravaApiRequest( if (this.getNode().type.includes('Trigger') && resource.includes('/push_subscriptions')) { const credentials = await this.getCredentials('stravaOAuth2Api'); - if (method === 'GET') { + if (method === 'GET' || method === 'DELETE') { qs.client_id = credentials.clientId; qs.client_secret = credentials.clientSecret; } else { body.client_id = credentials.clientId; body.client_secret = credentials.clientSecret; } - return await this.helpers?.request(options); } else { return await this.helpers.requestOAuth2.call(this, 'stravaOAuth2Api', options, { diff --git a/packages/nodes-base/nodes/Strava/Strava.node.json b/packages/nodes-base/nodes/Strava/Strava.node.json index 0617bf3a99..fc6a0ea219 100644 --- a/packages/nodes-base/nodes/Strava/Strava.node.json +++ b/packages/nodes-base/nodes/Strava/Strava.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/strava" + "url": "https://docs.n8n.io/integrations/builtin/credentials/strava/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Strava/Strava.node.ts b/packages/nodes-base/nodes/Strava/Strava.node.ts index d732a0f747..48f01c78f5 100644 --- a/packages/nodes-base/nodes/Strava/Strava.node.ts +++ b/packages/nodes-base/nodes/Strava/Strava.node.ts @@ -5,6 +5,7 @@ import type { INodeType, INodeTypeDescription, } from 'n8n-workflow'; +import { NodeConnectionType } from 'n8n-workflow'; import moment from 'moment-timezone'; import { stravaApiRequest, stravaApiRequestAllItems } from './GenericFunctions'; @@ -23,8 +24,8 @@ export class Strava implements INodeType { defaults: { name: 'Strava', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'stravaOAuth2Api', @@ -186,7 +187,7 @@ export class Strava implements INodeType { returnData.push(...executionData); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { const executionErrorData = this.helpers.constructExecutionMetaData( this.helpers.returnJsonArray({ error: error.message }), { itemData: { item: i } }, diff --git a/packages/nodes-base/nodes/Strava/StravaTrigger.node.json b/packages/nodes-base/nodes/Strava/StravaTrigger.node.json index db46bfaa7c..5164322bbb 100644 --- a/packages/nodes-base/nodes/Strava/StravaTrigger.node.json +++ b/packages/nodes-base/nodes/Strava/StravaTrigger.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/strava" + "url": "https://docs.n8n.io/integrations/builtin/credentials/strava/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Strava/StravaTrigger.node.ts b/packages/nodes-base/nodes/Strava/StravaTrigger.node.ts index c937825e5f..f4eb8d8cf1 100644 --- a/packages/nodes-base/nodes/Strava/StravaTrigger.node.ts +++ b/packages/nodes-base/nodes/Strava/StravaTrigger.node.ts @@ -7,6 +7,7 @@ import type { INodeTypeDescription, IWebhookResponseData, } from 'n8n-workflow'; +import { NodeConnectionType } from 'n8n-workflow'; import { stravaApiRequest } from './GenericFunctions'; @@ -22,7 +23,7 @@ export class StravaTrigger implements INodeType { name: 'Strava Trigger', }, inputs: [], - outputs: ['main'], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'stravaOAuth2Api', @@ -101,7 +102,7 @@ export class StravaTrigger implements INodeType { displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, options: [ { @@ -111,7 +112,7 @@ export class StravaTrigger implements INodeType { default: false, // eslint-disable-next-line n8n-nodes-base/node-param-description-boolean-without-whether description: - 'Strava allows just one subscription at all times. If you want to delete the current subscription to make room for a new subcription with the current parameters, set this parameter to true. Keep in mind this is a destructive operation.', + 'Strava allows just one subscription at all times. If you want to delete the current subscription to make room for a new subscription with the current parameters, set this parameter to true. Keep in mind this is a destructive operation.', }, ], }, @@ -154,9 +155,8 @@ export class StravaTrigger implements INodeType { try { responseData = await stravaApiRequest.call(this, 'POST', endpoint, body); } catch (error) { - const apiErrorResponse = error.cause.response; - if (apiErrorResponse?.body?.errors) { - const errors = apiErrorResponse.body.errors; + if (error?.cause?.error) { + const errors = error?.cause?.error?.errors; for (error of errors) { // if there is a subscription already created if (error.resource === 'PushSubscription' && error.code === 'already exists') { @@ -176,6 +176,7 @@ export class StravaTrigger implements INodeType { 'DELETE', `/push_subscriptions/${webhooks[0].id}`, ); + // now there is room create a subscription with the n8n data const requestBody = { callback_url: webhookUrl, @@ -189,7 +190,7 @@ export class StravaTrigger implements INodeType { requestBody, ); } else { - error.message = `A subscription already exists [${webhooks[0].callback_url}]. If you want to delete this subcription and create a new one with the current parameters please go to options and set delete if exist to true`; + error.message = `A subscription already exists [${webhooks[0].callback_url}]. If you want to delete this subscription and create a new one with the current parameters please go to options and set delete if exist to true`; throw error; } } diff --git a/packages/nodes-base/nodes/Stripe/Stripe.node.json b/packages/nodes-base/nodes/Stripe/Stripe.node.json index 64a7746d43..2c60cce97c 100644 --- a/packages/nodes-base/nodes/Stripe/Stripe.node.json +++ b/packages/nodes-base/nodes/Stripe/Stripe.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/stripe" + "url": "https://docs.n8n.io/integrations/builtin/credentials/stripe/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Stripe/Stripe.node.ts b/packages/nodes-base/nodes/Stripe/Stripe.node.ts index b1d02b9981..2c8b3042a1 100644 --- a/packages/nodes-base/nodes/Stripe/Stripe.node.ts +++ b/packages/nodes-base/nodes/Stripe/Stripe.node.ts @@ -7,7 +7,7 @@ import type { INodeType, INodeTypeDescription, } from 'n8n-workflow'; -import { NodeOperationError } from 'n8n-workflow'; +import { NodeConnectionType, NodeOperationError } from 'n8n-workflow'; import isEmpty from 'lodash/isEmpty'; @@ -48,8 +48,8 @@ export class Stripe implements INodeType { defaults: { name: 'Stripe', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'stripeApi', @@ -464,7 +464,7 @@ export class Stripe implements INodeType { } } } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { const executionErrorData = this.helpers.constructExecutionMetaData( this.helpers.returnJsonArray({ error: error.message }), { itemData: { item: i } }, diff --git a/packages/nodes-base/nodes/Stripe/StripeTrigger.node.json b/packages/nodes-base/nodes/Stripe/StripeTrigger.node.json index 6eca34002f..87485c4539 100644 --- a/packages/nodes-base/nodes/Stripe/StripeTrigger.node.json +++ b/packages/nodes-base/nodes/Stripe/StripeTrigger.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/stripe" + "url": "https://docs.n8n.io/integrations/builtin/credentials/stripe/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Stripe/StripeTrigger.node.ts b/packages/nodes-base/nodes/Stripe/StripeTrigger.node.ts index 6d2837237e..d255550254 100644 --- a/packages/nodes-base/nodes/Stripe/StripeTrigger.node.ts +++ b/packages/nodes-base/nodes/Stripe/StripeTrigger.node.ts @@ -8,7 +8,7 @@ import type { IWebhookResponseData, JsonObject, } from 'n8n-workflow'; -import { NodeApiError } from 'n8n-workflow'; +import { NodeApiError, NodeConnectionType } from 'n8n-workflow'; import { stripeApiRequest } from './helpers'; @@ -24,7 +24,7 @@ export class StripeTrigger implements INodeType { name: 'Stripe Trigger', }, inputs: [], - outputs: ['main'], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'stripeApi', @@ -865,12 +865,15 @@ export class StripeTrigger implements INodeType { async create(this: IHookFunctions): Promise { const webhookUrl = this.getNodeWebhookUrl('default'); + const webhookDescription = `Created by n8n for workflow ID: ${this.getWorkflow().id}`; + const events = this.getNodeParameter('events', []); const endpoint = '/webhook_endpoints'; const body = { url: webhookUrl, + description: webhookDescription, enabled_events: events, }; diff --git a/packages/nodes-base/nodes/Stripe/descriptions/ChargeDescription.ts b/packages/nodes-base/nodes/Stripe/descriptions/ChargeDescription.ts index f76a522eb4..b5b2cf67a6 100644 --- a/packages/nodes-base/nodes/Stripe/descriptions/ChargeDescription.ts +++ b/packages/nodes-base/nodes/Stripe/descriptions/ChargeDescription.ts @@ -88,7 +88,7 @@ export const chargeFields: INodeProperties[] = [ required: true, default: '', description: - 'Three-letter ISO currency code, e.g. USD or EUR. It must be a Stripe-supported currency. Choose from the list, or specify an ID using an expression.', + 'Three-letter ISO currency code, e.g. USD or EUR. It must be a Stripe-supported currency. Choose from the list, or specify an ID using an expression.', displayOptions: { show: { resource: ['charge'], diff --git a/packages/nodes-base/nodes/Stripe/descriptions/CouponDescription.ts b/packages/nodes-base/nodes/Stripe/descriptions/CouponDescription.ts index b1e612e3b8..096a3c5fea 100644 --- a/packages/nodes-base/nodes/Stripe/descriptions/CouponDescription.ts +++ b/packages/nodes-base/nodes/Stripe/descriptions/CouponDescription.ts @@ -111,7 +111,7 @@ export const couponFields: INodeProperties[] = [ required: true, default: '', description: - 'Three-letter ISO currency code, e.g. USD or EUR. It must be a Stripe-supported currency. Choose from the list, or specify an ID using an expression.', + 'Three-letter ISO currency code, e.g. USD or EUR. It must be a Stripe-supported currency. Choose from the list, or specify an ID using an expression.', displayOptions: { show: { resource: ['coupon'], diff --git a/packages/nodes-base/nodes/Stripe/descriptions/SourceDescription.ts b/packages/nodes-base/nodes/Stripe/descriptions/SourceDescription.ts index 7f2b15006b..e4c8481f3b 100644 --- a/packages/nodes-base/nodes/Stripe/descriptions/SourceDescription.ts +++ b/packages/nodes-base/nodes/Stripe/descriptions/SourceDescription.ts @@ -100,7 +100,7 @@ export const sourceFields: INodeProperties[] = [ }, default: '', description: - 'Three-letter ISO currency code, e.g. USD or EUR. It must be a Stripe-supported currency. Choose from the list, or specify an ID using an expression.', + 'Three-letter ISO currency code, e.g. USD or EUR. It must be a Stripe-supported currency. Choose from the list, or specify an ID using an expression.', displayOptions: { show: { resource: ['source'], diff --git a/packages/nodes-base/nodes/Supabase/GenericFunctions.ts b/packages/nodes-base/nodes/Supabase/GenericFunctions.ts index b66248f9f5..50df54863e 100644 --- a/packages/nodes-base/nodes/Supabase/GenericFunctions.ts +++ b/packages/nodes-base/nodes/Supabase/GenericFunctions.ts @@ -23,10 +23,10 @@ export async function supabaseApiRequest( uri?: string, headers: IDataObject = {}, ) { - const credentials = (await this.getCredentials('supabaseApi')) as { + const credentials = await this.getCredentials<{ host: string; serviceRole: string; - }; + }>('supabaseApi'); const options: IRequestOptions = { headers: { @@ -142,7 +142,7 @@ export function getFilters( name: 'keyName', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsDependsOn: ['tableId'], loadOptionsMethod: 'getTableColumns', @@ -242,7 +242,7 @@ export function getFilters( }, { displayName: - 'See PostgREST guide to creating filters', + 'See PostgREST guide to creating filters', name: 'jsonNotice', type: 'notice', displayOptions: { diff --git a/packages/nodes-base/nodes/Supabase/RowDescription.ts b/packages/nodes-base/nodes/Supabase/RowDescription.ts index d8fb67e6d2..eafe601752 100644 --- a/packages/nodes-base/nodes/Supabase/RowDescription.ts +++ b/packages/nodes-base/nodes/Supabase/RowDescription.ts @@ -58,7 +58,7 @@ export const rowFields: INodeProperties[] = [ name: 'tableId', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getTables', }, @@ -153,7 +153,7 @@ export const rowFields: INodeProperties[] = [ name: 'fieldId', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsDependsOn: ['tableId'], loadOptionsMethod: 'getTableColumns', @@ -221,7 +221,7 @@ export const rowFields: INodeProperties[] = [ }, default: '', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', }, { displayName: 'Value', diff --git a/packages/nodes-base/nodes/Supabase/Supabase.node.json b/packages/nodes-base/nodes/Supabase/Supabase.node.json index f89fd6dad3..aede815ebe 100644 --- a/packages/nodes-base/nodes/Supabase/Supabase.node.json +++ b/packages/nodes-base/nodes/Supabase/Supabase.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/supabase" + "url": "https://docs.n8n.io/integrations/builtin/credentials/supabase/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Supabase/Supabase.node.ts b/packages/nodes-base/nodes/Supabase/Supabase.node.ts index 8a73f7a7c2..929da0ad30 100644 --- a/packages/nodes-base/nodes/Supabase/Supabase.node.ts +++ b/packages/nodes-base/nodes/Supabase/Supabase.node.ts @@ -11,7 +11,7 @@ import type { INodeType, INodeTypeDescription, } from 'n8n-workflow'; -import { NodeOperationError } from 'n8n-workflow'; +import { NodeConnectionType, NodeOperationError } from 'n8n-workflow'; import { buildGetQuery, @@ -41,8 +41,9 @@ export class Supabase implements INodeType { defaults: { name: 'Supabase', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], + usableAsTool: true, credentials: [ { name: 'supabaseApi', @@ -171,7 +172,7 @@ export class Supabase implements INodeType { returnData.push(...executionData); }); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { const executionData = this.helpers.constructExecutionMetaData( this.helpers.returnJsonArray({ error: error.description }), { itemData: mapPairedItemsFrom(records) }, @@ -186,8 +187,8 @@ export class Supabase implements INodeType { if (operation === 'delete') { const tableId = this.getNodeParameter('tableId', 0) as string; const filterType = this.getNodeParameter('filterType', 0) as string; - let endpoint = `/${tableId}`; for (let i = 0; i < length; i++) { + let endpoint = `/${tableId}`; if (filterType === 'manual') { const matchType = this.getNodeParameter('matchType', 0) as string; const keys = this.getNodeParameter('filters.conditions', i, []) as IDataObject[]; @@ -220,7 +221,7 @@ export class Supabase implements INodeType { try { rows = await supabaseApiRequest.call(this, 'DELETE', endpoint, {}, qs); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { const executionData = this.helpers.constructExecutionMetaData( this.helpers.returnJsonArray({ error: error.description }), { itemData: { item: i } }, @@ -260,7 +261,7 @@ export class Supabase implements INodeType { try { rows = await supabaseApiRequest.call(this, 'GET', endpoint, {}, qs); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { const executionData = this.helpers.constructExecutionMetaData( this.helpers.returnJsonArray({ error: error.message }), { itemData: { item: i } }, @@ -326,7 +327,7 @@ export class Supabase implements INodeType { ); returnData.push(...executionData); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { const executionData = this.helpers.constructExecutionMetaData( this.helpers.returnJsonArray({ error: error.description }), { itemData: { item: i } }, @@ -402,7 +403,7 @@ export class Supabase implements INodeType { ); returnData.push(...executionData); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { const executionData = this.helpers.constructExecutionMetaData( this.helpers.returnJsonArray({ error: error.description }), { itemData: { item: i } }, diff --git a/packages/nodes-base/nodes/SurveyMonkey/SurveyMonkeyTrigger.node.json b/packages/nodes-base/nodes/SurveyMonkey/SurveyMonkeyTrigger.node.json index 439bc2afc8..8a263b993b 100644 --- a/packages/nodes-base/nodes/SurveyMonkey/SurveyMonkeyTrigger.node.json +++ b/packages/nodes-base/nodes/SurveyMonkey/SurveyMonkeyTrigger.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/surveyMonkey" + "url": "https://docs.n8n.io/integrations/builtin/credentials/surveyMonkey/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/SurveyMonkey/SurveyMonkeyTrigger.node.ts b/packages/nodes-base/nodes/SurveyMonkey/SurveyMonkeyTrigger.node.ts index b299e9a21e..264b7eb314 100644 --- a/packages/nodes-base/nodes/SurveyMonkey/SurveyMonkeyTrigger.node.ts +++ b/packages/nodes-base/nodes/SurveyMonkey/SurveyMonkeyTrigger.node.ts @@ -10,7 +10,7 @@ import type { INodeTypeDescription, IWebhookResponseData, } from 'n8n-workflow'; -import { deepCopy, jsonParse, NodeOperationError } from 'n8n-workflow'; +import { deepCopy, jsonParse, NodeConnectionType, NodeOperationError } from 'n8n-workflow'; import { idsExist, surveyMonkeyApiRequest, surveyMonkeyRequestAllItems } from './GenericFunctions'; @@ -28,7 +28,7 @@ export class SurveyMonkeyTrigger implements INodeType { name: 'SurveyMonkey Trigger', }, inputs: [], - outputs: ['main'], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'surveyMonkeyApi', @@ -230,7 +230,7 @@ export class SurveyMonkeyTrigger implements INodeType { name: 'surveyIds', type: 'multiOptions', description: - 'Choose from the list, or specify IDs using an expression', + 'Choose from the list, or specify IDs using an expression', displayOptions: { show: { objectType: ['survey'], @@ -251,7 +251,7 @@ export class SurveyMonkeyTrigger implements INodeType { name: 'surveyId', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', displayOptions: { show: { objectType: ['collector'], @@ -268,7 +268,7 @@ export class SurveyMonkeyTrigger implements INodeType { name: 'collectorIds', type: 'multiOptions', description: - 'Choose from the list, or specify IDs using an expression', + 'Choose from the list, or specify IDs using an expression', displayOptions: { show: { objectType: ['collector'], diff --git a/packages/nodes-base/nodes/Switch/Switch.node.ts b/packages/nodes-base/nodes/Switch/Switch.node.ts index c54f5b55da..1a85852a1c 100644 --- a/packages/nodes-base/nodes/Switch/Switch.node.ts +++ b/packages/nodes-base/nodes/Switch/Switch.node.ts @@ -14,13 +14,15 @@ export class Switch extends VersionedNodeType { iconColor: 'light-blue', group: ['transform'], description: 'Route items depending on defined expression or rules', - defaultVersion: 3, + defaultVersion: 3.2, }; const nodeVersions: IVersionedNodeType['nodeVersions'] = { 1: new SwitchV1(baseDescription), 2: new SwitchV2(baseDescription), 3: new SwitchV3(baseDescription), + 3.1: new SwitchV3(baseDescription), + 3.2: new SwitchV3(baseDescription), }; super(nodeVersions, baseDescription); diff --git a/packages/nodes-base/nodes/Switch/V1/SwitchV1.node.ts b/packages/nodes-base/nodes/Switch/V1/SwitchV1.node.ts index 4306abb559..b3c2ca30bb 100644 --- a/packages/nodes-base/nodes/Switch/V1/SwitchV1.node.ts +++ b/packages/nodes-base/nodes/Switch/V1/SwitchV1.node.ts @@ -7,7 +7,7 @@ import type { INodeTypeDescription, NodeParameterValue, } from 'n8n-workflow'; -import { NodeOperationError } from 'n8n-workflow'; +import { NodeConnectionType, NodeOperationError } from 'n8n-workflow'; export class SwitchV1 implements INodeType { description: INodeTypeDescription; @@ -20,8 +20,13 @@ export class SwitchV1 implements INodeType { name: 'Switch', color: '#506000', }, - inputs: ['main'], - outputs: ['main', 'main', 'main', 'main'], + inputs: [NodeConnectionType.Main], + outputs: [ + NodeConnectionType.Main, + NodeConnectionType.Main, + NodeConnectionType.Main, + NodeConnectionType.Main, + ], outputNames: ['0', '1', '2', '3'], properties: [ { @@ -673,7 +678,7 @@ export class SwitchV1 implements INodeType { } } } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData[0].push({ json: { error: error.message } }); continue; } diff --git a/packages/nodes-base/nodes/Switch/V2/SwitchV2.node.ts b/packages/nodes-base/nodes/Switch/V2/SwitchV2.node.ts index bd20956874..2d93ef46d4 100644 --- a/packages/nodes-base/nodes/Switch/V2/SwitchV2.node.ts +++ b/packages/nodes-base/nodes/Switch/V2/SwitchV2.node.ts @@ -22,7 +22,7 @@ export class SwitchV2 implements INodeType { name: 'Switch', color: '#506000', }, - inputs: ['main'], + inputs: [NodeConnectionType.Main], outputs: `={{ ((parameters) => { @@ -510,7 +510,7 @@ export class SwitchV2 implements INodeType { }, default: -1, description: - 'The output to which to route all items which do not match any of the rules. Choose from the list, or specify an ID using an expression.', + 'The output to which to route all items which do not match any of the rules. Choose from the list, or specify an ID using an expression.', }, ], }; @@ -699,7 +699,7 @@ export class SwitchV2 implements INodeType { } } } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData[0].push({ json: { error: error.message } }); continue; } diff --git a/packages/nodes-base/nodes/Switch/V3/SwitchV3.node.ts b/packages/nodes-base/nodes/Switch/V3/SwitchV3.node.ts index 0b5b6863d4..ccc634597b 100644 --- a/packages/nodes-base/nodes/Switch/V3/SwitchV3.node.ts +++ b/packages/nodes-base/nodes/Switch/V3/SwitchV3.node.ts @@ -9,8 +9,11 @@ import type { INodeTypeBaseDescription, INodeTypeDescription, } from 'n8n-workflow'; -import { NodeConnectionType, NodeOperationError } from 'n8n-workflow'; +import { ApplicationError, NodeConnectionType, NodeOperationError } from 'n8n-workflow'; import set from 'lodash/set'; +import { ENABLE_LESS_STRICT_TYPE_VALIDATION } from '../../../utils/constants'; +import { looseTypeValidationProperty } from '../../../utils/descriptions'; +import { getTypeValidationParameter, getTypeValidationStrictness } from '../../If/V2/utils'; import { capitalize } from '@utils/utilities'; const configuredOutputs = (parameters: INodeParameters) => { @@ -47,12 +50,12 @@ export class SwitchV3 implements INodeType { this.description = { ...baseDescription, subtitle: `=mode: {{(${capitalize})($parameter["mode"])}}`, - version: [3], + version: [3, 3.1, 3.2], defaults: { name: 'Switch', color: '#506000', }, - inputs: ['main'], + inputs: [NodeConnectionType.Main], outputs: `={{(${configuredOutputs})($parameter)}}`, properties: [ { @@ -156,8 +159,8 @@ export class SwitchV3 implements INodeType { multipleValues: false, filter: { caseSensitive: '={{!$parameter.options.ignoreCase}}', - typeValidation: - '={{$parameter.options.looseTypeValidation ? "loose" : "strict"}}', + typeValidation: getTypeValidationStrictness(3.1), + version: '={{ $nodeVersion >= 3.2 ? 2 : 1 }}', }, }, }, @@ -183,11 +186,20 @@ export class SwitchV3 implements INodeType { }, ], }, + { + ...looseTypeValidationProperty, + default: false, + displayOptions: { + show: { + '@version': [{ _cnd: { gte: 3.1 } }], + }, + }, + }, { displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, displayOptions: { show: { @@ -217,11 +229,12 @@ export class SwitchV3 implements INodeType { default: true, }, { - displayName: 'Less Strict Type Validation', - description: 'Whether to try casting value types based on the selected operator', - name: 'looseTypeValidation', - type: 'boolean', - default: true, + ...looseTypeValidationProperty, + displayOptions: { + show: { + '@version': [{ _cnd: { lt: 3.1 } }], + }, + }, }, { displayName: 'Rename Fallback Output', @@ -348,9 +361,15 @@ export class SwitchV3 implements INodeType { }, ) as boolean; } catch (error) { - if (!options.looseTypeValidation) { - error.description = - "Try changing the type of comparison. Alternatively you can enable 'Less Strict Type Validation' in the options."; + if ( + !getTypeValidationParameter(3.1)( + this, + itemIndex, + options.looseTypeValidation as boolean, + ) && + !error.description + ) { + error.description = ENABLE_LESS_STRICT_TYPE_VALIDATION; } set(error, 'context.itemIndex', itemIndex); set(error, 'node', this.getNode()); @@ -378,11 +397,22 @@ export class SwitchV3 implements INodeType { } } } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData[0].push({ json: { error: error.message } }); continue; } - throw new NodeOperationError(this.getNode(), error); + if (error instanceof NodeOperationError) { + throw error; + } + + if (error instanceof ApplicationError) { + set(error, 'context.itemIndex', itemIndex); + throw error; + } + + throw new NodeOperationError(this.getNode(), error, { + itemIndex, + }); } } diff --git a/packages/nodes-base/nodes/SyncroMSP/SyncroMsp.node.json b/packages/nodes-base/nodes/SyncroMSP/SyncroMsp.node.json index 1366aa7969..e607a536ca 100644 --- a/packages/nodes-base/nodes/SyncroMSP/SyncroMsp.node.json +++ b/packages/nodes-base/nodes/SyncroMSP/SyncroMsp.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/syncroMsp" + "url": "https://docs.n8n.io/integrations/builtin/credentials/syncroMsp/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/router.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/router.ts index c57f20f530..3b5a5b3210 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/router.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/router.ts @@ -42,7 +42,7 @@ export async function router(this: IExecuteFunctions): Promiseexpression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getUserProjects', }, diff --git a/packages/nodes-base/nodes/Taiga/descriptions/EpicDescription.ts b/packages/nodes-base/nodes/Taiga/descriptions/EpicDescription.ts index c442ab07b6..e374a0463c 100644 --- a/packages/nodes-base/nodes/Taiga/descriptions/EpicDescription.ts +++ b/packages/nodes-base/nodes/Taiga/descriptions/EpicDescription.ts @@ -55,7 +55,7 @@ export const epicFields: INodeProperties[] = [ displayName: 'Project Name or ID', name: 'projectId', description: - 'ID of the project to which the epic belongs. Choose from the list, or specify an ID using an expression.', + 'ID of the project to which the epic belongs. Choose from the list, or specify an ID using an expression.', type: 'options', typeOptions: { loadOptionsMethod: 'getProjects', @@ -105,7 +105,7 @@ export const epicFields: INodeProperties[] = [ }, default: '', description: - 'ID of the user to assign the epic to. Choose from the list, or specify an ID using an expression.', + 'ID of the user to assign the epic to. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Blocked Note', @@ -139,7 +139,7 @@ export const epicFields: INodeProperties[] = [ name: 'tags', type: 'multiOptions', description: - 'Choose from the list, or specify IDs using an expression', + 'Choose from the list, or specify IDs using an expression', typeOptions: { loadOptionsDependsOn: ['projectId'], loadOptionsMethod: 'getTags', @@ -192,7 +192,7 @@ export const epicFields: INodeProperties[] = [ displayName: 'Project Name or ID', name: 'projectId', description: - 'ID of the project to which the epic belongs. Choose from the list, or specify an ID using an expression.', + 'ID of the project to which the epic belongs. Choose from the list, or specify an ID using an expression.', type: 'options', typeOptions: { loadOptionsMethod: 'getProjects', @@ -259,7 +259,7 @@ export const epicFields: INodeProperties[] = [ }, default: '', description: - 'ID of the user whom the epic is assigned to. Choose from the list, or specify an ID using an expression.', + 'ID of the user whom the epic is assigned to. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Is Closed', @@ -283,7 +283,7 @@ export const epicFields: INodeProperties[] = [ }, default: '', description: - 'ID of the project to set the epic to. Choose from the list, or specify an ID using an expression.', + 'ID of the project to set the epic to. Choose from the list, or specify an ID using an expression.', displayOptions: { show: { resource: ['epic'], @@ -328,7 +328,7 @@ export const epicFields: INodeProperties[] = [ }, default: '', description: - 'ID of the user to whom the epic is assigned. Choose from the list, or specify an ID using an expression.', + 'ID of the user to whom the epic is assigned. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Blocked Note', @@ -368,7 +368,7 @@ export const epicFields: INodeProperties[] = [ name: 'tags', type: 'multiOptions', description: - 'Choose from the list, or specify IDs using an expression', + 'Choose from the list, or specify IDs using an expression', typeOptions: { loadOptionsDependsOn: ['projectId'], loadOptionsMethod: 'getTags', diff --git a/packages/nodes-base/nodes/Taiga/descriptions/IssueDescription.ts b/packages/nodes-base/nodes/Taiga/descriptions/IssueDescription.ts index 5a233f5660..36a83a6394 100644 --- a/packages/nodes-base/nodes/Taiga/descriptions/IssueDescription.ts +++ b/packages/nodes-base/nodes/Taiga/descriptions/IssueDescription.ts @@ -55,7 +55,7 @@ export const issueFields: INodeProperties[] = [ displayName: 'Project Name or ID', name: 'projectId', description: - 'ID of the project to which the issue belongs. Choose from the list, or specify an ID using an expression.', + 'ID of the project to which the issue belongs. Choose from the list, or specify an ID using an expression.', type: 'options', typeOptions: { loadOptionsMethod: 'getProjects', @@ -105,7 +105,7 @@ export const issueFields: INodeProperties[] = [ }, default: '', description: - 'ID of the user to whom the issue is assigned. Choose from the list, or specify an ID using an expression.', + 'ID of the user to whom the issue is assigned. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Blocked Note', @@ -137,14 +137,14 @@ export const issueFields: INodeProperties[] = [ }, default: '', description: - 'ID of the milestone of the issue. Choose from the list, or specify an ID using an expression.', + 'ID of the milestone of the issue. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Priority Name or ID', name: 'priority', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsDependsOn: ['projectId'], loadOptionsMethod: 'getPriorities', @@ -156,7 +156,7 @@ export const issueFields: INodeProperties[] = [ name: 'severity', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsDependsOn: ['projectId'], loadOptionsMethod: 'getSeverities', @@ -173,14 +173,14 @@ export const issueFields: INodeProperties[] = [ }, default: '', description: - 'ID of the status of the issue. Choose from the list, or specify an ID using an expression.', + 'ID of the status of the issue. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Tag Names or IDs', name: 'tags', type: 'multiOptions', description: - 'Choose from the list, or specify IDs using an expression', + 'Choose from the list, or specify IDs using an expression', typeOptions: { loadOptionsDependsOn: ['projectId'], loadOptionsMethod: 'getTags', @@ -192,7 +192,7 @@ export const issueFields: INodeProperties[] = [ name: 'type', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsDependsOn: ['projectId'], loadOptionsMethod: 'getTypes', @@ -245,7 +245,7 @@ export const issueFields: INodeProperties[] = [ displayName: 'Project Name or ID', name: 'projectId', description: - 'ID of the project to which the issue belongs. Choose from the list, or specify an ID using an expression.', + 'ID of the project to which the issue belongs. Choose from the list, or specify an ID using an expression.', type: 'options', typeOptions: { loadOptionsMethod: 'getProjects', @@ -306,7 +306,7 @@ export const issueFields: INodeProperties[] = [ displayName: 'Assignee Name or ID', name: 'assigned_to', description: - 'ID of the user to assign the issue to. Choose from the list, or specify an ID using an expression.', + 'ID of the user to assign the issue to. Choose from the list, or specify an ID using an expression.', type: 'options', typeOptions: { loadOptionsDependsOn: ['projectId'], @@ -363,7 +363,7 @@ export const issueFields: INodeProperties[] = [ displayName: 'Owner Name or ID', name: 'owner', description: - 'ID of the owner of the issue. Choose from the list, or specify an ID using an expression.', + 'ID of the owner of the issue. Choose from the list, or specify an ID using an expression.', type: 'options', typeOptions: { loadOptionsDependsOn: ['projectId'], @@ -376,7 +376,7 @@ export const issueFields: INodeProperties[] = [ name: 'priority', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsDependsOn: ['projectId'], loadOptionsMethod: 'getPriorities', @@ -388,7 +388,7 @@ export const issueFields: INodeProperties[] = [ name: 'role', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsDependsOn: ['projectId'], loadOptionsMethod: 'getRoles', @@ -400,7 +400,7 @@ export const issueFields: INodeProperties[] = [ name: 'severity', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsDependsOn: ['projectId'], loadOptionsMethod: 'getSeverities', @@ -411,7 +411,7 @@ export const issueFields: INodeProperties[] = [ displayName: 'Status Name or ID', name: 'status', description: - 'ID of the status of the issue. Choose from the list, or specify an ID using an expression.', + 'ID of the status of the issue. Choose from the list, or specify an ID using an expression.', type: 'options', typeOptions: { loadOptionsDependsOn: ['projectId'], @@ -424,7 +424,7 @@ export const issueFields: INodeProperties[] = [ name: 'tags', type: 'multiOptions', description: - 'Choose from the list, or specify IDs using an expression', + 'Choose from the list, or specify IDs using an expression', typeOptions: { loadOptionsDependsOn: ['projectId'], loadOptionsMethod: 'getTags', @@ -436,7 +436,7 @@ export const issueFields: INodeProperties[] = [ name: 'type', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsDependsOn: ['projectId'], loadOptionsMethod: 'getTypes', @@ -458,7 +458,7 @@ export const issueFields: INodeProperties[] = [ }, default: '', description: - 'ID of the project to set the issue to. Choose from the list, or specify an ID using an expression.', + 'ID of the project to set the issue to. Choose from the list, or specify an ID using an expression.', displayOptions: { show: { resource: ['issue'], @@ -503,7 +503,7 @@ export const issueFields: INodeProperties[] = [ }, default: '', description: - 'ID of the user whom the issue is assigned to. Choose from the list, or specify an ID using an expression.', + 'ID of the user whom the issue is assigned to. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Blocked Note', @@ -535,14 +535,14 @@ export const issueFields: INodeProperties[] = [ }, default: '', description: - 'ID of the milestone of the issue. Choose from the list, or specify an ID using an expression.', + 'ID of the milestone of the issue. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Priority Name or ID', name: 'priority', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsDependsOn: ['projectId'], loadOptionsMethod: 'getPriorities', @@ -554,7 +554,7 @@ export const issueFields: INodeProperties[] = [ name: 'severity', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsDependsOn: ['projectId'], loadOptionsMethod: 'getSeverities', @@ -571,7 +571,7 @@ export const issueFields: INodeProperties[] = [ }, default: '', description: - 'ID of the status of the issue. Choose from the list, or specify an ID using an expression.', + 'ID of the status of the issue. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Subject', @@ -584,7 +584,7 @@ export const issueFields: INodeProperties[] = [ name: 'tags', type: 'multiOptions', description: - 'Choose from the list, or specify IDs using an expression', + 'Choose from the list, or specify IDs using an expression', typeOptions: { loadOptionsDependsOn: ['projectId'], loadOptionsMethod: 'getTags', @@ -596,7 +596,7 @@ export const issueFields: INodeProperties[] = [ name: 'type', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsDependsOn: ['projectId'], loadOptionsMethod: 'getTypes', diff --git a/packages/nodes-base/nodes/Taiga/descriptions/TaskDescription.ts b/packages/nodes-base/nodes/Taiga/descriptions/TaskDescription.ts index fec8af90d6..028aad208c 100644 --- a/packages/nodes-base/nodes/Taiga/descriptions/TaskDescription.ts +++ b/packages/nodes-base/nodes/Taiga/descriptions/TaskDescription.ts @@ -55,7 +55,7 @@ export const taskFields: INodeProperties[] = [ displayName: 'Project Name or ID', name: 'projectId', description: - 'ID of the project to which the task belongs. Choose from the list, or specify an ID using an expression.', + 'ID of the project to which the task belongs. Choose from the list, or specify an ID using an expression.', type: 'options', typeOptions: { loadOptionsMethod: 'getProjects', @@ -105,7 +105,7 @@ export const taskFields: INodeProperties[] = [ }, default: '', description: - 'ID of the user to whom the task is assigned. Choose from the list, or specify an ID using an expression.', + 'ID of the user to whom the task is assigned. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Blocked Note', @@ -137,7 +137,7 @@ export const taskFields: INodeProperties[] = [ }, default: '', description: - 'ID of the milestone of the task. Choose from the list, or specify an ID using an expression.', + 'ID of the milestone of the task. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Status Name or ID', @@ -149,14 +149,14 @@ export const taskFields: INodeProperties[] = [ }, default: '', description: - 'ID of the status of the task. Choose from the list, or specify an ID using an expression.', + 'ID of the status of the task. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Tag Names or IDs', name: 'tags', type: 'multiOptions', description: - 'Choose from the list, or specify IDs using an expression', + 'Choose from the list, or specify IDs using an expression', typeOptions: { loadOptionsDependsOn: ['projectId'], loadOptionsMethod: 'getTags', @@ -183,7 +183,7 @@ export const taskFields: INodeProperties[] = [ }, default: '', description: - 'ID of the user story of the task. Choose from the list, or specify an ID using an expression.', + 'ID of the user story of the task. Choose from the list, or specify an ID using an expression.', }, { displayName: 'User Story Order', @@ -241,7 +241,7 @@ export const taskFields: INodeProperties[] = [ displayName: 'Project Name or ID', name: 'projectId', description: - 'ID of the project to which the task belongs. Choose from the list, or specify an ID using an expression.', + 'ID of the project to which the task belongs. Choose from the list, or specify an ID using an expression.', type: 'options', typeOptions: { loadOptionsMethod: 'getProjects', @@ -308,7 +308,7 @@ export const taskFields: INodeProperties[] = [ }, default: '', description: - 'ID of the user whom the task is assigned to. Choose from the list, or specify an ID using an expression.', + 'ID of the user whom the task is assigned to. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Is Closed', @@ -327,13 +327,13 @@ export const taskFields: INodeProperties[] = [ }, default: '', description: - 'ID of the milestone of the task. Choose from the list, or specify an ID using an expression.', + 'ID of the milestone of the task. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Owner Name or ID', name: 'owner', description: - 'ID of the owner of the task. Choose from the list, or specify an ID using an expression.', + 'ID of the owner of the task. Choose from the list, or specify an ID using an expression.', type: 'options', typeOptions: { loadOptionsDependsOn: ['projectId'], @@ -346,7 +346,7 @@ export const taskFields: INodeProperties[] = [ name: 'role', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsDependsOn: ['projectId'], loadOptionsMethod: 'getRoles', @@ -357,7 +357,7 @@ export const taskFields: INodeProperties[] = [ displayName: 'Status Name or ID', name: 'status', description: - 'ID of the status of the task. Choose from the list, or specify an ID using an expression.', + 'ID of the status of the task. Choose from the list, or specify an ID using an expression.', type: 'options', typeOptions: { loadOptionsDependsOn: ['projectId'], @@ -370,7 +370,7 @@ export const taskFields: INodeProperties[] = [ name: 'tags', type: 'multiOptions', description: - 'Choose from the list, or specify IDs using an expression', + 'Choose from the list, or specify IDs using an expression', typeOptions: { loadOptionsDependsOn: ['projectId'], loadOptionsMethod: 'getTags', @@ -381,7 +381,7 @@ export const taskFields: INodeProperties[] = [ displayName: 'User Story Name or ID', name: 'userStory', description: - 'ID of the user story to which the task belongs. Choose from the list, or specify an ID using an expression.', + 'ID of the user story to which the task belongs. Choose from the list, or specify an ID using an expression.', type: 'options', typeOptions: { loadOptionsDependsOn: ['projectId'], @@ -399,7 +399,7 @@ export const taskFields: INodeProperties[] = [ displayName: 'Project Name or ID', name: 'projectId', description: - 'ID of the project to set the task to. Choose from the list, or specify an ID using an expression.', + 'ID of the project to set the task to. Choose from the list, or specify an ID using an expression.', type: 'options', typeOptions: { loadOptionsMethod: 'getProjects', @@ -449,7 +449,7 @@ export const taskFields: INodeProperties[] = [ }, default: '', description: - 'ID of the user to assign the task to. Choose from the list, or specify an ID using an expression.', + 'ID of the user to assign the task to. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Blocked Note', @@ -481,7 +481,7 @@ export const taskFields: INodeProperties[] = [ }, default: '', description: - 'ID of the milestone of the task. Choose from the list, or specify an ID using an expression.', + 'ID of the milestone of the task. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Status Name or ID', @@ -493,7 +493,7 @@ export const taskFields: INodeProperties[] = [ }, default: '', description: - 'ID of the status of the task. Choose from the list, or specify an ID using an expression.', + 'ID of the status of the task. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Subject', @@ -511,7 +511,7 @@ export const taskFields: INodeProperties[] = [ }, default: '', description: - 'ID of the user story of the task. Choose from the list, or specify an ID using an expression.', + 'ID of the user story of the task. Choose from the list, or specify an ID using an expression.', }, { displayName: 'User Story Order', @@ -528,7 +528,7 @@ export const taskFields: INodeProperties[] = [ name: 'tags', type: 'multiOptions', description: - 'Choose from the list, or specify IDs using an expression', + 'Choose from the list, or specify IDs using an expression', typeOptions: { loadOptionsDependsOn: ['projectId'], loadOptionsMethod: 'getTags', diff --git a/packages/nodes-base/nodes/Taiga/descriptions/UserStoryDescription.ts b/packages/nodes-base/nodes/Taiga/descriptions/UserStoryDescription.ts index 338bf6b72d..c680cebb6b 100644 --- a/packages/nodes-base/nodes/Taiga/descriptions/UserStoryDescription.ts +++ b/packages/nodes-base/nodes/Taiga/descriptions/UserStoryDescription.ts @@ -55,7 +55,7 @@ export const userStoryFields: INodeProperties[] = [ displayName: 'Project Name or ID', name: 'projectId', description: - 'ID of the project to which the user story belongs. Choose from the list, or specify an ID using an expression.', + 'ID of the project to which the user story belongs. Choose from the list, or specify an ID using an expression.', type: 'options', typeOptions: { loadOptionsMethod: 'getProjects', @@ -105,7 +105,7 @@ export const userStoryFields: INodeProperties[] = [ }, default: '', description: - 'ID of the user to whom the user story is assigned. Choose from the list, or specify an ID using an expression.', + 'ID of the user to whom the user story is assigned. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Backlog Order', @@ -158,7 +158,7 @@ export const userStoryFields: INodeProperties[] = [ }, default: '', description: - 'ID of the milestone of the user story. Choose from the list, or specify an ID using an expression.', + 'ID of the milestone of the user story. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Sprint Order', @@ -180,14 +180,14 @@ export const userStoryFields: INodeProperties[] = [ }, default: '', description: - 'ID of the status of the user story. Choose from the list, or specify an ID using an expression.', + 'ID of the status of the user story. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Tag Names or IDs', name: 'tags', type: 'multiOptions', description: - 'Choose from the list, or specify IDs using an expression', + 'Choose from the list, or specify IDs using an expression', typeOptions: { loadOptionsDependsOn: ['projectId'], loadOptionsMethod: 'getTags', @@ -199,7 +199,7 @@ export const userStoryFields: INodeProperties[] = [ name: 'type', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsDependsOn: ['projectId'], loadOptionsMethod: 'getTypes', @@ -252,7 +252,7 @@ export const userStoryFields: INodeProperties[] = [ displayName: 'Project Name or ID', name: 'projectId', description: - 'ID of the project to which the user story belongs. Choose from the list, or specify an ID using an expression.', + 'ID of the project to which the user story belongs. Choose from the list, or specify an ID using an expression.', type: 'options', typeOptions: { loadOptionsMethod: 'getProjects', @@ -313,7 +313,7 @@ export const userStoryFields: INodeProperties[] = [ displayName: 'Assignee Name or ID', name: 'assigned_to', description: - 'ID of the user whom the user story is assigned to. Choose from the list, or specify an ID using an expression.', + 'ID of the user whom the user story is assigned to. Choose from the list, or specify an ID using an expression.', type: 'options', typeOptions: { loadOptionsDependsOn: ['projectId'], @@ -325,7 +325,7 @@ export const userStoryFields: INodeProperties[] = [ displayName: 'Epic Name or ID', name: 'epic', description: - 'ID of the epic to which the user story belongs. Choose from the list, or specify an ID using an expression.', + 'ID of the epic to which the user story belongs. Choose from the list, or specify an ID using an expression.', type: 'options', typeOptions: { loadOptionsDependsOn: ['projectId'], @@ -357,14 +357,14 @@ export const userStoryFields: INodeProperties[] = [ }, default: '', description: - 'ID of the milestone of the user story. Choose from the list, or specify an ID using an expression.', + 'ID of the milestone of the user story. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Role Name or ID', name: 'role', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsDependsOn: ['projectId'], loadOptionsMethod: 'getRoles', @@ -375,7 +375,7 @@ export const userStoryFields: INodeProperties[] = [ displayName: 'Status Name or ID', name: 'status', description: - 'ID of the status of the user story. Choose from the list, or specify an ID using an expression.', + 'ID of the status of the user story. Choose from the list, or specify an ID using an expression.', type: 'options', typeOptions: { loadOptionsDependsOn: ['projectId'], @@ -388,7 +388,7 @@ export const userStoryFields: INodeProperties[] = [ name: 'tags', type: 'multiOptions', description: - 'Choose from the list, or specify IDs using an expression', + 'Choose from the list, or specify IDs using an expression', typeOptions: { loadOptionsDependsOn: ['projectId'], loadOptionsMethod: 'getTags', @@ -410,7 +410,7 @@ export const userStoryFields: INodeProperties[] = [ }, default: '', description: - 'ID of the project to set the user story to. Choose from the list, or specify an ID using an expression.', + 'ID of the project to set the user story to. Choose from the list, or specify an ID using an expression.', displayOptions: { show: { resource: ['userStory'], @@ -455,7 +455,7 @@ export const userStoryFields: INodeProperties[] = [ }, default: '', description: - 'ID of the user to assign the the user story to. Choose from the list, or specify an ID using an expression.', + 'ID of the user to assign the the user story to. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Backlog Order', @@ -508,7 +508,7 @@ export const userStoryFields: INodeProperties[] = [ }, default: '', description: - 'ID of the milestone of the user story. Choose from the list, or specify an ID using an expression.', + 'ID of the milestone of the user story. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Subject', @@ -536,14 +536,14 @@ export const userStoryFields: INodeProperties[] = [ }, default: '', description: - 'ID of the status of the user story. Choose from the list, or specify an ID using an expression.', + 'ID of the status of the user story. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Tag Names or IDs', name: 'tags', type: 'multiOptions', description: - 'Choose from the list, or specify IDs using an expression', + 'Choose from the list, or specify IDs using an expression', typeOptions: { loadOptionsDependsOn: ['projectId'], loadOptionsMethod: 'getTags', @@ -555,7 +555,7 @@ export const userStoryFields: INodeProperties[] = [ name: 'type', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsDependsOn: ['projectId'], loadOptionsMethod: 'getTypes', diff --git a/packages/nodes-base/nodes/Tapfiliate/ProgramAffiliateDescription.ts b/packages/nodes-base/nodes/Tapfiliate/ProgramAffiliateDescription.ts index a17b9d71d9..111ac5be03 100644 --- a/packages/nodes-base/nodes/Tapfiliate/ProgramAffiliateDescription.ts +++ b/packages/nodes-base/nodes/Tapfiliate/ProgramAffiliateDescription.ts @@ -67,7 +67,7 @@ export const programAffiliateFields: INodeProperties[] = [ }, }, description: - 'The ID of the Program to add the affiliate to. This ID can be found as part of the URL when viewing the program on the platform. Choose from the list, or specify an ID using an expression.', + 'The ID of the Program to add the affiliate to. This ID can be found as part of the URL when viewing the program on the platform. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Affiliate ID', @@ -132,7 +132,7 @@ export const programAffiliateFields: INodeProperties[] = [ }, }, description: - 'The ID of the Program to add the affiliate to. This ID can be found as part of the URL when viewing the program on the platform. Choose from the list, or specify an ID using an expression.', + 'The ID of the Program to add the affiliate to. This ID can be found as part of the URL when viewing the program on the platform. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Affiliate ID', @@ -166,7 +166,7 @@ export const programAffiliateFields: INodeProperties[] = [ }, }, description: - 'The ID of the Program to add the affiliate to. This ID can be found as part of the URL when viewing the program on the platform. Choose from the list, or specify an ID using an expression.', + 'The ID of the Program to add the affiliate to. This ID can be found as part of the URL when viewing the program on the platform. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Affiliate ID', @@ -201,7 +201,7 @@ export const programAffiliateFields: INodeProperties[] = [ }, }, description: - 'The ID of the Program to add the affiliate to. This ID can be found as part of the URL when viewing the program on the platform. Choose from the list, or specify an ID using an expression.', + 'The ID of the Program to add the affiliate to. This ID can be found as part of the URL when viewing the program on the platform. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Affiliate ID', @@ -237,7 +237,7 @@ export const programAffiliateFields: INodeProperties[] = [ }, }, description: - 'The ID of the Program to add the affiliate to. This ID can be found as part of the URL when viewing the program on the platform. Choose from the list, or specify an ID using an expression.', + 'The ID of the Program to add the affiliate to. This ID can be found as part of the URL when viewing the program on the platform. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Return All', diff --git a/packages/nodes-base/nodes/Tapfiliate/Tapfiliate.node.json b/packages/nodes-base/nodes/Tapfiliate/Tapfiliate.node.json index 0383a9cfa2..439b2c8a89 100644 --- a/packages/nodes-base/nodes/Tapfiliate/Tapfiliate.node.json +++ b/packages/nodes-base/nodes/Tapfiliate/Tapfiliate.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/tapfiliate" + "url": "https://docs.n8n.io/integrations/builtin/credentials/tapfiliate/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Tapfiliate/Tapfiliate.node.ts b/packages/nodes-base/nodes/Tapfiliate/Tapfiliate.node.ts index 3dc6933979..87c3bb8bcb 100644 --- a/packages/nodes-base/nodes/Tapfiliate/Tapfiliate.node.ts +++ b/packages/nodes-base/nodes/Tapfiliate/Tapfiliate.node.ts @@ -7,7 +7,7 @@ import type { INodeType, INodeTypeDescription, } from 'n8n-workflow'; -import { NodeOperationError } from 'n8n-workflow'; +import { NodeConnectionType, NodeOperationError } from 'n8n-workflow'; import { affiliateFields, affiliateOperations } from './AffiliateDescription'; @@ -32,8 +32,8 @@ export class Tapfiliate implements INodeType { defaults: { name: 'Tapfiliate', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'tapfiliateApi', @@ -302,7 +302,7 @@ export class Tapfiliate implements INodeType { returnData.push(...executionData); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { const executionErrorData = this.helpers.constructExecutionMetaData( this.helpers.returnJsonArray({ error: error.message }), { itemData: { item: i } }, diff --git a/packages/nodes-base/nodes/Telegram/GenericFunctions.ts b/packages/nodes-base/nodes/Telegram/GenericFunctions.ts index cbffe21d5f..309b23c176 100644 --- a/packages/nodes-base/nodes/Telegram/GenericFunctions.ts +++ b/packages/nodes-base/nodes/Telegram/GenericFunctions.ts @@ -158,9 +158,12 @@ export function addAdditionalFields( } sendRows.push(sendButtonData); } + // @ts-ignore - // prettier-ignore - ((body.reply_markup as ITelegramInlineReply | ITelegramReplyKeyboard)[setParameterName] as ITelegramKeyboardButton[][]).push(sendRows); + const array = (body.reply_markup as ITelegramInlineReply | ITelegramReplyKeyboard)[ + setParameterName + ] as ITelegramKeyboardButton[][]; + array.push(sendRows); } } } else if (replyMarkupOption === 'forceReply') { diff --git a/packages/nodes-base/nodes/Telegram/IEvent.ts b/packages/nodes-base/nodes/Telegram/IEvent.ts index 55f9e2f7b9..cadcee75a9 100644 --- a/packages/nodes-base/nodes/Telegram/IEvent.ts +++ b/packages/nodes-base/nodes/Telegram/IEvent.ts @@ -7,6 +7,9 @@ interface EventBody { document?: { file_id: string; }; + video?: { + file_id: string; + }; } export interface IEvent { diff --git a/packages/nodes-base/nodes/Telegram/Telegram.node.json b/packages/nodes-base/nodes/Telegram/Telegram.node.json index 709d77c6c0..e2b275228a 100644 --- a/packages/nodes-base/nodes/Telegram/Telegram.node.json +++ b/packages/nodes-base/nodes/Telegram/Telegram.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/telegram" + "url": "https://docs.n8n.io/integrations/builtin/credentials/telegram/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Telegram/Telegram.node.ts b/packages/nodes-base/nodes/Telegram/Telegram.node.ts index b938a9106a..5ae67465bf 100644 --- a/packages/nodes-base/nodes/Telegram/Telegram.node.ts +++ b/packages/nodes-base/nodes/Telegram/Telegram.node.ts @@ -8,8 +8,9 @@ import type { INodeTypeDescription, IHttpRequestMethods, } from 'n8n-workflow'; -import { BINARY_ENCODING, NodeOperationError } from 'n8n-workflow'; +import { BINARY_ENCODING, NodeConnectionType, NodeOperationError } from 'n8n-workflow'; +import { appendAttributionOption } from '../../utils/descriptions'; import { addAdditionalFields, apiRequest, getPropertyName } from './GenericFunctions'; export class Telegram implements INodeType { @@ -24,8 +25,9 @@ export class Telegram implements INodeType { defaults: { name: 'Telegram', }, - inputs: ['main'], - outputs: ['main'], + usableAsTool: true, + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'telegramApi', @@ -1289,6 +1291,26 @@ export class Telegram implements INodeType { default: '', description: 'HTTP or tg:// URL to be opened when button is pressed', }, + { + displayName: 'Web App', + name: 'web_app', + type: 'collection', + placeholder: 'Set Telegram Web App URL', + typeOptions: { + multipleValues: false, + }, + default: {}, + options: [ + { + displayName: 'URL', + name: 'url', + type: 'string', + default: '', + description: 'An HTTPS URL of a Web App to be opened', + }, + ], + description: 'Launch the Telegram Web App', + }, ], }, ], @@ -1365,6 +1387,26 @@ export class Telegram implements INodeType { default: false, description: "Whether the user's request_location", }, + { + displayName: 'Web App', + name: 'web_app', + type: 'collection', + placeholder: 'Set Telegram Web App URL', + typeOptions: { + multipleValues: false, + }, + default: {}, + options: [ + { + displayName: 'URL', + name: 'url', + type: 'string', + default: '', + description: 'An HTTPS URL of a Web App to be opened', + }, + ], + description: 'Launch the Telegram Web App', + }, ], }, ], @@ -1380,7 +1422,7 @@ export class Telegram implements INodeType { displayName: 'Reply Keyboard Options', name: 'replyKeyboardOptions', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', displayOptions: { show: { replyMarkup: ['replyKeyboard'], @@ -1468,11 +1510,7 @@ export class Telegram implements INodeType { default: {}, options: [ { - // eslint-disable-next-line n8n-nodes-base/node-param-display-name-miscased - displayName: 'Append n8n Attribution', - name: 'appendAttribution', - type: 'boolean', - default: true, + ...appendAttributionOption, description: 'Whether to include the phrase “This message was sent automatically with n8n” to the end of the message', displayOptions: { @@ -2102,7 +2140,7 @@ export class Telegram implements INodeType { ); returnData.push(...executionData); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push({ json: {}, error: error.message }); continue; } diff --git a/packages/nodes-base/nodes/Telegram/TelegramTrigger.node.json b/packages/nodes-base/nodes/Telegram/TelegramTrigger.node.json index 64b991570e..ae71a32bdd 100644 --- a/packages/nodes-base/nodes/Telegram/TelegramTrigger.node.json +++ b/packages/nodes-base/nodes/Telegram/TelegramTrigger.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/telegram" + "url": "https://docs.n8n.io/integrations/builtin/credentials/telegram/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Telegram/TelegramTrigger.node.ts b/packages/nodes-base/nodes/Telegram/TelegramTrigger.node.ts index 3ced0061f9..aec3dc4dc4 100644 --- a/packages/nodes-base/nodes/Telegram/TelegramTrigger.node.ts +++ b/packages/nodes-base/nodes/Telegram/TelegramTrigger.node.ts @@ -1,3 +1,4 @@ +import crypto from 'crypto'; import type { IHookFunctions, IWebhookFunctions, @@ -6,6 +7,7 @@ import type { INodeTypeDescription, IWebhookResponseData, } from 'n8n-workflow'; +import { NodeConnectionType } from 'n8n-workflow'; import { apiRequest, getImageBySize, getSecretToken } from './GenericFunctions'; @@ -25,7 +27,7 @@ export class TelegramTrigger implements INodeType { name: 'Telegram Trigger', }, inputs: [], - outputs: ['main'], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'telegramApi', @@ -232,7 +234,11 @@ export class TelegramTrigger implements INodeType { const nodeVersion = this.getNode().typeVersion; if (nodeVersion > 1) { const secret = getSecretToken.call(this); - if (secret !== headerData['x-telegram-bot-api-secret-token']) { + const secretBuffer = Buffer.from(secret); + const headerSecretBuffer = Buffer.from( + String(headerData['x-telegram-bot-api-secret-token'] ?? ''), + ); + if (!crypto.timingSafeEqual(secretBuffer, headerSecretBuffer)) { const res = this.getResponseObject(); res.status(403).json({ message: 'Provided secret is not valid' }); return { @@ -254,7 +260,8 @@ export class TelegramTrigger implements INodeType { if ( (bodyData[key]?.photo && Array.isArray(bodyData[key]?.photo)) || - bodyData[key]?.document + bodyData[key]?.document || + bodyData[key]?.video ) { if (additionalFields.imageSize) { imageSize = additionalFields.imageSize as string; @@ -276,6 +283,8 @@ export class TelegramTrigger implements INodeType { } fileId = image.file_id; + } else if (bodyData[key]?.video) { + fileId = bodyData[key]?.video?.file_id; } else { fileId = bodyData[key]?.document?.file_id; } diff --git a/packages/nodes-base/nodes/TheHive/TheHive.node.ts b/packages/nodes-base/nodes/TheHive/TheHive.node.ts index 02c14dd2d8..e405191423 100644 --- a/packages/nodes-base/nodes/TheHive/TheHive.node.ts +++ b/packages/nodes-base/nodes/TheHive/TheHive.node.ts @@ -1,14 +1,15 @@ /* eslint-disable @typescript-eslint/dot-notation */ -import type { - IDataObject, - IExecuteFunctions, - IHttpRequestMethods, - ILoadOptionsFunctions, - INodeExecutionData, - INodeParameters, - INodePropertyOptions, - INodeType, - INodeTypeDescription, +import { + NodeConnectionType, + type IDataObject, + type IExecuteFunctions, + type IHttpRequestMethods, + type ILoadOptionsFunctions, + type INodeExecutionData, + type INodeParameters, + type INodePropertyOptions, + type INodeType, + type INodeTypeDescription, } from 'n8n-workflow'; import set from 'lodash/set'; @@ -48,8 +49,8 @@ export class TheHive implements INodeType { defaults: { name: 'TheHive', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'theHiveApi', @@ -1892,7 +1893,7 @@ export class TheHive implements INodeType { ); returnData.push(...executionData); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { const executionData = this.helpers.constructExecutionMetaData( this.helpers.returnJsonArray({ error: error.message }), { itemData: { item: i } }, diff --git a/packages/nodes-base/nodes/TheHive/TheHiveTrigger.node.ts b/packages/nodes-base/nodes/TheHive/TheHiveTrigger.node.ts index a3e7b8e5e1..7cc84868c1 100644 --- a/packages/nodes-base/nodes/TheHive/TheHiveTrigger.node.ts +++ b/packages/nodes-base/nodes/TheHive/TheHiveTrigger.node.ts @@ -1,10 +1,11 @@ -import type { - IWebhookFunctions, - IDataObject, - IHookFunctions, - INodeType, - INodeTypeDescription, - IWebhookResponseData, +import { + type IWebhookFunctions, + type IDataObject, + type IHookFunctions, + type INodeType, + type INodeTypeDescription, + type IWebhookResponseData, + NodeConnectionType, } from 'n8n-workflow'; import { eventsDescription } from './descriptions/EventsDescription'; @@ -20,7 +21,7 @@ export class TheHiveTrigger implements INodeType { name: 'TheHive Trigger', }, inputs: [], - outputs: ['main'], + outputs: [NodeConnectionType.Main], webhooks: [ { name: 'default', diff --git a/packages/nodes-base/nodes/TheHive/descriptions/AlertDescription.ts b/packages/nodes-base/nodes/TheHive/descriptions/AlertDescription.ts index 2522094645..4742b95a46 100644 --- a/packages/nodes-base/nodes/TheHive/descriptions/AlertDescription.ts +++ b/packages/nodes-base/nodes/TheHive/descriptions/AlertDescription.ts @@ -8,7 +8,7 @@ export const alertOperations: INodeProperties[] = [ name: 'operation', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', noDataExpression: true, required: true, typeOptions: { @@ -325,7 +325,7 @@ export const alertFields: INodeProperties[] = [ loadOptionsMethod: 'loadObservableTypes', }, description: - 'Type of the observable. Choose from the list, or specify an ID using an expression.', + 'Type of the observable. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Data', @@ -373,7 +373,7 @@ export const alertFields: INodeProperties[] = [ name: 'responder', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', required: true, default: '', typeOptions: { @@ -448,7 +448,7 @@ export const alertFields: INodeProperties[] = [ name: 'field', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'loadCustomFields', }, @@ -540,7 +540,7 @@ export const alertFields: INodeProperties[] = [ loadOptionsMethod: 'loadObservableTypes', }, description: - 'Type of the observable. Choose from the list, or specify an ID using an expression.', + 'Type of the observable. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Data', @@ -605,7 +605,7 @@ export const alertFields: INodeProperties[] = [ name: 'field', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'loadCustomFields', }, @@ -752,7 +752,7 @@ export const alertFields: INodeProperties[] = [ }, }, type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, options: [ { @@ -774,7 +774,7 @@ export const alertFields: INodeProperties[] = [ }, }, type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, options: [ { @@ -818,7 +818,7 @@ export const alertFields: INodeProperties[] = [ name: 'field', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'loadCustomFields', }, diff --git a/packages/nodes-base/nodes/TheHive/descriptions/CaseDescription.ts b/packages/nodes-base/nodes/TheHive/descriptions/CaseDescription.ts index 938ea3d65c..adc3e571e6 100644 --- a/packages/nodes-base/nodes/TheHive/descriptions/CaseDescription.ts +++ b/packages/nodes-base/nodes/TheHive/descriptions/CaseDescription.ts @@ -10,7 +10,7 @@ export const caseOperations: INodeProperties[] = [ default: 'getAll', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', noDataExpression: true, required: true, displayOptions: { @@ -221,7 +221,7 @@ export const caseFields: INodeProperties[] = [ name: 'responder', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', default: '', required: true, typeOptions: { @@ -255,7 +255,7 @@ export const caseFields: INodeProperties[] = [ displayName: 'Options', type: 'collection', name: 'options', - placeholder: 'Add options', + placeholder: 'Add option', displayOptions: { show: { resource: ['case'], @@ -288,7 +288,7 @@ export const caseFields: INodeProperties[] = [ name: 'field', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'loadCustomFields', }, @@ -383,7 +383,7 @@ export const caseFields: INodeProperties[] = [ name: 'field', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'loadCustomFields', }, @@ -608,7 +608,7 @@ export const caseFields: INodeProperties[] = [ }, }, type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, options: [ { @@ -654,7 +654,7 @@ export const caseFields: INodeProperties[] = [ name: 'field', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'loadCustomFields', }, diff --git a/packages/nodes-base/nodes/TheHive/descriptions/LogDescription.ts b/packages/nodes-base/nodes/TheHive/descriptions/LogDescription.ts index 834201ed65..8db0414e37 100644 --- a/packages/nodes-base/nodes/TheHive/descriptions/LogDescription.ts +++ b/packages/nodes-base/nodes/TheHive/descriptions/LogDescription.ts @@ -160,7 +160,7 @@ export const logFields: INodeProperties[] = [ name: 'responder', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', required: true, default: '', typeOptions: { @@ -189,7 +189,7 @@ export const logFields: INodeProperties[] = [ operation: ['create'], }, }, - placeholder: 'Add Option', + placeholder: 'Add option', options: [ { displayName: 'Attachment', diff --git a/packages/nodes-base/nodes/TheHive/descriptions/ObservableDescription.ts b/packages/nodes-base/nodes/TheHive/descriptions/ObservableDescription.ts index 747d610222..2e2c7ce576 100644 --- a/packages/nodes-base/nodes/TheHive/descriptions/ObservableDescription.ts +++ b/packages/nodes-base/nodes/TheHive/descriptions/ObservableDescription.ts @@ -8,7 +8,7 @@ export const observableOperations: INodeProperties[] = [ name: 'operation', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', noDataExpression: true, required: true, default: 'getAll', @@ -101,7 +101,7 @@ export const observableFields: INodeProperties[] = [ }, }, description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', }, { displayName: 'Data', @@ -252,7 +252,7 @@ export const observableFields: INodeProperties[] = [ name: 'analyzers', type: 'multiOptions', description: - 'Choose from the list, or specify IDs using an expression', + 'Choose from the list, or specify IDs using an expression', required: true, default: [], typeOptions: { @@ -276,7 +276,7 @@ export const observableFields: INodeProperties[] = [ name: 'responder', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', required: true, default: '', typeOptions: { @@ -298,7 +298,7 @@ export const observableFields: INodeProperties[] = [ displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, displayOptions: { show: { @@ -412,7 +412,7 @@ export const observableFields: INodeProperties[] = [ }, }, type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, options: [ { @@ -448,7 +448,7 @@ export const observableFields: INodeProperties[] = [ loadOptionsMethod: 'loadObservableTypes', }, description: - 'Choose from the list, or specify IDs using an expression', + 'Choose from the list, or specify IDs using an expression', }, { displayName: 'Date Range', diff --git a/packages/nodes-base/nodes/TheHive/descriptions/TaskDescription.ts b/packages/nodes-base/nodes/TheHive/descriptions/TaskDescription.ts index 56846a203b..c17bb06a1b 100644 --- a/packages/nodes-base/nodes/TheHive/descriptions/TaskDescription.ts +++ b/packages/nodes-base/nodes/TheHive/descriptions/TaskDescription.ts @@ -7,7 +7,7 @@ export const taskOperations: INodeProperties[] = [ default: 'getAll', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', noDataExpression: true, required: true, displayOptions: { @@ -147,7 +147,7 @@ export const taskFields: INodeProperties[] = [ name: 'responder', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', required: true, default: '', typeOptions: { @@ -169,7 +169,7 @@ export const taskFields: INodeProperties[] = [ displayName: 'Options', type: 'collection', name: 'options', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, displayOptions: { show: { @@ -303,7 +303,7 @@ export const taskFields: INodeProperties[] = [ { displayName: 'Options', name: 'options', - placeholder: 'Add Option', + placeholder: 'Add option', type: 'collection', default: {}, displayOptions: { diff --git a/packages/nodes-base/nodes/TheHive/interfaces/ObservableInterface.ts b/packages/nodes-base/nodes/TheHive/interfaces/ObservableInterface.ts index cb35df2189..da792ba07a 100644 --- a/packages/nodes-base/nodes/TheHive/interfaces/ObservableInterface.ts +++ b/packages/nodes-base/nodes/TheHive/interfaces/ObservableInterface.ts @@ -5,19 +5,19 @@ export const enum ObservableStatus { DELETED = 'Deleted', } export const enum ObservableDataType { - 'domain' = 'domain', - 'file' = 'file', - 'filename' = 'filename', - 'fqdn' = 'fqdn', - 'hash' = 'hash', - 'ip' = 'ip', - 'mail' = 'mail', - 'mail_subject' = 'mail_subject', - 'other' = 'other', - 'regexp' = 'regexp', - 'registry' = 'registry', - 'uri_path' = 'uri_path', - 'url' = 'url', + domain = 'domain', + file = 'file', + filename = 'filename', + fqdn = 'fqdn', + hash = 'hash', + ip = 'ip', + mail = 'mail', + mail_subject = 'mail_subject', + other = 'other', + regexp = 'regexp', + registry = 'registry', + uri_path = 'uri_path', + url = 'url', 'user-agent' = 'user-agent', } diff --git a/packages/nodes-base/nodes/TheHiveProject/TheHiveProjectTrigger.node.ts b/packages/nodes-base/nodes/TheHiveProject/TheHiveProjectTrigger.node.ts index 074573e7de..5550fdf201 100644 --- a/packages/nodes-base/nodes/TheHiveProject/TheHiveProjectTrigger.node.ts +++ b/packages/nodes-base/nodes/TheHiveProject/TheHiveProjectTrigger.node.ts @@ -1,10 +1,11 @@ -import type { - IWebhookFunctions, - IDataObject, - IHookFunctions, - INodeType, - INodeTypeDescription, - IWebhookResponseData, +import { + type IWebhookFunctions, + type IDataObject, + type IHookFunctions, + type INodeType, + type INodeTypeDescription, + type IWebhookResponseData, + NodeConnectionType, } from 'n8n-workflow'; import get from 'lodash/get'; @@ -21,7 +22,7 @@ export class TheHiveProjectTrigger implements INodeType { name: 'TheHive Trigger', }, inputs: [], - outputs: ['main'], + outputs: [NodeConnectionType.Main], webhooks: [ { name: 'default', @@ -214,7 +215,7 @@ export class TheHiveProjectTrigger implements INodeType { displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, options: [ { diff --git a/packages/nodes-base/nodes/TheHiveProject/actions/alert/get.operation.ts b/packages/nodes-base/nodes/TheHiveProject/actions/alert/get.operation.ts index 32cee8ca99..f634780025 100644 --- a/packages/nodes-base/nodes/TheHiveProject/actions/alert/get.operation.ts +++ b/packages/nodes-base/nodes/TheHiveProject/actions/alert/get.operation.ts @@ -14,7 +14,7 @@ const properties: INodeProperties[] = [ displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, options: [ { diff --git a/packages/nodes-base/nodes/TheHiveProject/actions/alert/promote.operation.ts b/packages/nodes-base/nodes/TheHiveProject/actions/alert/promote.operation.ts index cc69c94f9c..d59821e8f6 100644 --- a/packages/nodes-base/nodes/TheHiveProject/actions/alert/promote.operation.ts +++ b/packages/nodes-base/nodes/TheHiveProject/actions/alert/promote.operation.ts @@ -22,7 +22,7 @@ const properties: INodeProperties[] = [ name: 'caseTemplate', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', default: '', typeOptions: { loadOptionsMethod: 'loadCaseTemplate', diff --git a/packages/nodes-base/nodes/TheHiveProject/actions/alert/status.operation.ts b/packages/nodes-base/nodes/TheHiveProject/actions/alert/status.operation.ts index d4c7484abe..5244b79dfb 100644 --- a/packages/nodes-base/nodes/TheHiveProject/actions/alert/status.operation.ts +++ b/packages/nodes-base/nodes/TheHiveProject/actions/alert/status.operation.ts @@ -10,7 +10,7 @@ const properties: INodeProperties[] = [ name: 'status', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', default: '', required: true, typeOptions: { diff --git a/packages/nodes-base/nodes/TheHiveProject/actions/case/addAttachment.operation.ts b/packages/nodes-base/nodes/TheHiveProject/actions/case/addAttachment.operation.ts index 9f0bcdc6f5..cae32b71b5 100644 --- a/packages/nodes-base/nodes/TheHiveProject/actions/case/addAttachment.operation.ts +++ b/packages/nodes-base/nodes/TheHiveProject/actions/case/addAttachment.operation.ts @@ -15,7 +15,7 @@ const properties: INodeProperties[] = [ displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, options: [ { diff --git a/packages/nodes-base/nodes/TheHiveProject/actions/case/deleteAttachment.operation.ts b/packages/nodes-base/nodes/TheHiveProject/actions/case/deleteAttachment.operation.ts index aa398e0871..7491cfcb51 100644 --- a/packages/nodes-base/nodes/TheHiveProject/actions/case/deleteAttachment.operation.ts +++ b/packages/nodes-base/nodes/TheHiveProject/actions/case/deleteAttachment.operation.ts @@ -12,7 +12,7 @@ const properties: INodeProperties[] = [ default: '', required: true, description: - 'ID of the attachment. Choose from the list, or specify an ID using an expression.', + 'ID of the attachment. Choose from the list, or specify an ID using an expression.', typeOptions: { loadOptionsMethod: 'loadCaseAttachments', }, diff --git a/packages/nodes-base/nodes/TheHiveProject/actions/case/getAttachment.operation.ts b/packages/nodes-base/nodes/TheHiveProject/actions/case/getAttachment.operation.ts index cf538f4ab7..0a3566f154 100644 --- a/packages/nodes-base/nodes/TheHiveProject/actions/case/getAttachment.operation.ts +++ b/packages/nodes-base/nodes/TheHiveProject/actions/case/getAttachment.operation.ts @@ -17,7 +17,7 @@ const properties: INodeProperties[] = [ default: '', required: true, description: - 'ID of the attachment. Choose from the list, or specify an ID using an expression.', + 'ID of the attachment. Choose from the list, or specify an ID using an expression.', typeOptions: { loadOptionsMethod: 'loadCaseAttachments', loadOptionsDependsOn: ['caseId.value'], @@ -27,7 +27,7 @@ const properties: INodeProperties[] = [ displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, options: [ { diff --git a/packages/nodes-base/nodes/TheHiveProject/actions/log/deleteAttachment.operation.ts b/packages/nodes-base/nodes/TheHiveProject/actions/log/deleteAttachment.operation.ts index 3f3e64755e..017d7b4999 100644 --- a/packages/nodes-base/nodes/TheHiveProject/actions/log/deleteAttachment.operation.ts +++ b/packages/nodes-base/nodes/TheHiveProject/actions/log/deleteAttachment.operation.ts @@ -12,7 +12,7 @@ const properties: INodeProperties[] = [ default: '', required: true, description: - 'ID of the attachment. Choose from the list, or specify an ID using an expression.', + 'ID of the attachment. Choose from the list, or specify an ID using an expression.', typeOptions: { loadOptionsMethod: 'loadLogAttachments', loadOptionsDependsOn: ['logId.value'], diff --git a/packages/nodes-base/nodes/TheHiveProject/actions/node.description.ts b/packages/nodes-base/nodes/TheHiveProject/actions/node.description.ts index b5af7386c7..bd6ca8cf59 100644 --- a/packages/nodes-base/nodes/TheHiveProject/actions/node.description.ts +++ b/packages/nodes-base/nodes/TheHiveProject/actions/node.description.ts @@ -1,5 +1,5 @@ /* eslint-disable n8n-nodes-base/node-filename-against-convention */ -import type { INodeTypeDescription } from 'n8n-workflow'; +import { NodeConnectionType, type INodeTypeDescription } from 'n8n-workflow'; import * as alert from './alert'; import * as case_ from './case'; @@ -21,8 +21,8 @@ export const description: INodeTypeDescription = { defaults: { name: 'TheHive 5', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'theHiveProjectApi', diff --git a/packages/nodes-base/nodes/TheHiveProject/actions/observable/create.operation.ts b/packages/nodes-base/nodes/TheHiveProject/actions/observable/create.operation.ts index b431c2e9ca..ba515bbb78 100644 --- a/packages/nodes-base/nodes/TheHiveProject/actions/observable/create.operation.ts +++ b/packages/nodes-base/nodes/TheHiveProject/actions/observable/create.operation.ts @@ -54,7 +54,7 @@ const properties: INodeProperties[] = [ name: 'dataType', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', required: true, default: 'file', typeOptions: { diff --git a/packages/nodes-base/nodes/TheHiveProject/actions/observable/executeAnalyzer.operation.ts b/packages/nodes-base/nodes/TheHiveProject/actions/observable/executeAnalyzer.operation.ts index 50bbfbdfb3..54deac7c0b 100644 --- a/packages/nodes-base/nodes/TheHiveProject/actions/observable/executeAnalyzer.operation.ts +++ b/packages/nodes-base/nodes/TheHiveProject/actions/observable/executeAnalyzer.operation.ts @@ -16,7 +16,7 @@ const properties: INodeProperties[] = [ name: 'analyzers', type: 'multiOptions', description: - 'Choose from the list, or specify IDs using an expression', + 'Choose from the list, or specify IDs using an expression', required: true, default: [], typeOptions: { diff --git a/packages/nodes-base/nodes/TheHiveProject/actions/page/update.operation.ts b/packages/nodes-base/nodes/TheHiveProject/actions/page/update.operation.ts index 1b401e5645..8d41f9ba97 100644 --- a/packages/nodes-base/nodes/TheHiveProject/actions/page/update.operation.ts +++ b/packages/nodes-base/nodes/TheHiveProject/actions/page/update.operation.ts @@ -48,7 +48,7 @@ const properties: INodeProperties[] = [ displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, options: [ { diff --git a/packages/nodes-base/nodes/TheHiveProject/actions/router.ts b/packages/nodes-base/nodes/TheHiveProject/actions/router.ts index 5c82d47267..03fe0a25e4 100644 --- a/packages/nodes-base/nodes/TheHiveProject/actions/router.ts +++ b/packages/nodes-base/nodes/TheHiveProject/actions/router.ts @@ -65,7 +65,7 @@ export async function router(this: IExecuteFunctions): Promiseexpression', + 'Choose from the list, or specify an ID using an expression', required: true, default: '', typeOptions: { @@ -106,7 +106,7 @@ export const observableTypeOptions: INodeProperties = { loadOptionsMethod: 'loadObservableTypes', }, description: - 'Type of the observable. Choose from the list, or specify an ID using an expression.', + 'Type of the observable. Choose from the list, or specify an ID using an expression.', }; export const alertStatusOptions: INodeProperties = { @@ -204,7 +204,7 @@ export const searchOptions: INodeProperties = { displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, options: [ { diff --git a/packages/nodes-base/nodes/TheHiveProject/descriptions/filter.description.ts b/packages/nodes-base/nodes/TheHiveProject/descriptions/filter.description.ts index 015d766e88..d2d505058d 100644 --- a/packages/nodes-base/nodes/TheHiveProject/descriptions/filter.description.ts +++ b/packages/nodes-base/nodes/TheHiveProject/descriptions/filter.description.ts @@ -24,7 +24,7 @@ const field: INodeProperties[] = [ loadOptionsMethod: 'loadAlertFields', }, description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', displayOptions: { show: { '/resource': ['alert'], @@ -41,7 +41,7 @@ const field: INodeProperties[] = [ loadOptionsMethod: 'loadCaseFields', }, description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', displayOptions: { show: { '/resource': ['case'], @@ -58,7 +58,7 @@ const field: INodeProperties[] = [ loadOptionsMethod: 'loadTaskFields', }, description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', displayOptions: { show: { '/resource': ['task'], @@ -75,7 +75,7 @@ const field: INodeProperties[] = [ loadOptionsMethod: 'loadObservableFields', }, description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', displayOptions: { show: { '/resource': ['observable'], diff --git a/packages/nodes-base/nodes/TimescaleDb/TimescaleDb.node.json b/packages/nodes-base/nodes/TimescaleDb/TimescaleDb.node.json index 58acd0642e..4be2fcf5f5 100644 --- a/packages/nodes-base/nodes/TimescaleDb/TimescaleDb.node.json +++ b/packages/nodes-base/nodes/TimescaleDb/TimescaleDb.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/timescaleDb" + "url": "https://docs.n8n.io/integrations/builtin/credentials/timescaleDb/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/TimescaleDb/TimescaleDb.node.ts b/packages/nodes-base/nodes/TimescaleDb/TimescaleDb.node.ts index eb49ea8963..15461efdf4 100644 --- a/packages/nodes-base/nodes/TimescaleDb/TimescaleDb.node.ts +++ b/packages/nodes-base/nodes/TimescaleDb/TimescaleDb.node.ts @@ -4,7 +4,7 @@ import type { INodeType, INodeTypeDescription, } from 'n8n-workflow'; -import { NodeOperationError } from 'n8n-workflow'; +import { NodeConnectionType, NodeOperationError } from 'n8n-workflow'; import pgPromise from 'pg-promise'; import { pgInsert, pgQueryV2, pgUpdate } from '../Postgres/v1/genericFunctions'; @@ -20,8 +20,8 @@ export class TimescaleDb implements INodeType { defaults: { name: 'TimescaleDB', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], parameterPane: 'wide', credentials: [ { diff --git a/packages/nodes-base/nodes/Todoist/Todoist.node.json b/packages/nodes-base/nodes/Todoist/Todoist.node.json index cbeb1481c6..15e30790ce 100644 --- a/packages/nodes-base/nodes/Todoist/Todoist.node.json +++ b/packages/nodes-base/nodes/Todoist/Todoist.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/todoist" + "url": "https://docs.n8n.io/integrations/builtin/credentials/todoist/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Todoist/Todoist.node.ts b/packages/nodes-base/nodes/Todoist/Todoist.node.ts index 27566c46d0..0de9ed896d 100644 --- a/packages/nodes-base/nodes/Todoist/Todoist.node.ts +++ b/packages/nodes-base/nodes/Todoist/Todoist.node.ts @@ -11,7 +11,7 @@ export class Todoist extends VersionedNodeType { name: 'todoist', icon: 'file:todoist.svg', group: ['output'], - defaultVersion: 2, + defaultVersion: 2.1, subtitle: '={{$parameter["operation"] + ": " + $parameter["resource"]}}', description: 'Consume Todoist API', }; @@ -19,6 +19,7 @@ export class Todoist extends VersionedNodeType { const nodeVersions: IVersionedNodeType['nodeVersions'] = { 1: new TodoistV1(baseDescription), 2: new TodoistV2(baseDescription), + 2.1: new TodoistV2(baseDescription), }; super(nodeVersions, baseDescription); diff --git a/packages/nodes-base/nodes/Todoist/v1/TodoistV1.node.ts b/packages/nodes-base/nodes/Todoist/v1/TodoistV1.node.ts index 9bc5b9cabc..fccfa3f679 100644 --- a/packages/nodes-base/nodes/Todoist/v1/TodoistV1.node.ts +++ b/packages/nodes-base/nodes/Todoist/v1/TodoistV1.node.ts @@ -1,4 +1,3 @@ -/* eslint-disable n8n-nodes-base/node-filename-against-convention */ import type { IExecuteFunctions, IDataObject, @@ -10,6 +9,7 @@ import type { INodeTypeBaseDescription, INodeTypeDescription, } from 'n8n-workflow'; +import { NodeConnectionType } from 'n8n-workflow'; import { todoistApiRequest } from '../GenericFunctions'; @@ -42,8 +42,8 @@ const versionDescription: INodeTypeDescription = { defaults: { name: 'Todoist', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'todoistApi', @@ -225,7 +225,7 @@ const versionDescription: INodeTypeDescription = { }, default: '', description: - 'Section to which you want move the task. Choose from the list, or specify an ID using an expression.', + 'Section to which you want move the task. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Label Names or IDs', @@ -242,7 +242,7 @@ const versionDescription: INodeTypeDescription = { }, default: [], description: - 'Optional labels that will be assigned to a created task. Choose from the list, or specify IDs using an expression.', + 'Optional labels that will be assigned to a created task. Choose from the list, or specify IDs using an expression.', }, { displayName: 'Content', @@ -279,7 +279,7 @@ const versionDescription: INodeTypeDescription = { displayName: 'Additional Fields', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, displayOptions: { show: { @@ -328,7 +328,7 @@ const versionDescription: INodeTypeDescription = { }, default: {}, description: - 'The parent task you want to operate on. Choose from the list, or specify an ID using an expression.', + 'The parent task you want to operate on. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Priority', @@ -351,7 +351,7 @@ const versionDescription: INodeTypeDescription = { }, default: {}, description: - 'The section you want to operate on. Choose from the list, or specify an ID using an expression.', + 'The section you want to operate on. Choose from the list, or specify an ID using an expression.', }, ], }, @@ -390,7 +390,7 @@ const versionDescription: INodeTypeDescription = { displayName: 'Filters', name: 'filters', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, displayOptions: { show: { @@ -423,7 +423,7 @@ const versionDescription: INodeTypeDescription = { }, default: {}, description: - 'Filter tasks by label. Choose from the list, or specify an ID using an expression.', + 'Filter tasks by label. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Lang', @@ -443,7 +443,7 @@ const versionDescription: INodeTypeDescription = { }, default: '', description: - 'Filter tasks by parent task ID. Choose from the list, or specify an ID using an expression.', + 'Filter tasks by parent task ID. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Project Name or ID', @@ -454,7 +454,7 @@ const versionDescription: INodeTypeDescription = { }, default: '', description: - 'Filter tasks by project ID. Choose from the list, or specify an ID using an expression.', + 'Filter tasks by project ID. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Section Name or ID', @@ -466,7 +466,7 @@ const versionDescription: INodeTypeDescription = { }, default: '', description: - 'Filter tasks by section ID. Choose from the list, or specify an ID using an expression.', + 'Filter tasks by section ID. Choose from the list, or specify an ID using an expression.', }, ], }, @@ -533,7 +533,7 @@ const versionDescription: INodeTypeDescription = { name: 'labels', type: 'multiOptions', description: - 'Choose from the list, or specify IDs using an expression', + 'Choose from the list, or specify IDs using an expression', typeOptions: { loadOptionsMethod: 'getLabels', }, @@ -719,7 +719,7 @@ export class TodoistV1 implements INodeType { } } } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push({ error: error.message }); continue; } diff --git a/packages/nodes-base/nodes/Todoist/v2/OperationHandler.ts b/packages/nodes-base/nodes/Todoist/v2/OperationHandler.ts index 19e9c661ad..a1b706cac1 100644 --- a/packages/nodes-base/nodes/Todoist/v2/OperationHandler.ts +++ b/packages/nodes-base/nodes/Todoist/v2/OperationHandler.ts @@ -34,6 +34,7 @@ export interface Command { uuid: string; temp_id?: string; args: { + parent_id?: string; id?: number; section_id?: number; project_id?: number | string; @@ -251,7 +252,10 @@ export class MoveHandler implements OperationHandler { async handleOperation(ctx: Context, itemIndex: number): Promise { //https://api.todoist.com/sync/v9/sync const taskId = ctx.getNodeParameter('taskId', itemIndex) as number; - const section = ctx.getNodeParameter('section', itemIndex) as number; + const projectId = ctx.getNodeParameter('project', itemIndex, undefined, { + extractValue: true, + }) as number; + const nodeVersion = ctx.getNode().typeVersion; const body: SyncRequest = { commands: [ @@ -260,14 +264,28 @@ export class MoveHandler implements OperationHandler { uuid: uuid(), args: { id: taskId, - section_id: section, + // Set section_id only if node version is below 2.1 + ...(nodeVersion < 2.1 + ? { section_id: ctx.getNodeParameter('section', itemIndex) as number } + : {}), }, }, ], }; - await todoistSyncRequest.call(ctx, body); + if (nodeVersion >= 2.1) { + const options = ctx.getNodeParameter('options', itemIndex, {}) as IDataObject; + // Only one of parent_id, section_id, or project_id must be set to move the task + if (options.parent) { + body.commands[0].args.parent_id = options.parent as string; + } else if (options.section) { + body.commands[0].args.section_id = options.section as number; + } else { + body.commands[0].args.project_id = projectId; + } + } + await todoistSyncRequest.call(ctx, body); return { success: true }; } } diff --git a/packages/nodes-base/nodes/Todoist/v2/Service.ts b/packages/nodes-base/nodes/Todoist/v2/Service.ts index fa5112a5bf..b9fdb75ec3 100644 --- a/packages/nodes-base/nodes/Todoist/v2/Service.ts +++ b/packages/nodes-base/nodes/Todoist/v2/Service.ts @@ -54,6 +54,11 @@ export interface Service { execute(ctx: Context, operation: OperationType, itemIndex: number): Promise; } +export interface TodoistProjectType { + id: number; + name: string; +} + export interface TodoistResponse { success?: boolean; data?: IDataObject; diff --git a/packages/nodes-base/nodes/Todoist/v2/TodoistV2.node.ts b/packages/nodes-base/nodes/Todoist/v2/TodoistV2.node.ts index 7836ca9e4b..585b205e0b 100644 --- a/packages/nodes-base/nodes/Todoist/v2/TodoistV2.node.ts +++ b/packages/nodes-base/nodes/Todoist/v2/TodoistV2.node.ts @@ -1,19 +1,19 @@ -/* eslint-disable n8n-nodes-base/node-filename-against-convention */ -import type { - IExecuteFunctions, - IDataObject, - ILoadOptionsFunctions, - INodeExecutionData, - INodeListSearchResult, - INodePropertyOptions, - INodeType, - INodeTypeBaseDescription, - INodeTypeDescription, +import { + type IExecuteFunctions, + type IDataObject, + type ILoadOptionsFunctions, + type INodeExecutionData, + type INodeListSearchResult, + type INodePropertyOptions, + type INodeType, + type INodeTypeBaseDescription, + type INodeTypeDescription, + NodeConnectionType, } from 'n8n-workflow'; import { todoistApiRequest } from '../GenericFunctions'; -import type { OperationType } from './Service'; +import type { OperationType, TodoistProjectType } from './Service'; import { TodoistService } from './Service'; // interface IBodyCreateTask { @@ -36,14 +36,14 @@ const versionDescription: INodeTypeDescription = { name: 'todoist', icon: 'file:todoist.svg', group: ['output'], - version: 2, + version: [2, 2.1], subtitle: '={{$parameter["operation"] + ": " + $parameter["resource"]}}', description: 'Consume Todoist API', defaults: { name: 'Todoist', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'todoistApi', @@ -207,7 +207,7 @@ const versionDescription: INodeTypeDescription = { operation: ['create', 'move', 'sync'], }, }, - description: 'The project you want to operate on. Choose from the list, or specify an ID.', + description: 'The destination project. Choose from the list, or specify an ID.', }, { displayName: 'Section Name or ID', @@ -222,10 +222,53 @@ const versionDescription: INodeTypeDescription = { resource: ['task'], operation: ['move'], }, + hide: { + '@version': [{ _cnd: { gte: 2.1 } }], + }, }, default: '', description: - 'Section to which you want move the task. Choose from the list, or specify an ID using an expression.', + 'Section to which you want move the task. Choose from the list, or specify an ID using an expression.', + }, + { + displayName: 'Additional Fields', + name: 'options', + type: 'collection', + placeholder: 'Add option', + default: {}, + displayOptions: { + show: { + resource: ['task'], + operation: ['move'], + '@version': [{ _cnd: { gte: 2.1 } }], + }, + }, + options: [ + { + displayName: 'Section Name or ID', + name: 'section', + type: 'options', + typeOptions: { + loadOptionsMethod: 'getSections', + loadOptionsDependsOn: ['project', 'options.parent'], + }, + default: '', + description: + 'The destination section. The task becomes the last root task of the section. Choose from the list, or specify an ID using an expression.', + }, + { + displayName: 'Parent Name or ID', + name: 'parent', + type: 'options', + typeOptions: { + loadOptionsMethod: 'getItems', + loadOptionsDependsOn: ['project', 'options.section'], + }, + default: '', + description: + 'The destination parent task. The task becomes the last child task of the parent task. Choose from the list, or specify an ID using an expression.', + }, + ], }, { displayName: 'Label Names or IDs', @@ -242,7 +285,7 @@ const versionDescription: INodeTypeDescription = { }, default: [], description: - 'Optional labels that will be assigned to a created task. Choose from the list, or specify IDs using an expression.', + 'Optional labels that will be assigned to a created task. Choose from the list, or specify IDs using an expression.', }, { displayName: 'Content', @@ -279,7 +322,7 @@ const versionDescription: INodeTypeDescription = { displayName: 'Additional Fields', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, displayOptions: { show: { @@ -328,7 +371,7 @@ const versionDescription: INodeTypeDescription = { }, default: {}, description: - 'The parent task you want to operate on. Choose from the list, or specify an ID using an expression.', + 'The parent task you want to operate on. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Priority', @@ -351,7 +394,7 @@ const versionDescription: INodeTypeDescription = { }, default: {}, description: - 'The section you want to operate on. Choose from the list, or specify an ID using an expression.', + 'The section you want to operate on. Choose from the list, or specify an ID using an expression.', }, ], }, @@ -390,7 +433,7 @@ const versionDescription: INodeTypeDescription = { displayName: 'Filters', name: 'filters', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, displayOptions: { show: { @@ -423,7 +466,7 @@ const versionDescription: INodeTypeDescription = { }, default: {}, description: - 'Filter tasks by label. Choose from the list, or specify an ID using an expression.', + 'Filter tasks by label. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Lang', @@ -443,7 +486,7 @@ const versionDescription: INodeTypeDescription = { }, default: '', description: - 'Filter tasks by parent task ID. Choose from the list, or specify an ID using an expression.', + 'Filter tasks by parent task ID. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Project Name or ID', @@ -454,7 +497,7 @@ const versionDescription: INodeTypeDescription = { }, default: '', description: - 'Filter tasks by project ID. Choose from the list, or specify an ID using an expression.', + 'Filter tasks by project ID. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Section Name or ID', @@ -466,7 +509,7 @@ const versionDescription: INodeTypeDescription = { }, default: '', description: - 'Filter tasks by section ID. Choose from the list, or specify an ID using an expression.', + 'Filter tasks by section ID. Choose from the list, or specify an ID using an expression.', }, ], }, @@ -533,7 +576,7 @@ const versionDescription: INodeTypeDescription = { name: 'labels', type: 'multiOptions', description: - 'Choose from the list, or specify IDs using an expression', + 'Choose from the list, or specify IDs using an expression', typeOptions: { loadOptionsMethod: 'getLabels', }, @@ -567,22 +610,24 @@ export class TodoistV2 implements INodeType { methods = { listSearch: { - async searchProjects(this: ILoadOptionsFunctions): Promise { - const projects = await todoistApiRequest.call(this, 'GET', '/projects'); + async searchProjects( + this: ILoadOptionsFunctions, + filter?: string, + ): Promise { + const projects: TodoistProjectType[] = await todoistApiRequest.call( + this, + 'GET', + '/projects', + ); return { - results: projects.map((project: IDataObject) => ({ - name: project.name, - value: project.id, - })), - }; - }, - async searchLabels(this: ILoadOptionsFunctions): Promise { - const labels = await todoistApiRequest.call(this, 'GET', '/labels'); - return { - results: labels.map((label: IDataObject) => ({ - name: label.name, - value: label.name, - })), + results: projects + .filter( + (project) => !filter || project.name.toLowerCase().includes(filter.toLowerCase()), + ) + .map((project) => ({ + name: project.name, + value: project.id, + })), }; }, }, @@ -593,12 +638,9 @@ export class TodoistV2 implements INodeType { const returnData: INodePropertyOptions[] = []; const projects = await todoistApiRequest.call(this, 'GET', '/projects'); for (const project of projects) { - const projectName = project.name; - const projectId = project.id; - returnData.push({ - name: projectName, - value: projectId, + name: project.name, + value: project.id, }); } @@ -623,12 +665,9 @@ export class TodoistV2 implements INodeType { const qs: IDataObject = { project_id: projectId }; const sections = await todoistApiRequest.call(this, 'GET', '/sections', {}, qs); for (const section of sections) { - const sectionName = section.name; - const sectionId = section.id; - returnData.push({ - name: sectionName, - value: sectionId, + name: section.name, + value: section.id, }); } } @@ -663,12 +702,9 @@ export class TodoistV2 implements INodeType { const items = await todoistApiRequest.call(this, 'GET', '/tasks', {}, qs); for (const item of items) { - const itemContent = item.content; - const itemId = item.id; - returnData.push({ - name: itemContent, - value: itemId, + name: item.content, + value: item.id, }); } } @@ -683,10 +719,9 @@ export class TodoistV2 implements INodeType { const labels = await todoistApiRequest.call(this, 'GET', '/labels'); for (const label of labels) { - const labelName = label.name; returnData.push({ - name: labelName, - value: labelName, + name: label.name, + value: label.name, }); } @@ -731,7 +766,7 @@ export class TodoistV2 implements INodeType { } } } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { const executionData = this.helpers.constructExecutionMetaData( this.helpers.returnJsonArray({ error: error.message }), { itemData: { item: i } }, diff --git a/packages/nodes-base/nodes/Toggl/GenericFunctions.ts b/packages/nodes-base/nodes/Toggl/GenericFunctions.ts index 48b018a215..6b766730c8 100644 --- a/packages/nodes-base/nodes/Toggl/GenericFunctions.ts +++ b/packages/nodes-base/nodes/Toggl/GenericFunctions.ts @@ -24,21 +24,10 @@ export async function togglApiRequest( query?: IDataObject, uri?: string, ) { - const credentials = await this.getCredentials('togglApi'); - const headerWithAuthentication = Object.assign( - {}, - { - Authorization: ` Basic ${Buffer.from( - `${credentials.username}:${credentials.password}`, - ).toString('base64')}`, - }, - ); - const options: IRequestOptions = { - headers: headerWithAuthentication, method, qs: query, - uri: uri || `https://api.track.toggl.com/api/v8${resource}`, + uri: uri || `https://api.track.toggl.com/api/v9/me${resource}`, body, json: true, }; @@ -46,7 +35,7 @@ export async function togglApiRequest( delete options.body; } try { - return await this.helpers.request(options); + return await this.helpers.requestWithAuthentication.call(this, 'togglApi', options); } catch (error) { throw new NodeApiError(this.getNode(), error as JsonObject); } diff --git a/packages/nodes-base/nodes/Toggl/TogglTrigger.node.json b/packages/nodes-base/nodes/Toggl/TogglTrigger.node.json index 0673524d44..ff8f04a12e 100644 --- a/packages/nodes-base/nodes/Toggl/TogglTrigger.node.json +++ b/packages/nodes-base/nodes/Toggl/TogglTrigger.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/toggl" + "url": "https://docs.n8n.io/integrations/builtin/credentials/toggl/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Toggl/TogglTrigger.node.ts b/packages/nodes-base/nodes/Toggl/TogglTrigger.node.ts index fcfcf87846..bfa368c1c4 100644 --- a/packages/nodes-base/nodes/Toggl/TogglTrigger.node.ts +++ b/packages/nodes-base/nodes/Toggl/TogglTrigger.node.ts @@ -6,9 +6,10 @@ import type { INodeTypeDescription, JsonObject, } from 'n8n-workflow'; -import { NodeApiError, NodeOperationError } from 'n8n-workflow'; +import { NodeApiError, NodeConnectionType, NodeOperationError } from 'n8n-workflow'; import moment from 'moment-timezone'; +import { DateTime } from 'luxon'; import { togglApiRequest } from './GenericFunctions'; export class TogglTrigger implements INodeType { @@ -31,7 +32,7 @@ export class TogglTrigger implements INodeType { ], polling: true, inputs: [], - outputs: ['main'], + outputs: [NodeConnectionType.Main], properties: [ { displayName: 'Event', @@ -62,7 +63,7 @@ export class TogglTrigger implements INodeType { const qs: IDataObject = {}; let timeEntries = []; - qs.start_date = webhookData.lastTimeChecked; + qs.start_date = webhookData.lastTimeChecked ?? DateTime.now().toISODate(); qs.end_date = moment().format(); try { diff --git a/packages/nodes-base/nodes/Totp/Totp.node.ts b/packages/nodes-base/nodes/Totp/Totp.node.ts index e61a1ec3dc..60196b9b67 100644 --- a/packages/nodes-base/nodes/Totp/Totp.node.ts +++ b/packages/nodes-base/nodes/Totp/Totp.node.ts @@ -5,7 +5,7 @@ import type { INodeTypeDescription, } from 'n8n-workflow'; -import { NodeOperationError } from 'n8n-workflow'; +import { NodeConnectionType, NodeOperationError } from 'n8n-workflow'; import OTPAuth from 'otpauth'; @@ -21,8 +21,8 @@ export class Totp implements INodeType { defaults: { name: 'TOTP', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'totpApi', @@ -54,7 +54,7 @@ export class Totp implements INodeType { }, }, default: {}, - placeholder: 'Add Option', + placeholder: 'Add option', options: [ { displayName: 'Algorithm', @@ -126,7 +126,7 @@ export class Totp implements INodeType { const returnData: INodeExecutionData[] = []; const operation = this.getNodeParameter('operation', 0); - const credentials = (await this.getCredentials('totpApi')) as { label: string; secret: string }; + const credentials = await this.getCredentials<{ label: string; secret: string }>('totpApi'); if (!credentials.label.includes(':')) { throw new NodeOperationError(this.getNode(), 'Malformed label - expected `issuer:username`'); diff --git a/packages/nodes-base/nodes/Transform/Aggregate/Aggregate.node.ts b/packages/nodes-base/nodes/Transform/Aggregate/Aggregate.node.ts index fd918290a4..711146f74b 100644 --- a/packages/nodes-base/nodes/Transform/Aggregate/Aggregate.node.ts +++ b/packages/nodes-base/nodes/Transform/Aggregate/Aggregate.node.ts @@ -1,6 +1,7 @@ import get from 'lodash/get'; import isEmpty from 'lodash/isEmpty'; import set from 'lodash/set'; + import { NodeOperationError, type IDataObject, @@ -9,6 +10,9 @@ import { type INodeType, type INodeTypeDescription, type IPairedItemData, + NodeConnectionType, + type NodeExecutionHint, + NodeExecutionOutput, } from 'n8n-workflow'; import { prepareFieldsArray } from '../utils/utils'; import { addBinariesToItem } from './utils'; @@ -25,8 +29,8 @@ export class Aggregate implements INodeType { defaults: { name: 'Aggregate', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], properties: [ { displayName: 'Aggregate', @@ -238,6 +242,7 @@ export class Aggregate implements INodeType { async execute(this: IExecuteFunctions): Promise { let returnData: INodeExecutionData = { json: {}, pairedItem: [] }; const items = this.getInputData(); + const notFoundedFields: { [key: string]: boolean[] } = {}; const aggregate = this.getNodeParameter('aggregate', 0, '') as string; @@ -298,8 +303,13 @@ export class Aggregate implements INodeType { if (fieldToAggregate !== '') { values[_outputFieldName] = []; for (let i = 0; i < items.length; i++) { + if (notFoundedFields[fieldToAggregate] === undefined) { + notFoundedFields[fieldToAggregate] = []; + } + if (!disableDotNotation) { let value = get(items[i].json, fieldToAggregate); + notFoundedFields[fieldToAggregate].push(value === undefined ? false : true); if (!keepMissing) { if (Array.isArray(value)) { @@ -316,6 +326,7 @@ export class Aggregate implements INodeType { } } else { let value = items[i].json[fieldToAggregate]; + notFoundedFields[fieldToAggregate].push(value === undefined ? false : true); if (!keepMissing) { if (Array.isArray(value)) { @@ -409,6 +420,21 @@ export class Aggregate implements INodeType { addBinariesToItem(returnData, aggregatedItems, keepOnlyUnique); } + if (Object.keys(notFoundedFields).length) { + const hints: NodeExecutionHint[] = []; + + for (const [field, values] of Object.entries(notFoundedFields)) { + if (values.every((value) => !value)) { + hints.push({ + message: `The field '${field}' wasn't found in any input item`, + location: 'outputPane', + }); + } + } + + if (hints.length) return new NodeExecutionOutput([[returnData]], hints); + } + return [[returnData]]; } } diff --git a/packages/nodes-base/nodes/Transform/Limit/Limit.node.ts b/packages/nodes-base/nodes/Transform/Limit/Limit.node.ts index 0415520801..c68dcd15fe 100644 --- a/packages/nodes-base/nodes/Transform/Limit/Limit.node.ts +++ b/packages/nodes-base/nodes/Transform/Limit/Limit.node.ts @@ -4,6 +4,7 @@ import type { INodeType, INodeTypeDescription, } from 'n8n-workflow'; +import { NodeConnectionType } from 'n8n-workflow'; export class Limit implements INodeType { description: INodeTypeDescription = { @@ -17,8 +18,8 @@ export class Limit implements INodeType { defaults: { name: 'Limit', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], properties: [ { displayName: 'Max Items', diff --git a/packages/nodes-base/nodes/Transform/RemoveDuplicates/RemoveDuplicates.node.ts b/packages/nodes-base/nodes/Transform/RemoveDuplicates/RemoveDuplicates.node.ts index 33260922d7..2af7fd7f2e 100644 --- a/packages/nodes-base/nodes/Transform/RemoveDuplicates/RemoveDuplicates.node.ts +++ b/packages/nodes-base/nodes/Transform/RemoveDuplicates/RemoveDuplicates.node.ts @@ -1,233 +1,25 @@ -import get from 'lodash/get'; -import isEqual from 'lodash/isEqual'; -import lt from 'lodash/lt'; -import pick from 'lodash/pick'; -import { - NodeOperationError, - type IExecuteFunctions, - type INodeExecutionData, - type INodeType, - type INodeTypeDescription, -} from 'n8n-workflow'; -import { prepareFieldsArray } from '../utils/utils'; -import { validateInputData } from './utils'; -import { compareItems, flattenKeys } from '@utils/utilities'; +import type { INodeTypeBaseDescription, IVersionedNodeType } from 'n8n-workflow'; +import { VersionedNodeType } from 'n8n-workflow'; -export class RemoveDuplicates implements INodeType { - description: INodeTypeDescription = { - displayName: 'Remove Duplicates', - name: 'removeDuplicates', - icon: 'file:removeDuplicates.svg', - group: ['transform'], - subtitle: '', - version: [1, 1.1], - description: 'Delete items with matching field values', - defaults: { - name: 'Remove Duplicates', - }, - inputs: ['main'], - outputs: ['main'], - properties: [ - { - displayName: 'Compare', - name: 'compare', - type: 'options', - options: [ - { - name: 'All Fields', - value: 'allFields', - }, - { - name: 'All Fields Except', - value: 'allFieldsExcept', - }, - { - name: 'Selected Fields', - value: 'selectedFields', - }, - ], - default: 'allFields', - description: 'The fields of the input items to compare to see if they are the same', - }, - { - displayName: 'Fields To Exclude', - name: 'fieldsToExclude', - type: 'string', - placeholder: 'e.g. email, name', - requiresDataPath: 'multiple', - description: 'Fields in the input to exclude from the comparison', - default: '', - displayOptions: { - show: { - compare: ['allFieldsExcept'], - }, - }, - }, - { - displayName: 'Fields To Compare', - name: 'fieldsToCompare', - type: 'string', - placeholder: 'e.g. email, name', - requiresDataPath: 'multiple', - description: 'Fields in the input to add to the comparison', - default: '', - displayOptions: { - show: { - compare: ['selectedFields'], - }, - }, - }, - { - displayName: 'Options', - name: 'options', - type: 'collection', - placeholder: 'Add Field', - default: {}, - displayOptions: { - show: { - compare: ['allFieldsExcept', 'selectedFields'], - }, - }, - options: [ - { - displayName: 'Disable Dot Notation', - name: 'disableDotNotation', - type: 'boolean', - default: false, - description: - 'Whether to disallow referencing child fields using `parent.child` in the field name', - }, - { - displayName: 'Remove Other Fields', - name: 'removeOtherFields', - type: 'boolean', - default: false, - description: - 'Whether to remove any fields that are not being compared. If disabled, will keep the values from the first of the duplicates.', - }, - ], - }, - ], - }; +import { RemoveDuplicatesV1 } from './v1/RemoveDuplicatesV1.node'; +import { RemoveDuplicatesV2 } from './v2/RemoveDuplicatesV2.node'; +export class RemoveDuplicates extends VersionedNodeType { + constructor() { + const baseDescription: INodeTypeBaseDescription = { + displayName: 'Remove Duplicates', + name: 'removeDuplicates', + icon: 'file:removeDuplicates.svg', + group: ['transform'], + defaultVersion: 2, + description: 'Delete items with matching field values', + }; - async execute(this: IExecuteFunctions): Promise { - const items = this.getInputData(); - const compare = this.getNodeParameter('compare', 0) as string; - const disableDotNotation = this.getNodeParameter( - 'options.disableDotNotation', - 0, - false, - ) as boolean; - const removeOtherFields = this.getNodeParameter( - 'options.removeOtherFields', - 0, - false, - ) as boolean; + const nodeVersions: IVersionedNodeType['nodeVersions'] = { + 1: new RemoveDuplicatesV1(baseDescription), + 1.1: new RemoveDuplicatesV1(baseDescription), + 2: new RemoveDuplicatesV2(baseDescription), + }; - let keys = disableDotNotation - ? Object.keys(items[0].json) - : Object.keys(flattenKeys(items[0].json)); - - for (const item of items) { - for (const key of disableDotNotation - ? Object.keys(item.json) - : Object.keys(flattenKeys(item.json))) { - if (!keys.includes(key)) { - keys.push(key); - } - } - } - - if (compare === 'allFieldsExcept') { - const fieldsToExclude = prepareFieldsArray( - this.getNodeParameter('fieldsToExclude', 0, '') as string, - 'Fields To Exclude', - ); - - if (!fieldsToExclude.length) { - throw new NodeOperationError( - this.getNode(), - 'No fields specified. Please add a field to exclude from comparison', - ); - } - if (!disableDotNotation) { - keys = Object.keys(flattenKeys(items[0].json)); - } - keys = keys.filter((key) => !fieldsToExclude.includes(key)); - } - if (compare === 'selectedFields') { - const fieldsToCompare = prepareFieldsArray( - this.getNodeParameter('fieldsToCompare', 0, '') as string, - 'Fields To Compare', - ); - if (!fieldsToCompare.length) { - throw new NodeOperationError( - this.getNode(), - 'No fields specified. Please add a field to compare on', - ); - } - if (!disableDotNotation) { - keys = Object.keys(flattenKeys(items[0].json)); - } - keys = fieldsToCompare.map((key) => key.trim()); - } - - // This solution is O(nlogn) - // add original index to the items - const newItems = items.map( - (item, index) => - ({ - json: { ...item.json, __INDEX: index }, - pairedItem: { item: index }, - }) as INodeExecutionData, - ); - //sort items using the compare keys - newItems.sort((a, b) => { - let result = 0; - - for (const key of keys) { - let equal; - if (!disableDotNotation) { - equal = isEqual(get(a.json, key), get(b.json, key)); - } else { - equal = isEqual(a.json[key], b.json[key]); - } - if (!equal) { - let lessThan; - if (!disableDotNotation) { - lessThan = lt(get(a.json, key), get(b.json, key)); - } else { - lessThan = lt(a.json[key], b.json[key]); - } - result = lessThan ? -1 : 1; - break; - } - } - return result; - }); - - validateInputData(this.getNode(), newItems, keys, disableDotNotation); - - // collect the original indexes of items to be removed - const removedIndexes: number[] = []; - let temp = newItems[0]; - for (let index = 1; index < newItems.length; index++) { - if (compareItems(newItems[index], temp, keys, disableDotNotation)) { - removedIndexes.push(newItems[index].json.__INDEX as unknown as number); - } else { - temp = newItems[index]; - } - } - - let returnData = items.filter((_, index) => !removedIndexes.includes(index)); - - if (removeOtherFields) { - returnData = returnData.map((item, index) => ({ - json: pick(item.json, ...keys), - pairedItem: { item: index }, - })); - } - - return [returnData]; + super(nodeVersions, baseDescription); } } diff --git a/packages/nodes-base/nodes/Transform/RemoveDuplicates/test/RemoveDuplicates.test.ts b/packages/nodes-base/nodes/Transform/RemoveDuplicates/test/RemoveDuplicates.test.ts index 4bf5f6b5b5..e063c46926 100644 --- a/packages/nodes-base/nodes/Transform/RemoveDuplicates/test/RemoveDuplicates.test.ts +++ b/packages/nodes-base/nodes/Transform/RemoveDuplicates/test/RemoveDuplicates.test.ts @@ -1,7 +1,9 @@ import type { INode } from 'n8n-workflow'; -import { validateInputData } from '../utils'; + import { testWorkflows, getWorkflowFilenames } from '@test/nodes/Helpers'; +import { validateInputData } from '../utils'; + const workflows = getWorkflowFilenames(__dirname); describe('Test Remove Duplicates Node', () => testWorkflows(workflows)); diff --git a/packages/nodes-base/nodes/Transform/RemoveDuplicates/utils.ts b/packages/nodes-base/nodes/Transform/RemoveDuplicates/utils.ts index 532ff4ec3a..4fda255aa1 100644 --- a/packages/nodes-base/nodes/Transform/RemoveDuplicates/utils.ts +++ b/packages/nodes-base/nodes/Transform/RemoveDuplicates/utils.ts @@ -1,5 +1,11 @@ +import { isEqual, lt, pick } from 'lodash'; import get from 'lodash/get'; -import { NodeOperationError, type INode, type INodeExecutionData } from 'n8n-workflow'; +import { NodeOperationError } from 'n8n-workflow'; +import type { IExecuteFunctions, INode, INodeExecutionData } from 'n8n-workflow'; + +import { compareItems, flattenKeys } from '@utils/utilities'; + +import { prepareFieldsArray } from '../utils/utils'; export const validateInputData = ( node: INode, @@ -39,3 +45,124 @@ export const validateInputData = ( } } }; + +export function removeDuplicateInputItems(context: IExecuteFunctions, items: INodeExecutionData[]) { + const compare = context.getNodeParameter('compare', 0) as string; + const disableDotNotation = context.getNodeParameter( + 'options.disableDotNotation', + 0, + false, + ) as boolean; + const removeOtherFields = context.getNodeParameter( + 'options.removeOtherFields', + 0, + false, + ) as boolean; + + let keys = disableDotNotation + ? Object.keys(items[0].json) + : Object.keys(flattenKeys(items[0].json)); + + for (const item of items) { + const itemKeys = disableDotNotation + ? Object.keys(item.json) + : Object.keys(flattenKeys(item.json)); + for (const key of itemKeys) { + if (!keys.includes(key)) { + keys.push(key); + } + } + } + + if (compare === 'allFieldsExcept') { + const fieldsToExclude = prepareFieldsArray( + context.getNodeParameter('fieldsToExclude', 0, '') as string, + 'Fields To Exclude', + ); + + if (!fieldsToExclude.length) { + throw new NodeOperationError( + context.getNode(), + 'No fields specified. Please add a field to exclude from comparison', + ); + } + if (!disableDotNotation) { + keys = Object.keys(flattenKeys(items[0].json)); + } + keys = keys.filter((key) => !fieldsToExclude.includes(key)); + } + if (compare === 'selectedFields') { + const fieldsToCompare = prepareFieldsArray( + context.getNodeParameter('fieldsToCompare', 0, '') as string, + 'Fields To Compare', + ); + if (!fieldsToCompare.length) { + throw new NodeOperationError( + context.getNode(), + 'No fields specified. Please add a field to compare on', + ); + } + if (!disableDotNotation) { + keys = Object.keys(flattenKeys(items[0].json)); + } + keys = fieldsToCompare.map((key) => key.trim()); + } + + // This solution is O(nlogn) + // add original index to the items + const newItems = items.map( + (item, index) => + ({ + json: { ...item.json, __INDEX: index }, + pairedItem: { item: index }, + }) as INodeExecutionData, + ); + //sort items using the compare keys + newItems.sort((a, b) => { + let result = 0; + + for (const key of keys) { + let equal; + if (!disableDotNotation) { + equal = isEqual(get(a.json, key), get(b.json, key)); + } else { + equal = isEqual(a.json[key], b.json[key]); + } + if (!equal) { + let lessThan; + if (!disableDotNotation) { + lessThan = lt(get(a.json, key), get(b.json, key)); + } else { + lessThan = lt(a.json[key], b.json[key]); + } + result = lessThan ? -1 : 1; + break; + } + } + return result; + }); + + validateInputData(context.getNode(), newItems, keys, disableDotNotation); + + // collect the original indexes of items to be removed + const removedIndexes: number[] = []; + let temp = newItems[0]; + for (let index = 1; index < newItems.length; index++) { + if (compareItems(newItems[index], temp, keys, disableDotNotation)) { + removedIndexes.push(newItems[index].json.__INDEX as unknown as number); + } else { + temp = newItems[index]; + } + } + let updatedItems: INodeExecutionData[] = items.filter( + (_, index) => !removedIndexes.includes(index), + ); + + if (removeOtherFields) { + updatedItems = updatedItems.map((item, index) => ({ + json: pick(item.json, ...keys), + pairedItem: { item: index }, + })); + } + return [updatedItems]; +} diff --git a/packages/nodes-base/nodes/Transform/RemoveDuplicates/v1/RemoveDuplicatesV1.node.ts b/packages/nodes-base/nodes/Transform/RemoveDuplicates/v1/RemoveDuplicatesV1.node.ts new file mode 100644 index 0000000000..c76c86953d --- /dev/null +++ b/packages/nodes-base/nodes/Transform/RemoveDuplicates/v1/RemoveDuplicatesV1.node.ts @@ -0,0 +1,121 @@ +import { NodeConnectionType } from 'n8n-workflow'; +import type { + INodeTypeBaseDescription, + IExecuteFunctions, + INodeExecutionData, + INodeType, + INodeTypeDescription, +} from 'n8n-workflow'; + +import { removeDuplicateInputItems } from '../utils'; + +const versionDescription: INodeTypeDescription = { + displayName: 'Remove Duplicates', + name: 'removeDuplicates', + icon: 'file:removeDuplicates.svg', + group: ['transform'], + subtitle: '', + version: [1, 1.1], + description: 'Delete items with matching field values', + defaults: { + name: 'Remove Duplicates', + }, + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], + properties: [ + { + displayName: 'Compare', + name: 'compare', + type: 'options', + options: [ + { + name: 'All Fields', + value: 'allFields', + }, + { + name: 'All Fields Except', + value: 'allFieldsExcept', + }, + { + name: 'Selected Fields', + value: 'selectedFields', + }, + ], + default: 'allFields', + description: 'The fields of the input items to compare to see if they are the same', + }, + { + displayName: 'Fields To Exclude', + name: 'fieldsToExclude', + type: 'string', + placeholder: 'e.g. email, name', + requiresDataPath: 'multiple', + description: 'Fields in the input to exclude from the comparison', + default: '', + displayOptions: { + show: { + compare: ['allFieldsExcept'], + }, + }, + }, + { + displayName: 'Fields To Compare', + name: 'fieldsToCompare', + type: 'string', + placeholder: 'e.g. email, name', + requiresDataPath: 'multiple', + description: 'Fields in the input to add to the comparison', + default: '', + displayOptions: { + show: { + compare: ['selectedFields'], + }, + }, + }, + { + displayName: 'Options', + name: 'options', + type: 'collection', + placeholder: 'Add Field', + default: {}, + displayOptions: { + show: { + compare: ['allFieldsExcept', 'selectedFields'], + }, + }, + options: [ + { + displayName: 'Disable Dot Notation', + name: 'disableDotNotation', + type: 'boolean', + default: false, + description: + 'Whether to disallow referencing child fields using `parent.child` in the field name', + }, + { + displayName: 'Remove Other Fields', + name: 'removeOtherFields', + type: 'boolean', + default: false, + description: + 'Whether to remove any fields that are not being compared. If disabled, will keep the values from the first of the duplicates.', + }, + ], + }, + ], +}; +export class RemoveDuplicatesV1 implements INodeType { + description: INodeTypeDescription; + + constructor(baseDescription: INodeTypeBaseDescription) { + this.description = { + ...baseDescription, + ...versionDescription, + }; + } + + async execute(this: IExecuteFunctions): Promise { + const items = this.getInputData(); + return removeDuplicateInputItems(this, items); + } +} diff --git a/packages/nodes-base/nodes/Transform/RemoveDuplicates/v2/RemoveDuplicatesV2.description.ts b/packages/nodes-base/nodes/Transform/RemoveDuplicates/v2/RemoveDuplicatesV2.description.ts new file mode 100644 index 0000000000..88ab5a9bc4 --- /dev/null +++ b/packages/nodes-base/nodes/Transform/RemoveDuplicates/v2/RemoveDuplicatesV2.description.ts @@ -0,0 +1,278 @@ +import type { INodeProperties } from 'n8n-workflow'; +const operationOptions = [ + { + name: 'Remove Items Repeated Within Current Input', + value: 'removeDuplicateInputItems', + description: 'Remove duplicates from incoming items', + action: 'Remove items repeated within current input', + }, + { + name: 'Remove Items Processed in Previous Executions', + value: 'removeItemsSeenInPreviousExecutions', + description: 'Deduplicate items already seen in previous executions', + action: 'Remove items processed in previous executions', + }, + { + name: 'Clear Deduplication History', + value: 'clearDeduplicationHistory', + description: 'Wipe the store of previous items', + action: 'Clear deduplication history', + }, +]; +const compareOptions = [ + { + name: 'All Fields', + value: 'allFields', + }, + { + name: 'All Fields Except', + value: 'allFieldsExcept', + }, + { + name: 'Selected Fields', + value: 'selectedFields', + }, +]; +const logicOptions = [ + { + name: 'Value Is New', + value: 'removeItemsWithAlreadySeenKeyValues', + description: 'Remove all input items with values matching those already processed', + }, + { + name: 'Value Is Higher than Any Previous Value', + value: 'removeItemsUpToStoredIncrementalKey', + description: + 'Works with incremental values, removes all input items with values up to the stored value', + }, + { + name: 'Value Is a Date Later than Any Previous Date', + value: 'removeItemsUpToStoredDate', + description: + 'Works with date values, removes all input items with values up to the stored date', + }, +]; +const manageDatabaseModeOptions = [ + { + name: 'Clean Database', + value: 'cleanDatabase', + description: 'Clear all values stored for a key in the database', + }, +]; + +export const removeDuplicatesNodeFields: INodeProperties[] = [ + { + displayName: 'Operation', + name: 'operation', + type: 'options', + noDataExpression: true, + options: operationOptions, + default: 'removeDuplicateInputItems', + }, + { + displayName: 'Compare', + name: 'compare', + type: 'options', + options: compareOptions, + default: 'allFields', + description: 'The fields of the input items to compare to see if they are the same', + displayOptions: { + show: { + operation: ['removeDuplicateInputItems'], + }, + }, + }, + { + displayName: 'Fields To Exclude', + name: 'fieldsToExclude', + type: 'string', + placeholder: 'e.g. email, name', + requiresDataPath: 'multiple', + description: 'Fields in the input to exclude from the comparison', + default: '', + displayOptions: { + show: { + compare: ['allFieldsExcept'], + }, + }, + }, + { + displayName: 'Fields To Compare', + name: 'fieldsToCompare', + type: 'string', + placeholder: 'e.g. email, name', + requiresDataPath: 'multiple', + description: 'Fields in the input to add to the comparison', + default: '', + displayOptions: { + show: { + compare: ['selectedFields'], + }, + }, + }, + + // ---------------------------------- + { + displayName: 'Keep Items Where', + name: 'logic', + type: 'options', + noDataExpression: true, + options: logicOptions, + default: 'removeItemsWithAlreadySeenKeyValues', + description: + 'How to select input items to remove by comparing them with key values previously processed', + displayOptions: { + show: { + operation: ['removeItemsSeenInPreviousExecutions'], + }, + }, + }, + { + displayName: 'Value to Dedupe On', + name: 'dedupeValue', + type: 'string', + default: '', + description: 'Use an input field (or a combination of fields) that has a unique ID value', + hint: 'The input field value to compare between items', + placeholder: 'e.g. ID', + required: true, + displayOptions: { + show: { + logic: ['removeItemsWithAlreadySeenKeyValues'], + '/operation': ['removeItemsSeenInPreviousExecutions'], + }, + }, + }, + { + displayName: 'Value to Dedupe On', + name: 'incrementalDedupeValue', + type: 'number', + default: '', + description: 'Use an input field (or a combination of fields) that has an incremental value', + hint: 'The input field value to compare between items, an incremental value is expected', + placeholder: 'e.g. ID', + displayOptions: { + show: { + logic: ['removeItemsUpToStoredIncrementalKey'], + '/operation': ['removeItemsSeenInPreviousExecutions'], + }, + }, + }, + { + displayName: 'Value to Dedupe On', + name: 'dateDedupeValue', + type: 'dateTime', + default: '', + description: 'Use an input field that has a date value in ISO format', + hint: 'The input field value to compare between items, a date is expected', + placeholder: ' e.g. 2024-08-09T13:44:16Z', + displayOptions: { + show: { + logic: ['removeItemsUpToStoredDate'], + '/operation': ['removeItemsSeenInPreviousExecutions'], + }, + }, + }, + { + displayName: 'Mode', + name: 'mode', + type: 'options', + default: 'cleanDatabase', + description: + 'How you want to modify the key values stored on the database. None of these modes removes input items.', + displayOptions: { + show: { + operation: ['clearDeduplicationHistory'], + }, + }, + options: manageDatabaseModeOptions, + }, + { + displayName: 'Options', + name: 'options', + type: 'collection', + placeholder: 'Add Field', + default: {}, + displayOptions: { + show: { + operation: [ + 'removeDuplicateInputItems', + 'removeItemsSeenInPreviousExecutions', + 'clearDeduplicationHistory', + ], + }, + }, + options: [ + { + displayName: 'Disable Dot Notation', + name: 'disableDotNotation', + type: 'boolean', + default: false, + displayOptions: { + show: { + '/operation': ['removeDuplicateInputItems'], + }, + hide: { + '/compare': ['allFields'], + }, + }, + description: + 'Whether to disallow referencing child fields using `parent.child` in the field name', + }, + { + displayName: 'Remove Other Fields', + name: 'removeOtherFields', + type: 'boolean', + default: false, + displayOptions: { + show: { + '/operation': ['removeDuplicateInputItems'], + }, + hide: { + '/compare': ['allFields'], + }, + }, + description: + 'Whether to remove any fields that are not being compared. If disabled, will keep the values from the first of the duplicates.', + }, + { + displayName: 'Scope', + name: 'scope', + type: 'options', + default: 'node', + displayOptions: { + show: { + '/operation': ['clearDeduplicationHistory', 'removeItemsSeenInPreviousExecutions'], + }, + }, + description: + 'If set to ‘workflow,’ key values will be shared across all nodes in the workflow. If set to ‘node,’ key values will be specific to this node.', + options: [ + { + name: 'Workflow', + value: 'workflow', + description: 'Deduplication info will be shared by all the nodes in the workflow', + }, + { + name: 'Node', + value: 'node', + description: 'Deduplication info will be stored only for this node', + }, + ], + }, + { + displayName: 'History Size', + name: 'historySize', + type: 'number', + default: 10000, + hint: 'The max number of past items to store for deduplication', + displayOptions: { + show: { + '/logic': ['removeItemsWithAlreadySeenKeyValues'], + '/operation': ['removeItemsSeenInPreviousExecutions'], + }, + }, + }, + ], + }, +]; diff --git a/packages/nodes-base/nodes/Transform/RemoveDuplicates/v2/RemoveDuplicatesV2.node.ts b/packages/nodes-base/nodes/Transform/RemoveDuplicates/v2/RemoveDuplicatesV2.node.ts new file mode 100644 index 0000000000..a4fa34d997 --- /dev/null +++ b/packages/nodes-base/nodes/Transform/RemoveDuplicates/v2/RemoveDuplicatesV2.node.ts @@ -0,0 +1,277 @@ +import { + NodeConnectionType, + NodeExecutionOutput, + NodeOperationError, + tryToParseDateTime, +} from 'n8n-workflow'; +import type { + INodeTypeBaseDescription, + IExecuteFunctions, + INodeExecutionData, + INodeType, + INodeTypeDescription, + DeduplicationScope, +} from 'n8n-workflow'; + +import { removeDuplicatesNodeFields } from './RemoveDuplicatesV2.description'; +import { removeDuplicateInputItems } from '../utils'; + +const versionDescription: INodeTypeDescription = { + displayName: 'Remove Duplicates', + name: 'removeDuplicates', + icon: 'file:removeDuplicates.svg', + group: ['transform'], + subtitle: '', + version: [2], + description: 'Delete items with matching field values', + defaults: { + name: 'Remove Duplicates', + }, + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], + outputNames: ['Kept', 'Discarded'], + hints: [ + { + message: 'The dedupe key set in “Value to Dedupe On” has no value', + displayCondition: + '={{ $parameter["operation"] === "removeItemsSeenInPreviousExecutions" && ($parameter["logic"] === "removeItemsWithAlreadySeenKeyValues" && $parameter["dedupeValue"] === undefined) || ($parameter["logic"] === "removeItemsUpToStoredIncrementalKey" && $parameter["incrementalDedupeValue"] === undefined) || ($parameter["logic"] === "removeItemsUpToStoredDate" && $parameter["dateDedupeValue"] === undefined) }}', + whenToDisplay: 'beforeExecution', + location: 'outputPane', + }, + ], + properties: [...removeDuplicatesNodeFields], +}; +export class RemoveDuplicatesV2 implements INodeType { + description: INodeTypeDescription; + + constructor(baseDescription: INodeTypeBaseDescription) { + this.description = { + ...baseDescription, + ...versionDescription, + }; + } + + async execute(this: IExecuteFunctions): Promise { + const items = this.getInputData(); + const operation = this.getNodeParameter('operation', 0); + const returnData: INodeExecutionData[][] = []; + const DEFAULT_MAX_ENTRIES = 10000; + try { + switch (operation) { + case 'removeDuplicateInputItems': { + return removeDuplicateInputItems(this, items); + } + case 'removeItemsSeenInPreviousExecutions': { + const logic = this.getNodeParameter('logic', 0); + const scope = this.getNodeParameter('options.scope', 0, 'node') as DeduplicationScope; + + if (logic === 'removeItemsWithAlreadySeenKeyValues') { + if (!['node', 'workflow'].includes(scope)) { + throw new NodeOperationError( + this.getNode(), + `The scope '${scope}' is not supported. Please select either "node" or "workflow".`, + ); + } + + let checkValue: string; + const itemMapping: { + [key: string]: INodeExecutionData[]; + } = {}; + for (let itemIndex = 0; itemIndex < items.length; itemIndex++) { + checkValue = this.getNodeParameter('dedupeValue', itemIndex, '')?.toString() ?? ''; + if (itemMapping[checkValue]) { + itemMapping[checkValue].push(items[itemIndex]); + } else { + itemMapping[checkValue] = [items[itemIndex]]; + } + } + + const maxEntries = this.getNodeParameter( + 'options.historySize', + 0, + DEFAULT_MAX_ENTRIES, + ) as number; + const maxEntriesNum = Number(maxEntries); + + const currentProcessedDataCount = await this.helpers.getProcessedDataCount(scope, { + mode: 'entries', + maxEntries, + }); + if (currentProcessedDataCount + items.length > maxEntriesNum) { + throw new NodeOperationError( + this.getNode(), + 'The number of items to be processed exceeds the maximum history size. Please increase the history size or reduce the number of items to be processed.', + ); + } + const itemsProcessed = await this.helpers.checkProcessedAndRecord( + Object.keys(itemMapping), + scope, + { mode: 'entries', maxEntries }, + ); + const processedDataCount = await this.helpers.getProcessedDataCount(scope, { + mode: 'entries', + maxEntries, + }); + returnData.push( + itemsProcessed.new + .map((key) => { + return itemMapping[key]; + }) + .flat(), + itemsProcessed.processed + .map((key) => { + return itemMapping[key]; + }) + .flat(), + ); + + if (maxEntriesNum > 0 && processedDataCount / maxEntriesNum > 0.5) { + return new NodeExecutionOutput(returnData, [ + { + message: `Some duplicates may be not be removed since you're approaching the maximum history size (${maxEntriesNum} items). You can raise this limit using the ‘history size’ option.`, + location: 'outputPane', + }, + ]); + } else return returnData; + } else if (logic === 'removeItemsUpToStoredIncrementalKey') { + if (!['node', 'workflow'].includes(scope)) { + throw new NodeOperationError( + this.getNode(), + `The scope '${scope}' is not supported. Please select either "node" or "workflow".`, + ); + } + + let parsedIncrementalKey: number; + const itemMapping: { + [key: string]: INodeExecutionData[]; + } = {}; + + for (let itemIndex = 0; itemIndex < items.length; itemIndex++) { + const incrementalKey = this.getNodeParameter('incrementalDedupeValue', itemIndex, ''); + if (!incrementalKey?.toString()) { + throw new NodeOperationError( + this.getNode(), + 'The `Value to Dedupe` On is empty. Please provide a value.', + ); + } + parsedIncrementalKey = Number(incrementalKey); + if (isNaN(parsedIncrementalKey)) { + throw new NodeOperationError( + this.getNode(), + `The value '${incrementalKey}' is not a number. Please provide a number.`, + ); + } + if (itemMapping[parsedIncrementalKey]) { + itemMapping[parsedIncrementalKey].push(items[itemIndex]); + } else { + itemMapping[parsedIncrementalKey] = [items[itemIndex]]; + } + } + + const itemsProcessed = await this.helpers.checkProcessedAndRecord( + Object.keys(itemMapping), + scope, + { mode: 'latestIncrementalKey' }, + ); + + returnData.push( + itemsProcessed.new + .map((key) => { + return itemMapping[key]; + }) + .flat(), + itemsProcessed.processed + .map((key) => { + return itemMapping[key]; + }) + .flat(), + ); + + return returnData; + } else if (logic === 'removeItemsUpToStoredDate') { + if (!['node', 'workflow'].includes(scope)) { + throw new NodeOperationError( + this.getNode(), + `The scope '${scope}' is not supported. Please select either "node" or "workflow".`, + ); + } + + let checkValue: string; + const itemMapping: { + [key: string]: INodeExecutionData[]; + } = {}; + + for (let itemIndex = 0; itemIndex < items.length; itemIndex++) { + checkValue = + this.getNodeParameter('dateDedupeValue', itemIndex, '')?.toString() ?? ''; + if (!checkValue) { + throw new NodeOperationError( + this.getNode(), + 'The `Value to Dedupe` On is empty. Please provide a value.', + ); + } + try { + tryToParseDateTime(checkValue); + } catch (error) { + throw new NodeOperationError( + this.getNode(), + `The value '${checkValue}' is not a valid date. Please provide a valid date.`, + ); + } + if (itemMapping[checkValue]) { + itemMapping[checkValue].push(items[itemIndex]); + } else { + itemMapping[checkValue] = [items[itemIndex]]; + } + } + const itemsProcessed = await this.helpers.checkProcessedAndRecord( + Object.keys(itemMapping), + scope, + { mode: 'latestDate' }, + ); + + returnData.push( + itemsProcessed.new + .map((key) => { + return itemMapping[key]; + }) + .flat(), + itemsProcessed.processed + .map((key) => { + return itemMapping[key]; + }) + .flat(), + ); + + return returnData; + } else { + return [items]; + } + } + case 'clearDeduplicationHistory': { + const mode = this.getNodeParameter('mode', 0) as string; + if (mode === 'updateKeyValuesInDatabase') { + } else if (mode === 'deleteKeyValuesFromDatabase') { + } else if (mode === 'cleanDatabase') { + const scope = this.getNodeParameter('options.scope', 0, 'node') as DeduplicationScope; + await this.helpers.clearAllProcessedItems(scope, { + mode: 'entries', + }); + } + + return [items]; + } + default: { + return [items]; + } + } + } catch (error) { + if (this.continueOnFail()) { + returnData.push([{ json: this.getInputData(0)[0].json, error }]); + } else { + throw error; + } + } + return returnData; + } +} diff --git a/packages/nodes-base/nodes/Transform/RemoveDuplicates/v2/test/RemoveDuplicates.test.ts b/packages/nodes-base/nodes/Transform/RemoveDuplicates/v2/test/RemoveDuplicates.test.ts new file mode 100644 index 0000000000..84994b34e6 --- /dev/null +++ b/packages/nodes-base/nodes/Transform/RemoveDuplicates/v2/test/RemoveDuplicates.test.ts @@ -0,0 +1,131 @@ +/* eslint-disable n8n-nodes-base/node-filename-against-convention */ +import { mock } from 'jest-mock-extended'; +import type { IExecuteFunctions, INodeExecutionData, INodeTypeBaseDescription } from 'n8n-workflow'; + +import { RemoveDuplicatesV2 } from '../RemoveDuplicatesV2.node'; + +describe('RemoveDuplicatesV2', () => { + let node: RemoveDuplicatesV2; + let executeFunctions: IExecuteFunctions; + + beforeEach(() => { + const baseDescription: INodeTypeBaseDescription = { + displayName: 'Remove Duplicates', + name: 'removeDuplicates', + icon: 'file:removeDuplicates.svg', + group: ['transform'], + description: 'Delete items with matching field values', + }; + node = new RemoveDuplicatesV2(baseDescription); + executeFunctions = mock(); + executeFunctions.helpers = { + checkProcessedAndRecord: jest.fn(), + clearAllProcessedItems: jest.fn(), + } as any; + executeFunctions.getInputData = jest.fn(); + executeFunctions.getNodeParameter = jest.fn(); + }); + + it('should Remove items repeated within current input based on all fields', async () => { + const items: INodeExecutionData[] = [ + { json: { id: 1, name: 'John' } }, + { json: { id: 2, name: 'Jane' } }, + { json: { id: 1, name: 'John' } }, + ]; + + (executeFunctions.getInputData as jest.Mock).mockReturnValue(items); + (executeFunctions.getNodeParameter as jest.Mock).mockImplementation( + (paramName: string) => { + if (paramName === 'operation') return 'removeDuplicateInputItems'; + if (paramName === 'compare') return 'allFields'; + return undefined; + }, + ); + + const result = await node.execute.call(executeFunctions); + expect(result).toHaveLength(1); + expect(result[0]).toHaveLength(2); + expect(result[0][0].json).toEqual({ id: 1, name: 'John' }); + expect(result[0][1].json).toEqual({ id: 2, name: 'Jane' }); + }); + + it('should Remove items repeated within current input based on selected fields', async () => { + const items: INodeExecutionData[] = [ + { json: { id: 1, name: 'John' } }, + { json: { id: 2, name: 'Jane' } }, + { json: { id: 1, name: 'Doe' } }, + ]; + + (executeFunctions.getInputData as jest.Mock).mockReturnValue(items); + (executeFunctions.getNodeParameter as jest.Mock).mockImplementation( + (paramName: string) => { + if (paramName === 'operation') return 'removeDuplicateInputItems'; + if (paramName === 'compare') return 'selectedFields'; + if (paramName === 'fieldsToCompare') return 'id'; + return undefined; + }, + ); + + const result = await node.execute.call(executeFunctions); + expect(result).toHaveLength(1); + expect(result[0]).toHaveLength(2); + expect(result[0][0].json).toEqual({ id: 1, name: 'John' }); + expect(result[0][1].json).toEqual({ id: 2, name: 'Jane' }); + }); + + it('should remove items seen in previous executions', async () => { + const items: INodeExecutionData[] = [ + { json: { id: 1, name: 'John' } }, + { json: { id: 2, name: 'Jane' } }, + { json: { id: 3, name: 'Doe' } }, + ]; + + (executeFunctions.getInputData as jest.Mock).mockReturnValue(items); + (executeFunctions.getNodeParameter as jest.Mock).mockImplementation( + (paramName: string, itemIndex: number) => { + if (paramName === 'operation') return 'removeItemsSeenInPreviousExecutions'; + if (paramName === 'logic') return 'removeItemsWithAlreadySeenKeyValues'; + if (paramName === 'dedupeValue' && itemIndex === 0) return 1; + if (paramName === 'dedupeValue' && itemIndex === 1) return 2; + if (paramName === 'dedupeValue' && itemIndex === 2) return 3; + if (paramName === 'options.scope') return 'node'; + if (paramName === 'options.historySize') return 10; + }, + ); + executeFunctions.helpers.getProcessedDataCount = jest.fn().mockReturnValue(3); + (executeFunctions.helpers.checkProcessedAndRecord as jest.Mock).mockReturnValue({ + new: [1, 3], + processed: [2], + }); + + const result = await node.execute.call(executeFunctions); + expect(result).toHaveLength(2); + expect(result[0]).toHaveLength(2); + expect(result[1]).toHaveLength(1); + expect(result[0][0].json).toEqual({ id: 1, name: 'John' }); + expect(result[0][1].json).toEqual({ id: 3, name: 'Doe' }); + }); + + it('should clean database when managing key values', async () => { + const items: INodeExecutionData[] = [ + { json: { id: 1, name: 'John' } }, + { json: { id: 2, name: 'Jane' } }, + ]; + + (executeFunctions.getInputData as jest.Mock).mockReturnValue(items); + (executeFunctions.getNodeParameter as jest.Mock).mockImplementation( + (paramName: string) => { + if (paramName === 'operation') return 'clearDeduplicationHistory'; + if (paramName === 'mode') return 'cleanDatabase'; + if (paramName === 'options.scope') return 'node'; + return undefined; + }, + ); + + const result = await node.execute.call(executeFunctions); + expect(result).toHaveLength(1); + expect(result[0]).toHaveLength(2); + expect(result[0][0].json).toEqual({ id: 1, name: 'John' }); + expect(result[0][1].json).toEqual({ id: 2, name: 'Jane' }); + }); +}); diff --git a/packages/nodes-base/nodes/Transform/Sort/Sort.node.ts b/packages/nodes-base/nodes/Transform/Sort/Sort.node.ts index 43b5fa85c0..e2e3fa4f58 100644 --- a/packages/nodes-base/nodes/Transform/Sort/Sort.node.ts +++ b/packages/nodes-base/nodes/Transform/Sort/Sort.node.ts @@ -8,6 +8,7 @@ import { type INodeExecutionData, type INodeType, type INodeTypeDescription, + NodeConnectionType, } from 'n8n-workflow'; import { sortByCode } from './utils'; import { shuffleArray } from '@utils/utilities'; @@ -24,8 +25,8 @@ export class Sort implements INodeType { defaults: { name: 'Sort', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], properties: [ { displayName: 'Type', diff --git a/packages/nodes-base/nodes/Transform/SplitOut/SplitOut.node.ts b/packages/nodes-base/nodes/Transform/SplitOut/SplitOut.node.ts index 121a63f519..5c2a9e3a68 100644 --- a/packages/nodes-base/nodes/Transform/SplitOut/SplitOut.node.ts +++ b/packages/nodes-base/nodes/Transform/SplitOut/SplitOut.node.ts @@ -1,6 +1,11 @@ import get from 'lodash/get'; import unset from 'lodash/unset'; -import { NodeOperationError, deepCopy, NodeExecutionOutput } from 'n8n-workflow'; +import { + NodeOperationError, + deepCopy, + NodeExecutionOutput, + NodeConnectionType, +} from 'n8n-workflow'; import type { IBinaryData, IDataObject, @@ -24,8 +29,8 @@ export class SplitOut implements INodeType { defaults: { name: 'Split Out', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], properties: [ { displayName: 'Fields To Split Out', @@ -191,7 +196,7 @@ export class SplitOut implements INodeType { if (splited[elementIndex].binary === undefined) { splited[elementIndex].binary = {}; } - splited[elementIndex].binary![Object.keys(element)[0]] = Object.values( + splited[elementIndex].binary[Object.keys(element)[0]] = Object.values( element, )[0] as IBinaryData; diff --git a/packages/nodes-base/nodes/Transform/Summarize/Summarize.node.ts b/packages/nodes-base/nodes/Transform/Summarize/Summarize.node.ts index 526b6c8acf..12d0e06f22 100644 --- a/packages/nodes-base/nodes/Transform/Summarize/Summarize.node.ts +++ b/packages/nodes-base/nodes/Transform/Summarize/Summarize.node.ts @@ -1,5 +1,6 @@ import { NodeOperationError, + NodeConnectionType, type IExecuteFunctions, type INodeExecutionData, type INodeType, @@ -28,8 +29,8 @@ export class Summarize implements INodeType { defaults: { name: 'Summarize', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], properties: [ { displayName: 'Fields to Summarize', @@ -237,7 +238,7 @@ export class Summarize implements INodeType { displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, options: [ { diff --git a/packages/nodes-base/nodes/TravisCi/TravisCi.node.json b/packages/nodes-base/nodes/TravisCi/TravisCi.node.json index bfc6ca3722..942688e05c 100644 --- a/packages/nodes-base/nodes/TravisCi/TravisCi.node.json +++ b/packages/nodes-base/nodes/TravisCi/TravisCi.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/travisCi" + "url": "https://docs.n8n.io/integrations/builtin/credentials/travisCi/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/TravisCi/TravisCi.node.ts b/packages/nodes-base/nodes/TravisCi/TravisCi.node.ts index 752e13ac8e..fbc109dc86 100644 --- a/packages/nodes-base/nodes/TravisCi/TravisCi.node.ts +++ b/packages/nodes-base/nodes/TravisCi/TravisCi.node.ts @@ -5,6 +5,7 @@ import type { INodeType, INodeTypeDescription, } from 'n8n-workflow'; +import { NodeConnectionType } from 'n8n-workflow'; import { buildFields, buildOperations } from './BuildDescription'; @@ -23,8 +24,8 @@ export class TravisCi implements INodeType { defaults: { name: 'TravisCI', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'travisCiApi', @@ -163,7 +164,7 @@ export class TravisCi implements INodeType { returnData.push(...executionData); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { const executionErrorData = this.helpers.constructExecutionMetaData( this.helpers.returnJsonArray({ error: error.message }), { itemData: { item: i } }, diff --git a/packages/nodes-base/nodes/Trello/Trello.node.json b/packages/nodes-base/nodes/Trello/Trello.node.json index 14889487a9..3723407658 100644 --- a/packages/nodes-base/nodes/Trello/Trello.node.json +++ b/packages/nodes-base/nodes/Trello/Trello.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/trello" + "url": "https://docs.n8n.io/integrations/builtin/credentials/trello/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Trello/Trello.node.ts b/packages/nodes-base/nodes/Trello/Trello.node.ts index e869af10ee..ac599663d7 100644 --- a/packages/nodes-base/nodes/Trello/Trello.node.ts +++ b/packages/nodes-base/nodes/Trello/Trello.node.ts @@ -8,7 +8,7 @@ import type { INodeTypeDescription, IHttpRequestMethods, } from 'n8n-workflow'; -import { NodeOperationError } from 'n8n-workflow'; +import { NodeConnectionType, NodeOperationError } from 'n8n-workflow'; import { apiRequest, apiRequestAllItems } from './GenericFunctions'; @@ -47,8 +47,8 @@ export class Trello implements INodeType { defaults: { name: 'Trello', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'trelloApi', @@ -224,11 +224,11 @@ export class Trello implements INodeType { requestMethod = 'POST'; endpoint = 'boards'; - qs.name = this.getNodeParameter('name', i) as string; - qs.desc = this.getNodeParameter('description', i) as string; + body.name = this.getNodeParameter('name', i) as string; + body.desc = this.getNodeParameter('description', i) as string; const additionalFields = this.getNodeParameter('additionalFields', i); - Object.assign(qs, additionalFields); + Object.assign(body, additionalFields); } else if (operation === 'delete') { // ---------------------------------- // delete @@ -350,13 +350,13 @@ export class Trello implements INodeType { requestMethod = 'POST'; endpoint = 'cards'; - qs.idList = this.getNodeParameter('listId', i) as string; + body.idList = this.getNodeParameter('listId', i) as string; - qs.name = this.getNodeParameter('name', i) as string; - qs.desc = this.getNodeParameter('description', i) as string; + body.name = this.getNodeParameter('name', i) as string; + body.desc = this.getNodeParameter('description', i) as string; const additionalFields = this.getNodeParameter('additionalFields', i); - Object.assign(qs, additionalFields); + Object.assign(body, additionalFields); } else if (operation === 'delete') { // ---------------------------------- // delete @@ -410,7 +410,7 @@ export class Trello implements INodeType { extractValue: true, }) as string; - qs.text = this.getNodeParameter('text', i) as string; + body.text = this.getNodeParameter('text', i) as string; requestMethod = 'POST'; @@ -472,12 +472,12 @@ export class Trello implements INodeType { requestMethod = 'POST'; endpoint = 'lists'; - qs.idBoard = this.getNodeParameter('idBoard', i) as string; + body.idBoard = this.getNodeParameter('idBoard', i) as string; - qs.name = this.getNodeParameter('name', i) as string; + body.name = this.getNodeParameter('name', i) as string; const additionalFields = this.getNodeParameter('additionalFields', i); - Object.assign(qs, additionalFields); + Object.assign(body, additionalFields); } else if (operation === 'get') { // ---------------------------------- // get @@ -563,12 +563,12 @@ export class Trello implements INodeType { const url = this.getNodeParameter('url', i) as string; - Object.assign(qs, { + Object.assign(body, { url, }); const additionalFields = this.getNodeParameter('additionalFields', i); - Object.assign(qs, additionalFields); + Object.assign(body, additionalFields); endpoint = `cards/${cardId}/attachments`; } else if (operation === 'delete') { @@ -638,10 +638,10 @@ export class Trello implements INodeType { const name = this.getNodeParameter('name', i) as string; - Object.assign(qs, { name }); + Object.assign(body, { name }); const additionalFields = this.getNodeParameter('additionalFields', i); - Object.assign(qs, additionalFields); + Object.assign(body, additionalFields); endpoint = `cards/${cardId}/checklists`; } else if (operation === 'delete') { @@ -716,7 +716,7 @@ export class Trello implements INodeType { const name = this.getNodeParameter('name', i) as string; const additionalFields = this.getNodeParameter('additionalFields', i); - Object.assign(qs, { name, ...additionalFields }); + Object.assign(body, { name, ...additionalFields }); } else if (operation === 'deleteCheckItem') { // ---------------------------------- // deleteCheckItem @@ -785,7 +785,7 @@ export class Trello implements INodeType { const name = this.getNodeParameter('name', i) as string; const color = this.getNodeParameter('color', i) as string; - Object.assign(qs, { + Object.assign(body, { idBoard, name, color, @@ -857,7 +857,7 @@ export class Trello implements INodeType { const id = this.getNodeParameter('id', i) as string; - qs.value = id; + body.value = id; endpoint = `/cards/${cardId}/idLabels`; } else if (operation === 'removeLabel') { @@ -906,7 +906,7 @@ export class Trello implements INodeType { ); returnData.push(...executionData); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { const executionData = this.helpers.constructExecutionMetaData( this.helpers.returnJsonArray({ error: error.message }), { itemData: { item: i } }, diff --git a/packages/nodes-base/nodes/Trello/TrelloTrigger.node.json b/packages/nodes-base/nodes/Trello/TrelloTrigger.node.json index 0e35babfe6..ecfb7dba08 100644 --- a/packages/nodes-base/nodes/Trello/TrelloTrigger.node.json +++ b/packages/nodes-base/nodes/Trello/TrelloTrigger.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/trello" + "url": "https://docs.n8n.io/integrations/builtin/credentials/trello/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Trello/TrelloTrigger.node.ts b/packages/nodes-base/nodes/Trello/TrelloTrigger.node.ts index cfb1faf0ab..a91cd90bf2 100644 --- a/packages/nodes-base/nodes/Trello/TrelloTrigger.node.ts +++ b/packages/nodes-base/nodes/Trello/TrelloTrigger.node.ts @@ -1,9 +1,10 @@ -import type { - IHookFunctions, - IWebhookFunctions, - INodeType, - INodeTypeDescription, - IWebhookResponseData, +import { + type IHookFunctions, + type IWebhookFunctions, + type INodeType, + type INodeTypeDescription, + type IWebhookResponseData, + NodeConnectionType, } from 'n8n-workflow'; import { apiRequest } from './GenericFunctions'; @@ -22,7 +23,7 @@ export class TrelloTrigger implements INodeType { name: 'Trello Trigger', }, inputs: [], - outputs: ['main'], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'trelloApi', diff --git a/packages/nodes-base/nodes/Twake/Twake.node.json b/packages/nodes-base/nodes/Twake/Twake.node.json index d34b312cfe..d3dacb31b1 100644 --- a/packages/nodes-base/nodes/Twake/Twake.node.json +++ b/packages/nodes-base/nodes/Twake/Twake.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/twake" + "url": "https://docs.n8n.io/integrations/builtin/credentials/twake/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Twake/Twake.node.ts b/packages/nodes-base/nodes/Twake/Twake.node.ts index b39f1353d1..04c6c7eb0e 100644 --- a/packages/nodes-base/nodes/Twake/Twake.node.ts +++ b/packages/nodes-base/nodes/Twake/Twake.node.ts @@ -7,7 +7,7 @@ import type { INodeType, INodeTypeDescription, } from 'n8n-workflow'; -import { NodeOperationError } from 'n8n-workflow'; +import { NodeConnectionType, NodeOperationError } from 'n8n-workflow'; import { twakeApiRequest } from './GenericFunctions'; @@ -24,8 +24,8 @@ export class Twake implements INodeType { defaults: { name: 'Twake', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'twakeCloudApi', @@ -115,7 +115,7 @@ export class Twake implements INodeType { }, default: '', description: - 'Channel\'s ID. Choose from the list, or specify an ID using an expression.', + 'Channel\'s ID. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Content', diff --git a/packages/nodes-base/nodes/Twilio/GenericFunctions.ts b/packages/nodes-base/nodes/Twilio/GenericFunctions.ts index 4f18bbccf5..2b093ba8cc 100644 --- a/packages/nodes-base/nodes/Twilio/GenericFunctions.ts +++ b/packages/nodes-base/nodes/Twilio/GenericFunctions.ts @@ -19,13 +19,13 @@ export async function twilioApiRequest( body: IDataObject, query?: IDataObject, ): Promise { - const credentials = (await this.getCredentials('twilioApi')) as { + const credentials = await this.getCredentials<{ accountSid: string; authType: 'authToken' | 'apiKey'; authToken: string; apiKeySid: string; apiKeySecret: string; - }; + }>('twilioApi'); if (query === undefined) { query = {}; diff --git a/packages/nodes-base/nodes/Twilio/Twilio.node.json b/packages/nodes-base/nodes/Twilio/Twilio.node.json index 45b0d15c60..6236dc1abe 100644 --- a/packages/nodes-base/nodes/Twilio/Twilio.node.json +++ b/packages/nodes-base/nodes/Twilio/Twilio.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/twilio" + "url": "https://docs.n8n.io/integrations/builtin/credentials/twilio/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Twilio/Twilio.node.ts b/packages/nodes-base/nodes/Twilio/Twilio.node.ts index b3eeec537f..c10f56b3b8 100644 --- a/packages/nodes-base/nodes/Twilio/Twilio.node.ts +++ b/packages/nodes-base/nodes/Twilio/Twilio.node.ts @@ -6,7 +6,7 @@ import type { INodeTypeDescription, IHttpRequestMethods, } from 'n8n-workflow'; -import { NodeOperationError } from 'n8n-workflow'; +import { NodeConnectionType, NodeOperationError } from 'n8n-workflow'; import { escapeXml, twilioApiRequest } from './GenericFunctions'; @@ -22,8 +22,8 @@ export class Twilio implements INodeType { defaults: { name: 'Twilio', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'twilioApi', @@ -291,7 +291,7 @@ export class Twilio implements INodeType { returnData.push(responseData as IDataObject); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push({ error: error.message }); continue; } diff --git a/packages/nodes-base/nodes/Twilio/TwilioTrigger.node.json b/packages/nodes-base/nodes/Twilio/TwilioTrigger.node.json index 44182e29c5..304b345ff5 100644 --- a/packages/nodes-base/nodes/Twilio/TwilioTrigger.node.json +++ b/packages/nodes-base/nodes/Twilio/TwilioTrigger.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/twilio" + "url": "https://docs.n8n.io/integrations/builtin/credentials/twilio/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Twilio/TwilioTrigger.node.ts b/packages/nodes-base/nodes/Twilio/TwilioTrigger.node.ts index 4bf3d253d6..2fbff48cc9 100644 --- a/packages/nodes-base/nodes/Twilio/TwilioTrigger.node.ts +++ b/packages/nodes-base/nodes/Twilio/TwilioTrigger.node.ts @@ -1,9 +1,10 @@ -import type { - IHookFunctions, - IWebhookFunctions, - INodeType, - INodeTypeDescription, - IWebhookResponseData, +import { + type IHookFunctions, + type IWebhookFunctions, + type INodeType, + type INodeTypeDescription, + type IWebhookResponseData, + NodeConnectionType, } from 'n8n-workflow'; import { twilioTriggerApiRequest } from './GenericFunctions'; @@ -22,7 +23,7 @@ export class TwilioTrigger implements INodeType { name: 'Twilio Trigger', }, inputs: [], - outputs: ['main'], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'twilioApi', diff --git a/packages/nodes-base/nodes/Twist/ChannelDescription.ts b/packages/nodes-base/nodes/Twist/ChannelDescription.ts index afdc772ff4..eb1c035890 100644 --- a/packages/nodes-base/nodes/Twist/ChannelDescription.ts +++ b/packages/nodes-base/nodes/Twist/ChannelDescription.ts @@ -79,7 +79,7 @@ export const channelFields: INodeProperties[] = [ }, required: true, description: - 'The ID of the workspace. Choose from the list, or specify an ID using an expression.', + 'The ID of the workspace. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Name', @@ -197,7 +197,7 @@ export const channelFields: INodeProperties[] = [ }, default: [], description: - 'The users that will participate in the channel. Choose from the list, or specify IDs using an expression.', + 'The users that will participate in the channel. Choose from the list, or specify IDs using an expression.', }, ], }, @@ -239,7 +239,7 @@ export const channelFields: INodeProperties[] = [ }, required: true, description: - 'The ID of the workspace. Choose from the list, or specify an ID using an expression.', + 'The ID of the workspace. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Return All', diff --git a/packages/nodes-base/nodes/Twist/CommentDescription.ts b/packages/nodes-base/nodes/Twist/CommentDescription.ts index a695d399d2..57b027a643 100644 --- a/packages/nodes-base/nodes/Twist/CommentDescription.ts +++ b/packages/nodes-base/nodes/Twist/CommentDescription.ts @@ -194,7 +194,7 @@ export const commentFields: INodeProperties[] = [ }, default: [], description: - 'The users that are directly mentioned. Choose from the list, or specify IDs using an expression.', + 'The users that are directly mentioned. Choose from the list, or specify IDs using an expression.', }, { displayName: 'Mark Thread Position', @@ -213,7 +213,7 @@ export const commentFields: INodeProperties[] = [ }, default: [], description: - 'The users that will attached to the comment. Choose from the list, or specify IDs using an expression.', + 'The users that will attached to the comment. Choose from the list, or specify IDs using an expression.', }, { displayName: 'Temporary ID', @@ -505,7 +505,7 @@ export const commentFields: INodeProperties[] = [ }, default: [], description: - 'The users that are directly mentioned. Choose from the list, or specify IDs using an expression.', + 'The users that are directly mentioned. Choose from the list, or specify IDs using an expression.', }, ], }, diff --git a/packages/nodes-base/nodes/Twist/MessageConversationDescription.ts b/packages/nodes-base/nodes/Twist/MessageConversationDescription.ts index 82f7fc4e48..5f72ad17da 100644 --- a/packages/nodes-base/nodes/Twist/MessageConversationDescription.ts +++ b/packages/nodes-base/nodes/Twist/MessageConversationDescription.ts @@ -67,7 +67,7 @@ export const messageConversationFields: INodeProperties[] = [ }, required: true, description: - 'The ID of the workspace. Choose from the list, or specify an ID using an expression.', + 'The ID of the workspace. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Conversation Name or ID', @@ -86,7 +86,7 @@ export const messageConversationFields: INodeProperties[] = [ }, required: true, description: - 'The ID of the conversation. Choose from the list, or specify an ID using an expression.', + 'The ID of the conversation. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Content', @@ -114,7 +114,7 @@ export const messageConversationFields: INodeProperties[] = [ }, default: {}, description: 'Other options to set', - placeholder: 'Add options', + placeholder: 'Add option', options: [ { displayName: 'Actions', @@ -217,7 +217,7 @@ export const messageConversationFields: INodeProperties[] = [ }, default: [], description: - 'The users that are directly mentioned. Choose from the list, or specify IDs using an expression.', + 'The users that are directly mentioned. Choose from the list, or specify IDs using an expression.', }, // { // displayName: 'Direct Group Mentions ', @@ -251,7 +251,7 @@ export const messageConversationFields: INodeProperties[] = [ }, required: true, description: - 'The ID of the workspace. Choose from the list, or specify an ID using an expression.', + 'The ID of the workspace. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Conversation Name or ID', @@ -270,7 +270,7 @@ export const messageConversationFields: INodeProperties[] = [ }, required: true, description: - 'The ID of the conversation. Choose from the list, or specify an ID using an expression.', + 'The ID of the conversation. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Additional Fields', @@ -486,7 +486,7 @@ export const messageConversationFields: INodeProperties[] = [ }, default: [], description: - 'The users that are directly mentioned. Choose from the list, or specify IDs using an expression.', + 'The users that are directly mentioned. Choose from the list, or specify IDs using an expression.', }, ], }, diff --git a/packages/nodes-base/nodes/Twist/ThreadDescription.ts b/packages/nodes-base/nodes/Twist/ThreadDescription.ts index b262db52dd..b28f469047 100644 --- a/packages/nodes-base/nodes/Twist/ThreadDescription.ts +++ b/packages/nodes-base/nodes/Twist/ThreadDescription.ts @@ -208,7 +208,7 @@ export const threadFields: INodeProperties[] = [ }, default: [], description: - 'The users that are directly mentioned. Choose from the list, or specify IDs using an expression.', + 'The users that are directly mentioned. Choose from the list, or specify IDs using an expression.', }, { displayName: 'Recipient Names or IDs', @@ -220,7 +220,7 @@ export const threadFields: INodeProperties[] = [ }, default: [], description: - 'The users that will attached to the thread. Choose from the list, or specify IDs using an expression.', + 'The users that will attached to the thread. Choose from the list, or specify IDs using an expression.', }, { displayName: 'Send as Integration', @@ -501,7 +501,7 @@ export const threadFields: INodeProperties[] = [ }, default: [], description: - 'The users that are directly mentioned. Choose from the list, or specify IDs using an expression.', + 'The users that are directly mentioned. Choose from the list, or specify IDs using an expression.', }, { displayName: 'Title', diff --git a/packages/nodes-base/nodes/Twist/Twist.node.json b/packages/nodes-base/nodes/Twist/Twist.node.json index 7887f86f20..98122f4371 100644 --- a/packages/nodes-base/nodes/Twist/Twist.node.json +++ b/packages/nodes-base/nodes/Twist/Twist.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/twist" + "url": "https://docs.n8n.io/integrations/builtin/credentials/twist/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Twist/Twist.node.ts b/packages/nodes-base/nodes/Twist/Twist.node.ts index 3507fb3c0e..16d6d530ea 100644 --- a/packages/nodes-base/nodes/Twist/Twist.node.ts +++ b/packages/nodes-base/nodes/Twist/Twist.node.ts @@ -7,6 +7,7 @@ import type { INodeType, INodeTypeDescription, } from 'n8n-workflow'; +import { NodeConnectionType } from 'n8n-workflow'; import { v4 as uuid } from 'uuid'; import moment from 'moment-timezone'; @@ -35,8 +36,8 @@ export class Twist implements INodeType { defaults: { name: 'Twist', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'twistOAuth2Api', @@ -746,7 +747,7 @@ export class Twist implements INodeType { returnData.push(responseData as IDataObject); } } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push({ error: error.message }); continue; } diff --git a/packages/nodes-base/nodes/Twitter/Twitter.node.json b/packages/nodes-base/nodes/Twitter/Twitter.node.json index 91d0d19d86..2c782fe4c7 100644 --- a/packages/nodes-base/nodes/Twitter/Twitter.node.json +++ b/packages/nodes-base/nodes/Twitter/Twitter.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/twitter" + "url": "https://docs.n8n.io/integrations/builtin/credentials/twitter/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Twitter/V1/TweetDescription.ts b/packages/nodes-base/nodes/Twitter/V1/TweetDescription.ts index bf5cb963f9..b73846ed3c 100644 --- a/packages/nodes-base/nodes/Twitter/V1/TweetDescription.ts +++ b/packages/nodes-base/nodes/Twitter/V1/TweetDescription.ts @@ -240,7 +240,7 @@ export const tweetFields: INodeProperties[] = [ }, default: '', description: - 'Restricts tweets to the given language, given by an ISO 639-1 code. Language detection is best-effort. Choose from the list, or specify an ID using an expression.', + 'Restricts tweets to the given language, given by an ISO 639-1 code. Language detection is best-effort. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Location', diff --git a/packages/nodes-base/nodes/Twitter/V1/TwitterV1.node.ts b/packages/nodes-base/nodes/Twitter/V1/TwitterV1.node.ts index b87547660c..1b0bfd61c6 100644 --- a/packages/nodes-base/nodes/Twitter/V1/TwitterV1.node.ts +++ b/packages/nodes-base/nodes/Twitter/V1/TwitterV1.node.ts @@ -9,6 +9,7 @@ import type { INodeTypeDescription, JsonObject, } from 'n8n-workflow'; +import { NodeConnectionType } from 'n8n-workflow'; import ISO6391 from 'iso-639-1'; import { directMessageFields, directMessageOperations } from './DirectMessageDescription'; @@ -35,8 +36,8 @@ export class TwitterV1 implements INodeType { defaults: { name: 'Twitter', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'twitterOAuth1Api', @@ -318,7 +319,7 @@ export class TwitterV1 implements INodeType { ); returnData.push(...executionData); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { const executionErrorData = { json: { error: (error as JsonObject).message, diff --git a/packages/nodes-base/nodes/Twitter/V2/TwitterV2.node.ts b/packages/nodes-base/nodes/Twitter/V2/TwitterV2.node.ts index 7e3fa3c18b..bf2ea40568 100644 --- a/packages/nodes-base/nodes/Twitter/V2/TwitterV2.node.ts +++ b/packages/nodes-base/nodes/Twitter/V2/TwitterV2.node.ts @@ -1,14 +1,15 @@ -import type { - IDataObject, - IExecuteFunctions, - ILoadOptionsFunctions, - INodeExecutionData, - INodeParameterResourceLocator, - INodePropertyOptions, - INodeType, - INodeTypeBaseDescription, - INodeTypeDescription, - JsonObject, +import { + NodeConnectionType, + type IDataObject, + type IExecuteFunctions, + type ILoadOptionsFunctions, + type INodeExecutionData, + type INodeParameterResourceLocator, + type INodePropertyOptions, + type INodeType, + type INodeTypeBaseDescription, + type INodeTypeDescription, + type JsonObject, } from 'n8n-workflow'; import ISO6391 from 'iso-639-1'; @@ -38,8 +39,8 @@ export class TwitterV2 implements INodeType { defaults: { name: 'X', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'twitterOAuth2Api', @@ -347,7 +348,7 @@ export class TwitterV2 implements INodeType { ); returnData.push(...executionData); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { const executionErrorData = { json: { error: (error as JsonObject).message, diff --git a/packages/nodes-base/nodes/Typeform/TypeformTrigger.node.json b/packages/nodes-base/nodes/Typeform/TypeformTrigger.node.json index 4d908b3208..886c60b466 100644 --- a/packages/nodes-base/nodes/Typeform/TypeformTrigger.node.json +++ b/packages/nodes-base/nodes/Typeform/TypeformTrigger.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/typeform" + "url": "https://docs.n8n.io/integrations/builtin/credentials/typeform/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Typeform/TypeformTrigger.node.ts b/packages/nodes-base/nodes/Typeform/TypeformTrigger.node.ts index 8993fb6774..2cd8206bdd 100644 --- a/packages/nodes-base/nodes/Typeform/TypeformTrigger.node.ts +++ b/packages/nodes-base/nodes/Typeform/TypeformTrigger.node.ts @@ -10,7 +10,7 @@ import type { IWebhookResponseData, JsonObject, } from 'n8n-workflow'; -import { NodeApiError, randomString } from 'n8n-workflow'; +import { NodeApiError, NodeConnectionType, randomString } from 'n8n-workflow'; import type { ITypeformAnswer, @@ -32,7 +32,7 @@ export class TypeformTrigger implements INodeType { name: 'Typeform Trigger', }, inputs: [], - outputs: ['main'], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'typeformApi', @@ -90,7 +90,7 @@ export class TypeformTrigger implements INodeType { default: '', required: true, description: - 'Form which should trigger workflow on submission. Choose from the list, or specify an ID using an expression.', + 'Form which should trigger workflow on submission. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Simplify Answers', diff --git a/packages/nodes-base/nodes/UProc/UProc.node.json b/packages/nodes-base/nodes/UProc/UProc.node.json index 7b39066b0b..ccccab090f 100644 --- a/packages/nodes-base/nodes/UProc/UProc.node.json +++ b/packages/nodes-base/nodes/UProc/UProc.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/uProc" + "url": "https://docs.n8n.io/integrations/builtin/credentials/uProc/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/UProc/UProc.node.ts b/packages/nodes-base/nodes/UProc/UProc.node.ts index 3435b8b472..f48e247583 100644 --- a/packages/nodes-base/nodes/UProc/UProc.node.ts +++ b/packages/nodes-base/nodes/UProc/UProc.node.ts @@ -6,6 +6,7 @@ import type { INodeType, INodeTypeDescription, } from 'n8n-workflow'; +import { NodeConnectionType } from 'n8n-workflow'; import { uprocApiRequest } from './GenericFunctions'; @@ -26,8 +27,8 @@ export class UProc implements INodeType { defaults: { name: 'uProc', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'uprocApi', @@ -42,7 +43,7 @@ export class UProc implements INodeType { displayName: 'Additional Options', name: 'additionalOptions', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, displayOptions: { show: { @@ -134,7 +135,7 @@ export class UProc implements INodeType { returnData.push(responseData as IDataObject); } } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push({ error: error.message }); continue; } diff --git a/packages/nodes-base/nodes/UnleashedSoftware/UnleashedSoftware.node.json b/packages/nodes-base/nodes/UnleashedSoftware/UnleashedSoftware.node.json index ccb66460bb..97c312c821 100644 --- a/packages/nodes-base/nodes/UnleashedSoftware/UnleashedSoftware.node.json +++ b/packages/nodes-base/nodes/UnleashedSoftware/UnleashedSoftware.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/unleashedSoftware" + "url": "https://docs.n8n.io/integrations/builtin/credentials/unleashedSoftware/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/UnleashedSoftware/UnleashedSoftware.node.ts b/packages/nodes-base/nodes/UnleashedSoftware/UnleashedSoftware.node.ts index 6bbab8a80e..9fd7fd1a97 100644 --- a/packages/nodes-base/nodes/UnleashedSoftware/UnleashedSoftware.node.ts +++ b/packages/nodes-base/nodes/UnleashedSoftware/UnleashedSoftware.node.ts @@ -1,9 +1,10 @@ -import type { - IExecuteFunctions, - IDataObject, - INodeExecutionData, - INodeType, - INodeTypeDescription, +import { + type IExecuteFunctions, + type IDataObject, + type INodeExecutionData, + type INodeType, + type INodeTypeDescription, + NodeConnectionType, } from 'n8n-workflow'; import moment from 'moment-timezone'; @@ -30,8 +31,8 @@ export class UnleashedSoftware implements INodeType { defaults: { name: 'Unleashed Software', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'unleashedSoftwareApi', diff --git a/packages/nodes-base/nodes/Uplead/Uplead.node.json b/packages/nodes-base/nodes/Uplead/Uplead.node.json index d8088a8c2b..f9f3a702bc 100644 --- a/packages/nodes-base/nodes/Uplead/Uplead.node.json +++ b/packages/nodes-base/nodes/Uplead/Uplead.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/uplead" + "url": "https://docs.n8n.io/integrations/builtin/credentials/uplead/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Uplead/Uplead.node.ts b/packages/nodes-base/nodes/Uplead/Uplead.node.ts index 4fffb05fd0..ca111ca57b 100644 --- a/packages/nodes-base/nodes/Uplead/Uplead.node.ts +++ b/packages/nodes-base/nodes/Uplead/Uplead.node.ts @@ -5,6 +5,7 @@ import type { INodeType, INodeTypeDescription, } from 'n8n-workflow'; +import { NodeConnectionType } from 'n8n-workflow'; import { upleadApiRequest } from './GenericFunctions'; import { companyFields, companyOperations } from './CompanyDesciption'; import { personFields, personOperations } from './PersonDescription'; @@ -22,8 +23,8 @@ export class Uplead implements INodeType { defaults: { name: 'Uplead', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'upleadApi', @@ -111,7 +112,7 @@ export class Uplead implements INodeType { } } } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push({ error: error.message }); continue; } diff --git a/packages/nodes-base/nodes/UptimeRobot/UptimeRobot.node.json b/packages/nodes-base/nodes/UptimeRobot/UptimeRobot.node.json index a6e89324bd..39e44b85c0 100644 --- a/packages/nodes-base/nodes/UptimeRobot/UptimeRobot.node.json +++ b/packages/nodes-base/nodes/UptimeRobot/UptimeRobot.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/uptimeRobot/" + "url": "https://docs.n8n.io/integrations/builtin/credentials/uptimeRobot/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/UptimeRobot/UptimeRobot.node.ts b/packages/nodes-base/nodes/UptimeRobot/UptimeRobot.node.ts index d0ade6005f..4ab99039c0 100644 --- a/packages/nodes-base/nodes/UptimeRobot/UptimeRobot.node.ts +++ b/packages/nodes-base/nodes/UptimeRobot/UptimeRobot.node.ts @@ -5,6 +5,7 @@ import type { INodeType, INodeTypeDescription, } from 'n8n-workflow'; +import { NodeConnectionType } from 'n8n-workflow'; import moment from 'moment-timezone'; import { uptimeRobotApiRequest } from './GenericFunctions'; @@ -32,8 +33,8 @@ export class UptimeRobot implements INodeType { defaults: { name: 'UptimeRobot', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'uptimeRobotApi', @@ -420,7 +421,7 @@ export class UptimeRobot implements INodeType { ? returnData.push(...(responseData as IDataObject[])) : returnData.push(responseData as IDataObject); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push({ error: error.message }); continue; } diff --git a/packages/nodes-base/nodes/UrlScanIo/UrlScanIo.node.json b/packages/nodes-base/nodes/UrlScanIo/UrlScanIo.node.json index d064f62986..ecf314f17f 100644 --- a/packages/nodes-base/nodes/UrlScanIo/UrlScanIo.node.json +++ b/packages/nodes-base/nodes/UrlScanIo/UrlScanIo.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/urlScanIo" + "url": "https://docs.n8n.io/integrations/builtin/credentials/urlScanIo/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/UrlScanIo/UrlScanIo.node.ts b/packages/nodes-base/nodes/UrlScanIo/UrlScanIo.node.ts index 5a8e202ed4..d51ff9d498 100644 --- a/packages/nodes-base/nodes/UrlScanIo/UrlScanIo.node.ts +++ b/packages/nodes-base/nodes/UrlScanIo/UrlScanIo.node.ts @@ -5,7 +5,7 @@ import type { INodeType, INodeTypeDescription, } from 'n8n-workflow'; -import { NodeOperationError } from 'n8n-workflow'; +import { NodeConnectionType, NodeOperationError } from 'n8n-workflow'; import { scanFields, scanOperations } from './descriptions'; @@ -24,8 +24,8 @@ export class UrlScanIo implements INodeType { defaults: { name: 'urlscan.io', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'urlScanIoApi', @@ -132,7 +132,7 @@ export class UrlScanIo implements INodeType { ? returnData.push(...(responseData as IDataObject[])) : returnData.push(responseData as IDataObject); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push({ error: error.message }); continue; } diff --git a/packages/nodes-base/nodes/Venafi/Datacenter/CertificateDescription.ts b/packages/nodes-base/nodes/Venafi/Datacenter/CertificateDescription.ts index 3973d83062..9f3ac8fe07 100644 --- a/packages/nodes-base/nodes/Venafi/Datacenter/CertificateDescription.ts +++ b/packages/nodes-base/nodes/Venafi/Datacenter/CertificateDescription.ts @@ -714,7 +714,7 @@ export const certificateFields: INodeProperties[] = [ displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, displayOptions: { show: { diff --git a/packages/nodes-base/nodes/Venafi/Datacenter/GenericFunctions.ts b/packages/nodes-base/nodes/Venafi/Datacenter/GenericFunctions.ts index 6887a0cf78..8db5cc2f7f 100644 --- a/packages/nodes-base/nodes/Venafi/Datacenter/GenericFunctions.ts +++ b/packages/nodes-base/nodes/Venafi/Datacenter/GenericFunctions.ts @@ -19,7 +19,7 @@ export async function venafiApiRequest( uri?: string, headers: IDataObject = {}, ): Promise { - const credentials = (await this.getCredentials('venafiTlsProtectDatacenterApi')) as IDataObject; + const credentials = await this.getCredentials('venafiTlsProtectDatacenterApi'); const options: IRequestOptions = { headers: { diff --git a/packages/nodes-base/nodes/Venafi/Datacenter/VenafiTlsProtectDatacenter.node.ts b/packages/nodes-base/nodes/Venafi/Datacenter/VenafiTlsProtectDatacenter.node.ts index a02c8cc13d..c749cb2402 100644 --- a/packages/nodes-base/nodes/Venafi/Datacenter/VenafiTlsProtectDatacenter.node.ts +++ b/packages/nodes-base/nodes/Venafi/Datacenter/VenafiTlsProtectDatacenter.node.ts @@ -5,6 +5,7 @@ import type { INodeType, INodeTypeDescription, } from 'n8n-workflow'; +import { NodeConnectionType } from 'n8n-workflow'; import { venafiApiRequest, venafiApiRequestAllItems } from './GenericFunctions'; @@ -24,8 +25,8 @@ export class VenafiTlsProtectDatacenter implements INodeType { defaults: { name: 'Venafi TLS Protect Datacenter', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'venafiTlsProtectDatacenterApi', @@ -245,7 +246,7 @@ export class VenafiTlsProtectDatacenter implements INodeType { ), ); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push({ json: { error: error.message } }); continue; } diff --git a/packages/nodes-base/nodes/Venafi/Datacenter/VenafiTlsProtectDatacenterTrigger.node.ts b/packages/nodes-base/nodes/Venafi/Datacenter/VenafiTlsProtectDatacenterTrigger.node.ts index 518e539a59..bf6bb6e9a1 100644 --- a/packages/nodes-base/nodes/Venafi/Datacenter/VenafiTlsProtectDatacenterTrigger.node.ts +++ b/packages/nodes-base/nodes/Venafi/Datacenter/VenafiTlsProtectDatacenterTrigger.node.ts @@ -1,9 +1,10 @@ -import type { - IPollFunctions, - IDataObject, - INodeExecutionData, - INodeType, - INodeTypeDescription, +import { + type IPollFunctions, + type IDataObject, + type INodeExecutionData, + type INodeType, + type INodeTypeDescription, + NodeConnectionType, } from 'n8n-workflow'; import moment from 'moment-timezone'; @@ -30,7 +31,7 @@ export class VenafiTlsProtectDatacenterTrigger implements INodeType { ], polling: true, inputs: [], - outputs: ['main'], + outputs: [NodeConnectionType.Main], properties: [ { displayName: 'Trigger On', diff --git a/packages/nodes-base/nodes/Venafi/ProtectCloud/CertificateDescription.ts b/packages/nodes-base/nodes/Venafi/ProtectCloud/CertificateDescription.ts index 575a3ae6f9..6190862ca4 100644 --- a/packages/nodes-base/nodes/Venafi/ProtectCloud/CertificateDescription.ts +++ b/packages/nodes-base/nodes/Venafi/ProtectCloud/CertificateDescription.ts @@ -303,7 +303,7 @@ export const certificateFields: INodeProperties[] = [ name: 'applicationId', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getApplications', }, @@ -332,7 +332,7 @@ export const certificateFields: INodeProperties[] = [ name: 'certificateIssuingTemplateId', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getCertificateIssuingTemplates', }, diff --git a/packages/nodes-base/nodes/Venafi/ProtectCloud/CertificateRequestDescription.ts b/packages/nodes-base/nodes/Venafi/ProtectCloud/CertificateRequestDescription.ts index 91e8e6fa9f..0ebde5aa65 100644 --- a/packages/nodes-base/nodes/Venafi/ProtectCloud/CertificateRequestDescription.ts +++ b/packages/nodes-base/nodes/Venafi/ProtectCloud/CertificateRequestDescription.ts @@ -44,7 +44,7 @@ export const certificateRequestFields: INodeProperties[] = [ name: 'applicationId', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getApplications', }, @@ -61,7 +61,7 @@ export const certificateRequestFields: INodeProperties[] = [ name: 'certificateIssuingTemplateId', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getCertificateIssuingTemplates', loadOptionsDependsOn: ['applicationId'], diff --git a/packages/nodes-base/nodes/Venafi/ProtectCloud/VenafiTlsProtectCloud.node.ts b/packages/nodes-base/nodes/Venafi/ProtectCloud/VenafiTlsProtectCloud.node.ts index 9538759d62..fc0d0ea4a9 100644 --- a/packages/nodes-base/nodes/Venafi/ProtectCloud/VenafiTlsProtectCloud.node.ts +++ b/packages/nodes-base/nodes/Venafi/ProtectCloud/VenafiTlsProtectCloud.node.ts @@ -1,11 +1,12 @@ -import type { - IExecuteFunctions, - IDataObject, - ILoadOptionsFunctions, - INodeExecutionData, - INodePropertyOptions, - INodeType, - INodeTypeDescription, +import { + type IExecuteFunctions, + type IDataObject, + type ILoadOptionsFunctions, + type INodeExecutionData, + type INodePropertyOptions, + type INodeType, + type INodeTypeDescription, + NodeConnectionType, } from 'n8n-workflow'; import { encryptPassphrase, venafiApiRequest, venafiApiRequestAllItems } from './GenericFunctions'; @@ -37,8 +38,8 @@ export class VenafiTlsProtectCloud implements INodeType { defaults: { name: 'Venafi TLS Protect Cloud', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'venafiTlsProtectCloudApi', @@ -457,7 +458,7 @@ export class VenafiTlsProtectCloud implements INodeType { ), ); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push({ json: { error: error.message } }); continue; } diff --git a/packages/nodes-base/nodes/Venafi/ProtectCloud/VenafiTlsProtectCloudTrigger.node.ts b/packages/nodes-base/nodes/Venafi/ProtectCloud/VenafiTlsProtectCloudTrigger.node.ts index 75478cc78d..8017cf6edc 100644 --- a/packages/nodes-base/nodes/Venafi/ProtectCloud/VenafiTlsProtectCloudTrigger.node.ts +++ b/packages/nodes-base/nodes/Venafi/ProtectCloud/VenafiTlsProtectCloudTrigger.node.ts @@ -1,11 +1,12 @@ -import type { - IHookFunctions, - ILoadOptionsFunctions, - INodePropertyOptions, - INodeType, - INodeTypeDescription, - IWebhookFunctions, - IWebhookResponseData, +import { + NodeConnectionType, + type IHookFunctions, + type ILoadOptionsFunctions, + type INodePropertyOptions, + type INodeType, + type INodeTypeDescription, + type IWebhookFunctions, + type IWebhookResponseData, } from 'n8n-workflow'; import { venafiApiRequest } from './GenericFunctions'; @@ -36,7 +37,7 @@ export class VenafiTlsProtectCloudTrigger implements INodeType { }, ], inputs: [], - outputs: ['main'], + outputs: [NodeConnectionType.Main], properties: [ { // eslint-disable-next-line n8n-nodes-base/node-param-display-name-wrong-for-dynamic-options @@ -50,7 +51,7 @@ export class VenafiTlsProtectCloudTrigger implements INodeType { required: true, default: [], description: - 'Choose from the list, or specify an ID using an expression. Choose from the list, or specify IDs using an expression. Choose from the list, or specify an ID using an expression.', + 'Choose from the list, or specify an ID using an expression. Choose from the list, or specify IDs using an expression. Choose from the list, or specify an ID using an expression.', }, { // eslint-disable-next-line n8n-nodes-base/node-param-display-name-wrong-for-dynamic-multi-options @@ -64,7 +65,7 @@ export class VenafiTlsProtectCloudTrigger implements INodeType { required: true, default: [], description: - 'Choose from the list, or specify an ID using an expression. Choose from the list, or specify IDs using an expression. Choose from the list, or specify an ID using an expression. Choose from the list, or specify IDs using an expression.', + 'Choose from the list, or specify an ID using an expression. Choose from the list, or specify IDs using an expression. Choose from the list, or specify an ID using an expression. Choose from the list, or specify IDs using an expression.', }, ], }; diff --git a/packages/nodes-base/nodes/Vero/Vero.node.json b/packages/nodes-base/nodes/Vero/Vero.node.json index 81ab07de63..0be0e8b2e0 100644 --- a/packages/nodes-base/nodes/Vero/Vero.node.json +++ b/packages/nodes-base/nodes/Vero/Vero.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/vero" + "url": "https://docs.n8n.io/integrations/builtin/credentials/vero/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Vero/Vero.node.ts b/packages/nodes-base/nodes/Vero/Vero.node.ts index c38d9ae9a0..bcb279c279 100644 --- a/packages/nodes-base/nodes/Vero/Vero.node.ts +++ b/packages/nodes-base/nodes/Vero/Vero.node.ts @@ -6,7 +6,7 @@ import type { INodeTypeDescription, JsonObject, } from 'n8n-workflow'; -import { NodeApiError } from 'n8n-workflow'; +import { NodeConnectionType, NodeApiError } from 'n8n-workflow'; import { validateJSON, veroApiRequest } from './GenericFunctions'; import { userFields, userOperations } from './UserDescription'; import { eventFields, eventOperations } from './EventDescripion'; @@ -23,8 +23,8 @@ export class Vero implements INodeType { defaults: { name: 'Vero', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'veroApi', @@ -222,7 +222,7 @@ export class Vero implements INodeType { returnData.push(responseData as IDataObject); } } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push({ error: error.message }); continue; } diff --git a/packages/nodes-base/nodes/Vonage/Vonage.node.json b/packages/nodes-base/nodes/Vonage/Vonage.node.json index 796c7d9eb2..181980f757 100644 --- a/packages/nodes-base/nodes/Vonage/Vonage.node.json +++ b/packages/nodes-base/nodes/Vonage/Vonage.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/vonage" + "url": "https://docs.n8n.io/integrations/builtin/credentials/vonage/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Vonage/Vonage.node.ts b/packages/nodes-base/nodes/Vonage/Vonage.node.ts index 5d557119bb..411d992f26 100644 --- a/packages/nodes-base/nodes/Vonage/Vonage.node.ts +++ b/packages/nodes-base/nodes/Vonage/Vonage.node.ts @@ -5,6 +5,7 @@ import type { INodeType, INodeTypeDescription, } from 'n8n-workflow'; +import { NodeConnectionType } from 'n8n-workflow'; import { vonageApiRequest } from './GenericFunctions'; @@ -21,8 +22,8 @@ export class Vonage implements INodeType { defaults: { name: 'Vonage', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'vonageApi', @@ -478,7 +479,7 @@ export class Vonage implements INodeType { } } } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push({ error: error.message }); continue; } diff --git a/packages/nodes-base/nodes/Wait/Wait.node.ts b/packages/nodes-base/nodes/Wait/Wait.node.ts index 69907cdd62..43c092beed 100644 --- a/packages/nodes-base/nodes/Wait/Wait.node.ts +++ b/packages/nodes-base/nodes/Wait/Wait.node.ts @@ -7,7 +7,7 @@ import type { IDisplayOptions, IWebhookFunctions, } from 'n8n-workflow'; -import { WAIT_TIME_UNLIMITED } from 'n8n-workflow'; +import { WAIT_TIME_UNLIMITED, NodeOperationError, NodeConnectionType } from 'n8n-workflow'; import { authenticationProperty, @@ -27,6 +27,7 @@ import { respondWithOptions, formRespondMode, formTitle, + appendAttributionToForm, } from '../Form/common.descriptions'; import { formWebhook } from '../Form/utils'; import { updateDisplayOptions } from '../../utils/utilities'; @@ -234,8 +235,8 @@ export class Wait extends Webhook { name: 'Wait', color: '#804050', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: credentialsProperty(this.authPropertyName), webhooks: [ { @@ -294,6 +295,29 @@ export class Wait extends Webhook { default: 'timeInterval', description: 'Determines the waiting mode to use before the workflow continues', }, + { + displayName: 'Authentication', + name: 'incomingAuthentication', + type: 'options', + options: [ + { + name: 'Basic Auth', + value: 'basicAuth', + }, + { + name: 'None', + value: 'none', + }, + ], + default: 'none', + description: + 'If and how incoming resume-webhook-requests to $execution.resumeFormUrl should be authenticated for additional security', + displayOptions: { + show: { + resume: ['form'], + }, + }, + }, { ...authenticationProperty(this.authPropertyName), description: @@ -315,6 +339,7 @@ export class Wait extends Webhook { }, default: '', description: 'The date and time to wait for before continuing', + required: true, }, // ---------------------------------- @@ -394,7 +419,7 @@ export class Wait extends Webhook { displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, displayOptions: { show: { @@ -404,13 +429,13 @@ export class Wait extends Webhook { responseMode: ['responseNode'], }, }, - options: [respondWithOptions, webhookSuffix], + options: [appendAttributionToForm, respondWithOptions, webhookSuffix], }, { displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, displayOptions: { show: { @@ -420,14 +445,14 @@ export class Wait extends Webhook { responseMode: ['onReceived', 'lastNode'], }, }, - options: [webhookSuffix], + options: [appendAttributionToForm, webhookSuffix], }, ], }; async webhook(context: IWebhookFunctions) { const resume = context.getNodeParameter('resume', 0) as string; - if (resume === 'form') return await formWebhook(context); + if (resume === 'form') return await formWebhook(context, this.authPropertyName); return await super.webhook(context); } @@ -461,6 +486,13 @@ export class Wait extends Webhook { } else { const dateTimeStr = context.getNodeParameter('dateTime', 0) as string; + if (isNaN(Date.parse(dateTimeStr))) { + throw new NodeOperationError( + context.getNode(), + '[Wait node] Cannot put execution to wait because `dateTime` parameter is not a valid date. Please pick a specific date and time to wait until.', + ); + } + waitTill = DateTime.fromFormat(dateTimeStr, "yyyy-MM-dd'T'HH:mm:ss", { zone: context.getTimezone(), }) diff --git a/packages/nodes-base/nodes/Webflow/GenericFunctions.ts b/packages/nodes-base/nodes/Webflow/GenericFunctions.ts index 4cbf8c2775..49d02bcf04 100644 --- a/packages/nodes-base/nodes/Webflow/GenericFunctions.ts +++ b/packages/nodes-base/nodes/Webflow/GenericFunctions.ts @@ -6,6 +6,7 @@ import type { IWebhookFunctions, IHttpRequestMethods, IRequestOptions, + INodePropertyOptions, } from 'n8n-workflow'; export async function webflowApiRequest( @@ -17,21 +18,9 @@ export async function webflowApiRequest( uri?: string, option: IDataObject = {}, ) { - const authenticationMethod = this.getNodeParameter('authentication', 0, 'accessToken'); - let credentialsType = ''; - - if (authenticationMethod === 'accessToken') { - credentialsType = 'webflowApi'; - } - - if (authenticationMethod === 'oAuth2') { - credentialsType = 'webflowOAuth2Api'; - } + let credentialsType = 'webflowOAuth2Api'; let options: IRequestOptions = { - headers: { - 'accept-version': '1.0.0', - }, method, qs, body, @@ -40,6 +29,19 @@ export async function webflowApiRequest( }; options = Object.assign({}, options, option); + // Keep support for v1 node + if (this.getNode().typeVersion === 1) { + console.log('v1'); + const authenticationMethod = this.getNodeParameter('authentication', 0, 'accessToken'); + if (authenticationMethod === 'accessToken') { + credentialsType = 'webflowApi'; + } + options.headers = { 'accept-version': '1.0.0' }; + } else { + options.resolveWithFullResponse = true; + options.uri = `https://api.webflow.com/v2${resource}`; + } + if (Object.keys(options.qs as IDataObject).length === 0) { delete options.qs; } @@ -74,3 +76,50 @@ export async function webflowApiRequestAllItems( return returnData; } +// Load Options +export async function getSites(this: ILoadOptionsFunctions): Promise { + const returnData: INodePropertyOptions[] = []; + const response = await webflowApiRequest.call(this, 'GET', '/sites'); + + console.log(response); + + const sites = response.body?.sites || response; + + for (const site of sites) { + returnData.push({ + name: site.displayName || site.name, + value: site.id || site._id, + }); + } + return returnData; +} +export async function getCollections(this: ILoadOptionsFunctions): Promise { + const returnData: INodePropertyOptions[] = []; + const siteId = this.getCurrentNodeParameter('siteId'); + const response = await webflowApiRequest.call(this, 'GET', `/sites/${siteId}/collections`); + + const collections = response.body?.collections || response; + + for (const collection of collections) { + returnData.push({ + name: collection.displayName || collection.name, + value: collection.id || collection._id, + }); + } + return returnData; +} +export async function getFields(this: ILoadOptionsFunctions): Promise { + const returnData: INodePropertyOptions[] = []; + const collectionId = this.getCurrentNodeParameter('collectionId'); + const response = await webflowApiRequest.call(this, 'GET', `/collections/${collectionId}`); + + const fields = response.body?.fields || response; + + for (const field of fields) { + returnData.push({ + name: `${field.displayName || field.name} (${field.type}) ${field.isRequired || field.required ? ' (required)' : ''}`, + value: field.slug, + }); + } + return returnData; +} diff --git a/packages/nodes-base/nodes/Webflow/ItemDescription.ts b/packages/nodes-base/nodes/Webflow/V1/ItemDescription.ts similarity index 91% rename from packages/nodes-base/nodes/Webflow/ItemDescription.ts rename to packages/nodes-base/nodes/Webflow/V1/ItemDescription.ts index 492497d6ef..a921c0853a 100644 --- a/packages/nodes-base/nodes/Webflow/ItemDescription.ts +++ b/packages/nodes-base/nodes/Webflow/V1/ItemDescription.ts @@ -62,7 +62,7 @@ export const itemFields: INodeProperties[] = [ }, }, description: - 'ID of the site containing the collection whose items to add to. Choose from the list, or specify an ID using an expression.', + 'ID of the site containing the collection whose items to add to. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Collection Name or ID', @@ -81,7 +81,7 @@ export const itemFields: INodeProperties[] = [ }, }, description: - 'ID of the collection to add an item to. Choose from the list, or specify an ID using an expression.', + 'ID of the collection to add an item to. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Live', @@ -127,7 +127,7 @@ export const itemFields: INodeProperties[] = [ }, default: '', description: - 'Field to set for the item to create. Choose from the list, or specify an ID using an expression.', + 'Field to set for the item to create. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Field Value', @@ -160,7 +160,7 @@ export const itemFields: INodeProperties[] = [ }, }, description: - 'ID of the site containing the collection whose items to operate on. Choose from the list, or specify an ID using an expression.', + 'ID of the site containing the collection whose items to operate on. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Collection Name or ID', @@ -179,7 +179,7 @@ export const itemFields: INodeProperties[] = [ }, }, description: - 'ID of the collection whose items to operate on. Choose from the list, or specify an ID using an expression.', + 'ID of the collection whose items to operate on. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Item ID', @@ -214,7 +214,7 @@ export const itemFields: INodeProperties[] = [ }, }, description: - 'ID of the site containing the collection whose items to update. Choose from the list, or specify an ID using an expression.', + 'ID of the site containing the collection whose items to update. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Collection Name or ID', @@ -233,7 +233,7 @@ export const itemFields: INodeProperties[] = [ }, }, description: - 'ID of the collection whose items to update. Choose from the list, or specify an ID using an expression.', + 'ID of the collection whose items to update. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Item ID', @@ -293,7 +293,7 @@ export const itemFields: INodeProperties[] = [ }, default: '', description: - 'Field to set for the item to update. Choose from the list, or specify an ID using an expression.', + 'Field to set for the item to update. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Field Value', @@ -325,7 +325,7 @@ export const itemFields: INodeProperties[] = [ }, }, description: - 'ID of the site containing the collection whose items to retrieve. Choose from the list, or specify an ID using an expression.', + 'ID of the site containing the collection whose items to retrieve. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Collection Name or ID', @@ -344,7 +344,7 @@ export const itemFields: INodeProperties[] = [ }, }, description: - 'ID of the collection whose items to retrieve. Choose from the list, or specify an ID using an expression.', + 'ID of the collection whose items to retrieve. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Return All', diff --git a/packages/nodes-base/nodes/Webflow/V1/WebflowTriggerV1.node.ts b/packages/nodes-base/nodes/Webflow/V1/WebflowTriggerV1.node.ts new file mode 100644 index 0000000000..ab7f7df9f2 --- /dev/null +++ b/packages/nodes-base/nodes/Webflow/V1/WebflowTriggerV1.node.ts @@ -0,0 +1,209 @@ +import { + type IHookFunctions, + type IWebhookFunctions, + type IDataObject, + type INodeType, + type INodeTypeDescription, + type IWebhookResponseData, + type INodeTypeBaseDescription, + NodeConnectionType, +} from 'n8n-workflow'; + +import { getSites, webflowApiRequest } from '../GenericFunctions'; + +export class WebflowTriggerV1 implements INodeType { + description: INodeTypeDescription; + + constructor(baseDescription: INodeTypeBaseDescription) { + this.description = { + ...baseDescription, + displayName: 'Webflow Trigger', + name: 'webflowTrigger', + icon: 'file:webflow.svg', + group: ['trigger'], + version: 1, + description: 'Handle Webflow events via webhooks', + defaults: { + name: 'Webflow Trigger', + }, + + inputs: [], + outputs: [NodeConnectionType.Main], + credentials: [ + { + name: 'webflowApi', + required: true, + displayOptions: { + show: { + authentication: ['accessToken'], + }, + }, + }, + { + name: 'webflowOAuth2Api', + required: true, + displayOptions: { + show: { + authentication: ['oAuth2'], + }, + }, + }, + ], + webhooks: [ + { + name: 'default', + httpMethod: 'POST', + responseMode: 'onReceived', + path: 'webhook', + }, + ], + properties: [ + { + displayName: 'Authentication', + name: 'authentication', + type: 'options', + options: [ + { + name: 'Access Token', + value: 'accessToken', + }, + { + name: 'OAuth2', + value: 'oAuth2', + }, + ], + default: 'accessToken', + }, + { + displayName: 'Site Name or ID', + name: 'site', + type: 'options', + required: true, + default: '', + typeOptions: { + loadOptionsMethod: 'getSites', + }, + description: + 'Site that will trigger the events. Choose from the list, or specify an ID using an expression.', + }, + { + displayName: 'Event', + name: 'event', + type: 'options', + required: true, + options: [ + { + name: 'Collection Item Created', + value: 'collection_item_created', + }, + { + name: 'Collection Item Deleted', + value: 'collection_item_deleted', + }, + { + name: 'Collection Item Updated', + value: 'collection_item_changed', + }, + { + name: 'Ecomm Inventory Changed', + value: 'ecomm_inventory_changed', + }, + { + name: 'Ecomm New Order', + value: 'ecomm_new_order', + }, + { + name: 'Ecomm Order Changed', + value: 'ecomm_order_changed', + }, + { + name: 'Form Submission', + value: 'form_submission', + }, + { + name: 'Site Publish', + value: 'site_publish', + }, + ], + default: 'form_submission', + }, + ], + }; + } + + methods = { + loadOptions: { + getSites, + }, + }; + + webhookMethods = { + default: { + async checkExists(this: IHookFunctions): Promise { + const webhookData = this.getWorkflowStaticData('node'); + const webhookUrl = this.getNodeWebhookUrl('default'); + const siteId = this.getNodeParameter('site') as string; + + const event = this.getNodeParameter('event') as string; + const registeredWebhooks = await webflowApiRequest.call( + this, + 'GET', + `/sites/${siteId}/webhooks`, + ); + + const webhooks = registeredWebhooks.body?.webhooks || registeredWebhooks; + + for (const webhook of webhooks) { + if (webhook.url === webhookUrl && webhook.triggerType === event) { + webhookData.webhookId = webhook._id; + return true; + } + } + + return false; + }, + + async create(this: IHookFunctions): Promise { + const webhookUrl = this.getNodeWebhookUrl('default'); + const webhookData = this.getWorkflowStaticData('node'); + const siteId = this.getNodeParameter('site') as string; + const event = this.getNodeParameter('event') as string; + const endpoint = `/sites/${siteId}/webhooks`; + const body: IDataObject = { + site_id: siteId, + triggerType: event, + url: webhookUrl, + }; + + const response = await webflowApiRequest.call(this, 'POST', endpoint, body); + const _id = response.body?._id || response._id; + webhookData.webhookId = _id; + return true; + }, + async delete(this: IHookFunctions): Promise { + let responseData; + const webhookData = this.getWorkflowStaticData('node'); + const siteId = this.getNodeParameter('site') as string; + const endpoint = `/sites/${siteId}/webhooks/${webhookData.webhookId}`; + try { + responseData = await webflowApiRequest.call(this, 'DELETE', endpoint); + } catch (error) { + return false; + } + const deleted = responseData.body?.deleted || responseData.deleted; + if (!deleted) { + return false; + } + delete webhookData.webhookId; + return true; + }, + }, + }; + + async webhook(this: IWebhookFunctions): Promise { + const req = this.getRequestObject(); + return { + workflowData: [this.helpers.returnJsonArray(req.body as IDataObject[])], + }; + } +} diff --git a/packages/nodes-base/nodes/Webflow/V1/WebflowV1.node.ts b/packages/nodes-base/nodes/Webflow/V1/WebflowV1.node.ts new file mode 100644 index 0000000000..2985cd7369 --- /dev/null +++ b/packages/nodes-base/nodes/Webflow/V1/WebflowV1.node.ts @@ -0,0 +1,259 @@ +import { + type IExecuteFunctions, + type IDataObject, + type INodeTypeBaseDescription, + type INodeExecutionData, + type INodeType, + type INodeTypeDescription, + NodeConnectionType, +} from 'n8n-workflow'; + +import { + webflowApiRequest, + webflowApiRequestAllItems, + getSites, + getCollections, + getFields, +} from '../GenericFunctions'; + +import { itemFields, itemOperations } from './ItemDescription'; + +export class WebflowV1 implements INodeType { + description: INodeTypeDescription; + + constructor(baseDescription: INodeTypeBaseDescription) { + this.description = { + ...baseDescription, + version: 1, + description: 'Consume the Webflow API', + subtitle: '={{$parameter["operation"] + ": " + $parameter["resource"]}}', + defaults: { + name: 'Webflow', + }, + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], + credentials: [ + { + name: 'webflowApi', + required: true, + displayOptions: { + show: { + authentication: ['accessToken'], + }, + }, + }, + { + name: 'webflowOAuth2Api', + required: true, + displayOptions: { + show: { + authentication: ['oAuth2'], + }, + }, + }, + ], + properties: [ + { + displayName: 'Authentication', + name: 'authentication', + type: 'options', + options: [ + { + name: 'Access Token', + value: 'accessToken', + }, + { + name: 'OAuth2', + value: 'oAuth2', + }, + ], + default: 'accessToken', + }, + { + displayName: 'Resource', + name: 'resource', + type: 'options', + noDataExpression: true, + options: [ + { + name: 'Item', + value: 'item', + }, + ], + default: 'item', + }, + ...itemOperations, + ...itemFields, + ], + }; + } + + methods = { + loadOptions: { + getSites, + getCollections, + getFields, + }, + }; + + async execute(this: IExecuteFunctions): Promise { + const items = this.getInputData(); + + const resource = this.getNodeParameter('resource', 0); + const operation = this.getNodeParameter('operation', 0); + let responseData; + const returnData: INodeExecutionData[] = []; + + for (let i = 0; i < items.length; i++) { + try { + if (resource === 'item') { + // ********************************************************************* + // item + // ********************************************************************* + + // https://developers.webflow.com/#item-model + + if (operation === 'create') { + // ---------------------------------- + // item: create + // ---------------------------------- + + // https://developers.webflow.com/#create-new-collection-item + + const collectionId = this.getNodeParameter('collectionId', i) as string; + + const properties = this.getNodeParameter( + 'fieldsUi.fieldValues', + i, + [], + ) as IDataObject[]; + + const live = this.getNodeParameter('live', i) as boolean; + + const fields = {} as IDataObject; + + properties.forEach((data) => (fields[data.fieldId as string] = data.fieldValue)); + + const body: IDataObject = { + fields, + }; + + responseData = await webflowApiRequest.call( + this, + 'POST', + `/collections/${collectionId}/items`, + body, + { live }, + ); + } else if (operation === 'delete') { + // ---------------------------------- + // item: delete + // ---------------------------------- + + // https://developers.webflow.com/#remove-collection-item + + const collectionId = this.getNodeParameter('collectionId', i) as string; + const itemId = this.getNodeParameter('itemId', i) as string; + responseData = await webflowApiRequest.call( + this, + 'DELETE', + `/collections/${collectionId}/items/${itemId}`, + ); + } else if (operation === 'get') { + // ---------------------------------- + // item: get + // ---------------------------------- + + // https://developers.webflow.com/#get-single-item + + const collectionId = this.getNodeParameter('collectionId', i) as string; + const itemId = this.getNodeParameter('itemId', i) as string; + responseData = await webflowApiRequest.call( + this, + 'GET', + `/collections/${collectionId}/items/${itemId}`, + ); + responseData = responseData.items; + } else if (operation === 'getAll') { + // ---------------------------------- + // item: getAll + // ---------------------------------- + + // https://developers.webflow.com/#get-all-items-for-a-collection + + const returnAll = this.getNodeParameter('returnAll', 0); + const collectionId = this.getNodeParameter('collectionId', i) as string; + const qs: IDataObject = {}; + + if (returnAll) { + responseData = await webflowApiRequestAllItems.call( + this, + 'GET', + `/collections/${collectionId}/items`, + {}, + qs, + ); + } else { + qs.limit = this.getNodeParameter('limit', 0); + responseData = await webflowApiRequest.call( + this, + 'GET', + `/collections/${collectionId}/items`, + {}, + qs, + ); + responseData = responseData.items; + } + } else if (operation === 'update') { + // ---------------------------------- + // item: update + // ---------------------------------- + + // https://developers.webflow.com/#update-collection-item + + const collectionId = this.getNodeParameter('collectionId', i) as string; + + const itemId = this.getNodeParameter('itemId', i) as string; + + const properties = this.getNodeParameter( + 'fieldsUi.fieldValues', + i, + [], + ) as IDataObject[]; + + const live = this.getNodeParameter('live', i) as boolean; + + const fields = {} as IDataObject; + + properties.forEach((data) => (fields[data.fieldId as string] = data.fieldValue)); + + const body: IDataObject = { + fields, + }; + + responseData = await webflowApiRequest.call( + this, + 'PUT', + `/collections/${collectionId}/items/${itemId}`, + body, + { live }, + ); + } + } + const executionData = this.helpers.constructExecutionMetaData( + this.helpers.returnJsonArray(responseData as IDataObject[]), + { itemData: { item: i } }, + ); + returnData.push(...executionData); + } catch (error) { + if (this.continueOnFail()) { + returnData.push({ json: { error: error.message } }); + continue; + } + throw error; + } + } + + return [returnData]; + } +} diff --git a/packages/nodes-base/nodes/Webflow/V2/WebflowTriggerV2.node.ts b/packages/nodes-base/nodes/Webflow/V2/WebflowTriggerV2.node.ts new file mode 100644 index 0000000000..618f359fc5 --- /dev/null +++ b/packages/nodes-base/nodes/Webflow/V2/WebflowTriggerV2.node.ts @@ -0,0 +1,179 @@ +import type { + IHookFunctions, + IDataObject, + INodeType, + INodeTypeDescription, + INodeTypeBaseDescription, + IWebhookFunctions, + IWebhookResponseData, +} from 'n8n-workflow'; +import { NodeConnectionType } from 'n8n-workflow'; + +import { getSites, webflowApiRequest } from '../GenericFunctions'; + +export class WebflowTriggerV2 implements INodeType { + description: INodeTypeDescription; + + constructor(baseDescription: INodeTypeBaseDescription) { + this.description = { + ...baseDescription, + displayName: 'Webflow Trigger', + name: 'webflowTrigger', + icon: 'file:webflow.svg', + group: ['trigger'], + version: 2, + description: 'Handle Webflow events via webhooks', + defaults: { + name: 'Webflow Trigger', + }, + + inputs: [], + outputs: [NodeConnectionType.Main], + credentials: [ + { + name: 'webflowOAuth2Api', + required: true, + }, + ], + webhooks: [ + { + name: 'default', + httpMethod: 'POST', + responseMode: 'onReceived', + path: 'webhook', + }, + ], + properties: [ + { + displayName: 'Site Name or ID', + name: 'site', + type: 'options', + required: true, + default: '', + typeOptions: { + loadOptionsMethod: 'getSites', + }, + description: + 'Site that will trigger the events. Choose from the list, or specify an ID using an expression.', + }, + { + displayName: 'Event', + name: 'event', + type: 'options', + required: true, + options: [ + { + name: 'Collection Item Created', + value: 'collection_item_created', + }, + { + name: 'Collection Item Deleted', + value: 'collection_item_deleted', + }, + { + name: 'Collection Item Updated', + value: 'collection_item_changed', + }, + { + name: 'Ecomm Inventory Changed', + value: 'ecomm_inventory_changed', + }, + { + name: 'Ecomm New Order', + value: 'ecomm_new_order', + }, + { + name: 'Ecomm Order Changed', + value: 'ecomm_order_changed', + }, + { + name: 'Form Submission', + value: 'form_submission', + }, + { + name: 'Site Publish', + value: 'site_publish', + }, + ], + default: 'form_submission', + }, + ], + }; + } + + methods = { + loadOptions: { + getSites, + }, + }; + + webhookMethods = { + default: { + async checkExists(this: IHookFunctions): Promise { + const webhookData = this.getWorkflowStaticData('node'); + const webhookUrl = this.getNodeWebhookUrl('default'); + const siteId = this.getNodeParameter('site') as string; + + const event = this.getNodeParameter('event') as string; + const registeredWebhooks = await webflowApiRequest.call( + this, + 'GET', + `/sites/${siteId}/webhooks`, + ); + + const webhooks = registeredWebhooks.body?.webhooks || registeredWebhooks; + + for (const webhook of webhooks) { + if (webhook.url === webhookUrl && webhook.triggerType === event) { + webhookData.webhookId = webhook._id; + return true; + } + } + + return false; + }, + + async create(this: IHookFunctions): Promise { + const webhookUrl = this.getNodeWebhookUrl('default'); + const webhookData = this.getWorkflowStaticData('node'); + const siteId = this.getNodeParameter('site') as string; + const event = this.getNodeParameter('event') as string; + const endpoint = `/sites/${siteId}/webhooks`; + const body: IDataObject = { + site_id: siteId, + triggerType: event, + url: webhookUrl, + }; + + const response = await webflowApiRequest.call(this, 'POST', endpoint, body); + const _id = response.body?._id || response._id; + webhookData.webhookId = _id; + return true; + }, + async delete(this: IHookFunctions): Promise { + let responseData; + const webhookData = this.getWorkflowStaticData('node'); + const siteId = this.getNodeParameter('site') as string; + const endpoint = `/sites/${siteId}/webhooks/${webhookData.webhookId}`; + try { + responseData = await webflowApiRequest.call(this, 'DELETE', endpoint); + } catch (error) { + return false; + } + const deleted = responseData.body?.deleted || responseData.deleted; + if (!deleted) { + return false; + } + delete webhookData.webhookId; + return true; + }, + }, + }; + + async webhook(this: IWebhookFunctions): Promise { + const req = this.getRequestObject(); + return { + workflowData: [this.helpers.returnJsonArray(req.body as IDataObject[])], + }; + } +} diff --git a/packages/nodes-base/nodes/Webflow/V2/WebflowV2.node.ts b/packages/nodes-base/nodes/Webflow/V2/WebflowV2.node.ts new file mode 100644 index 0000000000..ad17ff9e05 --- /dev/null +++ b/packages/nodes-base/nodes/Webflow/V2/WebflowV2.node.ts @@ -0,0 +1,32 @@ +import type { + IExecuteFunctions, + INodeType, + INodeTypeBaseDescription, + INodeTypeDescription, +} from 'n8n-workflow'; +import { getSites, getCollections, getFields } from '../GenericFunctions'; +import { versionDescription } from './actions/versionDescription'; +import { router } from './actions/router'; + +export class WebflowV2 implements INodeType { + description: INodeTypeDescription; + + constructor(baseDescription: INodeTypeBaseDescription) { + this.description = { + ...baseDescription, + ...versionDescription, + }; + } + + methods = { + loadOptions: { + getSites, + getCollections, + getFields, + }, + }; + + async execute(this: IExecuteFunctions) { + return await router.call(this); + } +} diff --git a/packages/nodes-base/nodes/Webflow/V2/actions/Item/Item.resource.ts b/packages/nodes-base/nodes/Webflow/V2/actions/Item/Item.resource.ts new file mode 100644 index 0000000000..420d2d8490 --- /dev/null +++ b/packages/nodes-base/nodes/Webflow/V2/actions/Item/Item.resource.ts @@ -0,0 +1,56 @@ +import type { INodeProperties } from 'n8n-workflow'; + +import * as create from './create.operation'; +import * as deleteItem from './delete.operation'; +import * as get from './get.operation'; +import * as getAll from './getAll.operation'; +import * as update from './update.operation'; + +export { create, deleteItem, get, getAll, update }; + +export const description: INodeProperties[] = [ + { + displayName: 'Operation', + name: 'operation', + type: 'options', + noDataExpression: true, + default: 'get', + options: [ + { + name: 'Create', + value: 'create', + action: 'Create an item', + }, + { + name: 'Delete', + value: 'deleteItem', + action: 'Delete an item', + }, + { + name: 'Get', + value: 'get', + action: 'Get an item', + }, + { + name: 'Get Many', + value: 'getAll', + action: 'Get many items', + }, + { + name: 'Update', + value: 'update', + action: 'Update an item', + }, + ], + displayOptions: { + show: { + resource: ['item'], + }, + }, + }, + ...create.description, + ...deleteItem.description, + ...get.description, + ...getAll.description, + ...update.description, +]; diff --git a/packages/nodes-base/nodes/Webflow/V2/actions/Item/create.operation.ts b/packages/nodes-base/nodes/Webflow/V2/actions/Item/create.operation.ts new file mode 100644 index 0000000000..da816d56f9 --- /dev/null +++ b/packages/nodes-base/nodes/Webflow/V2/actions/Item/create.operation.ts @@ -0,0 +1,139 @@ +import type { + IDataObject, + INodeExecutionData, + INodeProperties, + IExecuteFunctions, +} from 'n8n-workflow'; + +import { updateDisplayOptions, wrapData } from '../../../../../utils/utilities'; +import { webflowApiRequest } from '../../../GenericFunctions'; + +const properties: INodeProperties[] = [ + { + displayName: 'Site Name or ID', + name: 'siteId', + type: 'options', + required: true, + typeOptions: { + loadOptionsMethod: 'getSites', + }, + default: '', + description: + 'ID of the site containing the collection whose items to add to. Choose from the list, or specify an ID using an expression.', + }, + { + displayName: 'Collection Name or ID', + name: 'collectionId', + type: 'options', + required: true, + typeOptions: { + loadOptionsMethod: 'getCollections', + loadOptionsDependsOn: ['siteId'], + }, + default: '', + description: + 'ID of the collection to add an item to. Choose from the list, or specify an ID using an expression.', + }, + { + displayName: 'Live', + name: 'live', + type: 'boolean', + required: true, + default: false, + description: 'Whether the item should be published on the live site', + }, + { + displayName: 'Fields', + name: 'fieldsUi', + placeholder: 'Add Field', + type: 'fixedCollection', + typeOptions: { + multipleValues: true, + }, + default: {}, + options: [ + { + displayName: 'Field', + name: 'fieldValues', + values: [ + { + displayName: 'Field Name or ID', + name: 'fieldId', + type: 'options', + typeOptions: { + loadOptionsMethod: 'getFields', + loadOptionsDependsOn: ['collectionId'], + }, + default: '', + description: + 'Field to set for the item to create. Choose from the list, or specify an ID using an expression.', + }, + { + displayName: 'Field Value', + name: 'fieldValue', + type: 'string', + default: '', + description: 'Value to set for the item to create', + }, + ], + }, + ], + }, +]; + +const displayOptions = { + show: { + resource: ['item'], + operation: ['create'], + }, +}; + +export const description = updateDisplayOptions(displayOptions, properties); + +export async function execute( + this: IExecuteFunctions, + items: INodeExecutionData[], +): Promise { + const returnData: INodeExecutionData[] = []; + let responseData; + for (let i = 0; i < items.length; i++) { + try { + const collectionId = this.getNodeParameter('collectionId', i) as string; + + const uiFields = this.getNodeParameter('fieldsUi.fieldValues', i, []) as IDataObject[]; + + const live = this.getNodeParameter('live', i) as boolean; + + const fieldData = {} as IDataObject; + + uiFields.forEach((data) => (fieldData[data.fieldId as string] = data.fieldValue)); + + const body: IDataObject = { + fieldData, + }; + + responseData = await webflowApiRequest.call( + this, + 'POST', + `/collections/${collectionId}/items`, + body, + { live }, + ); + + const executionData = this.helpers.constructExecutionMetaData( + wrapData(responseData.body as IDataObject[]), + { itemData: { item: i } }, + ); + + returnData.push(...executionData); + } catch (error) { + if (this.continueOnFail()) { + returnData.push({ json: { message: error.message, error } }); + continue; + } + throw error; + } + } + + return returnData; +} diff --git a/packages/nodes-base/nodes/Webflow/V2/actions/Item/delete.operation.ts b/packages/nodes-base/nodes/Webflow/V2/actions/Item/delete.operation.ts new file mode 100644 index 0000000000..0fdabdd5a9 --- /dev/null +++ b/packages/nodes-base/nodes/Webflow/V2/actions/Item/delete.operation.ts @@ -0,0 +1,94 @@ +import type { + IDataObject, + INodeExecutionData, + INodeProperties, + IExecuteFunctions, +} from 'n8n-workflow'; + +import { updateDisplayOptions, wrapData } from '../../../../../utils/utilities'; +import { webflowApiRequest } from '../../../GenericFunctions'; + +const properties: INodeProperties[] = [ + { + displayName: 'Site Name or ID', + name: 'siteId', + type: 'options', + required: true, + typeOptions: { + loadOptionsMethod: 'getSites', + }, + default: '', + description: + 'ID of the site containing the collection whose items to operate on. Choose from the list, or specify an ID using an expression.', + }, + { + displayName: 'Collection Name or ID', + name: 'collectionId', + type: 'options', + required: true, + typeOptions: { + loadOptionsMethod: 'getCollections', + loadOptionsDependsOn: ['siteId'], + }, + default: '', + description: + 'ID of the collection whose items to operate on. Choose from the list, or specify an ID using an expression.', + }, + { + displayName: 'Item ID', + name: 'itemId', + type: 'string', + required: true, + default: '', + description: 'ID of the item to operate on', + }, +]; + +const displayOptions = { + show: { + resource: ['item'], + operation: ['deleteItem'], + }, +}; + +export const description = updateDisplayOptions(displayOptions, properties); + +export async function execute( + this: IExecuteFunctions, + items: INodeExecutionData[], +): Promise { + const returnData: INodeExecutionData[] = []; + + for (let i = 0; i < items.length; i++) { + try { + const collectionId = this.getNodeParameter('collectionId', i) as string; + const itemId = this.getNodeParameter('itemId', i) as string; + let responseData = await webflowApiRequest.call( + this, + 'DELETE', + `/collections/${collectionId}/items/${itemId}`, + ); + + if (responseData.statusCode === 204) { + responseData = { success: true }; + } else { + responseData = { success: false }; + } + + const executionData = this.helpers.constructExecutionMetaData( + wrapData(responseData as IDataObject[]), + { itemData: { item: i } }, + ); + + returnData.push(...executionData); + } catch (error) { + if (this.continueOnFail()) { + returnData.push({ json: { message: error.message, error } }); + continue; + } + throw error; + } + } + + return returnData; +} diff --git a/packages/nodes-base/nodes/Webflow/V2/actions/Item/get.operation.ts b/packages/nodes-base/nodes/Webflow/V2/actions/Item/get.operation.ts new file mode 100644 index 0000000000..26c2113555 --- /dev/null +++ b/packages/nodes-base/nodes/Webflow/V2/actions/Item/get.operation.ts @@ -0,0 +1,88 @@ +import type { + IDataObject, + INodeExecutionData, + INodeProperties, + IExecuteFunctions, +} from 'n8n-workflow'; + +import { updateDisplayOptions, wrapData } from '../../../../../utils/utilities'; +import { webflowApiRequest } from '../../../GenericFunctions'; + +const properties: INodeProperties[] = [ + { + displayName: 'Site Name or ID', + name: 'siteId', + type: 'options', + required: true, + typeOptions: { + loadOptionsMethod: 'getSites', + }, + default: '', + description: + 'ID of the site containing the collection whose items to operate on. Choose from the list, or specify an ID using an expression.', + }, + { + displayName: 'Collection Name or ID', + name: 'collectionId', + type: 'options', + required: true, + typeOptions: { + loadOptionsMethod: 'getCollections', + loadOptionsDependsOn: ['siteId'], + }, + default: '', + description: + 'ID of the collection whose items to operate on. Choose from the list, or specify an ID using an expression.', + }, + { + displayName: 'Item ID', + name: 'itemId', + type: 'string', + required: true, + default: '', + description: 'ID of the item to operate on', + }, +]; + +const displayOptions = { + show: { + resource: ['item'], + operation: ['get'], + }, +}; + +export const description = updateDisplayOptions(displayOptions, properties); + +export async function execute( + this: IExecuteFunctions, + items: INodeExecutionData[], +): Promise { + const returnData: INodeExecutionData[] = []; + let responseData; + for (let i = 0; i < items.length; i++) { + try { + const collectionId = this.getNodeParameter('collectionId', i) as string; + const itemId = this.getNodeParameter('itemId', i) as string; + responseData = await webflowApiRequest.call( + this, + 'GET', + `/collections/${collectionId}/items/${itemId}`, + ); + + const executionData = this.helpers.constructExecutionMetaData( + wrapData(responseData.body as IDataObject[]), + { itemData: { item: i } }, + ); + + returnData.push(...executionData); + } catch (error) { + if (this.continueOnFail()) { + returnData.push({ json: { message: error.message, error } }); + continue; + } + throw error; + } + } + + return returnData; +} diff --git a/packages/nodes-base/nodes/Webflow/V2/actions/Item/getAll.operation.ts b/packages/nodes-base/nodes/Webflow/V2/actions/Item/getAll.operation.ts new file mode 100644 index 0000000000..9b81c50698 --- /dev/null +++ b/packages/nodes-base/nodes/Webflow/V2/actions/Item/getAll.operation.ts @@ -0,0 +1,118 @@ +import type { + IDataObject, + INodeExecutionData, + INodeProperties, + IExecuteFunctions, +} from 'n8n-workflow'; + +import { updateDisplayOptions, wrapData } from '../../../../../utils/utilities'; +import { webflowApiRequest, webflowApiRequestAllItems } from '../../../GenericFunctions'; + +const properties: INodeProperties[] = [ + { + displayName: 'Site Name or ID', + name: 'siteId', + type: 'options', + required: true, + typeOptions: { + loadOptionsMethod: 'getSites', + }, + default: '', + description: + 'ID of the site containing the collection whose items to operate on. Choose from the list, or specify an ID using an expression.', + }, + { + displayName: 'Collection Name or ID', + name: 'collectionId', + type: 'options', + required: true, + typeOptions: { + loadOptionsMethod: 'getCollections', + loadOptionsDependsOn: ['siteId'], + }, + default: '', + description: + 'ID of the collection whose items to operate on. Choose from the list, or specify an ID using an expression.', + }, + { + displayName: 'Return All', + name: 'returnAll', + type: 'boolean', + default: false, + description: 'Whether to return all results or only up to a given limit', + }, + { + displayName: 'Limit', + name: 'limit', + type: 'number', + typeOptions: { + minValue: 1, + maxValue: 100, + }, + displayOptions: { + show: { + returnAll: [false], + }, + }, + default: 100, + description: 'Max number of results to return', + }, +]; + +const displayOptions = { + show: { + resource: ['item'], + operation: ['getAll'], + }, +}; + +export const description = updateDisplayOptions(displayOptions, properties); + +export async function execute( + this: IExecuteFunctions, + items: INodeExecutionData[], +): Promise { + const returnData: INodeExecutionData[] = []; + let responseData; + for (let i = 0; i < items.length; i++) { + try { + const returnAll = this.getNodeParameter('returnAll', i) as boolean; + const collectionId = this.getNodeParameter('collectionId', i) as string; + const qs: IDataObject = {}; + + if (returnAll) { + responseData = await webflowApiRequestAllItems.call( + this, + 'GET', + `/collections/${collectionId}/items`, + {}, + ); + } else { + qs.limit = this.getNodeParameter('limit', i); + responseData = await webflowApiRequest.call( + this, + 'GET', + `/collections/${collectionId}/items`, + {}, + qs, + ); + responseData = responseData.body.items; + } + + const executionData = this.helpers.constructExecutionMetaData( + wrapData(responseData as IDataObject[]), + { itemData: { item: i } }, + ); + + returnData.push(...executionData); + } catch (error) { + if (this.continueOnFail()) { + returnData.push({ json: { message: error.message, error } }); + continue; + } + throw error; + } + } + + return returnData; +} diff --git a/packages/nodes-base/nodes/Webflow/V2/actions/Item/update.operation.ts b/packages/nodes-base/nodes/Webflow/V2/actions/Item/update.operation.ts new file mode 100644 index 0000000000..37e716c783 --- /dev/null +++ b/packages/nodes-base/nodes/Webflow/V2/actions/Item/update.operation.ts @@ -0,0 +1,148 @@ +import type { + IDataObject, + INodeExecutionData, + INodeProperties, + IExecuteFunctions, +} from 'n8n-workflow'; + +import { updateDisplayOptions, wrapData } from '../../../../../utils/utilities'; +import { webflowApiRequest } from '../../../GenericFunctions'; + +const properties: INodeProperties[] = [ + { + displayName: 'Site Name or ID', + name: 'siteId', + type: 'options', + required: true, + typeOptions: { + loadOptionsMethod: 'getSites', + }, + default: '', + description: + 'ID of the site containing the collection whose items to add to. Choose from the list, or specify an ID using an expression.', + }, + { + displayName: 'Collection Name or ID', + name: 'collectionId', + type: 'options', + required: true, + typeOptions: { + loadOptionsMethod: 'getCollections', + loadOptionsDependsOn: ['siteId'], + }, + default: '', + description: + 'ID of the collection to add an item to. Choose from the list, or specify an ID using an expression.', + }, + { + displayName: 'Item ID', + name: 'itemId', + type: 'string', + required: true, + default: '', + description: 'ID of the item to update', + }, + { + displayName: 'Live', + name: 'live', + type: 'boolean', + required: true, + default: false, + description: 'Whether the item should be published on the live site', + }, + { + displayName: 'Fields', + name: 'fieldsUi', + placeholder: 'Add Field', + type: 'fixedCollection', + typeOptions: { + multipleValues: true, + }, + default: {}, + options: [ + { + displayName: 'Field', + name: 'fieldValues', + values: [ + { + displayName: 'Field Name or ID', + name: 'fieldId', + type: 'options', + typeOptions: { + loadOptionsMethod: 'getFields', + loadOptionsDependsOn: ['collectionId'], + }, + default: '', + description: + 'Field to set for the item to create. Choose from the list, or specify an ID using an expression.', + }, + { + displayName: 'Field Value', + name: 'fieldValue', + type: 'string', + default: '', + description: 'Value to set for the item to create', + }, + ], + }, + ], + }, +]; + +const displayOptions = { + show: { + resource: ['item'], + operation: ['update'], + }, +}; + +export const description = updateDisplayOptions(displayOptions, properties); + +export async function execute( + this: IExecuteFunctions, + items: INodeExecutionData[], +): Promise { + const returnData: INodeExecutionData[] = []; + let responseData; + for (let i = 0; i < items.length; i++) { + try { + const collectionId = this.getNodeParameter('collectionId', i) as string; + const itemId = this.getNodeParameter('itemId', i) as string; + + const uiFields = this.getNodeParameter('fieldsUi.fieldValues', i, []) as IDataObject[]; + + const live = this.getNodeParameter('live', i) as boolean; + + const fieldData = {} as IDataObject; + + uiFields.forEach((data) => (fieldData[data.fieldId as string] = data.fieldValue)); + + const body: IDataObject = { + fieldData, + }; + + responseData = await webflowApiRequest.call( + this, + 'PATCH', + `/collections/${collectionId}/items/${itemId}`, + body, + { live }, + ); + + const executionData = this.helpers.constructExecutionMetaData( + wrapData(responseData.body as IDataObject[]), + { itemData: { item: i } }, + ); + + returnData.push(...executionData); + } catch (error) { + if (this.continueOnFail()) { + returnData.push({ json: { message: error.message, error } }); + continue; + } + throw error; + } + } + + return returnData; +} diff --git a/packages/nodes-base/nodes/Webflow/V2/actions/node.type.ts b/packages/nodes-base/nodes/Webflow/V2/actions/node.type.ts new file mode 100644 index 0000000000..150a5684b6 --- /dev/null +++ b/packages/nodes-base/nodes/Webflow/V2/actions/node.type.ts @@ -0,0 +1,7 @@ +import type { AllEntities } from 'n8n-workflow'; + +type NodeMap = { + item: 'create' | 'deleteItem' | 'get' | 'getAll' | 'update'; +}; + +export type WebflowType = AllEntities; diff --git a/packages/nodes-base/nodes/Webflow/V2/actions/router.ts b/packages/nodes-base/nodes/Webflow/V2/actions/router.ts new file mode 100644 index 0000000000..371a9df3c6 --- /dev/null +++ b/packages/nodes-base/nodes/Webflow/V2/actions/router.ts @@ -0,0 +1,35 @@ +import type { IExecuteFunctions, INodeExecutionData } from 'n8n-workflow'; +import { NodeOperationError } from 'n8n-workflow'; +import type { WebflowType } from './node.type'; + +import * as item from './Item/Item.resource'; + +export async function router(this: IExecuteFunctions): Promise { + let returnData: INodeExecutionData[] = []; + + const items = this.getInputData(); + const resource = this.getNodeParameter('resource', 0); + const operation = this.getNodeParameter('operation', 0); + + const webflowNodeData = { + resource, + operation, + } as WebflowType; + + try { + switch (webflowNodeData.resource) { + case 'item': + returnData = await item[webflowNodeData.operation].execute.call(this, items); + break; + default: + throw new NodeOperationError( + this.getNode(), + `The operation "${operation}" is not supported!`, + ); + } + } catch (error) { + throw error; + } + + return [returnData]; +} diff --git a/packages/nodes-base/nodes/Webflow/V2/actions/versionDescription.ts b/packages/nodes-base/nodes/Webflow/V2/actions/versionDescription.ts new file mode 100644 index 0000000000..41a3ab654d --- /dev/null +++ b/packages/nodes-base/nodes/Webflow/V2/actions/versionDescription.ts @@ -0,0 +1,41 @@ +/* eslint-disable n8n-nodes-base/node-filename-against-convention */ +import { NodeConnectionType, type INodeTypeDescription } from 'n8n-workflow'; + +import * as item from './Item/Item.resource'; + +export const versionDescription: INodeTypeDescription = { + displayName: 'Webflow', + name: 'webflow', + icon: 'file:webflow.svg', + group: ['transform'], + subtitle: '={{$parameter["operation"] + ": " + $parameter["resource"]}}', + description: 'Consume the Webflow API', + version: [2], + defaults: { + name: 'Webflow', + }, + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], + credentials: [ + { + name: 'webflowOAuth2Api', + required: true, + }, + ], + properties: [ + { + displayName: 'Resource', + name: 'resource', + type: 'options', + noDataExpression: true, + options: [ + { + name: 'Item', + value: 'item', + }, + ], + default: 'item', + }, + ...item.description, + ], +}; diff --git a/packages/nodes-base/nodes/Webflow/Webflow.node.json b/packages/nodes-base/nodes/Webflow/Webflow.node.json index 9e95776d2d..e5f3c1eef3 100644 --- a/packages/nodes-base/nodes/Webflow/Webflow.node.json +++ b/packages/nodes-base/nodes/Webflow/Webflow.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/webflow" + "url": "https://docs.n8n.io/integrations/builtin/credentials/webflow/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Webflow/Webflow.node.ts b/packages/nodes-base/nodes/Webflow/Webflow.node.ts index 3f799cbf09..4239c8c810 100644 --- a/packages/nodes-base/nodes/Webflow/Webflow.node.ts +++ b/packages/nodes-base/nodes/Webflow/Webflow.node.ts @@ -1,292 +1,26 @@ -import type { - IExecuteFunctions, - IDataObject, - ILoadOptionsFunctions, - INodeExecutionData, - INodePropertyOptions, - INodeType, - INodeTypeDescription, -} from 'n8n-workflow'; +import type { INodeTypeBaseDescription, IVersionedNodeType } from 'n8n-workflow'; +import { VersionedNodeType } from 'n8n-workflow'; -import { webflowApiRequest, webflowApiRequestAllItems } from './GenericFunctions'; +import { WebflowV1 } from './V1/WebflowV1.node'; +import { WebflowV2 } from './V2/WebflowV2.node'; -import { itemFields, itemOperations } from './ItemDescription'; +export class Webflow extends VersionedNodeType { + constructor() { + const baseDescription: INodeTypeBaseDescription = { + displayName: 'Webflow', + name: 'webflow', + icon: 'file:webflow.svg', + group: ['transform'], + subtitle: '={{$parameter["operation"] + ": " + $parameter["resource"]}}', + description: 'Consume the Webflow API', + defaultVersion: 2, + }; -export class Webflow implements INodeType { - description: INodeTypeDescription = { - displayName: 'Webflow', - name: 'webflow', - icon: 'file:webflow.svg', - group: ['transform'], - version: 1, - subtitle: '={{$parameter["operation"] + ": " + $parameter["resource"]}}', - description: 'Consume the Webflow API', - defaults: { - name: 'Webflow', - }, - inputs: ['main'], - outputs: ['main'], - credentials: [ - { - name: 'webflowApi', - required: true, - displayOptions: { - show: { - authentication: ['accessToken'], - }, - }, - }, - { - name: 'webflowOAuth2Api', - required: true, - displayOptions: { - show: { - authentication: ['oAuth2'], - }, - }, - }, - ], - properties: [ - { - displayName: 'Authentication', - name: 'authentication', - type: 'options', - options: [ - { - name: 'Access Token', - value: 'accessToken', - }, - { - name: 'OAuth2', - value: 'oAuth2', - }, - ], - default: 'accessToken', - }, - { - displayName: 'Resource', - name: 'resource', - type: 'options', - noDataExpression: true, - options: [ - { - name: 'Item', - value: 'item', - }, - ], - default: 'item', - }, - ...itemOperations, - ...itemFields, - ], - }; + const nodeVersions: IVersionedNodeType['nodeVersions'] = { + 1: new WebflowV1(baseDescription), + 2: new WebflowV2(baseDescription), + }; - methods = { - loadOptions: { - async getSites(this: ILoadOptionsFunctions): Promise { - const returnData: INodePropertyOptions[] = []; - const sites = await webflowApiRequest.call(this, 'GET', '/sites'); - for (const site of sites) { - returnData.push({ - name: site.name, - value: site._id, - }); - } - return returnData; - }, - async getCollections(this: ILoadOptionsFunctions): Promise { - const returnData: INodePropertyOptions[] = []; - const siteId = this.getCurrentNodeParameter('siteId'); - const collections = await webflowApiRequest.call( - this, - 'GET', - `/sites/${siteId}/collections`, - ); - for (const collection of collections) { - returnData.push({ - name: collection.name, - value: collection._id, - }); - } - return returnData; - }, - async getFields(this: ILoadOptionsFunctions): Promise { - const returnData: INodePropertyOptions[] = []; - const collectionId = this.getCurrentNodeParameter('collectionId'); - const { fields } = await webflowApiRequest.call( - this, - 'GET', - `/collections/${collectionId}`, - ); - for (const field of fields) { - returnData.push({ - name: `${field.name} (${field.type}) ${field.required ? ' (required)' : ''}`, - value: field.slug, - }); - } - return returnData; - }, - }, - }; - - async execute(this: IExecuteFunctions): Promise { - const items = this.getInputData(); - - const resource = this.getNodeParameter('resource', 0); - const operation = this.getNodeParameter('operation', 0); - let responseData; - const returnData: INodeExecutionData[] = []; - - for (let i = 0; i < items.length; i++) { - try { - if (resource === 'item') { - // ********************************************************************* - // item - // ********************************************************************* - - // https://developers.webflow.com/#item-model - - if (operation === 'create') { - // ---------------------------------- - // item: create - // ---------------------------------- - - // https://developers.webflow.com/#create-new-collection-item - - const collectionId = this.getNodeParameter('collectionId', i) as string; - - const properties = this.getNodeParameter( - 'fieldsUi.fieldValues', - i, - [], - ) as IDataObject[]; - - const live = this.getNodeParameter('live', i) as boolean; - - const fields = {} as IDataObject; - - properties.forEach((data) => (fields[data.fieldId as string] = data.fieldValue)); - - const body: IDataObject = { - fields, - }; - - responseData = await webflowApiRequest.call( - this, - 'POST', - `/collections/${collectionId}/items`, - body, - { live }, - ); - } else if (operation === 'delete') { - // ---------------------------------- - // item: delete - // ---------------------------------- - - // https://developers.webflow.com/#remove-collection-item - - const collectionId = this.getNodeParameter('collectionId', i) as string; - const itemId = this.getNodeParameter('itemId', i) as string; - responseData = await webflowApiRequest.call( - this, - 'DELETE', - `/collections/${collectionId}/items/${itemId}`, - ); - } else if (operation === 'get') { - // ---------------------------------- - // item: get - // ---------------------------------- - - // https://developers.webflow.com/#get-single-item - - const collectionId = this.getNodeParameter('collectionId', i) as string; - const itemId = this.getNodeParameter('itemId', i) as string; - responseData = await webflowApiRequest.call( - this, - 'GET', - `/collections/${collectionId}/items/${itemId}`, - ); - responseData = responseData.items; - } else if (operation === 'getAll') { - // ---------------------------------- - // item: getAll - // ---------------------------------- - - // https://developers.webflow.com/#get-all-items-for-a-collection - - const returnAll = this.getNodeParameter('returnAll', 0); - const collectionId = this.getNodeParameter('collectionId', i) as string; - const qs: IDataObject = {}; - - if (returnAll) { - responseData = await webflowApiRequestAllItems.call( - this, - 'GET', - `/collections/${collectionId}/items`, - {}, - qs, - ); - } else { - qs.limit = this.getNodeParameter('limit', 0); - responseData = await webflowApiRequest.call( - this, - 'GET', - `/collections/${collectionId}/items`, - {}, - qs, - ); - responseData = responseData.items; - } - } else if (operation === 'update') { - // ---------------------------------- - // item: update - // ---------------------------------- - - // https://developers.webflow.com/#update-collection-item - - const collectionId = this.getNodeParameter('collectionId', i) as string; - - const itemId = this.getNodeParameter('itemId', i) as string; - - const properties = this.getNodeParameter( - 'fieldsUi.fieldValues', - i, - [], - ) as IDataObject[]; - - const live = this.getNodeParameter('live', i) as boolean; - - const fields = {} as IDataObject; - - properties.forEach((data) => (fields[data.fieldId as string] = data.fieldValue)); - - const body: IDataObject = { - fields, - }; - - responseData = await webflowApiRequest.call( - this, - 'PUT', - `/collections/${collectionId}/items/${itemId}`, - body, - { live }, - ); - } - } - const executionData = this.helpers.constructExecutionMetaData( - this.helpers.returnJsonArray(responseData as IDataObject[]), - { itemData: { item: i } }, - ); - returnData.push(...executionData); - } catch (error) { - if (this.continueOnFail(error)) { - returnData.push({ json: { error: error.message } }); - continue; - } - throw error; - } - } - - return [returnData]; + super(nodeVersions, baseDescription); } } diff --git a/packages/nodes-base/nodes/Webflow/WebflowTrigger.node.json b/packages/nodes-base/nodes/Webflow/WebflowTrigger.node.json index 5c3aaa7984..ff1bed1f05 100644 --- a/packages/nodes-base/nodes/Webflow/WebflowTrigger.node.json +++ b/packages/nodes-base/nodes/Webflow/WebflowTrigger.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/webflow" + "url": "https://docs.n8n.io/integrations/builtin/credentials/webflow/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Webflow/WebflowTrigger.node.ts b/packages/nodes-base/nodes/Webflow/WebflowTrigger.node.ts index 632bfb9534..cdd2ee3814 100644 --- a/packages/nodes-base/nodes/Webflow/WebflowTrigger.node.ts +++ b/packages/nodes-base/nodes/Webflow/WebflowTrigger.node.ts @@ -1,273 +1,24 @@ -import type { - IHookFunctions, - IWebhookFunctions, - IDataObject, - ILoadOptionsFunctions, - INodePropertyOptions, - INodeType, - INodeTypeDescription, - IWebhookResponseData, -} from 'n8n-workflow'; +import type { INodeTypeBaseDescription, IVersionedNodeType } from 'n8n-workflow'; +import { VersionedNodeType } from 'n8n-workflow'; +import { WebflowTriggerV1 } from './V1/WebflowTriggerV1.node'; +import { WebflowTriggerV2 } from './V2/WebflowTriggerV2.node'; -import { webflowApiRequest } from './GenericFunctions'; - -export class WebflowTrigger implements INodeType { - description: INodeTypeDescription = { - displayName: 'Webflow Trigger', - name: 'webflowTrigger', - icon: 'file:webflow.svg', - group: ['trigger'], - version: 1, - description: 'Handle Webflow events via webhooks', - defaults: { - name: 'Webflow Trigger', - }, - inputs: [], - outputs: ['main'], - credentials: [ - { - name: 'webflowApi', - required: true, - displayOptions: { - show: { - authentication: ['accessToken'], - }, - }, - }, - { - name: 'webflowOAuth2Api', - required: true, - displayOptions: { - show: { - authentication: ['oAuth2'], - }, - }, - }, - ], - webhooks: [ - { - name: 'default', - httpMethod: 'POST', - responseMode: 'onReceived', - path: 'webhook', - }, - ], - properties: [ - { - displayName: 'Authentication', - name: 'authentication', - type: 'options', - options: [ - { - name: 'Access Token', - value: 'accessToken', - }, - { - name: 'OAuth2', - value: 'oAuth2', - }, - ], - default: 'accessToken', - }, - { - displayName: 'Site Name or ID', - name: 'site', - type: 'options', - required: true, - default: '', - typeOptions: { - loadOptionsMethod: 'getSites', - }, - description: - 'Site that will trigger the events. Choose from the list, or specify an ID using an expression.', - }, - { - displayName: 'Event', - name: 'event', - type: 'options', - required: true, - options: [ - { - name: 'Collection Item Created', - value: 'collection_item_created', - }, - { - name: 'Collection Item Deleted', - value: 'collection_item_deleted', - }, - { - name: 'Collection Item Updated', - value: 'collection_item_changed', - }, - { - name: 'Ecomm Inventory Changed', - value: 'ecomm_inventory_changed', - }, - { - name: 'Ecomm New Order', - value: 'ecomm_new_order', - }, - { - name: 'Ecomm Order Changed', - value: 'ecomm_order_changed', - }, - { - name: 'Form Submission', - value: 'form_submission', - }, - { - name: 'Site Publish', - value: 'site_publish', - }, - ], - default: 'form_submission', - }, - // { - // displayName: 'All collections', - // name: 'allCollections', - // type: 'boolean', - // displayOptions: { - // show: { - // event: [ - // 'collection_item_created', - // 'collection_item_changed', - // 'collection_item_deleted', - // ], - // }, - // }, - // required: false, - // default: true, - // description: 'Receive events from all collections', - // }, - // { - // displayName: 'Collection', - // name: 'collection', - // type: 'options', - // required: false, - // default: '', - // typeOptions: { - // loadOptionsMethod: 'getCollections', - // loadOptionsDependsOn: [ - // 'site', - // ], - // }, - // description: 'Collection that will trigger the events', - // displayOptions: { - // show: { - // allCollections: [ - // false, - // ], - // }, - // }, - // }, - ], - }; - - methods = { - loadOptions: { - // Get all the sites to display them to user so that they can - // select them easily - async getSites(this: ILoadOptionsFunctions): Promise { - const returnData: INodePropertyOptions[] = []; - const sites = await webflowApiRequest.call(this, 'GET', '/sites'); - for (const site of sites) { - const siteName = site.name; - const siteId = site._id; - returnData.push({ - name: siteName, - value: siteId, - }); - } - return returnData; - }, - // async getCollections(this: ILoadOptionsFunctions): Promise { - // const returnData: INodePropertyOptions[] = []; - // const siteId = this.getCurrentNodeParameter('site'); - // const collections = await webflowApiRequest.call(this, 'GET', `/sites/${siteId}/collections`); - // for (const collection of collections) { - // returnData.push({ - // name: collection.name, - // value: collection._id, - // }); - // } - // return returnData; - // }, - }, - }; - - webhookMethods = { - default: { - async checkExists(this: IHookFunctions): Promise { - const webhookData = this.getWorkflowStaticData('node'); - const webhookUrl = this.getNodeWebhookUrl('default'); - const siteId = this.getNodeParameter('site') as string; - - const event = this.getNodeParameter('event') as string; - const registeredWebhooks = (await webflowApiRequest.call( - this, - 'GET', - `/sites/${siteId}/webhooks`, - )) as IDataObject[]; - - for (const webhook of registeredWebhooks) { - if (webhook.url === webhookUrl && webhook.triggerType === event) { - webhookData.webhookId = webhook._id; - return true; - } - } - - return false; - }, - - async create(this: IHookFunctions): Promise { - const webhookUrl = this.getNodeWebhookUrl('default'); - const webhookData = this.getWorkflowStaticData('node'); - const siteId = this.getNodeParameter('site') as string; - const event = this.getNodeParameter('event') as string; - const endpoint = `/sites/${siteId}/webhooks`; - const body: IDataObject = { - site_id: siteId, - triggerType: event, - url: webhookUrl, - }; - - // if (event.startsWith('collection')) { - // const allCollections = this.getNodeParameter('allCollections') as boolean; - - // if (allCollections === false) { - // body.filter = { - // 'cid': this.getNodeParameter('collection') as string, - // }; - // } - // } - - const { _id } = await webflowApiRequest.call(this, 'POST', endpoint, body); - webhookData.webhookId = _id; - return true; - }, - async delete(this: IHookFunctions): Promise { - let responseData; - const webhookData = this.getWorkflowStaticData('node'); - const siteId = this.getNodeParameter('site') as string; - const endpoint = `/sites/${siteId}/webhooks/${webhookData.webhookId}`; - try { - responseData = await webflowApiRequest.call(this, 'DELETE', endpoint); - } catch (error) { - return false; - } - if (!responseData.deleted) { - return false; - } - delete webhookData.webhookId; - return true; - }, - }, - }; - - async webhook(this: IWebhookFunctions): Promise { - const req = this.getRequestObject(); - return { - workflowData: [this.helpers.returnJsonArray(req.body as IDataObject[])], +export class WebflowTrigger extends VersionedNodeType { + constructor() { + const baseDescription: INodeTypeBaseDescription = { + displayName: 'Webflow Trigger', + name: 'webflowTrigger', + icon: 'file:webflow.svg', + group: ['trigger'], + description: 'Handle Webflow events via webhooks', + defaultVersion: 2, }; + + const nodeVersions: IVersionedNodeType['nodeVersions'] = { + 1: new WebflowTriggerV1(baseDescription), + 2: new WebflowTriggerV2(baseDescription), + }; + + super(nodeVersions, baseDescription); } } diff --git a/packages/nodes-base/nodes/Webhook/Webhook.node.ts b/packages/nodes-base/nodes/Webhook/Webhook.node.ts index 9862a9c1f4..9938f4eaa1 100644 --- a/packages/nodes-base/nodes/Webhook/Webhook.node.ts +++ b/packages/nodes-base/nodes/Webhook/Webhook.node.ts @@ -4,7 +4,6 @@ import { createWriteStream } from 'fs'; import { stat } from 'fs/promises'; import type { IWebhookFunctions, - ICredentialDataDecryptedObject, IDataObject, INodeExecutionData, INodeTypeDescription, @@ -15,12 +14,9 @@ import type { import { BINARY_ENCODING, NodeOperationError, Node } from 'n8n-workflow'; import { v4 as uuid } from 'uuid'; -import basicAuth from 'basic-auth'; import isbot from 'isbot'; import { file as tmpFile } from 'tmp-promise'; -import jwt from 'jsonwebtoken'; -import { formatPrivateKey } from '../../utils/utilities'; import { authenticationProperty, credentialsProperty, @@ -39,6 +35,7 @@ import { configuredOutputs, isIpWhitelisted, setupOutputConnection, + validateWebhookAuthentication, } from './utils'; export class Webhook extends Node { @@ -68,7 +65,7 @@ export class Webhook extends Node { activationHint: "Once you've finished building your workflow, run it without having to click this button by using the production webhook URL.", }, - // eslint-disable-next-line n8n-nodes-base/node-class-description-inputs-wrong-regular-node + inputs: [], outputs: `={{(${configuredOutputs})($parameter)}}`, credentials: credentialsProperty(this.authPropertyName), @@ -265,93 +262,7 @@ export class Webhook extends Node { } private async validateAuth(context: IWebhookFunctions) { - const authentication = context.getNodeParameter(this.authPropertyName) as string; - if (authentication === 'none') return; - - const req = context.getRequestObject(); - const headers = context.getHeaderData(); - - if (authentication === 'basicAuth') { - // Basic authorization is needed to call webhook - let expectedAuth: ICredentialDataDecryptedObject | undefined; - try { - expectedAuth = await context.getCredentials('httpBasicAuth'); - } catch {} - - if (expectedAuth === undefined || !expectedAuth.user || !expectedAuth.password) { - // Data is not defined on node so can not authenticate - throw new WebhookAuthorizationError(500, 'No authentication data defined on node!'); - } - - const providedAuth = basicAuth(req); - // Authorization data is missing - if (!providedAuth) throw new WebhookAuthorizationError(401); - - if (providedAuth.name !== expectedAuth.user || providedAuth.pass !== expectedAuth.password) { - // Provided authentication data is wrong - throw new WebhookAuthorizationError(403); - } - } else if (authentication === 'headerAuth') { - // Special header with value is needed to call webhook - let expectedAuth: ICredentialDataDecryptedObject | undefined; - try { - expectedAuth = await context.getCredentials('httpHeaderAuth'); - } catch {} - - if (expectedAuth === undefined || !expectedAuth.name || !expectedAuth.value) { - // Data is not defined on node so can not authenticate - throw new WebhookAuthorizationError(500, 'No authentication data defined on node!'); - } - const headerName = (expectedAuth.name as string).toLowerCase(); - const expectedValue = expectedAuth.value as string; - - if ( - !headers.hasOwnProperty(headerName) || - (headers as IDataObject)[headerName] !== expectedValue - ) { - // Provided authentication data is wrong - throw new WebhookAuthorizationError(403); - } - } else if (authentication === 'jwtAuth') { - let expectedAuth; - - try { - expectedAuth = (await context.getCredentials('jwtAuth')) as { - keyType: 'passphrase' | 'pemKey'; - publicKey: string; - secret: string; - algorithm: jwt.Algorithm; - }; - } catch {} - - if (expectedAuth === undefined) { - // Data is not defined on node so can not authenticate - throw new WebhookAuthorizationError(500, 'No authentication data defined on node!'); - } - - const authHeader = req.headers.authorization; - const token = authHeader?.split(' ')[1]; - - if (!token) { - throw new WebhookAuthorizationError(401, 'No token provided'); - } - - let secretOrPublicKey; - - if (expectedAuth.keyType === 'passphrase') { - secretOrPublicKey = expectedAuth.secret; - } else { - secretOrPublicKey = formatPrivateKey(expectedAuth.publicKey, true); - } - - try { - return jwt.verify(token, secretOrPublicKey, { - algorithms: [expectedAuth.algorithm], - }) as IDataObject; - } catch (error) { - throw new WebhookAuthorizationError(403, error.message); - } - } + return await validateWebhookAuthentication(context, this.authPropertyName); } private async handleFormData( @@ -381,10 +292,10 @@ export class Webhook extends Node { const processFiles: MultiPartFormData.File[] = []; let multiFile = false; if (Array.isArray(files[key])) { - processFiles.push(...(files[key] as MultiPartFormData.File[])); + processFiles.push(...files[key]); multiFile = true; } else { - processFiles.push(files[key] as MultiPartFormData.File); + processFiles.push(files[key]); } let fileCount = 0; diff --git a/packages/nodes-base/nodes/Webhook/description.ts b/packages/nodes-base/nodes/Webhook/description.ts index 7039ae8490..c0cd992c8e 100644 --- a/packages/nodes-base/nodes/Webhook/description.ts +++ b/packages/nodes-base/nodes/Webhook/description.ts @@ -205,7 +205,7 @@ export const optionsProperty: INodeProperties = { displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, options: [ { @@ -237,7 +237,7 @@ export const optionsProperty: INodeProperties = { 'If the data gets received via "Form-Data Multipart" it will be the prefix and a number starting with 0 will be attached to it', }, { - displayName: 'Binary Property', + displayName: 'Field Name for Binary Data', name: 'binaryPropertyName', type: 'string', default: 'data', @@ -247,7 +247,7 @@ export const optionsProperty: INodeProperties = { }, }, description: - 'Name of the binary property to write the data of the received file to, only relevant if binary data is received', + 'The name of the output field to put any binary file data in. Only relevant if binary data is received.', }, { displayName: 'Ignore Bots', diff --git a/packages/nodes-base/nodes/Webhook/error.ts b/packages/nodes-base/nodes/Webhook/error.ts index 35001d67e4..572910be7c 100644 --- a/packages/nodes-base/nodes/Webhook/error.ts +++ b/packages/nodes-base/nodes/Webhook/error.ts @@ -1,4 +1,6 @@ -export class WebhookAuthorizationError extends Error { +import { ApplicationError } from 'n8n-workflow'; + +export class WebhookAuthorizationError extends ApplicationError { constructor( readonly responseCode: number, message?: string, diff --git a/packages/nodes-base/nodes/Webhook/test/utils.test.ts b/packages/nodes-base/nodes/Webhook/test/utils.test.ts new file mode 100644 index 0000000000..91a244aa41 --- /dev/null +++ b/packages/nodes-base/nodes/Webhook/test/utils.test.ts @@ -0,0 +1,473 @@ +import jwt from 'jsonwebtoken'; +import { ApplicationError, type IWebhookFunctions } from 'n8n-workflow'; +import type { WebhookParameters } from '../utils'; +import { + checkResponseModeConfiguration, + configuredOutputs, + getResponseCode, + getResponseData, + isIpWhitelisted, + setupOutputConnection, + validateWebhookAuthentication, +} from '../utils'; + +jest.mock('jsonwebtoken', () => ({ + verify: jest.fn(), +})); + +describe('Webhook Utils', () => { + describe('getResponseCode', () => { + it('should return the response code if it exists', () => { + const parameters: WebhookParameters = { + responseCode: 404, + httpMethod: '', + responseMode: '', + responseData: '', + }; + const responseCode = getResponseCode(parameters); + expect(responseCode).toBe(404); + }); + + it('should return the custom response code if it exists', () => { + const parameters: WebhookParameters = { + options: { + responseCode: { + values: { + responseCode: 200, + customCode: 201, + }, + }, + }, + httpMethod: '', + responseMode: '', + responseData: '', + }; + const responseCode = getResponseCode(parameters); + expect(responseCode).toBe(201); + }); + + it('should return the default response code if no response code is provided', () => { + const parameters: WebhookParameters = { + httpMethod: '', + responseMode: '', + responseData: '', + }; + const responseCode = getResponseCode(parameters); + expect(responseCode).toBe(200); + }); + }); + + describe('getResponseData', () => { + it('should return the response data if it exists', () => { + const parameters: WebhookParameters = { + responseData: 'Hello World', + httpMethod: '', + responseMode: '', + }; + const responseData = getResponseData(parameters); + expect(responseData).toBe('Hello World'); + }); + + it('should return the options response data if response mode is "onReceived"', () => { + const parameters: WebhookParameters = { + responseMode: 'onReceived', + options: { + responseData: 'Hello World', + }, + httpMethod: '', + responseData: '', + }; + const responseData = getResponseData(parameters); + expect(responseData).toBe('Hello World'); + }); + + it('should return "noData" if options noResponseBody is true', () => { + const parameters: WebhookParameters = { + responseMode: 'onReceived', + options: { + noResponseBody: true, + }, + httpMethod: '', + responseData: '', + }; + const responseData = getResponseData(parameters); + expect(responseData).toBe('noData'); + }); + + it('should return undefined if no response data is provided', () => { + const parameters: WebhookParameters = { + responseMode: 'onReceived', + httpMethod: '', + responseData: '', + }; + const responseData = getResponseData(parameters); + expect(responseData).toBeUndefined(); + }); + }); + + describe('configuredOutputs', () => { + it('should return an array with a single output if httpMethod is not an array', () => { + const parameters: WebhookParameters = { + httpMethod: 'GET', + responseMode: '', + responseData: '', + }; + const outputs = configuredOutputs(parameters); + expect(outputs).toEqual([ + { + type: 'main', + displayName: 'GET', + }, + ]); + }); + + it('should return an array of outputs if httpMethod is an array', () => { + const parameters: WebhookParameters = { + httpMethod: ['GET', 'POST'], + responseMode: '', + responseData: '', + }; + const outputs = configuredOutputs(parameters); + expect(outputs).toEqual([ + { + type: 'main', + displayName: 'GET', + }, + { + type: 'main', + displayName: 'POST', + }, + ]); + }); + }); + + describe('setupOutputConnection', () => { + it('should return a function that sets the webhookUrl and executionMode in the output data', () => { + const ctx: Partial = { + getNodeParameter: jest.fn().mockReturnValue('GET'), + getNodeWebhookUrl: jest.fn().mockReturnValue('https://example.com/webhook/'), + getMode: jest.fn().mockReturnValue('manual'), + }; + const method = 'GET'; + const additionalData = { + jwtPayload: { + userId: '123', + }, + }; + const outputData = { + json: {}, + }; + const setupOutput = setupOutputConnection(ctx as IWebhookFunctions, method, additionalData); + const result = setupOutput(outputData); + expect(result).toEqual([ + [ + { + json: { + webhookUrl: 'https://example.com/webhook-test/', + executionMode: 'test', + jwtPayload: { userId: '123' }, + }, + }, + ], + ]); + }); + + it('should return a function that sets the webhookUrl and executionMode in the output data for multiple methods', () => { + const ctx: Partial = { + getNodeParameter: jest.fn().mockReturnValue(['GET', 'POST']), + getNodeWebhookUrl: jest.fn().mockReturnValue('https://example.com/webhook/'), + getMode: jest.fn().mockReturnValue('manual'), + }; + const method = 'POST'; + const additionalData = { + jwtPayload: { + userId: '123', + }, + }; + const outputData = { + json: {}, + }; + const setupOutput = setupOutputConnection(ctx as IWebhookFunctions, method, additionalData); + const result = setupOutput(outputData); + expect(result).toEqual([ + [], + [ + { + json: { + webhookUrl: 'https://example.com/webhook-test/', + executionMode: 'test', + jwtPayload: { userId: '123' }, + }, + }, + ], + ]); + }); + }); + + describe('isIpWhitelisted', () => { + it('should return true if whitelist is undefined', () => { + expect(isIpWhitelisted(undefined, ['192.168.1.1'], '192.168.1.1')).toBe(true); + }); + + it('should return true if whitelist is an empty string', () => { + expect(isIpWhitelisted('', ['192.168.1.1'], '192.168.1.1')).toBe(true); + }); + + it('should return true if ip is in the whitelist', () => { + expect(isIpWhitelisted('192.168.1.1', ['192.168.1.2'], '192.168.1.1')).toBe(true); + }); + + it('should return true if any ip in ips is in the whitelist', () => { + expect(isIpWhitelisted('192.168.1.1', ['192.168.1.1', '192.168.1.2'])).toBe(true); + }); + + it('should return false if ip and ips are not in the whitelist', () => { + expect(isIpWhitelisted('192.168.1.3', ['192.168.1.1', '192.168.1.2'], '192.168.1.4')).toBe( + false, + ); + }); + + it('should return true if any ip in ips matches any address in the whitelist array', () => { + expect(isIpWhitelisted(['192.168.1.1', '192.168.1.2'], ['192.168.1.2', '192.168.1.3'])).toBe( + true, + ); + }); + + it('should return true if ip matches any address in the whitelist array', () => { + expect(isIpWhitelisted(['192.168.1.1', '192.168.1.2'], ['192.168.1.3'], '192.168.1.2')).toBe( + true, + ); + }); + + it('should return false if ip and ips do not match any address in the whitelist array', () => { + expect( + isIpWhitelisted( + ['192.168.1.4', '192.168.1.5'], + ['192.168.1.1', '192.168.1.2'], + '192.168.1.3', + ), + ).toBe(false); + }); + + it('should handle comma-separated whitelist string', () => { + expect(isIpWhitelisted('192.168.1.1, 192.168.1.2', ['192.168.1.3'], '192.168.1.2')).toBe( + true, + ); + }); + + it('should trim whitespace in comma-separated whitelist string', () => { + expect(isIpWhitelisted(' 192.168.1.1 , 192.168.1.2 ', ['192.168.1.3'], '192.168.1.2')).toBe( + true, + ); + }); + }); + + describe('checkResponseModeConfiguration', () => { + it('should throw an error if response mode is "responseNode" but no Respond to Webhook node is found', () => { + const context: Partial = { + getNodeParameter: jest.fn().mockReturnValue('responseNode'), + getChildNodes: jest.fn().mockReturnValue([]), + getNode: jest.fn().mockReturnValue({ name: 'Webhook' }), + }; + expect(() => { + checkResponseModeConfiguration(context as IWebhookFunctions); + }).toThrowError('No Respond to Webhook node found in the workflow'); + }); + + it('should throw an error if response mode is not "responseNode" but a Respond to Webhook node is found', () => { + const context: Partial = { + getNodeParameter: jest.fn().mockReturnValue('onReceived'), + getChildNodes: jest.fn().mockReturnValue([{ type: 'n8n-nodes-base.respondToWebhook' }]), + getNode: jest.fn().mockReturnValue({ name: 'Webhook' }), + }; + expect(() => { + checkResponseModeConfiguration(context as IWebhookFunctions); + }).toThrowError('Webhook node not correctly configured'); + }); + }); + + describe('validateWebhookAuthentication', () => { + it('should return early if authentication is "none"', async () => { + const ctx: Partial = { + getNodeParameter: jest.fn().mockReturnValue('none'), + }; + const authPropertyName = 'authentication'; + const result = await validateWebhookAuthentication( + ctx as IWebhookFunctions, + authPropertyName, + ); + expect(result).toBeUndefined(); + }); + + it('should throw an error if basicAuth is enabled but no authentication data is defined on the node', async () => { + const headers = { + authorization: 'Basic some-token', + }; + const ctx: Partial = { + getNodeParameter: jest.fn().mockReturnValue('basicAuth'), + getCredentials: jest.fn().mockRejectedValue(new Error()), + getRequestObject: jest.fn().mockReturnValue({ + headers, + }), + getHeaderData: jest.fn().mockReturnValue(headers), + }; + const authPropertyName = 'authentication'; + await expect( + validateWebhookAuthentication(ctx as IWebhookFunctions, authPropertyName), + ).rejects.toThrowError('No authentication data defined on node!'); + }); + + it('should throw an error if basicAuth is enabled but the provided authentication data is wrong', async () => { + const headers = { + authorization: 'Basic some-token', + }; + const ctx: Partial = { + getNodeParameter: jest.fn().mockReturnValue('basicAuth'), + getCredentials: jest.fn().mockResolvedValue({ + user: 'admin', + password: 'password', + }), + getRequestObject: jest.fn().mockReturnValue({ + headers, + }), + getHeaderData: jest.fn().mockReturnValue(headers), + }; + const authPropertyName = 'authentication'; + await expect( + validateWebhookAuthentication(ctx as IWebhookFunctions, authPropertyName), + ).rejects.toThrowError('Authorization is required!'); + }); + + it('should throw an error if headerAuth is enabled but no authentication data is defined on the node', async () => { + const ctx: Partial = { + getNodeParameter: jest.fn().mockReturnValue('headerAuth'), + getCredentials: jest + .fn() + .mockRejectedValue(new Error('No authentication data defined on node!')), + getRequestObject: jest.fn().mockReturnValue({ + headers: {}, + }), + getHeaderData: jest.fn().mockReturnValue({}), + }; + const authPropertyName = 'authentication'; + await expect( + validateWebhookAuthentication(ctx as IWebhookFunctions, authPropertyName), + ).rejects.toThrowError('No authentication data defined on node!'); + }); + + it('should throw an error if headerAuth is enabled but the provided authentication data is wrong', async () => { + const headers = { + authorization: 'Bearer invalid-token', + }; + const ctx: Partial = { + getNodeParameter: jest.fn().mockReturnValue('headerAuth'), + getCredentials: jest.fn().mockResolvedValue({ + name: 'Authorization', + value: 'Bearer token', + }), + getRequestObject: jest.fn().mockReturnValue({ + headers, + }), + getHeaderData: jest.fn().mockReturnValue(headers), + }; + const authPropertyName = 'authentication'; + await expect( + validateWebhookAuthentication(ctx as IWebhookFunctions, authPropertyName), + ).rejects.toThrowError('Authorization data is wrong!'); + }); + + it('should throw an error if jwtAuth is enabled but no authentication data is defined on the node', async () => { + const ctx: Partial = { + getNodeParameter: jest.fn().mockReturnValue('jwtAuth'), + getCredentials: jest + .fn() + .mockRejectedValue(new Error('No authentication data defined on node!')), + getRequestObject: jest.fn().mockReturnValue({}), + getHeaderData: jest.fn().mockReturnValue({}), + }; + const authPropertyName = 'authentication'; + await expect( + validateWebhookAuthentication(ctx as IWebhookFunctions, authPropertyName), + ).rejects.toThrowError('No authentication data defined on node!'); + }); + + it('should throw an error if jwtAuth is enabled but no token is provided', async () => { + const ctx: Partial = { + getNodeParameter: jest.fn().mockReturnValue('jwtAuth'), + getCredentials: jest.fn().mockResolvedValue({ + keyType: 'passphrase', + publicKey: '', + secret: 'secret', + algorithm: 'HS256', + }), + getRequestObject: jest.fn().mockReturnValue({ + headers: {}, + }), + getHeaderData: jest.fn().mockReturnValue({}), + }; + const authPropertyName = 'authentication'; + await expect( + validateWebhookAuthentication(ctx as IWebhookFunctions, authPropertyName), + ).rejects.toThrowError('No token provided'); + }); + + it('should throw an error if jwtAuth is enabled but the provided token is invalid', async () => { + const headers = { + authorization: 'Bearer invalid-token', + }; + const ctx: Partial = { + getNodeParameter: jest.fn().mockReturnValue('jwtAuth'), + getCredentials: jest.fn().mockResolvedValue({ + keyType: 'passphrase', + publicKey: '', + secret: 'secret', + algorithm: 'HS256', + }), + getRequestObject: jest.fn().mockReturnValue({ + headers, + }), + getHeaderData: jest.fn().mockReturnValue(headers), + }; + (jwt.verify as jest.Mock).mockImplementationOnce(() => { + throw new ApplicationError('jwt malformed'); + }); + const authPropertyName = 'authentication'; + await expect( + validateWebhookAuthentication(ctx as IWebhookFunctions, authPropertyName), + ).rejects.toThrowError('jwt malformed'); + }); + + it('should return the decoded JWT payload if jwtAuth is enabled and the token is valid', async () => { + const decodedPayload = { + sub: '1234567890', + name: 'John Doe', + iat: 1516239022, + }; + (jwt.verify as jest.Mock).mockReturnValue(decodedPayload); + const headers = { + authorization: + 'Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c', + }; + const ctx: Partial = { + getNodeParameter: jest.fn().mockReturnValue('jwtAuth'), + getCredentials: jest.fn().mockResolvedValue({ + keyType: 'passphrase', + publicKey: '', + secret: 'secret', + algorithm: 'HS256', + }), + getRequestObject: jest.fn().mockReturnValue({ + headers, + }), + getHeaderData: jest.fn().mockReturnValue(headers), + }; + const authPropertyName = 'authentication'; + + const result = await validateWebhookAuthentication( + ctx as IWebhookFunctions, + authPropertyName, + ); + expect(result).toEqual(decodedPayload); + }); + }); +}); diff --git a/packages/nodes-base/nodes/Webhook/utils.ts b/packages/nodes-base/nodes/Webhook/utils.ts index 33fd36331e..3f6b78e552 100644 --- a/packages/nodes-base/nodes/Webhook/utils.ts +++ b/packages/nodes-base/nodes/Webhook/utils.ts @@ -1,8 +1,17 @@ import { NodeConnectionType, NodeOperationError } from 'n8n-workflow'; -import type { IWebhookFunctions, INodeExecutionData, IDataObject } from 'n8n-workflow'; +import type { + IWebhookFunctions, + INodeExecutionData, + IDataObject, + ICredentialDataDecryptedObject, +} from 'n8n-workflow'; +import basicAuth from 'basic-auth'; +import jwt from 'jsonwebtoken'; +import { formatPrivateKey } from '../../utils/utilities'; +import { WebhookAuthorizationError } from './error'; -type WebhookParameters = { - httpMethod: string; +export type WebhookParameters = { + httpMethod: string | string[]; responseMode: string; responseData: string; responseCode?: number; //typeVersion <= 1.1 @@ -167,3 +176,96 @@ export const checkResponseModeConfiguration = (context: IWebhookFunctions) => { ); } }; + +export async function validateWebhookAuthentication( + ctx: IWebhookFunctions, + authPropertyName: string, +) { + const authentication = ctx.getNodeParameter(authPropertyName) as string; + if (authentication === 'none') return; + + const req = ctx.getRequestObject(); + const headers = ctx.getHeaderData(); + + if (authentication === 'basicAuth') { + // Basic authorization is needed to call webhook + let expectedAuth: ICredentialDataDecryptedObject | undefined; + try { + expectedAuth = await ctx.getCredentials('httpBasicAuth'); + } catch {} + + if (expectedAuth === undefined || !expectedAuth.user || !expectedAuth.password) { + // Data is not defined on node so can not authenticate + throw new WebhookAuthorizationError(500, 'No authentication data defined on node!'); + } + + const providedAuth = basicAuth(req); + // Authorization data is missing + if (!providedAuth) throw new WebhookAuthorizationError(401); + + if (providedAuth.name !== expectedAuth.user || providedAuth.pass !== expectedAuth.password) { + // Provided authentication data is wrong + throw new WebhookAuthorizationError(403); + } + } else if (authentication === 'headerAuth') { + // Special header with value is needed to call webhook + let expectedAuth: ICredentialDataDecryptedObject | undefined; + try { + expectedAuth = await ctx.getCredentials('httpHeaderAuth'); + } catch {} + + if (expectedAuth === undefined || !expectedAuth.name || !expectedAuth.value) { + // Data is not defined on node so can not authenticate + throw new WebhookAuthorizationError(500, 'No authentication data defined on node!'); + } + const headerName = (expectedAuth.name as string).toLowerCase(); + const expectedValue = expectedAuth.value as string; + + if ( + !headers.hasOwnProperty(headerName) || + (headers as IDataObject)[headerName] !== expectedValue + ) { + // Provided authentication data is wrong + throw new WebhookAuthorizationError(403); + } + } else if (authentication === 'jwtAuth') { + let expectedAuth; + + try { + expectedAuth = await ctx.getCredentials<{ + keyType: 'passphrase' | 'pemKey'; + publicKey: string; + secret: string; + algorithm: jwt.Algorithm; + }>('jwtAuth'); + } catch {} + + if (expectedAuth === undefined) { + // Data is not defined on node so can not authenticate + throw new WebhookAuthorizationError(500, 'No authentication data defined on node!'); + } + + const authHeader = req.headers.authorization; + const token = authHeader?.split(' ')[1]; + + if (!token) { + throw new WebhookAuthorizationError(401, 'No token provided'); + } + + let secretOrPublicKey; + + if (expectedAuth.keyType === 'passphrase') { + secretOrPublicKey = expectedAuth.secret; + } else { + secretOrPublicKey = formatPrivateKey(expectedAuth.publicKey, true); + } + + try { + return jwt.verify(token, secretOrPublicKey, { + algorithms: [expectedAuth.algorithm], + }) as IDataObject; + } catch (error) { + throw new WebhookAuthorizationError(403, error.message); + } + } +} diff --git a/packages/nodes-base/nodes/Wekan/BoardDescription.ts b/packages/nodes-base/nodes/Wekan/BoardDescription.ts index 4fa7ed277e..9842868806 100644 --- a/packages/nodes-base/nodes/Wekan/BoardDescription.ts +++ b/packages/nodes-base/nodes/Wekan/BoardDescription.ts @@ -79,7 +79,7 @@ export const boardFields: INodeProperties[] = [ }, }, description: - 'The user ID in Wekan. Choose from the list, or specify an ID using an expression.', + 'The user ID in Wekan. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Additional Fields', @@ -237,7 +237,7 @@ export const boardFields: INodeProperties[] = [ }, }, description: - 'The ID of the user that boards are attached. Choose from the list, or specify an ID using an expression.', + 'The ID of the user that boards are attached. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Return All', diff --git a/packages/nodes-base/nodes/Wekan/CardCommentDescription.ts b/packages/nodes-base/nodes/Wekan/CardCommentDescription.ts index 6cf188a0aa..a56f65df09 100644 --- a/packages/nodes-base/nodes/Wekan/CardCommentDescription.ts +++ b/packages/nodes-base/nodes/Wekan/CardCommentDescription.ts @@ -61,7 +61,7 @@ export const cardCommentFields: INodeProperties[] = [ }, }, description: - 'The ID of the board that card belongs to. Choose from the list, or specify an ID using an expression.', + 'The ID of the board that card belongs to. Choose from the list, or specify an ID using an expression.', }, { displayName: 'List Name or ID', @@ -80,7 +80,7 @@ export const cardCommentFields: INodeProperties[] = [ }, }, description: - 'The ID of the list that card belongs to. Choose from the list, or specify an ID using an expression.', + 'The ID of the list that card belongs to. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Card Name or ID', @@ -99,7 +99,7 @@ export const cardCommentFields: INodeProperties[] = [ }, }, description: - 'The ID of the card. Choose from the list, or specify an ID using an expression.', + 'The ID of the card. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Author Name or ID', @@ -117,7 +117,7 @@ export const cardCommentFields: INodeProperties[] = [ }, }, description: - 'The user who posted the comment. Choose from the list, or specify an ID using an expression.', + 'The user who posted the comment. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Comment', @@ -153,7 +153,7 @@ export const cardCommentFields: INodeProperties[] = [ }, }, description: - 'The ID of the board that card belongs to. Choose from the list, or specify an ID using an expression.', + 'The ID of the board that card belongs to. Choose from the list, or specify an ID using an expression.', }, { displayName: 'List Name or ID', @@ -172,7 +172,7 @@ export const cardCommentFields: INodeProperties[] = [ }, }, description: - 'The ID of the list that card belongs to. Choose from the list, or specify an ID using an expression.', + 'The ID of the list that card belongs to. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Card Name or ID', @@ -191,7 +191,7 @@ export const cardCommentFields: INodeProperties[] = [ }, }, description: - 'The ID of the card. Choose from the list, or specify an ID using an expression.', + 'The ID of the card. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Comment Name or ID', @@ -210,7 +210,7 @@ export const cardCommentFields: INodeProperties[] = [ }, }, description: - 'The ID of the comment to delete. Choose from the list, or specify an ID using an expression.', + 'The ID of the comment to delete. Choose from the list, or specify an ID using an expression.', }, // ---------------------------------- @@ -247,7 +247,7 @@ export const cardCommentFields: INodeProperties[] = [ }, }, description: - 'The ID of the list that card belongs to. Choose from the list, or specify an ID using an expression.', + 'The ID of the list that card belongs to. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Card Name or ID', @@ -266,7 +266,7 @@ export const cardCommentFields: INodeProperties[] = [ }, }, description: - 'The ID of the card. Choose from the list, or specify an ID using an expression.', + 'The ID of the card. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Comment ID', @@ -302,7 +302,7 @@ export const cardCommentFields: INodeProperties[] = [ }, }, description: - 'The ID of the board that card belongs to. Choose from the list, or specify an ID using an expression.', + 'The ID of the board that card belongs to. Choose from the list, or specify an ID using an expression.', }, { displayName: 'List Name or ID', @@ -321,7 +321,7 @@ export const cardCommentFields: INodeProperties[] = [ }, }, description: - 'The ID of the list that card belongs to. Choose from the list, or specify an ID using an expression.', + 'The ID of the list that card belongs to. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Card Name or ID', @@ -340,7 +340,7 @@ export const cardCommentFields: INodeProperties[] = [ }, }, description: - 'The ID of the card. Choose from the list, or specify an ID using an expression.', + 'The ID of the card. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Return All', diff --git a/packages/nodes-base/nodes/Wekan/CardDescription.ts b/packages/nodes-base/nodes/Wekan/CardDescription.ts index 54d607f253..6eb599f8db 100644 --- a/packages/nodes-base/nodes/Wekan/CardDescription.ts +++ b/packages/nodes-base/nodes/Wekan/CardDescription.ts @@ -68,9 +68,9 @@ export const cardFields: INodeProperties[] = [ operation: ['create'], resource: ['card'], }, - }, + }, // Choose from the list, or specify an ID using an expression description: - 'The ID of the board that list belongs to. Choose from the list, or specify an ID using an expression.', + 'The ID of the board that list belongs to. Choose from the list, or specify an ID using an expression.', }, { displayName: 'List Name or ID', @@ -89,7 +89,7 @@ export const cardFields: INodeProperties[] = [ }, }, description: - 'The ID of the list to create card in. Choose from the list, or specify an ID using an expression.', + 'The ID of the list to create card in. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Title', @@ -123,14 +123,14 @@ export const cardFields: INodeProperties[] = [ }, }, description: - 'The swimlane ID of the new card. Choose from the list, or specify an ID using an expression.', + 'The swimlane ID of the new card. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Author Name or ID', name: 'authorId', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getUsers', }, @@ -165,7 +165,7 @@ export const cardFields: INodeProperties[] = [ }, default: [], description: - 'The new list of assignee IDs attached to the card. Choose from the list, or specify IDs using an expression.', + 'The new list of assignee IDs attached to the card. Choose from the list, or specify IDs using an expression.', }, { displayName: 'Description', @@ -183,7 +183,7 @@ export const cardFields: INodeProperties[] = [ }, default: [], description: - 'The new list of member IDs attached to the card. Choose from the list, or specify IDs using an expression.', + 'The new list of member IDs attached to the card. Choose from the list, or specify IDs using an expression.', }, ], }, @@ -207,7 +207,7 @@ export const cardFields: INodeProperties[] = [ }, }, description: - 'The ID of the board that list belongs to. Choose from the list, or specify an ID using an expression.', + 'The ID of the board that list belongs to. Choose from the list, or specify an ID using an expression.', }, { displayName: 'List Name or ID', @@ -226,7 +226,7 @@ export const cardFields: INodeProperties[] = [ }, }, description: - 'The ID of the list that card belongs to. Choose from the list, or specify an ID using an expression.', + 'The ID of the list that card belongs to. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Card Name or ID', @@ -245,7 +245,7 @@ export const cardFields: INodeProperties[] = [ }, }, description: - 'The ID of the card to delete. Choose from the list, or specify an ID using an expression.', + 'The ID of the card to delete. Choose from the list, or specify an ID using an expression.', }, // ---------------------------------- @@ -267,7 +267,7 @@ export const cardFields: INodeProperties[] = [ }, }, description: - 'The ID of the board that list belongs to. Choose from the list, or specify an ID using an expression.', + 'The ID of the board that list belongs to. Choose from the list, or specify an ID using an expression.', }, { displayName: 'List Name or ID', @@ -286,7 +286,7 @@ export const cardFields: INodeProperties[] = [ }, }, description: - 'The ID of the list that card belongs to. Choose from the list, or specify an ID using an expression.', + 'The ID of the list that card belongs to. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Card ID', @@ -322,7 +322,7 @@ export const cardFields: INodeProperties[] = [ }, }, description: - 'The ID of the board that list belongs to. Choose from the list, or specify an ID using an expression.', + 'The ID of the board that list belongs to. Choose from the list, or specify an ID using an expression.', }, { displayName: 'From Object', @@ -365,7 +365,7 @@ export const cardFields: INodeProperties[] = [ }, }, description: - 'The ID of the list that card belongs to. Choose from the list, or specify an ID using an expression.', + 'The ID of the list that card belongs to. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Swimlane Name or ID', @@ -384,7 +384,7 @@ export const cardFields: INodeProperties[] = [ }, }, description: - 'The ID of the swimlane that card belongs to. Choose from the list, or specify an ID using an expression.', + 'The ID of the swimlane that card belongs to. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Return All', @@ -437,7 +437,7 @@ export const cardFields: INodeProperties[] = [ }, }, description: - 'The ID of the board that list belongs to. Choose from the list, or specify an ID using an expression.', + 'The ID of the board that list belongs to. Choose from the list, or specify an ID using an expression.', }, { displayName: 'List Name or ID', @@ -456,7 +456,7 @@ export const cardFields: INodeProperties[] = [ }, }, description: - 'The ID of the list that card belongs to. Choose from the list, or specify an ID using an expression.', + 'The ID of the list that card belongs to. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Card Name or ID', @@ -475,7 +475,7 @@ export const cardFields: INodeProperties[] = [ }, }, description: - 'The ID of the card to update. Choose from the list, or specify an ID using an expression.', + 'The ID of the card to update. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Update Fields', @@ -499,7 +499,7 @@ export const cardFields: INodeProperties[] = [ }, default: '', description: - 'Update the owner of the card. Choose from the list, or specify an ID using an expression.', + 'Update the owner of the card. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Assignee Names or IDs', @@ -510,7 +510,7 @@ export const cardFields: INodeProperties[] = [ }, default: [], description: - 'The new list of assignee IDs attached to the card. Choose from the list, or specify IDs using an expression.', + 'The new list of assignee IDs attached to the card. Choose from the list, or specify IDs using an expression.', }, { displayName: 'Color', @@ -659,7 +659,7 @@ export const cardFields: INodeProperties[] = [ }, default: '', description: - 'The new list ID of the card (move operation). Choose from the list, or specify an ID using an expression.', + 'The new list ID of the card (move operation). Choose from the list, or specify an ID using an expression.', }, { displayName: 'Member Names or IDs', @@ -670,7 +670,7 @@ export const cardFields: INodeProperties[] = [ }, default: [], description: - 'The new list of member IDs attached to the card. Choose from the list, or specify IDs using an expression.', + 'The new list of member IDs attached to the card. Choose from the list, or specify IDs using an expression.', }, { displayName: 'Over Time', @@ -690,7 +690,7 @@ export const cardFields: INodeProperties[] = [ }, default: '', description: - 'The parent of the card. Choose from the list, or specify an ID using an expression.', + 'The parent of the card. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Received At', @@ -733,7 +733,7 @@ export const cardFields: INodeProperties[] = [ }, default: '', description: - 'The new swimlane ID of the card. Choose from the list, or specify an ID using an expression.', + 'The new swimlane ID of the card. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Title', diff --git a/packages/nodes-base/nodes/Wekan/ChecklistDescription.ts b/packages/nodes-base/nodes/Wekan/ChecklistDescription.ts index b2db9e3062..86af5358ae 100644 --- a/packages/nodes-base/nodes/Wekan/ChecklistDescription.ts +++ b/packages/nodes-base/nodes/Wekan/ChecklistDescription.ts @@ -64,7 +64,7 @@ export const checklistFields: INodeProperties[] = [ }, }, description: - 'The ID of the board where the card is in. Choose from the list, or specify an ID using an expression.', + 'The ID of the board where the card is in. Choose from the list, or specify an ID using an expression.', }, { displayName: 'List Name or ID', @@ -83,7 +83,7 @@ export const checklistFields: INodeProperties[] = [ }, }, description: - 'The ID of the list that card belongs to. Choose from the list, or specify an ID using an expression.', + 'The ID of the list that card belongs to. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Card Name or ID', @@ -102,7 +102,7 @@ export const checklistFields: INodeProperties[] = [ }, }, description: - 'The ID of the card to add checklist to. Choose from the list, or specify an ID using an expression.', + 'The ID of the card to add checklist to. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Title', @@ -155,7 +155,7 @@ export const checklistFields: INodeProperties[] = [ }, }, description: - 'The ID of the board that card belongs to. Choose from the list, or specify an ID using an expression.', + 'The ID of the board that card belongs to. Choose from the list, or specify an ID using an expression.', }, { displayName: 'List Name or ID', @@ -174,7 +174,7 @@ export const checklistFields: INodeProperties[] = [ }, }, description: - 'The ID of the list that card belongs to. Choose from the list, or specify an ID using an expression.', + 'The ID of the list that card belongs to. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Card Name or ID', @@ -193,7 +193,7 @@ export const checklistFields: INodeProperties[] = [ }, }, description: - 'The ID of the card that checklist belongs to. Choose from the list, or specify an ID using an expression.', + 'The ID of the card that checklist belongs to. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Checklist Name or ID', @@ -212,7 +212,7 @@ export const checklistFields: INodeProperties[] = [ }, }, description: - 'The ID of the checklist to delete. Choose from the list, or specify an ID using an expression.', + 'The ID of the checklist to delete. Choose from the list, or specify an ID using an expression.', }, // ---------------------------------- @@ -234,7 +234,7 @@ export const checklistFields: INodeProperties[] = [ }, }, description: - 'The ID of the board that card belongs to. Choose from the list, or specify an ID using an expression.', + 'The ID of the board that card belongs to. Choose from the list, or specify an ID using an expression.', }, { displayName: 'List Name or ID', @@ -253,7 +253,7 @@ export const checklistFields: INodeProperties[] = [ }, }, description: - 'The ID of the list that card belongs to. Choose from the list, or specify an ID using an expression.', + 'The ID of the list that card belongs to. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Card Name or ID', @@ -272,7 +272,7 @@ export const checklistFields: INodeProperties[] = [ }, }, description: - 'The ID of the card that checklist belongs to. Choose from the list, or specify an ID using an expression.', + 'The ID of the card that checklist belongs to. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Checklist Name or ID', @@ -291,7 +291,7 @@ export const checklistFields: INodeProperties[] = [ }, }, description: - 'The ID of the checklist to get. Choose from the list, or specify an ID using an expression.', + 'The ID of the checklist to get. Choose from the list, or specify an ID using an expression.', }, // ---------------------------------- @@ -313,7 +313,7 @@ export const checklistFields: INodeProperties[] = [ }, }, description: - 'The ID of the board that list belongs to. Choose from the list, or specify an ID using an expression.', + 'The ID of the board that list belongs to. Choose from the list, or specify an ID using an expression.', }, { displayName: 'List Name or ID', @@ -332,7 +332,7 @@ export const checklistFields: INodeProperties[] = [ }, }, description: - 'The ID of the list that card belongs to. Choose from the list, or specify an ID using an expression.', + 'The ID of the list that card belongs to. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Card Name or ID', @@ -351,7 +351,7 @@ export const checklistFields: INodeProperties[] = [ }, }, description: - 'The ID of the card to get checklists. Choose from the list, or specify an ID using an expression.', + 'The ID of the card to get checklists. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Return All', diff --git a/packages/nodes-base/nodes/Wekan/ChecklistItemDescription.ts b/packages/nodes-base/nodes/Wekan/ChecklistItemDescription.ts index abec489325..4503564917 100644 --- a/packages/nodes-base/nodes/Wekan/ChecklistItemDescription.ts +++ b/packages/nodes-base/nodes/Wekan/ChecklistItemDescription.ts @@ -58,7 +58,7 @@ export const checklistItemFields: INodeProperties[] = [ }, }, description: - 'The ID of the board that card belongs to. Choose from the list, or specify an ID using an expression.', + 'The ID of the board that card belongs to. Choose from the list, or specify an ID using an expression.', }, { displayName: 'List Name or ID', @@ -77,7 +77,7 @@ export const checklistItemFields: INodeProperties[] = [ }, }, description: - 'The ID of the list that card belongs to. Choose from the list, or specify an ID using an expression.', + 'The ID of the list that card belongs to. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Card Name or ID', @@ -96,7 +96,7 @@ export const checklistItemFields: INodeProperties[] = [ }, }, description: - 'The ID of the card that checklistItem belongs to. Choose from the list, or specify an ID using an expression.', + 'The ID of the card that checklistItem belongs to. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Checklist Name or ID', @@ -115,7 +115,7 @@ export const checklistItemFields: INodeProperties[] = [ }, }, description: - 'The ID of the checklistItem that card belongs to. Choose from the list, or specify an ID using an expression.', + 'The ID of the checklistItem that card belongs to. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Checklist Item Name or ID', @@ -134,7 +134,7 @@ export const checklistItemFields: INodeProperties[] = [ }, }, description: - 'The ID of the checklistItem item to get. Choose from the list, or specify an ID using an expression.', + 'The ID of the checklistItem item to get. Choose from the list, or specify an ID using an expression.', }, // ---------------------------------- @@ -156,7 +156,7 @@ export const checklistItemFields: INodeProperties[] = [ }, }, description: - 'The ID of the board that card belongs to. Choose from the list, or specify an ID using an expression.', + 'The ID of the board that card belongs to. Choose from the list, or specify an ID using an expression.', }, { displayName: 'List Name or ID', @@ -175,7 +175,7 @@ export const checklistItemFields: INodeProperties[] = [ }, }, description: - 'The ID of the list that card belongs to. Choose from the list, or specify an ID using an expression.', + 'The ID of the list that card belongs to. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Card Name or ID', @@ -194,7 +194,7 @@ export const checklistItemFields: INodeProperties[] = [ }, }, description: - 'The ID of the card that checklistItem belongs to. Choose from the list, or specify an ID using an expression.', + 'The ID of the card that checklistItem belongs to. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Checklist ID', @@ -227,7 +227,7 @@ export const checklistItemFields: INodeProperties[] = [ }, }, description: - 'The ID of the checklistItem item to get. Choose from the list, or specify an ID using an expression.', + 'The ID of the checklistItem item to get. Choose from the list, or specify an ID using an expression.', }, // ---------------------------------- @@ -249,7 +249,7 @@ export const checklistItemFields: INodeProperties[] = [ }, }, description: - 'The ID of the board that card belongs to. Choose from the list, or specify an ID using an expression.', + 'The ID of the board that card belongs to. Choose from the list, or specify an ID using an expression.', }, { displayName: 'List Name or ID', @@ -268,7 +268,7 @@ export const checklistItemFields: INodeProperties[] = [ }, }, description: - 'The ID of the list that card belongs to. Choose from the list, or specify an ID using an expression.', + 'The ID of the list that card belongs to. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Card Name or ID', @@ -287,7 +287,7 @@ export const checklistItemFields: INodeProperties[] = [ }, }, description: - 'The ID of the card that checklistItem belongs to. Choose from the list, or specify an ID using an expression.', + 'The ID of the card that checklistItem belongs to. Choose from the list, or specify an ID using an expression.', }, { displayName: 'CheckList Name or ID', @@ -306,7 +306,7 @@ export const checklistItemFields: INodeProperties[] = [ }, }, description: - 'The ID of the checklistItem that card belongs to. Choose from the list, or specify an ID using an expression.', + 'The ID of the checklistItem that card belongs to. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Checklist Item Name or ID', @@ -325,7 +325,7 @@ export const checklistItemFields: INodeProperties[] = [ }, }, description: - 'The ID of the checklistItem item to update. Choose from the list, or specify an ID using an expression.', + 'The ID of the checklistItem item to update. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Update Fields', diff --git a/packages/nodes-base/nodes/Wekan/ListDescription.ts b/packages/nodes-base/nodes/Wekan/ListDescription.ts index b7d82ce30a..1ecdffe020 100644 --- a/packages/nodes-base/nodes/Wekan/ListDescription.ts +++ b/packages/nodes-base/nodes/Wekan/ListDescription.ts @@ -64,7 +64,7 @@ export const listFields: INodeProperties[] = [ }, }, description: - 'The ID of the board the list should be created in. Choose from the list, or specify an ID using an expression.', + 'The ID of the board the list should be created in. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Title', @@ -101,7 +101,7 @@ export const listFields: INodeProperties[] = [ }, }, description: - 'The ID of the board that list belongs to. Choose from the list, or specify an ID using an expression.', + 'The ID of the board that list belongs to. Choose from the list, or specify an ID using an expression.', }, { displayName: 'List Name or ID', @@ -120,7 +120,7 @@ export const listFields: INodeProperties[] = [ }, }, description: - 'The ID of the list to delete. Choose from the list, or specify an ID using an expression.', + 'The ID of the list to delete. Choose from the list, or specify an ID using an expression.', }, // ---------------------------------- @@ -142,7 +142,7 @@ export const listFields: INodeProperties[] = [ }, }, description: - 'The ID of the board that list belongs to. Choose from the list, or specify an ID using an expression.', + 'The ID of the board that list belongs to. Choose from the list, or specify an ID using an expression.', }, { displayName: 'List ID', @@ -178,7 +178,7 @@ export const listFields: INodeProperties[] = [ }, }, description: - 'ID of the board where the lists are in. Choose from the list, or specify an ID using an expression.', + 'ID of the board where the lists are in. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Return All', diff --git a/packages/nodes-base/nodes/Wekan/Wekan.node.json b/packages/nodes-base/nodes/Wekan/Wekan.node.json index e9dbc882d6..170a128db4 100644 --- a/packages/nodes-base/nodes/Wekan/Wekan.node.json +++ b/packages/nodes-base/nodes/Wekan/Wekan.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/wekan" + "url": "https://docs.n8n.io/integrations/builtin/credentials/wekan/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Wekan/Wekan.node.ts b/packages/nodes-base/nodes/Wekan/Wekan.node.ts index dad2e479d2..184f03a150 100644 --- a/packages/nodes-base/nodes/Wekan/Wekan.node.ts +++ b/packages/nodes-base/nodes/Wekan/Wekan.node.ts @@ -8,7 +8,7 @@ import type { INodeTypeDescription, IHttpRequestMethods, } from 'n8n-workflow'; -import { NodeOperationError } from 'n8n-workflow'; +import { NodeConnectionType, NodeOperationError } from 'n8n-workflow'; import { wrapData } from '../../utils/utilities'; import { apiRequest } from './GenericFunctions'; @@ -40,8 +40,8 @@ export class Wekan implements INodeType { defaults: { name: 'Wekan', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'wekanApi', @@ -668,7 +668,7 @@ export class Wekan implements INodeType { returnData.push(...executionData); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push({ json: { error: error.message }, pairedItem: { item: i } }); continue; } diff --git a/packages/nodes-base/nodes/WhatsApp/WhatsApp.node.ts b/packages/nodes-base/nodes/WhatsApp/WhatsApp.node.ts index ed30f1d851..7275a9b43e 100644 --- a/packages/nodes-base/nodes/WhatsApp/WhatsApp.node.ts +++ b/packages/nodes-base/nodes/WhatsApp/WhatsApp.node.ts @@ -1,4 +1,5 @@ import type { INodeType, INodeTypeDescription } from 'n8n-workflow'; +import { NodeConnectionType } from 'n8n-workflow'; import { messageFields, messageTypeFields } from './MessagesDescription'; import { mediaFields, mediaTypeFields } from './MediaDescription'; @@ -15,8 +16,8 @@ export class WhatsApp implements INodeType { defaults: { name: 'WhatsApp Business Cloud', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'whatsAppApi', diff --git a/packages/nodes-base/nodes/WhatsApp/WhatsAppTrigger.node.ts b/packages/nodes-base/nodes/WhatsApp/WhatsAppTrigger.node.ts index 58444a6c62..fb0f0e40f4 100644 --- a/packages/nodes-base/nodes/WhatsApp/WhatsAppTrigger.node.ts +++ b/packages/nodes-base/nodes/WhatsApp/WhatsAppTrigger.node.ts @@ -7,6 +7,7 @@ import { type INodeTypeDescription, type IWebhookFunctions, type IWebhookResponseData, + NodeConnectionType, } from 'n8n-workflow'; import { appWebhookSubscriptionCreate, @@ -29,7 +30,7 @@ export class WhatsAppTrigger implements INodeType { name: 'WhatsApp Trigger', }, inputs: [], - outputs: ['main'], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'whatsAppTriggerApi', diff --git a/packages/nodes-base/nodes/Wise/GenericFunctions.ts b/packages/nodes-base/nodes/Wise/GenericFunctions.ts index 8742dccd01..a5fe553803 100644 --- a/packages/nodes-base/nodes/Wise/GenericFunctions.ts +++ b/packages/nodes-base/nodes/Wise/GenericFunctions.ts @@ -21,11 +21,11 @@ export async function wiseApiRequest( qs: IDataObject = {}, option: IDataObject = {}, ) { - const { apiToken, environment, privateKey } = (await this.getCredentials('wiseApi')) as { + const { apiToken, environment, privateKey } = await this.getCredentials<{ apiToken: string; environment: 'live' | 'test'; privateKey?: string; - }; + }>('wiseApi'); const rootUrl = environment === 'live' diff --git a/packages/nodes-base/nodes/Wise/Wise.node.json b/packages/nodes-base/nodes/Wise/Wise.node.json index 39ec4b0a18..b2323a061c 100644 --- a/packages/nodes-base/nodes/Wise/Wise.node.json +++ b/packages/nodes-base/nodes/Wise/Wise.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/wise" + "url": "https://docs.n8n.io/integrations/builtin/credentials/wise/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Wise/Wise.node.ts b/packages/nodes-base/nodes/Wise/Wise.node.ts index e025adf5ee..59ce8beff9 100644 --- a/packages/nodes-base/nodes/Wise/Wise.node.ts +++ b/packages/nodes-base/nodes/Wise/Wise.node.ts @@ -7,6 +7,7 @@ import type { INodeType, INodeTypeDescription, } from 'n8n-workflow'; +import { NodeConnectionType } from 'n8n-workflow'; import omit from 'lodash/omit'; import moment from 'moment-timezone'; @@ -48,8 +49,8 @@ export class Wise implements INodeType { defaults: { name: 'Wise', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'wiseApi', @@ -527,7 +528,7 @@ export class Wise implements INodeType { } } } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push({ error: error.toString() }); continue; } diff --git a/packages/nodes-base/nodes/Wise/WiseTrigger.node.json b/packages/nodes-base/nodes/Wise/WiseTrigger.node.json index d1f69e6602..9b1fe29bd0 100644 --- a/packages/nodes-base/nodes/Wise/WiseTrigger.node.json +++ b/packages/nodes-base/nodes/Wise/WiseTrigger.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/wise" + "url": "https://docs.n8n.io/integrations/builtin/credentials/wise/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Wise/WiseTrigger.node.ts b/packages/nodes-base/nodes/Wise/WiseTrigger.node.ts index c9a3bf55e4..a1eb844e4d 100644 --- a/packages/nodes-base/nodes/Wise/WiseTrigger.node.ts +++ b/packages/nodes-base/nodes/Wise/WiseTrigger.node.ts @@ -8,6 +8,7 @@ import type { INodeTypeDescription, IWebhookResponseData, } from 'n8n-workflow'; +import { NodeConnectionType } from 'n8n-workflow'; import type { Profile } from './GenericFunctions'; import { getTriggerName, livePublicKey, testPublicKey, wiseApiRequest } from './GenericFunctions'; @@ -25,7 +26,7 @@ export class WiseTrigger implements INodeType { name: 'Wise Trigger', }, inputs: [], - outputs: ['main'], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'wiseApi', @@ -46,7 +47,7 @@ export class WiseTrigger implements INodeType { name: 'profileId', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', required: true, typeOptions: { loadOptionsMethod: 'getProfiles', diff --git a/packages/nodes-base/nodes/Wise/descriptions/AccountDescription.ts b/packages/nodes-base/nodes/Wise/descriptions/AccountDescription.ts index 605a1d2ec7..668cf83222 100644 --- a/packages/nodes-base/nodes/Wise/descriptions/AccountDescription.ts +++ b/packages/nodes-base/nodes/Wise/descriptions/AccountDescription.ts @@ -49,7 +49,7 @@ export const accountFields: INodeProperties[] = [ loadOptionsMethod: 'getProfiles', }, description: - 'ID of the user profile to retrieve the balance of. Choose from the list, or specify an ID using an expression.', + 'ID of the user profile to retrieve the balance of. Choose from the list, or specify an ID using an expression.', displayOptions: { show: { resource: ['account'], @@ -70,7 +70,7 @@ export const accountFields: INodeProperties[] = [ loadOptionsMethod: 'getProfiles', }, description: - 'ID of the user profile whose account to retrieve the statement of. Choose from the list, or specify an ID using an expression.', + 'ID of the user profile whose account to retrieve the statement of. Choose from the list, or specify an ID using an expression.', displayOptions: { show: { resource: ['account'], @@ -89,7 +89,7 @@ export const accountFields: INodeProperties[] = [ loadOptionsDependsOn: ['profileId'], }, description: - 'ID of the borderless account to retrieve the statement of. Choose from the list, or specify an ID using an expression.', + 'ID of the borderless account to retrieve the statement of. Choose from the list, or specify an ID using an expression.', displayOptions: { show: { resource: ['account'], diff --git a/packages/nodes-base/nodes/Wise/descriptions/ProfileDescription.ts b/packages/nodes-base/nodes/Wise/descriptions/ProfileDescription.ts index 5290ea7dcf..0f08f47f70 100644 --- a/packages/nodes-base/nodes/Wise/descriptions/ProfileDescription.ts +++ b/packages/nodes-base/nodes/Wise/descriptions/ProfileDescription.ts @@ -41,7 +41,7 @@ export const profileFields: INodeProperties[] = [ loadOptionsMethod: 'getProfiles', }, description: - 'ID of the user profile to retrieve. Choose from the list, or specify an ID using an expression.', + 'ID of the user profile to retrieve. Choose from the list, or specify an ID using an expression.', displayOptions: { show: { resource: ['profile'], diff --git a/packages/nodes-base/nodes/Wise/descriptions/QuoteDescription.ts b/packages/nodes-base/nodes/Wise/descriptions/QuoteDescription.ts index 4264ec9a8e..1bf65d63e7 100644 --- a/packages/nodes-base/nodes/Wise/descriptions/QuoteDescription.ts +++ b/packages/nodes-base/nodes/Wise/descriptions/QuoteDescription.ts @@ -41,7 +41,7 @@ export const quoteFields: INodeProperties[] = [ loadOptionsMethod: 'getProfiles', }, description: - 'ID of the user profile to create the quote under. Choose from the list, or specify an ID using an expression.', + 'ID of the user profile to create the quote under. Choose from the list, or specify an ID using an expression.', displayOptions: { show: { resource: ['quote'], @@ -59,7 +59,7 @@ export const quoteFields: INodeProperties[] = [ loadOptionsMethod: 'getRecipients', }, description: - 'ID of the account that will receive the funds. Choose from the list, or specify an ID using an expression.', + 'ID of the account that will receive the funds. Choose from the list, or specify an ID using an expression.', displayOptions: { show: { resource: ['quote'], diff --git a/packages/nodes-base/nodes/Wise/descriptions/TransferDescription.ts b/packages/nodes-base/nodes/Wise/descriptions/TransferDescription.ts index 5f743cc997..51ed22d626 100644 --- a/packages/nodes-base/nodes/Wise/descriptions/TransferDescription.ts +++ b/packages/nodes-base/nodes/Wise/descriptions/TransferDescription.ts @@ -57,7 +57,7 @@ export const transferFields: INodeProperties[] = [ loadOptionsDependsOn: ['profileId'], }, description: - 'ID of the user profile to retrieve the balance of. Choose from the list, or specify an ID using an expression.', + 'ID of the user profile to retrieve the balance of. Choose from the list, or specify an ID using an expression.', displayOptions: { show: { resource: ['transfer'], @@ -89,7 +89,7 @@ export const transferFields: INodeProperties[] = [ loadOptionsMethod: 'getRecipients', }, description: - 'ID of the account that will receive the funds. Choose from the list, or specify an ID using an expression.', + 'ID of the account that will receive the funds. Choose from the list, or specify an ID using an expression.', displayOptions: { show: { resource: ['transfer'], @@ -151,7 +151,7 @@ export const transferFields: INodeProperties[] = [ loadOptionsMethod: 'getProfiles', }, description: - 'ID of the user profile to execute the transfer under. Choose from the list, or specify an ID using an expression.', + 'ID of the user profile to execute the transfer under. Choose from the list, or specify an ID using an expression.', displayOptions: { show: { resource: ['transfer'], @@ -251,7 +251,7 @@ export const transferFields: INodeProperties[] = [ loadOptionsMethod: 'getProfiles', }, description: - 'ID of the user profile to retrieve. Choose from the list, or specify an ID using an expression.', + 'ID of the user profile to retrieve. Choose from the list, or specify an ID using an expression.', displayOptions: { show: { resource: ['transfer'], diff --git a/packages/nodes-base/nodes/WooCommerce/OrderDescription.ts b/packages/nodes-base/nodes/WooCommerce/OrderDescription.ts index d8318b467e..ea05b27671 100644 --- a/packages/nodes-base/nodes/WooCommerce/OrderDescription.ts +++ b/packages/nodes-base/nodes/WooCommerce/OrderDescription.ts @@ -1425,7 +1425,7 @@ export const orderFields: INodeProperties[] = [ displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, displayOptions: { show: { diff --git a/packages/nodes-base/nodes/WooCommerce/ProductDescription.ts b/packages/nodes-base/nodes/WooCommerce/ProductDescription.ts index 575ad584fd..ef86de9c44 100644 --- a/packages/nodes-base/nodes/WooCommerce/ProductDescription.ts +++ b/packages/nodes-base/nodes/WooCommerce/ProductDescription.ts @@ -139,7 +139,7 @@ export const productFields: INodeProperties[] = [ }, default: [], description: - 'List of categories. Choose from the list, or specify IDs using an expression.', + 'List of categories. Choose from the list, or specify IDs using an expression.', }, { displayName: 'Cross Sell IDs', @@ -336,7 +336,7 @@ export const productFields: INodeProperties[] = [ }, default: [], description: - 'List of tags. Choose from the list, or specify IDs using an expression.', + 'List of tags. Choose from the list, or specify IDs using an expression.', }, { displayName: 'Tax Class', @@ -632,7 +632,7 @@ export const productFields: INodeProperties[] = [ }, default: [], description: - 'List of categories. Choose from the list, or specify IDs using an expression.', + 'List of categories. Choose from the list, or specify IDs using an expression.', }, { displayName: 'Cross Sell IDs', @@ -836,7 +836,7 @@ export const productFields: INodeProperties[] = [ }, default: [], description: - 'List of tags. Choose from the list, or specify IDs using an expression.', + 'List of tags. Choose from the list, or specify IDs using an expression.', }, { displayName: 'Tax Class', @@ -1096,7 +1096,7 @@ export const productFields: INodeProperties[] = [ displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, displayOptions: { show: { @@ -1128,7 +1128,7 @@ export const productFields: INodeProperties[] = [ loadOptionsMethod: 'getCategories', }, description: - 'Limit result set to products assigned a specific category ID. Choose from the list, or specify an ID using an expression.', + 'Limit result set to products assigned a specific category ID. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Context', @@ -1298,7 +1298,7 @@ export const productFields: INodeProperties[] = [ loadOptionsMethod: 'getTags', }, description: - 'Limit result set to products assigned a specific tag ID. Choose from the list, or specify an ID using an expression.', + 'Limit result set to products assigned a specific tag ID. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Tax Class', diff --git a/packages/nodes-base/nodes/WooCommerce/WooCommerce.node.json b/packages/nodes-base/nodes/WooCommerce/WooCommerce.node.json index ae1aacd975..e2a7686b24 100644 --- a/packages/nodes-base/nodes/WooCommerce/WooCommerce.node.json +++ b/packages/nodes-base/nodes/WooCommerce/WooCommerce.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/wooCommerce" + "url": "https://docs.n8n.io/integrations/builtin/credentials/wooCommerce/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/WooCommerce/WooCommerce.node.ts b/packages/nodes-base/nodes/WooCommerce/WooCommerce.node.ts index 6548d5486d..3fb4ac5830 100644 --- a/packages/nodes-base/nodes/WooCommerce/WooCommerce.node.ts +++ b/packages/nodes-base/nodes/WooCommerce/WooCommerce.node.ts @@ -1,11 +1,12 @@ -import type { - IExecuteFunctions, - IDataObject, - ILoadOptionsFunctions, - INodeExecutionData, - INodePropertyOptions, - INodeType, - INodeTypeDescription, +import { + type IExecuteFunctions, + type IDataObject, + type ILoadOptionsFunctions, + type INodeExecutionData, + type INodePropertyOptions, + type INodeType, + type INodeTypeDescription, + NodeConnectionType, } from 'n8n-workflow'; import { adjustMetadata, @@ -41,8 +42,9 @@ export class WooCommerce implements INodeType { defaults: { name: 'WooCommerce', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], + usableAsTool: true, credentials: [ { name: 'wooCommerceApi', diff --git a/packages/nodes-base/nodes/WooCommerce/WooCommerceTrigger.node.json b/packages/nodes-base/nodes/WooCommerce/WooCommerceTrigger.node.json index 07955a1f5a..06f7b08cea 100644 --- a/packages/nodes-base/nodes/WooCommerce/WooCommerceTrigger.node.json +++ b/packages/nodes-base/nodes/WooCommerce/WooCommerceTrigger.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/wooCommerce" + "url": "https://docs.n8n.io/integrations/builtin/credentials/wooCommerce/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/WooCommerce/WooCommerceTrigger.node.ts b/packages/nodes-base/nodes/WooCommerce/WooCommerceTrigger.node.ts index af36889a38..66fbb553bf 100644 --- a/packages/nodes-base/nodes/WooCommerce/WooCommerceTrigger.node.ts +++ b/packages/nodes-base/nodes/WooCommerce/WooCommerceTrigger.node.ts @@ -7,6 +7,7 @@ import type { INodeTypeDescription, IWebhookResponseData, } from 'n8n-workflow'; +import { NodeConnectionType } from 'n8n-workflow'; import { getAutomaticSecret, woocommerceApiRequest } from './GenericFunctions'; @@ -22,7 +23,7 @@ export class WooCommerceTrigger implements INodeType { name: 'WooCommerce Trigger', }, inputs: [], - outputs: ['main'], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'wooCommerceApi', diff --git a/packages/nodes-base/nodes/Wordpress/PageDescription.ts b/packages/nodes-base/nodes/Wordpress/PageDescription.ts index 32f3afec31..f0330959ec 100644 --- a/packages/nodes-base/nodes/Wordpress/PageDescription.ts +++ b/packages/nodes-base/nodes/Wordpress/PageDescription.ts @@ -81,7 +81,7 @@ export const pageFields: INodeProperties[] = [ }, default: '', description: - 'The ID for the author of the object. Choose from the list, or specify an ID using an expression.', + 'The ID for the author of the object. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Parent ID', @@ -313,7 +313,7 @@ export const pageFields: INodeProperties[] = [ }, default: '', description: - 'The ID for the author of the object. Choose from the list, or specify an ID using an expression.', + 'The ID for the author of the object. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Parent ID', @@ -534,7 +534,7 @@ export const pageFields: INodeProperties[] = [ displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, displayOptions: { show: { @@ -612,7 +612,7 @@ export const pageFields: INodeProperties[] = [ displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, displayOptions: { show: { @@ -637,7 +637,7 @@ export const pageFields: INodeProperties[] = [ loadOptionsMethod: 'getAuthors', }, description: - 'Limit result set to pages assigned to specific authors. Choose from the list, or specify IDs using an expression.', + 'Limit result set to pages assigned to specific authors. Choose from the list, or specify IDs using an expression.', }, { displayName: 'Before', @@ -813,7 +813,7 @@ export const pageFields: INodeProperties[] = [ displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, displayOptions: { show: { diff --git a/packages/nodes-base/nodes/Wordpress/PostDescription.ts b/packages/nodes-base/nodes/Wordpress/PostDescription.ts index e2b0cd957c..182c7128dd 100644 --- a/packages/nodes-base/nodes/Wordpress/PostDescription.ts +++ b/packages/nodes-base/nodes/Wordpress/PostDescription.ts @@ -81,7 +81,7 @@ export const postFields: INodeProperties[] = [ }, default: '', description: - 'The ID for the author of the object. Choose from the list, or specify an ID using an expression.', + 'The ID for the author of the object. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Content', @@ -233,7 +233,7 @@ export const postFields: INodeProperties[] = [ }, default: [], description: - 'The terms assigned to the object in the category taxonomy. Choose from the list, or specify IDs using an expression.', + 'The terms assigned to the object in the category taxonomy. Choose from the list, or specify IDs using an expression.', }, { displayName: 'Tag Names or IDs', @@ -244,7 +244,7 @@ export const postFields: INodeProperties[] = [ }, default: [], description: - 'The terms assigned to the object in the post_tag taxonomy. Choose from the list, or specify IDs using an expression.', + 'The terms assigned to the object in the post_tag taxonomy. Choose from the list, or specify IDs using an expression.', }, { displayName: 'Template', @@ -353,7 +353,7 @@ export const postFields: INodeProperties[] = [ }, default: '', description: - 'The ID for the author of the object. Choose from the list, or specify an ID using an expression.', + 'The ID for the author of the object. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Title', @@ -512,7 +512,7 @@ export const postFields: INodeProperties[] = [ }, default: [], description: - 'The terms assigned to the object in the category taxonomy. Choose from the list, or specify IDs using an expression.', + 'The terms assigned to the object in the category taxonomy. Choose from the list, or specify IDs using an expression.', }, { displayName: 'Tag Names or IDs', @@ -523,7 +523,7 @@ export const postFields: INodeProperties[] = [ }, default: [], description: - 'The terms assigned to the object in the post_tag taxonomy. Choose from the list, or specify IDs using an expression.', + 'The terms assigned to the object in the post_tag taxonomy. Choose from the list, or specify IDs using an expression.', }, { displayName: 'Template', @@ -614,7 +614,7 @@ export const postFields: INodeProperties[] = [ displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, displayOptions: { show: { @@ -692,7 +692,7 @@ export const postFields: INodeProperties[] = [ displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, displayOptions: { show: { @@ -717,7 +717,7 @@ export const postFields: INodeProperties[] = [ loadOptionsMethod: 'getAuthors', }, description: - 'Limit result set to posts assigned to specific authors. Choose from the list, or specify IDs using an expression.', + 'Limit result set to posts assigned to specific authors. Choose from the list, or specify IDs using an expression.', }, { displayName: 'Before', @@ -735,7 +735,7 @@ export const postFields: INodeProperties[] = [ loadOptionsMethod: 'getCategories', }, description: - 'Limit result set to all items that have the specified term assigned in the categories taxonomy. Choose from the list, or specify IDs using an expression.', + 'Limit result set to all items that have the specified term assigned in the categories taxonomy. Choose from the list, or specify IDs using an expression.', }, { displayName: 'Context', @@ -768,7 +768,7 @@ export const postFields: INodeProperties[] = [ loadOptionsMethod: 'getCategories', }, description: - 'Limit result set to all items except those that have the specified term assigned in the categories taxonomy. Choose from the list, or specify IDs using an expression.', + 'Limit result set to all items except those that have the specified term assigned in the categories taxonomy. Choose from the list, or specify IDs using an expression.', }, { // eslint-disable-next-line n8n-nodes-base/node-param-display-name-wrong-for-dynamic-multi-options @@ -780,7 +780,7 @@ export const postFields: INodeProperties[] = [ loadOptionsMethod: 'getTags', }, description: - 'Limit result set to all items except those that have the specified term assigned in the tags taxonomy. Choose from the list, or specify IDs using an expression.', + 'Limit result set to all items except those that have the specified term assigned in the tags taxonomy. Choose from the list, or specify IDs using an expression.', }, { displayName: 'Order', @@ -900,7 +900,7 @@ export const postFields: INodeProperties[] = [ loadOptionsMethod: 'getTags', }, description: - 'Limit result set to all items that have the specified term assigned in the tags taxonomy. Choose from the list, or specify IDs using an expression.', + 'Limit result set to all items that have the specified term assigned in the tags taxonomy. Choose from the list, or specify IDs using an expression.', }, ], }, @@ -925,7 +925,7 @@ export const postFields: INodeProperties[] = [ displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, displayOptions: { show: { diff --git a/packages/nodes-base/nodes/Wordpress/UserDescription.ts b/packages/nodes-base/nodes/Wordpress/UserDescription.ts index aae020c6d8..52a68d137f 100644 --- a/packages/nodes-base/nodes/Wordpress/UserDescription.ts +++ b/packages/nodes-base/nodes/Wordpress/UserDescription.ts @@ -299,7 +299,7 @@ export const userFields: INodeProperties[] = [ displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, displayOptions: { show: { @@ -369,7 +369,7 @@ export const userFields: INodeProperties[] = [ displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, displayOptions: { show: { diff --git a/packages/nodes-base/nodes/Wordpress/Wordpress.node.json b/packages/nodes-base/nodes/Wordpress/Wordpress.node.json index 2d7526cb9b..8ff1a12695 100644 --- a/packages/nodes-base/nodes/Wordpress/Wordpress.node.json +++ b/packages/nodes-base/nodes/Wordpress/Wordpress.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/wordpress" + "url": "https://docs.n8n.io/integrations/builtin/credentials/wordpress/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Wordpress/Wordpress.node.ts b/packages/nodes-base/nodes/Wordpress/Wordpress.node.ts index 2be63e30ad..52257110c1 100644 --- a/packages/nodes-base/nodes/Wordpress/Wordpress.node.ts +++ b/packages/nodes-base/nodes/Wordpress/Wordpress.node.ts @@ -7,6 +7,7 @@ import type { INodeType, INodeTypeDescription, } from 'n8n-workflow'; +import { NodeConnectionType } from 'n8n-workflow'; import { wordpressApiRequest, wordpressApiRequestAllItems } from './GenericFunctions'; import { postFields, postOperations } from './PostDescription'; import { pageFields, pageOperations } from './PageDescription'; @@ -28,8 +29,8 @@ export class Wordpress implements INodeType { defaults: { name: 'Wordpress', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'wordpressApi', @@ -599,7 +600,7 @@ export class Wordpress implements INodeType { ); returnData.push(...executionData); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push({ json: { error: error.message } }); continue; } diff --git a/packages/nodes-base/nodes/Workable/GenericFunctions.ts b/packages/nodes-base/nodes/Workable/GenericFunctions.ts index 8b6dbc7eae..c9d32403c2 100644 --- a/packages/nodes-base/nodes/Workable/GenericFunctions.ts +++ b/packages/nodes-base/nodes/Workable/GenericFunctions.ts @@ -19,10 +19,10 @@ export async function workableApiRequest( uri?: string, option: IDataObject = {}, ): Promise { - const credentials = (await this.getCredentials('workableApi')) as { + const credentials = await this.getCredentials<{ accessToken: string; subdomain: string; - }; + }>('workableApi'); let options: IRequestOptions = { headers: { Authorization: `Bearer ${credentials.accessToken}` }, diff --git a/packages/nodes-base/nodes/Workable/WorkableTrigger.node.json b/packages/nodes-base/nodes/Workable/WorkableTrigger.node.json index 5cbc7bb227..49aeae2dfb 100644 --- a/packages/nodes-base/nodes/Workable/WorkableTrigger.node.json +++ b/packages/nodes-base/nodes/Workable/WorkableTrigger.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/workable" + "url": "https://docs.n8n.io/integrations/builtin/credentials/workable/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Workable/WorkableTrigger.node.ts b/packages/nodes-base/nodes/Workable/WorkableTrigger.node.ts index d942f697e8..121ead0dc2 100644 --- a/packages/nodes-base/nodes/Workable/WorkableTrigger.node.ts +++ b/packages/nodes-base/nodes/Workable/WorkableTrigger.node.ts @@ -8,6 +8,7 @@ import type { INodeTypeDescription, IWebhookResponseData, } from 'n8n-workflow'; +import { NodeConnectionType } from 'n8n-workflow'; import { snakeCase } from 'change-case'; import { workableApiRequest } from './GenericFunctions'; @@ -26,7 +27,7 @@ export class WorkableTrigger implements INodeType { name: 'Workable Trigger', }, inputs: [], - outputs: ['main'], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'workableApi', @@ -75,7 +76,7 @@ export class WorkableTrigger implements INodeType { }, default: '', description: - 'Get notifications only for one job. Choose from the list, or specify an ID using an expression.', + 'Get notifications only for one job. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Stage Name or ID', @@ -86,7 +87,7 @@ export class WorkableTrigger implements INodeType { }, default: '', description: - 'Get notifications for specific stages. e.g. \'hired\'. Choose from the list, or specify an ID using an expression.', + 'Get notifications for specific stages. e.g. \'hired\'. Choose from the list, or specify an ID using an expression.', }, ], }, @@ -137,10 +138,10 @@ export class WorkableTrigger implements INodeType { return false; }, async create(this: IHookFunctions): Promise { - const credentials = (await this.getCredentials('workableApi')) as { + const credentials = await this.getCredentials<{ accessToken: string; subdomain: string; - }; + }>('workableApi'); const webhookData = this.getWorkflowStaticData('node'); const webhookUrl = this.getNodeWebhookUrl('default'); const triggerOn = this.getNodeParameter('triggerOn') as string; diff --git a/packages/nodes-base/nodes/WorkflowTrigger/WorkflowTrigger.node.ts b/packages/nodes-base/nodes/WorkflowTrigger/WorkflowTrigger.node.ts index d3ccad98bb..8b67094865 100644 --- a/packages/nodes-base/nodes/WorkflowTrigger/WorkflowTrigger.node.ts +++ b/packages/nodes-base/nodes/WorkflowTrigger/WorkflowTrigger.node.ts @@ -4,6 +4,7 @@ import type { INodeTypeDescription, ITriggerResponse, } from 'n8n-workflow'; +import { NodeConnectionType } from 'n8n-workflow'; type eventType = 'Workflow activated' | 'Workflow updated' | undefined; type activationType = 'activate' | 'update'; @@ -11,6 +12,7 @@ type activationType = 'activate' | 'update'; export class WorkflowTrigger implements INodeType { description: INodeTypeDescription = { displayName: 'Workflow Trigger', + hidden: true, name: 'workflowTrigger', icon: 'fa:network-wired', iconColor: 'orange-red', @@ -25,8 +27,15 @@ export class WorkflowTrigger implements INodeType { color: '#ff6d5a', }, inputs: [], - outputs: ['main'], + outputs: [NodeConnectionType.Main], properties: [ + { + displayName: + "This node is deprecated and would not be updated in the future. Please use 'n8n Trigger' node instead.", + name: 'oldVersionNotice', + type: 'notice', + default: '', + }, { displayName: 'Events', name: 'events', diff --git a/packages/nodes-base/nodes/WriteBinaryFile/WriteBinaryFile.node.json b/packages/nodes-base/nodes/WriteBinaryFile/WriteBinaryFile.node.json index 8fe40e8420..5ac813bda0 100644 --- a/packages/nodes-base/nodes/WriteBinaryFile/WriteBinaryFile.node.json +++ b/packages/nodes-base/nodes/WriteBinaryFile/WriteBinaryFile.node.json @@ -6,7 +6,7 @@ "resources": { "primaryDocumentation": [ { - "url": "https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.filesreadwrite/" + "url": "https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.readwritefile/" } ], "generic": [ diff --git a/packages/nodes-base/nodes/WriteBinaryFile/WriteBinaryFile.node.ts b/packages/nodes-base/nodes/WriteBinaryFile/WriteBinaryFile.node.ts index fa052daee2..21cc48221b 100644 --- a/packages/nodes-base/nodes/WriteBinaryFile/WriteBinaryFile.node.ts +++ b/packages/nodes-base/nodes/WriteBinaryFile/WriteBinaryFile.node.ts @@ -1,6 +1,6 @@ import type { Readable } from 'stream'; -import { BINARY_ENCODING } from 'n8n-workflow'; +import { BINARY_ENCODING, NodeConnectionType } from 'n8n-workflow'; import type { IExecuteFunctions, INodeExecutionData, @@ -21,8 +21,8 @@ export class WriteBinaryFile implements INodeType { name: 'Write Binary File', color: '#CC2233', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], properties: [ { displayName: 'File Name', @@ -46,7 +46,7 @@ export class WriteBinaryFile implements INodeType { displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, options: [ { @@ -115,7 +115,7 @@ export class WriteBinaryFile implements INodeType { returnData.push(newItem); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push({ json: { error: (error as Error).message, diff --git a/packages/nodes-base/nodes/Wufoo/WufooTrigger.node.json b/packages/nodes-base/nodes/Wufoo/WufooTrigger.node.json index b6f75a545d..84e110bf79 100644 --- a/packages/nodes-base/nodes/Wufoo/WufooTrigger.node.json +++ b/packages/nodes-base/nodes/Wufoo/WufooTrigger.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/wufoo" + "url": "https://docs.n8n.io/integrations/builtin/credentials/wufoo/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Wufoo/WufooTrigger.node.ts b/packages/nodes-base/nodes/Wufoo/WufooTrigger.node.ts index bd10e1ea90..7cb91c179c 100644 --- a/packages/nodes-base/nodes/Wufoo/WufooTrigger.node.ts +++ b/packages/nodes-base/nodes/Wufoo/WufooTrigger.node.ts @@ -9,7 +9,7 @@ import type { INodeTypeDescription, IWebhookResponseData, } from 'n8n-workflow'; -import { jsonParse } from 'n8n-workflow'; +import { NodeConnectionType, jsonParse } from 'n8n-workflow'; import { wufooApiRequest } from './GenericFunctions'; @@ -28,7 +28,7 @@ export class WufooTrigger implements INodeType { name: 'Wufoo Trigger', }, inputs: [], - outputs: ['main'], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'wufooApi', @@ -54,7 +54,7 @@ export class WufooTrigger implements INodeType { loadOptionsMethod: 'getForms', }, description: - 'The form upon which will trigger this node when a new entry is made. Choose from the list, or specify an ID using an expression.', + 'The form upon which will trigger this node when a new entry is made. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Only Answers', diff --git a/packages/nodes-base/nodes/Xero/ContactDescription.ts b/packages/nodes-base/nodes/Xero/ContactDescription.ts index 36831a74f1..67bf18108a 100644 --- a/packages/nodes-base/nodes/Xero/ContactDescription.ts +++ b/packages/nodes-base/nodes/Xero/ContactDescription.ts @@ -50,7 +50,7 @@ export const contactFields: INodeProperties[] = [ name: 'organizationId', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getTenants', }, @@ -309,7 +309,7 @@ export const contactFields: INodeProperties[] = [ }, default: '', description: - 'The default purchases account code for contacts. Choose from the list, or specify an ID using an expression.', + 'The default purchases account code for contacts. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Sales Default Account Code Name or ID', @@ -320,7 +320,7 @@ export const contactFields: INodeProperties[] = [ }, default: '', description: - 'The default sales account code for contacts. Choose from the list, or specify an ID using an expression.', + 'The default sales account code for contacts. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Skype', @@ -353,7 +353,7 @@ export const contactFields: INodeProperties[] = [ name: 'organizationId', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getTenants', }, @@ -387,7 +387,7 @@ export const contactFields: INodeProperties[] = [ name: 'organizationId', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getTenants', }, @@ -435,7 +435,7 @@ export const contactFields: INodeProperties[] = [ displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, displayOptions: { show: { @@ -494,7 +494,7 @@ export const contactFields: INodeProperties[] = [ name: 'organizationId', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getTenants', }, @@ -759,7 +759,7 @@ export const contactFields: INodeProperties[] = [ }, default: '', description: - 'The default purchases account code for contacts. Choose from the list, or specify an ID using an expression.', + 'The default purchases account code for contacts. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Sales Default Account Code Name or ID', @@ -770,7 +770,7 @@ export const contactFields: INodeProperties[] = [ }, default: '', description: - 'The default sales account code for contacts. Choose from the list, or specify an ID using an expression.', + 'The default sales account code for contacts. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Skype', diff --git a/packages/nodes-base/nodes/Xero/InvoiceDescription.ts b/packages/nodes-base/nodes/Xero/InvoiceDescription.ts index 394ab5fb03..d70ccea097 100644 --- a/packages/nodes-base/nodes/Xero/InvoiceDescription.ts +++ b/packages/nodes-base/nodes/Xero/InvoiceDescription.ts @@ -50,7 +50,7 @@ export const invoiceFields: INodeProperties[] = [ name: 'organizationId', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getTenants', }, @@ -153,7 +153,7 @@ export const invoiceFields: INodeProperties[] = [ name: 'itemCode', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getItemCodes', loadOptionsDependsOn: ['organizationId'], @@ -165,7 +165,7 @@ export const invoiceFields: INodeProperties[] = [ name: 'accountCode', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getAccountCodes', loadOptionsDependsOn: ['organizationId'], @@ -288,7 +288,7 @@ export const invoiceFields: INodeProperties[] = [ name: 'brandingThemeId', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getBrandingThemes', loadOptionsDependsOn: ['organizationId'], @@ -300,7 +300,7 @@ export const invoiceFields: INodeProperties[] = [ name: 'currency', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getCurrencies', loadOptionsDependsOn: ['organizationId'], @@ -425,7 +425,7 @@ export const invoiceFields: INodeProperties[] = [ name: 'organizationId', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getTenants', }, @@ -469,7 +469,7 @@ export const invoiceFields: INodeProperties[] = [ name: 'brandingThemeId', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getBrandingThemes', loadOptionsDependsOn: ['organizationId'], @@ -487,7 +487,7 @@ export const invoiceFields: INodeProperties[] = [ name: 'currency', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getCurrencies', loadOptionsDependsOn: ['organizationId'], @@ -605,7 +605,7 @@ export const invoiceFields: INodeProperties[] = [ name: 'itemCode', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getItemCodes', loadOptionsDependsOn: ['organizationId'], @@ -617,7 +617,7 @@ export const invoiceFields: INodeProperties[] = [ name: 'accountCode', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getAccountCodes', loadOptionsDependsOn: ['organizationId'], @@ -781,7 +781,7 @@ export const invoiceFields: INodeProperties[] = [ name: 'organizationId', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getTenants', }, @@ -815,7 +815,7 @@ export const invoiceFields: INodeProperties[] = [ name: 'organizationId', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getTenants', }, @@ -863,7 +863,7 @@ export const invoiceFields: INodeProperties[] = [ displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, displayOptions: { show: { diff --git a/packages/nodes-base/nodes/Xero/Xero.node.json b/packages/nodes-base/nodes/Xero/Xero.node.json index 27a01da272..0634ef3c27 100644 --- a/packages/nodes-base/nodes/Xero/Xero.node.json +++ b/packages/nodes-base/nodes/Xero/Xero.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/xero" + "url": "https://docs.n8n.io/integrations/builtin/credentials/xero/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Xero/Xero.node.ts b/packages/nodes-base/nodes/Xero/Xero.node.ts index a05a20c621..fade7c1334 100644 --- a/packages/nodes-base/nodes/Xero/Xero.node.ts +++ b/packages/nodes-base/nodes/Xero/Xero.node.ts @@ -1,12 +1,13 @@ -import type { - IExecuteFunctions, - IDataObject, - ILoadOptionsFunctions, - INodeExecutionData, - INodePropertyOptions, - INodeType, - INodeTypeDescription, - JsonObject, +import { + type IExecuteFunctions, + type IDataObject, + type ILoadOptionsFunctions, + type INodeExecutionData, + type INodePropertyOptions, + type INodeType, + type INodeTypeDescription, + type JsonObject, + NodeConnectionType, } from 'n8n-workflow'; import { xeroApiRequest, xeroApiRequestAllItems } from './GenericFunctions'; @@ -31,8 +32,8 @@ export class Xero implements INodeType { defaults: { name: 'Xero', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'xeroOAuth2Api', @@ -723,7 +724,7 @@ export class Xero implements INodeType { ); returnData.push(...executionData); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push({ json: { error: (error as JsonObject).message } }); continue; } diff --git a/packages/nodes-base/nodes/Xml/Xml.node.ts b/packages/nodes-base/nodes/Xml/Xml.node.ts index e3a322c654..6b05660f24 100644 --- a/packages/nodes-base/nodes/Xml/Xml.node.ts +++ b/packages/nodes-base/nodes/Xml/Xml.node.ts @@ -5,7 +5,7 @@ import type { INodeType, INodeTypeDescription, } from 'n8n-workflow'; -import { NodeOperationError, deepCopy } from 'n8n-workflow'; +import { NodeConnectionType, NodeOperationError, deepCopy } from 'n8n-workflow'; export class Xml implements INodeType { description: INodeTypeDescription = { @@ -21,8 +21,8 @@ export class Xml implements INodeType { name: 'XML', color: '#333377', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], properties: [ { displayName: 'Mode', @@ -76,7 +76,7 @@ export class Xml implements INodeType { displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', displayOptions: { show: { mode: ['jsonToxml'], @@ -150,7 +150,7 @@ export class Xml implements INodeType { displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', displayOptions: { show: { mode: ['xmlToJson'], @@ -280,7 +280,7 @@ export class Xml implements INodeType { }); } } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { items[itemIndex] = { json: { error: error.message, diff --git a/packages/nodes-base/nodes/Yourls/Yourls.node.json b/packages/nodes-base/nodes/Yourls/Yourls.node.json index 58f8814e32..0d6d47ccbc 100644 --- a/packages/nodes-base/nodes/Yourls/Yourls.node.json +++ b/packages/nodes-base/nodes/Yourls/Yourls.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/yourls" + "url": "https://docs.n8n.io/integrations/builtin/credentials/yourls/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Yourls/Yourls.node.ts b/packages/nodes-base/nodes/Yourls/Yourls.node.ts index f21b435acf..e4fee71eca 100644 --- a/packages/nodes-base/nodes/Yourls/Yourls.node.ts +++ b/packages/nodes-base/nodes/Yourls/Yourls.node.ts @@ -1,9 +1,10 @@ -import type { - IExecuteFunctions, - IDataObject, - INodeExecutionData, - INodeType, - INodeTypeDescription, +import { + type IExecuteFunctions, + type IDataObject, + type INodeExecutionData, + type INodeType, + type INodeTypeDescription, + NodeConnectionType, } from 'n8n-workflow'; import { yourlsApiRequest } from './GenericFunctions'; @@ -23,8 +24,8 @@ export class Yourls implements INodeType { defaults: { name: 'Yourls', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'yourlsApi', @@ -91,7 +92,7 @@ export class Yourls implements INodeType { returnData.push(responseData as IDataObject); } } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push({ error: error.message }); continue; } diff --git a/packages/nodes-base/nodes/Zammad/Zammad.node.json b/packages/nodes-base/nodes/Zammad/Zammad.node.json index c29085c955..3ceb17e980 100644 --- a/packages/nodes-base/nodes/Zammad/Zammad.node.json +++ b/packages/nodes-base/nodes/Zammad/Zammad.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/zammad/" + "url": "https://docs.n8n.io/integrations/builtin/credentials/zammad/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Zammad/Zammad.node.ts b/packages/nodes-base/nodes/Zammad/Zammad.node.ts index f4282ee7d3..5b006b444d 100644 --- a/packages/nodes-base/nodes/Zammad/Zammad.node.ts +++ b/packages/nodes-base/nodes/Zammad/Zammad.node.ts @@ -10,7 +10,7 @@ import type { INodeTypeDescription, IRequestOptions, } from 'n8n-workflow'; -import { NodeOperationError } from 'n8n-workflow'; +import { NodeConnectionType, NodeOperationError } from 'n8n-workflow'; import { groupDescription, @@ -53,8 +53,8 @@ export class Zammad implements INodeType { defaults: { name: 'Zammad', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'zammadBasicAuthApi', @@ -749,7 +749,7 @@ export class Zammad implements INodeType { ); returnData.push(...executionData); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push({ json: { error: error.message } }); continue; } diff --git a/packages/nodes-base/nodes/Zammad/descriptions/GroupDescription.ts b/packages/nodes-base/nodes/Zammad/descriptions/GroupDescription.ts index 24bfd6538d..6694c676cc 100644 --- a/packages/nodes-base/nodes/Zammad/descriptions/GroupDescription.ts +++ b/packages/nodes-base/nodes/Zammad/descriptions/GroupDescription.ts @@ -70,7 +70,7 @@ export const groupDescription: INodeProperties[] = [ name: 'id', type: 'string', description: - 'Group to update. Specify an ID using an expression.', + 'Group to update. Specify an ID using an expression.', default: '', required: true, displayOptions: { @@ -85,7 +85,7 @@ export const groupDescription: INodeProperties[] = [ name: 'id', type: 'string', description: - 'Group to delete. Specify an ID using an expression.', + 'Group to delete. Specify an ID using an expression.', default: '', required: true, displayOptions: { @@ -100,7 +100,7 @@ export const groupDescription: INodeProperties[] = [ name: 'id', type: 'string', description: - 'Group to retrieve. Specify an ID using an expression.', + 'Group to retrieve. Specify an ID using an expression.', default: '', required: true, displayOptions: { @@ -153,7 +153,7 @@ export const groupDescription: INodeProperties[] = [ }, default: '', description: - 'Name of the custom field to set. Choose from the list, or specify an ID using an expression.', + 'Name of the custom field to set. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Field Value', @@ -216,7 +216,7 @@ export const groupDescription: INodeProperties[] = [ }, default: '', description: - 'Name of the custom field to set. Choose from the list, or specify an ID using an expression.', + 'Name of the custom field to set. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Field Value', diff --git a/packages/nodes-base/nodes/Zammad/descriptions/OrganizationDescription.ts b/packages/nodes-base/nodes/Zammad/descriptions/OrganizationDescription.ts index fb6b852edc..09e7e36020 100644 --- a/packages/nodes-base/nodes/Zammad/descriptions/OrganizationDescription.ts +++ b/packages/nodes-base/nodes/Zammad/descriptions/OrganizationDescription.ts @@ -70,7 +70,7 @@ export const organizationDescription: INodeProperties[] = [ name: 'id', type: 'string', description: - 'Organization to update. Specify an ID using an expression.', + 'Organization to update. Specify an ID using an expression.', default: '', required: true, displayOptions: { @@ -85,7 +85,7 @@ export const organizationDescription: INodeProperties[] = [ name: 'id', type: 'string', description: - 'Organization to delete. Specify an ID using an expression.', + 'Organization to delete. Specify an ID using an expression.', default: '', required: true, displayOptions: { @@ -100,7 +100,7 @@ export const organizationDescription: INodeProperties[] = [ name: 'id', type: 'string', description: - 'Organization to retrieve. Specify an ID using an expression.', + 'Organization to retrieve. Specify an ID using an expression.', default: '', required: true, displayOptions: { @@ -188,7 +188,7 @@ export const organizationDescription: INodeProperties[] = [ }, default: '', description: - 'Name of the custom field to set. Choose from the list, or specify an ID using an expression.', + 'Name of the custom field to set. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Value', @@ -281,7 +281,7 @@ export const organizationDescription: INodeProperties[] = [ }, default: '', description: - 'Name of the custom field to set. Choose from the list, or specify an ID using an expression.', + 'Name of the custom field to set. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Value', diff --git a/packages/nodes-base/nodes/Zammad/descriptions/TicketDescription.ts b/packages/nodes-base/nodes/Zammad/descriptions/TicketDescription.ts index 882b2cac79..e0b1129678 100644 --- a/packages/nodes-base/nodes/Zammad/descriptions/TicketDescription.ts +++ b/packages/nodes-base/nodes/Zammad/descriptions/TicketDescription.ts @@ -69,7 +69,7 @@ export const ticketDescription: INodeProperties[] = [ }, placeholder: 'First-Level Helpdesk', description: - 'Group that will own the ticket to create. Choose from the list, or specify an ID using an expression.', + 'Group that will own the ticket to create. Choose from the list, or specify an ID using an expression.', default: '', required: true, displayOptions: { @@ -87,7 +87,7 @@ export const ticketDescription: INodeProperties[] = [ loadOptionsMethod: 'loadCustomerEmails', }, description: - 'Email address of the customer concerned in the ticket to create. Choose from the list, or specify an ID using an expression.', + 'Email address of the customer concerned in the ticket to create. Choose from the list, or specify an ID using an expression.', default: '', placeholder: 'hello@n8n.io', required: true, @@ -103,7 +103,7 @@ export const ticketDescription: INodeProperties[] = [ name: 'id', type: 'string', description: - 'Ticket to retrieve. Specify an ID using an expression.', + 'Ticket to retrieve. Specify an ID using an expression.', default: '', required: true, displayOptions: { @@ -119,7 +119,7 @@ export const ticketDescription: INodeProperties[] = [ type: 'string', default: '', description: - 'Ticket to delete. Specify an ID using an expression.', + 'Ticket to delete. Specify an ID using an expression.', required: true, displayOptions: { show: { @@ -176,6 +176,28 @@ export const ticketDescription: INodeProperties[] = [ }, ], }, + { + displayName: 'Sender', + name: 'sender', + type: 'options', + // https://docs.zammad.org/en/latest/api/ticket/articles.html + options: [ + { + name: 'Agent', + value: 'Agent', + }, + { + name: 'Customer', + value: 'Customer', + }, + { + name: 'System', + value: 'System', + description: 'Only subject will be displayed in Zammad', + }, + ], + default: 'Agent', + }, { displayName: 'Article Type', name: 'type', @@ -209,6 +231,12 @@ export const ticketDescription: INodeProperties[] = [ ], default: 'note', }, + { + displayName: 'Reply To', + name: 'reply_to', + type: 'string', + default: '', + }, ], }, ], @@ -249,7 +277,7 @@ export const ticketDescription: INodeProperties[] = [ }, default: '', description: - 'Name of the custom field to set. Choose from the list, or specify an ID using an expression.', + 'Name of the custom field to set. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Value', diff --git a/packages/nodes-base/nodes/Zammad/descriptions/UserDescription.ts b/packages/nodes-base/nodes/Zammad/descriptions/UserDescription.ts index 29014f3d74..469600f8a6 100644 --- a/packages/nodes-base/nodes/Zammad/descriptions/UserDescription.ts +++ b/packages/nodes-base/nodes/Zammad/descriptions/UserDescription.ts @@ -91,7 +91,7 @@ export const userDescription: INodeProperties[] = [ name: 'id', type: 'string', description: - 'User to update. Specify an ID using an expression.', + 'User to update. Specify an ID using an expression.', default: '', required: true, displayOptions: { @@ -106,7 +106,7 @@ export const userDescription: INodeProperties[] = [ name: 'id', type: 'string', description: - 'User to delete. Specify an ID using an expression.', + 'User to delete. Specify an ID using an expression.', default: '', required: true, displayOptions: { @@ -121,7 +121,7 @@ export const userDescription: INodeProperties[] = [ name: 'id', type: 'string', description: - 'User to retrieve. Specify an ID using an expression.', + 'User to retrieve. Specify an ID using an expression.', default: '', required: true, displayOptions: { @@ -216,7 +216,7 @@ export const userDescription: INodeProperties[] = [ }, default: '', description: - 'Name of the custom field to set. Choose from the list, or specify an ID using an expression.', + 'Name of the custom field to set. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Field Value', @@ -261,7 +261,7 @@ export const userDescription: INodeProperties[] = [ name: 'organization', type: 'options', description: - 'Name of the organization to assign to the user. Choose from the list, or specify an ID using an expression.', + 'Name of the organization to assign to the user. Choose from the list, or specify an ID using an expression.', default: '', typeOptions: { loadOptionsMethod: 'loadOrganizations', @@ -389,7 +389,7 @@ export const userDescription: INodeProperties[] = [ }, default: '', description: - 'Name of the custom field to set. Choose from the list, or specify an ID using an expression.', + 'Name of the custom field to set. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Field Value', @@ -448,7 +448,7 @@ export const userDescription: INodeProperties[] = [ name: 'organization', type: 'options', description: - 'Name of the organization to assign to the user. Choose from the list, or specify an ID using an expression.', + 'Name of the organization to assign to the user. Choose from the list, or specify an ID using an expression.', default: '', typeOptions: { loadOptionsMethod: 'loadOrganizationNames', @@ -587,7 +587,7 @@ export const userDescription: INodeProperties[] = [ name: 'sort_by', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'loadUserFields', }, diff --git a/packages/nodes-base/nodes/Zammad/types.ts b/packages/nodes-base/nodes/Zammad/types.ts index e9cc72226f..9c6f2e7b2a 100644 --- a/packages/nodes-base/nodes/Zammad/types.ts +++ b/packages/nodes-base/nodes/Zammad/types.ts @@ -89,7 +89,9 @@ export declare namespace Zammad { visibility: 'external' | 'internal'; subject: string; body: string; + sender: 'Agent' | 'Customer' | 'System'; type: 'chat' | 'email' | 'fax' | 'note' | 'phone' | 'sms'; + reply_to: string; }; }; } diff --git a/packages/nodes-base/nodes/Zendesk/ConditionDescription.ts b/packages/nodes-base/nodes/Zendesk/ConditionDescription.ts index d9e57ecae6..a33262479c 100644 --- a/packages/nodes-base/nodes/Zendesk/ConditionDescription.ts +++ b/packages/nodes-base/nodes/Zendesk/ConditionDescription.ts @@ -256,7 +256,7 @@ export const conditionFields: INodeProperties[] = [ name: 'value', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getGroups', }, @@ -276,7 +276,7 @@ export const conditionFields: INodeProperties[] = [ name: 'value', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getUsers', }, diff --git a/packages/nodes-base/nodes/Zendesk/GenericFunctions.ts b/packages/nodes-base/nodes/Zendesk/GenericFunctions.ts index d38f741e4e..d099493554 100644 --- a/packages/nodes-base/nodes/Zendesk/GenericFunctions.ts +++ b/packages/nodes-base/nodes/Zendesk/GenericFunctions.ts @@ -30,9 +30,9 @@ export async function zendeskApiRequest( let credentials; if (authenticationMethod === 'apiToken') { - credentials = (await this.getCredentials('zendeskApi')) as { subdomain: string }; + credentials = await this.getCredentials<{ subdomain: string }>('zendeskApi'); } else { - credentials = (await this.getCredentials('zendeskOAuth2Api')) as { subdomain: string }; + credentials = await this.getCredentials<{ subdomain: string }>('zendeskOAuth2Api'); } let options: IRequestOptions = { diff --git a/packages/nodes-base/nodes/Zendesk/OrganizationDescription.ts b/packages/nodes-base/nodes/Zendesk/OrganizationDescription.ts index 44a13314f6..88de90131e 100644 --- a/packages/nodes-base/nodes/Zendesk/OrganizationDescription.ts +++ b/packages/nodes-base/nodes/Zendesk/OrganizationDescription.ts @@ -129,7 +129,7 @@ export const organizationFields: INodeProperties[] = [ name: 'field', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getOrganizationFields', }, @@ -154,7 +154,7 @@ export const organizationFields: INodeProperties[] = [ }, default: [], description: - 'IDs of tags applied to this organization. Choose from the list, or specify IDs using an expression.', + 'IDs of tags applied to this organization. Choose from the list, or specify IDs using an expression.', }, ], }, @@ -233,7 +233,7 @@ export const organizationFields: INodeProperties[] = [ name: 'field', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getOrganizationFields', }, @@ -258,7 +258,7 @@ export const organizationFields: INodeProperties[] = [ }, default: [], description: - 'IDs of tags applied to this organization. Choose from the list, or specify IDs using an expression.', + 'IDs of tags applied to this organization. Choose from the list, or specify IDs using an expression.', }, ], }, diff --git a/packages/nodes-base/nodes/Zendesk/TicketDescription.ts b/packages/nodes-base/nodes/Zendesk/TicketDescription.ts index b0835995ae..53a09a3906 100644 --- a/packages/nodes-base/nodes/Zendesk/TicketDescription.ts +++ b/packages/nodes-base/nodes/Zendesk/TicketDescription.ts @@ -120,7 +120,7 @@ export const ticketFields: INodeProperties[] = [ }, default: '', description: - 'Custom field ID. Choose from the list, or specify an ID using an expression.', + 'Custom field ID. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Value', @@ -149,7 +149,7 @@ export const ticketFields: INodeProperties[] = [ }, default: '', description: - 'The group this ticket is assigned to. Choose from the list, or specify an ID using an expression.', + 'The group this ticket is assigned to. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Recipient', @@ -207,7 +207,7 @@ export const ticketFields: INodeProperties[] = [ }, default: [], description: - 'The array of tags applied to this ticket. Choose from the list, or specify IDs using an expression.', + 'The array of tags applied to this ticket. Choose from the list, or specify IDs using an expression.', }, { displayName: 'Type', @@ -327,7 +327,7 @@ export const ticketFields: INodeProperties[] = [ }, default: '', description: - 'Custom field ID. Choose from the list, or specify an ID using an expression.', + 'Custom field ID. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Value', @@ -356,7 +356,7 @@ export const ticketFields: INodeProperties[] = [ }, default: '', description: - 'The group this ticket is assigned to. Choose from the list, or specify an ID using an expression.', + 'The group this ticket is assigned to. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Internal Note', @@ -428,7 +428,7 @@ export const ticketFields: INodeProperties[] = [ }, default: [], description: - 'The array of tags applied to this ticket. Choose from the list, or specify IDs using an expression.', + 'The array of tags applied to this ticket. Choose from the list, or specify IDs using an expression.', }, { displayName: 'Type', @@ -568,7 +568,7 @@ export const ticketFields: INodeProperties[] = [ displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, displayOptions: { show: { @@ -591,7 +591,7 @@ export const ticketFields: INodeProperties[] = [ }, default: '', description: - 'The group to search. Choose from the list, or specify an ID using an expression.', + 'The group to search. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Query', diff --git a/packages/nodes-base/nodes/Zendesk/UserDescription.ts b/packages/nodes-base/nodes/Zendesk/UserDescription.ts index d7651ecc97..b2449eda5f 100644 --- a/packages/nodes-base/nodes/Zendesk/UserDescription.ts +++ b/packages/nodes-base/nodes/Zendesk/UserDescription.ts @@ -142,7 +142,7 @@ export const userFields: INodeProperties[] = [ }, default: '', description: - 'The user\'s locale. Choose from the list, or specify an ID using an expression.', + 'The user\'s locale. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Moderator', @@ -174,7 +174,7 @@ export const userFields: INodeProperties[] = [ type: 'options', default: '', description: - 'The ID of the user\'s organization. If the user has more than one organization memberships, the ID of the user\'s default organization. Choose from the list, or specify an ID using an expression.', + 'The ID of the user\'s organization. If the user has more than one organization memberships, the ID of the user\'s default organization. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Phone', @@ -244,7 +244,7 @@ export const userFields: INodeProperties[] = [ }, default: [], description: - 'The array of tags applied to this user. Choose from the list, or specify IDs using an expression.', + 'The array of tags applied to this user. Choose from the list, or specify IDs using an expression.', }, { displayName: 'Ticket Restriction', @@ -302,7 +302,7 @@ export const userFields: INodeProperties[] = [ }, default: '', description: - 'Name of the field to sort on. Choose from the list, or specify an ID using an expression.', + 'Name of the field to sort on. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Value', @@ -399,7 +399,7 @@ export const userFields: INodeProperties[] = [ }, default: '', description: - 'The user\'s locale. Choose from the list, or specify an ID using an expression.', + 'The user\'s locale. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Moderator', @@ -438,7 +438,7 @@ export const userFields: INodeProperties[] = [ type: 'options', default: '', description: - 'The ID of the user\'s organization. If the user has more than one organization memberships, the ID of the user\'s default organization. Choose from the list, or specify an ID using an expression.', + 'The ID of the user\'s organization. If the user has more than one organization memberships, the ID of the user\'s default organization. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Phone', @@ -508,7 +508,7 @@ export const userFields: INodeProperties[] = [ }, default: [], description: - 'The array of tags applied to this user. Choose from the list, or specify IDs using an expression.', + 'The array of tags applied to this user. Choose from the list, or specify IDs using an expression.', }, { displayName: 'Ticket Restriction', @@ -566,7 +566,7 @@ export const userFields: INodeProperties[] = [ }, default: '', description: - 'Name of the field to sort on. Choose from the list, or specify an ID using an expression.', + 'Name of the field to sort on. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Value', diff --git a/packages/nodes-base/nodes/Zendesk/Zendesk.node.json b/packages/nodes-base/nodes/Zendesk/Zendesk.node.json index 3fbaedd76f..102d2d862c 100644 --- a/packages/nodes-base/nodes/Zendesk/Zendesk.node.json +++ b/packages/nodes-base/nodes/Zendesk/Zendesk.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/zendesk" + "url": "https://docs.n8n.io/integrations/builtin/credentials/zendesk/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Zendesk/Zendesk.node.ts b/packages/nodes-base/nodes/Zendesk/Zendesk.node.ts index 0d82fe3c4d..b83e50c290 100644 --- a/packages/nodes-base/nodes/Zendesk/Zendesk.node.ts +++ b/packages/nodes-base/nodes/Zendesk/Zendesk.node.ts @@ -8,7 +8,7 @@ import type { INodeTypeDescription, JsonObject, } from 'n8n-workflow'; -import { NodeApiError, NodeOperationError } from 'n8n-workflow'; +import { NodeApiError, NodeOperationError, NodeConnectionType } from 'n8n-workflow'; import { validateJSON, zendeskApiRequest, zendeskApiRequestAllItems } from './GenericFunctions'; @@ -34,8 +34,8 @@ export class Zendesk implements INodeType { defaults: { name: 'Zendesk', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'zendeskApi', @@ -792,7 +792,7 @@ export class Zendesk implements INodeType { ); returnData.push(...executionData); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push({ json: { error: error.message } }); continue; } diff --git a/packages/nodes-base/nodes/Zendesk/ZendeskTrigger.node.json b/packages/nodes-base/nodes/Zendesk/ZendeskTrigger.node.json index 3ff440af7b..4b36124167 100644 --- a/packages/nodes-base/nodes/Zendesk/ZendeskTrigger.node.json +++ b/packages/nodes-base/nodes/Zendesk/ZendeskTrigger.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/zendesk" + "url": "https://docs.n8n.io/integrations/builtin/credentials/zendesk/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Zendesk/ZendeskTrigger.node.ts b/packages/nodes-base/nodes/Zendesk/ZendeskTrigger.node.ts index 610eca1920..72115e073e 100644 --- a/packages/nodes-base/nodes/Zendesk/ZendeskTrigger.node.ts +++ b/packages/nodes-base/nodes/Zendesk/ZendeskTrigger.node.ts @@ -8,7 +8,7 @@ import type { INodeTypeDescription, IWebhookResponseData, } from 'n8n-workflow'; -import { NodeOperationError } from 'n8n-workflow'; +import { NodeConnectionType, NodeOperationError } from 'n8n-workflow'; import { zendeskApiRequest, zendeskApiRequestAllItems } from './GenericFunctions'; import { conditionFields } from './ConditionDescription'; @@ -27,7 +27,7 @@ export class ZendeskTrigger implements INodeType { name: 'Zendesk Trigger', }, inputs: [], - outputs: ['main'], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'zendeskApi', @@ -101,7 +101,7 @@ export class ZendeskTrigger implements INodeType { displayName: 'Field Names or IDs', name: 'fields', description: - 'The fields to return the values of. Choose from the list, or specify IDs using an expression.', + 'The fields to return the values of. Choose from the list, or specify IDs using an expression.', type: 'multiOptions', default: [], typeOptions: { @@ -109,7 +109,7 @@ export class ZendeskTrigger implements INodeType { }, }, ], - placeholder: 'Add Option', + placeholder: 'Add option', }, { displayName: 'Conditions', diff --git a/packages/nodes-base/nodes/Zoho/ZohoCrm.node.json b/packages/nodes-base/nodes/Zoho/ZohoCrm.node.json index f1dc8fc639..bf1e533627 100644 --- a/packages/nodes-base/nodes/Zoho/ZohoCrm.node.json +++ b/packages/nodes-base/nodes/Zoho/ZohoCrm.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/zoho" + "url": "https://docs.n8n.io/integrations/builtin/credentials/zoho/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Zoho/ZohoCrm.node.ts b/packages/nodes-base/nodes/Zoho/ZohoCrm.node.ts index c7cc56a5b1..e1cd2135be 100644 --- a/packages/nodes-base/nodes/Zoho/ZohoCrm.node.ts +++ b/packages/nodes-base/nodes/Zoho/ZohoCrm.node.ts @@ -1,10 +1,11 @@ -import type { - IExecuteFunctions, - IDataObject, - ILoadOptionsFunctions, - INodeExecutionData, - INodeType, - INodeTypeDescription, +import { + type IExecuteFunctions, + type IDataObject, + type ILoadOptionsFunctions, + type INodeExecutionData, + type INodeType, + type INodeTypeDescription, + NodeConnectionType, } from 'n8n-workflow'; import { @@ -77,8 +78,8 @@ export class ZohoCrm implements INodeType { defaults: { name: 'Zoho CRM', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'zohoOAuth2Api', @@ -1318,7 +1319,7 @@ export class ZohoCrm implements INodeType { } } } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { returnData.push({ error: error.message, json: {} }); continue; } diff --git a/packages/nodes-base/nodes/Zoho/descriptions/AccountDescription.ts b/packages/nodes-base/nodes/Zoho/descriptions/AccountDescription.ts index c75cd14812..e64e346db6 100644 --- a/packages/nodes-base/nodes/Zoho/descriptions/AccountDescription.ts +++ b/packages/nodes-base/nodes/Zoho/descriptions/AccountDescription.ts @@ -132,7 +132,7 @@ export const accountFields: INodeProperties[] = [ name: 'Account_Type', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getAccountType', }, @@ -309,7 +309,7 @@ export const accountFields: INodeProperties[] = [ name: 'Account_Type', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getAccountType', }, diff --git a/packages/nodes-base/nodes/Zoho/descriptions/DealDescription.ts b/packages/nodes-base/nodes/Zoho/descriptions/DealDescription.ts index 87834bf3aa..b20717a99e 100644 --- a/packages/nodes-base/nodes/Zoho/descriptions/DealDescription.ts +++ b/packages/nodes-base/nodes/Zoho/descriptions/DealDescription.ts @@ -99,7 +99,7 @@ export const dealFields: INodeProperties[] = [ name: 'stage', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', required: true, default: [], typeOptions: { @@ -343,7 +343,7 @@ export const dealFields: INodeProperties[] = [ name: 'Stage', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', typeOptions: { loadOptionsMethod: 'getDealStage', }, diff --git a/packages/nodes-base/nodes/Zoho/descriptions/InvoiceDescription.ts b/packages/nodes-base/nodes/Zoho/descriptions/InvoiceDescription.ts index 5d474855bf..aedcd8d2fd 100644 --- a/packages/nodes-base/nodes/Zoho/descriptions/InvoiceDescription.ts +++ b/packages/nodes-base/nodes/Zoho/descriptions/InvoiceDescription.ts @@ -143,7 +143,7 @@ export const invoiceFields: INodeProperties[] = [ loadOptionsMethod: 'getAccounts', }, description: - 'ID of the account associated with this invoice. Choose from the list, or specify an ID using an expression.', + 'ID of the account associated with this invoice. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Adjustment', @@ -319,7 +319,7 @@ export const invoiceFields: INodeProperties[] = [ loadOptionsMethod: 'getAccounts', }, description: - 'ID of the account associated with this invoice. Choose from the list, or specify an ID using an expression.', + 'ID of the account associated with this invoice. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Adjustment', diff --git a/packages/nodes-base/nodes/Zoho/descriptions/PurchaseOrderDescription.ts b/packages/nodes-base/nodes/Zoho/descriptions/PurchaseOrderDescription.ts index e74657010f..879ffacdfe 100644 --- a/packages/nodes-base/nodes/Zoho/descriptions/PurchaseOrderDescription.ts +++ b/packages/nodes-base/nodes/Zoho/descriptions/PurchaseOrderDescription.ts @@ -112,7 +112,7 @@ export const purchaseOrderFields: INodeProperties[] = [ loadOptionsMethod: 'getVendors', }, description: - 'ID of the vendor associated with the purchase order. Choose from the list, or specify an ID using an expression.', + 'ID of the vendor associated with the purchase order. Choose from the list, or specify an ID using an expression.', displayOptions: { show: { resource: ['purchaseOrder'], @@ -299,7 +299,7 @@ export const purchaseOrderFields: INodeProperties[] = [ loadOptionsMethod: 'getPurchaseOrderStatus', }, description: - 'Status of the purchase order. Choose from the list, or specify an ID using an expression.', + 'Status of the purchase order. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Sub Total', @@ -512,7 +512,7 @@ export const purchaseOrderFields: INodeProperties[] = [ loadOptionsMethod: 'getPurchaseOrderStatus', }, description: - 'Status of the purchase order. Choose from the list, or specify an ID using an expression.', + 'Status of the purchase order. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Sub Total', diff --git a/packages/nodes-base/nodes/Zoho/descriptions/QuoteDescription.ts b/packages/nodes-base/nodes/Zoho/descriptions/QuoteDescription.ts index 36c8860bd6..30b764449e 100644 --- a/packages/nodes-base/nodes/Zoho/descriptions/QuoteDescription.ts +++ b/packages/nodes-base/nodes/Zoho/descriptions/QuoteDescription.ts @@ -195,7 +195,7 @@ export const quoteFields: INodeProperties[] = [ loadOptionsMethod: 'getQuoteStage', }, description: - 'Stage of the quote. Choose from the list, or specify an ID using an expression.', + 'Stage of the quote. Choose from the list, or specify an ID using an expression.', }, shippingAddress, { @@ -374,7 +374,7 @@ export const quoteFields: INodeProperties[] = [ loadOptionsMethod: 'getQuoteStage', }, description: - 'Stage of the quote. Choose from the list, or specify an ID using an expression.', + 'Stage of the quote. Choose from the list, or specify an ID using an expression.', }, shippingAddress, { diff --git a/packages/nodes-base/nodes/Zoho/descriptions/SalesOrderDescription.ts b/packages/nodes-base/nodes/Zoho/descriptions/SalesOrderDescription.ts index 4e25e4b529..a6d253dcbc 100644 --- a/packages/nodes-base/nodes/Zoho/descriptions/SalesOrderDescription.ts +++ b/packages/nodes-base/nodes/Zoho/descriptions/SalesOrderDescription.ts @@ -72,7 +72,7 @@ export const salesOrderFields: INodeProperties[] = [ required: true, type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', default: [], typeOptions: { loadOptionsMethod: 'getAccounts', @@ -179,7 +179,7 @@ export const salesOrderFields: INodeProperties[] = [ name: 'contactId', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', default: [], typeOptions: { loadOptionsMethod: 'getContacts', @@ -199,7 +199,7 @@ export const salesOrderFields: INodeProperties[] = [ name: 'dealId', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', default: [], typeOptions: { loadOptionsMethod: 'getDeals', @@ -275,7 +275,7 @@ export const salesOrderFields: INodeProperties[] = [ loadOptionsMethod: 'getSalesOrderStatus', }, description: - 'Status of the sales order. Choose from the list, or specify an ID using an expression.', + 'Status of the sales order. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Sub Total', @@ -387,7 +387,7 @@ export const salesOrderFields: INodeProperties[] = [ loadOptionsMethod: 'getAccounts', }, description: - 'ID of the account associated with this invoice. Choose from the list, or specify an ID using an expression.', + 'ID of the account associated with this invoice. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Adjustment', @@ -412,7 +412,7 @@ export const salesOrderFields: INodeProperties[] = [ name: 'contactId', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', default: [], typeOptions: { loadOptionsMethod: 'getContacts', @@ -432,7 +432,7 @@ export const salesOrderFields: INodeProperties[] = [ name: 'dealId', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', default: [], typeOptions: { loadOptionsMethod: 'getDeals', @@ -507,7 +507,7 @@ export const salesOrderFields: INodeProperties[] = [ loadOptionsMethod: 'getSalesOrderStatus', }, description: - 'Status of the sales order. Choose from the list, or specify an ID using an expression.', + 'Status of the sales order. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Sub Total', diff --git a/packages/nodes-base/nodes/Zoho/descriptions/SharedFields.ts b/packages/nodes-base/nodes/Zoho/descriptions/SharedFields.ts index 8e8d632ae9..6e79c724b1 100644 --- a/packages/nodes-base/nodes/Zoho/descriptions/SharedFields.ts +++ b/packages/nodes-base/nodes/Zoho/descriptions/SharedFields.ts @@ -258,7 +258,7 @@ export const productDetailsOptions: INodeProperties[] = [ name: 'id', type: 'options', description: - 'Choose from the list, or specify an ID using an expression', + 'Choose from the list, or specify an ID using an expression', default: [], typeOptions: { loadOptionsMethod: 'getProducts', @@ -353,7 +353,7 @@ export const makeGetAllFields = (resource: CamelCaseResource): INodeProperties[] displayName: 'Options', name: 'options', type: 'collection', - placeholder: 'Add Option', + placeholder: 'Add option', default: {}, displayOptions: { show: { diff --git a/packages/nodes-base/nodes/Zoom/MeetingDescription.ts b/packages/nodes-base/nodes/Zoom/MeetingDescription.ts index 2faeea0160..8ca6cd61a8 100644 --- a/packages/nodes-base/nodes/Zoom/MeetingDescription.ts +++ b/packages/nodes-base/nodes/Zoom/MeetingDescription.ts @@ -254,7 +254,7 @@ export const meetingFields: INodeProperties[] = [ }, default: '', description: - 'Time zone used in the response. The default is the time zone of the calendar. Choose from the list, or specify an ID using an expression.', + 'Time zone used in the response. The default is the time zone of the calendar. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Type', @@ -655,7 +655,7 @@ export const meetingFields: INodeProperties[] = [ }, default: '', description: - 'Time zone used in the response. The default is the time zone of the calendar. Choose from the list, or specify an ID using an expression.', + 'Time zone used in the response. The default is the time zone of the calendar. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Topic', diff --git a/packages/nodes-base/nodes/Zoom/WebinarDescription.ts b/packages/nodes-base/nodes/Zoom/WebinarDescription.ts index f232b93494..2e1d02fd18 100644 --- a/packages/nodes-base/nodes/Zoom/WebinarDescription.ts +++ b/packages/nodes-base/nodes/Zoom/WebinarDescription.ts @@ -229,7 +229,7 @@ export const webinarFields: INodeProperties[] = [ }, default: '', description: - 'Time zone used in the response. The default is the time zone of the calendar. Choose from the list, or specify an ID using an expression.', + 'Time zone used in the response. The default is the time zone of the calendar. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Webinar Topic', @@ -576,7 +576,7 @@ export const webinarFields: INodeProperties[] = [ }, default: '', description: - 'Time zone used in the response. The default is the time zone of the calendar. Choose from the list, or specify an ID using an expression.', + 'Time zone used in the response. The default is the time zone of the calendar. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Webinar Topic', diff --git a/packages/nodes-base/nodes/Zoom/Zoom.node.json b/packages/nodes-base/nodes/Zoom/Zoom.node.json index 758432d162..84a12d500e 100644 --- a/packages/nodes-base/nodes/Zoom/Zoom.node.json +++ b/packages/nodes-base/nodes/Zoom/Zoom.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/zoom" + "url": "https://docs.n8n.io/integrations/builtin/credentials/zoom/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Zoom/Zoom.node.ts b/packages/nodes-base/nodes/Zoom/Zoom.node.ts index 9af800bbd6..2937ffa2f9 100644 --- a/packages/nodes-base/nodes/Zoom/Zoom.node.ts +++ b/packages/nodes-base/nodes/Zoom/Zoom.node.ts @@ -1,11 +1,12 @@ -import type { - IExecuteFunctions, - IDataObject, - ILoadOptionsFunctions, - INodeExecutionData, - INodePropertyOptions, - INodeType, - INodeTypeDescription, +import { + type IExecuteFunctions, + type IDataObject, + type ILoadOptionsFunctions, + type INodeExecutionData, + type INodePropertyOptions, + type INodeType, + type INodeTypeDescription, + NodeConnectionType, } from 'n8n-workflow'; import moment from 'moment-timezone'; @@ -53,8 +54,8 @@ export class Zoom implements INodeType { name: 'Zoom', }, icon: 'file:zoom.svg', - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { // create a JWT app on Zoom Marketplace @@ -778,7 +779,7 @@ export class Zoom implements INodeType { ); returnData.push(...executionData); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { const executionErrorData = { json: {} as IDataObject, error: error.message, diff --git a/packages/nodes-base/nodes/Zulip/MessageDescription.ts b/packages/nodes-base/nodes/Zulip/MessageDescription.ts index c8f0efc339..67dfef346a 100644 --- a/packages/nodes-base/nodes/Zulip/MessageDescription.ts +++ b/packages/nodes-base/nodes/Zulip/MessageDescription.ts @@ -73,7 +73,7 @@ export const messageFields: INodeProperties[] = [ }, }, description: - 'The destination stream, or a comma-separated list containing the usernames (emails) of the recipients. Choose from the list, or specify IDs using an expression.', + 'The destination stream, or a comma-separated list containing the usernames (emails) of the recipients. Choose from the list, or specify IDs using an expression.', }, { displayName: 'Content', @@ -108,7 +108,7 @@ export const messageFields: INodeProperties[] = [ }, }, description: - 'The destination stream, or a comma-separated list containing the usernames (emails) of the recipients. Choose from the list, or specify an ID using an expression.', + 'The destination stream, or a comma-separated list containing the usernames (emails) of the recipients. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Topic Name or ID', @@ -127,7 +127,7 @@ export const messageFields: INodeProperties[] = [ }, default: '', description: - 'The topic of the message. Only required if type is stream, ignored otherwise. Choose from the list, or specify an ID using an expression.', + 'The topic of the message. Only required if type is stream, ignored otherwise. Choose from the list, or specify an ID using an expression.', }, { displayName: 'Content', diff --git a/packages/nodes-base/nodes/Zulip/Zulip.node.json b/packages/nodes-base/nodes/Zulip/Zulip.node.json index 6dac0902dd..82638e2a82 100644 --- a/packages/nodes-base/nodes/Zulip/Zulip.node.json +++ b/packages/nodes-base/nodes/Zulip/Zulip.node.json @@ -6,7 +6,7 @@ "resources": { "credentialDocumentation": [ { - "url": "https://docs.n8n.io/credentials/zulip" + "url": "https://docs.n8n.io/integrations/builtin/credentials/zulip/" } ], "primaryDocumentation": [ diff --git a/packages/nodes-base/nodes/Zulip/Zulip.node.ts b/packages/nodes-base/nodes/Zulip/Zulip.node.ts index 034f2ef9b8..7caa98132c 100644 --- a/packages/nodes-base/nodes/Zulip/Zulip.node.ts +++ b/packages/nodes-base/nodes/Zulip/Zulip.node.ts @@ -7,7 +7,7 @@ import type { INodeType, INodeTypeDescription, } from 'n8n-workflow'; -import { NodeOperationError } from 'n8n-workflow'; +import { NodeConnectionType, NodeOperationError } from 'n8n-workflow'; import { snakeCase } from 'change-case'; import { validateJSON, zulipApiRequest } from './GenericFunctions'; import { messageFields, messageOperations } from './MessageDescription'; @@ -29,8 +29,8 @@ export class Zulip implements INodeType { defaults: { name: 'Zulip', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'zulipApi', @@ -457,7 +457,7 @@ export class Zulip implements INodeType { ); returnData.push(...executionData); } catch (error) { - if (this.continueOnFail(error)) { + if (this.continueOnFail()) { const executionData = this.helpers.constructExecutionMetaData( this.helpers.returnJsonArray({ error: error.message }), { itemData: { item: i } }, diff --git a/packages/nodes-base/package.json b/packages/nodes-base/package.json index 4b9d1d6ab0..f81ce3b248 100644 --- a/packages/nodes-base/package.json +++ b/packages/nodes-base/package.json @@ -1,25 +1,16 @@ { "name": "n8n-nodes-base", - "version": "1.48.0", + "version": "1.65.0", "description": "Base nodes of n8n", - "license": "SEE LICENSE IN LICENSE.md", - "homepage": "https://n8n.io", - "author": { - "name": "Jan Oberhauser", - "email": "jan@n8n.io" - }, "main": "index.js", - "repository": { - "type": "git", - "url": "git+https://github.com/n8n-io/n8n.git" - }, "scripts": { "clean": "rimraf dist .turbo", "dev": "pnpm watch", "typecheck": "tsc --noEmit", "build": "tsc -p tsconfig.build.json && tsc-alias -p tsconfig.build.json && pnpm n8n-copy-icons && pnpm n8n-generate-translations && pnpm build:metadata", "build:metadata": "pnpm n8n-generate-known && pnpm n8n-generate-ui-types", - "format": "prettier --write . --ignore-path ../../.prettierignore", + "format": "biome format --write .", + "format:check": "biome ci .", "lint": "eslint . --quiet && node ./scripts/validate-load-options-methods.js", "lintfix": "eslint . --fix", "watch": "tsc-watch -p tsconfig.build.json --onCompilationComplete \"tsc-alias -p tsconfig.build.json\" --onSuccess \"pnpm n8n-generate-ui-types\"", @@ -62,6 +53,7 @@ "dist/credentials/BubbleApi.credentials.js", "dist/credentials/CalApi.credentials.js", "dist/credentials/CalendlyApi.credentials.js", + "dist/credentials/CalendlyOAuth2Api.credentials.js", "dist/credentials/CarbonBlackApi.credentials.js", "dist/credentials/ChargebeeApi.credentials.js", "dist/credentials/CircleCiApi.credentials.js", @@ -69,7 +61,6 @@ "dist/credentials/CiscoSecureEndpointApi.credentials.js", "dist/credentials/CiscoWebexOAuth2Api.credentials.js", "dist/credentials/CiscoUmbrellaApi.credentials.js", - "dist/credentials/CitrixAdcApi.credentials.js", "dist/credentials/CloudflareApi.credentials.js", "dist/credentials/ClearbitApi.credentials.js", "dist/credentials/ClickUpApi.credentials.js", @@ -85,8 +76,10 @@ "dist/credentials/CrowdStrikeOAuth2Api.credentials.js", "dist/credentials/CrowdDevApi.credentials.js", "dist/credentials/CustomerIoApi.credentials.js", + "dist/credentials/DatadogApi.credentials.js", "dist/credentials/DeepLApi.credentials.js", "dist/credentials/DemioApi.credentials.js", + "dist/credentials/DfirIrisApi.credentials.js", "dist/credentials/DhlApi.credentials.js", "dist/credentials/DiscordBotApi.credentials.js", "dist/credentials/DiscordOAuth2Api.credentials.js", @@ -98,6 +91,7 @@ "dist/credentials/DropboxApi.credentials.js", "dist/credentials/DropboxOAuth2Api.credentials.js", "dist/credentials/DropcontactApi.credentials.js", + "dist/credentials/DynatraceApi.credentials.js", "dist/credentials/EgoiApi.credentials.js", "dist/credentials/ElasticsearchApi.credentials.js", "dist/credentials/ElasticSecurityApi.credentials.js", @@ -111,6 +105,7 @@ "dist/credentials/FacebookLeadAdsOAuth2Api.credentials.js", "dist/credentials/FigmaApi.credentials.js", "dist/credentials/FileMaker.credentials.js", + "dist/credentials/FilescanApi.credentials.js", "dist/credentials/FlowApi.credentials.js", "dist/credentials/FormIoApi.credentials.js", "dist/credentials/FormstackApi.credentials.js", @@ -130,6 +125,8 @@ "dist/credentials/GitlabOAuth2Api.credentials.js", "dist/credentials/GitPassword.credentials.js", "dist/credentials/GmailOAuth2Api.credentials.js", + "dist/credentials/GongApi.credentials.js", + "dist/credentials/GongOAuth2Api.credentials.js", "dist/credentials/GoogleAdsOAuth2Api.credentials.js", "dist/credentials/GoogleAnalyticsOAuth2Api.credentials.js", "dist/credentials/GoogleApi.credentials.js", @@ -143,6 +140,7 @@ "dist/credentials/GoogleDriveOAuth2Api.credentials.js", "dist/credentials/GoogleFirebaseCloudFirestoreOAuth2Api.credentials.js", "dist/credentials/GoogleFirebaseRealtimeDatabaseOAuth2Api.credentials.js", + "dist/credentials/GoogleBusinessProfileOAuth2Api.credentials.js", "dist/credentials/GoogleOAuth2Api.credentials.js", "dist/credentials/GooglePerspectiveOAuth2Api.credentials.js", "dist/credentials/GoogleSheetsOAuth2Api.credentials.js", @@ -208,6 +206,7 @@ "dist/credentials/MailgunApi.credentials.js", "dist/credentials/MailjetEmailApi.credentials.js", "dist/credentials/MailjetSmsApi.credentials.js", + "dist/credentials/MalcoreApi.credentials.js", "dist/credentials/MandrillApi.credentials.js", "dist/credentials/MarketstackApi.credentials.js", "dist/credentials/MatrixApi.credentials.js", @@ -244,6 +243,7 @@ "dist/credentials/N8nApi.credentials.js", "dist/credentials/NasaApi.credentials.js", "dist/credentials/NetlifyApi.credentials.js", + "dist/credentials/NetscalerAdcApi.credentials.js", "dist/credentials/NextCloudApi.credentials.js", "dist/credentials/NextCloudOAuth2Api.credentials.js", "dist/credentials/NocoDb.credentials.js", @@ -334,6 +334,7 @@ "dist/credentials/SurveyMonkeyApi.credentials.js", "dist/credentials/SurveyMonkeyOAuth2Api.credentials.js", "dist/credentials/SyncroMspApi.credentials.js", + "dist/credentials/SysdigApi.credentials.js", "dist/credentials/TaigaApi.credentials.js", "dist/credentials/TapfiliateApi.credentials.js", "dist/credentials/TelegramApi.credentials.js", @@ -399,6 +400,7 @@ "dist/nodes/AgileCrm/AgileCrm.node.js", "dist/nodes/Airtable/Airtable.node.js", "dist/nodes/Airtable/AirtableTrigger.node.js", + "dist/nodes/AiTransform/AiTransform.node.js", "dist/nodes/Amqp/Amqp.node.js", "dist/nodes/Amqp/AmqpTrigger.node.js", "dist/nodes/ApiTemplateIo/ApiTemplateIo.node.js", @@ -437,7 +439,6 @@ "dist/nodes/Chargebee/ChargebeeTrigger.node.js", "dist/nodes/CircleCi/CircleCi.node.js", "dist/nodes/Cisco/Webex/CiscoWebex.node.js", - "dist/nodes/Citrix/ADC/CitrixAdc.node.js", "dist/nodes/Cisco/Webex/CiscoWebexTrigger.node.js", "dist/nodes/Cloudflare/Cloudflare.node.js", "dist/nodes/Clearbit/Clearbit.node.js", @@ -502,6 +503,7 @@ "dist/nodes/Filter/Filter.node.js", "dist/nodes/Flow/Flow.node.js", "dist/nodes/Flow/FlowTrigger.node.js", + "dist/nodes/Form/Form.node.js", "dist/nodes/Form/FormTrigger.node.js", "dist/nodes/FormIo/FormIoTrigger.node.js", "dist/nodes/Formstack/FormstackTrigger.node.js", @@ -519,6 +521,7 @@ "dist/nodes/Github/GithubTrigger.node.js", "dist/nodes/Gitlab/Gitlab.node.js", "dist/nodes/Gitlab/GitlabTrigger.node.js", + "dist/nodes/Gong/Gong.node.js", "dist/nodes/Google/Ads/GoogleAds.node.js", "dist/nodes/Google/Analytics/GoogleAnalytics.node.js", "dist/nodes/Google/BigQuery/GoogleBigQuery.node.js", @@ -537,6 +540,8 @@ "dist/nodes/Google/Gmail/Gmail.node.js", "dist/nodes/Google/Gmail/GmailTrigger.node.js", "dist/nodes/Google/GSuiteAdmin/GSuiteAdmin.node.js", + "dist/nodes/Google/BusinessProfile/GoogleBusinessProfile.node.js", + "dist/nodes/Google/BusinessProfile/GoogleBusinessProfileTrigger.node.js", "dist/nodes/Google/Perspective/GooglePerspective.node.js", "dist/nodes/Google/Sheet/GoogleSheets.node.js", "dist/nodes/Google/Sheet/GoogleSheetsTrigger.node.js", @@ -652,10 +657,12 @@ "dist/nodes/NoOp/NoOp.node.js", "dist/nodes/Onfleet/Onfleet.node.js", "dist/nodes/Onfleet/OnfleetTrigger.node.js", + "dist/nodes/Netscaler/ADC/NetscalerAdc.node.js", "dist/nodes/Notion/Notion.node.js", "dist/nodes/Notion/NotionTrigger.node.js", "dist/nodes/Npm/Npm.node.js", "dist/nodes/Odoo/Odoo.node.js", + "dist/nodes/Okta/Okta.node.js", "dist/nodes/OneSimpleApi/OneSimpleApi.node.js", "dist/nodes/OpenAi/OpenAi.node.js", "dist/nodes/OpenThesaurus/OpenThesaurus.node.js", @@ -812,52 +819,52 @@ "devDependencies": { "@types/amqplib": "^0.10.1", "@types/aws4": "^1.5.1", - "@types/basic-auth": "^1.1.3", + "@types/basic-auth": "catalog:", "@types/cheerio": "^0.22.15", - "@types/cron": "~1.7.1", "@types/eventsource": "^1.1.2", - "@types/express": "^4.17.21", + "@types/express": "catalog:", "@types/html-to-text": "^9.0.1", "@types/gm": "^1.25.0", "@types/js-nacl": "^1.3.0", "@types/jsonwebtoken": "^9.0.6", - "@types/lodash": "^4.14.195", + "@types/lodash": "catalog:", "@types/lossless-json": "^1.0.0", "@types/mailparser": "^3.4.4", "@types/mime-types": "^2.1.0", "@types/mssql": "^9.1.5", - "@types/node-ssh": "^7.0.1", "@types/nodemailer": "^6.4.14", "@types/promise-ftp": "^1.3.4", "@types/rfc2047": "^2.0.1", "@types/showdown": "^1.9.4", - "@types/snowflake-sdk": "^1.6.20", + "@types/snowflake-sdk": "^1.6.24", "@types/ssh2-sftp-client": "^5.1.0", - "@types/tmp": "^0.2.0", - "@types/uuid": "^8.3.2", - "@types/xml2js": "^0.4.14", - "eslint-plugin-n8n-nodes-base": "^1.16.0", + "@types/uuid": "catalog:", + "@types/xml2js": "catalog:", + "eslint-plugin-n8n-nodes-base": "^1.16.3", "n8n-core": "workspace:*" }, "dependencies": { + "@aws-sdk/client-sso-oidc": "3.666.0", "@kafkajs/confluent-schema-registry": "1.0.6", + "@n8n/config": "workspace:*", "@n8n/imap": "workspace:*", - "@n8n/vm2": "3.9.20", + "@n8n/vm2": "3.9.25", + "alasql": "4.4.0", "amqplib": "0.10.3", "aws4": "1.11.0", - "basic-auth": "2.0.1", + "basic-auth": "catalog:", "change-case": "4.1.2", "cheerio": "1.0.0-rc.6", - "chokidar": "3.5.2", - "cron": "1.7.2", + "chokidar": "catalog:", + "cron": "3.1.7", "csv-parse": "5.5.0", "currency-codes": "2.1.0", "eventsource": "2.0.2", - "html-to-text": "9.0.5", - "fast-glob": "3.2.12", + "fast-glob": "catalog:", "fflate": "0.7.4", "get-system-fonts": "2.0.2", "gm": "1.25.0", + "html-to-text": "9.0.5", "iconv-lite": "0.6.3", "ics": "2.40.0", "isbot": "3.6.13", @@ -866,43 +873,41 @@ "jsonwebtoken": "9.0.2", "kafkajs": "1.16.0", "ldapts": "4.2.6", - "lodash": "4.17.21", + "lodash": "catalog:", "lossless-json": "1.0.5", - "luxon": "3.3.0", + "luxon": "catalog:", "mailparser": "3.6.7", "minifaker": "1.34.1", "moment-timezone": "0.5.37", "mongodb": "6.3.0", "mqtt": "5.7.2", "mssql": "10.0.2", - "mysql2": "3.10.0", + "mysql2": "3.11.0", "n8n-workflow": "workspace:*", - "nanoid": "3.3.6", "node-html-markdown": "1.2.0", - "node-ssh": "12.0.5", + "node-ssh": "13.2.0", "nodemailer": "6.9.9", "otpauth": "9.1.1", "pdfjs-dist": "2.16.105", - "pg": "8.11.3", - "pg-promise": "10.15.4", - "pretty-bytes": "5.6.0", + "pg-promise": "11.9.1", + "pg": "8.12.0", "promise-ftp": "1.3.5", "pyodide": "0.23.4", "redis": "4.6.14", "rfc2047": "4.0.1", "rhea": "1.0.24", - "rrule": "^2.8.1", + "rrule": "2.8.1", "rss-parser": "3.13.0", "semver": "7.5.4", "showdown": "2.1.0", "simple-git": "3.17.0", - "snowflake-sdk": "1.9.2", + "snowflake-sdk": "1.12.0", "ssh2-sftp-client": "7.2.3", "tmp-promise": "3.0.3", - "ts-ics": "^1.2.2", - "typedi": "0.10.0", - "uuid": "8.3.2", + "ts-ics": "1.2.2", + "typedi": "catalog:", + "uuid": "catalog:", "xlsx": "https://cdn.sheetjs.com/xlsx-0.20.2/xlsx-0.20.2.tgz", - "xml2js": "0.6.2" + "xml2js": "catalog:" } } diff --git a/packages/nodes-base/test/nodes/ExecuteWorkflow.ts b/packages/nodes-base/test/nodes/ExecuteWorkflow.ts index 0f36360fcd..ffb79a78ed 100644 --- a/packages/nodes-base/test/nodes/ExecuteWorkflow.ts +++ b/packages/nodes-base/test/nodes/ExecuteWorkflow.ts @@ -22,7 +22,7 @@ export async function executeWorkflow(testData: WorkflowTestData, nodeTypes: INo nodeTypes, settings: testData.input.workflowData.settings, }); - const waitPromise = await createDeferredPromise(); + const waitPromise = createDeferredPromise(); const nodeExecutionOrder: string[] = []; const additionalData = Helpers.WorkflowExecuteAdditionalData(waitPromise, nodeExecutionOrder); @@ -50,6 +50,6 @@ export async function executeWorkflow(testData: WorkflowTestData, nodeTypes: INo const workflowExecute = new WorkflowExecute(additionalData, executionMode, runExecutionData); executionData = await workflowExecute.processRunExecutionData(workflowInstance); - const result = await waitPromise.promise(); + const result = await waitPromise.promise; return { executionData, result, nodeExecutionOrder }; } diff --git a/packages/nodes-base/test/nodes/FakeCredentialsMap.ts b/packages/nodes-base/test/nodes/FakeCredentialsMap.ts index fbf6d00b71..eaccd22fdc 100644 --- a/packages/nodes-base/test/nodes/FakeCredentialsMap.ts +++ b/packages/nodes-base/test/nodes/FakeCredentialsMap.ts @@ -54,6 +54,32 @@ BQIDAQAB airtableApi: { apiKey: 'key123', }, + gongApi: { + baseUrl: 'https://api.gong.io', + accessKey: 'accessKey123', + accessKeySecret: 'accessKeySecret123', + }, + gongOAuth2Api: { + grantType: 'authorizationCode', + authUrl: 'https://app.gong.io/oauth2/authorize', + accessTokenUrl: 'https://app.gong.io/oauth2/generate-customer-token', + clientId: 'CLIENTID', + clientSecret: 'CLIENTSECRET', + scope: + 'api:calls:read:transcript api:provisioning:read api:workspaces:read api:meetings:user:delete api:crm:get-objects api:data-privacy:delete api:crm:schema api:flows:write api:crm:upload api:meetings:integration:status api:calls:read:extensive api:meetings:user:update api:integration-settings:write api:settings:scorecards:read api:stats:scorecards api:stats:interaction api:stats:user-actions api:crm:integration:delete api:calls:read:basic api:calls:read:media-url api:digital-interactions:write api:crm:integrations:read api:library:read api:data-privacy:read api:users:read api:logs:read api:calls:create api:meetings:user:create api:stats:user-actions:detailed api:settings:trackers:read api:crm:integration:register api:provisioning:read-write api:engagement-data:write api:permission-profile:read api:permission-profile:write api:flows:read api:crm-calls:manual-association:read', + authQueryParameters: '', + authentication: 'header', + oauthTokenData: { + access_token: 'ACCESSTOKEN', + refresh_token: 'REFRESHTOKEN', + scope: + 'api:calls:read:transcript api:provisioning:read api:workspaces:read api:meetings:user:delete api:crm:get-objects api:data-privacy:delete api:crm:schema api:flows:write api:crm:upload api:meetings:integration:status api:calls:read:extensive api:meetings:user:update api:integration-settings:write api:settings:scorecards:read api:stats:scorecards api:stats:interaction api:stats:user-actions api:crm:integration:delete api:calls:read:basic api:calls:read:media-url api:digital-interactions:write api:crm:integrations:read api:library:read api:data-privacy:read api:users:read api:logs:read api:calls:create api:meetings:user:create api:stats:user-actions:detailed api:settings:trackers:read api:crm:integration:register api:provisioning:read-write api:engagement-data:write api:permission-profile:read api:permission-profile:write api:flows:read api:crm-calls:manual-association:read', + token_type: 'bearer', + expires_in: 86400, + api_base_url_for_customer: 'https://api.gong.io', + }, + baseUrl: 'https://api.gong.io', + }, n8nApi: { apiKey: 'key123', baseUrl: 'https://test.app.n8n.cloud/api/v1', diff --git a/packages/nodes-base/test/nodes/Helpers.ts b/packages/nodes-base/test/nodes/Helpers.ts index 14d9494e03..98e8ebf918 100644 --- a/packages/nodes-base/test/nodes/Helpers.ts +++ b/packages/nodes-base/test/nodes/Helpers.ts @@ -94,7 +94,7 @@ class CredentialType implements ICredentialTypes { const credentialTypes = new CredentialType(); -class CredentialsHelper extends ICredentialsHelper { +export class CredentialsHelper extends ICredentialsHelper { getCredentialsProperties() { return []; } @@ -167,6 +167,8 @@ export function WorkflowExecuteAdditionalData( return mock({ credentialsHelper: new CredentialsHelper(), hooks: new WorkflowHooks(hookFunctions, 'trigger', '1', mock()), + // Get from node.parameters + currentNodeParameters: undefined, }); } diff --git a/packages/nodes-base/test/nodes/TriggerHelpers.ts b/packages/nodes-base/test/nodes/TriggerHelpers.ts new file mode 100644 index 0000000000..93b4dfae9e --- /dev/null +++ b/packages/nodes-base/test/nodes/TriggerHelpers.ts @@ -0,0 +1,241 @@ +import type * as express from 'express'; +import { mock } from 'jest-mock-extended'; +import get from 'lodash/get'; +import merge from 'lodash/merge'; +import set from 'lodash/set'; +import { getExecutePollFunctions, returnJsonArray, type InstanceSettings } from 'n8n-core'; +import { ScheduledTaskManager } from 'n8n-core/dist/ScheduledTaskManager'; +import type { + IBinaryData, + ICredentialDataDecryptedObject, + IDataObject, + IHttpRequestOptions, + INode, + INodeType, + INodeTypes, + IPollFunctions, + ITriggerFunctions, + IWebhookFunctions, + IWorkflowExecuteAdditionalData, + NodeTypeAndVersion, + VersionedNodeType, + Workflow, + WorkflowHooks, +} from 'n8n-workflow'; + +type MockDeepPartial = Parameters>[0]; + +type TestTriggerNodeOptions = { + mode?: 'manual' | 'trigger'; + node?: MockDeepPartial; + timezone?: string; + workflowStaticData?: IDataObject; + credential?: ICredentialDataDecryptedObject; +}; + +type TestWebhookTriggerNodeOptions = TestTriggerNodeOptions & { + webhookName?: string; + request?: MockDeepPartial; + bodyData?: IDataObject; + childNodes?: NodeTypeAndVersion[]; +}; + +type TestPollingTriggerNodeOptions = TestTriggerNodeOptions & {}; + +function getNodeVersion(Trigger: new () => VersionedNodeType, version?: number) { + const instance = new Trigger(); + return instance.nodeVersions[version ?? instance.currentVersion]; +} + +export async function testVersionedTriggerNode( + Trigger: new () => VersionedNodeType, + version?: number, + options: TestTriggerNodeOptions = {}, +) { + return await testTriggerNode(getNodeVersion(Trigger, version), options); +} + +export async function testTriggerNode( + Trigger: (new () => INodeType) | INodeType, + options: TestTriggerNodeOptions = {}, +) { + const trigger = 'description' in Trigger ? Trigger : new Trigger(); + const emit: jest.MockedFunction = jest.fn(); + + const timezone = options.timezone ?? 'Europe/Berlin'; + const version = trigger.description.version; + const node = merge( + { + type: trigger.description.name, + name: trigger.description.defaults.name ?? `Test Node (${trigger.description.name})`, + typeVersion: typeof version === 'number' ? version : version.at(-1), + } satisfies Partial, + options.node, + ) as INode; + const workflow = mock({ timezone: options.timezone ?? 'Europe/Berlin' }); + + const scheduledTaskManager = new ScheduledTaskManager(mock()); + const helpers = mock({ + returnJsonArray, + registerCron: (cronExpression, onTick) => + scheduledTaskManager.registerCron(workflow, cronExpression, onTick), + }); + + const triggerFunctions = mock({ + helpers, + emit, + getTimezone: () => timezone, + getNode: () => node, + getMode: () => options.mode ?? 'trigger', + getWorkflowStaticData: () => options.workflowStaticData ?? {}, + getNodeParameter: (parameterName, fallback) => get(node.parameters, parameterName) ?? fallback, + }); + + const response = await trigger.trigger?.call(triggerFunctions); + + if (options.mode === 'manual') { + expect(response?.manualTriggerFunction).toBeInstanceOf(Function); + await response?.manualTriggerFunction?.(); + } else { + expect(response?.manualTriggerFunction).toBeUndefined(); + } + + return { + close: jest.fn(response?.closeFunction), + emit, + }; +} + +export async function testVersionedWebhookTriggerNode( + Trigger: new () => VersionedNodeType, + version?: number, + options: TestWebhookTriggerNodeOptions = {}, +) { + return await testWebhookTriggerNode(getNodeVersion(Trigger, version), options); +} + +export async function testWebhookTriggerNode( + Trigger: (new () => INodeType) | INodeType, + options: TestWebhookTriggerNodeOptions = {}, +) { + const trigger = 'description' in Trigger ? Trigger : new Trigger(); + + const timezone = options.timezone ?? 'Europe/Berlin'; + const version = trigger.description.version; + const node = merge( + { + type: trigger.description.name, + name: trigger.description.defaults.name ?? `Test Node (${trigger.description.name})`, + typeVersion: typeof version === 'number' ? version : version.at(-1), + } satisfies Partial, + options.node, + ) as INode; + const workflow = mock({ timezone: options.timezone ?? 'Europe/Berlin' }); + + const scheduledTaskManager = new ScheduledTaskManager(mock()); + const helpers = mock({ + returnJsonArray, + registerCron: (cronExpression, onTick) => + scheduledTaskManager.registerCron(workflow, cronExpression, onTick), + }); + + const request = mock({ + method: 'GET', + ...options.request, + }); + const response = mock({ status: jest.fn(() => mock()) }); + const webhookFunctions = mock({ + helpers, + nodeHelpers: { + copyBinaryFile: jest.fn(async () => mock()), + }, + getTimezone: () => timezone, + getNode: () => node, + getMode: () => options.mode ?? 'trigger', + getInstanceId: () => 'instanceId', + getBodyData: () => options.bodyData ?? {}, + getHeaderData: () => ({}), + getInputConnectionData: async () => ({}), + getNodeWebhookUrl: (name) => `/test-webhook-url/${name}`, + getParamsData: () => ({}), + getQueryData: () => ({}), + getRequestObject: () => request, + getResponseObject: () => response, + getWebhookName: () => options.webhookName ?? 'default', + getWorkflowStaticData: () => options.workflowStaticData ?? {}, + getNodeParameter: (parameterName, fallback) => get(node.parameters, parameterName) ?? fallback, + getChildNodes: () => options.childNodes ?? [], + }); + + const responseData = await trigger.webhook?.call(webhookFunctions); + + return { + responseData, + response: webhookFunctions.getResponseObject(), + }; +} + +export async function testPollingTriggerNode( + Trigger: (new () => INodeType) | INodeType, + options: TestPollingTriggerNodeOptions = {}, +) { + const trigger = 'description' in Trigger ? Trigger : new Trigger(); + + const timezone = options.timezone ?? 'Europe/Berlin'; + const version = trigger.description.version; + const node = merge( + { + type: trigger.description.name, + name: trigger.description.defaults.name ?? `Test Node (${trigger.description.name})`, + typeVersion: typeof version === 'number' ? version : version.at(-1), + credentials: {}, + } satisfies Partial, + options.node, + ) as INode; + const workflow = mock({ + timezone: options.timezone ?? 'Europe/Berlin', + nodeTypes: mock({ + getByNameAndVersion: () => mock({ description: trigger.description }), + }), + }); + const mode = options.mode ?? 'trigger'; + + const originalPollingFunctions = getExecutePollFunctions( + workflow, + node, + mock({ + currentNodeParameters: node.parameters, + credentialsHelper: mock({ + getParentTypes: () => [], + authenticate: async (_creds, _type, options) => { + set(options, 'headers.authorization', 'mockAuth'); + return options as IHttpRequestOptions; + }, + }), + hooks: mock(), + }), + mode, + 'init', + ); + + async function getCredentials(): Promise { + return (options.credential ?? {}) as T; + } + + const pollingFunctions = mock({ + ...originalPollingFunctions, + getCredentials, + getTimezone: () => timezone, + getNode: () => node, + getMode: () => mode, + getInstanceId: () => 'instanceId', + getWorkflowStaticData: () => options.workflowStaticData ?? {}, + getNodeParameter: (parameterName, fallback) => get(node.parameters, parameterName) ?? fallback, + }); + + const response = await trigger.poll?.call(pollingFunctions); + + return { + response, + }; +} diff --git a/packages/nodes-base/tsconfig.json b/packages/nodes-base/tsconfig.json index 7e4ed688fb..b5a7282ff9 100644 --- a/packages/nodes-base/tsconfig.json +++ b/packages/nodes-base/tsconfig.json @@ -1,7 +1,6 @@ { "extends": ["../../tsconfig.json", "../../tsconfig.backend.json"], "compilerOptions": { - "lib": ["dom", "es2020", "es2022.error"], "paths": { "@test/*": ["./test/*"], "@utils/*": ["./utils/*"] @@ -16,12 +15,5 @@ { "path": "../@n8n/imap/tsconfig.build.json" }, { "path": "../workflow/tsconfig.build.json" }, { "path": "../core/tsconfig.build.json" } - ], - "tsc-alias": { - "replacers": { - "base-url": { - "enabled": false - } - } - } + ] } diff --git a/packages/nodes-base/nodes/InvoiceNinja/ISOCountryCodes.ts b/packages/nodes-base/utils/ISOCountryCodes.ts similarity index 99% rename from packages/nodes-base/nodes/InvoiceNinja/ISOCountryCodes.ts rename to packages/nodes-base/utils/ISOCountryCodes.ts index e7b7e9b14d..96c521ffa4 100644 --- a/packages/nodes-base/nodes/InvoiceNinja/ISOCountryCodes.ts +++ b/packages/nodes-base/utils/ISOCountryCodes.ts @@ -1,6 +1,13 @@ -import type { IDataObject } from 'n8n-workflow'; +export interface ISOCountryCode { + name: string; + alpha2: string; + alpha3: string; + numeric: `${number}`; + altName?: string; + shortName?: string; +} -export const countryCodes = [ +export const isoCountryCodes: ISOCountryCode[] = [ { name: 'Afghanistan', alpha2: 'AF', @@ -1578,4 +1585,4 @@ export const countryCodes = [ alpha3: 'ZWE', numeric: '716', }, -] as IDataObject[]; +]; diff --git a/packages/nodes-base/utils/constants.ts b/packages/nodes-base/utils/constants.ts index 095d71f1e0..2d85f8b261 100644 --- a/packages/nodes-base/utils/constants.ts +++ b/packages/nodes-base/utils/constants.ts @@ -1,2 +1,7 @@ export const NODE_RAN_MULTIPLE_TIMES_WARNING = "This node ran multiple times - once for each input item. You can change this by setting 'execute once' in the node settings. More Info"; + +export const LOCALHOST = '127.0.0.1'; + +export const ENABLE_LESS_STRICT_TYPE_VALIDATION = + "Try changing the type of comparison. Alternatively you can enable 'Convert types where required'."; diff --git a/packages/nodes-base/utils/descriptions.ts b/packages/nodes-base/utils/descriptions.ts index 1465d3e314..65deaaf6ac 100644 --- a/packages/nodes-base/utils/descriptions.ts +++ b/packages/nodes-base/utils/descriptions.ts @@ -33,6 +33,22 @@ export const returnAllOrLimit: INodeProperties[] = [ }, ]; +export const looseTypeValidationProperty: INodeProperties = { + displayName: 'Convert types where required', + description: + 'If the type of an expression doesn\'t match the type of the comparison, n8n will try to cast the expression to the required type. E.g. for booleans "false" or 0 will be cast to false', + name: 'looseTypeValidation', + type: 'boolean', + default: true, +}; + +export const appendAttributionOption: INodeProperties = { + displayName: 'Append n8n Attribution', + name: 'appendAttribution', + type: 'boolean', + default: true, +}; + export const encodeDecodeOptions: INodePropertyOptions[] = [ { name: 'armscii8', diff --git a/packages/nodes-base/utils/sendAndWait/email-templates.ts b/packages/nodes-base/utils/sendAndWait/email-templates.ts new file mode 100644 index 0000000000..0ae8d7689a --- /dev/null +++ b/packages/nodes-base/utils/sendAndWait/email-templates.ts @@ -0,0 +1,141 @@ +export const BUTTON_STYLE_SECONDARY = + 'display:inline-block; text-decoration:none; background-color:#fff; color:#4a4a4a; padding:12px 24px; font-family: Arial,sans-serif; font-size:14px;font-weight:600; border:1px solid #d1d1d1; border-radius:6px; min-width:120px; margin: 12px 6px 0 6px;'; +export const BUTTON_STYLE_PRIMARY = + 'display:inline-block; text-decoration:none; background-color:#ff6d5a; color: #fff; padding:12px 24px; font-family: Arial,sans-serif; font-size:14px;font-weight:600; border-radius:6px; min-width:120px; margin: 12px 2px 0 2px;'; + +export const ACTION_RECORDED_PAGE = ` + + + + + + + + Action recorded + + + + +
+
+
+
+

Got it, thanks

+

This page can be closed now

+
+
+ +
+
+ + +`; + +export function createEmailBody(message: string, buttons: string, instanceId?: string) { + const utm_campaign = instanceId ? `&utm_campaign=${instanceId}` : ''; + const n8nWebsiteLink = `https://n8n.io/?utm_source=n8n-internal&utm_medium=send-and-wait${utm_campaign}`; + return ` + + + + + + + My form + + + + + + + +
+ + + + + + + +
+

${message}

+
+ ${buttons} +
+ + + + + + +
+ + + + + + +
+ Automated with + n8n +
+
+ + + + `; +} diff --git a/packages/nodes-base/utils/sendAndWait/interfaces.ts b/packages/nodes-base/utils/sendAndWait/interfaces.ts new file mode 100644 index 0000000000..bb7a20b9ea --- /dev/null +++ b/packages/nodes-base/utils/sendAndWait/interfaces.ts @@ -0,0 +1,15 @@ +import type { IDataObject } from 'n8n-workflow'; + +export interface IEmail { + from?: string; + to?: string; + cc?: string; + bcc?: string; + replyTo?: string; + inReplyTo?: string; + reference?: string; + subject: string; + body: string; + htmlBody?: string; + attachments?: IDataObject[]; +} diff --git a/packages/nodes-base/utils/sendAndWait/test/util.test.ts b/packages/nodes-base/utils/sendAndWait/test/util.test.ts new file mode 100644 index 0000000000..16e37c7790 --- /dev/null +++ b/packages/nodes-base/utils/sendAndWait/test/util.test.ts @@ -0,0 +1,212 @@ +import { type MockProxy, mock } from 'jest-mock-extended'; +import type { IExecuteFunctions, INodeProperties, IWebhookFunctions } from 'n8n-workflow'; +import { NodeOperationError } from 'n8n-workflow'; +import { + getSendAndWaitProperties, + getSendAndWaitConfig, + createEmail, + sendAndWaitWebhook, + MESSAGE_PREFIX, +} from '../utils'; + +describe('Send and Wait utils tests', () => { + let mockExecuteFunctions: MockProxy; + let mockWebhookFunctions: MockProxy; + + beforeEach(() => { + mockExecuteFunctions = mock(); + mockWebhookFunctions = mock(); + }); + + describe('getSendAndWaitProperties', () => { + it('should return properties with correct display options', () => { + const targetProperties: INodeProperties[] = [ + { + displayName: 'Test Property', + name: 'testProperty', + type: 'string', + default: '', + }, + ]; + + const result = getSendAndWaitProperties(targetProperties); + + expect(result).toEqual( + expect.arrayContaining([ + expect.objectContaining({ + displayOptions: { + show: { + resource: ['message'], + operation: ['sendAndWait'], + }, + }, + }), + ]), + ); + }); + }); + + describe('getSendAndWaitConfig', () => { + it('should return correct config for single approval', () => { + mockExecuteFunctions.getNodeParameter.mockImplementation((parameterName: string) => { + const params: { [key: string]: any } = { + message: 'Test message', + subject: 'Test subject', + 'approvalOptions.values': { + approvalType: 'single', + approveLabel: 'Approve', + buttonApprovalStyle: 'primary', + }, + }; + return params[parameterName]; + }); + + mockExecuteFunctions.evaluateExpression.mockImplementation((expression: string) => { + const expressions: { [key: string]: string } = { + '{{ $execution?.resumeUrl }}': 'http://localhost', + '{{ $nodeId }}': 'testNodeId', + }; + return expressions[expression]; + }); + + const config = getSendAndWaitConfig(mockExecuteFunctions); + + expect(config).toEqual({ + title: 'Test subject', + message: 'Test message', + url: 'http://localhost/testNodeId', + options: [ + { + label: 'Approve', + value: 'true', + style: 'primary', + }, + ], + }); + }); + + it('should return correct config for double approval', () => { + mockExecuteFunctions.getNodeParameter.mockImplementation((parameterName: string) => { + const params: { [key: string]: any } = { + message: 'Test message', + subject: 'Test subject', + 'approvalOptions.values': { + approvalType: 'double', + approveLabel: 'Approve', + buttonApprovalStyle: 'primary', + disapproveLabel: 'Reject', + buttonDisapprovalStyle: 'secondary', + }, + }; + return params[parameterName]; + }); + + mockExecuteFunctions.evaluateExpression.mockImplementation((expression: string) => { + const expressions: { [key: string]: string } = { + '{{ $execution?.resumeUrl }}': 'http://localhost', + '{{ $nodeId }}': 'testNodeId', + }; + return expressions[expression]; + }); + + const config = getSendAndWaitConfig(mockExecuteFunctions); + + expect(config.options).toHaveLength(2); + expect(config.options).toEqual( + expect.arrayContaining([ + { + label: 'Reject', + value: 'false', + style: 'secondary', + }, + { + label: 'Approve', + value: 'true', + style: 'primary', + }, + ]), + ); + }); + }); + + describe('createEmail', () => { + beforeEach(() => { + mockExecuteFunctions.getNodeParameter.mockImplementation((parameterName: string) => { + const params: { [key: string]: any } = { + sendTo: 'test@example.com', + message: 'Test message', + subject: 'Test subject', + 'approvalOptions.values': { + approvalType: 'single', + approveLabel: 'Approve', + buttonApprovalStyle: 'primary', + }, + }; + return params[parameterName]; + }); + + mockExecuteFunctions.evaluateExpression.mockImplementation((expression: string) => { + const expressions: { [key: string]: string } = { + '{{ $execution?.resumeUrl }}': 'http://localhost', + '{{ $nodeId }}': 'testNodeId', + }; + return expressions[expression]; + }); + }); + + it('should create a valid email object', () => { + const email = createEmail(mockExecuteFunctions); + + expect(email).toEqual({ + to: 'test@example.com', + subject: `${MESSAGE_PREFIX}Test subject`, + body: '', + htmlBody: expect.stringContaining('Test message'), + }); + }); + + it('should throw NodeOperationError for invalid email address', () => { + mockExecuteFunctions.getNodeParameter.mockImplementation((parameterName: string) => { + const params: { [key: string]: any } = { + sendTo: 'invalid@@email.com', + message: 'Test message', + subject: 'Test subject', + 'approvalOptions.values': { + approvalType: 'single', + }, + }; + return params[parameterName]; + }); + + expect(() => createEmail(mockExecuteFunctions)).toThrow(NodeOperationError); + }); + }); + + describe('sendAndWaitWebhook', () => { + it('should handle approved webhook', async () => { + mockWebhookFunctions.getRequestObject.mockReturnValue({ + query: { approved: 'true' }, + } as any); + + const result = await sendAndWaitWebhook.call(mockWebhookFunctions); + + expect(result).toEqual({ + webhookResponse: expect.any(String), + workflowData: [[{ json: { data: { approved: true } } }]], + }); + }); + + it('should handle disapproved webhook', async () => { + mockWebhookFunctions.getRequestObject.mockReturnValue({ + query: { approved: 'false' }, + } as any); + + const result = await sendAndWaitWebhook.call(mockWebhookFunctions); + + expect(result).toEqual({ + webhookResponse: expect.any(String), + workflowData: [[{ json: { data: { approved: false } } }]], + }); + }); + }); +}); diff --git a/packages/nodes-base/utils/sendAndWait/utils.ts b/packages/nodes-base/utils/sendAndWait/utils.ts new file mode 100644 index 0000000000..fd633fe519 --- /dev/null +++ b/packages/nodes-base/utils/sendAndWait/utils.ts @@ -0,0 +1,254 @@ +import { NodeOperationError, SEND_AND_WAIT_OPERATION, updateDisplayOptions } from 'n8n-workflow'; +import type { INodeProperties, IExecuteFunctions, IWebhookFunctions } from 'n8n-workflow'; +import type { IEmail } from './interfaces'; +import { escapeHtml } from '../utilities'; +import { + ACTION_RECORDED_PAGE, + BUTTON_STYLE_PRIMARY, + BUTTON_STYLE_SECONDARY, + createEmailBody, +} from './email-templates'; + +type SendAndWaitConfig = { + title: string; + message: string; + url: string; + options: Array<{ label: string; value: string; style: string }>; +}; + +export const MESSAGE_PREFIX = 'ACTION REQUIRED: '; + +// Operation Properties ---------------------------------------------------------- +export function getSendAndWaitProperties( + targetProperties: INodeProperties[], + resource: string = 'message', + additionalProperties: INodeProperties[] = [], +) { + const buttonStyle: INodeProperties = { + displayName: 'Button Style', + name: 'buttonStyle', + type: 'options', + default: 'primary', + options: [ + { + name: 'Primary', + value: 'primary', + }, + { + name: 'Secondary', + value: 'secondary', + }, + ], + }; + const sendAndWait: INodeProperties[] = [ + ...targetProperties, + { + displayName: 'Subject', + name: 'subject', + type: 'string', + default: '', + required: true, + placeholder: 'e.g. Approval required', + }, + { + displayName: 'Message', + name: 'message', + type: 'string', + default: '', + required: true, + typeOptions: { + rows: 5, + }, + }, + { + displayName: 'Approval Options', + name: 'approvalOptions', + type: 'fixedCollection', + placeholder: 'Add option', + default: {}, + options: [ + { + displayName: 'Values', + name: 'values', + values: [ + { + displayName: 'Type of Approval', + name: 'approvalType', + type: 'options', + placeholder: 'Add option', + default: 'single', + options: [ + { + name: 'Approve Only', + value: 'single', + }, + { + name: 'Approve and Disapprove', + value: 'double', + }, + ], + }, + { + displayName: 'Approve Button Label', + name: 'approveLabel', + type: 'string', + default: 'Approve', + displayOptions: { + show: { + approvalType: ['single', 'double'], + }, + }, + }, + { + ...buttonStyle, + displayName: 'Approve Button Style', + name: 'buttonApprovalStyle', + displayOptions: { + show: { + approvalType: ['single', 'double'], + }, + }, + }, + { + displayName: 'Disapprove Button Label', + name: 'disapproveLabel', + type: 'string', + default: 'Decline', + displayOptions: { + show: { + approvalType: ['double'], + }, + }, + }, + { + ...buttonStyle, + displayName: 'Disapprove Button Style', + name: 'buttonDisapprovalStyle', + default: 'secondary', + displayOptions: { + show: { + approvalType: ['double'], + }, + }, + }, + ], + }, + ], + }, + ...additionalProperties, + { + displayName: + 'Use the wait node for more complex approval flows. More info', + name: 'useWaitNotice', + type: 'notice', + default: '', + }, + ]; + + return updateDisplayOptions( + { + show: { + resource: [resource], + operation: [SEND_AND_WAIT_OPERATION], + }, + }, + sendAndWait, + ); +} + +// Webhook Function -------------------------------------------------------------- +export async function sendAndWaitWebhook(this: IWebhookFunctions) { + const query = this.getRequestObject().query as { approved: 'false' | 'true' }; + const approved = query.approved === 'true'; + return { + webhookResponse: ACTION_RECORDED_PAGE, + workflowData: [[{ json: { data: { approved } } }]], + }; +} + +// Send and Wait Config ----------------------------------------------------------- +export function getSendAndWaitConfig(context: IExecuteFunctions): SendAndWaitConfig { + const message = escapeHtml((context.getNodeParameter('message', 0, '') as string).trim()); + const subject = escapeHtml(context.getNodeParameter('subject', 0, '') as string); + const resumeUrl = context.evaluateExpression('{{ $execution?.resumeUrl }}', 0) as string; + const nodeId = context.evaluateExpression('{{ $nodeId }}', 0) as string; + const approvalOptions = context.getNodeParameter('approvalOptions.values', 0, {}) as { + approvalType?: 'single' | 'double'; + approveLabel?: string; + buttonApprovalStyle?: string; + disapproveLabel?: string; + buttonDisapprovalStyle?: string; + }; + + const config: SendAndWaitConfig = { + title: subject, + message, + url: `${resumeUrl}/${nodeId}`, + options: [], + }; + + if (approvalOptions.approvalType === 'double') { + const approveLabel = escapeHtml(approvalOptions.approveLabel || 'Approve'); + const buttonApprovalStyle = approvalOptions.buttonApprovalStyle || 'primary'; + const disapproveLabel = escapeHtml(approvalOptions.disapproveLabel || 'Disapprove'); + const buttonDisapprovalStyle = approvalOptions.buttonDisapprovalStyle || 'secondary'; + + config.options.push({ + label: disapproveLabel, + value: 'false', + style: buttonDisapprovalStyle, + }); + config.options.push({ + label: approveLabel, + value: 'true', + style: buttonApprovalStyle, + }); + } else { + const label = escapeHtml(approvalOptions.approveLabel || 'Approve'); + const style = approvalOptions.buttonApprovalStyle || 'primary'; + config.options.push({ + label, + value: 'true', + style, + }); + } + + return config; +} + +function createButton(url: string, label: string, approved: string, style: string) { + let buttonStyle = BUTTON_STYLE_PRIMARY; + if (style === 'secondary') { + buttonStyle = BUTTON_STYLE_SECONDARY; + } + return `${label}`; +} + +export function createEmail(context: IExecuteFunctions) { + const to = (context.getNodeParameter('sendTo', 0, '') as string).trim(); + const config = getSendAndWaitConfig(context); + + if (to.indexOf('@') === -1 || (to.match(/@/g) || []).length > 1) { + const description = `The email address '${to}' in the 'To' field isn't valid or contains multiple addresses. Please provide only a single email address.`; + throw new NodeOperationError(context.getNode(), 'Invalid email address', { + description, + itemIndex: 0, + }); + } + + const buttons: string[] = []; + for (const option of config.options) { + buttons.push(createButton(config.url, option.label, option.value, option.style)); + } + + const instanceId = context.getInstanceId(); + + const email: IEmail = { + to, + subject: `${MESSAGE_PREFIX}${config.title}`, + body: '', + htmlBody: createEmailBody(config.message, buttons.join('\n'), instanceId), + }; + + return email; +} diff --git a/packages/nodes-base/utils/sshTunnel.properties.ts b/packages/nodes-base/utils/sshTunnel.properties.ts new file mode 100644 index 0000000000..d69e8ab5ab --- /dev/null +++ b/packages/nodes-base/utils/sshTunnel.properties.ts @@ -0,0 +1,108 @@ +import type { INodeProperties } from 'n8n-workflow'; + +export const sshTunnelProperties: INodeProperties[] = [ + { + displayName: 'SSH Tunnel', + name: 'sshTunnel', + type: 'boolean', + default: false, + }, + { + displayName: 'SSH Authenticate with', + name: 'sshAuthenticateWith', + type: 'options', + default: 'password', + options: [ + { + name: 'Password', + value: 'password', + }, + { + name: 'Private Key', + value: 'privateKey', + }, + ], + displayOptions: { + show: { + sshTunnel: [true], + }, + }, + }, + { + displayName: 'SSH Host', + name: 'sshHost', + type: 'string', + default: 'localhost', + displayOptions: { + show: { + sshTunnel: [true], + }, + }, + }, + { + displayName: 'SSH Port', + name: 'sshPort', + type: 'number', + default: 22, + displayOptions: { + show: { + sshTunnel: [true], + }, + }, + }, + { + displayName: 'SSH User', + name: 'sshUser', + type: 'string', + default: 'root', + displayOptions: { + show: { + sshTunnel: [true], + }, + }, + }, + { + displayName: 'SSH Password', + name: 'sshPassword', + type: 'string', + typeOptions: { + password: true, + }, + default: '', + displayOptions: { + show: { + sshTunnel: [true], + sshAuthenticateWith: ['password'], + }, + }, + }, + { + displayName: 'Private Key', + name: 'privateKey', // TODO: Rename to sshPrivateKey + type: 'string', + typeOptions: { + rows: 4, + password: true, + }, + default: '', + displayOptions: { + show: { + sshTunnel: [true], + sshAuthenticateWith: ['privateKey'], + }, + }, + }, + { + displayName: 'Passphrase', + name: 'passphrase', // TODO: Rename to sshPassphrase + type: 'string', + default: '', + description: 'Passphrase used to create the key, if no passphrase was used leave empty', + displayOptions: { + show: { + sshTunnel: [true], + sshAuthenticateWith: ['privateKey'], + }, + }, + }, +]; diff --git a/packages/nodes-base/utils/utilities.ts b/packages/nodes-base/utils/utilities.ts index 54949d87c3..5c0b7f9d2b 100644 --- a/packages/nodes-base/utils/utilities.ts +++ b/packages/nodes-base/utils/utilities.ts @@ -404,3 +404,28 @@ export const sanitizeDataPathKey = (item: IDataObject, key: string) => { } return key; }; + +/** + * Escape HTML + * + * @param {string} text The text to escape + */ +export function escapeHtml(text: string): string { + if (!text) return ''; + return text.replace(/&|<|>|'|"/g, (match) => { + switch (match) { + case '&': + return '&'; + case '<': + return '<'; + case '>': + return '>'; + case ''': + return "'"; + case '"': + return '"'; + default: + return match; + } + }); +} diff --git a/packages/workflow/.eslintrc.js b/packages/workflow/.eslintrc.js index 32422b2846..fa81226338 100644 --- a/packages/workflow/.eslintrc.js +++ b/packages/workflow/.eslintrc.js @@ -12,7 +12,6 @@ module.exports = { complexity: 'error', // TODO: remove these - 'import/order': 'off', '@typescript-eslint/no-base-to-string': 'warn', '@typescript-eslint/no-explicit-any': 'warn', '@typescript-eslint/no-redundant-type-constituents': 'warn', diff --git a/packages/workflow/LICENSE.md b/packages/workflow/LICENSE.md deleted file mode 100644 index aab68b6d93..0000000000 --- a/packages/workflow/LICENSE.md +++ /dev/null @@ -1,86 +0,0 @@ -# License - -Portions of this software are licensed as follows: - -- Content of branches other than the main branch (i.e. "master") are not licensed. -- Source code files that contain ".ee." in their filename are NOT licensed under the Sustainable Use License. - To use source code files that contain ".ee." in their filename you must hold a valid n8n Enterprise License - specifically allowing you access to such source code files and as defined in "LICENSE_EE.md". -- All third party components incorporated into the n8n Software are licensed under the original license - provided by the owner of the applicable component. -- Content outside of the above mentioned files or restrictions is available under the "Sustainable Use - License" as defined below. - -## Sustainable Use License - -Version 1.0 - -### Acceptance - -By using the software, you agree to all of the terms and conditions below. - -### Copyright License - -The licensor grants you a non-exclusive, royalty-free, worldwide, non-sublicensable, non-transferable license -to use, copy, distribute, make available, and prepare derivative works of the software, in each case subject -to the limitations below. - -### Limitations - -You may use or modify the software only for your own internal business purposes or for non-commercial or -personal use. You may distribute the software or provide it to others only if you do so free of charge for -non-commercial purposes. You may not alter, remove, or obscure any licensing, copyright, or other notices of -the licensor in the software. Any use of the licensor’s trademarks is subject to applicable law. - -### Patents - -The licensor grants you a license, under any patent claims the licensor can license, or becomes able to -license, to make, have made, use, sell, offer for sale, import and have imported the software, in each case -subject to the limitations and conditions in this license. This license does not cover any patent claims that -you cause to be infringed by modifications or additions to the software. If you or your company make any -written claim that the software infringes or contributes to infringement of any patent, your patent license -for the software granted under these terms ends immediately. If your company makes such a claim, your patent -license ends immediately for work on behalf of your company. - -### Notices - -You must ensure that anyone who gets a copy of any part of the software from you also gets a copy of these -terms. If you modify the software, you must include in any modified copies of the software a prominent notice -stating that you have modified the software. - -### No Other Rights - -These terms do not imply any licenses other than those expressly granted in these terms. - -### Termination - -If you use the software in violation of these terms, such use is not licensed, and your license will -automatically terminate. If the licensor provides you with a notice of your violation, and you cease all -violation of this license no later than 30 days after you receive that notice, your license will be reinstated -retroactively. However, if you violate these terms after such reinstatement, any additional violation of these -terms will cause your license to terminate automatically and permanently. - -### No Liability - -As far as the law allows, the software comes as is, without any warranty or condition, and the licensor will -not be liable to you for any damages arising out of these terms or the use or nature of the software, under -any kind of legal claim. - -### Definitions - -The “licensor” is the entity offering these terms. - -The “software” is the software the licensor makes available under these terms, including any portion of it. - -“You” refers to the individual or entity agreeing to these terms. - -“Your company” is any legal entity, sole proprietorship, or other kind of organization that you work for, plus -all organizations that have control over, are under the control of, or are under common control with that -organization. Control means ownership of substantially all the assets of an entity, or the power to direct its -management and policies by vote, contract, or otherwise. Control can be direct or indirect. - -“Your license” is the license granted to you for the software under these terms. - -“Use” means anything you do with the software requiring your license. - -“Trademark” means trademarks, service marks, and similar rights. diff --git a/packages/workflow/LICENSE_EE.md b/packages/workflow/LICENSE_EE.md deleted file mode 100644 index b47966a6c0..0000000000 --- a/packages/workflow/LICENSE_EE.md +++ /dev/null @@ -1,27 +0,0 @@ -# The n8n Enterprise License (the “Enterprise License”) - -Copyright (c) 2022-present n8n GmbH. - -With regard to the n8n Software: - -This software and associated documentation files (the "Software") may only be used in production, if -you (and any entity that you represent) hold a valid n8n Enterprise license corresponding to your -usage. Subject to the foregoing sentence, you are free to modify this Software and publish patches -to the Software. You agree that n8n and/or its licensors (as applicable) retain all right, title and -interest in and to all such modifications and/or patches, and all such modifications and/or patches -may only be used, copied, modified, displayed, distributed, or otherwise exploited with a valid n8n -Enterprise license for the corresponding usage. Notwithstanding the foregoing, you may copy and -modify the Software for development and testing purposes, without requiring a subscription. You -agree that n8n and/or its licensors (as applicable) retain all right, title and interest in and to -all such modifications. You are not granted any other rights beyond what is expressly stated herein. -Subject to the foregoing, it is forbidden to copy, merge, publish, distribute, sublicense, and/or -sell the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT -NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES -OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -For all third party components incorporated into the n8n Software, those components are licensed -under the original license provided by the owner of the applicable component. diff --git a/packages/workflow/README.md b/packages/workflow/README.md index da80c57920..e76b4283e9 100644 --- a/packages/workflow/README.md +++ b/packages/workflow/README.md @@ -10,8 +10,4 @@ npm install n8n-workflow ## License -n8n is [fair-code](https://faircode.io) distributed under the [**Sustainable Use License**](https://github.com/n8n-io/n8n/blob/master/packages/cli/LICENSE.md). - -Proprietary licenses are available for enterprise customers. [Get in touch](mailto:license@n8n.io) - -Additional information about the license can be found in the [docs](https://docs.n8n.io/reference/license/). +You can find the license information [here](https://github.com/n8n-io/n8n/blob/master/README.md#license) diff --git a/packages/workflow/package.json b/packages/workflow/package.json index 375184b96c..b2bd21f35c 100644 --- a/packages/workflow/package.json +++ b/packages/workflow/package.json @@ -1,17 +1,7 @@ { "name": "n8n-workflow", - "version": "1.47.0", + "version": "1.64.0", "description": "Workflow base code of n8n", - "license": "SEE LICENSE IN LICENSE.md", - "homepage": "https://n8n.io", - "author": { - "name": "Jan Oberhauser", - "email": "jan@n8n.io" - }, - "repository": { - "type": "git", - "url": "git+https://github.com/n8n-io/n8n.git" - }, "main": "dist/index.js", "module": "src/index.ts", "types": "dist/index.d.ts", @@ -28,7 +18,8 @@ "dev": "pnpm watch", "typecheck": "tsc --noEmit", "build": "tsc -p tsconfig.build.json", - "format": "prettier --write . --ignore-path ../../.prettierignore", + "format": "biome format --write .", + "format:check": "biome ci .", "lint": "eslint . --quiet", "lintfix": "eslint . --fix", "watch": "tsc -p tsconfig.build.json --watch", @@ -39,33 +30,33 @@ "dist/**/*" ], "devDependencies": { - "@langchain/core": "^0.2.0", + "@langchain/core": "catalog:", "@types/deep-equal": "^1.0.1", - "@types/express": "^4.17.21", + "@types/express": "catalog:", "@types/jmespath": "^0.15.0", - "@types/lodash": "^4.14.195", + "@types/lodash": "catalog:", "@types/luxon": "^3.2.0", "@types/md5": "^2.3.5", - "@types/xml2js": "^0.4.14" + "@types/xml2js": "catalog:" }, "dependencies": { - "@n8n/tournament": "1.0.2", + "@n8n/tournament": "1.0.5", "@n8n_io/riot-tmpl": "4.0.0", "ast-types": "0.15.2", - "axios": "1.6.7", + "axios": "catalog:", "callsites": "3.1.0", "deep-equal": "2.2.0", "esprima-next": "5.8.4", - "form-data": "4.0.0", + "form-data": "catalog:", "jmespath": "0.16.0", "js-base64": "3.7.2", "jssha": "3.3.1", - "lodash": "4.17.21", - "luxon": "3.3.0", + "lodash": "catalog:", + "luxon": "catalog:", "md5": "2.3.0", "recast": "0.21.5", "title-case": "3.0.3", "transliteration": "2.3.5", - "xml2js": "0.6.2" + "xml2js": "catalog:" } } diff --git a/packages/workflow/src/Authentication.ts b/packages/workflow/src/Authentication.ts deleted file mode 100644 index 05fec7b4bd..0000000000 --- a/packages/workflow/src/Authentication.ts +++ /dev/null @@ -1 +0,0 @@ -export type AuthenticationMethod = 'email' | 'ldap' | 'saml'; diff --git a/packages/workflow/src/Constants.ts b/packages/workflow/src/Constants.ts index 8c13803fb6..f8d028ae91 100644 --- a/packages/workflow/src/Constants.ts +++ b/packages/workflow/src/Constants.ts @@ -8,7 +8,7 @@ export const ALPHABET = [DIGITS, UPPERCASE_LETTERS, LOWERCASE_LETTERS].join(''); export const BINARY_ENCODING = 'base64'; export const WAIT_TIME_UNLIMITED = '3000-01-01T00:00:00.000Z'; -export const LOG_LEVELS = ['silent', 'error', 'warn', 'info', 'debug', 'verbose'] as const; +export const LOG_LEVELS = ['silent', 'error', 'warn', 'info', 'debug'] as const; export const CODE_LANGUAGES = ['javaScript', 'python'] as const; export const CODE_EXECUTION_MODES = ['runOnceForAllItems', 'runOnceForEachItem'] as const; @@ -31,10 +31,17 @@ export const WEBHOOK_NODE_TYPE = 'n8n-nodes-base.webhook'; export const MANUAL_TRIGGER_NODE_TYPE = 'n8n-nodes-base.manualTrigger'; export const ERROR_TRIGGER_NODE_TYPE = 'n8n-nodes-base.errorTrigger'; export const START_NODE_TYPE = 'n8n-nodes-base.start'; +export const EXECUTE_WORKFLOW_NODE_TYPE = 'n8n-nodes-base.executeWorkflow'; export const EXECUTE_WORKFLOW_TRIGGER_NODE_TYPE = 'n8n-nodes-base.executeWorkflowTrigger'; export const CODE_NODE_TYPE = 'n8n-nodes-base.code'; export const FUNCTION_NODE_TYPE = 'n8n-nodes-base.function'; export const FUNCTION_ITEM_NODE_TYPE = 'n8n-nodes-base.functionItem'; +export const MERGE_NODE_TYPE = 'n8n-nodes-base.merge'; +export const AI_TRANSFORM_NODE_TYPE = 'n8n-nodes-base.aiTransform'; +export const FORM_NODE_TYPE = 'n8n-nodes-base.form'; +export const FORM_TRIGGER_NODE_TYPE = 'n8n-nodes-base.formTrigger'; +export const CHAT_TRIGGER_NODE_TYPE = '@n8n/n8n-nodes-langchain.chatTrigger'; +export const WAIT_NODE_TYPE = 'n8n-nodes-base.wait'; export const STARTING_NODE_TYPES = [ MANUAL_TRIGGER_NODE_TYPE, @@ -43,7 +50,14 @@ export const STARTING_NODE_TYPES = [ START_NODE_TYPE, ]; -export const SCRIPTING_NODE_TYPES = [FUNCTION_NODE_TYPE, FUNCTION_ITEM_NODE_TYPE, CODE_NODE_TYPE]; +export const SCRIPTING_NODE_TYPES = [ + FUNCTION_NODE_TYPE, + FUNCTION_ITEM_NODE_TYPE, + CODE_NODE_TYPE, + AI_TRANSFORM_NODE_TYPE, +]; + +export const ADD_FORM_NOTICE = 'addFormPage'; /** * Nodes whose parameter values may refer to other nodes without expressions. @@ -53,6 +67,7 @@ export const NODES_WITH_RENAMABLE_CONTENT = new Set([ CODE_NODE_TYPE, FUNCTION_NODE_TYPE, FUNCTION_ITEM_NODE_TYPE, + AI_TRANSFORM_NODE_TYPE, ]); //@n8n/n8n-nodes-langchain @@ -101,4 +116,4 @@ export const SINGLE_EXECUTION_NODES: { [key: string]: { [key: string]: NodeParam }, }; -export const OBFUSCATED_ERROR_MESSAGE = 'Internal error'; +export const SEND_AND_WAIT_OPERATION = 'sendAndWait'; diff --git a/packages/workflow/src/Cron.ts b/packages/workflow/src/Cron.ts index 7f41e9ccd5..ad83eec682 100644 --- a/packages/workflow/src/Cron.ts +++ b/packages/workflow/src/Cron.ts @@ -1,10 +1,10 @@ +import type { CronExpression } from './Interfaces'; import { randomInt } from './utils'; interface BaseTriggerTime { mode: T; } -type CronExpression = string; interface CustomTrigger extends BaseTriggerTime<'custom'> { cronExpression: CronExpression; } @@ -49,22 +49,24 @@ export type TriggerTime = | EveryWeek | EveryMonth; -const randomSecond = () => randomInt(60).toString(); - export const toCronExpression = (item: TriggerTime): CronExpression => { - if (item.mode === 'everyMinute') return `${randomSecond()} * * * * *`; - if (item.mode === 'everyHour') return `${randomSecond()} ${item.minute} * * * *`; + const randomSecond = randomInt(60); + + if (item.mode === 'everyMinute') return `${randomSecond} * * * * *`; + if (item.mode === 'everyHour') return `${randomSecond} ${item.minute} * * * *`; if (item.mode === 'everyX') { - if (item.unit === 'minutes') return `${randomSecond()} */${item.value} * * * *`; - if (item.unit === 'hours') return `${randomSecond()} 0 */${item.value} * * *`; + if (item.unit === 'minutes') return `${randomSecond} */${item.value} * * * *`; + + const randomMinute = randomInt(60); + if (item.unit === 'hours') return `${randomSecond} ${randomMinute} */${item.value} * * *`; } - if (item.mode === 'everyDay') return `${randomSecond()} ${item.minute} ${item.hour} * * *`; + if (item.mode === 'everyDay') return `${randomSecond} ${item.minute} ${item.hour} * * *`; if (item.mode === 'everyWeek') - return `${randomSecond()} ${item.minute} ${item.hour} * * ${item.weekday}`; + return `${randomSecond} ${item.minute} ${item.hour} * * ${item.weekday}`; if (item.mode === 'everyMonth') - return `${randomSecond()} ${item.minute} ${item.hour} ${item.dayOfMonth} * *`; + return `${randomSecond} ${item.minute} ${item.hour} ${item.dayOfMonth} * *`; - return item.cronExpression.trim(); + return item.cronExpression.trim() as CronExpression; }; diff --git a/packages/workflow/src/DeferredPromise.ts b/packages/workflow/src/DeferredPromise.ts index 1feededead..a91a5f1189 100644 --- a/packages/workflow/src/DeferredPromise.ts +++ b/packages/workflow/src/DeferredPromise.ts @@ -1,14 +1,17 @@ -// From: https://gist.github.com/compulim/8b49b0a744a3eeb2205e2b9506201e50 +type ResolveFn = (result: T | PromiseLike) => void; +type RejectFn = (error: Error) => void; + export interface IDeferredPromise { - promise: () => Promise; - reject: (error: Error) => void; - resolve: (result: T) => void; + promise: Promise; + resolve: ResolveFn; + reject: RejectFn; } -export async function createDeferredPromise(): Promise> { - return await new Promise>((resolveCreate) => { - const promise = new Promise((resolve, reject) => { - resolveCreate({ promise: async () => await promise, resolve, reject }); - }); +export function createDeferredPromise(): IDeferredPromise { + const deferred: Partial> = {}; + deferred.promise = new Promise((resolve, reject) => { + deferred.resolve = resolve; + deferred.reject = reject; }); + return deferred as IDeferredPromise; } diff --git a/packages/workflow/src/ErrorReporterProxy.ts b/packages/workflow/src/ErrorReporterProxy.ts index de6c6bec30..cedb921d5e 100644 --- a/packages/workflow/src/ErrorReporterProxy.ts +++ b/packages/workflow/src/ErrorReporterProxy.ts @@ -1,17 +1,22 @@ -import * as Logger from './LoggerProxy'; import { ApplicationError, type ReportingOptions } from './errors/application.error'; +import * as Logger from './LoggerProxy'; interface ErrorReporter { report: (error: Error | string, options?: ReportingOptions) => void; } const instance: ErrorReporter = { - report: (error) => { + report: (error, options) => { if (error instanceof Error) { let e = error; + + const { executionId } = options ?? {}; + const context = executionId ? ` (execution ${executionId})` : ''; + do { + const msg = [e.message + context, e.stack ? `\n${e.stack}\n` : ''].join(''); const meta = e instanceof ApplicationError ? e.extra : undefined; - Logger.error(`${e.constructor.name}: ${e.message}`, meta); + Logger.error(msg, meta); e = e.cause as Error; } while (e); } @@ -35,7 +40,7 @@ export const error = (e: unknown, options?: ReportingOptions) => { export const info = (msg: string, options?: ReportingOptions) => { Logger.info(msg); - instance.report(msg, options); + instance.report(msg, { ...options, level: 'info' }); }; export const warn = (warning: Error | string, options?: ReportingOptions) => diff --git a/packages/workflow/src/Expression.ts b/packages/workflow/src/Expression.ts index ace4774c8f..dc7c661b56 100644 --- a/packages/workflow/src/Expression.ts +++ b/packages/workflow/src/Expression.ts @@ -1,6 +1,15 @@ -import { DateTime, Duration, Interval } from 'luxon'; import * as tmpl from '@n8n_io/riot-tmpl'; +import { DateTime, Duration, Interval } from 'luxon'; +import { ApplicationError } from './errors/application.error'; +import { ExpressionExtensionError } from './errors/expression-extension.error'; +import { ExpressionError } from './errors/expression.error'; +import { evaluateExpression, setErrorHandler } from './ExpressionEvaluatorProxy'; +import { sanitizer, sanitizerName } from './ExpressionSandboxing'; +import { extend, extendOptional } from './Extensions'; +import { extendSyntax } from './Extensions/ExpressionExtension'; +import { extendedFunctions } from './Extensions/ExtendedFunctions'; +import { getGlobalState } from './GlobalState'; import type { IDataObject, IExecuteData, @@ -15,17 +24,8 @@ import type { NodeParameterValueType, WorkflowExecuteMode, } from './Interfaces'; -import { ExpressionError } from './errors/expression.error'; -import { ExpressionExtensionError } from './errors/expression-extension.error'; -import { WorkflowDataProxy } from './WorkflowDataProxy'; import type { Workflow } from './Workflow'; - -import { extend, extendOptional } from './Extensions'; -import { extendedFunctions } from './Extensions/ExtendedFunctions'; -import { extendSyntax } from './Extensions/ExpressionExtension'; -import { evaluateExpression, setErrorHandler } from './ExpressionEvaluatorProxy'; -import { getGlobalState } from './GlobalState'; -import { ApplicationError } from './errors/application.error'; +import { WorkflowDataProxy } from './WorkflowDataProxy'; const IS_FRONTEND_IN_DEV_MODE = typeof process === 'object' && @@ -306,6 +306,8 @@ export class Expression { data.extend = extend; data.extendOptional = extendOptional; + data[sanitizerName] = sanitizer; + Object.assign(data, extendedFunctions); const constructorValidation = new RegExp(/\.\s*constructor/gm); diff --git a/packages/workflow/src/ExpressionEvaluatorProxy.ts b/packages/workflow/src/ExpressionEvaluatorProxy.ts index 60e33e5a7d..37dec8af51 100644 --- a/packages/workflow/src/ExpressionEvaluatorProxy.ts +++ b/packages/workflow/src/ExpressionEvaluatorProxy.ts @@ -1,6 +1,8 @@ -import * as tmpl from '@n8n_io/riot-tmpl'; import type { ReturnValue, TmplDifference } from '@n8n/tournament'; import { Tournament } from '@n8n/tournament'; +import * as tmpl from '@n8n_io/riot-tmpl'; + +import { PrototypeSanitizer } from './ExpressionSandboxing'; import type { ExpressionEvaluatorType } from './Interfaces'; import * as LoggerProxy from './LoggerProxy'; @@ -18,6 +20,7 @@ const differenceChecker = (diff: TmplDifference) => { if (diff.same) { return; } + // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing if (diff.has?.function || diff.has?.templateString) { return; } @@ -30,7 +33,10 @@ const differenceChecker = (diff: TmplDifference) => { LoggerProxy.error('Expression evaluator difference checker failed'); } }; -const tournamentEvaluator = new Tournament(errorHandler, undefined); +const tournamentEvaluator = new Tournament(errorHandler, undefined, undefined, { + before: [], + after: [PrototypeSanitizer], +}); let evaluator: Evaluator = tmpl.tmpl; let currentEvaluatorType: ExpressionEvaluatorType = 'tmpl'; let diffExpressions = false; diff --git a/packages/workflow/src/ExpressionSandboxing.ts b/packages/workflow/src/ExpressionSandboxing.ts new file mode 100644 index 0000000000..7562e8efa2 --- /dev/null +++ b/packages/workflow/src/ExpressionSandboxing.ts @@ -0,0 +1,59 @@ +import { type ASTAfterHook, astBuilders as b, astVisit } from '@n8n/tournament'; + +import { ExpressionError } from './errors'; + +const forbiddenMembers = ['__proto__', 'prototype', 'constructor', 'getPrototypeOf']; +export const sanitizerName = '__sanitize'; +const sanitizerIdentifier = b.identifier(sanitizerName); + +export const PrototypeSanitizer: ASTAfterHook = (ast, dataNode) => { + astVisit(ast, { + visitMemberExpression(path) { + this.traverse(path); + const node = path.node; + if (!node.computed) { + // This is static, so we're safe to error here + if (node.property.type !== 'Identifier') { + // eslint-disable-next-line n8n-local-rules/no-plain-errors + throw new ExpressionError( + `Unknown property type ${node.property.type} while sanitising expression`, + ); + } + + if (forbiddenMembers.includes(node.property.name)) { + throw new ExpressionError( + `Cannot access "${node.property.name}" due to security concerns`, + ); + } + } else if (node.property.type === 'StringLiteral' || node.property.type === 'Literal') { + // Check any static strings against our forbidden list + if (forbiddenMembers.includes(node.property.value as string)) { + throw new ExpressionError( + `Cannot access "${node.property.value as string}" due to security concerns`, + ); + } + } else if (!node.property.type.endsWith('Literal')) { + // This isn't a literal value, so we need to wrap it + path.replace( + b.memberExpression( + // eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-explicit-any + node.object as any, + // eslint-disable-next-line @typescript-eslint/no-unsafe-argument + b.callExpression(b.memberExpression(dataNode, sanitizerIdentifier), [ + // eslint-disable-next-line @typescript-eslint/no-explicit-any + node.property as any, + ]), + true, + ), + ); + } + }, + }); +}; + +export const sanitizer = (value: unknown): unknown => { + if (forbiddenMembers.includes(value as string)) { + throw new ExpressionError(`Cannot access "${value as string}" due to security concerns`); + } + return value; +}; diff --git a/packages/workflow/src/Extensions/ArrayExtensions.ts b/packages/workflow/src/Extensions/ArrayExtensions.ts index a97049ece3..cd58d735f6 100644 --- a/packages/workflow/src/Extensions/ArrayExtensions.ts +++ b/packages/workflow/src/Extensions/ArrayExtensions.ts @@ -1,10 +1,10 @@ import deepEqual from 'deep-equal'; import uniqWith from 'lodash/uniqWith'; -import { ExpressionError } from '../errors/expression.error'; -import { ExpressionExtensionError } from '../errors/expression-extension.error'; import type { Extension, ExtensionMap } from './Extensions'; import { compact as oCompact } from './ObjectExtensions'; +import { ExpressionExtensionError } from '../errors/expression-extension.error'; +import { ExpressionError } from '../errors/expression.error'; import { randomInt } from '../utils'; function first(value: unknown[]): unknown { diff --git a/packages/workflow/src/Extensions/DateExtensions.ts b/packages/workflow/src/Extensions/DateExtensions.ts index 8c38fc35bf..e6e721c74c 100644 --- a/packages/workflow/src/Extensions/DateExtensions.ts +++ b/packages/workflow/src/Extensions/DateExtensions.ts @@ -1,5 +1,3 @@ -import { ExpressionExtensionError } from '../errors/expression-extension.error'; - import { DateTime } from 'luxon'; import type { DateTimeUnit, @@ -8,9 +6,11 @@ import type { LocaleOptions, WeekdayNumbers, } from 'luxon'; + import type { ExtensionMap } from './Extensions'; -import { convertToDateTime } from './utils'; import { toDateTime as stringToDateTime } from './StringExtensions'; +import { convertToDateTime } from './utils'; +import { ExpressionExtensionError } from '../errors/expression-extension.error'; const durationUnits = [ 'milliseconds', diff --git a/packages/workflow/src/Extensions/ExpressionExtension.ts b/packages/workflow/src/Extensions/ExpressionExtension.ts index a025082848..2c8d745bd8 100644 --- a/packages/workflow/src/Extensions/ExpressionExtension.ts +++ b/packages/workflow/src/Extensions/ExpressionExtension.ts @@ -1,22 +1,22 @@ /* eslint-disable @typescript-eslint/no-unsafe-member-access */ -import { DateTime } from 'luxon'; -import { ExpressionExtensionError } from '../errors/expression-extension.error'; -import { parse, visit, types, print } from 'recast'; -import { getOption } from 'recast/lib/util'; +import type { ExpressionKind } from 'ast-types/gen/kinds'; import type { Config as EsprimaConfig } from 'esprima-next'; import { parse as esprimaParse } from 'esprima-next'; +import { DateTime } from 'luxon'; +import { parse, visit, types, print } from 'recast'; +import { getOption } from 'recast/lib/util'; import { arrayExtensions } from './ArrayExtensions'; -import { dateExtensions } from './DateExtensions'; -import { numberExtensions } from './NumberExtensions'; -import { stringExtensions } from './StringExtensions'; -import { objectExtensions } from './ObjectExtensions'; -import type { ExpressionKind } from 'ast-types/gen/kinds'; - -import type { ExpressionChunk, ExpressionCode } from './ExpressionParser'; -import { joinExpression, splitExpression } from './ExpressionParser'; import { booleanExtensions } from './BooleanExtensions'; +import { dateExtensions } from './DateExtensions'; +import { joinExpression, splitExpression } from './ExpressionParser'; +import type { ExpressionChunk, ExpressionCode } from './ExpressionParser'; import type { ExtensionMap } from './Extensions'; +import { numberExtensions } from './NumberExtensions'; +import { objectExtensions } from './ObjectExtensions'; +import { stringExtensions } from './StringExtensions'; +import { checkIfValueDefinedOrThrow } from './utils'; +import { ExpressionExtensionError } from '../errors/expression-extension.error'; const EXPRESSION_EXTENDER = 'extend'; const EXPRESSION_EXTENDER_OPTIONAL = 'extendOptional'; @@ -514,6 +514,7 @@ export function extend(input: unknown, functionName: string, args: unknown[]) { // any types have a function with that name. Then throw an error // letting the user know the available types. if (!foundFunction) { + checkIfValueDefinedOrThrow(input, functionName); const haveFunction = EXTENSION_OBJECTS.filter((v) => functionName in v.functions); if (!haveFunction.length) { // This shouldn't really be possible but we should cover it anyway diff --git a/packages/workflow/src/Extensions/ExtendedFunctions.ts b/packages/workflow/src/Extensions/ExtendedFunctions.ts index 091cdc8b0c..75ad05fd2e 100644 --- a/packages/workflow/src/Extensions/ExtendedFunctions.ts +++ b/packages/workflow/src/Extensions/ExtendedFunctions.ts @@ -1,6 +1,6 @@ -import { ExpressionError } from '../errors/expression.error'; -import { ExpressionExtensionError } from '../errors/expression-extension.error'; import { average as aAverage } from './ArrayExtensions'; +import { ExpressionExtensionError } from '../errors/expression-extension.error'; +import { ExpressionError } from '../errors/expression.error'; const min = Math.min; const max = Math.max; diff --git a/packages/workflow/src/Extensions/NumberExtensions.ts b/packages/workflow/src/Extensions/NumberExtensions.ts index b13520be4d..7fc5a97e3e 100644 --- a/packages/workflow/src/Extensions/NumberExtensions.ts +++ b/packages/workflow/src/Extensions/NumberExtensions.ts @@ -2,8 +2,9 @@ * @jest-environment jsdom */ import { DateTime } from 'luxon'; -import { ExpressionExtensionError } from '../errors/expression-extension.error'; + import type { ExtensionMap } from './Extensions'; +import { ExpressionExtensionError } from '../errors/expression-extension.error'; function format(value: number, extraArgs: unknown[]): string { const [locales = 'en-US', config = {}] = extraArgs as [ diff --git a/packages/workflow/src/Extensions/ObjectExtensions.ts b/packages/workflow/src/Extensions/ObjectExtensions.ts index 8970318e1c..58759890ad 100644 --- a/packages/workflow/src/Extensions/ObjectExtensions.ts +++ b/packages/workflow/src/Extensions/ObjectExtensions.ts @@ -1,5 +1,5 @@ -import { ExpressionExtensionError } from '../errors/expression-extension.error'; import type { ExtensionMap } from './Extensions'; +import { ExpressionExtensionError } from '../errors/expression-extension.error'; function isEmpty(value: object): boolean { return Object.keys(value).length === 0; diff --git a/packages/workflow/src/Extensions/StringExtensions.ts b/packages/workflow/src/Extensions/StringExtensions.ts index 8b4e025bf6..4f42b546da 100644 --- a/packages/workflow/src/Extensions/StringExtensions.ts +++ b/packages/workflow/src/Extensions/StringExtensions.ts @@ -1,13 +1,14 @@ -import SHA from 'jssha'; -import MD5 from 'md5'; import { toBase64, fromBase64 } from 'js-base64'; -import { titleCase } from 'title-case'; -import type { Extension, ExtensionMap } from './Extensions'; -import { transliterate } from 'transliteration'; -import { ExpressionExtensionError } from '../errors/expression-extension.error'; +import SHA from 'jssha'; import { DateTime } from 'luxon'; -import { tryToParseDateTime } from '../TypeValidation'; +import MD5 from 'md5'; +import { titleCase } from 'title-case'; +import { transliterate } from 'transliteration'; + +import type { Extension, ExtensionMap } from './Extensions'; import { toDateTime as numberToDateTime } from './NumberExtensions'; +import { ExpressionExtensionError } from '../errors/expression-extension.error'; +import { tryToParseDateTime } from '../TypeValidation'; export const SupportedHashAlgorithms = [ 'md5', diff --git a/packages/workflow/src/Extensions/utils.ts b/packages/workflow/src/Extensions/utils.ts index 563ecf31a1..1e8509db40 100644 --- a/packages/workflow/src/Extensions/utils.ts +++ b/packages/workflow/src/Extensions/utils.ts @@ -1,5 +1,7 @@ import { DateTime } from 'luxon'; +import { ExpressionExtensionError } from '../errors/expression-extension.error'; + // Utility functions and type guards for expression extensions export const convertToDateTime = (value: string | Date | DateTime): DateTime | undefined => { @@ -17,3 +19,11 @@ export const convertToDateTime = (value: string | Date | DateTime): DateTime | u } return converted; }; + +export function checkIfValueDefinedOrThrow(value: T, functionName: string): void { + if (value === undefined || value === null) { + throw new ExpressionExtensionError(`${functionName} can't be used on ${String(value)} value`, { + description: `To ignore this error, add a ? to the variable before this function, e.g. my_var?.${functionName}`, + }); + } +} diff --git a/packages/workflow/src/Interfaces.ts b/packages/workflow/src/Interfaces.ts index 564fc498ba..4f92a219e6 100644 --- a/packages/workflow/src/Interfaces.ts +++ b/packages/workflow/src/Interfaces.ts @@ -1,27 +1,30 @@ /* eslint-disable @typescript-eslint/no-explicit-any */ +import type { CallbackManager as CallbackManagerLC } from '@langchain/core/callbacks/manager'; +import type { AxiosProxyConfig } from 'axios'; import type * as express from 'express'; import type FormData from 'form-data'; import type { PathLike } from 'fs'; import type { IncomingHttpHeaders } from 'http'; -import type { SecureContextOptions } from 'tls'; -import type { Readable } from 'stream'; -import type { URLSearchParams } from 'url'; import type { RequestBodyMatcher } from 'nock'; +import type { Client as SSHClient } from 'ssh2'; +import type { Readable } from 'stream'; +import type { SecureContextOptions } from 'tls'; +import type { URLSearchParams } from 'url'; -import type { AuthenticationMethod } from './Authentication'; import type { CODE_EXECUTION_MODES, CODE_LANGUAGES, LOG_LEVELS } from './Constants'; import type { IDeferredPromise } from './DeferredPromise'; -import type { ExecutionStatus } from './ExecutionStatus'; +import type { ExecutionCancelledError } from './errors'; import type { ExpressionError } from './errors/expression.error'; -import type { Workflow } from './Workflow'; +import type { NodeApiError } from './errors/node-api.error'; +import type { NodeOperationError } from './errors/node-operation.error'; import type { WorkflowActivationError } from './errors/workflow-activation.error'; import type { WorkflowOperationError } from './errors/workflow-operation.error'; +import type { ExecutionStatus } from './ExecutionStatus'; +import type { Result } from './result'; +import type { Workflow } from './Workflow'; +import type { EnvProviderState } from './WorkflowDataProxyEnvProvider'; import type { WorkflowHooks } from './WorkflowHooks'; -import type { NodeOperationError } from './errors/node-operation.error'; -import type { NodeApiError } from './errors/node-api.error'; -import type { AxiosProxyConfig } from 'axios'; -import type { CallbackManager as CallbackManagerLC } from '@langchain/core/callbacks/manager'; export interface IAdditionalCredentialOptions { oauth2?: IOAuth2Options; @@ -32,6 +35,7 @@ export type IAllExecuteFunctions = | IExecuteFunctions | IExecutePaginationFunctions | IExecuteSingleFunctions + | ISupplyDataFunctions | IHookFunctions | ILoadOptionsFunctions | IPollFunctions @@ -79,6 +83,7 @@ export type ExecutionError = | ExpressionError | WorkflowActivationError | WorkflowOperationError + | ExecutionCancelledError | NodeOperationError | NodeApiError; @@ -87,7 +92,7 @@ export interface IGetCredentials { get(type: string, id: string | null): Promise; } -export abstract class ICredentials { +export abstract class ICredentials { id?: string; name: string; @@ -103,11 +108,11 @@ export abstract class ICredentials { this.data = data; } - abstract getData(nodeType?: string): ICredentialDataDecryptedObject; + abstract getData(nodeType?: string): T; abstract getDataToSave(): ICredentialsEncrypted; - abstract setData(data: ICredentialDataDecryptedObject): void; + abstract setData(data: T): void; } export interface IUser { @@ -125,11 +130,11 @@ export type ProjectSharingData = { updatedAt: string; }; -export interface ICredentialsDecrypted { +export interface ICredentialsDecrypted { id: string; name: string; type: string; - data?: ICredentialDataDecryptedObject; + data?: T; homeProject?: ProjectSharingData; sharedWithProjects?: ProjectSharingData[]; } @@ -305,12 +310,14 @@ export interface ICredentialTestRequestData { type ICredentialHttpRequestNode = { name: string; docsUrl: string; + hidden?: boolean; } & ({ apiBaseUrl: string } | { apiBaseUrlPlaceholder: string }); export interface ICredentialType { name: string; displayName: string; icon?: Icon; + iconColor?: ThemeIconColor; iconUrl?: Themed; extends?: string[]; properties: INodeProperties[]; @@ -324,6 +331,7 @@ export interface ICredentialType { test?: ICredentialTestRequest; genericAuth?: boolean; httpRequestNode?: ICredentialHttpRequestNode; + supportedNodes?: string[]; } export interface ICredentialTypes { @@ -463,6 +471,7 @@ export interface IGetExecuteWebhookFunctions { mode: WorkflowExecuteMode, webhookData: IWebhookData, closeFunctions: CloseFunction[], + runExecutionData: IRunExecutionData | null, ): IWebhookFunctions; } @@ -713,17 +722,17 @@ export interface IExecuteWorkflowInfo { export type ICredentialTestFunction = ( this: ICredentialTestFunctions, - credential: ICredentialsDecrypted, + credential: ICredentialsDecrypted, ) => Promise; export interface ICredentialTestFunctions { - helpers: { + helpers: SSHTunnelFunctions & { request: (uriOrObject: string | object, options?: object) => Promise; }; } interface BaseHelperFunctions { - createDeferredPromise: () => Promise>; + createDeferredPromise: () => IDeferredPromise; } interface JsonHelperFunctions { @@ -749,6 +758,7 @@ export interface BinaryHelperFunctions { setBinaryDataBuffer(data: IBinaryData, binaryData: Buffer): Promise; copyBinaryFile(): Promise; binaryToBuffer(body: Buffer | Readable): Promise; + binaryToString(body: Buffer | Readable, encoding?: BufferEncoding): Promise; getBinaryPath(binaryDataId: string): string; getBinaryStream(binaryDataId: string, chunkSize?: number): Promise; getBinaryMetadata(binaryDataId: string): Promise<{ @@ -758,6 +768,48 @@ export interface BinaryHelperFunctions { }>; } +export type DeduplicationScope = 'node' | 'workflow'; +export type DeduplicationItemTypes = string | number; +export type DeduplicationMode = 'entries' | 'latestIncrementalKey' | 'latestDate'; + +export interface IDeduplicationOutput { + new: DeduplicationItemTypes[]; + processed: DeduplicationItemTypes[]; +} + +export interface IDeduplicationOutputItems { + new: IDataObject[]; + processed: IDataObject[]; +} + +export interface ICheckProcessedOptions { + mode: DeduplicationMode; + maxEntries?: number; +} + +export interface DeduplicationHelperFunctions { + checkProcessedAndRecord( + items: DeduplicationItemTypes[], + scope: DeduplicationScope, + options: ICheckProcessedOptions, + ): Promise; + checkProcessedItemsAndRecord( + propertyName: string, + items: IDataObject[], + scope: DeduplicationScope, + options: ICheckProcessedOptions, + ): Promise; + removeProcessed( + items: DeduplicationItemTypes[], + scope: DeduplicationScope, + options: ICheckProcessedOptions, + ): Promise; + clearAllProcessedItems(scope: DeduplicationScope, options: ICheckProcessedOptions): Promise; + getProcessedDataCount( + scope: DeduplicationScope, + options: ICheckProcessedOptions, + ): Promise; +} export interface NodeHelperFunctions { copyBinaryFile(filePath: string, fileName: string, mimeType?: string): Promise; } @@ -816,6 +868,36 @@ export interface RequestHelperFunctions { ): Promise; } +export type SSHCredentials = { + sshHost: string; + sshPort: number; + sshUser: string; +} & ( + | { + sshAuthenticateWith: 'password'; + sshPassword: string; + } + | { + sshAuthenticateWith: 'privateKey'; + // TODO: rename this to `sshPrivateKey` + privateKey: string; + // TODO: rename this to `sshPassphrase` + passphrase?: string; + } +); + +export interface SSHTunnelFunctions { + getSSHClient(credentials: SSHCredentials): Promise; +} + +type CronUnit = number | '*' | `*/${number}`; +export type CronExpression = + `${CronUnit} ${CronUnit} ${CronUnit} ${CronUnit} ${CronUnit} ${CronUnit}`; + +export interface SchedulingFunctions { + registerCron(cronExpression: CronExpression, onTick: () => void): void; +} + export type NodeTypeAndVersion = { name: string; type: string; @@ -824,7 +906,10 @@ export type NodeTypeAndVersion = { export interface FunctionsBase { logger: Logger; - getCredentials(type: string, itemIndex?: number): Promise; + getCredentials( + type: string, + itemIndex?: number, + ): Promise; getCredentialsProperties(type: string): INodeProperties[]; getExecutionId(): string; getNode(): INode; @@ -851,7 +936,7 @@ type FunctionsBaseWithRequiredKeys = Functions export type ContextType = 'flow' | 'node'; type BaseExecutionFunctions = FunctionsBaseWithRequiredKeys<'getMode'> & { - continueOnFail(error?: Error): boolean; + continueOnFail(): boolean; evaluateExpression(expression: string, itemIndex: number): NodeParameterValueType; getContext(type: ContextType): IContextObject; getExecuteData(): IExecuteData; @@ -859,7 +944,7 @@ type BaseExecutionFunctions = FunctionsBaseWithRequiredKeys<'getMode'> & { getInputSourceData(inputIndex?: number, inputName?: string): ISourceData; getExecutionCancelSignal(): AbortSignal | undefined; onExecutionCancellation(handler: () => unknown): void; - logAiEvent(eventName: EventNamesAiNodesType, msg?: string | undefined): Promise; + logAiEvent(eventName: AiEvent, msg?: string | undefined): void; }; // TODO: Create later own type only for Config-Nodes @@ -871,11 +956,12 @@ export type IExecuteFunctions = ExecuteFunctions.GetNodeParameterFn & parentCallbackManager?: CallbackManager, ): Promise; getInputConnectionData( - inputName: ConnectionTypes, + inputName: NodeConnectionType, itemIndex: number, inputIndex?: number, ): Promise; getInputData(inputIndex?: number, inputName?: string): INodeExecutionData[]; + getNodeInputs(): INodeInputConfiguration[]; getNodeOutputs(): INodeOutputConfiguration[]; putExecutionToWait(waitTill: Date): Promise; sendMessageToUI(message: any): void; @@ -883,12 +969,12 @@ export type IExecuteFunctions = ExecuteFunctions.GetNodeParameterFn & // TODO: Make this one then only available in the new config one addInputData( - connectionType: ConnectionTypes, + connectionType: NodeConnectionType, data: INodeExecutionData[][] | ExecutionError, runIndex?: number, ): { index: number }; addOutputData( - connectionType: ConnectionTypes, + connectionType: NodeConnectionType, currentNodeRunIndex: number, data: INodeExecutionData[][] | ExecutionError, ): void; @@ -897,7 +983,9 @@ export type IExecuteFunctions = ExecuteFunctions.GetNodeParameterFn & helpers: RequestHelperFunctions & BaseHelperFunctions & BinaryHelperFunctions & + DeduplicationHelperFunctions & FileSystemHelperFunctions & + SSHTunnelFunctions & JsonHelperFunctions & { normalizeItems(items: INodeExecutionData | INodeExecutionData[]): INodeExecutionData[]; constructExecutionMetaData( @@ -910,6 +998,12 @@ export type IExecuteFunctions = ExecuteFunctions.GetNodeParameterFn & }; getParentCallbackManager(): CallbackManager | undefined; + + startJob( + jobType: string, + settings: unknown, + itemIndex: number, + ): Promise>; }; export interface IExecuteSingleFunctions extends BaseExecutionFunctions { @@ -929,6 +1023,27 @@ export interface IExecuteSingleFunctions extends BaseExecutionFunctions { }; } +export type ISupplyDataFunctions = ExecuteFunctions.GetNodeParameterFn & + FunctionsBaseWithRequiredKeys<'getMode'> & + Pick< + IExecuteFunctions, + | 'addInputData' + | 'addOutputData' + | 'getInputConnectionData' + | 'getInputData' + | 'getNodeOutputs' + | 'executeWorkflow' + | 'sendMessageToUI' + | 'helpers' + > & { + continueOnFail(): boolean; + evaluateExpression(expression: string, itemIndex: number): NodeParameterValueType; + getWorkflowDataProxy(itemIndex: number): IWorkflowDataProxyData; + getExecutionCancelSignal(): AbortSignal | undefined; + onExecutionCancellation(handler: () => unknown): void; + logAiEvent(eventName: AiEvent, msg?: string | undefined): void; + }; + export interface IExecutePaginationFunctions extends IExecuteSingleFunctions { makeRoutingRequest( this: IAllExecuteFunctions, @@ -947,7 +1062,7 @@ export interface ILoadOptionsFunctions extends FunctionsBase { options?: IGetNodeParameterOptions, ): NodeParameterValueType | object | undefined; getCurrentNodeParameters(): INodeParameters | undefined; - helpers: RequestHelperFunctions; + helpers: RequestHelperFunctions & SSHTunnelFunctions; } export interface IPollFunctions @@ -966,6 +1081,7 @@ export interface IPollFunctions helpers: RequestHelperFunctions & BaseHelperFunctions & BinaryHelperFunctions & + SchedulingFunctions & JsonHelperFunctions; } @@ -985,6 +1101,8 @@ export interface ITriggerFunctions helpers: RequestHelperFunctions & BaseHelperFunctions & BinaryHelperFunctions & + SSHTunnelFunctions & + SchedulingFunctions & JsonHelperFunctions; } @@ -1005,7 +1123,7 @@ export interface IWebhookFunctions extends FunctionsBaseWithRequiredKeys<'getMod getBodyData(): IDataObject; getHeaderData(): IncomingHttpHeaders; getInputConnectionData( - inputName: ConnectionTypes, + inputName: NodeConnectionType, itemIndex: number, inputIndex?: number, ): Promise; @@ -1015,6 +1133,7 @@ export interface IWebhookFunctions extends FunctionsBaseWithRequiredKeys<'getMod options?: IGetNodeParameterOptions, ): NodeParameterValueType | object; getNodeWebhookUrl: (name: string) => string | undefined; + evaluateExpression(expression: string, itemIndex?: number): NodeParameterValueType; getParamsData(): object; getQueryData(): object; getRequestObject(): express.Request; @@ -1163,7 +1282,8 @@ export type NodePropertyTypes = | 'resourceMapper' | 'filter' | 'assignmentCollection' - | 'credentials'; + | 'credentials' + | 'workflowSelector'; export type CodeAutocompleteTypes = 'function' | 'functionItem'; @@ -1188,12 +1308,25 @@ export interface ILoadOptions { }; } +export type NodePropertyAction = { + type: 'askAiCodeGeneration'; + handler?: string; + target?: string; +}; + export interface INodePropertyTypeOptions { - action?: string; // Supported by: button + // Supported by: button + buttonConfig?: { + action?: string | NodePropertyAction; + label?: string; // otherwise "displayName" is used + hasInputField?: boolean; + inputFieldMaxLength?: number; // Supported if hasInputField is true + }; containerClass?: string; // Supported by: notice alwaysOpenEditWindow?: boolean; // Supported by: json codeAutocomplete?: CodeAutocompleteTypes; // Supported by: string editor?: EditorType; // Supported by: string + editorIsReadOnly?: boolean; // Supported by: string sqlDialect?: SQLDialect; // Supported by: sqlEditor loadOptionsDependsOn?: string[]; // Supported by: options loadOptionsMethod?: string; // Supported by: options @@ -1234,13 +1367,14 @@ type NonEmptyArray = [T, ...T[]]; export type FilterTypeCombinator = 'and' | 'or'; -export type FilterTypeOptions = Partial<{ - caseSensitive: boolean | string; // default = true - leftValue: string; // when set, user can't edit left side of condition - allowedCombinators: NonEmptyArray; // default = ['and', 'or'] - maxConditions: number; // default = 10 - typeValidation: 'strict' | 'loose' | {}; // default = strict, `| {}` is a TypeScript trick to allow custom strings, but still give autocomplete -}>; +export type FilterTypeOptions = { + version: 1 | 2 | {}; // required so nodes are pinned on a version + caseSensitive?: boolean | string; // default = true + leftValue?: string; // when set, user can't edit left side of condition + allowedCombinators?: NonEmptyArray; // default = ['and', 'or'] + maxConditions?: number; // default = 10 + typeValidation?: 'strict' | 'loose' | {}; // default = strict, `| {}` is a TypeScript trick to allow custom strings (expressions), but still give autocomplete +}; export type AssignmentTypeOptions = Partial<{ hideType?: boolean; // visible by default @@ -1257,7 +1391,8 @@ export type DisplayCondition = | { _cnd: { startsWith: string } } | { _cnd: { endsWith: string } } | { _cnd: { includes: string } } - | { _cnd: { regex: string } }; + | { _cnd: { regex: string } } + | { _cnd: { exists: true } }; export interface IDisplayOptions { hide?: { @@ -1407,14 +1542,10 @@ export type IParameterLabel = { size?: 'small' | 'medium'; }; -export interface IPollResponse { - closeFunction?: CloseFunction; -} - export interface ITriggerResponse { closeFunction?: CloseFunction; // To manually trigger the run - manualTriggerFunction?: CloseFunction; + manualTriggerFunction?: () => Promise; // Gets added automatically at manual workflow runs resolves with // the first emitted data manualTriggerResponse?: Promise; @@ -1428,6 +1559,7 @@ export namespace MultiPartFormData { mimetype?: string; originalFilename?: string; newFilename: string; + size?: number; } export type Request = express.Request< @@ -1462,7 +1594,7 @@ export class NodeExecutionOutput extends Array { export interface INodeType { description: INodeTypeDescription; - supplyData?(this: IAllExecuteFunctions, itemIndex: number): Promise; + supplyData?(this: ISupplyDataFunctions, itemIndex: number): Promise; execute?( this: IExecuteFunctions, ): Promise; @@ -1487,6 +1619,12 @@ export interface INodeType { resourceMapping?: { [functionName: string]: (this: ILoadOptionsFunctions) => Promise; }; + actionHandler?: { + [functionName: string]: ( + this: ILoadOptionsFunctions, + payload: IDataObject | string | undefined, + ) => Promise; + }; }; webhookMethods?: { [name in IWebhookDescription['name']]?: { @@ -1555,7 +1693,7 @@ export interface IWorkflowIssues { [key: string]: INodeIssues; } -export type NodeIconColor = +export type ThemeIconColor = | 'gray' | 'black' | 'blue' @@ -1580,7 +1718,7 @@ export interface INodeTypeBaseDescription { displayName: string; name: string; icon?: Icon; - iconColor?: NodeIconColor; + iconColor?: ThemeIconColor; iconUrl?: Themed; badgeIconUrl?: Themed; group: string[]; @@ -1596,6 +1734,11 @@ export interface INodeTypeBaseDescription { * due to deprecation or as a special case (e.g. Start node) */ hidden?: true; + + /** + * Whether the node will be wrapped for tool-use by AI Agents + */ + usableAsTool?: true; } export interface INodePropertyRouting { @@ -1696,21 +1839,6 @@ export interface IPostReceiveSort extends IPostReceiveBase { }; } -export type ConnectionTypes = - | 'ai_agent' - | 'ai_chain' - | 'ai_document' - | 'ai_embedding' - | 'ai_languageModel' - | 'ai_memory' - | 'ai_outputParser' - | 'ai_retriever' - | 'ai_textSplitter' - | 'ai_tool' - | 'ai_vectorRetriever' - | 'ai_vectorStore' - | 'main'; - export const enum NodeConnectionType { AiAgent = 'ai_agent', @@ -1760,11 +1888,12 @@ export interface INodeInputFilter { } export interface INodeInputConfiguration { + category?: string; displayName?: string; - maxConnections?: number; required?: boolean; + type: NodeConnectionType; filter?: INodeInputFilter; - type: ConnectionTypes; + maxConnections?: number; } export interface INodeOutputConfiguration { @@ -1772,20 +1901,28 @@ export interface INodeOutputConfiguration { displayName?: string; maxConnections?: number; required?: boolean; - type: ConnectionTypes; + type: NodeConnectionType; } export type ExpressionString = `={{${string}}}`; +export type NodeDefaults = Partial<{ + /** + * @deprecated Use {@link INodeTypeBaseDescription.iconColor|iconColor} instead. `iconColor` supports dark mode and uses preset colors from n8n's design system. + */ + color: string; + name: string; +}>; + export interface INodeTypeDescription extends INodeTypeBaseDescription { version: number | number[]; - defaults: INodeParameters; + defaults: NodeDefaults; eventTriggerDescription?: string; activationMessage?: string; - inputs: Array | ExpressionString; + inputs: Array | ExpressionString; requiredInputs?: string | number[] | number; // Ony available with executionOrder => "v1" inputNames?: string[]; - outputs: Array | ExpressionString; + outputs: Array | ExpressionString; outputNames?: string[]; properties: INodeProperties[]; credentials?: INodeCredentialDescription[]; @@ -1912,7 +2049,7 @@ export interface IWebhookResponseData { } export type WebhookResponseData = 'allEntries' | 'firstEntryJson' | 'firstEntryBinary' | 'noData'; -export type WebhookResponseMode = 'onReceived' | 'lastNode' | 'responseNode'; +export type WebhookResponseMode = 'onReceived' | 'lastNode' | 'responseNode' | 'formPage'; export interface INodeTypes { getByName(nodeType: string): INodeType | IVersionedNodeType; @@ -2059,6 +2196,7 @@ export interface IWorkflowBase { name: string; active: boolean; createdAt: Date; + startedAt?: Date; updatedAt: Date; nodes: INode[]; connections: IConnections; @@ -2085,36 +2223,69 @@ export interface IWorkflowExecuteHooks { sendResponse?: Array<(response: IExecuteResponsePromiseData) => Promise>; } -export const eventNamesAiNodes = [ - 'n8n.ai.memory.get.messages', - 'n8n.ai.memory.added.message', - 'n8n.ai.output.parser.get.instructions', - 'n8n.ai.output.parser.parsed', - 'n8n.ai.retriever.get.relevant.documents', - 'n8n.ai.embeddings.embedded.document', - 'n8n.ai.embeddings.embedded.query', - 'n8n.ai.document.processed', - 'n8n.ai.text.splitter.split', - 'n8n.ai.tool.called', - 'n8n.ai.vector.store.searched', - 'n8n.ai.llm.generated', - 'n8n.ai.llm.error', - 'n8n.ai.vector.store.populated', -] as const; - -export type EventNamesAiNodesType = (typeof eventNamesAiNodes)[number]; +export interface IWorkflowExecutionDataProcess { + destinationNode?: string; + restartExecutionId?: string; + executionMode: WorkflowExecuteMode; + /** + * The data that is sent in the body of the webhook that started this + * execution. + */ + executionData?: IRunExecutionData; + runData?: IRunData; + pinData?: IPinData; + retryOf?: string; + pushRef?: string; + startNodes?: StartNodeData[]; + workflowData: IWorkflowBase; + userId?: string; + projectId?: string; + /** + * Defines which version of the partial execution flow is used. + * Possible values are: + * 0 - use the old flow + * 1 - use the new flow + * -1 - the backend chooses which flow based on the environment variable + * PARTIAL_EXECUTION_VERSION_DEFAULT + */ + partialExecutionVersion?: string; +} export interface ExecuteWorkflowOptions { node?: INode; parentWorkflowId: string; inputData?: INodeExecutionData[]; - parentExecutionId?: string; loadedWorkflowData?: IWorkflowBase; - loadedRunData?: any; + loadedRunData?: IWorkflowExecutionDataProcess; parentWorkflowSettings?: IWorkflowSettings; parentCallbackManager?: CallbackManager; } +export type AiEvent = + | 'ai-messages-retrieved-from-memory' + | 'ai-message-added-to-memory' + | 'ai-output-parsed' + | 'ai-documents-retrieved' + | 'ai-document-embedded' + | 'ai-query-embedded' + | 'ai-document-processed' + | 'ai-text-split' + | 'ai-tool-called' + | 'ai-vector-store-searched' + | 'ai-llm-generated-output' + | 'ai-llm-errored' + | 'ai-vector-store-populated' + | 'ai-vector-store-updated'; + +type AiEventPayload = { + msg: string; + workflowName: string; + executionId: string; + nodeName: string; + workflowId?: string; + nodeType?: string; +}; + export interface IWorkflowExecuteAdditionalData { credentialsHelper: ICredentialsHelper; executeWorkflow: ( @@ -2140,18 +2311,29 @@ export interface IWorkflowExecuteAdditionalData { userId?: string; variables: IDataObject; secretsHelpers: SecretsHelpersBase; - logAiEvent: ( - eventName: EventNamesAiNodesType, - payload: { - msg?: string; - executionId: string; - nodeName: string; - workflowId?: string; - workflowName: string; - nodeType?: string; - }, - ) => Promise; + logAiEvent: (eventName: AiEvent, payload: AiEventPayload) => void; parentCallbackManager?: CallbackManager; + startAgentJob( + additionalData: IWorkflowExecuteAdditionalData, + jobType: string, + settings: unknown, + executeFunctions: IExecuteFunctions, + inputData: ITaskDataConnections, + node: INode, + workflow: Workflow, + runExecutionData: IRunExecutionData, + runIndex: number, + itemIndex: number, + activeNodeName: string, + connectionInputData: INodeExecutionData[], + siblingParameters: INodeParameters, + mode: WorkflowExecuteMode, + envProviderState: EnvProviderState, + executeData?: IExecuteData, + defaultReturnRunIndex?: number, + selfData?: IDataObject, + contextNodeName?: string, + ): Promise>; } export type WorkflowExecuteMode = @@ -2210,6 +2392,7 @@ export interface WorkflowTestData { }; output: { nodeExecutionOrder?: string[]; + testAllOutputs?: boolean; nodeData: { [key: string]: any[][]; }; @@ -2217,7 +2400,7 @@ export interface WorkflowTestData { nock?: { baseUrl: string; mocks: Array<{ - method: 'get' | 'post'; + method: 'delete' | 'get' | 'post' | 'put'; path: string; requestBody?: RequestBodyMatcher; statusCode: number; @@ -2320,6 +2503,10 @@ export interface INodeGraphItem { agent?: string; //@n8n/n8n-nodes-langchain.agent prompts?: IDataObject[] | IDataObject; //ai node's prompts, cloud only toolSettings?: IDataObject; //various langchain tool's settings + sql?: string; //merge node combineBySql, cloud only + workflow_id?: string; //@n8n/n8n-nodes-langchain.toolWorkflow and n8n-nodes-base.executeWorkflow + runs?: number; + items_total?: number; } export interface INodeNameIndex { @@ -2332,16 +2519,6 @@ export interface INodesGraphResult { webhookNodeNames: string[]; } -export interface ITelemetryClientConfig { - url: string; - key: string; -} - -export interface ITelemetrySettings { - enabled: boolean; - config?: ITelemetryClientConfig; -} - export interface FeatureFlags { [featureFlag: string]: string | boolean | undefined; } @@ -2367,7 +2544,7 @@ export type PublicInstalledPackage = { export type PublicInstalledNode = { name: string; type: string; - latestVersion: string; + latestVersion: number; package: PublicInstalledPackage; }; @@ -2375,6 +2552,8 @@ export interface NodeExecutionWithMetadata extends INodeExecutionData { pairedItem: IPairedItemData | IPairedItemData[]; } +export type AnnotationVote = 'up' | 'down'; + export interface ExecutionSummary { id: string; finished?: boolean; @@ -2382,6 +2561,7 @@ export interface ExecutionSummary { retryOf?: string | null; retrySuccessId?: string | null; waitTill?: Date; + createdAt?: Date; startedAt: Date; stoppedAt?: Date; workflowId: string; @@ -2392,6 +2572,13 @@ export interface ExecutionSummary { nodeExecutionStatus?: { [key: string]: IExecutionSummaryNodeExecutionResult; }; + annotation?: { + vote: AnnotationVote; + tags: Array<{ + id: string; + name: string; + }>; + }; } export interface IExecutionSummaryNodeExecutionResult { @@ -2420,6 +2607,18 @@ export interface ResourceMapperField { readOnly?: boolean; } +export type FormFieldsParameter = Array<{ + fieldLabel: string; + fieldType?: string; + requiredField?: boolean; + fieldOptions?: { values: Array<{ option: string }> }; + multiselect?: boolean; + multipleFiles?: boolean; + acceptFileTypes?: string; + formatDate?: string; + placeholder?: string; +}>; + export type FieldTypeMap = { // eslint-disable-next-line id-denylist boolean: boolean; @@ -2435,6 +2634,7 @@ export type FieldTypeMap = { options: any; url: string; jwt: string; + 'form-fields': FormFieldsParameter; }; export type FieldType = keyof FieldTypeMap; @@ -2471,15 +2671,16 @@ export interface FilterOperatorValue { export type FilterConditionValue = { id: string; - leftValue: NodeParameterValue; + leftValue: NodeParameterValue | NodeParameterValue[]; operator: FilterOperatorValue; - rightValue: NodeParameterValue; + rightValue: NodeParameterValue | NodeParameterValue[]; }; export type FilterOptionsValue = { caseSensitive: boolean; leftValue: string; typeValidation: 'strict' | 'loose'; + version: 1 | 2; }; export type FilterValue = { @@ -2513,19 +2714,6 @@ export interface ExecutionFilters { workflowId?: number | string; } -export interface IVersionNotificationSettings { - enabled: boolean; - endpoint: string; - infoUrl: string; -} - -export interface IUserManagementSettings { - quota: number; - showSetupOnFirstLoad?: boolean; - smtpSetup: boolean; - authenticationMethod: AuthenticationMethod; -} - export type NpsSurveyRespondedState = { lastShownAt: number; responded: true }; export type NpsSurveyWaitingState = { lastShownAt: number; @@ -2543,12 +2731,43 @@ export interface IUserSettings { npsSurvey?: NpsSurveyState; } -export interface IPublicApiSettings { - enabled: boolean; - latestVersion: number; - path: string; - swaggerUi: { - enabled: boolean; +export interface IProcessedDataConfig { + availableModes: string; + mode: string; +} + +export interface IDataDeduplicator { + checkProcessedAndRecord( + items: DeduplicationItemTypes[], + context: DeduplicationScope, + contextData: ICheckProcessedContextData, + options: ICheckProcessedOptions, + ): Promise; + + removeProcessed( + items: DeduplicationItemTypes[], + context: DeduplicationScope, + contextData: ICheckProcessedContextData, + options: ICheckProcessedOptions, + ): Promise; + + clearAllProcessedItems( + context: DeduplicationScope, + contextData: ICheckProcessedContextData, + options: ICheckProcessedOptions, + ): Promise; + getProcessedDataCount( + context: DeduplicationScope, + contextData: ICheckProcessedContextData, + options: ICheckProcessedOptions, + ): Promise; +} + +export interface ICheckProcessedContextData { + node?: INode; + workflow: { + id: string; + active: boolean; }; } @@ -2556,132 +2775,6 @@ export type ExpressionEvaluatorType = 'tmpl' | 'tournament'; export type N8nAIProviderType = 'openai' | 'unknown'; -export interface IN8nUISettings { - endpointForm: string; - endpointFormTest: string; - endpointFormWaiting: string; - endpointWebhook: string; - endpointWebhookTest: string; - saveDataErrorExecution: WorkflowSettings.SaveDataExecution; - saveDataSuccessExecution: WorkflowSettings.SaveDataExecution; - saveManualExecutions: boolean; - executionTimeout: number; - maxExecutionTimeout: number; - workflowCallerPolicyDefaultOption: WorkflowSettings.CallerPolicy; - oauthCallbackUrls: { - oauth1: string; - oauth2: string; - }; - timezone: string; - urlBaseWebhook: string; - urlBaseEditor: string; - versionCli: string; - authCookie: { - secure: boolean; - }; - binaryDataMode: string; - releaseChannel: 'stable' | 'beta' | 'nightly' | 'dev'; - n8nMetadata?: { - userId?: string; - [key: string]: string | number | undefined; - }; - versionNotifications: IVersionNotificationSettings; - instanceId: string; - telemetry: ITelemetrySettings; - posthog: { - enabled: boolean; - apiHost: string; - apiKey: string; - autocapture: boolean; - disableSessionRecording: boolean; - debug: boolean; - }; - personalizationSurveyEnabled: boolean; - defaultLocale: string; - userManagement: IUserManagementSettings; - sso: { - saml: { - loginLabel: string; - loginEnabled: boolean; - }; - ldap: { - loginLabel: string; - loginEnabled: boolean; - }; - }; - publicApi: IPublicApiSettings; - workflowTagsDisabled: boolean; - logLevel: LogLevel; - hiringBannerEnabled: boolean; - previewMode: boolean; - templates: { - enabled: boolean; - host: string; - }; - onboardingCallPromptEnabled: boolean; - missingPackages?: boolean; - executionMode: 'regular' | 'queue'; - pushBackend: 'sse' | 'websocket'; - communityNodesEnabled: boolean; - deployment: { - type: string | 'default' | 'n8n-internal' | 'cloud' | 'desktop_mac' | 'desktop_win'; - }; - isNpmAvailable: boolean; - allowedModules: { - builtIn?: string[]; - external?: string[]; - }; - enterprise: { - sharing: boolean; - ldap: boolean; - saml: boolean; - logStreaming: boolean; - advancedExecutionFilters: boolean; - variables: boolean; - sourceControl: boolean; - auditLogs: boolean; - externalSecrets: boolean; - showNonProdBanner: boolean; - debugInEditor: boolean; - binaryDataS3: boolean; - workflowHistory: boolean; - workerView: boolean; - advancedPermissions: boolean; - projects: { - team: { - limit: number; - }; - }; - }; - hideUsagePage: boolean; - license: { - environment: 'development' | 'production' | 'staging'; - }; - variables: { - limit: number; - }; - expressions: { - evaluator: ExpressionEvaluatorType; - }; - mfa: { - enabled: boolean; - }; - banners: { - dismissed: string[]; - }; - ai: { - enabled: boolean; - provider: string; - features: { - generateCurl: boolean; - }; - }; - workflowHistory: { - pruneTime: number; - licensePruneTime: number; - }; -} - export interface SecretsHelpersBase { update(): Promise; waitForInit(): Promise; @@ -2702,6 +2795,24 @@ export type BannerName = export type Functionality = 'regular' | 'configuration-node' | 'pairedItem'; -export type Result = { ok: true; result: T } | { ok: false; error: E }; - export type CallbackManager = CallbackManagerLC; + +export type IPersonalizationSurveyAnswersV4 = { + version: 'v4'; + personalization_survey_submitted_at: string; + personalization_survey_n8n_version: string; + automationGoalDevops?: string[] | null; + automationGoalDevopsOther?: string | null; + companyIndustryExtended?: string[] | null; + otherCompanyIndustryExtended?: string[] | null; + companySize?: string | null; + companyType?: string | null; + automationGoalSm?: string[] | null; + automationGoalSmOther?: string | null; + usageModes?: string[] | null; + email?: string | null; + role?: string | null; + roleOther?: string | null; + reportedSource?: string | null; + reportedSourceOther?: string | null; +}; diff --git a/packages/workflow/src/LoggerProxy.ts b/packages/workflow/src/LoggerProxy.ts index cd6f1b1cb9..eebfd036b4 100644 --- a/packages/workflow/src/LoggerProxy.ts +++ b/packages/workflow/src/LoggerProxy.ts @@ -5,12 +5,10 @@ export let error: Logger['error'] = noOp; export let warn: Logger['warn'] = noOp; export let info: Logger['info'] = noOp; export let debug: Logger['debug'] = noOp; -export let verbose: Logger['verbose'] = noOp; export const init = (logger: Logger) => { error = (message, meta) => logger.error(message, meta); warn = (message, meta) => logger.warn(message, meta); info = (message, meta) => logger.info(message, meta); debug = (message, meta) => logger.debug(message, meta); - verbose = (message, meta) => logger.verbose(message, meta); }; diff --git a/packages/workflow/src/MessageEventBus.ts b/packages/workflow/src/MessageEventBus.ts index a6d44ced9f..f873299090 100644 --- a/packages/workflow/src/MessageEventBus.ts +++ b/packages/workflow/src/MessageEventBus.ts @@ -1,4 +1,5 @@ import type { DateTime } from 'luxon'; + import type { INodeCredentials } from './Interfaces'; // =============================== @@ -11,6 +12,7 @@ export const enum EventMessageTypeNames { confirm = '$$EventMessageConfirm', workflow = '$$EventMessageWorkflow', node = '$$EventMessageNode', + execution = '$$EventMessageExecution', aiNode = '$$EventMessageAiNode', } diff --git a/packages/workflow/src/NativeMethods/index.ts b/packages/workflow/src/NativeMethods/index.ts index f51d64f89c..1ba9d9759f 100644 --- a/packages/workflow/src/NativeMethods/index.ts +++ b/packages/workflow/src/NativeMethods/index.ts @@ -1,9 +1,9 @@ -import { stringMethods } from './String.methods'; import { arrayMethods } from './Array.methods'; +import { booleanMethods } from './Boolean.methods'; import { numberMethods } from './Number.methods'; import { objectMethods } from './Object.Methods'; +import { stringMethods } from './String.methods'; import type { NativeDoc } from '../Extensions/Extensions'; -import { booleanMethods } from './Boolean.methods'; const NATIVE_METHODS: NativeDoc[] = [ stringMethods, diff --git a/packages/workflow/src/NodeHelpers.ts b/packages/workflow/src/NodeHelpers.ts index b60aa3b1c2..85431c6897 100644 --- a/packages/workflow/src/NodeHelpers.ts +++ b/packages/workflow/src/NodeHelpers.ts @@ -10,6 +10,8 @@ import get from 'lodash/get'; import isEqual from 'lodash/isEqual'; import uniqBy from 'lodash/uniqBy'; +import { SINGLE_EXECUTION_NODES } from './Constants'; +import { ApplicationError } from './errors/application.error'; import { NodeConnectionType } from './Interfaces'; import type { FieldType, @@ -35,8 +37,8 @@ import type { IWorkflowExecuteAdditionalData, NodeParameterValue, ResourceMapperValue, - ConnectionTypes, INodeTypeDescription, + INodeTypeBaseDescription, INodeOutputConfiguration, INodeInputConfiguration, GenericValue, @@ -44,18 +46,15 @@ import type { NodeHint, INodeExecutionData, } from './Interfaces'; +import { validateFilterParameter } from './NodeParameters/FilterParameter'; import { isFilterValue, isResourceMapperValue, isValidResourceLocatorParameterValue, } from './type-guards'; -import { deepCopy } from './utils'; - -import type { Workflow } from './Workflow'; -import { validateFilterParameter } from './NodeParameters/FilterParameter'; import { validateFieldType } from './TypeValidation'; -import { ApplicationError } from './errors/application.error'; -import { SINGLE_EXECUTION_NODES } from './Constants'; +import { deepCopy } from './utils'; +import type { Workflow } from './Workflow'; export const cronNodeOptions: INodePropertyCollection[] = [ { @@ -260,7 +259,7 @@ const commonPollingParameters: INodeProperties[] = [ }, ]; -const commonCORSParameters: INodeProperties[] = [ +export const commonCORSParameters: INodeProperties[] = [ { displayName: 'Allowed Origins (CORS)', name: 'allowedOrigins', @@ -352,6 +351,97 @@ const declarativeNodeOptionParameters: INodeProperties = { ], }; +/** + * Modifies the description of the passed in object, such that it can be used + * as an AI Agent Tool. + * Returns the modified item (not copied) + */ +export function convertNodeToAiTool< + T extends object & { description: INodeTypeDescription | INodeTypeBaseDescription }, +>(item: T): T { + // quick helper function for type-guard down below + function isFullDescription(obj: unknown): obj is INodeTypeDescription { + return typeof obj === 'object' && obj !== null && 'properties' in obj; + } + + if (isFullDescription(item.description)) { + item.description.name += 'Tool'; + item.description.inputs = []; + item.description.outputs = [NodeConnectionType.AiTool]; + item.description.displayName += ' Tool'; + delete item.description.usableAsTool; + + const hasResource = item.description.properties.some((prop) => prop.name === 'resource'); + const hasOperation = item.description.properties.some((prop) => prop.name === 'operation'); + + if (!item.description.properties.map((prop) => prop.name).includes('toolDescription')) { + const descriptionType: INodeProperties = { + displayName: 'Tool Description', + name: 'descriptionType', + type: 'options', + noDataExpression: true, + options: [ + { + name: 'Set Automatically', + value: 'auto', + description: 'Automatically set based on resource and operation', + }, + { + name: 'Set Manually', + value: 'manual', + description: 'Manually set the description', + }, + ], + default: 'auto', + }; + + const descProp: INodeProperties = { + displayName: 'Description', + name: 'toolDescription', + type: 'string', + default: item.description.description, + required: true, + typeOptions: { rows: 2 }, + description: + 'Explain to the LLM what this tool does, a good, specific description would allow LLMs to produce expected results much more often', + placeholder: `e.g. ${item.description.description}`, + }; + + const noticeProp: INodeProperties = { + displayName: 'Use the expression {{ $fromAI() }} for any data to be filled by the model', + name: 'notice', + type: 'notice', + default: '', + }; + + item.description.properties.unshift(descProp); + + // If node has resource or operation we can determine pre-populate tool description based on it + // so we add the descriptionType property as the first property + if (hasResource || hasOperation) { + item.description.properties.unshift(descriptionType); + + descProp.displayOptions = { + show: { + descriptionType: ['manual'], + }, + }; + } + + item.description.properties.unshift(noticeProp); + } + } + + item.description.codex = { + categories: ['AI'], + subcategories: { + AI: ['Tools'], + Tools: ['Other Tools'], + }, + }; + return item; +} + /** * Determines if the provided node type has any output types other than the main connection type. * @param typeDescription The node's type description to check. @@ -359,7 +449,7 @@ const declarativeNodeOptionParameters: INodeProperties = { export function isSubNodeType( typeDescription: Pick | null, ): boolean { - if (!typeDescription || !typeDescription.outputs || typeof typeDescription.outputs === 'string') { + if (!typeDescription?.outputs || typeof typeDescription.outputs === 'string') { return false; } const outputTypes = getConnectionTypes(typeDescription.outputs); @@ -521,6 +611,9 @@ const checkConditions = ( if (key === 'regex') { return new RegExp(targetValue as string).test(propertyValue as string); } + if (key === 'exists') { + return propertyValue !== null && propertyValue !== undefined && propertyValue !== ''; + } return false; }); } @@ -1242,8 +1335,8 @@ export function getNodeWebhookUrl( } export function getConnectionTypes( - connections: Array, -): ConnectionTypes[] { + connections: Array, +): NodeConnectionType[] { return connections .map((connection) => { if (typeof connection === 'string') { @@ -1258,7 +1351,7 @@ export function getNodeInputs( workflow: Workflow, node: INode, nodeTypeData: INodeTypeDescription, -): Array { +): Array { if (Array.isArray(nodeTypeData?.inputs)) { return nodeTypeData.inputs; } @@ -1270,7 +1363,7 @@ export function getNodeInputs( nodeTypeData.inputs, 'internal', {}, - ) || []) as ConnectionTypes[]; + ) || []) as NodeConnectionType[]; } catch (e) { console.warn('Could not calculate inputs dynamically for node: ', node.name); return []; @@ -1350,8 +1443,8 @@ export function getNodeOutputs( workflow: Workflow, node: INode, nodeTypeData: INodeTypeDescription, -): Array { - let outputs: Array = []; +): Array { + let outputs: Array = []; if (Array.isArray(nodeTypeData.outputs)) { outputs = nodeTypeData.outputs; @@ -1363,7 +1456,7 @@ export function getNodeOutputs( nodeTypeData.outputs, 'internal', {}, - ) || []) as ConnectionTypes[]; + ) || []) as NodeConnectionType[]; } catch (e) { console.warn('Could not calculate outputs dynamically for node: ', node.name); } @@ -1386,7 +1479,7 @@ export function getNodeOutputs( ...outputs, { category: 'error', - type: 'main', + type: NodeConnectionType.Main, displayName: 'Error', }, ]; @@ -1577,7 +1670,7 @@ export function addToIssuesIfMissing( (nodeProperties.type === 'multiOptions' && Array.isArray(value) && value.length === 0) || (nodeProperties.type === 'dateTime' && value === undefined) || (nodeProperties.type === 'options' && (value === '' || value === undefined)) || - (nodeProperties.type === 'resourceLocator' && + ((nodeProperties.type === 'resourceLocator' || nodeProperties.type === 'workflowSelector') && !isValidResourceLocatorParameterValue(value as INodeParameterResourceLocator)) ) { // Parameter is required but empty @@ -1651,7 +1744,10 @@ export function getParameterIssues( } } - if (nodeProperties.type === 'resourceLocator' && isDisplayed) { + if ( + (nodeProperties.type === 'resourceLocator' || nodeProperties.type === 'workflowSelector') && + isDisplayed + ) { const value = getParameterValueByPath(nodeValues, nodeProperties.name, path); if (isINodeParameterResourceLocator(value)) { const mode = nodeProperties.modes?.find((option) => option.name === value.mode); diff --git a/packages/workflow/src/NodeParameters/FilterParameter.ts b/packages/workflow/src/NodeParameters/FilterParameter.ts index 8e13f4b342..681594ee59 100644 --- a/packages/workflow/src/NodeParameters/FilterParameter.ts +++ b/packages/workflow/src/NodeParameters/FilterParameter.ts @@ -1,15 +1,17 @@ import type { DateTime } from 'luxon'; + +import { ApplicationError } from '../errors/application.error'; import type { FilterConditionValue, FilterOperatorType, FilterOptionsValue, FilterValue, INodeProperties, - Result, ValidationResult, } from '../Interfaces'; -import { validateFieldType } from '../TypeValidation'; import * as LoggerProxy from '../LoggerProxy'; +import type { Result } from '../result'; +import { validateFieldType } from '../TypeValidation'; type FilterConditionMetadata = { index: number; @@ -18,12 +20,12 @@ type FilterConditionMetadata = { errorFormat: 'full' | 'inline'; }; -export class FilterError extends Error { +export class FilterError extends ApplicationError { constructor( message: string, readonly description: string, ) { - super(message); + super(message, { level: 'warning' }); } } @@ -31,12 +33,18 @@ function parseSingleFilterValue( value: unknown, type: FilterOperatorType, strict = false, + version: FilterOptionsValue['version'] = 1, ): ValidationResult { if (type === 'any' || value === null || value === undefined) { return { valid: true, newValue: value } as ValidationResult; } if (type === 'boolean' && !strict) { + if (version >= 2) { + const result = validateFieldType('filter', value, type); + if (result.valid) return result; + } + return { valid: true, newValue: Boolean(value) }; } @@ -52,6 +60,7 @@ const withIndefiniteArticle = (noun: string): string => { return `${article} ${noun}`; }; +// eslint-disable-next-line complexity function parseFilterConditionValues( condition: FilterConditionValue, options: FilterOptionsValue, @@ -61,10 +70,16 @@ function parseFilterConditionValues( const itemIndex = metadata.itemIndex ?? 0; const errorFormat = metadata.errorFormat ?? 'full'; const strict = options.typeValidation === 'strict'; + const version = options.version ?? 1; const { operator } = condition; const rightType = operator.rightType ?? operator.type; - const parsedLeftValue = parseSingleFilterValue(condition.leftValue, operator.type, strict); - const parsedRightValue = parseSingleFilterValue(condition.rightValue, rightType, strict); + const parsedLeftValue = parseSingleFilterValue( + condition.leftValue, + operator.type, + strict, + version, + ); + const parsedRightValue = parseSingleFilterValue(condition.rightValue, rightType, strict, version); const leftValid = parsedLeftValue.valid || (metadata.unresolvedExpressions && @@ -93,14 +108,61 @@ function parseFilterConditionValues( )} ${suffix}`; }; - const invalidTypeDescription = 'Try changing the type of comparison.'; + const getTypeDescription = (isStrict: boolean) => { + if (isStrict) + return "Try changing the type of comparison. Alternatively you can enable 'Convert types where required'."; + return 'Try changing the type of the comparison.'; + }; + + const composeInvalidTypeDescription = ( + type: string, + fromType: string, + valuePosition: 'first' | 'second', + ) => { + fromType = fromType.toLocaleLowerCase(); + const expectedType = withIndefiniteArticle(type); + + let convertionFunction = ''; + if (type === 'string') { + convertionFunction = '.toString()'; + } else if (type === 'number') { + convertionFunction = '.toNumber()'; + } else if (type === 'boolean') { + convertionFunction = '.toBoolean()'; + } + + if (strict && convertionFunction) { + const suggestFunction = ` by adding ${convertionFunction}`; + return ` +

Try either:

+
    +
  1. Enabling 'Convert types where required'
  2. +
  3. Converting the ${valuePosition} field to ${expectedType}${suggestFunction}
  4. +
+ `; + } + + return getTypeDescription(strict); + }; + + if (!leftValid && !rightValid && typeof condition.leftValue === typeof condition.rightValue) { + return { + ok: false, + error: new FilterError( + `Comparison type expects ${withIndefiniteArticle(operator.type)} but both fields are ${withIndefiniteArticle( + typeof condition.leftValue, + )}`, + getTypeDescription(strict), + ), + }; + } if (!leftValid) { return { ok: false, error: new FilterError( composeInvalidTypeMessage(operator.type, typeof condition.leftValue, leftValueString), - invalidTypeDescription, + composeInvalidTypeDescription(operator.type, typeof condition.leftValue, 'first'), ), }; } @@ -110,7 +172,7 @@ function parseFilterConditionValues( ok: false, error: new FilterError( composeInvalidTypeMessage(rightType, typeof condition.rightValue, rightValueString), - invalidTypeDescription, + composeInvalidTypeDescription(rightType, typeof condition.rightValue, 'second'), ), }; } @@ -137,6 +199,18 @@ function parseRegexPattern(pattern: string): RegExp { return regex; } +export function arrayContainsValue(array: unknown[], value: unknown, ignoreCase: boolean): boolean { + if (ignoreCase && typeof value === 'string') { + return array.some((item) => { + if (typeof item !== 'string') { + return false; + } + return item.toString().toLocaleLowerCase() === value.toLocaleLowerCase(); + }); + } + return array.includes(value); +} + // eslint-disable-next-line complexity export function executeFilterCondition( condition: FilterConditionValue, @@ -284,15 +358,9 @@ export function executeFilterCondition( switch (condition.operator.operation) { case 'contains': - if (ignoreCase && typeof rightValue === 'string') { - rightValue = rightValue.toLocaleLowerCase(); - } - return left.includes(rightValue); + return arrayContainsValue(left, rightValue, ignoreCase); case 'notContains': - if (ignoreCase && typeof rightValue === 'string') { - rightValue = rightValue.toLocaleLowerCase(); - } - return !left.includes(rightValue); + return !arrayContainsValue(left, rightValue, ignoreCase); case 'lengthEquals': return left.length === rightNumber; case 'lengthNotEquals': diff --git a/packages/workflow/src/RoutingNode.ts b/packages/workflow/src/RoutingNode.ts index 3ddd29a69e..4b3ed7f597 100644 --- a/packages/workflow/src/RoutingNode.ts +++ b/packages/workflow/src/RoutingNode.ts @@ -11,6 +11,8 @@ import merge from 'lodash/merge'; import set from 'lodash/set'; import url from 'node:url'; +import { NodeApiError } from './errors/node-api.error'; +import { NodeOperationError } from './errors/node-operation.error'; import type { ICredentialDataDecryptedObject, ICredentialsDecrypted, @@ -39,15 +41,11 @@ import type { PostReceiveAction, JsonObject, CloseFunction, + INodeCredentialDescription, } from './Interfaces'; - import * as NodeHelpers from './NodeHelpers'; - -import type { Workflow } from './Workflow'; - -import { NodeOperationError } from './errors/node-operation.error'; -import { NodeApiError } from './errors/node-api.error'; import { sleep } from './utils'; +import type { Workflow } from './Workflow'; export class RoutingNode { additionalData: IWorkflowExecuteAdditionalData; @@ -91,11 +89,6 @@ export class RoutingNode { const items = inputData.main[0] as INodeExecutionData[]; const returnData: INodeExecutionData[] = []; - let credentialType: string | undefined; - - if (nodeType.description.credentials?.length) { - credentialType = nodeType.description.credentials[0].name; - } const closeFunctions: CloseFunction[] = []; const executeFunctions = nodeExecuteFunctions.getExecuteFunctions( this.workflow, @@ -111,22 +104,45 @@ export class RoutingNode { abortSignal, ); + let credentialDescription: INodeCredentialDescription | undefined; + + if (nodeType.description.credentials?.length) { + if (nodeType.description.credentials.length === 1) { + credentialDescription = nodeType.description.credentials[0]; + } else { + const authenticationMethod = executeFunctions.getNodeParameter( + 'authentication', + 0, + ) as string; + credentialDescription = nodeType.description.credentials.find((x) => + x.displayOptions?.show?.authentication?.includes(authenticationMethod), + ); + if (!credentialDescription) { + throw new NodeOperationError( + this.node, + `Node type "${this.node.type}" does not have any credentials of type "${authenticationMethod}" defined`, + { level: 'warning' }, + ); + } + } + } + let credentials: ICredentialDataDecryptedObject | undefined; if (credentialsDecrypted) { credentials = credentialsDecrypted.data; - } else if (credentialType) { + } else if (credentialDescription) { try { - credentials = (await executeFunctions.getCredentials(credentialType)) || {}; + credentials = + (await executeFunctions.getCredentials( + credentialDescription.name, + )) || {}; } catch (error) { - if ( - nodeType.description.credentials?.length && - nodeType.description.credentials[0].required - ) { + if (credentialDescription.required) { // Only throw error if credential is mandatory throw error; } else { // Do not request cred type since it doesn't exist - credentialType = undefined; + credentialDescription = undefined; } } } @@ -283,7 +299,7 @@ export class RoutingNode { itemContext[itemIndex].thisArgs, itemIndex, runIndex, - credentialType, + credentialDescription?.name, itemContext[itemIndex].requestData.requestOperations, credentialsDecrypted, ), diff --git a/packages/workflow/src/TelemetryHelpers.ts b/packages/workflow/src/TelemetryHelpers.ts index 3113a91554..705e07cd46 100644 --- a/packages/workflow/src/TelemetryHelpers.ts +++ b/packages/workflow/src/TelemetryHelpers.ts @@ -1,4 +1,19 @@ -import { getNodeParameters } from './NodeHelpers'; +import { + AGENT_LANGCHAIN_NODE_TYPE, + AI_TRANSFORM_NODE_TYPE, + CHAIN_LLM_LANGCHAIN_NODE_TYPE, + CHAIN_SUMMARIZATION_LANGCHAIN_NODE_TYPE, + EXECUTE_WORKFLOW_NODE_TYPE, + HTTP_REQUEST_NODE_TYPE, + HTTP_REQUEST_TOOL_LANGCHAIN_NODE_TYPE, + LANGCHAIN_CUSTOM_TOOLS, + MERGE_NODE_TYPE, + OPENAI_LANGCHAIN_NODE_TYPE, + STICKY_NODE_TYPE, + WEBHOOK_NODE_TYPE, + WORKFLOW_TOOL_LANGCHAIN_NODE_TYPE, +} from './Constants'; +import { ApplicationError } from './errors/application.error'; import type { IConnection, INode, @@ -9,19 +24,10 @@ import type { IWorkflowBase, INodeTypes, IDataObject, + IRunData, + ITaskData, } from './Interfaces'; -import { ApplicationError } from './errors/application.error'; -import { - AGENT_LANGCHAIN_NODE_TYPE, - CHAIN_LLM_LANGCHAIN_NODE_TYPE, - CHAIN_SUMMARIZATION_LANGCHAIN_NODE_TYPE, - HTTP_REQUEST_NODE_TYPE, - HTTP_REQUEST_TOOL_LANGCHAIN_NODE_TYPE, - LANGCHAIN_CUSTOM_TOOLS, - OPENAI_LANGCHAIN_NODE_TYPE, - STICKY_NODE_TYPE, - WEBHOOK_NODE_TYPE, -} from './Constants'; +import { getNodeParameters } from './NodeHelpers'; export function getNodeTypeForName(workflow: IWorkflowBase, nodeName: string): INode | undefined { return workflow.nodes.find((node) => node.name === nodeName); @@ -127,6 +133,21 @@ export function getDomainPath(raw: string, urlParts = URL_PARTS_REGEX): string { } } +function getNumberOfItemsInRuns(runs: ITaskData[]): number { + return runs.reduce((total, run) => { + const data = run.data ?? {}; + let count = 0; + Object.keys(data).forEach((type) => { + const conn = data[type] ?? []; + conn.forEach((branch) => { + count += (branch ?? []).length; + }); + }); + + return total + count; + }, 0); +} + export function generateNodesGraph( workflow: Partial, nodeTypes: INodeTypes, @@ -134,8 +155,10 @@ export function generateNodesGraph( sourceInstanceId?: string; nodeIdMap?: { [curr: string]: string }; isCloudDeployment?: boolean; + runData?: IRunData; }, ): INodesGraphResult { + const { runData } = options ?? {}; const nodeGraph: INodesGraph = { node_types: [], node_connections: [], @@ -196,6 +219,13 @@ export function generateNodesGraph( position: node.position, }; + if (runData?.[node.name]) { + const runs = runData[node.name] ?? []; + nodeItem.runs = runs.length; + + nodeItem.items_total = getNumberOfItemsInRuns(runs); + } + if (options?.sourceInstanceId) { nodeItem.src_instance_id = options.sourceInstanceId; } @@ -204,8 +234,12 @@ export function generateNodesGraph( nodeItem.src_node_id = options.nodeIdMap[node.id]; } - if (node.type === AGENT_LANGCHAIN_NODE_TYPE) { + if (node.type === AI_TRANSFORM_NODE_TYPE && options?.isCloudDeployment) { + nodeItem.prompts = { instructions: node.parameters.instructions as string }; + } else if (node.type === AGENT_LANGCHAIN_NODE_TYPE) { nodeItem.agent = (node.parameters.agent as string) ?? 'conversationalAgent'; + } else if (node.type === MERGE_NODE_TYPE) { + nodeItem.operation = node.parameters.mode as string; } else if (node.type === HTTP_REQUEST_NODE_TYPE && node.typeVersion === 1) { try { nodeItem.domain = new URL(node.parameters.url as string).hostname; @@ -311,6 +345,13 @@ export function generateNodesGraph( } } else if (node.type === WEBHOOK_NODE_TYPE) { webhookNodeNames.push(node.name); + } else if ( + node.type === EXECUTE_WORKFLOW_NODE_TYPE || + node.type === WORKFLOW_TOOL_LANGCHAIN_NODE_TYPE + ) { + if (node.parameters?.workflowId) { + nodeItem.workflow_id = node.parameters?.workflowId as string; + } } else { try { const nodeType = nodeTypes.getByNameAndVersion(node.type, node.typeVersion); @@ -398,6 +439,10 @@ export function generateNodesGraph( nodeItem.prompts = (((node.parameters?.messages as IDataObject) ?? {}).messageValues as IDataObject[]) ?? []; } + + if (node.type === MERGE_NODE_TYPE && node.parameters?.operation === 'combineBySql') { + nodeItem.sql = node.parameters?.query as string; + } } nodeGraph.nodes[index.toString()] = nodeItem; diff --git a/packages/workflow/src/TypeValidation.ts b/packages/workflow/src/TypeValidation.ts index 606c3d201e..6b1557af83 100644 --- a/packages/workflow/src/TypeValidation.ts +++ b/packages/workflow/src/TypeValidation.ts @@ -1,7 +1,14 @@ -import { DateTime } from 'luxon'; -import type { FieldType, INodePropertyOptions, ValidationResult } from './Interfaces'; import isObject from 'lodash/isObject'; +import { DateTime } from 'luxon'; + import { ApplicationError } from './errors'; +import type { + FieldType, + FormFieldsParameter, + INodePropertyOptions, + ValidationResult, +} from './Interfaces'; +import { jsonParse } from './utils'; export const tryToParseNumber = (value: unknown): number => { const isValidNumber = !isNaN(Number(value)); @@ -135,7 +142,8 @@ export const tryToParseObject = (value: unknown): object => { return value; } try { - const o = JSON.parse(String(value)) as object; + const o = jsonParse(String(value), { acceptJSObject: true }); + if (typeof o !== 'object' || Array.isArray(o)) { throw new ApplicationError('Value is not a valid object', { extra: { value } }); } @@ -145,6 +153,96 @@ export const tryToParseObject = (value: unknown): object => { } }; +const ALLOWED_FORM_FIELDS_KEYS = [ + 'fieldLabel', + 'fieldType', + 'placeholder', + 'fieldOptions', + 'multiselect', + 'multipleFiles', + 'acceptFileTypes', + 'formatDate', + 'requiredField', +]; + +const ALLOWED_FIELD_TYPES = [ + 'date', + 'dropdown', + 'email', + 'file', + 'number', + 'password', + 'text', + 'textarea', +]; + +export const tryToParseJsonToFormFields = (value: unknown): FormFieldsParameter => { + const fields: FormFieldsParameter = []; + + try { + const rawFields = jsonParse>(value as string, { + acceptJSObject: true, + }); + + for (const [index, field] of rawFields.entries()) { + for (const key of Object.keys(field)) { + if (!ALLOWED_FORM_FIELDS_KEYS.includes(key)) { + throw new ApplicationError(`Key '${key}' in field ${index} is not valid for form fields`); + } + if ( + key !== 'fieldOptions' && + !['string', 'number', 'boolean'].includes(typeof field[key]) + ) { + field[key] = String(field[key]); + } else if (typeof field[key] === 'string') { + field[key] = field[key].replace(//g, '>'); + } + + if (key === 'fieldType' && !ALLOWED_FIELD_TYPES.includes(field[key] as string)) { + throw new ApplicationError( + `Field type '${field[key] as string}' in field ${index} is not valid for form fields`, + ); + } + + if (key === 'fieldOptions') { + if (Array.isArray(field[key])) { + field[key] = { values: field[key] }; + } + + if ( + typeof field[key] !== 'object' || + !(field[key] as { [key: string]: unknown }).values + ) { + throw new ApplicationError( + `Field dropdown in field ${index} does has no 'values' property that contain an array of options`, + ); + } + + for (const [optionIndex, option] of ( + (field[key] as { [key: string]: unknown }).values as Array<{ + [key: string]: { option: string }; + }> + ).entries()) { + if (Object.keys(option).length !== 1 || typeof option.option !== 'string') { + throw new ApplicationError( + `Field dropdown in field ${index} has an invalid option ${optionIndex}`, + ); + } + } + } + } + + fields.push(field as FormFieldsParameter[number]); + } + } catch (error) { + if (error instanceof ApplicationError) throw error; + + throw new ApplicationError('Value is not valid JSON'); + } + + return fields; +}; + export const getValueDescription = (value: T): string => { if (typeof value === 'object') { if (value === null) return "'null'"; @@ -322,6 +420,16 @@ export function validateFieldType( }; } } + case 'form-fields': { + try { + return { valid: true, newValue: tryToParseJsonToFormFields(value) }; + } catch (e) { + return { + valid: false, + errorMessage: (e as Error).message, + }; + } + } default: { return { valid: true, newValue: value }; } diff --git a/packages/workflow/src/Workflow.ts b/packages/workflow/src/Workflow.ts index 9b2042d7f8..c60b949449 100644 --- a/packages/workflow/src/Workflow.ts +++ b/packages/workflow/src/Workflow.ts @@ -7,6 +7,15 @@ /* eslint-disable @typescript-eslint/prefer-nullish-coalescing */ +import { + MANUAL_CHAT_TRIGGER_LANGCHAIN_NODE_TYPE, + NODES_WITH_RENAMABLE_CONTENT, + STARTING_NODE_TYPES, +} from './Constants'; +import type { IDeferredPromise } from './DeferredPromise'; +import { ApplicationError } from './errors/application.error'; +import { Expression } from './Expression'; +import { getGlobalState } from './GlobalState'; import type { IConnections, IExecuteResponsePromiseData, @@ -41,23 +50,13 @@ import type { IRun, IRunNodeResponse, NodeParameterValueType, - ConnectionTypes, CloseFunction, INodeOutputConfiguration, } from './Interfaces'; import { Node, NodeConnectionType } from './Interfaces'; -import type { IDeferredPromise } from './DeferredPromise'; - import * as NodeHelpers from './NodeHelpers'; import * as ObservableObject from './ObservableObject'; import { RoutingNode } from './RoutingNode'; -import { Expression } from './Expression'; -import { - MANUAL_CHAT_TRIGGER_LANGCHAIN_NODE_TYPE, - NODES_WITH_RENAMABLE_CONTENT, - STARTING_NODE_TYPES, -} from './Constants'; -import { ApplicationError } from './errors/application.error'; function dedupe(arr: T[]): T[] { return [...new Set(arr)]; @@ -94,6 +93,8 @@ export class Workflow { settings: IWorkflowSettings; + readonly timezone: string; + // To save workflow specific static data like for example // ids of registered webhooks of nodes staticData: IDataObject; @@ -151,6 +152,7 @@ export class Workflow { }); this.settings = parameters.settings || {}; + this.timezone = this.settings.timezone ?? getGlobalState().defaultTimezone; this.expression = new Expression(this); } @@ -576,11 +578,11 @@ export class Workflow { /** * Finds the highest parent nodes of the node with the given name * - * @param {ConnectionTypes} [type='main'] + * @param {NodeConnectionType} [type='main'] */ getHighestNode( nodeName: string, - type: ConnectionTypes = 'main', + type: NodeConnectionType = NodeConnectionType.Main, nodeConnectionIndex?: number, checkedNodes?: string[], ): string[] { @@ -660,7 +662,7 @@ export class Workflow { */ getChildNodes( nodeName: string, - type: ConnectionTypes | 'ALL' | 'ALL_NON_MAIN' = 'main', + type: NodeConnectionType | 'ALL' | 'ALL_NON_MAIN' = NodeConnectionType.Main, depth = -1, ): string[] { return this.getConnectedNodes(this.connectionsBySourceNode, nodeName, type, depth); @@ -669,12 +671,12 @@ export class Workflow { /** * Returns all the nodes before the given one * - * @param {ConnectionTypes} [type='main'] + * @param {NodeConnectionType} [type='main'] * @param {*} [depth=-1] */ getParentNodes( nodeName: string, - type: ConnectionTypes | 'ALL' | 'ALL_NON_MAIN' = 'main', + type: NodeConnectionType | 'ALL' | 'ALL_NON_MAIN' = NodeConnectionType.Main, depth = -1, ): string[] { return this.getConnectedNodes(this.connectionsByDestinationNode, nodeName, type, depth); @@ -684,13 +686,13 @@ export class Workflow { * Gets all the nodes which are connected nodes starting from * the given one * - * @param {ConnectionTypes} [type='main'] + * @param {NodeConnectionType} [type='main'] * @param {*} [depth=-1] */ getConnectedNodes( connections: IConnections, nodeName: string, - connectionType: ConnectionTypes | 'ALL' | 'ALL_NON_MAIN' = 'main', + connectionType: NodeConnectionType | 'ALL' | 'ALL_NON_MAIN' = NodeConnectionType.Main, depth = -1, checkedNodesIncoming?: string[], ): string[] { @@ -706,13 +708,13 @@ export class Workflow { return []; } - let types: ConnectionTypes[]; + let types: NodeConnectionType[]; if (connectionType === 'ALL') { - types = Object.keys(connections[nodeName]) as ConnectionTypes[]; + types = Object.keys(connections[nodeName]) as NodeConnectionType[]; } else if (connectionType === 'ALL_NON_MAIN') { types = Object.keys(connections[nodeName]).filter( (type) => type !== 'main', - ) as ConnectionTypes[]; + ) as NodeConnectionType[]; } else { types = [connectionType]; } @@ -796,7 +798,7 @@ export class Workflow { searchNodesBFS(connections: IConnections, sourceNode: string, maxDepth = -1): IConnectedNode[] { const returnConns: IConnectedNode[] = []; - const type: ConnectionTypes = 'main'; + const type: NodeConnectionType = NodeConnectionType.Main; let queue: IConnectedNode[] = []; queue.push({ name: sourceNode, @@ -903,7 +905,7 @@ export class Workflow { getNodeConnectionIndexes( nodeName: string, parentNodeName: string, - type: ConnectionTypes = 'main', + type: NodeConnectionType = NodeConnectionType.Main, depth = -1, checkedNodes?: string[], ): INodeConnection | undefined { @@ -1233,6 +1235,7 @@ export class Workflow { additionalData: IWorkflowExecuteAdditionalData, nodeExecuteFunctions: INodeExecuteFunctions, mode: WorkflowExecuteMode, + runExecutionData: IRunExecutionData | null, ): Promise { const nodeType = this.nodeTypes.getByNameAndVersion(node.type, node.typeVersion); if (nodeType === undefined) { @@ -1254,6 +1257,7 @@ export class Workflow { mode, webhookData, closeFunctions, + runExecutionData, ); return nodeType instanceof Node ? await nodeType.webhook(context) @@ -1424,13 +1428,6 @@ export class Workflow { return { data: null }; } - if (triggerResponse.manualTriggerFunction !== undefined) { - // If a manual trigger function is defined call it and wait till it did run - await triggerResponse.manualTriggerFunction(); - } - - const response = await triggerResponse.manualTriggerResponse!; - let closeFunction; if (triggerResponse.closeFunction) { // In manual mode we return the trigger closeFunction. That allows it to be called directly @@ -1439,8 +1436,18 @@ export class Workflow { // If we would not be able to wait for it to close would it cause problems with "own" mode as the // process would be killed directly after it and so the acknowledge would not have been finished yet. closeFunction = triggerResponse.closeFunction; + + // Manual testing of Trigger nodes creates an execution. If the execution is cancelled, `closeFunction` should be called to cleanup any open connections/consumers + abortSignal?.addEventListener('abort', closeFunction); } + if (triggerResponse.manualTriggerFunction !== undefined) { + // If a manual trigger function is defined call it and wait till it did run + await triggerResponse.manualTriggerFunction(); + } + + const response = await triggerResponse.manualTriggerResponse!; + if (response.length === 0) { return { data: null, closeFunction }; } diff --git a/packages/workflow/src/WorkflowDataProxy.ts b/packages/workflow/src/WorkflowDataProxy.ts index 5c2d360527..f140edc98f 100644 --- a/packages/workflow/src/WorkflowDataProxy.ts +++ b/packages/workflow/src/WorkflowDataProxy.ts @@ -2,33 +2,36 @@ /* eslint-disable @typescript-eslint/no-this-alias */ /* eslint-disable @typescript-eslint/no-unsafe-return */ -import { DateTime, Duration, Interval, Settings } from 'luxon'; import * as jmespath from 'jmespath'; +import { DateTime, Duration, Interval, Settings } from 'luxon'; -import type { - IDataObject, - IExecuteData, - INodeExecutionData, - INodeParameters, - IPairedItemData, - IRunExecutionData, - ISourceData, - ITaskData, - IWorkflowDataProxyAdditionalKeys, - IWorkflowDataProxyData, - INodeParameterResourceLocator, - NodeParameterValueType, - WorkflowExecuteMode, - ProxyInput, +import { augmentArray, augmentObject } from './AugmentObject'; +import { SCRIPTING_NODE_TYPES } from './Constants'; +import { ApplicationError } from './errors/application.error'; +import { ExpressionError, type ExpressionErrorOptions } from './errors/expression.error'; +import { getGlobalState } from './GlobalState'; +import { + type IDataObject, + type IExecuteData, + type INodeExecutionData, + type INodeParameters, + type IPairedItemData, + type IRunExecutionData, + type ISourceData, + type ITaskData, + type IWorkflowDataProxyAdditionalKeys, + type IWorkflowDataProxyData, + type INodeParameterResourceLocator, + type NodeParameterValueType, + type WorkflowExecuteMode, + type ProxyInput, + NodeConnectionType, } from './Interfaces'; import * as NodeHelpers from './NodeHelpers'; -import { ExpressionError, type ExpressionErrorOptions } from './errors/expression.error'; -import type { Workflow } from './Workflow'; -import { augmentArray, augmentObject } from './AugmentObject'; import { deepCopy } from './utils'; -import { getGlobalState } from './GlobalState'; -import { ApplicationError } from './errors/application.error'; -import { SCRIPTING_NODE_TYPES } from './Constants'; +import type { Workflow } from './Workflow'; +import type { EnvProviderState } from './WorkflowDataProxyEnvProvider'; +import { createEnvProvider, createEnvProviderState } from './WorkflowDataProxyEnvProvider'; import { getPinDataIfManualExecution } from './WorkflowDataProxyHelpers'; export function isResourceLocatorValue(value: unknown): value is INodeParameterResourceLocator { @@ -65,6 +68,7 @@ export class WorkflowDataProxy { private defaultReturnRunIndex = -1, private selfData: IDataObject = {}, private contextNodeName: string = activeNodeName, + private envProviderState?: EnvProviderState, ) { this.runExecutionData = isScriptingNode(this.contextNodeName, workflow) ? runExecutionData !== null @@ -346,7 +350,7 @@ export class WorkflowDataProxy { const nodeConnection = that.workflow.getNodeConnectionIndexes( that.contextNodeName, nodeName, - 'main', + NodeConnectionType.Main, ); if (nodeConnection === undefined) { @@ -486,40 +490,6 @@ export class WorkflowDataProxy { ); } - /** - * Returns a proxy to query data from the environment - * - * @private - */ - private envGetter() { - const that = this; - return new Proxy( - {}, - { - has: () => true, - get(_, name) { - if (name === 'isProxy') return true; - - if (typeof process === 'undefined') { - throw new ExpressionError('not accessible via UI, please run node', { - runIndex: that.runIndex, - itemIndex: that.itemIndex, - }); - } - if (process.env.N8N_BLOCK_ENV_ACCESS_IN_NODE === 'true') { - throw new ExpressionError('access to env vars denied', { - causeDetailed: - 'If you need access please contact the administrator to remove the environment variable ‘N8N_BLOCK_ENV_ACCESS_IN_NODE‘', - runIndex: that.runIndex, - itemIndex: that.itemIndex, - }); - } - return process.env[name.toString()]; - }, - }, - ); - } - private prevNodeGetter() { const allowedValues = ['name', 'outputIndex', 'runIndex']; const that = this; @@ -960,6 +930,43 @@ export class WorkflowDataProxy { return taskData.data!.main[previousNodeOutput]![pairedItem.item]; }; + const handleFromAi = ( + name: string, + _description?: string, + _type: string = 'string', + defaultValue?: unknown, + ) => { + if (!name || name === '') { + throw new ExpressionError('Please provide a key', { + runIndex: that.runIndex, + itemIndex: that.itemIndex, + }); + } + const nameValidationRegex = /^[a-zA-Z0-9_-]{0,64}$/; + if (!nameValidationRegex.test(name)) { + throw new ExpressionError( + 'Invalid parameter key, must be between 1 and 64 characters long and only contain lowercase letters, uppercase letters, numbers, underscores, and hyphens', + { + runIndex: that.runIndex, + itemIndex: that.itemIndex, + }, + ); + } + const placeholdersDataInputData = + that.runExecutionData?.resultData.runData[that.activeNodeName]?.[0].inputOverride?.[ + NodeConnectionType.AiTool + ]?.[0]?.[0].json; + + if (Boolean(!placeholdersDataInputData)) { + throw new ExpressionError('No execution data available', { + runIndex: that.runIndex, + itemIndex: that.itemIndex, + type: 'no_execution_data', + }); + } + return placeholdersDataInputData?.[name] ?? defaultValue; + }; + const base = { $: (nodeName: string) => { if (!nodeName) { @@ -1265,7 +1272,11 @@ export class WorkflowDataProxy { $binary: {}, // Placeholder $data: {}, // Placeholder - $env: this.envGetter(), + $env: createEnvProvider( + that.runIndex, + that.itemIndex, + that.envProviderState ?? createEnvProviderState(), + ), $evaluateExpression: (expression: string, itemIndex?: number) => { itemIndex = itemIndex || that.itemIndex; return that.workflow.expression.getParameterValue( @@ -1302,6 +1313,10 @@ export class WorkflowDataProxy { ); return dataProxy.getDataProxy(); }, + $fromAI: handleFromAi, + // Make sure mis-capitalized $fromAI is handled correctly even though we don't auto-complete it + $fromai: handleFromAi, + $fromAi: handleFromAi, $items: (nodeName?: string, outputIndex?: number, runIndex?: number) => { if (nodeName === undefined) { nodeName = (that.prevNodeGetter() as { name: string }).name; @@ -1349,6 +1364,8 @@ export class WorkflowDataProxy { $thisItemIndex: this.itemIndex, $thisRunIndex: this.runIndex, $nodeVersion: that.workflow.getNode(that.activeNodeName)?.typeVersion, + $nodeId: that.workflow.getNode(that.activeNodeName)?.id, + $webhookId: that.workflow.getNode(that.activeNodeName)?.webhookId, }; return new Proxy(base, { diff --git a/packages/workflow/src/WorkflowDataProxyEnvProvider.ts b/packages/workflow/src/WorkflowDataProxyEnvProvider.ts new file mode 100644 index 0000000000..b41c8b8e09 --- /dev/null +++ b/packages/workflow/src/WorkflowDataProxyEnvProvider.ts @@ -0,0 +1,75 @@ +import { ExpressionError } from './errors/expression.error'; + +export type EnvProviderState = { + isProcessAvailable: boolean; + isEnvAccessBlocked: boolean; + env: Record; +}; + +/** + * Captures a snapshot of the environment variables and configuration + * that can be used to initialize an environment provider. + */ +export function createEnvProviderState(): EnvProviderState { + const isProcessAvailable = typeof process !== 'undefined'; + const isEnvAccessBlocked = isProcessAvailable + ? process.env.N8N_BLOCK_ENV_ACCESS_IN_NODE === 'true' + : false; + const env: Record = + !isProcessAvailable || isEnvAccessBlocked ? {} : (process.env as Record); + + return { + isProcessAvailable, + isEnvAccessBlocked, + env, + }; +} + +/** + * Creates a proxy that provides access to the environment variables + * in the `WorkflowDataProxy`. Use the `createEnvProviderState` to + * create the default state object that is needed for the proxy, + * unless you need something specific. + * + * @example + * createEnvProvider( + * runIndex, + * itemIndex, + * createEnvProviderState(), + * ) + */ +export function createEnvProvider( + runIndex: number, + itemIndex: number, + providerState: EnvProviderState, +): Record { + return new Proxy( + {}, + { + has() { + return true; + }, + + get(_, name) { + if (name === 'isProxy') return true; + + if (!providerState.isProcessAvailable) { + throw new ExpressionError('not accessible via UI, please run node', { + runIndex, + itemIndex, + }); + } + if (providerState.isEnvAccessBlocked) { + throw new ExpressionError('access to env vars denied', { + causeDetailed: + 'If you need access please contact the administrator to remove the environment variable ‘N8N_BLOCK_ENV_ACCESS_IN_NODE‘', + runIndex, + itemIndex, + }); + } + + return providerState.env[name.toString()]; + }, + }, + ); +} diff --git a/packages/workflow/src/errors/abstract/node.error.ts b/packages/workflow/src/errors/abstract/node.error.ts index 460538fc0e..dfa8f9819e 100644 --- a/packages/workflow/src/errors/abstract/node.error.ts +++ b/packages/workflow/src/errors/abstract/node.error.ts @@ -1,6 +1,6 @@ -import { isTraversableObject, jsonParse } from '../../utils'; -import type { IDataObject, INode, JsonObject } from '@/Interfaces'; import { ExecutionBaseError } from './execution-base.error'; +import type { IDataObject, INode, JsonObject } from '../../Interfaces'; +import { isTraversableObject, jsonParse } from '../../utils'; /** * Descriptive messages for common errors. @@ -167,7 +167,7 @@ export abstract class NodeError extends ExecutionBaseError { } // if code is provided and it is in the list of common errors set the message and return early - if (code && COMMON_ERRORS[code.toUpperCase()]) { + if (code && typeof code === 'string' && COMMON_ERRORS[code.toUpperCase()]) { newMessage = COMMON_ERRORS[code] as string; messages.push(message); return [newMessage, messages]; diff --git a/packages/workflow/src/errors/application.error.ts b/packages/workflow/src/errors/application.error.ts index 954df90a78..b8f54cf8b4 100644 --- a/packages/workflow/src/errors/application.error.ts +++ b/packages/workflow/src/errors/application.error.ts @@ -1,10 +1,11 @@ -import callsites from 'callsites'; import type { Event } from '@sentry/node'; +import callsites from 'callsites'; export type Level = 'warning' | 'error' | 'fatal' | 'info'; export type ReportingOptions = { level?: Level; + executionId?: string; } & Pick; export class ApplicationError extends Error { diff --git a/packages/workflow/src/errors/credential-access-error.ts b/packages/workflow/src/errors/credential-access-error.ts index 0fce04cf4e..6de0c3ec96 100644 --- a/packages/workflow/src/errors/credential-access-error.ts +++ b/packages/workflow/src/errors/credential-access-error.ts @@ -1,5 +1,5 @@ -import type { INode } from '../Interfaces'; import { ExecutionBaseError } from './abstract/execution-base.error'; +import type { INode } from '../Interfaces'; export class CredentialAccessError extends ExecutionBaseError { override readonly description = diff --git a/packages/workflow/src/errors/db-connection-timeout-error.ts b/packages/workflow/src/errors/db-connection-timeout-error.ts new file mode 100644 index 0000000000..901b9d36b7 --- /dev/null +++ b/packages/workflow/src/errors/db-connection-timeout-error.ts @@ -0,0 +1,14 @@ +import { ApplicationError } from './application.error'; + +export type DbConnectionTimeoutErrorOpts = { + configuredTimeoutInMs: number; + cause: Error; +}; + +export class DbConnectionTimeoutError extends ApplicationError { + constructor(opts: DbConnectionTimeoutErrorOpts) { + const numberFormat = Intl.NumberFormat(); + const errorMessage = `Could not establish database connection within the configured timeout of ${numberFormat.format(opts.configuredTimeoutInMs)} ms. Please ensure the database is configured correctly and the server is reachable. You can increase the timeout by setting the 'DB_POSTGRESDB_CONNECTION_TIMEOUT' environment variable.`; + super(errorMessage, { cause: opts.cause }); + } +} diff --git a/packages/workflow/src/errors/ensure-error.ts b/packages/workflow/src/errors/ensure-error.ts new file mode 100644 index 0000000000..331692d6e8 --- /dev/null +++ b/packages/workflow/src/errors/ensure-error.ts @@ -0,0 +1,9 @@ +/** Ensures `error` is an `Error */ +export function ensureError(error: unknown): Error { + return error instanceof Error + ? error + : new Error('Error that was not an instance of Error was thrown', { + // We should never throw anything except something that derives from Error + cause: error, + }); +} diff --git a/packages/workflow/src/errors/execution-cancelled.error.ts b/packages/workflow/src/errors/execution-cancelled.error.ts new file mode 100644 index 0000000000..bc625e0f3a --- /dev/null +++ b/packages/workflow/src/errors/execution-cancelled.error.ts @@ -0,0 +1,10 @@ +import { ExecutionBaseError } from './abstract/execution-base.error'; + +export class ExecutionCancelledError extends ExecutionBaseError { + constructor(executionId: string) { + super('The execution was cancelled', { + level: 'warning', + extra: { executionId }, + }); + } +} diff --git a/packages/workflow/src/errors/expression.error.ts b/packages/workflow/src/errors/expression.error.ts index ac73010957..02b3c74444 100644 --- a/packages/workflow/src/errors/expression.error.ts +++ b/packages/workflow/src/errors/expression.error.ts @@ -1,5 +1,5 @@ -import type { IDataObject } from '../Interfaces'; import { ExecutionBaseError } from './abstract/execution-base.error'; +import type { IDataObject } from '../Interfaces'; export interface ExpressionErrorOptions { cause?: Error; diff --git a/packages/workflow/src/errors/index.ts b/packages/workflow/src/errors/index.ts index b23367e91d..5dea5b9e6d 100644 --- a/packages/workflow/src/errors/index.ts +++ b/packages/workflow/src/errors/index.ts @@ -1,6 +1,7 @@ export { ApplicationError } from './application.error'; export { ExpressionError } from './expression.error'; export { CredentialAccessError } from './credential-access-error'; +export { ExecutionCancelledError } from './execution-cancelled.error'; export { NodeApiError } from './node-api.error'; export { NodeOperationError } from './node-operation.error'; export { NodeSslError } from './node-ssl.error'; @@ -15,3 +16,5 @@ export { TriggerCloseError } from './trigger-close.error'; export { NodeError } from './abstract/node.error'; export { ExecutionBaseError } from './abstract/execution-base.error'; export { ExpressionExtensionError } from './expression-extension.error'; +export { DbConnectionTimeoutError } from './db-connection-timeout-error'; +export { ensureError } from './ensure-error'; diff --git a/packages/workflow/src/errors/node-api.error.ts b/packages/workflow/src/errors/node-api.error.ts index 47f231bcef..f18f2e6fed 100644 --- a/packages/workflow/src/errors/node-api.error.ts +++ b/packages/workflow/src/errors/node-api.error.ts @@ -1,7 +1,17 @@ /* eslint-disable @typescript-eslint/no-unsafe-member-access */ /* eslint-disable @typescript-eslint/no-unsafe-argument */ +import { AxiosError } from 'axios'; import { parseString } from 'xml2js'; + +import { NodeError } from './abstract/node.error'; +import type { ReportingOptions } from './application.error'; +import { + NO_OP_NODE_TYPE, + UNKNOWN_ERROR_DESCRIPTION, + UNKNOWN_ERROR_MESSAGE, + UNKNOWN_ERROR_MESSAGE_CRED, +} from '../Constants'; import type { INode, JsonObject, @@ -9,16 +19,7 @@ import type { IStatusCodeMessages, Functionality, } from '../Interfaces'; -import { NodeError } from './abstract/node.error'; import { removeCircularRefs } from '../utils'; -import type { ReportingOptions } from './application.error'; -import { AxiosError } from 'axios'; -import { - NO_OP_NODE_TYPE, - UNKNOWN_ERROR_DESCRIPTION, - UNKNOWN_ERROR_MESSAGE, - UNKNOWN_ERROR_MESSAGE_CRED, -} from '../Constants'; export interface NodeOperationErrorOptions { message?: string; diff --git a/packages/workflow/src/errors/node-operation.error.ts b/packages/workflow/src/errors/node-operation.error.ts index b5fb2c518e..00a7a179cc 100644 --- a/packages/workflow/src/errors/node-operation.error.ts +++ b/packages/workflow/src/errors/node-operation.error.ts @@ -1,8 +1,7 @@ -import type { INode, JsonObject } from '@/Interfaces'; -import type { NodeOperationErrorOptions } from './node-api.error'; import { NodeError } from './abstract/node.error'; import { ApplicationError } from './application.error'; -import { OBFUSCATED_ERROR_MESSAGE } from '../Constants'; +import type { NodeOperationErrorOptions } from './node-api.error'; +import type { INode, JsonObject } from '../Interfaces'; /** * Class for instantiating an operational error, e.g. an invalid credentials error. @@ -19,13 +18,8 @@ export class NodeOperationError extends NodeError { return error; } - let obfuscateErrorMessage = false; - if (typeof error === 'string') { - error = new Error(error); - } else if (!(error instanceof ApplicationError)) { - // this error was no processed by n8n, obfuscate error message - obfuscateErrorMessage = true; + error = new ApplicationError(error); } super(node, error); @@ -34,7 +28,6 @@ export class NodeOperationError extends NodeError { error.messages.forEach((message) => this.addToMessages(message)); } - if (obfuscateErrorMessage) this.message = OBFUSCATED_ERROR_MESSAGE; if (options.message) this.message = options.message; if (options.level) this.level = options.level; if (options.functionality) this.functionality = options.functionality; diff --git a/packages/workflow/src/errors/trigger-close.error.ts b/packages/workflow/src/errors/trigger-close.error.ts index 19d3b7a769..25b5e186b8 100644 --- a/packages/workflow/src/errors/trigger-close.error.ts +++ b/packages/workflow/src/errors/trigger-close.error.ts @@ -1,5 +1,5 @@ -import type { INode } from '../Interfaces'; import { ApplicationError, type Level } from './application.error'; +import type { INode } from '../Interfaces'; interface TriggerCloseErrorOptions extends ErrorOptions { level: Level; diff --git a/packages/workflow/src/errors/workflow-activation.error.ts b/packages/workflow/src/errors/workflow-activation.error.ts index 2ea7e5628f..8e2c493d9a 100644 --- a/packages/workflow/src/errors/workflow-activation.error.ts +++ b/packages/workflow/src/errors/workflow-activation.error.ts @@ -1,6 +1,6 @@ -import type { INode } from '../Interfaces'; import { ExecutionBaseError } from './abstract/execution-base.error'; import type { ApplicationError } from './application.error'; +import type { INode } from '../Interfaces'; interface WorkflowActivationErrorOptions { cause?: Error; diff --git a/packages/workflow/src/errors/workflow-operation.error.ts b/packages/workflow/src/errors/workflow-operation.error.ts index bbf57c06a0..40bdd100e5 100644 --- a/packages/workflow/src/errors/workflow-operation.error.ts +++ b/packages/workflow/src/errors/workflow-operation.error.ts @@ -1,5 +1,5 @@ -import type { INode } from '@/Interfaces'; import { ExecutionBaseError } from './abstract/execution-base.error'; +import type { INode } from '../Interfaces'; /** * Class for instantiating an operational error, e.g. a timeout error. diff --git a/packages/workflow/src/index.ts b/packages/workflow/src/index.ts index 55805993ef..8c304664f1 100644 --- a/packages/workflow/src/index.ts +++ b/packages/workflow/src/index.ts @@ -6,7 +6,6 @@ import * as ObservableObject from './ObservableObject'; import * as TelemetryHelpers from './TelemetryHelpers'; export * from './errors'; -export * from './Authentication'; export * from './Constants'; export * from './Cron'; export * from './DeferredPromise'; @@ -19,9 +18,11 @@ export * from './NodeHelpers'; export * from './RoutingNode'; export * from './Workflow'; export * from './WorkflowDataProxy'; +export * from './WorkflowDataProxyEnvProvider'; export * from './WorkflowHooks'; export * from './VersionedNodeType'; export * from './TypeValidation'; +export * from './result'; export { LoggerProxy, NodeHelpers, ObservableObject, TelemetryHelpers }; export { isObjectEmpty, diff --git a/packages/workflow/src/result.ts b/packages/workflow/src/result.ts new file mode 100644 index 0000000000..78dddfe343 --- /dev/null +++ b/packages/workflow/src/result.ts @@ -0,0 +1,30 @@ +import { ensureError } from './errors'; + +export type ResultOk = { ok: true; result: T }; +export type ResultError = { ok: false; error: E }; +export type Result = ResultOk | ResultError; + +export const createResultOk = (data: T): ResultOk => ({ + ok: true, + result: data, +}); + +export const createResultError = (error: E): ResultError => ({ + ok: false, + error, +}); + +/** + * Executes the given function and converts it to a Result object. + * + * @example + * const result = toResult(() => fs.writeFileSync('file.txt', 'Hello, World!')); + */ +export const toResult = (fn: () => T): Result => { + try { + return createResultOk(fn()); + } catch (e) { + const error = ensureError(e); + return createResultError(error as E); + } +}; diff --git a/packages/workflow/src/utils.ts b/packages/workflow/src/utils.ts index e043b18ad0..4637b4b47c 100644 --- a/packages/workflow/src/utils.ts +++ b/packages/workflow/src/utils.ts @@ -1,9 +1,15 @@ +import { + parse as esprimaParse, + Syntax, + type Node as SyntaxNode, + type ExpressionStatement, +} from 'esprima-next'; import FormData from 'form-data'; import { merge } from 'lodash'; import { ALPHABET } from './Constants'; -import type { BinaryFileType, IDisplayOptions, INodeProperties, JsonObject } from './Interfaces'; import { ApplicationError } from './errors/application.error'; +import type { BinaryFileType, IDisplayOptions, INodeProperties, JsonObject } from './Interfaces'; const readStreamClasses = new Set(['ReadStream', 'Readable', 'ReadableStream']); @@ -68,17 +74,74 @@ export const deepCopy = string }) }; // eslint-enable +function syntaxNodeToValue(expression?: SyntaxNode | null): unknown { + switch (expression?.type) { + case Syntax.ObjectExpression: + return Object.fromEntries( + expression.properties + .filter((prop) => prop.type === Syntax.Property) + .map(({ key, value }) => [syntaxNodeToValue(key), syntaxNodeToValue(value)]), + ); + case Syntax.Identifier: + return expression.name; + case Syntax.Literal: + return expression.value; + case Syntax.ArrayExpression: + return expression.elements.map((exp) => syntaxNodeToValue(exp)); + default: + return undefined; + } +} + +/** + * Parse any JavaScript ObjectExpression, including: + * - single quoted keys + * - unquoted keys + */ +function parseJSObject(objectAsString: string): object { + const jsExpression = esprimaParse(`(${objectAsString})`).body.find( + (node): node is ExpressionStatement => + node.type === Syntax.ExpressionStatement && node.expression.type === Syntax.ObjectExpression, + ); + + return syntaxNodeToValue(jsExpression?.expression) as object; +} + type MutuallyExclusive = | (T & { [k in Exclude]?: never }) | (U & { [k in Exclude]?: never }); -type JSONParseOptions = MutuallyExclusive<{ errorMessage: string }, { fallbackValue: T }>; +type JSONParseOptions = { acceptJSObject?: boolean } & MutuallyExclusive< + { errorMessage?: string }, + { fallbackValue?: T } +>; +/** + * Parses a JSON string into an object with optional error handling and recovery mechanisms. + * + * @param {string} jsonString - The JSON string to parse. + * @param {Object} [options] - Optional settings for parsing the JSON string. Either `fallbackValue` or `errorMessage` can be set, but not both. + * @param {boolean} [options.acceptJSObject=false] - If true, attempts to recover from common JSON format errors by parsing the JSON string as a JavaScript Object. + * @param {string} [options.errorMessage] - A custom error message to throw if the JSON string cannot be parsed. + * @param {*} [options.fallbackValue] - A fallback value to return if the JSON string cannot be parsed. + * @returns {Object} - The parsed object, or the fallback value if parsing fails and `fallbackValue` is set. + */ export const jsonParse = (jsonString: string, options?: JSONParseOptions): T => { try { return JSON.parse(jsonString) as T; } catch (error) { + if (options?.acceptJSObject) { + try { + const jsonStringCleaned = parseJSObject(jsonString); + return jsonStringCleaned as T; + } catch (e) { + // Ignore this error and return the original error or the fallback value + } + } if (options?.fallbackValue !== undefined) { + if (options.fallbackValue instanceof Function) { + return options.fallbackValue(); + } return options.fallbackValue; } else if (options?.errorMessage) { throw new ApplicationError(options.errorMessage); diff --git a/packages/workflow/test/AugmentObject.test.ts b/packages/workflow/test/AugmentObject.test.ts index fcb126e4eb..457567b993 100644 --- a/packages/workflow/test/AugmentObject.test.ts +++ b/packages/workflow/test/AugmentObject.test.ts @@ -1,5 +1,5 @@ -import type { IDataObject } from '@/Interfaces'; import { augmentArray, augmentObject } from '@/AugmentObject'; +import type { IDataObject } from '@/Interfaces'; import { deepCopy } from '@/utils'; describe('AugmentObject', () => { diff --git a/packages/workflow/test/Cron.test.ts b/packages/workflow/test/Cron.test.ts index d1e48f9f85..0b8c45fd33 100644 --- a/packages/workflow/test/Cron.test.ts +++ b/packages/workflow/test/Cron.test.ts @@ -1,4 +1,5 @@ import { toCronExpression } from '@/Cron'; +import type { CronExpression } from '@/Interfaces'; describe('Cron', () => { describe('toCronExpression', () => { @@ -6,7 +7,7 @@ describe('Cron', () => { const expression = toCronExpression({ mode: 'everyMinute', }); - expect(expression).toMatch(/^[1-6]?[0-9] \* \* \* \* \*$/); + expect(expression).toMatch(/^[1-5]?[0-9] \* \* \* \* \*$/); }); test('should generate a valid cron for `everyHour` triggers', () => { @@ -14,7 +15,7 @@ describe('Cron', () => { mode: 'everyHour', minute: 11, }); - expect(expression).toMatch(/^[1-6]?[0-9] 11 \* \* \* \*$/); + expect(expression).toMatch(/^[1-5]?[0-9] 11 \* \* \* \*$/); }); test('should generate a valid cron for `everyX[minutes]` triggers', () => { @@ -23,7 +24,7 @@ describe('Cron', () => { unit: 'minutes', value: 42, }); - expect(expression).toMatch(/^[1-6]?[0-9] \*\/42 \* \* \* \*$/); + expect(expression).toMatch(/^[1-5]?[0-9] \*\/42 \* \* \* \*$/); }); test('should generate a valid cron for `everyX[hours]` triggers', () => { @@ -32,7 +33,7 @@ describe('Cron', () => { unit: 'hours', value: 3, }); - expect(expression).toMatch(/^[1-6]?[0-9] 0 \*\/3 \* \* \*$/); + expect(expression).toMatch(/^[1-5]?[0-9] [1-5]?[0-9] \*\/3 \* \* \*$/); }); test('should generate a valid cron for `everyDay` triggers', () => { @@ -41,7 +42,7 @@ describe('Cron', () => { hour: 13, minute: 17, }); - expect(expression).toMatch(/^[1-6]?[0-9] 17 13 \* \* \*$/); + expect(expression).toMatch(/^[1-5]?[0-9] 17 13 \* \* \*$/); }); test('should generate a valid cron for `everyWeek` triggers', () => { @@ -51,7 +52,7 @@ describe('Cron', () => { minute: 17, weekday: 4, }); - expect(expression).toMatch(/^[1-6]?[0-9] 17 13 \* \* 4$/); + expect(expression).toMatch(/^[1-5]?[0-9] 17 13 \* \* 4$/); }); test('should generate a valid cron for `everyMonth` triggers', () => { @@ -61,13 +62,13 @@ describe('Cron', () => { minute: 17, dayOfMonth: 12, }); - expect(expression).toMatch(/^[1-6]?[0-9] 17 13 12 \* \*$/); + expect(expression).toMatch(/^[1-5]?[0-9] 17 13 12 \* \*$/); }); test('should trim custom cron expressions', () => { const expression = toCronExpression({ mode: 'custom', - cronExpression: ' 0 9-17 * * * ', + cronExpression: ' 0 9-17 * * * ' as CronExpression, }); expect(expression).toEqual('0 9-17 * * *'); }); diff --git a/packages/workflow/test/DeferredPromise.test.ts b/packages/workflow/test/DeferredPromise.test.ts new file mode 100644 index 0000000000..5766dada56 --- /dev/null +++ b/packages/workflow/test/DeferredPromise.test.ts @@ -0,0 +1,22 @@ +import { createDeferredPromise } from '@/DeferredPromise'; + +describe('DeferredPromise', () => { + it('should resolve the promise with the correct value', async () => { + let done = false; + const deferred = createDeferredPromise(); + void deferred.promise.finally(() => { + done = true; + }); + expect(done).toBe(false); + deferred.resolve('test'); + await expect(deferred.promise).resolves.toBe('test'); + expect(done).toBe(true); + }); + + it('should reject the promise with the correct error', async () => { + const deferred = createDeferredPromise(); + const error = new Error('test error'); + deferred.reject(error); + await expect(deferred.promise).rejects.toThrow(error); + }); +}); diff --git a/packages/workflow/test/Expression.test.ts b/packages/workflow/test/Expression.test.ts index 2cd1632df7..abfb5895da 100644 --- a/packages/workflow/test/Expression.test.ts +++ b/packages/workflow/test/Expression.test.ts @@ -3,15 +3,17 @@ */ import { DateTime, Duration, Interval } from 'luxon'; -import { Workflow } from '@/Workflow'; -import * as Helpers from './Helpers'; -import type { ExpressionTestEvaluation, ExpressionTestTransform } from './ExpressionFixtures/base'; -import { baseFixtures } from './ExpressionFixtures/base'; -import type { INodeExecutionData } from '@/Interfaces'; -import { extendSyntax } from '@/Extensions/ExpressionExtension'; + import { ExpressionError } from '@/errors/expression.error'; import { setDifferEnabled, setEvaluator } from '@/ExpressionEvaluatorProxy'; +import { extendSyntax } from '@/Extensions/ExpressionExtension'; +import type { INodeExecutionData } from '@/Interfaces'; +import { Workflow } from '@/Workflow'; + import { workflow } from './ExpressionExtensions/Helpers'; +import { baseFixtures } from './ExpressionFixtures/base'; +import type { ExpressionTestEvaluation, ExpressionTestTransform } from './ExpressionFixtures/base'; +import * as Helpers from './Helpers'; setDifferEnabled(true); @@ -74,7 +76,9 @@ for (const evaluator of ['tmpl', 'tournament'] as const) { expect(evaluate('={{Reflect}}')).toEqual({}); expect(evaluate('={{Proxy}}')).toEqual({}); - expect(evaluate('={{constructor}}')).toEqual({}); + expect(() => evaluate('={{constructor}}')).toThrowError( + new ExpressionError('Cannot access "constructor" due to security concerns'), + ); expect(evaluate('={{escape}}')).toEqual({}); expect(evaluate('={{unescape}}')).toEqual({}); @@ -166,7 +170,7 @@ for (const evaluator of ['tmpl', 'tournament'] as const) { const testFn = jest.fn(); Object.assign(global, { testFn }); expect(() => evaluate("={{ Date['constructor']('testFn()')()}}")).toThrowError( - new ExpressionError('Arbitrary code execution detected'), + new ExpressionError('Cannot access "constructor" due to security concerns'), ); expect(testFn).not.toHaveBeenCalled(); }); diff --git a/packages/workflow/test/ExpressionExtensions/ArrayExtensions.test.ts b/packages/workflow/test/ExpressionExtensions/ArrayExtensions.test.ts index 6759c9e02d..d85ec4a257 100644 --- a/packages/workflow/test/ExpressionExtensions/ArrayExtensions.test.ts +++ b/packages/workflow/test/ExpressionExtensions/ArrayExtensions.test.ts @@ -2,8 +2,8 @@ * @jest-environment jsdom */ -import { arrayExtensions } from '../../src/Extensions/ArrayExtensions'; import { evaluate } from './Helpers'; +import { arrayExtensions } from '../../src/Extensions/ArrayExtensions'; describe('Data Transformation Functions', () => { describe('Array Data Transformation Functions', () => { diff --git a/packages/workflow/test/ExpressionExtensions/BooleanExtensions.test.ts b/packages/workflow/test/ExpressionExtensions/BooleanExtensions.test.ts index eccb53e50b..842158a5b3 100644 --- a/packages/workflow/test/ExpressionExtensions/BooleanExtensions.test.ts +++ b/packages/workflow/test/ExpressionExtensions/BooleanExtensions.test.ts @@ -2,8 +2,8 @@ * @jest-environment jsdom */ -import { booleanExtensions } from '../../src/Extensions/BooleanExtensions'; import { evaluate } from './Helpers'; +import { booleanExtensions } from '../../src/Extensions/BooleanExtensions'; describe('Data Transformation Functions', () => { describe('Boolean Data Transformation Functions', () => { diff --git a/packages/workflow/test/ExpressionExtensions/DateExtensions.test.ts b/packages/workflow/test/ExpressionExtensions/DateExtensions.test.ts index 2e542fc377..09a5761d65 100644 --- a/packages/workflow/test/ExpressionExtensions/DateExtensions.test.ts +++ b/packages/workflow/test/ExpressionExtensions/DateExtensions.test.ts @@ -3,7 +3,9 @@ */ import { DateTime } from 'luxon'; + import { getGlobalState } from '@/GlobalState'; + import { evaluate, getLocalISOString } from './Helpers'; import { dateExtensions } from '../../src/Extensions/DateExtensions'; diff --git a/packages/workflow/test/ExpressionExtensions/ExpressionExtension.test.ts b/packages/workflow/test/ExpressionExtensions/ExpressionExtension.test.ts index 2c2f8e391a..e08f4f05c4 100644 --- a/packages/workflow/test/ExpressionExtensions/ExpressionExtension.test.ts +++ b/packages/workflow/test/ExpressionExtensions/ExpressionExtension.test.ts @@ -4,9 +4,11 @@ /* eslint-disable n8n-local-rules/no-interpolation-in-regular-string */ -import { extendTransform } from '@/Extensions'; +import { extendTransform, extend } from '@/Extensions'; import { joinExpression, splitExpression } from '@/Extensions/ExpressionParser'; + import { evaluate } from './Helpers'; +import { ExpressionExtensionError } from '../../src/errors/expression-extension.error'; describe('Expression Extension Transforms', () => { describe('extend() transform', () => { @@ -156,13 +158,11 @@ describe('tmpl Expression Parser', () => { }); test('Multiple optional chains in an expression', () => { - expect(extendTransform('$json.test?.test2($json.test?.test2)')?.code) - .toBe(`window.chainCancelToken2 = ((window.chainValue2 = $json.test) ?? undefined) === undefined, window.chainCancelToken2 === true ? undefined : window.chainValue2.test2( + expect(extendTransform('$json.test?.test2($json.test?.test2)')?.code).toBe(`window.chainCancelToken2 = ((window.chainValue2 = $json.test) ?? undefined) === undefined, window.chainCancelToken2 === true ? undefined : window.chainValue2.test2( (window.chainCancelToken1 = ((window.chainValue1 = $json.test) ?? undefined) === undefined, window.chainCancelToken1 === true ? undefined : window.chainValue1.test2) );`); - expect(extendTransform('$json.test?.test2($json.test.sum?.())')?.code) - .toBe(`window.chainCancelToken2 = ((window.chainValue2 = $json.test) ?? undefined) === undefined, window.chainCancelToken2 === true ? undefined : window.chainValue2.test2( + expect(extendTransform('$json.test?.test2($json.test.sum?.())')?.code).toBe(`window.chainCancelToken2 = ((window.chainValue2 = $json.test) ?? undefined) === undefined, window.chainCancelToken2 === true ? undefined : window.chainValue2.test2( (window.chainCancelToken1 = ((window.chainValue1 = extendOptional($json.test, "sum")) ?? undefined) === undefined, window.chainCancelToken1 === true ? undefined : window.chainValue1()) );`); }); @@ -242,4 +242,28 @@ describe('tmpl Expression Parser', () => { expect(evaluate('={{ $ifEmpty({a: 1}, "default") }}')).toEqual({ a: 1 }); }); }); + + describe('Test extend with undefined', () => { + test('input is undefined', () => { + try { + extend(undefined, 'toDateTime', []); + } catch (error) { + expect(error).toBeInstanceOf(ExpressionExtensionError); + expect(error).toHaveProperty('message', "toDateTime can't be used on undefined value"); + } + }); + test('input is null', () => { + try { + extend(null, 'startsWith', []); + } catch (error) { + expect(error).toBeInstanceOf(ExpressionExtensionError); + expect(error).toHaveProperty('message', "startsWith can't be used on null value"); + } + }); + test('input should be converted to upper case', () => { + const result = extend('TEST', 'toUpperCase', []); + + expect(result).toEqual('TEST'); + }); + }); }); diff --git a/packages/workflow/test/ExpressionExtensions/Helpers.ts b/packages/workflow/test/ExpressionExtensions/Helpers.ts index 54836960e5..2c2e8ffde7 100644 --- a/packages/workflow/test/ExpressionExtensions/Helpers.ts +++ b/packages/workflow/test/ExpressionExtensions/Helpers.ts @@ -1,5 +1,6 @@ import type { IDataObject } from '@/Interfaces'; import { Workflow } from '@/Workflow'; + import * as Helpers from '../Helpers'; export const nodeTypes = Helpers.NodeTypes(); diff --git a/packages/workflow/test/ExpressionExtensions/NumberExtensions.test.ts b/packages/workflow/test/ExpressionExtensions/NumberExtensions.test.ts index 1f41e853a1..ff51ec180a 100644 --- a/packages/workflow/test/ExpressionExtensions/NumberExtensions.test.ts +++ b/packages/workflow/test/ExpressionExtensions/NumberExtensions.test.ts @@ -3,6 +3,7 @@ */ import { numberExtensions } from '@/Extensions/NumberExtensions'; + import { evaluate } from './Helpers'; describe('Data Transformation Functions', () => { diff --git a/packages/workflow/test/ExpressionExtensions/ObjectExtensions.test.ts b/packages/workflow/test/ExpressionExtensions/ObjectExtensions.test.ts index 4a78037488..1107ceae54 100644 --- a/packages/workflow/test/ExpressionExtensions/ObjectExtensions.test.ts +++ b/packages/workflow/test/ExpressionExtensions/ObjectExtensions.test.ts @@ -1,5 +1,5 @@ -import { objectExtensions } from '../../src/Extensions/ObjectExtensions'; import { evaluate } from './Helpers'; +import { objectExtensions } from '../../src/Extensions/ObjectExtensions'; describe('Data Transformation Functions', () => { describe('Object Data Transformation Functions', () => { diff --git a/packages/workflow/test/ExpressionExtensions/StringExtensions.test.ts b/packages/workflow/test/ExpressionExtensions/StringExtensions.test.ts index 70ec97c915..35b2318868 100644 --- a/packages/workflow/test/ExpressionExtensions/StringExtensions.test.ts +++ b/packages/workflow/test/ExpressionExtensions/StringExtensions.test.ts @@ -2,6 +2,7 @@ * @jest-environment jsdom */ import { DateTime } from 'luxon'; + import { evaluate } from './Helpers'; import { ExpressionExtensionError } from '../../src/errors'; diff --git a/packages/workflow/test/ExpressionFixtures/base.ts b/packages/workflow/test/ExpressionFixtures/base.ts index f05d098fd5..1988180aa0 100644 --- a/packages/workflow/test/ExpressionFixtures/base.ts +++ b/packages/workflow/test/ExpressionFixtures/base.ts @@ -1,5 +1,5 @@ -import type { GenericValue, IDataObject } from '@/Interfaces'; import { ExpressionError } from '@/errors/expression.error'; +import type { GenericValue, IDataObject } from '@/Interfaces'; interface ExpressionTestBase { type: 'evaluation' | 'transform'; diff --git a/packages/workflow/test/ExpressionSandboxing.test.ts b/packages/workflow/test/ExpressionSandboxing.test.ts new file mode 100644 index 0000000000..dbec453443 --- /dev/null +++ b/packages/workflow/test/ExpressionSandboxing.test.ts @@ -0,0 +1,85 @@ +import { Tournament } from '@n8n/tournament'; + +import { PrototypeSanitizer, sanitizer } from '@/ExpressionSandboxing'; + +const tournament = new Tournament( + (e) => { + throw e; + }, + undefined, + undefined, + { + before: [], + after: [PrototypeSanitizer], + }, +); + +const errorRegex = /^Cannot access ".*" due to security concerns$/; + +describe('PrototypeSanitizer', () => { + describe('Static analysis', () => { + it('should not allow access to __proto__', () => { + expect(() => { + tournament.execute('{{ ({}).__proto__.__proto__ }}', {}); + }).toThrowError(errorRegex); + + expect(() => { + tournament.execute('{{ ({})["__proto__"]["__proto__"] }}', {}); + }).toThrowError(errorRegex); + }); + + it('should not allow access to prototype', () => { + expect(() => { + tournament.execute('{{ Number.prototype }}', { Number }); + }).toThrowError(errorRegex); + + expect(() => { + tournament.execute('{{ Number["prototype"] }}', { Number }); + }).toThrowError(errorRegex); + }); + + it('should not allow access to constructor', () => { + expect(() => { + tournament.execute('{{ Number.constructor }}', { + __sanitize: sanitizer, + Number, + }); + }).toThrowError(errorRegex); + + expect(() => { + tournament.execute('{{ Number["constructor"] }}', { + __sanitize: sanitizer, + Number, + }); + }).toThrowError(errorRegex); + }); + }); + + describe('Runtime', () => { + it('should not allow access to __proto__', () => { + expect(() => { + tournament.execute('{{ ({})["__" + (() => "proto")() + "__"] }}', { + __sanitize: sanitizer, + }); + }).toThrowError(errorRegex); + }); + + it('should not allow access to prototype', () => { + expect(() => { + tournament.execute('{{ Number["pro" + (() => "toty")() + "pe"] }}', { + __sanitize: sanitizer, + Number, + }); + }).toThrowError(errorRegex); + }); + + it('should not allow access to constructor', () => { + expect(() => { + tournament.execute('{{ Number["cons" + (() => "truc")() + "tor"] }}', { + __sanitize: sanitizer, + Number, + }); + }).toThrowError(errorRegex); + }); + }); +}); diff --git a/packages/workflow/test/FilterParameter.test.ts b/packages/workflow/test/FilterParameter.test.ts index 4e81e2e9a7..d8914ef773 100644 --- a/packages/workflow/test/FilterParameter.test.ts +++ b/packages/workflow/test/FilterParameter.test.ts @@ -1,18 +1,26 @@ -import { executeFilter } from '@/NodeParameters/FilterParameter'; -import type { FilterConditionValue, FilterValue } from '@/Interfaces'; import merge from 'lodash/merge'; import { DateTime } from 'luxon'; +import type { FilterConditionValue, FilterValue } from '@/Interfaces'; +import { arrayContainsValue, executeFilter } from '@/NodeParameters/FilterParameter'; + type DeepPartial = { [P in keyof T]?: T[P] extends object ? DeepPartial : T[P]; }; +type Tests = Array<{ + left: FilterConditionValue['leftValue']; + right: FilterConditionValue['rightValue']; + expected: boolean; +}>; + const filterFactory = (data: DeepPartial = {}): FilterValue => merge( { combinator: 'and', conditions: [], options: { + version: 1, leftValue: '', caseSensitive: false, typeValidation: 'strict', @@ -228,6 +236,48 @@ describe('FilterParameter', () => { }); }); + describe('options.version', () => { + describe('version 1', () => { + it('should parse "false" as true', () => { + expect( + executeFilter( + filterFactory({ + conditions: [ + { + id: '1', + leftValue: 'false', + rightValue: false, + operator: { operation: 'equals', type: 'boolean' }, + }, + ], + options: { typeValidation: 'loose', version: 1 }, + }), + ), + ).toEqual(false); + }); + }); + + describe('version 2', () => { + it('should parse "false" as false', () => { + expect( + executeFilter( + filterFactory({ + conditions: [ + { + id: '1', + leftValue: 'false', + rightValue: false, + operator: { operation: 'equals', type: 'boolean' }, + }, + ], + options: { typeValidation: 'loose', version: 2 }, + }), + ), + ).toEqual(true); + }); + }); + }); + describe('operators', () => { describe('exists', () => { it.each([ @@ -832,21 +882,24 @@ describe('FilterParameter', () => { right: '1-Feb-2024', expected: false, }, - ])('dateTime:after("$left", "$right") === $expected', ({ left, right, expected }) => { - const result = executeFilter( - filterFactory({ - conditions: [ - { - id: '1', - leftValue: left, - rightValue: right, - operator: { operation: 'after', type: 'dateTime' }, - }, - ], - }), - ); - expect(result).toBe(expected); - }); + ] as Tests)( + 'dateTime:after("$left", "$right") === $expected', + ({ left, right, expected }) => { + const result = executeFilter( + filterFactory({ + conditions: [ + { + id: '1', + leftValue: left, + rightValue: right, + operator: { operation: 'after', type: 'dateTime' }, + }, + ], + }), + ); + expect(result).toBe(expected); + }, + ); it.each([ { left: '2023-11-15T17:10:49.113Z', right: '2023-11-15T17:10:49.113Z', expected: false }, @@ -1035,7 +1088,7 @@ describe('FilterParameter', () => { it.each([ { left: ['foo', 'bar'], right: 'foo', expected: true }, { left: ['foo', 'bar'], right: 'ba', expected: false }, - ])('array:contains($left,$right) === $expected', ({ left, right, expected }) => { + ] as Tests)('array:contains($left,$right) === $expected', ({ left, right, expected }) => { const result = executeFilter( filterFactory({ conditions: [ @@ -1054,67 +1107,76 @@ describe('FilterParameter', () => { it.each([ { left: ['foo', 'bar'], right: 'foo', expected: false }, { left: ['foo', 'bar'], right: 'ba', expected: true }, - ])('array:notContains($left,$right) === $expected', ({ left, right, expected }) => { - const result = executeFilter( - filterFactory({ - conditions: [ - { - id: '1', - leftValue: left, - rightValue: right, - operator: { operation: 'notContains', type: 'array', rightType: 'any' }, - }, - ], - }), - ); - expect(result).toBe(expected); - }); + ] as Tests)( + 'array:notContains($left,$right) === $expected', + ({ left, right, expected }) => { + const result = executeFilter( + filterFactory({ + conditions: [ + { + id: '1', + leftValue: left, + rightValue: right, + operator: { operation: 'notContains', type: 'array', rightType: 'any' }, + }, + ], + }), + ); + expect(result).toBe(expected); + }, + ); it.each([ { left: ['foo', 'bar'], right: 2, expected: true }, { left: [], right: 0, expected: true }, { left: ['foo', 'bar'], right: 1, expected: false }, - ])('array:lengthEquals($left,$right) === $expected', ({ left, right, expected }) => { - const result = executeFilter( - filterFactory({ - conditions: [ - { - id: '1', - leftValue: left, - rightValue: right, - operator: { operation: 'lengthEquals', type: 'array', rightType: 'number' }, - }, - ], - }), - ); - expect(result).toBe(expected); - }); + ] as Tests)( + 'array:lengthEquals($left,$right) === $expected', + ({ left, right, expected }) => { + const result = executeFilter( + filterFactory({ + conditions: [ + { + id: '1', + leftValue: left, + rightValue: right, + operator: { operation: 'lengthEquals', type: 'array', rightType: 'number' }, + }, + ], + }), + ); + expect(result).toBe(expected); + }, + ); it.each([ { left: ['foo', 'bar'], right: 2, expected: false }, { left: [], right: 0, expected: false }, { left: ['foo', 'bar'], right: 1, expected: true }, - ])('array:lengthNotEquals($left,$right) === $expected', ({ left, right, expected }) => { - const result = executeFilter( - filterFactory({ - conditions: [ - { - id: '1', - leftValue: left, - rightValue: right, - operator: { operation: 'lengthNotEquals', type: 'array', rightType: 'number' }, - }, - ], - }), - ); - expect(result).toBe(expected); - }); + ] as Tests)( + 'array:lengthNotEquals($left,$right) === $expected', + ({ left, right, expected }) => { + const result = executeFilter( + filterFactory({ + conditions: [ + { + id: '1', + leftValue: left, + rightValue: right, + operator: { operation: 'lengthNotEquals', type: 'array', rightType: 'number' }, + }, + ], + }), + ); + expect(result).toBe(expected); + }, + ); it.each([ { left: ['foo', 'bar'], right: 2, expected: false }, { left: [], right: 0, expected: false }, { left: ['foo', 'bar'], right: 1, expected: true }, - ])('array:lengthGt($left,$right) === $expected', ({ left, right, expected }) => { + ] as Tests)('array:lengthGt($left,$right) === $expected', ({ left, right, expected }) => { const result = executeFilter( filterFactory({ conditions: [ @@ -1135,7 +1197,7 @@ describe('FilterParameter', () => { { left: [], right: 0, expected: false }, { left: ['foo', 'bar'], right: 1, expected: false }, { left: ['foo', 'bar'], right: 3, expected: true }, - ])('array:lengthLt($left,$right) === $expected', ({ left, right, expected }) => { + ] as Tests)('array:lengthLt($left,$right) === $expected', ({ left, right, expected }) => { const result = executeFilter( filterFactory({ conditions: [ @@ -1156,7 +1218,7 @@ describe('FilterParameter', () => { { left: [], right: 0, expected: true }, { left: ['foo', 'bar'], right: 1, expected: true }, { left: ['foo', 'bar'], right: 3, expected: false }, - ])('array:lengthGte($left,$right) === $expected', ({ left, right, expected }) => { + ] as Tests)('array:lengthGte($left,$right) === $expected', ({ left, right, expected }) => { const result = executeFilter( filterFactory({ conditions: [ @@ -1177,7 +1239,7 @@ describe('FilterParameter', () => { { left: [], right: 0, expected: true }, { left: ['foo', 'bar'], right: 1, expected: false }, { left: ['foo', 'bar'], right: 3, expected: true }, - ])('array:lengthLte($left,$right) === $expected', ({ left, right, expected }) => { + ] as Tests)('array:lengthLte($left,$right) === $expected', ({ left, right, expected }) => { const result = executeFilter( filterFactory({ conditions: [ @@ -1235,6 +1297,39 @@ describe('FilterParameter', () => { expect(result).toBe(expected); }); }); + + describe('arrayContainsValue', () => { + test('should return true if the array contains the value', () => { + expect(arrayContainsValue([1, 2, 3], 2, false)).toBe(true); + }); + + test('should return false if the array does not contain the value', () => { + expect(arrayContainsValue([1, 2, 3], 4, false)).toBe(false); + }); + + test('should return true if the array contains the string value and ignoreCase is true', () => { + expect(arrayContainsValue(['a', 'b', 'c'], 'A', true)).toBe(true); + }); + + test('should return false if the array contains the string value but ignoreCase is false', () => { + expect(arrayContainsValue(['a', 'b', 'c'], 'A', false)).toBe(false); + }); + + test('should return false if the array does not contain the string value and ignoreCase is true', () => { + expect(arrayContainsValue(['a', 'b', 'c'], 'd', true)).toBe(false); + }); + + test('should handle non-string values correctly when ignoreCase is true', () => { + expect(arrayContainsValue([1, 2, 3], 2, true)).toBe(true); + expect(arrayContainsValue([1, 2, 3], '2', true)).toBe(false); + }); + + test('should handle mixed types in the array correctly', () => { + expect(arrayContainsValue(['a', 2, 'c'], 'A', true)).toBe(true); + expect(arrayContainsValue(['a', 2, 'c'], 2, false)).toBe(true); + expect(arrayContainsValue(['a', 2, 'c'], '2', false)).toBe(false); + }); + }); }); }); }); diff --git a/packages/workflow/test/Helpers.ts b/packages/workflow/test/Helpers.ts index c618f5fd0c..f72c041c69 100644 --- a/packages/workflow/test/Helpers.ts +++ b/packages/workflow/test/Helpers.ts @@ -1,7 +1,7 @@ import { readFileSync } from 'fs'; -import path from 'path'; import { mock } from 'jest-mock-extended'; import get from 'lodash/get'; +import path from 'path'; import type { IExecuteSingleFunctions, @@ -13,6 +13,7 @@ import type { IRunExecutionData, } from '@/Interfaces'; import type { Workflow } from '@/Workflow'; + import { NodeTypes as NodeTypesClass } from './NodeTypes'; export function getExecuteSingleFunctions( diff --git a/packages/workflow/test/NodeErrors.test.ts b/packages/workflow/test/NodeErrors.test.ts index 405c591932..04aafb1610 100644 --- a/packages/workflow/test/NodeErrors.test.ts +++ b/packages/workflow/test/NodeErrors.test.ts @@ -1,6 +1,7 @@ -import type { INode } from '@/Interfaces'; import { NodeOperationError } from '@/errors'; import { NodeApiError } from '@/errors/node-api.error'; +import type { INode, JsonObject } from '@/Interfaces'; + import { UNKNOWN_ERROR_DESCRIPTION, UNKNOWN_ERROR_MESSAGE } from '../src/Constants'; const node: INode = { @@ -260,4 +261,22 @@ describe('NodeApiError message and description logic', () => { expect(nodeApiError.message).toEqual(UNKNOWN_ERROR_MESSAGE); expect(nodeApiError.description).toEqual(UNKNOWN_ERROR_DESCRIPTION); }); + + it('case: Error code sent as "any"', () => { + const error = { + code: 400, + message: "Invalid value 'test' for viewId parameter.", + status: 'INVALID_ARGUMENT', + }; + const [message, ...rest] = error.message.split('\n'); + const description = rest.join('\n'); + const httpCode = error.code as any; + const nodeApiError = new NodeApiError(node, error as JsonObject, { + message, + description, + httpCode, + }); + + expect(nodeApiError.message).toEqual(error.message); + }); }); diff --git a/packages/workflow/test/NodeHelpers.conditions.test.ts b/packages/workflow/test/NodeHelpers.conditions.test.ts index 9e1bcec5f0..05355d4a2e 100644 --- a/packages/workflow/test/NodeHelpers.conditions.test.ts +++ b/packages/workflow/test/NodeHelpers.conditions.test.ts @@ -1887,6 +1887,274 @@ describe('NodeHelpers', () => { }, }, }, + { + description: + 'simple values with displayOptions "show" using exists condition. No values set.', + input: { + nodePropertiesArray: [ + { + name: 'field1', + displayName: 'Field 1', + type: 'string', + default: '', + }, + { + name: 'field2', + displayName: 'Field 2', + displayOptions: { + show: { + field1: [{ _cnd: { exists: true } }], + }, + }, + type: 'string', + default: 'default field2', + }, + ], + nodeValues: {}, + }, + output: { + noneDisplayedFalse: { + defaultsFalse: {}, + defaultsTrue: { + field1: '', + }, + }, + noneDisplayedTrue: { + defaultsFalse: {}, + defaultsTrue: { + field1: '', + field2: 'default field2', + }, + }, + }, + }, + { + description: + 'simple values with displayOptions "show" using exists condition. Field1 has a value.', + input: { + nodePropertiesArray: [ + { + name: 'field1', + displayName: 'Field 1', + type: 'string', + default: '', + }, + { + name: 'field2', + displayName: 'Field 2', + displayOptions: { + show: { + field1: [{ _cnd: { exists: true } }], + }, + }, + type: 'string', + default: 'default field2', + }, + ], + nodeValues: { + field1: 'some value', + }, + }, + output: { + noneDisplayedFalse: { + defaultsFalse: { + field1: 'some value', + }, + defaultsTrue: { + field1: 'some value', + field2: 'default field2', + }, + }, + noneDisplayedTrue: { + defaultsFalse: { + field1: 'some value', + }, + defaultsTrue: { + field1: 'some value', + field2: 'default field2', + }, + }, + }, + }, + { + description: + 'complex type "fixedCollection" with "multipleValues: false" and with displayOptions "show" using exists condition.', + input: { + nodePropertiesArray: [ + { + name: 'values', + displayName: 'Values', + type: 'fixedCollection', + default: {}, + options: [ + { + name: 'data', + displayName: 'Data', + values: [ + { + name: 'field1', + displayName: 'Field 1', + type: 'string', + default: '', + }, + { + name: 'field2', + displayName: 'Field 2', + type: 'string', + displayOptions: { + show: { + field1: [{ _cnd: { exists: true } }], + }, + }, + default: 'default field2', + }, + ], + }, + ], + }, + ], + nodeValues: { + values: { + data: { + field1: 'some value', + }, + }, + }, + }, + output: { + noneDisplayedFalse: { + defaultsFalse: { + values: { + data: { + field1: 'some value', + }, + }, + }, + defaultsTrue: { + values: { + data: { + field1: 'some value', + field2: 'default field2', + }, + }, + }, + }, + noneDisplayedTrue: { + defaultsFalse: { + values: { + data: { + field1: 'some value', + }, + }, + }, + defaultsTrue: { + values: { + data: { + field1: 'some value', + field2: 'default field2', + }, + }, + }, + }, + }, + }, + { + description: + 'complex type "collection" with "multipleValues: true" and with displayOptions "show" using exists condition.', + input: { + nodePropertiesArray: [ + { + name: 'values', + displayName: 'Values', + type: 'collection', + typeOptions: { + multipleValues: true, + }, + default: {}, + options: [ + { + name: 'field1', + displayName: 'Field 1', + type: 'string', + default: '', + }, + { + name: 'field2', + displayName: 'Field 2', + type: 'string', + displayOptions: { + show: { + field1: [{ _cnd: { exists: true } }], + }, + }, + default: 'default field2', + }, + ], + }, + ], + nodeValues: { + values: [ + { + field1: 'value1', + }, + { + field1: '', + }, + {}, + ], + }, + }, + output: { + noneDisplayedFalse: { + defaultsFalse: { + values: [ + { + field1: 'value1', + }, + { + field1: '', + }, + {}, + ], + }, + defaultsTrue: { + values: [ + { + field1: 'value1', + }, + { + field1: '', + }, + {}, + ], + }, + }, + noneDisplayedTrue: { + defaultsFalse: { + values: [ + { + field1: 'value1', + }, + { + field1: '', + }, + {}, + ], + }, + defaultsTrue: { + values: [ + { + field1: 'value1', + }, + { + field1: '', + }, + {}, + ], + }, + }, + }, + }, ]; for (const testData of tests) { diff --git a/packages/workflow/test/NodeHelpers.test.ts b/packages/workflow/test/NodeHelpers.test.ts index 142bc82a20..81b7af5de6 100644 --- a/packages/workflow/test/NodeHelpers.test.ts +++ b/packages/workflow/test/NodeHelpers.test.ts @@ -1,18 +1,20 @@ -import type { - INode, - INodeParameters, - INodeProperties, - INodeType, - INodeTypeDescription, +import { + NodeConnectionType, + type INode, + type INodeParameters, + type INodeProperties, + type INodeType, + type INodeTypeDescription, } from '@/Interfaces'; -import type { Workflow } from '@/Workflow'; import { getNodeParameters, getNodeHints, isSingleExecution, isSubNodeType, applyDeclarativeNodeOptionParameters, + convertNodeToAiTool, } from '@/NodeHelpers'; +import type { Workflow } from '@/Workflow'; describe('NodeHelpers', () => { describe('getNodeParameters', () => { @@ -3573,9 +3575,9 @@ describe('NodeHelpers', () => { [false, null], [false, { outputs: '={{random_expression}}' }], [false, { outputs: [] }], - [false, { outputs: ['main'] }], - [true, { outputs: ['ai_agent'] }], - [true, { outputs: ['main', 'ai_agent'] }], + [false, { outputs: [NodeConnectionType.Main] }], + [true, { outputs: [NodeConnectionType.AiAgent] }], + [true, { outputs: [NodeConnectionType.Main, NodeConnectionType.AiAgent] }], ]; test.each(tests)('should return %p for %o', (expected, nodeType) => { expect(isSubNodeType(nodeType)).toBe(expected); @@ -3635,4 +3637,170 @@ describe('NodeHelpers', () => { expect(nodeType.description.properties).toEqual([]); }); }); + + describe('convertNodeToAiTool', () => { + let fullNodeWrapper: { description: INodeTypeDescription }; + + beforeEach(() => { + fullNodeWrapper = { + description: { + displayName: 'Test Node', + name: 'testNode', + group: ['test'], + description: 'A test node', + version: 1, + defaults: {}, + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], + properties: [], + }, + }; + }); + + it('should modify the name and displayName correctly', () => { + const result = convertNodeToAiTool(fullNodeWrapper); + expect(result.description.name).toBe('testNodeTool'); + expect(result.description.displayName).toBe('Test Node Tool'); + }); + + it('should update inputs and outputs', () => { + const result = convertNodeToAiTool(fullNodeWrapper); + expect(result.description.inputs).toEqual([]); + expect(result.description.outputs).toEqual([NodeConnectionType.AiTool]); + }); + + it('should remove the usableAsTool property', () => { + fullNodeWrapper.description.usableAsTool = true; + const result = convertNodeToAiTool(fullNodeWrapper); + expect(result.description.usableAsTool).toBeUndefined(); + }); + + it("should add toolDescription property if it doesn't exist", () => { + const result = convertNodeToAiTool(fullNodeWrapper); + const toolDescriptionProp = result.description.properties.find( + (prop) => prop.name === 'toolDescription', + ); + expect(toolDescriptionProp).toBeDefined(); + expect(toolDescriptionProp?.type).toBe('string'); + expect(toolDescriptionProp?.default).toBe(fullNodeWrapper.description.description); + }); + + it('should set codex categories correctly', () => { + const result = convertNodeToAiTool(fullNodeWrapper); + expect(result.description.codex).toEqual({ + categories: ['AI'], + subcategories: { + AI: ['Tools'], + Tools: ['Other Tools'], + }, + }); + }); + + it('should preserve existing properties', () => { + const existingProp: INodeProperties = { + displayName: 'Existing Prop', + name: 'existingProp', + type: 'string', + default: 'test', + }; + fullNodeWrapper.description.properties = [existingProp]; + const result = convertNodeToAiTool(fullNodeWrapper); + expect(result.description.properties).toHaveLength(3); // Existing prop + toolDescription + notice + expect(result.description.properties).toContainEqual(existingProp); + }); + + it('should handle nodes with resource property', () => { + const resourceProp: INodeProperties = { + displayName: 'Resource', + name: 'resource', + type: 'options', + options: [{ name: 'User', value: 'user' }], + default: 'user', + }; + fullNodeWrapper.description.properties = [resourceProp]; + const result = convertNodeToAiTool(fullNodeWrapper); + expect(result.description.properties[1].name).toBe('descriptionType'); + expect(result.description.properties[2].name).toBe('toolDescription'); + expect(result.description.properties[3]).toEqual(resourceProp); + }); + + it('should handle nodes with operation property', () => { + const operationProp: INodeProperties = { + displayName: 'Operation', + name: 'operation', + type: 'options', + options: [{ name: 'Create', value: 'create' }], + default: 'create', + }; + fullNodeWrapper.description.properties = [operationProp]; + const result = convertNodeToAiTool(fullNodeWrapper); + expect(result.description.properties[1].name).toBe('descriptionType'); + expect(result.description.properties[2].name).toBe('toolDescription'); + expect(result.description.properties[3]).toEqual(operationProp); + }); + + it('should handle nodes with both resource and operation properties', () => { + const resourceProp: INodeProperties = { + displayName: 'Resource', + name: 'resource', + type: 'options', + options: [{ name: 'User', value: 'user' }], + default: 'user', + }; + const operationProp: INodeProperties = { + displayName: 'Operation', + name: 'operation', + type: 'options', + options: [{ name: 'Create', value: 'create' }], + default: 'create', + }; + fullNodeWrapper.description.properties = [resourceProp, operationProp]; + const result = convertNodeToAiTool(fullNodeWrapper); + expect(result.description.properties[1].name).toBe('descriptionType'); + expect(result.description.properties[2].name).toBe('toolDescription'); + expect(result.description.properties[3]).toEqual(resourceProp); + expect(result.description.properties[4]).toEqual(operationProp); + }); + + it('should handle nodes with empty properties', () => { + fullNodeWrapper.description.properties = []; + const result = convertNodeToAiTool(fullNodeWrapper); + expect(result.description.properties).toHaveLength(2); + expect(result.description.properties[1].name).toBe('toolDescription'); + }); + + it('should handle nodes with existing codex property', () => { + fullNodeWrapper.description.codex = { + categories: ['Existing'], + subcategories: { + Existing: ['Category'], + }, + }; + const result = convertNodeToAiTool(fullNodeWrapper); + expect(result.description.codex).toEqual({ + categories: ['AI'], + subcategories: { + AI: ['Tools'], + Tools: ['Other Tools'], + }, + }); + }); + + it('should handle nodes with very long names', () => { + fullNodeWrapper.description.name = 'veryLongNodeNameThatExceedsNormalLimits'.repeat(10); + fullNodeWrapper.description.displayName = + 'Very Long Node Name That Exceeds Normal Limits'.repeat(10); + const result = convertNodeToAiTool(fullNodeWrapper); + expect(result.description.name.endsWith('Tool')).toBe(true); + expect(result.description.displayName.endsWith('Tool')).toBe(true); + }); + + it('should handle nodes with special characters in name and displayName', () => { + fullNodeWrapper.description.name = 'special@#$%Node'; + fullNodeWrapper.description.displayName = 'Special @#$% Node'; + const result = convertNodeToAiTool(fullNodeWrapper); + expect(result.description.name).toBe('special@#$%NodeTool'); + expect(result.description.displayName).toBe('Special @#$% Node Tool'); + }); + }); }); diff --git a/packages/workflow/test/NodeTypes.ts b/packages/workflow/test/NodeTypes.ts index 14ed8e1ed5..9cd5c548f2 100644 --- a/packages/workflow/test/NodeTypes.ts +++ b/packages/workflow/test/NodeTypes.ts @@ -1,11 +1,13 @@ import { mock } from 'jest-mock-extended'; -import type { - IDataObject, - INodeType, - INodeTypeData, - INodeTypes, - IVersionedNodeType, - LoadedClass, + +import { + NodeConnectionType, + type IDataObject, + type INodeType, + type INodeTypeData, + type INodeTypes, + type IVersionedNodeType, + type LoadedClass, } from '@/Interfaces'; import * as NodeHelpers from '@/NodeHelpers'; @@ -60,8 +62,8 @@ const googleSheetsNode: LoadedClass = { defaults: { name: 'Google Sheets', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], credentials: [ { name: 'googleApi', @@ -286,9 +288,9 @@ const googleSheetsNode: LoadedClass = { displayName: 'Google Sheets', group: ['input', 'output'], icon: 'file:googleSheets.svg', - inputs: ['main'], + inputs: [NodeConnectionType.Main], name: 'googleSheets', - outputs: ['main'], + outputs: [NodeConnectionType.Main], properties: [ { default: 'oAuth2', @@ -551,8 +553,8 @@ const setNode: LoadedClass = { name: 'Set', color: '#0000FF', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], properties: [ { displayName: 'Value1', @@ -588,7 +590,7 @@ const manualTriggerNode: LoadedClass = { color: '#909298', }, inputs: [], - outputs: ['main'], + outputs: [NodeConnectionType.Main], properties: [ { displayName: @@ -621,8 +623,8 @@ export class NodeTypes implements INodeTypes { name: 'Set Multi', color: '#0000FF', }, - inputs: ['main'], - outputs: ['main'], + inputs: [NodeConnectionType.Main], + outputs: [NodeConnectionType.Main], properties: [ { displayName: 'Values', diff --git a/packages/workflow/test/RoutingNode.test.ts b/packages/workflow/test/RoutingNode.test.ts index e2638d8c90..a38f4551e2 100644 --- a/packages/workflow/test/RoutingNode.test.ts +++ b/packages/workflow/test/RoutingNode.test.ts @@ -1,3 +1,5 @@ +import { mock } from 'jest-mock-extended'; + import type { INode, INodeExecutionData, @@ -16,14 +18,12 @@ import type { IWorkflowExecuteAdditionalData, IExecuteFunctions, } from '@/Interfaces'; +import { applyDeclarativeNodeOptionParameters } from '@/NodeHelpers'; import { RoutingNode } from '@/RoutingNode'; +import * as utilsModule from '@/utils'; import { Workflow } from '@/Workflow'; -import * as utilsModule from '@/utils'; - import * as Helpers from './Helpers'; -import { applyDeclarativeNodeOptionParameters } from '@/NodeHelpers'; -import { mock } from 'jest-mock-extended'; const postReceiveFunction1 = async function ( this: IExecuteSingleFunctions, @@ -1959,7 +1959,7 @@ describe('RoutingNode', () => { executeSingleFunctions.getNodeParameter = (parameterName: string) => parameterName in testData.input.node.parameters ? testData.input.node.parameters[parameterName] - : getNodeParameter(parameterName) ?? {}; + : (getNodeParameter(parameterName) ?? {}); const result = await routingNode.runNode( inputData, diff --git a/packages/workflow/test/TelemetryHelpers.test.ts b/packages/workflow/test/TelemetryHelpers.test.ts index 90bddbdcdd..bedf12f231 100644 --- a/packages/workflow/test/TelemetryHelpers.test.ts +++ b/packages/workflow/test/TelemetryHelpers.test.ts @@ -1,19 +1,21 @@ -import { v5 as uuidv5, v3 as uuidv3, v4 as uuidv4, v1 as uuidv1 } from 'uuid'; import { mock } from 'jest-mock-extended'; +import { v5 as uuidv5, v3 as uuidv3, v4 as uuidv4, v1 as uuidv1 } from 'uuid'; +import { STICKY_NODE_TYPE } from '@/Constants'; +import { ApplicationError } from '@/errors'; +import type { IRunData } from '@/Interfaces'; +import { NodeConnectionType, type IWorkflowBase } from '@/Interfaces'; +import * as nodeHelpers from '@/NodeHelpers'; import { ANONYMIZATION_CHARACTER as CHAR, generateNodesGraph, getDomainBase, getDomainPath, } from '@/TelemetryHelpers'; -import { nodeTypes } from './ExpressionExtensions/Helpers'; -import * as nodeHelpers from '@/NodeHelpers'; -import type { IWorkflowBase } from '@/Interfaces'; -import { STICKY_NODE_TYPE } from '@/Constants'; -import { ApplicationError } from '@/errors'; import { randomInt } from '@/utils'; +import { nodeTypes } from './ExpressionExtensions/Helpers'; + describe('getDomainBase should return protocol plus domain', () => { test('in valid URLs', () => { for (const url of validUrls(numericId)) { @@ -111,7 +113,7 @@ describe('generateNodesGraph', () => { ], connections: { 'When clicking "Execute Workflow"': { - main: [[{ node: 'Google Sheets', type: 'main', index: 0 }]], + main: [[{ node: 'Google Sheets', type: NodeConnectionType.Main, index: 0 }]], }, }, settings: { executionOrder: 'v1' }, @@ -215,7 +217,7 @@ describe('generateNodesGraph', () => { ], connections: { 'When clicking "Execute Workflow"': { - main: [[{ node: 'Google Sheets', type: 'main', index: 0 }]], + main: [[{ node: 'Google Sheets', type: NodeConnectionType.Main, index: 0 }]], }, }, settings: { executionOrder: 'v1' }, @@ -291,7 +293,7 @@ describe('generateNodesGraph', () => { ], connections: { 'When clicking "Execute Workflow"': { - main: [[{ node: 'Google Sheets', type: 'main', index: 0 }]], + main: [[{ node: 'Google Sheets', type: NodeConnectionType.Main, index: 0 }]], }, }, settings: { executionOrder: 'v1' }, @@ -369,7 +371,7 @@ describe('generateNodesGraph', () => { ], connections: { 'When clicking "Execute Workflow"': { - main: [[{ node: 'Google Sheets', type: 'main', index: 0 }]], + main: [[{ node: 'Google Sheets', type: NodeConnectionType.Main, index: 0 }]], }, }, settings: { executionOrder: 'v1' }, @@ -701,7 +703,7 @@ describe('generateNodesGraph', () => { [ { node: 'Chain', - type: 'main', + type: NodeConnectionType.Main, index: 0, }, ], @@ -712,7 +714,7 @@ describe('generateNodesGraph', () => { [ { node: 'Chain', - type: 'ai_languageModel', + type: NodeConnectionType.AiLanguageModel, index: 0, }, ], @@ -779,6 +781,108 @@ describe('generateNodesGraph', () => { expect(() => generateNodesGraph(workflow, nodeTypes)).not.toThrow(); }); + + test('should add run and items count', () => { + const { workflow, runData } = generateTestWorkflowAndRunData(); + + expect(generateNodesGraph(workflow, nodeTypes, { runData })).toEqual({ + nameIndices: { + DebugHelper: '4', + 'Edit Fields': '1', + 'Edit Fields1': '2', + 'Edit Fields2': '3', + 'Execute Workflow Trigger': '0', + Switch: '5', + }, + nodeGraph: { + is_pinned: false, + node_connections: [ + { + end: '1', + start: '0', + }, + { + end: '4', + start: '0', + }, + { + end: '5', + start: '1', + }, + { + end: '1', + start: '4', + }, + { + end: '2', + start: '5', + }, + { + end: '3', + start: '5', + }, + ], + node_types: [ + 'n8n-nodes-base.executeWorkflowTrigger', + 'n8n-nodes-base.set', + 'n8n-nodes-base.set', + 'n8n-nodes-base.set', + 'n8n-nodes-base.debugHelper', + 'n8n-nodes-base.switch', + ], + nodes: { + '0': { + id: 'a2372c14-87de-42de-9f9e-1c499aa2c279', + items_total: 1, + position: [1000, 240], + runs: 1, + type: 'n8n-nodes-base.executeWorkflowTrigger', + version: 1, + }, + '1': { + id: '0f7aa00e-248c-452c-8cd0-62cb55941633', + items_total: 4, + position: [1460, 640], + runs: 2, + type: 'n8n-nodes-base.set', + version: 3.1, + }, + '2': { + id: '9165c185-9f1c-4ec1-87bf-76ca66dfae38', + items_total: 4, + position: [1860, 260], + runs: 2, + type: 'n8n-nodes-base.set', + version: 3.4, + }, + '3': { + id: '7a915fd5-5987-4ff1-9509-06b24a0a4613', + position: [1940, 680], + type: 'n8n-nodes-base.set', + version: 3.4, + }, + '4': { + id: '63050e7c-8ad5-4f44-8fdd-da555e40471b', + items_total: 3, + position: [1220, 240], + runs: 1, + type: 'n8n-nodes-base.debugHelper', + version: 1, + }, + '5': { + id: 'fbf7525d-2d1d-4dcf-97a0-43b53d087ef3', + items_total: 4, + position: [1680, 640], + runs: 2, + type: 'n8n-nodes-base.switch', + version: 3.2, + }, + }, + notes: {}, + }, + webhookNodeNames: [], + }); + }); }); function validUrls(idMaker: typeof alphanumericId | typeof email, char = CHAR) { @@ -885,3 +989,293 @@ function alphanumericId() { } const chooseRandomly = (array: T[]) => array[randomInt(array.length)]; + +function generateTestWorkflowAndRunData(): { workflow: IWorkflowBase; runData: IRunData } { + const workflow: IWorkflowBase = { + meta: { + instanceId: 'a786b722078489c1fa382391a9f3476c2784761624deb2dfb4634827256d51a0', + }, + nodes: [ + { + parameters: {}, + id: 'a2372c14-87de-42de-9f9e-1c499aa2c279', + name: 'Execute Workflow Trigger', + type: 'n8n-nodes-base.executeWorkflowTrigger', + typeVersion: 1, + position: [1000, 240], + }, + { + parameters: { + options: {}, + }, + id: '0f7aa00e-248c-452c-8cd0-62cb55941633', + name: 'Edit Fields', + type: 'n8n-nodes-base.set', + typeVersion: 3.1, + position: [1460, 640], + }, + { + parameters: { + options: {}, + }, + id: '9165c185-9f1c-4ec1-87bf-76ca66dfae38', + name: 'Edit Fields1', + type: 'n8n-nodes-base.set', + typeVersion: 3.4, + position: [1860, 260], + }, + { + parameters: { + options: {}, + }, + id: '7a915fd5-5987-4ff1-9509-06b24a0a4613', + name: 'Edit Fields2', + type: 'n8n-nodes-base.set', + typeVersion: 3.4, + position: [1940, 680], + }, + { + parameters: { + category: 'randomData', + randomDataSeed: '0', + randomDataCount: 3, + }, + id: '63050e7c-8ad5-4f44-8fdd-da555e40471b', + name: 'DebugHelper', + type: 'n8n-nodes-base.debugHelper', + typeVersion: 1, + position: [1220, 240], + }, + { + id: 'fbf7525d-2d1d-4dcf-97a0-43b53d087ef3', + name: 'Switch', + type: 'n8n-nodes-base.switch', + typeVersion: 3.2, + position: [1680, 640], + parameters: {}, + }, + ], + connections: { + 'Execute Workflow Trigger': { + main: [ + [ + { + node: 'Edit Fields', + type: 'main' as NodeConnectionType, + index: 0, + }, + { + node: 'DebugHelper', + type: 'main' as NodeConnectionType, + index: 0, + }, + ], + ], + }, + 'Edit Fields': { + main: [ + [ + { + node: 'Switch', + type: 'main' as NodeConnectionType, + index: 0, + }, + ], + ], + }, + DebugHelper: { + main: [ + [ + { + node: 'Edit Fields', + type: 'main' as NodeConnectionType, + index: 0, + }, + ], + ], + }, + Switch: { + main: [ + // @ts-ignore + null, + // @ts-ignore + null, + [ + { + node: 'Edit Fields1', + type: 'main' as NodeConnectionType, + index: 0, + }, + ], + [ + { + node: 'Edit Fields2', + type: 'main' as NodeConnectionType, + index: 0, + }, + ], + ], + }, + }, + pinData: {}, + }; + + const runData: IRunData = { + 'Execute Workflow Trigger': [ + { + hints: [], + startTime: 1727793340927, + executionTime: 0, + source: [], + executionStatus: 'success', + data: { main: [[{ json: {}, pairedItem: { item: 0 } }]] }, + }, + ], + DebugHelper: [ + { + hints: [], + startTime: 1727793340928, + executionTime: 0, + source: [{ previousNode: 'Execute Workflow Trigger' }], + executionStatus: 'success', + data: { + main: [ + [ + { + json: { + test: 'abc', + }, + pairedItem: { item: 0 }, + }, + { + json: { + test: 'abc', + }, + pairedItem: { item: 0 }, + }, + { + json: { + test: 'abc', + }, + pairedItem: { item: 0 }, + }, + ], + ], + }, + }, + ], + 'Edit Fields': [ + { + hints: [], + startTime: 1727793340928, + executionTime: 1, + source: [{ previousNode: 'DebugHelper' }], + executionStatus: 'success', + data: { + main: [ + [ + { + json: { + test: 'abc', + }, + pairedItem: { item: 0 }, + }, + { + json: { + test: 'abc', + }, + pairedItem: { item: 1 }, + }, + { + json: { + test: 'abc', + }, + pairedItem: { item: 2 }, + }, + ], + ], + }, + }, + { + hints: [], + startTime: 1727793340931, + executionTime: 0, + source: [{ previousNode: 'Execute Workflow Trigger' }], + executionStatus: 'success', + data: { main: [[{ json: {}, pairedItem: { item: 0 } }]] }, + }, + ], + Switch: [ + { + hints: [], + startTime: 1727793340929, + executionTime: 1, + source: [{ previousNode: 'Edit Fields' }], + executionStatus: 'success', + data: { + main: [ + [], + [], + [ + { + json: { + test: 'abc', + }, + pairedItem: { item: 0 }, + }, + { + json: { + test: 'abc', + }, + pairedItem: { item: 1 }, + }, + { + json: { + test: 'abc', + }, + pairedItem: { item: 2 }, + }, + ], + [], + ], + }, + }, + { + hints: [], + startTime: 1727793340931, + executionTime: 0, + source: [{ previousNode: 'Edit Fields', previousNodeRun: 1 }], + executionStatus: 'success', + data: { main: [[], [], [{ json: {}, pairedItem: { item: 0 } }], []] }, + }, + ], + 'Edit Fields1': [ + { + hints: [], + startTime: 1727793340930, + executionTime: 0, + source: [{ previousNode: 'Switch', previousNodeOutput: 2 }], + executionStatus: 'success', + data: { + main: [ + [ + { json: {}, pairedItem: { item: 0 } }, + { json: {}, pairedItem: { item: 1 } }, + { json: {}, pairedItem: { item: 2 } }, + ], + ], + }, + }, + { + hints: [], + startTime: 1727793340932, + executionTime: 1, + source: [{ previousNode: 'Switch', previousNodeOutput: 2, previousNodeRun: 1 }], + executionStatus: 'success', + data: { main: [[{ json: {}, pairedItem: { item: 0 } }]] }, + }, + ], + }; + + return { workflow, runData }; +} diff --git a/packages/workflow/test/TypeValidation.test.ts b/packages/workflow/test/TypeValidation.test.ts index 1a1e99afac..54504bf7f4 100644 --- a/packages/workflow/test/TypeValidation.test.ts +++ b/packages/workflow/test/TypeValidation.test.ts @@ -1,179 +1,216 @@ -import { getValueDescription, validateFieldType } from '@/TypeValidation'; import { DateTime } from 'luxon'; -const VALID_ISO_DATES = [ - '1994-11-05T08:15:30-05:00', - '1994-11-05T13:15:30Z', - '1997-07-16T19:20+01:00', - '1997-07-16T19:20:30+01:00', - '1997-07-16T19:20:30.45+01:00', - '2018-05-16', - '1972-06-30T23:59:40Z', - '2019-03-26T14:00:00.9Z', - '2019-03-26T14:00:00.4999Z', - '2023-05-17T10:52:32+0000', - '2023-05-17T10:52:32+0000', -]; - -const VALID_HTTP_DATES = [ - 'Wed, 21 Oct 2015 07:28:00 GMT', - 'Wed, 01 Jun 2022 08:00:00 GMT', - 'Tue, 15 Nov 1994 12:45:26 GMT', - 'Wed, 1 Jun 2022 08:00:00 GMT', -]; - -const VALID_RFC_DATES = [ - 'Tue, 04 Jun 2013 07:40:03 -0400', - 'Tue, 4 Jun 2013 02:24:39 +0530', - 'Wed, 17 May 2023 10:52:32 +0000', -]; - -const VALID_SQL_DATES = ['2008-11-11', '2008-11-11 13:23:44']; - -const OTHER_VALID_DATES = [ - 'Wed, 17 May 2023 10:52:32', - 'SMT, 17 May 2023 10:52:32', - '1-Feb-2024', - new Date(), - DateTime.now(), -]; - -const INVALID_DATES = [ - '1994-11-05M08:15:30-05:00', - '18-05-2020', - '', - '1685084980', // We are not supporting timestamps - '1685085012135', - 1685084980, - 1685085012135, - true, - [], -]; +import { getValueDescription, validateFieldType } from '@/TypeValidation'; describe('Type Validation', () => { describe('Dates', () => { - test.each(VALID_ISO_DATES)('should validate and cast ISO date "%s"', (date) => { - const validationResult = validateFieldType('date', date, 'dateTime'); - expect(validationResult.valid).toBe(true); - expect((validationResult.newValue as DateTime).isValid).toBe(true); + test('should validate and cast ISO dates', () => { + const VALID_ISO_DATES = [ + '1994-11-05T08:15:30-05:00', + '1994-11-05T13:15:30Z', + '1997-07-16T19:20+01:00', + '1997-07-16T19:20:30+01:00', + '1997-07-16T19:20:30.45+01:00', + '2018-05-16', + '1972-06-30T23:59:40Z', + '2019-03-26T14:00:00.9Z', + '2019-03-26T14:00:00.4999Z', + '2023-05-17T10:52:32+0000', + '2023-05-17T10:52:32+0000', + ]; + VALID_ISO_DATES.forEach((date) => + expect(validateFieldType('date', date, 'dateTime')).toEqual({ + valid: true, + newValue: expect.any(DateTime), + }), + ); }); - test.each(VALID_RFC_DATES)('should validate and cast RFC2822 date "%s"', (date) => { - const validationResult = validateFieldType('date', date, 'dateTime'); - expect(validationResult.valid).toBe(true); - expect((validationResult.newValue as DateTime).isValid).toBe(true); + test('should validate and cast RFC2822 dates', () => { + const VALID_RFC_DATES = [ + 'Tue, 04 Jun 2013 07:40:03 -0400', + 'Tue, 4 Jun 2013 02:24:39 +0530', + 'Wed, 17 May 2023 10:52:32 +0000', + ]; + VALID_RFC_DATES.forEach((date) => + expect(validateFieldType('date', date, 'dateTime')).toEqual({ + valid: true, + newValue: expect.any(DateTime), + }), + ); }); - test.each(VALID_HTTP_DATES)('should validate and cast HTTP date "%s"', (date) => { - const validationResult = validateFieldType('date', date, 'dateTime'); - expect(validationResult.valid).toBe(true); - expect((validationResult.newValue as DateTime).isValid).toBe(true); + test('should validate and cast HTTP dates', () => { + const VALID_HTTP_DATES = [ + 'Wed, 21 Oct 2015 07:28:00 GMT', + 'Wed, 01 Jun 2022 08:00:00 GMT', + 'Tue, 15 Nov 1994 12:45:26 GMT', + 'Wed, 1 Jun 2022 08:00:00 GMT', + ]; + VALID_HTTP_DATES.forEach((date) => + expect(validateFieldType('date', date, 'dateTime')).toEqual({ + valid: true, + newValue: expect.any(DateTime), + }), + ); }); - test.each(VALID_SQL_DATES)('should validate and cast SQL date "%s"', (date) => { - const validationResult = validateFieldType('date', date, 'dateTime'); - expect(validationResult.valid).toBe(true); - expect((validationResult.newValue as DateTime).isValid).toBe(true); + test('should validate and cast SQL dates', () => { + const VALID_SQL_DATES = ['2008-11-11', '2008-11-11 13:23:44']; + VALID_SQL_DATES.forEach((date) => + expect(validateFieldType('date', date, 'dateTime')).toEqual({ + valid: true, + newValue: expect.any(DateTime), + }), + ); }); - test.each(OTHER_VALID_DATES)('should validate and cast date "%s"', (date) => { - const validationResult = validateFieldType('date', date, 'dateTime'); - expect(validationResult.valid).toBe(true); - expect((validationResult.newValue as DateTime).isValid).toBe(true); + test('should validate and cast other valid dates', () => { + const OTHER_VALID_DATES = [ + 'Wed, 17 May 2023 10:52:32', + 'SMT, 17 May 2023 10:52:32', + '1-Feb-2024', + new Date(), + DateTime.now(), + ]; + OTHER_VALID_DATES.forEach((date) => + expect(validateFieldType('date', date, 'dateTime')).toEqual({ + valid: true, + newValue: expect.any(DateTime), + }), + ); }); - test.each(INVALID_DATES)('should not validate invalid date "%s"', (date) => { - const validationResult = validateFieldType('date', date, 'dateTime'); - expect(validationResult.valid).toBe(false); + test('should not validate invalid dates', () => { + const INVALID_DATES = [ + '1994-11-05M08:15:30-05:00', + '18-05-2020', + '', + '1685084980', // We are not supporting timestamps + '1685085012135', + 1685084980, + 1685085012135, + true, + [], + ]; + INVALID_DATES.forEach((date) => + expect(validateFieldType('date', date, 'dateTime').valid).toBe(false), + ); }); }); it('should validate boolean values properly', () => { - expect(validateFieldType('boolean', 'true', 'boolean').newValue).toBe(true); - expect(validateFieldType('boolean', 'TRUE', 'boolean').newValue).toBe(true); - expect(validateFieldType('boolean', 1, 'boolean').newValue).toBe(true); - expect(validateFieldType('boolean', '1', 'boolean').newValue).toBe(true); - expect(validateFieldType('boolean', '01', 'boolean').newValue).toBe(true); - expect(validateFieldType('boolean', 'false', 'boolean').newValue).toBe(false); - expect(validateFieldType('boolean', 'FALSE', 'boolean').newValue).toBe(false); - expect(validateFieldType('boolean', '0', 'boolean').newValue).toBe(false); - expect(validateFieldType('boolean', '000', 'boolean').newValue).toBe(false); - expect(validateFieldType('boolean', '0000', 'boolean').newValue).toBe(false); - expect(validateFieldType('boolean', 0, 'boolean').newValue).toBe(false); + const TRUE_VALUES = ['true', 'TRUE', 1, '1', '01']; + TRUE_VALUES.forEach((value) => + expect(validateFieldType('boolean', value, 'boolean')).toEqual({ + valid: true, + newValue: true, + }), + ); + + const FALSE_VALUES = ['false', 'FALSE', 0, '0', '000', '0000']; + FALSE_VALUES.forEach((value) => + expect(validateFieldType('boolean', value, 'boolean')).toEqual({ + valid: true, + newValue: false, + }), + ); }); it('should not validate invalid boolean values', () => { - expect(validateFieldType('boolean', 'tru', 'boolean').valid).toBe(false); - expect(validateFieldType('boolean', 'fals', 'boolean').valid).toBe(false); - expect(validateFieldType('boolean', 1111, 'boolean').valid).toBe(false); - expect(validateFieldType('boolean', 2, 'boolean').valid).toBe(false); - expect(validateFieldType('boolean', -1, 'boolean').valid).toBe(false); - expect(validateFieldType('boolean', 'yes', 'boolean').valid).toBe(false); - expect(validateFieldType('boolean', 'no', 'boolean').valid).toBe(false); + const INVALID_VALUES = ['tru', 'fals', 1111, 2, -1, 'yes', 'no']; + INVALID_VALUES.forEach((value) => + expect(validateFieldType('boolean', value, 'boolean').valid).toEqual(false), + ); }); it('should validate and cast numbers', () => { - expect(validateFieldType('number', '1', 'number').newValue).toBe(1); - expect(validateFieldType('number', '-1', 'number').newValue).toBe(-1); - expect(validateFieldType('number', '1.1', 'number').newValue).toBe(1.1); - expect(validateFieldType('number', '-1.1', 'number').newValue).toBe(-1.1); - expect(validateFieldType('number', 1, 'number').newValue).toBe(1); - expect(validateFieldType('number', 'A', 'number').valid).toBe(false); - expect(validateFieldType('number', '1,1', 'number').valid).toBe(false); - expect(validateFieldType('number', true, 'number').valid).toBe(true); - expect(validateFieldType('number', '1972-06-30T23:59:40Z', 'number').valid).toBe(false); - expect(validateFieldType('number', [1, 2], 'number').valid).toBe(false); + const VALID_NUMBERS = [ + ['1', 1], + ['-1', -1], + ['1.1', 1.1], + ['-1.1', -1.1], + [1, 1], + [true, 1], + ]; + VALID_NUMBERS.forEach(([value, expected]) => + expect(validateFieldType('number', value, 'number')).toEqual({ + valid: true, + newValue: expected, + }), + ); + + const INVALID_NUMBERS = ['A', '1,1', '1972-06-30T23:59:40Z', [1, 2]]; + INVALID_NUMBERS.forEach((value) => + expect(validateFieldType('number', value, 'number').valid).toEqual(false), + ); }); - it('should validate and cast JSON properly', () => { - expect(validateFieldType('json', '{"a": 1}', 'object').newValue).toEqual({ a: 1 }); - expect( - validateFieldType('json', '{"a": 1, "b": { "c": 10, "d": "test"}}', 'object').valid, - ).toEqual(true); - expect(validateFieldType('json', { name: 'John' }, 'object').valid).toEqual(true); - expect( - validateFieldType( - 'json', + it('should validate and cast JSON & JS objects properly', () => { + const VALID_OBJECTS = [ + ['{"a": 1}', { a: 1 }], + ['{a: 1}', { a: 1 }], + ["{'a': '1'}", { a: '1' }], + ["{'\\'single quoted\\' \"double quoted\"': 1}", { '\'single quoted\' "double quoted"': 1 }], + ['{"a": 1, "b": { "c": 10, "d": "test"}}', { a: 1, b: { c: 10, d: 'test' } }], + ["{\"a\": 1, b: { 'c': 10, d: 'test'}}", { a: 1, b: { c: 10, d: 'test' } }], + [{ name: 'John' }, { name: 'John' }], + [ { name: 'John', address: { street: 'Via Roma', city: 'Milano' } }, - 'object', - ).valid, - ).toEqual(true); - // Invalid value: - expect(validateFieldType('json', ['one', 'two'], 'object').valid).toEqual(false); - expect(validateFieldType('json', ['one', 'two'], 'object').valid).toEqual(false); - expect(validateFieldType('json', '1', 'object').valid).toEqual(false); - expect(validateFieldType('json', '[1]', 'object').valid).toEqual(false); - expect(validateFieldType('json', '1.1', 'object').valid).toEqual(false); - expect(validateFieldType('json', 1.1, 'object').valid).toEqual(false); - expect(validateFieldType('json', '"a"', 'object').valid).toEqual(false); - expect(validateFieldType('json', '{a: 1}', 'object').valid).toEqual(false); - expect(validateFieldType('json', '["apples", "oranges"]', 'object').valid).toEqual(false); - expect(validateFieldType('json', [{ name: 'john' }, { name: 'bob' }], 'object').valid).toEqual( - false, + { name: 'John', address: { street: 'Via Roma', city: 'Milano' } }, + ], + ]; + VALID_OBJECTS.forEach(([value, expected]) => + expect(validateFieldType('json', value, 'object')).toEqual({ + valid: true, + newValue: expected, + }), + ); + + const INVALID_OBJECTS = [ + ['one', 'two'], + '1', + '[1]', + '1.1', + 1.1, + '"a"', + '["apples", "oranges"]', + [{ name: 'john' }, { name: 'bob' }], + '[ { name: "john" }, { name: "bob" } ]', + ]; + INVALID_OBJECTS.forEach((value) => + expect(validateFieldType('json', value, 'object').valid).toEqual(false), ); - expect( - validateFieldType('json', '[ { name: "john" }, { name: "bob" } ]', 'object').valid, - ).toEqual(false); }); it('should validate and cast arrays properly', () => { - expect(validateFieldType('array', '["apples", "oranges"]', 'array').newValue).toEqual([ - 'apples', - 'oranges', - ]); - expect(validateFieldType('array', '[1]', 'array').newValue).toEqual([1]); - expect(validateFieldType('array', '[1, 2]', 'array').newValue).toEqual([1, 2]); - // Invalid values: - expect(validateFieldType('array', '"apples", "oranges"', 'array').valid).toEqual(false); - expect(validateFieldType('array', '1', 'array').valid).toEqual(false); - expect(validateFieldType('array', '1.1', 'array').valid).toEqual(false); - expect(validateFieldType('array', '1, 2', 'array').valid).toEqual(false); - expect(validateFieldType('array', '1. 2. 3', 'array').valid).toEqual(false); - expect(validateFieldType('array', '[1, 2, 3', 'array').valid).toEqual(false); - expect(validateFieldType('array', '1, 2, 3]', 'array').valid).toEqual(false); - expect(validateFieldType('array', '{1, 2, {3, 4}, 5}', 'array').valid).toEqual(false); - expect(validateFieldType('array', '1, 2, {3, 4}, 5', 'array').valid).toEqual(false); - expect(validateFieldType('array', { name: 'John' }, 'array').valid).toEqual(false); + const VALID_ARRAYS = [ + ['["apples", "oranges"]', ['apples', 'oranges']], + ['[1]', [1]], + ['[1, 2]', [1, 2]], + ]; + VALID_ARRAYS.forEach(([value, expected]) => + expect(validateFieldType('array', value, 'array')).toEqual({ + valid: true, + newValue: expected, + }), + ); + + const INVALID_ARRAYS = [ + '"apples", "oranges"', + '1', + '1.1', + '1, 2', + '1. 2. 3', + '[1, 2, 3', + '1, 2, 3]', + '{1, 2, {3, 4}, 5}', + '1, 2, {3, 4}, 5', + { name: 'John' }, + ]; + INVALID_ARRAYS.forEach((value) => + expect(validateFieldType('array', value, 'array').valid).toEqual(false), + ); }); it('should validate options properly', () => { @@ -196,19 +233,27 @@ describe('Type Validation', () => { }); it('should validate and cast time properly', () => { - expect(validateFieldType('time', '23:23', 'time').valid).toEqual(true); - expect(validateFieldType('time', '23:23:23', 'time').valid).toEqual(true); - expect(validateFieldType('time', '23:23:23+1000', 'time').valid).toEqual(true); - expect(validateFieldType('time', '23:23:23-1000', 'time').valid).toEqual(true); - expect(validateFieldType('time', '22:00:00+01:00', 'time').valid).toEqual(true); - expect(validateFieldType('time', '22:00:00-01:00', 'time').valid).toEqual(true); - expect(validateFieldType('time', '22:00:00+01', 'time').valid).toEqual(true); - expect(validateFieldType('time', '22:00:00-01', 'time').valid).toEqual(true); - expect(validateFieldType('time', '23:23:23:23', 'time').valid).toEqual(false); - expect(validateFieldType('time', '23', 'time').valid).toEqual(false); - expect(validateFieldType('time', 'foo', 'time').valid).toEqual(false); - expect(validateFieldType('time', '23:23:', 'time').valid).toEqual(false); - expect(validateFieldType('time', '23::23::23', 'time').valid).toEqual(false); + const VALID_TIMES = [ + ['23:23', '23:23'], + ['23:23:23', '23:23:23'], + ['23:23:23+1000', '23:23:23+1000'], + ['23:23:23-1000', '23:23:23-1000'], + ['22:00:00+01:00', '22:00:00+01:00'], + ['22:00:00-01:00', '22:00:00-01:00'], + ['22:00:00+01', '22:00:00+01'], + ['22:00:00-01', '22:00:00-01'], + ]; + VALID_TIMES.forEach(([value, expected]) => + expect(validateFieldType('time', value, 'time')).toEqual({ + valid: true, + newValue: expected, + }), + ); + + const INVALID_TIMES = ['23:23:23:23', '23', 'foo', '23:23:', '23::23::23']; + INVALID_TIMES.forEach((value) => + expect(validateFieldType('time', value, 'time').valid).toEqual(false), + ); }); describe('options', () => { @@ -224,9 +269,15 @@ describe('Type Validation', () => { describe('parseStrings=true', () => { it('should parse strings from other types', () => { const options = { parseStrings: true }; - expect(validateFieldType('test', 42, 'string').newValue).toBe(42); - expect(validateFieldType('test', 42, 'string', options).newValue).toBe('42'); - expect(validateFieldType('test', true, 'string', options).newValue).toBe('true'); + expect(validateFieldType('test', 42, 'string')).toEqual({ valid: true, newValue: 42 }); + expect(validateFieldType('test', 42, 'string', options)).toEqual({ + valid: true, + newValue: '42', + }); + expect(validateFieldType('test', true, 'string', options)).toEqual({ + valid: true, + newValue: 'true', + }); }); }); }); diff --git a/packages/workflow/test/Workflow.test.ts b/packages/workflow/test/Workflow.test.ts index ba2873e485..bdd5fec8b9 100644 --- a/packages/workflow/test/Workflow.test.ts +++ b/packages/workflow/test/Workflow.test.ts @@ -1,20 +1,26 @@ import { mock } from 'jest-mock-extended'; + import { NodeConnectionType } from '@/Interfaces'; import type { IBinaryKeyData, IConnections, IDataObject, + IExecuteData, INode, + INodeExecuteFunctions, INodeExecutionData, INodeParameters, INodeType, INodeTypeDescription, INodeTypes, IRunExecutionData, + ITriggerFunctions, + ITriggerResponse, + IWorkflowExecuteAdditionalData, NodeParameterValueType, } from '@/Interfaces'; -import { Workflow, type WorkflowParameters } from '@/Workflow'; import * as NodeHelpers from '@/NodeHelpers'; +import { Workflow, type WorkflowParameters } from '@/Workflow'; process.env.TEST_VARIABLE_1 = 'valueEnvVariable1'; @@ -2015,4 +2021,67 @@ describe('Workflow', () => { ]); }); }); + + describe('runNode', () => { + const nodeTypes = mock(); + const triggerNode = mock(); + const triggerResponse = mock({ + closeFunction: jest.fn(), + // This node should never trigger, or return + manualTriggerFunction: async () => await new Promise(() => {}), + }); + const triggerNodeType = mock({ + description: { + properties: [], + }, + execute: undefined, + poll: undefined, + webhook: undefined, + async trigger(this: ITriggerFunctions) { + return triggerResponse; + }, + }); + + nodeTypes.getByNameAndVersion.mockReturnValue(triggerNodeType); + + const workflow = new Workflow({ + nodeTypes, + nodes: [triggerNode], + connections: {}, + active: false, + }); + + const executionData = mock(); + const runExecutionData = mock(); + const additionalData = mock(); + const nodeExecuteFunctions = mock(); + const triggerFunctions = mock(); + nodeExecuteFunctions.getExecuteTriggerFunctions.mockReturnValue(triggerFunctions); + const abortController = new AbortController(); + + test('should call closeFunction when manual trigger is aborted', async () => { + const runPromise = workflow.runNode( + executionData, + runExecutionData, + 0, + additionalData, + nodeExecuteFunctions, + 'manual', + abortController.signal, + ); + // Yield back to the event-loop to let async parts of `runNode` execute + await new Promise((resolve) => setImmediate(resolve)); + + let isSettled = false; + void runPromise.then(() => { + isSettled = true; + }); + expect(isSettled).toBe(false); + expect(abortController.signal.aborted).toBe(false); + expect(triggerResponse.closeFunction).not.toHaveBeenCalled(); + + abortController.abort(); + expect(triggerResponse.closeFunction).toHaveBeenCalled(); + }); + }); }); diff --git a/packages/workflow/test/WorkflowDataProxy.test.ts b/packages/workflow/test/WorkflowDataProxy.test.ts index 230c11198b..ac9504dcd8 100644 --- a/packages/workflow/test/WorkflowDataProxy.test.ts +++ b/packages/workflow/test/WorkflowDataProxy.test.ts @@ -1,3 +1,4 @@ +import { ExpressionError } from '@/errors/expression.error'; import type { IExecuteData, INode, @@ -8,7 +9,7 @@ import type { } from '@/Interfaces'; import { Workflow } from '@/Workflow'; import { WorkflowDataProxy } from '@/WorkflowDataProxy'; -import { ExpressionError } from '@/errors/expression.error'; + import * as Helpers from './Helpers'; const loadFixture = (fixture: string) => { diff --git a/packages/workflow/test/WorkflowDataProxyEnvProvider.test.ts b/packages/workflow/test/WorkflowDataProxyEnvProvider.test.ts new file mode 100644 index 0000000000..15ce485140 --- /dev/null +++ b/packages/workflow/test/WorkflowDataProxyEnvProvider.test.ts @@ -0,0 +1,87 @@ +import { ExpressionError } from '../src/errors/expression.error'; +import { createEnvProvider, createEnvProviderState } from '../src/WorkflowDataProxyEnvProvider'; + +describe('createEnvProviderState', () => { + afterEach(() => { + delete process.env.N8N_BLOCK_ENV_ACCESS_IN_NODE; + }); + + it('should return the state with process available and env access allowed', () => { + expect(createEnvProviderState()).toEqual({ + isProcessAvailable: true, + isEnvAccessBlocked: false, + env: process.env, + }); + }); + + it('should block env access when N8N_BLOCK_ENV_ACCESS_IN_NODE is set to "true"', () => { + process.env.N8N_BLOCK_ENV_ACCESS_IN_NODE = 'true'; + + expect(createEnvProviderState()).toEqual({ + isProcessAvailable: true, + isEnvAccessBlocked: true, + env: {}, + }); + }); + + it('should handle process not being available', () => { + const originalProcess = global.process; + try { + // @ts-expect-error process is read-only + global.process = undefined; + + expect(createEnvProviderState()).toEqual({ + isProcessAvailable: false, + isEnvAccessBlocked: false, + env: {}, + }); + } finally { + global.process = originalProcess; + } + }); +}); + +describe('createEnvProvider', () => { + it('should return true when checking for a property using "has"', () => { + const proxy = createEnvProvider(0, 0, createEnvProviderState()); + expect('someProperty' in proxy).toBe(true); + }); + + it('should return the value from process.env if access is allowed', () => { + process.env.TEST_ENV_VAR = 'test_value'; + const proxy = createEnvProvider(0, 0, createEnvProviderState()); + expect(proxy.TEST_ENV_VAR).toBe('test_value'); + }); + + it('should throw ExpressionError when process is unavailable', () => { + const originalProcess = global.process; + // @ts-expect-error process is read-only + global.process = undefined; + try { + const proxy = createEnvProvider(1, 1, createEnvProviderState()); + + expect(() => proxy.someEnvVar).toThrowError( + new ExpressionError('not accessible via UI, please run node', { + runIndex: 1, + itemIndex: 1, + }), + ); + } finally { + global.process = originalProcess; + } + }); + + it('should throw ExpressionError when env access is blocked', () => { + process.env.N8N_BLOCK_ENV_ACCESS_IN_NODE = 'true'; + const proxy = createEnvProvider(1, 1, createEnvProviderState()); + + expect(() => proxy.someEnvVar).toThrowError( + new ExpressionError('access to env vars denied', { + causeDetailed: + 'If you need access please contact the administrator to remove the environment variable ‘N8N_BLOCK_ENV_ACCESS_IN_NODE‘', + runIndex: 1, + itemIndex: 1, + }), + ); + }); +}); diff --git a/packages/workflow/test/errors/node.error.test.ts b/packages/workflow/test/errors/node.error.test.ts index 7d0783a65c..c988aa9930 100644 --- a/packages/workflow/test/errors/node.error.test.ts +++ b/packages/workflow/test/errors/node.error.test.ts @@ -1,7 +1,8 @@ import { mock } from 'jest-mock-extended'; -import type { INode } from '@/Interfaces'; + import { NodeApiError } from '@/errors/node-api.error'; import { NodeOperationError } from '@/errors/node-operation.error'; +import type { INode } from '@/Interfaces'; describe('NodeError', () => { const node = mock(); diff --git a/packages/workflow/test/fixtures/WorkflowDataProxy/pindata_workflow.json b/packages/workflow/test/fixtures/WorkflowDataProxy/pindata_workflow.json index 543bdb814b..0941baaeb0 100644 --- a/packages/workflow/test/fixtures/WorkflowDataProxy/pindata_workflow.json +++ b/packages/workflow/test/fixtures/WorkflowDataProxy/pindata_workflow.json @@ -1,106 +1,97 @@ { - "meta": { - "instanceId": "a786b722078489c1fa382391a9f3476c2784761624deb2dfb4634827256d51a0" - }, - "nodes": [ - { - "parameters": { - "assignments": { - "assignments": [ - { - "id": "3058c300-b377-41b7-9c90-a01372f9b581", - "name": "firstName", - "value": "Joe", - "type": "string" - }, - { - "id": "bb871662-c23c-4234-ac0c-b78c279bbf34", - "name": "lastName", - "value": "Smith", - "type": "string" - } - ] - }, - "options": {} - }, - "id": "baee2bf4-5083-4cbe-8e51-4eddcf859ef5", - "name": "PinnedSet", - "type": "n8n-nodes-base.set", - "typeVersion": 3.3, - "position": [ - 1120, - 380 - ] - }, - { - "parameters": { - "assignments": { - "assignments": [ - { - "id": "a482f1fd-4815-4da4-a733-7beafb43c500", - "name": "test", - "value": "={{ $('PinnedSet').all().json }}\n{{ $('PinnedSet').item.json.firstName }}\n{{ $('PinnedSet').first().json.firstName }}\n{{ $('PinnedSet').itemMatching(0).json.firstName }}\n{{ $('PinnedSet').itemMatching(1).json.firstName }}\n{{ $('PinnedSet').last().json.firstName }}\n{{ $('PinnedSet').all()[0].json.firstName }}\n{{ $('PinnedSet').all()[1].json.firstName }}\n\n{{ $input.first().json.firstName }}\n{{ $input.last().json.firstName }}\n{{ $input.item.json.firstName }}\n\n{{ $json.firstName }}\n{{ $data.firstName }}\n\n{{ $items()[0].json.firstName }}", - "type": "string" - } - ] - }, - "options": {} - }, - "id": "2a543169-e2c1-4764-ac63-09534310b2b9", - "name": "NotPinnedSet1", - "type": "n8n-nodes-base.set", - "typeVersion": 3.3, - "position": [ - 1360, - 380 - ] - }, - { - "parameters": {}, - "id": "f36672e5-8c87-480e-a5b8-de9da6b63192", - "name": "Start", - "type": "n8n-nodes-base.manualTrigger", - "position": [ - 920, - 380 - ], - "typeVersion": 1 - } - ], - "connections": { - "PinnedSet": { - "main": [ - [ - { - "node": "NotPinnedSet1", - "type": "main", - "index": 0 - } - ] - ] - }, - "Start": { - "main": [ - [ - { - "node": "PinnedSet", - "type": "main", - "index": 0 - } - ] - ] - } - }, - "pinData": { - "PinnedSet": [ - { - "firstName": "Joe", - "lastName": "Smith" - }, - { - "firstName": "Joan", - "lastName": "Summers" - } - ] - } + "meta": { + "instanceId": "a786b722078489c1fa382391a9f3476c2784761624deb2dfb4634827256d51a0" + }, + "nodes": [ + { + "parameters": { + "assignments": { + "assignments": [ + { + "id": "3058c300-b377-41b7-9c90-a01372f9b581", + "name": "firstName", + "value": "Joe", + "type": "string" + }, + { + "id": "bb871662-c23c-4234-ac0c-b78c279bbf34", + "name": "lastName", + "value": "Smith", + "type": "string" + } + ] + }, + "options": {} + }, + "id": "baee2bf4-5083-4cbe-8e51-4eddcf859ef5", + "name": "PinnedSet", + "type": "n8n-nodes-base.set", + "typeVersion": 3.3, + "position": [1120, 380] + }, + { + "parameters": { + "assignments": { + "assignments": [ + { + "id": "a482f1fd-4815-4da4-a733-7beafb43c500", + "name": "test", + "value": "={{ $('PinnedSet').all().json }}\n{{ $('PinnedSet').item.json.firstName }}\n{{ $('PinnedSet').first().json.firstName }}\n{{ $('PinnedSet').itemMatching(0).json.firstName }}\n{{ $('PinnedSet').itemMatching(1).json.firstName }}\n{{ $('PinnedSet').last().json.firstName }}\n{{ $('PinnedSet').all()[0].json.firstName }}\n{{ $('PinnedSet').all()[1].json.firstName }}\n\n{{ $input.first().json.firstName }}\n{{ $input.last().json.firstName }}\n{{ $input.item.json.firstName }}\n\n{{ $json.firstName }}\n{{ $data.firstName }}\n\n{{ $items()[0].json.firstName }}", + "type": "string" + } + ] + }, + "options": {} + }, + "id": "2a543169-e2c1-4764-ac63-09534310b2b9", + "name": "NotPinnedSet1", + "type": "n8n-nodes-base.set", + "typeVersion": 3.3, + "position": [1360, 380] + }, + { + "parameters": {}, + "id": "f36672e5-8c87-480e-a5b8-de9da6b63192", + "name": "Start", + "type": "n8n-nodes-base.manualTrigger", + "position": [920, 380], + "typeVersion": 1 + } + ], + "connections": { + "PinnedSet": { + "main": [ + [ + { + "node": "NotPinnedSet1", + "type": "main", + "index": 0 + } + ] + ] + }, + "Start": { + "main": [ + [ + { + "node": "PinnedSet", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "pinData": { + "PinnedSet": [ + { + "firstName": "Joe", + "lastName": "Smith" + }, + { + "firstName": "Joan", + "lastName": "Summers" + } + ] + } } diff --git a/packages/workflow/tsconfig.build.json b/packages/workflow/tsconfig.build.json index 1b9ea8720b..6aa59ada37 100644 --- a/packages/workflow/tsconfig.build.json +++ b/packages/workflow/tsconfig.build.json @@ -7,5 +7,5 @@ "tsBuildInfoFile": "dist/build.tsbuildinfo" }, "include": ["src/**/*.ts"], - "exclude": ["test/**"] + "exclude": ["test/**", "src/**/__tests__/**"] } diff --git a/packages/workflow/tsconfig.json b/packages/workflow/tsconfig.json index 0b486eab47..2f0507b565 100644 --- a/packages/workflow/tsconfig.json +++ b/packages/workflow/tsconfig.json @@ -6,7 +6,6 @@ "paths": { "@/*": ["./*"] }, - "lib": ["es2020", "es2022.error", "dom"], "tsBuildInfoFile": "dist/typecheck.tsbuildinfo" }, "include": ["src/**/*.ts", "test/**/*.ts"] diff --git a/patches/@langchain__core@0.3.3.patch b/patches/@langchain__core@0.3.3.patch new file mode 100644 index 0000000000..d356b52a4b --- /dev/null +++ b/patches/@langchain__core@0.3.3.patch @@ -0,0 +1,26 @@ +diff --git a/dist/memory.cjs b/dist/memory.cjs +index f5bceead9a5533ff71e0c6f6960384ced2ee0060..5085269a58493c29e36ea7384368cd64a0e979a5 100644 +--- a/dist/memory.cjs ++++ b/dist/memory.cjs +@@ -41,7 +41,7 @@ exports.getInputValue = getInputValue; + */ + const getOutputValue = (outputValues, outputKey) => { + const value = getValue(outputValues, outputKey); +- if (!value) { ++ if (!value && value !== '') { + const keys = Object.keys(outputValues); + throw new Error(`output values have ${keys.length} keys, you must specify an output key or pass only 1 key as output`); + } +diff --git a/dist/memory.js b/dist/memory.js +index 8e221f55b151d0ff7592b30ca34363b9ec577e01..a3ff2a514eda6c7e606e8f6d7305535b29ab671e 100644 +--- a/dist/memory.js ++++ b/dist/memory.js +@@ -36,7 +36,7 @@ export const getInputValue = (inputValues, inputKey) => { + */ + export const getOutputValue = (outputValues, outputKey) => { + const value = getValue(outputValues, outputKey); +- if (!value) { ++ if (!value && value !== '') { + const keys = Object.keys(outputValues); + throw new Error(`output values have ${keys.length} keys, you must specify an output key or pass only 1 key as output`); + } diff --git a/patches/@sentry__cli@2.17.0.patch b/patches/@sentry__cli@2.36.2.patch similarity index 77% rename from patches/@sentry__cli@2.17.0.patch rename to patches/@sentry__cli@2.36.2.patch index f4325eaab4..04882a4fa0 100644 --- a/patches/@sentry__cli@2.17.0.patch +++ b/patches/@sentry__cli@2.36.2.patch @@ -1,5 +1,5 @@ diff --git a/js/helper.js b/js/helper.js -index a4a7a61f0e226d7cb45f8d5db34c35cc9e62cf96..38fd3ec2214970b1c5dd22fdff902ff3b5eeddde 100644 +index 37798b9444d39a8713327ed12adf3e76f03188a4..08d49b7a5c058c4d29c9929c0c524c85b14b330e 100644 --- a/js/helper.js +++ b/js/helper.js @@ -15,6 +15,7 @@ function getBinaryPath() { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index c4f3c38bf6..9341fbaf3a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -4,24 +4,111 @@ settings: autoInstallPeers: true excludeLinksFromLockfile: false +catalogs: + default: + '@langchain/core': + specifier: 0.3.3 + version: 0.3.3 + '@types/basic-auth': + specifier: ^1.1.3 + version: 1.1.3 + '@types/express': + specifier: ^4.17.21 + version: 4.17.21 + '@types/lodash': + specifier: ^4.14.195 + version: 4.14.195 + '@types/uuid': + specifier: ^10.0.0 + version: 10.0.0 + '@types/xml2js': + specifier: ^0.4.14 + version: 0.4.14 + axios: + specifier: 1.7.4 + version: 1.7.4 + basic-auth: + specifier: 2.0.1 + version: 2.0.1 + fast-glob: + specifier: 3.2.12 + version: 3.2.12 + form-data: + specifier: 4.0.0 + version: 4.0.0 + lodash: + specifier: 4.17.21 + version: 4.17.21 + luxon: + specifier: 3.4.4 + version: 3.4.4 + nanoid: + specifier: 3.3.6 + version: 3.3.6 + typedi: + specifier: 0.10.0 + version: 0.10.0 + uuid: + specifier: 10.0.0 + version: 10.0.0 + xml2js: + specifier: 0.6.2 + version: 0.6.2 + xss: + specifier: 1.0.15 + version: 1.0.15 + zod: + specifier: 3.23.8 + version: 3.23.8 + frontend: + '@sentry/vue': + specifier: ^8.33.1 + version: 8.33.1 + '@vitest/coverage-v8': + specifier: ^2.1.2 + version: 2.1.2 + highlight.js: + specifier: ^11.8.0 + version: 11.9.0 + vite: + specifier: ^5.4.8 + version: 5.4.8 + vitest: + specifier: ^2.1.2 + version: 2.1.2 + vitest-mock-extended: + specifier: ^2.0.2 + version: 2.0.2 + vue: + specifier: ^3.5.11 + version: 3.5.11 + vue-markdown-render: + specifier: ^2.2.1 + version: 2.2.1 + vue-router: + specifier: ^4.4.5 + version: 4.4.5 + overrides: '@types/node': ^18.16.16 - axios: 1.6.7 - chokidar: 3.5.2 - esbuild: ^0.20.2 + chokidar: ^4.0.1 + esbuild: ^0.24.0 formidable: 3.5.1 - prettier: ^3.2.5 pug: ^3.0.3 semver: ^7.5.4 tslib: ^2.6.2 tsconfig-paths: ^4.2.0 - typescript: ^5.5.2 + typescript: ^5.6.2 + vue-tsc: ^2.1.6 ws: '>=8.17.1' patchedDependencies: - '@sentry/cli@2.17.0': - hash: nchnoezkq6p37qaiku3vrpwraq - path: patches/@sentry__cli@2.17.0.patch + '@langchain/core@0.3.3': + hash: ekay3bw7hexufl733lypqvmx2e + path: patches/@langchain__core@0.3.3.patch + '@sentry/cli@2.36.2': + hash: saib6xuadkfhahfipsdedqib2i + path: patches/@sentry__cli@2.36.2.patch '@types/express-serve-static-core@4.17.43': hash: 5orrj4qleu2iko5t27vl44u4we path: patches/@types__express-serve-static-core@4.17.43.patch @@ -45,21 +132,24 @@ importers: .: devDependencies: + '@biomejs/biome': + specifier: ^1.9.0 + version: 1.9.0 '@n8n_io/eslint-config': specifier: workspace:* version: link:packages/@n8n_io/eslint-config '@types/jest': specifier: ^29.5.3 version: 29.5.3 + '@types/node': + specifier: ^18.16.16 + version: 18.16.16 '@types/supertest': specifier: ^6.0.2 version: 6.0.2 - '@vitest/coverage-v8': - specifier: ^1.6.0 - version: 1.6.0(vitest@1.6.0(@types/node@18.16.16)(jsdom@23.0.1)(sass@1.64.1)(terser@5.16.1)) jest: specifier: ^29.6.2 - version: 29.6.2(@types/node@18.16.16) + version: 29.6.2(@types/node@18.16.16)(ts-node@10.9.2(@types/node@18.16.16)(typescript@5.6.2)) jest-environment-jsdom: specifier: ^29.6.2 version: 29.6.2 @@ -71,7 +161,10 @@ importers: version: 29.6.2 jest-mock-extended: specifier: ^3.0.4 - version: 3.0.4(jest@29.6.2(@types/node@18.16.16))(typescript@5.5.2) + version: 3.0.4(jest@29.6.2(@types/node@18.16.16)(ts-node@10.9.2(@types/node@18.16.16)(typescript@5.6.2)))(typescript@5.6.2) + lefthook: + specifier: ^1.7.15 + version: 1.7.15 nock: specifier: ^13.3.2 version: 13.3.2 @@ -92,31 +185,22 @@ importers: version: 7.0.0 ts-jest: specifier: ^29.1.1 - version: 29.1.1(@babel/core@7.24.0)(@jest/types@29.6.1)(babel-jest@29.6.2(@babel/core@7.24.0))(jest@29.6.2(@types/node@18.16.16))(typescript@5.5.2) + version: 29.1.1(@babel/core@7.24.0)(@jest/types@29.6.1)(babel-jest@29.6.2(@babel/core@7.24.0))(jest@29.6.2(@types/node@18.16.16)(ts-node@10.9.2(@types/node@18.16.16)(typescript@5.6.2)))(typescript@5.6.2) tsc-alias: - specifier: ^1.8.7 - version: 1.8.7 + specifier: ^1.8.10 + version: 1.8.10 tsc-watch: - specifier: ^6.0.4 - version: 6.0.4(typescript@5.5.2) + specifier: ^6.2.0 + version: 6.2.0(typescript@5.6.2) turbo: - specifier: 1.13.3 - version: 1.13.3 + specifier: 2.1.2 + version: 2.1.2 typescript: - specifier: ^5.5.2 - version: 5.5.2 - vite: - specifier: ^5.2.12 - version: 5.2.12(@types/node@18.16.16)(sass@1.64.1)(terser@5.16.1) - vitest: - specifier: ^1.6.0 - version: 1.6.0(@types/node@18.16.16)(jsdom@23.0.1)(sass@1.64.1)(terser@5.16.1) - vitest-mock-extended: - specifier: ^1.3.1 - version: 1.3.1(typescript@5.5.2)(vitest@1.6.0(@types/node@18.16.16)(jsdom@23.0.1)(sass@1.64.1)(terser@5.16.1)) - vue-tsc: - specifier: ^2.0.19 - version: 2.0.19(typescript@5.5.2) + specifier: ^5.6.2 + version: 5.6.2 + zx: + specifier: ^8.1.4 + version: 8.1.4 cypress: dependencies: @@ -124,54 +208,101 @@ importers: specifier: ^7.2.0 version: 7.2.0 '@sinonjs/fake-timers': - specifier: ^11.2.2 - version: 11.2.2 + specifier: ^13.0.2 + version: 13.0.2 cypress: - specifier: ^13.11.0 - version: 13.11.0 + specifier: ^13.14.2 + version: 13.14.2 cypress-otp: specifier: ^1.0.3 version: 1.0.3 cypress-real-events: - specifier: ^1.12.0 - version: 1.12.0(cypress@13.11.0) + specifier: ^1.13.0 + version: 1.13.0(cypress@13.14.2) lodash: - specifier: 4.17.21 + specifier: 'catalog:' version: 4.17.21 nanoid: - specifier: 3.3.6 + specifier: 'catalog:' version: 3.3.6 start-server-and-test: - specifier: ^2.0.3 - version: 2.0.3 + specifier: ^2.0.8 + version: 2.0.8 devDependencies: + '@n8n/api-types': + specifier: workspace:* + version: link:../packages/@n8n/api-types '@types/lodash': - specifier: ^4.14.195 + specifier: 'catalog:' version: 4.14.195 eslint-plugin-cypress: - specifier: ^3.3.0 - version: 3.3.0(eslint@8.57.0) + specifier: ^3.5.0 + version: 3.5.0(eslint@8.57.0) n8n-workflow: specifier: workspace:* version: link:../packages/workflow + packages/@n8n/api-types: + dependencies: + xss: + specifier: 'catalog:' + version: 1.0.15 + zod: + specifier: 'catalog:' + version: 3.23.8 + zod-class: + specifier: 0.0.15 + version: 0.0.15(zod@3.23.8) + devDependencies: + n8n-workflow: + specifier: workspace:* + version: link:../../workflow + + packages/@n8n/benchmark: + dependencies: + '@oclif/core': + specifier: 4.0.7 + version: 4.0.7 + axios: + specifier: 'catalog:' + version: 1.7.4 + dotenv: + specifier: 8.6.0 + version: 8.6.0 + nanoid: + specifier: 'catalog:' + version: 3.3.6 + zx: + specifier: ^8.1.4 + version: 8.1.4 + devDependencies: + '@types/convict': + specifier: ^6.1.1 + version: 6.1.1 + '@types/k6': + specifier: ^0.52.0 + version: 0.52.0 + packages/@n8n/chat: dependencies: + '@vueuse/core': + specifier: ^10.11.0 + version: 10.11.0(vue@3.5.11(typescript@5.6.2)) highlight.js: - specifier: ^11.8.0 + specifier: catalog:frontend version: 11.9.0 markdown-it-link-attributes: specifier: ^4.0.1 version: 4.0.1 uuid: - specifier: ^8.3.2 - version: 8.3.2 + specifier: 'catalog:' + version: 10.0.0 vue: - specifier: ^3.4.21 - version: 3.4.21(typescript@5.5.2) + specifier: catalog:frontend + version: 3.5.11(typescript@5.6.2) vue-markdown-render: - specifier: ^2.1.1 - version: 2.1.1(vue@3.4.21(typescript@5.5.2)) + specifier: catalog:frontend + version: 2.2.1(vue@3.5.11(typescript@5.6.2)) devDependencies: '@iconify-json/mdi': specifier: ^1.1.54 @@ -179,27 +310,30 @@ importers: '@n8n/storybook': specifier: workspace:* version: link:../storybook - '@types/markdown-it': - specifier: ^12.2.3 - version: 12.2.3 - shelljs: - specifier: ^0.8.5 - version: 0.8.5 - unbuild: - specifier: ^2.0.0 - version: 2.0.0(sass@1.64.1)(typescript@5.5.2) + '@vitest/coverage-v8': + specifier: catalog:frontend + version: 2.1.2(vitest@2.1.2(@types/node@18.16.16)(jsdom@23.0.1)(sass@1.64.1)(terser@5.16.1)) unplugin-icons: - specifier: ^0.17.0 - version: 0.17.4(@vue/compiler-sfc@3.4.21)(vue-template-compiler@2.7.14) + specifier: ^0.19.0 + version: 0.19.0(@vue/compiler-sfc@3.5.11) + vite: + specifier: catalog:frontend + version: 5.4.8(@types/node@18.16.16)(sass@1.64.1)(terser@5.16.1) vite-plugin-dts: - specifier: ^3.7.3 - version: 3.7.3(@types/node@18.16.16)(rollup@3.29.4)(typescript@5.5.2)(vite@5.2.12(@types/node@18.16.16)(sass@1.64.1)(terser@5.16.1)) + specifier: ^4.2.3 + version: 4.2.3(@types/node@18.16.16)(rollup@4.24.0)(typescript@5.6.2)(vite@5.4.8(@types/node@18.16.16)(sass@1.64.1)(terser@5.16.1)) + vitest: + specifier: catalog:frontend + version: 2.1.2(@types/node@18.16.16)(jsdom@23.0.1)(sass@1.64.1)(terser@5.16.1) + vue-tsc: + specifier: ^2.1.6 + version: 2.1.6(typescript@5.6.2) packages/@n8n/client-oauth2: dependencies: axios: - specifier: 1.6.7 - version: 1.6.7(debug@3.2.7) + specifier: 'catalog:' + version: 1.7.4 packages/@n8n/codemirror-lang: dependencies: @@ -217,6 +351,15 @@ importers: specifier: ^1.7.0 version: 1.7.0 + packages/@n8n/config: + dependencies: + reflect-metadata: + specifier: 0.2.2 + version: 0.2.2 + typedi: + specifier: 'catalog:' + version: 0.10.0(patch_hash=sk6omkefrosihg7lmqbzh7vfxe) + packages/@n8n/imap: dependencies: iconv-lite: @@ -248,89 +391,116 @@ importers: specifier: ^0.0.3 version: 0.0.3(patch_hash=3i7wecddkama6vhpu5o37g24u4) + packages/@n8n/json-schema-to-zod: + devDependencies: + '@types/json-schema': + specifier: ^7.0.15 + version: 7.0.15 + zod: + specifier: 'catalog:' + version: 3.23.8 + packages/@n8n/nodes-langchain: dependencies: - '@aws-sdk/client-bedrock-runtime': - specifier: 3.535.0 - version: 3.535.0 - '@aws-sdk/credential-provider-node': - specifier: 3.535.0 - version: 3.535.0 + '@aws-sdk/client-sso-oidc': + specifier: 3.666.0 + version: 3.666.0(@aws-sdk/client-sts@3.666.0) + '@getzep/zep-cloud': + specifier: 1.0.12 + version: 1.0.12(@langchain/core@0.3.3(patch_hash=ekay3bw7hexufl733lypqvmx2e)(openai@4.63.0(encoding@0.1.13)(zod@3.23.8)))(encoding@0.1.13)(langchain@0.3.2(cbdnlo2gcodz2gzix466oterhe)) '@getzep/zep-js': specifier: 0.9.0 version: 0.9.0 '@google-ai/generativelanguage': - specifier: 2.5.0 - version: 2.5.0(encoding@0.1.13) + specifier: 2.6.0 + version: 2.6.0(encoding@0.1.13) + '@google-cloud/resource-manager': + specifier: 5.3.0 + version: 5.3.0(encoding@0.1.13) '@google/generative-ai': - specifier: 0.11.4 - version: 0.11.4 + specifier: 0.19.0 + version: 0.19.0 '@huggingface/inference': - specifier: 2.7.0 - version: 2.7.0 + specifier: 2.8.0 + version: 2.8.0 '@langchain/anthropic': - specifier: 0.1.21 - version: 0.1.21(encoding@0.1.13) + specifier: 0.3.1 + version: 0.3.1(@langchain/core@0.3.3(patch_hash=ekay3bw7hexufl733lypqvmx2e)(openai@4.63.0(encoding@0.1.13)(zod@3.23.8)))(encoding@0.1.13) + '@langchain/aws': + specifier: 0.1.0 + version: 0.1.0(@aws-sdk/client-sso-oidc@3.666.0(@aws-sdk/client-sts@3.666.0))(@aws-sdk/client-sts@3.666.0)(@langchain/core@0.3.3(patch_hash=ekay3bw7hexufl733lypqvmx2e)(openai@4.63.0(encoding@0.1.13)(zod@3.23.8))) '@langchain/cohere': - specifier: 0.0.10 - version: 0.0.10(encoding@0.1.13) + specifier: 0.3.0 + version: 0.3.0(@aws-sdk/client-sso-oidc@3.666.0(@aws-sdk/client-sts@3.666.0))(@langchain/core@0.3.3(patch_hash=ekay3bw7hexufl733lypqvmx2e)(openai@4.63.0(encoding@0.1.13)(zod@3.23.8)))(encoding@0.1.13) '@langchain/community': - specifier: 0.2.2 - version: 0.2.2(@aws-sdk/client-bedrock-runtime@3.535.0)(@aws-sdk/client-s3@3.478.0)(@aws-sdk/credential-provider-node@3.535.0)(@getzep/zep-js@0.9.0)(@google-ai/generativelanguage@2.5.0(encoding@0.1.13))(@google-cloud/storage@6.11.0(encoding@0.1.13))(@huggingface/inference@2.7.0)(@mozilla/readability@0.5.0)(@pinecone-database/pinecone@2.2.1)(@qdrant/js-client-rest@1.9.0(typescript@5.5.2))(@smithy/eventstream-codec@2.2.0)(@smithy/protocol-http@3.3.0)(@smithy/signature-v4@2.2.1)(@smithy/util-utf8@2.3.0)(@supabase/postgrest-js@1.15.2)(@supabase/supabase-js@2.43.4)(@xata.io/client@0.28.4(typescript@5.5.2))(axios@1.6.7)(cheerio@1.0.0-rc.12)(cohere-ai@7.10.1(encoding@0.1.13))(d3-dsv@2.0.0)(encoding@0.1.13)(epub2@3.0.2(ts-toolbelt@9.6.0))(fast-xml-parser@4.3.5)(handlebars@4.7.8)(html-to-text@9.0.5)(ignore@5.2.4)(ioredis@5.3.2)(jsdom@23.0.1)(jsonwebtoken@9.0.2)(lodash@4.17.21)(mammoth@1.7.2)(mysql2@3.10.0)(pdf-parse@1.1.1)(pg@8.11.3)(redis@4.6.12)(ws@8.17.1) + specifier: 0.3.2 + version: 0.3.2(rx3iiky3qnn44pzlnyiooyzaly) '@langchain/core': - specifier: 0.2.0 - version: 0.2.0 + specifier: 'catalog:' + version: 0.3.3(patch_hash=ekay3bw7hexufl733lypqvmx2e)(openai@4.63.0(encoding@0.1.13)(zod@3.23.8)) '@langchain/google-genai': - specifier: 0.0.16 - version: 0.0.16(zod@3.23.8) + specifier: 0.1.0 + version: 0.1.0(@langchain/core@0.3.3(patch_hash=ekay3bw7hexufl733lypqvmx2e)(openai@4.63.0(encoding@0.1.13)(zod@3.23.8)))(zod@3.23.8) + '@langchain/google-vertexai': + specifier: 0.1.0 + version: 0.1.0(@langchain/core@0.3.3(patch_hash=ekay3bw7hexufl733lypqvmx2e)(openai@4.63.0(encoding@0.1.13)(zod@3.23.8)))(encoding@0.1.13)(zod@3.23.8) '@langchain/groq': - specifier: 0.0.12 - version: 0.0.12(encoding@0.1.13) + specifier: 0.1.2 + version: 0.1.2(@langchain/core@0.3.3(patch_hash=ekay3bw7hexufl733lypqvmx2e)(openai@4.63.0(encoding@0.1.13)(zod@3.23.8)))(encoding@0.1.13) '@langchain/mistralai': - specifier: 0.0.22 - version: 0.0.22(encoding@0.1.13) + specifier: 0.1.1 + version: 0.1.1(@langchain/core@0.3.3(patch_hash=ekay3bw7hexufl733lypqvmx2e)(openai@4.63.0(encoding@0.1.13)(zod@3.23.8)))(encoding@0.1.13) + '@langchain/ollama': + specifier: 0.1.0 + version: 0.1.0(@langchain/core@0.3.3(patch_hash=ekay3bw7hexufl733lypqvmx2e)(openai@4.63.0(encoding@0.1.13)(zod@3.23.8))) '@langchain/openai': - specifier: 0.0.33 - version: 0.0.33(encoding@0.1.13) + specifier: 0.3.0 + version: 0.3.0(@langchain/core@0.3.3(patch_hash=ekay3bw7hexufl733lypqvmx2e)(openai@4.63.0(encoding@0.1.13)(zod@3.23.8)))(encoding@0.1.13) '@langchain/pinecone': - specifier: 0.0.6 - version: 0.0.6 + specifier: 0.1.0 + version: 0.1.0(@langchain/core@0.3.3(patch_hash=ekay3bw7hexufl733lypqvmx2e)(openai@4.63.0(encoding@0.1.13)(zod@3.23.8))) + '@langchain/qdrant': + specifier: 0.1.0 + version: 0.1.0(@langchain/core@0.3.3(patch_hash=ekay3bw7hexufl733lypqvmx2e)(openai@4.63.0(encoding@0.1.13)(zod@3.23.8)))(typescript@5.6.2) '@langchain/redis': - specifier: 0.0.5 - version: 0.0.5 + specifier: 0.1.0 + version: 0.1.0(@langchain/core@0.3.3(patch_hash=ekay3bw7hexufl733lypqvmx2e)(openai@4.63.0(encoding@0.1.13)(zod@3.23.8))) '@langchain/textsplitters': - specifier: 0.0.2 - version: 0.0.2 + specifier: 0.1.0 + version: 0.1.0(@langchain/core@0.3.3(patch_hash=ekay3bw7hexufl733lypqvmx2e)(openai@4.63.0(encoding@0.1.13)(zod@3.23.8))) '@mozilla/readability': - specifier: ^0.5.0 + specifier: 0.5.0 version: 0.5.0 + '@n8n/json-schema-to-zod': + specifier: workspace:* + version: link:../json-schema-to-zod '@n8n/typeorm': - specifier: 0.3.20-10 - version: 0.3.20-10(@sentry/node@7.87.0)(ioredis@5.3.2)(mssql@10.0.2)(mysql2@3.10.0)(pg@8.11.3)(redis@4.6.12)(sqlite3@5.1.7) + specifier: 0.3.20-12 + version: 0.3.20-12(@sentry/node@7.87.0)(ioredis@5.3.2)(mssql@10.0.2)(mysql2@3.11.0)(pg@8.12.0)(redis@4.6.12)(sqlite3@5.1.7)(ts-node@10.9.2(@types/node@18.16.16)(typescript@5.6.2)) '@n8n/vm2': - specifier: 3.9.20 - version: 3.9.20 + specifier: 3.9.25 + version: 3.9.25 '@pinecone-database/pinecone': - specifier: 2.2.1 - version: 2.2.1 + specifier: 3.0.3 + version: 3.0.3 '@qdrant/js-client-rest': - specifier: 1.9.0 - version: 1.9.0(typescript@5.5.2) + specifier: 1.11.0 + version: 1.11.0(typescript@5.6.2) '@supabase/supabase-js': - specifier: 2.43.4 - version: 2.43.4 + specifier: 2.45.4 + version: 2.45.4 '@xata.io/client': specifier: 0.28.4 - version: 0.28.4(typescript@5.5.2) + version: 0.28.4(typescript@5.6.2) basic-auth: - specifier: 2.0.1 + specifier: 'catalog:' version: 2.0.1 cheerio: - specifier: 1.0.0-rc.12 - version: 1.0.0-rc.12 + specifier: 1.0.0 + version: 1.0.0 cohere-ai: - specifier: 7.10.1 - version: 7.10.1(encoding@0.1.13) + specifier: 7.13.2 + version: 7.13.2(@aws-sdk/client-sso-oidc@3.666.0(@aws-sdk/client-sts@3.666.0))(encoding@0.1.13) d3-dsv: specifier: 2.0.0 version: 2.0.0 @@ -338,7 +508,7 @@ importers: specifier: 3.0.2 version: 3.0.2(ts-toolbelt@9.6.0) form-data: - specifier: 4.0.0 + specifier: 'catalog:' version: 4.0.0 generate-schema: specifier: 2.6.0 @@ -347,20 +517,20 @@ importers: specifier: 9.0.5 version: 9.0.5 jsdom: - specifier: ^23.0.1 + specifier: 23.0.1 version: 23.0.1 - json-schema-to-zod: - specifier: 2.1.0 - version: 2.1.0 langchain: - specifier: 0.2.2 - version: 0.2.2(@aws-sdk/client-s3@3.478.0)(@aws-sdk/credential-provider-node@3.535.0)(@google-ai/generativelanguage@2.5.0(encoding@0.1.13))(@pinecone-database/pinecone@2.2.1)(@supabase/supabase-js@2.43.4)(@xata.io/client@0.28.4(typescript@5.5.2))(axios@1.6.7)(cheerio@1.0.0-rc.12)(d3-dsv@2.0.0)(encoding@0.1.13)(epub2@3.0.2(ts-toolbelt@9.6.0))(fast-xml-parser@4.3.5)(handlebars@4.7.8)(html-to-text@9.0.5)(ignore@5.2.4)(ioredis@5.3.2)(jsdom@23.0.1)(mammoth@1.7.2)(pdf-parse@1.1.1)(redis@4.6.12)(ws@8.17.1) + specifier: 0.3.2 + version: 0.3.2(cbdnlo2gcodz2gzix466oterhe) lodash: - specifier: 4.17.21 + specifier: 'catalog:' version: 4.17.21 mammoth: specifier: 1.7.2 version: 1.7.2 + mime-types: + specifier: 2.1.35 + version: 2.1.35 n8n-nodes-base: specifier: workspace:* version: link:../../nodes-base @@ -368,14 +538,14 @@ importers: specifier: workspace:* version: link:../../workflow openai: - specifier: 4.47.1 - version: 4.47.1(encoding@0.1.13) + specifier: 4.63.0 + version: 4.63.0(encoding@0.1.13)(zod@3.23.8) pdf-parse: specifier: 1.1.1 version: 1.1.1 pg: - specifier: 8.11.3 - version: 8.11.3 + specifier: 8.12.0 + version: 8.12.0 redis: specifier: 4.6.12 version: 4.6.12 @@ -389,30 +559,30 @@ importers: specifier: 3.0.3 version: 3.0.3 zod: - specifier: 3.23.8 + specifier: 'catalog:' version: 3.23.8 zod-to-json-schema: - specifier: 3.23.0 - version: 3.23.0(zod@3.23.8) + specifier: 3.23.3 + version: 3.23.3(zod@3.23.8) devDependencies: - '@aws-sdk/types': - specifier: ^3.535.0 - version: 3.535.0 '@types/basic-auth': - specifier: ^1.1.3 + specifier: 'catalog:' version: 1.1.3 '@types/cheerio': specifier: ^0.22.15 version: 0.22.31 - '@types/express': - specifier: ^4.17.21 - version: 4.17.21 '@types/html-to-text': specifier: ^9.0.1 version: 9.0.4 '@types/json-schema': specifier: ^7.0.15 version: 7.0.15 + '@types/mime-types': + specifier: ^2.1.0 + version: 2.1.1 + '@types/pg': + specifier: ^8.11.6 + version: 8.11.6 '@types/temp': specifier: ^0.9.1 version: 0.9.4 @@ -425,47 +595,66 @@ importers: packages/@n8n/storybook: devDependencies: '@chromatic-com/storybook': - specifier: ^1.5.0 - version: 1.5.0(react@18.2.0) + specifier: ^2.0.2 + version: 2.0.2(react@18.2.0) '@storybook/addon-a11y': - specifier: ^8.1.4 - version: 8.1.4 + specifier: ^8.3.5 + version: 8.3.5(storybook@8.3.5) '@storybook/addon-actions': - specifier: ^8.1.4 - version: 8.1.4 + specifier: ^8.3.5 + version: 8.3.5(storybook@8.3.5) '@storybook/addon-docs': - specifier: ^8.1.4 - version: 8.1.4(encoding@0.1.13)(prettier@3.2.5) + specifier: ^8.3.5 + version: 8.3.5(storybook@8.3.5) '@storybook/addon-essentials': - specifier: ^8.1.4 - version: 8.1.4(@types/react@18.0.27)(encoding@0.1.13)(prettier@3.2.5)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + specifier: ^8.3.5 + version: 8.3.5(storybook@8.3.5) '@storybook/addon-interactions': - specifier: ^8.1.4 - version: 8.1.4(@jest/globals@29.6.2)(@types/jest@29.5.3)(jest@29.6.2(@types/node@18.16.16))(vitest@1.6.0(@types/node@18.16.16)(jsdom@23.0.1)(sass@1.64.1)(terser@5.16.1)) + specifier: ^8.3.5 + version: 8.3.5(storybook@8.3.5) '@storybook/addon-links': - specifier: ^8.1.4 - version: 8.1.4(react@18.2.0) + specifier: ^8.3.5 + version: 8.3.5(react@18.2.0)(storybook@8.3.5) '@storybook/addon-themes': - specifier: ^8.1.4 - version: 8.1.4 + specifier: ^8.3.5 + version: 8.3.5(storybook@8.3.5) '@storybook/blocks': - specifier: ^8.1.4 - version: 8.1.4(@types/react@18.0.27)(encoding@0.1.13)(prettier@3.2.5)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + specifier: ^8.3.5 + version: 8.3.5(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(storybook@8.3.5) '@storybook/test': - specifier: ^8.1.4 - version: 8.1.4(@jest/globals@29.6.2)(@types/jest@29.5.3)(jest@29.6.2(@types/node@18.16.16))(vitest@1.6.0(@types/node@18.16.16)(jsdom@23.0.1)(sass@1.64.1)(terser@5.16.1)) + specifier: ^8.3.5 + version: 8.3.5(storybook@8.3.5) '@storybook/vue3': - specifier: ^8.1.4 - version: 8.1.4(encoding@0.1.13)(prettier@3.2.5)(vue@3.4.21(typescript@5.5.2)) + specifier: ^8.3.5 + version: 8.3.5(storybook@8.3.5)(vue@3.5.11(typescript@5.6.2)) '@storybook/vue3-vite': - specifier: ^8.1.4 - version: 8.1.4(encoding@0.1.13)(prettier@3.2.5)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(vite@5.2.12(@types/node@18.16.16)(sass@1.64.1)(terser@5.16.1))(vue@3.4.21(typescript@5.5.2)) + specifier: ^8.3.5 + version: 8.3.5(storybook@8.3.5)(vite@5.4.8(@types/node@18.16.16)(sass@1.64.1)(terser@5.16.1))(vue@3.5.11(typescript@5.6.2)) chromatic: - specifier: ^11.4.1 - version: 11.4.1 + specifier: ^11.10.2 + version: 11.10.2 storybook: - specifier: ^8.1.4 - version: 8.1.4(@babel/preset-env@7.24.6(@babel/core@7.24.6))(encoding@0.1.13)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + specifier: ^8.3.5 + version: 8.3.5 + + packages/@n8n/task-runner: + dependencies: + n8n-core: + specifier: workspace:* + version: link:../../core + n8n-workflow: + specifier: workspace:* + version: link:../../workflow + nanoid: + specifier: ^3.3.6 + version: 3.3.7 + ws: + specifier: '>=8.17.1' + version: 8.17.1 + devDependencies: + luxon: + specifier: 'catalog:' + version: 3.4.4 packages/@n8n_io/eslint-config: devDependencies: @@ -474,46 +663,40 @@ importers: version: 8.56.5 '@typescript-eslint/eslint-plugin': specifier: ^7.2.0 - version: 7.2.0(@typescript-eslint/parser@7.2.0(eslint@8.57.0)(typescript@5.5.2))(eslint@8.57.0)(typescript@5.5.2) + version: 7.2.0(@typescript-eslint/parser@7.2.0(eslint@8.57.0)(typescript@5.6.2))(eslint@8.57.0)(typescript@5.6.2) '@typescript-eslint/parser': specifier: ^7.2.0 - version: 7.2.0(eslint@8.57.0)(typescript@5.5.2) - '@vue/eslint-config-prettier': - specifier: ^9.0.0 - version: 9.0.0(@types/eslint@8.56.5)(eslint@8.57.0)(prettier@3.2.5) + version: 7.2.0(eslint@8.57.0)(typescript@5.6.2) '@vue/eslint-config-typescript': specifier: ^13.0.0 - version: 13.0.0(eslint-plugin-vue@9.23.0(eslint@8.57.0))(eslint@8.57.0)(typescript@5.5.2) + version: 13.0.0(eslint-plugin-vue@9.23.0(eslint@8.57.0))(eslint@8.57.0)(typescript@5.6.2) eslint: specifier: ^8.57.0 version: 8.57.0 eslint-config-airbnb-typescript: specifier: ^18.0.0 - version: 18.0.0(@typescript-eslint/eslint-plugin@7.2.0(@typescript-eslint/parser@7.2.0(eslint@8.57.0)(typescript@5.5.2))(eslint@8.57.0)(typescript@5.5.2))(@typescript-eslint/parser@7.2.0(eslint@8.57.0)(typescript@5.5.2))(eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.2.0(eslint@8.57.0)(typescript@5.5.2))(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0))(eslint@8.57.0) + version: 18.0.0(@typescript-eslint/eslint-plugin@7.2.0(@typescript-eslint/parser@7.2.0(eslint@8.57.0)(typescript@5.6.2))(eslint@8.57.0)(typescript@5.6.2))(@typescript-eslint/parser@7.2.0(eslint@8.57.0)(typescript@5.6.2))(eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.2.0(eslint@8.57.0)(typescript@5.6.2))(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0))(eslint@8.57.0) eslint-config-prettier: specifier: ^9.1.0 version: 9.1.0(eslint@8.57.0) eslint-import-resolver-typescript: specifier: ^3.6.1 - version: 3.6.1(@typescript-eslint/parser@7.2.0(eslint@8.57.0)(typescript@5.5.2))(eslint-plugin-import@2.29.1)(eslint@8.57.0) + version: 3.6.1(@typescript-eslint/parser@7.2.0(eslint@8.57.0)(typescript@5.6.2))(eslint-plugin-import@2.29.1)(eslint@8.57.0) eslint-plugin-import: specifier: ^2.29.1 - version: 2.29.1(@typescript-eslint/parser@7.2.0(eslint@8.57.0)(typescript@5.5.2))(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) + version: 2.29.1(@typescript-eslint/parser@7.2.0(eslint@8.57.0)(typescript@5.6.2))(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) eslint-plugin-lodash: specifier: ^7.4.0 version: 7.4.0(eslint@8.57.0) eslint-plugin-n8n-local-rules: specifier: ^1.0.0 version: 1.0.0 - eslint-plugin-prettier: - specifier: ^5.1.3 - version: 5.1.3(@types/eslint@8.56.5)(eslint-config-prettier@9.1.0(eslint@8.57.0))(eslint@8.57.0)(prettier@3.2.5) eslint-plugin-unicorn: specifier: ^51.0.1 version: 51.0.1(eslint@8.57.0) eslint-plugin-unused-imports: specifier: ^3.1.0 - version: 3.1.0(@typescript-eslint/eslint-plugin@7.2.0(@typescript-eslint/parser@7.2.0(eslint@8.57.0)(typescript@5.5.2))(eslint@8.57.0)(typescript@5.5.2))(eslint@8.57.0) + version: 3.1.0(@typescript-eslint/eslint-plugin@7.2.0(@typescript-eslint/parser@7.2.0(eslint@8.57.0)(typescript@5.6.2))(eslint@8.57.0)(typescript@5.6.2))(eslint@8.57.0) eslint-plugin-vue: specifier: ^9.23.0 version: 9.23.0(eslint@8.57.0) @@ -523,45 +706,51 @@ importers: packages/cli: dependencies: - '@langchain/community': - specifier: 0.2.2 - version: 0.2.2(@aws-sdk/client-bedrock-runtime@3.535.0)(@aws-sdk/client-s3@3.478.0)(@aws-sdk/credential-provider-node@3.535.0)(@getzep/zep-js@0.9.0)(@google-cloud/storage@6.11.0(encoding@0.1.13))(@huggingface/inference@2.7.0)(@mozilla/readability@0.5.0)(@pinecone-database/pinecone@2.1.0)(@qdrant/js-client-rest@1.9.0(typescript@5.5.2))(@smithy/eventstream-codec@2.2.0)(@smithy/protocol-http@3.3.0)(@smithy/signature-v4@2.2.1)(@smithy/util-utf8@2.3.0)(@supabase/postgrest-js@1.15.2)(@supabase/supabase-js@2.43.4)(@xata.io/client@0.28.4(typescript@5.5.2))(axios@1.6.7)(cheerio@1.0.0-rc.12)(cohere-ai@7.10.1(encoding@0.1.13))(d3-dsv@2.0.0)(encoding@0.1.13)(epub2@3.0.2)(fast-xml-parser@4.3.5)(handlebars@4.7.8)(html-to-text@9.0.5)(ignore@5.2.4)(ioredis@5.3.2)(jsdom@23.0.1)(jsonwebtoken@9.0.2)(lodash@4.17.21)(mammoth@1.7.2)(mysql2@3.10.0)(pdf-parse@1.1.1)(pg@8.11.3)(redis@4.6.14)(ws@8.17.1) - '@langchain/core': - specifier: 0.2.0 - version: 0.2.0 - '@langchain/openai': - specifier: 0.0.33 - version: 0.0.33(encoding@0.1.13) - '@langchain/pinecone': - specifier: 0.0.6 - version: 0.0.6 + '@azure/identity': + specifier: ^4.3.0 + version: 4.3.0 + '@azure/keyvault-secrets': + specifier: ^4.8.0 + version: 4.8.0 + '@google-cloud/secret-manager': + specifier: ^5.6.0 + version: 5.6.0(encoding@0.1.13) + '@n8n/api-types': + specifier: workspace:* + version: link:../@n8n/api-types '@n8n/client-oauth2': specifier: workspace:* version: link:../@n8n/client-oauth2 + '@n8n/config': + specifier: workspace:* + version: link:../@n8n/config '@n8n/localtunnel': - specifier: 2.1.0 - version: 2.1.0 + specifier: 3.0.0 + version: 3.0.0 '@n8n/n8n-nodes-langchain': specifier: workspace:* version: link:../@n8n/nodes-langchain '@n8n/permissions': specifier: workspace:* version: link:../@n8n/permissions + '@n8n/task-runner': + specifier: workspace:* + version: link:../@n8n/task-runner '@n8n/typeorm': - specifier: 0.3.20-10 - version: 0.3.20-10(@sentry/node@7.87.0)(ioredis@5.3.2)(mssql@10.0.2)(mysql2@3.10.0)(pg@8.11.3)(redis@4.6.14)(sqlite3@5.1.7) + specifier: 0.3.20-12 + version: 0.3.20-12(@sentry/node@7.87.0)(ioredis@5.3.2)(mssql@10.0.2)(mysql2@3.11.0)(pg@8.12.0)(redis@4.6.14)(sqlite3@5.1.7)(ts-node@10.9.2(@types/node@18.16.16)(typescript@5.6.2)) + '@n8n_io/ai-assistant-sdk': + specifier: 1.10.3 + version: 1.10.3 '@n8n_io/license-sdk': - specifier: 2.13.0 - version: 2.13.0 + specifier: 2.13.1 + version: 2.13.1 '@oclif/core': specifier: 4.0.7 version: 4.0.7 - '@pinecone-database/pinecone': - specifier: 2.1.0 - version: 2.1.0 '@rudderstack/rudder-sdk-node': - specifier: 2.0.7 - version: 2.0.7(tslib@2.6.2) + specifier: 2.0.9 + version: 2.0.9(tslib@2.6.2) '@sentry/integrations': specifier: 7.87.0 version: 7.87.0 @@ -572,11 +761,8 @@ importers: specifier: 1.11.0 version: 1.11.0 axios: - specifier: 1.6.7 - version: 1.6.7(debug@3.2.7) - basic-auth: - specifier: 2.0.1 - version: 2.0.1 + specifier: 'catalog:' + version: 1.7.4 bcryptjs: specifier: 2.4.3 version: 2.4.3 @@ -605,50 +791,47 @@ importers: specifier: 6.2.4 version: 6.2.4 cookie-parser: - specifier: 1.4.6 - version: 1.4.6 + specifier: 1.4.7 + version: 1.4.7 csrf: specifier: 3.1.0 version: 3.1.0 curlconverter: specifier: 3.21.0 - version: 3.21.0(chokidar@3.5.2) + version: 3.21.0(chokidar@4.0.1) dotenv: specifier: 8.6.0 version: 8.6.0 express: - specifier: 4.19.2 - version: 4.19.2 + specifier: 4.21.1 + version: 4.21.1 express-async-errors: specifier: 3.1.1 - version: 3.1.1(express@4.19.2) + version: 3.1.1(express@4.21.1) express-handlebars: specifier: 7.1.2 version: 7.1.2 express-openapi-validator: - specifier: 5.1.6 - version: 5.1.6 + specifier: 5.3.7 + version: 5.3.7(express@4.21.1) express-prom-bundle: specifier: 6.6.0 version: 6.6.0(prom-client@13.2.0) express-rate-limit: specifier: 7.2.0 - version: 7.2.0(express@4.19.2) + version: 7.2.0(express@4.21.1) fast-glob: - specifier: 3.2.12 + specifier: 'catalog:' version: 3.2.12 + flat: + specifier: 5.0.2 + version: 5.0.2 flatted: specifier: 3.2.7 version: 3.2.7 formidable: specifier: 3.5.1 version: 3.5.1 - fuse.js: - specifier: ^7.0.0 - version: 7.0.0 - google-timezones-json: - specifier: 1.1.0 - version: 1.1.0 handlebars: specifier: 4.7.8 version: 4.7.8 @@ -658,9 +841,6 @@ importers: infisical-node: specifier: 1.3.0 version: 1.3.0 - inquirer: - specifier: 7.3.3 - version: 7.3.3 ioredis: specifier: 5.3.2 version: 5.3.2 @@ -676,21 +856,18 @@ importers: jsonwebtoken: specifier: 9.0.2 version: 9.0.2 - langchain: - specifier: 0.2.2 - version: 0.2.2(@aws-sdk/client-s3@3.478.0)(@aws-sdk/credential-provider-node@3.535.0)(@pinecone-database/pinecone@2.1.0)(@supabase/supabase-js@2.43.4)(@xata.io/client@0.28.4(typescript@5.5.2))(axios@1.6.7)(cheerio@1.0.0-rc.12)(d3-dsv@2.0.0)(encoding@0.1.13)(epub2@3.0.2)(fast-xml-parser@4.3.5)(handlebars@4.7.8)(html-to-text@9.0.5)(ignore@5.2.4)(ioredis@5.3.2)(jsdom@23.0.1)(mammoth@1.7.2)(pdf-parse@1.1.1)(redis@4.6.14)(ws@8.17.1) ldapts: specifier: 4.2.6 version: 4.2.6 lodash: - specifier: 4.17.21 + specifier: 'catalog:' version: 4.17.21 luxon: - specifier: 3.3.0 - version: 3.3.0 + specifier: 'catalog:' + version: 3.4.4 mysql2: - specifier: 3.10.0 - version: 3.10.0 + specifier: 3.11.0 + version: 3.11.0 n8n-core: specifier: workspace:* version: link:../core @@ -704,7 +881,7 @@ importers: specifier: workspace:* version: link:../workflow nanoid: - specifier: 3.3.6 + specifier: 'catalog:' version: 3.3.6 nodemailer: specifier: 6.9.9 @@ -716,8 +893,8 @@ importers: specifier: 7.4.2 version: 7.4.2 openapi-types: - specifier: 10.0.0 - version: 10.0.0 + specifier: 12.1.3 + version: 12.1.3 otpauth: specifier: 9.1.1 version: 9.1.1 @@ -728,11 +905,11 @@ importers: specifier: 3.1.0 version: 3.1.0 pg: - specifier: 8.11.3 - version: 8.11.3 + specifier: 8.12.0 + version: 8.12.0 picocolors: - specifier: 1.0.0 - version: 1.0.0 + specifier: 1.0.1 + version: 1.0.1 pkce-challenge: specifier: 3.0.0 version: 3.0.0(patch_hash=dypouzb3lve7vncq25i5fuanki) @@ -772,58 +949,52 @@ importers: sqlite3: specifier: 5.1.7 version: 5.1.7 - sse-channel: - specifier: 4.0.0 - version: 4.0.0 sshpk: specifier: 1.17.0 version: 1.17.0 swagger-ui-express: - specifier: 5.0.0 - version: 5.0.0(express@4.19.2) + specifier: 5.0.1 + version: 5.0.1(express@4.21.1) syslog-client: specifier: 1.1.1 version: 1.1.1 typedi: - specifier: 0.10.0 + specifier: 'catalog:' version: 0.10.0(patch_hash=sk6omkefrosihg7lmqbzh7vfxe) uuid: - specifier: 8.3.2 - version: 8.3.2 + specifier: 'catalog:' + version: 10.0.0 validator: specifier: 13.7.0 version: 13.7.0 winston: - specifier: 3.8.2 - version: 3.8.2 + specifier: 3.14.2 + version: 3.14.2 ws: specifier: '>=8.17.1' version: 8.17.1 xml2js: - specifier: 0.6.2 + specifier: 'catalog:' version: 0.6.2 xmllint-wasm: specifier: 3.0.1 version: 3.0.1 + xss: + specifier: 'catalog:' + version: 1.0.15 yamljs: specifier: 0.3.0 version: 0.3.0 zod: - specifier: 3.22.4 - version: 3.22.4 - zod-to-json-schema: - specifier: 3.22.4 - version: 3.22.4(zod@3.22.4) + specifier: 'catalog:' + version: 3.23.8 devDependencies: '@redocly/cli': - specifier: ^1.6.0 - version: 1.6.0(encoding@0.1.13) + specifier: ^1.25.5 + version: 1.25.5(encoding@0.1.13)(enzyme@3.11.0) '@types/aws4': specifier: ^1.5.1 version: 1.11.2 - '@types/basic-auth': - specifier: ^1.1.3 - version: 1.1.3 '@types/bcryptjs': specifier: ^2.4.2 version: 2.4.2 @@ -834,11 +1005,14 @@ importers: specifier: ^6.1.1 version: 6.1.1 '@types/cookie-parser': - specifier: ^1.4.2 - version: 1.4.3 + specifier: ^1.4.7 + version: 1.4.7 '@types/express': - specifier: ^4.17.21 + specifier: 'catalog:' version: 4.17.21 + '@types/flat': + specifier: ^5.0.5 + version: 5.0.5 '@types/formidable': specifier: ^3.4.5 version: 3.4.5 @@ -849,7 +1023,7 @@ importers: specifier: ^9.0.6 version: 9.0.6 '@types/lodash': - specifier: ^4.14.195 + specifier: 'catalog:' version: 4.14.195 '@types/psl': specifier: ^1.1.0 @@ -873,8 +1047,8 @@ importers: specifier: ^1.1.2 version: 1.1.2 '@types/uuid': - specifier: ^8.3.2 - version: 8.3.4 + specifier: 'catalog:' + version: 10.0.0 '@types/validator': specifier: ^13.7.0 version: 13.7.7 @@ -882,55 +1056,64 @@ importers: specifier: ^8.5.4 version: 8.5.4(patch_hash=nbzuqaoyqbrfwipijj5qriqqju) '@types/xml2js': - specifier: ^0.4.14 + specifier: 'catalog:' version: 0.4.14 '@types/yamljs': specifier: ^0.2.31 version: 0.2.31 - chokidar: - specifier: 3.5.2 - version: 3.5.2 + '@vvo/tzdb': + specifier: ^6.141.0 + version: 6.141.0 concurrently: specifier: ^8.2.0 version: 8.2.0 ioredis-mock: specifier: ^8.8.1 version: 8.8.1(@types/ioredis-mock@8.2.2)(ioredis@5.3.2) + mjml: + specifier: ^4.15.3 + version: 4.15.3(encoding@0.1.13) ts-essentials: specifier: ^7.0.3 - version: 7.0.3(typescript@5.5.2) + version: 7.0.3(typescript@5.6.2) packages/core: dependencies: + '@langchain/core': + specifier: 'catalog:' + version: 0.3.3(patch_hash=ekay3bw7hexufl733lypqvmx2e)(openai@4.63.0(zod@3.23.8)) '@n8n/client-oauth2': specifier: workspace:* version: link:../@n8n/client-oauth2 + '@n8n/config': + specifier: workspace:* + version: link:../@n8n/config aws4: specifier: 1.11.0 version: 1.11.0 axios: - specifier: 1.6.7 - version: 1.6.7(debug@3.2.7) + specifier: 'catalog:' + version: 1.7.4 concat-stream: specifier: 2.0.0 version: 2.0.0 cron: - specifier: 1.7.2 - version: 1.7.2 + specifier: 3.1.7 + version: 3.1.7 fast-glob: - specifier: 3.2.12 + specifier: 'catalog:' version: 3.2.12 file-type: specifier: 16.5.4 version: 16.5.4 form-data: - specifier: 4.0.0 + specifier: 'catalog:' version: 4.0.0 lodash: - specifier: 4.17.21 + specifier: 'catalog:' version: 4.17.21 luxon: - specifier: ^3.4.4 + specifier: 'catalog:' version: 3.4.4 mime-types: specifier: 2.1.35 @@ -938,6 +1121,9 @@ importers: n8n-workflow: specifier: workspace:* version: link:../workflow + nanoid: + specifier: 'catalog:' + version: 3.3.6 oauth-1.0a: specifier: 2.2.6 version: 2.2.6 @@ -950,15 +1136,21 @@ importers: qs: specifier: 6.11.0 version: 6.11.0 + ssh2: + specifier: 1.15.0 + version: 1.15.0 typedi: - specifier: 0.10.0 + specifier: 'catalog:' version: 0.10.0(patch_hash=sk6omkefrosihg7lmqbzh7vfxe) uuid: - specifier: 8.3.2 - version: 8.3.2 + specifier: 'catalog:' + version: 10.0.0 xml2js: - specifier: 0.6.2 + specifier: 'catalog:' version: 0.6.2 + zod: + specifier: 'catalog:' + version: 3.23.8 devDependencies: '@types/aws4': specifier: ^1.5.1 @@ -966,23 +1158,20 @@ importers: '@types/concat-stream': specifier: ^2.0.0 version: 2.0.0 - '@types/cron': - specifier: ~1.7.1 - version: 1.7.3 '@types/express': - specifier: ^4.17.21 + specifier: 'catalog:' version: 4.17.21 '@types/lodash': - specifier: ^4.14.195 + specifier: 'catalog:' version: 4.14.195 '@types/mime-types': specifier: ^2.1.0 version: 2.1.1 '@types/uuid': - specifier: ^8.3.2 - version: 8.3.4 + specifier: 'catalog:' + version: 10.0.0 '@types/xml2js': - specifier: ^0.4.14 + specifier: 'catalog:' version: 0.4.14 packages/design-system: @@ -990,21 +1179,18 @@ importers: '@fortawesome/fontawesome-svg-core': specifier: ^1.2.36 version: 1.2.36 - '@fortawesome/free-regular-svg-icons': - specifier: ^6.1.1 - version: 6.2.0 '@fortawesome/free-solid-svg-icons': specifier: ^5.15.4 version: 5.15.4 '@fortawesome/vue-fontawesome': specifier: ^3.0.3 - version: 3.0.3(@fortawesome/fontawesome-svg-core@1.2.36)(vue@3.4.21(typescript@5.5.2)) + version: 3.0.3(@fortawesome/fontawesome-svg-core@1.2.36)(vue@3.5.11(typescript@5.6.2)) element-plus: - specifier: ^2.3.6 - version: 2.3.6(vue@3.4.21(typescript@5.5.2)) + specifier: 2.4.3 + version: 2.4.3(vue@3.5.11(typescript@5.6.2)) markdown-it: - specifier: ^13.0.1 - version: 13.0.1 + specifier: ^13.0.2 + version: 13.0.2 markdown-it-emoji: specifier: ^2.0.2 version: 2.0.2 @@ -1014,82 +1200,85 @@ importers: markdown-it-task-lists: specifier: ^2.1.1 version: 2.1.1 + parse-diff: + specifier: ^0.11.1 + version: 0.11.1 sanitize-html: specifier: 2.12.1 version: 2.12.1 vue: - specifier: ^3.4.21 - version: 3.4.21(typescript@5.5.2) + specifier: catalog:frontend + version: 3.5.11(typescript@5.6.2) vue-boring-avatars: specifier: ^1.3.0 - version: 1.3.0(vue@3.4.21(typescript@5.5.2)) + version: 1.3.0(vue@3.5.11(typescript@5.6.2)) vue-router: - specifier: ^4.2.2 - version: 4.2.2(vue@3.4.21(typescript@5.5.2)) + specifier: catalog:frontend + version: 4.4.5(vue@3.5.11(typescript@5.6.2)) xss: - specifier: ^1.0.14 - version: 1.0.14 + specifier: 'catalog:' + version: 1.0.15 devDependencies: '@n8n/storybook': specifier: workspace:* version: link:../@n8n/storybook '@testing-library/jest-dom': - specifier: ^6.1.5 - version: 6.1.5(@jest/globals@29.6.2)(@types/jest@29.5.3)(jest@29.6.2(@types/node@18.16.16))(vitest@1.6.0(@types/node@18.16.16)(jsdom@23.0.1)(sass@1.64.1)(terser@5.16.1)) + specifier: ^6.5.0 + version: 6.5.0 '@testing-library/user-event': - specifier: ^14.5.1 - version: 14.5.1(@testing-library/dom@9.3.4) + specifier: ^14.5.2 + version: 14.5.2(@testing-library/dom@10.4.0) '@testing-library/vue': - specifier: ^8.0.1 - version: 8.0.1(@vue/compiler-sfc@3.4.21)(@vue/server-renderer@3.4.21(vue@3.4.21(typescript@5.5.2)))(vue@3.4.21(typescript@5.5.2)) - '@tsconfig/node18': - specifier: ^18.2.2 - version: 18.2.2 - '@types/jsdom': - specifier: ^21.1.6 - version: 21.1.6 + specifier: ^8.1.0 + version: 8.1.0(@vue/compiler-sfc@3.5.11)(vue@3.5.11(typescript@5.6.2)) '@types/markdown-it': - specifier: ^12.2.3 - version: 12.2.3 + specifier: ^13.0.9 + version: 13.0.9 '@types/markdown-it-emoji': specifier: ^2.0.2 - version: 2.0.2 + version: 2.0.5 '@types/markdown-it-link-attributes': - specifier: ^3.0.1 - version: 3.0.1 + specifier: ^3.0.5 + version: 3.0.5 '@types/sanitize-html': specifier: ^2.11.0 version: 2.11.0 '@vitejs/plugin-vue': - specifier: ^5.0.4 - version: 5.0.4(vite@5.2.12(@types/node@18.16.16)(sass@1.64.1)(terser@5.16.1))(vue@3.4.21(typescript@5.5.2)) - '@vue/test-utils': - specifier: ^2.4.3 - version: 2.4.3(@vue/server-renderer@3.4.21(vue@3.4.21(typescript@5.5.2)))(vue@3.4.21(typescript@5.5.2)) - '@vue/tsconfig': - specifier: ^0.5.1 - version: 0.5.1 + specifier: ^5.1.4 + version: 5.1.4(vite@5.4.8(@types/node@18.16.16)(sass@1.64.1)(terser@5.16.1))(vue@3.5.11(typescript@5.6.2)) + '@vitest/coverage-v8': + specifier: catalog:frontend + version: 2.1.2(vitest@2.1.2(@types/node@18.16.16)(jsdom@23.0.1)(sass@1.64.1)(terser@5.16.1)) autoprefixer: specifier: ^10.4.19 version: 10.4.19(postcss@8.4.38) - core-js: - specifier: ^3.31.0 - version: 3.31.0 - jsdom: - specifier: ^23.0.1 - version: 23.0.1 postcss: specifier: ^8.4.38 version: 8.4.38 sass: specifier: ^1.64.1 version: 1.64.1 - sass-loader: - specifier: ^13.3.2 - version: 13.3.2(sass@1.64.1)(webpack@5.75.0) tailwindcss: specifier: ^3.4.3 - version: 3.4.3 + version: 3.4.3(ts-node@10.9.2(@types/node@18.16.16)(typescript@5.6.2)) + unplugin-icons: + specifier: ^0.19.0 + version: 0.19.0(@vue/compiler-sfc@3.5.11) + unplugin-vue-components: + specifier: ^0.27.2 + version: 0.27.3(@babel/parser@7.25.6)(rollup@4.24.0)(vue@3.5.11(typescript@5.6.2)) + vite: + specifier: catalog:frontend + version: 5.4.8(@types/node@18.16.16)(sass@1.64.1)(terser@5.16.1) + vitest: + specifier: catalog:frontend + version: 2.1.2(@types/node@18.16.16)(jsdom@23.0.1)(sass@1.64.1)(terser@5.16.1) + vitest-mock-extended: + specifier: catalog:frontend + version: 2.0.2(typescript@5.6.2)(vitest@2.1.2(@types/node@18.16.16)(jsdom@23.0.1)(sass@1.64.1)(terser@5.16.1)) + vue-tsc: + specifier: ^2.1.6 + version: 2.1.6(typescript@5.6.2) packages/editor-ui: dependencies: @@ -1134,7 +1323,7 @@ importers: version: 5.15.4 '@fortawesome/vue-fontawesome': specifier: '*' - version: 3.0.3(@fortawesome/fontawesome-svg-core@1.2.36)(vue@3.4.21(typescript@5.5.2)) + version: 3.0.3(@fortawesome/fontawesome-svg-core@1.2.36)(vue@3.5.11(typescript@5.6.2)) '@jsplumb/browser-ui': specifier: ^5.13.2 version: 5.13.2 @@ -1153,6 +1342,9 @@ importers: '@lezer/common': specifier: ^1.0.4 version: 1.1.0 + '@n8n/api-types': + specifier: workspace:* + version: link:../@n8n/api-types '@n8n/chat': specifier: workspace:* version: link:../@n8n/chat @@ -1165,30 +1357,39 @@ importers: '@n8n/permissions': specifier: workspace:* version: link:../@n8n/permissions + '@sentry/vue': + specifier: catalog:frontend + version: 8.33.1(vue@3.5.11(typescript@5.6.2)) '@vue-flow/background': specifier: ^1.3.0 - version: 1.3.0(@vue-flow/core@1.33.5(vue@3.4.21(typescript@5.5.2)))(vue@3.4.21(typescript@5.5.2)) + version: 1.3.0(@vue-flow/core@1.41.2(vue@3.5.11(typescript@5.6.2)))(vue@3.5.11(typescript@5.6.2)) '@vue-flow/controls': - specifier: ^1.1.1 - version: 1.1.1(@vue-flow/core@1.33.5(vue@3.4.21(typescript@5.5.2)))(vue@3.4.21(typescript@5.5.2)) + specifier: ^1.1.2 + version: 1.1.2(@vue-flow/core@1.41.2(vue@3.5.11(typescript@5.6.2)))(vue@3.5.11(typescript@5.6.2)) '@vue-flow/core': - specifier: ^1.33.5 - version: 1.33.5(vue@3.4.21(typescript@5.5.2)) + specifier: ^1.41.2 + version: 1.41.2(vue@3.5.11(typescript@5.6.2)) '@vue-flow/minimap': + specifier: ^1.5.0 + version: 1.5.0(@vue-flow/core@1.41.2(vue@3.5.11(typescript@5.6.2)))(vue@3.5.11(typescript@5.6.2)) + '@vue-flow/node-resizer': specifier: ^1.4.0 - version: 1.4.0(@vue-flow/core@1.33.5(vue@3.4.21(typescript@5.5.2)))(vue@3.4.21(typescript@5.5.2)) - '@vue-flow/node-toolbar': - specifier: ^1.1.0 - version: 1.1.0(@vue-flow/core@1.33.5(vue@3.4.21(typescript@5.5.2))) + version: 1.4.0(@vue-flow/core@1.41.2(vue@3.5.11(typescript@5.6.2)))(vue@3.5.11(typescript@5.6.2)) '@vueuse/components': - specifier: ^10.5.0 - version: 10.5.0(vue@3.4.21(typescript@5.5.2)) + specifier: ^10.11.0 + version: 10.11.0(vue@3.5.11(typescript@5.6.2)) '@vueuse/core': - specifier: ^10.5.0 - version: 10.5.0(vue@3.4.21(typescript@5.5.2)) + specifier: ^10.11.0 + version: 10.11.0(vue@3.5.11(typescript@5.6.2)) axios: - specifier: 1.6.7 - version: 1.6.7(debug@3.2.7) + specifier: 'catalog:' + version: 1.7.4 + bowser: + specifier: 2.11.0 + version: 2.11.0 + change-case: + specifier: ^5.4.4 + version: 5.4.4 chart.js: specifier: ^4.4.0 version: 4.4.0 @@ -1213,6 +1414,9 @@ importers: flatted: specifier: ^3.2.4 version: 3.2.7 + highlight.js: + specifier: catalog:frontend + version: 11.9.0 humanize-duration: specifier: ^3.27.2 version: 3.27.3 @@ -1223,8 +1427,8 @@ importers: specifier: ^4.17.21 version: 4.17.21 luxon: - specifier: ^3.3.0 - version: 3.3.0 + specifier: 'catalog:' + version: 3.4.4 n8n-design-system: specifier: workspace:* version: link:../design-system @@ -1232,14 +1436,14 @@ importers: specifier: workspace:* version: link:../workflow pinia: - specifier: ^2.1.6 - version: 2.1.6(typescript@5.5.2)(vue@3.4.21(typescript@5.5.2)) + specifier: ^2.2.4 + version: 2.2.4(typescript@5.6.2)(vue@3.5.11(typescript@5.6.2)) prettier: - specifier: ^3.2.5 - version: 3.2.5 + specifier: ^3.3.3 + version: 3.3.3 qrcode.vue: specifier: ^3.3.4 - version: 3.3.4(vue@3.4.21(typescript@5.5.2)) + version: 3.3.4(vue@3.5.11(typescript@5.6.2)) stream-browserify: specifier: ^3.0.0 version: 3.0.0 @@ -1247,48 +1451,51 @@ importers: specifier: ^4.0.2 version: 4.0.2 uuid: - specifier: ^8.3.2 - version: 8.3.2 + specifier: 'catalog:' + version: 10.0.0 v3-infinite-loading: specifier: ^1.2.2 version: 1.2.2 vue: - specifier: ^3.4.21 - version: 3.4.21(typescript@5.5.2) + specifier: catalog:frontend + version: 3.5.11(typescript@5.6.2) vue-agile: specifier: ^2.0.0 version: 2.0.0 vue-chartjs: specifier: ^5.2.0 - version: 5.2.0(chart.js@4.4.0)(vue@3.4.21(typescript@5.5.2)) + version: 5.2.0(chart.js@4.4.0)(vue@3.5.11(typescript@5.6.2)) vue-i18n: specifier: ^9.2.2 - version: 9.2.2(vue@3.4.21(typescript@5.5.2)) + version: 9.2.2(vue@3.5.11(typescript@5.6.2)) vue-json-pretty: specifier: 2.2.4 - version: 2.2.4(vue@3.4.21(typescript@5.5.2)) + version: 2.2.4(vue@3.5.11(typescript@5.6.2)) vue-markdown-render: - specifier: ^2.0.1 - version: 2.0.1(typescript@5.5.2) + specifier: catalog:frontend + version: 2.2.1(vue@3.5.11(typescript@5.6.2)) vue-router: - specifier: ^4.2.2 - version: 4.2.2(vue@3.4.21(typescript@5.5.2)) + specifier: catalog:frontend + version: 4.4.5(vue@3.5.11(typescript@5.6.2)) vue3-touch-events: specifier: ^4.1.3 version: 4.1.3 xss: - specifier: ^1.0.14 - version: 1.0.14 + specifier: 'catalog:' + version: 1.0.15 devDependencies: '@faker-js/faker': specifier: ^8.0.2 version: 8.0.2 + '@iconify/json': + specifier: ^2.2.228 + version: 2.2.230 '@pinia/testing': - specifier: ^0.1.3 - version: 0.1.3(pinia@2.1.6(typescript@5.5.2)(vue@3.4.21(typescript@5.5.2)))(vue@3.4.21(typescript@5.5.2)) + specifier: ^0.1.6 + version: 0.1.6(pinia@2.2.4(typescript@5.6.2)(vue@3.5.11(typescript@5.6.2)))(vue@3.5.11(typescript@5.6.2)) '@sentry/vite-plugin': - specifier: ^2.5.0 - version: 2.5.0(encoding@0.1.13) + specifier: ^2.22.5 + version: 2.22.5(encoding@0.1.13) '@types/dateformat': specifier: ^3.0.0 version: 3.0.1 @@ -1308,8 +1515,11 @@ importers: specifier: ^3.2.0 version: 3.2.0 '@types/uuid': - specifier: ^8.3.2 - version: 8.3.4 + specifier: 'catalog:' + version: 10.0.0 + '@vitest/coverage-v8': + specifier: catalog:frontend + version: 2.1.2(vitest@2.1.2(@types/node@18.16.16)(jsdom@23.0.1)(sass@1.64.1)(terser@5.16.1)) cross-env: specifier: ^7.0.3 version: 7.0.3 @@ -1317,8 +1527,23 @@ importers: specifier: ^0.1.48 version: 0.1.48 unplugin-icons: - specifier: ^0.17.0 - version: 0.17.4(@vue/compiler-sfc@3.4.21)(vue-template-compiler@2.7.14) + specifier: ^0.19.0 + version: 0.19.0(@vue/compiler-sfc@3.5.11) + unplugin-vue-components: + specifier: ^0.27.2 + version: 0.27.3(@babel/parser@7.25.6)(rollup@4.24.0)(vue@3.5.11(typescript@5.6.2)) + vite: + specifier: catalog:frontend + version: 5.4.8(@types/node@18.16.16)(sass@1.64.1)(terser@5.16.1) + vitest: + specifier: catalog:frontend + version: 2.1.2(@types/node@18.16.16)(jsdom@23.0.1)(sass@1.64.1)(terser@5.16.1) + vitest-mock-extended: + specifier: catalog:frontend + version: 2.0.2(typescript@5.6.2)(vitest@2.1.2(@types/node@18.16.16)(jsdom@23.0.1)(sass@1.64.1)(terser@5.16.1)) + vue-tsc: + specifier: ^2.1.6 + version: 2.1.6(typescript@5.6.2) packages/node-dev: dependencies: @@ -1329,7 +1554,7 @@ importers: specifier: ^4.1.1 version: 4.1.2 fast-glob: - specifier: ^3.2.5 + specifier: 'catalog:' version: 3.2.12 inquirer: specifier: ^7.0.1 @@ -1347,7 +1572,7 @@ importers: specifier: ^3.0.3 version: 3.0.3 typedi: - specifier: ^0.10.0 + specifier: 'catalog:' version: 0.10.0(patch_hash=sk6omkefrosihg7lmqbzh7vfxe) devDependencies: '@types/inquirer': @@ -1356,15 +1581,24 @@ importers: packages/nodes-base: dependencies: + '@aws-sdk/client-sso-oidc': + specifier: 3.666.0 + version: 3.666.0(@aws-sdk/client-sts@3.666.0) '@kafkajs/confluent-schema-registry': specifier: 1.0.6 version: 1.0.6 + '@n8n/config': + specifier: workspace:* + version: link:../@n8n/config '@n8n/imap': specifier: workspace:* version: link:../@n8n/imap '@n8n/vm2': - specifier: 3.9.20 - version: 3.9.20 + specifier: 3.9.25 + version: 3.9.25 + alasql: + specifier: 4.4.0 + version: 4.4.0(encoding@0.1.13) amqplib: specifier: 0.10.3 version: 0.10.3 @@ -1372,7 +1606,7 @@ importers: specifier: 1.11.0 version: 1.11.0 basic-auth: - specifier: 2.0.1 + specifier: 'catalog:' version: 2.0.1 change-case: specifier: 4.1.2 @@ -1381,11 +1615,11 @@ importers: specifier: 1.0.0-rc.6 version: 1.0.0-rc.6 chokidar: - specifier: 3.5.2 - version: 3.5.2 + specifier: ^4.0.1 + version: 4.0.1 cron: - specifier: 1.7.2 - version: 1.7.2 + specifier: 3.1.7 + version: 3.1.7 csv-parse: specifier: 5.5.0 version: 5.5.0 @@ -1396,7 +1630,7 @@ importers: specifier: 2.0.2 version: 2.0.2 fast-glob: - specifier: 3.2.12 + specifier: 'catalog:' version: 3.2.12 fflate: specifier: 0.7.4 @@ -1435,14 +1669,14 @@ importers: specifier: 4.2.6 version: 4.2.6 lodash: - specifier: 4.17.21 + specifier: 'catalog:' version: 4.17.21 lossless-json: specifier: 1.0.5 version: 1.0.5 luxon: - specifier: 3.3.0 - version: 3.3.0 + specifier: 'catalog:' + version: 3.4.4 mailparser: specifier: 3.6.7 version: 3.6.7 @@ -1454,7 +1688,7 @@ importers: version: 0.5.37 mongodb: specifier: 6.3.0 - version: 6.3.0(gcp-metadata@5.2.0(encoding@0.1.13))(socks@2.7.1) + version: 6.3.0(@aws-sdk/credential-providers@3.666.0(@aws-sdk/client-sso-oidc@3.666.0(@aws-sdk/client-sts@3.666.0)))(gcp-metadata@5.3.0(encoding@0.1.13))(socks@2.7.1) mqtt: specifier: 5.7.2 version: 5.7.2 @@ -1462,20 +1696,17 @@ importers: specifier: 10.0.2 version: 10.0.2 mysql2: - specifier: 3.10.0 - version: 3.10.0 + specifier: 3.11.0 + version: 3.11.0 n8n-workflow: specifier: workspace:* version: link:../workflow - nanoid: - specifier: 3.3.6 - version: 3.3.6 node-html-markdown: specifier: 1.2.0 version: 1.2.0 node-ssh: - specifier: 12.0.5 - version: 12.0.5 + specifier: 13.2.0 + version: 13.2.0 nodemailer: specifier: 6.9.9 version: 6.9.9 @@ -1486,14 +1717,11 @@ importers: specifier: 2.16.105 version: 2.16.105 pg: - specifier: 8.11.3 - version: 8.11.3 + specifier: 8.12.0 + version: 8.12.0 pg-promise: - specifier: 10.15.4 - version: 10.15.4 - pretty-bytes: - specifier: 5.6.0 - version: 5.6.0 + specifier: 11.9.1 + version: 11.9.1 promise-ftp: specifier: 1.3.5 version: 1.3.5(promise-ftp-common@1.1.5) @@ -1510,7 +1738,7 @@ importers: specifier: 1.0.24 version: 1.0.24 rrule: - specifier: ^2.8.1 + specifier: 2.8.1 version: 2.8.1 rss-parser: specifier: 3.13.0 @@ -1525,8 +1753,8 @@ importers: specifier: 3.17.0 version: 3.17.0 snowflake-sdk: - specifier: 1.9.2 - version: 1.9.2(asn1.js@5.4.1)(encoding@0.1.13) + specifier: 1.12.0 + version: 1.12.0(asn1.js@5.4.1)(encoding@0.1.13) ssh2-sftp-client: specifier: 7.2.3 version: 7.2.3 @@ -1534,19 +1762,19 @@ importers: specifier: 3.0.3 version: 3.0.3 ts-ics: - specifier: ^1.2.2 + specifier: 1.2.2 version: 1.2.2(date-fns@2.30.0)(lodash@4.17.21)(zod@3.23.8) typedi: - specifier: 0.10.0 + specifier: 'catalog:' version: 0.10.0(patch_hash=sk6omkefrosihg7lmqbzh7vfxe) uuid: - specifier: 8.3.2 - version: 8.3.2 + specifier: 'catalog:' + version: 10.0.0 xlsx: specifier: https://cdn.sheetjs.com/xlsx-0.20.2/xlsx-0.20.2.tgz version: https://cdn.sheetjs.com/xlsx-0.20.2/xlsx-0.20.2.tgz xml2js: - specifier: 0.6.2 + specifier: 'catalog:' version: 0.6.2 devDependencies: '@types/amqplib': @@ -1556,19 +1784,16 @@ importers: specifier: ^1.5.1 version: 1.11.2 '@types/basic-auth': - specifier: ^1.1.3 + specifier: 'catalog:' version: 1.1.3 '@types/cheerio': specifier: ^0.22.15 version: 0.22.31 - '@types/cron': - specifier: ~1.7.1 - version: 1.7.3 '@types/eventsource': specifier: ^1.1.2 version: 1.1.9 '@types/express': - specifier: ^4.17.21 + specifier: 'catalog:' version: 4.17.21 '@types/gm': specifier: ^1.25.0 @@ -1583,7 +1808,7 @@ importers: specifier: ^9.0.6 version: 9.0.6 '@types/lodash': - specifier: ^4.14.195 + specifier: 'catalog:' version: 4.14.195 '@types/lossless-json': specifier: ^1.0.0 @@ -1597,9 +1822,6 @@ importers: '@types/mssql': specifier: ^9.1.5 version: 9.1.5 - '@types/node-ssh': - specifier: ^7.0.1 - version: 7.0.1 '@types/nodemailer': specifier: ^6.4.14 version: 6.4.14 @@ -1613,23 +1835,20 @@ importers: specifier: ^1.9.4 version: 1.9.4 '@types/snowflake-sdk': - specifier: ^1.6.20 - version: 1.6.20 + specifier: ^1.6.24 + version: 1.6.24 '@types/ssh2-sftp-client': specifier: ^5.1.0 version: 5.3.2 - '@types/tmp': - specifier: ^0.2.0 - version: 0.2.3 '@types/uuid': - specifier: ^8.3.2 - version: 8.3.4 + specifier: 'catalog:' + version: 10.0.0 '@types/xml2js': - specifier: ^0.4.14 + specifier: 'catalog:' version: 0.4.14 eslint-plugin-n8n-nodes-base: - specifier: ^1.16.0 - version: 1.16.0(eslint@8.57.0)(typescript@5.5.2) + specifier: ^1.16.3 + version: 1.16.3(eslint@8.57.0)(typescript@5.6.2) n8n-core: specifier: workspace:* version: link:../core @@ -1637,8 +1856,8 @@ importers: packages/workflow: dependencies: '@n8n/tournament': - specifier: 1.0.2 - version: 1.0.2 + specifier: 1.0.5 + version: 1.0.5 '@n8n_io/riot-tmpl': specifier: 4.0.0 version: 4.0.0 @@ -1646,8 +1865,8 @@ importers: specifier: 0.15.2 version: 0.15.2 axios: - specifier: 1.6.7 - version: 1.6.7(debug@3.2.7) + specifier: 'catalog:' + version: 1.7.4 callsites: specifier: 3.1.0 version: 3.1.0 @@ -1658,7 +1877,7 @@ importers: specifier: 5.8.4 version: 5.8.4 form-data: - specifier: 4.0.0 + specifier: 'catalog:' version: 4.0.0 jmespath: specifier: 0.16.0 @@ -1670,11 +1889,11 @@ importers: specifier: 3.3.1 version: 3.3.1 lodash: - specifier: 4.17.21 + specifier: 'catalog:' version: 4.17.21 luxon: - specifier: 3.3.0 - version: 3.3.0 + specifier: 'catalog:' + version: 3.4.4 md5: specifier: 2.3.0 version: 2.3.0 @@ -1688,23 +1907,23 @@ importers: specifier: 2.3.5 version: 2.3.5 xml2js: - specifier: 0.6.2 + specifier: 'catalog:' version: 0.6.2 devDependencies: '@langchain/core': - specifier: ^0.2.0 - version: 0.2.0 + specifier: 'catalog:' + version: 0.3.3(patch_hash=ekay3bw7hexufl733lypqvmx2e)(openai@4.63.0) '@types/deep-equal': specifier: ^1.0.1 version: 1.0.1 '@types/express': - specifier: ^4.17.21 + specifier: 'catalog:' version: 4.17.21 '@types/jmespath': specifier: ^0.15.0 version: 0.15.0 '@types/lodash': - specifier: ^4.14.195 + specifier: 'catalog:' version: 4.14.195 '@types/luxon': specifier: ^3.2.0 @@ -1713,7 +1932,7 @@ importers: specifier: ^2.3.5 version: 2.3.5 '@types/xml2js': - specifier: ^0.4.14 + specifier: 'catalog:' version: 0.4.14 packages: @@ -1726,275 +1945,239 @@ packages: resolution: {integrity: sha512-29lUK80d1muEQqiUsSo+3A0yP6CdspgC95EnKBMi22Xlwt79i/En4Vr67+cXhU+cZjbti3TgGGC5wy1stIywVQ==} engines: {node: '>=0.8'} - '@adobe/css-tools@4.3.2': - resolution: {integrity: sha512-DA5a1C0gD/pLOvhv33YMrbf2FK3oUzwNl9oOJqE4XVjuEtt6XIakRcsd7eLiOSPkp1kTRQGICTA8cKra/vFbjw==} + '@adobe/css-tools@4.4.0': + resolution: {integrity: sha512-Ff9+ksdQQB3rMncgqDK78uLznstjyfIf2Arnh22pW8kBpLs6rpKDwgnZT46hin5Hl1WzazzK64DOrhSwYpS7bQ==} '@alloc/quick-lru@5.2.0': resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} engines: {node: '>=10'} - '@ampproject/remapping@2.2.1': - resolution: {integrity: sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==} + '@ampproject/remapping@2.3.0': + resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} '@antfu/install-pkg@0.1.1': resolution: {integrity: sha512-LyB/8+bSfa0DFGC06zpCEfs89/XoWZwws5ygEa5D+Xsm3OfI+aXQ86VgVG7Acyef+rSZ5HE7J8rrxzrQeM3PjQ==} - '@antfu/utils@0.7.6': - resolution: {integrity: sha512-pvFiLP2BeOKA/ZOS6jxx4XhKzdVLHDhGlFEaZ2flWWYf2xOqVniqpk38I04DFRyz+L0ASggl7SkItTc+ZLju4w==} + '@antfu/install-pkg@0.3.3': + resolution: {integrity: sha512-nHHsk3NXQ6xkCfiRRC8Nfrg8pU5kkr3P3Y9s9dKqiuRmBD0Yap7fymNDjGFKeWhZQHqqbCS5CfeMy9wtExM24w==} - '@anthropic-ai/sdk@0.21.1': - resolution: {integrity: sha512-fqdt74RTdplnaFOYhwNjjK/Ec09Dqv9ekYr7PuC6GdhV1RWkziqbpJBewn42CYYqCr92JeX6g+IXVgXmq9l7XQ==} + '@antfu/utils@0.7.10': + resolution: {integrity: sha512-+562v9k4aI80m1+VuMHehNJWLOFjBnXn3tdOitzD0il5b7smkSBal4+a3oKiQTbrwMmN/TBUMDvbdoWDehgOww==} - '@apidevtools/json-schema-ref-parser@9.1.2': - resolution: {integrity: sha512-r1w81DpR+KyRWd3f+rk6TNqMgedmAxZP5v5KWlXQWlgMUUtyEJch0DKEci1SorPMiSeM8XPl7MZ3miJ60JIpQg==} + '@anthropic-ai/sdk@0.27.3': + resolution: {integrity: sha512-IjLt0gd3L4jlOfilxVXTifn42FnVffMgDC04RJK1KDZpmkBWLv0XC92MVVmkxrFZNS/7l3xWgP/I3nqtX1sQHw==} + + '@apidevtools/json-schema-ref-parser@11.7.0': + resolution: {integrity: sha512-pRrmXMCwnmrkS3MLgAIW5dXRzeTv6GLjkjb4HmxNnvAKXN1Nfzp4KmGADBQvlVUcqi+a5D+hfGDLLnd5NnYxog==} + engines: {node: '>= 16'} '@authenio/xml-encryption@2.0.2': resolution: {integrity: sha512-cTlrKttbrRHEw3W+0/I609A2Matj5JQaRvfLtEIGZvlN0RaPi+3ANsMeqAyCAVlH/lUIW2tmtBlSMni74lcXeg==} engines: {node: '>=12'} - '@aw-web-design/x-default-browser@1.4.126': - resolution: {integrity: sha512-Xk1sIhyNC/esHGGVjL/niHLowM0csl/kFO5uawBy4IrWwy0o1G8LGt3jP6nmWGz+USxeeqbihAmp/oVZju6wug==} - hasBin: true - '@aws-crypto/crc32@3.0.0': resolution: {integrity: sha512-IzSgsrxUcsrejQbPVilIKy16kAT52EwB6zSaI+M3xxIhKh5+aldEyvI+z6erM7TCLB2BJsFrtHjp6/4/sr+3dA==} - '@aws-crypto/crc32c@3.0.0': - resolution: {integrity: sha512-ENNPPManmnVJ4BTXlOjAgD7URidbAznURqD0KvfREyc4o20DPYdEldU1f5cQ7Jbj0CJJSPaMIk/9ZshdB3210w==} + '@aws-crypto/crc32@5.2.0': + resolution: {integrity: sha512-nLbCWqQNgUiwwtFsen1AdzAtvuLRsQS8rYgMuxCrdKf9kOssamGLuPwyTY9wyYblNr9+1XM8v6zoDTPPSIeANg==} + engines: {node: '>=16.0.0'} - '@aws-crypto/ie11-detection@3.0.0': - resolution: {integrity: sha512-341lBBkiY1DfDNKai/wXM3aujNBkXR7tq1URPQDL9wi3AUbI80NR74uF1TXHMm7po1AcnFk8iu2S2IeU/+/A+Q==} + '@aws-crypto/crc32c@5.2.0': + resolution: {integrity: sha512-+iWb8qaHLYKrNvGRbiYRHSdKRWhto5XlZUEBwDjYNf+ly5SVYG6zEoYIdxvf5R3zyeP16w4PLBn3rH1xc74Rag==} - '@aws-crypto/sha1-browser@3.0.0': - resolution: {integrity: sha512-NJth5c997GLHs6nOYTzFKTbYdMNA6/1XlKVgnZoaZcQ7z7UJlOgj2JdbHE8tiYLS3fzXNCguct77SPGat2raSw==} + '@aws-crypto/sha1-browser@5.2.0': + resolution: {integrity: sha512-OH6lveCFfcDjX4dbAvCFSYUjJZjDr/3XJ3xHtjn3Oj5b9RjojQo8npoLeA/bNwkOkrSQ0wgrHzXk4tDRxGKJeg==} - '@aws-crypto/sha256-browser@3.0.0': - resolution: {integrity: sha512-8VLmW2B+gjFbU5uMeqtQM6Nj0/F1bro80xQXCW6CQBWgosFWXTx77aeOF5CAIAmbOK64SdMBJdNr6J41yP5mvQ==} + '@aws-crypto/sha256-browser@5.2.0': + resolution: {integrity: sha512-AXfN/lGotSQwu6HNcEsIASo7kWXZ5HYWvfOmSNKDsEqC4OashTp8alTmaz+F7TC2L083SFv5RdB+qU3Vs1kZqw==} - '@aws-crypto/sha256-js@3.0.0': - resolution: {integrity: sha512-PnNN7os0+yd1XvXAy23CFOmTbMaDxgxXtTKHybrJ39Y8kGzBATgBFibWJKH6BhytLI/Zyszs87xCOBNyBig6vQ==} + '@aws-crypto/sha256-js@5.2.0': + resolution: {integrity: sha512-FFQQyu7edu4ufvIZ+OadFpHHOt+eSTBaYaki44c+akjg7qZg9oOQeLlk77F6tSYqjDAFClrHJk9tMf0HdVyOvA==} + engines: {node: '>=16.0.0'} - '@aws-crypto/supports-web-crypto@3.0.0': - resolution: {integrity: sha512-06hBdMwUAb2WFTuGG73LSC0wfPu93xWwo5vL2et9eymgmu3Id5vFAHBbajVWiGhPO37qcsdCap/FqXvJGJWPIg==} + '@aws-crypto/supports-web-crypto@5.2.0': + resolution: {integrity: sha512-iAvUotm021kM33eCdNfwIN//F77/IADDSs58i+MDaOqFrVjZo9bAal0NK7HurRuWLLpF1iLX7gbWrjHjeo+YFg==} '@aws-crypto/util@3.0.0': resolution: {integrity: sha512-2OJlpeJpCR48CC8r+uKVChzs9Iungj9wkZrl8Z041DWEWvyIHILYKCPNzJghKsivj+S3mLo6BVc7mBNzdxA46w==} - '@aws-sdk/client-bedrock-runtime@3.535.0': - resolution: {integrity: sha512-Yq8rPB2SQol3TQa9kmjIuD9Nd5/ikCqozoV6wHvO+VViJzm+lPglZVsp7vwIMdE1ey/JokOwApowf7oAI98JwQ==} - engines: {node: '>=14.0.0'} + '@aws-crypto/util@5.2.0': + resolution: {integrity: sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ==} - '@aws-sdk/client-s3@3.478.0': - resolution: {integrity: sha512-OUpbCCnK71lQQ07BohJOx9ZER0rPqRAGOVIIVhNEkeN0uYFLzB7/o5a7+FEPUQXEd5rZRZgbxN5xEmnNW/0Waw==} - engines: {node: '>=14.0.0'} + '@aws-sdk/client-bedrock-agent-runtime@3.666.0': + resolution: {integrity: sha512-qyxA3HBEaMjopmRLHPkf6vX8vRWj0TqIyRH7uwgYN+mQJ+1+X45ulIuYFTMTpE23jgc4n4P6WytRmj8bLSZR/Q==} + engines: {node: '>=16.0.0'} - '@aws-sdk/client-sso-oidc@3.535.0': - resolution: {integrity: sha512-M2cG4EQXDpAJQyq33ORIr6abmdX9p9zX0ssVy8XwFNB7lrgoIKxuVoGL+fX+XMgecl24x7ELz6b4QlILOevbCw==} - engines: {node: '>=14.0.0'} + '@aws-sdk/client-bedrock-runtime@3.666.0': + resolution: {integrity: sha512-FgMenX1pf50yKohte1GyatifyDEPWGv+39XMcI3/OSvR17eKZ82WxSArHcrRrSSpYiNmy/io7dM5jouQDDMk2A==} + engines: {node: '>=16.0.0'} + + '@aws-sdk/client-cognito-identity@3.666.0': + resolution: {integrity: sha512-TirQ6hJksC6M2Cwi7rIZS2tP4s3OHDdU4Md/mksMkLT9lkzT8sNLU0DwVO5FlWcwtKmC3gLbIDa+Hqe5CpRDNA==} + engines: {node: '>=16.0.0'} + + '@aws-sdk/client-kendra@3.666.0': + resolution: {integrity: sha512-DW5cGIGAoZwMXZCrKPPBrAsENZTcuIUekUB53hqnJBcO7gXBIK298ddvg/XfaF8GtWQBzlLUDUeXlFmizqOUkg==} + engines: {node: '>=16.0.0'} + + '@aws-sdk/client-s3@3.666.0': + resolution: {integrity: sha512-gDBvsm5JlocQH7W6MROWpt80UdlBNENofXaQeVnhEanJXr7K13jtPFC0XwlzPYuoXr8NnNZKA/kLKGjsCVoayQ==} + engines: {node: '>=16.0.0'} + + '@aws-sdk/client-sagemaker@3.666.0': + resolution: {integrity: sha512-m7liz0sVMv08HIM66thhlqOfiIWn233izfDgXyJCA+A77NU9wUcIBHwxp6DdhSVLY/n0mE69Mq1XgyRFr/4udg==} + engines: {node: '>=16.0.0'} + + '@aws-sdk/client-sso-oidc@3.666.0': + resolution: {integrity: sha512-mW//v5EvHMU2SulW1FqmjJJPDNhzySRb/YUU+jq9AFDIYUdjF6j6wM+iavCW/4gLqOct0RT7B62z8jqyHkUCEQ==} + engines: {node: '>=16.0.0'} peerDependencies: - '@aws-sdk/credential-provider-node': ^3.535.0 + '@aws-sdk/client-sts': ^3.666.0 - '@aws-sdk/client-sso@3.478.0': - resolution: {integrity: sha512-Jxy9cE1JMkPR0PklCpq3cORHnZq/Z4klhSTNGgZNeBWovMa+plor52kyh8iUNHKl3XEJvTbHM7V+dvrr/x0P1g==} - engines: {node: '>=14.0.0'} + '@aws-sdk/client-sso@3.666.0': + resolution: {integrity: sha512-+h5Xk64dM4on1MwjTYxlwtI8ilytU7zjTVRzMAYOysmH71Bc8YsLOfonFHvzhF/AXpKJu3f1BhM65S0tasPcrw==} + engines: {node: '>=16.0.0'} - '@aws-sdk/client-sso@3.535.0': - resolution: {integrity: sha512-h9eQRdFnjDRVBnPJIKXuX7D+isSAioIfZPC4PQwsL5BscTRlk4c90DX0R0uk64YUtp7LZu8TNtrosFZ/1HtTrQ==} - engines: {node: '>=14.0.0'} + '@aws-sdk/client-sts@3.666.0': + resolution: {integrity: sha512-tw8yxcxvaj0d/A4YJXIh3mISzsQe8rThIVKvpyhEdl1lEoz81skCccX5u3gHajciSdga/V0DxhBbsO+eE1bZkw==} + engines: {node: '>=16.0.0'} - '@aws-sdk/client-sts@3.478.0': - resolution: {integrity: sha512-D+QID0dYzmn9dcxgKP3/nMndUqiQbDLsqI0Zf2pG4MW5gPhVNKlDGIV3Ztz8SkMjzGJExNOLW2L569o8jshJVw==} - engines: {node: '>=14.0.0'} + '@aws-sdk/core@3.666.0': + resolution: {integrity: sha512-jxNjs0sAVX+CWwoa4kHUENLHuBwjT1EILBoctmQoiIb1v5KpKwZnSByHTpvUkFmbuwWQPEnJkJCqzIHjEmjisA==} + engines: {node: '>=16.0.0'} - '@aws-sdk/client-sts@3.535.0': - resolution: {integrity: sha512-ii9OOm3TJwP3JmO1IVJXKWIShVKPl0VtdlgROc/SkDglO/kuAw9eDdlROgc+qbFl+gm6bBTguOVTUXt3tS3flw==} - engines: {node: '>=14.0.0'} + '@aws-sdk/credential-provider-cognito-identity@3.666.0': + resolution: {integrity: sha512-JkqJPSqN5XLEicW4gRtd5DTyg0xD0yIvc7+gWXGJq0crNM8IJB9lbG+q3xBkXSbmcrHQyuD74F+ZGjLxmTQBEQ==} + engines: {node: '>=16.0.0'} + + '@aws-sdk/credential-provider-env@3.664.0': + resolution: {integrity: sha512-95rE+9Voaco0nmKJrXqfJAxSSkSWqlBy76zomiZrUrv7YuijQtHCW8jte6v6UHAFAaBzgFsY7QqBxs15u9SM7g==} + engines: {node: '>=16.0.0'} + + '@aws-sdk/credential-provider-http@3.666.0': + resolution: {integrity: sha512-j1Cob+tYmJ/m9agSsFPdAhLfILBqZzolF17XJvmEzQC2edltQ6NR0Wd09GQvtiAFZy7gn1l40bKuxX6Tq5U6XQ==} + engines: {node: '>=16.0.0'} + + '@aws-sdk/credential-provider-ini@3.666.0': + resolution: {integrity: sha512-u09aUZJQNK8zVAKJKEOQ2mLsv39YxR20US00/WAPNW9sMWWhl4raT97tsalOUc6ZTHOEqHHmEVZXuscINnkaww==} + engines: {node: '>=16.0.0'} peerDependencies: - '@aws-sdk/credential-provider-node': ^3.535.0 + '@aws-sdk/client-sts': ^3.666.0 - '@aws-sdk/core@3.477.0': - resolution: {integrity: sha512-o0434EH+d1BxHZvgG7z8vph2SYefciQ5RnJw2MgvETGnthgqsnI4nnNJLSw0FVeqCeS18n6vRtzqlGYR2YPCNg==} - engines: {node: '>=14.0.0'} + '@aws-sdk/credential-provider-node@3.666.0': + resolution: {integrity: sha512-C43L9kxAb2lvIZ+eKVuyX9xYrkpg+Zyq0fLasK1wekC6M/Qj/uqE1KFz9ddDE8Dv1HwiE+UZk5psM0KatQpPGQ==} + engines: {node: '>=16.0.0'} - '@aws-sdk/core@3.535.0': - resolution: {integrity: sha512-+Yusa9HziuaEDta1UaLEtMAtmgvxdxhPn7jgfRY6PplqAqgsfa5FR83sxy5qr2q7xjQTwHtV4MjQVuOjG9JsLw==} - engines: {node: '>=14.0.0'} + '@aws-sdk/credential-provider-process@3.664.0': + resolution: {integrity: sha512-sQicIw/qWTsmMw8EUQNJXdrWV5SXaZc2zGdCQsQxhR6wwNO2/rZ5JmzdcwUADmleBVyPYk3KGLhcofF/qXT2Ng==} + engines: {node: '>=16.0.0'} - '@aws-sdk/credential-provider-env@3.468.0': - resolution: {integrity: sha512-k/1WHd3KZn0EQYjadooj53FC0z24/e4dUZhbSKTULgmxyO62pwh9v3Brvw4WRa/8o2wTffU/jo54tf4vGuP/ZA==} - engines: {node: '>=14.0.0'} + '@aws-sdk/credential-provider-sso@3.666.0': + resolution: {integrity: sha512-aaa5Ig8hI7lSh1CSQP0oaLvjylz6+3mKUgdvw69zv0MdX3TUZiQRDCsfqK0P3VNsj/QSvBytSjuNDuSaYcACJg==} + engines: {node: '>=16.0.0'} - '@aws-sdk/credential-provider-env@3.535.0': - resolution: {integrity: sha512-XppwO8c0GCGSAvdzyJOhbtktSEaShg14VJKg8mpMa1XcgqzmcqqHQjtDWbx5rZheY1VdpXZhpEzJkB6LpQejpA==} - engines: {node: '>=14.0.0'} + '@aws-sdk/credential-provider-web-identity@3.664.0': + resolution: {integrity: sha512-10ltP1BfSKRJVXd8Yr5oLbo+VSDskWbps0X3szSsxTk0Dju1xvkz7hoIjylWLvtGbvQ+yb2pmsJYKCudW/4DJg==} + engines: {node: '>=16.0.0'} + peerDependencies: + '@aws-sdk/client-sts': ^3.664.0 - '@aws-sdk/credential-provider-http@3.535.0': - resolution: {integrity: sha512-kdj1wCmOMZ29jSlUskRqN04S6fJ4dvt0Nq9Z32SA6wO7UG8ht6Ot9h/au/eTWJM3E1somZ7D771oK7dQt9b8yw==} - engines: {node: '>=14.0.0'} + '@aws-sdk/credential-providers@3.666.0': + resolution: {integrity: sha512-BtkxznPF8a8vUCEiTasHhLUjsgkm7Sc0mxZeOY+NtGMfQaJxx/q/tj5bFmtMNmdcbiEcxUV6bybb6qdN1PM/jg==} + engines: {node: '>=16.0.0'} - '@aws-sdk/credential-provider-ini@3.478.0': - resolution: {integrity: sha512-SsrYEYUvTG9ZoPC+zB19AnVoOKID+QIEHJDIi1GCZXW5kTVyr1saTVm4orG2TjYvbHQMddsWtHOvGYXZWAYMbw==} - engines: {node: '>=14.0.0'} + '@aws-sdk/middleware-bucket-endpoint@3.664.0': + resolution: {integrity: sha512-KP+foxGaAclhRI63ElZPvVeG5oajkbNhE7wiW34UoSw8wI2l+lmm36zkiebfP4K5HRyADS+KvGw95851N++s2A==} + engines: {node: '>=16.0.0'} - '@aws-sdk/credential-provider-ini@3.535.0': - resolution: {integrity: sha512-bm3XOYlyCjtAb8eeHXLrxqRxYVRw2Iqv9IufdJb4gM13TbNSYniUT1WKaHxGIZ5p+FuNlXVhvk1OpHFM13+gXA==} - engines: {node: '>=14.0.0'} + '@aws-sdk/middleware-expect-continue@3.664.0': + resolution: {integrity: sha512-7hvF+HQhDFvBCzxWFmFOa6tWkVjRAaTR/Ltt03TAZ6JzfIayqnqKFvmdvYFfIeD2w3x4gx24zooRillFk4e3mQ==} + engines: {node: '>=16.0.0'} - '@aws-sdk/credential-provider-node@3.478.0': - resolution: {integrity: sha512-nwDutJYeHiIZCQDgKIUrsgwAWTil0mNe+cbd+j8fi+wwxkWUzip+F0+z02molJ8WrUUKNRhqB1V5aVx7IranuA==} - engines: {node: '>=14.0.0'} + '@aws-sdk/middleware-flexible-checksums@3.666.0': + resolution: {integrity: sha512-jDbItXr60OsZwgRNhRMbomf9TitQ3nomV6WR3WZ7wHc8fFcwV67+OnoV1rv091HsC4qYuqp8i1YKecJuuiefrQ==} + engines: {node: '>=16.0.0'} - '@aws-sdk/credential-provider-node@3.535.0': - resolution: {integrity: sha512-6JXp/EuL6euUkH5k4d+lQFF6gBwukrcCOWfNHCmq14mNJf/cqT3HAX1VMtWFRSK20am0IxfYQGccb0/nZykdKg==} - engines: {node: '>=14.0.0'} + '@aws-sdk/middleware-host-header@3.664.0': + resolution: {integrity: sha512-4tCXJ+DZWTq38eLmFgnEmO8X4jfWpgPbWoCyVYpRHCPHq6xbrU65gfwS9jGx25L4YdEce641ChI9TKLryuUgRA==} + engines: {node: '>=16.0.0'} - '@aws-sdk/credential-provider-process@3.468.0': - resolution: {integrity: sha512-OYSn1A/UsyPJ7Z8Q2cNhTf55O36shPmSsvOfND04nSfu1nPaR+VUvvsP7v+brhGpwC/GAKTIdGAo4blH31BS6A==} - engines: {node: '>=14.0.0'} + '@aws-sdk/middleware-location-constraint@3.664.0': + resolution: {integrity: sha512-hHMdJqq83cDnSTVhrSDsOrm1DyFtS1rteSwuqN7dGNr093bluCqH1VpnS/8juYzux8QGnzRecs9qV3hncGGxPw==} + engines: {node: '>=16.0.0'} - '@aws-sdk/credential-provider-process@3.535.0': - resolution: {integrity: sha512-9O1OaprGCnlb/kYl8RwmH7Mlg8JREZctB8r9sa1KhSsWFq/SWO0AuJTyowxD7zL5PkeS4eTvzFFHWCa3OO5epA==} - engines: {node: '>=14.0.0'} + '@aws-sdk/middleware-logger@3.664.0': + resolution: {integrity: sha512-eNykMqQuv7eg9pAcaLro44fscIe1VkFfhm+gYnlxd+PH6xqapRki1E68VHehnIptnVBdqnWfEqLUSLGm9suqhg==} + engines: {node: '>=16.0.0'} - '@aws-sdk/credential-provider-sso@3.478.0': - resolution: {integrity: sha512-LsDShG51X/q+s5ZFN7kHVqrd8ZHdyEyHqdhoocmRvvw2Dif50M0AqQfvCrW1ndj5CNzXO4x/eH8EK5ZOVlS6Sg==} - engines: {node: '>=14.0.0'} + '@aws-sdk/middleware-recursion-detection@3.664.0': + resolution: {integrity: sha512-jq27WMZhm+dY8BWZ9Ipy3eXtZj0lJzpaKQE3A3tH5AOIlUV/gqrmnJ9CdqVVef4EJsq9Yil4ZzQjKKmPsxveQg==} + engines: {node: '>=16.0.0'} - '@aws-sdk/credential-provider-sso@3.535.0': - resolution: {integrity: sha512-2Dw0YIr8ETdFpq65CC4zK8ZIEbX78rXoNRZXUGNQW3oSKfL0tj8O8ErY6kg1IdEnYbGnEQ35q6luZ5GGNKLgDg==} - engines: {node: '>=14.0.0'} + '@aws-sdk/middleware-sdk-s3@3.666.0': + resolution: {integrity: sha512-JUUCDBbt0+AQTwE9gvyn1zaN1QA+wFj5A+DO2igWuIRkR/nU5oHtsoyZY0+lL+uvZpsstmJn1Eeu04E9ourwag==} + engines: {node: '>=16.0.0'} - '@aws-sdk/credential-provider-web-identity@3.468.0': - resolution: {integrity: sha512-rexymPmXjtkwCPfhnUq3EjO1rSkf39R4Jz9CqiM7OsqK2qlT5Y/V3gnMKn0ZMXsYaQOMfM3cT5xly5R+OKDHlw==} - engines: {node: '>=14.0.0'} + '@aws-sdk/middleware-ssec@3.664.0': + resolution: {integrity: sha512-uyMnxku5ygRxr/z4pO9ul8Rgn2CoFcKCaKnfHfTgVo2yV/jKHI3rAvyD3OtOO7k4S0odaJzss2Fw6GsIKZy5AQ==} + engines: {node: '>=16.0.0'} - '@aws-sdk/credential-provider-web-identity@3.535.0': - resolution: {integrity: sha512-t2/JWrKY0H66A7JW7CqX06/DG2YkJddikt5ymdQvx/Q7dRMJ3d+o/vgjoKr7RvEx/pNruCeyM1599HCvwrVMrg==} - engines: {node: '>=14.0.0'} + '@aws-sdk/middleware-user-agent@3.666.0': + resolution: {integrity: sha512-d8XJ103SGCMsFIKEowpOaZr0W8AkLNd+3CS7W95yb6YmN7lcNGL54RtTSy3m8YJI6W2jXftPFN2oLG4K3aywVQ==} + engines: {node: '>=16.0.0'} - '@aws-sdk/middleware-bucket-endpoint@3.470.0': - resolution: {integrity: sha512-vLXXNWtsRmEIwzJ9HUQfIuTNAsEzvCv0Icsnkvt2BiBZXnmHdp2vIC3e3+kfy1D7dVQloXqMmnfcLu/BUMu2Jw==} + '@aws-sdk/node-http-handler@3.374.0': + resolution: {integrity: sha512-v1Z6m0wwkf65/tKuhwrtPRqVoOtNkDTRn2MBMtxCwEw+8V8Q+YRFqVgGN+J1n53ktE0G5OYVBux/NHiAjJHReQ==} engines: {node: '>=14.0.0'} + deprecated: This package has moved to @smithy/node-http-handler - '@aws-sdk/middleware-expect-continue@3.468.0': - resolution: {integrity: sha512-/wmLjmfgeulxhhmnxX3X3N933TvGsYckVIFjAtDSpLjqkbwzEcNiLq7AdmNJ4BfxG0MCMgcht561DCCD19x8Bg==} + '@aws-sdk/protocol-http@3.374.0': + resolution: {integrity: sha512-9WpRUbINdGroV3HiZZIBoJvL2ndoWk39OfwxWs2otxByppJZNN14bg/lvCx5e8ggHUti7IBk5rb0nqQZ4m05pg==} engines: {node: '>=14.0.0'} + deprecated: This package has moved to @smithy/protocol-http - '@aws-sdk/middleware-flexible-checksums@3.468.0': - resolution: {integrity: sha512-LQwL/N5MCj3Y5keLLewHTqeAXUIMsHFZyxDXRm/uxrOon9ufLKDvGvzAmfwn1/CuSUo66ZfT8VPSA4BsC90RtA==} - engines: {node: '>=14.0.0'} + '@aws-sdk/region-config-resolver@3.664.0': + resolution: {integrity: sha512-o/B8dg8K+9714RGYPgMxZgAChPe/MTSMkf/eHXTUFHNik5i1HgVKfac22njV2iictGy/6GhpFsKa1OWNYAkcUg==} + engines: {node: '>=16.0.0'} - '@aws-sdk/middleware-host-header@3.468.0': - resolution: {integrity: sha512-gwQ+/QhX+lhof304r6zbZ/V5l5cjhGRxLL3CjH1uJPMcOAbw9wUlMdl+ibr8UwBZ5elfKFGiB1cdW/0uMchw0w==} - engines: {node: '>=14.0.0'} + '@aws-sdk/signature-v4-multi-region@3.666.0': + resolution: {integrity: sha512-dbuJp0riLeXkyh7wWCK4Jra/kOvVoLTIq0jHeBoFMTOEvU/DAoo8KjIvHPu0TJ2nQzccW0RW40DAabUIVEQxCg==} + engines: {node: '>=16.0.0'} - '@aws-sdk/middleware-host-header@3.535.0': - resolution: {integrity: sha512-0h6TWjBWtDaYwHMQJI9ulafeS4lLaw1vIxRjbpH0svFRt6Eve+Sy8NlVhECfTU2hNz/fLubvrUxsXoThaLBIew==} + '@aws-sdk/signature-v4@3.374.0': + resolution: {integrity: sha512-2xLJvSdzcZZAg0lsDLUAuSQuihzK0dcxIK7WmfuJeF7DGKJFmp9czQmz5f3qiDz6IDQzvgK1M9vtJSVCslJbyQ==} engines: {node: '>=14.0.0'} + deprecated: This package has moved to @smithy/signature-v4 - '@aws-sdk/middleware-location-constraint@3.468.0': - resolution: {integrity: sha512-0gBX/lDynQr4YIhM9h1dVnkVWqrg+34iOCVIUq8jHxzUzgZWglGkG9lHGGg0r1xkLTmegeoo1OKH8wrQ6n33Cg==} - engines: {node: '>=14.0.0'} + '@aws-sdk/token-providers@3.664.0': + resolution: {integrity: sha512-dBAvXW2/6bAxidvKARFxyCY2uCynYBKRFN00NhS1T5ggxm3sUnuTpWw1DTjl02CVPkacBOocZf10h8pQbHSK8w==} + engines: {node: '>=16.0.0'} + peerDependencies: + '@aws-sdk/client-sso-oidc': ^3.664.0 - '@aws-sdk/middleware-logger@3.468.0': - resolution: {integrity: sha512-X5XHKV7DHRXI3f29SAhJPe/OxWRFgDWDMMCALfzhmJfCi6Jfh0M14cJKoC+nl+dk9lB+36+jKjhjETZaL2bPlA==} - engines: {node: '>=14.0.0'} + '@aws-sdk/types@3.664.0': + resolution: {integrity: sha512-+GtXktvVgpreM2b+NJL9OqZGsOzHwlCUrO8jgQUvH/yA6Kd8QO2YFhQCp0C9sSzTteZJVqGBu8E0CQurxJHPbw==} + engines: {node: '>=16.0.0'} - '@aws-sdk/middleware-logger@3.535.0': - resolution: {integrity: sha512-huNHpONOrEDrdRTvSQr1cJiRMNf0S52NDXtaPzdxiubTkP+vni2MohmZANMOai/qT0olmEVX01LhZ0ZAOgmg6A==} - engines: {node: '>=14.0.0'} + '@aws-sdk/util-arn-parser@3.568.0': + resolution: {integrity: sha512-XUKJWWo+KOB7fbnPP0+g/o5Ulku/X53t7i/h+sPHr5xxYTJJ9CYnbToo95mzxe7xWvkLrsNtJ8L+MnNn9INs2w==} + engines: {node: '>=16.0.0'} - '@aws-sdk/middleware-recursion-detection@3.468.0': - resolution: {integrity: sha512-vch9IQib2Ng9ucSyRW2eKNQXHUPb5jUPCLA5otTW/8nGjcOU37LxQG4WrxO7uaJ9Oe8hjHO+hViE3P0KISUhtA==} - engines: {node: '>=14.0.0'} - - '@aws-sdk/middleware-recursion-detection@3.535.0': - resolution: {integrity: sha512-am2qgGs+gwqmR4wHLWpzlZ8PWhm4ktj5bYSgDrsOfjhdBlWNxvPoID9/pDAz5RWL48+oH7I6SQzMqxXsFDikrw==} - engines: {node: '>=14.0.0'} - - '@aws-sdk/middleware-sdk-s3@3.474.0': - resolution: {integrity: sha512-62aAo/8u5daIabeJ+gseYeHeShe9eYH6mH+kfWmLsHybXCCv1EaD/ZkdXWNhL0HZ3bUI1z1SF1p8jjTAWALnwA==} - engines: {node: '>=14.0.0'} - - '@aws-sdk/middleware-signing@3.468.0': - resolution: {integrity: sha512-s+7fSB1gdnnTj5O0aCCarX3z5Vppop8kazbNSZADdkfHIDWCN80IH4ZNjY3OWqaAz0HmR4LNNrovdR304ojb4Q==} - engines: {node: '>=14.0.0'} - - '@aws-sdk/middleware-ssec@3.468.0': - resolution: {integrity: sha512-y1qLW24wRkOGBTK5d6eJXf6d8HYo4rzT4a1mNDN1rd18NSffwQ6Yke5qeUiIaxa0y/l+FvvNYErbhYtij2rJoQ==} - engines: {node: '>=14.0.0'} - - '@aws-sdk/middleware-user-agent@3.478.0': - resolution: {integrity: sha512-Rec+nAPIzzwxgHPW+xqY6tooJGFOytpYg/xSRv8/IXl3xKGhmpMGs6gDWzmMBv/qy5nKTvLph/csNWJ98GWXCw==} - engines: {node: '>=14.0.0'} - - '@aws-sdk/middleware-user-agent@3.535.0': - resolution: {integrity: sha512-Uvb2WJ+zdHdCOtsWVPI/M0BcfNrjOYsicDZWtaljucRJKLclY5gNWwD+RwIC+8b5TvfnVOlH+N5jhvpi5Impog==} - engines: {node: '>=14.0.0'} - - '@aws-sdk/region-config-resolver@3.470.0': - resolution: {integrity: sha512-C1o1J06iIw8cyAAOvHqT4Bbqf+PgQ/RDlSyjt2gFfP2OovDpc2o2S90dE8f8iZdSGpg70N5MikT1DBhW9NbhtQ==} - engines: {node: '>=14.0.0'} - - '@aws-sdk/region-config-resolver@3.535.0': - resolution: {integrity: sha512-IXOznDiaItBjsQy4Fil0kzX/J3HxIOknEphqHbOfUf+LpA5ugcsxuQQONrbEQusCBnfJyymrldBvBhFmtlU9Wg==} - engines: {node: '>=14.0.0'} - - '@aws-sdk/signature-v4-multi-region@3.474.0': - resolution: {integrity: sha512-93OWRQgTJZASXLrlUNX7mmXknNkYxFYldRLARmYQccONmnIqgYQW0lQj8BFwqkHJTzSMik3/UsU0SHKwZ9ynYA==} - engines: {node: '>=14.0.0'} - - '@aws-sdk/token-providers@3.478.0': - resolution: {integrity: sha512-7b5tj1y/wGHZIZ+ckjOUKgKrMuCJMF/G1UKZKIqqdekeEsjcThbvoxAMeY0FEowu2ODVk/ggOmpBFxcu0iYd6A==} - engines: {node: '>=14.0.0'} - - '@aws-sdk/token-providers@3.535.0': - resolution: {integrity: sha512-4g+l/B9h1H/SiDtFRosW3pMwc+3PTXljZit+5NUBcET2XqcdUyHmgj3lBdu+CJ9CHdIMggRalYMAFXnRFe3Psg==} - engines: {node: '>=14.0.0'} - - '@aws-sdk/types@3.468.0': - resolution: {integrity: sha512-rx/9uHI4inRbp2tw3Y4Ih4PNZkVj32h7WneSg3MVgVjAoVD5Zti9KhS5hkvsBxfgmQmg0AQbE+b1sy5WGAgntA==} - engines: {node: '>=14.0.0'} - - '@aws-sdk/types@3.535.0': - resolution: {integrity: sha512-aY4MYfduNj+sRR37U7XxYR8wemfbKP6lx00ze2M2uubn7mZotuVrWYAafbMSXrdEMSToE5JDhr28vArSOoLcSg==} - engines: {node: '>=14.0.0'} - - '@aws-sdk/util-arn-parser@3.465.0': - resolution: {integrity: sha512-zOJ82vzDJFqBX9yZBlNeHHrul/kpx/DCoxzW5UBbZeb26kfV53QhMSoEmY8/lEbBqlqargJ/sgRC845GFhHNQw==} - engines: {node: '>=14.0.0'} - - '@aws-sdk/util-endpoints@3.478.0': - resolution: {integrity: sha512-u9Mcg3euGJGs5clPt9mBuhBjHiEKiD0PnfvArhfq9i+dcY5mbCq/i1Dezp3iv1fZH9xxQt7hPXDfSpt1yUSM6g==} - engines: {node: '>=14.0.0'} - - '@aws-sdk/util-endpoints@3.535.0': - resolution: {integrity: sha512-c8TlaQsiPchOOmTTR6qvHCO2O7L7NJwlKWAoQJ2GqWDZuC5es/fyuF2rp1h+ZRrUVraUomS0YdGkAmaDC7hJQg==} - engines: {node: '>=14.0.0'} + '@aws-sdk/util-endpoints@3.664.0': + resolution: {integrity: sha512-KrXoHz6zmAahVHkyWMRT+P6xJaxItgmklxEDrT+npsUB4d5C/lhw16Crcp9TDi828fiZK3GYKRAmmNhvmzvBNg==} + engines: {node: '>=16.0.0'} '@aws-sdk/util-locate-window@3.310.0': resolution: {integrity: sha512-qo2t/vBTnoXpjKxlsC2e1gBrRm80M3bId27r0BRB2VniSSe7bL1mmzM+/HFtujm0iAxtPM+aLEflLJlJeDPg0w==} engines: {node: '>=14.0.0'} - '@aws-sdk/util-user-agent-browser@3.468.0': - resolution: {integrity: sha512-OJyhWWsDEizR3L+dCgMXSUmaCywkiZ7HSbnQytbeKGwokIhD69HTiJcibF/sgcM5gk4k3Mq3puUhGnEZ46GIig==} + '@aws-sdk/util-user-agent-browser@3.664.0': + resolution: {integrity: sha512-c/PV3+f1ss4PpskHbcOxTZ6fntV2oXy/xcDR9nW+kVaz5cM1G702gF0rvGLKPqoBwkj2rWGe6KZvEBeLzynTUQ==} - '@aws-sdk/util-user-agent-browser@3.535.0': - resolution: {integrity: sha512-RWMcF/xV5n+nhaA/Ff5P3yNP3Kur/I+VNZngog4TEs92oB/nwOdAg/2JL8bVAhUbMrjTjpwm7PItziYFQoqyig==} - - '@aws-sdk/util-user-agent-node@3.470.0': - resolution: {integrity: sha512-QxsZ9iVHcBB/XRdYvwfM5AMvNp58HfqkIrH88mY0cmxuvtlIGDfWjczdDrZMJk9y0vIq+cuoCHsGXHu7PyiEAQ==} - engines: {node: '>=14.0.0'} - peerDependencies: - aws-crt: '>=1.0.0' - peerDependenciesMeta: - aws-crt: - optional: true - - '@aws-sdk/util-user-agent-node@3.535.0': - resolution: {integrity: sha512-dRek0zUuIT25wOWJlsRm97nTkUlh1NDcLsQZIN2Y8KxhwoXXWtJs5vaDPT+qAg+OpcNj80i1zLR/CirqlFg/TQ==} - engines: {node: '>=14.0.0'} + '@aws-sdk/util-user-agent-node@3.666.0': + resolution: {integrity: sha512-DzbOMcAqrn51Z0fz5FvofaYmQA+sOJKO2cb8zQrix3TkzsTw1vRLo/cgQUJuJRGptbQCe1gnj7+21Gd5hpU6Ag==} + engines: {node: '>=16.0.0'} peerDependencies: aws-crt: '>=1.0.0' peerDependenciesMeta: @@ -2004,9 +2187,9 @@ packages: '@aws-sdk/util-utf8-browser@3.259.0': resolution: {integrity: sha512-UvFa/vR+e19XookZF8RzFZBrw2EUkQWxiBW0yYQAhvk3C+QVGl0H3ouca8LDBlBfQKXwmW3huo/59H8rwb1wJw==} - '@aws-sdk/xml-builder@3.472.0': - resolution: {integrity: sha512-PwjVxz1hr9up8QkddabuScPZ/d5aDHgvHYgK4acHYzltXL4wngfvimi5ZqXTzVWF2QANxHmWnHUr45QJX71oJQ==} - engines: {node: '>=14.0.0'} + '@aws-sdk/xml-builder@3.662.0': + resolution: {integrity: sha512-ikLkXn0igUpnJu2mCZjklvmcDGWT9OaLRv3JyC/cRkTaaSrblPjPM7KKsltxdMTLQ+v7fjCN0TsJpxphMfaOPA==} + engines: {node: '>=16.0.0'} '@azure/abort-controller@1.1.0': resolution: {integrity: sha512-TrRLIoSQVzfAJX9H1JeFjzAoDGcoK1IYX1UImfceTZpsyYfWr09Ss1aHW1y5TrrR3iq6RZLBwJ3E24uwPhwahw==} @@ -2016,25 +2199,26 @@ packages: resolution: {integrity: sha512-RP/mR/WJchR+g+nQFJGOec+nzeN/VvjlwbinccoqfhTsTHbb8X5+mLDp48kHT0ueyum0BNSwGm0kX0UZuIqTGg==} engines: {node: '>=18.0.0'} - '@azure/core-auth@1.4.0': - resolution: {integrity: sha512-HFrcTgmuSuukRf/EdPmqBrc5l6Q5Uu+2TbuhaKbgaCpP2TfAeiNaQPAadxO+CYBRHGUzIDteMAjFspFLDLnKVQ==} - engines: {node: '>=12.0.0'} - '@azure/core-auth@1.6.0': resolution: {integrity: sha512-3X9wzaaGgRaBCwhLQZDtFp5uLIXCPrGbwJNWPPugvL4xbIGgScv77YzzxToKGLAKvG9amDoofMoP+9hsH1vs1w==} engines: {node: '>=18.0.0'} - '@azure/core-client@1.6.1': - resolution: {integrity: sha512-mZ1MSKhZBYoV8GAWceA+PEJFWV2VpdNSpxxcj1wjIAOi00ykRuIQChT99xlQGZWLY3/NApWhSImlFwsmCEs4vA==} - engines: {node: '>=12.0.0'} + '@azure/core-client@1.9.2': + resolution: {integrity: sha512-kRdry/rav3fUKHl/aDLd/pDLcB+4pOFwPPTVEExuMyaI5r+JBbMWqRbCY1pn5BniDaU3lRxO9eaQ1AmSMehl/w==} + engines: {node: '>=18.0.0'} '@azure/core-http-compat@1.3.0': resolution: {integrity: sha512-ZN9avruqbQ5TxopzG3ih3KRy52n8OAbitX3fnZT5go4hzu0J+KVPSzkL+Wt3hpJpdG8WIfg1sBD1tWkgUdEpBA==} engines: {node: '>=12.0.0'} - '@azure/core-http@2.3.2': - resolution: {integrity: sha512-Z4dfbglV9kNZO177CNx4bo5ekFuYwwsvjLiKdZI4r84bYGv3irrbQz7JC3/rUfFH2l4T/W6OFleJaa2X0IaQqw==} + '@azure/core-http-compat@2.1.2': + resolution: {integrity: sha512-5MnV1yqzZwgNLLjlizsU3QqOeQChkIXw781Fwh1xdAqJR5AA32IUaq6xv1BICJvfbHoa+JYcaij2HFkhLbNTJQ==} + engines: {node: '>=18.0.0'} + + '@azure/core-http@3.0.4': + resolution: {integrity: sha512-Fok9VVhMdxAFOtqiiAtg74fL0UJkt0z3D+ouUUxcRLzZNBioPRAMJFVxiWoJljYpXsRi4GDQHzQHDc9AiYaIUQ==} engines: {node: '>=14.0.0'} + deprecated: deprecating as we migrated to core v2 '@azure/core-lro@2.4.0': resolution: {integrity: sha512-F65+rYkll1dpw3RGm8/SSiSj+/QkMeYDanzS/QKlM1dmuneVyXbO46C88V1MRHluLGdMP6qfD3vDRYALn0z0tQ==} @@ -2056,10 +2240,6 @@ packages: resolution: {integrity: sha512-I5CGMoLtX+pI17ZdiFJZgxMJApsK6jjfm85hpgp3oazCdq5Wxgh4wMr7ge/TTWW1B5WBuvIOI1fMU/FrOAMKrw==} engines: {node: '>=12.0.0'} - '@azure/core-util@1.1.1': - resolution: {integrity: sha512-A4TBYVQCtHOigFb2ETiiKFDocBoI1Zk2Ui1KpI42aJSIDexF7DHQFpnjonltXAIU/ceH+1fsZAWWgvX6/AKzog==} - engines: {node: '>=12.0.0'} - '@azure/core-util@1.7.0': resolution: {integrity: sha512-Zq2i3QO6k9DA8vnm29mYM4G8IE9u1mhF1GUabVEqPNX8Lj833gdxQ2NAFxt2BZsfAL+e9cT8SyVN7dFVJ/Hf0g==} engines: {node: '>=18.0.0'} @@ -2068,66 +2248,50 @@ packages: resolution: {integrity: sha512-0q5DL4uyR0EZ4RXQKD8MadGH6zTIcloUoS/RVbCpNpej4pwte0xpqYxk8K97Py2RiuUvI7F4GXpoT4046VfufA==} engines: {node: '>=14.0.0'} + '@azure/identity@4.3.0': + resolution: {integrity: sha512-LHZ58/RsIpIWa4hrrE2YuJ/vzG1Jv9f774RfTTAVDZDriubvJ0/S5u4pnw4akJDlS0TiJb6VMphmVUFsWmgodQ==} + engines: {node: '>=18.0.0'} + '@azure/keyvault-keys@4.6.0': resolution: {integrity: sha512-0112LegxeR03L8J4k+q6HwBVvrpd9y+oInG0FG3NaHXN7YUubVBon/eb5jFI6edGrvNigpxSR0XIsprFXdkzCQ==} engines: {node: '>=12.0.0'} + '@azure/keyvault-secrets@4.8.0': + resolution: {integrity: sha512-RGfpFk6XUXHfWuTAiokOe8t6ej5C4ijf4HVyJUmTfN6VjDBVPvTtoiOi/C5072/ENHScYZFhiYOgIjLgYjfJ/A==} + engines: {node: '>=18.0.0'} + '@azure/logger@1.0.3': resolution: {integrity: sha512-aK4s3Xxjrx3daZr3VylxejK3vG5ExXck5WOHDJ8in/k9AqlfIyFMMT1uG7u8mNjX+QRILTIn0/Xgschfh/dQ9g==} engines: {node: '>=12.0.0'} - '@azure/msal-browser@3.10.0': - resolution: {integrity: sha512-mnmi8dCXVNZI+AGRq0jKQ3YiodlIC4W9npr6FCB9WN6NQT+6rq+cIlxgUb//BjLyzKsnYo+i4LROGeMyU+6v1A==} + '@azure/msal-browser@3.19.0': + resolution: {integrity: sha512-3unHlh3qWtXbqks/TLq3qGWzxfmwRfk9tXSGvVCcHHnCH5QKtcg/JiDIeP/1B2qFlqnSgtYY0JPLy9EIVoZ7Ag==} engines: {node: '>=0.8.0'} - '@azure/msal-common@14.7.1': - resolution: {integrity: sha512-v96btzjM7KrAu4NSEdOkhQSTGOuNUIIsUdB8wlyB9cdgl5KqEKnTonHUZ8+khvZ6Ap542FCErbnTyDWl8lZ2rA==} + '@azure/msal-common@14.13.0': + resolution: {integrity: sha512-b4M/tqRzJ4jGU91BiwCsLTqChveUEyFK3qY2wGfZ0zBswIBZjAxopx5CYt5wzZFKuN15HqRDYXQbztttuIC3nA==} engines: {node: '>=0.8.0'} - '@azure/msal-node@2.6.4': - resolution: {integrity: sha512-nNvEPx009/80UATCToF+29NZYocn01uKrB91xtFr7bSqkqO1PuQGXRyYwryWRztUrYZ1YsSbw9A+LmwOhpVvcg==} + '@azure/msal-node@2.11.0': + resolution: {integrity: sha512-yNRCp4Do4CGSBe1WXq4DWhfa/vYZCUgGrweYLC5my/6eDnYMt0fYGPHuTMw0iRslQGXF3CecGAxXp7ab57V4zg==} engines: {node: '>=16'} - '@azure/storage-blob@12.11.0': - resolution: {integrity: sha512-na+FisoARuaOWaHWpmdtk3FeuTWf2VWamdJ9/TJJzj5ZdXPLC3juoDgFs6XVuJIoK30yuBpyFBEDXVRK4pB7Tg==} - engines: {node: '>=12.0.0'} - - '@babel/code-frame@7.22.5': - resolution: {integrity: sha512-Xmwn266vad+6DAqEB2A6V/CcZVp62BbwVmcOJc2RPuwih1kw02TjQvWVWlcKGbBPd+8/0V5DEkOcizRGYsspYQ==} - engines: {node: '>=6.9.0'} - - '@babel/code-frame@7.23.5': - resolution: {integrity: sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==} - engines: {node: '>=6.9.0'} + '@azure/storage-blob@12.18.0': + resolution: {integrity: sha512-BzBZJobMoDyjJsPRMLNHvqHycTGrT8R/dtcTx9qUFcqwSRfGVK9A/cZ7Nx38UQydT9usZGbaDCN75QRNjezSAA==} + engines: {node: '>=14.0.0'} '@babel/code-frame@7.24.6': resolution: {integrity: sha512-ZJhac6FkEd1yhG2AHOmfcXG4ceoLltoCVJjN5XsWN9BifBQr+cHJbWi0h68HZuSORq+3WtJ2z0hwF2NG1b5kcA==} engines: {node: '>=6.9.0'} - '@babel/compat-data@7.22.9': - resolution: {integrity: sha512-5UamI7xkUcJ3i9qVDS+KFDEK8/7oJ55/sJMB1Ge7IEapr7KfdfV/HErR+koZwOfd+SgtFKOKRhRakdg++DcJpQ==} - engines: {node: '>=6.9.0'} - '@babel/compat-data@7.23.5': resolution: {integrity: sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==} engines: {node: '>=6.9.0'} - '@babel/compat-data@7.24.6': - resolution: {integrity: sha512-aC2DGhBq5eEdyXWqrDInSqQjO0k8xtPRf5YylULqx8MCd6jBtzqfta/3ETMRpuKIc5hyswfO80ObyA1MvkCcUQ==} - engines: {node: '>=6.9.0'} - - '@babel/core@7.22.9': - resolution: {integrity: sha512-G2EgeufBcYw27U4hhoIwFcgc1XU7TlXJ3mv04oOv1WCuo900U/anZSPzEqNjwdjgffkk2Gs0AN0dW1CKVLcG7w==} - engines: {node: '>=6.9.0'} - '@babel/core@7.24.0': resolution: {integrity: sha512-fQfkg0Gjkza3nf0c7/w6Xf34BW4YvzNfACRLmmb7XRLa6XHdR+K9AlJlxneFfWYf6uhOzuzZVTjF/8KfndZANw==} engines: {node: '>=6.9.0'} - '@babel/core@7.24.6': - resolution: {integrity: sha512-qAHSfAdVyFmIvl0VHELib8xar7ONuSHrE2hLnsaWkYNTI68dmi1x8GYDhJjMI/e7XWal9QBlZkwbOnkcw7Z8gQ==} - engines: {node: '>=6.9.0'} - '@babel/generator@7.22.9': resolution: {integrity: sha512-KtLMbmicyuK2Ak/FTCJVbDnkN1SlT8/kceFTiuDiiRUUSMnHMidxSCdG4ndkTOHHpoomWe/4xkvHkEOncwjYIw==} engines: {node: '>=6.9.0'} @@ -2136,298 +2300,73 @@ packages: resolution: {integrity: sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==} engines: {node: '>=6.9.0'} - '@babel/generator@7.24.6': - resolution: {integrity: sha512-S7m4eNa6YAPJRHmKsLHIDJhNAGNKoWNiWefz1MBbpnt8g9lvMDl1hir4P9bo/57bQEmuwEhnRU/AMWsD0G/Fbg==} - engines: {node: '>=6.9.0'} - - '@babel/helper-annotate-as-pure@7.22.5': - resolution: {integrity: sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==} - engines: {node: '>=6.9.0'} - - '@babel/helper-annotate-as-pure@7.24.6': - resolution: {integrity: sha512-DitEzDfOMnd13kZnDqns1ccmftwJTS9DMkyn9pYTxulS7bZxUxpMly3Nf23QQ6NwA4UB8lAqjbqWtyvElEMAkg==} - engines: {node: '>=6.9.0'} - - '@babel/helper-builder-binary-assignment-operator-visitor@7.24.6': - resolution: {integrity: sha512-+wnfqc5uHiMYtvRX7qu80Toef8BXeh4HHR1SPeonGb1SKPniNEd4a/nlaJJMv/OIEYvIVavvo0yR7u10Gqz0Iw==} - engines: {node: '>=6.9.0'} - - '@babel/helper-compilation-targets@7.22.9': - resolution: {integrity: sha512-7qYrNM6HjpnPHJbopxmb8hSPoZ0gsX8IvUS32JGVoy+pU9e5N0nLr1VjJoR6kA4d9dmGLxNYOjeB8sUDal2WMw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - '@babel/helper-compilation-targets@7.23.6': resolution: {integrity: sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==} engines: {node: '>=6.9.0'} - '@babel/helper-compilation-targets@7.24.6': - resolution: {integrity: sha512-VZQ57UsDGlX/5fFA7GkVPplZhHsVc+vuErWgdOiysI9Ksnw0Pbbd6pnPiR/mmJyKHgyIW0c7KT32gmhiF+cirg==} - engines: {node: '>=6.9.0'} - - '@babel/helper-create-class-features-plugin@7.24.0': - resolution: {integrity: sha512-QAH+vfvts51BCsNZ2PhY6HAggnlS6omLLFTsIpeqZk/MmJ6cW7tgz5yRv0fMJThcr6FmbMrENh1RgrWPTYA76g==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/helper-create-class-features-plugin@7.24.6': - resolution: {integrity: sha512-djsosdPJVZE6Vsw3kk7IPRWethP94WHGOhQTc67SNXE0ZzMhHgALw8iGmYS0TD1bbMM0VDROy43od7/hN6WYcA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/helper-create-regexp-features-plugin@7.22.15': - resolution: {integrity: sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/helper-create-regexp-features-plugin@7.24.6': - resolution: {integrity: sha512-C875lFBIWWwyv6MHZUG9HmRrlTDgOsLWZfYR0nW69gaKJNe0/Mpxx5r0EID2ZdHQkdUmQo2t0uNckTL08/1BgA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/helper-define-polyfill-provider@0.6.1': - resolution: {integrity: sha512-o7SDgTJuvx5vLKD6SFvkydkSMBvahDKGiNJzG22IZYXhiqoe9efY7zocICBgzHV4IRg5wdgl2nEL/tulKIEIbA==} - peerDependencies: - '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 - - '@babel/helper-define-polyfill-provider@0.6.2': - resolution: {integrity: sha512-LV76g+C502biUK6AyZ3LK10vDpDyCzZnhZFXkH1L75zHPj68+qc8Zfpx2th+gzwA2MzyK+1g/3EPl62yFnVttQ==} - peerDependencies: - '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 - '@babel/helper-environment-visitor@7.22.20': resolution: {integrity: sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==} engines: {node: '>=6.9.0'} - '@babel/helper-environment-visitor@7.22.5': - resolution: {integrity: sha512-XGmhECfVA/5sAt+H+xpSg0mfrHq6FzNr9Oxh7PSEBBRUb/mL7Kz3NICXb194rCqAEdxkhPT1a88teizAFyvk8Q==} - engines: {node: '>=6.9.0'} - - '@babel/helper-environment-visitor@7.24.6': - resolution: {integrity: sha512-Y50Cg3k0LKLMjxdPjIl40SdJgMB85iXn27Vk/qbHZCFx/o5XO3PSnpi675h1KEmmDb6OFArfd5SCQEQ5Q4H88g==} - engines: {node: '>=6.9.0'} - - '@babel/helper-function-name@7.22.5': - resolution: {integrity: sha512-wtHSq6jMRE3uF2otvfuD3DIvVhOsSNshQl0Qrd7qC9oQJzHvOL4qQXlQn2916+CXGywIjpGuIkoyZRRxHPiNQQ==} - engines: {node: '>=6.9.0'} - '@babel/helper-function-name@7.23.0': resolution: {integrity: sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==} engines: {node: '>=6.9.0'} - '@babel/helper-function-name@7.24.6': - resolution: {integrity: sha512-xpeLqeeRkbxhnYimfr2PC+iA0Q7ljX/d1eZ9/inYbmfG2jpl8Lu3DyXvpOAnrS5kxkfOWJjioIMQsaMBXFI05w==} - engines: {node: '>=6.9.0'} - '@babel/helper-hoist-variables@7.22.5': resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==} engines: {node: '>=6.9.0'} - '@babel/helper-hoist-variables@7.24.6': - resolution: {integrity: sha512-SF/EMrC3OD7dSta1bLJIlrsVxwtd0UpjRJqLno6125epQMJ/kyFmpTT4pbvPbdQHzCHg+biQ7Syo8lnDtbR+uA==} - engines: {node: '>=6.9.0'} - - '@babel/helper-member-expression-to-functions@7.23.0': - resolution: {integrity: sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA==} - engines: {node: '>=6.9.0'} - - '@babel/helper-member-expression-to-functions@7.24.6': - resolution: {integrity: sha512-OTsCufZTxDUsv2/eDXanw/mUZHWOxSbEmC3pP8cgjcy5rgeVPWWMStnv274DV60JtHxTk0adT0QrCzC4M9NWGg==} - engines: {node: '>=6.9.0'} - '@babel/helper-module-imports@7.22.15': resolution: {integrity: sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==} engines: {node: '>=6.9.0'} - '@babel/helper-module-imports@7.22.5': - resolution: {integrity: sha512-8Dl6+HD/cKifutF5qGd/8ZJi84QeAKh+CEe1sBzz8UayBBGg1dAIJrdHOcOM5b2MpzWL2yuotJTtGjETq0qjXg==} - engines: {node: '>=6.9.0'} - - '@babel/helper-module-imports@7.24.6': - resolution: {integrity: sha512-a26dmxFJBF62rRO9mmpgrfTLsAuyHk4e1hKTUkD/fcMfynt8gvEKwQPQDVxWhca8dHoDck+55DFt42zV0QMw5g==} - engines: {node: '>=6.9.0'} - - '@babel/helper-module-transforms@7.22.9': - resolution: {integrity: sha512-t+WA2Xn5K+rTeGtC8jCsdAH52bjggG5TKRuRrAGNM/mjIbO4GxvlLMFOEz9wXY5I2XQ60PMFsAG2WIcG82dQMQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - '@babel/helper-module-transforms@7.23.3': resolution: {integrity: sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 - '@babel/helper-module-transforms@7.24.6': - resolution: {integrity: sha512-Y/YMPm83mV2HJTbX1Qh2sjgjqcacvOlhbzdCCsSlblOKjSYmQqEbO6rUniWQyRo9ncyfjT8hnUjlG06RXDEmcA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/helper-optimise-call-expression@7.22.5': - resolution: {integrity: sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==} - engines: {node: '>=6.9.0'} - - '@babel/helper-optimise-call-expression@7.24.6': - resolution: {integrity: sha512-3SFDJRbx7KuPRl8XDUr8O7GAEB8iGyWPjLKJh/ywP/Iy9WOmEfMrsWbaZpvBu2HSYn4KQygIsz0O7m8y10ncMA==} - engines: {node: '>=6.9.0'} - '@babel/helper-plugin-utils@7.22.5': resolution: {integrity: sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==} engines: {node: '>=6.9.0'} - '@babel/helper-plugin-utils@7.24.0': - resolution: {integrity: sha512-9cUznXMG0+FxRuJfvL82QlTqIzhVW9sL0KjMPHhAOOvpQGL8QtdxnBKILjBqxlHyliz0yCa1G903ZXI/FuHy2w==} - engines: {node: '>=6.9.0'} - - '@babel/helper-plugin-utils@7.24.6': - resolution: {integrity: sha512-MZG/JcWfxybKwsA9N9PmtF2lOSFSEMVCpIRrbxccZFLJPrJciJdG/UhSh5W96GEteJI2ARqm5UAHxISwRDLSNg==} - engines: {node: '>=6.9.0'} - - '@babel/helper-remap-async-to-generator@7.24.6': - resolution: {integrity: sha512-1Qursq9ArRZPAMOZf/nuzVW8HgJLkTB9y9LfP4lW2MVp4e9WkLJDovfKBxoDcCk6VuzIxyqWHyBoaCtSRP10yg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/helper-replace-supers@7.22.20': - resolution: {integrity: sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/helper-replace-supers@7.24.6': - resolution: {integrity: sha512-mRhfPwDqDpba8o1F8ESxsEkJMQkUF8ZIWrAc0FtWhxnjfextxMWxr22RtFizxxSYLjVHDeMgVsRq8BBZR2ikJQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - '@babel/helper-simple-access@7.22.5': resolution: {integrity: sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==} engines: {node: '>=6.9.0'} - '@babel/helper-simple-access@7.24.6': - resolution: {integrity: sha512-nZzcMMD4ZhmB35MOOzQuiGO5RzL6tJbsT37Zx8M5L/i9KSrukGXWTjLe1knIbb/RmxoJE9GON9soq0c0VEMM5g==} - engines: {node: '>=6.9.0'} - - '@babel/helper-skip-transparent-expression-wrappers@7.22.5': - resolution: {integrity: sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==} - engines: {node: '>=6.9.0'} - - '@babel/helper-skip-transparent-expression-wrappers@7.24.6': - resolution: {integrity: sha512-jhbbkK3IUKc4T43WadP96a27oYti9gEf1LdyGSP2rHGH77kwLwfhO7TgwnWvxxQVmke0ImmCSS47vcuxEMGD3Q==} - engines: {node: '>=6.9.0'} - '@babel/helper-split-export-declaration@7.22.6': resolution: {integrity: sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==} engines: {node: '>=6.9.0'} - '@babel/helper-split-export-declaration@7.24.6': - resolution: {integrity: sha512-CvLSkwXGWnYlF9+J3iZUvwgAxKiYzK3BWuo+mLzD/MDGOZDj7Gq8+hqaOkMxmJwmlv0iu86uH5fdADd9Hxkymw==} - engines: {node: '>=6.9.0'} - - '@babel/helper-string-parser@7.23.4': - resolution: {integrity: sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==} - engines: {node: '>=6.9.0'} - - '@babel/helper-string-parser@7.24.6': - resolution: {integrity: sha512-WdJjwMEkmBicq5T9fm/cHND3+UlFa2Yj8ALLgmoSQAJZysYbBjw+azChSGPN4DSPLXOcooGRvDwZWMcF/mLO2Q==} + '@babel/helper-string-parser@7.24.8': + resolution: {integrity: sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==} engines: {node: '>=6.9.0'} '@babel/helper-validator-identifier@7.22.20': resolution: {integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==} engines: {node: '>=6.9.0'} - '@babel/helper-validator-identifier@7.24.6': - resolution: {integrity: sha512-4yA7s865JHaqUdRbnaxarZREuPTHrjpDT+pXoAZ1yhyo6uFnIEpS8VMu16siFOHDpZNKYv5BObhsB//ycbICyw==} - engines: {node: '>=6.9.0'} - - '@babel/helper-validator-option@7.22.5': - resolution: {integrity: sha512-R3oB6xlIVKUnxNUxbmgq7pKjxpru24zlimpE8WK47fACIlM0II/Hm1RS8IaOI7NgCr6LNS+jl5l75m20npAziw==} + '@babel/helper-validator-identifier@7.24.7': + resolution: {integrity: sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==} engines: {node: '>=6.9.0'} '@babel/helper-validator-option@7.23.5': resolution: {integrity: sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==} engines: {node: '>=6.9.0'} - '@babel/helper-validator-option@7.24.6': - resolution: {integrity: sha512-Jktc8KkF3zIkePb48QO+IapbXlSapOW9S+ogZZkcO6bABgYAxtZcjZ/O005111YLf+j4M84uEgwYoidDkXbCkQ==} - engines: {node: '>=6.9.0'} - - '@babel/helper-wrap-function@7.24.6': - resolution: {integrity: sha512-f1JLrlw/jbiNfxvdrfBgio/gRBk3yTAEJWirpAkiJG2Hb22E7cEYKHWo0dFPTv/niPovzIdPdEDetrv6tC6gPQ==} - engines: {node: '>=6.9.0'} - - '@babel/helpers@7.22.6': - resolution: {integrity: sha512-YjDs6y/fVOYFV8hAf1rxd1QvR9wJe1pDBZ2AREKq/SDayfPzgk0PBnVuTCE5X1acEpMMNOVUqoe+OwiZGJ+OaA==} - engines: {node: '>=6.9.0'} - '@babel/helpers@7.24.0': resolution: {integrity: sha512-ulDZdc0Aj5uLc5nETsa7EPx2L7rM0YJM8r7ck7U73AXi7qOV44IHHRAYZHY6iU1rr3C5N4NtTmMRUJP6kwCWeA==} engines: {node: '>=6.9.0'} - '@babel/helpers@7.24.6': - resolution: {integrity: sha512-V2PI+NqnyFu1i0GyTd/O/cTpxzQCYioSkUIRmgo7gFEHKKCg5w46+r/A6WeUR1+P3TeQ49dspGPNd/E3n9AnnA==} - engines: {node: '>=6.9.0'} - - '@babel/highlight@7.22.5': - resolution: {integrity: sha512-BSKlD1hgnedS5XRnGOljZawtag7H1yPfQp0tdNJCHoH6AZ+Pcm9VvkrK59/Yy593Ypg0zMxH2BxD1VPYUQ7UIw==} - engines: {node: '>=6.9.0'} - - '@babel/highlight@7.23.4': - resolution: {integrity: sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==} - engines: {node: '>=6.9.0'} - '@babel/highlight@7.24.6': resolution: {integrity: sha512-2YnuOp4HAk2BsBrJJvYCbItHx0zWscI1C3zgWkz+wDyD9I7GIVrfnLyrR4Y1VR+7p+chAEcrgRQYZAGIKMV7vQ==} engines: {node: '>=6.9.0'} - '@babel/parser@7.24.0': - resolution: {integrity: sha512-QuP/FxEAzMSjXygs8v4N9dvdXzEHN4W1oF3PxuWAtPo08UdM17u89RDMgjLn/mlc56iM0HlLmVkO/wgR+rDgHg==} + '@babel/parser@7.25.6': + resolution: {integrity: sha512-trGdfBdbD0l1ZPmcJ83eNxB9rbEax4ALFTF7fN386TMYbeCQbyme5cOEXQhbGXKebwGaB/J52w1mrklMcbgy6Q==} engines: {node: '>=6.0.0'} hasBin: true - '@babel/parser@7.24.6': - resolution: {integrity: sha512-eNZXdfU35nJC2h24RznROuOpO94h6x8sg9ju0tT9biNtLZ2vuP8SduLqqV+/8+cebSLV9SJEAN5Z3zQbJG/M+Q==} - engines: {node: '>=6.0.0'} - hasBin: true - - '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.24.6': - resolution: {integrity: sha512-bYndrJ6Ph6Ar+GaB5VAc0JPoP80bQCm4qon6JEzXfRl5QZyQ8Ur1K6k7htxWmPA5z+k7JQvaMUrtXlqclWYzKw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.24.6': - resolution: {integrity: sha512-iVuhb6poq5ikqRq2XWU6OQ+R5o9wF+r/or9CeUyovgptz0UlnK4/seOQ1Istu/XybYjAhQv1FRSSfHHufIku5Q==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.24.6': - resolution: {integrity: sha512-c8TER5xMDYzzFcGqOEp9l4hvB7dcbhcGjcLVwxWfe4P5DOafdwjsBJZKsmv+o3aXh7NhopvayQIovHrh2zSRUQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.13.0 - - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.24.6': - resolution: {integrity: sha512-z8zEjYmwBUHN/pCF3NuWBhHQjJCrd33qAi8MgANfMrAvn72k2cImT8VjK9LJFu4ysOLJqhfkYYb3MvwANRUNZQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2': - resolution: {integrity: sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - '@babel/plugin-syntax-async-generators@7.8.4': resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} peerDependencies: @@ -2443,40 +2382,6 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-syntax-class-static-block@7.14.5': - resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-dynamic-import@7.8.3': - resolution: {integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-export-namespace-from@7.8.3': - resolution: {integrity: sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-flow@7.23.3': - resolution: {integrity: sha512-YZiAIpkJAwQXBJLIQbRFayR5c+gJ35Vcz3bg954k7cd73zqjvhacJuL9RbrzPz8qPmZdgqP6EUKwy0PCNhaaPA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-import-assertions@7.24.6': - resolution: {integrity: sha512-BE6o2BogJKJImTmGpkmOic4V0hlRRxVtzqxiSPa8TIFxyhi4EFjHm08nq1M4STK4RytuLMgnSz0/wfflvGFNOg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-import-attributes@7.24.6': - resolution: {integrity: sha512-D+CfsVZousPXIdudSII7RGy52+dYRtbyKAZcvtQKq/NpsivyMVduepzcLqG5pMBugtMdedxdC8Ramdpcne9ZWQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - '@babel/plugin-syntax-import-meta@7.10.4': resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} peerDependencies: @@ -2493,12 +2398,6 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-syntax-jsx@7.23.3': - resolution: {integrity: sha512-EB2MELswq55OHUoRZLGg/zC7QWUKfNLpE57m/S2yr1uEneIgsTgrSzXP3NXEsMkVn76OlaVVnzN+ugObuYGwhg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - '@babel/plugin-syntax-logical-assignment-operators@7.10.4': resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} peerDependencies: @@ -2529,12 +2428,6 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-syntax-private-property-in-object@7.14.5': - resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - '@babel/plugin-syntax-top-level-await@7.14.5': resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} engines: {node: '>=6.9.0'} @@ -2547,437 +2440,87 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-syntax-typescript@7.23.3': - resolution: {integrity: sha512-9EiNjVJOMwCO+43TqoTrgQ8jMwcAd0sWyXi9RPfIsLTj4R2MADDDQXELhffaUx/uJv2AYcxBgPwH6j4TIA4ytQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-unicode-sets-regex@7.18.6': - resolution: {integrity: sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/plugin-transform-arrow-functions@7.24.6': - resolution: {integrity: sha512-jSSSDt4ZidNMggcLx8SaKsbGNEfIl0PHx/4mFEulorE7bpYLbN0d3pDW3eJ7Y5Z3yPhy3L3NaPCYyTUY7TuugQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-async-generator-functions@7.24.6': - resolution: {integrity: sha512-VEP2o4iR2DqQU6KPgizTW2mnMx6BG5b5O9iQdrW9HesLkv8GIA8x2daXBQxw1MrsIkFQGA/iJ204CKoQ8UcnAA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-async-to-generator@7.24.6': - resolution: {integrity: sha512-NTBA2SioI3OsHeIn6sQmhvXleSl9T70YY/hostQLveWs0ic+qvbA3fa0kwAwQ0OA/XGaAerNZRQGJyRfhbJK4g==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-block-scoped-functions@7.24.6': - resolution: {integrity: sha512-XNW7jolYHW9CwORrZgA/97tL/k05qe/HL0z/qqJq1mdWhwwCM6D4BJBV7wAz9HgFziN5dTOG31znkVIzwxv+vw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-block-scoping@7.24.6': - resolution: {integrity: sha512-S/t1Xh4ehW7sGA7c1j/hiOBLnEYCp/c2sEG4ZkL8kI1xX9tW2pqJTCHKtdhe/jHKt8nG0pFCrDHUXd4DvjHS9w==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-class-properties@7.23.3': - resolution: {integrity: sha512-uM+AN8yCIjDPccsKGlw271xjJtGii+xQIF/uMPS8H15L12jZTsLfF4o5vNO7d/oUguOyfdikHGc/yi9ge4SGIg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-class-properties@7.24.6': - resolution: {integrity: sha512-j6dZ0Z2Z2slWLR3kt9aOmSIrBvnntWjMDN/TVcMPxhXMLmJVqX605CBRlcGI4b32GMbfifTEsdEjGjiE+j/c3A==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-class-static-block@7.24.6': - resolution: {integrity: sha512-1QSRfoPI9RoLRa8Mnakc6v3e0gJxiZQTYrMfLn+mD0sz5+ndSzwymp2hDcYJTyT0MOn0yuWzj8phlIvO72gTHA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.12.0 - - '@babel/plugin-transform-classes@7.24.6': - resolution: {integrity: sha512-+fN+NO2gh8JtRmDSOB6gaCVo36ha8kfCW1nMq2Gc0DABln0VcHN4PrALDvF5/diLzIRKptC7z/d7Lp64zk92Fg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-computed-properties@7.24.6': - resolution: {integrity: sha512-cRzPobcfRP0ZtuIEkA8QzghoUpSB3X3qSH5W2+FzG+VjWbJXExtx0nbRqwumdBN1x/ot2SlTNQLfBCnPdzp6kg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-destructuring@7.24.6': - resolution: {integrity: sha512-YLW6AE5LQpk5npNXL7i/O+U9CE4XsBCuRPgyjl1EICZYKmcitV+ayuuUGMJm2lC1WWjXYszeTnIxF/dq/GhIZQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-dotall-regex@7.24.6': - resolution: {integrity: sha512-rCXPnSEKvkm/EjzOtLoGvKseK+dS4kZwx1HexO3BtRtgL0fQ34awHn34aeSHuXtZY2F8a1X8xqBBPRtOxDVmcA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-duplicate-keys@7.24.6': - resolution: {integrity: sha512-/8Odwp/aVkZwPFJMllSbawhDAO3UJi65foB00HYnK/uXvvCPm0TAXSByjz1mpRmp0q6oX2SIxpkUOpPFHk7FLA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-dynamic-import@7.24.6': - resolution: {integrity: sha512-vpq8SSLRTBLOHUZHSnBqVo0AKX3PBaoPs2vVzYVWslXDTDIpwAcCDtfhUcHSQQoYoUvcFPTdC8TZYXu9ZnLT/w==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-exponentiation-operator@7.24.6': - resolution: {integrity: sha512-EemYpHtmz0lHE7hxxxYEuTYOOBZ43WkDgZ4arQ4r+VX9QHuNZC+WH3wUWmRNvR8ECpTRne29aZV6XO22qpOtdA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-export-namespace-from@7.24.6': - resolution: {integrity: sha512-inXaTM1SVrIxCkIJ5gqWiozHfFMStuGbGJAxZFBoHcRRdDP0ySLb3jH6JOwmfiinPwyMZqMBX+7NBDCO4z0NSA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-flow-strip-types@7.23.3': - resolution: {integrity: sha512-26/pQTf9nQSNVJCrLB1IkHUKyPxR+lMrH2QDPG89+Znu9rAMbtrybdbWeE9bb7gzjmE5iXHEY+e0HUwM6Co93Q==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-for-of@7.24.6': - resolution: {integrity: sha512-n3Sf72TnqK4nw/jziSqEl1qaWPbCRw2CziHH+jdRYvw4J6yeCzsj4jdw8hIntOEeDGTmHVe2w4MVL44PN0GMzg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-function-name@7.24.6': - resolution: {integrity: sha512-sOajCu6V0P1KPljWHKiDq6ymgqB+vfo3isUS4McqW1DZtvSVU2v/wuMhmRmkg3sFoq6GMaUUf8W4WtoSLkOV/Q==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-json-strings@7.24.6': - resolution: {integrity: sha512-Uvgd9p2gUnzYJxVdBLcU0KurF8aVhkmVyMKW4MIY1/BByvs3EBpv45q01o7pRTVmTvtQq5zDlytP3dcUgm7v9w==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-literals@7.24.6': - resolution: {integrity: sha512-f2wHfR2HF6yMj+y+/y07+SLqnOSwRp8KYLpQKOzS58XLVlULhXbiYcygfXQxJlMbhII9+yXDwOUFLf60/TL5tw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-logical-assignment-operators@7.24.6': - resolution: {integrity: sha512-EKaWvnezBCMkRIHxMJSIIylzhqK09YpiJtDbr2wsXTwnO0TxyjMUkaw4RlFIZMIS0iDj0KyIg7H7XCguHu/YDA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-member-expression-literals@7.24.6': - resolution: {integrity: sha512-9g8iV146szUo5GWgXpRbq/GALTnY+WnNuRTuRHWWFfWGbP9ukRL0aO/jpu9dmOPikclkxnNsjY8/gsWl6bmZJQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-modules-amd@7.24.6': - resolution: {integrity: sha512-eAGogjZgcwqAxhyFgqghvoHRr+EYRQPFjUXrTYKBRb5qPnAVxOOglaxc4/byHqjvq/bqO2F3/CGwTHsgKJYHhQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-modules-commonjs@7.23.3': - resolution: {integrity: sha512-aVS0F65LKsdNOtcz6FRCpE4OgsP2OFnW46qNxNIX9h3wuzaNcSQsJysuMwqSibC98HPrf2vCgtxKNwS0DAlgcA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-modules-commonjs@7.24.6': - resolution: {integrity: sha512-JEV8l3MHdmmdb7S7Cmx6rbNEjRCgTQMZxllveHO0mx6uiclB0NflCawlQQ6+o5ZrwjUBYPzHm2XoK4wqGVUFuw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-modules-systemjs@7.24.6': - resolution: {integrity: sha512-xg1Z0J5JVYxtpX954XqaaAT6NpAY6LtZXvYFCJmGFJWwtlz2EmJoR8LycFRGNE8dBKizGWkGQZGegtkV8y8s+w==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-modules-umd@7.24.6': - resolution: {integrity: sha512-esRCC/KsSEUvrSjv5rFYnjZI6qv4R1e/iHQrqwbZIoRJqk7xCvEUiN7L1XrmW5QSmQe3n1XD88wbgDTWLbVSyg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-named-capturing-groups-regex@7.24.6': - resolution: {integrity: sha512-6DneiCiu91wm3YiNIGDWZsl6GfTTbspuj/toTEqLh9d4cx50UIzSdg+T96p8DuT7aJOBRhFyaE9ZvTHkXrXr6Q==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/plugin-transform-new-target@7.24.6': - resolution: {integrity: sha512-f8liz9JG2Va8A4J5ZBuaSdwfPqN6axfWRK+y66fjKYbwf9VBLuq4WxtinhJhvp1w6lamKUwLG0slK2RxqFgvHA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-nullish-coalescing-operator@7.23.4': - resolution: {integrity: sha512-jHE9EVVqHKAQx+VePv5LLGHjmHSJR76vawFPTdlxR/LVJPfOEGxREQwQfjuZEOPTwG92X3LINSh3M40Rv4zpVA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-nullish-coalescing-operator@7.24.6': - resolution: {integrity: sha512-+QlAiZBMsBK5NqrBWFXCYeXyiU1y7BQ/OYaiPAcQJMomn5Tyg+r5WuVtyEuvTbpV7L25ZSLfE+2E9ywj4FD48A==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-numeric-separator@7.24.6': - resolution: {integrity: sha512-6voawq8T25Jvvnc4/rXcWZQKKxUNZcKMS8ZNrjxQqoRFernJJKjE3s18Qo6VFaatG5aiX5JV1oPD7DbJhn0a4Q==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-object-rest-spread@7.24.6': - resolution: {integrity: sha512-OKmi5wiMoRW5Smttne7BwHM8s/fb5JFs+bVGNSeHWzwZkWXWValR1M30jyXo1s/RaqgwwhEC62u4rFH/FBcBPg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-object-super@7.24.6': - resolution: {integrity: sha512-N/C76ihFKlZgKfdkEYKtaRUtXZAgK7sOY4h2qrbVbVTXPrKGIi8aww5WGe/+Wmg8onn8sr2ut6FXlsbu/j6JHg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-optional-catch-binding@7.24.6': - resolution: {integrity: sha512-L5pZ+b3O1mSzJ71HmxSCmTVd03VOT2GXOigug6vDYJzE5awLI7P1g0wFcdmGuwSDSrQ0L2rDOe/hHws8J1rv3w==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-optional-chaining@7.23.4': - resolution: {integrity: sha512-ZU8y5zWOfjM5vZ+asjgAPwDaBjJzgufjES89Rs4Lpq63O300R/kOz30WCLo6BxxX6QVEilwSlpClnG5cZaikTA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-optional-chaining@7.24.6': - resolution: {integrity: sha512-cHbqF6l1QP11OkYTYQ+hhVx1E017O5ZcSPXk9oODpqhcAD1htsWG2NpHrrhthEO2qZomLK0FXS+u7NfrkF5aOQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-parameters@7.24.6': - resolution: {integrity: sha512-ST7guE8vLV+vI70wmAxuZpIKzVjvFX9Qs8bl5w6tN/6gOypPWUmMQL2p7LJz5E63vEGrDhAiYetniJFyBH1RkA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-private-methods@7.23.3': - resolution: {integrity: sha512-UzqRcRtWsDMTLrRWFvUBDwmw06tCQH9Rl1uAjfh6ijMSmGYQ+fpdB+cnqRC8EMh5tuuxSv0/TejGL+7vyj+50g==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-private-methods@7.24.6': - resolution: {integrity: sha512-T9LtDI0BgwXOzyXrvgLTT8DFjCC/XgWLjflczTLXyvxbnSR/gpv0hbmzlHE/kmh9nOvlygbamLKRo6Op4yB6aw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-private-property-in-object@7.24.6': - resolution: {integrity: sha512-Qu/ypFxCY5NkAnEhCF86Mvg3NSabKsh/TPpBVswEdkGl7+FbsYHy1ziRqJpwGH4thBdQHh8zx+z7vMYmcJ7iaQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-property-literals@7.24.6': - resolution: {integrity: sha512-oARaglxhRsN18OYsnPTpb8TcKQWDYNsPNmTnx5++WOAsUJ0cSC/FZVlIJCKvPbU4yn/UXsS0551CFKJhN0CaMw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-regenerator@7.24.6': - resolution: {integrity: sha512-SMDxO95I8WXRtXhTAc8t/NFQUT7VYbIWwJCJgEli9ml4MhqUMh4S6hxgH6SmAC3eAQNWCDJFxcFeEt9w2sDdXg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-reserved-words@7.24.6': - resolution: {integrity: sha512-DcrgFXRRlK64dGE0ZFBPD5egM2uM8mgfrvTMOSB2yKzOtjpGegVYkzh3s1zZg1bBck3nkXiaOamJUqK3Syk+4A==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-shorthand-properties@7.24.6': - resolution: {integrity: sha512-xnEUvHSMr9eOWS5Al2YPfc32ten7CXdH7Zwyyk7IqITg4nX61oHj+GxpNvl+y5JHjfN3KXE2IV55wAWowBYMVw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-spread@7.24.6': - resolution: {integrity: sha512-h/2j7oIUDjS+ULsIrNZ6/TKG97FgmEk1PXryk/HQq6op4XUUUwif2f69fJrzK0wza2zjCS1xhXmouACaWV5uPA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-sticky-regex@7.24.6': - resolution: {integrity: sha512-fN8OcTLfGmYv7FnDrsjodYBo1DhPL3Pze/9mIIE2MGCT1KgADYIOD7rEglpLHZj8PZlC/JFX5WcD+85FLAQusw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-template-literals@7.24.6': - resolution: {integrity: sha512-BJbEqJIcKwrqUP+KfUIkxz3q8VzXe2R8Wv8TaNgO1cx+nNavxn/2+H8kp9tgFSOL6wYPPEgFvU6IKS4qoGqhmg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-typeof-symbol@7.24.6': - resolution: {integrity: sha512-IshCXQ+G9JIFJI7bUpxTE/oA2lgVLAIK8q1KdJNoPXOpvRaNjMySGuvLfBw/Xi2/1lLo953uE8hyYSDW3TSYig==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-typescript@7.23.6': - resolution: {integrity: sha512-6cBG5mBvUu4VUD04OHKnYzbuHNP8huDsD3EDqqpIpsswTDoqHCjLoHb6+QgsV1WsT2nipRqCPgxD3LXnEO7XfA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-unicode-escapes@7.24.6': - resolution: {integrity: sha512-bKl3xxcPbkQQo5eX9LjjDpU2xYHeEeNQbOhj0iPvetSzA+Tu9q/o5lujF4Sek60CM6MgYvOS/DJuwGbiEYAnLw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-unicode-property-regex@7.24.6': - resolution: {integrity: sha512-8EIgImzVUxy15cZiPii9GvLZwsy7Vxc+8meSlR3cXFmBIl5W5Tn9LGBf7CDKkHj4uVfNXCJB8RsVfnmY61iedA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-unicode-regex@7.24.6': - resolution: {integrity: sha512-pssN6ExsvxaKU638qcWb81RrvvgZom3jDgU/r5xFZ7TONkZGFf4MhI2ltMb8OcQWhHyxgIavEU+hgqtbKOmsPA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-unicode-sets-regex@7.24.6': - resolution: {integrity: sha512-quiMsb28oXWIDK0gXLALOJRXLgICLiulqdZGOaPPd0vRT7fQp74NtdADAVu+D8s00C+0Xs0MxVP0VKF/sZEUgw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/preset-env@7.24.6': - resolution: {integrity: sha512-CrxEAvN7VxfjOG8JNF2Y/eMqMJbZPZ185amwGUBp8D9USK90xQmv7dLdFSa+VbD7fdIqcy/Mfv7WtzG8+/qxKg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/preset-flow@7.24.0': - resolution: {integrity: sha512-cum/nSi82cDaSJ21I4PgLTVlj0OXovFk6GRguJYe/IKg6y6JHLTbJhybtX4k35WT9wdeJfEVjycTixMhBHd0Dg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/preset-modules@0.1.6-no-external-plugins': - resolution: {integrity: sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==} - peerDependencies: - '@babel/core': ^7.0.0-0 || ^8.0.0-0 <8.0.0 - - '@babel/preset-typescript@7.23.3': - resolution: {integrity: sha512-17oIGVlqz6CchO9RFYn5U6ZpWRZIngayYCtrPRSgANSwC2V1Jb+iP74nVxzzXJte8b8BYxrL1yY96xfhTBrNNQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/register@7.23.7': - resolution: {integrity: sha512-EjJeB6+kvpk+Y5DAkEAmbOBEFkh9OASx0huoEkqYTFxAZHzOAX2Oh5uwAUuL2rUddqfM0SA+KPXV2TbzoZ2kvQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/regjsgen@0.8.0': - resolution: {integrity: sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==} - - '@babel/runtime@7.22.6': - resolution: {integrity: sha512-wDb5pWm4WDdF6LFUde3Jl8WzPA+3ZbxYqkC6xAXuD3irdEHN1k0NfTRrJD8ZD378SJ61miMLCqIOXYhd8x+AJQ==} - engines: {node: '>=6.9.0'} - - '@babel/runtime@7.23.6': - resolution: {integrity: sha512-zHd0eUrf5GZoOWVCXp6koAKQTfZV07eit6bGPmJgnZdnSAvvZee6zniW2XMF7Cmc4ISOOnPy3QaSiIJGJkVEDQ==} - engines: {node: '>=6.9.0'} - '@babel/runtime@7.24.7': resolution: {integrity: sha512-UwgBRMjJP+xv857DCngvqXI3Iq6J4v0wXmwc6sapg+zyhbwmQX67LUEFrkK5tbyJ30jGuG3ZvWpBiB9LCy1kWw==} engines: {node: '>=6.9.0'} - '@babel/standalone@7.23.6': - resolution: {integrity: sha512-+AzS6BZwZdSosrgS/TiGDYLxtlefARKClWgJ4ql//XfmV9KbPWbkEekvbvDRJ8a6qog8E9j3CziHLz5dbIEMyw==} - engines: {node: '>=6.9.0'} - - '@babel/template@7.22.5': - resolution: {integrity: sha512-X7yV7eiwAxdj9k94NEylvbVHLiVG1nvzCV2EAowhxLTwODV1jl9UzZ48leOC0sH7OnuHrIkllaBgneUykIcZaw==} - engines: {node: '>=6.9.0'} - '@babel/template@7.24.0': resolution: {integrity: sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA==} engines: {node: '>=6.9.0'} - '@babel/template@7.24.6': - resolution: {integrity: sha512-3vgazJlLwNXi9jhrR1ef8qiB65L1RK90+lEQwv4OxveHnqC3BfmnHdgySwRLzf6akhlOYenT+b7AfWq+a//AHw==} - engines: {node: '>=6.9.0'} - - '@babel/traverse@7.22.8': - resolution: {integrity: sha512-y6LPR+wpM2I3qJrsheCTwhIinzkETbplIgPBbwvqPKc+uljeA5gP+3nP8irdYt1mjQaDnlIcG+dw8OjAco4GXw==} - engines: {node: '>=6.9.0'} - '@babel/traverse@7.24.0': resolution: {integrity: sha512-HfuJlI8qq3dEDmNU5ChzzpZRWq+oxCZQyMzIMEqLho+AQnhMnKQUzH6ydo3RBl/YjPCuk68Y6s0Gx0AeyULiWw==} engines: {node: '>=6.9.0'} - '@babel/traverse@7.24.6': - resolution: {integrity: sha512-OsNjaJwT9Zn8ozxcfoBc+RaHdj3gFmCmYoQLUII1o6ZrUwku0BMg80FoOTPx+Gi6XhcQxAYE4xyjPTo4SxEQqw==} - engines: {node: '>=6.9.0'} - - '@babel/types@7.23.6': - resolution: {integrity: sha512-+uarb83brBzPKN38NX1MkB6vb6+mwvR6amUulqAE7ccQw1pEl+bCia9TbdG1lsnFP7lZySvUn37CHyXQdfTwzg==} - engines: {node: '>=6.9.0'} - - '@babel/types@7.24.0': - resolution: {integrity: sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w==} - engines: {node: '>=6.9.0'} - - '@babel/types@7.24.6': - resolution: {integrity: sha512-WaMsgi6Q8zMgMth93GvWPXkhAIEobfsIkLTacoVZoK1J0CevIPGYY2Vo5YvJGqyHqXM6P4ppOYGsIRU8MM9pFQ==} + '@babel/types@7.25.6': + resolution: {integrity: sha512-/l42B1qxpG6RdfYf343Uw1vmDjeNhneUXtzhojE7pDgfpEypmRhI6j1kr17XCVv4Cgl9HdAiQY2x0GwKm7rWCw==} engines: {node: '>=6.9.0'} '@bcoe/v8-coverage@0.2.3': resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} - '@chromatic-com/storybook@1.5.0': - resolution: {integrity: sha512-LkLKv7SWu/6kGep1ft2HA1T/cm14wU0zoW71gE4cZRcgUoRQJtyhITFTLHrjqAxz6bVqNgqzQtd5oBZ2nK3L3g==} + '@biomejs/biome@1.9.0': + resolution: {integrity: sha512-NlWh2F1wbxB3O/wE+aohGL0BziTS6e+6+dyFvpdeqLsbQZY7EsiklFb9W5Xs41U4vEmY7ANgdNp+oVDij6sQdA==} + engines: {node: '>=14.21.3'} + hasBin: true + + '@biomejs/cli-darwin-arm64@1.9.0': + resolution: {integrity: sha512-2w9v/NRtYSmodx5QWQ49OGcyGKSECdWKbzc7n532Iq5sBhkKk996fd19icT6BuL54f01KFKRCRibAW+A2rg1Kw==} + engines: {node: '>=14.21.3'} + cpu: [arm64] + os: [darwin] + + '@biomejs/cli-darwin-x64@1.9.0': + resolution: {integrity: sha512-fBVt8jJQi0zX0SJ1C+tdzUbRpuX/07sgtBXEhunWRkPjdi6W/2S1sYHQ1wKn4OKiRAKfHM2Cf2FNO7hQvY61dA==} + engines: {node: '>=14.21.3'} + cpu: [x64] + os: [darwin] + + '@biomejs/cli-linux-arm64-musl@1.9.0': + resolution: {integrity: sha512-Jy84mZ4vcppdmWMgQWOCfd8qIVC/vHmlaS5gy7GXkdWlBKSQ56YxEXTU58MHTbZ16LwJQpK2IulqRCC/rqWLBA==} + engines: {node: '>=14.21.3'} + cpu: [arm64] + os: [linux] + + '@biomejs/cli-linux-arm64@1.9.0': + resolution: {integrity: sha512-l8U2lcqsl9yKPP5WUdIrKH//C1pWyM2cSUfcTBn6GSvXmsSjBNEdGSdM4Wfne777Oe/9ONaD1Ga53U2HksHHLw==} + engines: {node: '>=14.21.3'} + cpu: [arm64] + os: [linux] + + '@biomejs/cli-linux-x64-musl@1.9.0': + resolution: {integrity: sha512-N3enoFoIrkB6qJWyYfTiYmFdB1R/Mrij1dd1xBHqxxCKZY9GRkEswRX3F1Uqzo5T+9Iu8nAQobDqI/ygicYy/Q==} + engines: {node: '>=14.21.3'} + cpu: [x64] + os: [linux] + + '@biomejs/cli-linux-x64@1.9.0': + resolution: {integrity: sha512-8jAzjrrJTj510pwq4aVs7ZKkOvEy1D+nzl9DKvrPh4TOyUw5Ie+0EDwXGE2RAkCKHkGNOQBZ78WtIdsATgz5sA==} + engines: {node: '>=14.21.3'} + cpu: [x64] + os: [linux] + + '@biomejs/cli-win32-arm64@1.9.0': + resolution: {integrity: sha512-AIjwJTGfdWGMRluSQ9pDB29nzce077dfHh0/HMqzztKzgD3spyuo2R9VoaFpbR0hLHPWEH6g6OxxDO7hfkXNkQ==} + engines: {node: '>=14.21.3'} + cpu: [arm64] + os: [win32] + + '@biomejs/cli-win32-x64@1.9.0': + resolution: {integrity: sha512-4/4wTjNSoyNkm1SzcUaStDx46baX1VJRXtUoeEHjX9LfedR5N3qwZz5KfrRUnCd2fl5bmXK1CwMqKBkoF6zEiA==} + engines: {node: '>=14.21.3'} + cpu: [x64] + os: [win32] + + '@cfaester/enzyme-adapter-react-18@0.8.0': + resolution: {integrity: sha512-3Z3ThTUouHwz8oIyhTYQljEMNRFtlVyc3VOOHCbxs47U6cnXs8K9ygi/c1tv49s7MBlTXeIcuN+Ttd9aPtILFQ==} + peerDependencies: + enzyme: ^3.11.0 + react: '>=18' + react-dom: '>=18' + + '@chromatic-com/storybook@2.0.2': + resolution: {integrity: sha512-7bPIliISedeIpnVKbzktysFYW5n56bN91kxuOj1XXKixmjbUHRUMvcXd4K2liN6MiR5ZqJtmtcPsZ6CebbGlEA==} engines: {node: '>=16.0.0', yarn: '>=1.22.18'} '@codemirror/autocomplete@6.16.0': @@ -3028,10 +2571,18 @@ packages: resolution: {integrity: sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==} engines: {node: '>=0.1.90'} + '@colors/colors@1.6.0': + resolution: {integrity: sha512-Ir+AOibqzrIsL6ajt3Rz3LskB7OiMVHqltZmspbW/TJuTVuyOMirVqAkjfY6JISiLHgyNqicAC8AyHHGzNd/dA==} + engines: {node: '>=0.1.90'} + '@common.js/is-network-error@1.0.1': resolution: {integrity: sha512-dkk7FX8L/JLia5pi+IQ11lCw2D6FTmbWL2iWTHgCbP40/deeXgknlkEQcQ/rOkjwQbqp8RZ4ey/anR17K66sqw==} engines: {node: '>=16'} + '@cspotcode/source-map-support@0.8.1': + resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} + engines: {node: '>=12'} + '@ctrl/tinycolor@3.6.0': resolution: {integrity: sha512-/Z3l6pXthq0JvMYdUFyX9j0MaCltlIn6mfh9jLyQwg5aPKxkyNa0PTHtU1AlFXLNk55ZuAeJRcpvq+tmLfKmaQ==} engines: {node: '>=10'} @@ -3054,12 +2605,8 @@ packages: '@dabh/diagnostics@2.0.3': resolution: {integrity: sha512-hrlQOIi7hAfzsMqlGSFyVucrx38O+j6wiGOf//H2ecvIEqYN4ADBSS2iLMh5UFyDunCNniUIPk/q3riFv45xRA==} - '@discoveryjs/json-ext@0.5.7': - resolution: {integrity: sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==} - engines: {node: '>=10.0.0'} - - '@element-plus/icons-vue@2.1.0': - resolution: {integrity: sha512-PSBn3elNoanENc1vnCfh+3WA9fimRC7n+fWkf3rE5jvv+aBohNHABC/KAR5KWPecxWxDTVT1ERpRbOMRcOV/vA==} + '@element-plus/icons-vue@2.3.1': + resolution: {integrity: sha512-XxVUZv48RZAd87ucGS48jPf6pKu0yV5UCg9f4FFwtrYxXOwWuVJo6wOvSLKEoMQKjv8GsX/mhP6UsC1lRwbUWg==} peerDependencies: vue: ^3.2.0 @@ -3072,146 +2619,147 @@ packages: '@emotion/unitless@0.8.0': resolution: {integrity: sha512-VINS5vEYAscRl2ZUDiT3uMPlrFQupiKgHz5AA4bCH1miKBg4qtwkim1qPmJj/4WG6TreYMY111rEFsjupcOKHw==} - '@emotion/use-insertion-effect-with-fallbacks@1.0.1': - resolution: {integrity: sha512-jT/qyKZ9rzLErtrjGgdkMBn2OP8wl0G3sQlBb3YPryvKHsjvINUhVaPFfP+fpBcOkmrVOVEEHQFJ7nbj2TH2gw==} - peerDependencies: - react: '>=16.8.0' - - '@esbuild/aix-ppc64@0.20.2': - resolution: {integrity: sha512-D+EBOJHXdNZcLJRBkhENNG8Wji2kgc9AZ9KiPr1JuZjsNtyHzrsfLRrY0tk2H2aoFu6RANO1y1iPPUCDYWkb5g==} - engines: {node: '>=12'} + '@esbuild/aix-ppc64@0.24.0': + resolution: {integrity: sha512-WtKdFM7ls47zkKHFVzMz8opM7LkcsIp9amDUBIAWirg70RM71WRSjdILPsY5Uv1D42ZpUfaPILDlfactHgsRkw==} + engines: {node: '>=18'} cpu: [ppc64] os: [aix] - '@esbuild/android-arm64@0.20.2': - resolution: {integrity: sha512-mRzjLacRtl/tWU0SvD8lUEwb61yP9cqQo6noDZP/O8VkwafSYwZ4yWy24kan8jE/IMERpYncRt2dw438LP3Xmg==} - engines: {node: '>=12'} + '@esbuild/android-arm64@0.24.0': + resolution: {integrity: sha512-Vsm497xFM7tTIPYK9bNTYJyF/lsP590Qc1WxJdlB6ljCbdZKU9SY8i7+Iin4kyhV/KV5J2rOKsBQbB77Ab7L/w==} + engines: {node: '>=18'} cpu: [arm64] os: [android] - '@esbuild/android-arm@0.20.2': - resolution: {integrity: sha512-t98Ra6pw2VaDhqNWO2Oph2LXbz/EJcnLmKLGBJwEwXX/JAN83Fym1rU8l0JUWK6HkIbWONCSSatf4sf2NBRx/w==} - engines: {node: '>=12'} + '@esbuild/android-arm@0.24.0': + resolution: {integrity: sha512-arAtTPo76fJ/ICkXWetLCc9EwEHKaeya4vMrReVlEIUCAUncH7M4bhMQ+M9Vf+FFOZJdTNMXNBrWwW+OXWpSew==} + engines: {node: '>=18'} cpu: [arm] os: [android] - '@esbuild/android-x64@0.20.2': - resolution: {integrity: sha512-btzExgV+/lMGDDa194CcUQm53ncxzeBrWJcncOBxuC6ndBkKxnHdFJn86mCIgTELsooUmwUm9FkhSp5HYu00Rg==} - engines: {node: '>=12'} + '@esbuild/android-x64@0.24.0': + resolution: {integrity: sha512-t8GrvnFkiIY7pa7mMgJd7p8p8qqYIz1NYiAoKc75Zyv73L3DZW++oYMSHPRarcotTKuSs6m3hTOa5CKHaS02TQ==} + engines: {node: '>=18'} cpu: [x64] os: [android] - '@esbuild/darwin-arm64@0.20.2': - resolution: {integrity: sha512-4J6IRT+10J3aJH3l1yzEg9y3wkTDgDk7TSDFX+wKFiWjqWp/iCfLIYzGyasx9l0SAFPT1HwSCR+0w/h1ES/MjA==} - engines: {node: '>=12'} + '@esbuild/darwin-arm64@0.24.0': + resolution: {integrity: sha512-CKyDpRbK1hXwv79soeTJNHb5EiG6ct3efd/FTPdzOWdbZZfGhpbcqIpiD0+vwmpu0wTIL97ZRPZu8vUt46nBSw==} + engines: {node: '>=18'} cpu: [arm64] os: [darwin] - '@esbuild/darwin-x64@0.20.2': - resolution: {integrity: sha512-tBcXp9KNphnNH0dfhv8KYkZhjc+H3XBkF5DKtswJblV7KlT9EI2+jeA8DgBjp908WEuYll6pF+UStUCfEpdysA==} - engines: {node: '>=12'} + '@esbuild/darwin-x64@0.24.0': + resolution: {integrity: sha512-rgtz6flkVkh58od4PwTRqxbKH9cOjaXCMZgWD905JOzjFKW+7EiUObfd/Kav+A6Gyud6WZk9w+xu6QLytdi2OA==} + engines: {node: '>=18'} cpu: [x64] os: [darwin] - '@esbuild/freebsd-arm64@0.20.2': - resolution: {integrity: sha512-d3qI41G4SuLiCGCFGUrKsSeTXyWG6yem1KcGZVS+3FYlYhtNoNgYrWcvkOoaqMhwXSMrZRl69ArHsGJ9mYdbbw==} - engines: {node: '>=12'} + '@esbuild/freebsd-arm64@0.24.0': + resolution: {integrity: sha512-6Mtdq5nHggwfDNLAHkPlyLBpE5L6hwsuXZX8XNmHno9JuL2+bg2BX5tRkwjyfn6sKbxZTq68suOjgWqCicvPXA==} + engines: {node: '>=18'} cpu: [arm64] os: [freebsd] - '@esbuild/freebsd-x64@0.20.2': - resolution: {integrity: sha512-d+DipyvHRuqEeM5zDivKV1KuXn9WeRX6vqSqIDgwIfPQtwMP4jaDsQsDncjTDDsExT4lR/91OLjRo8bmC1e+Cw==} - engines: {node: '>=12'} + '@esbuild/freebsd-x64@0.24.0': + resolution: {integrity: sha512-D3H+xh3/zphoX8ck4S2RxKR6gHlHDXXzOf6f/9dbFt/NRBDIE33+cVa49Kil4WUjxMGW0ZIYBYtaGCa2+OsQwQ==} + engines: {node: '>=18'} cpu: [x64] os: [freebsd] - '@esbuild/linux-arm64@0.20.2': - resolution: {integrity: sha512-9pb6rBjGvTFNira2FLIWqDk/uaf42sSyLE8j1rnUpuzsODBq7FvpwHYZxQ/It/8b+QOS1RYfqgGFNLRI+qlq2A==} - engines: {node: '>=12'} + '@esbuild/linux-arm64@0.24.0': + resolution: {integrity: sha512-TDijPXTOeE3eaMkRYpcy3LarIg13dS9wWHRdwYRnzlwlA370rNdZqbcp0WTyyV/k2zSxfko52+C7jU5F9Tfj1g==} + engines: {node: '>=18'} cpu: [arm64] os: [linux] - '@esbuild/linux-arm@0.20.2': - resolution: {integrity: sha512-VhLPeR8HTMPccbuWWcEUD1Az68TqaTYyj6nfE4QByZIQEQVWBB8vup8PpR7y1QHL3CpcF6xd5WVBU/+SBEvGTg==} - engines: {node: '>=12'} + '@esbuild/linux-arm@0.24.0': + resolution: {integrity: sha512-gJKIi2IjRo5G6Glxb8d3DzYXlxdEj2NlkixPsqePSZMhLudqPhtZ4BUrpIuTjJYXxvF9njql+vRjB2oaC9XpBw==} + engines: {node: '>=18'} cpu: [arm] os: [linux] - '@esbuild/linux-ia32@0.20.2': - resolution: {integrity: sha512-o10utieEkNPFDZFQm9CoP7Tvb33UutoJqg3qKf1PWVeeJhJw0Q347PxMvBgVVFgouYLGIhFYG0UGdBumROyiig==} - engines: {node: '>=12'} + '@esbuild/linux-ia32@0.24.0': + resolution: {integrity: sha512-K40ip1LAcA0byL05TbCQ4yJ4swvnbzHscRmUilrmP9Am7//0UjPreh4lpYzvThT2Quw66MhjG//20mrufm40mA==} + engines: {node: '>=18'} cpu: [ia32] os: [linux] - '@esbuild/linux-loong64@0.20.2': - resolution: {integrity: sha512-PR7sp6R/UC4CFVomVINKJ80pMFlfDfMQMYynX7t1tNTeivQ6XdX5r2XovMmha/VjR1YN/HgHWsVcTRIMkymrgQ==} - engines: {node: '>=12'} + '@esbuild/linux-loong64@0.24.0': + resolution: {integrity: sha512-0mswrYP/9ai+CU0BzBfPMZ8RVm3RGAN/lmOMgW4aFUSOQBjA31UP8Mr6DDhWSuMwj7jaWOT0p0WoZ6jeHhrD7g==} + engines: {node: '>=18'} cpu: [loong64] os: [linux] - '@esbuild/linux-mips64el@0.20.2': - resolution: {integrity: sha512-4BlTqeutE/KnOiTG5Y6Sb/Hw6hsBOZapOVF6njAESHInhlQAghVVZL1ZpIctBOoTFbQyGW+LsVYZ8lSSB3wkjA==} - engines: {node: '>=12'} + '@esbuild/linux-mips64el@0.24.0': + resolution: {integrity: sha512-hIKvXm0/3w/5+RDtCJeXqMZGkI2s4oMUGj3/jM0QzhgIASWrGO5/RlzAzm5nNh/awHE0A19h/CvHQe6FaBNrRA==} + engines: {node: '>=18'} cpu: [mips64el] os: [linux] - '@esbuild/linux-ppc64@0.20.2': - resolution: {integrity: sha512-rD3KsaDprDcfajSKdn25ooz5J5/fWBylaaXkuotBDGnMnDP1Uv5DLAN/45qfnf3JDYyJv/ytGHQaziHUdyzaAg==} - engines: {node: '>=12'} + '@esbuild/linux-ppc64@0.24.0': + resolution: {integrity: sha512-HcZh5BNq0aC52UoocJxaKORfFODWXZxtBaaZNuN3PUX3MoDsChsZqopzi5UupRhPHSEHotoiptqikjN/B77mYQ==} + engines: {node: '>=18'} cpu: [ppc64] os: [linux] - '@esbuild/linux-riscv64@0.20.2': - resolution: {integrity: sha512-snwmBKacKmwTMmhLlz/3aH1Q9T8v45bKYGE3j26TsaOVtjIag4wLfWSiZykXzXuE1kbCE+zJRmwp+ZbIHinnVg==} - engines: {node: '>=12'} + '@esbuild/linux-riscv64@0.24.0': + resolution: {integrity: sha512-bEh7dMn/h3QxeR2KTy1DUszQjUrIHPZKyO6aN1X4BCnhfYhuQqedHaa5MxSQA/06j3GpiIlFGSsy1c7Gf9padw==} + engines: {node: '>=18'} cpu: [riscv64] os: [linux] - '@esbuild/linux-s390x@0.20.2': - resolution: {integrity: sha512-wcWISOobRWNm3cezm5HOZcYz1sKoHLd8VL1dl309DiixxVFoFe/o8HnwuIwn6sXre88Nwj+VwZUvJf4AFxkyrQ==} - engines: {node: '>=12'} + '@esbuild/linux-s390x@0.24.0': + resolution: {integrity: sha512-ZcQ6+qRkw1UcZGPyrCiHHkmBaj9SiCD8Oqd556HldP+QlpUIe2Wgn3ehQGVoPOvZvtHm8HPx+bH20c9pvbkX3g==} + engines: {node: '>=18'} cpu: [s390x] os: [linux] - '@esbuild/linux-x64@0.20.2': - resolution: {integrity: sha512-1MdwI6OOTsfQfek8sLwgyjOXAu+wKhLEoaOLTjbijk6E2WONYpH9ZU2mNtR+lZ2B4uwr+usqGuVfFT9tMtGvGw==} - engines: {node: '>=12'} + '@esbuild/linux-x64@0.24.0': + resolution: {integrity: sha512-vbutsFqQ+foy3wSSbmjBXXIJ6PL3scghJoM8zCL142cGaZKAdCZHyf+Bpu/MmX9zT9Q0zFBVKb36Ma5Fzfa8xA==} + engines: {node: '>=18'} cpu: [x64] os: [linux] - '@esbuild/netbsd-x64@0.20.2': - resolution: {integrity: sha512-K8/DhBxcVQkzYc43yJXDSyjlFeHQJBiowJ0uVL6Tor3jGQfSGHNNJcWxNbOI8v5k82prYqzPuwkzHt3J1T1iZQ==} - engines: {node: '>=12'} + '@esbuild/netbsd-x64@0.24.0': + resolution: {integrity: sha512-hjQ0R/ulkO8fCYFsG0FZoH+pWgTTDreqpqY7UnQntnaKv95uP5iW3+dChxnx7C3trQQU40S+OgWhUVwCjVFLvg==} + engines: {node: '>=18'} cpu: [x64] os: [netbsd] - '@esbuild/openbsd-x64@0.20.2': - resolution: {integrity: sha512-eMpKlV0SThJmmJgiVyN9jTPJ2VBPquf6Kt/nAoo6DgHAoN57K15ZghiHaMvqjCye/uU4X5u3YSMgVBI1h3vKrQ==} - engines: {node: '>=12'} + '@esbuild/openbsd-arm64@0.24.0': + resolution: {integrity: sha512-MD9uzzkPQbYehwcN583yx3Tu5M8EIoTD+tUgKF982WYL9Pf5rKy9ltgD0eUgs8pvKnmizxjXZyLt0z6DC3rRXg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + + '@esbuild/openbsd-x64@0.24.0': + resolution: {integrity: sha512-4ir0aY1NGUhIC1hdoCzr1+5b43mw99uNwVzhIq1OY3QcEwPDO3B7WNXBzaKY5Nsf1+N11i1eOfFcq+D/gOS15Q==} + engines: {node: '>=18'} cpu: [x64] os: [openbsd] - '@esbuild/sunos-x64@0.20.2': - resolution: {integrity: sha512-2UyFtRC6cXLyejf/YEld4Hajo7UHILetzE1vsRcGL3earZEW77JxrFjH4Ez2qaTiEfMgAXxfAZCm1fvM/G/o8w==} - engines: {node: '>=12'} + '@esbuild/sunos-x64@0.24.0': + resolution: {integrity: sha512-jVzdzsbM5xrotH+W5f1s+JtUy1UWgjU0Cf4wMvffTB8m6wP5/kx0KiaLHlbJO+dMgtxKV8RQ/JvtlFcdZ1zCPA==} + engines: {node: '>=18'} cpu: [x64] os: [sunos] - '@esbuild/win32-arm64@0.20.2': - resolution: {integrity: sha512-GRibxoawM9ZCnDxnP3usoUDO9vUkpAxIIZ6GQI+IlVmr5kP3zUq+l17xELTHMWTWzjxa2guPNyrpq1GWmPvcGQ==} - engines: {node: '>=12'} + '@esbuild/win32-arm64@0.24.0': + resolution: {integrity: sha512-iKc8GAslzRpBytO2/aN3d2yb2z8XTVfNV0PjGlCxKo5SgWmNXx82I/Q3aG1tFfS+A2igVCY97TJ8tnYwpUWLCA==} + engines: {node: '>=18'} cpu: [arm64] os: [win32] - '@esbuild/win32-ia32@0.20.2': - resolution: {integrity: sha512-HfLOfn9YWmkSKRQqovpnITazdtquEW8/SoHW7pWpuEeguaZI4QnCRW6b+oZTztdBnZOS2hqJ6im/D5cPzBTTlQ==} - engines: {node: '>=12'} + '@esbuild/win32-ia32@0.24.0': + resolution: {integrity: sha512-vQW36KZolfIudCcTnaTpmLQ24Ha1RjygBo39/aLkM2kmjkWmZGEJ5Gn9l5/7tzXA42QGIoWbICfg6KLLkIw6yw==} + engines: {node: '>=18'} cpu: [ia32] os: [win32] - '@esbuild/win32-x64@0.20.2': - resolution: {integrity: sha512-N49X4lJX27+l9jbLKSqZ6bKNjzQvHaT8IIFUy+YIqmXQdjYCToGWwOItDrfby14c78aDd5NHQl29xingXfCdLQ==} - engines: {node: '>=12'} + '@esbuild/win32-x64@0.24.0': + resolution: {integrity: sha512-7IAFPrjSQIJrGsK6flwg7NFmwBoSTyF3rl7If0hNUFQU4ilTsEPL6GuMuU9BfIWVVGuRnuIidkSMC+c0Otu8IA==} + engines: {node: '>=18'} cpu: [x64] os: [win32] @@ -3243,9 +2791,6 @@ packages: resolution: {integrity: sha512-Uo3pGspElQW91PCvKSIAXoEgAUlRnH29sX2/p89kg7sP1m2PzCufHINd0FhTXQf6DYGiUlVncdSPa2F9wxed2A==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0, npm: '>=6.14.13'} - '@fal-works/esbuild-plugin-global-externals@2.1.2': - resolution: {integrity: sha512-cEee/Z+I12mZcFJshKcCqC8tuX5hG3s+d+9nZ3LabqKF1vKdF41B92pJVCBggjAGORAeOzyyDDKrZwIkLffeOQ==} - '@fastify/busboy@2.0.0': resolution: {integrity: sha512-JUFJad5lv7jxj926GPgymrWQxxjPYuJNiNjNMzqT+HiuP6Vl3dk5xzG+8sTX96np0ZAluvaMzPsjhHZ5rNuNQQ==} engines: {node: '>=14'} @@ -3288,32 +2833,51 @@ packages: '@gar/promisify@1.1.3': resolution: {integrity: sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==} + '@getzep/zep-cloud@1.0.12': + resolution: {integrity: sha512-bqs8zetYaducNneOq9kU1ciW8IfuiPzGOGqLUwFLv0982bobe4HsZTKeY1/Pt0bQUf6/V1VWYT8vFHSCj/qy4A==} + peerDependencies: + '@langchain/core': '>=0.1.29 <0.4.0' + langchain: '>=0.1.19 <0.4.0' + peerDependenciesMeta: + '@langchain/core': + optional: true + langchain: + optional: true + '@getzep/zep-js@0.9.0': resolution: {integrity: sha512-GNaH7EwAisAaMuaUZzOR3hk3yTc7LXrqboPfSN6mZE0rAWGHOjT7V53Hec6yFJqFyXs4/7DsJvZlOcs+gEygNQ==} engines: {node: '>=18.0.0'} - '@google-ai/generativelanguage@2.5.0': - resolution: {integrity: sha512-M3ihN10el2mfoDWdnpzWNv8vcoqKFNmDaY7IviujAv5c+/p8kSwvjk2haTcOQ8lQOiihAWX3I7YtP1K4UaGnyA==} + '@google-ai/generativelanguage@2.6.0': + resolution: {integrity: sha512-T2tULO1/j4Gs1oYF9OMKCGXHE/m7aCPUonav32iu+sA4nN+acy5Z+Sz6yR4EzL+LkPSfkeW0FOjeRGkl5xtwvw==} engines: {node: '>=14.0.0'} - '@google-cloud/paginator@3.0.7': - resolution: {integrity: sha512-jJNutk0arIQhmpUUQJPJErsojqo834KcyB6X7a1mxuic8i1tKXxde8E69IZxNZawRIlZdIK2QY4WALvlK5MzYQ==} - engines: {node: '>=10'} + '@google-cloud/paginator@5.0.2': + resolution: {integrity: sha512-DJS3s0OVH4zFDB1PzjxAsHqJT6sKVbRwwML0ZBP9PbU7Yebtu/7SWMRzvO2J3nUi9pRNITCfu4LJeooM2w4pjg==} + engines: {node: '>=14.0.0'} - '@google-cloud/projectify@3.0.0': - resolution: {integrity: sha512-HRkZsNmjScY6Li8/kb70wjGlDDyLkVk3KvoEo9uIoxSjYLJasGiCch9+PqRVDOCGUFvEIqyogl+BeqILL4OJHA==} - engines: {node: '>=12.0.0'} + '@google-cloud/projectify@4.0.0': + resolution: {integrity: sha512-MmaX6HeSvyPbWGwFq7mXdo0uQZLGBYCwziiLIGq5JVX+/bdI3SAq6bP98trV5eTWfLuvsMcIC1YJOF2vfteLFA==} + engines: {node: '>=14.0.0'} - '@google-cloud/promisify@3.0.1': - resolution: {integrity: sha512-z1CjRjtQyBOYL+5Qr9DdYIfrdLBe746jRTYfaYU6MeXkqp7UfYs/jX16lFFVzZ7PGEJvqZNqYUEtb1mvDww4pA==} - engines: {node: '>=12'} + '@google-cloud/promisify@4.0.0': + resolution: {integrity: sha512-Orxzlfb9c67A15cq2JQEyVc7wEsmFBmHjZWZYQMUyJ1qivXyMwdyNOs9odi79hze+2zqdTtu1E19IM/FtqZ10g==} + engines: {node: '>=14'} - '@google-cloud/storage@6.11.0': - resolution: {integrity: sha512-p5VX5K2zLTrMXlKdS1CiQNkKpygyn7CBFm5ZvfhVj6+7QUsjWvYx9YDMkYXdarZ6JDt4cxiu451y9QUIH82ZTw==} - engines: {node: '>=12'} + '@google-cloud/resource-manager@5.3.0': + resolution: {integrity: sha512-uWJJf6S2PJL7oZ4ezv16aZl9+IJqPo5GzUv1pZ3/qRiMj13p0ylEgX1+LxBpX71eEPKTwMHoJV2IBBe3EAq7Xw==} + engines: {node: '>=14.0.0'} - '@google/generative-ai@0.11.4': - resolution: {integrity: sha512-hlw+E9Prv9aUIQISRnLSXi4rukFqKe5WhxPvzBccTvIvXjw2BHMFOJWSC/Gq7WE0W+L/qRHGmYxopmx9qjrB9w==} + '@google-cloud/secret-manager@5.6.0': + resolution: {integrity: sha512-0daW/OXQEVc6VQKPyJTQNyD+563I/TYQ7GCQJx4dq3lB666R9FUPvqHx9b/o/qQtZ5pfuoCbGZl3krpxgTSW8Q==} + engines: {node: '>=14.0.0'} + + '@google-cloud/storage@7.12.1': + resolution: {integrity: sha512-Z3ZzOnF3YKLuvpkvF+TjQ6lztxcAyTILp+FjKonmVpEwPa9vFvxpZjubLR4sB6bf19i/8HL2AXRjA0YFgHFRmQ==} + engines: {node: '>=14'} + + '@google/generative-ai@0.19.0': + resolution: {integrity: sha512-iGf/62v3sTwtEJGJY6S5m7PfkglU8hi1URaxqIjiRg1OItV27xyc4aVeR0og8cDkZFkUlGZKv+23bJtT1QWFzQ==} engines: {node: '>=18.0.0'} '@google/generative-ai@0.7.1': @@ -3324,11 +2888,6 @@ packages: resolution: {integrity: sha512-vYVqYzHicDqyKB+NQhAc54I1QWCBLCrYG6unqOIcBTHx+7x8C9lcoLj3KVJXs2VB4lUbpWY+Kk9NipcbXYWmvg==} engines: {node: '>=12.10.0'} - '@grpc/proto-loader@0.7.10': - resolution: {integrity: sha512-CAqDfoaQ8ykFd9zqBDn4k6iWT9loLAlc2ETmDFS9JCD70gDcnA4L3AFEo2iV7KyAtAAHFW9ftq1Fz+Vsgq80RQ==} - engines: {node: '>=6'} - hasBin: true - '@grpc/proto-loader@0.7.13': resolution: {integrity: sha512-AiXO/bfe9bmxBjxxtYxFAXGZvMaN5s8kO+jBHAJCON8rJoB5YS/D6X7ZNc6XQkuHNmyl4CYaMI1fJ/Gn27RGGw==} engines: {node: '>=6'} @@ -3340,16 +2899,17 @@ packages: '@hapi/topo@5.1.0': resolution: {integrity: sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==} - '@huggingface/inference@2.7.0': - resolution: {integrity: sha512-u7Fn637Q3f7nUB1tajM4CgzhvoFQkOQr5W5Fm+2wT9ETgGoLBh25BLlYPTJRjAd2WY01s71v0lqAwNvHHCc3mg==} + '@huggingface/inference@2.8.0': + resolution: {integrity: sha512-Ti681P1qckcCAqgzmL53jBnluPuZGelmMIuXNjgAwC5+RIjF4S0SDQu6oy44ZTwekwNp2ETaZ2sXsOk+45aC4w==} engines: {node: '>=18'} - '@huggingface/tasks@0.10.8': - resolution: {integrity: sha512-oIp9912FwByyyyxkB/CIiW203QxPeYzBG7dydLmqZdcW0ma0if1uklGumqkJ6y/rJlv7AR/jJ9wbee0Wl5YZTw==} + '@huggingface/tasks@0.11.13': + resolution: {integrity: sha512-TqFEyFtKYAYwDg9h4XQMzoSxN2NMpwSnerPBx7Y4RbM1nHLM+CTXAUHcDY+hydcA5CoDDaBGzkHw+mttY3AmFQ==} '@humanwhocodes/config-array@0.11.14': resolution: {integrity: sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==} engines: {node: '>=10.10.0'} + deprecated: Use @eslint/config-array instead '@humanwhocodes/module-importer@1.0.1': resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} @@ -3357,6 +2917,7 @@ packages: '@humanwhocodes/object-schema@2.0.2': resolution: {integrity: sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==} + deprecated: Use @eslint/object-schema instead '@icetee/ftp@0.3.15': resolution: {integrity: sha512-RxSa9VjcDWgWCYsaLdZItdCnJj7p4LxggaEk+Y3MP0dHKoxez8ioG07DVekVbZZqccsrL+oPB/N9AzVPxj4blg==} @@ -3365,11 +2926,14 @@ packages: '@iconify-json/mdi@1.1.63': resolution: {integrity: sha512-b07dRM5LYdwJqd/lm+1+JDNDNSWHvpZ7ujb73oJxx3lmK1J0giDS0BSc4yia0hixNV0Z2q/4GyxAu/A8XqDnbg==} + '@iconify/json@2.2.230': + resolution: {integrity: sha512-SbwqcrYfHMnH7Na3S5RNNUdZvX0cLqgkONVMzI8BOfgVCQSY3tXHyHqeu2VkVoxJX9OcHMmfjeavpno7/y3Mfw==} + '@iconify/types@2.0.0': resolution: {integrity: sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==} - '@iconify/utils@2.1.11': - resolution: {integrity: sha512-M/w3PkN8zQYXi8N6qK/KhnYMfEbbb6Sk8RZVn8g+Pmmu5ybw177RpsaGwpziyHeUsu4etrexYSWq3rwnIqzYCg==} + '@iconify/utils@2.1.25': + resolution: {integrity: sha512-Y+iGko8uv/Fz5bQLLJyNSZGOdMW0G7cnlEX1CiNcKsRXX9cq/y/vwxrIAtLCZhKHr3m0VJmsjVPsvnM4uX8YLg==} '@intlify/core-base@9.2.2': resolution: {integrity: sha512-JjUpQtNfn+joMbrXvpR4hTF8iJQ2sEFzzK3KIESOx+f+uwIjgw20igOyaIdhfsVVBCds8ZM64MoeNSx+PHQMkA==} @@ -3483,10 +3047,6 @@ packages: resolution: {integrity: sha512-tPKQNMPuXgvdOn2/Lg9HNfUvjYVGolt04Hp03f5hAk878uwOLikN+JzeLY0HcVgKgFl9Hs3EIqpu3WX27XNhnw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - '@jridgewell/gen-mapping@0.3.2': - resolution: {integrity: sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==} - engines: {node: '>=6.0.0'} - '@jridgewell/gen-mapping@0.3.5': resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} engines: {node: '>=6.0.0'} @@ -3495,35 +3055,39 @@ packages: resolution: {integrity: sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==} engines: {node: '>=6.0.0'} - '@jridgewell/set-array@1.1.2': - resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} + '@jridgewell/resolve-uri@3.1.2': + resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} engines: {node: '>=6.0.0'} '@jridgewell/set-array@1.2.1': resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} engines: {node: '>=6.0.0'} - '@jridgewell/source-map@0.3.2': - resolution: {integrity: sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==} - - '@jridgewell/sourcemap-codec@1.4.14': - resolution: {integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==} + '@jridgewell/source-map@0.3.6': + resolution: {integrity: sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==} '@jridgewell/sourcemap-codec@1.4.15': resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} - '@jridgewell/trace-mapping@0.3.18': - resolution: {integrity: sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==} + '@jridgewell/sourcemap-codec@1.5.0': + resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} '@jridgewell/trace-mapping@0.3.25': resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} + '@jridgewell/trace-mapping@0.3.9': + resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} + '@js-joda/core@5.6.1': resolution: {integrity: sha512-Xla/d7ZMMR6+zRd6lTio0wRZECfcfFJP7GGe9A9L4tDOlD5CX4YcZ4YZle9w58bBYzssojVapI84RraKWDQZRg==} '@js-sdsl/ordered-map@4.4.2': resolution: {integrity: sha512-iUKgm52T8HOE/makSxjqoWhe95ZJA1/G1sYsGev2JDKUSS14KAgg1LHb+Ba+IPow0xflbnSkOsZcO08C7w1gYw==} + '@jsdevtools/ez-spawn@3.0.4': + resolution: {integrity: sha512-f5DRIOZf7wxogefH03RjMPMdBF7ADTWUMoOs9kaJo06EfwF+aFhMZMDZxHg/Xe12hptN9xoZjGso2fdjapBRIA==} + engines: {node: '>=10'} + '@jsdevtools/ono@7.1.3': resolution: {integrity: sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg==} @@ -3554,20 +3118,31 @@ packages: '@kwsites/promise-deferred@1.1.1': resolution: {integrity: sha512-GaHYm+c0O9MjZRu0ongGBRbinu8gVAMd2UZjji6jVmqKtZluZnptXGWhz1E8j8D2HJ3f/yMxKAUC0b+57wncIw==} - '@langchain/anthropic@0.1.21': - resolution: {integrity: sha512-7L5UDhO93UYfBwdaGxIqc5ZGSQ4wgMyYdENflLYhA9Aeho+BSHd0Krqh6zEHNGy4p+OrCElyDy58G8yiDEpxvw==} - engines: {node: '>=18'} - - '@langchain/cohere@0.0.10': - resolution: {integrity: sha512-qGeYeDKu6Itago3uSmVPjYD7BjHnA5miCYT3v4oRTXz2mDON4IrQit6Uk5dERLSrMKOrHCnRE9LYJEAyvo0s0Q==} - engines: {node: '>=18'} - - '@langchain/community@0.2.2': - resolution: {integrity: sha512-TtlZnPBYt7Sujc1hAYvdZKUmV97wuF15O7b4nBX4lBfQeW38N0DwGbhqpitDbpaJqZ2s8DM4rjapECk0kIdAww==} + '@langchain/anthropic@0.3.1': + resolution: {integrity: sha512-mE2zfv2IeogDgP53IYlfqZuXbmACkQDtBkg1Nriasrzvr1g+1Q85pfyUCnxc05p4S2IplbJhvoBtgdQUTGenqw==} engines: {node: '>=18'} peerDependencies: + '@langchain/core': '>=0.2.21 <0.4.0' + + '@langchain/aws@0.1.0': + resolution: {integrity: sha512-EIrDmR7wvo9PdcITjBJ0PnNSblgOLOxmBwX0uhfdxFA4AYmp1i4peaFcLqCrziMqR1w4Ndr2+soPFkghuKRX2Q==} + engines: {node: '>=18'} + peerDependencies: + '@langchain/core': '>=0.2.21 <0.4.0' + + '@langchain/cohere@0.3.0': + resolution: {integrity: sha512-JlevgVK4oUwHiPcP7Xw55Xlp8FdbCsjDuWbcjWgeYcdTTH1sIItG/nDREZa8Z+MfXYca2njk4sZjCIuGsY7fVA==} + engines: {node: '>=18'} + peerDependencies: + '@langchain/core': '>=0.2.21 <0.4.0' + + '@langchain/community@0.3.2': + resolution: {integrity: sha512-NoniVM+LUJC3zTPEe1l5cSzr//iDhpKP92Q3LEsV0l168AtrwHxmOvN6MgT0xfM4BouyPlILHX28NSADUC2AXQ==} + engines: {node: '>=18'} + peerDependencies: + '@arcjet/redact': ^v1.0.0-alpha.23 '@aws-crypto/sha256-js': ^5.0.0 - '@aws-sdk/client-bedrock-agent-runtime': ^3.485.0 + '@aws-sdk/client-bedrock-agent-runtime': ^3.583.0 '@aws-sdk/client-bedrock-runtime': ^3.422.0 '@aws-sdk/client-dynamodb': ^3.310.0 '@aws-sdk/client-kendra': ^3.352.0 @@ -3584,16 +3159,18 @@ packages: '@datastax/astra-db-ts': ^1.0.0 '@elastic/elasticsearch': ^8.4.0 '@getmetal/metal-sdk': '*' + '@getzep/zep-cloud': ^1.0.6 '@getzep/zep-js': ^0.9.0 '@gomomento/sdk': ^1.51.1 '@gomomento/sdk-core': ^1.51.1 - '@google-ai/generativelanguage': ^0.2.1 + '@google-ai/generativelanguage': '*' '@google-cloud/storage': ^6.10.1 || ^7.7.0 '@gradientai/nodejs-sdk': ^1.2.0 '@huggingface/inference': ^2.6.4 + '@langchain/core': '>=0.2.21 <0.4.0' '@layerup/layerup-security': ^1.5.12 '@mendable/firecrawl-js': ^0.0.13 - '@mlc-ai/web-llm': ^0.2.35 + '@mlc-ai/web-llm': '*' '@mozilla/readability': '*' '@neondatabase/serverless': '*' '@notionhq/client': ^2.2.10 @@ -3609,22 +3186,22 @@ packages: '@smithy/signature-v4': ^2.0.10 '@smithy/util-utf8': ^2.0.0 '@spider-cloud/spider-client': ^0.0.21 - '@supabase/postgrest-js': ^1.1.1 - '@supabase/supabase-js': ^2.10.0 + '@supabase/supabase-js': ^2.45.0 '@tensorflow-models/universal-sentence-encoder': '*' '@tensorflow/tfjs-converter': '*' '@tensorflow/tfjs-core': '*' + '@upstash/ratelimit': ^1.1.3 '@upstash/redis': ^1.20.6 - '@upstash/vector': ^1.0.7 + '@upstash/vector': ^1.1.1 '@vercel/kv': ^0.2.3 '@vercel/postgres': ^0.5.0 '@writerai/writer-sdk': ^0.40.2 '@xata.io/client': ^0.28.0 - '@xenova/transformers': ^2.5.4 - '@zilliz/milvus2-sdk-node': '>=2.2.7' + '@xenova/transformers': ^2.17.2 + '@zilliz/milvus2-sdk-node': '>=2.3.5' apify-client: ^2.7.1 - assemblyai: ^4.0.0 - better-sqlite3: ^9.4.0 + assemblyai: ^4.6.0 + better-sqlite3: '>=9.4.0 <12.0.0' cassandra-driver: ^4.7.2 cborg: ^4.1.1 cheerio: ^1.0.0-rc.12 @@ -3635,6 +3212,7 @@ packages: cohere-ai: '*' convex: ^1.3.1 couchbase: ^4.3.0 + crypto-js: ^4.2.0 d3-dsv: ^2.0.0 discord.js: ^14.14.1 dria: ^0.0.3 @@ -3642,8 +3220,8 @@ packages: epub2: ^3.0.1 faiss-node: ^0.5.1 firebase-admin: ^11.9.0 || ^12.0.0 - google-auth-library: ^8.9.0 - googleapis: ^126.0.1 + google-auth-library: '*' + googleapis: '*' hnswlib-node: ^3.0.0 html-to-text: ^9.0.5 ignore: ^5.2.0 @@ -3654,10 +3232,10 @@ packages: jsonwebtoken: ^9.0.2 llmonitor: ^0.5.9 lodash: ^4.17.21 - lunary: ^0.6.11 + lunary: ^0.7.10 mammoth: ^1.6.0 mongodb: '>=5.2.0' - mysql2: ^3.3.3 + mysql2: ^3.9.8 neo4j-driver: '*' node-llama-cpp: '*' notion-to-md: ^3.1.0 @@ -3668,12 +3246,13 @@ packages: pickleparser: ^0.2.1 playwright: ^1.32.1 portkey-ai: ^0.1.11 - puppeteer: ^19.7.2 + puppeteer: '*' + pyodide: '>=0.24.1 <0.27.0' redis: '*' - replicate: ^0.18.0 + replicate: ^0.29.4 sonix-speech-recognition: ^2.1.1 srt-parser-2: ^1.2.3 - typeorm: ^0.3.12 + typeorm: ^0.3.20 typesense: ^1.5.3 usearch: ^1.1.1 vectordb: ^0.1.4 @@ -3684,6 +3263,8 @@ packages: youtube-transcript: ^1.0.6 youtubei.js: ^9.1.0 peerDependenciesMeta: + '@arcjet/redact': + optional: true '@aws-crypto/sha256-js': optional: true '@aws-sdk/client-bedrock-agent-runtime': @@ -3720,6 +3301,8 @@ packages: optional: true '@getmetal/metal-sdk': optional: true + '@getzep/zep-cloud': + optional: true '@getzep/zep-js': optional: true '@gomomento/sdk': @@ -3770,8 +3353,6 @@ packages: optional: true '@spider-cloud/spider-client': optional: true - '@supabase/postgrest-js': - optional: true '@supabase/supabase-js': optional: true '@tensorflow-models/universal-sentence-encoder': @@ -3780,6 +3361,8 @@ packages: optional: true '@tensorflow/tfjs-core': optional: true + '@upstash/ratelimit': + optional: true '@upstash/redis': optional: true '@upstash/vector': @@ -3822,6 +3405,8 @@ packages: optional: true couchbase: optional: true + crypto-js: + optional: true d3-dsv: optional: true discord.js: @@ -3890,6 +3475,8 @@ packages: optional: true puppeteer: optional: true + pyodide: + optional: true redis: optional: true replicate: @@ -3919,37 +3506,81 @@ packages: youtubei.js: optional: true - '@langchain/core@0.2.0': - resolution: {integrity: sha512-UbCJUp9eh2JXd9AW/vhPbTgtZoMgTqJgSan5Wf/EP27X8JM65lWdCOpJW+gHyBXvabbyrZz3/EGaptTUL5gutw==} + '@langchain/core@0.3.3': + resolution: {integrity: sha512-WAtkmhbdl2T41qzimTzhb3pXCHQxO4onqxzPxgdf3KftQdTwLq0YYBDhozRMZLNAd/+cfH0ymZGaZSsnc9Ogsg==} engines: {node: '>=18'} - '@langchain/google-genai@0.0.16': - resolution: {integrity: sha512-aUHEeY7sTwxNqj7L5scvnOhNLOKPVSvf7HR6p1Y3M7BPyU63fXP7faB+qyuHmibtKU8pj+ApoXPpjRflYKSv4w==} + '@langchain/google-common@0.1.1': + resolution: {integrity: sha512-oT/6lBev/Ufkp1dJbOTJ2S7xD9c+w9CqnqKqFOSxuZJbM4G8hzJtt7PDBOGfamIwtQP8dR7ORKXs1sCl+f5Tig==} engines: {node: '>=18'} + peerDependencies: + '@langchain/core': '>=0.2.21 <0.4.0' - '@langchain/groq@0.0.12': - resolution: {integrity: sha512-qgrVBdUnK9Qe8fzMc9gmMPGzc/8swDYbQuHoqsZmeK7M3wxEPR60rKdZvbbkFzqn+1NdquyRTeVKSgihPCib5Q==} + '@langchain/google-gauth@0.1.0': + resolution: {integrity: sha512-0kps1NmaNiSl4n3lRw+7xsyhrEfIxNqBjih0kNYWPjLg55f9I9+QAlz7F1Sz/628HF1WQLFLQcBQA4geGzvenQ==} engines: {node: '>=18'} + peerDependencies: + '@langchain/core': '>=0.2.21 <0.4.0' - '@langchain/mistralai@0.0.22': - resolution: {integrity: sha512-cZ+HBz32Gq2zjkXcDs5hDnr8W0QxlRXhWAXu9zepwzLNe3aXxAD/lhz9l654o2fo89bqnuhtYgbGx8ZVYcDvCw==} + '@langchain/google-genai@0.1.0': + resolution: {integrity: sha512-6rIba77zJVMj+048tLfkCBrkFbfAMiT+AfLEsu5s+CFoFmXMiI/dbKeDL4vhUWrJVb9uL4ZZyrnl0nKxyEKYgA==} engines: {node: '>=18'} + peerDependencies: + '@langchain/core': '>=0.2.21 <0.4.0' - '@langchain/openai@0.0.33': - resolution: {integrity: sha512-hTBo9y9bHtFvMT5ySBW7TrmKhLSA91iNahigeqAFBVrLmBDz+6rzzLFc1mpq6JEAR3fZKdaUXqso3nB23jIpTw==} + '@langchain/google-vertexai@0.1.0': + resolution: {integrity: sha512-xTi5NvNGSLQl/7OTsj4QTT0DkNbZ7cYDrEB0HqpZOwo6I5dulh/h2payGVQ6hdXj7Yyv78dRc5FdQSbyHui/WQ==} engines: {node: '>=18'} + peerDependencies: + '@langchain/core': '>=0.2.21 <0.4.0' - '@langchain/pinecone@0.0.6': - resolution: {integrity: sha512-iSi+3DZwK/ocwRVNDAAzjC9oa3E4yRlcgx53GSZ/w22QdDfb5PsxQoOXeqviEwUejLsGawbbex2ip1J4LKJ4/g==} + '@langchain/groq@0.1.2': + resolution: {integrity: sha512-bgQ9yGoNHOwG6LG2ngGvSNxF/1U1c1u3vKmFWmzecFIcBoQQOJY0jb0MrL3g1uTife0Sr3zxkWKXQg2aK/U4Sg==} engines: {node: '>=18'} + peerDependencies: + '@langchain/core': '>=0.2.21 <0.4.0' - '@langchain/redis@0.0.5': - resolution: {integrity: sha512-Jleqg5nbZ4795r8ctdwawafjJs4/1gdQnpcz1VnQEBrGqPne+4jwuwBDzeMhByMBLRBB/I6jaiVs9t5wi5H7Tg==} + '@langchain/mistralai@0.1.1': + resolution: {integrity: sha512-gnHdQRfn+iBReKD0u1nydGqHgVOjnKHpd0Q2qEN61ZuxiqFOOauWYkrbyml7tzcOdMv2vUAr5+pjpXip+ez59w==} engines: {node: '>=18'} + peerDependencies: + '@langchain/core': '>=0.2.21 <0.4.0' - '@langchain/textsplitters@0.0.2': - resolution: {integrity: sha512-6bQOuYHTGYlkgPY/8M5WPq4nnXZpEysGzRopQCYjg2WLcEoIPUMMrXsAaNNdvU3BOeMrhin8izvpDPD165hX6Q==} + '@langchain/ollama@0.1.0': + resolution: {integrity: sha512-TI4DGenLf1ApoxFf4Bx/VPyO+a+poJKIul8AGm/FEyORtw3JPq1UDR6SdkGETrkDqzzdK9R0DvFRStd1MSTE/w==} engines: {node: '>=18'} + peerDependencies: + '@langchain/core': '>=0.2.21 <0.4.0' + + '@langchain/openai@0.3.0': + resolution: {integrity: sha512-yXrz5Qn3t9nq3NQAH2l4zZOI4ev2CFdLC5kvmi5SdW4bggRuM40SXTUAY3VRld4I5eocYfk82VbrlA+6dvN5EA==} + engines: {node: '>=18'} + peerDependencies: + '@langchain/core': '>=0.2.26 <0.4.0' + + '@langchain/pinecone@0.1.0': + resolution: {integrity: sha512-bxt8c4Fpdre8E7HrO8SU4nAJ2dbOpiEsFOyrJ524vUo57UkXbd5WD2v8AjFM7Wf3hH5O1elaxLVxLv8fK4c5OA==} + engines: {node: '>=18'} + peerDependencies: + '@langchain/core': '>=0.2.21 <0.4.0' + + '@langchain/qdrant@0.1.0': + resolution: {integrity: sha512-6XiURYm9ININpcPhSukCM7e3GQaUfMnJ8eAjUKOPfnBuaRNn/a5nUsg+aVQuIElKgrWn+Z6WRlFgx+wgKEWpKQ==} + engines: {node: '>=18'} + peerDependencies: + '@langchain/core': '>=0.2.21 <0.4.0' + + '@langchain/redis@0.1.0': + resolution: {integrity: sha512-nZoKUVSJjJhmYo1bOoTapaJFs8EzvJxSCGcTiZOTugpNvz8ZcBVu7Lytvdo3pQV6eHdVRlw9L5eQmMOQkFs6AA==} + engines: {node: '>=18'} + peerDependencies: + '@langchain/core': '>=0.2.21 <0.4.0' + + '@langchain/textsplitters@0.1.0': + resolution: {integrity: sha512-djI4uw9rlkAb5iMhtLED+xJebDdAG935AdP4eRTB02R7OB/act55Bj9wsskhZsvuyQRpO4O1wQOp85s6T6GWmw==} + engines: {node: '>=18'} + peerDependencies: + '@langchain/core': '>=0.2.21 <0.4.0' '@lezer/common@1.1.0': resolution: {integrity: sha512-XPIN3cYDXsoJI/oDWoR2tD++juVrhgIago9xyKhZ7IhGlzdDM9QgC8D8saKNCz5pindGcznFr2HBSsEQSWnSjw==} @@ -3988,27 +3619,27 @@ packages: '@types/react': '>=16' react: '>=16' - '@microsoft/api-extractor-model@7.28.3': - resolution: {integrity: sha512-wT/kB2oDbdZXITyDh2SQLzaWwTOFbV326fP0pUwNW00WeliARs0qjmXBWmGWardEzp2U3/axkO3Lboqun6vrig==} + '@microsoft/api-extractor-model@7.29.6': + resolution: {integrity: sha512-gC0KGtrZvxzf/Rt9oMYD2dHvtN/1KPEYsrQPyMKhLHnlVuO/f4AFN3E4toqZzD2pt4LhkKoYmL2H9tX3yCOyRw==} - '@microsoft/api-extractor@7.39.0': - resolution: {integrity: sha512-PuXxzadgnvp+wdeZFPonssRAj/EW4Gm4s75TXzPk09h3wJ8RS3x7typf95B4vwZRrPTQBGopdUl+/vHvlPdAcg==} + '@microsoft/api-extractor@7.47.7': + resolution: {integrity: sha512-fNiD3G55ZJGhPOBPMKD/enozj8yxJSYyVJWxRWdcUtw842rvthDHJgUWq9gXQTensFlMHv2wGuCjjivPv53j0A==} hasBin: true - '@microsoft/tsdoc-config@0.16.2': - resolution: {integrity: sha512-OGiIzzoBLgWWR0UdRJX98oYO+XKGf7tiK4Zk6tQ/E4IJqGCe7dvkTvgDZV5cFJUzLGDOjeAXrnZoA6QkVySuxw==} + '@microsoft/tsdoc-config@0.17.0': + resolution: {integrity: sha512-v/EYRXnCAIHxOHW+Plb6OWuUoMotxTN0GLatnpOb1xq0KuTNw/WI3pamJx/UbsoJP5k9MCw1QxvvhPcF9pH3Zg==} - '@microsoft/tsdoc@0.14.2': - resolution: {integrity: sha512-9b8mPpKrfeGRuhFH5iO1iwCLeIIsV6+H1sRfxbkoGXIyQE2BTsPd9zqSqQJ+pv5sJ/hT5M1zvOFL02MnEezFug==} + '@microsoft/tsdoc@0.15.0': + resolution: {integrity: sha512-HZpPoABogPvjeJOdzCOSJsXeL/SMCBgBZMVC3X3d7YYp2gf31MfxhUoYUNwf1ERPJOnQc0wkFn9trqI6ZEdZuA==} '@miragejs/pretender-node-polyfill@0.1.2': resolution: {integrity: sha512-M/BexG/p05C5lFfMunxo/QcgIJnMT2vDVCd00wNqK2ImZONIlEETZwWJu1QtLxtmYlSHlCFl3JNzp0tLe7OJ5g==} - '@mistralai/mistralai@0.1.3': - resolution: {integrity: sha512-WUHxC2xdeqX9PTXJEqdiNY54vT2ir72WSJrZTTBKRnkfhX6zIfCYA24faRlWjUB5WTpn+wfdGsTMl3ArijlXFA==} + '@mistralai/mistralai@0.4.0': + resolution: {integrity: sha512-KmFzNro1RKxIFh19J3osmUQhucefBBauMXN5fa9doG6dT9OHR/moBvvn+riVlR7c0AVfuxO8Dfa03AyLYYzbyg==} - '@mongodb-js/saslprep@1.1.0': - resolution: {integrity: sha512-Xfijy7HvfzzqiOAhAepF4SGN5e9leLkMvg/OPOF97XemjfVCYN/oWa75wnkc6mltMSTwY+XlbhWgUOJmkFspSw==} + '@mongodb-js/saslprep@1.1.9': + resolution: {integrity: sha512-tVkljjeEaAhCqTzajSdgbQ6gE6f3oneVwa3iXR6csiEwXXOFsiC6Uh9iAjAhXPtqa/XMDHWjjeNH/77m/Yq2dw==} '@mozilla/readability@0.5.0': resolution: {integrity: sha512-Z+CZ3QaosfFaTqvhQsIktyGrjFjSC0Fa4EMph4mqKnWhmyoGICsV/8QK+8HpXut6zV7zwfWwqDmEjtk1Qf6EgQ==} @@ -4047,28 +3678,27 @@ packages: '@n8n/codemirror-lang-sql@1.0.2': resolution: {integrity: sha512-sOf/KyewSu3Ikij0CkRtzJJDhRDZcwNCEYl8UdH4U/riL0/XZGcBD7MYofCCcKszanJZiEWRZ2KU1sRp234iMg==} - '@n8n/localtunnel@2.1.0': - resolution: {integrity: sha512-k5mb+Aeb3+4cRfWaEsMSiTsF1oARFvAuI3EOvxitrgVmiWk592h4nCI7vtjq1nsVT+PWKmB6dBoTQ0+6HHIpug==} + '@n8n/localtunnel@3.0.0': + resolution: {integrity: sha512-0t/AUiZ8Oqo7AqYp2q2qmEC2p2lPP4CEdrGRB0J6nSC7ivOtr0p46Pw739UvUfJMU1bIKvzHIc5M9wCjH5Byjg==} engines: {node: '>=18.0.0'} - hasBin: true '@n8n/p-retry@6.2.0-2': resolution: {integrity: sha512-rbnMnSdEwq2yuYMgzOQ4jTXm+oH7yjN/0ISfB/7O6pUcEPsZt9UW60BYfQ1WWHkKa/evI8vgER2zV5/RC1BupQ==} engines: {node: '>=18.10'} - '@n8n/tournament@1.0.2': - resolution: {integrity: sha512-fTpi7F8ra5flGSVfRzohPyG7czAAKCZPlLjdKdwbLJivLoI/Ekhgodov1jfVSCVFVbwQ06gRQRxLEDzl2jl8ig==} - engines: {node: '>=18.10', pnpm: '>=8.6'} + '@n8n/tournament@1.0.5': + resolution: {integrity: sha512-IPBHa7gC0wwHVct/dnBquHz+uMCDZaZ05cor1D/rjlwaOe/PVu5mtoZaPHYuR98R3W1/IyxC5PuBd0JizDP9gg==} + engines: {node: '>=20.15', pnpm: '>=9.5'} - '@n8n/typeorm@0.3.20-10': - resolution: {integrity: sha512-YYQKkafEGqNAG+VgtGbJOWpcyF4ZsRJ+Q7qXigTXZFQb4xpL/+t0BXEMhy8Gw0OEjnZI5cbLGHcQtj7Xlfg7dw==} + '@n8n/typeorm@0.3.20-12': + resolution: {integrity: sha512-Jc+Uys9HXTRq+u2XTqnAqjZVvAPwYH4qy4wRcizN0u7sfBvRGRpeF8ZAoplOGjXPRBG278QKcfVAJ64j/bj+uQ==} engines: {node: '>=16.13.0'} hasBin: true peerDependencies: '@google-cloud/spanner': ^5.18.0 '@libsql/client': ^0.4.2 '@sap/hana-client': ^2.12.25 - '@sentry/node': ^7.87.0 + '@sentry/node': <=8.x better-sqlite3: ^7.1.2 || ^8.0.0 || ^9.0.0 hdb-pool: ^0.1.6 ioredis: ^5.0.4 @@ -4124,13 +3754,17 @@ packages: typeorm-aurora-data-api-driver: optional: true - '@n8n/vm2@3.9.20': - resolution: {integrity: sha512-qk2oJYkuFRVSTxoro4obX/sv/wT1pViZjHh/isjOvFB93D52QIg3TCjMPsHOfHTmkxCKJffjLrUvjIwvWzSMCQ==} - engines: {node: '>=18.10', pnpm: '>=8.6.12'} + '@n8n/vm2@3.9.25': + resolution: {integrity: sha512-qoGLFzyHBW7HKpwXkl05QKsIh3GkDw6lOiTOWYlUDnOIQ1b7EgM+O5EMjrMGy7r+kz52+Q7o6GLxBIcxVI8rEg==} + engines: {node: '>=18.10', pnpm: '>=9.6'} hasBin: true - '@n8n_io/license-sdk@2.13.0': - resolution: {integrity: sha512-iVER9RjR6pP4ujceG7rSMoHU0IMI5HvwNHhC8ezq1VwbRq8W1ecYQpTbIrUTgK6gNMyeLRfySkNlVGejKXJ3MQ==} + '@n8n_io/ai-assistant-sdk@1.10.3': + resolution: {integrity: sha512-oHuYryPoWa+KcIf7ihrlXSVpi3XhVPmZX4tUX4TMvgAeipu7yhf7ZSXQFeBUx6zD1oa2zOXIs4b0NsXELrZWqg==} + engines: {node: '>=20.15', pnpm: '>=8.14'} + + '@n8n_io/license-sdk@2.13.1': + resolution: {integrity: sha512-R6min21m3OlZHYMpeT+8uuB5v4FG3rC00fvRNbVKzNEqNAvfF1dPm6i1fliy5sGKCQ6sh71kjQ9JgE7lRRzJDg==} engines: {node: '>=18.12.1'} '@n8n_io/riot-tmpl@4.0.0': @@ -4139,9 +3773,6 @@ packages: '@n8n_io/riot-tmpl@4.0.1': resolution: {integrity: sha512-/zdRbEfTFjsm1NqnpPQHgZTkTdbp5v3VUxGeMA9098sps8jRCTraQkc3AQstJgHUm7ylBXJcIVhnVeLUMWAfwQ==} - '@ndelangen/get-tarball@3.0.7': - resolution: {integrity: sha512-NqGfTZIZpRFef1GoVaShSSRwDC3vde3ThtTeqFdcYd6ipKqnfEVhjK2hUeHjCQUcptyZr2TONqcloFXM+5QBrQ==} - '@ngneat/falso@7.2.0': resolution: {integrity: sha512-283EXBFd05kCbGuGSXgmvhCsQYEYzvD/eJaE7lxd05qRB0tgREvZX7TRlJ1KSp8nHxoK6Ws029G1Y30mt4IVAA==} @@ -4191,27 +3822,19 @@ packages: '@otplib/preset-v11@12.0.1': resolution: {integrity: sha512-9hSetMI7ECqbFiKICrNa4w70deTUfArtwXykPUvSHWOdzOlfa9ajglu7mNCntlvxycTiOAXkQGwjQCzzDEMRMg==} - '@pinecone-database/pinecone@2.1.0': - resolution: {integrity: sha512-sbU5+FZ2yhG+tJYwEochoZei5988OLWZyM2aT4wenWc6sbKGV69Jm9Yl4yix10NNglzfksF9avkte1a0/k7x5Q==} - engines: {node: '>=14.0.0'} + '@pinecone-database/pinecone@3.0.3': + resolution: {integrity: sha512-0cAG0d/6knVZgVyXM1II4qG3dyOepLuAQsCXTOJomdA7iQxf+/Om9mq9Cw4QObr56oZ+lqtptlw5qz0BQaBX2Q==} + engines: {node: '>=18.0.0'} - '@pinecone-database/pinecone@2.2.1': - resolution: {integrity: sha512-8i6oT8EzYLlxi5Th4tJ8Cae+VPyHzlEsiVSxCOEx+EahbzaiWmpQMZSmO/RlXF/dOjOI+pXvqfcFYcF1awtPlw==} - engines: {node: '>=14.0.0'} - - '@pinia/testing@0.1.3': - resolution: {integrity: sha512-D2Ds2s69kKFaRf2KCcP1NhNZEg5+we59aRyQalwRm7ygWfLM25nDH66267U3hNvRUOTx8ofL24GzodZkOmB5xw==} + '@pinia/testing@0.1.6': + resolution: {integrity: sha512-Q40s3kpjXpjmcnc61l84wyG83yVmkBi5rRdSoPpwQoRfSnNKKr52XjFFt6hP8iBxehYS9NR+D57T1uzgnEVPHg==} peerDependencies: - pinia: '>=2.1.5' + pinia: '>=2.2.3' '@pkgjs/parseargs@0.11.0': resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} engines: {node: '>=14'} - '@pkgr/core@0.1.1': - resolution: {integrity: sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==} - engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} - '@protobufjs/aspromise@1.1.2': resolution: {integrity: sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==} @@ -4242,178 +3865,16 @@ packages: '@protobufjs/utf8@1.1.0': resolution: {integrity: sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==} - '@qdrant/js-client-rest@1.9.0': - resolution: {integrity: sha512-YiX/IskbRCoAY2ujyPDI6FBcO0ygAS4pgkGaJ7DcrJFh4SZV2XHs+u0KM7mO72RWJn1eJQFF2PQwxG+401xxJg==} + '@qdrant/js-client-rest@1.11.0': + resolution: {integrity: sha512-RzF+HxL8A7bb/uaxU1jVS1a919bb3FCo1giB/D19UT3d50AYl4+4AyklbsjlXpWEHekbNocQAQ016fqT9hSRtQ==} engines: {node: '>=18.0.0', pnpm: '>=8'} peerDependencies: - typescript: ^5.5.2 + typescript: ^5.6.2 '@qdrant/openapi-typescript-fetch@1.2.6': resolution: {integrity: sha512-oQG/FejNpItrxRHoyctYvT3rwGZOnK4jr3JdppO/c78ktDvkWiPXPHNsrDf33K9sZdRb6PR7gi4noIapu5q4HA==} engines: {node: '>=18.0.0', pnpm: '>=8'} - '@radix-ui/primitive@1.0.1': - resolution: {integrity: sha512-yQ8oGX2GVsEYMWGxcovu1uGWPCxV5BFfeeYxqPmuAzUyLT9qmaMXSAhXpb0WrspIeqYzdJpkh2vHModJPgRIaw==} - - '@radix-ui/react-compose-refs@1.0.1': - resolution: {integrity: sha512-fDSBgd44FKHa1FRMU59qBMPFcl2PZE+2nmqunj+BWFyYYjnhIDWL2ItDs3rrbJDQOtzt5nIebLCQc4QRfz6LJw==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-context@1.0.1': - resolution: {integrity: sha512-ebbrdFoYTcuZ0v4wG5tedGnp9tzcV8awzsxYph7gXUyvnNLuTIcCk1q17JEbnVhXAKG9oX3KtchwiMIAYp9NLg==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-dialog@1.0.5': - resolution: {integrity: sha512-GjWJX/AUpB703eEBanuBnIWdIXg6NvJFCXcNlSZk4xdszCdhrJgBoUd1cGk67vFO+WdA2pfI/plOpqz/5GUP6Q==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - - '@radix-ui/react-dismissable-layer@1.0.5': - resolution: {integrity: sha512-aJeDjQhywg9LBu2t/At58hCvr7pEm0o2Ke1x33B+MhjNmmZ17sy4KImo0KPLgsnc/zN7GPdce8Cnn0SWvwZO7g==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - - '@radix-ui/react-focus-guards@1.0.1': - resolution: {integrity: sha512-Rect2dWbQ8waGzhMavsIbmSVCgYxkXLxxR3ZvCX79JOglzdEy4JXMb98lq4hPxUbLr77nP0UOGf4rcMU+s1pUA==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-focus-scope@1.0.4': - resolution: {integrity: sha512-sL04Mgvf+FmyvZeYfNu1EPAaaxD+aw7cYeIB9L9Fvq8+urhltTRaEo5ysKOpHuKPclsZcSUMKlN05x4u+CINpA==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - - '@radix-ui/react-id@1.0.1': - resolution: {integrity: sha512-tI7sT/kqYp8p96yGWY1OAnLHrqDgzHefRBKQ2YAkBS5ja7QLcZ9Z/uY7bEjPUatf8RomoXM8/1sMj1IJaE5UzQ==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-portal@1.0.4': - resolution: {integrity: sha512-Qki+C/EuGUVCQTOTD5vzJzJuMUlewbzuKyUy+/iHM2uwGiru9gZeBJtHAPKAEkB5KWGi9mP/CHKcY0wt1aW45Q==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - - '@radix-ui/react-presence@1.0.1': - resolution: {integrity: sha512-UXLW4UAbIY5ZjcvzjfRFo5gxva8QirC9hF7wRE4U5gz+TP0DbRk+//qyuAQ1McDxBt1xNMBTaciFGvEmJvAZCg==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - - '@radix-ui/react-primitive@1.0.3': - resolution: {integrity: sha512-yi58uVyoAcK/Nq1inRY56ZSjKypBNKTa/1mcL8qdl6oJeEaDbOldlzrGn7P6Q3Id5d+SYNGc5AJgc4vGhjs5+g==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - - '@radix-ui/react-slot@1.0.2': - resolution: {integrity: sha512-YeTpuq4deV+6DusvVUW4ivBgnkHwECUu0BiN43L5UCDFgdhsRUWAghhTF5MbvNTPzmiFOx90asDSUjWuCNapwg==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-use-callback-ref@1.0.1': - resolution: {integrity: sha512-D94LjX4Sp0xJFVaoQOd3OO9k7tpBYNOXdVhkltUbGv2Qb9OXdrg/CpsjlZv7ia14Sylv398LswWBVVu5nqKzAQ==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-use-controllable-state@1.0.1': - resolution: {integrity: sha512-Svl5GY5FQeN758fWKrjM6Qb7asvXeiZltlT4U2gVfl8Gx5UAv2sMR0LWo8yhsIZh2oQ0eFdZ59aoOOMV7b47VA==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-use-escape-keydown@1.0.3': - resolution: {integrity: sha512-vyL82j40hcFicA+M4Ex7hVkB9vHgSse1ZWomAqV2Je3RleKGO5iM8KMOEtfoSB0PnIelMd2lATjTGMYqN5ylTg==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-use-layout-effect@1.0.1': - resolution: {integrity: sha512-v/5RegiJWYdoCvMnITBkNNx6bCj20fiaJnWtRkU18yITptraXjffz5Qbn05uOiQnOvi+dbkznkoaMltz1GnszQ==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - '@redis/bloom@1.2.0': resolution: {integrity: sha512-HG2DFjYKbpNmVXsa0keLHp/3leGJz1mjh09f2RLGGLQZzSHpkmZWuwJbAvo3QcRY8p80m5+ZdXZdYOSBLlp7Cg==} peerDependencies: @@ -4423,10 +3884,6 @@ packages: resolution: {integrity: sha512-epkUM9D0Sdmt93/8Ozk43PNjLi36RZzG+d/T1Gdu5AI8jvghonTeLYV69WVWdilvFo+PYxbP0TZ0saMvr6nscQ==} engines: {node: '>=14'} - '@redis/client@1.5.14': - resolution: {integrity: sha512-YGn0GqsRBFUQxklhY7v562VMOP0DcmlrHHs3IV1mFE3cbxe31IITUkqhBcIhVSI/2JqtWAJXg5mjV4aU+zD0HA==} - engines: {node: '>=14'} - '@redis/client@1.5.16': resolution: {integrity: sha512-X1a3xQ5kEMvTib5fBrHKh6Y+pXbeKXqziYuxOUo1ojQNECg4M5Etd1qqyhMap+lFUOAh8S7UYevgJHOm4A+NOg==} engines: {node: '>=14'} @@ -4451,72 +3908,21 @@ packages: peerDependencies: '@redis/client': ^1.0.0 - '@redocly/ajv@8.11.0': - resolution: {integrity: sha512-9GWx27t7xWhDIR02PA18nzBdLcKQRgc46xNQvjFkrYk4UOmvKhJ/dawwiX0cCOeetN5LcaaiqQbVOWYK62SGHw==} + '@redocly/ajv@8.11.2': + resolution: {integrity: sha512-io1JpnwtIcvojV7QKDUSIuMN/ikdOUd1ReEnUnMKGfDVridQZ31J0MmIuqwuRjWDZfmvr+Q0MqCcfHM2gTivOg==} - '@redocly/cli@1.6.0': - resolution: {integrity: sha512-0naVFJGR2tVcpMIHSFRr2HAoyy70qMqDAP6kXcnOdkGkwLRJ8s/5n1STwsym/yZwNkhrt2M0cKT6KAMlTUeCeg==} + '@redocly/cli@1.25.5': + resolution: {integrity: sha512-sFh4A8wqwuig7mF/nYNVIyxSfKKZikWC+uVH6OB1IepYQXNsHFaLAU1VaNI9gS5mMvWmYx5SEuSCVB9LaNFBhw==} engines: {node: '>=14.19.0', npm: '>=7.0.0'} hasBin: true - '@redocly/openapi-core@1.6.0': - resolution: {integrity: sha512-oao6Aey4peLKfagzWGb6N7OBI6CoDWEP4ka/XjrUNZw+UoKVVg3hVBXW4Vr3CJ2O8j6wEa2i+Lbb92VQQsoxwg==} + '@redocly/config@0.12.1': + resolution: {integrity: sha512-RW3rSirfsPdr0uvATijRDU3f55SuZV3m7/ppdTDvGw4IB0cmeZRkFmqTrchxMqWP50Gfg1tpHnjdxUCNo0E2qg==} + + '@redocly/openapi-core@1.25.5': + resolution: {integrity: sha512-BNgXjqesJu4L5f8F73c2hkkH5IdvjYCKYFgIl+m9oNgqGRIPBJjtiEGOx7jkQ6nElN4311z7Z4aTECtklaaHwg==} engines: {node: '>=14.19.0', npm: '>=7.0.0'} - '@rollup/plugin-alias@5.1.0': - resolution: {integrity: sha512-lpA3RZ9PdIG7qqhEfv79tBffNaoDuukFDrmhLqg9ifv99u/ehn+lOg30x2zmhf8AQqQUZaMk/B9fZraQ6/acDQ==} - engines: {node: '>=14.0.0'} - peerDependencies: - rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 - peerDependenciesMeta: - rollup: - optional: true - - '@rollup/plugin-commonjs@25.0.7': - resolution: {integrity: sha512-nEvcR+LRjEjsaSsc4x3XZfCCvZIaSMenZu/OiwOKGN2UhQpAYI7ru7czFvyWbErlpoGjnSX3D5Ch5FcMA3kRWQ==} - engines: {node: '>=14.0.0'} - peerDependencies: - rollup: ^2.68.0||^3.0.0||^4.0.0 - peerDependenciesMeta: - rollup: - optional: true - - '@rollup/plugin-json@6.1.0': - resolution: {integrity: sha512-EGI2te5ENk1coGeADSIwZ7G2Q8CJS2sF120T7jLw4xFw9n7wIOXHo+kIYRAoVpJAN+kmqZSoO3Fp4JtoNF4ReA==} - engines: {node: '>=14.0.0'} - peerDependencies: - rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 - peerDependenciesMeta: - rollup: - optional: true - - '@rollup/plugin-node-resolve@15.2.3': - resolution: {integrity: sha512-j/lym8nf5E21LwBT4Df1VD6hRO2L2iwUeUmP7litikRsVp1H6NWx20NEp0Y7su+7XGc476GnXXc4kFeZNGmaSQ==} - engines: {node: '>=14.0.0'} - peerDependencies: - rollup: ^2.78.0||^3.0.0||^4.0.0 - peerDependenciesMeta: - rollup: - optional: true - - '@rollup/plugin-replace@5.0.5': - resolution: {integrity: sha512-rYO4fOi8lMaTg/z5Jb+hKnrHHVn8j2lwkqwyS4kTRhKyWOLf2wST2sWXr4WzWiTcoHTp2sTjqUbqIj2E39slKQ==} - engines: {node: '>=14.0.0'} - peerDependencies: - rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 - peerDependenciesMeta: - rollup: - optional: true - - '@rollup/pluginutils@5.0.5': - resolution: {integrity: sha512-6aEYR910NyP73oHiJglti74iRyOwgFU4x3meH/H8OJx6Ry0j6cOVZ5X/wTvub7G7Ao6qaHBEaNsV3GLJkSsF+Q==} - engines: {node: '>=14.0.0'} - peerDependencies: - rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 - peerDependenciesMeta: - rollup: - optional: true - '@rollup/pluginutils@5.1.0': resolution: {integrity: sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==} engines: {node: '>=14.0.0'} @@ -4526,119 +3932,192 @@ packages: rollup: optional: true - '@rollup/rollup-android-arm-eabi@4.18.0': - resolution: {integrity: sha512-Tya6xypR10giZV1XzxmH5wr25VcZSncG0pZIjfePT0OVBvqNEurzValetGNarVrGiq66EBVAFn15iYX4w6FKgQ==} + '@rollup/rollup-android-arm-eabi@4.24.0': + resolution: {integrity: sha512-Q6HJd7Y6xdB48x8ZNVDOqsbh2uByBhgK8PiQgPhwkIw/HC/YX5Ghq2mQY5sRMZWHb3VsFkWooUVOZHKr7DmDIA==} cpu: [arm] os: [android] - '@rollup/rollup-android-arm64@4.18.0': - resolution: {integrity: sha512-avCea0RAP03lTsDhEyfy+hpfr85KfyTctMADqHVhLAF3MlIkq83CP8UfAHUssgXTYd+6er6PaAhx/QGv4L1EiA==} + '@rollup/rollup-android-arm64@4.24.0': + resolution: {integrity: sha512-ijLnS1qFId8xhKjT81uBHuuJp2lU4x2yxa4ctFPtG+MqEE6+C5f/+X/bStmxapgmwLwiL3ih122xv8kVARNAZA==} cpu: [arm64] os: [android] - '@rollup/rollup-darwin-arm64@4.18.0': - resolution: {integrity: sha512-IWfdwU7KDSm07Ty0PuA/W2JYoZ4iTj3TUQjkVsO/6U+4I1jN5lcR71ZEvRh52sDOERdnNhhHU57UITXz5jC1/w==} + '@rollup/rollup-darwin-arm64@4.24.0': + resolution: {integrity: sha512-bIv+X9xeSs1XCk6DVvkO+S/z8/2AMt/2lMqdQbMrmVpgFvXlmde9mLcbQpztXm1tajC3raFDqegsH18HQPMYtA==} cpu: [arm64] os: [darwin] - '@rollup/rollup-darwin-x64@4.18.0': - resolution: {integrity: sha512-n2LMsUz7Ynu7DoQrSQkBf8iNrjOGyPLrdSg802vk6XT3FtsgX6JbE8IHRvposskFm9SNxzkLYGSq9QdpLYpRNA==} + '@rollup/rollup-darwin-x64@4.24.0': + resolution: {integrity: sha512-X6/nOwoFN7RT2svEQWUsW/5C/fYMBe4fnLK9DQk4SX4mgVBiTA9h64kjUYPvGQ0F/9xwJ5U5UfTbl6BEjaQdBQ==} cpu: [x64] os: [darwin] - '@rollup/rollup-linux-arm-gnueabihf@4.18.0': - resolution: {integrity: sha512-C/zbRYRXFjWvz9Z4haRxcTdnkPt1BtCkz+7RtBSuNmKzMzp3ZxdM28Mpccn6pt28/UWUCTXa+b0Mx1k3g6NOMA==} + '@rollup/rollup-linux-arm-gnueabihf@4.24.0': + resolution: {integrity: sha512-0KXvIJQMOImLCVCz9uvvdPgfyWo93aHHp8ui3FrtOP57svqrF/roSSR5pjqL2hcMp0ljeGlU4q9o/rQaAQ3AYA==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm-musleabihf@4.18.0': - resolution: {integrity: sha512-l3m9ewPgjQSXrUMHg93vt0hYCGnrMOcUpTz6FLtbwljo2HluS4zTXFy2571YQbisTnfTKPZ01u/ukJdQTLGh9A==} + '@rollup/rollup-linux-arm-musleabihf@4.24.0': + resolution: {integrity: sha512-it2BW6kKFVh8xk/BnHfakEeoLPv8STIISekpoF+nBgWM4d55CZKc7T4Dx1pEbTnYm/xEKMgy1MNtYuoA8RFIWw==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm64-gnu@4.18.0': - resolution: {integrity: sha512-rJ5D47d8WD7J+7STKdCUAgmQk49xuFrRi9pZkWoRD1UeSMakbcepWXPF8ycChBoAqs1pb2wzvbY6Q33WmN2ftw==} + '@rollup/rollup-linux-arm64-gnu@4.24.0': + resolution: {integrity: sha512-i0xTLXjqap2eRfulFVlSnM5dEbTVque/3Pi4g2y7cxrs7+a9De42z4XxKLYJ7+OhE3IgxvfQM7vQc43bwTgPwA==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-arm64-musl@4.18.0': - resolution: {integrity: sha512-be6Yx37b24ZwxQ+wOQXXLZqpq4jTckJhtGlWGZs68TgdKXJgw54lUUoFYrg6Zs/kjzAQwEwYbp8JxZVzZLRepQ==} + '@rollup/rollup-linux-arm64-musl@4.24.0': + resolution: {integrity: sha512-9E6MKUJhDuDh604Qco5yP/3qn3y7SLXYuiC0Rpr89aMScS2UAmK1wHP2b7KAa1nSjWJc/f/Lc0Wl1L47qjiyQw==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-powerpc64le-gnu@4.18.0': - resolution: {integrity: sha512-hNVMQK+qrA9Todu9+wqrXOHxFiD5YmdEi3paj6vP02Kx1hjd2LLYR2eaN7DsEshg09+9uzWi2W18MJDlG0cxJA==} + '@rollup/rollup-linux-powerpc64le-gnu@4.24.0': + resolution: {integrity: sha512-2XFFPJ2XMEiF5Zi2EBf4h73oR1V/lycirxZxHZNc93SqDN/IWhYYSYj8I9381ikUFXZrz2v7r2tOVk2NBwxrWw==} cpu: [ppc64] os: [linux] - '@rollup/rollup-linux-riscv64-gnu@4.18.0': - resolution: {integrity: sha512-ROCM7i+m1NfdrsmvwSzoxp9HFtmKGHEqu5NNDiZWQtXLA8S5HBCkVvKAxJ8U+CVctHwV2Gb5VUaK7UAkzhDjlg==} + '@rollup/rollup-linux-riscv64-gnu@4.24.0': + resolution: {integrity: sha512-M3Dg4hlwuntUCdzU7KjYqbbd+BLq3JMAOhCKdBE3TcMGMZbKkDdJ5ivNdehOssMCIokNHFOsv7DO4rlEOfyKpg==} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-s390x-gnu@4.18.0': - resolution: {integrity: sha512-0UyyRHyDN42QL+NbqevXIIUnKA47A+45WyasO+y2bGJ1mhQrfrtXUpTxCOrfxCR4esV3/RLYyucGVPiUsO8xjg==} + '@rollup/rollup-linux-s390x-gnu@4.24.0': + resolution: {integrity: sha512-mjBaoo4ocxJppTorZVKWFpy1bfFj9FeCMJqzlMQGjpNPY9JwQi7OuS1axzNIk0nMX6jSgy6ZURDZ2w0QW6D56g==} cpu: [s390x] os: [linux] - '@rollup/rollup-linux-x64-gnu@4.18.0': - resolution: {integrity: sha512-xuglR2rBVHA5UsI8h8UbX4VJ470PtGCf5Vpswh7p2ukaqBGFTnsfzxUBetoWBWymHMxbIG0Cmx7Y9qDZzr648w==} + '@rollup/rollup-linux-x64-gnu@4.24.0': + resolution: {integrity: sha512-ZXFk7M72R0YYFN5q13niV0B7G8/5dcQ9JDp8keJSfr3GoZeXEoMHP/HlvqROA3OMbMdfr19IjCeNAnPUG93b6A==} cpu: [x64] os: [linux] - '@rollup/rollup-linux-x64-musl@4.18.0': - resolution: {integrity: sha512-LKaqQL9osY/ir2geuLVvRRs+utWUNilzdE90TpyoX0eNqPzWjRm14oMEE+YLve4k/NAqCdPkGYDaDF5Sw+xBfg==} + '@rollup/rollup-linux-x64-musl@4.24.0': + resolution: {integrity: sha512-w1i+L7kAXZNdYl+vFvzSZy8Y1arS7vMgIy8wusXJzRrPyof5LAb02KGr1PD2EkRcl73kHulIID0M501lN+vobQ==} cpu: [x64] os: [linux] - '@rollup/rollup-win32-arm64-msvc@4.18.0': - resolution: {integrity: sha512-7J6TkZQFGo9qBKH0pk2cEVSRhJbL6MtfWxth7Y5YmZs57Pi+4x6c2dStAUvaQkHQLnEQv1jzBUW43GvZW8OFqA==} + '@rollup/rollup-win32-arm64-msvc@4.24.0': + resolution: {integrity: sha512-VXBrnPWgBpVDCVY6XF3LEW0pOU51KbaHhccHw6AS6vBWIC60eqsH19DAeeObl+g8nKAz04QFdl/Cefta0xQtUQ==} cpu: [arm64] os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.18.0': - resolution: {integrity: sha512-Txjh+IxBPbkUB9+SXZMpv+b/vnTEtFyfWZgJ6iyCmt2tdx0OF5WhFowLmnh8ENGNpfUlUZkdI//4IEmhwPieNg==} + '@rollup/rollup-win32-ia32-msvc@4.24.0': + resolution: {integrity: sha512-xrNcGDU0OxVcPTH/8n/ShH4UevZxKIO6HJFK0e15XItZP2UcaiLFd5kiX7hJnqCbSztUF8Qot+JWBC/QXRPYWQ==} cpu: [ia32] os: [win32] - '@rollup/rollup-win32-x64-msvc@4.18.0': - resolution: {integrity: sha512-UOo5FdvOL0+eIVTgS4tIdbW+TtnBLWg1YBCcU2KWM7nuNwRz9bksDX1bekJJCpu25N1DVWaCwnT39dVQxzqS8g==} + '@rollup/rollup-win32-x64-msvc@4.24.0': + resolution: {integrity: sha512-fbMkAF7fufku0N2dE5TBXcNlg0pt0cJue4xBRE2Qc5Vqikxr4VCgKj/ht6SMdFcOacVA9rqF70APJ8RN/4vMJw==} cpu: [x64] os: [win32] - '@rudderstack/rudder-sdk-node@2.0.7': - resolution: {integrity: sha512-V8SWlryHDHSleM51udW3DbmCyADa7Naa9OTtG/YjgTStxFsyLnGRYd9Mr616qR94Gi1h/zYhE/tvWio+0fiSzA==} + '@rudderstack/rudder-sdk-node@2.0.9': + resolution: {integrity: sha512-Icm7a2x+CrVM9cHsXDRaFqGyvlaRDdALsrhzLHyRE+gIXubzJT730+fHS8KNdv9/r4Et/Cy1epjbkT3Qagd1VQ==} engines: {node: '>=12'} peerDependencies: tslib: ^2.6.2 - '@rushstack/node-core-library@3.62.0': - resolution: {integrity: sha512-88aJn2h8UpSvdwuDXBv1/v1heM6GnBf3RjEy6ZPP7UnzHNCqOHA2Ut+ScYUbXcqIdfew9JlTAe3g+cnX9xQ/Aw==} + '@rushstack/node-core-library@5.7.0': + resolution: {integrity: sha512-Ff9Cz/YlWu9ce4dmqNBZpA45AEya04XaBFIjV7xTVeEf+y/kTjEasmozqFELXlNG4ROdevss75JrrZ5WgufDkQ==} peerDependencies: '@types/node': ^18.16.16 peerDependenciesMeta: '@types/node': optional: true - '@rushstack/rig-package@0.5.1': - resolution: {integrity: sha512-pXRYSe29TjRw7rqxD4WS3HN/sRSbfr+tJs4a9uuaSIBAITbUggygdhuG0VrO0EO+QqH91GhYMN4S6KRtOEmGVA==} + '@rushstack/rig-package@0.5.3': + resolution: {integrity: sha512-olzSSjYrvCNxUFZowevC3uz8gvKr3WTpHQ7BkpjtRpA3wK+T0ybep/SRUMfr195gBzJm5gaXw0ZMgjIyHqJUow==} - '@rushstack/ts-command-line@4.17.1': - resolution: {integrity: sha512-2jweO1O57BYP5qdBGl6apJLB+aRIn5ccIRTPDyULh0KMwVzFqWtw6IZWt1qtUoZD/pD2RNkIOosH6Cq45rIYeg==} + '@rushstack/terminal@0.14.0': + resolution: {integrity: sha512-juTKMAMpTIJKudeFkG5slD8Z/LHwNwGZLtU441l/u82XdTBfsP+LbGKJLCNwP5se+DMCT55GB8x9p6+C4UL7jw==} + peerDependencies: + '@types/node': ^18.16.16 + peerDependenciesMeta: + '@types/node': + optional: true + + '@rushstack/ts-command-line@4.22.6': + resolution: {integrity: sha512-QSRqHT/IfoC5nk9zn6+fgyqOPXHME0BfchII9EUPR19pocsNp/xSbeBCbD3PIR2Lg+Q5qk7OFqk1VhWPMdKHJg==} '@selderee/plugin-htmlparser2@0.11.0': resolution: {integrity: sha512-P33hHGdldxGabLFjPPpaTxVolMrzrcegejx+0GxjrIb9Zv48D8yAIA/QTDR2dFl7Uz7urX8aX6+5bCZslr+gWQ==} + '@sentry-internal/browser-utils@8.33.1': + resolution: {integrity: sha512-TW6/r+Gl5jiXv54iK1xZ3mlVgTS/jaBp4vcQ0xGMdgiQ3WchEPcFSeYovL+YHT3tSud0GZqVtDQCz+5i76puqA==} + engines: {node: '>=14.18'} + + '@sentry-internal/feedback@8.33.1': + resolution: {integrity: sha512-qauMRTm3qDaLqZ3ibI03cj4gLF40y0ij65nj+cns6iWxGCtPrO8tjvXFWuQsE7Aye9dGMnBgmv7uN+NTUtC3RA==} + engines: {node: '>=14.18'} + + '@sentry-internal/replay-canvas@8.33.1': + resolution: {integrity: sha512-nsxTFTPCT10Ty/v6+AiST3+yotGP1sUb8xqfKB9fPnS1hZHFryp0NnEls7xFjBsBbZPU1GpFkzrk/E6JFzixDQ==} + engines: {node: '>=14.18'} + + '@sentry-internal/replay@8.33.1': + resolution: {integrity: sha512-fm4coIOjmanU29NOVN9MyaP4fUCOYytbtFqVSKRFNZQ/xAgNeySiBIbUd6IjujMmnOk9bY0WEUMcdm3Uotjdog==} + engines: {node: '>=14.18'} + '@sentry-internal/tracing@7.87.0': resolution: {integrity: sha512-HYa0+rfFmYQ/DadXoiuarTSxrcnYDCd/fm0pFuOHjICtfja8IcLegVYP2/r3CgwB+IjquCtJ5kDcqS/NTgUcpA==} engines: {node: '>=8'} - '@sentry/bundler-plugin-core@2.5.0': - resolution: {integrity: sha512-UNjeTSf0Irt/RsC1Xsfxa+RC92mBvjzuWQnvHJ5c+mXwUt+jLcFgGMCSVK/FCDZO+gAeKzmU1+G2UexbsNAP8w==} + '@sentry/babel-plugin-component-annotate@2.22.5': + resolution: {integrity: sha512-+93qwB9vTX1nj4hD8AMWowXZsZVkvmP9OwTqSh5d4kOeiJ+dZftUk4+FKeKkAX9lvY2reyHV8Gms5mo67c27RQ==} engines: {node: '>= 14'} - '@sentry/cli@2.17.0': - resolution: {integrity: sha512-CHIMEg8+YNCpEBDgUctu+DvG3S8+g8Zn9jTE5MMGINNmGkQTMG179LuDE04B/inaCYixLVNpFPTe6Iow3tXjnQ==} + '@sentry/browser@8.33.1': + resolution: {integrity: sha512-c6zI/igexkLwZuGk+u8Rj26ChjxGgkhe6ZbKFsXCYaKAp5ep5X7HQRkkqgbxApiqlC0LduHdd/ymzh139JLg8w==} + engines: {node: '>=14.18'} + + '@sentry/bundler-plugin-core@2.22.5': + resolution: {integrity: sha512-nfvTthV0aNM9/MwgnCi1WjAlCtau1I4kw6+oZIDOwJRDqGNziz517mYRXSsvCUebtGxDZtPcF7hSEBMSHjpncA==} + engines: {node: '>= 14'} + + '@sentry/cli-darwin@2.36.2': + resolution: {integrity: sha512-To64Pq+pcmecEr+gFXiqaZy8oKhyLQLXO/SVDdf16CUL2qpuahE3bO5h9kFacMxPPxOWcgc2btF+4gYa1+bQTA==} + engines: {node: '>=10'} + os: [darwin] + + '@sentry/cli-linux-arm64@2.36.2': + resolution: {integrity: sha512-g+FFmj1oJ2iRMsfs1ORz6THOO6MiAR55K9YxdZUBvqfoHLjSMt7Jst43sbZ3O0u55hnfixSKLNzDaTGaM/jxIQ==} + engines: {node: '>=10'} + cpu: [arm64] + os: [linux, freebsd] + + '@sentry/cli-linux-arm@2.36.2': + resolution: {integrity: sha512-cRSvOQK97WM0m03k/c+LVAWT042Qz887WP/2Gy64eUi/PfArwb+QZZnsu4FCygxK9jnzgLTo4+ewoJVi17xaLQ==} + engines: {node: '>=10'} + cpu: [arm] + os: [linux, freebsd] + + '@sentry/cli-linux-i686@2.36.2': + resolution: {integrity: sha512-rjxTw/CMd0Q7qlOb7gWFiwn3hJIxNkhbn1bOU54xj9CZvQSCvh10l7l4Y9o8znJLl41c5kMXVq8yuYws9A7AGQ==} + engines: {node: '>=10'} + cpu: [x86, ia32] + os: [linux, freebsd] + + '@sentry/cli-linux-x64@2.36.2': + resolution: {integrity: sha512-cF8IPFTlwiC7JgVvSW4rS99sxb1W1N//iANxuzqaDswUnmJLi0AJy/jES87qE5GRB6ljaPVMvH7Kq0OCp3bvPA==} + engines: {node: '>=10'} + cpu: [x64] + os: [linux, freebsd] + + '@sentry/cli-win32-i686@2.36.2': + resolution: {integrity: sha512-YDH/Kcd8JAo1Bg4jtSwF8dr7FZZ8QbYLMx8q/5eenHpq6VdOgPENsTvayLW3cAjWLcm44u8Ed/gcEK0z1IxQmQ==} + engines: {node: '>=10'} + cpu: [x86, ia32] + os: [win32] + + '@sentry/cli-win32-x64@2.36.2': + resolution: {integrity: sha512-Kac8WPbkFSVAJqPAVRBiW0uij9PVoXo0owf+EDeIIDLs9yxZat0d1xgyQPlUWrCGdxowMSbDvaSUz1YnE7MUmg==} + engines: {node: '>=10'} + cpu: [x64] + os: [win32] + + '@sentry/cli@2.36.2': + resolution: {integrity: sha512-QoijP9TnO1UVNnRKtH718jlu/F9bBki6ffrOfmcjxkvLT6Q3nBMmqhYNH/AJV/RcgqLd6noWss4fbDMXZLzgIQ==} engines: {node: '>= 10'} hasBin: true @@ -4646,6 +4125,10 @@ packages: resolution: {integrity: sha512-jkoXqK/nuYh8DYS+n7uaSuSIdw4HJemyRkXsWjAEPtEgD7taGMafZGbP5pl+XE38SE59jTBxmKnkUEZOFMgZGA==} engines: {node: '>=8'} + '@sentry/core@8.33.1': + resolution: {integrity: sha512-3SS41suXLFzxL3OQvTMZ6q92ZapELVq2l2SoWlZopcamWhog2Ru0dp2vkunq97kFHb2TzKRTlFH4+4gbT8SJug==} + engines: {node: '>=14.18'} + '@sentry/integrations@7.87.0': resolution: {integrity: sha512-xbyOQeyfG1sF2PBMIOz3c3i0Y3+8q4UlxoeOhpFe6Vpjek+I/g7onZT6YevT6cWG083cg+rS0VCgPQSUV2lxIw==} engines: {node: '>=8'} @@ -4654,31 +4137,37 @@ packages: resolution: {integrity: sha512-mGcZMCL3/IMTLIRcWLF+H9z2Bb2d34gKmg2rhXqI8BqhhUA551jMRlZv/y4za2Osjy550KwVoNsA1qtEe5mYyQ==} engines: {node: '>=8'} - '@sentry/types@7.60.1': - resolution: {integrity: sha512-8lKKSCOhZ953cWxwnfZwoR3ZFFlZG4P3PQFTaFt/u4LxLh/0zYbdtgvtUqXRURjMCi5P6ddeE9Uw9FGnTJCsTw==} - engines: {node: '>=8'} - '@sentry/types@7.87.0': resolution: {integrity: sha512-w8jKFHq/Llupmr2FezmFgQsnm3y/CnqLjb7s6PstI78E409wrhH7p7oqX/OEuzccH1qNCNwes/3QKvPTRQDB4Q==} engines: {node: '>=8'} - '@sentry/utils@7.60.1': - resolution: {integrity: sha512-ik+5sKGBx4DWuvf6UUKPSafaDiASxP+Xvjg3C9ppop2I/JWxP1FfZ5g22n5ZmPmNahD6clTSoTWly8qyDUlUOw==} - engines: {node: '>=8'} + '@sentry/types@8.33.1': + resolution: {integrity: sha512-GjoAMvwtpIemoF/IiwZ7A60g4nQv3qwzR21GvJqDVUoKD0e8pv9OLX+HyXoUat4wEDGSuDUcUyUKD2G+od73QA==} + engines: {node: '>=14.18'} '@sentry/utils@7.87.0': resolution: {integrity: sha512-7xgtPTnTNP/4IznFMFXxltuaXfLvzznrYCDMv9ny8EeUjJqlLX3CVA8Qq3YALsLCQCKcrGRARbAcd/EGG//w2w==} engines: {node: '>=8'} - '@sentry/vite-plugin@2.5.0': - resolution: {integrity: sha512-u5lfIysy6UVzUGn/adyDcRXfzFyip4mLGThTnKeOeA9rCgmJUVnErH8TD8xhTKdpq/MBiQ+KqrC6xG9pKCa96g==} + '@sentry/utils@8.33.1': + resolution: {integrity: sha512-uzuYpiiJuFY3N4WNHMBWUQX5oNv2t/TbG0OHRp3Rr7yeu+HSfD542TIp9/gMZ+G0Cxd8AmVO3wkKIFbk0TL4Qg==} + engines: {node: '>=14.18'} + + '@sentry/vite-plugin@2.22.5': + resolution: {integrity: sha512-dFARM360varU+hdU1MCpl0VTL03FkVIC+A9egCE+ureuOryjVNe3cm2mUjv/gnDHHNTOxWC2H2c8BlOkqTGP/w==} engines: {node: '>= 14'} + '@sentry/vue@8.33.1': + resolution: {integrity: sha512-Ec3Z/KM96PhSdc3NSQUkKRETSipnIy55M35ujGCbdMnlGr95TjmInxVIxQGZap8S0EVzcpGCWFTGlzUR/pmVJQ==} + engines: {node: '>=14.18'} + peerDependencies: + vue: 2.x || 3.x + '@sevinf/maybe@0.5.0': resolution: {integrity: sha512-ARhyoYDnY1LES3vYI0fiG6e9esWfTNcXcO6+MPJJXcnyMV3bim4lnFt45VXouV7y82F4x3YH8nOQ6VztuvUiWg==} - '@sideway/address@4.1.4': - resolution: {integrity: sha512-7vwq+rOHVWjyXxVlR76Agnvhy8I9rpzjosTESvmhNeXOXdZZB15Fl+TI9x1SiHZH5Jv2wTGduSxFDIaq0m3DUw==} + '@sideway/address@4.1.5': + resolution: {integrity: sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q==} '@sideway/formula@3.0.1': resolution: {integrity: sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==} @@ -4692,13 +4181,6 @@ packages: '@sinclair/typebox@0.27.8': resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} - '@sinclair/typebox@0.29.6': - resolution: {integrity: sha512-aX5IFYWlMa7tQ8xZr3b2gtVReCvg7f3LEhjir/JAjX2bJCMVJA5tIPv30wTD4KDfcwMd7DDYY3hFDeGmOgtrZQ==} - - '@sindresorhus/merge-streams@2.3.0': - resolution: {integrity: sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg==} - engines: {node: '>=18'} - '@sinonjs/commons@2.0.0': resolution: {integrity: sha512-uLa0j859mMrg2slwQYdO/AkrOfmH+X6LTVmNTS9CqexuE2IvVORIkSpJLqePAbEnKJ77aMmCwr1NUZ57120Xcg==} @@ -4708,427 +4190,385 @@ packages: '@sinonjs/fake-timers@10.0.2': resolution: {integrity: sha512-SwUDyjWnah1AaNl7kxsa7cfLhlTYoiyhDAIgyh+El30YvXs/o7OLXpYH88Zdhyx9JExKrmHDJ+10bwIcY80Jmw==} - '@sinonjs/fake-timers@11.2.2': - resolution: {integrity: sha512-G2piCSxQ7oWOxwGSAyFHfPIsyeJGXYtc6mFbnFA+kRXkiEnTl8c/8jul2S329iFBnDI9HGoeWWAZvuvOkZccgw==} + '@sinonjs/fake-timers@13.0.2': + resolution: {integrity: sha512-4Bb+oqXZTSTZ1q27Izly9lv8B9dlV61CROxPiVtywwzv5SnytJqhvYe6FclHYuXml4cd1VHPo1zd5PmTeJozvA==} - '@smithy/abort-controller@2.0.15': - resolution: {integrity: sha512-JkS36PIS3/UCbq/MaozzV7jECeL+BTt4R75bwY8i+4RASys4xOyUS1HsRyUNSqUXFP4QyCz5aNnh3ltuaxv+pw==} + '@smithy/abort-controller@1.1.0': + resolution: {integrity: sha512-5imgGUlZL4dW4YWdMYAKLmal9ny/tlenM81QZY7xYyb76z9Z/QOg7oM5Ak9HQl8QfFTlGVWwcMXl+54jroRgEQ==} engines: {node: '>=14.0.0'} - '@smithy/abort-controller@2.2.0': - resolution: {integrity: sha512-wRlta7GuLWpTqtFfGo+nZyOO1vEvewdNR1R4rTxpC8XU6vG/NDyrFBhwLZsqg1NUoR1noVaXJPC/7ZK47QCySw==} - engines: {node: '>=14.0.0'} + '@smithy/abort-controller@3.1.5': + resolution: {integrity: sha512-DhNPnqTqPoG8aZ5dWkFOgsuY+i0GQ3CI6hMmvCoduNsnU9gUZWZBwGfDQsTTB7NvFPkom1df7jMIJWU90kuXXg==} + engines: {node: '>=16.0.0'} - '@smithy/chunked-blob-reader-native@2.0.1': - resolution: {integrity: sha512-N2oCZRglhWKm7iMBu7S6wDzXirjAofi7tAd26cxmgibRYOBS4D3hGfmkwCpHdASZzwZDD8rluh0Rcqw1JeZDRw==} + '@smithy/chunked-blob-reader-native@3.0.0': + resolution: {integrity: sha512-VDkpCYW+peSuM4zJip5WDfqvg2Mo/e8yxOv3VF1m11y7B8KKMKVFtmZWDe36Fvk8rGuWrPZHHXZ7rR7uM5yWyg==} - '@smithy/chunked-blob-reader@2.0.0': - resolution: {integrity: sha512-k+J4GHJsMSAIQPChGBrjEmGS+WbPonCXesoqP9fynIqjn7rdOThdH8FAeCmokP9mxTYKQAKoHCLPzNlm6gh7Wg==} + '@smithy/chunked-blob-reader@3.0.0': + resolution: {integrity: sha512-sbnURCwjF0gSToGlsBiAmd1lRCmSn72nu9axfJu5lIx6RUEgHu6GwTMbqCdhQSi0Pumcm5vFxsi9XWXb2mTaoA==} - '@smithy/config-resolver@2.0.21': - resolution: {integrity: sha512-rlLIGT+BeqjnA6C2FWumPRJS1UW07iU5ZxDHtFuyam4W65gIaOFMjkB90ofKCIh+0mLVQrQFrl/VLtQT/6FWTA==} - engines: {node: '>=14.0.0'} + '@smithy/config-resolver@3.0.9': + resolution: {integrity: sha512-5d9oBf40qC7n2xUoHmntKLdqsyTMMo/r49+eqSIjJ73eDfEtljAxEhzIQ3bkgXJtR3xiv7YzMT/3FF3ORkjWdg==} + engines: {node: '>=16.0.0'} - '@smithy/config-resolver@2.2.0': - resolution: {integrity: sha512-fsiMgd8toyUba6n1WRmr+qACzXltpdDkPTAaDqc8QqPBUzO+/JKwL6bUBseHVi8tu9l+3JOK+tSf7cay+4B3LA==} - engines: {node: '>=14.0.0'} + '@smithy/core@2.4.8': + resolution: {integrity: sha512-x4qWk7p/a4dcf7Vxb2MODIf4OIcqNbK182WxRvZ/3oKPrf/6Fdic5sSElhO1UtXpWKBazWfqg0ZEK9xN1DsuHA==} + engines: {node: '>=16.0.0'} - '@smithy/core@1.2.0': - resolution: {integrity: sha512-l8R89X7+hlt2FEFg+OrNq29LP3h9DfGPmO6ObwT9IXWHD6V7ycpj5u2rVQyIis26ovrgOYakl6nfgmPMm8m1IQ==} - engines: {node: '>=14.0.0'} + '@smithy/credential-provider-imds@3.2.4': + resolution: {integrity: sha512-S9bb0EIokfYEuar4kEbLta+ivlKCWOCFsLZuilkNy9i0uEUEHSi47IFLPaxqqCl+0ftKmcOTHayY5nQhAuq7+w==} + engines: {node: '>=16.0.0'} - '@smithy/core@1.4.2': - resolution: {integrity: sha512-2fek3I0KZHWJlRLvRTqxTEri+qV0GRHrJIoLFuBMZB4EMg4WgeBGfF0X6abnrNYpq55KJ6R4D6x4f0vLnhzinA==} - engines: {node: '>=14.0.0'} - - '@smithy/credential-provider-imds@2.3.0': - resolution: {integrity: sha512-BWB9mIukO1wjEOo1Ojgl6LrG4avcaC7T/ZP6ptmAaW4xluhSIPZhY+/PI5YKzlk+jsm+4sQZB45Bt1OfMeQa3w==} - engines: {node: '>=14.0.0'} - - '@smithy/eventstream-codec@2.0.14': - resolution: {integrity: sha512-g/OU/MeWGfHDygoXgMWfG/Xb0QqDnAGcM9t2FRrVAhleXYRddGOEnfanR5cmHgB9ue52MJsyorqFjckzXsylaA==} - - '@smithy/eventstream-codec@2.0.15': - resolution: {integrity: sha512-crjvz3j1gGPwA0us6cwS7+5gAn35CTmqu/oIxVbYJo2Qm/sGAye6zGJnMDk3BKhWZw5kcU1G4MxciTkuBpOZPg==} + '@smithy/eventstream-codec@1.1.0': + resolution: {integrity: sha512-3tEbUb8t8an226jKB6V/Q2XU/J53lCwCzULuBPEaF4JjSh+FlCMp7TmogE/Aij5J9DwlsZ4VAD/IRDuQ/0ZtMw==} '@smithy/eventstream-codec@2.2.0': resolution: {integrity: sha512-8janZoJw85nJmQZc4L8TuePp2pk1nxLgkxIR0TUjKJ5Dkj5oelB9WtiSSGXCQvNsJl0VSTvK/2ueMXxvpa9GVw==} - '@smithy/eventstream-serde-browser@2.0.15': - resolution: {integrity: sha512-WiFG5N9j3jmS5P0z5Xev6dO0c3lf7EJYC2Ncb0xDnWFvShwXNn741AF71ABr5EcZw8F4rQma0362MMjAwJeZog==} - engines: {node: '>=14.0.0'} + '@smithy/eventstream-codec@3.1.6': + resolution: {integrity: sha512-SBiOYPBH+5wOyPS7lfI150ePfGLhnp/eTu5RnV9xvhGvRiKfnl6HzRK9wehBph+il8FxS9KTeadx7Rcmf1GLPQ==} - '@smithy/eventstream-serde-browser@2.2.0': - resolution: {integrity: sha512-UaPf8jKbcP71BGiO0CdeLmlg+RhWnlN8ipsMSdwvqBFigl5nil3rHOI/5GE3tfiuX8LvY5Z9N0meuU7Rab7jWw==} - engines: {node: '>=14.0.0'} + '@smithy/eventstream-serde-browser@3.0.10': + resolution: {integrity: sha512-1i9aMY6Pl/SmA6NjvidxnfBLHMPzhKu2BP148pEt5VwhMdmXn36PE2kWKGa9Hj8b0XGtCTRucpCncylevCtI7g==} + engines: {node: '>=16.0.0'} - '@smithy/eventstream-serde-config-resolver@2.0.15': - resolution: {integrity: sha512-o65d2LRjgCbWYH+VVNlWXtmsI231SO99ZTOL4UuIPa6WTjbSHWtlXvUcJG9libhEKWmEV9DIUiH2IqyPWi7ubA==} - engines: {node: '>=14.0.0'} + '@smithy/eventstream-serde-config-resolver@3.0.7': + resolution: {integrity: sha512-eVzhGQBPEqXXYHvIUku0jMTxd4gDvenRzUQPTmKVWdRvp9JUCKrbAXGQRYiGxUYq9+cqQckRm0wq3kTWnNtDhw==} + engines: {node: '>=16.0.0'} - '@smithy/eventstream-serde-config-resolver@2.2.0': - resolution: {integrity: sha512-RHhbTw/JW3+r8QQH7PrganjNCiuiEZmpi6fYUAetFfPLfZ6EkiA08uN3EFfcyKubXQxOwTeJRZSQmDDCdUshaA==} - engines: {node: '>=14.0.0'} + '@smithy/eventstream-serde-node@3.0.9': + resolution: {integrity: sha512-JE0Guqvt0xsmfQ5y1EI342/qtJqznBv8cJqkHZV10PwC8GWGU5KNgFbQnsVCcX+xF+qIqwwfRmeWoJCjuOLmng==} + engines: {node: '>=16.0.0'} - '@smithy/eventstream-serde-node@2.0.15': - resolution: {integrity: sha512-9OOXiIhHq1VeOG6xdHkn2ZayfMYM3vzdUTV3zhcCnt+tMqA3BJK3XXTJFRR2BV28rtRM778DzqbBTf+hqwQPTg==} - engines: {node: '>=14.0.0'} + '@smithy/eventstream-serde-universal@3.0.9': + resolution: {integrity: sha512-bydfgSisfepCufw9kCEnWRxqxJFzX/o8ysXWv+W9F2FIyiaEwZ/D8bBKINbh4ONz3i05QJ1xE7A5OKYvgJsXaw==} + engines: {node: '>=16.0.0'} - '@smithy/eventstream-serde-node@2.2.0': - resolution: {integrity: sha512-zpQMtJVqCUMn+pCSFcl9K/RPNtQE0NuMh8sKpCdEHafhwRsjP50Oq/4kMmvxSRy6d8Jslqd8BLvDngrUtmN9iA==} - engines: {node: '>=14.0.0'} + '@smithy/fetch-http-handler@3.2.9': + resolution: {integrity: sha512-hYNVQOqhFQ6vOpenifFME546f0GfJn2OiQ3M0FDmuUu8V/Uiwy2wej7ZXxFBNqdx0R5DZAqWM1l6VRhGz8oE6A==} - '@smithy/eventstream-serde-universal@2.0.15': - resolution: {integrity: sha512-dP8AQp/pXlWBjvL0TaPBJC3rM0GoYv7O0Uim8d/7UKZ2Wo13bFI3/BhQfY/1DeiP1m23iCHFNFtOQxfQNBB8rQ==} - engines: {node: '>=14.0.0'} + '@smithy/hash-blob-browser@3.1.6': + resolution: {integrity: sha512-BKNcMIaeZ9lB67sgo88iCF4YB35KT8X2dNJ8DqrtZNTgN6tUDYBKThzfGtos/mnZkGkW91AYHisESHmSiYQmKw==} - '@smithy/eventstream-serde-universal@2.2.0': - resolution: {integrity: sha512-pvoe/vvJY0mOpuF84BEtyZoYfbehiFj8KKWk1ds2AT0mTLYFVs+7sBJZmioOFdBXKd48lfrx1vumdPdmGlCLxA==} - engines: {node: '>=14.0.0'} + '@smithy/hash-node@3.0.7': + resolution: {integrity: sha512-SAGHN+QkrwcHFjfWzs/czX94ZEjPJ0CrWJS3M43WswDXVEuP4AVy9gJ3+AF6JQHZD13bojmuf/Ap/ItDeZ+Qfw==} + engines: {node: '>=16.0.0'} - '@smithy/fetch-http-handler@2.3.1': - resolution: {integrity: sha512-6MNk16fqb8EwcYY8O8WxB3ArFkLZ2XppsSNo1h7SQcFdDDwIumiJeO6wRzm7iB68xvsOQzsdQKbdtTieS3hfSQ==} + '@smithy/hash-stream-node@3.1.6': + resolution: {integrity: sha512-sFSSt7cmCpFWZPfVx7k80Bgb1K2VJ27VmMxH8X+dDhp7Wv8IBgID4K2VK5ehMJROF8hQgcj4WywnkHIwX/xlwQ==} + engines: {node: '>=16.0.0'} - '@smithy/fetch-http-handler@2.5.0': - resolution: {integrity: sha512-BOWEBeppWhLn/no/JxUL/ghTfANTjT7kg3Ww2rPqTUY9R4yHPXxJ9JhMe3Z03LN3aPwiwlpDIUcVw1xDyHqEhw==} + '@smithy/invalid-dependency@3.0.7': + resolution: {integrity: sha512-Bq00GsAhHeYSuZX8Kpu4sbI9agH2BNYnqUmmbTGWOhki9NVsWn2jFr896vvoTMH8KAjNX/ErC/8t5QHuEXG+IA==} - '@smithy/hash-blob-browser@2.0.16': - resolution: {integrity: sha512-cSYRi05LA7DZDwjB1HL0BP8B56eUNNeLglVH147QTXFyuXJq/7erAIiLRfsyXB8+GfFHkSS5BHbc76a7k/AYPA==} - - '@smithy/hash-node@2.0.17': - resolution: {integrity: sha512-Il6WuBcI1nD+e2DM7tTADMf01wEPGK8PAhz4D+YmDUVaoBqlA+CaH2uDJhiySifmuKBZj748IfygXty81znKhw==} - engines: {node: '>=14.0.0'} - - '@smithy/hash-node@2.2.0': - resolution: {integrity: sha512-zLWaC/5aWpMrHKpoDF6nqpNtBhlAYKF/7+9yMN7GpdR8CzohnWfGtMznPybnwSS8saaXBMxIGwJqR4HmRp6b3g==} - engines: {node: '>=14.0.0'} - - '@smithy/hash-stream-node@2.0.17': - resolution: {integrity: sha512-ey8DtnATzp1mOXgS7rqMwSmAki6iJA+jgNucKcxRkhMB1rrICfHg+rhmIF50iLPDHUhTcS5pBMOrLzzpZftvNQ==} - engines: {node: '>=14.0.0'} - - '@smithy/invalid-dependency@2.0.15': - resolution: {integrity: sha512-dlEKBFFwVfzA5QroHlBS94NpgYjXhwN/bFfun+7w3rgxNvVy79SK0w05iGc7UAeC5t+D7gBxrzdnD6hreZnDVQ==} - - '@smithy/invalid-dependency@2.2.0': - resolution: {integrity: sha512-nEDASdbKFKPXN2O6lOlTgrEEOO9NHIeO+HVvZnkqc8h5U9g3BIhWsvzFo+UcUbliMHvKNPD/zVxDrkP1Sbgp8Q==} - - '@smithy/is-array-buffer@2.0.0': - resolution: {integrity: sha512-z3PjFjMyZNI98JFRJi/U0nGoLWMSJlDjAW4QUX2WNZLas5C0CmVV6LJ01JI0k90l7FvpmixjWxPFmENSClQ7ug==} + '@smithy/is-array-buffer@1.1.0': + resolution: {integrity: sha512-twpQ/n+3OWZJ7Z+xu43MJErmhB/WO/mMTnqR6PwWQShvSJ/emx5d1N59LQZk6ZpTAeuRWrc+eHhkzTp9NFjNRQ==} engines: {node: '>=14.0.0'} '@smithy/is-array-buffer@2.2.0': resolution: {integrity: sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==} engines: {node: '>=14.0.0'} - '@smithy/md5-js@2.0.17': - resolution: {integrity: sha512-jmISTCnEkOnm2oCNx/rMkvBT/eQh3aA6nktevkzbmn/VYqYEuc5Z2n5sTTqsciMSO01Lvf56wG1A4twDqovYeQ==} + '@smithy/is-array-buffer@3.0.0': + resolution: {integrity: sha512-+Fsu6Q6C4RSJiy81Y8eApjEB5gVtM+oFKTffg+jSuwtvomJJrhUJBu2zS8wjXSgH/g1MKEWrzyChTBe6clb5FQ==} + engines: {node: '>=16.0.0'} - '@smithy/middleware-content-length@2.0.17': - resolution: {integrity: sha512-OyadvMcKC7lFXTNBa8/foEv7jOaqshQZkjWS9coEXPRZnNnihU/Ls+8ZuJwGNCOrN2WxXZFmDWhegbnM4vak8w==} + '@smithy/md5-js@3.0.7': + resolution: {integrity: sha512-+wco9IN9uOW4tNGkZIqTR6IXyfO7Z8A+IOq82QCRn/f/xcmt7H1fXwmQVbfDSvbeFwfNnhv7s+u0G9PzPG6o2w==} + + '@smithy/middleware-content-length@3.0.9': + resolution: {integrity: sha512-t97PidoGElF9hTtLCrof32wfWMqC5g2SEJNxaVH3NjlatuNGsdxXRYO/t+RPnxA15RpYiS0f+zG7FuE2DeGgjA==} + engines: {node: '>=16.0.0'} + + '@smithy/middleware-endpoint@3.1.4': + resolution: {integrity: sha512-/ChcVHekAyzUbyPRI8CzPPLj6y8QRAfJngWcLMgsWxKVzw/RzBV69mSOzJYDD3pRwushA1+5tHtPF8fjmzBnrQ==} + engines: {node: '>=16.0.0'} + + '@smithy/middleware-retry@3.0.23': + resolution: {integrity: sha512-x9PbGXxkcXIpm6L26qRSCC+eaYcHwybRmqU8LO/WM2RRlW0g8lz6FIiKbKgGvHuoK3dLZRiQVSQJveiCzwnA5A==} + engines: {node: '>=16.0.0'} + + '@smithy/middleware-serde@3.0.7': + resolution: {integrity: sha512-VytaagsQqtH2OugzVTq4qvjkLNbWehHfGcGr0JLJmlDRrNCeZoWkWsSOw1nhS/4hyUUWF/TLGGml4X/OnEep5g==} + engines: {node: '>=16.0.0'} + + '@smithy/middleware-stack@3.0.7': + resolution: {integrity: sha512-EyTbMCdqS1DoeQsO4gI7z2Gzq1MoRFAeS8GkFYIwbedB7Lp5zlLHJdg+56tllIIG5Hnf9ZWX48YKSHlsKvugGA==} + engines: {node: '>=16.0.0'} + + '@smithy/node-config-provider@3.1.8': + resolution: {integrity: sha512-E0rU0DglpeJn5ge64mk8wTGEXcQwmpUTY5Zr7IzTpDLmHKiIamINERNZYrPQjg58Ck236sEKSwRSHA4CwshU6Q==} + engines: {node: '>=16.0.0'} + + '@smithy/node-http-handler@1.1.0': + resolution: {integrity: sha512-d3kRriEgaIiGXLziAM8bjnaLn1fthCJeTLZIwEIpzQqe6yPX0a+yQoLCTyjb2fvdLwkMoG4p7THIIB5cj5lkbg==} engines: {node: '>=14.0.0'} - '@smithy/middleware-content-length@2.2.0': - resolution: {integrity: sha512-5bl2LG1Ah/7E5cMSC+q+h3IpVHMeOkG0yLRyQT1p2aMJkSrZG7RlXHPuAgb7EyaFeidKEnnd/fNaLLaKlHGzDQ==} - engines: {node: '>=14.0.0'} + '@smithy/node-http-handler@3.2.4': + resolution: {integrity: sha512-49reY3+JgLMFNm7uTAKBWiKCA6XSvkNp9FqhVmusm2jpVnHORYFeFZ704LShtqWfjZW/nhX+7Iexyb6zQfXYIQ==} + engines: {node: '>=16.0.0'} - '@smithy/middleware-endpoint@2.2.3': - resolution: {integrity: sha512-nYfxuq0S/xoAjdLbyn1ixeVB6cyH9wYCMtbbOCpcCRYR5u2mMtqUtVjjPAZ/DIdlK3qe0tpB0Q76szFGNuz+kQ==} - engines: {node: '>=14.0.0'} + '@smithy/property-provider@3.1.7': + resolution: {integrity: sha512-QfzLi1GPMisY7bAM5hOUqBdGYnY5S2JAlr201pghksrQv139f8iiiMalXtjczIP5f6owxFn3MINLNUNvUkgtPw==} + engines: {node: '>=16.0.0'} - '@smithy/middleware-endpoint@2.5.1': - resolution: {integrity: sha512-1/8kFp6Fl4OsSIVTWHnNjLnTL8IqpIb/D3sTSczrKFnrE9VMNWxnrRKNvpUHOJ6zpGD5f62TPm7+17ilTJpiCQ==} - engines: {node: '>=14.0.0'} - - '@smithy/middleware-retry@2.0.24': - resolution: {integrity: sha512-q2SvHTYu96N7lYrn3VSuX3vRpxXHR/Cig6MJpGWxd0BWodUQUWlKvXpWQZA+lTaFJU7tUvpKhRd4p4MU3PbeJg==} - engines: {node: '>=14.0.0'} - - '@smithy/middleware-retry@2.3.1': - resolution: {integrity: sha512-P2bGufFpFdYcWvqpyqqmalRtwFUNUA8vHjJR5iGqbfR6mp65qKOLcUd6lTr4S9Gn/enynSrSf3p3FVgVAf6bXA==} - engines: {node: '>=14.0.0'} - - '@smithy/middleware-serde@2.0.15': - resolution: {integrity: sha512-FOZRFk/zN4AT4wzGuBY+39XWe+ZnCFd0gZtyw3f9Okn2CJPixl9GyWe98TIaljeZdqWkgrzGyPre20AcW2UMHQ==} - engines: {node: '>=14.0.0'} - - '@smithy/middleware-serde@2.3.0': - resolution: {integrity: sha512-sIADe7ojwqTyvEQBe1nc/GXB9wdHhi9UwyX0lTyttmUWDJLP655ZYE1WngnNyXREme8I27KCaUhyhZWRXL0q7Q==} - engines: {node: '>=14.0.0'} - - '@smithy/middleware-stack@2.0.9': - resolution: {integrity: sha512-bCB5dUtGQ5wh7QNL2ELxmDc6g7ih7jWU3Kx6MYH1h4mZbv9xL3WyhKHojRltThCB1arLPyTUFDi+x6fB/oabtA==} - engines: {node: '>=14.0.0'} - - '@smithy/middleware-stack@2.2.0': - resolution: {integrity: sha512-Qntc3jrtwwrsAC+X8wms8zhrTr0sFXnyEGhZd9sLtsJ/6gGQKFzNB+wWbOcpJd7BR8ThNCoKt76BuQahfMvpeA==} - engines: {node: '>=14.0.0'} - - '@smithy/node-config-provider@2.1.8': - resolution: {integrity: sha512-+w26OKakaBUGp+UG+dxYZtFb5fs3tgHg3/QrRrmUZj+rl3cIuw840vFUXX35cVPTUCQIiTqmz7CpVF7+hdINdQ==} - engines: {node: '>=14.0.0'} - - '@smithy/node-config-provider@2.3.0': - resolution: {integrity: sha512-0elK5/03a1JPWMDPaS726Iw6LpQg80gFut1tNpPfxFuChEEklo2yL823V94SpTZTxmKlXFtFgsP55uh3dErnIg==} - engines: {node: '>=14.0.0'} - - '@smithy/node-http-handler@2.2.1': - resolution: {integrity: sha512-8iAKQrC8+VFHPAT8pg4/j6hlsTQh+NKOWlctJBrYtQa4ExcxX7aSg3vdQ2XLoYwJotFUurg/NLqFCmZaPRrogw==} - engines: {node: '>=14.0.0'} - - '@smithy/node-http-handler@2.5.0': - resolution: {integrity: sha512-mVGyPBzkkGQsPoxQUbxlEfRjrj6FPyA3u3u2VXGr9hT8wilsoQdZdvKpMBFMB8Crfhv5dNkKHIW0Yyuc7eABqA==} - engines: {node: '>=14.0.0'} - - '@smithy/property-provider@2.2.0': - resolution: {integrity: sha512-+xiil2lFhtTRzXkx8F053AV46QnIw6e7MV8od5Mi68E1ICOjCeCHw2XfLnDEUHnT9WGUIkwcqavXjfwuJbGlpg==} - engines: {node: '>=14.0.0'} - - '@smithy/protocol-http@3.0.11': - resolution: {integrity: sha512-3ziB8fHuXIRamV/akp/sqiWmNPR6X+9SB8Xxnozzj+Nq7hSpyKdFHd1FLpBkgfGFUTzzcBJQlDZPSyxzmdcx5A==} + '@smithy/protocol-http@1.2.0': + resolution: {integrity: sha512-GfGfruksi3nXdFok5RhgtOnWe5f6BndzYfmEXISD+5gAGdayFGpjWu5pIqIweTudMtse20bGbc+7MFZXT1Tb8Q==} engines: {node: '>=14.0.0'} '@smithy/protocol-http@3.3.0': resolution: {integrity: sha512-Xy5XK1AFWW2nlY/biWZXu6/krgbaf2dg0q492D8M5qthsnU2H+UgFeZLbM76FnH7s6RO/xhQRkj+T6KBO3JzgQ==} engines: {node: '>=14.0.0'} - '@smithy/querystring-builder@2.0.15': - resolution: {integrity: sha512-e1q85aT6HutvouOdN+dMsN0jcdshp50PSCvxDvo6aIM57LqeXimjfONUEgfqQ4IFpYWAtVixptyIRE5frMp/2A==} + '@smithy/protocol-http@4.1.4': + resolution: {integrity: sha512-MlWK8eqj0JlpZBnWmjQLqmFp71Ug00P+m72/1xQB3YByXD4zZ+y9N4hYrR0EDmrUCZIkyATWHOXFgtavwGDTzQ==} + engines: {node: '>=16.0.0'} + + '@smithy/querystring-builder@1.1.0': + resolution: {integrity: sha512-gDEi4LxIGLbdfjrjiY45QNbuDmpkwh9DX4xzrR2AzjjXpxwGyfSpbJaYhXARw9p17VH0h9UewnNQXNwaQyYMDA==} engines: {node: '>=14.0.0'} - '@smithy/querystring-builder@2.2.0': - resolution: {integrity: sha512-L1kSeviUWL+emq3CUVSgdogoM/D9QMFaqxL/dd0X7PCNWmPXqt+ExtrBjqT0V7HLN03Vs9SuiLrG3zy3JGnE5A==} - engines: {node: '>=14.0.0'} + '@smithy/querystring-builder@3.0.7': + resolution: {integrity: sha512-65RXGZZ20rzqqxTsChdqSpbhA6tdt5IFNgG6o7e1lnPVLCe6TNWQq4rTl4N87hTDD8mV4IxJJnvyE7brbnRkQw==} + engines: {node: '>=16.0.0'} - '@smithy/querystring-parser@2.0.15': - resolution: {integrity: sha512-jbBvoK3cc81Cj1c1TH1qMYxNQKHrYQ2DoTntN9FBbtUWcGhc+T4FP6kCKYwRLXyU4AajwGIZstvNAmIEgUUNTQ==} - engines: {node: '>=14.0.0'} + '@smithy/querystring-parser@3.0.7': + resolution: {integrity: sha512-Fouw4KJVWqqUVIu1gZW8BH2HakwLz6dvdrAhXeXfeymOBrZw+hcqaWs+cS1AZPVp4nlbeIujYrKA921ZW2WMPA==} + engines: {node: '>=16.0.0'} - '@smithy/querystring-parser@2.2.0': - resolution: {integrity: sha512-BvHCDrKfbG5Yhbpj4vsbuPV2GgcpHiAkLeIlcA1LtfpMz3jrqizP1+OguSNSj1MwBHEiN+jwNisXLGdajGDQJA==} - engines: {node: '>=14.0.0'} + '@smithy/service-error-classification@3.0.7': + resolution: {integrity: sha512-91PRkTfiBf9hxkIchhRKJfl1rsplRDyBnmyFca3y0Z3x/q0JJN480S83LBd8R6sBCkm2bBbqw2FHp0Mbh+ecSA==} + engines: {node: '>=16.0.0'} - '@smithy/service-error-classification@2.0.8': - resolution: {integrity: sha512-jCw9+005im8tsfYvwwSc4TTvd29kXRFkH9peQBg5R/4DD03ieGm6v6Hpv9nIAh98GwgYg1KrztcINC1s4o7/hg==} - engines: {node: '>=14.0.0'} + '@smithy/shared-ini-file-loader@3.1.8': + resolution: {integrity: sha512-0NHdQiSkeGl0ICQKcJQ2lCOKH23Nb0EaAa7RDRId6ZqwXkw4LJyIyZ0t3iusD4bnKYDPLGy2/5e2rfUhrt0Acw==} + engines: {node: '>=16.0.0'} - '@smithy/service-error-classification@2.1.5': - resolution: {integrity: sha512-uBDTIBBEdAQryvHdc5W8sS5YX7RQzF683XrHePVdFmAgKiMofU15FLSM0/HU03hKTnazdNRFa0YHS7+ArwoUSQ==} - engines: {node: '>=14.0.0'} - - '@smithy/shared-ini-file-loader@2.4.0': - resolution: {integrity: sha512-WyujUJL8e1B6Z4PBfAqC/aGY1+C7T0w20Gih3yrvJSk97gpiVfB+y7c46T4Nunk+ZngLq0rOIdeVeIklk0R3OA==} - engines: {node: '>=14.0.0'} - - '@smithy/signature-v4@2.0.5': - resolution: {integrity: sha512-ABIzXmUDXK4n2c9cXjQLELgH2RdtABpYKT+U131e2I6RbCypFZmxIHmIBufJzU2kdMCQ3+thBGDWorAITFW04A==} + '@smithy/signature-v4@1.1.0': + resolution: {integrity: sha512-fDo3m7YqXBs7neciOePPd/X9LPm5QLlDMdIC4m1H6dgNLnXfLMFNIxEfPyohGA8VW9Wn4X8lygnPSGxDZSmp0Q==} engines: {node: '>=14.0.0'} '@smithy/signature-v4@2.2.1': resolution: {integrity: sha512-j5fHgL1iqKTsKJ1mTcw88p0RUcidDu95AWSeZTgiYJb+QcfwWU/UpBnaqiB59FNH5MiAZuSbOBnZlwzeeY2tIw==} engines: {node: '>=14.0.0'} - '@smithy/smithy-client@2.1.18': - resolution: {integrity: sha512-7FqdbaJiVaHJDD9IfDhmzhSDbpjyx+ZsfdYuOpDJF09rl8qlIAIlZNoSaflKrQ3cEXZN2YxGPaNWGhbYimyIRQ==} - engines: {node: '>=14.0.0'} + '@smithy/signature-v4@4.2.0': + resolution: {integrity: sha512-LafbclHNKnsorMgUkKm7Tk7oJ7xizsZ1VwqhGKqoCIrXh4fqDDp73fK99HOEEgcsQbtemmeY/BPv0vTVYYUNEQ==} + engines: {node: '>=16.0.0'} - '@smithy/smithy-client@2.5.1': - resolution: {integrity: sha512-jrbSQrYCho0yDaaf92qWgd+7nAeap5LtHTI51KXqmpIFCceKU3K9+vIVTUH72bOJngBMqa4kyu1VJhRcSrk/CQ==} + '@smithy/smithy-client@3.4.0': + resolution: {integrity: sha512-nOfJ1nVQsxiP6srKt43r2My0Gp5PLWCW2ASqUioxIiGmu6d32v4Nekidiv5qOmmtzIrmaD+ADX5SKHUuhReeBQ==} + engines: {node: '>=16.0.0'} + + '@smithy/types@1.2.0': + resolution: {integrity: sha512-z1r00TvBqF3dh4aHhya7nz1HhvCg4TRmw51fjMrh5do3h+ngSstt/yKlNbHeb9QxJmFbmN8KEVSWgb1bRvfEoA==} engines: {node: '>=14.0.0'} '@smithy/types@2.12.0': resolution: {integrity: sha512-QwYgloJ0sVNBeBuBs65cIkTbfzV/Q6ZNPCJ99EICFEdJYG50nGIY/uYXp+TbsdJReIuPr0a0kXmCvren3MbRRw==} engines: {node: '>=14.0.0'} - '@smithy/url-parser@2.0.15': - resolution: {integrity: sha512-sADUncUj9rNbOTrdDGm4EXlUs0eQ9dyEo+V74PJoULY4jSQxS+9gwEgsPYyiu8PUOv16JC/MpHonOgqP/IEDZA==} + '@smithy/types@3.5.0': + resolution: {integrity: sha512-QN0twHNfe8mNJdH9unwsCK13GURU7oEAZqkBI+rsvpv1jrmserO+WnLE7jidR9W/1dxwZ0u/CB01mV2Gms/K2Q==} + engines: {node: '>=16.0.0'} - '@smithy/url-parser@2.2.0': - resolution: {integrity: sha512-hoA4zm61q1mNTpksiSWp2nEl1dt3j726HdRhiNgVJQMj7mLp7dprtF57mOB6JvEk/x9d2bsuL5hlqZbBuHQylQ==} + '@smithy/url-parser@3.0.7': + resolution: {integrity: sha512-70UbSSR8J97c1rHZOWhl+VKiZDqHWxs/iW8ZHrHp5fCCPLSBE7GcUlUvKSle3Ca+J9LLbYCj/A79BxztBvAfpA==} - '@smithy/util-base64@2.0.1': - resolution: {integrity: sha512-DlI6XFYDMsIVN+GH9JtcRp3j02JEVuWIn/QOZisVzpIAprdsxGveFed0bjbMRCqmIFe8uetn5rxzNrBtIGrPIQ==} - engines: {node: '>=14.0.0'} + '@smithy/util-base64@3.0.0': + resolution: {integrity: sha512-Kxvoh5Qtt0CDsfajiZOCpJxgtPHXOKwmM+Zy4waD43UoEMA+qPxxa98aE/7ZhdnBFZFXMOiBR5xbcaMhLtznQQ==} + engines: {node: '>=16.0.0'} - '@smithy/util-base64@2.3.0': - resolution: {integrity: sha512-s3+eVwNeJuXUwuMbusncZNViuhv2LjVJ1nMwTqSA0XAC7gjKhqqxRdJPhR8+YrkoZ9IiIbFk/yK6ACe/xlF+hw==} - engines: {node: '>=14.0.0'} + '@smithy/util-body-length-browser@3.0.0': + resolution: {integrity: sha512-cbjJs2A1mLYmqmyVl80uoLTJhAcfzMOyPgjwAYusWKMdLeNtzmMz9YxNl3/jRLoxSS3wkqkf0jwNdtXWtyEBaQ==} - '@smithy/util-body-length-browser@2.0.1': - resolution: {integrity: sha512-NXYp3ttgUlwkaug4bjBzJ5+yIbUbUx8VsSLuHZROQpoik+gRkIBeEG9MPVYfvPNpuXb/puqodeeUXcKFe7BLOQ==} + '@smithy/util-body-length-node@3.0.0': + resolution: {integrity: sha512-Tj7pZ4bUloNUP6PzwhN7K386tmSmEET9QtQg0TgdNOnxhZvCssHji+oZTUIuzxECRfG8rdm2PMw2WCFs6eIYkA==} + engines: {node: '>=16.0.0'} - '@smithy/util-body-length-browser@2.2.0': - resolution: {integrity: sha512-dtpw9uQP7W+n3vOtx0CfBD5EWd7EPdIdsQnWTDoFf77e3VUf05uA7R7TGipIo8e4WL2kuPdnsr3hMQn9ziYj5w==} - - '@smithy/util-body-length-node@2.1.0': - resolution: {integrity: sha512-/li0/kj/y3fQ3vyzn36NTLGmUwAICb7Jbe/CsWCktW363gh1MOcpEcSO3mJ344Gv2dqz8YJCLQpb6hju/0qOWw==} - engines: {node: '>=14.0.0'} - - '@smithy/util-body-length-node@2.3.0': - resolution: {integrity: sha512-ITWT1Wqjubf2CJthb0BuT9+bpzBfXeMokH/AAa5EJQgbv9aPMVfnM76iFIZVFf50hYXGbtiV71BHAthNWd6+dw==} - engines: {node: '>=14.0.0'} - - '@smithy/util-buffer-from@2.0.0': - resolution: {integrity: sha512-/YNnLoHsR+4W4Vf2wL5lGv0ksg8Bmk3GEGxn2vEQt52AQaPSCuaO5PM5VM7lP1K9qHRKHwrPGktqVoAHKWHxzw==} + '@smithy/util-buffer-from@1.1.0': + resolution: {integrity: sha512-9m6NXE0ww+ra5HKHCHig20T+FAwxBAm7DIdwc/767uGWbRcY720ybgPacQNB96JMOI7xVr/CDa3oMzKmW4a+kw==} engines: {node: '>=14.0.0'} '@smithy/util-buffer-from@2.2.0': resolution: {integrity: sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==} engines: {node: '>=14.0.0'} - '@smithy/util-config-provider@2.0.0': - resolution: {integrity: sha512-xCQ6UapcIWKxXHEU4Mcs2s7LcFQRiU3XEluM2WcCjjBtQkUN71Tb+ydGmJFPxMUrW/GWMgQEEGipLym4XG0jZg==} - engines: {node: '>=14.0.0'} + '@smithy/util-buffer-from@3.0.0': + resolution: {integrity: sha512-aEOHCgq5RWFbP+UDPvPot26EJHjOC+bRgse5A8V3FSShqd5E5UN4qc7zkwsvJPPAVsf73QwYcHN1/gt/rtLwQA==} + engines: {node: '>=16.0.0'} - '@smithy/util-config-provider@2.3.0': - resolution: {integrity: sha512-HZkzrRcuFN1k70RLqlNK4FnPXKOpkik1+4JaBoHNJn+RnJGYqaa3c5/+XtLOXhlKzlRgNvyaLieHTW2VwGN0VQ==} - engines: {node: '>=14.0.0'} + '@smithy/util-config-provider@3.0.0': + resolution: {integrity: sha512-pbjk4s0fwq3Di/ANL+rCvJMKM5bzAQdE5S/6RL5NXgMExFAi6UgQMPOm5yPaIWPpr+EOXKXRonJ3FoxKf4mCJQ==} + engines: {node: '>=16.0.0'} - '@smithy/util-defaults-mode-browser@2.0.22': - resolution: {integrity: sha512-qcF20IHHH96FlktvBRICDXDhLPtpVmtksHmqNGtotb9B0DYWXsC6jWXrkhrrwF7tH26nj+npVTqh9isiFV1gdA==} + '@smithy/util-defaults-mode-browser@3.0.23': + resolution: {integrity: sha512-Y07qslyRtXDP/C5aWKqxTPBl4YxplEELG3xRrz2dnAQ6Lq/FgNrcKWmV561nNaZmFH+EzeGOX3ZRMbU8p1T6Nw==} engines: {node: '>= 10.0.0'} - '@smithy/util-defaults-mode-browser@2.2.1': - resolution: {integrity: sha512-RtKW+8j8skk17SYowucwRUjeh4mCtnm5odCL0Lm2NtHQBsYKrNW0od9Rhopu9wF1gHMfHeWF7i90NwBz/U22Kw==} + '@smithy/util-defaults-mode-node@3.0.23': + resolution: {integrity: sha512-9Y4WH7f0vnDGuHUa4lGX9e2p+sMwODibsceSV6rfkZOvMC+BY3StB2LdO1NHafpsyHJLpwAgChxQ38tFyd6vkg==} engines: {node: '>= 10.0.0'} - '@smithy/util-defaults-mode-node@2.0.29': - resolution: {integrity: sha512-+uG/15VoUh6JV2fdY9CM++vnSuMQ1VKZ6BdnkUM7R++C/vLjnlg+ToiSR1FqKZbMmKBXmsr8c/TsDWMAYvxbxQ==} - engines: {node: '>= 10.0.0'} + '@smithy/util-endpoints@2.1.3': + resolution: {integrity: sha512-34eACeKov6jZdHqS5hxBMJ4KyWKztTMulhuQ2UdOoP6vVxMLrOKUqIXAwJe/wiWMhXhydLW664B02CNpQBQ4Aw==} + engines: {node: '>=16.0.0'} - '@smithy/util-defaults-mode-node@2.3.1': - resolution: {integrity: sha512-vkMXHQ0BcLFysBMWgSBLSk3+leMpFSyyFj8zQtv5ZyUBx8/owVh1/pPEkzmW/DR/Gy/5c8vjLDD9gZjXNKbrpA==} - engines: {node: '>= 10.0.0'} - - '@smithy/util-endpoints@1.0.7': - resolution: {integrity: sha512-Q2gEind3jxoLk6hdKWyESMU7LnXz8aamVwM+VeVjOYzYT1PalGlY/ETa48hv2YpV4+YV604y93YngyzzzQ4IIA==} - engines: {node: '>= 14.0.0'} - - '@smithy/util-endpoints@1.2.0': - resolution: {integrity: sha512-BuDHv8zRjsE5zXd3PxFXFknzBG3owCpjq8G3FcsXW3CykYXuEqM3nTSsmLzw5q+T12ZYuDlVUZKBdpNbhVtlrQ==} - engines: {node: '>= 14.0.0'} - - '@smithy/util-hex-encoding@2.0.0': - resolution: {integrity: sha512-c5xY+NUnFqG6d7HFh1IFfrm3mGl29lC+vF+geHv4ToiuJCBmIfzx6IeHLg+OgRdPFKDXIw6pvi+p3CsscaMcMA==} + '@smithy/util-hex-encoding@1.1.0': + resolution: {integrity: sha512-7UtIE9eH0u41zpB60Jzr0oNCQ3hMJUabMcKRUVjmyHTXiWDE4vjSqN6qlih7rCNeKGbioS7f/y2Jgym4QZcKFg==} engines: {node: '>=14.0.0'} '@smithy/util-hex-encoding@2.2.0': resolution: {integrity: sha512-7iKXR+/4TpLK194pVjKiasIyqMtTYJsgKgM242Y9uzt5dhHnUDvMNb+3xIhRJ9QhvqGii/5cRUt4fJn3dtXNHQ==} engines: {node: '>=14.0.0'} - '@smithy/util-middleware@2.0.8': - resolution: {integrity: sha512-qkvqQjM8fRGGA8P2ydWylMhenCDP8VlkPn8kiNuFEaFz9xnUKC2irfqsBSJrfrOB9Qt6pQsI58r3zvvumhFMkw==} + '@smithy/util-hex-encoding@3.0.0': + resolution: {integrity: sha512-eFndh1WEK5YMUYvy3lPlVmYY/fZcQE1D8oSf41Id2vCeIkKJXPcYDCZD+4+xViI6b1XSd7tE+s5AmXzz5ilabQ==} + engines: {node: '>=16.0.0'} + + '@smithy/util-middleware@1.1.0': + resolution: {integrity: sha512-6hhckcBqVgjWAqLy2vqlPZ3rfxLDhFWEmM7oLh2POGvsi7j0tHkbN7w4DFhuBExVJAbJ/qqxqZdRY6Fu7/OezQ==} engines: {node: '>=14.0.0'} '@smithy/util-middleware@2.2.0': resolution: {integrity: sha512-L1qpleXf9QD6LwLCJ5jddGkgWyuSvWBkJwWAZ6kFkdifdso+sk3L3O1HdmPvCdnCK3IS4qWyPxev01QMnfHSBw==} engines: {node: '>=14.0.0'} - '@smithy/util-retry@2.0.8': - resolution: {integrity: sha512-cQTPnVaVFMjjS6cb44WV2yXtHVyXDC5icKyIbejMarJEApYeJWpBU3LINTxHqp/tyLI+MZOUdosr2mZ3sdziNg==} - engines: {node: '>= 14.0.0'} + '@smithy/util-middleware@3.0.7': + resolution: {integrity: sha512-OVA6fv/3o7TMJTpTgOi1H5OTwnuUa8hzRzhSFDtZyNxi6OZ70L/FHattSmhE212I7b6WSOJAAmbYnvcjTHOJCA==} + engines: {node: '>=16.0.0'} - '@smithy/util-retry@2.2.0': - resolution: {integrity: sha512-q9+pAFPTfftHXRytmZ7GzLFFrEGavqapFc06XxzZFcSIGERXMerXxCitjOG1prVDR9QdjqotF40SWvbqcCpf8g==} - engines: {node: '>= 14.0.0'} + '@smithy/util-retry@3.0.7': + resolution: {integrity: sha512-nh1ZO1vTeo2YX1plFPSe/OXaHkLAHza5jpokNiiKX2M5YpNUv6RxGJZhpfmiR4jSvVHCjIDmILjrxKmP+/Ghug==} + engines: {node: '>=16.0.0'} - '@smithy/util-stream@2.0.23': - resolution: {integrity: sha512-OJMWq99LAZJUzUwTk+00plyxX3ESktBaGPhqNIEVab+53gLULiWN9B/8bRABLg0K6R6Xg4t80uRdhk3B/LZqMQ==} - engines: {node: '>=14.0.0'} + '@smithy/util-stream@3.1.9': + resolution: {integrity: sha512-7YAR0Ub3MwTMjDfjnup4qa6W8gygZMxikBhFMPESi6ASsl/rZJhwLpF/0k9TuezScCojsM0FryGdz4LZtjKPPQ==} + engines: {node: '>=16.0.0'} - '@smithy/util-stream@2.2.0': - resolution: {integrity: sha512-17faEXbYWIRst1aU9SvPZyMdWmqIrduZjVOqCPMIsWFNxs5yQQgFrJL6b2SdiCzyW9mJoDjFtgi53xx7EH+BXA==} - engines: {node: '>=14.0.0'} - - '@smithy/util-uri-escape@2.0.0': - resolution: {integrity: sha512-ebkxsqinSdEooQduuk9CbKcI+wheijxEb3utGXkCoYQkJnwTnLbH1JXGimJtUkQwNQbsbuYwG2+aFVyZf5TLaw==} + '@smithy/util-uri-escape@1.1.0': + resolution: {integrity: sha512-/jL/V1xdVRt5XppwiaEU8Etp5WHZj609n0xMTuehmCqdoOFbId1M+aEeDWZsQ+8JbEB/BJ6ynY2SlYmOaKtt8w==} engines: {node: '>=14.0.0'} '@smithy/util-uri-escape@2.2.0': resolution: {integrity: sha512-jtmJMyt1xMD/d8OtbVJ2gFZOSKc+ueYJZPW20ULW1GOp/q/YIM0wNh+u8ZFao9UaIGz4WoPW8hC64qlWLIfoDA==} engines: {node: '>=14.0.0'} - '@smithy/util-utf8@2.0.2': - resolution: {integrity: sha512-qOiVORSPm6Ce4/Yu6hbSgNHABLP2VMv8QOC3tTDNHHlWY19pPyc++fBTbZPtx6egPXi4HQxKDnMxVxpbtX2GoA==} + '@smithy/util-uri-escape@3.0.0': + resolution: {integrity: sha512-LqR7qYLgZTD7nWLBecUi4aqolw8Mhza9ArpNEQ881MJJIU2sE5iHCK6TdyqqzcDLy0OPe10IY4T8ctVdtynubg==} + engines: {node: '>=16.0.0'} + + '@smithy/util-utf8@1.1.0': + resolution: {integrity: sha512-p/MYV+JmqmPyjdgyN2UxAeYDj9cBqCjp0C/NsTWnnjoZUVqoeZ6IrW915L9CAKWVECgv9lVQGc4u/yz26/bI1A==} engines: {node: '>=14.0.0'} '@smithy/util-utf8@2.3.0': resolution: {integrity: sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==} engines: {node: '>=14.0.0'} - '@smithy/util-waiter@2.0.15': - resolution: {integrity: sha512-9Y+btzzB7MhLADW7xgD6SjvmoYaRkrb/9SCbNGmNdfO47v38rxb90IGXyDtAK0Shl9bMthTmLgjlfYc+vtz2Qw==} - engines: {node: '>=14.0.0'} + '@smithy/util-utf8@3.0.0': + resolution: {integrity: sha512-rUeT12bxFnplYDe815GXbq/oixEGHfRFFtcTF3YdDi/JaENIM6aSYYLJydG83UNzLXeRI5K8abYd/8Sp/QM0kA==} + engines: {node: '>=16.0.0'} + + '@smithy/util-waiter@3.1.6': + resolution: {integrity: sha512-xs/KAwWOeCklq8aMlnpk25LgxEYHKOEodfjfKclDMLcBJEVEKzDLxZxBQyztcuPJ7F54213NJS8PxoiHNMdItQ==} + engines: {node: '>=16.0.0'} '@sqltools/formatter@1.2.5': resolution: {integrity: sha512-Uy0+khmZqUrUGm5dmMqVlnvufZRSK0FbYzVgp0UMstm+F5+W2/jnEEQyc9vo1ZR/E5ZI/B1WjjoTqBqwJL6Krw==} - '@storybook/addon-a11y@8.1.4': - resolution: {integrity: sha512-KGR1lzJBykrn5YALk3OiqAPqbAWnCryjKxtwJ+eiE1fCmfz6ZloycHggbml9qBo3xwYEtvKWxqMbbTgYYwvU3g==} + '@storybook/addon-a11y@8.3.5': + resolution: {integrity: sha512-/19UO8IXbyfcYK5K8ejSYF+hC+EK79c0bBPHMNeYSFOHSqQM3KoMo+TLIcLsuhuRClmlM+4Zs+VSIYDwc+d3ig==} + peerDependencies: + storybook: ^8.3.5 - '@storybook/addon-actions@8.1.4': - resolution: {integrity: sha512-3q/DCcnSjpuWBoKpA+0j1etXyMOu+GsdUtxv041tsNjMMwyc+CfHUGiAHMyQ0TpEf8MPQoTeZsRPrEZwVUNXow==} + '@storybook/addon-actions@8.3.5': + resolution: {integrity: sha512-t8D5oo+4XfD+F8091wLa2y/CDd/W2lExCeol5Vm1tp5saO+u6f2/d7iykLhTowWV84Uohi3D073uFeyTAlGebg==} + peerDependencies: + storybook: ^8.3.5 - '@storybook/addon-backgrounds@8.1.4': - resolution: {integrity: sha512-v4CJ2fQJyhy1G73DcuhGwAk8HfYpSUavB7XIEflm9riqSZkzUAu/H51a4cncszXgIjzGcKRRtl+QZs1g/4J96A==} + '@storybook/addon-backgrounds@8.3.5': + resolution: {integrity: sha512-IQGjDujuw8+iSqKREdkL8I5E/5CAHZbfOWd4A75PQK2D6qZ0fu/xRwTOQOH4jP6xn/abvfACOdL6A0d5bU90ag==} + peerDependencies: + storybook: ^8.3.5 - '@storybook/addon-controls@8.1.4': - resolution: {integrity: sha512-YuimjOeHYKMXAAs8tYVen2A84ZJNNuvoI6t+paZU570hkEeh5iPggC2UneNAgtQBds98TWwEy+3YggXtfon6iw==} + '@storybook/addon-controls@8.3.5': + resolution: {integrity: sha512-2eCVobUUvY1Rq7sp1U8Mx8t44VXwvi0E+hqyrsqOx5TTSC/FUQ+hNAX6GSYUcFIyQQ1ORpKNlUjAAdjxBv1ZHQ==} + peerDependencies: + storybook: ^8.3.5 - '@storybook/addon-docs@8.1.4': - resolution: {integrity: sha512-k734R4CV/U4qiNwBNfxI6R71hoL1TDQZEwyoqbyW05exUu6orWGIf1jrWtz6q67ykTNTCTCsFq2PI3K1LvYyjw==} + '@storybook/addon-docs@8.3.5': + resolution: {integrity: sha512-MOVfo1bY8kXTzbvmWnx3UuSO4WNykFz7Edvb3mxltNyuW7UDRZGuIuSe32ddT/EtLJfurrC9Ja3yBy4KBUGnMA==} + peerDependencies: + storybook: ^8.3.5 - '@storybook/addon-essentials@8.1.4': - resolution: {integrity: sha512-fQQAnV1TMQIFHWpNCINhzPdW3KYIwIp1MRzjHagylYT/Eqx+JNcT9z9MPqN0jQvV9z2retHgMydwusFGAuG7oQ==} + '@storybook/addon-essentials@8.3.5': + resolution: {integrity: sha512-hXTtPuN4/IsXjUrkMPAuz1qKAl8DovdXpjQgjQs7jSAVx3kc4BZaGqJ3gaVenKtO8uDchmA92BoQygpkc8eWhw==} + peerDependencies: + storybook: ^8.3.5 - '@storybook/addon-highlight@8.1.4': - resolution: {integrity: sha512-Wx8p/DrEuf/fis5x9XHT1gYEJaM9ia/aPPqUfFq/o66z2jUPgITZ49aYRMA2VXxViG6RPAu2cp2ma4FrHy0FuA==} + '@storybook/addon-highlight@8.3.5': + resolution: {integrity: sha512-ku0epul9aReCR3Gv/emwYnsqg3vgux5OmYMjoDcJC7s+LyfweSzLV/f5t9gSHazikJElh5TehtVkWbC4QfbGSw==} + peerDependencies: + storybook: ^8.3.5 - '@storybook/addon-interactions@8.1.4': - resolution: {integrity: sha512-l7LNMgpuMBw7qvrJBpH7lh/EMNOMB9rNyGQOF4RVW7VO3dA5mfPPXnBElQbVyijFMuAtebzenAehgMKusH9UJw==} + '@storybook/addon-interactions@8.3.5': + resolution: {integrity: sha512-GtTy/A+mG7vDOahQr2avT4dpWtCRiFDSYcWyuQOZm10y8VDDw157HQM+FuhxjV9Owrrohy9F24oBUwRG8H3b5A==} + peerDependencies: + storybook: ^8.3.5 - '@storybook/addon-links@8.1.4': - resolution: {integrity: sha512-RUagMeAkOmV7rpU8RArVOUqtuL575nLxbMdsaTb2MRG+7bCTCvZyNBDrAhNYaMB5kfQFWG7wNM1zBUH2e03TrQ==} + '@storybook/addon-links@8.3.5': + resolution: {integrity: sha512-giRCpn6cfJMYPnVJkojoQDO5ae6098fgY9YgAhwaJej/9dufNcioFdbiyfK1vyzbG6TGeTmJ9ncWCXgWRtzxPQ==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta + storybook: ^8.3.5 peerDependenciesMeta: react: optional: true - '@storybook/addon-measure@8.1.4': - resolution: {integrity: sha512-gj0QqcSiU/k8KseWGcqk0rPxaPyDjhFPwOrLfpIhQVhLdmWnWQKtnfCyFVBV7lC6znDAGPuJz+eh+hqqA+j9qA==} + '@storybook/addon-measure@8.3.5': + resolution: {integrity: sha512-6GVehgbHhFIFS69xSfRV+12VK0cnuIAtZdp1J3eUCc2ATrcigqVjTM6wzZz6kBuX6O3dcusr7Wg46KtNliqLqg==} + peerDependencies: + storybook: ^8.3.5 - '@storybook/addon-outline@8.1.4': - resolution: {integrity: sha512-SUjZh83a8P6SIERToG86p1u999nlk9zwz4SsXh4zAOpfr+XVpvNiHNLTu0LexpjnWEFnSOEOMx73vpSqWduDrw==} + '@storybook/addon-outline@8.3.5': + resolution: {integrity: sha512-dwmK6GzjEnQP9Yo0VnBUQtJkXZlXdfjWyskZ/IlUVc+IFdeeCtIiMyA92oMfHo8eXt0k1g21ZqMaIn7ZltOuHw==} + peerDependencies: + storybook: ^8.3.5 - '@storybook/addon-themes@8.1.4': - resolution: {integrity: sha512-+rD3E+SA7pV8DHMeZ5/SJT4VcsCoYNnCsWcbo1vO0fRqRrIfd6swItFnLIyQk/fep/TDcjE8k1pbm/NRe5FUGQ==} + '@storybook/addon-themes@8.3.5': + resolution: {integrity: sha512-kXHKAZvAtMoOR1XFGTo5/T8anE9x7W8Ddpof2wyi+du5HscFiEW7TesWdvNgBUR7wAaiR21aW2S4jC72a6gTCw==} + peerDependencies: + storybook: ^8.3.5 - '@storybook/addon-toolbars@8.1.4': - resolution: {integrity: sha512-bTFRL5BWHoLCyq93gaEVkqCgsvw8egP7D1+Nv/mbnoeOZQzG6hnqkRfJS+d0m8iLB8rTbN0H83tYt8TZrDuFXg==} + '@storybook/addon-toolbars@8.3.5': + resolution: {integrity: sha512-Ml2gc9q8WbteDvmuAZGgBxt5SqWMXzuTkMjlsA8EB53hlkN1w9esX4s8YtBeNqC3HKoUzcdq8uexSBqU8fDbSA==} + peerDependencies: + storybook: ^8.3.5 - '@storybook/addon-viewport@8.1.4': - resolution: {integrity: sha512-OmHJzs6ZzLxD2ihNoc3s2YOJS9PDQNvDej6yYlWRLzS8DAW8ADE3DYl0i8wv/zDXbgEVxyEYwe8JhouIu8x5MA==} + '@storybook/addon-viewport@8.3.5': + resolution: {integrity: sha512-FSWydoPiVWFXEittG7O1YgvuaqoU9Vb+qoq9XfP/hvQHHMDcMZvC40JaV8AnJeTXaM7ngIjcn9XDEfGbFfOzXw==} + peerDependencies: + storybook: ^8.3.5 - '@storybook/blocks@8.1.4': - resolution: {integrity: sha512-Viqb5Hm5Eb9xrmjY7MV9caL5xPJF90vPBALxKrxL8Io4uoAWlzi3uBlx8Hda0nF2qf/PkFdGBM4WqHFM3wXG+w==} + '@storybook/blocks@8.3.5': + resolution: {integrity: sha512-8cHTdTywolTHlgwN8I7YH7saWAIjGzV617AwjhJ95AKlC0VtpO1gAFcAgCqr4DU9eMc+LZuvbnaU/RSvA5eCCQ==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta + storybook: ^8.3.5 peerDependenciesMeta: react: optional: true react-dom: optional: true - '@storybook/builder-manager@8.1.4': - resolution: {integrity: sha512-kbbekBBZ+OKsHknHqAQSRDAQiXBP8RJn0QGX/nF0colq6wkTB4T8KiH7hEGpwFb6gECFCu47T8Ku+wkY8nlfMw==} - - '@storybook/builder-vite@8.1.4': - resolution: {integrity: sha512-wKcLPqy8OvI5GeWJclrzeW2FaEMXFHLO0w6kIsim0XL4QDSGSPTz+aEzVJYmhuwYFbRY/lpMkdWC4ouv7xSwWQ==} + '@storybook/builder-vite@8.3.5': + resolution: {integrity: sha512-paGX8tEmAeAKFU5Cnwkq3RAi3LFCnmjAxMJikT09jUi6jDpNa0VzH8jbLxKdjsPMAsz0Wv3mrLvL2b8hyxLWAw==} peerDependencies: '@preact/preset-vite': '*' - typescript: ^5.5.2 + storybook: ^8.3.5 + typescript: ^5.6.2 vite: ^4.0.0 || ^5.0.0 vite-plugin-glimmerx: '*' peerDependenciesMeta: @@ -5139,144 +4579,99 @@ packages: vite-plugin-glimmerx: optional: true - '@storybook/channels@8.1.4': - resolution: {integrity: sha512-cmITS0w8e9Ys1vqp8S7+uyQKgqVIdUEWs9FK90XeAs0lcuvW10S3qdrarWPbUgKFFFsGIGPIvImbT1vf80/bcQ==} - - '@storybook/cli@8.1.4': - resolution: {integrity: sha512-WFUIJdhkpaTWRRdXahi6lgTdRMTLPfJP2+jehUhhxc/7Yg5VP1FTjS/diSCKEb1yKz8ybBta+ybuoVrM0qQRaA==} - hasBin: true - - '@storybook/client-logger@8.1.4': - resolution: {integrity: sha512-I0PqDoNZf4rqrJYwFHhCwuXumpxvzyTzI5qI5R2JT93i49QShI3pLXY31C9VemVBJmS+pBWVOm6RTIdkQiKVWw==} - - '@storybook/codemod@8.1.4': - resolution: {integrity: sha512-glPwKFc07h3h4ZhakEZIF/8fq3fGGM19hpB+RZRHU3dz4NL/TiZXwboxa61wNZe1ehWqbGDaecwANK45DWsNuA==} - - '@storybook/components@8.1.4': - resolution: {integrity: sha512-Ef1gmHfId/T9tUyOZkvZJx3uEctxANM7OUXCiwJagL31hUdqV62GvE2Oi3JF9qlTO2jH6G5chqFduGr016hR9A==} + '@storybook/components@8.3.5': + resolution: {integrity: sha512-Rq28YogakD3FO4F8KwAtGpo1g3t4V/gfCLqTQ8B6oQUFoxLqegkWk/DlwCzvoJndXuQJfdSyM6+r1JcA4Nql5A==} peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta + storybook: ^8.3.5 - '@storybook/core-common@8.1.4': - resolution: {integrity: sha512-hpJ1tDkseNzcf0XpNFbt2gEYdw5OjskWmviSjQwoGHjCvpvWQCo0hvuj7v9cZHgSScOreLu7kh7cl9hoXhA+dQ==} + '@storybook/core@8.3.5': + resolution: {integrity: sha512-GOGfTvdioNa/n+Huwg4u/dsyYyBcM+gEcdxi3B7i5x4yJ3I912KoVshumQAOF2myKSRdI8h8aGWdx7nnjd0+5Q==} + + '@storybook/csf-plugin@8.3.5': + resolution: {integrity: sha512-ODVqNXwJt90hG7QW8I9w/XUyOGlr0l7XltmIJgXwB/2cYDvaGu3JV5Ybg7O0fxPV8uXk7JlRuUD8ZYv5Low6pA==} peerDependencies: - prettier: ^3.2.5 - peerDependenciesMeta: - prettier: - optional: true + storybook: ^8.3.5 - '@storybook/core-events@8.1.4': - resolution: {integrity: sha512-oZAP3aRDeRyo2GQmADh4R3wJLIb9Ie0FUcWx8V4fvuydzeh6Pprgo//COCR+kySG4kRLqofWeF1Zzvft58Q0kg==} - - '@storybook/core-server@8.1.4': - resolution: {integrity: sha512-g7x3vzk3jOZrOySMbtxk8u4x/MAZyDIjrHMMBQO9mNXKl0AJfU0X1v3Qx9wg+314KfFG/Iq63mYaBjj3EDVFEg==} - - '@storybook/csf-plugin@8.1.4': - resolution: {integrity: sha512-mrfyPg/tXTJES3Tg/OMArJ/0erbwWnsWvlSDRV3cPN2AhZdb7hj7/rLjOzFNzqlxdhyfIjuxUYBp9cz4SdgIrQ==} - - '@storybook/csf-tools@8.1.4': - resolution: {integrity: sha512-0Bper543cY8k01MtFoatewpsw3popuukISeYbzz/26H6QHTojm7PD4ol2yQkcDC/EBA5cU0NbOKACXicd1b3WQ==} - - '@storybook/csf@0.1.7': - resolution: {integrity: sha512-53JeLZBibjQxi0Ep+/AJTfxlofJlxy1jXcSKENlnKxHjWEYyHQCumMP5yTFjf7vhNnMjEpV3zx6t23ssFiGRyw==} - - '@storybook/docs-mdx@3.1.0-next.0': - resolution: {integrity: sha512-t4syFIeSyufieNovZbLruPt2DmRKpbwL4fERCZ1MifWDRIORCKLc4NCEHy+IqvIqd71/SJV2k4B51nF7vlJfmQ==} - - '@storybook/docs-tools@8.1.4': - resolution: {integrity: sha512-taAyvDUYwOj/GOmmB850osdjLc4rW9rwfpGUewQOG17CAAZYRPchMjUGPTS96jt3RzPMPiJkV9TS7BLXmJ9kQg==} + '@storybook/csf@0.1.11': + resolution: {integrity: sha512-dHYFQH3mA+EtnCkHXzicbLgsvzYjcDJ1JWsogbItZogkPHgSJM/Wr71uMkcvw8v9mmCyP4NpXJuu6bPoVsOnzg==} '@storybook/global@5.0.0': resolution: {integrity: sha512-FcOqPAXACP0I3oJ/ws6/rrPT9WGhu915Cg8D02a9YxLo0DE9zI+a9A5gRGvmQ09fiWPukqI8ZAEoQEdWUKMQdQ==} - '@storybook/icons@1.2.9': - resolution: {integrity: sha512-cOmylsz25SYXaJL/gvTk/dl3pyk7yBFRfeXTsHvTA3dfhoU/LWSq0NKL9nM7WBasJyn6XPSGnLS4RtKXLw5EUg==} + '@storybook/icons@1.2.10': + resolution: {integrity: sha512-310apKdDcjbbX2VSLWPwhEwAgjxTzVagrwucVZIdGPErwiAppX8KvBuWZgPo+rQLVrtH8S+pw1dbUwjcE6d7og==} engines: {node: '>=14.0.0'} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - '@storybook/instrumenter@8.1.4': - resolution: {integrity: sha512-0FSEbrRdqJtND+re5Z462ZXy4WIcE45wjlGZd++ukoA7XKklYQdfRNyodNzibUAA3FHbGGFZa5Omf53yN07C6A==} + '@storybook/instrumenter@8.3.5': + resolution: {integrity: sha512-NLDXai5y2t1ITgHVK9chyL0rMFZbICCOGcnTbyWhkLbiEWZKPJ8FuB8+g+Ba6zwtCve1A1Cnb4O2LOWy7TgWQw==} + peerDependencies: + storybook: ^8.3.5 - '@storybook/manager-api@8.1.4': - resolution: {integrity: sha512-cupFijTFID2+XB4Utkqjtayw7uisPFYRGpfvpom+4Aq42sCNKWkE2WYoXCtgxB7SKWSHll6zL9+ZpesvJ6tWNg==} + '@storybook/manager-api@8.3.5': + resolution: {integrity: sha512-fEQoKKi7h7pzh2z9RfuzatJxubrsfL/CB99fNXQ0wshMSY/7O4ckd18pK4fzG9ErnCtLAO9qsim4N/4eQC+/8Q==} + peerDependencies: + storybook: ^8.3.5 - '@storybook/manager@8.1.4': - resolution: {integrity: sha512-hn6tSN/9vQqaeUDCp7KBNTPzxAHXgp2JRw5C3t0vKpJP0Pv2mfL2eeT/9liFMcTaCa3NU04rTq5C9vxIRLG70A==} + '@storybook/preview-api@8.3.5': + resolution: {integrity: sha512-VPqpudE8pmjTLvdNJoW/2//nqElDgUOmIn3QxbbCmdZTHDg5tFtxuqwdlNfArF0TxvTSBDIulXt/Q6K56TAfTg==} + peerDependencies: + storybook: ^8.3.5 - '@storybook/node-logger@8.1.4': - resolution: {integrity: sha512-tMcVPdTPN3ZWgzc4YA2MC3GQEuE6Cbx2AN2hQYhdF8O0v+IlAbnad5heUFVEM+fGBpoxZJtVaRohuAd6BR/Ffw==} - - '@storybook/preview-api@8.1.4': - resolution: {integrity: sha512-WHS3k/8UZT5vYJ+evSAMLG89sv1rBaojTQ2XNgv/DX74vK4l0MQ61wsORC0v7ScGyEuwYIuSCqHH5NNrOBLxmA==} - - '@storybook/preview@8.1.4': - resolution: {integrity: sha512-M2scYBLMda0EZk9B1Pvlig6GZfkWrbw2gBd5LTSwLV5gpuA5IXYeK/k0J+molE8Cl+Jpgu016y85RiUxA7YC1g==} - - '@storybook/react-dom-shim@8.1.4': - resolution: {integrity: sha512-NJBuOml3o/kgwapMB4EAt92wX1lQUgG2fG6qfBkkJ1Djk4bUW/GZndCv9sArp+wncD4rfAVYdEtI8bxmqmv49A==} + '@storybook/react-dom-shim@8.3.5': + resolution: {integrity: sha512-Hf0UitJ/K0C7ajooooUK/PxOR4ihUWqsC7iCV1Gqth8U37dTeLMbaEO4PBwu0VQ+Ufg0N8BJLWfg7o6G4hrODw==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta + storybook: ^8.3.5 - '@storybook/router@8.1.4': - resolution: {integrity: sha512-1470aScDa8Z1cVQEi3DotrgiyHW1b88vumFsYVyAZjaqs+21NHE9uIbnyIajVoSuyGxZD0sb2PWeATjsD1FDcQ==} - - '@storybook/telemetry@8.1.4': - resolution: {integrity: sha512-KRy1xKBWhTr6QOA/R21QPD9lCvD8vLUuAkxWy7QUd9kamXqLSXMTAogGPZRNwsVO5rubRsf0kSu0KEA+8kyJlA==} - - '@storybook/test@8.1.4': - resolution: {integrity: sha512-9fV7dWecNsKxy10LADZDxxI5lALkW1t+ibTBlH8Q2rCrKLeNU4yBeaHpKh+DqdIF1QRynNnvbBE/o7b7KlwBfQ==} - - '@storybook/theming@8.1.4': - resolution: {integrity: sha512-ujJIBEnNXW8SXxwZp2mQ5k9vHFDqL0dB7bLACVdBJO7+euBJRGeJLRRoFJ/5LivQh0kKdIkaIrp1om32kgPrEA==} + '@storybook/test@8.3.5': + resolution: {integrity: sha512-1BXWsUGWk9FiKKelZZ55FDJdeoL8uRBHbjTYBRM2xJLhdNSvGzI4Tb3bkmxPpGn72Ua6AyldhlTxr2BpUFKOHA==} peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta - peerDependenciesMeta: - react: - optional: true - react-dom: - optional: true + storybook: ^8.3.5 - '@storybook/types@8.1.4': - resolution: {integrity: sha512-QfTJg5Hu3c0eiD38Z75bZsw0iCIpruOTGV5O65vCpNun7D6WUyyMM0aUJN3ytujGiHfjsWVgiSe+WoHxdy/fEA==} + '@storybook/theming@8.3.5': + resolution: {integrity: sha512-9HmDDyC691oqfg4RziIM9ElsS2HITaxmH7n/yeUPtuirkPdAQzqOzhvH/Sa0qOhifzs8VjR+Gd/a/ZQ+S38r7w==} + peerDependencies: + storybook: ^8.3.5 - '@storybook/vue3-vite@8.1.4': - resolution: {integrity: sha512-5qNMxTDiSEZKiwsglvCdQxnQiXE6wwJuCb/X4e6HVJlA3wEE9WoaYb675SnEDHh+hxgcGF+SiKo0hpv/vFWojA==} + '@storybook/vue3-vite@8.3.5': + resolution: {integrity: sha512-y2/fJ8FlhbXZ09nLA/WrYnBFbMyLKlHo+f4fE4Pp/Yk+5OU3z2oCphChc8bwcCseSgbMG1ZY0wwyN3UbH/sRpA==} engines: {node: '>=18.0.0'} peerDependencies: + storybook: ^8.3.5 vite: ^4.0.0 || ^5.0.0 - '@storybook/vue3@8.1.4': - resolution: {integrity: sha512-vqzGcyMdUcmGcBk3ZUVvFA9U55VYiANu1ynWAbOCkTAPjT0POcIvgwwrID9YI5Y8j6lWlmYl4VBgrDkZyzDHQg==} + '@storybook/vue3@8.3.5': + resolution: {integrity: sha512-qm/c3CFvMlSCy2TCRTT8xEuEgDiSlaQnMq/ywig5xAiExZBdgxMxARRq3FOiXjRJ00F5nEQ5fT9yMftcJhJo6w==} engines: {node: '>=18.0.0'} peerDependencies: + storybook: ^8.3.5 vue: ^3.0.0 - '@supabase/auth-js@2.64.2': - resolution: {integrity: sha512-s+lkHEdGiczDrzXJ1YWt2y3bxRi+qIUnXcgkpLSrId7yjBeaXBFygNjTaoZLG02KNcYwbuZ9qkEIqmj2hF7svw==} + '@supabase/auth-js@2.65.0': + resolution: {integrity: sha512-+wboHfZufAE2Y612OsKeVP4rVOeGZzzMLD/Ac3HrTQkkY4qXNjI6Af9gtmxwccE5nFvTiF114FEbIQ1hRq5uUw==} - '@supabase/functions-js@2.3.1': - resolution: {integrity: sha512-QyzNle/rVzlOi4BbVqxLSH828VdGY1RElqGFAj+XeVypj6+PVtMlD21G8SDnsPQDtlqqTtoGRgdMlQZih5hTuw==} + '@supabase/functions-js@2.4.1': + resolution: {integrity: sha512-8sZ2ibwHlf+WkHDUZJUXqqmPvWQ3UHN0W30behOJngVh/qHHekhJLCFbh0AjkE9/FqqXtf9eoVvmYgfCLk5tNA==} '@supabase/node-fetch@2.6.15': resolution: {integrity: sha512-1ibVeYUacxWYi9i0cf5efil6adJ9WRyZBLivgjs+AUpewx1F3xPi7gLgaASI2SmIQxPoCEjAsLAzKPgMJVgOUQ==} engines: {node: 4.x || >=6.0.0} - '@supabase/postgrest-js@1.15.2': - resolution: {integrity: sha512-9/7pUmXExvGuEK1yZhVYXPZnLEkDTwxgMQHXLrN5BwPZZm4iUCL1YEyep/Z2lIZah8d8M433mVAUEGsihUj5KQ==} + '@supabase/postgrest-js@1.16.1': + resolution: {integrity: sha512-EOSEZFm5pPuCPGCmLF1VOCS78DfkSz600PBuvBND/IZmMciJ1pmsS3ss6TkB6UkuvTybYiBh7gKOYyxoEO3USA==} - '@supabase/realtime-js@2.9.5': - resolution: {integrity: sha512-TEHlGwNGGmKPdeMtca1lFTYCedrhTAv3nZVoSjrKQ+wkMmaERuCe57zkC5KSWFzLYkb5FVHW8Hrr+PX1DDwplQ==} + '@supabase/realtime-js@2.10.2': + resolution: {integrity: sha512-qyCQaNg90HmJstsvr2aJNxK2zgoKh9ZZA8oqb7UT2LCh3mj9zpa3Iwu167AuyNxsxrUE8eEJ2yH6wLCij4EApA==} - '@supabase/storage-js@2.5.5': - resolution: {integrity: sha512-OpLoDRjFwClwc2cjTJZG8XviTiQH4Ik8sCiMK5v7et0MDu2QlXjCAW3ljxJB5+z/KazdMOTnySi+hysxWUPu3w==} + '@supabase/storage-js@2.7.0': + resolution: {integrity: sha512-iZenEdO6Mx9iTR6T7wC7sk6KKsoDPLq8rdu5VRy7+JiT1i8fnqfcOr6mfF2Eaqky9VQzhP8zZKQYjzozB65Rig==} - '@supabase/supabase-js@2.43.4': - resolution: {integrity: sha512-/pLPaxiIsn5Vaz3s32HC6O/VNwfeddnzS0bZRpOW0AKcPuXroD8pT9G8mpiBlZfpKsMmq6k7tlhW7Sr1PAQ1lw==} + '@supabase/supabase-js@2.45.4': + resolution: {integrity: sha512-E5p8/zOLaQ3a462MZnmnz03CrduA5ySH9hZyL03Y+QZLIOO4/Gs8Rdy4ZCKDHsN7x0xdanVEWWFN3pJFQr9/hg==} '@supercharge/promise-pool@3.1.0': resolution: {integrity: sha512-gB3NukbIcYzRtPoE6dx9svQYPodxvnfQlaaQd8N/z87E6WaMfRE7o5HwB+LZ+KeM0nsNAq1n4TmBtfz1VCUR+Q==} @@ -5291,58 +4686,17 @@ packages: '@tediousjs/connection-string@0.5.0': resolution: {integrity: sha512-7qSgZbincDDDFyRweCIEvZULFAw5iz/DeunhvuxpL31nfntX3P4Yd4HkHBRg9H8CdqY1e5WFN1PZIz/REL9MVQ==} + '@testing-library/dom@10.4.0': + resolution: {integrity: sha512-pemlzrSESWbdAloYml3bAJMEfNh1Z7EduzqPKprCH5S341frlpYnUEW0H72dLxa6IsYr+mPno20GiSm+h9dEdQ==} + engines: {node: '>=18'} + '@testing-library/dom@9.3.3': resolution: {integrity: sha512-fB0R+fa3AUqbLHWyxXa2kGVtf1Fe1ZZFr0Zp6AIbIAzXb2mKbEXl+PCQNUOaq5lbTab5tfctfXRNsWXxa2f7Aw==} engines: {node: '>=14'} - '@testing-library/dom@9.3.4': - resolution: {integrity: sha512-FlS4ZWlp97iiNWig0Muq8p+3rVDjRiYE+YKGbAqXOu9nwJFFOdL00kFpz42M+4huzYi86vAK1sOOfyOG45muIQ==} - engines: {node: '>=14'} - - '@testing-library/jest-dom@6.1.5': - resolution: {integrity: sha512-3y04JLW+EceVPy2Em3VwNr95dOKqA8DhR0RJHhHKDZNYXcVXnEK7WIrpj4eYU8SVt/qYZ2aRWt/WgQ+grNES8g==} + '@testing-library/jest-dom@6.5.0': + resolution: {integrity: sha512-xGGHpBXYSHUUr6XsKBfs85TWlYKpTc37cSBBVrXcib2MkHLboWlkClhWF37JKlDb9KEq3dHs+f2xR7XJEWGBxA==} engines: {node: '>=14', npm: '>=6', yarn: '>=1'} - peerDependencies: - '@jest/globals': '>= 28' - '@types/jest': '>= 28' - jest: '>= 28' - vitest: '>= 0.32' - peerDependenciesMeta: - '@jest/globals': - optional: true - '@types/jest': - optional: true - jest: - optional: true - vitest: - optional: true - - '@testing-library/jest-dom@6.4.2': - resolution: {integrity: sha512-CzqH0AFymEMG48CpzXFriYYkOjk6ZGPCLMhW9e9jg3KMCn5OfJecF8GtGW7yGfR/IgCe3SX8BSwjdzI6BBbZLw==} - engines: {node: '>=14', npm: '>=6', yarn: '>=1'} - peerDependencies: - '@jest/globals': '>= 28' - '@types/bun': latest - '@types/jest': '>= 28' - jest: '>= 28' - vitest: '>= 0.32' - peerDependenciesMeta: - '@jest/globals': - optional: true - '@types/bun': - optional: true - '@types/jest': - optional: true - jest: - optional: true - vitest: - optional: true - - '@testing-library/user-event@14.5.1': - resolution: {integrity: sha512-UCcUKrUYGj7ClomOo2SpNVvx4/fkd/2BbIHDCle8A0ax+P3bU7yJwDBDrS6ZwdTMARWTGODX1hEsCcO+7beJjg==} - engines: {node: '>=12', npm: '>=6'} - peerDependencies: - '@testing-library/dom': '>=7.21.4' '@testing-library/user-event@14.5.2': resolution: {integrity: sha512-YAh82Wh4TIrxYLmfGcixwD18oIjyC1pFQC2Y01F2lzV2HTMiYrI0nze0FD0ocB//CKS/7jIUgae+adPqxK5yCQ==} @@ -5350,12 +4704,15 @@ packages: peerDependencies: '@testing-library/dom': '>=7.21.4' - '@testing-library/vue@8.0.1': - resolution: {integrity: sha512-l51ZEpjTQ6glq3wM+asQ1GbKJMGcxwgHEygETx0aCRN4TjFEGvMZy4YdWKs/y7bu4bmLrxcxhbEPP7iPSW/2OQ==} + '@testing-library/vue@8.1.0': + resolution: {integrity: sha512-ls4RiHO1ta4mxqqajWRh8158uFObVrrtAPoxk7cIp4HrnQUj/ScKzqz53HxYpG3X6Zb7H2v+0eTGLSoy8HQ2nA==} engines: {node: '>=14'} peerDependencies: '@vue/compiler-sfc': '>= 3' vue: '>= 3' + peerDependenciesMeta: + '@vue/compiler-sfc': + optional: true '@tokenizer/token@0.3.0': resolution: {integrity: sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==} @@ -5368,12 +4725,17 @@ packages: resolution: {integrity: sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==} engines: {node: '>= 10'} - '@trysound/sax@0.2.0': - resolution: {integrity: sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==} - engines: {node: '>=10.13.0'} + '@tsconfig/node10@1.0.11': + resolution: {integrity: sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==} - '@tsconfig/node18@18.2.2': - resolution: {integrity: sha512-d6McJeGsuoRlwWZmVIeE8CUA27lu6jLjvv1JzqmpsytOYYbVi1tHZEnwCNVOXnj4pyLvneZlFlpXUK+X9wBWyw==} + '@tsconfig/node12@1.0.11': + resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==} + + '@tsconfig/node14@1.0.3': + resolution: {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==} + + '@tsconfig/node16@1.0.4': + resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==} '@types/amqplib@0.10.1': resolution: {integrity: sha512-j6ANKT79ncUDnAs/+9r9eDujxbeJoTjoVu33gHHcaPfmLQaMhvfbH2GqSe8KUM444epAp1Vl3peVOQfZk3UIqA==} @@ -5432,53 +4794,26 @@ packages: '@types/convict@6.1.1': resolution: {integrity: sha512-R+JLaTvhsD06p4jyjUDtbd5xMtZTRE3c0iI+lrFWZogSVEjgTWPYwvJPVf+t92E+yrlbXa4X4Eg9ro6gPdUt4w==} - '@types/cookie-parser@1.4.3': - resolution: {integrity: sha512-CqSKwFwefj4PzZ5n/iwad/bow2hTCh0FlNAeWLtQM3JA/NX/iYagIpWG2cf1bQKQ2c9gU2log5VUCrn7LDOs0w==} + '@types/cookie-parser@1.4.7': + resolution: {integrity: sha512-Fvuyi354Z+uayxzIGCwYTayFKocfV7TuDYZClCdIP9ckhvAu/ixDtCB6qx2TT0FKjPLf1f3P/J1rgf6lPs64mw==} '@types/cookiejar@2.1.5': resolution: {integrity: sha512-he+DHOWReW0nghN24E1WUqM0efK4kI9oTqDm6XmK8ZPe2djZ90BSNdGnIyCLzCPw7/pogPlGbzI2wHGGmi4O/Q==} - '@types/cron@1.7.3': - resolution: {integrity: sha512-iPmUXyIJG1Js+ldPYhOQcYU3kCAQ2FWrSkm1FJPoii2eYSn6wEW6onPukNTT0bfiflexNSRPl6KWmAIqS+36YA==} - - '@types/cross-spawn@6.0.2': - resolution: {integrity: sha512-KuwNhp3eza+Rhu8IFI5HUXRP0LIhqH5cAjubUvGXXthh4YYBuP2ntwEX+Cz8GJoZUHlKo247wPWOfA9LYEq4cw==} - '@types/dateformat@3.0.1': resolution: {integrity: sha512-KlPPdikagvL6ELjWsljbyDIPzNCeliYkqRpI+zea99vBBbCIA5JNshZAwQKTON139c87y9qvTFVgkFd14rtS4g==} '@types/deep-equal@1.0.1': resolution: {integrity: sha512-mMUu4nWHLBlHtxXY17Fg6+ucS/MnndyOWyOe7MmwkoMYxvfQU2ajtRaEvqSUv+aVkMqH/C0NCI8UoVfRNQ10yg==} - '@types/detect-port@1.3.2': - resolution: {integrity: sha512-xxgAGA2SAU4111QefXPSp5eGbDm/hW6zhvYl9IeEPZEry9F4d66QAHm5qpUXjb6IsevZV/7emAEx5MhP6O192g==} - - '@types/diff@5.2.1': - resolution: {integrity: sha512-uxpcuwWJGhe2AR1g8hD9F5OYGCqjqWnBUQFD8gMZsDbv8oPHzxJF6iMO6n8Tk0AdzlxoaaoQhOYlIg/PukVU8g==} - - '@types/doctrine@0.0.3': - resolution: {integrity: sha512-w5jZ0ee+HaPOaX25X2/2oGR/7rgAQSYII7X7pp0m9KgBfMP7uKfMfTvcpl5Dj+eDBbpxKGiqE+flqDr6XTd2RA==} - - '@types/ejs@3.1.1': - resolution: {integrity: sha512-RQul5wEfY7BjWm0sYY86cmUN/pcXWGyVxWX93DFFJvcrxax5zKlieLwA3T77xJGwNcZW0YW6CYG70p1m8xPFmA==} - - '@types/emscripten@1.39.7': - resolution: {integrity: sha512-tLqYV94vuqDrXh515F/FOGtBcRMTPGvVV1LzLbtYDcQmmhtpf/gLYf+hikBbQk8MzOHNz37wpFfJbYAuSn8HqA==} - - '@types/eslint-scope@3.7.4': - resolution: {integrity: sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==} - '@types/eslint@8.56.5': resolution: {integrity: sha512-u5/YPJHo1tvkSF2CE0USEkxon82Z5DBy2xR+qfyYNszpX9qcs4sT6uq2kBbj4BXY1+DBGDPnrhMZV3pKWGNukw==} - '@types/estree@0.0.51': - resolution: {integrity: sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==} - '@types/estree@1.0.0': resolution: {integrity: sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==} - '@types/estree@1.0.5': - resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} + '@types/estree@1.0.6': + resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==} '@types/eventsource@1.1.9': resolution: {integrity: sha512-F3K4oyM12o8W9jxuJmW+1sc8kdw0Hj0t+26urwkcolPJTgkfppEfIdftdcXmUU2QPBIwcrYO6diqgIqgCDf1FA==} @@ -5495,9 +4830,15 @@ packages: '@types/find-cache-dir@3.2.1': resolution: {integrity: sha512-frsJrz2t/CeGifcu/6uRo4b+SzAwT4NYCVPu1GN8IB9XTzrpPkGuV0tmh9mN+/L0PklAlsC3u5Fxt0ju00LXIw==} + '@types/flat@5.0.5': + resolution: {integrity: sha512-nPLljZQKSnac53KDUDzuzdRfGI0TDb5qPrb+SrQyN3MtdQrOnGsKniHN1iYZsJEBIVQve94Y6gNz22sgISZq+Q==} + '@types/formidable@3.4.5': resolution: {integrity: sha512-s7YPsNVfnsng5L8sKnG/Gbb2tiwwJTY1conOkJzTMRvJAlLFW1nEua+ADsJQu8N1c0oTHx9+d5nqg10WuT9gHQ==} + '@types/fs-extra@11.0.4': + resolution: {integrity: sha512-yTbItCNreRooED33qjunPthRcSjERP1r4MqCZc7wv0u2sUkzTFp45tgUfS5+r7FrZPdmCCNflLhVSP/o+SemsQ==} + '@types/ftp@0.3.33': resolution: {integrity: sha512-L7wFlX3t9GsGgNS0oxLt6zbAZZGgsdptMmciL4cdxHmbL3Hz4Lysh8YqAR34eHsJ1uacJITcZBBDl5XpQlxPpQ==} @@ -5549,23 +4890,26 @@ packages: '@types/jsdom@20.0.1': resolution: {integrity: sha512-d0r18sZPmMQr1eG35u12FZfhIXNrnsPU/g5wvRKCUf/tOGilKKwYMYGqh33BNR6ba+2gkHw1EUiHoN3mn7E5IQ==} - '@types/jsdom@21.1.6': - resolution: {integrity: sha512-/7kkMsC+/kMs7gAYmmBR9P0vGTnOoLhQhyhQJSlXGI5bzTHp6xdo0TtKWQAsz6pmSAeVqKSbqeyP6hytqr9FDw==} - '@types/json-diff@1.0.0': resolution: {integrity: sha512-dCXC1F73Sqriz2d8Wt/sP/DztE+rlfIRPxW9WSYheHp/l3gvkeSvM6l4vhm7t4Dgn8AJAxNKajx/eobbPdP6Wg==} '@types/json-schema@7.0.15': resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} + '@types/jsonfile@6.1.4': + resolution: {integrity: sha512-D5qGUYwjvnNNextdU59/+fI+spnwtTFmyQP0h+PfIOSkNfpU6AOICUOkm4i0OnSk+NyjdPJrxCDro0sJsWlRpQ==} + '@types/jsonpath@0.2.0': resolution: {integrity: sha512-v7qlPA0VpKUlEdhghbDqRoKMxFB3h3Ch688TApBJ6v+XLDdvWCGLJIYiPKGZnS6MAOie+IorCfNYVHOPIHSWwQ==} '@types/jsonwebtoken@9.0.6': resolution: {integrity: sha512-/5hndP5dCjloafCXns6SZyESp3Ldq7YjH3zwzwczYnjxIT0Fqzk5ROSYVGfFyczIue7IUEj8hkvLbPoLQ18vQw==} - '@types/linkify-it@3.0.2': - resolution: {integrity: sha512-HZQYqbiFVWufzCwexrvh694SOim8z2d+xJl5UNamcvQFejLY/2YUtzXHYi3cHdI7PMlS8ejH2slRAOJQ32aNbA==} + '@types/k6@0.52.0': + resolution: {integrity: sha512-yaw2wg61nKQtToDML+nngzgXVjZ6wNA4R0Q3jKDTeadG5EqfZgis5a1Q2hwY7kjuGuXmu8eM6gHg3tgnOj4vNw==} + + '@types/linkify-it@3.0.5': + resolution: {integrity: sha512-yg6E+u0/+Zjva+buc3EIb+29XEg4wltq7cSmd4Uc2EE/1nUVmxyzpX6gUXD0V8jIrG0r7YeOGVIbYRkxeooCtw==} '@types/lodash-es@4.17.6': resolution: {integrity: sha512-R+zTeVUKDdfoRxpAryaQNRKk3105Rrgx2CFRClIgRGaqDTdjsm8h6IYA8ir584W3ePzkZfst5xIgDwYrlh9HLg==} @@ -5582,23 +4926,26 @@ packages: '@types/luxon@3.2.0': resolution: {integrity: sha512-lGmaGFoaXHuOLXFvuju2bfvZRqxAqkHPx9Y9IQdQABrinJJshJwfNCKV+u7rR3kJbiqfTF/NhOkcxxAFrObyaA==} + '@types/luxon@3.4.2': + resolution: {integrity: sha512-TifLZlFudklWlMBfhubvgqTXRzLDI5pCbGa4P8a3wPyUQSW+1xQ5eDsreP9DWHX3tjq1ke96uYG/nwundroWcA==} + '@types/mailparser@3.4.4': resolution: {integrity: sha512-C6Znp2QVS25JqtuPyxj38Qh+QoFcLycdxsvcc6IZCGekhaMBzbdTXzwGzhGoYb3TfKu8IRCNV0sV1o3Od97cEQ==} - '@types/markdown-it-emoji@2.0.2': - resolution: {integrity: sha512-2ln8Wjbcj/0oRi/6VnuMeWEHHuK8uapFttvcLmDIe1GKCsFBLOLBX+D+xhDa9oWOQV0IpvxwrSfKKssAqqroog==} + '@types/markdown-it-emoji@2.0.5': + resolution: {integrity: sha512-iJLsmCNpSWKtV6Ia3mLSjcXJPEt7ubGG342z+hGvYx++TpM19oTUrJcI7XjbOqRQ+W2UQ323E7B0eCLwlgT/9g==} - '@types/markdown-it-link-attributes@3.0.1': - resolution: {integrity: sha512-K8RnNb1q8j7rDOJbMF7AnlhCC/45BjrQ8z3WZWOrvkBIl8u9RXvmBdG/hfpnmK1JhhEZcmFEKWt+ilW1Mly+2Q==} + '@types/markdown-it-link-attributes@3.0.5': + resolution: {integrity: sha512-VZ2BGN3ywUg7mBD8W6PwR8ChpOxaQSBDbLqPgvNI+uIra3zY2af1eG/3XzWTKjEraTWskMKnZqZd6m1fDF67Bg==} - '@types/markdown-it@12.2.3': - resolution: {integrity: sha512-GKMHFfv3458yYy+v/N8gjufHO6MSZKCOXpZc5GXIWWy8uldwfmPn98vp81gZ5f9SVw8YYBctgfJ22a2d7AOMeQ==} + '@types/markdown-it@13.0.9': + resolution: {integrity: sha512-1XPwR0+MgXLWfTn9gCsZ55AHOKW1WN+P9vr0PaQh5aerR9LLQXUbjfEAFhjmEmyoYFWAyuN2Mqkn40MZ4ukjBw==} '@types/md5@2.3.5': resolution: {integrity: sha512-/i42wjYNgE6wf0j2bcTX6kuowmdL/6PE4IVitMpm2eYKBUuYCprdcWVK+xEF0gcV6ufMCRhtxmReGfc6hIK7Jw==} - '@types/mdurl@1.0.2': - resolution: {integrity: sha512-eC4U9MlIcu2q0KQmXszyn5Akca/0jrQmwDRgpAMJai7qBWq4amIQhZyNau4VYGtCeALvW1/NtjzJJ567aZxfKA==} + '@types/mdurl@1.0.5': + resolution: {integrity: sha512-6L6VymKTzYSrEf4Nev4Xa1LCHKrlTlYCBMTlQKFuddo1CvQcE52I0mwfOJayueUC7MJuXOeHTcIU683lzd0cUA==} '@types/mdx@2.0.3': resolution: {integrity: sha512-IgHxcT3RC8LzFLhKwP3gbMPeaK7BM9eBH46OdapPA7yvuIUJ8H6zHZV53J8hGZcTSnt95jANt+rTBNUUc22ACQ==} @@ -5621,15 +4968,12 @@ packages: '@types/mssql@9.1.5': resolution: {integrity: sha512-Q9EsgXwuRoX5wvUSu24YfbKMbFChv7pZ/jeCzPkj47ehcuXYsBcfogwrtVFosSjinD4Q/MY2YPGk9Yy1cM2Ywg==} - '@types/multer@1.4.7': - resolution: {integrity: sha512-/SNsDidUFCvqqcWDwxv2feww/yqhNeTRL5CVoL3jU4Goc4kKEL10T7Eye65ZqPNi4HRx8sAEX59pV1aEH7drNA==} + '@types/multer@1.4.12': + resolution: {integrity: sha512-pQ2hoqvXiJt2FP9WQVLPRO+AmiIm/ZYkavPlIQnx282u4ZrVdztx0pkh3jjpQt0Kz+YI0YhSG264y08UJKoUQg==} '@types/node-fetch@2.6.4': resolution: {integrity: sha512-1ZX9fcN4Rvkvgv4E6PAY5WXUFWFcRWxZa3EW83UjycOB9ljJCedb2CupIP4RZMEwF/M3eTcCihbBRgwtGbg5Rg==} - '@types/node-ssh@7.0.1': - resolution: {integrity: sha512-98EuH7UQl/WWwwDxpbANQ76HwBdzcSnC9zLSdrtVW7jjYeOTQ6TxBygbGwzZR4ho1agbd941UnHCdrXz2sS8JQ==} - '@types/node@18.16.16': resolution: {integrity: sha512-NpaM49IGQQAUlBhHMF82QH80J08os4ZmyF9MkpCzWAGuOHqE4gTEbhzd7L3l5LmWuZ6E0OiC1FweQ4tsiW35+g==} @@ -5639,12 +4983,12 @@ packages: '@types/normalize-package-data@2.4.1': resolution: {integrity: sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==} + '@types/pg@8.11.6': + resolution: {integrity: sha512-/2WmmBXHLsfRqzfHW7BNZ8SbYzE8OSk7i3WjFYvfgRHj7S1xj+16Je5fUKv3lVdVzk/zn9TXOqf+avFCFIE0yQ==} + '@types/phoenix@1.6.4': resolution: {integrity: sha512-B34A7uot1Cv0XtaHRYDATltAdKx0BvVKNgYNqE4WjtPUa4VQJM7kxeXcVKaH+KS+kCmZ+6w+QaUdcljiheiBJA==} - '@types/pretty-hrtime@1.0.1': - resolution: {integrity: sha512-VjID5MJb1eGKthz2qUerWT8+R4b9N+CHvGCzg9fn4kWZgaF9AhdYikQio3R7wV8YY1NsQKPaCwKz1Yff+aHNUQ==} - '@types/promise-ftp-common@1.1.0': resolution: {integrity: sha512-mqo6D4qdiJdzeqlzFwEIchQQZk2hZacjssmjoAX7nClcREmRUUsnmgbWXEfA2qK986rwOPqepfRoSu7rsjAKag==} @@ -5678,9 +5022,6 @@ packages: '@types/request@2.48.12': resolution: {integrity: sha512-G3sY+NpsA9jnwm0ixhAFQSJ3Q9JkpLZpJbI3GMv0mIAT0y3mRabYeINzal5WOChIiaTEGQYlHOKgkaM9EisWHw==} - '@types/resolve@1.20.2': - resolution: {integrity: sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==} - '@types/retry@0.12.0': resolution: {integrity: sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==} @@ -5717,15 +5058,12 @@ packages: '@types/sizzle@2.3.3': resolution: {integrity: sha512-JYM8x9EGF163bEyhdJBpR2QX1R5naCJHC8ucJylJ3w9/CVBaskdQ8WqBf8MmQrd1kRvp/a4TS8HJ+bxzR7ZJYQ==} - '@types/snowflake-sdk@1.6.20': - resolution: {integrity: sha512-Dr7oIXrWthlk9wVWpZgpm49BT8cFFXz43u7SkJKyiZK3WHiHQo4b+m2/p3WIpkYzZCcOZZ/t1B09XMd7+u1Wjw==} + '@types/snowflake-sdk@1.6.24': + resolution: {integrity: sha512-CgRp971LQJr970YSySCeIoNfX/29s9ZUnwhVjl8uL62kC7UoTNdNRwwyGCQ7Ca/fECRu8nK47pZpw8xmVWDn9Q==} '@types/ssh2-sftp-client@5.3.2': resolution: {integrity: sha512-s5R3hsnI3/7Ar57LG++gm2kxgONHtOZY2A3AgGzEwiJlHR8j7MRPDw1n/hG6oMnOUJ4zuoLNtDXgDfmmxV4lDA==} - '@types/ssh2-streams@0.1.9': - resolution: {integrity: sha512-I2J9jKqfmvXLR5GomDiCoHrEJ58hAOmFrekfFqmCFd+A6gaEStvWnPykoWUwld1PNg4G5ag1LwdA+Lz1doRJqg==} - '@types/ssh2@1.11.6': resolution: {integrity: sha512-8Mf6bhzYYBLEB/G6COux7DS/F5bCWwojv/qFo2yH/e4cLzAavJnxvFXrYW59iKfXdhG6OmzJcXDasgOb/s0rxw==} @@ -5759,12 +5097,12 @@ packages: '@types/through@0.0.30': resolution: {integrity: sha512-FvnCJljyxhPM3gkRgWmxmDZyAQSiBQQWLI0A0VFL0K7W1oRUrPJSqNO0NvTnLkBcotdlp3lKvaT0JrnyRDkzOg==} - '@types/tmp@0.2.3': - resolution: {integrity: sha512-dDZH/tXzwjutnuk4UacGgFRwV+JSLaXL1ikvidfJprkb7L9Nx1njcRHHmi3Dsvt7pgqqTEeucQuOrWHPFgzVHA==} - '@types/tough-cookie@4.0.2': resolution: {integrity: sha512-Q5vtl1W5ue16D+nIaW8JWebSSraJVlK+EthKn7e7UcD4KWsaSJ8BqGPXNaPghgtcn/fhvrN17Tv8ksUsQpiplw==} + '@types/triple-beam@1.3.5': + resolution: {integrity: sha512-6WaYesThRMCl19iryMYP7/x2OVgCtbIVflDGFpWnb9irXI3UjYE4AzmYuiUKY1AJstGijoY+MgUszMgRxIYTYw==} + '@types/tunnel@0.0.3': resolution: {integrity: sha512-sOUTGn6h1SfQ+gbgqC364jLFBw2lnFqkgF3q0WovEHRLMrVD1sd5aufqi/aJObLekJO+Aq5z646U4Oxy6shXMA==} @@ -5777,11 +5115,14 @@ packages: '@types/uuencode@0.0.3': resolution: {integrity: sha512-NaBWHPPQvcXqiSaMAGa2Ea/XaFcK/nHwGe2akwJBXRLkCNa2+izx/F1aKJrzFH+L68D88VLYIATTYP7B2k4zVA==} + '@types/uuid@10.0.0': + resolution: {integrity: sha512-7gqG38EyHgyP1S+7+xomFtL+ZNHcKv6DwNaCZmJmo1vgMugyF3TCnXVg4t1uk89mLNwnLtnY3TpOpCOyp1/xHQ==} + '@types/uuid@8.3.4': resolution: {integrity: sha512-c/I8ZRb51j+pYGAu5CrFMRxqZ2ke4y2grEBO5AUjgSkSk+qT2Ea+OdWElz/OiMf5MNpn2b17kuVBwZLQJXzihw==} - '@types/uuid@9.0.7': - resolution: {integrity: sha512-WUtIVRUZ9i5dYXefDEAI7sh9/O7jGvHg7Df/5O/gtH3Yabe5odI3UWopVR1qbPXQtvOxWu3mM4XxlYeZtMWF4g==} + '@types/uuid@9.0.8': + resolution: {integrity: sha512-jg+97EGIcY9AGHJJRaaPVgetKDsrTgbRjQ5Msgjh/DQKEFl0DtyRr/VCOyD1T2R1MNeWPK/u7JoGhlDZnKBAfA==} '@types/validator@13.7.10': resolution: {integrity: sha512-t1yxFAR2n0+VO6hd/FJ9F2uezAZVWHLmpmlJzm1eX03+H7+HsuTAp7L8QJs+2pQCfWkP1+EXsGK9Z9v7o/qPVQ==} @@ -5792,8 +5133,8 @@ packages: '@types/web-bluetooth@0.0.16': resolution: {integrity: sha512-oh8q2Zc32S6gd/j50GowEjKLoOVOwHP/bWVjKJInBwQqdOYMdPrf1oVlelTlyfFK3CKxL1uahMDAr+vy8T7yMQ==} - '@types/web-bluetooth@0.0.18': - resolution: {integrity: sha512-v/ZHEj9xh82usl8LMR3GarzFY1IrbXJw5L4QfQhokjRV91q+SelFqxQWSep1ucXEZ22+dSTwLFkXeur25sPIbw==} + '@types/web-bluetooth@0.0.20': + resolution: {integrity: sha512-g9gZnnXVq7gM7v3tJCWV/qw7w+KeOlSHAhgF9RytFyifW6AF61hdT2ucrYhPq9hLs5JIryeupHV3qGk95dH9ow==} '@types/webidl-conversions@7.0.0': resolution: {integrity: sha512-xTE1E+YF4aWPJJeUzaZI5DRntlkY3+BCVJi0axFptnjGmAoWxkyREIh/XMrfxVLejwQxMCfDXdICo0VLxThrog==} @@ -5801,8 +5142,8 @@ packages: '@types/whatwg-url@11.0.4': resolution: {integrity: sha512-lXCmTWSHJvf0TRSO58nm978b8HJ/EdsSsEKLd3ODHFjo+3VGAyyTp4v50nWvwtzBxSMQrVOK7tcuN0zGPLICMw==} - '@types/ws@8.5.10': - resolution: {integrity: sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A==} + '@types/ws@8.5.12': + resolution: {integrity: sha512-3tPRkv1EtkDpzlgyKyI8pGsGZAGPEaXeu0DOj5DI25Ja91bdAYddYHbADRYVrZMRbfW+1l5YwXVDKohDJNQxkQ==} '@types/ws@8.5.4': resolution: {integrity: sha512-zdQDHKUgcX/zBc4GrwsE/7dVdAD8JR4EuiAXiiUhhfyIJXXb2+PrGshFyeXWQPMmmZ2XxgaqclgpIC7eTXc1mg==} @@ -5843,8 +5184,8 @@ packages: typescript: optional: true - '@typescript-eslint/scope-manager@6.7.5': - resolution: {integrity: sha512-GAlk3eQIwWOJeb9F7MKQ6Jbah/vx1zETSDw8likab/eFcqkjSD7BI75SDAeC5N2L0MmConMoPvTsmkrg71+B1A==} + '@typescript-eslint/scope-manager@6.21.0': + resolution: {integrity: sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg==} engines: {node: ^16.0.0 || >=18.0.0} '@typescript-eslint/scope-manager@7.2.0': @@ -5861,16 +5202,16 @@ packages: typescript: optional: true - '@typescript-eslint/types@6.7.5': - resolution: {integrity: sha512-WboQBlOXtdj1tDFPyIthpKrUb+kZf2VroLZhxKa/VlwLlLyqv/PwUNgL30BlTVZV1Wu4Asu2mMYPqarSO4L5ZQ==} + '@typescript-eslint/types@6.21.0': + resolution: {integrity: sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg==} engines: {node: ^16.0.0 || >=18.0.0} '@typescript-eslint/types@7.2.0': resolution: {integrity: sha512-XFtUHPI/abFhm4cbCDc5Ykc8npOKBSJePY3a3s+lwumt7XWJuzP5cZcfZ610MIPHjQjNsOLlYK8ASPaNG8UiyA==} engines: {node: ^16.0.0 || >=18.0.0} - '@typescript-eslint/typescript-estree@6.7.5': - resolution: {integrity: sha512-NhJiJ4KdtwBIxrKl0BqG1Ur+uw7FiOnOThcYx9DpOGJ/Abc9z2xNzLeirCG02Ig3vkvrc2qFLmYSSsaITbKjlg==} + '@typescript-eslint/typescript-estree@6.21.0': + resolution: {integrity: sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: typescript: '*' @@ -5887,8 +5228,8 @@ packages: typescript: optional: true - '@typescript-eslint/utils@6.7.5': - resolution: {integrity: sha512-pfRRrH20thJbzPPlPc4j0UNGvH1PjPlhlCMq4Yx7EGjV7lvEeGX0U6MJYe8+SyFutWgSHsdbJ3BXzZccYggezA==} + '@typescript-eslint/utils@6.21.0': + resolution: {integrity: sha512-NfWVaC8HP9T8cbKQxHcsJBY5YE1O33+jpMwN45qzWWaPDZgLIbo12toGMWnmhvCpd3sIxkpDw3Wv1B3dYrbDQQ==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 @@ -5899,8 +5240,8 @@ packages: peerDependencies: eslint: ^8.56.0 - '@typescript-eslint/visitor-keys@6.7.5': - resolution: {integrity: sha512-3MaWdDZtLlsexZzDSdQWsFQ9l9nL8B80Z4fImSpyllFC/KLqWQRdEcB+gGGO+N3Q2uL40EsG66wZLsohPxNXvg==} + '@typescript-eslint/visitor-keys@6.21.0': + resolution: {integrity: sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A==} engines: {node: ^16.0.0 || >=18.0.0} '@typescript-eslint/visitor-keys@7.2.0': @@ -5910,59 +5251,72 @@ packages: '@ungap/structured-clone@1.2.0': resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} - '@vitejs/plugin-vue@5.0.4': - resolution: {integrity: sha512-WS3hevEszI6CEVEx28F8RjTX97k3KsrcY6kvTg7+Whm5y3oYvcqzVeGCU3hxSAn4uY2CLCkeokkGKpoctccilQ==} + '@vitejs/plugin-vue@5.1.4': + resolution: {integrity: sha512-N2XSI2n3sQqp5w7Y/AN/L2XDjBIRGqXko+eDp42sydYSBeJuSm5a1sLf8zakmo8u7tA8NmBgoDLA1HeOESjp9A==} engines: {node: ^18.0.0 || >=20.0.0} peerDependencies: vite: ^5.0.0 vue: ^3.2.25 - '@vitest/coverage-v8@1.6.0': - resolution: {integrity: sha512-KvapcbMY/8GYIG0rlwwOKCVNRc0OL20rrhFkg/CHNzncV03TE2XWvO5w9uZYoxNiMEBacAJt3unSOiZ7svePew==} + '@vitest/coverage-v8@2.1.2': + resolution: {integrity: sha512-b7kHrFrs2urS0cOk5N10lttI8UdJ/yP3nB4JYTREvR5o18cR99yPpK4gK8oQgI42BVv0ILWYUSYB7AXkAUDc0g==} peerDependencies: - vitest: 1.6.0 + '@vitest/browser': 2.1.2 + vitest: 2.1.2 + peerDependenciesMeta: + '@vitest/browser': + optional: true - '@vitest/expect@1.3.1': - resolution: {integrity: sha512-xofQFwIzfdmLLlHa6ag0dPV8YsnKOCP1KdAeVVh34vSjN2dcUiXYCD9htu/9eM7t8Xln4v03U9HLxLpPlsXdZw==} + '@vitest/expect@2.0.5': + resolution: {integrity: sha512-yHZtwuP7JZivj65Gxoi8upUN2OzHTi3zVfjwdpu2WrvCZPLwsJ2Ey5ILIPccoW23dd/zQBlJ4/dhi7DWNyXCpA==} - '@vitest/expect@1.6.0': - resolution: {integrity: sha512-ixEvFVQjycy/oNgHjqsL6AZCDduC+tflRluaHIzKIsdbzkLn2U/iBnVeJwB6HsIjQBdfMR8Z0tRxKUsvFJEeWQ==} + '@vitest/expect@2.1.2': + resolution: {integrity: sha512-FEgtlN8mIUSEAAnlvn7mP8vzaWhEaAEvhSXCqrsijM7K6QqjB11qoRZYEd4AKSCDz8p0/+yH5LzhZ47qt+EyPg==} - '@vitest/runner@1.6.0': - resolution: {integrity: sha512-P4xgwPjwesuBiHisAVz/LSSZtDjOTPYZVmNAnpHHSR6ONrf8eCJOFRvUwdHn30F5M1fxhqtl7QZQUk2dprIXAg==} + '@vitest/mocker@2.1.2': + resolution: {integrity: sha512-ExElkCGMS13JAJy+812fw1aCv2QO/LBK6CyO4WOPAzLTmve50gydOlWhgdBJPx2ztbADUq3JVI0C5U+bShaeEA==} + peerDependencies: + '@vitest/spy': 2.1.2 + msw: ^2.3.5 + vite: ^5.0.0 + peerDependenciesMeta: + msw: + optional: true + vite: + optional: true - '@vitest/snapshot@1.6.0': - resolution: {integrity: sha512-+Hx43f8Chus+DCmygqqfetcAZrDJwvTj0ymqjQq4CvmpKFSTVteEOBzCusu1x2tt4OJcvBflyHUE0DZSLgEMtQ==} + '@vitest/pretty-format@2.0.5': + resolution: {integrity: sha512-h8k+1oWHfwTkyTkb9egzwNMfJAEx4veaPSnMeKbVSjp4euqGSbQlm5+6VHwTr7u4FJslVVsUG5nopCaAYdOmSQ==} - '@vitest/spy@1.3.1': - resolution: {integrity: sha512-xAcW+S099ylC9VLU7eZfdT9myV67Nor9w9zhf0mGCYJSO+zM2839tOeROTdikOi/8Qeusffvxb/MyBSOja1Uig==} + '@vitest/pretty-format@2.1.2': + resolution: {integrity: sha512-FIoglbHrSUlOJPDGIrh2bjX1sNars5HbxlcsFKCtKzu4+5lpsRhOCVcuzp0fEhAGHkPZRIXVNzPcpSlkoZ3LuA==} - '@vitest/spy@1.6.0': - resolution: {integrity: sha512-leUTap6B/cqi/bQkXUu6bQV5TZPx7pmMBKBQiI0rJA8c3pB56ZsaTbREnF7CJfmvAS4V2cXIBAh/3rVwrrCYgw==} + '@vitest/runner@2.1.2': + resolution: {integrity: sha512-UCsPtvluHO3u7jdoONGjOSil+uON5SSvU9buQh3lP7GgUXHp78guN1wRmZDX4wGK6J10f9NUtP6pO+SFquoMlw==} - '@vitest/utils@1.3.1': - resolution: {integrity: sha512-d3Waie/299qqRyHTm2DjADeTaNdNSVsnwHPWrs20JMpjh6eiVq7ggggweO8rc4arhf6rRkWuHKwvxGvejUXZZQ==} + '@vitest/snapshot@2.1.2': + resolution: {integrity: sha512-xtAeNsZ++aRIYIUsek7VHzry/9AcxeULlegBvsdLncLmNCR6tR8SRjn8BbDP4naxtccvzTqZ+L1ltZlRCfBZFA==} - '@vitest/utils@1.6.0': - resolution: {integrity: sha512-21cPiuGMoMZwiOHa2i4LXkMkMkCGzA+MVFV70jRwHo95dL4x/ts5GZhML1QWuy7yfp3WzK3lRvZi3JnXTYqrBw==} + '@vitest/spy@2.0.5': + resolution: {integrity: sha512-c/jdthAhvJdpfVuaexSrnawxZz6pywlTPe84LUB2m/4t3rl2fTo9NFGBG4oWgaD+FTgDDV8hJ/nibT7IfH3JfA==} - '@volar/language-core@1.11.1': - resolution: {integrity: sha512-dOcNn3i9GgZAcJt43wuaEykSluAuOkQgzni1cuxLxTV0nJKanQztp7FxyswdRILaKH+P2XZMPRp2S4MV/pElCw==} + '@vitest/spy@2.1.2': + resolution: {integrity: sha512-GSUi5zoy+abNRJwmFhBDC0yRuVUn8WMlQscvnbbXdKLXX9dE59YbfwXxuJ/mth6eeqIzofU8BB5XDo/Ns/qK2A==} - '@volar/language-core@2.2.5': - resolution: {integrity: sha512-2htyAuxRrAgETmFeUhT4XLELk3LiEcqoW/B8YUXMF6BrGWLMwIR09MFaZYvrA2UhbdAeSyeQ726HaWSWkexUcQ==} + '@vitest/utils@2.0.5': + resolution: {integrity: sha512-d8HKbqIcya+GR67mkZbrzhS5kKhtp8dQLcmRZLGTscGVg7yImT82cIrhtn2L8+VujWcy6KZweApgNmPsTAO/UQ==} - '@volar/source-map@1.11.1': - resolution: {integrity: sha512-hJnOnwZ4+WT5iupLRnuzbULZ42L7BWWPMmruzwtLhJfpDVoZLjNBxHDi2sY2bgZXCKlpU5XcsMFoYrsQmPhfZg==} + '@vitest/utils@2.1.2': + resolution: {integrity: sha512-zMO2KdYy6mx56btx9JvAqAZ6EyS3g49krMPPrgOp1yxGZiA93HumGk+bZ5jIZtOg5/VBYl5eBmGRQHqq4FG6uQ==} - '@volar/source-map@2.2.5': - resolution: {integrity: sha512-wrOEIiZNf4E+PWB0AxyM4tfhkfldPsb3bxg8N6FHrxJH2ohar7aGu48e98bp3pR9HUA7P/pR9VrLmkTrgCCnWQ==} + '@volar/language-core@2.4.6': + resolution: {integrity: sha512-FxUfxaB8sCqvY46YjyAAV6c3mMIq/NWQMVvJ+uS4yxr1KzOvyg61gAuOnNvgCvO4TZ7HcLExBEsWcDu4+K4E8A==} - '@volar/typescript@1.11.1': - resolution: {integrity: sha512-iU+t2mas/4lYierSnoFOeRFQUhAEMgsFuQxoxvwn5EdQopw43j+J27a4lt9LMInx1gLJBC6qL14WYGlgymaSMQ==} + '@volar/source-map@2.4.6': + resolution: {integrity: sha512-Nsh7UW2ruK+uURIPzjJgF0YRGP5CX9nQHypA2OMqdM2FKy7rh+uv3XgPnWPw30JADbKvZ5HuBzG4gSbVDYVtiw==} - '@volar/typescript@2.2.5': - resolution: {integrity: sha512-eSV/n75+ppfEVugMC/salZsI44nXDPAyL6+iTYCNLtiLHGJsnMv9GwiDMujrvAUj/aLQyqRJgYtXRoxop2clCw==} + '@volar/typescript@2.4.6': + resolution: {integrity: sha512-NMIrA7y5OOqddL9VtngPWYmdQU03htNKFtAYidbYfWA0TOhyGVd9tfcP4TsLWQ+RBWDZCbBqsr8xzU0ZOxYTCQ==} '@vue-flow/background@1.3.0': resolution: {integrity: sha512-fu/8s9wzSOQIitnSTI10XT3bzTtagh4h8EF2SWwtlDklOZjAaKy75lqv4htHa3wigy/r4LGCOGwLw3Pk88/AxA==} @@ -5970,51 +5324,49 @@ packages: '@vue-flow/core': ^1.23.0 vue: ^3.3.0 - '@vue-flow/controls@1.1.1': - resolution: {integrity: sha512-TCoRD5aYZQsM/N7QlPJcIILg1Gxm0O/zoUikxaeadcom1OlKFHutY72agsySJEWM6fTlyb7w8DYCbB4T8YbFoQ==} + '@vue-flow/controls@1.1.2': + resolution: {integrity: sha512-6dtl/JnwDBNau5h3pDBdOCK6tdxiVAOL3cyruRL61gItwq5E97Hmjmj2BIIqX2p7gU1ENg3z80Z4zlu58fGlsg==} peerDependencies: '@vue-flow/core': ^1.23.0 vue: ^3.3.0 - '@vue-flow/core@1.33.5': - resolution: {integrity: sha512-Obo+KHmcww/NYGARMqVH1dhd42QeFzV+TNwytrjVgYCoMVCNjs/blCh437TYTsNy4vgX1NKpNwTbQrS+keurgA==} + '@vue-flow/core@1.41.2': + resolution: {integrity: sha512-nRGMXPH4oOyC5I1W8HLqGarBFYZZMNhuHlLaai7+LkDmzvGark+c/ucnJfwYaI2ho/CzQQ8q1J3jMcr+Np2kFA==} peerDependencies: vue: ^3.3.0 - '@vue-flow/minimap@1.4.0': - resolution: {integrity: sha512-GetmN8uOQxIx4ja85VDnIwpZO5SnGIOfYSqUw8MRMbc8CdACun2M2e3FRaMZRaWapclU2ssXms4xHMWrA3YWpw==} + '@vue-flow/minimap@1.5.0': + resolution: {integrity: sha512-JhxXDF+8uTc7sgkZHDIvFpHqSl4wsK9xp8Kz5OHwNcXlgGcwqj4yad6jcc1B6bGxm+huESpNmoPotQbpMn6rVw==} peerDependencies: '@vue-flow/core': ^1.23.0 vue: ^3.3.0 - '@vue-flow/node-toolbar@1.1.0': - resolution: {integrity: sha512-6RVDHgY+x8m1cXPaEkqPa/RMR90AC1hPHYBK/QVh8k6lJnFPgwJ9PSiYoC4amsUiDK0mF0Py+PlztLJY1ty+4A==} + '@vue-flow/node-resizer@1.4.0': + resolution: {integrity: sha512-S52MRcSpd6asza8Cl0bKM2sHGrbq7vBydKHDuPdoTD+cvjNX6XF4LSiPZOuzExePI6b+O6dg2EZ1378oOLGFpA==} peerDependencies: - '@vue-flow/core': ^1.12.2 + '@vue-flow/core': ^1.23.0 + vue: ^3.3.0 - '@vue/compiler-core@3.4.21': - resolution: {integrity: sha512-MjXawxZf2SbZszLPYxaFCjxfibYrzr3eYbKxwpLR9EQN+oaziSu3qKVbwBERj1IFIB8OLUewxB5m/BFzi613og==} + '@vue/compiler-core@3.5.11': + resolution: {integrity: sha512-PwAdxs7/9Hc3ieBO12tXzmTD+Ln4qhT/56S+8DvrrZ4kLDn4Z/AMUr8tXJD0axiJBS0RKIoNaR0yMuQB9v9Udg==} - '@vue/compiler-dom@3.4.21': - resolution: {integrity: sha512-IZC6FKowtT1sl0CR5DpXSiEB5ayw75oT2bma1BEhV7RRR1+cfwLrxc2Z8Zq/RGFzJ8w5r9QtCOvTjQgdn0IKmA==} + '@vue/compiler-dom@3.5.11': + resolution: {integrity: sha512-pyGf8zdbDDRkBrEzf8p7BQlMKNNF5Fk/Cf/fQ6PiUz9at4OaUfyXW0dGJTo2Vl1f5U9jSLCNf0EZJEogLXoeew==} - '@vue/compiler-sfc@3.4.21': - resolution: {integrity: sha512-me7epoTxYlY+2CUM7hy9PCDdpMPfIwrOvAXud2Upk10g4YLv9UBW7kL798TvMeDhPthkZ0CONNrK2GoeI1ODiQ==} + '@vue/compiler-sfc@3.5.11': + resolution: {integrity: sha512-gsbBtT4N9ANXXepprle+X9YLg2htQk1sqH/qGJ/EApl+dgpUBdTv3yP7YlR535uHZY3n6XaR0/bKo0BgwwDniw==} - '@vue/compiler-ssr@3.4.21': - resolution: {integrity: sha512-M5+9nI2lPpAsgXOGQobnIueVqc9sisBFexh5yMIMRAPYLa7+5wEJs8iqOZc1WAa9WQbx9GR2twgznU8LTIiZ4Q==} + '@vue/compiler-ssr@3.5.11': + resolution: {integrity: sha512-P4+GPjOuC2aFTk1Z4WANvEhyOykcvEd5bIj2KVNGKGfM745LaXGr++5njpdBTzVz5pZifdlR1kpYSJJpIlSePA==} + + '@vue/compiler-vue2@2.7.16': + resolution: {integrity: sha512-qYC3Psj9S/mfu9uVi5WvNZIzq+xnXMhOwbTFKKDD7b1lhpnn71jXSFdTQ+WsIEk0ONCd7VV2IMm7ONl6tbQ86A==} '@vue/devtools-api@6.4.5': resolution: {integrity: sha512-JD5fcdIuFxU4fQyXUu3w2KpAJHzTVdN+p4iOX2lMWSHMOoQdMAcpFLZzm9Z/2nmsoZ1a96QEhZ26e50xLBsgOQ==} - '@vue/devtools-api@6.5.0': - resolution: {integrity: sha512-o9KfBeaBmCKl10usN4crU53fYtC1r7jJwdGKjPT24t348rHxgfpZ0xL3Xm/gLUYnc0oTp8LAmrxOeLyu6tbk2Q==} - - '@vue/eslint-config-prettier@9.0.0': - resolution: {integrity: sha512-z1ZIAAUS9pKzo/ANEfd2sO+v2IUalz7cM/cTLOZ7vRFOPk5/xuRKQteOu1DErFLAh/lYGXMVZ0IfYKlyInuDVg==} - peerDependencies: - eslint: '>= 8.0.0' - prettier: ^3.2.5 + '@vue/devtools-api@6.6.4': + resolution: {integrity: sha512-sGhTPMuXqZ1rVOk32RylztWkfXTRhuS7vgAKv0zjqk8gbsHkJ7xfFf+jbySxt7tWObEJwyKaHMikV/WGDiQm8g==} '@vue/eslint-config-typescript@13.0.0': resolution: {integrity: sha512-MHh9SncG/sfqjVqjcuFLOLD6Ed4dRAis4HNt0dXASeAuLqIAx4YMB1/m2o4pUKK1vCt8fUvYG8KKX2Ot3BVZTg==} @@ -6022,156 +5374,78 @@ packages: peerDependencies: eslint: ^8.56.0 eslint-plugin-vue: ^9.0.0 - typescript: ^5.5.2 + typescript: ^5.6.2 peerDependenciesMeta: typescript: optional: true - '@vue/language-core@1.8.27': - resolution: {integrity: sha512-L8Kc27VdQserNaCUNiSFdDl9LWT24ly8Hpwf1ECy3aFb9m6bDhBGQYOujDm21N7EW3moKIOKEanQwe1q5BK+mA==} + '@vue/language-core@2.1.6': + resolution: {integrity: sha512-MW569cSky9R/ooKMh6xa2g1D0AtRKbL56k83dzus/bx//RDJk24RHWkMzbAlXjMdDNyxAaagKPRquBIxkxlCkg==} peerDependencies: - typescript: ^5.5.2 + typescript: ^5.6.2 peerDependenciesMeta: typescript: optional: true - '@vue/language-core@2.0.19': - resolution: {integrity: sha512-A9EGOnvb51jOvnCYoRLnMP+CcoPlbZVxI9gZXE/y2GksRWM6j/PrLEIC++pnosWTN08tFpJgxhSS//E9v/Sg+Q==} + '@vue/reactivity@3.5.11': + resolution: {integrity: sha512-Nqo5VZEn8MJWlCce8XoyVqHZbd5P2NH+yuAaFzuNSR96I+y1cnuUiq7xfSG+kyvLSiWmaHTKP1r3OZY4mMD50w==} + + '@vue/runtime-core@3.5.11': + resolution: {integrity: sha512-7PsxFGqwfDhfhh0OcDWBG1DaIQIVOLgkwA5q6MtkPiDFjp5gohVnJEahSktwSFLq7R5PtxDKy6WKURVN1UDbzA==} + + '@vue/runtime-dom@3.5.11': + resolution: {integrity: sha512-GNghjecT6IrGf0UhuYmpgaOlN7kxzQBhxWEn08c/SQDxv1yy4IXI1bn81JgEpQ4IXjRxWtPyI8x0/7TF5rPfYQ==} + + '@vue/server-renderer@3.5.11': + resolution: {integrity: sha512-cVOwYBxR7Wb1B1FoxYvtjJD8X/9E5nlH4VSkJy2uMA1MzYNdzAAB//l8nrmN9py/4aP+3NjWukf9PZ3TeWULaA==} peerDependencies: - typescript: ^5.5.2 - peerDependenciesMeta: - typescript: - optional: true + vue: 3.5.11 - '@vue/reactivity@3.4.21': - resolution: {integrity: sha512-UhenImdc0L0/4ahGCyEzc/pZNwVgcglGy9HVzJ1Bq2Mm9qXOpP8RyNTjookw/gOCUlXSEtuZ2fUg5nrHcoqJcw==} + '@vue/shared@3.5.11': + resolution: {integrity: sha512-W8GgysJVnFo81FthhzurdRAWP/byq3q2qIw70e0JWblzVhjgOMiC2GyovXrZTFQJnFVryYaKGP3Tc9vYzYm6PQ==} - '@vue/runtime-core@3.4.21': - resolution: {integrity: sha512-pQthsuYzE1XcGZznTKn73G0s14eCJcjaLvp3/DKeYWoFacD9glJoqlNBxt3W2c5S40t6CCcpPf+jG01N3ULyrA==} + '@vue/test-utils@2.4.6': + resolution: {integrity: sha512-FMxEjOpYNYiFe0GkaHsnJPXFHxQ6m4t8vI/ElPGpMWxZKpmRvQ33OIrvRXemy6yha03RxhOlQuy+gZMC3CQSow==} - '@vue/runtime-dom@3.4.21': - resolution: {integrity: sha512-gvf+C9cFpevsQxbkRBS1NpU8CqxKw0ebqMvLwcGQrNpx6gqRDodqKqA+A2VZZpQ9RpK2f9yfg8VbW/EpdFUOJw==} + '@vueuse/components@10.11.0': + resolution: {integrity: sha512-ZvLZI23d5ZAtva5fGyYh/jQtZO8l+zJ5tAXyYNqHJZkq1o5yWyqZhENvSv5mfDmN5IuAOp4tq02mRmX/ipFGcg==} - '@vue/server-renderer@3.4.21': - resolution: {integrity: sha512-aV1gXyKSN6Rz+6kZ6kr5+Ll14YzmIbeuWe7ryJl5muJ4uwSwY/aStXTixx76TwkZFJLm1aAlA/HSWEJ4EyiMkg==} - peerDependencies: - vue: 3.4.21 - - '@vue/shared@3.4.21': - resolution: {integrity: sha512-PuJe7vDIi6VYSinuEbUIQgMIRZGgM8e4R+G+/dQTk0X1NEdvgvvgv7m+rfmDH1gZzyA1OjjoWskvHlfRNfQf3g==} - - '@vue/test-utils@2.4.3': - resolution: {integrity: sha512-F4K7mF+ad++VlTrxMJVRnenKSJmO6fkQt2wpRDiKDesQMkfpniGWsqEi/JevxGBo2qEkwwjvTUAoiGJLNx++CA==} - peerDependencies: - '@vue/server-renderer': ^3.0.1 - vue: ^3.0.1 - peerDependenciesMeta: - '@vue/server-renderer': - optional: true - - '@vue/tsconfig@0.5.1': - resolution: {integrity: sha512-VcZK7MvpjuTPx2w6blwnwZAu5/LgBUtejFOi3pPGQFXQN5Ela03FUtd2Qtg4yWGGissVL0dr6Ro1LfOFh+PCuQ==} - - '@vueuse/components@10.5.0': - resolution: {integrity: sha512-zWQZ8zkNBvX++VHfyiUaQ4otb+4PWI8679GR8FvdrNnj+01LXnqvrkyKd8yTCMJ9nHqwRRTJikS5fu4Zspn9DQ==} - - '@vueuse/core@10.5.0': - resolution: {integrity: sha512-z/tI2eSvxwLRjOhDm0h/SXAjNm8N5ld6/SC/JQs6o6kpJ6Ya50LnEL8g5hoYu005i28L0zqB5L5yAl8Jl26K3A==} + '@vueuse/core@10.11.0': + resolution: {integrity: sha512-x3sD4Mkm7PJ+pcq3HX8PLPBadXCAlSDR/waK87dz0gQE+qJnaaFhc/dZVfJz+IUYzTMVGum2QlR7ImiJQN4s6g==} '@vueuse/core@9.13.0': resolution: {integrity: sha512-pujnclbeHWxxPRqXWmdkKV5OX4Wk4YeK7wusHqRwU0Q7EFusHoqNA/aPhB6KCh9hEqJkLAJo7bb0Lh9b+OIVzw==} - '@vueuse/metadata@10.5.0': - resolution: {integrity: sha512-fEbElR+MaIYyCkeM0SzWkdoMtOpIwO72x8WsZHRE7IggiOlILttqttM69AS13nrDxosnDBYdyy3C5mR1LCxHsw==} + '@vueuse/metadata@10.11.0': + resolution: {integrity: sha512-kQX7l6l8dVWNqlqyN3ePW3KmjCQO3ZMgXuBMddIu83CmucrsBfXlH+JoviYyRBws/yLTQO8g3Pbw+bdIoVm4oQ==} '@vueuse/metadata@9.13.0': resolution: {integrity: sha512-gdU7TKNAUVlXXLbaF+ZCfte8BjRJQWPCa2J55+7/h+yDtzw3vOoGQDRXzI6pyKyo6bXFT5/QoPE4hAknExjRLQ==} - '@vueuse/shared@10.5.0': - resolution: {integrity: sha512-18iyxbbHYLst9MqU1X1QNdMHIjks6wC7XTVf0KNOv5es/Ms6gjVFCAAWTVP2JStuGqydg3DT+ExpFORUEi9yhg==} + '@vueuse/shared@10.11.0': + resolution: {integrity: sha512-fyNoIXEq3PfX1L3NkNhtVQUSRtqYwJtJg+Bp9rIzculIZWHTkKSysujrOk2J+NrRulLTQH9+3gGSfYLWSEWU1A==} '@vueuse/shared@9.13.0': resolution: {integrity: sha512-UrnhU+Cnufu4S6JLCPZnkWh0WwZGUp72ktOF2DFptMlOs3TOdVv8xJN53zhHGARmVOsz5KqOls09+J1NR6sBKw==} - '@webassemblyjs/ast@1.11.1': - resolution: {integrity: sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==} - - '@webassemblyjs/floating-point-hex-parser@1.11.1': - resolution: {integrity: sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==} - - '@webassemblyjs/helper-api-error@1.11.1': - resolution: {integrity: sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==} - - '@webassemblyjs/helper-buffer@1.11.1': - resolution: {integrity: sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==} - - '@webassemblyjs/helper-numbers@1.11.1': - resolution: {integrity: sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==} - - '@webassemblyjs/helper-wasm-bytecode@1.11.1': - resolution: {integrity: sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==} - - '@webassemblyjs/helper-wasm-section@1.11.1': - resolution: {integrity: sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==} - - '@webassemblyjs/ieee754@1.11.1': - resolution: {integrity: sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==} - - '@webassemblyjs/leb128@1.11.1': - resolution: {integrity: sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==} - - '@webassemblyjs/utf8@1.11.1': - resolution: {integrity: sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==} - - '@webassemblyjs/wasm-edit@1.11.1': - resolution: {integrity: sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==} - - '@webassemblyjs/wasm-gen@1.11.1': - resolution: {integrity: sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==} - - '@webassemblyjs/wasm-opt@1.11.1': - resolution: {integrity: sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==} - - '@webassemblyjs/wasm-parser@1.11.1': - resolution: {integrity: sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==} - - '@webassemblyjs/wast-printer@1.11.1': - resolution: {integrity: sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==} + '@vvo/tzdb@6.141.0': + resolution: {integrity: sha512-vpuv8Eo75WwW6oHygfSSJ8J2AIADlqoHu9HmKxD8Ey/hmRhxt0+/nEGbzBy/Y/Q1qsdgDj3kP3NRLr2082VzgA==} '@xata.io/client@0.28.4': resolution: {integrity: sha512-B02WHIA/ViHya84XvH6JCo13rd5h4S5vVyY2aYi6fIcjDIbCpsSLJ4oGWpdodovRYeAZy9Go4OhdyZwMIRC4BQ==} peerDependencies: - typescript: ^5.5.2 + typescript: ^5.6.2 '@xmldom/xmldom@0.8.6': resolution: {integrity: sha512-uRjjusqpoqfmRkTaNuLJ2VohVr67Q5YwDATW3VU7PfzTj6IRaihGrYI7zckGZjxQPBIp63nfvJbM+Yu5ICh0Bg==} engines: {node: '>=10.0.0'} - '@xtuc/ieee754@1.2.0': - resolution: {integrity: sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==} - - '@xtuc/long@4.2.2': - resolution: {integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==} - - '@yarnpkg/esbuild-plugin-pnp@3.0.0-rc.15': - resolution: {integrity: sha512-kYzDJO5CA9sy+on/s2aIW0411AklfCi8Ck/4QDivOqsMKpStZA2SsR+X27VTggGwpStWaLrjJcDcdDMowtG8MA==} - engines: {node: '>=14.15.0'} - peerDependencies: - esbuild: ^0.20.2 - - '@yarnpkg/fslib@2.10.3': - resolution: {integrity: sha512-41H+Ga78xT9sHvWLlFOZLIhtU6mTGZ20pZ29EiZa97vnxdohJD2AF42rCoAoWfqUz486xY6fhjMH+DYEM9r14A==} - engines: {node: '>=12 <14 || 14.2 - 14.9 || >14.10.0'} - - '@yarnpkg/libzip@2.3.0': - resolution: {integrity: sha512-6xm38yGVIa6mKm/DUCF2zFFJhERh/QWp1ufm4cNUvxsONBmfPg8uZ9pZBdOmF6qFGr/HlT6ABBkCSx/dlEtvWg==} - engines: {node: '>=12 <14 || 14.2 - 14.9 || >14.10.0'} - a-sync-waterfall@1.0.1: resolution: {integrity: sha512-RYTOHHdWipFUliRFMCS4X2Yn2X8M87V/OpSqWzKKOGhzqyUxzyVmhHDH9sAvG+ZuQf/TAOFsLCpMw09I1ufUnA==} abab@2.0.6: resolution: {integrity: sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==} + deprecated: Use your platform's native atob() and btoa() methods instead abbrev@1.1.1: resolution: {integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==} @@ -6187,38 +5461,29 @@ packages: acorn-globals@7.0.1: resolution: {integrity: sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q==} - acorn-import-assertions@1.8.0: - resolution: {integrity: sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==} - peerDependencies: - acorn: ^8 - acorn-jsx@5.3.2: resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} peerDependencies: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 - acorn-walk@8.2.0: - resolution: {integrity: sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==} - engines: {node: '>=0.4.0'} - acorn-walk@8.3.2: resolution: {integrity: sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==} engines: {node: '>=0.4.0'} + acorn-walk@8.3.4: + resolution: {integrity: sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==} + engines: {node: '>=0.4.0'} + acorn@7.4.1: resolution: {integrity: sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==} engines: {node: '>=0.4.0'} hasBin: true - acorn@8.11.2: - resolution: {integrity: sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==} + acorn@8.12.1: + resolution: {integrity: sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==} engines: {node: '>=0.4.0'} hasBin: true - address@1.2.2: - resolution: {integrity: sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA==} - engines: {node: '>= 10.0.0'} - adm-zip@0.5.10: resolution: {integrity: sha512-x0HvcHqVJNTPk/Bw8JbLWlWoo6Wwnsug0fnYYro1HBrjxZ3G7/AZk7Ahv8JwDe1uIcz8eBqvu86FuF1POiG7vQ==} engines: {node: '>=6.0'} @@ -6255,10 +5520,13 @@ packages: ajv: optional: true - ajv-keywords@3.5.2: - resolution: {integrity: sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==} + ajv-formats@3.0.1: + resolution: {integrity: sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==} peerDependencies: - ajv: ^6.9.1 + ajv: ^8.0.0 + peerDependenciesMeta: + ajv: + optional: true ajv@6.12.6: resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} @@ -6266,6 +5534,17 @@ packages: ajv@8.12.0: resolution: {integrity: sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==} + ajv@8.13.0: + resolution: {integrity: sha512-PRA911Blj99jR5RMeTunVbNXMF6Lp4vZXnk5GQjcnUWUTsrXtekg/pnmFFI2u/I36Y/2bITGS30GZCXei6uNkA==} + + ajv@8.17.1: + resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==} + + alasql@4.4.0: + resolution: {integrity: sha512-EQOk3NEvKcQxoYeY0d4ePF0VHAcljx3pn5ZkEowMPRThjWXyDc/VHYqC8Sg+6BH2ZhKZBdeRqlvlgZmhfGBtDA==} + engines: {node: '>=15'} + hasBin: true + amqplib@0.10.3: resolution: {integrity: sha512-UHmuSa7n8vVW/a5HGh2nFPqAEr8+cD4dEZ6u9GjP91nHfr1a54RyAKyra7Sb5NH7NBKOUlyQSMXIp0qAixKexw==} engines: {node: '>=10'} @@ -6313,9 +5592,6 @@ packages: resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} engines: {node: '>= 8'} - app-root-dir@1.0.2: - resolution: {integrity: sha512-jlpIfsOoNoafl92Sz//64uQHGSyMrD2vYG5d8o2a4qGvyNCvXur7bzIsWtAC/6flI2RYAp3kv8rsfBtaLm7w0g==} - app-root-path@3.1.0: resolution: {integrity: sha512-biN3PwB2gUtjaYy/isrU3aNWI5w+fAfvHkSvCKeQGxhmYpwKFUxudR3Yya+KqVRHBmEDYh+/lTozYCFbmzX4nA==} engines: {node: '>= 6.0.0'} @@ -6332,6 +5608,10 @@ packages: are-we-there-yet@3.0.1: resolution: {integrity: sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + deprecated: This package is no longer supported. + + arg@4.1.3: + resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} arg@5.0.2: resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} @@ -6342,13 +5622,12 @@ packages: argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} - aria-hidden@1.2.4: - resolution: {integrity: sha512-y+CcFFwelSXpLZk/7fMB2mUbGtX9lKycf1MWJ7CaTIERyitVlyQx6C+sxcROU2BAJ24OiZyK+8wj2i8AlBoS3A==} - engines: {node: '>=10'} - aria-query@5.1.3: resolution: {integrity: sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==} + aria-query@5.3.0: + resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==} + array-buffer-byte-length@1.0.0: resolution: {integrity: sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==} @@ -6376,6 +5655,10 @@ packages: resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} engines: {node: '>=8'} + array.prototype.filter@1.0.4: + resolution: {integrity: sha512-r+mCJ7zXgXElgR4IRC+fkvNCeoaavWBs6EdCso5Tbcf+iEMKzBU/His60lt34WEZ9vlb8wDkZvQGcVI5GwkfoQ==} + engines: {node: '>= 0.4'} + array.prototype.findlastindex@1.2.3: resolution: {integrity: sha512-LzLoiOMAxvy+Gd3BAq3B7VeIgPdo+Q8hthvKtXybMvRV0jrXfJM/t8mw7nNlpEcVlVUnCnM2KSX4XU5HmpodOA==} engines: {node: '>= 0.4'} @@ -6420,22 +5703,20 @@ packages: assert-never@1.2.1: resolution: {integrity: sha512-TaTivMB6pYI1kXwrFlEhLeGfOqoDNdTxjCdwRfFFkEA30Eu+k48W34nlok2EYWJfFFzqaEmichdNM7th6M5HNw==} - assert-options@0.8.0: - resolution: {integrity: sha512-qSELrEaEz4sGwTs4Qh+swQkjiHAysC4rot21+jzXU86dJzNG+FDqBzyS3ohSoTRf4ZLA3FSwxQdiuNl5NXUtvA==} + assert-options@0.8.1: + resolution: {integrity: sha512-5lNGRB5g5i2bGIzb+J1QQE1iKU/WEMVBReFIc5pPDWjcPj23otPL0eI6PB2v7QPi0qU6Mhym5D3y0ZiSIOf3GA==} engines: {node: '>=10.0.0'} assert-plus@1.0.0: resolution: {integrity: sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==} engines: {node: '>=0.8'} - assert@2.0.0: - resolution: {integrity: sha512-se5Cd+js9dXJnu6Ag2JFc00t+HmHOen+8Q+L7O9zI0PqQXr20uk2J0XQqMxZEeo5U50o8Nvmmx7dZrl+Ufr35A==} - assert@2.1.0: resolution: {integrity: sha512-eLHpSK/Y4nhMJ07gDaAzoX/XAKS8PSaojml3M0DM4JpV1LAi5JOJ/p6H/XWrl8L+DzVEvVCW1z3vWAaB9oTsQw==} - assertion-error@1.1.0: - resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} + assertion-error@2.0.1: + resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} + engines: {node: '>=12'} ast-types@0.15.2: resolution: {integrity: sha512-c27loCv9QkZinsa5ProX751khO9DJl/AcB5c2KNtA6NRvHKS0PgLfcftz72KVq504vB0Gku5s2kUZzDBvQWvHg==} @@ -6475,10 +5756,6 @@ packages: peerDependencies: postcss: ^8.1.0 - available-typed-arrays@1.0.5: - resolution: {integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==} - engines: {node: '>= 0.4'} - available-typed-arrays@1.0.7: resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} engines: {node: '>= 0.4'} @@ -6490,6 +5767,10 @@ packages: aws-sign2@0.7.0: resolution: {integrity: sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==} + aws-ssl-profiles@1.1.1: + resolution: {integrity: sha512-+H+kuK34PfMaI9PNU/NSjBKL5hh/KDM9J72kwYeYEm0A8B1AC4fuCy3qsjnA7lxklgyXsB68yn8Z2xoZEjgwCQ==} + engines: {node: '>= 6.0.0'} + aws4@1.11.0: resolution: {integrity: sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==} @@ -6500,13 +5781,14 @@ packages: axios-retry@3.7.0: resolution: {integrity: sha512-ZTnCkJbRtfScvwiRnoVskFAfvU0UG3xNcsjwTR0mawSbIJoothxn67gKsMaNAFHRXJ1RmuLhmZBzvyXi3+9WyQ==} - axios@1.6.7: - resolution: {integrity: sha512-/hDJGff6/c7u0hDkvkGxR/oy6CbCs8ziCsC7SqmhjfozqiJGc8Z11wrv9z9lYfY4K8l+H9TpjcMDX0xOZmx+RA==} + axios@1.7.3: + resolution: {integrity: sha512-Ar7ND9pU99eJ9GpoGQKhKf58GpUOgnzuaB7ueNQ5BMi0p+LZ5oaEnfF999fAArcTIBwXTCHAmGcHOZJaWPq9Nw==} - babel-core@7.0.0-bridge.0: - resolution: {integrity: sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg==} - peerDependencies: - '@babel/core': ^7.0.0-0 + axios@1.7.4: + resolution: {integrity: sha512-DukmaFRnY6AzAALSH4J2M3k6PkaC+MfaAGdEERRWcC9q3/TWQwLpHR8ZRLKTdQ3aBDL64EdluRDjJqKw+BPZEw==} + + axios@1.7.7: + resolution: {integrity: sha512-S4kL7XrjgBmvdGut0sN3yJxqYzrDOnivkBiN0OFs6hLiUam3UPvswUo0kqGyhqUZGEOytHyumEdXsAkgCOUf3Q==} babel-jest@29.6.2: resolution: {integrity: sha512-BYCzImLos6J3BH/+HvUCHG1dTf2MzmAB4jaVxHV+29RZLjR29XuYTmsf2sdDwkrb+FczkGo3kOhE7ga6sI0P4A==} @@ -6522,21 +5804,6 @@ packages: resolution: {integrity: sha512-zSuuuAlTMT4mzLj2nPnUm6fsE6270vdOfnpbJ+RmruU75UhLFvL0N2NgI7xpeS7NaB6hGqmd5pVpGTDYvi4Q3w==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - babel-plugin-polyfill-corejs2@0.4.10: - resolution: {integrity: sha512-rpIuu//y5OX6jVU+a5BCn1R5RSZYWAl2Nar76iwaOdycqb6JPxediskWFMMl7stfwNJR4b7eiQvh5fB5TEQJTQ==} - peerDependencies: - '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 - - babel-plugin-polyfill-corejs3@0.10.4: - resolution: {integrity: sha512-25J6I8NGfa5YkCDogHRID3fVCadIR8/pGl1/spvCkzb6lVn6SR3ojpx9nOn9iEBcUsjY24AmdKm5khcfKdylcg==} - peerDependencies: - '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 - - babel-plugin-polyfill-regenerator@0.6.2: - resolution: {integrity: sha512-2R25rQZWP63nGwaAswvDazbPXfrM3HwVoBXK6HcqeKrSrL/JqcC/rDcf95l4r7LXLyxDXc8uQDa064GubtCABg==} - peerDependencies: - '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 - babel-preset-current-node-syntax@1.0.1: resolution: {integrity: sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==} peerDependencies: @@ -6555,9 +5822,6 @@ packages: balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - base-64@0.1.0: - resolution: {integrity: sha512-Y5gU45svrR5tI2Vt/X9GPd3L0HNIKzGu202EjxrXMpuc2V2CiKgemAbUUsqYmZJvPtCXoUKjNZwBJzsNScUbXA==} - base-64@1.0.0: resolution: {integrity: sha512-kwDPIFCGx0NZHog36dj+tHiwP4QMzsZ3AgMViUBKI0+V5n4U0ufTCUMhnQ04diaRI8EX/QcPfql7zlhZ7j4zgg==} @@ -6582,9 +5846,6 @@ packages: resolution: {integrity: sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==} engines: {node: '>=0.6'} - bignumber.js@9.1.1: - resolution: {integrity: sha512-pHm4LsMJ6lzgNGVfZHjMoO8sdoRhOzOH4MLmY65Jg70bpxCKu5iOHNJyfF6OyvYw7t8Fpf35RuzUyqnQsj8Vig==} - bignumber.js@9.1.2: resolution: {integrity: sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug==} @@ -6592,9 +5853,6 @@ packages: resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} engines: {node: '>=8'} - binary-search@1.3.6: - resolution: {integrity: sha512-nbE1WxOTTrUWIfsfZ4aHGYu5DOuNkbxGokjV6Z2kxfJK3uaAb8zNK1muzOeipoLHZjInT4Br88BHpzevc681xA==} - binascii@0.0.2: resolution: {integrity: sha512-rA2CrUl1+6yKrn+XgLs8Hdy18OER1UW146nM+ixzhQXDY+Bd3ySkyIJGwF2a4I45JwbvF1mDL/nWkqBwpOcdBA==} @@ -6628,8 +5886,8 @@ packages: bn.js@5.2.1: resolution: {integrity: sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==} - body-parser@1.20.2: - resolution: {integrity: sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==} + body-parser@1.20.3: + resolution: {integrity: sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==} engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} boolbase@1.0.0: @@ -6638,18 +5896,14 @@ packages: bowser@2.11.0: resolution: {integrity: sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==} - bplist-parser@0.2.0: - resolution: {integrity: sha512-z0M+byMThzQmD9NILRniCUXYsYpjwnlO8N5uCFaCqIOpqRsJCrQL9NK3JsD67CN5a08nF5oIL2bD6loTdHOuKw==} - engines: {node: '>= 5.10.0'} - brace-expansion@1.1.11: resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} brace-expansion@2.0.1: resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} - braces@3.0.2: - resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} + braces@3.0.3: + resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} engines: {node: '>=8'} browser-assert@1.2.1: @@ -6659,9 +5913,6 @@ packages: resolution: {integrity: sha512-YyNI4qJJ+piQG6MMEuo7J3Bzaqssufx04zpEKYfSrl/1Op59HWali9zMtBpXnkmqMcOuWJPZvudrm9wISmnCbg==} engines: {'0': node} - browserify-zlib@0.1.4: - resolution: {integrity: sha512-19OEpq7vWgsH6WkvkBJQDFvJS1uPcbFOQ4v9CU839dO+ZZXUZO6XpE6hNCqvlIIj+4fZvRiJ6DsAQ382GwiyTQ==} - browserslist@4.23.0: resolution: {integrity: sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} @@ -6674,8 +5925,8 @@ packages: bser@2.1.1: resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} - bson@6.3.0: - resolution: {integrity: sha512-balJfqwwTBddxfnidJZagCBPP/f48zj9Sdp3OJswREOgsJzHiQSaOIAtApSgDQFYgHqAvFkp53AFSqjMDZoTFw==} + bson@6.8.0: + resolution: {integrity: sha512-iOJg8pr7wq2tg/zSlCCHMi3hMm5JTOxLTagf3zxhcenHsFp+c6uOs6K7W5UE7A4QIJGtqh/ZovFNMP4mOPJynQ==} engines: {node: '>=16.20.1'} buffer-crc32@0.2.13: @@ -6690,18 +5941,14 @@ packages: buffer-more-ints@1.0.0: resolution: {integrity: sha512-EMetuGFz5SLsT0QTnXzINh4Ksr+oo4i+UGTXEshiGCQWnsgSs7ZhJ8fzlwQ+OzEMs0MpDAMr1hxnblp5a4vcHg==} - buffer-writer@2.0.0: - resolution: {integrity: sha512-a7ZpuTZU1TRtnwyCNW3I5dc0wWNC3VR9S++Ewyk2HHZdrO3CQJqSpd+95Us590V6AL7JqUAH2IwZ/398PmNFgw==} - engines: {node: '>=4'} - buffer@5.7.1: resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} buffer@6.0.3: resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} - buildcheck@0.0.3: - resolution: {integrity: sha512-pziaA+p/wdVImfcbsZLNF32EiWyujlQLwolMqUQE8xpKNOH7KmZQaY8sXN7DGOEzPAElo9QTaeNRfGnf3iOJbA==} + buildcheck@0.0.6: + resolution: {integrity: sha512-8f9ZJCUXyT1M35Jx7MkBgmBMo3oHTTBIPLiY9xyL0pl3T5RwcPEY8cUHr5LBNfu/fk6c2T4DJZuVM/8ZZT2D2A==} engines: {node: '>=10.0.0'} builtin-modules@3.3.0: @@ -6743,9 +5990,6 @@ packages: resolution: {integrity: sha512-A+Fezp4zxnit6FanDmv9EqXNAi3vt9DWp51/71UEhXukb7QUuvtv9344h91dyAxuTLoSYJFU299qzR3tzwPAhw==} engines: {node: '>=6'} - call-bind@1.0.2: - resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==} - call-bind@1.0.7: resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==} engines: {node: '>= 0.4'} @@ -6757,6 +6001,9 @@ packages: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} engines: {node: '>=6'} + camel-case@3.0.0: + resolution: {integrity: sha512-+MbKztAYHXPr1jNTSKQF52VpcFjwY5RkR7fxksV8Doo4KAYc5Fl4UJRgthBbTmEx8C54DqahhbLJkDwjI3PI/w==} + camel-case@4.1.2: resolution: {integrity: sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==} @@ -6775,14 +6022,8 @@ packages: camelize@1.0.1: resolution: {integrity: sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ==} - caniuse-api@3.0.0: - resolution: {integrity: sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==} - - caniuse-lite@1.0.30001597: - resolution: {integrity: sha512-7LjJvmQU6Sj7bL0j5b5WY/3n7utXUJvAe1lxhsHDbLmwX9mdL86Yjtr+5SRCyf8qME4M7pU2hswj0FpyBVCv9w==} - - caniuse-lite@1.0.30001617: - resolution: {integrity: sha512-mLyjzNI9I+Pix8zwcrpxEbGlfqOkF9kM3ptzmKNw5tizSyYwMe+nGLTqMK9cO+0E+Bh6TsBxNAaHWEM8xwSsmA==} + caniuse-lite@1.0.30001667: + resolution: {integrity: sha512-7LTwJjcRkzKFmtqGsibMeuXmvFDfZq/nzIjnmgCGzKKRVzjD72selLDK1oPF/Oxzmt4fNcPvTDvGqSDG4tCALw==} capital-case@1.0.4: resolution: {integrity: sha512-ds37W8CytHgwnhGGTi88pcPyR15qoNkOpYwmMMfnWqqWgESapLqvDx6huFjQ5vqWSn2Z06173XNA7LtMOeUh1A==} @@ -6790,9 +6031,9 @@ packages: caseless@0.12.0: resolution: {integrity: sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==} - chai@4.3.10: - resolution: {integrity: sha512-0UXG04VuVbruMUYbJ6JctvH0YnC/4q3/AkT18q4NaITo91CUm0liMS9VqzT9vZhVQ/1eqPanMWjBM+Juhfb/9g==} - engines: {node: '>=4'} + chai@5.1.1: + resolution: {integrity: sha512-pT1ZgP8rPNqUgieVaEY+ryQr6Q4HXNg8Ei9UnLUrjN4IA7dvQC5JB+/kxVcPNDHyBcc/26CXPkbNzq3qwrOEKA==} + engines: {node: '>=12'} chalk@2.4.2: resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} @@ -6806,13 +6047,12 @@ packages: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} engines: {node: '>=10'} - chalk@5.3.0: - resolution: {integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==} - engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} - change-case@4.1.2: resolution: {integrity: sha512-bSxY2ws9OtviILG1EiY5K7NNxkqg/JnRnFxLtKQ96JaviiIxi7djMrSd0ECT9AC+lttClmYwKw53BWpOMblo7A==} + change-case@5.4.4: + resolution: {integrity: sha512-HRQyTk2/YPEkt9TnUPbOpr64Uw3KOicFWPVBb+xiHvd6eBx/qPr9xqfBFDT8P2vWsvvz4jbEkfDe71W3VyNu2w==} + char-regex@1.0.2: resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==} engines: {node: '>=10'} @@ -6830,8 +6070,9 @@ packages: resolution: {integrity: sha512-vQEj6d+z0dcsKLlQvbKIMYFHd3t8W/7L2vfJIbYcfyPcRx92CsHqECpueN8qVGNlKyDcr5wBrYAYKnfu/9Q1hQ==} engines: {pnpm: '>=7'} - check-error@1.0.3: - resolution: {integrity: sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==} + check-error@2.1.1: + resolution: {integrity: sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==} + engines: {node: '>= 16'} check-more-types@2.24.0: resolution: {integrity: sha512-Pj779qHxV2tuapviy1bSZNEL1maXr13bPYpsvSDB68HlYcYuhlDrmGd63i0JHMCLKzc7rUSNIrpdJlhVlNwrxA==} @@ -6843,6 +6084,10 @@ packages: cheerio-select@2.1.0: resolution: {integrity: sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==} + cheerio@1.0.0: + resolution: {integrity: sha512-quS9HgjQpdaXOvsZz82Oz7uxtXiy6UIsIQcpBj7HRw2M63Skasm9qlDocAM7jNuaxdhpPU7c4kJN+gA5MCu4ww==} + engines: {node: '>=18.17'} + cheerio@1.0.0-rc.12: resolution: {integrity: sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q==} engines: {node: '>= 6'} @@ -6851,9 +6096,9 @@ packages: resolution: {integrity: sha512-hjx1XE1M/D5pAtMgvWwE21QClmAEeGHOIDfycgmndisdNgI6PE1cGRQkMGBcsbUbmEQyWu5PJLUcAOjtQS8DWw==} engines: {node: '>= 0.12'} - chokidar@3.5.2: - resolution: {integrity: sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ==} - engines: {node: '>= 8.10.0'} + chokidar@4.0.1: + resolution: {integrity: sha512-n8enUVCED/KVRQlab1hr3MVpcVMvxtZjmEa956u+4YijlmQED223XMSYj2tLuKvr4jcCTzNNMpQDUer72MMmzA==} + engines: {node: '>= 14.16.0'} chownr@1.1.4: resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==} @@ -6862,8 +6107,8 @@ packages: resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==} engines: {node: '>=10'} - chromatic@11.4.1: - resolution: {integrity: sha512-f1Ud4EA7KvNKIIkO/qk/0epiCoyHjcyoejuncilSqC0KAHahmIgrWdZxEu+N8QfqqYbEBc5SrhAjiVWHePXTKw==} + chromatic@11.10.2: + resolution: {integrity: sha512-EbVlhmOLGdx9QRX3RMOTF3UzoyC1aaXNRjlzm1mc++2OI5+6C5Bzwt2ZUYJ3Jnf/pJa23q0y5Y3QEDcfRVqIbg==} hasBin: true peerDependencies: '@chromatic-com/cypress': ^0.*.* || ^1.0.0 @@ -6874,10 +6119,6 @@ packages: '@chromatic-com/playwright': optional: true - chrome-trace-event@1.0.3: - resolution: {integrity: sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==} - engines: {node: '>=6.0'} - ci-info@3.8.0: resolution: {integrity: sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==} engines: {node: '>=8'} @@ -6886,9 +6127,6 @@ packages: resolution: {integrity: sha512-TdHqgGf9odd8SXNuxtUBVx8Nv+qZOejE6qyqiy5NtbYYQOeFa6zmHkxlPzmaLxWWHsU6nJmB7AETdVPi+2NBUg==} engines: {node: '>=8'} - citty@0.1.5: - resolution: {integrity: sha512-AS7n5NSc0OQVMV9v6wt3ByujNIrne0/cTjiC2MYqhvao57VNfiuVksTSr2p17nVOhEr2KtqiAkGwHcgMC/qUuQ==} - cjs-module-lexer@1.2.2: resolution: {integrity: sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==} @@ -6901,6 +6139,10 @@ packages: classnames@2.5.1: resolution: {integrity: sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==} + clean-css@4.2.4: + resolution: {integrity: sha512-EJUDT7nDVFDvaQgAo2G/PJvxmp1o/c6iXLbswsBbUFXi1Nr+AjA2cKmfbKDMjMvzEe75g3P6JkaDDAKk96A85A==} + engines: {node: '>= 4.0'} + clean-regexp@1.0.0: resolution: {integrity: sha512-GfisEZEJvzKrmGWkvfhgzcz/BllN1USeqD2V6tg14OAOgaCD2Z/PUEuxnAZ/nPvmaHRG7a8y77p1T/IRQ4D1Hw==} engines: {node: '>=4'} @@ -6917,10 +6159,6 @@ packages: resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} engines: {node: '>=8'} - cli-spinners@2.9.0: - resolution: {integrity: sha512-4/aL9X3Wh0yiMQlE+eeRhWP6vclO3QRtw1JHKIT0FFUs5FjpFmESqtMvYZ0+lbzBw900b95mS0hohy+qn2VK/g==} - engines: {node: '>=6'} - cli-spinners@2.9.2: resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==} engines: {node: '>=6'} @@ -6944,16 +6182,8 @@ packages: resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} engines: {node: '>=12'} - clone-deep@4.0.1: - resolution: {integrity: sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==} - engines: {node: '>=6'} - - clone@1.0.4: - resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} - engines: {node: '>=0.8'} - - clsx@1.2.1: - resolution: {integrity: sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==} + clsx@2.1.1: + resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} engines: {node: '>=6'} cluster-key-slot@1.1.2: @@ -6967,8 +6197,8 @@ packages: codemirror-lang-html-n8n@1.0.0: resolution: {integrity: sha512-ofNP6VTDGJ5rue+kTCZlDZdF1PnE0sl2cAkfrsCAd5MlBgDmqTwuFJIkTI6KXOJXs0ucdTYH6QLhy9BSW7EaOQ==} - cohere-ai@7.10.1: - resolution: {integrity: sha512-iQmFMzTZ0/Hr44Z/blQ8R3XWDPku/Wk+9UM6ZPxvE52lJj/DLGRgZKWqA/21PRXGDyb1aSvJ3xiQ/KdIeHLTfg==} + cohere-ai@7.13.2: + resolution: {integrity: sha512-VCEzlwo/SYCBtDWpCTs9JsEn6jLAPxOvFcqdhT+urCl32hQhs1ENH20c5tvNPupTN/UdP8tkOPJdlrxfBRh5Yw==} collect-v8-coverage@1.0.1: resolution: {integrity: sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==} @@ -6996,19 +6226,12 @@ packages: color@3.2.1: resolution: {integrity: sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==} - colord@2.9.3: - resolution: {integrity: sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==} - colorette@1.4.0: resolution: {integrity: sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==} colorette@2.0.19: resolution: {integrity: sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==} - colors@1.2.5: - resolution: {integrity: sha512-erNRLao/Y3Fv54qUa0LBB+//Uf3YwMUmdJinN20yMXm9zdKKqH9wt7R9IIVZ+K7ShzfpLV/Zg8+VyrBJYB4lpg==} - engines: {node: '>=0.1.90'} - colors@1.4.0: resolution: {integrity: sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==} engines: {node: '>=0.1.90'} @@ -7043,10 +6266,6 @@ packages: resolution: {integrity: sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==} engines: {node: '>= 6'} - commander@7.2.0: - resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} - engines: {node: '>= 10'} - commander@9.4.1: resolution: {integrity: sha512-5EEkTNyHNGFPD2H+c/dXXfQZYa/scCKasxWcXJaWnNJ99pnQN9Vnmqow+p+PlFPE63Q6mThaZws1T+HxfpgtPw==} engines: {node: ^12.20.0 || >=14} @@ -7061,6 +6280,9 @@ packages: commondir@1.0.1: resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} + compare-versions@6.1.1: + resolution: {integrity: sha512-4hm4VPpIecmlg59CHXnRDnqGplJFrbLG4aFEl5vl6cK1u76ws3LLvX7ikFnTDl5vo39sjWD6AaDPYodJp/NNHg==} + component-emitter@1.3.0: resolution: {integrity: sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==} @@ -7094,16 +6316,15 @@ packages: engines: {node: ^14.13.0 || >=16.0.0} hasBin: true + confbox@0.1.7: + resolution: {integrity: sha512-uJcB/FKZtBMCJpK8MQji6bJHgu1tixKPxRLeGkNzBoOZzpnZUJm0jm2/sBDWcuBx1dYgxV4JU+g5hmNxCyAmdA==} + config-chain@1.1.13: resolution: {integrity: sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==} confusing-browser-globals@1.0.11: resolution: {integrity: sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==} - consola@3.2.3: - resolution: {integrity: sha512-I5qxpzLv+sJhTVEoLYNcTW+bThDCPsit0vLNKShZx6rLtpilNpmmeTPaeqJb9ZE9dV3DGaeby6Vuhrw38WjeyQ==} - engines: {node: ^14.18.0 || >=16.10.0} - console-control-strings@1.1.0: resolution: {integrity: sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==} @@ -7131,23 +6352,23 @@ packages: resolution: {integrity: sha512-qN60BAwdMVdofckX7AlohVJ2x9UvjTNoKVXCL2LxFk1l7757EJqf1nySdMkPQer0bt8kQ5lQiyZ9/2NvrFBuwQ==} engines: {node: '>=6'} - cookie-parser@1.4.6: - resolution: {integrity: sha512-z3IzaNjdwUC2olLIB5/ITd0/setiaFMLYiZJle7xg5Fe9KWAceil7xszYfHHBtDFYLSgJduS2Ty0P1uJdPDJeA==} + cookie-parser@1.4.7: + resolution: {integrity: sha512-nGUvgXnotP3BsjiLX2ypbQnWoGUPIIfHQNZkkC668ntrzGWEZVW70HDEB1qnNGMicPje6EttlIgzo51YSwNQGw==} engines: {node: '>= 0.8.0'} cookie-signature@1.0.6: resolution: {integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==} - cookie@0.4.1: - resolution: {integrity: sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA==} - engines: {node: '>= 0.6'} - cookie@0.4.2: resolution: {integrity: sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==} engines: {node: '>= 0.6'} - cookie@0.6.0: - resolution: {integrity: sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==} + cookie@0.7.1: + resolution: {integrity: sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==} + engines: {node: '>= 0.6'} + + cookie@0.7.2: + resolution: {integrity: sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==} engines: {node: '>= 0.6'} cookiejar@2.1.4: @@ -7156,12 +6377,6 @@ packages: core-js-compat@3.36.0: resolution: {integrity: sha512-iV9Pd/PsgjNWBXeq8XRtWVSgz2tKAfhfvBs7qxYty+RlRd+OCksaWmOnc4JKrTc1cToXL1N0s3l/vwlxPtdElw==} - core-js-compat@3.37.1: - resolution: {integrity: sha512-9TNiImhKvQqSUkOvk/mMRZzOANTiEVC7WaBNhHcKM7x+/5E1l5NvsysR19zuDQScE8k+kfQXWRN3AtS/eOSHpg==} - - core-js@3.31.0: - resolution: {integrity: sha512-NIp2TQSGfR6ba5aalZD+ZQ1fSxGhDo/s1w0nx3RYzf2pnJxt7YynxFlFScP6eV7+GZsKO95NSjGxyJsU3DZgeQ==} - core-js@3.35.0: resolution: {integrity: sha512-ntakECeqg81KqMueeGJ79Q5ZgQNR+6eaE8sxGCx62zMbAIj65q+uYvatToew3m6eAGdU4gNZwpZ34NMe4GYswg==} @@ -7171,10 +6386,13 @@ packages: core-util-is@1.0.3: resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} - cpu-features@0.0.4: - resolution: {integrity: sha512-fKiZ/zp1mUwQbnzb9IghXtHtDoTMtNeb8oYGx6kX2SYfhnG0HNdBEBIzB9b5KlXu5DQPhfy3mInbBxFcgwAr3A==} + cpu-features@0.0.10: + resolution: {integrity: sha512-9IkYqtX3YHPCzoVg1Py+o9057a3i0fp7S530UWokCSaFVTc7CwXPRiOjRjBQQ18ZCNafx78YfnG+HALxtVmOGA==} engines: {node: '>=10.0.0'} + create-require@1.1.1: + resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} + crelt@1.0.5: resolution: {integrity: sha512-+BO9wPPi+DWTDcNYhr/W90myha8ptzftZT+LwcmUbbok0rcP/fequmFYCw8NMoH7pkAZQzU78b3kYrlua5a9eA==} @@ -7185,16 +6403,16 @@ packages: resolution: {integrity: sha512-p0SaNjrHOnQeR8/VnfGbmg9te2kfyYSQ7Sc/j/6DtPL3JQvKxmjO9TSjNFpujqV3vEYYBvNNvXSxzyksBWAx1Q==} engines: {node: '>=12.0.0'} - cron@1.7.2: - resolution: {integrity: sha512-+SaJ2OfeRvfQqwXQ2kgr0Y5pzBR/lijf5OpnnaruwWnmI799JfWr2jN2ItOV9s3A/+TFOt6mxvKzQq5F0Jp6VQ==} + cron@3.1.7: + resolution: {integrity: sha512-tlBg7ARsAMQLzgwqVxy8AZl/qlTc5nibqYwtNGoCrd+cV+ugI+tvZC1oT/8dFH8W455YrywGykx/KMmAqOr7Jw==} cross-env@7.0.3: resolution: {integrity: sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==} engines: {node: '>=10.14', npm: '>=6', yarn: '>=1'} hasBin: true - cross-fetch@3.1.8: - resolution: {integrity: sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg==} + cross-fetch@4.0.0: + resolution: {integrity: sha512-e4a5N8lVvuLgAWgnCrLr2PP0YyDOTHa9H/Rj54dirp61qXnNq46m82bRhNqIA5VccJtWBvPTFRV3TtvHUKPB1g==} cross-spawn@4.0.2: resolution: {integrity: sha512-yAXz/pA1tD8Gtg2S98Ekf/sewp3Lcp3YoFKJ4Hkp5h5yLWnKVTDU0kwjKJ8NDCYcfTLfyGkzTikst+jWypT1iA==} @@ -7209,10 +6427,6 @@ packages: crypto-js@4.2.0: resolution: {integrity: sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q==} - crypto-random-string@2.0.0: - resolution: {integrity: sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==} - engines: {node: '>=8'} - csrf@3.1.0: resolution: {integrity: sha512-uTqEnCvWRk042asU6JtapDTcJeeailFy4ydOQS28bj1hcLnYRiqi8SsD2jS412AY1I/4qdOwWZun774iqywf9w==} engines: {node: '>= 0.8'} @@ -7221,12 +6435,6 @@ packages: resolution: {integrity: sha512-FyyrDHZKEjXDpNJYvVsV960FiqQyXc/LlYmsxl2BcdMb2WPx0OGRVgTg55rPSyLSNMqP52R9r8geSp7apN3Ofg==} engines: {node: '>=4'} - css-declaration-sorter@7.1.1: - resolution: {integrity: sha512-dZ3bVTEEc1vxr3Bek9vGwfB5Z6ESPULhcRvO472mfjVnj8jRcTnKO8/JTczlvxM10Myb+wBM++1MtdO76eWcaQ==} - engines: {node: ^14 || ^16 || >=18} - peerDependencies: - postcss: ^8.0.9 - css-select@4.3.0: resolution: {integrity: sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==} @@ -7236,14 +6444,6 @@ packages: css-to-react-native@3.2.0: resolution: {integrity: sha512-e8RKaLXMOFii+02mOlqwjbD00KSEKqblnpO9e++1aXS1fPQOpS1YoqdVHBqPjHNoxeF2mimzVqawm2KCbEdtHQ==} - css-tree@2.2.1: - resolution: {integrity: sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==} - engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0'} - - css-tree@2.3.1: - resolution: {integrity: sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==} - engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} - css-what@6.1.0: resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==} engines: {node: '>= 6'} @@ -7259,28 +6459,6 @@ packages: cssfilter@0.0.10: resolution: {integrity: sha512-FAaLDaplstoRsDR8XGYH51znUN0UY7nMc6Z9/fvE8EXGwvJE9hu7W2vHwx1+bd6gCYnln9nLbzxFTrcO9YQDZw==} - cssnano-preset-default@6.0.2: - resolution: {integrity: sha512-VnZybFeZ63AiVqIUNlxqMxpj9VU8B5j0oKgP7WyVt/7mkyf97KsYkNzsPTV/RVmy54Pg7cBhOK4WATbdCB44gw==} - engines: {node: ^14 || ^16 || >=18.0} - peerDependencies: - postcss: ^8.4.31 - - cssnano-utils@4.0.1: - resolution: {integrity: sha512-6qQuYDqsGoiXssZ3zct6dcMxiqfT6epy7x4R0TQJadd4LWO3sPR6JH6ZByOvVLoZ6EdwPGgd7+DR1EmX3tiXQQ==} - engines: {node: ^14 || ^16 || >=18.0} - peerDependencies: - postcss: ^8.4.31 - - cssnano@6.0.2: - resolution: {integrity: sha512-Tu9wv8UdN6CoiQnIVkCNvi+0rw/BwFWOJBlg2bVfEyKaadSuE3Gq/DD8tniVvggTJGwK88UjqZp7zL5sv6t1aA==} - engines: {node: ^14 || ^16 || >=18.0} - peerDependencies: - postcss: ^8.4.31 - - csso@5.0.5: - resolution: {integrity: sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==} - engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0'} - cssom@0.3.8: resolution: {integrity: sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==} @@ -7314,13 +6492,13 @@ packages: cypress-otp@1.0.3: resolution: {integrity: sha512-o7LssfI0HRHa+TkaOE5/Aukv6M9vsoZAtYESr9m7Ky2i+HRNb2p/IRelE7Z0wJ/UK2f+nXAGZIfXqraf9EPDqw==} - cypress-real-events@1.12.0: - resolution: {integrity: sha512-oiy+4kGKkzc2PT36k3GGQqkGxNiVypheWjMtfyi89iIk6bYmTzeqxapaLHS3pnhZOX1IEbTDUVxh8T4Nhs1tyQ==} + cypress-real-events@1.13.0: + resolution: {integrity: sha512-LoejtK+dyZ1jaT8wGT5oASTPfsNV8/ClRp99ruN60oPj8cBJYod80iJDyNwfPAu4GCxTXOhhAv9FO65Hpwt6Hg==} peerDependencies: cypress: ^4.x || ^5.x || ^6.x || ^7.x || ^8.x || ^9.x || ^10.x || ^11.x || ^12.x || ^13.x - cypress@13.11.0: - resolution: {integrity: sha512-NXXogbAxVlVje4XHX+Cx5eMFZv4Dho/2rIcdBHg9CNPFUGZdM4cRdgIgM7USmNYsC12XY0bZENEQ+KBk72fl+A==} + cypress@13.14.2: + resolution: {integrity: sha512-lsiQrN17vHMB2fnvxIrKLAjOr9bPwsNbPZNrWf99s4u+DVmCY6U+w7O3GGG9FvP4EUVYaDu+guWeNLiUzBrqvA==} engines: {node: ^16.0.0 || ^18.0.0 || >=20.0.0} hasBin: true @@ -7378,6 +6556,18 @@ packages: resolution: {integrity: sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg==} engines: {node: '>=18'} + data-view-buffer@1.0.1: + resolution: {integrity: sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==} + engines: {node: '>= 0.4'} + + data-view-byte-length@1.0.1: + resolution: {integrity: sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==} + engines: {node: '>= 0.4'} + + data-view-byte-offset@1.0.0: + resolution: {integrity: sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==} + engines: {node: '>= 0.4'} + date-fns-tz@2.0.0: resolution: {integrity: sha512-OAtcLdB9vxSXTWHdT8b398ARImVwQMyjfYGkKD2zaGpHseG2UPHbHjXELReErZFxWdSLph3c2zOaaTyHfOhERQ==} peerDependencies: @@ -7393,9 +6583,6 @@ packages: dayjs@1.11.10: resolution: {integrity: sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ==} - dayjs@1.11.6: - resolution: {integrity: sha512-zZbY5giJAinCG+7AGaw0wIhNZ6J8AhWuSXKvuc1KAyMiRsvGQWqh4L+MomvhdAYjN+lqvVCMq1I41e3YHvXkyQ==} - de-indent@1.0.2: resolution: {integrity: sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==} @@ -7433,6 +6620,24 @@ packages: supports-color: optional: true + debug@4.3.6: + resolution: {integrity: sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + debug@4.3.7: + resolution: {integrity: sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + decamelize@1.2.0: resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} engines: {node: '>=0.10.0'} @@ -7463,8 +6668,8 @@ packages: resolution: {integrity: sha512-GxJC5MOg2KyQlv6WiUF/VAnMj4MWnYiXo4oLgeptOELVoknyErb4Z8+5F/IM/K4g9/80YzzatxmWcyRwUseH0A==} engines: {node: '>=6'} - deep-eql@4.1.3: - resolution: {integrity: sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==} + deep-eql@5.0.2: + resolution: {integrity: sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==} engines: {node: '>=6'} deep-equal@2.2.0: @@ -7481,13 +6686,6 @@ packages: resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} engines: {node: '>=0.10.0'} - default-browser-id@3.0.0: - resolution: {integrity: sha512-OZ1y3y0SqSICtE8DE4S8YOE9UZOJ8wO16fKWVP5J1Qz42kV9jcnMVFrEE/noXb/ss3Q4pZIH79kxofzyNNtUNA==} - engines: {node: '>=12'} - - defaults@1.0.4: - resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} - define-data-property@1.1.4: resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} engines: {node: '>= 0.4'} @@ -7504,16 +6702,6 @@ packages: resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} engines: {node: '>= 0.4'} - defu@6.1.2: - resolution: {integrity: sha512-+uO4+qr7msjNNWKYPHqN/3+Dx3NFkmIzayk2L1MyZQlvgZb/J1A0fo410dpKrN2SnqFjt8n4JL8fDJE0wIgjFQ==} - - defu@6.1.3: - resolution: {integrity: sha512-Vy2wmG3NTkmHNg/kzpuvHhkqeIx3ODWqasgCRbKtbXEN0G+HpEEv9BtJLp7ZG1CZloFaC41Ah3ZFbq7aqCqMeQ==} - - del@6.1.1: - resolution: {integrity: sha512-ua8BhapfP0JUJKC/zV9yHHDW/rDoDxP4Zhn3AkA6/xT6gY7jYXJiaeyBZznYVujhZZET+UgcbZiQ7sN3WqcImg==} - engines: {node: '>=10'} - delayed-stream@1.0.0: resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} engines: {node: '>=0.4.0'} @@ -7541,10 +6729,6 @@ packages: resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} - detect-indent@6.1.0: - resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==} - engines: {node: '>=8'} - detect-libc@2.0.1: resolution: {integrity: sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w==} engines: {node: '>=8'} @@ -7553,16 +6737,8 @@ packages: resolution: {integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==} engines: {node: '>=8'} - detect-node-es@1.1.0: - resolution: {integrity: sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==} - - detect-package-manager@2.0.1: - resolution: {integrity: sha512-j/lJHyoLlWi6G1LDdLgvUtz60Zo5GEj+sVYtTVXnYLDPuzgC3llMxonXym9zIwhhUII8vjdw0LXxavpLqTbl1A==} - engines: {node: '>=12'} - - detect-port@1.5.1: - resolution: {integrity: sha512-aBzdj76lueB6uUst5iAs7+0H/oOjqI5D16XUWxlWMIMROhcM0rfsNVk93zTngq1dDNpoXRr++Sus7ETAExppAQ==} - hasBin: true + detect-node@2.1.0: + resolution: {integrity: sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==} dezalgo@1.0.4: resolution: {integrity: sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==} @@ -7574,13 +6750,10 @@ packages: resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - diff@5.2.0: - resolution: {integrity: sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==} + diff@4.0.2: + resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} engines: {node: '>=0.3.1'} - digest-fetch@1.3.0: - resolution: {integrity: sha512-CGJuv6iKNM7QyZlM2T3sPAdZWd/p9zQiRNS9G+9COUCwzWFTs0Xp8NF5iePx7wtvhDykReiRRrSeNb4oMmB8lA==} - dingbat-to-unicode@1.0.1: resolution: {integrity: sha512-98l0sW87ZT58pU4i61wa2OHwxbiYSbuxsCBozaVnYX2iCnr3bLM3fIes1/ej7h1YdOKuKt/MLs706TVnALA65w==} @@ -7588,6 +6761,9 @@ packages: resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} engines: {node: '>=8'} + discontinuous-range@1.0.0: + resolution: {integrity: sha512-c68LpLbO+7kP/b1Hr1qs8/BJ09F5khZGTxqxZuhzxpmwJKOgRFHJWIb9/KmqnqHhLdO55aOxFH/EGBvUQbL/RQ==} + dlv@1.1.3: resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} @@ -7620,6 +6796,11 @@ packages: domexception@4.0.0: resolution: {integrity: sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==} engines: {node: '>=12'} + deprecated: Use your platform's native DOMException instead + + domhandler@3.3.0: + resolution: {integrity: sha512-J1C5rIANUbuYK+FuFL98650rihynUOEzRLxW+90bKZRWB6A1X1Tf82GxR1qAWLyfNPRvjqfip3Q5tdYlmAa9lA==} + engines: {node: '>= 4'} domhandler@4.3.1: resolution: {integrity: sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==} @@ -7633,8 +6814,8 @@ packages: resolution: {integrity: sha512-l32Xp/TLgWb8ReqbVJAFIvXmY7go4nTxxlWiAFyhoQw9RKEOHBZNnyGvJWqDVSPmq3Y9HlM4npqF/T6VMOXhww==} deprecated: dommatrix is no longer maintained. Please use @thednp/dommatrix. - dompurify@2.4.7: - resolution: {integrity: sha512-kxxKlPEDa6Nc5WJi+qRgPbOAbgTpSULL+vI3NUXsZMlkJxTqYI9wg5ZTay2sFrdZRWHPWNi+EdAhcJf81WtoMQ==} + dompurify@3.1.7: + resolution: {integrity: sha512-VaTstWtsneJY8xzy7DekmYWEOZcmzIe3Qb3zPd4STve1OBTa+e+WmS1ITQec1fZYXI3HCsOZZiSMpG6oxoWMWQ==} domutils@2.8.0: resolution: {integrity: sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==} @@ -7642,13 +6823,12 @@ packages: domutils@3.0.1: resolution: {integrity: sha512-z08c1l761iKhDFtfXO04C7kTdPBLi41zwOZl00WS8b5eiaebNpY00HKbztwBq+e3vyqWNwWF3mP9YLUeqIrF+Q==} + domutils@3.1.0: + resolution: {integrity: sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==} + dot-case@3.0.4: resolution: {integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==} - dotenv-expand@10.0.0: - resolution: {integrity: sha512-GopVGCpVS1UKH75VKHGuQFqS1Gusej0z4FyQkPdwjil2gNIv+LNsqBlboOzpJFZKVT95GkCyWJbBSdFEFUWI2A==} - engines: {node: '>=12'} - dotenv@16.3.1: resolution: {integrity: sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ==} engines: {node: '>=12'} @@ -7667,12 +6847,12 @@ packages: duplexer@0.1.2: resolution: {integrity: sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==} - duplexify@3.7.1: - resolution: {integrity: sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==} - duplexify@4.1.2: resolution: {integrity: sha512-fz3OjcNCHmRP12MJoZMPglx8m4rrFP8rovnk4vT8Fs+aonZoCwGg10dSsQsfP/E62eZcPTMSMP6686fu9Qlqtw==} + duplexify@4.1.3: + resolution: {integrity: sha512-M3BmBhwJRZsSx38lZyhE53Csddgzl5R7xGJNk7CVddZD6CcmwMCH8J+7AprIrQKH7TonKxaCjcv27Qmf+sQ+oA==} + eastasianwidth@0.2.0: resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} @@ -7698,8 +6878,8 @@ packages: electron-to-chromium@1.4.703: resolution: {integrity: sha512-094ZZC4nHXPKl/OwPinSMtLN9+hoFkdfQGKnvXbY+3WEAYtVDpz9UhJIViiY6Zb8agvqxiaJzNG9M+pRZWvSZw==} - element-plus@2.3.6: - resolution: {integrity: sha512-GLz0pXUYI2zRfIgyI6W7SWmHk6dSEikP9yR++hsQUyy63+WjutoiGpA3SZD4cGPSXUzRFeKfVr8CnYhK5LqXZw==} + element-plus@2.4.3: + resolution: {integrity: sha512-b3q26j+lM4SBqiyzw8HybybGnP2pk4MWgrnzzzYW5qKQUgV6EG1Zg7nMCfgCVccI8tNvZoTiUHb2mFaiB9qT8w==} peerDependencies: vue: ^3.2.0 @@ -7724,10 +6904,17 @@ packages: resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} engines: {node: '>= 0.8'} + encodeurl@2.0.0: + resolution: {integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==} + engines: {node: '>= 0.8'} + encoding-japanese@2.0.0: resolution: {integrity: sha512-++P0RhebUC8MJAwJOsT93dT+5oc5oPImp1HubZpAuCZ5kTLnhuuBhKHj2jJeO/Gj93idPBWmIuQ9QWMe5rX3pQ==} engines: {node: '>=8.10.0'} + encoding-sniffer@0.2.0: + resolution: {integrity: sha512-ju7Wq1kg04I3HtiYIOrUrdfdDvkyO9s5XM8QAj/bN61Yo/Vb4vgJxy5vi4Yxk01gWHbrofpPtpxM8bKger9jhg==} + encoding@0.1.13: resolution: {integrity: sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==} @@ -7742,12 +6929,6 @@ packages: resolution: {integrity: sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==} engines: {node: '>=8.6'} - ent@2.2.0: - resolution: {integrity: sha512-GHrMyVZQWvTIdDtpiEXdHZnFQKzeO09apj8Cbl4pKWy4i0Oprcq17usfDt5aO63swf0JOeMWjWQE/LzgSRuWpA==} - - entities@2.1.0: - resolution: {integrity: sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==} - entities@2.2.0: resolution: {integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==} @@ -7767,10 +6948,11 @@ packages: resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==} engines: {node: '>=6'} - envinfo@7.8.1: - resolution: {integrity: sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==} - engines: {node: '>=4'} - hasBin: true + enzyme-shallow-equal@1.0.7: + resolution: {integrity: sha512-/um0GFqUXnpM9SvKtje+9Tjoz3f1fpBC3eXRFrNs8kpYn69JljciYP7KZTqM/YQbUY9KUjvKB4jo/q+L6WGGvg==} + + enzyme@3.11.0: + resolution: {integrity: sha512-Dw8/Gs4vRjxY6/6i9wU0V+utmQO9kvh9XLnz3LIudviOnVYDEe2ec+0k+NQoMamn1VrjKgCUOWj5jG/5M5M0Qw==} epub2@3.0.2: resolution: {integrity: sha512-rhvpt27CV5MZfRetfNtdNwi3XcNg1Am0TwfveJkK8YWeHItHepQ8Js9J06v8XRIjuTrCW/NSGYMTy55Of7BfNQ==} @@ -7789,10 +6971,17 @@ packages: resolution: {integrity: sha512-oW69R+4q2wG+Hc3KZePPZxOiisRIqfKBVo/HLx94QcJeWGU/8sZhCvc829rd1kS366vlJbzBfXf9yWwf0+Ko7w==} engines: {node: '>= 0.4'} + es-abstract@1.23.3: + resolution: {integrity: sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==} + engines: {node: '>= 0.4'} + es-aggregate-error@1.0.12: resolution: {integrity: sha512-j0PupcmELoVbYS2NNrsn5zcLLEsryQwP02x8fRawh7c2eEaPHwJFAxltZsqV7HJjsF57+SMpYyVRWgbVLfOagg==} engines: {node: '>= 0.4'} + es-array-method-boxes-properly@1.0.0: + resolution: {integrity: sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==} + es-define-property@1.0.0: resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==} engines: {node: '>= 0.4'} @@ -7804,12 +6993,13 @@ packages: es-get-iterator@1.1.3: resolution: {integrity: sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==} - es-module-lexer@0.9.3: - resolution: {integrity: sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==} - es-module-lexer@1.5.3: resolution: {integrity: sha512-i1gCgmR9dCl6Vil6UKPI/trA69s08g/syhiDK9TG0Nf1RJjjFI+AzoWW7sPufzkgYAn861skuCwJa0pIIHYxvg==} + es-object-atoms@1.0.0: + resolution: {integrity: sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==} + engines: {node: '>= 0.4'} + es-set-tostringtag@2.0.1: resolution: {integrity: sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==} engines: {node: '>= 0.4'} @@ -7825,29 +7015,27 @@ packages: resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} engines: {node: '>= 0.4'} - es6-object-assign@1.1.0: - resolution: {integrity: sha512-MEl9uirslVwqQU369iHNWZXsI8yaZYGg/D65aOgZkeyFJwHYSxilf7rQzXKI7DdDuBPrBXbfk3sl9hJhmd5AUw==} - es6-promise@3.3.1: resolution: {integrity: sha512-SOp9Phqvqn7jtEUxPWdWfWoLmyt2VaJ6MpvP9Comy1MceMXqE6bxvaTu4iaxpYYPzhny28Lc+M87/c2cPK6lDg==} - esbuild-plugin-alias@0.2.1: - resolution: {integrity: sha512-jyfL/pwPqaFXyKnj8lP8iLk6Z0m099uXR45aSN8Av1XD4vhvQutxxPzgA2bTcAwQpa1zCXDcWOlhFgyP3GKqhQ==} - esbuild-register@3.5.0: resolution: {integrity: sha512-+4G/XmakeBAsvJuDugJvtyF1x+XJT4FMocynNpxrvEBViirpfUn2PgNpCHedfWhF4WokNsO/OvMKrmJOIJsI5A==} peerDependencies: - esbuild: ^0.20.2 + esbuild: ^0.24.0 - esbuild@0.20.2: - resolution: {integrity: sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g==} - engines: {node: '>=12'} + esbuild@0.24.0: + resolution: {integrity: sha512-FuLPevChGDshgSicjisSooU0cemp/sGXR841D5LHMB7mTVOmsEHcAxaH3irL53+8YDIeVNQEySh4DaYU/iuPqQ==} + engines: {node: '>=18'} hasBin: true escalade@3.1.1: resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} engines: {node: '>=6'} + escape-goat@3.0.0: + resolution: {integrity: sha512-w3PwNZJwRxlp47QGzhuEBldEqVHHhh8/tIPcl6ecf2Bou99cdAt0knihBV0Ecc7CGxYduXVBDheH1K2oADRlvw==} + engines: {node: '>=10'} + escape-html@1.0.3: resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} @@ -7927,8 +7115,8 @@ packages: eslint-import-resolver-webpack: optional: true - eslint-plugin-cypress@3.3.0: - resolution: {integrity: sha512-HPHMPzYBIshzJM8wqgKSKHG2p/8R0Gbg4Pb3tcdC9WrmkuqxiKxSKbjunUrajhV5l7gCIFrh1P7C7GuBqH6YuQ==} + eslint-plugin-cypress@3.5.0: + resolution: {integrity: sha512-JZQ6XnBTNI8h1B9M7wJSFzc48SYbh7VMMKaNTQOFa3BQlnmXPrVc4PKen8R+fpv6VleiPeej6VxloGb42zdRvw==} peerDependencies: eslint: '>=7' @@ -7942,6 +7130,9 @@ packages: '@typescript-eslint/parser': optional: true + eslint-plugin-local@1.0.0: + resolution: {integrity: sha512-bcwcQnKL/Iw5Vi/F2lG1he5oKD2OGjhsLmrcctkWrWq5TujgiaYb0cj3pZgr3XI54inNVnneOFdAx1daLoYLJQ==} + eslint-plugin-lodash@7.4.0: resolution: {integrity: sha512-Tl83UwVXqe1OVeBRKUeWcfg6/pCW1GTRObbdnbEJgYwjxp5Q92MEWQaH9+dmzbRt6kvYU1Mp893E79nJiCSM8A==} engines: {node: '>=10'} @@ -7951,23 +7142,9 @@ packages: eslint-plugin-n8n-local-rules@1.0.0: resolution: {integrity: sha512-qe6sVFDP1Vj5eXlqZxYZpIjwYvhuqXlI0P8OfPyhiPOhMkFtr0TpFphD8/6WCzkm7LJCvG1eJEzURCtMIsFTAg==} - eslint-plugin-n8n-nodes-base@1.16.0: - resolution: {integrity: sha512-OEztJRuT/jv/WvwRXbXNirdYYddpAo2KZEJeOsVniK1ZCChuG4rrZJU3sgMRZMK6W9Pr613uWabW2q8tU2eKJg==} - engines: {node: '>=18.10', pnpm: '>=8.6'} - - eslint-plugin-prettier@5.1.3: - resolution: {integrity: sha512-C9GCVAs4Eq7ZC/XFQHITLiHJxQngdtraXaM+LoUFoFp/lHNl2Zn8f3WQbe9HvTBBQ9YnKFB0/2Ajdqwo5D1EAw==} - engines: {node: ^14.18.0 || >=16.0.0} - peerDependencies: - '@types/eslint': '>=8.0.0' - eslint: '>=8.0.0' - eslint-config-prettier: '*' - prettier: ^3.2.5 - peerDependenciesMeta: - '@types/eslint': - optional: true - eslint-config-prettier: - optional: true + eslint-plugin-n8n-nodes-base@1.16.3: + resolution: {integrity: sha512-edLX42Vg4B+y0kzkitTVDmHZQrG5/wUZO874N5Z9leBuxt5TG1pqMY4zdr35RlpM4p4REr/T9x+6DpsQSL63WA==} + engines: {node: '>=20.15', pnpm: '>=9.6'} eslint-plugin-unicorn@51.0.1: resolution: {integrity: sha512-MuR/+9VuB0fydoI0nIn2RDA5WISRn4AsJyNSaNKLVwie9/ONvQhxOBbkfSICBPnzKrB77Fh6CZZXjgTt/4Latw==} @@ -7995,10 +7172,6 @@ packages: resolution: {integrity: sha512-bt+Sh8CtDmn2OajxvNO+BX7Wn4CIWMpTRm3MaiKPCQcnnlm0CS2mhui6QaoeQugs+3Kj2ESKEEGJUdVafwhiCg==} engines: {node: '>=4.0.0'} - eslint-scope@5.1.1: - resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} - engines: {node: '>=8.0.0'} - eslint-scope@7.2.2: resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -8010,6 +7183,7 @@ packages: eslint@8.57.0: resolution: {integrity: sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + deprecated: This version is no longer supported. Please see https://eslint.org/version-support for other options. hasBin: true esm-resolve@1.0.8: @@ -8077,6 +7251,9 @@ packages: eventemitter3@4.0.7: resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} + eventemitter3@5.0.1: + resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} + events@3.3.0: resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} engines: {node: '>=0.8.x'} @@ -8093,10 +7270,6 @@ packages: resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} engines: {node: '>=10'} - execa@8.0.1: - resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} - engines: {node: '>=16.17'} - executable@4.1.1: resolution: {integrity: sha512-8iA79xD3uAch729dUG8xaaBBFGaEa0wdD2VkYLFHwlqosEj/jT66AzcreRDSgV7ehnNLBW2WR5jIXwGKjVdTLg==} engines: {node: '>=4'} @@ -8133,8 +7306,10 @@ packages: resolution: {integrity: sha512-ss9d3mBChOLTEtyfzXCsxlItUxpgS3i4cb/F70G6Q5ohQzmD12XB4x/Y9U6YboeeYBJZt7WQ5yUNu7ZSQ/EGyQ==} engines: {node: '>=v16'} - express-openapi-validator@5.1.6: - resolution: {integrity: sha512-CF24Pef5uThjdsCbjo1UP2mYx2YCkQl1HFoikCFFafFpZBCZ0YErD/RbqlcnKbKM9tMwXZsjAuuO84b2hmdF4g==} + express-openapi-validator@5.3.7: + resolution: {integrity: sha512-AFlIXvICrPWJvWtrsfpL212kyvmyzThcZ1ASnnsRqmzxSo/3SV+J7M1oEsFYbqo7AYQPGtSBKy7eheGM6wPwag==} + peerDependencies: + express: '*' express-prom-bundle@6.6.0: resolution: {integrity: sha512-tZh2P2p5a8/yxQ5VbRav011Poa4R0mHqdFwn9Swe/obXDe5F0jY9wtRAfNYnqk4LXY7akyvR/nrvAHxQPWUjsQ==} @@ -8148,8 +7323,8 @@ packages: peerDependencies: express: 4 || 5 || ^5.0.0-beta.1 - express@4.19.2: - resolution: {integrity: sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==} + express@4.21.1: + resolution: {integrity: sha512-YSFlK1Ee0/GC8QaO91tHcDxJiE/X4FbpAyQWkxAvG6AXCuR65YzK8ua6D9hvi/TzUfZMpc+BwuM1IPw8fmQBiQ==} engines: {node: '>= 0.10.0'} extend@3.0.2: @@ -8174,9 +7349,6 @@ packages: fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} - fast-diff@1.2.0: - resolution: {integrity: sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==} - fast-glob@3.2.12: resolution: {integrity: sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==} engines: {node: '>=8.6.0'} @@ -8201,16 +7373,11 @@ packages: resolution: {integrity: sha512-7OnTFAVPefgw2eBJ1xj2PGGR9FwYzSUso9decayHgCDX4sJkHLdcsYTytTg+tYv+wKF3U8gJuSBz2jJpQV4u/g==} engines: {node: '>=16.1.0'} - fast-xml-parser@4.2.5: - resolution: {integrity: sha512-B9/wizE4WngqQftFPmdaMYlXoJlJOYxGQOanC77fq9k8+Z0v5dDSVh+3glErdIROP//s/jgb7ZuxKfB8nVyo0g==} - hasBin: true + fast-uri@3.0.1: + resolution: {integrity: sha512-MWipKbbYiYI0UC7cl8m/i/IWTqfC8YXsqjzybjddLsFjStroQzsHXkc73JutMvBiXmOvapk+axIl79ig5t55Bw==} - fast-xml-parser@4.2.7: - resolution: {integrity: sha512-J8r6BriSLO1uj2miOk1NW0YVm8AGOOu3Si2HQp/cSmo6EA4m3fcwu2WKjJ4RK9wMLBtg69y1kS8baDiQBR41Ig==} - hasBin: true - - fast-xml-parser@4.3.5: - resolution: {integrity: sha512-sWvP1Pl8H03B8oFJpFR3HE31HUfwtX7Rlf9BNsvdpujD4n7WMhfmu8h9wOV2u+c1k0ZilTADhPqypzx2J690ZQ==} + fast-xml-parser@4.4.1: + resolution: {integrity: sha512-xkjOecfnKGkSsOwtZ5Pz7Us/T6mrbPQrq0nh+aCO5V9nk5NLWmasAHumTKjiPJPWANe+kAZ84Jc8ooJkzZ88Sw==} hasBin: true fastest-levenshtein@1.0.16: @@ -8237,9 +7404,6 @@ packages: fengari@0.1.4: resolution: {integrity: sha512-6ujqUuiIYmcgkGz8MGAdERU57EIluGGPSUgGPTsco657EHa+srq0S3/YUl/r9kx1+D+d4rGfYObd+m8K22gB1g==} - fetch-retry@5.0.3: - resolution: {integrity: sha512-uJQyMrX5IJZkhoEUBQ3EjxkeiZkppBd5jS/fMTJmfZxLSiaQjv2zD0kTvuvkSH89uFvgSlB6ueGpjD3HWN7Bxw==} - fflate@0.7.4: resolution: {integrity: sha512-5u2V/CDW15QM1XbbgS+0DfPxVB+jUKhWEKuuFuHncbk3tEEqzmoXL+2KyOFuKGqOnmdIy0/davWF1CkuwtibCw==} @@ -8254,9 +7418,6 @@ packages: file-saver@2.0.5: resolution: {integrity: sha512-P9bmyZ3h/PRG+Nzga+rbdI4OEpNDzAVyy74uVO9ATgzLK6VtAsYybF/+TOCvrc0MO793d6+42lLyZTw7/ArVzA==} - file-system-cache@2.3.0: - resolution: {integrity: sha512-l4DMNdsIPsVnKrgEXbJwDJsA5mB8rGwHYERMgqQx/xAUtChPJMre1bXBzDEqqVbWv9AIbFezXMxeEkZDSrXUOQ==} - file-type@16.5.4: resolution: {integrity: sha512-/yFHK0aGjFEgDJjEKP0pWCplsPFPhwyfwevf/pVxiN0tmE4L9LmwWxWukdJSHdoCli4VgQLehjJtwQBnqmsKcw==} engines: {node: '>=10'} @@ -8271,22 +7432,18 @@ packages: resolution: {integrity: sha512-GTLKYyBSDz3nPhlLVPjPWZCnhkd9TrrRArNcy8Z+J2cqScB7h2McAzR6NBX6nYOoWafql0roY8hrocxnZBv9CQ==} engines: {node: '>= 10.4.0'} - fill-range@7.0.1: - resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} + fill-range@7.1.1: + resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} engines: {node: '>=8'} filter-obj@1.1.0: resolution: {integrity: sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ==} engines: {node: '>=0.10.0'} - finalhandler@1.2.0: - resolution: {integrity: sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==} + finalhandler@1.3.1: + resolution: {integrity: sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==} engines: {node: '>= 0.8'} - find-cache-dir@2.1.0: - resolution: {integrity: sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==} - engines: {node: '>=6'} - find-cache-dir@3.3.2: resolution: {integrity: sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==} engines: {node: '>=8'} @@ -8294,10 +7451,6 @@ packages: find-package-json@1.2.0: resolution: {integrity: sha512-+SOGcLGYDJHtyqHd87ysBhmaeQ95oWspDKnMXBrnQ9Eq4OkLNqejgoaD8xVWu6GPa0B6roa6KinCMEMcVeqONw==} - find-up@3.0.0: - resolution: {integrity: sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==} - engines: {node: '>=6'} - find-up@4.1.0: resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} engines: {node: '>=8'} @@ -8320,10 +7473,6 @@ packages: flatted@3.2.7: resolution: {integrity: sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==} - flow-parser@0.197.0: - resolution: {integrity: sha512-yhwkJPxH1JBg0aJunk/jVRy5p3UhVZBGkzL1hq/GK+GaBh6bKr2YKkv6gDuiufaw+i3pKWQgOLtD++1cvrgXLA==} - engines: {node: '>=0.4.0'} - fn.name@1.1.0: resolution: {integrity: sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw==} @@ -8438,13 +7587,10 @@ packages: functions-have-names@1.2.3: resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} - fuse.js@7.0.0: - resolution: {integrity: sha512-14F4hBIxqKvD4Zz/XjDc3y94mNZN6pRv3U13Udo0lNLCWRBUsrMv2xwcF/y/Z5sV6+FQW+/ow68cHpm4sunt8Q==} - engines: {node: '>=10'} - gauge@4.0.4: resolution: {integrity: sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + deprecated: This package is no longer supported. gaxios@5.1.0: resolution: {integrity: sha512-aezGIjb+/VfsJtIcHGcBSerNEDdfdHeMros+RbYbGpmonKWQCOVOes0LVZhn1lDtIgq55qq0HaxymIoae3Fl/A==} @@ -8454,8 +7600,8 @@ packages: resolution: {integrity: sha512-bpOZVQV5gthH/jVCSuYuokRo2bTKOcuBiVWpjmTn6C5Agl5zclGfTljuGsQZxwwDBkli+YhZhP4TdlqTnhOezQ==} engines: {node: '>=14'} - gcp-metadata@5.2.0: - resolution: {integrity: sha512-aFhhvvNycky2QyhG+dcfEdHBF0FRbYcf39s6WNHUDysKSrbJ5vuFbjydxBcmewtXeV248GP8dWT3ByPNxsyHCw==} + gcp-metadata@5.3.0: + resolution: {integrity: sha512-FNTkdNEnBdlqF2oatizolQqNANMrcqJt6AAYt99B3y1aLLC8Hc5IOBb+ZnnzllodEEf6xMBp6wRcBbc16fa65w==} engines: {node: '>=12'} gcp-metadata@6.1.0: @@ -8484,21 +7630,10 @@ packages: get-func-name@2.0.2: resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==} - get-intrinsic@1.2.1: - resolution: {integrity: sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==} - get-intrinsic@1.2.4: resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==} engines: {node: '>= 0.4'} - get-nonce@1.0.1: - resolution: {integrity: sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==} - engines: {node: '>=6'} - - get-npm-tarball-url@2.0.3: - resolution: {integrity: sha512-R/PW6RqyaBQNWYaSyfrh54/qtcnOp22FHCCiRhSSZj0FP3KQWCsxxt0DzIdVTbwTqe9CtQfvl/FPD4UIPt4pqw==} - engines: {node: '>=12.17'} - get-package-type@0.1.0: resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==} engines: {node: '>=8.0.0'} @@ -8518,10 +7653,6 @@ packages: resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} engines: {node: '>=10'} - get-stream@8.0.1: - resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} - engines: {node: '>=16'} - get-symbol-description@1.0.0: resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==} engines: {node: '>= 0.4'} @@ -8543,10 +7674,6 @@ packages: getpass@0.1.7: resolution: {integrity: sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==} - giget@1.0.0: - resolution: {integrity: sha512-KWELZn3Nxq5+0So485poHrFriK9Bn3V/x9y+wgqrHkbmnGbjfLmZ685/SVA/ovW+ewoqW0gVI47pI4yW/VNobQ==} - hasBin: true - github-from-package@0.0.0: resolution: {integrity: sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==} @@ -8561,25 +7688,23 @@ packages: resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} engines: {node: '>=10.13.0'} - glob-to-regexp@0.4.1: - resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} - - glob@10.3.10: - resolution: {integrity: sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==} - engines: {node: '>=16 || 14 >=14.17'} - hasBin: true - glob@10.3.3: resolution: {integrity: sha512-92vPiMb/iqpmEgsOoIDvTjc50wf9CCCvMzsi6W0JLPeUKE8TWP1a73PgqSrqy7iAZxaSD1YdzU7QZR5LF51MJw==} engines: {node: '>=16 || 14 >=14.17'} hasBin: true + glob@10.4.5: + resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} + hasBin: true + glob@7.2.3: resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + deprecated: Glob versions prior to v9 are no longer supported glob@8.1.0: resolution: {integrity: sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==} engines: {node: '>=12'} + deprecated: Glob versions prior to v9 are no longer supported glob@9.3.2: resolution: {integrity: sha512-BTv/JhKXFEHsErMte/AnfiSv8yYOLLiyH2lTg8vn02O21zWFgHPTfxtgn1QRe7NRgggUhC8hacR2Re94svHqeA==} @@ -8601,24 +7726,20 @@ packages: resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==} engines: {node: '>= 0.4'} + globalthis@1.0.4: + resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==} + engines: {node: '>= 0.4'} + globby@11.1.0: resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} engines: {node: '>=10'} - globby@13.2.2: - resolution: {integrity: sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - globby@14.0.1: - resolution: {integrity: sha512-jOMLD2Z7MAhyG8aJpNOpmziMOP4rPLcc95oQPKXBazW82z+CEgPFBQvEpRUa1KeIMUJo4Wsm+q6uzO/Q/4BksQ==} - engines: {node: '>=18'} - gm@1.25.0: resolution: {integrity: sha512-4kKdWXTtgQ4biIo7hZA396HT062nDVVHPjQcurNZ3o/voYN+o5FUC5kOwuORbpExp3XbTJ3SU7iRipiIhQtovw==} engines: {node: '>=14'} - google-auth-library@8.8.0: - resolution: {integrity: sha512-0iJn7IDqObDG5Tu9Tn2WemmJ31ksEa96IyK0J0OZCpTh6CrC6FrattwKX87h3qKVuprCJpdOGKc1Xi8V0kMh8Q==} + google-auth-library@8.9.0: + resolution: {integrity: sha512-f7aQCJODJFmYWN6PeNKzgvy9LI2tYmXnzpNDHEjG5sDNPgGb2FXQyTBnXeSH+PAtpKESFD+LmHw3Ox3mN7e1Fg==} engines: {node: '>=12'} google-auth-library@9.10.0: @@ -8632,11 +7753,9 @@ packages: google-p12-pem@4.0.1: resolution: {integrity: sha512-WPkN4yGtz05WZ5EhtlxNDWPhC4JIic6G8ePitwUWy4l+XPVYec+a0j0Ts47PDtW59y3RwAhUd9/h9ZZ63px6RQ==} engines: {node: '>=12.0.0'} + deprecated: Package is no longer maintained hasBin: true - google-timezones-json@1.1.0: - resolution: {integrity: sha512-6BmBx9gJVALV2jsfMks8PwmkWT5ip3+bmMyTgXu4PY+G8nKjHi61yrL7rSXpMYRsIzUXhVKpj+MnjhnwG9nung==} - gopd@1.0.1: resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} @@ -8649,8 +7768,8 @@ packages: graphemer@1.4.0: resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} - groq-sdk@0.3.2: - resolution: {integrity: sha512-Xp1xOea7nqUcTMndpiA8VkjZ05jM/eUUeCILxhRF+c2etBz/myQwRcUrr5lpWc0euIt96AiBMa9aYa0Iqrh13g==} + groq-sdk@0.5.0: + resolution: {integrity: sha512-RVmhW7qZ+XZoy5fIuSdx/LGQJONpL8MHgZEW7dFwTdgkzStub2XQx6OKv28CHogijdwH41J+Npj/z2jBPu3vmw==} gtoken@6.1.2: resolution: {integrity: sha512-4ccGpzz7YAr7lxrT2neugmXQ3hP9ho2gcaityLVkiUecAiwiy60Ii8gRbZeOsXV19fYaRjgBSshs8kXw+NKCPQ==} @@ -8660,10 +7779,6 @@ packages: resolution: {integrity: sha512-pCcEwRi+TKpMlxAQObHDQ56KawURgyAf6jtIY046fJ5tIv3zDe/LEIubckAO8fj6JnAxLdmWkUfNyulQ2iKdEw==} engines: {node: '>=14.0.0'} - gunzip-maybe@1.4.2: - resolution: {integrity: sha512-4haO1M4mLO91PW57BMsDFf75UmwoRX0GkdD+Faw+Lr+r/OZrOCS0pIBwOL1xCKQqnQzbNFGgK2V2CpBUPeFNTw==} - hasBin: true - handlebars@4.7.8: resolution: {integrity: sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==} engines: {node: '>=0.4.7'} @@ -8683,10 +7798,6 @@ packages: has-property-descriptors@1.0.2: resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} - has-proto@1.0.1: - resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==} - engines: {node: '>= 0.4'} - has-proto@1.0.3: resolution: {integrity: sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==} engines: {node: '>= 0.4'} @@ -8695,10 +7806,6 @@ packages: resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} engines: {node: '>= 0.4'} - has-tostringtag@1.0.0: - resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==} - engines: {node: '>= 0.4'} - has-tostringtag@1.0.2: resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} engines: {node: '>= 0.4'} @@ -8710,6 +7817,10 @@ packages: resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} engines: {node: '>= 0.4.0'} + has@1.0.4: + resolution: {integrity: sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ==} + engines: {node: '>= 0.4.0'} + hash-sum@2.0.0: resolution: {integrity: sha512-WdZTbAByD+pHfl/g9QSsBIIwy8IT+EsPiKDs0KNX+zSHhdDLFKdZu0BQHljvO+0QI/BasbMSUa8wYNCZTvhslg==} @@ -8759,12 +7870,12 @@ packages: resolution: {integrity: sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==} engines: {node: '>=0.10.0'} - hookable@5.5.3: - resolution: {integrity: sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ==} - hosted-git-info@2.8.9: resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} + html-element-map@1.3.1: + resolution: {integrity: sha512-6XMlxrAFX4UEEGxctfFnmrFaaZFNf9i5fNuV5wZ3WWQ4FVaNP1aX1LkX9j2mfEx1NpjeE/rL3nmgEn23GdFmrg==} + html-encoding-sniffer@3.0.0: resolution: {integrity: sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==} engines: {node: '>=12'} @@ -8773,19 +7884,33 @@ packages: resolution: {integrity: sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ==} engines: {node: '>=18'} + html-entities@2.5.2: + resolution: {integrity: sha512-K//PSRMQk4FZ78Kyau+mZurHn3FH0Vwr+H36eE0rPbeYkRRi9YxceYPhuN60UwWorxyKHhqoAJl2OFKa4BVtaA==} + html-escaper@2.0.2: resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} + html-minifier@4.0.0: + resolution: {integrity: sha512-aoGxanpFPLg7MkIl/DDFYtb0iWz7jMFGqFhvEDZga6/4QTjneiD8I/NXL1x5aaoCp7FSIT6h/OhykDdPsbtMig==} + engines: {node: '>=6'} + hasBin: true + html-to-text@9.0.5: resolution: {integrity: sha512-qY60FjREgVZL03vJU6IfMV4GDjGBIoOyvuFdpBDIX9yTlDw0TjxVBQp+P8NvpdIXNJvfWBTNul7fsAQJq2FNpg==} engines: {node: '>=14'} + htmlparser2@5.0.1: + resolution: {integrity: sha512-vKZZra6CSe9qsJzh0BjBGXo8dvzNsq/oGvsjfRdOrrryfeD9UOBEEQdeoqCRmKZchF5h2zOBMQ6YuQ0uRUmdbQ==} + htmlparser2@6.1.0: resolution: {integrity: sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==} htmlparser2@8.0.2: resolution: {integrity: sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==} + htmlparser2@9.1.0: + resolution: {integrity: sha512-5zfg6mHUoaer/97TxnGpxmbR7zJtPwIYFMZ/H5ucTlPZhKvtum05yiPK3Mgai3a0DyVxv7qYqoweaEd2nrYQzQ==} + http-cache-semantics@4.1.1: resolution: {integrity: sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==} @@ -8820,6 +7945,10 @@ packages: resolution: {integrity: sha512-NmLNjm6ucYwtcUmL7JQC1ZQ57LmHP4lT15FQ8D61nak1rO6DH+fz5qNK2Ap5UN4ZapYICE3/0KodcLYSPsPbaA==} engines: {node: '>= 14'} + https-proxy-agent@7.0.5: + resolution: {integrity: sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==} + engines: {node: '>= 14'} + human-signals@1.1.1: resolution: {integrity: sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==} engines: {node: '>=8.12.0'} @@ -8828,10 +7957,6 @@ packages: resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} engines: {node: '>=10.17.0'} - human-signals@5.0.0: - resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} - engines: {node: '>=16.17.0'} - humanize-duration@3.27.3: resolution: {integrity: sha512-iimHkHPfIAQ8zCDQLgn08pRqSVioyWvnGfaQ8gond2wf7Jq2jJ+24ykmnRyiz3fIldcn4oUuQXpjqKLhSVR7lw==} @@ -8890,8 +8015,8 @@ packages: resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} engines: {node: '>=0.8.19'} - indefinite@2.4.3: - resolution: {integrity: sha512-tLgivPQiMY76i93YKhjV5cMiORWfrk3FHdD1mREBNKlWbHmBrObLfOz6xlTk+beboj/JJSlhuCpCMmChR5Sgng==} + indefinite@2.5.1: + resolution: {integrity: sha512-Ul0hCdnSjuFDEloYWeozTaEfljbz+0q+u4HsHns2dOk2DlhGlbRMGFtNcIL+Ve7sZYeIOTOAKA0usAXBGHpNDg==} engines: {node: '>=6.0.0'} indent-string@4.0.0: @@ -8903,12 +8028,14 @@ packages: infisical-node@1.3.0: resolution: {integrity: sha512-tTnnExRAO/ZyqiRdnSlBisErNToYWgtunMWh+8opClEt5qjX7l6HC/b4oGo2AuR2Pf41IR+oqo+dzkM1TCvlUA==} + deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. inflected@2.1.0: resolution: {integrity: sha512-hAEKNxvHf2Iq3H60oMBHkB4wl5jn3TPF3+fXek/sRwAB5gP9xWs4r7aweSF95f99HFoz69pnZTcu8f0SIHV18w==} inflight@1.0.6: resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. inherits@2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} @@ -8936,9 +8063,6 @@ packages: resolution: {integrity: sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==} engines: {node: '>= 0.10'} - invariant@2.2.4: - resolution: {integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==} - ioredis-mock@8.8.1: resolution: {integrity: sha512-zXSaDf86EcDFVf8jMOirWU6Js4WcwLd/cxwJiCh9EbD1GoHfeE/fVqLhLz/l1MkyL85Fb6MwfF2Fr/9819Ul9Q==} engines: {node: '>=12.22'} @@ -8961,9 +8085,6 @@ packages: resolution: {integrity: sha512-/51/TKE88Lmm7Gc4/8btclNXWS+g50wXhYJq8HWIBAGUBnoAdRu1aXeh364t/O7wXDAcTJDP8PNuNKWUDWie+A==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - is-any-array@2.0.1: - resolution: {integrity: sha512-UtilS7hLRu++wb/WBAw9bNuP1Eg04Ivn1vERJck8zJthEvXCBEBpGR/33u/xLKWEQf95803oalHrVDptcAvFdQ==} - is-arguments@1.1.1: resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==} engines: {node: '>= 0.4'} @@ -8984,10 +8105,6 @@ packages: is-bigint@1.0.4: resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} - is-binary-path@2.1.0: - resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} - engines: {node: '>=8'} - is-boolean-object@1.1.2: resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} engines: {node: '>= 0.4'} @@ -9010,13 +8127,14 @@ packages: is-core-module@2.13.1: resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==} + is-data-view@1.0.1: + resolution: {integrity: sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==} + engines: {node: '>= 0.4'} + is-date-object@1.0.5: resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} engines: {node: '>= 0.4'} - is-deflate@1.0.0: - resolution: {integrity: sha512-YDoFpuZWu1VRXlsnlYMzKyVRITXj7Ej/V9gXQ2/pAe7X1J7M/RNOqaIYi6qUn+B7nGyB9pDXrv02dsB58d2ZAQ==} - is-docker@2.2.1: resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} engines: {node: '>=8'} @@ -9045,27 +8163,16 @@ packages: resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} engines: {node: '>=0.10.0'} - is-gzip@1.0.0: - resolution: {integrity: sha512-rcfALRIb1YewtnksfRIHGcIY93QnK8BIQ/2c9yDYcG/Y6+vRoJuTWBmmSEbyLLYtXm7q35pHOHbZFQBaLrhlWQ==} - engines: {node: '>=0.10.0'} - is-installed-globally@0.4.0: resolution: {integrity: sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==} engines: {node: '>=10'} - is-interactive@1.0.0: - resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==} - engines: {node: '>=8'} - is-lambda@1.0.1: resolution: {integrity: sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==} is-map@2.0.2: resolution: {integrity: sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==} - is-module@1.0.0: - resolution: {integrity: sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==} - is-nan@1.3.2: resolution: {integrity: sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==} engines: {node: '>= 0.4'} @@ -9086,18 +8193,10 @@ packages: resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} engines: {node: '>=0.12.0'} - is-path-cwd@2.2.0: - resolution: {integrity: sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==} - engines: {node: '>=6'} - is-path-inside@3.0.3: resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} engines: {node: '>=8'} - is-plain-object@2.0.4: - resolution: {integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==} - engines: {node: '>=0.10.0'} - is-plain-object@5.0.0: resolution: {integrity: sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==} engines: {node: '>=0.10.0'} @@ -9111,9 +8210,6 @@ packages: is-property@1.0.2: resolution: {integrity: sha512-Ks/IoX00TtClbGQr4TWXemAnktAQvYB7HzcCxDGqEZU6oCmb2INHuOoKxbtR+HFkmYWBKv/dOZtGRiAjDhj92g==} - is-reference@1.2.1: - resolution: {integrity: sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==} - is-regex@1.1.4: resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} engines: {node: '>= 0.4'} @@ -9136,22 +8232,17 @@ packages: resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} engines: {node: '>=8'} - is-stream@3.0.0: - resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - is-string@1.0.7: resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} engines: {node: '>= 0.4'} + is-subset@0.1.1: + resolution: {integrity: sha512-6Ybun0IkarhmEqxXCNw/C0bna6Zb/TkfUX9UbwJtK6ObwAVCxmAP308WWTHviM/zAqXk05cdhYsUsZeGQh99iw==} + is-symbol@1.0.4: resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} engines: {node: '>= 0.4'} - is-typed-array@1.1.10: - resolution: {integrity: sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==} - engines: {node: '>= 0.4'} - is-typed-array@1.1.13: resolution: {integrity: sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==} engines: {node: '>= 0.4'} @@ -9196,17 +8287,9 @@ packages: resolution: {integrity: sha512-7c7mBznZu2ktfvyT582E2msM+Udc1EjOyhVRE/0ZsjD9LBtWSm23h3PtiRh2a35XoUsTQQjJXaJzuLjXsOdFDg==} engines: {node: '>=6.0'} - isobject@3.0.1: - resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==} - engines: {node: '>=0.10.0'} - isstream@0.1.2: resolution: {integrity: sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==} - istanbul-lib-coverage@3.2.0: - resolution: {integrity: sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==} - engines: {node: '>=8'} - istanbul-lib-coverage@3.2.2: resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==} engines: {node: '>=8'} @@ -9215,10 +8298,6 @@ packages: resolution: {integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==} engines: {node: '>=8'} - istanbul-lib-report@3.0.0: - resolution: {integrity: sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==} - engines: {node: '>=8'} - istanbul-lib-report@3.0.1: resolution: {integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==} engines: {node: '>=10'} @@ -9227,22 +8306,21 @@ packages: resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==} engines: {node: '>=10'} - istanbul-lib-source-maps@5.0.4: - resolution: {integrity: sha512-wHOoEsNJTVltaJp8eVkm8w+GVkVNHT2YDYo53YdzQEL2gWm1hBX5cGFR9hQJtuGLebidVX7et3+dmDZrmclduw==} + istanbul-lib-source-maps@5.0.6: + resolution: {integrity: sha512-yg2d+Em4KizZC5niWhQaIomgf5WlL4vOOjZ5xGCmF8SnPE/mDWWXgvRExdcpCgh9lLRRa1/fSYp2ymmbJ1pI+A==} engines: {node: '>=10'} - istanbul-reports@3.1.5: - resolution: {integrity: sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==} - engines: {node: '>=8'} - - istanbul-reports@3.1.6: - resolution: {integrity: sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg==} + istanbul-reports@3.1.7: + resolution: {integrity: sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==} engines: {node: '>=8'} jackspeak@2.3.6: resolution: {integrity: sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==} engines: {node: '>=14'} + jackspeak@3.4.3: + resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} + jake@10.8.5: resolution: {integrity: sha512-sVpxYeuAhWt0OTWITwT98oyV0GsXyMlXCF+3L1SuafBVUIr/uILGRB+NqwkzhgXKvoJpDIpQvqkUALgdmQsQxw==} engines: {node: '>=10'} @@ -9342,7 +8420,7 @@ packages: resolution: {integrity: sha512-2ynEZ7IEJNrhrgshklDMhrOdnmW4Nt+PhkyRqZxRgpwMo7JjmFWMzyp0+eSyk+H9KK1QjXI5xTZIw6x7cVDcRg==} peerDependencies: jest: ^24.0.0 || ^25.0.0 || ^26.0.0 || ^27.0.0 || ^28.0.0 || ^29.0.0 - typescript: ^5.5.2 + typescript: ^5.6.2 jest-mock@29.6.2: resolution: {integrity: sha512-hoSv3lb3byzdKfwqCuT6uTscan471GUECqgNYykg6ob0yiAw3zYc7OrPnI9Qv8Wwoa4lC7AZ9hyS4AiIx5U2zg==} @@ -9397,10 +8475,6 @@ packages: resolution: {integrity: sha512-GZitlqkMkhkefjfN/p3SJjrDaxPflqxEAv3/ik10OirZqJGYH5rPiIsgVcfof0Tdqg3shQGdEIxDBx+B4tuLzA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - jest-worker@27.5.1: - resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} - engines: {node: '>= 10.13.0'} - jest-worker@29.6.2: resolution: {integrity: sha512-l3ccBOabTdkng8I/ORCkADz4eSMKejTYv1vB/Z83UiubqhC1oQ5Li6dWCyqOIvSifGjUBxuvxvlm6KGK2DtuAQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -9426,8 +8500,8 @@ packages: resolution: {integrity: sha512-9FzQjJ7MATs1tSpnco1K6ayiYE3figslrXA72G2HQ/n76RzvYlofyi5QM+iX4YRs/pu3yzxlVQSST23+dMDknw==} engines: {node: '>= 0.6.0'} - joi@17.11.0: - resolution: {integrity: sha512-NgB+lZLNoqISVy1rZocE9PZI36bL/77ie924Ri43yEvi9GUUMPeyVIr8KdFTMUlby1p0PBYMk9spIxEUQYqrJQ==} + joi@17.13.3: + resolution: {integrity: sha512-otDA4ldcIx+ZXsKHWmp0YizCweVRZG96J10b0FevjfuncLO1oX59THoAmHkNubYJ+9gWsYsp5k8v4ib6oDv1fA==} join-component@1.1.0: resolution: {integrity: sha512-bF7vcQxbODoGK1imE2P9GS9aw4zD0Sd+Hni68IMZLj7zRnquH7dXUmMw9hDI5S/Jzt7q+IyTXN0rSg2GI0IKhQ==} @@ -9462,9 +8536,6 @@ packages: js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} - js-tokens@8.0.3: - resolution: {integrity: sha512-UfJMcSJc+SEXEl9lH/VLHSZbThQyLpw1vLO1Lb+j4RWDvG3N2f7yj3PVQA3cmkTBNldJ9eFnM+xEXxHIXrYiJw==} - js-yaml@3.14.1: resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} hasBin: true @@ -9479,14 +8550,9 @@ packages: jsbn@0.1.1: resolution: {integrity: sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==} - jscodeshift@0.15.2: - resolution: {integrity: sha512-FquR7Okgmc4Sd0aEDwqho3rEiKR3BdvuG9jfdHjLJ6JQoWSMpavug3AoIfnfWhxFlf+5pzQh8qjqz0DWFrNQzA==} - hasBin: true - peerDependencies: - '@babel/preset-env': ^7.1.6 - peerDependenciesMeta: - '@babel/preset-env': - optional: true + jsdoc-type-pratt-parser@4.1.0: + resolution: {integrity: sha512-Hicd6JK5Njt2QB6XYFS7ok9e37O8AYk3jTcppG4YVQnYjOemymvTcmc7OWsmq/Qqj5TdRFO5/x/tIPmBeRtGHg==} + engines: {node: '>=12.0.0'} jsdom@20.0.2: resolution: {integrity: sha512-AHWa+QO/cgRg4N+DsmHg1Y7xnz+8KU3EflM0LVDTdmrYOc1WWTSkOjtpUveQH+1Bqd5rtcVnb/DuxV/UjDO4rA==} @@ -9533,10 +8599,6 @@ packages: json-pointer@0.6.2: resolution: {integrity: sha512-vLWcKbOaXlO+jvRy4qNd+TI1QUPZzfJj1tpJ3vAXDych5XJf93ftpUKe5pKCrzyIIwgBJcOcCVRUfqQP25afBw==} - json-schema-to-zod@2.1.0: - resolution: {integrity: sha512-7ishNgYY+AbIKeeHcp5xCOdJbdVwSfDx/4V2ktc16LUusCJJbz2fEKdWUmAxhKIiYzhZ9Fp4E8OsAoM/h9cOLA==} - hasBin: true - json-schema-traverse@0.4.1: resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} @@ -9596,6 +8658,11 @@ packages: jszip@3.10.1: resolution: {integrity: sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==} + juice@10.0.1: + resolution: {integrity: sha512-ZhJT1soxJCkOiO55/mz8yeBKTAJhRzX9WBO+16ZTqNTONnnVlUPyVBIzQ7lDRjaBdTbid+bAnyIon/GM3yp4cA==} + engines: {node: '>=10.0.0'} + hasBin: true + jwa@1.4.1: resolution: {integrity: sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==} @@ -9612,10 +8679,6 @@ packages: resolution: {integrity: sha512-+Rcfu2hyQ/jv5skqRY8xA7Ra+mmRkDAzCaLDYbkGtgsNKpzxPWiLbk8ub0dgr4EbWrN1Zb4BCXHUkD6+zYfdWg==} engines: {node: '>=10.13.0'} - kind-of@6.0.3: - resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} - engines: {node: '>=0.10.0'} - kleur@3.0.3: resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} engines: {node: '>=6'} @@ -9626,179 +8689,64 @@ packages: kuler@2.0.0: resolution: {integrity: sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A==} - langchain@0.2.2: - resolution: {integrity: sha512-4tt2QuwW8AXdIL8CRkQeGOCoYYH3QbLHfQ09yD0iWLV1rwUYJ8mIYFAz/+u6CB8YNEyR/HI105s4xrxFQbWa9g==} + langchain@0.3.2: + resolution: {integrity: sha512-kd2kz1cS/PIVrLEDFlrZsAasQfPLbY1UqCZbRKa3/QcpB33/n6xPDvXSMfBuKhvNj0bjW6MXDR9HZTduXjJBgg==} engines: {node: '>=18'} peerDependencies: - '@aws-sdk/client-s3': ^3.310.0 - '@aws-sdk/client-sagemaker-runtime': ^3.310.0 - '@aws-sdk/client-sfn': ^3.310.0 - '@aws-sdk/credential-provider-node': ^3.388.0 - '@azure/storage-blob': ^12.15.0 - '@browserbasehq/sdk': '*' - '@gomomento/sdk': ^1.51.1 - '@gomomento/sdk-core': ^1.51.1 - '@gomomento/sdk-web': ^1.51.1 - '@google-ai/generativelanguage': ^2.5.0 - '@mendable/firecrawl-js': ^0.0.13 - '@notionhq/client': ^2.2.10 - '@pinecone-database/pinecone': '*' - '@supabase/supabase-js': ^2.10.0 - '@vercel/kv': ^0.2.3 - '@xata.io/client': ^0.28.0 - apify-client: ^2.7.1 - assemblyai: ^4.0.0 - axios: 1.6.7 - cheerio: ^1.0.0-rc.12 - chromadb: '*' - convex: ^1.3.1 - couchbase: ^4.3.0 - d3-dsv: ^2.0.0 - epub2: ^3.0.1 - faiss-node: '*' - fast-xml-parser: '*' + '@langchain/anthropic': '*' + '@langchain/aws': '*' + '@langchain/cohere': '*' + '@langchain/core': '>=0.2.21 <0.4.0' + '@langchain/google-genai': '*' + '@langchain/google-vertexai': '*' + '@langchain/groq': '*' + '@langchain/mistralai': '*' + '@langchain/ollama': '*' + axios: '*' + cheerio: '*' handlebars: ^4.7.8 - html-to-text: ^9.0.5 - ignore: ^5.2.0 - ioredis: ^5.3.2 - jsdom: '*' - mammoth: ^1.6.0 - mongodb: '>=5.2.0' - node-llama-cpp: '*' - notion-to-md: ^3.1.0 - officeparser: ^4.0.4 - pdf-parse: 1.1.1 peggy: ^3.0.2 - playwright: ^1.32.1 - puppeteer: ^19.7.2 - pyodide: ^0.24.1 - redis: ^4.6.4 - sonix-speech-recognition: ^2.1.1 - srt-parser-2: ^1.2.3 - typeorm: ^0.3.12 - weaviate-ts-client: '*' - web-auth-library: ^1.0.3 - ws: '>=8.17.1' - youtube-transcript: ^1.0.6 - youtubei.js: ^9.1.0 + typeorm: '*' peerDependenciesMeta: - '@aws-sdk/client-s3': + '@langchain/anthropic': optional: true - '@aws-sdk/client-sagemaker-runtime': + '@langchain/aws': optional: true - '@aws-sdk/client-sfn': + '@langchain/cohere': optional: true - '@aws-sdk/credential-provider-node': + '@langchain/google-genai': optional: true - '@azure/storage-blob': + '@langchain/google-vertexai': optional: true - '@browserbasehq/sdk': + '@langchain/groq': optional: true - '@gomomento/sdk': + '@langchain/mistralai': optional: true - '@gomomento/sdk-core': - optional: true - '@gomomento/sdk-web': - optional: true - '@google-ai/generativelanguage': - optional: true - '@mendable/firecrawl-js': - optional: true - '@notionhq/client': - optional: true - '@pinecone-database/pinecone': - optional: true - '@supabase/supabase-js': - optional: true - '@vercel/kv': - optional: true - '@xata.io/client': - optional: true - apify-client: - optional: true - assemblyai: + '@langchain/ollama': optional: true axios: optional: true cheerio: optional: true - chromadb: - optional: true - convex: - optional: true - couchbase: - optional: true - d3-dsv: - optional: true - epub2: - optional: true - faiss-node: - optional: true - fast-xml-parser: - optional: true handlebars: optional: true - html-to-text: - optional: true - ignore: - optional: true - ioredis: - optional: true - jsdom: - optional: true - mammoth: - optional: true - mongodb: - optional: true - node-llama-cpp: - optional: true - notion-to-md: - optional: true - officeparser: - optional: true - pdf-parse: - optional: true peggy: optional: true - playwright: - optional: true - puppeteer: - optional: true - pyodide: - optional: true - redis: - optional: true - sonix-speech-recognition: - optional: true - srt-parser-2: - optional: true typeorm: optional: true - weaviate-ts-client: - optional: true - web-auth-library: - optional: true - ws: - optional: true - youtube-transcript: - optional: true - youtubei.js: - optional: true - langchainhub@0.0.8: - resolution: {integrity: sha512-Woyb8YDHgqqTOZvWIbm2CaFDGfZ4NTSyXV687AG4vXEfoNo7cGQp7nhl7wL3ehenKWmNEmcxCLgOZzW8jE6lOQ==} - - langsmith@0.1.12: - resolution: {integrity: sha512-ActVB73EPOIXNbtM8Xm+hjX/ZX39EOnNaCOVaRY/LZQiFDH6+ZbPd4hRm6FfwaXe1zhGqP9nKS3JtVTGY1S+VA==} + langsmith@0.1.59: + resolution: {integrity: sha512-dW+z6s538zBswFFP2w/xzvVef7y2+yNt6GkmRCeLtwfpbMaM4di7JboK3vmnZ+0/LjNb2ukiMmgsTNKu/Y43cg==} + peerDependencies: + openai: '*' + peerDependenciesMeta: + openai: + optional: true lazy-ass@1.6.0: resolution: {integrity: sha512-cc8oEVoctTvsFZ/Oje/kGnHbpWHYBe8IAJe4C0QNc3t8uM/0Y8+erSz/7Y1ALuXTEZTMvxXwO6YbX1ey3ujiZw==} engines: {node: '> 0.8'} - lazy-universal-dotenv@4.0.0: - resolution: {integrity: sha512-aXpZJRnTkpK6gQ/z4nk+ZBLd/Qdp118cvPruLSIQzQNRhKwEcdXCOzXuF55VDqIiuAaY3UGZ10DJtvZzDcvsxg==} - engines: {node: '>=14.0.0'} - ldapts@4.2.6: resolution: {integrity: sha512-r1eOj2PtTJi+9aZxLirktoHntuYXlbQD9ZXCjiZmJx0VBQtBcWc+rueqABuh/AxMcFHNPDSJLJAXxoj5VevTwQ==} engines: {node: '>=14'} @@ -9806,6 +8754,60 @@ packages: leac@0.6.0: resolution: {integrity: sha512-y+SqErxb8h7nE/fiEX07jsbuhrpO9lL8eca7/Y1nuWV2moNlXhyd59iDGcRf6moVyDMbmTNzL40SUyrFU/yDpg==} + lefthook-darwin-arm64@1.7.15: + resolution: {integrity: sha512-o8JgCnLM7UgF9g0MwarHJFoj6aVSSkUInHpsQZegV1c7CVQY/LIXgSeAWRb9XBvuUjByJ/HiHFMp9/hAALTwxQ==} + cpu: [arm64] + os: [darwin] + + lefthook-darwin-x64@1.7.15: + resolution: {integrity: sha512-nrdoex0icmXYl7AAvG7WtfEzjQtX/kWvM88jPu/gijH6VhAjp110Y8VScB7rWOcApb5kNNeqd1nKMAFgZ8KhAg==} + cpu: [x64] + os: [darwin] + + lefthook-freebsd-arm64@1.7.15: + resolution: {integrity: sha512-zl1TPynklJZZ/YsWb2H0gfErQbey318i2W85wIKGEk8kC2UzOgYTuPffnfi7kANei9ntZnhvGgilc6tqYOPuGQ==} + cpu: [arm64] + os: [freebsd] + + lefthook-freebsd-x64@1.7.15: + resolution: {integrity: sha512-/gKPwhWhZ3Q/efGs73/qw6nyR4WCT74oSTgn8wabAJO5+T/2FXTKzo7IiKkQmScmY5OcnD/0teJbJZ17VWSSOg==} + cpu: [x64] + os: [freebsd] + + lefthook-linux-arm64@1.7.15: + resolution: {integrity: sha512-re2f8WmYw19n8ojit0rnKbERAzD1/iCpU/Y8anXOjD/ROw/cpSfO88uKQrUCNY9Rp4XLtkkp9oDJs3Eg7JS7vA==} + cpu: [arm64] + os: [linux] + + lefthook-linux-x64@1.7.15: + resolution: {integrity: sha512-Kj6ieTlhFGlbPDyVFeOb296MS9x/Jj5y/xTPLBM+EKbdsTJSvUYu5FdtEWfhpLyWmPfkZtULHcTQE1hoo9Q4Cg==} + cpu: [x64] + os: [linux] + + lefthook-openbsd-arm64@1.7.15: + resolution: {integrity: sha512-85amE23mJ4BC9OThLkt+QCeVwue2Cr0ezN9LSwP0h8+royyj7YRcSu0VM/Et3B9LO50T2bpdI9norOqTcPZ9yA==} + cpu: [arm64] + os: [openbsd] + + lefthook-openbsd-x64@1.7.15: + resolution: {integrity: sha512-vXx/PpcalFgdvqkoHLI4KTGZp0ti+VCCL7RqDTA6n+GZpxPTWEXSOz3GuwNALX93Dn6MOYQYktKtXADwy24fcA==} + cpu: [x64] + os: [openbsd] + + lefthook-windows-arm64@1.7.15: + resolution: {integrity: sha512-jPKdQOLWQLRPO3VfI3ptpmdQBBsXTwaCLKXMo/gcSyU0xE/ltPD4QqvHzTAFJo00VcKRHjv9QeH69qhENjJtjw==} + cpu: [arm64] + os: [win32] + + lefthook-windows-x64@1.7.15: + resolution: {integrity: sha512-tlkSU669+b64AsqytGy1W3au7h8kFjt5ejLhTkErJpylTqThZIHm/GI0wUmpX+ud8kekM+9j407dweAHYOQ1XA==} + cpu: [x64] + os: [win32] + + lefthook@1.7.15: + resolution: {integrity: sha512-HW2mYkhg0a3RH2t57+ZJwacJiSIuDEhsXQAaCw6iGeN7zowdUV7g5QtnRdFdPkaK2eaNFpG6Rp0GsTrl/v0gNg==} + hasBin: true + leven@3.1.0: resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} engines: {node: '>=6'} @@ -9843,10 +8845,6 @@ packages: resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} engines: {node: '>=10'} - lilconfig@3.0.0: - resolution: {integrity: sha512-K2U4W2Ff5ibV7j7ydLr+zLAkIg5JJ4lPn1Ltsdt+Tz/IjQ8buJ55pZAxoP34lqIiwtF9iAvtLv3JGv7CAyAg+g==} - engines: {node: '>=14'} - lilconfig@3.1.2: resolution: {integrity: sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==} engines: {node: '>=14'} @@ -9854,9 +8852,6 @@ packages: lines-and-columns@1.2.4: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} - linkify-it@3.0.3: - resolution: {integrity: sha512-ynTsyrFSdE5oZ/O9GEf00kPngmOfVwazR5GKDq6EYfhlpFug3J2zybX56a2PRRpc9P+FuSoGNAwjlbDs9jJBPQ==} - linkify-it@4.0.1: resolution: {integrity: sha512-C7bfi1UZmoj8+PQx22XyeXCuBlokoyWQL5pWSP+EI6nzRylyThouddufc2c1NDIcP9k5agmN9fLpA7VNJfIiqw==} @@ -9872,14 +8867,6 @@ packages: enquirer: optional: true - loader-runner@4.3.0: - resolution: {integrity: sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==} - engines: {node: '>=6.11.5'} - - local-pkg@0.4.3: - resolution: {integrity: sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==} - engines: {node: '>=14'} - local-pkg@0.5.0: resolution: {integrity: sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==} engines: {node: '>=14'} @@ -9887,10 +8874,6 @@ packages: localforage@1.10.0: resolution: {integrity: sha512-14/H1aX7hzBBmmh7sGPd+AOMkkIrHM3Z1PAyGgZigA1H1p5O5ANnMyWzvpAETtG68/dC4pC0ncy3+PPGzXZHPg==} - locate-path@3.0.0: - resolution: {integrity: sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==} - engines: {node: '>=6'} - locate-path@5.0.0: resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} engines: {node: '>=8'} @@ -9915,12 +8898,15 @@ packages: lodash.clonedeep@4.5.0: resolution: {integrity: sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==} - lodash.debounce@4.0.8: - resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} - lodash.defaults@4.2.0: resolution: {integrity: sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==} + lodash.escape@4.0.1: + resolution: {integrity: sha512-nXEOnb/jK9g0DYMr1/Xvq6l5xMD7GDG55+GSYIYmS0G4tBk/hURD4JR9WCavs04t33WmJx9kCyp9vJ+mr4BOUw==} + + lodash.flattendeep@4.4.0: + resolution: {integrity: sha512-uHaJFihxmJcEX3kT4I23ABqKKalJ/zDrDg0lsFtc1h+3uw49SIJ5beyhx5ExVRti3AvKoOJngIj7xz3oylPdWQ==} + lodash.get@4.4.2: resolution: {integrity: sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==} @@ -9963,9 +8949,6 @@ packages: lodash.throttle@4.1.1: resolution: {integrity: sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ==} - lodash.uniq@4.5.0: - resolution: {integrity: sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==} - lodash@4.17.21: resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} @@ -9977,8 +8960,9 @@ packages: resolution: {integrity: sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==} engines: {node: '>=10'} - logform@2.4.2: - resolution: {integrity: sha512-W4c9himeAwXEdZ05dQNerhFz2XG80P9Oj0loPUMV23VC2it0orMHQhJm4hdnnor3rd1HsGf6a2lPwBM1zeXHGw==} + logform@2.6.1: + resolution: {integrity: sha512-CdaO738xRapbKIMVn2m4F6KTj4j7ooJ8POVnebSgKo3KBz5axNXRAL7ZdRjIV6NOr2Uf4vjtRkxrFETOioCqSA==} + engines: {node: '>= 12.0.0'} long@4.0.0: resolution: {integrity: sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==} @@ -9996,8 +8980,11 @@ packages: lossless-json@1.0.5: resolution: {integrity: sha512-RicKUuLwZVNZ6ZdJHgIZnSeA05p8qWc5NW0uR96mpPIjN9WDLUg9+kj1esQU1GkPn9iLZVKatSQK5gyiaFHgJA==} - loupe@2.3.7: - resolution: {integrity: sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==} + loupe@3.1.1: + resolution: {integrity: sha512-edNu/8D5MKVfGVFRhFf8aAxiTM6Wumfz5XsaatSxlD3w4R1d/WEKUTydCdPGbl9K7QG/Ca3GnDV2sIKIpXRQcw==} + + lower-case@1.1.4: + resolution: {integrity: sha512-2Fgx1Ycm599x+WGpIYwJOvsjmXFzTSc34IwDWALRA/8AopUKAVPwfJ+h5+f85BCp0PWmmJcWzEpxOpoXycMpdA==} lower-case@2.0.2: resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} @@ -10031,32 +9018,30 @@ packages: lunr@2.3.9: resolution: {integrity: sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==} - luxon@3.3.0: - resolution: {integrity: sha512-An0UCfG/rSiqtAIiBPO0Y9/zAnHUZxAMiCpTd5h2smgsj7GGmcenvrvww2cqNA8/4A5ZrD1gJpHN2mIHZQF+Mg==} - engines: {node: '>=12'} - luxon@3.4.4: resolution: {integrity: sha512-zobTr7akeGHnv7eBOXcRgMeCP6+uyYsczwmeRCauvpvaAltgNyTbLH/+VaEAPUeWBT+1GuNmz4wC/6jtQzbbVA==} engines: {node: '>=12'} + luxon@3.5.0: + resolution: {integrity: sha512-rh+Zjr6DNfUYR3bPwJEnuwDdqMbxZW7LOQfUN4B54+Cl+0o5zaU9RJ6bcidfDtC1cWCZXQ+nvX8bf6bAji37QQ==} + engines: {node: '>=12'} + lz-string@1.5.0: resolution: {integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==} hasBin: true - magic-string@0.27.0: - resolution: {integrity: sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==} - engines: {node: '>=12'} + magic-string@0.30.10: + resolution: {integrity: sha512-iIRwTIf0QKV3UAnYK4PU8uiEc4SRh5jX0mwpIwETPpHdhVM4f53RSwS/vXvN1JhGX+Cs7B8qIq3d6AH49O5fAQ==} - magic-string@0.30.5: - resolution: {integrity: sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==} - engines: {node: '>=12'} + magic-string@0.30.11: + resolution: {integrity: sha512-+Wri9p0QHMy+545hKww7YAu5NyzF8iomPL/RQazugQ9+Ez4Ic3mERMd8ZTX5rfK944j+560ZJi8iAwgak1Ac7A==} magic-string@0.30.8: resolution: {integrity: sha512-ISQTe55T2ao7XtlAStud6qwYPZjE4GK1S/BeVPus4jrq6JuOnQ00YKQC581RWhR122W7msZV263KzVeLoqidyQ==} engines: {node: '>=12'} - magicast@0.3.3: - resolution: {integrity: sha512-ZbrP1Qxnpoes8sz47AM0z08U+jW6TyRgZzcWy3Ma3vDhJttwMwAFDMMQFobwdBxByBD46JYmxRzeF7w2+wJEuw==} + magicast@0.3.5: + resolution: {integrity: sha512-L0WhttDl+2BOsybvEOLK7fW3UA0OQ0IQ2d6Zl2x/a6vVRs3bAY0ECOSHHeL5jD+SbOpOCUEi0y1DgHEn9Qn1AQ==} mailparser@3.6.7: resolution: {integrity: sha512-/3x8HW70DNehw+3vdOPKdlLuxOHoWcGB5jfx5vJ5XUbY9/2jUJbrrhda5Si8Dj/3w08U0y5uGAkqs5+SPTPKoA==} @@ -10064,10 +9049,6 @@ packages: mailsplit@5.4.0: resolution: {integrity: sha512-wnYxX5D5qymGIPYLwnp6h8n1+6P6vz/MJn5AzGjZ8pwICWssL+CCQjWBIToOVHASmATot4ktvlLo6CyLfOXWYA==} - make-dir@2.1.0: - resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==} - engines: {node: '>=6'} - make-dir@3.1.0: resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} engines: {node: '>=8'} @@ -10097,8 +9078,8 @@ packages: map-stream@0.1.0: resolution: {integrity: sha512-CkYQrPYZfWnu/DAmVCpTSX/xHpKZ80eKh2lAkyA6AJTef6bW+6JpbQZN5rofum7da+SyN1bi5ctTm+lTfcCW3g==} - mappersmith@2.40.0: - resolution: {integrity: sha512-Es99fy0E52fxmhRvCyed7WVlSyuz6ME/wOsRpSmi0GcbMEZ6y5D2GL4+qNGPCc2P270J5yw8L2zg+K4BWACcHg==} + mappersmith@2.43.4: + resolution: {integrity: sha512-IyUw53aE3/SPH3eOkqSuD+Hcstpcl4dpxDDgZsPz65R2SlOikq0VHxo3kMPzUVvw7cCHunTmlpNXl5n/KzPcpg==} mark.js@8.11.1: resolution: {integrity: sha512-1I+1qpDt4idfgLQG+BNWmrqku+7/2bi5nLf4YwF8y8zXvmfiTBY3PV3ZibfrjBueCByROpuBjLLFCajqkgYoLQ==} @@ -10112,16 +9093,12 @@ packages: markdown-it-task-lists@2.1.1: resolution: {integrity: sha512-TxFAc76Jnhb2OUu+n3yz9RMu4CwGfaT788br6HhEDlvWfdeJcLUsxk1Hgw2yJio0OXsxv7pyIPmvECY7bMbluA==} - markdown-it@12.3.2: - resolution: {integrity: sha512-TchMembfxfNVpHkbtriWltGWc+m3xszaRD0CZup7GFFhzIgQqxIfn3eGj1yZpfuflzPvfkt611B2Q/Bsk1YnGg==} + markdown-it@13.0.2: + resolution: {integrity: sha512-FtwnEuuK+2yVU7goGn/MJ0WBZMM9ZPgU9spqlFs7/A/pDIUNSOQZhUgOqYCficIuR2QaFnrt8LHqBWsbTAoI5w==} hasBin: true - markdown-it@13.0.1: - resolution: {integrity: sha512-lTlxriVoy2criHP0JKRhO2VDG9c2ypWCsT237eDiLqi09rmbKoUetyGHq2uOIRoRS//kfoJckS0eUzzkDR+k2Q==} - hasBin: true - - markdown-to-jsx@7.3.2: - resolution: {integrity: sha512-B+28F5ucp83aQm+OxNrPkS8z0tMKaeHiy0lHJs3LqCyDQFtWuenaIrkaVTgAm1pf1AU85LXltva86hlaT17i8Q==} + markdown-to-jsx@7.5.0: + resolution: {integrity: sha512-RrBNcMHiFPcz/iqIj0n3wclzHXjwS7mzjBNWecKKVhNTIxQepIix6Il/wZCn2Cg5Y1ow2Qi84+eJrryFRWBEWw==} engines: {node: '>= 10'} peerDependencies: react: '>= 0.14.0' @@ -10134,12 +9111,6 @@ packages: md5@2.3.0: resolution: {integrity: sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==} - mdn-data@2.0.28: - resolution: {integrity: sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==} - - mdn-data@2.0.30: - resolution: {integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==} - mdurl@1.0.1: resolution: {integrity: sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==} @@ -10160,8 +9131,11 @@ packages: memory-pager@1.5.0: resolution: {integrity: sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==} - merge-descriptors@1.0.1: - resolution: {integrity: sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==} + mensch@0.3.4: + resolution: {integrity: sha512-IAeFvcOnV9V0Yk+bFhYR07O3yNina9ANIN5MoXBKYJ/RLYPurd2d0yw14MDhpr9/momp0WofT1bPUh3hkzdi/g==} + + merge-descriptors@1.0.3: + resolution: {integrity: sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==} merge-stream@2.0.0: resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} @@ -10174,8 +9148,8 @@ packages: resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==} engines: {node: '>= 0.6'} - micromatch@4.0.5: - resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} + micromatch@4.0.8: + resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} engines: {node: '>=8.6'} mime-db@1.52.0: @@ -10205,10 +9179,6 @@ packages: resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} engines: {node: '>=6'} - mimic-fn@4.0.0: - resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} - engines: {node: '>=12'} - mimic-response@3.1.0: resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==} engines: {node: '>=10'} @@ -10223,6 +9193,9 @@ packages: minimalistic-assert@1.0.1: resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==} + minimatch@3.0.8: + resolution: {integrity: sha512-6FsRAQsxQ61mw+qP1ZzbL9Bc78x2p5OqNgNpnoAFLTrX8n5Kxph0CsnhmKKNXTWjXqU5L0pGPR7hYk+XWZr60Q==} + minimatch@3.1.2: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} @@ -10242,8 +9215,8 @@ packages: resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} engines: {node: '>=16 || 14 >=14.17'} - minimatch@9.0.4: - resolution: {integrity: sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==} + minimatch@9.0.5: + resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} engines: {node: '>=16 || 14 >=14.17'} minimist@1.2.8: @@ -10281,8 +9254,8 @@ packages: resolution: {integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==} engines: {node: '>=8'} - minipass@7.0.2: - resolution: {integrity: sha512-eL79dXrE1q9dBbDCLg7xfn/vl7MS4F1gvJAgjJrQli/jbQWdUttuVawphqpffoIYfRdq78LHx6GP4bU/EQ2ATA==} + minipass@7.1.2: + resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} engines: {node: '>=16 || 14 >=14.17'} minizlib@2.1.2: @@ -10293,6 +9266,105 @@ packages: resolution: {integrity: sha512-MGZAq0Q3OuRYgZKvlB69z4gLN4G3PvgC4A2zhkCXCXrLD5wm2cCnwNB59xOBVA+srZ0zEes6u+VylcPIkB4SqA==} engines: {node: 6.* || 8.* || >= 10.*} + mjml-accordion@4.15.3: + resolution: {integrity: sha512-LPNVSj1LyUVYT9G1gWwSw3GSuDzDsQCu0tPB2uDsq4VesYNnU6v3iLCQidMiR6azmIt13OEozG700ygAUuA6Ng==} + + mjml-body@4.15.3: + resolution: {integrity: sha512-7pfUOVPtmb0wC+oUOn4xBsAw4eT5DyD6xqaxj/kssu6RrFXOXgJaVnDPAI9AzIvXJ/5as9QrqRGYAddehwWpHQ==} + + mjml-button@4.15.3: + resolution: {integrity: sha512-79qwn9AgdGjJR1vLnrcm2rq2AsAZkKC5JPwffTMG+Nja6zGYpTDZFZ56ekHWr/r1b5WxkukcPj2PdevUug8c+Q==} + + mjml-carousel@4.15.3: + resolution: {integrity: sha512-3ju6I4l7uUhPRrJfN3yK9AMsfHvrYbRkcJ1GRphFHzUj37B2J6qJOQUpzA547Y4aeh69TSb7HFVf1t12ejQxVw==} + + mjml-cli@4.15.3: + resolution: {integrity: sha512-+V2TDw3tXUVEptFvLSerz125C2ogYl8klIBRY1m5BHd4JvGVf3yhx8N3PngByCzA6PGcv/eydGQN+wy34SHf0Q==} + hasBin: true + + mjml-column@4.15.3: + resolution: {integrity: sha512-hYdEFdJGHPbZJSEysykrevEbB07yhJGSwfDZEYDSbhQQFjV2tXrEgYcFD5EneMaowjb55e3divSJxU4c5q4Qgw==} + + mjml-core@4.15.3: + resolution: {integrity: sha512-Dmwk+2cgSD9L9GmTbEUNd8QxkTZtW9P7FN/ROZW/fGZD6Hq6/4TB0zEspg2Ow9eYjZXO2ofOJ3PaQEEShKV0kQ==} + + mjml-divider@4.15.3: + resolution: {integrity: sha512-vh27LQ9FG/01y0b9ntfqm+GT5AjJnDSDY9hilss2ixIUh0FemvfGRfsGVeV5UBVPBKK7Ffhvfqc7Rciob9Spzw==} + + mjml-group@4.15.3: + resolution: {integrity: sha512-HSu/rKnGZVKFq3ciT46vi1EOy+9mkB0HewO4+P6dP/Y0UerWkN6S3UK11Cxsj0cAp0vFwkPDCdOeEzRdpFEkzA==} + + mjml-head-attributes@4.15.3: + resolution: {integrity: sha512-2ISo0r5ZKwkrvJgDou9xVPxxtXMaETe2AsAA02L89LnbB2KC0N5myNsHV0sEysTw9+CfCmgjAb0GAI5QGpxKkQ==} + + mjml-head-breakpoint@4.15.3: + resolution: {integrity: sha512-Eo56FA5C2v6ucmWQL/JBJ2z641pLOom4k0wP6CMZI2utfyiJ+e2Uuinj1KTrgDcEvW4EtU9HrfAqLK9UosLZlg==} + + mjml-head-font@4.15.3: + resolution: {integrity: sha512-CzV2aDPpiNIIgGPHNcBhgyedKY4SX3BJoTwOobSwZVIlEA6TAWB4Z9WwFUmQqZOgo1AkkiTHPZQvGcEhFFXH6g==} + + mjml-head-html-attributes@4.15.3: + resolution: {integrity: sha512-MDNDPMBOgXUZYdxhosyrA2kudiGO8aogT0/cODyi2Ed9o/1S7W+je11JUYskQbncqhWKGxNyaP4VWa+6+vUC/g==} + + mjml-head-preview@4.15.3: + resolution: {integrity: sha512-J2PxCefUVeFwsAExhrKo4lwxDevc5aKj888HBl/wN4EuWOoOg06iOGCxz4Omd8dqyFsrqvbBuPqRzQ+VycGmaA==} + + mjml-head-style@4.15.3: + resolution: {integrity: sha512-9J+JuH+mKrQU65CaJ4KZegACUgNIlYmWQYx3VOBR/tyz+8kDYX7xBhKJCjQ1I4wj2Tvga3bykd89Oc2kFZ5WOw==} + + mjml-head-title@4.15.3: + resolution: {integrity: sha512-IM59xRtsxID4DubQ0iLmoCGXguEe+9BFG4z6y2xQDrscIa4QY3KlfqgKGT69ojW+AVbXXJPEVqrAi4/eCsLItQ==} + + mjml-head@4.15.3: + resolution: {integrity: sha512-o3mRuuP/MB5fZycjD3KH/uXsnaPl7Oo8GtdbJTKtH1+O/3pz8GzGMkscTKa97l03DAG2EhGrzzLcU2A6eshwFw==} + + mjml-hero@4.15.3: + resolution: {integrity: sha512-9cLAPuc69yiuzNrMZIN58j+HMK1UWPaq2i3/Fg2ZpimfcGFKRcPGCbEVh0v+Pb6/J0+kf8yIO0leH20opu3AyQ==} + + mjml-image@4.15.3: + resolution: {integrity: sha512-g1OhSdofIytE9qaOGdTPmRIp7JsCtgO0zbsn1Fk6wQh2gEL55Z40j/VoghslWAWTgT2OHFdBKnMvWtN6U5+d2Q==} + + mjml-migrate@4.15.3: + resolution: {integrity: sha512-sr/+35RdxZroNQVegjpfRHJ5hda9XCgaS4mK2FGO+Mb1IUevKfeEPII3F/cHDpNwFeYH3kAgyqQ22ClhGLWNBA==} + hasBin: true + + mjml-navbar@4.15.3: + resolution: {integrity: sha512-VsKH/Jdlf8Yu3y7GpzQV5n7JMdpqvZvTSpF6UQXL0PWOm7k6+LX+sCZimOfpHJ+wCaaybpxokjWZ71mxOoCWoA==} + + mjml-parser-xml@4.15.3: + resolution: {integrity: sha512-Tz0UX8/JVYICLjT+U8J1f/TFxIYVYjzZHeh4/Oyta0pLpRLeZlxEd71f3u3kdnulCKMP4i37pFRDmyLXAlEuLw==} + + mjml-preset-core@4.15.3: + resolution: {integrity: sha512-1zZS8P4O0KweWUqNS655+oNnVMPQ1Rq1GaZq5S9JfwT1Vh/m516lSmiTW9oko6gGHytt5s6Yj6oOeu5Zm8FoLw==} + + mjml-raw@4.15.3: + resolution: {integrity: sha512-IGyHheOYyRchBLiAEgw3UM11kFNmBSMupu2BDdejC6ZiDhEAdG+tyERlsCwDPYtXanvFpGWULIu3XlsUPc+RZw==} + + mjml-section@4.15.3: + resolution: {integrity: sha512-JfVPRXH++Hd933gmQfG8JXXCBCR6fIzC3DwiYycvanL/aW1cEQ2EnebUfQkt5QzlYjOkJEH+JpccAsq3ln6FZQ==} + + mjml-social@4.15.3: + resolution: {integrity: sha512-7sD5FXrESOxpT9Z4Oh36bS6u/geuUrMP1aCg2sjyAwbPcF1aWa2k9OcatQfpRf6pJEhUZ18y6/WBBXmMVmSzXg==} + + mjml-spacer@4.15.3: + resolution: {integrity: sha512-3B7Qj+17EgDdAtZ3NAdMyOwLTX1jfmJuY7gjyhS2HtcZAmppW+cxqHUBwCKfvSRgTQiccmEvtNxaQK+tfyrZqA==} + + mjml-table@4.15.3: + resolution: {integrity: sha512-FLx7DcRKTdKdcOCbMyBaeudeHaHpwPveRrBm6WyQe3LXx6FfdmOh59i71/16LFQMgBOD3N4/UJkzxLzlTJzMqQ==} + + mjml-text@4.15.3: + resolution: {integrity: sha512-+C0hxCmw9kg0XzT6vhE5mFkK6y225nC8UEQcN94K0fBCjPKkM+HqZMwGX205fzdGRi+Bxa55b/VhrIVwdv+8vw==} + + mjml-validator@4.15.3: + resolution: {integrity: sha512-Xb72KdqRwjv/qM2rJpV22syyP2N3cRQ9VVDrN6u2FSzLq02buFNxmSPJ7CKhat3PrUNdVHU75KZwOf/tz4UEhA==} + + mjml-wrapper@4.15.3: + resolution: {integrity: sha512-ditsCijeHJrmBmObtJmQ18ddLxv5oPyMTdPU8Di8APOnD2zPk7Z4UAuJSl7HXB45oFiivr3MJf4koFzMUSZ6Gg==} + + mjml@4.15.3: + resolution: {integrity: sha512-bW2WpJxm6HS+S3Yu6tq1DUPFoTxU9sPviUSmnL7Ua+oVO3WA5ILFWqvujUlz+oeuM+HCwEyMiP5xvKNPENVjYA==} + hasBin: true + mkdirp-classic@0.5.3: resolution: {integrity: sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==} @@ -10310,40 +9382,16 @@ packages: engines: {node: '>=10'} hasBin: true - mkdist@1.4.0: - resolution: {integrity: sha512-LzzdzWDx6cWWPd8saIoO+kT5jnbijfeDaE6jZfmCYEi3YL2aJSyF23/tCFee/mDuh/ek1UQeSYdLeSa6oesdiw==} - hasBin: true - peerDependencies: - sass: ^1.69.5 - typescript: ^5.5.2 - peerDependenciesMeta: - sass: - optional: true - typescript: - optional: true - - ml-array-mean@1.1.6: - resolution: {integrity: sha512-MIdf7Zc8HznwIisyiJGRH9tRigg3Yf4FldW8DxKxpCCv/g5CafTw0RRu51nojVEOXuCQC7DRVVu5c7XXO/5joQ==} - - ml-array-sum@1.1.6: - resolution: {integrity: sha512-29mAh2GwH7ZmiRnup4UyibQZB9+ZLyMShvt4cH4eTK+cL2oEMIZFnSyB3SS8MlsTh6q/w/yh48KmqLxmovN4Dw==} - - ml-distance-euclidean@2.0.0: - resolution: {integrity: sha512-yC9/2o8QF0A3m/0IXqCTXCzz2pNEzvmcE/9HFKOZGnTjatvBbsn4lWYJkxENkA4Ug2fnYl7PXQxnPi21sgMy/Q==} - - ml-distance@4.0.1: - resolution: {integrity: sha512-feZ5ziXs01zhyFUUUeZV5hwc0f5JW0Sh0ckU1koZe/wdVkJdGxcP06KNQuF0WBTj8FttQUzcvQcpcrOp/XrlEw==} - - ml-tree-similarity@1.0.0: - resolution: {integrity: sha512-XJUyYqjSuUQkNQHMscr6tcjldsOoAekxADTplt40QKfwW6nd++1wHWV9AArl0Zvw/TIHgNaZZNvr8QGvE8wLRg==} - mlly@1.4.2: resolution: {integrity: sha512-i/Ykufi2t1EZ6NaPLdfnZk2AX8cs0d+mTzVKuPfqPKPatxLApaBoxJQ9x1/uckXtrS/U5oisPMDkNs0yQTaBRg==} - mobx-react-lite@3.4.3: - resolution: {integrity: sha512-NkJREyFTSUXR772Qaai51BnE1voWx56LOL80xG7qkZr6vo8vEaLF3sz1JNUVh+rxmUzxYaqOhfuxTfqUh0FXUg==} + mlly@1.7.1: + resolution: {integrity: sha512-rrVRZRELyQzrIUAVMHxP97kv+G786pHmOKzuFII8zDYahFBS7qnHh2AlYSl1GAHhaMPCz6/oHjVMcfFYgFYHgA==} + + mobx-react-lite@4.0.7: + resolution: {integrity: sha512-RjwdseshK9Mg8On5tyJZHtGD+J78ZnCnRaxeQDSiciKVQDUbfZcXhmld0VMxAwvcTnPEHZySGGewm467Fcpreg==} peerDependencies: - mobx: ^6.1.0 + mobx: ^6.9.0 react: ^16.8.0 || ^17 || ^18 react-dom: '*' react-native: '*' @@ -10353,10 +9401,10 @@ packages: react-native: optional: true - mobx-react@7.6.0: - resolution: {integrity: sha512-+HQUNuh7AoQ9ZnU6c4rvbiVVl+wEkb9WqYsVDzGLng+Dqj1XntHu79PvEWKtSMoMj67vFp/ZPXcElosuJO8ckA==} + mobx-react@9.1.1: + resolution: {integrity: sha512-gVV7AdSrAAxqXOJ2bAbGa5TkPqvITSzaPiiEkzpW4rRsMhSec7C2NBCJYILADHKp2tzOAIETGRsIY0UaCV5aEw==} peerDependencies: - mobx: ^6.1.0 + mobx: ^6.9.0 react: ^16.8.0 || ^17 || ^18 react-dom: '*' react-native: '*' @@ -10405,6 +9453,9 @@ packages: socks: optional: true + moo@0.5.2: + resolution: {integrity: sha512-iSAJLHYKnX41mKcJKjqvnAN9sf0LMDTXDEvFv+ffuRR9a1MIuXLjMNL6EsnDHSkKLTWNqQQ5uo61P4EbU4NU+Q==} + mqtt-packet@9.0.0: resolution: {integrity: sha512-8v+HkX+fwbodsWAZIZTI074XIoxVBOmPeggQuDFCGg1SqNcC+uoRMWu7J6QlJPqIUIJXmjNYYHxBBLr1Y/Df4w==} @@ -10413,10 +9464,6 @@ packages: engines: {node: '>=16.0.0'} hasBin: true - mri@1.2.0: - resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} - engines: {node: '>=4'} - ms@2.0.0: resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} @@ -10438,9 +9485,6 @@ packages: engines: {node: '>=14'} hasBin: true - muggle-string@0.3.1: - resolution: {integrity: sha512-ckmWDJjphvd/FvZawgygcUeQCxzvohjFO5RxTjj4eq8kw359gFF3E1brjfI+viLMxss5JrHTDRHZvu2/tuy0Qg==} - muggle-string@0.4.1: resolution: {integrity: sha512-VNTrAak/KhO2i8dqqnqnAHOa3cYBwXEZe9h+D5h/1ZqFSTEFHdM65lR7RoIqq3tBBYavsOXV84NoHXZ0AkPyqQ==} @@ -10459,8 +9503,8 @@ packages: resolution: {integrity: sha512-+MrqnJRtxdF+xngFfUUkIMQrUUL0KsxbADUkn23Z/4ibGg192Q+z+CQyiYwvWTsYjJygmMR8+w3ZDa98Zh6ESg==} engines: {node: '>=12.0.0'} - mysql2@3.10.0: - resolution: {integrity: sha512-qx0mfWYt1DpTPkw8mAcHW/OwqqyNqBLBHvY5IjN8+icIYTjt6znrgYJ+gxqNNRpVknb5Wc/gcCM4XjbCR0j5tw==} + mysql2@3.11.0: + resolution: {integrity: sha512-J9phbsXGvTOcRVPR95YedzVSxJecpW5A5+cQ57rhHIFXteTP10HCs+VBjS7DHIKfEaI1zQ5tlVrquCd64A6YvA==} engines: {node: '>= 8.0'} mz@2.7.0: @@ -10470,8 +9514,8 @@ packages: resolution: {integrity: sha512-eLoBxg6wE/rZkJPhU/xRX1WTpkFEwDJEN96oxFrTsqBdbT5ec295Q+CoHrL9IT0DipqKhmGcaZmwOt8OON5x1w==} engines: {node: '>=12.0.0'} - nan@2.17.0: - resolution: {integrity: sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ==} + nan@2.20.0: + resolution: {integrity: sha512-bk3gXBZDGILuuo/6sKtr0DQmSThYHLtNCdSdXk9YkxD/jK6X2vmCyyXBBxyqZ4XcnzTyYEAThfX3DCEnLf6igw==} nanoclone@0.2.1: resolution: {integrity: sha512-wynEP02LmIbLpcYw8uBKpcfF6dmg2vcpKqxeH5UcoKEYdExslsdUA4ugFauuaeYdTB76ez6gJW8XAZ6CgkXYxA==} @@ -10495,6 +9539,10 @@ packages: natural-compare@1.4.0: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + nearley@2.20.1: + resolution: {integrity: sha512-+Mc8UaAebFzgV+KpI5n7DasuuQCHA89dmwm7JXw3TV43ukfNQ9DnBH3Mdb2g/I4Fdxc26pwimBWvjIw0UAILSQ==} + hasBin: true + negotiator@0.6.3: resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} engines: {node: '>= 0.6'} @@ -10502,6 +9550,9 @@ packages: neo-async@2.6.2: resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} + no-case@2.3.2: + resolution: {integrity: sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==} + no-case@3.0.4: resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==} @@ -10523,10 +9574,6 @@ packages: node-cleanup@2.1.2: resolution: {integrity: sha512-qN8v/s2PAJwGUtr1/hYTpNKlD6Y9rc4p8KSmJXyGdYGZsDGKXrGThikLFP9OCHFeLeEpQzPwiAtdIvBLqm//Hw==} - node-dir@0.1.17: - resolution: {integrity: sha512-tmPX422rYgofd4epzrNoOXiE8XFZYOcCq1vD7MAXCDO+O+zndlA2ztdKKMa+EeuBG5tHETpr4ml4RGgpqDCCAg==} - engines: {node: '>= 0.10.5'} - node-domexception@1.0.0: resolution: {integrity: sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==} engines: {node: '>=10.5.0'} @@ -10538,9 +9585,6 @@ packages: resolution: {integrity: sha512-ofRW94Ab0T4AOh5Fk8t0h8OBWrmjb0SSB20xh1H8YnPV9EJ+f5AMoYSUQ2zgJ4Iq2HAK0I2l5/Nequ8YzFS3Hg==} engines: {node: 4.x || >=6.0.0} - node-fetch-native@1.0.1: - resolution: {integrity: sha512-VzW+TAk2wE4X9maiKMlT+GsPU4OMmR1U9CrHSmd3DFLn2IcZ9VJ6M6BBugGfYUnPCLSYxXdZy17M0BEJyhUTwg==} - node-fetch@2.6.8: resolution: {integrity: sha512-RZ6dBYuj8dRSfxpUSu+NsdF1dpPpluJxwOp+6IoDp/sH2QNDSvurYsAa+F1WxY2RjA1iP93xhcsUoYbF2XBqVg==} engines: {node: 4.x || >=6.0.0} @@ -10594,8 +9638,8 @@ packages: node-rsa@1.1.1: resolution: {integrity: sha512-Jd4cvbJMryN21r5HgxQOpMEqv+ooke/korixNNK3mGqfGJmy0M77WDDzo/05969+OkMy3XW1UuZsSmW9KQm7Fw==} - node-ssh@12.0.5: - resolution: {integrity: sha512-uN2GTGdBRUUKkZmcNBr9OM+xKL6zq74emnkSyb1TshBdVWegj3boue6QallQeqZzo7YGVheP5gAovUL+8hZSig==} + node-ssh@13.2.0: + resolution: {integrity: sha512-7vsKR2Bbs66th6IWCy/7SN4MSwlVt+G6QrHB631BjRUM8/LmvDugtYhi0uAmgvHS/+PVurfNBOmELf30rm0MZg==} engines: {node: '>= 10'} nodemailer@6.9.9: @@ -10639,13 +9683,10 @@ packages: resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} engines: {node: '>=8'} - npm-run-path@5.1.0: - resolution: {integrity: sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - npmlog@6.0.2: resolution: {integrity: sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + deprecated: This package is no longer supported. nth-check@2.1.1: resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} @@ -10653,10 +9694,6 @@ packages: nub@0.0.0: resolution: {integrity: sha512-dK0Ss9C34R/vV0FfYJXuqDAqHlaW9fvWVufq9MmGF2umCuDbd5GRfRD9fpi/LiM0l4ZXf8IBB+RYmZExqCrf0w==} - num-sort@2.1.0: - resolution: {integrity: sha512-1MQz1Ed8z2yckoBeSfkQHHO9K1yDRxxtotKSJ9yvcTUUxSvfvzEq5GwBrjjHEpMlq/k5gvXdmJ1SbYxWtpNoVg==} - engines: {node: '>=8'} - number-allocator@1.0.14: resolution: {integrity: sha512-OrL44UTVAvkKdOdRQZIJpLkAdjXGTRda052sN4sO77bKEzYYqWKMBjQvrJFzqygI99gL6Z4u2xctPW1tB8ErvA==} @@ -10665,14 +9702,11 @@ packages: engines: {node: '>= 6.9.0'} hasBin: true peerDependencies: - chokidar: 3.5.2 + chokidar: ^4.0.1 peerDependenciesMeta: chokidar: optional: true - nwsapi@2.2.2: - resolution: {integrity: sha512-90yv+6538zuvUMnN+zCr8LuV6bPFdq50304114vJYJ8RDyK8D5O9Phpbd6SZWgI7PwzmmfN1upeOJlvybDSgCw==} - nwsapi@2.2.7: resolution: {integrity: sha512-ub5E4+FBPKwAZx0UwIQOjYWGHTEq5sPqHQNRN8Z9e4A7u3Tj1weLJsL59yH9vmvqEtBHaOmT6cYQKIZOxp35FQ==} @@ -10703,22 +9737,23 @@ packages: resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} engines: {node: '>= 6'} - object-inspect@1.12.3: - resolution: {integrity: sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==} - object-inspect@1.13.1: resolution: {integrity: sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==} + object-inspect@1.13.2: + resolution: {integrity: sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==} + engines: {node: '>= 0.4'} + object-is@1.1.5: resolution: {integrity: sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==} engines: {node: '>= 0.4'} - object-keys@1.1.1: - resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} + object-is@1.1.6: + resolution: {integrity: sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==} engines: {node: '>= 0.4'} - object.assign@4.1.4: - resolution: {integrity: sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==} + object-keys@1.1.1: + resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} engines: {node: '>= 0.4'} object.assign@4.1.5: @@ -10729,6 +9764,10 @@ packages: resolution: {integrity: sha512-TyxmjUoZggd4OrrU1W66FMDG6CuqJxsFvymeyXI51+vQLN67zYfZseptRge703kKQdo4uccgAKebXFcRCzk4+g==} engines: {node: '>= 0.4'} + object.entries@1.1.8: + resolution: {integrity: sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ==} + engines: {node: '>= 0.4'} + object.fromentries@2.0.7: resolution: {integrity: sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA==} engines: {node: '>= 0.4'} @@ -10740,6 +9779,16 @@ packages: resolution: {integrity: sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==} engines: {node: '>= 0.4'} + object.values@1.2.0: + resolution: {integrity: sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==} + engines: {node: '>= 0.4'} + + obuf@1.1.2: + resolution: {integrity: sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==} + + ollama@0.5.6: + resolution: {integrity: sha512-4BySAMt96+OCt4emL6DE78UBCGqC7GvteM9LRCd6WwJyefn0x9w2BrcUcLm9nJ9bYpRsmkhf0Au18Q5MhsA14w==} + on-finished@2.4.1: resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} engines: {node: '>= 0.8'} @@ -10758,10 +9807,6 @@ packages: resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} engines: {node: '>=6'} - onetime@6.0.0: - resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} - engines: {node: '>=12'} - ono@7.1.3: resolution: {integrity: sha512-9jnfVriq7uJM4o5ganUY54ntUm+5EK21EGaQ5NWnkWg3zz5ywbbonlBguRcnmF1/HDiIe3zxNxXcO1YPBmPcQQ==} @@ -10773,22 +9818,21 @@ packages: resolution: {integrity: sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==} engines: {node: '>=12'} - openai@4.47.1: - resolution: {integrity: sha512-WWSxhC/69ZhYWxH/OBsLEirIjUcfpQ5+ihkXKp06hmeYXgBBIUCa9IptMzYx6NdkiOCsSGYCnTIsxaic3AjRCQ==} + openai@4.63.0: + resolution: {integrity: sha512-Y9V4KODbmrOpqiOmCDVnPfMxMqKLOx8Hwcdn/r8mePq4yv7FSXGnxCs8/jZKO7zCB/IVPWihpJXwJNAIOEiZ2g==} hasBin: true + peerDependencies: + zod: ^3.23.8 + peerDependenciesMeta: + zod: + optional: true - openapi-sampler@1.4.0: - resolution: {integrity: sha512-3FKJQCHAMG9T7RsRy9u5Ft4ERPq1QQmn77C8T3OSofYL9uur59AqychvQ0YQKijrqRwIkAbzkh+nQnAE3gjMVA==} - - openapi-types@10.0.0: - resolution: {integrity: sha512-Y8xOCT2eiKGYDzMW9R4x5cmfc3vGaaI4EL2pwhDmodWw1HlK18YcZ4uJxc7Rdp7/gGzAygzH9SXr6GKYIXbRcQ==} + openapi-sampler@1.5.1: + resolution: {integrity: sha512-tIWIrZUKNAsbqf3bd9U1oH6JEXo8LNYuDlXw26By67EygpjT+ArFnsxxyTMjFWRfbqo5ozkvgSQDK69Gd8CddA==} openapi-types@12.1.3: resolution: {integrity: sha512-N4YtSYJqghVu4iek2ZUvcN/0aqH1kRDuNqzcycDxhOUpg7GdvLa2F3DgS6yBNhInhv2r/6I0Flkn7CqL8+nIcw==} - openurl@1.1.1: - resolution: {integrity: sha512-d/gTkTb1i1GKz5k3XE3XFV/PxQ1k45zDqGP2OA7YhgsaLoqm6qRvARAZOFer1fcXritWlGBRCu/UgeS4HAnXAA==} - option@0.2.4: resolution: {integrity: sha512-pkEqbDyl8ou5cpq+VsnQbe/WlEy5qS7xPzMS1U55OCG9KPvwFD46zDbxQIj3egJSFc3D+XhYOPUzz49zQAVy7A==} @@ -10800,10 +9844,6 @@ packages: resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==} engines: {node: '>= 0.8.0'} - ora@5.4.1: - resolution: {integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==} - engines: {node: '>=10'} - os-tmpdir@1.0.2: resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} engines: {node: '>=0.10.0'} @@ -10837,14 +9877,6 @@ packages: resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} engines: {node: '>=10'} - p-limit@5.0.0: - resolution: {integrity: sha512-/Eaoq+QyLSiXQ4lyYV23f14mZRQcXnxfHrN0vCai+ak9G0pp9iEQukIIZq5NccEvwRB8PUnZT0KsOoDCINS1qQ==} - engines: {node: '>=18'} - - p-locate@3.0.0: - resolution: {integrity: sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==} - engines: {node: '>=6'} - p-locate@4.1.0: resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} engines: {node: '>=8'} @@ -10873,15 +9905,15 @@ packages: resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} engines: {node: '>=6'} - packet-reader@1.0.0: - resolution: {integrity: sha512-HAKu/fG3HpHFO0AA8WE8q2g+gBJaZ9MG7fcKk+IJPLTGAD6Psw4443l+9DGRbOIh3/aXr7Phy0TjilYivJo5XQ==} - - pako@0.2.9: - resolution: {integrity: sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA==} + package-json-from-dist@1.0.0: + resolution: {integrity: sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==} pako@1.0.11: resolution: {integrity: sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==} + param-case@2.1.1: + resolution: {integrity: sha512-eQE845L6ot89sk2N8liD8HAuH4ca6Vvr7VWAWwt7+kvvG5aBcPmmphQ68JsEG2qa9n1TykS2DLeMt363AAH8/w==} + param-case@3.0.4: resolution: {integrity: sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==} @@ -10889,6 +9921,9 @@ packages: resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} engines: {node: '>=6'} + parse-diff@0.11.1: + resolution: {integrity: sha512-Oq4j8LAOPOcssanQkIjxosjATBIEJhCxMCxPhMu+Ci4wdNmAEdx0O+a7gzbR2PyKXgKPvRLIN5g224+dJAsKHA==} + parse-json@5.2.0: resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} engines: {node: '>=8'} @@ -10906,6 +9941,9 @@ packages: parse5-htmlparser2-tree-adapter@7.0.0: resolution: {integrity: sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g==} + parse5-parser-stream@7.1.2: + resolution: {integrity: sha512-JyeQc9iwFLn5TbvvqACIF/VXG6abODeB3Fwmv/TGdLk2LfbWkaySGY72at4+Ty7EkPZj854u4CrICqNk2qIbow==} + parse5@6.0.1: resolution: {integrity: sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==} @@ -10928,10 +9966,6 @@ packages: path-case@3.0.4: resolution: {integrity: sha512-qO4qCFjXqVTrcbPt/hQfhTQ+VhFsqNKOPtytgNKkKxSoEp3XPUQ8ObFuePylOIok5gjn69ry8XiULxCwot3Wfg==} - path-exists@3.0.0: - resolution: {integrity: sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==} - engines: {node: '>=4'} - path-exists@4.0.0: resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} engines: {node: '>=8'} @@ -10944,36 +9978,30 @@ packages: resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} engines: {node: '>=8'} - path-key@4.0.0: - resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} - engines: {node: '>=12'} - path-parse@1.0.7: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} - path-scurry@1.10.1: - resolution: {integrity: sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==} - engines: {node: '>=16 || 14 >=14.17'} + path-scurry@1.11.1: + resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} + engines: {node: '>=16 || 14 >=14.18'} - path-to-regexp@0.1.7: - resolution: {integrity: sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==} + path-to-regexp@0.1.10: + resolution: {integrity: sha512-7lf7qcQidTku0Gu3YDPc8DJ1q7OOucfa/BSsIwjuh56VU7katFvuM8hULfkwB3Fns/rsVF7PwPKVw1sl5KQS9w==} - path-to-regexp@6.2.1: - resolution: {integrity: sha512-JLyh7xT1kizaEvcaXOQwOc2/Yhw6KZOvPf1S8401UyLk86CU79LN3vl7ztXGm/pZ+YjoyAJ4rxmHwbkBXJX+yw==} + path-to-regexp@8.2.0: + resolution: {integrity: sha512-TdrF7fW9Rphjq4RjrW0Kp2AW0Ahwu9sRGTkS6bvDi0SCwZlEZYmcfDbEsTz8RVk0EHIS/Vd1bv3JhG+1xZuAyQ==} + engines: {node: '>=16'} path-type@4.0.0: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} engines: {node: '>=8'} - path-type@5.0.0: - resolution: {integrity: sha512-5HviZNaZcfqP95rwpv+1HDgUamezbqdSYTyzjTvwtJSnIH+3vnbmWsItli8OFEndS984VT55M3jduxZbX351gg==} - engines: {node: '>=12'} + pathe@1.1.2: + resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==} - pathe@1.1.1: - resolution: {integrity: sha512-d+RQGp0MAYTIaDBIMmOfMwz3E+LOZnxx1HZd5R18mmCZY0QBlK0LDZfPc8FW8Ed2DlvsuE6PRjroDY+wg4+j/Q==} - - pathval@1.1.1: - resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==} + pathval@2.0.0: + resolution: {integrity: sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==} + engines: {node: '>= 14.16'} pause-stream@0.0.11: resolution: {integrity: sha512-e3FBlXLmN/D1S+zHzanP4E/4Z60oFAa3O051qt1pxa7DEJWKAyil6upYVXCWadEnuoqa4Pkc9oUx9zsxYeRv8A==} @@ -10997,9 +10025,6 @@ packages: resolution: {integrity: sha512-ZI3LnwUv5nOGbQzD9c2iDG6toheuXSZP5esSHBjopsXH4dg19soufvpUGA3uohi5anFtGb2lhAVdHzH6R/Evvg==} engines: {node: '>=8'} - peek-stream@1.1.3: - resolution: {integrity: sha512-FhJ+YbOSBb9/rIl2ZeE/QHEsWn7PqNYt8ARAY3kIgNGOk13g9FGyIY6JIl/xB/3TFRVoTv5as0l11weORrTekA==} - pend@1.2.0: resolution: {integrity: sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==} @@ -11012,44 +10037,43 @@ packages: pg-cloudflare@1.1.1: resolution: {integrity: sha512-xWPagP/4B6BgFO+EKz3JONXv3YDgvkbVrGw2mTo3D6tVDQRh1e7cqVGvyR3BE+eQgAvx1XhW/iEASj4/jCWl3Q==} - pg-connection-string@2.6.2: - resolution: {integrity: sha512-ch6OwaeaPYcova4kKZ15sbJ2hKb/VP48ZD2gE7i1J+L4MspCtBMAx8nMgz7bksc7IojCIIWuEhHibSMFH8m8oA==} + pg-connection-string@2.6.4: + resolution: {integrity: sha512-v+Z7W/0EO707aNMaAEfiGnGL9sxxumwLl2fJvCQtMn9Fxsg+lPpPkdcyBSv/KFgpGdYkMfn+EI1Or2EHjpgLCA==} pg-int8@1.0.1: resolution: {integrity: sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==} engines: {node: '>=4.0.0'} - pg-minify@1.6.2: - resolution: {integrity: sha512-1KdmFGGTP6jplJoI8MfvRlfvMiyBivMRP7/ffh4a11RUFJ7kC2J0ZHlipoKiH/1hz+DVgceon9U2qbaHpPeyPg==} - engines: {node: '>=8.0'} + pg-minify@1.6.5: + resolution: {integrity: sha512-u0UE8veaCnMfJmoklqneeBBopOAPG3/6DHqGVHYAhz8DkJXh9dnjPlz25fRxn4e+6XVzdOp7kau63Rp52fZ3WQ==} + engines: {node: '>=14.0.0'} - pg-pool@3.6.1: - resolution: {integrity: sha512-jizsIzhkIitxCGfPRzJn1ZdcosIt3pz9Sh3V01fm1vZnbnCMgmGl5wvGGdNN2EL9Rmb0EcFoCkixH4Pu+sP9Og==} + pg-numeric@1.0.2: + resolution: {integrity: sha512-BM/Thnrw5jm2kKLE5uJkXqqExRUY/toLHda65XgFTBTFYZyopbKjBe29Ii3RbkvlsMoFwD+tHeGaCjjv0gHlyw==} + engines: {node: '>=4'} + + pg-pool@3.6.2: + resolution: {integrity: sha512-Htjbg8BlwXqSBQ9V8Vjtc+vzf/6fVUuak/3/XXKA9oxZprwW3IMDQTGHP+KDmVL7rtd+R1QjbnCFPuTHm3G4hg==} peerDependencies: pg: '>=8.0' - pg-promise@10.15.4: - resolution: {integrity: sha512-BKlHCMCdNUmF6gagVbehRWSEiVcZzPVltEx14OJExR9Iz9/1R6KETDWLLGv2l6yRqYFnEZZy1VDjRhArzeIGrw==} - engines: {node: '>=12.0'} + pg-promise@11.9.1: + resolution: {integrity: sha512-qvMmyDvWd64X0a25hCuWV40GLMbgeYf4z7ZmzxQqGHtUIlzMtxcMtaBHAMr7XVOL62wFv2ZVKW5pFruD/4ZAOg==} + engines: {node: '>=14.0'} - pg-protocol@1.6.0: - resolution: {integrity: sha512-M+PDm637OY5WM307051+bsDia5Xej6d9IR4GwJse1qA1DIhiKlksvrneZOYQq42OM+spubpcNYEo2FcKQrDk+Q==} + pg-protocol@1.6.1: + resolution: {integrity: sha512-jPIlvgoD63hrEuihvIg+tJhoGjUsLPn6poJY9N5CnlPd91c2T18T/9zBtLxZSb1EhYxBRoZJtzScCaWlYLtktg==} pg-types@2.2.0: resolution: {integrity: sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==} engines: {node: '>=4'} - pg@8.11.3: - resolution: {integrity: sha512-+9iuvG8QfaaUrrph+kpF24cXkH1YOOUeArRNYIxq1viYHZagBxrTno7cecY1Fa44tJeZvaoG+Djpkc3JwehN5g==} - engines: {node: '>= 8.0.0'} - peerDependencies: - pg-native: '>=3.0.1' - peerDependenciesMeta: - pg-native: - optional: true + pg-types@4.0.2: + resolution: {integrity: sha512-cRL3JpS3lKMGsKaWndugWQoLOCoP+Cic8oseVcbr0qhPzYD5DWXK+RZ9LY9wxRf7RQia4SCwQlXk0q6FCPrVng==} + engines: {node: '>=10'} - pg@8.8.0: - resolution: {integrity: sha512-UXYN0ziKj+AeNNP7VDMwrehpACThH7LUl/p8TDFpEUuSejCUIwGSfxpHsPvtM6/WXFy6SU4E5RG4IJV/TZAGjw==} + pg@8.12.0: + resolution: {integrity: sha512-A+LHUSnwnxrnL/tZ+OLfqR1SxLN3c/pgDztZ47Rpbsd4jUytsTtwQo/TLPRzPJMp/1pbhYVhH9cuSZLAajNfjQ==} engines: {node: '>= 8.0.0'} peerDependencies: pg-native: '>=3.0.1' @@ -11060,8 +10084,11 @@ packages: pgpass@1.0.5: resolution: {integrity: sha512-FdW9r/jQZhSeohs1Z3sI1yxFQNFvMcnmfuj4WBMUTxOrAyLMaTcE1aAMBiTlbMNaXvBCQuVi0R7hd8udDSP7ug==} - picocolors@1.0.0: - resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} + picocolors@1.0.1: + resolution: {integrity: sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==} + + picocolors@1.1.0: + resolution: {integrity: sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==} picomatch@2.3.1: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} @@ -11071,15 +10098,11 @@ packages: resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} engines: {node: '>=0.10.0'} - pify@4.0.1: - resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} - engines: {node: '>=6'} - - pinia@2.1.6: - resolution: {integrity: sha512-bIU6QuE5qZviMmct5XwCesXelb5VavdOWKWaB17ggk++NUwQWWbP5YnsONTk3b752QkW9sACiR81rorpeOMSvQ==} + pinia@2.2.4: + resolution: {integrity: sha512-K7ZhpMY9iJ9ShTC0cR2+PnxdQRuwVIsXDO/WIEV/RnMC/vmSoKDTKW/exNQYPI+4ij10UjXqdNiEHwn47McANQ==} peerDependencies: '@vue/composition-api': ^1.4.0 - typescript: ^5.5.2 + typescript: ^5.6.2 vue: ^2.6.14 || ^3.3.0 peerDependenciesMeta: '@vue/composition-api': @@ -11094,21 +10117,16 @@ packages: pkce-challenge@3.0.0: resolution: {integrity: sha512-sQ8sJJJuLhA5pFnoxayMCrFnBMNj7DDpa+TWxOXl4B24oXHlVSADi/3Bowm66QuzWkBuF6DhmaelCdlC2JKwsg==} - pkg-dir@3.0.0: - resolution: {integrity: sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==} - engines: {node: '>=6'} - pkg-dir@4.2.0: resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} engines: {node: '>=8'} - pkg-dir@5.0.0: - resolution: {integrity: sha512-NPE8TDbzl/3YQYY7CSS228s3g2ollTFnc+Qi3tqmqJp9Vg2ovUpixcJEo2HJScN2Ez+kEaal6y70c0ehqJBJeA==} - engines: {node: '>=10'} - pkg-types@1.0.3: resolution: {integrity: sha512-nN7pYi0AQqJnoLPC9eHFQ8AcyaixBUOwvqc5TDnIKCMEE6I0y8P7OKA7fPexsXGCGxQDl/cmrLAp26LhcwxZ4A==} + pkg-types@1.1.3: + resolution: {integrity: sha512-+JrgthZG6m3ckicaOB74TwQ+tBWsFl3qVQg7mN8ulwSOElJ7gBhKzj2VkCPnZ4NlF6kEquYU+RIYNVAvzd54UA==} + plimit-lit@1.4.1: resolution: {integrity: sha512-bK14ePAod0XWhXwjT6XvYfjcQ9PbCUkZXnDCAKRMZTJCaDIV9VFya1S/I+3WSbpdR8uBhCDh8TS4lQ/JQvhNFA==} @@ -11124,48 +10142,6 @@ packages: resolution: {integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==} engines: {node: '>= 0.4'} - postcss-calc@9.0.1: - resolution: {integrity: sha512-TipgjGyzP5QzEhsOZUaIkeO5mKeMFpebWzRogWG/ysonUlnHcq5aJe0jOjpfzUU8PeSaBQnrE8ehR0QA5vs8PQ==} - engines: {node: ^14 || ^16 || >=18.0} - peerDependencies: - postcss: ^8.2.2 - - postcss-colormin@6.0.1: - resolution: {integrity: sha512-Tb9aR2wCJCzKuNjIeMzVNd0nXjQy25HDgFmmaRsHnP0eP/k8uQWE4S8voX5S2coO5CeKrp+USFs1Ayv9Tpxx6w==} - engines: {node: ^14 || ^16 || >=18.0} - peerDependencies: - postcss: ^8.4.31 - - postcss-convert-values@6.0.1: - resolution: {integrity: sha512-zTd4Vh0HxGkhg5aHtfCogcRHzGkvblfdWlQ53lIh1cJhYcGyIxh2hgtKoVh40AMktRERet+JKdB04nNG19kjmA==} - engines: {node: ^14 || ^16 || >=18.0} - peerDependencies: - postcss: ^8.4.31 - - postcss-discard-comments@6.0.1: - resolution: {integrity: sha512-f1KYNPtqYLUeZGCHQPKzzFtsHaRuECe6jLakf/RjSRqvF5XHLZnM2+fXLhb8Qh/HBFHs3M4cSLb1k3B899RYIg==} - engines: {node: ^14 || ^16 || >=18.0} - peerDependencies: - postcss: ^8.4.31 - - postcss-discard-duplicates@6.0.1: - resolution: {integrity: sha512-1hvUs76HLYR8zkScbwyJ8oJEugfPV+WchpnA+26fpJ7Smzs51CzGBHC32RS03psuX/2l0l0UKh2StzNxOrKCYg==} - engines: {node: ^14 || ^16 || >=18.0} - peerDependencies: - postcss: ^8.4.31 - - postcss-discard-empty@6.0.1: - resolution: {integrity: sha512-yitcmKwmVWtNsrrRqGJ7/C0YRy53i0mjexBDQ9zYxDwTWVBgbU4+C9jIZLmQlTDT9zhml+u0OMFJh8+31krmOg==} - engines: {node: ^14 || ^16 || >=18.0} - peerDependencies: - postcss: ^8.4.31 - - postcss-discard-overridden@6.0.1: - resolution: {integrity: sha512-qs0ehZMMZpSESbRkw1+inkf51kak6OOzNRaoLd/U7Fatp0aN2HQ1rxGOrJvYcRAN9VpX8kUF13R2ofn8OlvFVA==} - engines: {node: ^14 || ^16 || >=18.0} - peerDependencies: - postcss: ^8.4.31 - postcss-import@15.1.0: resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==} engines: {node: '>=14.0.0'} @@ -11190,136 +10166,16 @@ packages: ts-node: optional: true - postcss-merge-longhand@6.0.1: - resolution: {integrity: sha512-vmr/HZQzaPXc45FRvSctqFTF05UaDnTn5ABX+UtQPJznDWT/QaFbVc/pJ5C2YPxx2J2XcfmWowlKwtCDwiQ5hA==} - engines: {node: ^14 || ^16 || >=18.0} - peerDependencies: - postcss: ^8.4.31 - - postcss-merge-rules@6.0.2: - resolution: {integrity: sha512-6lm8bl0UfriSfxI+F/cezrebqqP8w702UC6SjZlUlBYwuRVNbmgcJuQU7yePIvD4MNT53r/acQCUAyulrpgmeQ==} - engines: {node: ^14 || ^16 || >=18.0} - peerDependencies: - postcss: ^8.4.31 - - postcss-minify-font-values@6.0.1: - resolution: {integrity: sha512-tIwmF1zUPoN6xOtA/2FgVk1ZKrLcCvE0dpZLtzyyte0j9zUeB8RTbCqrHZGjJlxOvNWKMYtunLrrl7HPOiR46w==} - engines: {node: ^14 || ^16 || >=18.0} - peerDependencies: - postcss: ^8.4.31 - - postcss-minify-gradients@6.0.1: - resolution: {integrity: sha512-M1RJWVjd6IOLPl1hYiOd5HQHgpp6cvJVLrieQYS9y07Yo8itAr6jaekzJphaJFR0tcg4kRewCk3kna9uHBxn/w==} - engines: {node: ^14 || ^16 || >=18.0} - peerDependencies: - postcss: ^8.4.31 - - postcss-minify-params@6.0.1: - resolution: {integrity: sha512-eFvGWArqh4khPIgPDu6SZNcaLctx97nO7c59OXnRtGntAp5/VS4gjMhhW9qUFsK6mQ27pEZGt2kR+mPizI+Z9g==} - engines: {node: ^14 || ^16 || >=18.0} - peerDependencies: - postcss: ^8.4.31 - - postcss-minify-selectors@6.0.1: - resolution: {integrity: sha512-mfReq5wrS6vkunxvJp6GDuOk+Ak6JV7134gp8L+ANRnV9VwqzTvBtX6lpohooVU750AR0D3pVx2Zn6uCCwOAfQ==} - engines: {node: ^14 || ^16 || >=18.0} - peerDependencies: - postcss: ^8.4.31 - postcss-nested@6.0.1: resolution: {integrity: sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==} engines: {node: '>=12.0'} peerDependencies: postcss: ^8.2.14 - postcss-normalize-charset@6.0.1: - resolution: {integrity: sha512-aW5LbMNRZ+oDV57PF9K+WI1Z8MPnF+A8qbajg/T8PP126YrGX1f9IQx21GI2OlGz7XFJi/fNi0GTbY948XJtXg==} - engines: {node: ^14 || ^16 || >=18.0} - peerDependencies: - postcss: ^8.4.31 - - postcss-normalize-display-values@6.0.1: - resolution: {integrity: sha512-mc3vxp2bEuCb4LgCcmG1y6lKJu1Co8T+rKHrcbShJwUmKJiEl761qb/QQCfFwlrvSeET3jksolCR/RZuMURudw==} - engines: {node: ^14 || ^16 || >=18.0} - peerDependencies: - postcss: ^8.4.31 - - postcss-normalize-positions@6.0.1: - resolution: {integrity: sha512-HRsq8u/0unKNvm0cvwxcOUEcakFXqZ41fv3FOdPn916XFUrympjr+03oaLkuZENz3HE9RrQE9yU0Xv43ThWjQg==} - engines: {node: ^14 || ^16 || >=18.0} - peerDependencies: - postcss: ^8.4.31 - - postcss-normalize-repeat-style@6.0.1: - resolution: {integrity: sha512-Gbb2nmCy6tTiA7Sh2MBs3fj9W8swonk6lw+dFFeQT68B0Pzwp1kvisJQkdV6rbbMSd9brMlS8I8ts52tAGWmGQ==} - engines: {node: ^14 || ^16 || >=18.0} - peerDependencies: - postcss: ^8.4.31 - - postcss-normalize-string@6.0.1: - resolution: {integrity: sha512-5Fhx/+xzALJD9EI26Aq23hXwmv97Zfy2VFrt5PLT8lAhnBIZvmaT5pQk+NuJ/GWj/QWaKSKbnoKDGLbV6qnhXg==} - engines: {node: ^14 || ^16 || >=18.0} - peerDependencies: - postcss: ^8.4.31 - - postcss-normalize-timing-functions@6.0.1: - resolution: {integrity: sha512-4zcczzHqmCU7L5dqTB9rzeqPWRMc0K2HoR+Bfl+FSMbqGBUcP5LRfgcH4BdRtLuzVQK1/FHdFoGT3F7rkEnY+g==} - engines: {node: ^14 || ^16 || >=18.0} - peerDependencies: - postcss: ^8.4.31 - - postcss-normalize-unicode@6.0.1: - resolution: {integrity: sha512-ok9DsI94nEF79MkvmLfHfn8ddnKXA7w+8YuUoz5m7b6TOdoaRCpvu/QMHXQs9+DwUbvp+ytzz04J55CPy77PuQ==} - engines: {node: ^14 || ^16 || >=18.0} - peerDependencies: - postcss: ^8.4.31 - - postcss-normalize-url@6.0.1: - resolution: {integrity: sha512-jEXL15tXSvbjm0yzUV7FBiEXwhIa9H88JOXDGQzmcWoB4mSjZIsmtto066s2iW9FYuIrIF4k04HA2BKAOpbsaQ==} - engines: {node: ^14 || ^16 || >=18.0} - peerDependencies: - postcss: ^8.4.31 - - postcss-normalize-whitespace@6.0.1: - resolution: {integrity: sha512-76i3NpWf6bB8UHlVuLRxG4zW2YykF9CTEcq/9LGAiz2qBuX5cBStadkk0jSkg9a9TCIXbMQz7yzrygKoCW9JuA==} - engines: {node: ^14 || ^16 || >=18.0} - peerDependencies: - postcss: ^8.4.31 - - postcss-ordered-values@6.0.1: - resolution: {integrity: sha512-XXbb1O/MW9HdEhnBxitZpPFbIvDgbo9NK4c/5bOfiKpnIGZDoL2xd7/e6jW5DYLsWxBbs+1nZEnVgnjnlFViaA==} - engines: {node: ^14 || ^16 || >=18.0} - peerDependencies: - postcss: ^8.4.31 - - postcss-reduce-initial@6.0.1: - resolution: {integrity: sha512-cgzsI2ThG1PMSdSyM9A+bVxiiVgPIVz9f5c6H+TqEv0CA89iCOO81mwLWRWLgOKFtQkKob9nNpnkxG/1RlgFcA==} - engines: {node: ^14 || ^16 || >=18.0} - peerDependencies: - postcss: ^8.4.31 - - postcss-reduce-transforms@6.0.1: - resolution: {integrity: sha512-fUbV81OkUe75JM+VYO1gr/IoA2b/dRiH6HvMwhrIBSUrxq3jNZQZitSnugcTLDi1KkQh1eR/zi+iyxviUNBkcQ==} - engines: {node: ^14 || ^16 || >=18.0} - peerDependencies: - postcss: ^8.4.31 - postcss-selector-parser@6.0.16: resolution: {integrity: sha512-A0RVJrX+IUkVZbW3ClroRWurercFhieevHB38sr2+l9eUClMqome3LmEmnhlNy+5Mr2EYN6B2Kaw9wYdd+VHiw==} engines: {node: '>=4'} - postcss-svgo@6.0.1: - resolution: {integrity: sha512-eWV4Rrqa06LzTgqirOv5Ln6WTGyU7Pbeqj9WEyKo9tpnWixNATVJMeaEcOHOW1ZYyjcG8wSJwX/28DvU3oy3HA==} - engines: {node: ^14 || ^16 || >= 18} - peerDependencies: - postcss: ^8.4.31 - - postcss-unique-selectors@6.0.1: - resolution: {integrity: sha512-/KCCEpNNR7oXVJ38/Id7GC9Nt0zxO1T3zVbhVaq6F6LSG+3gU3B7+QuTHfD0v8NPEHlzewAout29S0InmB78EQ==} - engines: {node: ^14 || ^16 || >=18.0} - peerDependencies: - postcss: ^8.4.31 - postcss-value-parser@4.2.0: resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} @@ -11331,22 +10187,45 @@ packages: resolution: {integrity: sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==} engines: {node: ^10 || ^12 || >=14} + postcss@8.4.47: + resolution: {integrity: sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==} + engines: {node: ^10 || ^12 || >=14} + postgres-array@2.0.0: resolution: {integrity: sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==} engines: {node: '>=4'} + postgres-array@3.0.2: + resolution: {integrity: sha512-6faShkdFugNQCLwucjPcY5ARoW1SlbnrZjmGl0IrrqewpvxvhSLHimCVzqeuULCbG0fQv7Dtk1yDbG3xv7Veog==} + engines: {node: '>=12'} + postgres-bytea@1.0.0: resolution: {integrity: sha512-xy3pmLuQqRBZBXDULy7KbaitYqLcmxigw14Q5sj8QBVLqEwXfeybIKVWiqAXTlcvdvb0+xkOtDbfQMOf4lST1w==} engines: {node: '>=0.10.0'} + postgres-bytea@3.0.0: + resolution: {integrity: sha512-CNd4jim9RFPkObHSjVHlVrxoVQXz7quwNFpz7RY1okNNme49+sVyiTvTRobiLV548Hx/hb1BG+iE7h9493WzFw==} + engines: {node: '>= 6'} + postgres-date@1.0.7: resolution: {integrity: sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==} engines: {node: '>=0.10.0'} + postgres-date@2.1.0: + resolution: {integrity: sha512-K7Juri8gtgXVcDfZttFKVmhglp7epKb1K4pgrkLxehjqkrgPhfG6OO8LHLkfaqkbpjNRnra018XwAr1yQFWGcA==} + engines: {node: '>=12'} + postgres-interval@1.2.0: resolution: {integrity: sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==} engines: {node: '>=0.10.0'} + postgres-interval@3.0.0: + resolution: {integrity: sha512-BSNDnbyZCXSxgA+1f5UU2GmwhoI0aU5yMxRGO8CdFEcY2BQF9xm/7MqKnYoM1nJDk8nONNWDk9WeSmePFhQdlw==} + engines: {node: '>=12'} + + postgres-range@1.1.4: + resolution: {integrity: sha512-i/hbxIE9803Alj/6ytL7UHQxRvZkI9O4Sy+J3HGc4F4oo/2eQAjTSNJ0bfxyse3bH0nuVesCk+3IRLaMtG3H6w==} + posthog-node@3.2.1: resolution: {integrity: sha512-ofNX3TPfZPlWErVc2EDk66cIrfp9EXeKBsXFxf8ISXK57b10ANwRnKAlf5rQjxjRKqcUWmV0d3ZfOeVeYracMw==} engines: {node: '>=15.0.0'} @@ -11367,12 +10246,8 @@ packages: pretender@3.4.7: resolution: {integrity: sha512-jkPAvt1BfRi0RKamweJdEcnjkeu7Es8yix3bJ+KgBC5VpG/Ln4JE3hYN6vJym4qprm8Xo5adhWpm3HCoft1dOw==} - prettier-linter-helpers@1.0.0: - resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==} - engines: {node: '>=6.0.0'} - - prettier@3.2.5: - resolution: {integrity: sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A==} + prettier@3.3.3: + resolution: {integrity: sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==} engines: {node: '>=14'} hasBin: true @@ -11380,10 +10255,6 @@ packages: resolution: {integrity: sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==} engines: {node: '>=6'} - pretty-bytes@6.1.1: - resolution: {integrity: sha512-mQUvGU6aUFQ+rNvTIAcZuWGRT9a6f6Yrg9bHs4ImKF+HZCEK+plBvnAZYSIQztknZF2qnzNtr6F8s0+IuptdlQ==} - engines: {node: ^14.13.1 || >=16.0.0} - pretty-format@27.5.1: resolution: {integrity: sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} @@ -11392,18 +10263,10 @@ packages: resolution: {integrity: sha512-V2mGkI31qdttvTFX7Mt4efOqHXqJWMu4/r66Xh3Z3BwZaPfPJgp6/gbwoujRpPUtfEF6AUUWx3Jim3GCw5g/Qw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - pretty-format@29.6.2: - resolution: {integrity: sha512-1q0oC8eRveTg5nnBEWMXAU2qpv65Gnuf2eCQzSjxpWFkPaPARwqZZDGuNE0zPAZfTCHzIk3A8dIjwlQKKLphyg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - pretty-format@29.7.0: resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - pretty-hrtime@1.0.3: - resolution: {integrity: sha512-66hKPCr+72mlfiSjlEB1+45IjXSqvVAIy6mocupoww4tBFE9R9IhwwUGoI4G++Tc9Aq+2rxOt0RFU6gPcrte0A==} - engines: {node: '>= 0.8'} - prismjs@1.29.0: resolution: {integrity: sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==} engines: {node: '>=6'} @@ -11502,9 +10365,6 @@ packages: pug-code-gen@3.0.3: resolution: {integrity: sha512-cYQg0JW0w32Ux+XTeZnBEeuWrAY7/HNE6TWnhiHGnnRYlCgyAUPoyh9KzCMa9WhcJlJ1AtQqpEYHc+vbCzA+Aw==} - pug-error@2.0.0: - resolution: {integrity: sha512-sjiUsi9M4RAGHktC1drQfCr5C5eriu24Lfbt4s+7SykztEOwVZtbFk1RRq0tzLxcMxMYTBR+zMQaG07J/btayQ==} - pug-error@2.1.0: resolution: {integrity: sha512-lv7sU9e5Jk8IeUheHata6/UThZ7RK2jnaaNztxfPYUY+VxZyk/ePVaNZ/vwmH8WqGvDz3LrNYt/+gA55NDg6Pg==} @@ -11535,15 +10395,9 @@ packages: pug@3.0.3: resolution: {integrity: sha512-uBi6kmc9f3SZ3PXxqcHiUZLmIXgfgWooKWXcwSGwQd2Zi5Rb0bT14+8CJjJgI8AB+nndLaNgHGrcc6bPIB665g==} - pump@2.0.1: - resolution: {integrity: sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==} - pump@3.0.0: resolution: {integrity: sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==} - pumpify@1.5.1: - resolution: {integrity: sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==} - punycode@2.3.1: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} @@ -11574,6 +10428,10 @@ packages: resolution: {integrity: sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==} engines: {node: '>=0.6'} + qs@6.13.0: + resolution: {integrity: sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==} + engines: {node: '>=0.6'} + query-string@7.1.3: resolution: {integrity: sha512-hh2WYhq4fi8+b+/2Kg9CEge4fDPvHS534aOOvOZeQ3+Vf2mCFsaFBYj0i+iXcAq6I9Vzp5fjMFBlONvayDC1qg==} engines: {node: '>=6'} @@ -11591,8 +10449,15 @@ packages: resolution: {integrity: sha512-cihC68OcGiQOjGiXuo5Jk6XHANTHl1K4JLk/xlEJRTIXfy19Sg6XzB95XonYgr+1rB88bCpr7WZE7D7AlZow4g==} hasBin: true - ramda@0.29.0: - resolution: {integrity: sha512-BBea6L67bYLtdbOqfp8f58fPMqEwx0doL+pAi8TZyp2YWz8R9G8z9x75CZI8W+ftqhFHCpEX2cRnUUXK130iKA==} + raf@3.4.1: + resolution: {integrity: sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA==} + + railroad-diagrams@1.0.0: + resolution: {integrity: sha512-cz93DjNeLY0idrCNOH6PviZGRN9GJhsdm9hpn1YCS879fj4W+x5IFJhhkRZcwVgMmFF7R82UA/7Oh+R8lLZg6A==} + + randexp@0.4.6: + resolution: {integrity: sha512-80WNmd9DA0tmZrw9qQa62GPPWfuXJknrmVmLcxvq4uZBdYqb1wYoKTmnlGUchvVWe0XiLupYkBoXVOxz3C8DYQ==} + engines: {node: '>=0.12'} random-bytes@1.0.0: resolution: {integrity: sha512-iv7LhNVO047HzYR3InF6pUcUsPQiHTM1Qal51DcGSuZFBil1aBBWG5eHPNek7bvILMaYJ/8RU1e8w1AMdHmLQQ==} @@ -11643,40 +10508,15 @@ packages: react-is@18.2.0: resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==} - react-remove-scroll-bar@2.3.6: - resolution: {integrity: sha512-DtSYaao4mBmX+HDo5YWYdBWQwYIQQshUV/dVxFxK+KM26Wjwp1gZ6rv6OC3oujI6Bfu6Xyg3TwK533AQutsn/g==} - engines: {node: '>=10'} + react-shallow-renderer@16.15.0: + resolution: {integrity: sha512-oScf2FqQ9LFVQgA73vr86xl2NaOIX73rh+YFqcOp68CWj56tSfgtGKrEbyhCj0rSijyG9M1CYprTh39fBi5hzA==} peerDependencies: - '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@types/react': - optional: true + react: ^16.0.0 || ^17.0.0 || ^18.0.0 - react-remove-scroll@2.5.5: - resolution: {integrity: sha512-ImKhrzJJsyXJfBZ4bzu8Bwpka14c/fQt0k+cyFp/PBhTfyDnU5hjOtM4AG/0AMyy8oKzOTR0lDgJIM7pYXI0kw==} - engines: {node: '>=10'} + react-tabs@6.0.2: + resolution: {integrity: sha512-aQXTKolnM28k3KguGDBSAbJvcowOQr23A+CUJdzJtOSDOtTwzEaJA+1U4KwhNL9+Obe+jFS7geuvA7ICQPXOnQ==} peerDependencies: - '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@types/react': - optional: true - - react-style-singleton@2.2.1: - resolution: {integrity: sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==} - engines: {node: '>=10'} - peerDependencies: - '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@types/react': - optional: true - - react-tabs@4.3.0: - resolution: {integrity: sha512-2GfoG+f41kiBIIyd3gF+/GRCCYtamC8/2zlAcD8cqQmqI9Q+YVz7fJLHMmU9pXDVYYHpJeCgUSBJju85vu5q8Q==} - peerDependencies: - react: ^16.8.0 || ^17.0.0-0 || ^18.0.0 + react: ^18.0.0 react@18.2.0: resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==} @@ -11707,13 +10547,17 @@ packages: resolution: {integrity: sha512-Lk/fICSyIhodxy1IDK2HazkeGjSmezAWX2egdtJnYhtzKEsBPJowlI6F6LPb5tqIQILrMbx22S5o3GuJavPusA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + readable-stream@4.5.2: + resolution: {integrity: sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + readable-web-to-node-stream@3.0.2: resolution: {integrity: sha512-ePeK6cc1EcKLEhJFt/AebMCLL+GgSKhuygrZ/GLaKZYEecIgIECf4UaUuaByiGtzckwR4ain9VzUh95T1exYGw==} engines: {node: '>=8'} - readdirp@3.6.0: - resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} - engines: {node: '>=8.10.0'} + readdirp@4.0.2: + resolution: {integrity: sha512-yDMz9g+VaZkqBYS/ozoBJwaBhTbZo3UNYQHNRw1D3UFQB8oHB4uS/tAODO+ZLjGWmUbKnIlOWO+aaIiAxrUWHA==} + engines: {node: '>= 14.16.0'} readline-sync@1.4.10: resolution: {integrity: sha512-gNva8/6UAe8QYepIQH/jQ2qn91Qj0B9sYjMBBs3QOB8F2CXcKgLxQaJRP76sWVRQt+QU+8fAkCbCvjjMFu7Ycw==} @@ -11750,14 +10594,11 @@ packages: redis@4.6.12: resolution: {integrity: sha512-41Xuuko6P4uH4VPe5nE3BqXHB7a9lkFL0J29AlxKaIfD6eWO8VO/5PDF9ad2oS+mswMsfFxaM5DlE3tnXT+P8Q==} - redis@4.6.13: - resolution: {integrity: sha512-MHgkS4B+sPjCXpf+HfdetBwbRz6vCtsceTmw1pHNYJAsYxrfpOP6dz+piJWGos8wqG7qb3vj/Rrc5qOlmInUuA==} - redis@4.6.14: resolution: {integrity: sha512-GrNg/e33HtsQwNXL7kJT+iNFPSwE1IPmd7wzV3j4f2z0EYxZfZE7FVTmUysgAtqQQtg5NXF5SNLR9OdO/UHOfw==} - redoc@2.1.3: - resolution: {integrity: sha512-d7F9qLLxaiFW4GC03VkwlX9wuRIpx9aiIIf3o6mzMnqPfhxrn2IRKGndrkJeVdItgCfmg9jXZiFEowm60f1meQ==} + redoc@2.1.5: + resolution: {integrity: sha512-POSbVg+7WLf+/5/c6GWLxL7+9t2D+1WlZdLN0a6qaCQc+ih3XYzteRBkXEN5kjrYrRNjdspfxTZkDLN5WV3Tzg==} engines: {node: '>=6.9', npm: '>=3.0.0'} peerDependencies: core-js: ^3.1.4 @@ -11772,22 +10613,9 @@ packages: reftools@1.1.9: resolution: {integrity: sha512-OVede/NQE13xBQ+ob5CKd5KyeJYU2YInb1bmV4nRoOfquZPkAkxuOXicSe1PvqIuZZ4kD13sPKBbR7UFDmli6w==} - regenerate-unicode-properties@10.1.0: - resolution: {integrity: sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ==} - engines: {node: '>=4'} - - regenerate@1.4.2: - resolution: {integrity: sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==} - - regenerator-runtime@0.13.11: - resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==} - regenerator-runtime@0.14.1: resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} - regenerator-transform@0.15.2: - resolution: {integrity: sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==} - regexp-tree@0.1.27: resolution: {integrity: sha512-iETxpjK6YoRWJG5o6hXLwvjYAoW+FEZn9os0PD/b6AP6xQwsa/Y7lCVgIixBbUPMfhu+i2LtdeAqVTgGlQarfA==} hasBin: true @@ -11800,18 +10628,14 @@ packages: resolution: {integrity: sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==} engines: {node: '>= 0.4'} - regexpu-core@5.3.2: - resolution: {integrity: sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==} - engines: {node: '>=4'} + regexp.prototype.flags@1.5.3: + resolution: {integrity: sha512-vqlC04+RQoFalODCbCumG2xIOvapzVMHwsyIGM/SIE8fRhFFsXeH8/QQ+s0T0kDAhKc4k30s73/0ydkHQz6HlQ==} + engines: {node: '>= 0.4'} regjsparser@0.10.0: resolution: {integrity: sha512-qx+xQGZVsy55CH0a1hiVwHmqjLryfh7wQyF5HO07XJ9f7dQMY/gPQHhlyDkIzJKC+x2fUCpCcUODUUUFrm7SHA==} hasBin: true - regjsparser@0.9.1: - resolution: {integrity: sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==} - hasBin: true - rehype-external-links@3.0.0: resolution: {integrity: sha512-yp+e5N9V3C6bwBeAC4n796kc86M4gJCdlVhiMTxIrJG5UHDMh+PJANf9heqORJbt1nrCbDwIlAZKjANIaVBbvw==} @@ -11821,6 +10645,10 @@ packages: reinterval@1.1.0: resolution: {integrity: sha512-QIRet3SYrGp0HUHO88jVskiG6seqUGC5iAG7AwI/BV4ypGcuqk9Du6YQBUOUqm9c8pw1eyLoIaONifRua1lsEQ==} + relateurl@0.2.7: + resolution: {integrity: sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==} + engines: {node: '>= 0.10'} + remove-trailing-slash@0.1.1: resolution: {integrity: sha512-o4S4Qh6L2jpnCy83ysZDau+VORNvnFw07CKSAymkd6ICNVEPisMyzlc00KlvvicsxKck94SEwhDnMNdICzO+tA==} @@ -11862,9 +10690,6 @@ packages: resolution: {integrity: sha512-6K/gDlqgQscOlg9fSRpWstA8sYe8rbELsSTNpx+3kTrsVCzvSl0zIvRErM7fdl9ERWDsKnrLnwB+Ne89918XOg==} engines: {node: '>=10'} - resolve@1.19.0: - resolution: {integrity: sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==} - resolve@1.22.3: resolution: {integrity: sha512-P8ur/gp/AmbEzjr729bZnLjXK5Z+4P0zhIJgBgzqRih7hL7BOukHGtSTA3ACMY467GRFz3duQsi0bDZdR7DKdw==} hasBin: true @@ -11877,9 +10702,9 @@ packages: resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==} engines: {node: '>=8'} - retry-request@5.0.2: - resolution: {integrity: sha512-wfI3pk7EE80lCIXprqh7ym48IHYdwmAAzESdbU8Q9l7pnRCk9LEhpbOTNKjz6FARLm/Bl5m+4F0ABxOkYUujSQ==} - engines: {node: '>=12'} + ret@0.1.15: + resolution: {integrity: sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==} + engines: {node: '>=0.12'} retry-request@7.0.2: resolution: {integrity: sha512-dUOvLMJ0/JJYEn8NrpOaGNE7X3vpI5XlZS/u0ANjqtcZVKnIxP7IgCFwrKTxENw29emmwug53awKtaMm4i9g5w==} @@ -11908,10 +10733,12 @@ packages: rimraf@2.6.3: resolution: {integrity: sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==} + deprecated: Rimraf versions prior to v4 are no longer supported hasBin: true rimraf@3.0.2: resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} + deprecated: Rimraf versions prior to v4 are no longer supported hasBin: true rimraf@5.0.1: @@ -11922,20 +10749,8 @@ packages: rndm@1.2.0: resolution: {integrity: sha512-fJhQQI5tLrQvYIYFpOnFinzv9dwmR7hRnUz1XqP3OJ1jIweTNOd6aTO4jwQSgcBSFUB+/KHJxuGneime+FdzOw==} - rollup-plugin-dts@6.1.0: - resolution: {integrity: sha512-ijSCPICkRMDKDLBK9torss07+8dl9UpY9z1N/zTeA1cIqdzMlpkV3MOOC7zukyvQfDyxa1s3Dl2+DeiP/G6DOw==} - engines: {node: '>=16'} - peerDependencies: - rollup: ^3.29.4 || ^4 - typescript: ^5.5.2 - - rollup@3.29.4: - resolution: {integrity: sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==} - engines: {node: '>=14.18.0', npm: '>=8.0.0'} - hasBin: true - - rollup@4.18.0: - resolution: {integrity: sha512-QmJz14PX3rzbJCN1SG4Xe/bAAX2a6NpCP8ab2vfu2GiUr8AQcr2nCV/oEO3yneFarB67zk8ShlIyWb2LGTb3Sg==} + rollup@4.24.0: + resolution: {integrity: sha512-DOmrlGSXNk1DM0ljiQA+i+o0rSLhtii1je5wgk60j49d1jHT5YYttBv1iWOnYSTG+fZZESUOSNiAl89SIet+Cg==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true @@ -11951,6 +10766,9 @@ packages: rss-parser@3.13.0: resolution: {integrity: sha512-7jWUBV5yGN3rqMMj7CZufl/291QAhvrrGpDNE4k/02ZchL0npisiYYqULF71jCEKoIiHvK/Q2e6IkDwPziT7+w==} + rst-selector-parser@2.2.3: + resolution: {integrity: sha512-nDG1rZeP6oFTLN6yNDV/uiAvs1+FS/KlrEwh7+y7dpuApDBy6bI2HTBcc0/V8lv9OTqfyD34eF7au2pm8aBbhA==} + run-async@2.4.1: resolution: {integrity: sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==} engines: {node: '>=0.12.0'} @@ -12009,25 +10827,6 @@ packages: sanitize-html@2.12.1: resolution: {integrity: sha512-Plh+JAn0UVDpBRP/xEjsk+xDCoOvMBwQUf/K+/cBAVuTbtX8bj2VB7S1sL1dssVpykqp0/KPSesHrqXtokVBpA==} - sass-loader@13.3.2: - resolution: {integrity: sha512-CQbKl57kdEv+KDLquhC+gE3pXt74LEAzm+tzywcA0/aHZuub8wTErbjAoNI57rPUWRYRNC5WUnNl8eGJNbDdwg==} - engines: {node: '>= 14.15.0'} - peerDependencies: - fibers: '>= 3.1.0' - node-sass: ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 || ^9.0.0 - sass: ^1.3.0 - sass-embedded: '*' - webpack: ^5.0.0 - peerDependenciesMeta: - fibers: - optional: true - node-sass: - optional: true - sass: - optional: true - sass-embedded: - optional: true - sass@1.64.1: resolution: {integrity: sha512-16rRACSOFEE8VN7SCgBu1MpYCyN7urj9At898tyzdXFhC+a+yOX5dXwAR7L8/IdPJ1NB8OYoXmD55DM30B2kEQ==} engines: {node: '>=14.0.0'} @@ -12051,13 +10850,6 @@ packages: scheduler@0.23.0: resolution: {integrity: sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==} - schema-utils@3.1.1: - resolution: {integrity: sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==} - engines: {node: '>= 10.13.0'} - - scule@1.1.1: - resolution: {integrity: sha512-sHtm/SsIK9BUBI3EFT/Gnp9VoKfY6QLvlkvAE6YK7454IF8FSgJEAnJpVdSC7K5/pjI5NfxhzBLW2JAfYA/shQ==} - seedrandom@3.0.5: resolution: {integrity: sha512-8OwmbklUNzwezjGInmZ+2clQmExQPvomqjL7LFqOYqtmuxRgQYqOD3mHaU+MvZn5FLUeVxVfQjwLZW/n/JFuqg==} @@ -12069,8 +10861,8 @@ packages: engines: {node: '>=10'} hasBin: true - send@0.18.0: - resolution: {integrity: sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==} + send@0.19.0: + resolution: {integrity: sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==} engines: {node: '>= 0.8.0'} sentence-case@3.0.4: @@ -12082,8 +10874,8 @@ packages: serialize-javascript@6.0.2: resolution: {integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==} - serve-static@1.15.0: - resolution: {integrity: sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==} + serve-static@1.16.2: + resolution: {integrity: sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==} engines: {node: '>= 0.8.0'} set-blocking@2.0.0: @@ -12107,10 +10899,6 @@ packages: resolution: {integrity: sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==} hasBin: true - shallow-clone@3.0.1: - resolution: {integrity: sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==} - engines: {node: '>=8'} - shallowequal@1.1.0: resolution: {integrity: sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==} @@ -12158,6 +10946,10 @@ packages: side-channel@1.0.4: resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} + side-channel@1.0.6: + resolution: {integrity: sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==} + engines: {node: '>= 0.4'} + siginfo@2.0.0: resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} @@ -12197,14 +10989,6 @@ packages: resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} engines: {node: '>=8'} - slash@4.0.0: - resolution: {integrity: sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==} - engines: {node: '>=12'} - - slash@5.1.0: - resolution: {integrity: sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==} - engines: {node: '>=14.16'} - slice-ansi@3.0.0: resolution: {integrity: sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==} engines: {node: '>=8'} @@ -12213,6 +10997,9 @@ packages: resolution: {integrity: sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==} engines: {node: '>=10'} + slick@1.12.2: + resolution: {integrity: sha512-4qdtOGcBjral6YIBCWJ0ljFSKNLz9KkhbWtuGvUyRowl1kxfuE1x/Z/aJcaiilpb3do9bl5K7/1h9XC5wWpY/A==} + slugify@1.4.7: resolution: {integrity: sha512-tf+h5W1IrjNm/9rKKj0JU2MDMruiopx0jjVA5zCdBtcGjfp0+c5rHw/zADLC3IeKlGHtVbHtpfzvYA0OYT+HKg==} engines: {node: '>=8.0.0'} @@ -12224,8 +11011,8 @@ packages: snake-case@3.0.4: resolution: {integrity: sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==} - snowflake-sdk@1.9.2: - resolution: {integrity: sha512-pPTE8V6RHw78KBAn56rGVri3LRciuJDz/oDUmkJej3fUnOHP28YBLl3kjiW0J5bbPzDPHhSAkeeCsjrbGyAB/w==} + snowflake-sdk@1.12.0: + resolution: {integrity: sha512-ZUFYR327vh+Tgo4s/1NhZTjg24g6t7rA3VTgP13sy9WBxdgPVuKN2G4rgeoml8vYKfARPCYmQBr6ysVF/y7EKw==} peerDependencies: asn1.js: ^5.4.1 @@ -12245,6 +11032,10 @@ packages: resolution: {integrity: sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==} engines: {node: '>=0.10.0'} + source-map-js@1.2.1: + resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} + engines: {node: '>=0.10.0'} + source-map-support@0.5.13: resolution: {integrity: sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==} @@ -12276,9 +11067,9 @@ packages: spdx-license-ids@3.0.12: resolution: {integrity: sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA==} - spex@3.2.0: - resolution: {integrity: sha512-9srjJM7NaymrpwMHvSmpDeIK5GoRMX/Tq0E8aOlDPS54dDnDUIp30DrP9SphMPEETDLzEM9+4qo+KipmbtPecg==} - engines: {node: '>=4.5'} + spex@3.3.0: + resolution: {integrity: sha512-VNiXjFp6R4ldPbVRYbpxlD35yRHceecVXlct1J4/X80KuuPnW2AXMq3sGwhnJOhKkUsOxAT6nRGfGE5pocVw5w==} + engines: {node: '>=10.0.0'} split-on-first@1.1.0: resolution: {integrity: sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==} @@ -12304,15 +11095,12 @@ packages: resolution: {integrity: sha512-qC9iz2FlN7DQl3+wjwn3802RTyjCx7sDvfQEXchwa6CWOx07/WVfh91gBmQ9fahw8snwGEWU3xGzOt4tFyHLxg==} engines: {node: '>= 0.6'} - sse-channel@4.0.0: - resolution: {integrity: sha512-I539Tc0gyDTQ2QCSg4v78Flxo/UbqR9x7JoyPcqaPtwo+qzeOw/fF+aPSbk0xTvBQAAAZk7Dlkc8K1bum5GUnw==} - ssh2-sftp-client@7.2.3: resolution: {integrity: sha512-Bmq4Uewu3e0XOwu5bnPbiS5KRQYv+dff5H6+85V4GZrPrt0Fkt1nUH+uXanyAkoNxUpzjnAPEEoLdOaBO9c3xw==} engines: {node: '>=10.24.1'} - ssh2@1.11.0: - resolution: {integrity: sha512-nfg0wZWGSsfUe/IBJkXVll3PEZ//YH2guww+mP88gTpuSU4FtZN7zu9JoeTGOyCNx2dTDtT9fOpWwlzyj4uOOw==} + ssh2@1.15.0: + resolution: {integrity: sha512-C0PHgX4h6lBxYx7hcXwu3QWdh4tg6tZZsTfXcdvc5caW/EMxaB4H9dWsl7qk+F7LAW762hp8VbXOX7x4xUYvEw==} engines: {node: '>=10.16.0'} sshpk@1.17.0: @@ -12337,8 +11125,8 @@ packages: standard-as-callback@2.1.0: resolution: {integrity: sha512-qoRRSyROncaz1z0mvYqIE4lCd9p2R90i6GxW3uZv5ucSu8tU7B5HXUP1gG8pVZsYNVaXjk8ClXHPttLyxAL48A==} - start-server-and-test@2.0.3: - resolution: {integrity: sha512-QsVObjfjFZKJE6CS6bSKNwWZCKBG6975/jKRPPGFfFh+yOQglSeGXiNWjzgQNXdphcBI9nXbyso9tPfX4YAUhg==} + start-server-and-test@2.0.8: + resolution: {integrity: sha512-v2fV6NV2F7tL1ocwfI4Wpait+IKjRbT5l3ZZ+ZikXdMLmxYsS8ynGAsCQAUVXkVyGyS+UibsRnvgHkMvJIvCsw==} engines: {node: '>=16'} hasBin: true @@ -12349,8 +11137,8 @@ packages: resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} engines: {node: '>= 0.8'} - std-env@3.6.0: - resolution: {integrity: sha512-aFZ19IgVmhdB2uX599ve2kE6BIE3YMnQ6Gp6BURhW/oIzpXGKr878TQfAQZn1+i0Flcc/UKUy1gOlcfaUBCryg==} + std-env@3.7.0: + resolution: {integrity: sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==} stickyfill@1.1.1: resolution: {integrity: sha512-GCp7vHAfpao+Qh/3Flh9DXEJ/qSi0KJwJw6zYlZOtRYXWUIpMM6mC2rIep/dK8RQqwW0KxGJIllmjPIBOGN8AA==} @@ -12363,11 +11151,8 @@ packages: resolution: {integrity: sha512-KXDYZ9dszj6bzvnEMRYvxgeTHU74QBFL54XKtP3nyMuJ81CFYtABZ3bAzL2EdFUaEwJOBOgENyFj3R7oTzDyyw==} engines: {node: '>=4', npm: '>=6'} - store2@2.14.2: - resolution: {integrity: sha512-siT1RiqlfQnGqgT/YzXVUNsom9S0H1OX+dpdGN1xkyYATo4I6sep5NmsRD/40s3IIOvlCq6akxkqG82urIZW1w==} - - storybook@8.1.4: - resolution: {integrity: sha512-HPrpoRGmxNfseGeWu06AQbEifI+uZq4yC1c89BFRJ8/llkJwCCCreLGHULZqw4YHylGkUXxhg0Hv36wJGCqxCw==} + storybook@8.3.5: + resolution: {integrity: sha512-hYQVtP2l+3kO8oKDn4fjXXQYxgTRsj/LaV6lUMJH0zt+OhVmDXKJLxmdUP4ieTm0T8wEbSYosFavgPcQZlxRfw==} hasBin: true stream-browserify@3.0.0: @@ -12382,6 +11167,9 @@ packages: stream-shift@1.0.1: resolution: {integrity: sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==} + stream-shift@1.0.3: + resolution: {integrity: sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==} + streamsearch@1.1.0: resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==} engines: {node: '>=10.0.0'} @@ -12420,18 +11208,29 @@ packages: resolution: {integrity: sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==} engines: {node: '>= 0.4'} + string.prototype.trim@1.2.9: + resolution: {integrity: sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==} + engines: {node: '>= 0.4'} + string.prototype.trimend@1.0.6: resolution: {integrity: sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==} string.prototype.trimend@1.0.7: resolution: {integrity: sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==} + string.prototype.trimend@1.0.8: + resolution: {integrity: sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==} + string.prototype.trimstart@1.0.6: resolution: {integrity: sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==} string.prototype.trimstart@1.0.7: resolution: {integrity: sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==} + string.prototype.trimstart@1.0.8: + resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==} + engines: {node: '>= 0.4'} + string_decoder@0.10.31: resolution: {integrity: sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==} @@ -12461,10 +11260,6 @@ packages: resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} engines: {node: '>=6'} - strip-final-newline@3.0.0: - resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} - engines: {node: '>=12'} - strip-indent@3.0.0: resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} engines: {node: '>=8'} @@ -12477,9 +11272,6 @@ packages: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} engines: {node: '>=8'} - strip-literal@2.0.0: - resolution: {integrity: sha512-f9vHgsCWBq2ugHAkGMiiYY+AYG0D/cbloKKg0nhaaaSNsujdGIpVXCNsrJpCKr5M0f4aI31mr13UjY6GAuXCKA==} - strnum@1.0.5: resolution: {integrity: sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==} @@ -12500,12 +11292,6 @@ packages: react: '>= 16.8.0' react-dom: '>= 16.8.0' - stylehacks@6.0.1: - resolution: {integrity: sha512-jTqG2aIoX2fYg0YsGvqE4ooE/e75WmaEjnNiP6Ag7irLtHxML8NJRxRxS0HyDpde8DRGuEXTFVHVfR5Tmbxqzg==} - engines: {node: ^14 || ^16 || >=18.0} - peerDependencies: - postcss: ^8.4.31 - stylis@4.3.1: resolution: {integrity: sha512-EQepAV+wMsIaGVGX1RECzgrcqRRU/0sYOHkeLsZ3fzHaHXZy4DaOOX0vOlGQdlsjkh3mFHAIlVimpwAs4dslyQ==} @@ -12538,16 +11324,11 @@ packages: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} - svgo@3.1.0: - resolution: {integrity: sha512-R5SnNA89w1dYgNv570591F66v34b3eQShpIBcQtZtM5trJwm1VvxbIoMpRYY3ybTAutcKTLEmTsdnaknOHbiQA==} - engines: {node: '>=14.0.0'} - hasBin: true - swagger-ui-dist@5.11.0: resolution: {integrity: sha512-j0PIATqQSEFGOLmiJOJZj1X1Jt6bFIur3JpY7+ghliUnfZs0fpWDdHEkn9q7QUlBtKbkn6TepvSxTqnE8l3s0A==} - swagger-ui-express@5.0.0: - resolution: {integrity: sha512-tsU9tODVvhyfkNSvf03E6FAk+z+5cU3lXAzMy6Pv4av2Gt2xA0++fogwC4qo19XuFf6hdxevPuVCSKFuMHJhFA==} + swagger-ui-express@5.0.1: + resolution: {integrity: sha512-SrNU3RiBGTLLmFU8GIJdOdanJTl4TOmT27tt3bWWHppqYmAZ6IDuEuBvMU6nZq0zLEe6b/1rACXCgLZqO6ZfrA==} engines: {node: '>= v0.10.32'} peerDependencies: express: '>=4.0.0 || >=5.0.0-beta' @@ -12559,10 +11340,6 @@ packages: symbol-tree@3.2.4: resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} - synckit@0.8.8: - resolution: {integrity: sha512-HwOKAP7Wc5aRGYdKH+dw0PRRpbO841v2DENBtjnR5HFWoiNByAl7vrx3p0G/rCyYXQsrxqtX48TImFtPcIHSpQ==} - engines: {node: ^14.18.0 || >=16.0.0} - syslog-client@1.1.1: resolution: {integrity: sha512-c3qKw8JzCuHt0mwrzKQr8eqOc3RB28HgOpFuwGMO3GLscVpfR+0ECevWLZq/yIJTbx3WTb3QXBFVpTFtKAPDrw==} @@ -12597,10 +11374,6 @@ packages: resolution: {integrity: sha512-NmedZS0NJiTv3CoYnf1FtjxIDUgVYzEmavrc8q2WHRb+lP4deI9BpQfmNnBZZaWusDbP5FVFZCcvzb3xOlNVlQ==} engines: {node: '>=16'} - teeny-request@8.0.3: - resolution: {integrity: sha512-jJZpA5He2y52yUhA7pyAGZlgQpcB+xLjcN0eUFxr9c8hP/H7uOXbBNVo/O0C/xVfJLJs680jvkFgVJEEvk9+ww==} - engines: {node: '>=12'} - teeny-request@9.0.0: resolution: {integrity: sha512-resvxdc6Mgb7YEThw6G6bExlXKkv6+YbuzGg9xuXxSgxJF7Ozs+o8Y9+2R3sArdWdW8nOokoQb1yrpFB0pQK2g==} engines: {node: '>=14'} @@ -12608,38 +11381,10 @@ packages: telejson@7.2.0: resolution: {integrity: sha512-1QTEcJkJEhc8OnStBx/ILRu5J2p0GjvWsBx56bmZRqnrkdBMUe+nX92jxV+p3dB4CP6PZCdJMQJwCggkNBMzkQ==} - temp-dir@2.0.0: - resolution: {integrity: sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==} - engines: {node: '>=8'} - - temp@0.8.4: - resolution: {integrity: sha512-s0ZZzd0BzYv5tLSptZooSjK8oj6C+c19p7Vqta9+6NPOf7r+fxq0cJe6/oN4LTC79sy5NY8ucOJNgwsKCSbfqg==} - engines: {node: '>=6.0.0'} - temp@0.9.4: resolution: {integrity: sha512-yYrrsWnrXMcdsnu/7YMYAofM1ktpL5By7vZhf15CrXijWWrEYZks5AXBudalfSWJLlnen/QUJUB5aoB0kqZUGA==} engines: {node: '>=6.0.0'} - tempy@1.0.1: - resolution: {integrity: sha512-biM9brNqxSc04Ee71hzFbryD11nX7VPhQQY32AdDmjFvodsRFz/3ufeoTZ6uYkRFfGo188tENcASNs3vTdsM0w==} - engines: {node: '>=10'} - - terser-webpack-plugin@5.3.6: - resolution: {integrity: sha512-kfLFk+PoLUQIbLmB1+PZDMRSZS99Mp+/MHqDNmMA6tOItzRt+Npe3E+fsMs5mfcM0wCtrrdU387UnV+vnSffXQ==} - engines: {node: '>= 10.13.0'} - peerDependencies: - '@swc/core': '*' - esbuild: '*' - uglify-js: '*' - webpack: ^5.1.0 - peerDependenciesMeta: - '@swc/core': - optional: true - esbuild: - optional: true - uglify-js: - optional: true - terser@5.16.1: resolution: {integrity: sha512-xvQfyfA1ayT0qdK47zskQgRZeWLoOQ8JQ6mIgRGVNwZKdQMU+5FkCBjmv4QjcrTzyZquRw2FVtlJSRUmMKQslw==} engines: {node: '>=10'} @@ -12649,6 +11394,10 @@ packages: resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} engines: {node: '>=8'} + test-exclude@7.0.1: + resolution: {integrity: sha512-pFYqmTw68LXVjeWJMST4+borgQP2AyMNbg1BpZh9LbyhUeNkeaPF9gzfPGUAnSMV3qPYdWUwDIjjCLiSDOl7vg==} + engines: {node: '>=18'} + text-hex@1.0.0: resolution: {integrity: sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg==} @@ -12669,9 +11418,6 @@ packages: throttleit@1.0.0: resolution: {integrity: sha512-rkTVqu6IjfQ/6+uNuuc3sZek4CEYxTJom3IktzgdSxcZqdARuebbA/f4QmAxMQIxqq9ZLEUkSYqvuk1I6VKq4g==} - through2@2.0.5: - resolution: {integrity: sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==} - through@2.3.8: resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} @@ -12681,15 +11427,22 @@ packages: tiny-invariant@1.3.3: resolution: {integrity: sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==} - tinybench@2.5.1: - resolution: {integrity: sha512-65NKvSuAVDP/n4CqH+a9w2kTlLReS9vhsAP06MWx+/89nMinJyB2icyl58RIcqCmIggpojIGeuJGhjU1aGMBSg==} + tinybench@2.9.0: + resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} - tinypool@0.8.4: - resolution: {integrity: sha512-i11VH5gS6IFeLY3gMBQ00/MmLncVP7JLXOw1vlgkytLmJK7QnEr7NXf0LBdxfmNPAeyetukOk0bOYrJrFGjYJQ==} + tinyexec@0.3.0: + resolution: {integrity: sha512-tVGE0mVJPGb0chKhqmsoosjsS+qUnJVGJpZgsHYQcGoPlG3B51R3PouqTgEGH2Dc9jjFyOqOpix6ZHNMXp1FZg==} + + tinypool@1.0.1: + resolution: {integrity: sha512-URZYihUbRPcGv95En+sz6MfghfIc2OJ1sv/RmhWZLouPY0/8Vo80viwPvg3dlaS9fuq7fQMEfgRRK7BBZThBEA==} + engines: {node: ^18.0.0 || >=20.0.0} + + tinyrainbow@1.2.0: + resolution: {integrity: sha512-weEDEq7Z5eTHPDh4xjX789+fHfF+P8boiFB+0vbWzpbnbsEr/GRaohi/uMKxg8RZMXnl1ItAi/IUHWMsjDV7kQ==} engines: {node: '>=14.0.0'} - tinyspy@2.2.0: - resolution: {integrity: sha512-d2eda04AN/cPOR89F7Xv5bK/jrQEhmcLFe6HFldoeO9AJtps+fqEnh486vnT/8y4bw38pSyxDcTCAq+Ks2aJTg==} + tinyspy@3.0.2: + resolution: {integrity: sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q==} engines: {node: '>=14.0.0'} title-case@3.0.3: @@ -12710,6 +11463,10 @@ packages: resolution: {integrity: sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==} engines: {node: '>=8.17.0'} + tmp@0.2.3: + resolution: {integrity: sha512-nZD7m9iCPC5g0pYmcaxogYKggSfLsdxl8of3Q/oIbqCqLLIO9IAF0GWjX1z9NZRHPiXv8Wex4yDCaZsgEw0Y8w==} + engines: {node: '>=14.14'} + tmpl@1.0.5: resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==} @@ -12721,9 +11478,6 @@ packages: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} - tocbot@4.21.0: - resolution: {integrity: sha512-vXk8htr8mIl3hc2s2mDkaPTBfqmqZA2o0x7eXbxUibdrpEIPdpM0L9hH/RvEvlgSM+ZTgS34sGipk5+VrLJCLA==} - toidentifier@1.0.1: resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} engines: {node: '>=0.6'} @@ -12735,6 +11489,9 @@ packages: resolution: {integrity: sha512-6udB24Q737UD/SDsKAHI9FCRP7Bqc9D/MQUV02ORQg5iskjtLJlZJNdN4kKtcdtwCeWIwIHDGaUsTsCCAa8sFQ==} engines: {node: '>=10'} + toml@3.0.0: + resolution: {integrity: sha512-y/mWCZinnvxjTKYhJ+pYxwD0mRLVvOtdS2Awbgxln6iEnt4rk0yBxeSBHkGJcPucRiG0e55mwWp+g/05rsrd6w==} + toposort@2.0.2: resolution: {integrity: sha512-0a5EOkAUp8D4moMi2W8ZF8jcga7BgZd91O/yabJCFY8az+XSzeGyTKs0Aoo897iV1Nj6guFq8orWDS96z91oGg==} @@ -12777,25 +11534,25 @@ packages: resolution: {integrity: sha512-lC/RGlPmwdrIBFTX59wwNzqh7aR2otPNPR/5brHZm/XKFYKsfqxihXUe9pU3JI+3vGkl+vyCoNNnPhJn3aLK1A==} engines: {node: '>=16.13.0'} peerDependencies: - typescript: ^5.5.2 + typescript: ^5.6.2 ts-dedent@2.2.0: resolution: {integrity: sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==} engines: {node: '>=6.10'} - ts-essentials@7.0.3: - resolution: {integrity: sha512-8+gr5+lqO3G84KdiTSMRLtuyJ+nTBVRKuCrK4lidMPdVeEp0uqC875uE5NMcaA7YYMN7XsNiFQuMvasF8HT/xQ==} + ts-essentials@10.0.2: + resolution: {integrity: sha512-Xwag0TULqriaugXqVdDiGZ5wuZpqABZlpwQ2Ho4GDyiu/R2Xjkp/9+zcFxL7uzeLl/QCPrflnvpVYyS3ouT7Zw==} peerDependencies: - typescript: ^5.5.2 - - ts-essentials@9.4.2: - resolution: {integrity: sha512-mB/cDhOvD7pg3YCLk2rOtejHjjdSi9in/IBYE13S+8WA5FBSraYf4V/ws55uvs0IvQ/l0wBOlXy5yBNZ9Bl8ZQ==} - peerDependencies: - typescript: ^5.5.2 + typescript: ^5.6.2 peerDependenciesMeta: typescript: optional: true + ts-essentials@7.0.3: + resolution: {integrity: sha512-8+gr5+lqO3G84KdiTSMRLtuyJ+nTBVRKuCrK4lidMPdVeEp0uqC875uE5NMcaA7YYMN7XsNiFQuMvasF8HT/xQ==} + peerDependencies: + typescript: ^5.6.2 + ts-ics@1.2.2: resolution: {integrity: sha512-L7T5JQi99qQ2Uv7AoCHUZ8Mx1bJYo7qBZtBckuHueR90I3WVdW5NC/tOqTVgu18c3zj08du+xlgWlTIcE+Foxw==} peerDependencies: @@ -12816,7 +11573,7 @@ packages: babel-jest: ^29.0.0 esbuild: '*' jest: ^29.0.0 - typescript: ^5.5.2 + typescript: ^5.6.2 peerDependenciesMeta: '@babel/core': optional: true @@ -12830,6 +11587,20 @@ packages: ts-map@1.0.3: resolution: {integrity: sha512-vDWbsl26LIcPGmDpoVzjEP6+hvHZkBkLW7JpvwbCv/5IYPJlsbzCVXY3wsCeAxAUeTclNOUZxnLdGh3VBD/J6w==} + ts-node@10.9.2: + resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==} + hasBin: true + peerDependencies: + '@swc/core': '>=1.2.50' + '@swc/wasm': '>=1.2.50' + '@types/node': ^18.16.16 + typescript: ^5.6.2 + peerDependenciesMeta: + '@swc/core': + optional: true + '@swc/wasm': + optional: true + ts-toolbelt@9.6.0: resolution: {integrity: sha512-nsZd8ZeNUzukXPlJmTBwUAuABDe/9qtVDelJeT/qW0ow3ZS3BsQJtNkan1802aM9Uf68/Y8ljw86Hu0h5IUW3w==} @@ -12838,16 +11609,16 @@ packages: peerDependencies: ts-toolbelt: ^9.6.0 - tsc-alias@1.8.7: - resolution: {integrity: sha512-59Q/zUQa3miTf99mLbSqaW0hi1jt4WoG8Uhe5hSZJHQpSoFW9eEwvW7jlKMHXWvT+zrzy3SN9PE/YBhQ+WVydA==} + tsc-alias@1.8.10: + resolution: {integrity: sha512-Ibv4KAWfFkFdKJxnWfVtdOmB0Zi1RJVxcbPGiCDsFpCQSsmpWyuzHG3rQyI5YkobWwxFPEyQfu1hdo4qLG2zPw==} hasBin: true - tsc-watch@6.0.4: - resolution: {integrity: sha512-cHvbvhjO86w2aGlaHgSCeQRl+Aqw6X6XN4sQMPZKF88GoP30O+oTuh5lRIJr5pgFWrRpF1AgXnJJ2DoFEIPHyg==} + tsc-watch@6.2.0: + resolution: {integrity: sha512-2LBhf9kjKXnz7KQ/puLHlozMzzUNHAdYBNMkg3eksQJ9GBAgMg8czznM83T5PmsoUvDnXzfIeQn2lNcIYDr8LA==} engines: {node: '>=12.12.0'} hasBin: true peerDependencies: - typescript: ^5.5.2 + typescript: ^5.6.2 tsconfig-paths@4.2.0: resolution: {integrity: sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==} @@ -12867,38 +11638,38 @@ packages: resolution: {integrity: sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==} engines: {node: '>=0.6.11 <=0.7.0 || >=0.7.3'} - turbo-darwin-64@1.13.3: - resolution: {integrity: sha512-glup8Qx1qEFB5jerAnXbS8WrL92OKyMmg5Hnd4PleLljAeYmx+cmmnsmLT7tpaVZIN58EAAwu8wHC6kIIqhbWA==} + turbo-darwin-64@2.1.2: + resolution: {integrity: sha512-3TEBxHWh99h2yIzkuIigMEOXt/ItYQp0aPiJjPd1xN4oDcsKK5AxiFKPH9pdtfIBzYsY59kQhZiFj0ELnSP7Bw==} cpu: [x64] os: [darwin] - turbo-darwin-arm64@1.13.3: - resolution: {integrity: sha512-/np2xD+f/+9qY8BVtuOQXRq5f9LehCFxamiQnwdqWm5iZmdjygC5T3uVSYuagVFsZKMvX3ycySwh8dylGTl6lg==} + turbo-darwin-arm64@2.1.2: + resolution: {integrity: sha512-he0miWNq2WxJzsH82jS2Z4MXpnkzn9SH8a79iPXiJkq25QREImucscM4RPasXm8wARp91pyysJMq6aasD45CeA==} cpu: [arm64] os: [darwin] - turbo-linux-64@1.13.3: - resolution: {integrity: sha512-G+HGrau54iAnbXLfl+N/PynqpDwi/uDzb6iM9hXEDG+yJnSJxaHMShhOkXYJPk9offm9prH33Khx2scXrYVW1g==} + turbo-linux-64@2.1.2: + resolution: {integrity: sha512-fKUBcc0rK8Vdqv5a/E3CSpMBLG1bzwv+Q0Q83F8fG2ZfNCNKGbcEYABdonNZkkx141Rj03cZQFCgxu3MVEGU+A==} cpu: [x64] os: [linux] - turbo-linux-arm64@1.13.3: - resolution: {integrity: sha512-qWwEl5VR02NqRyl68/3pwp3c/olZuSp+vwlwrunuoNTm6JXGLG5pTeme4zoHNnk0qn4cCX7DFrOboArlYxv0wQ==} + turbo-linux-arm64@2.1.2: + resolution: {integrity: sha512-sV8Bpmm0WiuxgbhxymcC7wSsuxfBBieI98GegSwbr/bs1ANAgzCg93urIrdKdQ3/b31zZxQwcaP4FBF1wx1Qdg==} cpu: [arm64] os: [linux] - turbo-windows-64@1.13.3: - resolution: {integrity: sha512-Nudr4bRChfJzBPzEmpVV85VwUYRCGKecwkBFpbp2a4NtrJ3+UP1VZES653ckqCu2FRyRuS0n03v9euMbAvzH+Q==} + turbo-windows-64@2.1.2: + resolution: {integrity: sha512-wcmIJZI9ORT9ykHGliFE6kWRQrlH930QGSjSgWC8uFChFFuOyUlvC7ttcxuSvU9VqC7NF4C+GVAcFJQ8lTjN7g==} cpu: [x64] os: [win32] - turbo-windows-arm64@1.13.3: - resolution: {integrity: sha512-ouJCgsVLd3icjRLmRvHQDDZnmGzT64GBupM1Y+TjtYn2LVaEBoV6hicFy8x5DUpnqdLy+YpCzRMkWlwhmkX7sQ==} + turbo-windows-arm64@2.1.2: + resolution: {integrity: sha512-zdnXjrhk7YO6CP+Q5wPueEvOCLH4lDa6C4rrwiakcWcPgcQGbVozJlo4uaQ6awo8HLWQEvOwu84RkWTdLAc/Hw==} cpu: [arm64] os: [win32] - turbo@1.13.3: - resolution: {integrity: sha512-n17HJv4F4CpsYTvKzUJhLbyewbXjq1oLCi90i5tW1TiWDz16ML1eDG7wi5dHaKxzh5efIM56SITnuVbMq5dk4g==} + turbo@2.1.2: + resolution: {integrity: sha512-Jb0rbU4iHEVQ18An/YfakdIv9rKnd3zUfSE117EngrfWXFHo3RndVH96US3GsT8VHpwTncPePDBT2t06PaFLrw==} hasBin: true tween-functions@1.2.0: @@ -12925,10 +11696,6 @@ packages: resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} engines: {node: '>=4'} - type-fest@0.16.0: - resolution: {integrity: sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg==} - engines: {node: '>=10'} - type-fest@0.20.2: resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} engines: {node: '>=10'} @@ -12949,6 +11716,10 @@ packages: resolution: {integrity: sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==} engines: {node: '>=12.20'} + type-fest@4.26.1: + resolution: {integrity: sha512-yOGpmOAL7CkKe/91I5O3gPICmJNLJ1G4zFYVAsRHg7M64biSnPtRj0WNQt++bRkjYOqjWXrhnUw1utzmVErAdg==} + engines: {node: '>=16'} + type-is@1.6.18: resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} engines: {node: '>= 0.6'} @@ -12988,6 +11759,10 @@ packages: resolution: {integrity: sha512-yMi0PlwuznKHxKmcpoOdeLwxBoVPkqZxd7q2FgMkmD3bNwvF5VW0+UlUQ1k1vmktTu4Yu13Q0RIxEP8+B+wloA==} engines: {node: '>= 0.4'} + typed-array-length@1.0.6: + resolution: {integrity: sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==} + engines: {node: '>= 0.4'} + typedarray-dts@1.0.0: resolution: {integrity: sha512-Ka0DBegjuV9IPYFT1h0Qqk5U4pccebNIJCGl8C5uU7xtOs+jpJvKGAY4fHGK25hTmXZOEUl9Cnsg5cS6K/b5DA==} @@ -12997,20 +11772,23 @@ packages: typedi@0.10.0: resolution: {integrity: sha512-v3UJF8xm68BBj6AF4oQML3ikrfK2c9EmZUyLOfShpJuItAqVBHWP/KtpGinkSsIiP6EZyyb6Z3NXyW9dgS9X1w==} - typescript@5.5.2: - resolution: {integrity: sha512-NcRtPEOsPFFWjobJEtfihkLCZCXZt/os3zf8nTxjVH3RvTSxjrCamJpbExGvYOF+tFHc3pA65qpdwPbzjohhew==} + typescript@5.6.2: + resolution: {integrity: sha512-NW8ByodCSNCwZeghjN3o+JX5OFH0Ojg6sadjEKY4huZ52TqbJTJnDo5+Tw98lSy63NZvi4n+ez5m2u5d4PkZyw==} engines: {node: '>=14.17'} hasBin: true uc.micro@1.0.6: resolution: {integrity: sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==} - uc.micro@2.0.0: - resolution: {integrity: sha512-DffL94LsNOccVn4hyfRe5rdKa273swqeA5DJpMOeFmEn1wCDc7nAbbB0gXlgBCL7TNzeTv6G7XVWzan7iJtfig==} + uc.micro@2.1.0: + resolution: {integrity: sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==} ufo@1.3.2: resolution: {integrity: sha512-o+ORpgGwaYQXgqGDwd+hkS4PuZ3QnmqMMxRuajK/a38L6fTpcE5GPIfrf+L/KemFzfUpeUQc1rRS1iDBozvnFA==} + ufo@1.5.4: + resolution: {integrity: sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ==} + uglify-js@3.17.4: resolution: {integrity: sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==} engines: {node: '>=0.8.0'} @@ -13023,15 +11801,6 @@ packages: unbox-primitive@1.0.2: resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} - unbuild@2.0.0: - resolution: {integrity: sha512-JWCUYx3Oxdzvw2J9kTAp+DKE8df/BnH/JTSj6JyA4SH40ECdFu7FoJJcrm8G92B7TjofQ6GZGjJs50TRxoH6Wg==} - hasBin: true - peerDependencies: - typescript: ^5.5.2 - peerDependenciesMeta: - typescript: - optional: true - undefsafe@2.0.5: resolution: {integrity: sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==} @@ -13045,40 +11814,16 @@ packages: resolution: {integrity: sha512-72RFADWFqKmUb2hmmvNODKL3p9hcB6Gt2DOQMis1SEBaV6a4MH8soBvzg+95CYhCKPFedut2JY9bMfrDl9D23g==} engines: {node: '>=14.0'} - undici@6.18.1: - resolution: {integrity: sha512-/0BWqR8rJNRysS5lqVmfc7eeOErcOP4tZpATVjJOojjHZ71gSYVAtFhEmadcIjwMIUehh5NFyKGsXCnXIajtbA==} + undici@6.19.7: + resolution: {integrity: sha512-HR3W/bMGPSr90i8AAp2C4DM3wChFdJPLrWYpIS++LxS8K+W535qftjt+4MyjNYHeWabMj1nvtmLIi7l++iq91A==} engines: {node: '>=18.17'} - unicode-canonical-property-names-ecmascript@2.0.0: - resolution: {integrity: sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==} - engines: {node: '>=4'} - - unicode-match-property-ecmascript@2.0.0: - resolution: {integrity: sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==} - engines: {node: '>=4'} - - unicode-match-property-value-ecmascript@2.1.0: - resolution: {integrity: sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==} - engines: {node: '>=4'} - - unicode-property-aliases-ecmascript@2.1.0: - resolution: {integrity: sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==} - engines: {node: '>=4'} - - unicorn-magic@0.1.0: - resolution: {integrity: sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==} - engines: {node: '>=18'} - unique-filename@1.1.1: resolution: {integrity: sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==} unique-slug@2.0.2: resolution: {integrity: sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==} - unique-string@2.0.0: - resolution: {integrity: sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==} - engines: {node: '>=8'} - unist-util-is@6.0.0: resolution: {integrity: sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==} @@ -13104,8 +11849,8 @@ packages: resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} engines: {node: '>= 0.8'} - unplugin-icons@0.17.4: - resolution: {integrity: sha512-PHLxjBx3ZV8RUBvfMafFl8uWH88jHeZgOijcRpkwgne7y2Ovx7WI0Ltzzw3fjZQ7dGaDhB8udyKVdm9N2S6BIw==} + unplugin-icons@0.19.0: + resolution: {integrity: sha512-u5g/gIZPZEj1wUGEQxe9nzftOSqmblhusc+sL3cawIRoIt/xWpE6XYcPOfAeFTYNjSbRrX/3QiX89PFiazgU1w==} peerDependencies: '@svgr/core': '>=7.0.0' '@svgx/core': ^1.0.1 @@ -13124,20 +11869,30 @@ packages: vue-template-es2015-compiler: optional: true + unplugin-vue-components@0.27.3: + resolution: {integrity: sha512-5wg7lbdg5ZcrAQNzyYK+6gcg/DG8K6rO+f5YeuvqGHs/PhpapBvpA4O/0ex/pFthE5WgRk43iWuRZEMLVsdz4Q==} + engines: {node: '>=14'} + peerDependencies: + '@babel/parser': ^7.15.8 + '@nuxt/kit': ^3.2.2 + vue: 2 || 3 + peerDependenciesMeta: + '@babel/parser': + optional: true + '@nuxt/kit': + optional: true + unplugin@1.0.1: resolution: {integrity: sha512-aqrHaVBWW1JVKBHmGo33T5TxeL0qWzfvjWokObHA9bYmN7eNDkwOxmLjhioHl9878qDFMAaT51XNroRyuz7WxA==} - unplugin@1.5.1: - resolution: {integrity: sha512-0QkvG13z6RD+1L1FoibQqnvTwVBXvS4XSPwAyinVgoOCl2jAgwzdUKmEj05o4Lt8xwQI85Hb6mSyYkcAGwZPew==} + unplugin@1.11.0: + resolution: {integrity: sha512-3r7VWZ/webh0SGgJScpWl2/MRCZK5d3ZYFcNaeci/GQ7Teop7zf0Nl2pUuz7G21BwPd9pcUPOC5KmJ2L3WgC5g==} + engines: {node: '>=14.0.0'} untildify@4.0.0: resolution: {integrity: sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==} engines: {node: '>=8'} - untyped@1.4.0: - resolution: {integrity: sha512-Egkr/s4zcMTEuulcIb7dgURS6QpN7DyqQYdf+jBtiaJvQ+eRsrtWUoX84SbvQWuLkXsOjM+8sJC9u6KoMK/U7Q==} - hasBin: true - update-browserslist-db@1.0.13: resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==} hasBin: true @@ -13147,9 +11902,15 @@ packages: upper-case-first@2.0.2: resolution: {integrity: sha512-514ppYHBaKwfJRK/pNC6c/OxfGa0obSnAl106u97Ed0I625Nin96KAjttZF6ZL3e1XLtphxnqrOi9iWgm+u+bg==} + upper-case@1.1.3: + resolution: {integrity: sha512-WRbjgmYzgXkCV7zNVpy5YgrHgbBv126rMALQQMrmzOVC4GM2waQ9x7xtm8VU+1yF2kWyPzI9zbZ48n4vSxwfSA==} + upper-case@2.0.2: resolution: {integrity: sha512-KgdgDGJt2TpuwBUIjgG6lzw2GWFRCW9Qkfkiv0DxqHHLYJHmtmdUIKcZd8rHgFSjopVTlw6ggzCm1b8MFQwikg==} + uri-js-replace@1.0.1: + resolution: {integrity: sha512-W+C9NWNLFOoBI2QWDp4UT9pv65r2w5Cx+3sTYFvtMdDBxkKt1syCqsUdSFAChbEe1uK5TfS04wt/nGwmaeIQ0g==} + uri-js@4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} @@ -13166,25 +11927,10 @@ packages: resolution: {integrity: sha512-yIQdxJpgkPamPPAPuGdS7Q548rLhny42tg8d4vyTNzFqvOnwqrgHXvgehT09U7fwrzxi3RxCiXjoNUNnNOlQ8A==} engines: {node: '>=6.0.0'} - use-callback-ref@1.3.2: - resolution: {integrity: sha512-elOQwe6Q8gqZgDA8mrh44qRTQqpIHDcZ3hXTLjBe1i4ph8XpNJnO+aQf3NaG+lriLopI4HMx9VjQLfPQ6vhnoA==} - engines: {node: '>=10'} + use-sync-external-store@1.2.2: + resolution: {integrity: sha512-PElTlVMwpblvbNqQ82d2n6RjStvdSoNe9FG28kNfz3WiXilJm4DdNkEzRhCZuIDwY8U08WVihhGR5iRqAwfDiw==} peerDependencies: - '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 react: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@types/react': - optional: true - - use-sidecar@1.1.2: - resolution: {integrity: sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==} - engines: {node: '>=10'} - peerDependencies: - '@types/react': ^16.9.0 || ^17.0.0 || ^18.0.0 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@types/react': - optional: true utf7@1.0.2: resolution: {integrity: sha512-qQrPtYLLLl12NF4DrM9CvfkxkYI97xOb5dsnGZHE3teFr0tWiEZ9UdgMPczv24vl708cYMpe6mGXGHrotIp3Bw==} @@ -13208,6 +11954,10 @@ packages: uuencode@0.0.4: resolution: {integrity: sha512-yEEhCuCi5wRV7Z5ZVf9iV2gWMvUZqKJhAs1ecFdKJ0qzbyaVelmsE3QjYAamehfp9FKLiZbKldd+jklG3O0LfA==} + uuid@10.0.0: + resolution: {integrity: sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==} + hasBin: true + uuid@8.3.2: resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} hasBin: true @@ -13219,10 +11969,17 @@ packages: v3-infinite-loading@1.2.2: resolution: {integrity: sha512-MWJc6yChnqeUasBFJ3Enu8IGPcQgRMSTrAEtT1MsHBEx+QjwvNTaY8o+8V9DgVt1MVhQSl3MC55hsaWLJmpRMw==} + v8-compile-cache-lib@3.0.1: + resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} + v8-to-istanbul@9.1.0: resolution: {integrity: sha512-6z3GW9x8G1gd+JIIgQQQxXuiJtCXeAjp6RaPEPLv62mH3iPHPxV6W3robxtCzNErRo6ZwTmzWhsbNvjyEBKzKA==} engines: {node: '>=10.12.0'} + valid-data-url@3.0.1: + resolution: {integrity: sha512-jOWVmzVceKlVVdwjNSenT4PbGghU0SBIizAev8ofZVgivk/TVHXSbNL8LP6M3spZvkR9/QolkyJavGSX5Cs0UA==} + engines: {node: '>=10'} + validate-npm-package-license@3.0.4: resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} @@ -13238,23 +11995,23 @@ packages: resolution: {integrity: sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==} engines: {'0': node >=0.6.0} - vite-node@1.6.0: - resolution: {integrity: sha512-de6HJgzC+TFzOu0NTC4RAIsyf/DY/ibWDYQUcuEA84EMHhcefTUGkjFHKKEJhQN4A+6I0u++kr3l36ZF2d7XRw==} + vite-node@2.1.2: + resolution: {integrity: sha512-HPcGNN5g/7I2OtPjLqgOtCRu/qhVvBxTUD3qzitmL0SrG1cWFzxzhMDWussxSbrRYWqnKf8P2jiNhPMSN+ymsQ==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true - vite-plugin-dts@3.7.3: - resolution: {integrity: sha512-26eTlBYdpjRLWCsTJebM8vkCieE+p9gP3raf+ecDnzzK5E3FG6VE1wcy55OkRpfWWVlVvKkYFe6uvRHYWx7Nog==} + vite-plugin-dts@4.2.3: + resolution: {integrity: sha512-O5NalzHANQRwVw1xj8KQun3Bv8OSDAlNJXrnqoAz10BOuW8FVvY5g4ygj+DlJZL5mtSPuMu9vd3OfrdW5d4k6w==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: - typescript: ^5.5.2 + typescript: ^5.6.2 vite: '*' peerDependenciesMeta: vite: optional: true - vite@5.2.12: - resolution: {integrity: sha512-/gC8GxzxMK5ntBwb48pR32GGhENnjtY30G4A0jemunsBkiEZFw60s8InGpN8gkhHEkjnRK1aSAxeQgwvFhUHAA==} + vite@5.4.8: + resolution: {integrity: sha512-FqrItQ4DT1NC4zCUqMB4c4AZORMKIa0m8/URVCZ77OZ/QSNeJ54bU1vrFADbDsuwfIPcgknRkmqakQcgnL4GiQ==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true peerDependencies: @@ -13262,6 +12019,7 @@ packages: less: '*' lightningcss: ^1.21.0 sass: '*' + sass-embedded: '*' stylus: '*' sugarss: '*' terser: ^5.4.0 @@ -13274,6 +12032,8 @@ packages: optional: true sass: optional: true + sass-embedded: + optional: true stylus: optional: true sugarss: @@ -13281,21 +12041,21 @@ packages: terser: optional: true - vitest-mock-extended@1.3.1: - resolution: {integrity: sha512-OpghYjh4BDuQ/Mzs3lFMQ1QRk9D8/2O9T47MLUA5eLn7K4RWIy+MfIivYOWEyxjTENjsBnzgMihDjyNalN/K0Q==} + vitest-mock-extended@2.0.2: + resolution: {integrity: sha512-n3MBqVITKyclZ0n0y66hkT4UiiEYFQn9tteAnIxT0MPz1Z8nFcPUG3Cf0cZOyoPOj/cq6Ab1XFw2lM/qM5EDWQ==} peerDependencies: - typescript: ^5.5.2 - vitest: '>=0.31.1' + typescript: ^5.6.2 + vitest: '>=2.0.0' - vitest@1.6.0: - resolution: {integrity: sha512-H5r/dN06swuFnzNFhq/dnz37bPXnq8xB2xB5JOVk8K09rUtoeNN+LHWkoQ0A/i3hvbUKKcCei9KpbxqHMLhLLA==} + vitest@2.1.2: + resolution: {integrity: sha512-veNjLizOMkRrJ6xxb+pvxN6/QAWg95mzcRjtmkepXdN87FNfxAss9RKe2far/G9cQpipfgP2taqg0KiWsquj8A==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true peerDependencies: '@edge-runtime/vm': '*' '@types/node': ^18.16.16 - '@vitest/browser': 1.6.0 - '@vitest/ui': 1.6.0 + '@vitest/browser': 2.1.2 + '@vitest/ui': 2.1.2 happy-dom: '*' jsdom: '*' peerDependenciesMeta: @@ -13316,6 +12076,9 @@ packages: resolution: {integrity: sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w==} engines: {node: '>=0.10.0'} + vscode-uri@3.0.8: + resolution: {integrity: sha512-AyFQ0EVmsOZOlAnxoFOGOq1SQDWAB7C6aqMGS23svWAllfOaxbuFvcT8D1i8z3Gyn8fraVeZNNmN6e9bxxXkKw==} + vue-agile@2.0.0: resolution: {integrity: sha512-5xkSLJQNRdQ7qpEnXj5FgLg33XKRHaTZKGP5qkvteOc/uGJX89MYCjPSgdNqJ1GYFGfdGAp0jvhihW8OMuXS3g==} @@ -13330,36 +12093,19 @@ packages: chart.js: ^4.1.1 vue: ^3.0.0-0 || ^2.7.0 - vue-component-meta@2.0.19: - resolution: {integrity: sha512-Iv6VWXnlkUyJZvgadxYLcZajb58qUuIrQUePGbm0yZQEKMTb2T09UK57hz35TU4lb7zobierICDKvzInEpOGpg==} + vue-component-meta@2.1.6: + resolution: {integrity: sha512-N5zReatWQTNqULhatFib69K82g5UhDERVobeqrT5S6Uk2QoCeYbsSY8nHRUwJFywE2iXRFN4B+XPhI+piZfC6w==} peerDependencies: - typescript: ^5.5.2 + typescript: ^5.6.2 peerDependenciesMeta: typescript: optional: true - vue-component-type-helpers@1.8.25: - resolution: {integrity: sha512-NCA6sekiJIMnMs4DdORxATXD+/NRkQpS32UC+I1KQJUasx+Z7MZUb3Y+MsKsFmX+PgyTYSteb73JW77AibaCCw==} + vue-component-type-helpers@2.1.6: + resolution: {integrity: sha512-ng11B8B/ZADUMMOsRbqv0arc442q7lifSubD0v8oDXIFoMg/mXwAPUunrroIDkY+mcD0dHKccdaznSVp8EoX3w==} - vue-component-type-helpers@2.0.19: - resolution: {integrity: sha512-cN3f1aTxxKo4lzNeQAkVopswuImUrb5Iurll9Gaw5cqpnbTAxtEMM1mgi6ou4X79OCyqYv1U1mzBHJkzmiK82w==} - - vue-component-type-helpers@2.0.22: - resolution: {integrity: sha512-gPr2Ba7efUwy/Vfbuf735bHSVdN4ycoZUCHfypkI33M9DUH+ieRblLLVM2eImccFYaWNWwEzURx02EgoXDBmaQ==} - - vue-demi@0.14.5: - resolution: {integrity: sha512-o9NUVpl/YlsGJ7t+xuqJKx8EBGf1quRhCiT6D/J0pfwmk9zUwYkC7yrF4SZCe6fETvSM3UNL2edcbYrSyc4QHA==} - engines: {node: '>=12'} - hasBin: true - peerDependencies: - '@vue/composition-api': ^1.0.0-rc.1 - vue: ^3.0.0-0 || ^2.6.0 - peerDependenciesMeta: - '@vue/composition-api': - optional: true - - vue-demi@0.14.6: - resolution: {integrity: sha512-8QA7wrYSHKaYgUxDA5ZC24w+eHm3sYCbp0EzcDwKqN3p6HqtTCGR/GVsPyZW92unff4UlcSh++lmqDWN3ZIq4w==} + vue-demi@0.14.10: + resolution: {integrity: sha512-nMZBOwuzabUO0nLgIcc6rycZEebF6eeUfaiQx9+WSk8e29IbLvPU9feI6tqW4kTo3hvoYAJkMh8n8D0fuISphg==} engines: {node: '>=12'} hasBin: true peerDependencies: @@ -13397,41 +12143,29 @@ packages: peerDependencies: vue: '>=3.0.0' - vue-markdown-render@2.0.1: - resolution: {integrity: sha512-/UBCu0OrZ9zzEDtiZVwlV/CQ+CgcwViServGis3TRXSVc6+6lJxcaOcD43vRoQzYfPa9r9WDt0Q7GyupOmpEWA==} - - vue-markdown-render@2.1.1: - resolution: {integrity: sha512-szuJVbCwgIpVsggd8IHGB2lLo8BH8Ojd+wakaOTASNxdYcccKxoMcvDqUsLoGwgKDY8yJf0U/+ppffEYxsEHkA==} + vue-markdown-render@2.2.1: + resolution: {integrity: sha512-XkYnC0PMdbs6Vy6j/gZXSvCuOS0787Se5COwXlepRqiqPiunyCIeTPQAO2XnB4Yl04EOHXwLx5y6IuszMWSgyQ==} peerDependencies: vue: ^3.3.4 - vue-router@4.2.2: - resolution: {integrity: sha512-cChBPPmAflgBGmy3tBsjeoe3f3VOSG6naKyY5pjtrqLGbNEXdzCigFUHgBvp9e3ysAtFtEx7OLqcSDh/1Cq2TQ==} + vue-router@4.4.5: + resolution: {integrity: sha512-4fKZygS8cH1yCyuabAXGUAsyi1b2/o/OKgu/RUb+znIYOxPRxdkytJEx+0wGcpBE1pX6vUgh5jwWOKRGvuA/7Q==} peerDependencies: vue: ^3.2.0 - vue-template-compiler@2.7.14: - resolution: {integrity: sha512-zyA5Y3ArvVG0NacJDkkzJuPQDF8RFeRlzV2vLeSnhSpieO6LK2OVbdLPi5MPPs09Ii+gMO8nY4S3iKQxBxDmWQ==} - - vue-tsc@1.8.27: - resolution: {integrity: sha512-WesKCAZCRAbmmhuGl3+VrdWItEvfoFIPXOvUJkjULi+x+6G/Dy69yO3TBRJDr9eUlmsNAwVmxsNZxvHKzbkKdg==} + vue-tsc@2.1.6: + resolution: {integrity: sha512-f98dyZp5FOukcYmbFpuSCJ4Z0vHSOSmxGttZJCsFeX0M4w/Rsq0s4uKXjcSRsZqsRgQa6z7SfuO+y0HVICE57Q==} hasBin: true peerDependencies: - typescript: ^5.5.2 - - vue-tsc@2.0.19: - resolution: {integrity: sha512-JWay5Zt2/871iodGF72cELIbcAoPyhJxq56mPPh+M2K7IwI688FMrFKc/+DvB05wDWEuCPexQJ6L10zSwzzapg==} - hasBin: true - peerDependencies: - typescript: ^5.5.2 + typescript: ^5.6.2 vue3-touch-events@4.1.3: resolution: {integrity: sha512-uXTclRzn7de1mgiDIZ8N4J/wnWl1vBPLTWr60fqoLXu7ifhDKpl83Q2m9qA20KfEiAy+L4X/xXGc5ptGmdPh4A==} - vue@3.4.21: - resolution: {integrity: sha512-5hjyV/jLEIKD/jYl4cavMcnzKwjMKohureP8ejn3hhEjwhWIhWeuzL2kJAjzl/WyVsgPY56Sy4Z40C3lVshxXA==} + vue@3.5.11: + resolution: {integrity: sha512-/8Wurrd9J3lb72FTQS7gRMNQD4nztTtKPmuDuPuhqXmmpD6+skVjAeahNpVzsuky6Sy9gy7wn8UadqPtt9SQIg==} peerDependencies: - typescript: ^5.5.2 + typescript: ^5.6.2 peerDependenciesMeta: typescript: optional: true @@ -13447,20 +12181,17 @@ packages: resolution: {integrity: sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==} engines: {node: '>=18'} - wait-on@7.2.0: - resolution: {integrity: sha512-wCQcHkRazgjG5XoAq9jbTMLpNIjoSlZslrJ2+N9MxDsGEv1HnFoVjOCexL0ESva7Y9cu350j+DWADdk54s4AFQ==} + wait-on@8.0.1: + resolution: {integrity: sha512-1wWQOyR2LVVtaqrcIL2+OM+x7bkpmzVROa0Nf6FryXkS+er5Sa1kzFGjzZRqLnHa3n1rACFLeTwUqE1ETL9Mig==} engines: {node: '>=12.0.0'} hasBin: true walker@1.0.8: resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} - watchpack@2.4.0: - resolution: {integrity: sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==} - engines: {node: '>=10.13.0'} - - wcwidth@1.0.1: - resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} + web-resource-inliner@6.0.1: + resolution: {integrity: sha512-kfqDxt5dTB1JhqsCUQVFDj0rmY+4HLwGQIsLPbyrsN9y9WV/1oFDSx3BQ4GfCv9X+jVeQ7rouTqwK53rA/7t8A==} + engines: {node: '>=10.0.0'} web-streams-polyfill@3.2.1: resolution: {integrity: sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q==} @@ -13487,16 +12218,6 @@ packages: webpack-virtual-modules@0.6.1: resolution: {integrity: sha512-poXpCylU7ExuvZK8z+On3kX+S8o/2dQ/SVYueKA0D4WEMXROXgY8Ez50/bQEUmvoSMMrWcrJqCHuhAbsiwg7Dg==} - webpack@5.75.0: - resolution: {integrity: sha512-piaIaoVJlqMsPtX/+3KTTO6jfvrSYgauFVdt8cr9LTHKmcq/AMd4mhzsiP7ZF/PGRNPGA8336jldh9l2Kt2ogQ==} - engines: {node: '>=10.13.0'} - hasBin: true - peerDependencies: - webpack-cli: '*' - peerDependenciesMeta: - webpack-cli: - optional: true - whatwg-encoding@2.0.0: resolution: {integrity: sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==} engines: {node: '>=12'} @@ -13505,6 +12226,9 @@ packages: resolution: {integrity: sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==} engines: {node: '>=18'} + whatwg-fetch@3.6.20: + resolution: {integrity: sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg==} + whatwg-mimetype@3.0.0: resolution: {integrity: sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==} engines: {node: '>=12'} @@ -13534,10 +12258,6 @@ packages: which-collection@1.0.1: resolution: {integrity: sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==} - which-typed-array@1.1.11: - resolution: {integrity: sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew==} - engines: {node: '>= 0.4'} - which-typed-array@1.1.15: resolution: {integrity: sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==} engines: {node: '>= 0.4'} @@ -13551,8 +12271,8 @@ packages: engines: {node: '>= 8'} hasBin: true - why-is-node-running@2.2.2: - resolution: {integrity: sha512-6tSwToZxTOcotxHeA+qGCq1mVzKR3CwcJGmVcY+QE8SHy6TnpFnh8PAvPNHYr7EcuVeG0QSMxtYCuO1ta/G/oA==} + why-is-node-running@2.3.0: + resolution: {integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==} engines: {node: '>=8'} hasBin: true @@ -13563,12 +12283,12 @@ packages: resolution: {integrity: sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==} engines: {node: '>=8'} - winston-transport@4.5.0: - resolution: {integrity: sha512-YpZzcUzBedhlTAfJg6vJDlyEai/IFMIVcaEZZyl3UXIl4gmqRpU7AE89AHLkbzLUsv0NVmw7ts+iztqKxxPW1Q==} - engines: {node: '>= 6.4.0'} + winston-transport@4.8.0: + resolution: {integrity: sha512-qxSTKswC6llEMZKgCQdaWgDuMJQnhuvF5f2Nk3SNXc4byfQ+voo2mX1Px9dkNOuR8p0KAjfPG29PuYUSIb+vSA==} + engines: {node: '>= 12.0.0'} - winston@3.8.2: - resolution: {integrity: sha512-MsE1gRx1m5jdTTO9Ld/vND4krP2To+lgDoMEHGGa4HIlAUyXJtfc7CxQcGXVyz2IBpw5hbFkj2b/AtUdQwyRew==} + winston@3.14.2: + resolution: {integrity: sha512-CO8cdpBB2yqzEf8v895L+GNKYJiEq8eKlHU38af3snQBQ+sdAIUepjMSguOIJC7ICbzm0ZI+Af2If4vIJrtmOg==} engines: {node: '>= 12.0.0'} with@7.0.2: @@ -13606,9 +12326,6 @@ packages: wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} - write-file-atomic@2.4.3: - resolution: {integrity: sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==} - write-file-atomic@4.0.2: resolution: {integrity: sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} @@ -13676,8 +12393,8 @@ packages: xregexp@2.0.0: resolution: {integrity: sha512-xl/50/Cf32VsGq/1R8jJE5ajH1yMCQkpmoS10QbFZWl2Oor4H0Me64Pu2yxvsRWK3m6soJbmGfzSR7BYmDcWAA==} - xss@1.0.14: - resolution: {integrity: sha512-og7TEJhXvn1a7kzZGQ7ETjdQVS2UfZyTlsEdDOqvQF7GoxNfY+0YLCzBy1kPdsDDx4QuNAonQPddpsn6Xl/7sw==} + xss@1.0.15: + resolution: {integrity: sha512-FVdlVVC67WOIPvfOwhoMETV72f6GbW7aOabBC3WxN/oUdoEMDyLz4OgRv5/gck2ZeNqEQu+Tb0kloovXOfpYVg==} engines: {node: '>= 0.10.0'} hasBin: true @@ -13721,6 +12438,10 @@ packages: resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} engines: {node: '>=12'} + yargs@16.2.0: + resolution: {integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==} + engines: {node: '>=10'} + yargs@17.0.1: resolution: {integrity: sha512-xBBulfCc8Y6gLFcrPvtqKz9hz8SO0l1Ni8GgDekvBX2ro0HRQImDGnikfc33cgzcYUSncapnNcZDjVFIH3f6KQ==} engines: {node: '>=12'} @@ -13736,39 +12457,36 @@ packages: yauzl@2.10.0: resolution: {integrity: sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==} + yn@3.1.1: + resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} + engines: {node: '>=6'} + yocto-queue@0.1.0: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} - yocto-queue@1.0.0: - resolution: {integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==} - engines: {node: '>=12.20'} - yup@0.32.11: resolution: {integrity: sha512-Z2Fe1bn+eLstG8DRR6FTavGD+MeAwyfmouhHsIUgaADz8jvFKbO/fXc2trJKZg+5EBjh4gGm3iU/t3onKlXHIg==} engines: {node: '>=10'} - z-schema@5.0.5: - resolution: {integrity: sha512-D7eujBWkLa3p2sIpJA0d1pr7es+a7m0vFAnZLlCEKq/Ij2k0MLi9Br2UPxoxdYystm5K1yeBGzub0FlYUEWj2Q==} - engines: {node: '>=8.0.0'} - hasBin: true - - zod-to-json-schema@3.22.4: - resolution: {integrity: sha512-2Ed5dJ+n/O3cU383xSY28cuVi0BCQhF8nYqWU5paEpl7fVdqdAmiLdqLyfblbNdfOFwFfi/mqU4O1pwc60iBhQ==} + zod-class@0.0.15: + resolution: {integrity: sha512-CD5B4e9unKPj1hiy7JOSwRV01WqbEBkFOlhws0C9s9wB0FSpECOnlKXOAkjo9tKYX2enQsXWyyOIBNPPNUHWRA==} peerDependencies: - zod: ^3.22.4 + zod: ^3 - zod-to-json-schema@3.23.0: - resolution: {integrity: sha512-az0uJ243PxsRIa2x1WmNE/pnuA05gUq/JB8Lwe1EDCCL/Fz9MgjYQ0fPlyc2Tcv6aF2ZA7WM5TWaRZVEFaAIag==} + zod-to-json-schema@3.23.3: + resolution: {integrity: sha512-TYWChTxKQbRJp5ST22o/Irt9KC5nj7CdBKYB/AosCRdj/wxEMvv4NNaj9XVUHDOIp53ZxArGhnw5HMZziPFjog==} peerDependencies: zod: ^3.23.3 - zod@3.22.4: - resolution: {integrity: sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg==} - zod@3.23.8: resolution: {integrity: sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==} + zx@8.1.4: + resolution: {integrity: sha512-QFDYYpnzdpRiJ3dL2102Cw26FpXpWshW4QLTGxiYfIcwdAqg084jRCkK/kuP/NOSkxOjydRwNFG81qzA5r1a6w==} + engines: {node: '>= 12.17.0'} + hasBin: true + snapshots: '@aashutoshrathi/word-wrap@1.2.6': {} @@ -13776,16 +12494,16 @@ snapshots: '@acuminous/bitsyntax@0.1.2': dependencies: buffer-more-ints: 1.0.0 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.7 safe-buffer: 5.1.2 transitivePeerDependencies: - supports-color - '@adobe/css-tools@4.3.2': {} + '@adobe/css-tools@4.4.0': {} '@alloc/quick-lru@5.2.0': {} - '@ampproject/remapping@2.2.1': + '@ampproject/remapping@2.3.0': dependencies: '@jridgewell/gen-mapping': 0.3.5 '@jridgewell/trace-mapping': 0.3.25 @@ -13795,9 +12513,13 @@ snapshots: execa: 5.1.1 find-up: 5.0.0 - '@antfu/utils@0.7.6': {} + '@antfu/install-pkg@0.3.3': + dependencies: + '@jsdevtools/ez-spawn': 3.0.4 - '@anthropic-ai/sdk@0.21.1(encoding@0.1.13)': + '@antfu/utils@0.7.10': {} + + '@anthropic-ai/sdk@0.27.3(encoding@0.1.13)': dependencies: '@types/node': 18.16.16 '@types/node-fetch': 2.6.4 @@ -13806,16 +12528,14 @@ snapshots: form-data-encoder: 1.7.2 formdata-node: 4.4.1 node-fetch: 2.7.0(encoding@0.1.13) - web-streams-polyfill: 3.2.1 transitivePeerDependencies: - encoding - supports-color - '@apidevtools/json-schema-ref-parser@9.1.2': + '@apidevtools/json-schema-ref-parser@11.7.0': dependencies: '@jsdevtools/ono': 7.1.3 '@types/json-schema': 7.0.15 - call-me-maybe: 1.0.1 js-yaml: 4.1.0 '@authenio/xml-encryption@2.0.2': @@ -13824,827 +12544,806 @@ snapshots: escape-html: 1.0.3 xpath: 0.0.32 - '@aw-web-design/x-default-browser@1.4.126': - dependencies: - default-browser-id: 3.0.0 - '@aws-crypto/crc32@3.0.0': dependencies: '@aws-crypto/util': 3.0.0 - '@aws-sdk/types': 3.535.0 + '@aws-sdk/types': 3.664.0 tslib: 2.6.2 - '@aws-crypto/crc32c@3.0.0': + '@aws-crypto/crc32@5.2.0': dependencies: - '@aws-crypto/util': 3.0.0 - '@aws-sdk/types': 3.535.0 + '@aws-crypto/util': 5.2.0 + '@aws-sdk/types': 3.664.0 tslib: 2.6.2 - '@aws-crypto/ie11-detection@3.0.0': + '@aws-crypto/crc32c@5.2.0': dependencies: + '@aws-crypto/util': 5.2.0 + '@aws-sdk/types': 3.664.0 tslib: 2.6.2 - '@aws-crypto/sha1-browser@3.0.0': + '@aws-crypto/sha1-browser@5.2.0': dependencies: - '@aws-crypto/ie11-detection': 3.0.0 - '@aws-crypto/supports-web-crypto': 3.0.0 - '@aws-crypto/util': 3.0.0 - '@aws-sdk/types': 3.535.0 + '@aws-crypto/supports-web-crypto': 5.2.0 + '@aws-crypto/util': 5.2.0 + '@aws-sdk/types': 3.664.0 '@aws-sdk/util-locate-window': 3.310.0 - '@aws-sdk/util-utf8-browser': 3.259.0 + '@smithy/util-utf8': 2.3.0 tslib: 2.6.2 - '@aws-crypto/sha256-browser@3.0.0': + '@aws-crypto/sha256-browser@5.2.0': dependencies: - '@aws-crypto/ie11-detection': 3.0.0 - '@aws-crypto/sha256-js': 3.0.0 - '@aws-crypto/supports-web-crypto': 3.0.0 - '@aws-crypto/util': 3.0.0 - '@aws-sdk/types': 3.535.0 + '@aws-crypto/sha256-js': 5.2.0 + '@aws-crypto/supports-web-crypto': 5.2.0 + '@aws-crypto/util': 5.2.0 + '@aws-sdk/types': 3.664.0 '@aws-sdk/util-locate-window': 3.310.0 - '@aws-sdk/util-utf8-browser': 3.259.0 + '@smithy/util-utf8': 2.3.0 tslib: 2.6.2 - '@aws-crypto/sha256-js@3.0.0': + '@aws-crypto/sha256-js@5.2.0': dependencies: - '@aws-crypto/util': 3.0.0 - '@aws-sdk/types': 3.535.0 + '@aws-crypto/util': 5.2.0 + '@aws-sdk/types': 3.664.0 tslib: 2.6.2 - '@aws-crypto/supports-web-crypto@3.0.0': + '@aws-crypto/supports-web-crypto@5.2.0': dependencies: tslib: 2.6.2 '@aws-crypto/util@3.0.0': dependencies: - '@aws-sdk/types': 3.535.0 + '@aws-sdk/types': 3.664.0 '@aws-sdk/util-utf8-browser': 3.259.0 tslib: 2.6.2 - '@aws-sdk/client-bedrock-runtime@3.535.0': + '@aws-crypto/util@5.2.0': dependencies: - '@aws-crypto/sha256-browser': 3.0.0 - '@aws-crypto/sha256-js': 3.0.0 - '@aws-sdk/client-sts': 3.535.0(@aws-sdk/credential-provider-node@3.535.0) - '@aws-sdk/core': 3.535.0 - '@aws-sdk/credential-provider-node': 3.535.0 - '@aws-sdk/middleware-host-header': 3.535.0 - '@aws-sdk/middleware-logger': 3.535.0 - '@aws-sdk/middleware-recursion-detection': 3.535.0 - '@aws-sdk/middleware-user-agent': 3.535.0 - '@aws-sdk/region-config-resolver': 3.535.0 - '@aws-sdk/types': 3.535.0 - '@aws-sdk/util-endpoints': 3.535.0 - '@aws-sdk/util-user-agent-browser': 3.535.0 - '@aws-sdk/util-user-agent-node': 3.535.0 - '@smithy/config-resolver': 2.2.0 - '@smithy/core': 1.4.2 - '@smithy/eventstream-serde-browser': 2.2.0 - '@smithy/eventstream-serde-config-resolver': 2.2.0 - '@smithy/eventstream-serde-node': 2.2.0 - '@smithy/fetch-http-handler': 2.5.0 - '@smithy/hash-node': 2.2.0 - '@smithy/invalid-dependency': 2.2.0 - '@smithy/middleware-content-length': 2.2.0 - '@smithy/middleware-endpoint': 2.5.1 - '@smithy/middleware-retry': 2.3.1 - '@smithy/middleware-serde': 2.3.0 - '@smithy/middleware-stack': 2.2.0 - '@smithy/node-config-provider': 2.3.0 - '@smithy/node-http-handler': 2.5.0 - '@smithy/protocol-http': 3.3.0 - '@smithy/smithy-client': 2.5.1 - '@smithy/types': 2.12.0 - '@smithy/url-parser': 2.2.0 - '@smithy/util-base64': 2.3.0 - '@smithy/util-body-length-browser': 2.2.0 - '@smithy/util-body-length-node': 2.3.0 - '@smithy/util-defaults-mode-browser': 2.2.1 - '@smithy/util-defaults-mode-node': 2.3.1 - '@smithy/util-endpoints': 1.2.0 - '@smithy/util-middleware': 2.2.0 - '@smithy/util-retry': 2.2.0 - '@smithy/util-stream': 2.2.0 + '@aws-sdk/types': 3.664.0 '@smithy/util-utf8': 2.3.0 tslib: 2.6.2 - transitivePeerDependencies: - - aws-crt - '@aws-sdk/client-s3@3.478.0': + '@aws-sdk/client-bedrock-agent-runtime@3.666.0': dependencies: - '@aws-crypto/sha1-browser': 3.0.0 - '@aws-crypto/sha256-browser': 3.0.0 - '@aws-crypto/sha256-js': 3.0.0 - '@aws-sdk/client-sts': 3.478.0 - '@aws-sdk/core': 3.477.0 - '@aws-sdk/credential-provider-node': 3.478.0 - '@aws-sdk/middleware-bucket-endpoint': 3.470.0 - '@aws-sdk/middleware-expect-continue': 3.468.0 - '@aws-sdk/middleware-flexible-checksums': 3.468.0 - '@aws-sdk/middleware-host-header': 3.468.0 - '@aws-sdk/middleware-location-constraint': 3.468.0 - '@aws-sdk/middleware-logger': 3.468.0 - '@aws-sdk/middleware-recursion-detection': 3.468.0 - '@aws-sdk/middleware-sdk-s3': 3.474.0 - '@aws-sdk/middleware-signing': 3.468.0 - '@aws-sdk/middleware-ssec': 3.468.0 - '@aws-sdk/middleware-user-agent': 3.478.0 - '@aws-sdk/region-config-resolver': 3.470.0 - '@aws-sdk/signature-v4-multi-region': 3.474.0 - '@aws-sdk/types': 3.468.0 - '@aws-sdk/util-endpoints': 3.478.0 - '@aws-sdk/util-user-agent-browser': 3.468.0 - '@aws-sdk/util-user-agent-node': 3.470.0 - '@aws-sdk/xml-builder': 3.472.0 - '@smithy/config-resolver': 2.0.21 - '@smithy/core': 1.2.0 - '@smithy/eventstream-serde-browser': 2.0.15 - '@smithy/eventstream-serde-config-resolver': 2.0.15 - '@smithy/eventstream-serde-node': 2.0.15 - '@smithy/fetch-http-handler': 2.3.1 - '@smithy/hash-blob-browser': 2.0.16 - '@smithy/hash-node': 2.0.17 - '@smithy/hash-stream-node': 2.0.17 - '@smithy/invalid-dependency': 2.0.15 - '@smithy/md5-js': 2.0.17 - '@smithy/middleware-content-length': 2.0.17 - '@smithy/middleware-endpoint': 2.2.3 - '@smithy/middleware-retry': 2.0.24 - '@smithy/middleware-serde': 2.0.15 - '@smithy/middleware-stack': 2.0.9 - '@smithy/node-config-provider': 2.1.8 - '@smithy/node-http-handler': 2.2.1 - '@smithy/protocol-http': 3.0.11 - '@smithy/smithy-client': 2.1.18 - '@smithy/types': 2.12.0 - '@smithy/url-parser': 2.0.15 - '@smithy/util-base64': 2.0.1 - '@smithy/util-body-length-browser': 2.0.1 - '@smithy/util-body-length-node': 2.1.0 - '@smithy/util-defaults-mode-browser': 2.0.22 - '@smithy/util-defaults-mode-node': 2.0.29 - '@smithy/util-endpoints': 1.0.7 - '@smithy/util-retry': 2.0.8 - '@smithy/util-stream': 2.0.23 - '@smithy/util-utf8': 2.0.2 - '@smithy/util-waiter': 2.0.15 - fast-xml-parser: 4.2.5 + '@aws-crypto/sha256-browser': 5.2.0 + '@aws-crypto/sha256-js': 5.2.0 + '@aws-sdk/client-sso-oidc': 3.666.0(@aws-sdk/client-sts@3.666.0) + '@aws-sdk/client-sts': 3.666.0 + '@aws-sdk/core': 3.666.0 + '@aws-sdk/credential-provider-node': 3.666.0(@aws-sdk/client-sso-oidc@3.666.0(@aws-sdk/client-sts@3.666.0))(@aws-sdk/client-sts@3.666.0) + '@aws-sdk/middleware-host-header': 3.664.0 + '@aws-sdk/middleware-logger': 3.664.0 + '@aws-sdk/middleware-recursion-detection': 3.664.0 + '@aws-sdk/middleware-user-agent': 3.666.0 + '@aws-sdk/region-config-resolver': 3.664.0 + '@aws-sdk/types': 3.664.0 + '@aws-sdk/util-endpoints': 3.664.0 + '@aws-sdk/util-user-agent-browser': 3.664.0 + '@aws-sdk/util-user-agent-node': 3.666.0 + '@smithy/config-resolver': 3.0.9 + '@smithy/core': 2.4.8 + '@smithy/eventstream-serde-browser': 3.0.10 + '@smithy/eventstream-serde-config-resolver': 3.0.7 + '@smithy/eventstream-serde-node': 3.0.9 + '@smithy/fetch-http-handler': 3.2.9 + '@smithy/hash-node': 3.0.7 + '@smithy/invalid-dependency': 3.0.7 + '@smithy/middleware-content-length': 3.0.9 + '@smithy/middleware-endpoint': 3.1.4 + '@smithy/middleware-retry': 3.0.23 + '@smithy/middleware-serde': 3.0.7 + '@smithy/middleware-stack': 3.0.7 + '@smithy/node-config-provider': 3.1.8 + '@smithy/node-http-handler': 3.2.4 + '@smithy/protocol-http': 4.1.4 + '@smithy/smithy-client': 3.4.0 + '@smithy/types': 3.5.0 + '@smithy/url-parser': 3.0.7 + '@smithy/util-base64': 3.0.0 + '@smithy/util-body-length-browser': 3.0.0 + '@smithy/util-body-length-node': 3.0.0 + '@smithy/util-defaults-mode-browser': 3.0.23 + '@smithy/util-defaults-mode-node': 3.0.23 + '@smithy/util-endpoints': 2.1.3 + '@smithy/util-middleware': 3.0.7 + '@smithy/util-retry': 3.0.7 + '@smithy/util-utf8': 3.0.0 tslib: 2.6.2 transitivePeerDependencies: - aws-crt - '@aws-sdk/client-sso-oidc@3.535.0(@aws-sdk/credential-provider-node@3.535.0)': + '@aws-sdk/client-bedrock-runtime@3.666.0': dependencies: - '@aws-crypto/sha256-browser': 3.0.0 - '@aws-crypto/sha256-js': 3.0.0 - '@aws-sdk/client-sts': 3.535.0(@aws-sdk/credential-provider-node@3.535.0) - '@aws-sdk/core': 3.535.0 - '@aws-sdk/credential-provider-node': 3.535.0 - '@aws-sdk/middleware-host-header': 3.535.0 - '@aws-sdk/middleware-logger': 3.535.0 - '@aws-sdk/middleware-recursion-detection': 3.535.0 - '@aws-sdk/middleware-user-agent': 3.535.0 - '@aws-sdk/region-config-resolver': 3.535.0 - '@aws-sdk/types': 3.535.0 - '@aws-sdk/util-endpoints': 3.535.0 - '@aws-sdk/util-user-agent-browser': 3.535.0 - '@aws-sdk/util-user-agent-node': 3.535.0 - '@smithy/config-resolver': 2.2.0 - '@smithy/core': 1.4.2 - '@smithy/fetch-http-handler': 2.5.0 - '@smithy/hash-node': 2.2.0 - '@smithy/invalid-dependency': 2.2.0 - '@smithy/middleware-content-length': 2.2.0 - '@smithy/middleware-endpoint': 2.5.1 - '@smithy/middleware-retry': 2.3.1 - '@smithy/middleware-serde': 2.3.0 - '@smithy/middleware-stack': 2.2.0 - '@smithy/node-config-provider': 2.3.0 - '@smithy/node-http-handler': 2.5.0 - '@smithy/protocol-http': 3.3.0 - '@smithy/smithy-client': 2.5.1 - '@smithy/types': 2.12.0 - '@smithy/url-parser': 2.2.0 - '@smithy/util-base64': 2.3.0 - '@smithy/util-body-length-browser': 2.2.0 - '@smithy/util-body-length-node': 2.3.0 - '@smithy/util-defaults-mode-browser': 2.2.1 - '@smithy/util-defaults-mode-node': 2.3.1 - '@smithy/util-endpoints': 1.2.0 - '@smithy/util-middleware': 2.2.0 - '@smithy/util-retry': 2.2.0 - '@smithy/util-utf8': 2.3.0 + '@aws-crypto/sha256-browser': 5.2.0 + '@aws-crypto/sha256-js': 5.2.0 + '@aws-sdk/client-sso-oidc': 3.666.0(@aws-sdk/client-sts@3.666.0) + '@aws-sdk/client-sts': 3.666.0 + '@aws-sdk/core': 3.666.0 + '@aws-sdk/credential-provider-node': 3.666.0(@aws-sdk/client-sso-oidc@3.666.0(@aws-sdk/client-sts@3.666.0))(@aws-sdk/client-sts@3.666.0) + '@aws-sdk/middleware-host-header': 3.664.0 + '@aws-sdk/middleware-logger': 3.664.0 + '@aws-sdk/middleware-recursion-detection': 3.664.0 + '@aws-sdk/middleware-user-agent': 3.666.0 + '@aws-sdk/region-config-resolver': 3.664.0 + '@aws-sdk/types': 3.664.0 + '@aws-sdk/util-endpoints': 3.664.0 + '@aws-sdk/util-user-agent-browser': 3.664.0 + '@aws-sdk/util-user-agent-node': 3.666.0 + '@smithy/config-resolver': 3.0.9 + '@smithy/core': 2.4.8 + '@smithy/eventstream-serde-browser': 3.0.10 + '@smithy/eventstream-serde-config-resolver': 3.0.7 + '@smithy/eventstream-serde-node': 3.0.9 + '@smithy/fetch-http-handler': 3.2.9 + '@smithy/hash-node': 3.0.7 + '@smithy/invalid-dependency': 3.0.7 + '@smithy/middleware-content-length': 3.0.9 + '@smithy/middleware-endpoint': 3.1.4 + '@smithy/middleware-retry': 3.0.23 + '@smithy/middleware-serde': 3.0.7 + '@smithy/middleware-stack': 3.0.7 + '@smithy/node-config-provider': 3.1.8 + '@smithy/node-http-handler': 3.2.4 + '@smithy/protocol-http': 4.1.4 + '@smithy/smithy-client': 3.4.0 + '@smithy/types': 3.5.0 + '@smithy/url-parser': 3.0.7 + '@smithy/util-base64': 3.0.0 + '@smithy/util-body-length-browser': 3.0.0 + '@smithy/util-body-length-node': 3.0.0 + '@smithy/util-defaults-mode-browser': 3.0.23 + '@smithy/util-defaults-mode-node': 3.0.23 + '@smithy/util-endpoints': 2.1.3 + '@smithy/util-middleware': 3.0.7 + '@smithy/util-retry': 3.0.7 + '@smithy/util-stream': 3.1.9 + '@smithy/util-utf8': 3.0.0 tslib: 2.6.2 transitivePeerDependencies: - aws-crt - '@aws-sdk/client-sso@3.478.0': + '@aws-sdk/client-cognito-identity@3.666.0': dependencies: - '@aws-crypto/sha256-browser': 3.0.0 - '@aws-crypto/sha256-js': 3.0.0 - '@aws-sdk/core': 3.477.0 - '@aws-sdk/middleware-host-header': 3.468.0 - '@aws-sdk/middleware-logger': 3.468.0 - '@aws-sdk/middleware-recursion-detection': 3.468.0 - '@aws-sdk/middleware-user-agent': 3.478.0 - '@aws-sdk/region-config-resolver': 3.470.0 - '@aws-sdk/types': 3.468.0 - '@aws-sdk/util-endpoints': 3.478.0 - '@aws-sdk/util-user-agent-browser': 3.468.0 - '@aws-sdk/util-user-agent-node': 3.470.0 - '@smithy/config-resolver': 2.0.21 - '@smithy/core': 1.2.0 - '@smithy/fetch-http-handler': 2.5.0 - '@smithy/hash-node': 2.0.17 - '@smithy/invalid-dependency': 2.0.15 - '@smithy/middleware-content-length': 2.0.17 - '@smithy/middleware-endpoint': 2.2.3 - '@smithy/middleware-retry': 2.0.24 - '@smithy/middleware-serde': 2.0.15 - '@smithy/middleware-stack': 2.0.9 - '@smithy/node-config-provider': 2.1.8 - '@smithy/node-http-handler': 2.5.0 - '@smithy/protocol-http': 3.3.0 - '@smithy/smithy-client': 2.5.1 - '@smithy/types': 2.12.0 - '@smithy/url-parser': 2.0.15 - '@smithy/util-base64': 2.0.1 - '@smithy/util-body-length-browser': 2.0.1 - '@smithy/util-body-length-node': 2.1.0 - '@smithy/util-defaults-mode-browser': 2.0.22 - '@smithy/util-defaults-mode-node': 2.0.29 - '@smithy/util-endpoints': 1.0.7 - '@smithy/util-retry': 2.0.8 - '@smithy/util-utf8': 2.0.2 + '@aws-crypto/sha256-browser': 5.2.0 + '@aws-crypto/sha256-js': 5.2.0 + '@aws-sdk/client-sso-oidc': 3.666.0(@aws-sdk/client-sts@3.666.0) + '@aws-sdk/client-sts': 3.666.0 + '@aws-sdk/core': 3.666.0 + '@aws-sdk/credential-provider-node': 3.666.0(@aws-sdk/client-sso-oidc@3.666.0(@aws-sdk/client-sts@3.666.0))(@aws-sdk/client-sts@3.666.0) + '@aws-sdk/middleware-host-header': 3.664.0 + '@aws-sdk/middleware-logger': 3.664.0 + '@aws-sdk/middleware-recursion-detection': 3.664.0 + '@aws-sdk/middleware-user-agent': 3.666.0 + '@aws-sdk/region-config-resolver': 3.664.0 + '@aws-sdk/types': 3.664.0 + '@aws-sdk/util-endpoints': 3.664.0 + '@aws-sdk/util-user-agent-browser': 3.664.0 + '@aws-sdk/util-user-agent-node': 3.666.0 + '@smithy/config-resolver': 3.0.9 + '@smithy/core': 2.4.8 + '@smithy/fetch-http-handler': 3.2.9 + '@smithy/hash-node': 3.0.7 + '@smithy/invalid-dependency': 3.0.7 + '@smithy/middleware-content-length': 3.0.9 + '@smithy/middleware-endpoint': 3.1.4 + '@smithy/middleware-retry': 3.0.23 + '@smithy/middleware-serde': 3.0.7 + '@smithy/middleware-stack': 3.0.7 + '@smithy/node-config-provider': 3.1.8 + '@smithy/node-http-handler': 3.2.4 + '@smithy/protocol-http': 4.1.4 + '@smithy/smithy-client': 3.4.0 + '@smithy/types': 3.5.0 + '@smithy/url-parser': 3.0.7 + '@smithy/util-base64': 3.0.0 + '@smithy/util-body-length-browser': 3.0.0 + '@smithy/util-body-length-node': 3.0.0 + '@smithy/util-defaults-mode-browser': 3.0.23 + '@smithy/util-defaults-mode-node': 3.0.23 + '@smithy/util-endpoints': 2.1.3 + '@smithy/util-middleware': 3.0.7 + '@smithy/util-retry': 3.0.7 + '@smithy/util-utf8': 3.0.0 tslib: 2.6.2 transitivePeerDependencies: - aws-crt - '@aws-sdk/client-sso@3.535.0': + '@aws-sdk/client-kendra@3.666.0': dependencies: - '@aws-crypto/sha256-browser': 3.0.0 - '@aws-crypto/sha256-js': 3.0.0 - '@aws-sdk/core': 3.535.0 - '@aws-sdk/middleware-host-header': 3.535.0 - '@aws-sdk/middleware-logger': 3.535.0 - '@aws-sdk/middleware-recursion-detection': 3.535.0 - '@aws-sdk/middleware-user-agent': 3.535.0 - '@aws-sdk/region-config-resolver': 3.535.0 - '@aws-sdk/types': 3.535.0 - '@aws-sdk/util-endpoints': 3.535.0 - '@aws-sdk/util-user-agent-browser': 3.535.0 - '@aws-sdk/util-user-agent-node': 3.535.0 - '@smithy/config-resolver': 2.2.0 - '@smithy/core': 1.4.2 - '@smithy/fetch-http-handler': 2.5.0 - '@smithy/hash-node': 2.2.0 - '@smithy/invalid-dependency': 2.2.0 - '@smithy/middleware-content-length': 2.2.0 - '@smithy/middleware-endpoint': 2.5.1 - '@smithy/middleware-retry': 2.3.1 - '@smithy/middleware-serde': 2.3.0 - '@smithy/middleware-stack': 2.2.0 - '@smithy/node-config-provider': 2.3.0 - '@smithy/node-http-handler': 2.5.0 - '@smithy/protocol-http': 3.3.0 - '@smithy/smithy-client': 2.5.1 - '@smithy/types': 2.12.0 - '@smithy/url-parser': 2.2.0 - '@smithy/util-base64': 2.3.0 - '@smithy/util-body-length-browser': 2.2.0 - '@smithy/util-body-length-node': 2.3.0 - '@smithy/util-defaults-mode-browser': 2.2.1 - '@smithy/util-defaults-mode-node': 2.3.1 - '@smithy/util-endpoints': 1.2.0 - '@smithy/util-middleware': 2.2.0 - '@smithy/util-retry': 2.2.0 - '@smithy/util-utf8': 2.3.0 + '@aws-crypto/sha256-browser': 5.2.0 + '@aws-crypto/sha256-js': 5.2.0 + '@aws-sdk/client-sso-oidc': 3.666.0(@aws-sdk/client-sts@3.666.0) + '@aws-sdk/client-sts': 3.666.0 + '@aws-sdk/core': 3.666.0 + '@aws-sdk/credential-provider-node': 3.666.0(@aws-sdk/client-sso-oidc@3.666.0(@aws-sdk/client-sts@3.666.0))(@aws-sdk/client-sts@3.666.0) + '@aws-sdk/middleware-host-header': 3.664.0 + '@aws-sdk/middleware-logger': 3.664.0 + '@aws-sdk/middleware-recursion-detection': 3.664.0 + '@aws-sdk/middleware-user-agent': 3.666.0 + '@aws-sdk/region-config-resolver': 3.664.0 + '@aws-sdk/types': 3.664.0 + '@aws-sdk/util-endpoints': 3.664.0 + '@aws-sdk/util-user-agent-browser': 3.664.0 + '@aws-sdk/util-user-agent-node': 3.666.0 + '@smithy/config-resolver': 3.0.9 + '@smithy/core': 2.4.8 + '@smithy/fetch-http-handler': 3.2.9 + '@smithy/hash-node': 3.0.7 + '@smithy/invalid-dependency': 3.0.7 + '@smithy/middleware-content-length': 3.0.9 + '@smithy/middleware-endpoint': 3.1.4 + '@smithy/middleware-retry': 3.0.23 + '@smithy/middleware-serde': 3.0.7 + '@smithy/middleware-stack': 3.0.7 + '@smithy/node-config-provider': 3.1.8 + '@smithy/node-http-handler': 3.2.4 + '@smithy/protocol-http': 4.1.4 + '@smithy/smithy-client': 3.4.0 + '@smithy/types': 3.5.0 + '@smithy/url-parser': 3.0.7 + '@smithy/util-base64': 3.0.0 + '@smithy/util-body-length-browser': 3.0.0 + '@smithy/util-body-length-node': 3.0.0 + '@smithy/util-defaults-mode-browser': 3.0.23 + '@smithy/util-defaults-mode-node': 3.0.23 + '@smithy/util-endpoints': 2.1.3 + '@smithy/util-middleware': 3.0.7 + '@smithy/util-retry': 3.0.7 + '@smithy/util-utf8': 3.0.0 + tslib: 2.6.2 + uuid: 9.0.1 + transitivePeerDependencies: + - aws-crt + + '@aws-sdk/client-s3@3.666.0': + dependencies: + '@aws-crypto/sha1-browser': 5.2.0 + '@aws-crypto/sha256-browser': 5.2.0 + '@aws-crypto/sha256-js': 5.2.0 + '@aws-sdk/client-sso-oidc': 3.666.0(@aws-sdk/client-sts@3.666.0) + '@aws-sdk/client-sts': 3.666.0 + '@aws-sdk/core': 3.666.0 + '@aws-sdk/credential-provider-node': 3.666.0(@aws-sdk/client-sso-oidc@3.666.0(@aws-sdk/client-sts@3.666.0))(@aws-sdk/client-sts@3.666.0) + '@aws-sdk/middleware-bucket-endpoint': 3.664.0 + '@aws-sdk/middleware-expect-continue': 3.664.0 + '@aws-sdk/middleware-flexible-checksums': 3.666.0 + '@aws-sdk/middleware-host-header': 3.664.0 + '@aws-sdk/middleware-location-constraint': 3.664.0 + '@aws-sdk/middleware-logger': 3.664.0 + '@aws-sdk/middleware-recursion-detection': 3.664.0 + '@aws-sdk/middleware-sdk-s3': 3.666.0 + '@aws-sdk/middleware-ssec': 3.664.0 + '@aws-sdk/middleware-user-agent': 3.666.0 + '@aws-sdk/region-config-resolver': 3.664.0 + '@aws-sdk/signature-v4-multi-region': 3.666.0 + '@aws-sdk/types': 3.664.0 + '@aws-sdk/util-endpoints': 3.664.0 + '@aws-sdk/util-user-agent-browser': 3.664.0 + '@aws-sdk/util-user-agent-node': 3.666.0 + '@aws-sdk/xml-builder': 3.662.0 + '@smithy/config-resolver': 3.0.9 + '@smithy/core': 2.4.8 + '@smithy/eventstream-serde-browser': 3.0.10 + '@smithy/eventstream-serde-config-resolver': 3.0.7 + '@smithy/eventstream-serde-node': 3.0.9 + '@smithy/fetch-http-handler': 3.2.9 + '@smithy/hash-blob-browser': 3.1.6 + '@smithy/hash-node': 3.0.7 + '@smithy/hash-stream-node': 3.1.6 + '@smithy/invalid-dependency': 3.0.7 + '@smithy/md5-js': 3.0.7 + '@smithy/middleware-content-length': 3.0.9 + '@smithy/middleware-endpoint': 3.1.4 + '@smithy/middleware-retry': 3.0.23 + '@smithy/middleware-serde': 3.0.7 + '@smithy/middleware-stack': 3.0.7 + '@smithy/node-config-provider': 3.1.8 + '@smithy/node-http-handler': 3.2.4 + '@smithy/protocol-http': 4.1.4 + '@smithy/smithy-client': 3.4.0 + '@smithy/types': 3.5.0 + '@smithy/url-parser': 3.0.7 + '@smithy/util-base64': 3.0.0 + '@smithy/util-body-length-browser': 3.0.0 + '@smithy/util-body-length-node': 3.0.0 + '@smithy/util-defaults-mode-browser': 3.0.23 + '@smithy/util-defaults-mode-node': 3.0.23 + '@smithy/util-endpoints': 2.1.3 + '@smithy/util-middleware': 3.0.7 + '@smithy/util-retry': 3.0.7 + '@smithy/util-stream': 3.1.9 + '@smithy/util-utf8': 3.0.0 + '@smithy/util-waiter': 3.1.6 tslib: 2.6.2 transitivePeerDependencies: - aws-crt - '@aws-sdk/client-sts@3.478.0': + '@aws-sdk/client-sagemaker@3.666.0': dependencies: - '@aws-crypto/sha256-browser': 3.0.0 - '@aws-crypto/sha256-js': 3.0.0 - '@aws-sdk/core': 3.477.0 - '@aws-sdk/credential-provider-node': 3.478.0 - '@aws-sdk/middleware-host-header': 3.468.0 - '@aws-sdk/middleware-logger': 3.468.0 - '@aws-sdk/middleware-recursion-detection': 3.468.0 - '@aws-sdk/middleware-user-agent': 3.478.0 - '@aws-sdk/region-config-resolver': 3.470.0 - '@aws-sdk/types': 3.468.0 - '@aws-sdk/util-endpoints': 3.478.0 - '@aws-sdk/util-user-agent-browser': 3.468.0 - '@aws-sdk/util-user-agent-node': 3.470.0 - '@smithy/config-resolver': 2.0.21 - '@smithy/core': 1.2.0 - '@smithy/fetch-http-handler': 2.3.1 - '@smithy/hash-node': 2.0.17 - '@smithy/invalid-dependency': 2.0.15 - '@smithy/middleware-content-length': 2.0.17 - '@smithy/middleware-endpoint': 2.2.3 - '@smithy/middleware-retry': 2.0.24 - '@smithy/middleware-serde': 2.0.15 - '@smithy/middleware-stack': 2.0.9 - '@smithy/node-config-provider': 2.1.8 - '@smithy/node-http-handler': 2.2.1 - '@smithy/protocol-http': 3.0.11 - '@smithy/smithy-client': 2.1.18 - '@smithy/types': 2.12.0 - '@smithy/url-parser': 2.0.15 - '@smithy/util-base64': 2.0.1 - '@smithy/util-body-length-browser': 2.0.1 - '@smithy/util-body-length-node': 2.1.0 - '@smithy/util-defaults-mode-browser': 2.0.22 - '@smithy/util-defaults-mode-node': 2.0.29 - '@smithy/util-endpoints': 1.0.7 - '@smithy/util-middleware': 2.0.8 - '@smithy/util-retry': 2.0.8 - '@smithy/util-utf8': 2.0.2 - fast-xml-parser: 4.2.5 + '@aws-crypto/sha256-browser': 5.2.0 + '@aws-crypto/sha256-js': 5.2.0 + '@aws-sdk/client-sso-oidc': 3.666.0(@aws-sdk/client-sts@3.666.0) + '@aws-sdk/client-sts': 3.666.0 + '@aws-sdk/core': 3.666.0 + '@aws-sdk/credential-provider-node': 3.666.0(@aws-sdk/client-sso-oidc@3.666.0(@aws-sdk/client-sts@3.666.0))(@aws-sdk/client-sts@3.666.0) + '@aws-sdk/middleware-host-header': 3.664.0 + '@aws-sdk/middleware-logger': 3.664.0 + '@aws-sdk/middleware-recursion-detection': 3.664.0 + '@aws-sdk/middleware-user-agent': 3.666.0 + '@aws-sdk/region-config-resolver': 3.664.0 + '@aws-sdk/types': 3.664.0 + '@aws-sdk/util-endpoints': 3.664.0 + '@aws-sdk/util-user-agent-browser': 3.664.0 + '@aws-sdk/util-user-agent-node': 3.666.0 + '@smithy/config-resolver': 3.0.9 + '@smithy/core': 2.4.8 + '@smithy/fetch-http-handler': 3.2.9 + '@smithy/hash-node': 3.0.7 + '@smithy/invalid-dependency': 3.0.7 + '@smithy/middleware-content-length': 3.0.9 + '@smithy/middleware-endpoint': 3.1.4 + '@smithy/middleware-retry': 3.0.23 + '@smithy/middleware-serde': 3.0.7 + '@smithy/middleware-stack': 3.0.7 + '@smithy/node-config-provider': 3.1.8 + '@smithy/node-http-handler': 3.2.4 + '@smithy/protocol-http': 4.1.4 + '@smithy/smithy-client': 3.4.0 + '@smithy/types': 3.5.0 + '@smithy/url-parser': 3.0.7 + '@smithy/util-base64': 3.0.0 + '@smithy/util-body-length-browser': 3.0.0 + '@smithy/util-body-length-node': 3.0.0 + '@smithy/util-defaults-mode-browser': 3.0.23 + '@smithy/util-defaults-mode-node': 3.0.23 + '@smithy/util-endpoints': 2.1.3 + '@smithy/util-middleware': 3.0.7 + '@smithy/util-retry': 3.0.7 + '@smithy/util-utf8': 3.0.0 + '@smithy/util-waiter': 3.1.6 + tslib: 2.6.2 + uuid: 9.0.1 + transitivePeerDependencies: + - aws-crt + + '@aws-sdk/client-sso-oidc@3.666.0(@aws-sdk/client-sts@3.666.0)': + dependencies: + '@aws-crypto/sha256-browser': 5.2.0 + '@aws-crypto/sha256-js': 5.2.0 + '@aws-sdk/client-sts': 3.666.0 + '@aws-sdk/core': 3.666.0 + '@aws-sdk/credential-provider-node': 3.666.0(@aws-sdk/client-sso-oidc@3.666.0(@aws-sdk/client-sts@3.666.0))(@aws-sdk/client-sts@3.666.0) + '@aws-sdk/middleware-host-header': 3.664.0 + '@aws-sdk/middleware-logger': 3.664.0 + '@aws-sdk/middleware-recursion-detection': 3.664.0 + '@aws-sdk/middleware-user-agent': 3.666.0 + '@aws-sdk/region-config-resolver': 3.664.0 + '@aws-sdk/types': 3.664.0 + '@aws-sdk/util-endpoints': 3.664.0 + '@aws-sdk/util-user-agent-browser': 3.664.0 + '@aws-sdk/util-user-agent-node': 3.666.0 + '@smithy/config-resolver': 3.0.9 + '@smithy/core': 2.4.8 + '@smithy/fetch-http-handler': 3.2.9 + '@smithy/hash-node': 3.0.7 + '@smithy/invalid-dependency': 3.0.7 + '@smithy/middleware-content-length': 3.0.9 + '@smithy/middleware-endpoint': 3.1.4 + '@smithy/middleware-retry': 3.0.23 + '@smithy/middleware-serde': 3.0.7 + '@smithy/middleware-stack': 3.0.7 + '@smithy/node-config-provider': 3.1.8 + '@smithy/node-http-handler': 3.2.4 + '@smithy/protocol-http': 4.1.4 + '@smithy/smithy-client': 3.4.0 + '@smithy/types': 3.5.0 + '@smithy/url-parser': 3.0.7 + '@smithy/util-base64': 3.0.0 + '@smithy/util-body-length-browser': 3.0.0 + '@smithy/util-body-length-node': 3.0.0 + '@smithy/util-defaults-mode-browser': 3.0.23 + '@smithy/util-defaults-mode-node': 3.0.23 + '@smithy/util-endpoints': 2.1.3 + '@smithy/util-middleware': 3.0.7 + '@smithy/util-retry': 3.0.7 + '@smithy/util-utf8': 3.0.0 tslib: 2.6.2 transitivePeerDependencies: - aws-crt - '@aws-sdk/client-sts@3.535.0(@aws-sdk/credential-provider-node@3.535.0)': + '@aws-sdk/client-sso@3.666.0': dependencies: - '@aws-crypto/sha256-browser': 3.0.0 - '@aws-crypto/sha256-js': 3.0.0 - '@aws-sdk/core': 3.535.0 - '@aws-sdk/credential-provider-node': 3.535.0 - '@aws-sdk/middleware-host-header': 3.535.0 - '@aws-sdk/middleware-logger': 3.535.0 - '@aws-sdk/middleware-recursion-detection': 3.535.0 - '@aws-sdk/middleware-user-agent': 3.535.0 - '@aws-sdk/region-config-resolver': 3.535.0 - '@aws-sdk/types': 3.535.0 - '@aws-sdk/util-endpoints': 3.535.0 - '@aws-sdk/util-user-agent-browser': 3.535.0 - '@aws-sdk/util-user-agent-node': 3.535.0 - '@smithy/config-resolver': 2.2.0 - '@smithy/core': 1.4.2 - '@smithy/fetch-http-handler': 2.5.0 - '@smithy/hash-node': 2.2.0 - '@smithy/invalid-dependency': 2.2.0 - '@smithy/middleware-content-length': 2.2.0 - '@smithy/middleware-endpoint': 2.5.1 - '@smithy/middleware-retry': 2.3.1 - '@smithy/middleware-serde': 2.3.0 - '@smithy/middleware-stack': 2.2.0 - '@smithy/node-config-provider': 2.3.0 - '@smithy/node-http-handler': 2.5.0 - '@smithy/protocol-http': 3.3.0 - '@smithy/smithy-client': 2.5.1 - '@smithy/types': 2.12.0 - '@smithy/url-parser': 2.2.0 - '@smithy/util-base64': 2.3.0 - '@smithy/util-body-length-browser': 2.2.0 - '@smithy/util-body-length-node': 2.3.0 - '@smithy/util-defaults-mode-browser': 2.2.1 - '@smithy/util-defaults-mode-node': 2.3.1 - '@smithy/util-endpoints': 1.2.0 - '@smithy/util-middleware': 2.2.0 - '@smithy/util-retry': 2.2.0 - '@smithy/util-utf8': 2.3.0 + '@aws-crypto/sha256-browser': 5.2.0 + '@aws-crypto/sha256-js': 5.2.0 + '@aws-sdk/core': 3.666.0 + '@aws-sdk/middleware-host-header': 3.664.0 + '@aws-sdk/middleware-logger': 3.664.0 + '@aws-sdk/middleware-recursion-detection': 3.664.0 + '@aws-sdk/middleware-user-agent': 3.666.0 + '@aws-sdk/region-config-resolver': 3.664.0 + '@aws-sdk/types': 3.664.0 + '@aws-sdk/util-endpoints': 3.664.0 + '@aws-sdk/util-user-agent-browser': 3.664.0 + '@aws-sdk/util-user-agent-node': 3.666.0 + '@smithy/config-resolver': 3.0.9 + '@smithy/core': 2.4.8 + '@smithy/fetch-http-handler': 3.2.9 + '@smithy/hash-node': 3.0.7 + '@smithy/invalid-dependency': 3.0.7 + '@smithy/middleware-content-length': 3.0.9 + '@smithy/middleware-endpoint': 3.1.4 + '@smithy/middleware-retry': 3.0.23 + '@smithy/middleware-serde': 3.0.7 + '@smithy/middleware-stack': 3.0.7 + '@smithy/node-config-provider': 3.1.8 + '@smithy/node-http-handler': 3.2.4 + '@smithy/protocol-http': 4.1.4 + '@smithy/smithy-client': 3.4.0 + '@smithy/types': 3.5.0 + '@smithy/url-parser': 3.0.7 + '@smithy/util-base64': 3.0.0 + '@smithy/util-body-length-browser': 3.0.0 + '@smithy/util-body-length-node': 3.0.0 + '@smithy/util-defaults-mode-browser': 3.0.23 + '@smithy/util-defaults-mode-node': 3.0.23 + '@smithy/util-endpoints': 2.1.3 + '@smithy/util-middleware': 3.0.7 + '@smithy/util-retry': 3.0.7 + '@smithy/util-utf8': 3.0.0 tslib: 2.6.2 transitivePeerDependencies: - aws-crt - '@aws-sdk/core@3.477.0': + '@aws-sdk/client-sts@3.666.0': dependencies: - '@smithy/core': 1.2.0 - '@smithy/protocol-http': 3.0.11 - '@smithy/signature-v4': 2.0.5 - '@smithy/smithy-client': 2.1.18 - '@smithy/types': 2.12.0 - tslib: 2.6.2 - - '@aws-sdk/core@3.535.0': - dependencies: - '@smithy/core': 1.4.2 - '@smithy/protocol-http': 3.3.0 - '@smithy/signature-v4': 2.2.1 - '@smithy/smithy-client': 2.5.1 - '@smithy/types': 2.12.0 - fast-xml-parser: 4.2.5 - tslib: 2.6.2 - - '@aws-sdk/credential-provider-env@3.468.0': - dependencies: - '@aws-sdk/types': 3.468.0 - '@smithy/property-provider': 2.2.0 - '@smithy/types': 2.12.0 - tslib: 2.6.2 - - '@aws-sdk/credential-provider-env@3.535.0': - dependencies: - '@aws-sdk/types': 3.535.0 - '@smithy/property-provider': 2.2.0 - '@smithy/types': 2.12.0 - tslib: 2.6.2 - - '@aws-sdk/credential-provider-http@3.535.0': - dependencies: - '@aws-sdk/types': 3.535.0 - '@smithy/fetch-http-handler': 2.5.0 - '@smithy/node-http-handler': 2.5.0 - '@smithy/property-provider': 2.2.0 - '@smithy/protocol-http': 3.3.0 - '@smithy/smithy-client': 2.5.1 - '@smithy/types': 2.12.0 - '@smithy/util-stream': 2.2.0 - tslib: 2.6.2 - - '@aws-sdk/credential-provider-ini@3.478.0': - dependencies: - '@aws-sdk/credential-provider-env': 3.468.0 - '@aws-sdk/credential-provider-process': 3.468.0 - '@aws-sdk/credential-provider-sso': 3.478.0 - '@aws-sdk/credential-provider-web-identity': 3.468.0 - '@aws-sdk/types': 3.468.0 - '@smithy/credential-provider-imds': 2.3.0 - '@smithy/property-provider': 2.2.0 - '@smithy/shared-ini-file-loader': 2.4.0 - '@smithy/types': 2.12.0 + '@aws-crypto/sha256-browser': 5.2.0 + '@aws-crypto/sha256-js': 5.2.0 + '@aws-sdk/client-sso-oidc': 3.666.0(@aws-sdk/client-sts@3.666.0) + '@aws-sdk/core': 3.666.0 + '@aws-sdk/credential-provider-node': 3.666.0(@aws-sdk/client-sso-oidc@3.666.0(@aws-sdk/client-sts@3.666.0))(@aws-sdk/client-sts@3.666.0) + '@aws-sdk/middleware-host-header': 3.664.0 + '@aws-sdk/middleware-logger': 3.664.0 + '@aws-sdk/middleware-recursion-detection': 3.664.0 + '@aws-sdk/middleware-user-agent': 3.666.0 + '@aws-sdk/region-config-resolver': 3.664.0 + '@aws-sdk/types': 3.664.0 + '@aws-sdk/util-endpoints': 3.664.0 + '@aws-sdk/util-user-agent-browser': 3.664.0 + '@aws-sdk/util-user-agent-node': 3.666.0 + '@smithy/config-resolver': 3.0.9 + '@smithy/core': 2.4.8 + '@smithy/fetch-http-handler': 3.2.9 + '@smithy/hash-node': 3.0.7 + '@smithy/invalid-dependency': 3.0.7 + '@smithy/middleware-content-length': 3.0.9 + '@smithy/middleware-endpoint': 3.1.4 + '@smithy/middleware-retry': 3.0.23 + '@smithy/middleware-serde': 3.0.7 + '@smithy/middleware-stack': 3.0.7 + '@smithy/node-config-provider': 3.1.8 + '@smithy/node-http-handler': 3.2.4 + '@smithy/protocol-http': 4.1.4 + '@smithy/smithy-client': 3.4.0 + '@smithy/types': 3.5.0 + '@smithy/url-parser': 3.0.7 + '@smithy/util-base64': 3.0.0 + '@smithy/util-body-length-browser': 3.0.0 + '@smithy/util-body-length-node': 3.0.0 + '@smithy/util-defaults-mode-browser': 3.0.23 + '@smithy/util-defaults-mode-node': 3.0.23 + '@smithy/util-endpoints': 2.1.3 + '@smithy/util-middleware': 3.0.7 + '@smithy/util-retry': 3.0.7 + '@smithy/util-utf8': 3.0.0 tslib: 2.6.2 transitivePeerDependencies: - aws-crt - '@aws-sdk/credential-provider-ini@3.535.0(@aws-sdk/credential-provider-node@3.535.0)': + '@aws-sdk/core@3.666.0': dependencies: - '@aws-sdk/client-sts': 3.535.0(@aws-sdk/credential-provider-node@3.535.0) - '@aws-sdk/credential-provider-env': 3.535.0 - '@aws-sdk/credential-provider-process': 3.535.0 - '@aws-sdk/credential-provider-sso': 3.535.0(@aws-sdk/credential-provider-node@3.535.0) - '@aws-sdk/credential-provider-web-identity': 3.535.0(@aws-sdk/credential-provider-node@3.535.0) - '@aws-sdk/types': 3.535.0 - '@smithy/credential-provider-imds': 2.3.0 - '@smithy/property-provider': 2.2.0 - '@smithy/shared-ini-file-loader': 2.4.0 - '@smithy/types': 2.12.0 + '@aws-sdk/types': 3.664.0 + '@smithy/core': 2.4.8 + '@smithy/node-config-provider': 3.1.8 + '@smithy/property-provider': 3.1.7 + '@smithy/protocol-http': 4.1.4 + '@smithy/signature-v4': 4.2.0 + '@smithy/smithy-client': 3.4.0 + '@smithy/types': 3.5.0 + '@smithy/util-middleware': 3.0.7 + fast-xml-parser: 4.4.1 tslib: 2.6.2 - transitivePeerDependencies: - - '@aws-sdk/credential-provider-node' - - aws-crt - '@aws-sdk/credential-provider-node@3.478.0': + '@aws-sdk/credential-provider-cognito-identity@3.666.0': dependencies: - '@aws-sdk/credential-provider-env': 3.468.0 - '@aws-sdk/credential-provider-ini': 3.478.0 - '@aws-sdk/credential-provider-process': 3.468.0 - '@aws-sdk/credential-provider-sso': 3.478.0 - '@aws-sdk/credential-provider-web-identity': 3.468.0 - '@aws-sdk/types': 3.468.0 - '@smithy/credential-provider-imds': 2.3.0 - '@smithy/property-provider': 2.2.0 - '@smithy/shared-ini-file-loader': 2.4.0 - '@smithy/types': 2.12.0 + '@aws-sdk/client-cognito-identity': 3.666.0 + '@aws-sdk/types': 3.664.0 + '@smithy/property-provider': 3.1.7 + '@smithy/types': 3.5.0 tslib: 2.6.2 transitivePeerDependencies: - aws-crt - '@aws-sdk/credential-provider-node@3.535.0': + '@aws-sdk/credential-provider-env@3.664.0': dependencies: - '@aws-sdk/credential-provider-env': 3.535.0 - '@aws-sdk/credential-provider-http': 3.535.0 - '@aws-sdk/credential-provider-ini': 3.535.0(@aws-sdk/credential-provider-node@3.535.0) - '@aws-sdk/credential-provider-process': 3.535.0 - '@aws-sdk/credential-provider-sso': 3.535.0(@aws-sdk/credential-provider-node@3.535.0) - '@aws-sdk/credential-provider-web-identity': 3.535.0(@aws-sdk/credential-provider-node@3.535.0) - '@aws-sdk/types': 3.535.0 - '@smithy/credential-provider-imds': 2.3.0 - '@smithy/property-provider': 2.2.0 - '@smithy/shared-ini-file-loader': 2.4.0 - '@smithy/types': 2.12.0 + '@aws-sdk/types': 3.664.0 + '@smithy/property-provider': 3.1.7 + '@smithy/types': 3.5.0 + tslib: 2.6.2 + + '@aws-sdk/credential-provider-http@3.666.0': + dependencies: + '@aws-sdk/types': 3.664.0 + '@smithy/fetch-http-handler': 3.2.9 + '@smithy/node-http-handler': 3.2.4 + '@smithy/property-provider': 3.1.7 + '@smithy/protocol-http': 4.1.4 + '@smithy/smithy-client': 3.4.0 + '@smithy/types': 3.5.0 + '@smithy/util-stream': 3.1.9 + tslib: 2.6.2 + + '@aws-sdk/credential-provider-ini@3.666.0(@aws-sdk/client-sso-oidc@3.666.0(@aws-sdk/client-sts@3.666.0))(@aws-sdk/client-sts@3.666.0)': + dependencies: + '@aws-sdk/client-sts': 3.666.0 + '@aws-sdk/credential-provider-env': 3.664.0 + '@aws-sdk/credential-provider-http': 3.666.0 + '@aws-sdk/credential-provider-process': 3.664.0 + '@aws-sdk/credential-provider-sso': 3.666.0(@aws-sdk/client-sso-oidc@3.666.0(@aws-sdk/client-sts@3.666.0)) + '@aws-sdk/credential-provider-web-identity': 3.664.0(@aws-sdk/client-sts@3.666.0) + '@aws-sdk/types': 3.664.0 + '@smithy/credential-provider-imds': 3.2.4 + '@smithy/property-provider': 3.1.7 + '@smithy/shared-ini-file-loader': 3.1.8 + '@smithy/types': 3.5.0 tslib: 2.6.2 transitivePeerDependencies: + - '@aws-sdk/client-sso-oidc' - aws-crt - '@aws-sdk/credential-provider-process@3.468.0': + '@aws-sdk/credential-provider-node@3.666.0(@aws-sdk/client-sso-oidc@3.666.0(@aws-sdk/client-sts@3.666.0))(@aws-sdk/client-sts@3.666.0)': dependencies: - '@aws-sdk/types': 3.468.0 - '@smithy/property-provider': 2.2.0 - '@smithy/shared-ini-file-loader': 2.4.0 - '@smithy/types': 2.12.0 - tslib: 2.6.2 - - '@aws-sdk/credential-provider-process@3.535.0': - dependencies: - '@aws-sdk/types': 3.535.0 - '@smithy/property-provider': 2.2.0 - '@smithy/shared-ini-file-loader': 2.4.0 - '@smithy/types': 2.12.0 - tslib: 2.6.2 - - '@aws-sdk/credential-provider-sso@3.478.0': - dependencies: - '@aws-sdk/client-sso': 3.478.0 - '@aws-sdk/token-providers': 3.478.0 - '@aws-sdk/types': 3.468.0 - '@smithy/property-provider': 2.2.0 - '@smithy/shared-ini-file-loader': 2.4.0 - '@smithy/types': 2.12.0 + '@aws-sdk/credential-provider-env': 3.664.0 + '@aws-sdk/credential-provider-http': 3.666.0 + '@aws-sdk/credential-provider-ini': 3.666.0(@aws-sdk/client-sso-oidc@3.666.0(@aws-sdk/client-sts@3.666.0))(@aws-sdk/client-sts@3.666.0) + '@aws-sdk/credential-provider-process': 3.664.0 + '@aws-sdk/credential-provider-sso': 3.666.0(@aws-sdk/client-sso-oidc@3.666.0(@aws-sdk/client-sts@3.666.0)) + '@aws-sdk/credential-provider-web-identity': 3.664.0(@aws-sdk/client-sts@3.666.0) + '@aws-sdk/types': 3.664.0 + '@smithy/credential-provider-imds': 3.2.4 + '@smithy/property-provider': 3.1.7 + '@smithy/shared-ini-file-loader': 3.1.8 + '@smithy/types': 3.5.0 tslib: 2.6.2 transitivePeerDependencies: + - '@aws-sdk/client-sso-oidc' + - '@aws-sdk/client-sts' - aws-crt - '@aws-sdk/credential-provider-sso@3.535.0(@aws-sdk/credential-provider-node@3.535.0)': + '@aws-sdk/credential-provider-process@3.664.0': dependencies: - '@aws-sdk/client-sso': 3.535.0 - '@aws-sdk/token-providers': 3.535.0(@aws-sdk/credential-provider-node@3.535.0) - '@aws-sdk/types': 3.535.0 - '@smithy/property-provider': 2.2.0 - '@smithy/shared-ini-file-loader': 2.4.0 - '@smithy/types': 2.12.0 + '@aws-sdk/types': 3.664.0 + '@smithy/property-provider': 3.1.7 + '@smithy/shared-ini-file-loader': 3.1.8 + '@smithy/types': 3.5.0 + tslib: 2.6.2 + + '@aws-sdk/credential-provider-sso@3.666.0(@aws-sdk/client-sso-oidc@3.666.0(@aws-sdk/client-sts@3.666.0))': + dependencies: + '@aws-sdk/client-sso': 3.666.0 + '@aws-sdk/token-providers': 3.664.0(@aws-sdk/client-sso-oidc@3.666.0(@aws-sdk/client-sts@3.666.0)) + '@aws-sdk/types': 3.664.0 + '@smithy/property-provider': 3.1.7 + '@smithy/shared-ini-file-loader': 3.1.8 + '@smithy/types': 3.5.0 tslib: 2.6.2 transitivePeerDependencies: - - '@aws-sdk/credential-provider-node' + - '@aws-sdk/client-sso-oidc' - aws-crt - '@aws-sdk/credential-provider-web-identity@3.468.0': + '@aws-sdk/credential-provider-web-identity@3.664.0(@aws-sdk/client-sts@3.666.0)': dependencies: - '@aws-sdk/types': 3.468.0 - '@smithy/property-provider': 2.2.0 - '@smithy/types': 2.12.0 + '@aws-sdk/client-sts': 3.666.0 + '@aws-sdk/types': 3.664.0 + '@smithy/property-provider': 3.1.7 + '@smithy/types': 3.5.0 tslib: 2.6.2 - '@aws-sdk/credential-provider-web-identity@3.535.0(@aws-sdk/credential-provider-node@3.535.0)': + '@aws-sdk/credential-providers@3.666.0(@aws-sdk/client-sso-oidc@3.666.0(@aws-sdk/client-sts@3.666.0))': dependencies: - '@aws-sdk/client-sts': 3.535.0(@aws-sdk/credential-provider-node@3.535.0) - '@aws-sdk/types': 3.535.0 - '@smithy/property-provider': 2.2.0 - '@smithy/types': 2.12.0 + '@aws-sdk/client-cognito-identity': 3.666.0 + '@aws-sdk/client-sso': 3.666.0 + '@aws-sdk/client-sts': 3.666.0 + '@aws-sdk/credential-provider-cognito-identity': 3.666.0 + '@aws-sdk/credential-provider-env': 3.664.0 + '@aws-sdk/credential-provider-http': 3.666.0 + '@aws-sdk/credential-provider-ini': 3.666.0(@aws-sdk/client-sso-oidc@3.666.0(@aws-sdk/client-sts@3.666.0))(@aws-sdk/client-sts@3.666.0) + '@aws-sdk/credential-provider-node': 3.666.0(@aws-sdk/client-sso-oidc@3.666.0(@aws-sdk/client-sts@3.666.0))(@aws-sdk/client-sts@3.666.0) + '@aws-sdk/credential-provider-process': 3.664.0 + '@aws-sdk/credential-provider-sso': 3.666.0(@aws-sdk/client-sso-oidc@3.666.0(@aws-sdk/client-sts@3.666.0)) + '@aws-sdk/credential-provider-web-identity': 3.664.0(@aws-sdk/client-sts@3.666.0) + '@aws-sdk/types': 3.664.0 + '@smithy/credential-provider-imds': 3.2.4 + '@smithy/property-provider': 3.1.7 + '@smithy/types': 3.5.0 tslib: 2.6.2 transitivePeerDependencies: - - '@aws-sdk/credential-provider-node' + - '@aws-sdk/client-sso-oidc' - aws-crt - '@aws-sdk/middleware-bucket-endpoint@3.470.0': + '@aws-sdk/middleware-bucket-endpoint@3.664.0': dependencies: - '@aws-sdk/types': 3.468.0 - '@aws-sdk/util-arn-parser': 3.465.0 - '@smithy/node-config-provider': 2.1.8 - '@smithy/protocol-http': 3.0.11 - '@smithy/types': 2.12.0 - '@smithy/util-config-provider': 2.0.0 + '@aws-sdk/types': 3.664.0 + '@aws-sdk/util-arn-parser': 3.568.0 + '@smithy/node-config-provider': 3.1.8 + '@smithy/protocol-http': 4.1.4 + '@smithy/types': 3.5.0 + '@smithy/util-config-provider': 3.0.0 tslib: 2.6.2 - '@aws-sdk/middleware-expect-continue@3.468.0': + '@aws-sdk/middleware-expect-continue@3.664.0': dependencies: - '@aws-sdk/types': 3.468.0 - '@smithy/protocol-http': 3.0.11 - '@smithy/types': 2.12.0 + '@aws-sdk/types': 3.664.0 + '@smithy/protocol-http': 4.1.4 + '@smithy/types': 3.5.0 tslib: 2.6.2 - '@aws-sdk/middleware-flexible-checksums@3.468.0': + '@aws-sdk/middleware-flexible-checksums@3.666.0': dependencies: - '@aws-crypto/crc32': 3.0.0 - '@aws-crypto/crc32c': 3.0.0 - '@aws-sdk/types': 3.468.0 - '@smithy/is-array-buffer': 2.0.0 - '@smithy/protocol-http': 3.0.11 - '@smithy/types': 2.12.0 - '@smithy/util-utf8': 2.0.2 + '@aws-crypto/crc32': 5.2.0 + '@aws-crypto/crc32c': 5.2.0 + '@aws-sdk/core': 3.666.0 + '@aws-sdk/types': 3.664.0 + '@smithy/is-array-buffer': 3.0.0 + '@smithy/node-config-provider': 3.1.8 + '@smithy/protocol-http': 4.1.4 + '@smithy/types': 3.5.0 + '@smithy/util-middleware': 3.0.7 + '@smithy/util-utf8': 3.0.0 tslib: 2.6.2 - '@aws-sdk/middleware-host-header@3.468.0': + '@aws-sdk/middleware-host-header@3.664.0': dependencies: - '@aws-sdk/types': 3.468.0 - '@smithy/protocol-http': 3.0.11 - '@smithy/types': 2.12.0 + '@aws-sdk/types': 3.664.0 + '@smithy/protocol-http': 4.1.4 + '@smithy/types': 3.5.0 tslib: 2.6.2 - '@aws-sdk/middleware-host-header@3.535.0': + '@aws-sdk/middleware-location-constraint@3.664.0': dependencies: - '@aws-sdk/types': 3.535.0 - '@smithy/protocol-http': 3.3.0 - '@smithy/types': 2.12.0 + '@aws-sdk/types': 3.664.0 + '@smithy/types': 3.5.0 tslib: 2.6.2 - '@aws-sdk/middleware-location-constraint@3.468.0': + '@aws-sdk/middleware-logger@3.664.0': dependencies: - '@aws-sdk/types': 3.468.0 - '@smithy/types': 2.12.0 + '@aws-sdk/types': 3.664.0 + '@smithy/types': 3.5.0 tslib: 2.6.2 - '@aws-sdk/middleware-logger@3.468.0': + '@aws-sdk/middleware-recursion-detection@3.664.0': dependencies: - '@aws-sdk/types': 3.468.0 - '@smithy/types': 2.12.0 + '@aws-sdk/types': 3.664.0 + '@smithy/protocol-http': 4.1.4 + '@smithy/types': 3.5.0 tslib: 2.6.2 - '@aws-sdk/middleware-logger@3.535.0': + '@aws-sdk/middleware-sdk-s3@3.666.0': dependencies: - '@aws-sdk/types': 3.535.0 - '@smithy/types': 2.12.0 + '@aws-sdk/core': 3.666.0 + '@aws-sdk/types': 3.664.0 + '@aws-sdk/util-arn-parser': 3.568.0 + '@smithy/core': 2.4.8 + '@smithy/node-config-provider': 3.1.8 + '@smithy/protocol-http': 4.1.4 + '@smithy/signature-v4': 4.2.0 + '@smithy/smithy-client': 3.4.0 + '@smithy/types': 3.5.0 + '@smithy/util-config-provider': 3.0.0 + '@smithy/util-middleware': 3.0.7 + '@smithy/util-stream': 3.1.9 + '@smithy/util-utf8': 3.0.0 tslib: 2.6.2 - '@aws-sdk/middleware-recursion-detection@3.468.0': + '@aws-sdk/middleware-ssec@3.664.0': dependencies: - '@aws-sdk/types': 3.468.0 - '@smithy/protocol-http': 3.0.11 - '@smithy/types': 2.12.0 + '@aws-sdk/types': 3.664.0 + '@smithy/types': 3.5.0 tslib: 2.6.2 - '@aws-sdk/middleware-recursion-detection@3.535.0': + '@aws-sdk/middleware-user-agent@3.666.0': dependencies: - '@aws-sdk/types': 3.535.0 - '@smithy/protocol-http': 3.3.0 - '@smithy/types': 2.12.0 + '@aws-sdk/core': 3.666.0 + '@aws-sdk/types': 3.664.0 + '@aws-sdk/util-endpoints': 3.664.0 + '@smithy/core': 2.4.8 + '@smithy/protocol-http': 4.1.4 + '@smithy/types': 3.5.0 tslib: 2.6.2 - '@aws-sdk/middleware-sdk-s3@3.474.0': + '@aws-sdk/node-http-handler@3.374.0': dependencies: - '@aws-sdk/types': 3.468.0 - '@aws-sdk/util-arn-parser': 3.465.0 - '@smithy/node-config-provider': 2.1.8 - '@smithy/protocol-http': 3.0.11 - '@smithy/signature-v4': 2.0.5 - '@smithy/smithy-client': 2.1.18 - '@smithy/types': 2.12.0 - '@smithy/util-config-provider': 2.0.0 + '@smithy/node-http-handler': 1.1.0 tslib: 2.6.2 - '@aws-sdk/middleware-signing@3.468.0': + '@aws-sdk/protocol-http@3.374.0': dependencies: - '@aws-sdk/types': 3.468.0 - '@smithy/property-provider': 2.2.0 - '@smithy/protocol-http': 3.0.11 - '@smithy/signature-v4': 2.0.5 - '@smithy/types': 2.12.0 - '@smithy/util-middleware': 2.0.8 + '@smithy/protocol-http': 1.2.0 tslib: 2.6.2 - '@aws-sdk/middleware-ssec@3.468.0': + '@aws-sdk/region-config-resolver@3.664.0': dependencies: - '@aws-sdk/types': 3.468.0 - '@smithy/types': 2.12.0 + '@aws-sdk/types': 3.664.0 + '@smithy/node-config-provider': 3.1.8 + '@smithy/types': 3.5.0 + '@smithy/util-config-provider': 3.0.0 + '@smithy/util-middleware': 3.0.7 tslib: 2.6.2 - '@aws-sdk/middleware-user-agent@3.478.0': + '@aws-sdk/signature-v4-multi-region@3.666.0': dependencies: - '@aws-sdk/types': 3.468.0 - '@aws-sdk/util-endpoints': 3.478.0 - '@smithy/protocol-http': 3.0.11 - '@smithy/types': 2.12.0 + '@aws-sdk/middleware-sdk-s3': 3.666.0 + '@aws-sdk/types': 3.664.0 + '@smithy/protocol-http': 4.1.4 + '@smithy/signature-v4': 4.2.0 + '@smithy/types': 3.5.0 tslib: 2.6.2 - '@aws-sdk/middleware-user-agent@3.535.0': + '@aws-sdk/signature-v4@3.374.0': dependencies: - '@aws-sdk/types': 3.535.0 - '@aws-sdk/util-endpoints': 3.535.0 - '@smithy/protocol-http': 3.3.0 - '@smithy/types': 2.12.0 + '@smithy/signature-v4': 1.1.0 tslib: 2.6.2 - '@aws-sdk/region-config-resolver@3.470.0': + '@aws-sdk/token-providers@3.664.0(@aws-sdk/client-sso-oidc@3.666.0(@aws-sdk/client-sts@3.666.0))': dependencies: - '@smithy/node-config-provider': 2.1.8 - '@smithy/types': 2.12.0 - '@smithy/util-config-provider': 2.0.0 - '@smithy/util-middleware': 2.0.8 + '@aws-sdk/client-sso-oidc': 3.666.0(@aws-sdk/client-sts@3.666.0) + '@aws-sdk/types': 3.664.0 + '@smithy/property-provider': 3.1.7 + '@smithy/shared-ini-file-loader': 3.1.8 + '@smithy/types': 3.5.0 tslib: 2.6.2 - '@aws-sdk/region-config-resolver@3.535.0': + '@aws-sdk/types@3.664.0': dependencies: - '@aws-sdk/types': 3.535.0 - '@smithy/node-config-provider': 2.3.0 - '@smithy/types': 2.12.0 - '@smithy/util-config-provider': 2.3.0 - '@smithy/util-middleware': 2.2.0 + '@smithy/types': 3.5.0 tslib: 2.6.2 - '@aws-sdk/signature-v4-multi-region@3.474.0': - dependencies: - '@aws-sdk/middleware-sdk-s3': 3.474.0 - '@aws-sdk/types': 3.468.0 - '@smithy/protocol-http': 3.0.11 - '@smithy/signature-v4': 2.0.5 - '@smithy/types': 2.12.0 - tslib: 2.6.2 - - '@aws-sdk/token-providers@3.478.0': - dependencies: - '@aws-crypto/sha256-browser': 3.0.0 - '@aws-crypto/sha256-js': 3.0.0 - '@aws-sdk/middleware-host-header': 3.468.0 - '@aws-sdk/middleware-logger': 3.468.0 - '@aws-sdk/middleware-recursion-detection': 3.468.0 - '@aws-sdk/middleware-user-agent': 3.478.0 - '@aws-sdk/region-config-resolver': 3.470.0 - '@aws-sdk/types': 3.468.0 - '@aws-sdk/util-endpoints': 3.478.0 - '@aws-sdk/util-user-agent-browser': 3.468.0 - '@aws-sdk/util-user-agent-node': 3.470.0 - '@smithy/config-resolver': 2.0.21 - '@smithy/fetch-http-handler': 2.5.0 - '@smithy/hash-node': 2.0.17 - '@smithy/invalid-dependency': 2.0.15 - '@smithy/middleware-content-length': 2.0.17 - '@smithy/middleware-endpoint': 2.2.3 - '@smithy/middleware-retry': 2.0.24 - '@smithy/middleware-serde': 2.0.15 - '@smithy/middleware-stack': 2.0.9 - '@smithy/node-config-provider': 2.1.8 - '@smithy/node-http-handler': 2.5.0 - '@smithy/property-provider': 2.2.0 - '@smithy/protocol-http': 3.3.0 - '@smithy/shared-ini-file-loader': 2.4.0 - '@smithy/smithy-client': 2.5.1 - '@smithy/types': 2.12.0 - '@smithy/url-parser': 2.0.15 - '@smithy/util-base64': 2.0.1 - '@smithy/util-body-length-browser': 2.0.1 - '@smithy/util-body-length-node': 2.1.0 - '@smithy/util-defaults-mode-browser': 2.0.22 - '@smithy/util-defaults-mode-node': 2.0.29 - '@smithy/util-endpoints': 1.0.7 - '@smithy/util-retry': 2.0.8 - '@smithy/util-utf8': 2.0.2 - tslib: 2.6.2 - transitivePeerDependencies: - - aws-crt - - '@aws-sdk/token-providers@3.535.0(@aws-sdk/credential-provider-node@3.535.0)': - dependencies: - '@aws-sdk/client-sso-oidc': 3.535.0(@aws-sdk/credential-provider-node@3.535.0) - '@aws-sdk/types': 3.535.0 - '@smithy/property-provider': 2.2.0 - '@smithy/shared-ini-file-loader': 2.4.0 - '@smithy/types': 2.12.0 - tslib: 2.6.2 - transitivePeerDependencies: - - '@aws-sdk/credential-provider-node' - - aws-crt - - '@aws-sdk/types@3.468.0': - dependencies: - '@smithy/types': 2.12.0 - tslib: 2.6.2 - - '@aws-sdk/types@3.535.0': - dependencies: - '@smithy/types': 2.12.0 - tslib: 2.6.2 - - '@aws-sdk/util-arn-parser@3.465.0': + '@aws-sdk/util-arn-parser@3.568.0': dependencies: tslib: 2.6.2 - '@aws-sdk/util-endpoints@3.478.0': + '@aws-sdk/util-endpoints@3.664.0': dependencies: - '@aws-sdk/types': 3.468.0 - '@smithy/util-endpoints': 1.0.7 - tslib: 2.6.2 - - '@aws-sdk/util-endpoints@3.535.0': - dependencies: - '@aws-sdk/types': 3.535.0 - '@smithy/types': 2.12.0 - '@smithy/util-endpoints': 1.2.0 + '@aws-sdk/types': 3.664.0 + '@smithy/types': 3.5.0 + '@smithy/util-endpoints': 2.1.3 tslib: 2.6.2 '@aws-sdk/util-locate-window@3.310.0': dependencies: tslib: 2.6.2 - '@aws-sdk/util-user-agent-browser@3.468.0': + '@aws-sdk/util-user-agent-browser@3.664.0': dependencies: - '@aws-sdk/types': 3.468.0 - '@smithy/types': 2.12.0 + '@aws-sdk/types': 3.664.0 + '@smithy/types': 3.5.0 bowser: 2.11.0 tslib: 2.6.2 - '@aws-sdk/util-user-agent-browser@3.535.0': + '@aws-sdk/util-user-agent-node@3.666.0': dependencies: - '@aws-sdk/types': 3.535.0 - '@smithy/types': 2.12.0 - bowser: 2.11.0 - tslib: 2.6.2 - - '@aws-sdk/util-user-agent-node@3.470.0': - dependencies: - '@aws-sdk/types': 3.468.0 - '@smithy/node-config-provider': 2.1.8 - '@smithy/types': 2.12.0 - tslib: 2.6.2 - - '@aws-sdk/util-user-agent-node@3.535.0': - dependencies: - '@aws-sdk/types': 3.535.0 - '@smithy/node-config-provider': 2.3.0 - '@smithy/types': 2.12.0 + '@aws-sdk/middleware-user-agent': 3.666.0 + '@aws-sdk/types': 3.664.0 + '@smithy/node-config-provider': 3.1.8 + '@smithy/types': 3.5.0 tslib: 2.6.2 '@aws-sdk/util-utf8-browser@3.259.0': dependencies: tslib: 2.6.2 - '@aws-sdk/xml-builder@3.472.0': + '@aws-sdk/xml-builder@3.662.0': dependencies: - '@smithy/types': 2.12.0 + '@smithy/types': 3.5.0 tslib: 2.6.2 '@azure/abort-controller@1.1.0': @@ -14655,20 +13354,15 @@ snapshots: dependencies: tslib: 2.6.2 - '@azure/core-auth@1.4.0': - dependencies: - '@azure/abort-controller': 1.1.0 - tslib: 2.6.2 - '@azure/core-auth@1.6.0': dependencies: '@azure/abort-controller': 2.0.0 '@azure/core-util': 1.7.0 tslib: 2.6.2 - '@azure/core-client@1.6.1': + '@azure/core-client@1.9.2': dependencies: - '@azure/abort-controller': 1.1.0 + '@azure/abort-controller': 2.0.0 '@azure/core-auth': 1.6.0 '@azure/core-rest-pipeline': 1.9.2 '@azure/core-tracing': 1.0.1 @@ -14681,12 +13375,20 @@ snapshots: '@azure/core-http-compat@1.3.0': dependencies: '@azure/abort-controller': 1.1.0 - '@azure/core-client': 1.6.1 + '@azure/core-client': 1.9.2 '@azure/core-rest-pipeline': 1.9.2 transitivePeerDependencies: - supports-color - '@azure/core-http@2.3.2(encoding@0.1.13)': + '@azure/core-http-compat@2.1.2': + dependencies: + '@azure/abort-controller': 2.0.0 + '@azure/core-client': 1.9.2 + '@azure/core-rest-pipeline': 1.9.2 + transitivePeerDependencies: + - supports-color + + '@azure/core-http@3.0.4(encoding@0.1.13)': dependencies: '@azure/abort-controller': 1.1.0 '@azure/core-auth': 1.6.0 @@ -14698,7 +13400,6 @@ snapshots: form-data: 4.0.0 node-fetch: 2.7.0(encoding@0.1.13) process: 0.11.10 - tough-cookie: 4.1.3 tslib: 2.6.2 tunnel: 0.0.6 uuid: 8.3.2 @@ -14740,11 +13441,6 @@ snapshots: dependencies: tslib: 2.6.2 - '@azure/core-util@1.1.1': - dependencies: - '@azure/abort-controller': 1.1.0 - tslib: 2.6.2 - '@azure/core-util@1.7.0': dependencies: '@azure/abort-controller': 2.0.0 @@ -14754,13 +13450,32 @@ snapshots: dependencies: '@azure/abort-controller': 1.1.0 '@azure/core-auth': 1.6.0 - '@azure/core-client': 1.6.1 + '@azure/core-client': 1.9.2 '@azure/core-rest-pipeline': 1.9.2 '@azure/core-tracing': 1.0.1 '@azure/core-util': 1.7.0 '@azure/logger': 1.0.3 - '@azure/msal-browser': 3.10.0 - '@azure/msal-node': 2.6.4 + '@azure/msal-browser': 3.19.0 + '@azure/msal-node': 2.11.0 + events: 3.3.0 + jws: 4.0.0 + open: 8.4.0 + stoppable: 1.1.0 + tslib: 2.6.2 + transitivePeerDependencies: + - supports-color + + '@azure/identity@4.3.0': + dependencies: + '@azure/abort-controller': 1.1.0 + '@azure/core-auth': 1.6.0 + '@azure/core-client': 1.9.2 + '@azure/core-rest-pipeline': 1.9.2 + '@azure/core-tracing': 1.0.1 + '@azure/core-util': 1.7.0 + '@azure/logger': 1.0.3 + '@azure/msal-browser': 3.19.0 + '@azure/msal-node': 2.11.0 events: 3.3.0 jws: 4.0.0 open: 8.4.0 @@ -14772,14 +13487,30 @@ snapshots: '@azure/keyvault-keys@4.6.0': dependencies: '@azure/abort-controller': 1.1.0 - '@azure/core-auth': 1.4.0 - '@azure/core-client': 1.6.1 + '@azure/core-auth': 1.6.0 + '@azure/core-client': 1.9.2 '@azure/core-http-compat': 1.3.0 '@azure/core-lro': 2.4.0 '@azure/core-paging': 1.3.0 '@azure/core-rest-pipeline': 1.9.2 '@azure/core-tracing': 1.0.1 - '@azure/core-util': 1.1.1 + '@azure/core-util': 1.7.0 + '@azure/logger': 1.0.3 + tslib: 2.6.2 + transitivePeerDependencies: + - supports-color + + '@azure/keyvault-secrets@4.8.0': + dependencies: + '@azure/abort-controller': 1.1.0 + '@azure/core-auth': 1.6.0 + '@azure/core-client': 1.9.2 + '@azure/core-http-compat': 2.1.2 + '@azure/core-lro': 2.4.0 + '@azure/core-paging': 1.3.0 + '@azure/core-rest-pipeline': 1.9.2 + '@azure/core-tracing': 1.0.1 + '@azure/core-util': 1.7.0 '@azure/logger': 1.0.3 tslib: 2.6.2 transitivePeerDependencies: @@ -14789,22 +13520,22 @@ snapshots: dependencies: tslib: 2.6.2 - '@azure/msal-browser@3.10.0': + '@azure/msal-browser@3.19.0': dependencies: - '@azure/msal-common': 14.7.1 + '@azure/msal-common': 14.13.0 - '@azure/msal-common@14.7.1': {} + '@azure/msal-common@14.13.0': {} - '@azure/msal-node@2.6.4': + '@azure/msal-node@2.11.0': dependencies: - '@azure/msal-common': 14.7.1 + '@azure/msal-common': 14.13.0 jsonwebtoken: 9.0.2 uuid: 8.3.2 - '@azure/storage-blob@12.11.0(encoding@0.1.13)': + '@azure/storage-blob@12.18.0(encoding@0.1.13)': dependencies: '@azure/abort-controller': 1.1.0 - '@azure/core-http': 2.3.2(encoding@0.1.13) + '@azure/core-http': 3.0.4(encoding@0.1.13) '@azure/core-lro': 2.4.0 '@azure/core-paging': 1.3.0 '@azure/core-tracing': 1.0.0-preview.13 @@ -14814,80 +13545,27 @@ snapshots: transitivePeerDependencies: - encoding - '@babel/code-frame@7.22.5': - dependencies: - '@babel/highlight': 7.22.5 - - '@babel/code-frame@7.23.5': - dependencies: - '@babel/highlight': 7.23.4 - chalk: 2.4.2 - '@babel/code-frame@7.24.6': dependencies: '@babel/highlight': 7.24.6 - picocolors: 1.0.0 - - '@babel/compat-data@7.22.9': {} + picocolors: 1.0.1 '@babel/compat-data@7.23.5': {} - '@babel/compat-data@7.24.6': {} - - '@babel/core@7.22.9': - dependencies: - '@ampproject/remapping': 2.2.1 - '@babel/code-frame': 7.23.5 - '@babel/generator': 7.22.9 - '@babel/helper-compilation-targets': 7.22.9(@babel/core@7.22.9) - '@babel/helper-module-transforms': 7.22.9(@babel/core@7.22.9) - '@babel/helpers': 7.22.6 - '@babel/parser': 7.24.0 - '@babel/template': 7.22.5 - '@babel/traverse': 7.22.8 - '@babel/types': 7.23.6 - convert-source-map: 1.9.0 - debug: 4.3.4(supports-color@8.1.1) - gensync: 1.0.0-beta.2 - json5: 2.2.3 - semver: 7.6.0 - transitivePeerDependencies: - - supports-color - '@babel/core@7.24.0': dependencies: - '@ampproject/remapping': 2.2.1 + '@ampproject/remapping': 2.3.0 '@babel/code-frame': 7.24.6 '@babel/generator': 7.23.6 '@babel/helper-compilation-targets': 7.23.6 '@babel/helper-module-transforms': 7.23.3(@babel/core@7.24.0) '@babel/helpers': 7.24.0 - '@babel/parser': 7.24.0 + '@babel/parser': 7.25.6 '@babel/template': 7.24.0 '@babel/traverse': 7.24.0 - '@babel/types': 7.24.0 + '@babel/types': 7.25.6 convert-source-map: 2.0.0 - debug: 4.3.4(supports-color@8.1.1) - gensync: 1.0.0-beta.2 - json5: 2.2.3 - semver: 7.6.0 - transitivePeerDependencies: - - supports-color - - '@babel/core@7.24.6': - dependencies: - '@ampproject/remapping': 2.2.1 - '@babel/code-frame': 7.24.6 - '@babel/generator': 7.24.6 - '@babel/helper-compilation-targets': 7.24.6 - '@babel/helper-module-transforms': 7.24.6(@babel/core@7.24.6) - '@babel/helpers': 7.24.6 - '@babel/parser': 7.24.6 - '@babel/template': 7.24.6 - '@babel/traverse': 7.24.6 - '@babel/types': 7.24.6 - convert-source-map: 2.0.0 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.7 gensync: 1.0.0-beta.2 json5: 2.2.3 semver: 7.6.0 @@ -14896,46 +13574,18 @@ snapshots: '@babel/generator@7.22.9': dependencies: - '@babel/types': 7.24.0 - '@jridgewell/gen-mapping': 0.3.2 - '@jridgewell/trace-mapping': 0.3.18 + '@babel/types': 7.25.6 + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 jsesc: 2.5.2 '@babel/generator@7.23.6': dependencies: - '@babel/types': 7.24.0 + '@babel/types': 7.25.6 '@jridgewell/gen-mapping': 0.3.5 '@jridgewell/trace-mapping': 0.3.25 jsesc: 2.5.2 - '@babel/generator@7.24.6': - dependencies: - '@babel/types': 7.24.6 - '@jridgewell/gen-mapping': 0.3.5 - '@jridgewell/trace-mapping': 0.3.25 - jsesc: 2.5.2 - - '@babel/helper-annotate-as-pure@7.22.5': - dependencies: - '@babel/types': 7.24.0 - - '@babel/helper-annotate-as-pure@7.24.6': - dependencies: - '@babel/types': 7.24.6 - - '@babel/helper-builder-binary-assignment-operator-visitor@7.24.6': - dependencies: - '@babel/types': 7.24.6 - - '@babel/helper-compilation-targets@7.22.9(@babel/core@7.22.9)': - dependencies: - '@babel/compat-data': 7.22.9 - '@babel/core': 7.22.9 - '@babel/helper-validator-option': 7.22.5 - browserslist: 4.23.0 - lru-cache: 5.1.1 - semver: 7.6.0 - '@babel/helper-compilation-targets@7.23.6': dependencies: '@babel/compat-data': 7.23.5 @@ -14944,133 +13594,20 @@ snapshots: lru-cache: 5.1.1 semver: 7.6.0 - '@babel/helper-compilation-targets@7.24.6': - dependencies: - '@babel/compat-data': 7.24.6 - '@babel/helper-validator-option': 7.24.6 - browserslist: 4.23.0 - lru-cache: 5.1.1 - semver: 7.6.0 - - '@babel/helper-create-class-features-plugin@7.24.0(@babel/core@7.24.6)': - dependencies: - '@babel/core': 7.24.6 - '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-function-name': 7.23.0 - '@babel/helper-member-expression-to-functions': 7.23.0 - '@babel/helper-optimise-call-expression': 7.22.5 - '@babel/helper-replace-supers': 7.22.20(@babel/core@7.24.6) - '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - '@babel/helper-split-export-declaration': 7.22.6 - semver: 7.6.0 - - '@babel/helper-create-class-features-plugin@7.24.6(@babel/core@7.24.6)': - dependencies: - '@babel/core': 7.24.6 - '@babel/helper-annotate-as-pure': 7.24.6 - '@babel/helper-environment-visitor': 7.24.6 - '@babel/helper-function-name': 7.24.6 - '@babel/helper-member-expression-to-functions': 7.24.6 - '@babel/helper-optimise-call-expression': 7.24.6 - '@babel/helper-replace-supers': 7.24.6(@babel/core@7.24.6) - '@babel/helper-skip-transparent-expression-wrappers': 7.24.6 - '@babel/helper-split-export-declaration': 7.24.6 - semver: 7.6.0 - - '@babel/helper-create-regexp-features-plugin@7.22.15(@babel/core@7.24.6)': - dependencies: - '@babel/core': 7.24.6 - '@babel/helper-annotate-as-pure': 7.22.5 - regexpu-core: 5.3.2 - semver: 7.6.0 - - '@babel/helper-create-regexp-features-plugin@7.24.6(@babel/core@7.24.6)': - dependencies: - '@babel/core': 7.24.6 - '@babel/helper-annotate-as-pure': 7.24.6 - regexpu-core: 5.3.2 - semver: 7.6.0 - - '@babel/helper-define-polyfill-provider@0.6.1(@babel/core@7.24.6)': - dependencies: - '@babel/core': 7.24.6 - '@babel/helper-compilation-targets': 7.24.6 - '@babel/helper-plugin-utils': 7.24.6 - debug: 4.3.4(supports-color@8.1.1) - lodash.debounce: 4.0.8 - resolve: 1.22.8 - transitivePeerDependencies: - - supports-color - - '@babel/helper-define-polyfill-provider@0.6.2(@babel/core@7.24.6)': - dependencies: - '@babel/core': 7.24.6 - '@babel/helper-compilation-targets': 7.24.6 - '@babel/helper-plugin-utils': 7.24.6 - debug: 4.3.4(supports-color@8.1.1) - lodash.debounce: 4.0.8 - resolve: 1.22.8 - transitivePeerDependencies: - - supports-color - '@babel/helper-environment-visitor@7.22.20': {} - '@babel/helper-environment-visitor@7.22.5': {} - - '@babel/helper-environment-visitor@7.24.6': {} - - '@babel/helper-function-name@7.22.5': - dependencies: - '@babel/template': 7.22.5 - '@babel/types': 7.24.0 - '@babel/helper-function-name@7.23.0': dependencies: '@babel/template': 7.24.0 - '@babel/types': 7.24.0 - - '@babel/helper-function-name@7.24.6': - dependencies: - '@babel/template': 7.24.6 - '@babel/types': 7.24.6 + '@babel/types': 7.25.6 '@babel/helper-hoist-variables@7.22.5': dependencies: - '@babel/types': 7.24.0 - - '@babel/helper-hoist-variables@7.24.6': - dependencies: - '@babel/types': 7.24.6 - - '@babel/helper-member-expression-to-functions@7.23.0': - dependencies: - '@babel/types': 7.24.0 - - '@babel/helper-member-expression-to-functions@7.24.6': - dependencies: - '@babel/types': 7.24.6 + '@babel/types': 7.25.6 '@babel/helper-module-imports@7.22.15': dependencies: - '@babel/types': 7.24.0 - - '@babel/helper-module-imports@7.22.5': - dependencies: - '@babel/types': 7.24.0 - - '@babel/helper-module-imports@7.24.6': - dependencies: - '@babel/types': 7.24.6 - - '@babel/helper-module-transforms@7.22.9(@babel/core@7.22.9)': - dependencies: - '@babel/core': 7.22.9 - '@babel/helper-environment-visitor': 7.22.5 - '@babel/helper-module-imports': 7.22.5 - '@babel/helper-simple-access': 7.22.5 - '@babel/helper-split-export-declaration': 7.22.6 - '@babel/helper-validator-identifier': 7.22.20 + '@babel/types': 7.25.6 '@babel/helper-module-transforms@7.23.3(@babel/core@7.24.0)': dependencies: @@ -15079,191 +13616,50 @@ snapshots: '@babel/helper-module-imports': 7.22.15 '@babel/helper-simple-access': 7.22.5 '@babel/helper-split-export-declaration': 7.22.6 - '@babel/helper-validator-identifier': 7.24.6 - - '@babel/helper-module-transforms@7.23.3(@babel/core@7.24.6)': - dependencies: - '@babel/core': 7.24.6 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-module-imports': 7.22.15 - '@babel/helper-simple-access': 7.22.5 - '@babel/helper-split-export-declaration': 7.22.6 - '@babel/helper-validator-identifier': 7.24.6 - - '@babel/helper-module-transforms@7.24.6(@babel/core@7.24.6)': - dependencies: - '@babel/core': 7.24.6 - '@babel/helper-environment-visitor': 7.24.6 - '@babel/helper-module-imports': 7.24.6 - '@babel/helper-simple-access': 7.24.6 - '@babel/helper-split-export-declaration': 7.24.6 - '@babel/helper-validator-identifier': 7.24.6 - - '@babel/helper-optimise-call-expression@7.22.5': - dependencies: - '@babel/types': 7.24.0 - - '@babel/helper-optimise-call-expression@7.24.6': - dependencies: - '@babel/types': 7.24.6 + '@babel/helper-validator-identifier': 7.24.7 '@babel/helper-plugin-utils@7.22.5': {} - '@babel/helper-plugin-utils@7.24.0': {} - - '@babel/helper-plugin-utils@7.24.6': {} - - '@babel/helper-remap-async-to-generator@7.24.6(@babel/core@7.24.6)': - dependencies: - '@babel/core': 7.24.6 - '@babel/helper-annotate-as-pure': 7.24.6 - '@babel/helper-environment-visitor': 7.24.6 - '@babel/helper-wrap-function': 7.24.6 - - '@babel/helper-replace-supers@7.22.20(@babel/core@7.24.6)': - dependencies: - '@babel/core': 7.24.6 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-member-expression-to-functions': 7.23.0 - '@babel/helper-optimise-call-expression': 7.22.5 - - '@babel/helper-replace-supers@7.24.6(@babel/core@7.24.6)': - dependencies: - '@babel/core': 7.24.6 - '@babel/helper-environment-visitor': 7.24.6 - '@babel/helper-member-expression-to-functions': 7.24.6 - '@babel/helper-optimise-call-expression': 7.24.6 - '@babel/helper-simple-access@7.22.5': dependencies: - '@babel/types': 7.24.0 - - '@babel/helper-simple-access@7.24.6': - dependencies: - '@babel/types': 7.24.6 - - '@babel/helper-skip-transparent-expression-wrappers@7.22.5': - dependencies: - '@babel/types': 7.24.0 - - '@babel/helper-skip-transparent-expression-wrappers@7.24.6': - dependencies: - '@babel/types': 7.24.6 + '@babel/types': 7.25.6 '@babel/helper-split-export-declaration@7.22.6': dependencies: - '@babel/types': 7.24.0 + '@babel/types': 7.25.6 - '@babel/helper-split-export-declaration@7.24.6': - dependencies: - '@babel/types': 7.24.6 - - '@babel/helper-string-parser@7.23.4': {} - - '@babel/helper-string-parser@7.24.6': {} + '@babel/helper-string-parser@7.24.8': {} '@babel/helper-validator-identifier@7.22.20': {} - '@babel/helper-validator-identifier@7.24.6': {} - - '@babel/helper-validator-option@7.22.5': {} + '@babel/helper-validator-identifier@7.24.7': {} '@babel/helper-validator-option@7.23.5': {} - '@babel/helper-validator-option@7.24.6': {} - - '@babel/helper-wrap-function@7.24.6': - dependencies: - '@babel/helper-function-name': 7.24.6 - '@babel/template': 7.24.6 - '@babel/types': 7.24.6 - - '@babel/helpers@7.22.6': - dependencies: - '@babel/template': 7.22.5 - '@babel/traverse': 7.22.8 - '@babel/types': 7.24.0 - transitivePeerDependencies: - - supports-color - '@babel/helpers@7.24.0': dependencies: '@babel/template': 7.24.0 '@babel/traverse': 7.24.0 - '@babel/types': 7.24.0 + '@babel/types': 7.25.6 transitivePeerDependencies: - supports-color - '@babel/helpers@7.24.6': - dependencies: - '@babel/template': 7.24.6 - '@babel/types': 7.24.6 - - '@babel/highlight@7.22.5': - dependencies: - '@babel/helper-validator-identifier': 7.24.6 - chalk: 2.4.2 - js-tokens: 4.0.0 - - '@babel/highlight@7.23.4': - dependencies: - '@babel/helper-validator-identifier': 7.22.20 - chalk: 2.4.2 - js-tokens: 4.0.0 - '@babel/highlight@7.24.6': dependencies: - '@babel/helper-validator-identifier': 7.24.6 + '@babel/helper-validator-identifier': 7.24.7 chalk: 2.4.2 js-tokens: 4.0.0 - picocolors: 1.0.0 + picocolors: 1.0.1 - '@babel/parser@7.24.0': + '@babel/parser@7.25.6': dependencies: - '@babel/types': 7.23.6 - - '@babel/parser@7.24.6': - dependencies: - '@babel/types': 7.24.6 - - '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.24.6(@babel/core@7.24.6)': - dependencies: - '@babel/core': 7.24.6 - '@babel/helper-environment-visitor': 7.24.6 - '@babel/helper-plugin-utils': 7.24.6 - - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.24.6(@babel/core@7.24.6)': - dependencies: - '@babel/core': 7.24.6 - '@babel/helper-plugin-utils': 7.24.6 - - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.24.6(@babel/core@7.24.6)': - dependencies: - '@babel/core': 7.24.6 - '@babel/helper-plugin-utils': 7.24.6 - '@babel/helper-skip-transparent-expression-wrappers': 7.24.6 - '@babel/plugin-transform-optional-chaining': 7.24.6(@babel/core@7.24.6) - - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.24.6(@babel/core@7.24.6)': - dependencies: - '@babel/core': 7.24.6 - '@babel/helper-environment-visitor': 7.24.6 - '@babel/helper-plugin-utils': 7.24.6 - - '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.24.6)': - dependencies: - '@babel/core': 7.24.6 + '@babel/types': 7.25.6 '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.24.0)': dependencies: '@babel/core': 7.24.0 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.24.6)': - dependencies: - '@babel/core': 7.24.6 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.24.0)': dependencies: '@babel/core': 7.24.0 @@ -15274,666 +13670,70 @@ snapshots: '@babel/core': 7.24.0 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.24.6)': - dependencies: - '@babel/core': 7.24.6 - '@babel/helper-plugin-utils': 7.22.5 - - '@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.24.6)': - dependencies: - '@babel/core': 7.24.6 - '@babel/helper-plugin-utils': 7.24.6 - - '@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.24.6)': - dependencies: - '@babel/core': 7.24.6 - '@babel/helper-plugin-utils': 7.24.6 - - '@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.24.6)': - dependencies: - '@babel/core': 7.24.6 - '@babel/helper-plugin-utils': 7.24.6 - - '@babel/plugin-syntax-flow@7.23.3(@babel/core@7.24.6)': - dependencies: - '@babel/core': 7.24.6 - '@babel/helper-plugin-utils': 7.24.0 - - '@babel/plugin-syntax-import-assertions@7.24.6(@babel/core@7.24.6)': - dependencies: - '@babel/core': 7.24.6 - '@babel/helper-plugin-utils': 7.24.6 - - '@babel/plugin-syntax-import-attributes@7.24.6(@babel/core@7.24.6)': - dependencies: - '@babel/core': 7.24.6 - '@babel/helper-plugin-utils': 7.24.6 - '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.24.0)': dependencies: '@babel/core': 7.24.0 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.24.6)': - dependencies: - '@babel/core': 7.24.6 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.24.0)': dependencies: '@babel/core': 7.24.0 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.24.6)': - dependencies: - '@babel/core': 7.24.6 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-jsx@7.18.6(@babel/core@7.24.0)': dependencies: '@babel/core': 7.24.0 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-jsx@7.23.3(@babel/core@7.24.6)': - dependencies: - '@babel/core': 7.24.6 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.24.0)': dependencies: '@babel/core': 7.24.0 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.24.6)': - dependencies: - '@babel/core': 7.24.6 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.24.0)': dependencies: '@babel/core': 7.24.0 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.24.6)': - dependencies: - '@babel/core': 7.24.6 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.24.0)': dependencies: '@babel/core': 7.24.0 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.24.6)': - dependencies: - '@babel/core': 7.24.6 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.24.0)': dependencies: '@babel/core': 7.24.0 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.24.6)': - dependencies: - '@babel/core': 7.24.6 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.24.0)': dependencies: '@babel/core': 7.24.0 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.24.6)': - dependencies: - '@babel/core': 7.24.6 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.24.0)': dependencies: '@babel/core': 7.24.0 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.24.6)': - dependencies: - '@babel/core': 7.24.6 - '@babel/helper-plugin-utils': 7.22.5 - - '@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.24.6)': - dependencies: - '@babel/core': 7.24.6 - '@babel/helper-plugin-utils': 7.24.6 - '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.24.0)': dependencies: '@babel/core': 7.24.0 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.24.6)': - dependencies: - '@babel/core': 7.24.6 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-typescript@7.20.0(@babel/core@7.24.0)': dependencies: '@babel/core': 7.24.0 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-typescript@7.23.3(@babel/core@7.24.6)': - dependencies: - '@babel/core': 7.24.6 - '@babel/helper-plugin-utils': 7.24.0 - - '@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.24.6)': - dependencies: - '@babel/core': 7.24.6 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.6) - '@babel/helper-plugin-utils': 7.24.6 - - '@babel/plugin-transform-arrow-functions@7.24.6(@babel/core@7.24.6)': - dependencies: - '@babel/core': 7.24.6 - '@babel/helper-plugin-utils': 7.24.6 - - '@babel/plugin-transform-async-generator-functions@7.24.6(@babel/core@7.24.6)': - dependencies: - '@babel/core': 7.24.6 - '@babel/helper-environment-visitor': 7.24.6 - '@babel/helper-plugin-utils': 7.24.6 - '@babel/helper-remap-async-to-generator': 7.24.6(@babel/core@7.24.6) - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.24.6) - - '@babel/plugin-transform-async-to-generator@7.24.6(@babel/core@7.24.6)': - dependencies: - '@babel/core': 7.24.6 - '@babel/helper-module-imports': 7.24.6 - '@babel/helper-plugin-utils': 7.24.6 - '@babel/helper-remap-async-to-generator': 7.24.6(@babel/core@7.24.6) - - '@babel/plugin-transform-block-scoped-functions@7.24.6(@babel/core@7.24.6)': - dependencies: - '@babel/core': 7.24.6 - '@babel/helper-plugin-utils': 7.24.6 - - '@babel/plugin-transform-block-scoping@7.24.6(@babel/core@7.24.6)': - dependencies: - '@babel/core': 7.24.6 - '@babel/helper-plugin-utils': 7.24.6 - - '@babel/plugin-transform-class-properties@7.23.3(@babel/core@7.24.6)': - dependencies: - '@babel/core': 7.24.6 - '@babel/helper-create-class-features-plugin': 7.24.0(@babel/core@7.24.6) - '@babel/helper-plugin-utils': 7.24.0 - - '@babel/plugin-transform-class-properties@7.24.6(@babel/core@7.24.6)': - dependencies: - '@babel/core': 7.24.6 - '@babel/helper-create-class-features-plugin': 7.24.6(@babel/core@7.24.6) - '@babel/helper-plugin-utils': 7.24.6 - - '@babel/plugin-transform-class-static-block@7.24.6(@babel/core@7.24.6)': - dependencies: - '@babel/core': 7.24.6 - '@babel/helper-create-class-features-plugin': 7.24.6(@babel/core@7.24.6) - '@babel/helper-plugin-utils': 7.24.6 - '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.24.6) - - '@babel/plugin-transform-classes@7.24.6(@babel/core@7.24.6)': - dependencies: - '@babel/core': 7.24.6 - '@babel/helper-annotate-as-pure': 7.24.6 - '@babel/helper-compilation-targets': 7.24.6 - '@babel/helper-environment-visitor': 7.24.6 - '@babel/helper-function-name': 7.24.6 - '@babel/helper-plugin-utils': 7.24.6 - '@babel/helper-replace-supers': 7.24.6(@babel/core@7.24.6) - '@babel/helper-split-export-declaration': 7.24.6 - globals: 11.12.0 - - '@babel/plugin-transform-computed-properties@7.24.6(@babel/core@7.24.6)': - dependencies: - '@babel/core': 7.24.6 - '@babel/helper-plugin-utils': 7.24.6 - '@babel/template': 7.24.6 - - '@babel/plugin-transform-destructuring@7.24.6(@babel/core@7.24.6)': - dependencies: - '@babel/core': 7.24.6 - '@babel/helper-plugin-utils': 7.24.6 - - '@babel/plugin-transform-dotall-regex@7.24.6(@babel/core@7.24.6)': - dependencies: - '@babel/core': 7.24.6 - '@babel/helper-create-regexp-features-plugin': 7.24.6(@babel/core@7.24.6) - '@babel/helper-plugin-utils': 7.24.6 - - '@babel/plugin-transform-duplicate-keys@7.24.6(@babel/core@7.24.6)': - dependencies: - '@babel/core': 7.24.6 - '@babel/helper-plugin-utils': 7.24.6 - - '@babel/plugin-transform-dynamic-import@7.24.6(@babel/core@7.24.6)': - dependencies: - '@babel/core': 7.24.6 - '@babel/helper-plugin-utils': 7.24.6 - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.24.6) - - '@babel/plugin-transform-exponentiation-operator@7.24.6(@babel/core@7.24.6)': - dependencies: - '@babel/core': 7.24.6 - '@babel/helper-builder-binary-assignment-operator-visitor': 7.24.6 - '@babel/helper-plugin-utils': 7.24.6 - - '@babel/plugin-transform-export-namespace-from@7.24.6(@babel/core@7.24.6)': - dependencies: - '@babel/core': 7.24.6 - '@babel/helper-plugin-utils': 7.24.6 - '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.24.6) - - '@babel/plugin-transform-flow-strip-types@7.23.3(@babel/core@7.24.6)': - dependencies: - '@babel/core': 7.24.6 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-flow': 7.23.3(@babel/core@7.24.6) - - '@babel/plugin-transform-for-of@7.24.6(@babel/core@7.24.6)': - dependencies: - '@babel/core': 7.24.6 - '@babel/helper-plugin-utils': 7.24.6 - '@babel/helper-skip-transparent-expression-wrappers': 7.24.6 - - '@babel/plugin-transform-function-name@7.24.6(@babel/core@7.24.6)': - dependencies: - '@babel/core': 7.24.6 - '@babel/helper-compilation-targets': 7.24.6 - '@babel/helper-function-name': 7.24.6 - '@babel/helper-plugin-utils': 7.24.6 - - '@babel/plugin-transform-json-strings@7.24.6(@babel/core@7.24.6)': - dependencies: - '@babel/core': 7.24.6 - '@babel/helper-plugin-utils': 7.24.6 - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.24.6) - - '@babel/plugin-transform-literals@7.24.6(@babel/core@7.24.6)': - dependencies: - '@babel/core': 7.24.6 - '@babel/helper-plugin-utils': 7.24.6 - - '@babel/plugin-transform-logical-assignment-operators@7.24.6(@babel/core@7.24.6)': - dependencies: - '@babel/core': 7.24.6 - '@babel/helper-plugin-utils': 7.24.6 - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.24.6) - - '@babel/plugin-transform-member-expression-literals@7.24.6(@babel/core@7.24.6)': - dependencies: - '@babel/core': 7.24.6 - '@babel/helper-plugin-utils': 7.24.6 - - '@babel/plugin-transform-modules-amd@7.24.6(@babel/core@7.24.6)': - dependencies: - '@babel/core': 7.24.6 - '@babel/helper-module-transforms': 7.24.6(@babel/core@7.24.6) - '@babel/helper-plugin-utils': 7.24.6 - - '@babel/plugin-transform-modules-commonjs@7.23.3(@babel/core@7.24.6)': - dependencies: - '@babel/core': 7.24.6 - '@babel/helper-module-transforms': 7.23.3(@babel/core@7.24.6) - '@babel/helper-plugin-utils': 7.24.0 - '@babel/helper-simple-access': 7.22.5 - - '@babel/plugin-transform-modules-commonjs@7.24.6(@babel/core@7.24.6)': - dependencies: - '@babel/core': 7.24.6 - '@babel/helper-module-transforms': 7.24.6(@babel/core@7.24.6) - '@babel/helper-plugin-utils': 7.24.6 - '@babel/helper-simple-access': 7.24.6 - - '@babel/plugin-transform-modules-systemjs@7.24.6(@babel/core@7.24.6)': - dependencies: - '@babel/core': 7.24.6 - '@babel/helper-hoist-variables': 7.24.6 - '@babel/helper-module-transforms': 7.24.6(@babel/core@7.24.6) - '@babel/helper-plugin-utils': 7.24.6 - '@babel/helper-validator-identifier': 7.24.6 - - '@babel/plugin-transform-modules-umd@7.24.6(@babel/core@7.24.6)': - dependencies: - '@babel/core': 7.24.6 - '@babel/helper-module-transforms': 7.24.6(@babel/core@7.24.6) - '@babel/helper-plugin-utils': 7.24.6 - - '@babel/plugin-transform-named-capturing-groups-regex@7.24.6(@babel/core@7.24.6)': - dependencies: - '@babel/core': 7.24.6 - '@babel/helper-create-regexp-features-plugin': 7.24.6(@babel/core@7.24.6) - '@babel/helper-plugin-utils': 7.24.6 - - '@babel/plugin-transform-new-target@7.24.6(@babel/core@7.24.6)': - dependencies: - '@babel/core': 7.24.6 - '@babel/helper-plugin-utils': 7.24.6 - - '@babel/plugin-transform-nullish-coalescing-operator@7.23.4(@babel/core@7.24.6)': - dependencies: - '@babel/core': 7.24.6 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.24.6) - - '@babel/plugin-transform-nullish-coalescing-operator@7.24.6(@babel/core@7.24.6)': - dependencies: - '@babel/core': 7.24.6 - '@babel/helper-plugin-utils': 7.24.6 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.24.6) - - '@babel/plugin-transform-numeric-separator@7.24.6(@babel/core@7.24.6)': - dependencies: - '@babel/core': 7.24.6 - '@babel/helper-plugin-utils': 7.24.6 - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.24.6) - - '@babel/plugin-transform-object-rest-spread@7.24.6(@babel/core@7.24.6)': - dependencies: - '@babel/core': 7.24.6 - '@babel/helper-compilation-targets': 7.24.6 - '@babel/helper-plugin-utils': 7.24.6 - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.24.6) - '@babel/plugin-transform-parameters': 7.24.6(@babel/core@7.24.6) - - '@babel/plugin-transform-object-super@7.24.6(@babel/core@7.24.6)': - dependencies: - '@babel/core': 7.24.6 - '@babel/helper-plugin-utils': 7.24.6 - '@babel/helper-replace-supers': 7.24.6(@babel/core@7.24.6) - - '@babel/plugin-transform-optional-catch-binding@7.24.6(@babel/core@7.24.6)': - dependencies: - '@babel/core': 7.24.6 - '@babel/helper-plugin-utils': 7.24.6 - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.24.6) - - '@babel/plugin-transform-optional-chaining@7.23.4(@babel/core@7.24.6)': - dependencies: - '@babel/core': 7.24.6 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.24.6) - - '@babel/plugin-transform-optional-chaining@7.24.6(@babel/core@7.24.6)': - dependencies: - '@babel/core': 7.24.6 - '@babel/helper-plugin-utils': 7.24.6 - '@babel/helper-skip-transparent-expression-wrappers': 7.24.6 - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.24.6) - - '@babel/plugin-transform-parameters@7.24.6(@babel/core@7.24.6)': - dependencies: - '@babel/core': 7.24.6 - '@babel/helper-plugin-utils': 7.24.6 - - '@babel/plugin-transform-private-methods@7.23.3(@babel/core@7.24.6)': - dependencies: - '@babel/core': 7.24.6 - '@babel/helper-create-class-features-plugin': 7.24.0(@babel/core@7.24.6) - '@babel/helper-plugin-utils': 7.24.0 - - '@babel/plugin-transform-private-methods@7.24.6(@babel/core@7.24.6)': - dependencies: - '@babel/core': 7.24.6 - '@babel/helper-create-class-features-plugin': 7.24.6(@babel/core@7.24.6) - '@babel/helper-plugin-utils': 7.24.6 - - '@babel/plugin-transform-private-property-in-object@7.24.6(@babel/core@7.24.6)': - dependencies: - '@babel/core': 7.24.6 - '@babel/helper-annotate-as-pure': 7.24.6 - '@babel/helper-create-class-features-plugin': 7.24.6(@babel/core@7.24.6) - '@babel/helper-plugin-utils': 7.24.6 - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.24.6) - - '@babel/plugin-transform-property-literals@7.24.6(@babel/core@7.24.6)': - dependencies: - '@babel/core': 7.24.6 - '@babel/helper-plugin-utils': 7.24.6 - - '@babel/plugin-transform-regenerator@7.24.6(@babel/core@7.24.6)': - dependencies: - '@babel/core': 7.24.6 - '@babel/helper-plugin-utils': 7.24.6 - regenerator-transform: 0.15.2 - - '@babel/plugin-transform-reserved-words@7.24.6(@babel/core@7.24.6)': - dependencies: - '@babel/core': 7.24.6 - '@babel/helper-plugin-utils': 7.24.6 - - '@babel/plugin-transform-shorthand-properties@7.24.6(@babel/core@7.24.6)': - dependencies: - '@babel/core': 7.24.6 - '@babel/helper-plugin-utils': 7.24.6 - - '@babel/plugin-transform-spread@7.24.6(@babel/core@7.24.6)': - dependencies: - '@babel/core': 7.24.6 - '@babel/helper-plugin-utils': 7.24.6 - '@babel/helper-skip-transparent-expression-wrappers': 7.24.6 - - '@babel/plugin-transform-sticky-regex@7.24.6(@babel/core@7.24.6)': - dependencies: - '@babel/core': 7.24.6 - '@babel/helper-plugin-utils': 7.24.6 - - '@babel/plugin-transform-template-literals@7.24.6(@babel/core@7.24.6)': - dependencies: - '@babel/core': 7.24.6 - '@babel/helper-plugin-utils': 7.24.6 - - '@babel/plugin-transform-typeof-symbol@7.24.6(@babel/core@7.24.6)': - dependencies: - '@babel/core': 7.24.6 - '@babel/helper-plugin-utils': 7.24.6 - - '@babel/plugin-transform-typescript@7.23.6(@babel/core@7.24.6)': - dependencies: - '@babel/core': 7.24.6 - '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-create-class-features-plugin': 7.24.0(@babel/core@7.24.6) - '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-typescript': 7.23.3(@babel/core@7.24.6) - - '@babel/plugin-transform-unicode-escapes@7.24.6(@babel/core@7.24.6)': - dependencies: - '@babel/core': 7.24.6 - '@babel/helper-plugin-utils': 7.24.6 - - '@babel/plugin-transform-unicode-property-regex@7.24.6(@babel/core@7.24.6)': - dependencies: - '@babel/core': 7.24.6 - '@babel/helper-create-regexp-features-plugin': 7.24.6(@babel/core@7.24.6) - '@babel/helper-plugin-utils': 7.24.6 - - '@babel/plugin-transform-unicode-regex@7.24.6(@babel/core@7.24.6)': - dependencies: - '@babel/core': 7.24.6 - '@babel/helper-create-regexp-features-plugin': 7.24.6(@babel/core@7.24.6) - '@babel/helper-plugin-utils': 7.24.6 - - '@babel/plugin-transform-unicode-sets-regex@7.24.6(@babel/core@7.24.6)': - dependencies: - '@babel/core': 7.24.6 - '@babel/helper-create-regexp-features-plugin': 7.24.6(@babel/core@7.24.6) - '@babel/helper-plugin-utils': 7.24.6 - - '@babel/preset-env@7.24.6(@babel/core@7.24.6)': - dependencies: - '@babel/compat-data': 7.24.6 - '@babel/core': 7.24.6 - '@babel/helper-compilation-targets': 7.24.6 - '@babel/helper-plugin-utils': 7.24.6 - '@babel/helper-validator-option': 7.24.6 - '@babel/plugin-bugfix-firefox-class-in-computed-class-key': 7.24.6(@babel/core@7.24.6) - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.24.6(@babel/core@7.24.6) - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.24.6(@babel/core@7.24.6) - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.24.6(@babel/core@7.24.6) - '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.24.6) - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.24.6) - '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.24.6) - '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.24.6) - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.24.6) - '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.24.6) - '@babel/plugin-syntax-import-assertions': 7.24.6(@babel/core@7.24.6) - '@babel/plugin-syntax-import-attributes': 7.24.6(@babel/core@7.24.6) - '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.24.6) - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.24.6) - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.24.6) - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.24.6) - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.24.6) - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.24.6) - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.24.6) - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.24.6) - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.24.6) - '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.24.6) - '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.24.6) - '@babel/plugin-transform-arrow-functions': 7.24.6(@babel/core@7.24.6) - '@babel/plugin-transform-async-generator-functions': 7.24.6(@babel/core@7.24.6) - '@babel/plugin-transform-async-to-generator': 7.24.6(@babel/core@7.24.6) - '@babel/plugin-transform-block-scoped-functions': 7.24.6(@babel/core@7.24.6) - '@babel/plugin-transform-block-scoping': 7.24.6(@babel/core@7.24.6) - '@babel/plugin-transform-class-properties': 7.24.6(@babel/core@7.24.6) - '@babel/plugin-transform-class-static-block': 7.24.6(@babel/core@7.24.6) - '@babel/plugin-transform-classes': 7.24.6(@babel/core@7.24.6) - '@babel/plugin-transform-computed-properties': 7.24.6(@babel/core@7.24.6) - '@babel/plugin-transform-destructuring': 7.24.6(@babel/core@7.24.6) - '@babel/plugin-transform-dotall-regex': 7.24.6(@babel/core@7.24.6) - '@babel/plugin-transform-duplicate-keys': 7.24.6(@babel/core@7.24.6) - '@babel/plugin-transform-dynamic-import': 7.24.6(@babel/core@7.24.6) - '@babel/plugin-transform-exponentiation-operator': 7.24.6(@babel/core@7.24.6) - '@babel/plugin-transform-export-namespace-from': 7.24.6(@babel/core@7.24.6) - '@babel/plugin-transform-for-of': 7.24.6(@babel/core@7.24.6) - '@babel/plugin-transform-function-name': 7.24.6(@babel/core@7.24.6) - '@babel/plugin-transform-json-strings': 7.24.6(@babel/core@7.24.6) - '@babel/plugin-transform-literals': 7.24.6(@babel/core@7.24.6) - '@babel/plugin-transform-logical-assignment-operators': 7.24.6(@babel/core@7.24.6) - '@babel/plugin-transform-member-expression-literals': 7.24.6(@babel/core@7.24.6) - '@babel/plugin-transform-modules-amd': 7.24.6(@babel/core@7.24.6) - '@babel/plugin-transform-modules-commonjs': 7.24.6(@babel/core@7.24.6) - '@babel/plugin-transform-modules-systemjs': 7.24.6(@babel/core@7.24.6) - '@babel/plugin-transform-modules-umd': 7.24.6(@babel/core@7.24.6) - '@babel/plugin-transform-named-capturing-groups-regex': 7.24.6(@babel/core@7.24.6) - '@babel/plugin-transform-new-target': 7.24.6(@babel/core@7.24.6) - '@babel/plugin-transform-nullish-coalescing-operator': 7.24.6(@babel/core@7.24.6) - '@babel/plugin-transform-numeric-separator': 7.24.6(@babel/core@7.24.6) - '@babel/plugin-transform-object-rest-spread': 7.24.6(@babel/core@7.24.6) - '@babel/plugin-transform-object-super': 7.24.6(@babel/core@7.24.6) - '@babel/plugin-transform-optional-catch-binding': 7.24.6(@babel/core@7.24.6) - '@babel/plugin-transform-optional-chaining': 7.24.6(@babel/core@7.24.6) - '@babel/plugin-transform-parameters': 7.24.6(@babel/core@7.24.6) - '@babel/plugin-transform-private-methods': 7.24.6(@babel/core@7.24.6) - '@babel/plugin-transform-private-property-in-object': 7.24.6(@babel/core@7.24.6) - '@babel/plugin-transform-property-literals': 7.24.6(@babel/core@7.24.6) - '@babel/plugin-transform-regenerator': 7.24.6(@babel/core@7.24.6) - '@babel/plugin-transform-reserved-words': 7.24.6(@babel/core@7.24.6) - '@babel/plugin-transform-shorthand-properties': 7.24.6(@babel/core@7.24.6) - '@babel/plugin-transform-spread': 7.24.6(@babel/core@7.24.6) - '@babel/plugin-transform-sticky-regex': 7.24.6(@babel/core@7.24.6) - '@babel/plugin-transform-template-literals': 7.24.6(@babel/core@7.24.6) - '@babel/plugin-transform-typeof-symbol': 7.24.6(@babel/core@7.24.6) - '@babel/plugin-transform-unicode-escapes': 7.24.6(@babel/core@7.24.6) - '@babel/plugin-transform-unicode-property-regex': 7.24.6(@babel/core@7.24.6) - '@babel/plugin-transform-unicode-regex': 7.24.6(@babel/core@7.24.6) - '@babel/plugin-transform-unicode-sets-regex': 7.24.6(@babel/core@7.24.6) - '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.24.6) - babel-plugin-polyfill-corejs2: 0.4.10(@babel/core@7.24.6) - babel-plugin-polyfill-corejs3: 0.10.4(@babel/core@7.24.6) - babel-plugin-polyfill-regenerator: 0.6.2(@babel/core@7.24.6) - core-js-compat: 3.36.0 - semver: 7.6.0 - transitivePeerDependencies: - - supports-color - - '@babel/preset-flow@7.24.0(@babel/core@7.24.6)': - dependencies: - '@babel/core': 7.24.6 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/helper-validator-option': 7.23.5 - '@babel/plugin-transform-flow-strip-types': 7.23.3(@babel/core@7.24.6) - - '@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.24.6)': - dependencies: - '@babel/core': 7.24.6 - '@babel/helper-plugin-utils': 7.24.6 - '@babel/types': 7.24.0 - esutils: 2.0.3 - - '@babel/preset-typescript@7.23.3(@babel/core@7.24.6)': - dependencies: - '@babel/core': 7.24.6 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/helper-validator-option': 7.23.5 - '@babel/plugin-syntax-jsx': 7.23.3(@babel/core@7.24.6) - '@babel/plugin-transform-modules-commonjs': 7.23.3(@babel/core@7.24.6) - '@babel/plugin-transform-typescript': 7.23.6(@babel/core@7.24.6) - - '@babel/register@7.23.7(@babel/core@7.24.6)': - dependencies: - '@babel/core': 7.24.6 - clone-deep: 4.0.1 - find-cache-dir: 2.1.0 - make-dir: 2.1.0 - pirates: 4.0.6 - source-map-support: 0.5.21 - - '@babel/regjsgen@0.8.0': {} - - '@babel/runtime@7.22.6': - dependencies: - regenerator-runtime: 0.13.11 - - '@babel/runtime@7.23.6': - dependencies: - regenerator-runtime: 0.14.1 - '@babel/runtime@7.24.7': dependencies: regenerator-runtime: 0.14.1 - '@babel/standalone@7.23.6': {} - - '@babel/template@7.22.5': - dependencies: - '@babel/code-frame': 7.24.6 - '@babel/parser': 7.24.0 - '@babel/types': 7.24.0 - '@babel/template@7.24.0': dependencies: '@babel/code-frame': 7.24.6 - '@babel/parser': 7.24.0 - '@babel/types': 7.24.0 - - '@babel/template@7.24.6': - dependencies: - '@babel/code-frame': 7.24.6 - '@babel/parser': 7.24.6 - '@babel/types': 7.24.6 - - '@babel/traverse@7.22.8': - dependencies: - '@babel/code-frame': 7.24.6 - '@babel/generator': 7.22.9 - '@babel/helper-environment-visitor': 7.22.5 - '@babel/helper-function-name': 7.22.5 - '@babel/helper-hoist-variables': 7.22.5 - '@babel/helper-split-export-declaration': 7.22.6 - '@babel/parser': 7.24.0 - '@babel/types': 7.24.0 - debug: 4.3.4(supports-color@8.1.1) - globals: 11.12.0 - transitivePeerDependencies: - - supports-color + '@babel/parser': 7.25.6 + '@babel/types': 7.25.6 '@babel/traverse@7.24.0': dependencies: @@ -15943,51 +13743,70 @@ snapshots: '@babel/helper-function-name': 7.23.0 '@babel/helper-hoist-variables': 7.22.5 '@babel/helper-split-export-declaration': 7.22.6 - '@babel/parser': 7.24.0 - '@babel/types': 7.24.0 - debug: 4.3.4(supports-color@8.1.1) + '@babel/parser': 7.25.6 + '@babel/types': 7.25.6 + debug: 4.3.7 globals: 11.12.0 transitivePeerDependencies: - supports-color - '@babel/traverse@7.24.6': + '@babel/types@7.25.6': dependencies: - '@babel/code-frame': 7.24.6 - '@babel/generator': 7.24.6 - '@babel/helper-environment-visitor': 7.24.6 - '@babel/helper-function-name': 7.24.6 - '@babel/helper-hoist-variables': 7.24.6 - '@babel/helper-split-export-declaration': 7.24.6 - '@babel/parser': 7.24.6 - '@babel/types': 7.24.6 - debug: 4.3.4(supports-color@8.1.1) - globals: 11.12.0 - transitivePeerDependencies: - - supports-color - - '@babel/types@7.23.6': - dependencies: - '@babel/helper-string-parser': 7.23.4 - '@babel/helper-validator-identifier': 7.22.20 - to-fast-properties: 2.0.0 - - '@babel/types@7.24.0': - dependencies: - '@babel/helper-string-parser': 7.23.4 - '@babel/helper-validator-identifier': 7.22.20 - to-fast-properties: 2.0.0 - - '@babel/types@7.24.6': - dependencies: - '@babel/helper-string-parser': 7.24.6 - '@babel/helper-validator-identifier': 7.24.6 + '@babel/helper-string-parser': 7.24.8 + '@babel/helper-validator-identifier': 7.24.7 to-fast-properties: 2.0.0 '@bcoe/v8-coverage@0.2.3': {} - '@chromatic-com/storybook@1.5.0(react@18.2.0)': + '@biomejs/biome@1.9.0': + optionalDependencies: + '@biomejs/cli-darwin-arm64': 1.9.0 + '@biomejs/cli-darwin-x64': 1.9.0 + '@biomejs/cli-linux-arm64': 1.9.0 + '@biomejs/cli-linux-arm64-musl': 1.9.0 + '@biomejs/cli-linux-x64': 1.9.0 + '@biomejs/cli-linux-x64-musl': 1.9.0 + '@biomejs/cli-win32-arm64': 1.9.0 + '@biomejs/cli-win32-x64': 1.9.0 + + '@biomejs/cli-darwin-arm64@1.9.0': + optional: true + + '@biomejs/cli-darwin-x64@1.9.0': + optional: true + + '@biomejs/cli-linux-arm64-musl@1.9.0': + optional: true + + '@biomejs/cli-linux-arm64@1.9.0': + optional: true + + '@biomejs/cli-linux-x64-musl@1.9.0': + optional: true + + '@biomejs/cli-linux-x64@1.9.0': + optional: true + + '@biomejs/cli-win32-arm64@1.9.0': + optional: true + + '@biomejs/cli-win32-x64@1.9.0': + optional: true + + '@cfaester/enzyme-adapter-react-18@0.8.0(enzyme@3.11.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: - chromatic: 11.4.1 + enzyme: 3.11.0 + enzyme-shallow-equal: 1.0.7 + function.prototype.name: 1.1.6 + has: 1.0.4 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + react-is: 18.2.0 + react-shallow-renderer: 16.15.0(react@18.2.0) + + '@chromatic-com/storybook@2.0.2(react@18.2.0)': + dependencies: + chromatic: 11.10.2 filesize: 10.1.0 jsonfile: 6.1.0 react-confetti: 6.1.0(react@18.2.0) @@ -16093,10 +13912,18 @@ snapshots: style-mod: 4.1.0 w3c-keyname: 2.2.6 - '@colors/colors@1.5.0': {} + '@colors/colors@1.5.0': + optional: true + + '@colors/colors@1.6.0': {} '@common.js/is-network-error@1.0.1': {} + '@cspotcode/source-map-support@0.8.1': + dependencies: + '@jridgewell/trace-mapping': 0.3.9 + optional: true + '@ctrl/tinycolor@3.6.0': {} '@curlconverter/yargs-parser@0.0.1': {} @@ -16145,11 +13972,9 @@ snapshots: enabled: 2.0.0 kuler: 2.0.0 - '@discoveryjs/json-ext@0.5.7': {} - - '@element-plus/icons-vue@2.1.0(vue@3.4.21(typescript@5.5.2))': + '@element-plus/icons-vue@2.3.1(vue@3.5.11(typescript@5.6.2))': dependencies: - vue: 3.4.21(typescript@5.5.2) + vue: 3.5.11(typescript@5.6.2) '@emotion/is-prop-valid@1.2.1': dependencies: @@ -16159,77 +13984,76 @@ snapshots: '@emotion/unitless@0.8.0': {} - '@emotion/use-insertion-effect-with-fallbacks@1.0.1(react@18.2.0)': - dependencies: - react: 18.2.0 - - '@esbuild/aix-ppc64@0.20.2': + '@esbuild/aix-ppc64@0.24.0': optional: true - '@esbuild/android-arm64@0.20.2': + '@esbuild/android-arm64@0.24.0': optional: true - '@esbuild/android-arm@0.20.2': + '@esbuild/android-arm@0.24.0': optional: true - '@esbuild/android-x64@0.20.2': + '@esbuild/android-x64@0.24.0': optional: true - '@esbuild/darwin-arm64@0.20.2': + '@esbuild/darwin-arm64@0.24.0': optional: true - '@esbuild/darwin-x64@0.20.2': + '@esbuild/darwin-x64@0.24.0': optional: true - '@esbuild/freebsd-arm64@0.20.2': + '@esbuild/freebsd-arm64@0.24.0': optional: true - '@esbuild/freebsd-x64@0.20.2': + '@esbuild/freebsd-x64@0.24.0': optional: true - '@esbuild/linux-arm64@0.20.2': + '@esbuild/linux-arm64@0.24.0': optional: true - '@esbuild/linux-arm@0.20.2': + '@esbuild/linux-arm@0.24.0': optional: true - '@esbuild/linux-ia32@0.20.2': + '@esbuild/linux-ia32@0.24.0': optional: true - '@esbuild/linux-loong64@0.20.2': + '@esbuild/linux-loong64@0.24.0': optional: true - '@esbuild/linux-mips64el@0.20.2': + '@esbuild/linux-mips64el@0.24.0': optional: true - '@esbuild/linux-ppc64@0.20.2': + '@esbuild/linux-ppc64@0.24.0': optional: true - '@esbuild/linux-riscv64@0.20.2': + '@esbuild/linux-riscv64@0.24.0': optional: true - '@esbuild/linux-s390x@0.20.2': + '@esbuild/linux-s390x@0.24.0': optional: true - '@esbuild/linux-x64@0.20.2': + '@esbuild/linux-x64@0.24.0': optional: true - '@esbuild/netbsd-x64@0.20.2': + '@esbuild/netbsd-x64@0.24.0': optional: true - '@esbuild/openbsd-x64@0.20.2': + '@esbuild/openbsd-arm64@0.24.0': optional: true - '@esbuild/sunos-x64@0.20.2': + '@esbuild/openbsd-x64@0.24.0': optional: true - '@esbuild/win32-arm64@0.20.2': + '@esbuild/sunos-x64@0.24.0': optional: true - '@esbuild/win32-ia32@0.20.2': + '@esbuild/win32-arm64@0.24.0': optional: true - '@esbuild/win32-x64@0.20.2': + '@esbuild/win32-ia32@0.24.0': + optional: true + + '@esbuild/win32-x64@0.24.0': optional: true '@eslint-community/eslint-utils@4.4.0(eslint@8.57.0)': @@ -16242,7 +14066,7 @@ snapshots: '@eslint/eslintrc@2.1.4': dependencies: ajv: 6.12.6 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.7 espree: 9.6.1 globals: 13.20.0 ignore: 5.2.4 @@ -16263,8 +14087,6 @@ snapshots: '@faker-js/faker@8.0.2': {} - '@fal-works/esbuild-plugin-global-externals@2.1.2': {} - '@fastify/busboy@2.0.0': {} '@floating-ui/core@1.3.1': {} @@ -16291,60 +14113,85 @@ snapshots: dependencies: '@fortawesome/fontawesome-common-types': 0.2.36 - '@fortawesome/vue-fontawesome@3.0.3(@fortawesome/fontawesome-svg-core@1.2.36)(vue@3.4.21(typescript@5.5.2))': + '@fortawesome/vue-fontawesome@3.0.3(@fortawesome/fontawesome-svg-core@1.2.36)(vue@3.5.11(typescript@5.6.2))': dependencies: '@fortawesome/fontawesome-svg-core': 1.2.36 - vue: 3.4.21(typescript@5.5.2) + vue: 3.5.11(typescript@5.6.2) '@gar/promisify@1.1.3': optional: true + '@getzep/zep-cloud@1.0.12(@langchain/core@0.3.3(patch_hash=ekay3bw7hexufl733lypqvmx2e)(openai@4.63.0(encoding@0.1.13)(zod@3.23.8)))(encoding@0.1.13)(langchain@0.3.2(cbdnlo2gcodz2gzix466oterhe))': + dependencies: + form-data: 4.0.0 + node-fetch: 2.7.0(encoding@0.1.13) + qs: 6.11.2 + url-join: 4.0.1 + zod: 3.23.8 + optionalDependencies: + '@langchain/core': 0.3.3(patch_hash=ekay3bw7hexufl733lypqvmx2e)(openai@4.63.0(encoding@0.1.13)(zod@3.23.8)) + langchain: 0.3.2(cbdnlo2gcodz2gzix466oterhe) + transitivePeerDependencies: + - encoding + '@getzep/zep-js@0.9.0': dependencies: '@supercharge/promise-pool': 3.1.0 semver: 7.6.0 - typescript: 5.5.2 + typescript: 5.6.2 - '@google-ai/generativelanguage@2.5.0(encoding@0.1.13)': + '@google-ai/generativelanguage@2.6.0(encoding@0.1.13)': dependencies: google-gax: 4.3.4(encoding@0.1.13) transitivePeerDependencies: - encoding - supports-color - '@google-cloud/paginator@3.0.7': + '@google-cloud/paginator@5.0.2': dependencies: arrify: 2.0.1 extend: 3.0.2 - '@google-cloud/projectify@3.0.0': {} + '@google-cloud/projectify@4.0.0': {} - '@google-cloud/promisify@3.0.1': {} + '@google-cloud/promisify@4.0.0': {} - '@google-cloud/storage@6.11.0(encoding@0.1.13)': + '@google-cloud/resource-manager@5.3.0(encoding@0.1.13)': dependencies: - '@google-cloud/paginator': 3.0.7 - '@google-cloud/projectify': 3.0.0 - '@google-cloud/promisify': 3.0.1 + google-gax: 4.3.4(encoding@0.1.13) + transitivePeerDependencies: + - encoding + - supports-color + + '@google-cloud/secret-manager@5.6.0(encoding@0.1.13)': + dependencies: + google-gax: 4.3.4(encoding@0.1.13) + transitivePeerDependencies: + - encoding + - supports-color + + '@google-cloud/storage@7.12.1(encoding@0.1.13)': + dependencies: + '@google-cloud/paginator': 5.0.2 + '@google-cloud/projectify': 4.0.0 + '@google-cloud/promisify': 4.0.0 abort-controller: 3.0.0 async-retry: 1.3.3 - compressible: 2.0.18 - duplexify: 4.1.2 - ent: 2.2.0 - extend: 3.0.2 - gaxios: 5.1.0(encoding@0.1.13) - google-auth-library: 8.8.0(encoding@0.1.13) + duplexify: 4.1.3 + fast-xml-parser: 4.4.1 + gaxios: 6.6.0(encoding@0.1.13) + google-auth-library: 9.10.0(encoding@0.1.13) + html-entities: 2.5.2 mime: 3.0.0 - mime-types: 2.1.35 p-limit: 3.1.0 - retry-request: 5.0.2 - teeny-request: 8.0.3(encoding@0.1.13) + retry-request: 7.0.2(encoding@0.1.13) + teeny-request: 9.0.0(encoding@0.1.13) uuid: 8.3.2 transitivePeerDependencies: - encoding - supports-color - '@google/generative-ai@0.11.4': {} + '@google/generative-ai@0.19.0': {} '@google/generative-ai@0.7.1': {} @@ -16353,13 +14200,6 @@ snapshots: '@grpc/proto-loader': 0.7.13 '@js-sdsl/ordered-map': 4.4.2 - '@grpc/proto-loader@0.7.10': - dependencies: - lodash.camelcase: 4.3.0 - long: 5.2.3 - protobufjs: 7.3.0 - yargs: 17.7.2 - '@grpc/proto-loader@0.7.13': dependencies: lodash.camelcase: 4.3.0 @@ -16373,16 +14213,16 @@ snapshots: dependencies: '@hapi/hoek': 9.3.0 - '@huggingface/inference@2.7.0': + '@huggingface/inference@2.8.0': dependencies: - '@huggingface/tasks': 0.10.8 + '@huggingface/tasks': 0.11.13 - '@huggingface/tasks@0.10.8': {} + '@huggingface/tasks@0.11.13': {} '@humanwhocodes/config-array@0.11.14': dependencies: '@humanwhocodes/object-schema': 2.0.2 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.7 minimatch: 3.1.2 transitivePeerDependencies: - supports-color @@ -16400,16 +14240,22 @@ snapshots: dependencies: '@iconify/types': 2.0.0 + '@iconify/json@2.2.230': + dependencies: + '@iconify/types': 2.0.0 + pathe: 1.1.2 + '@iconify/types@2.0.0': {} - '@iconify/utils@2.1.11': + '@iconify/utils@2.1.25': dependencies: '@antfu/install-pkg': 0.1.1 - '@antfu/utils': 0.7.6 + '@antfu/utils': 0.7.10 '@iconify/types': 2.0.0 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.7 kolorist: 1.8.0 - local-pkg: 0.4.3 + local-pkg: 0.5.0 + mlly: 1.7.1 transitivePeerDependencies: - supports-color @@ -16468,7 +14314,7 @@ snapshots: jest-util: 29.6.2 slash: 3.0.0 - '@jest/core@29.6.2': + '@jest/core@29.6.2(ts-node@10.9.2(@types/node@18.16.16)(typescript@5.6.2))': dependencies: '@jest/console': 29.6.2 '@jest/reporters': 29.6.2 @@ -16482,7 +14328,7 @@ snapshots: exit: 0.1.2 graceful-fs: 4.2.11 jest-changed-files: 29.5.0 - jest-config: 29.6.2(@types/node@18.16.16) + jest-config: 29.6.2(@types/node@18.16.16)(ts-node@10.9.2(@types/node@18.16.16)(typescript@5.6.2)) jest-haste-map: 29.6.2 jest-message-util: 29.6.2 jest-regex-util: 29.4.3 @@ -16494,8 +14340,8 @@ snapshots: jest-util: 29.6.2 jest-validate: 29.6.2 jest-watcher: 29.6.2 - micromatch: 4.0.5 - pretty-format: 29.6.2 + micromatch: 4.0.8 + pretty-format: 29.7.0 slash: 3.0.0 strip-ansi: 6.0.1 transitivePeerDependencies: @@ -16546,18 +14392,18 @@ snapshots: '@jest/test-result': 29.6.2 '@jest/transform': 29.6.2 '@jest/types': 29.6.1 - '@jridgewell/trace-mapping': 0.3.18 + '@jridgewell/trace-mapping': 0.3.25 '@types/node': 18.16.16 chalk: 4.1.2 collect-v8-coverage: 1.0.1 exit: 0.1.2 glob: 7.2.3 graceful-fs: 4.2.11 - istanbul-lib-coverage: 3.2.0 + istanbul-lib-coverage: 3.2.2 istanbul-lib-instrument: 5.2.1 - istanbul-lib-report: 3.0.0 + istanbul-lib-report: 3.0.1 istanbul-lib-source-maps: 4.0.1 - istanbul-reports: 3.1.5 + istanbul-reports: 3.1.7 jest-message-util: 29.6.2 jest-util: 29.6.2 jest-worker: 29.6.2 @@ -16582,7 +14428,7 @@ snapshots: '@jest/source-map@29.6.0': dependencies: - '@jridgewell/trace-mapping': 0.3.18 + '@jridgewell/trace-mapping': 0.3.25 callsites: 3.1.0 graceful-fs: 4.2.11 @@ -16604,7 +14450,7 @@ snapshots: dependencies: '@babel/core': 7.24.0 '@jest/types': 29.6.1 - '@jridgewell/trace-mapping': 0.3.18 + '@jridgewell/trace-mapping': 0.3.25 babel-plugin-istanbul: 6.1.1 chalk: 4.1.2 convert-source-map: 2.0.0 @@ -16613,7 +14459,7 @@ snapshots: jest-haste-map: 29.6.2 jest-regex-util: 29.4.3 jest-util: 29.6.2 - micromatch: 4.0.5 + micromatch: 4.0.8 pirates: 4.0.6 slash: 3.0.0 write-file-atomic: 4.0.2 @@ -16629,47 +14475,51 @@ snapshots: '@types/yargs': 17.0.19 chalk: 4.1.2 - '@jridgewell/gen-mapping@0.3.2': - dependencies: - '@jridgewell/set-array': 1.1.2 - '@jridgewell/sourcemap-codec': 1.4.15 - '@jridgewell/trace-mapping': 0.3.18 - '@jridgewell/gen-mapping@0.3.5': dependencies: '@jridgewell/set-array': 1.2.1 - '@jridgewell/sourcemap-codec': 1.4.15 + '@jridgewell/sourcemap-codec': 1.5.0 '@jridgewell/trace-mapping': 0.3.25 '@jridgewell/resolve-uri@3.1.0': {} - '@jridgewell/set-array@1.1.2': {} + '@jridgewell/resolve-uri@3.1.2': + optional: true '@jridgewell/set-array@1.2.1': {} - '@jridgewell/source-map@0.3.2': + '@jridgewell/source-map@0.3.6': dependencies: '@jridgewell/gen-mapping': 0.3.5 '@jridgewell/trace-mapping': 0.3.25 - - '@jridgewell/sourcemap-codec@1.4.14': {} + optional: true '@jridgewell/sourcemap-codec@1.4.15': {} - '@jridgewell/trace-mapping@0.3.18': - dependencies: - '@jridgewell/resolve-uri': 3.1.0 - '@jridgewell/sourcemap-codec': 1.4.14 + '@jridgewell/sourcemap-codec@1.5.0': {} '@jridgewell/trace-mapping@0.3.25': dependencies: '@jridgewell/resolve-uri': 3.1.0 - '@jridgewell/sourcemap-codec': 1.4.15 + '@jridgewell/sourcemap-codec': 1.5.0 + + '@jridgewell/trace-mapping@0.3.9': + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.5.0 + optional: true '@js-joda/core@5.6.1': {} '@js-sdsl/ordered-map@4.4.2': {} + '@jsdevtools/ez-spawn@3.0.4': + dependencies: + call-me-maybe: 1.0.1 + cross-spawn: 7.0.3 + string-argv: 0.3.1 + type-detect: 4.0.8 + '@jsdevtools/ono@7.1.3': {} '@jsplumb/browser-ui@5.13.2': @@ -16693,71 +14543,96 @@ snapshots: '@kafkajs/confluent-schema-registry@1.0.6': dependencies: avsc: 5.7.6 - mappersmith: 2.40.0 + mappersmith: 2.43.4 '@kurkle/color@0.3.2': {} '@kwsites/file-exists@1.1.1': dependencies: - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.7 transitivePeerDependencies: - supports-color '@kwsites/promise-deferred@1.1.1': {} - '@langchain/anthropic@0.1.21(encoding@0.1.13)': + '@langchain/anthropic@0.3.1(@langchain/core@0.3.3(patch_hash=ekay3bw7hexufl733lypqvmx2e)(openai@4.63.0(encoding@0.1.13)(zod@3.23.8)))(encoding@0.1.13)': dependencies: - '@anthropic-ai/sdk': 0.21.1(encoding@0.1.13) - '@langchain/core': 0.2.0 - fast-xml-parser: 4.3.5 + '@anthropic-ai/sdk': 0.27.3(encoding@0.1.13) + '@langchain/core': 0.3.3(patch_hash=ekay3bw7hexufl733lypqvmx2e)(openai@4.63.0(encoding@0.1.13)(zod@3.23.8)) + fast-xml-parser: 4.4.1 zod: 3.23.8 - zod-to-json-schema: 3.23.0(zod@3.23.8) + zod-to-json-schema: 3.23.3(zod@3.23.8) transitivePeerDependencies: - encoding - supports-color - '@langchain/cohere@0.0.10(encoding@0.1.13)': + '@langchain/aws@0.1.0(@aws-sdk/client-sso-oidc@3.666.0(@aws-sdk/client-sts@3.666.0))(@aws-sdk/client-sts@3.666.0)(@langchain/core@0.3.3(patch_hash=ekay3bw7hexufl733lypqvmx2e)(openai@4.63.0(encoding@0.1.13)(zod@3.23.8)))': dependencies: - '@langchain/core': 0.2.0 - cohere-ai: 7.10.1(encoding@0.1.13) + '@aws-sdk/client-bedrock-agent-runtime': 3.666.0 + '@aws-sdk/client-bedrock-runtime': 3.666.0 + '@aws-sdk/client-kendra': 3.666.0 + '@aws-sdk/credential-provider-node': 3.666.0(@aws-sdk/client-sso-oidc@3.666.0(@aws-sdk/client-sts@3.666.0))(@aws-sdk/client-sts@3.666.0) + '@langchain/core': 0.3.3(patch_hash=ekay3bw7hexufl733lypqvmx2e)(openai@4.63.0(encoding@0.1.13)(zod@3.23.8)) + zod: 3.23.8 + zod-to-json-schema: 3.23.3(zod@3.23.8) transitivePeerDependencies: + - '@aws-sdk/client-sso-oidc' + - '@aws-sdk/client-sts' + - aws-crt + + '@langchain/cohere@0.3.0(@aws-sdk/client-sso-oidc@3.666.0(@aws-sdk/client-sts@3.666.0))(@langchain/core@0.3.3(patch_hash=ekay3bw7hexufl733lypqvmx2e)(openai@4.63.0(encoding@0.1.13)(zod@3.23.8)))(encoding@0.1.13)': + dependencies: + '@langchain/core': 0.3.3(patch_hash=ekay3bw7hexufl733lypqvmx2e)(openai@4.63.0(encoding@0.1.13)(zod@3.23.8)) + cohere-ai: 7.13.2(@aws-sdk/client-sso-oidc@3.666.0(@aws-sdk/client-sts@3.666.0))(encoding@0.1.13) + uuid: 10.0.0 + zod: 3.23.8 + zod-to-json-schema: 3.23.3(zod@3.23.8) + transitivePeerDependencies: + - '@aws-sdk/client-sso-oidc' + - aws-crt - encoding - '@langchain/community@0.2.2(@aws-sdk/client-bedrock-runtime@3.535.0)(@aws-sdk/client-s3@3.478.0)(@aws-sdk/credential-provider-node@3.535.0)(@getzep/zep-js@0.9.0)(@google-ai/generativelanguage@2.5.0(encoding@0.1.13))(@google-cloud/storage@6.11.0(encoding@0.1.13))(@huggingface/inference@2.7.0)(@mozilla/readability@0.5.0)(@pinecone-database/pinecone@2.2.1)(@qdrant/js-client-rest@1.9.0(typescript@5.5.2))(@smithy/eventstream-codec@2.2.0)(@smithy/protocol-http@3.3.0)(@smithy/signature-v4@2.2.1)(@smithy/util-utf8@2.3.0)(@supabase/postgrest-js@1.15.2)(@supabase/supabase-js@2.43.4)(@xata.io/client@0.28.4(typescript@5.5.2))(axios@1.6.7)(cheerio@1.0.0-rc.12)(cohere-ai@7.10.1(encoding@0.1.13))(d3-dsv@2.0.0)(encoding@0.1.13)(epub2@3.0.2(ts-toolbelt@9.6.0))(fast-xml-parser@4.3.5)(handlebars@4.7.8)(html-to-text@9.0.5)(ignore@5.2.4)(ioredis@5.3.2)(jsdom@23.0.1)(jsonwebtoken@9.0.2)(lodash@4.17.21)(mammoth@1.7.2)(mysql2@3.10.0)(pdf-parse@1.1.1)(pg@8.11.3)(redis@4.6.12)(ws@8.17.1)': + '@langchain/community@0.3.2(rx3iiky3qnn44pzlnyiooyzaly)': dependencies: - '@langchain/core': 0.2.0 - '@langchain/openai': 0.0.33(encoding@0.1.13) + '@langchain/core': 0.3.3(patch_hash=ekay3bw7hexufl733lypqvmx2e)(openai@4.63.0(encoding@0.1.13)(zod@3.23.8)) + '@langchain/openai': 0.3.0(@langchain/core@0.3.3(patch_hash=ekay3bw7hexufl733lypqvmx2e)(openai@4.63.0(encoding@0.1.13)(zod@3.23.8)))(encoding@0.1.13) binary-extensions: 2.2.0 expr-eval: 2.0.2 flat: 5.0.2 js-yaml: 4.1.0 - langchain: 0.2.2(@aws-sdk/client-s3@3.478.0)(@aws-sdk/credential-provider-node@3.535.0)(@google-ai/generativelanguage@2.5.0(encoding@0.1.13))(@pinecone-database/pinecone@2.2.1)(@supabase/supabase-js@2.43.4)(@xata.io/client@0.28.4(typescript@5.5.2))(axios@1.6.7)(cheerio@1.0.0-rc.12)(d3-dsv@2.0.0)(encoding@0.1.13)(epub2@3.0.2(ts-toolbelt@9.6.0))(fast-xml-parser@4.3.5)(handlebars@4.7.8)(html-to-text@9.0.5)(ignore@5.2.4)(ioredis@5.3.2)(jsdom@23.0.1)(mammoth@1.7.2)(pdf-parse@1.1.1)(redis@4.6.12)(ws@8.17.1) - langsmith: 0.1.12 - uuid: 9.0.1 + langchain: 0.3.2(cbdnlo2gcodz2gzix466oterhe) + langsmith: 0.1.59(openai@4.63.0(encoding@0.1.13)(zod@3.23.8)) + uuid: 10.0.0 zod: 3.23.8 - zod-to-json-schema: 3.23.0(zod@3.23.8) + zod-to-json-schema: 3.23.3(zod@3.23.8) optionalDependencies: - '@aws-sdk/client-bedrock-runtime': 3.535.0 - '@aws-sdk/client-s3': 3.478.0 - '@aws-sdk/credential-provider-node': 3.535.0 + '@aws-crypto/sha256-js': 5.2.0 + '@aws-sdk/client-bedrock-agent-runtime': 3.666.0 + '@aws-sdk/client-bedrock-runtime': 3.666.0 + '@aws-sdk/client-kendra': 3.666.0 + '@aws-sdk/client-s3': 3.666.0 + '@aws-sdk/credential-provider-node': 3.666.0(@aws-sdk/client-sso-oidc@3.666.0(@aws-sdk/client-sts@3.666.0))(@aws-sdk/client-sts@3.666.0) + '@azure/storage-blob': 12.18.0(encoding@0.1.13) + '@getzep/zep-cloud': 1.0.12(@langchain/core@0.3.3(patch_hash=ekay3bw7hexufl733lypqvmx2e)(openai@4.63.0(encoding@0.1.13)(zod@3.23.8)))(encoding@0.1.13)(langchain@0.3.2(cbdnlo2gcodz2gzix466oterhe)) '@getzep/zep-js': 0.9.0 - '@google-ai/generativelanguage': 2.5.0(encoding@0.1.13) - '@google-cloud/storage': 6.11.0(encoding@0.1.13) - '@huggingface/inference': 2.7.0 + '@google-ai/generativelanguage': 2.6.0(encoding@0.1.13) + '@google-cloud/storage': 7.12.1(encoding@0.1.13) + '@huggingface/inference': 2.8.0 '@mozilla/readability': 0.5.0 - '@pinecone-database/pinecone': 2.2.1 - '@qdrant/js-client-rest': 1.9.0(typescript@5.5.2) + '@pinecone-database/pinecone': 3.0.3 + '@qdrant/js-client-rest': 1.11.0(typescript@5.6.2) '@smithy/eventstream-codec': 2.2.0 '@smithy/protocol-http': 3.3.0 '@smithy/signature-v4': 2.2.1 '@smithy/util-utf8': 2.3.0 - '@supabase/postgrest-js': 1.15.2 - '@supabase/supabase-js': 2.43.4 - '@xata.io/client': 0.28.4(typescript@5.5.2) - cheerio: 1.0.0-rc.12 - cohere-ai: 7.10.1(encoding@0.1.13) + '@supabase/supabase-js': 2.45.4 + '@xata.io/client': 0.28.4(typescript@5.6.2) + cheerio: 1.0.0 + cohere-ai: 7.13.2(@aws-sdk/client-sso-oidc@3.666.0(@aws-sdk/client-sts@3.666.0))(encoding@0.1.13) + crypto-js: 4.2.0 d3-dsv: 2.0.0 epub2: 3.0.2(ts-toolbelt@9.6.0) + google-auth-library: 9.10.0(encoding@0.1.13) html-to-text: 9.0.5 ignore: 5.2.4 ioredis: 5.3.2 @@ -16765,147 +14640,171 @@ snapshots: jsonwebtoken: 9.0.2 lodash: 4.17.21 mammoth: 1.7.2 - mysql2: 3.10.0 + mysql2: 3.11.0 pdf-parse: 1.1.1 - pg: 8.11.3 + pg: 8.12.0 redis: 4.6.12 ws: 8.17.1 transitivePeerDependencies: - - '@gomomento/sdk-web' + - '@langchain/anthropic' + - '@langchain/aws' + - '@langchain/cohere' + - '@langchain/google-genai' + - '@langchain/google-vertexai' + - '@langchain/groq' + - '@langchain/mistralai' + - '@langchain/ollama' - axios - encoding - - fast-xml-parser - handlebars + - openai - peggy - - pyodide - supports-color - '@langchain/community@0.2.2(@aws-sdk/client-bedrock-runtime@3.535.0)(@aws-sdk/client-s3@3.478.0)(@aws-sdk/credential-provider-node@3.535.0)(@getzep/zep-js@0.9.0)(@google-cloud/storage@6.11.0(encoding@0.1.13))(@huggingface/inference@2.7.0)(@mozilla/readability@0.5.0)(@pinecone-database/pinecone@2.1.0)(@qdrant/js-client-rest@1.9.0(typescript@5.5.2))(@smithy/eventstream-codec@2.2.0)(@smithy/protocol-http@3.3.0)(@smithy/signature-v4@2.2.1)(@smithy/util-utf8@2.3.0)(@supabase/postgrest-js@1.15.2)(@supabase/supabase-js@2.43.4)(@xata.io/client@0.28.4(typescript@5.5.2))(axios@1.6.7)(cheerio@1.0.0-rc.12)(cohere-ai@7.10.1(encoding@0.1.13))(d3-dsv@2.0.0)(encoding@0.1.13)(epub2@3.0.2)(fast-xml-parser@4.3.5)(handlebars@4.7.8)(html-to-text@9.0.5)(ignore@5.2.4)(ioredis@5.3.2)(jsdom@23.0.1)(jsonwebtoken@9.0.2)(lodash@4.17.21)(mammoth@1.7.2)(mysql2@3.10.0)(pdf-parse@1.1.1)(pg@8.11.3)(redis@4.6.14)(ws@8.17.1)': - dependencies: - '@langchain/core': 0.2.0 - '@langchain/openai': 0.0.33(encoding@0.1.13) - binary-extensions: 2.2.0 - expr-eval: 2.0.2 - flat: 5.0.2 - js-yaml: 4.1.0 - langchain: 0.2.2(@aws-sdk/client-s3@3.478.0)(@aws-sdk/credential-provider-node@3.535.0)(@pinecone-database/pinecone@2.1.0)(@supabase/supabase-js@2.43.4)(@xata.io/client@0.28.4(typescript@5.5.2))(axios@1.6.7)(cheerio@1.0.0-rc.12)(d3-dsv@2.0.0)(encoding@0.1.13)(epub2@3.0.2)(fast-xml-parser@4.3.5)(handlebars@4.7.8)(html-to-text@9.0.5)(ignore@5.2.4)(ioredis@5.3.2)(jsdom@23.0.1)(mammoth@1.7.2)(pdf-parse@1.1.1)(redis@4.6.14)(ws@8.17.1) - langsmith: 0.1.12 - uuid: 9.0.1 - zod: 3.23.8 - zod-to-json-schema: 3.23.0(zod@3.23.8) - optionalDependencies: - '@aws-sdk/client-bedrock-runtime': 3.535.0 - '@aws-sdk/client-s3': 3.478.0 - '@aws-sdk/credential-provider-node': 3.535.0 - '@getzep/zep-js': 0.9.0 - '@google-cloud/storage': 6.11.0(encoding@0.1.13) - '@huggingface/inference': 2.7.0 - '@mozilla/readability': 0.5.0 - '@pinecone-database/pinecone': 2.1.0 - '@qdrant/js-client-rest': 1.9.0(typescript@5.5.2) - '@smithy/eventstream-codec': 2.2.0 - '@smithy/protocol-http': 3.3.0 - '@smithy/signature-v4': 2.2.1 - '@smithy/util-utf8': 2.3.0 - '@supabase/postgrest-js': 1.15.2 - '@supabase/supabase-js': 2.43.4 - '@xata.io/client': 0.28.4(typescript@5.5.2) - cheerio: 1.0.0-rc.12 - cohere-ai: 7.10.1(encoding@0.1.13) - d3-dsv: 2.0.0 - epub2: 3.0.2(ts-toolbelt@9.6.0) - html-to-text: 9.0.5 - ignore: 5.2.4 - ioredis: 5.3.2 - jsdom: 23.0.1 - jsonwebtoken: 9.0.2 - lodash: 4.17.21 - mammoth: 1.7.2 - mysql2: 3.10.0 - pdf-parse: 1.1.1 - pg: 8.11.3 - redis: 4.6.14 - ws: 8.17.1 - transitivePeerDependencies: - - '@gomomento/sdk-web' - - axios - - encoding - - fast-xml-parser - - handlebars - - peggy - - pyodide - - supports-color - - '@langchain/core@0.2.0': + '@langchain/core@0.3.3(patch_hash=ekay3bw7hexufl733lypqvmx2e)(openai@4.63.0(encoding@0.1.13)(zod@3.23.8))': dependencies: ansi-styles: 5.2.0 camelcase: 6.3.0 decamelize: 1.2.0 js-tiktoken: 1.0.12 - langsmith: 0.1.12 - ml-distance: 4.0.1 + langsmith: 0.1.59(openai@4.63.0(encoding@0.1.13)(zod@3.23.8)) mustache: 4.2.0 p-queue: 6.6.2 p-retry: 4.6.2 - uuid: 9.0.1 + uuid: 10.0.0 zod: 3.23.8 - zod-to-json-schema: 3.23.0(zod@3.23.8) + zod-to-json-schema: 3.23.3(zod@3.23.8) + transitivePeerDependencies: + - openai - '@langchain/google-genai@0.0.16(zod@3.23.8)': + '@langchain/core@0.3.3(patch_hash=ekay3bw7hexufl733lypqvmx2e)(openai@4.63.0(zod@3.23.8))': dependencies: - '@google/generative-ai': 0.7.1 - '@langchain/core': 0.2.0 - zod-to-json-schema: 3.23.0(zod@3.23.8) + ansi-styles: 5.2.0 + camelcase: 6.3.0 + decamelize: 1.2.0 + js-tiktoken: 1.0.12 + langsmith: 0.1.59(openai@4.63.0(zod@3.23.8)) + mustache: 4.2.0 + p-queue: 6.6.2 + p-retry: 4.6.2 + uuid: 10.0.0 + zod: 3.23.8 + zod-to-json-schema: 3.23.3(zod@3.23.8) + transitivePeerDependencies: + - openai + + '@langchain/core@0.3.3(patch_hash=ekay3bw7hexufl733lypqvmx2e)(openai@4.63.0)': + dependencies: + ansi-styles: 5.2.0 + camelcase: 6.3.0 + decamelize: 1.2.0 + js-tiktoken: 1.0.12 + langsmith: 0.1.59(openai@4.63.0) + mustache: 4.2.0 + p-queue: 6.6.2 + p-retry: 4.6.2 + uuid: 10.0.0 + zod: 3.23.8 + zod-to-json-schema: 3.23.3(zod@3.23.8) + transitivePeerDependencies: + - openai + + '@langchain/google-common@0.1.1(@langchain/core@0.3.3(patch_hash=ekay3bw7hexufl733lypqvmx2e)(openai@4.63.0(encoding@0.1.13)(zod@3.23.8)))(zod@3.23.8)': + dependencies: + '@langchain/core': 0.3.3(patch_hash=ekay3bw7hexufl733lypqvmx2e)(openai@4.63.0(encoding@0.1.13)(zod@3.23.8)) + uuid: 10.0.0 + zod-to-json-schema: 3.23.3(zod@3.23.8) transitivePeerDependencies: - zod - '@langchain/groq@0.0.12(encoding@0.1.13)': + '@langchain/google-gauth@0.1.0(@langchain/core@0.3.3(patch_hash=ekay3bw7hexufl733lypqvmx2e)(openai@4.63.0(encoding@0.1.13)(zod@3.23.8)))(encoding@0.1.13)(zod@3.23.8)': dependencies: - '@langchain/core': 0.2.0 - '@langchain/openai': 0.0.33(encoding@0.1.13) - groq-sdk: 0.3.2(encoding@0.1.13) + '@langchain/core': 0.3.3(patch_hash=ekay3bw7hexufl733lypqvmx2e)(openai@4.63.0(encoding@0.1.13)(zod@3.23.8)) + '@langchain/google-common': 0.1.1(@langchain/core@0.3.3(patch_hash=ekay3bw7hexufl733lypqvmx2e)(openai@4.63.0(encoding@0.1.13)(zod@3.23.8)))(zod@3.23.8) + google-auth-library: 8.9.0(encoding@0.1.13) + transitivePeerDependencies: + - encoding + - supports-color + - zod + + '@langchain/google-genai@0.1.0(@langchain/core@0.3.3(patch_hash=ekay3bw7hexufl733lypqvmx2e)(openai@4.63.0(encoding@0.1.13)(zod@3.23.8)))(zod@3.23.8)': + dependencies: + '@google/generative-ai': 0.7.1 + '@langchain/core': 0.3.3(patch_hash=ekay3bw7hexufl733lypqvmx2e)(openai@4.63.0(encoding@0.1.13)(zod@3.23.8)) + zod-to-json-schema: 3.23.3(zod@3.23.8) + transitivePeerDependencies: + - zod + + '@langchain/google-vertexai@0.1.0(@langchain/core@0.3.3(patch_hash=ekay3bw7hexufl733lypqvmx2e)(openai@4.63.0(encoding@0.1.13)(zod@3.23.8)))(encoding@0.1.13)(zod@3.23.8)': + dependencies: + '@langchain/core': 0.3.3(patch_hash=ekay3bw7hexufl733lypqvmx2e)(openai@4.63.0(encoding@0.1.13)(zod@3.23.8)) + '@langchain/google-gauth': 0.1.0(@langchain/core@0.3.3(patch_hash=ekay3bw7hexufl733lypqvmx2e)(openai@4.63.0(encoding@0.1.13)(zod@3.23.8)))(encoding@0.1.13)(zod@3.23.8) + transitivePeerDependencies: + - encoding + - supports-color + - zod + + '@langchain/groq@0.1.2(@langchain/core@0.3.3(patch_hash=ekay3bw7hexufl733lypqvmx2e)(openai@4.63.0(encoding@0.1.13)(zod@3.23.8)))(encoding@0.1.13)': + dependencies: + '@langchain/core': 0.3.3(patch_hash=ekay3bw7hexufl733lypqvmx2e)(openai@4.63.0(encoding@0.1.13)(zod@3.23.8)) + '@langchain/openai': 0.3.0(@langchain/core@0.3.3(patch_hash=ekay3bw7hexufl733lypqvmx2e)(openai@4.63.0(encoding@0.1.13)(zod@3.23.8)))(encoding@0.1.13) + groq-sdk: 0.5.0(encoding@0.1.13) zod: 3.23.8 - zod-to-json-schema: 3.23.0(zod@3.23.8) + zod-to-json-schema: 3.23.3(zod@3.23.8) transitivePeerDependencies: - encoding - supports-color - '@langchain/mistralai@0.0.22(encoding@0.1.13)': + '@langchain/mistralai@0.1.1(@langchain/core@0.3.3(patch_hash=ekay3bw7hexufl733lypqvmx2e)(openai@4.63.0(encoding@0.1.13)(zod@3.23.8)))(encoding@0.1.13)': dependencies: - '@langchain/core': 0.2.0 - '@mistralai/mistralai': 0.1.3(encoding@0.1.13) - uuid: 9.0.1 + '@langchain/core': 0.3.3(patch_hash=ekay3bw7hexufl733lypqvmx2e)(openai@4.63.0(encoding@0.1.13)(zod@3.23.8)) + '@mistralai/mistralai': 0.4.0(encoding@0.1.13) + uuid: 10.0.0 zod: 3.23.8 - zod-to-json-schema: 3.23.0(zod@3.23.8) + zod-to-json-schema: 3.23.3(zod@3.23.8) transitivePeerDependencies: - encoding - '@langchain/openai@0.0.33(encoding@0.1.13)': + '@langchain/ollama@0.1.0(@langchain/core@0.3.3(patch_hash=ekay3bw7hexufl733lypqvmx2e)(openai@4.63.0(encoding@0.1.13)(zod@3.23.8)))': dependencies: - '@langchain/core': 0.2.0 + '@langchain/core': 0.3.3(patch_hash=ekay3bw7hexufl733lypqvmx2e)(openai@4.63.0(encoding@0.1.13)(zod@3.23.8)) + ollama: 0.5.6 + uuid: 10.0.0 + + '@langchain/openai@0.3.0(@langchain/core@0.3.3(patch_hash=ekay3bw7hexufl733lypqvmx2e)(openai@4.63.0(encoding@0.1.13)(zod@3.23.8)))(encoding@0.1.13)': + dependencies: + '@langchain/core': 0.3.3(patch_hash=ekay3bw7hexufl733lypqvmx2e)(openai@4.63.0(encoding@0.1.13)(zod@3.23.8)) js-tiktoken: 1.0.12 - openai: 4.47.1(encoding@0.1.13) + openai: 4.63.0(encoding@0.1.13)(zod@3.23.8) zod: 3.23.8 - zod-to-json-schema: 3.23.0(zod@3.23.8) + zod-to-json-schema: 3.23.3(zod@3.23.8) transitivePeerDependencies: - encoding - supports-color - '@langchain/pinecone@0.0.6': + '@langchain/pinecone@0.1.0(@langchain/core@0.3.3(patch_hash=ekay3bw7hexufl733lypqvmx2e)(openai@4.63.0(encoding@0.1.13)(zod@3.23.8)))': dependencies: - '@langchain/core': 0.2.0 - '@pinecone-database/pinecone': 2.2.1 + '@langchain/core': 0.3.3(patch_hash=ekay3bw7hexufl733lypqvmx2e)(openai@4.63.0(encoding@0.1.13)(zod@3.23.8)) + '@pinecone-database/pinecone': 3.0.3 flat: 5.0.2 - uuid: 9.0.1 + uuid: 10.0.0 - '@langchain/redis@0.0.5': + '@langchain/qdrant@0.1.0(@langchain/core@0.3.3(patch_hash=ekay3bw7hexufl733lypqvmx2e)(openai@4.63.0(encoding@0.1.13)(zod@3.23.8)))(typescript@5.6.2)': dependencies: - '@langchain/core': 0.2.0 - redis: 4.6.13 + '@langchain/core': 0.3.3(patch_hash=ekay3bw7hexufl733lypqvmx2e)(openai@4.63.0(encoding@0.1.13)(zod@3.23.8)) + '@qdrant/js-client-rest': 1.11.0(typescript@5.6.2) + uuid: 10.0.0 + transitivePeerDependencies: + - typescript - '@langchain/textsplitters@0.0.2': + '@langchain/redis@0.1.0(@langchain/core@0.3.3(patch_hash=ekay3bw7hexufl733lypqvmx2e)(openai@4.63.0(encoding@0.1.13)(zod@3.23.8)))': dependencies: - '@langchain/core': 0.2.0 + '@langchain/core': 0.3.3(patch_hash=ekay3bw7hexufl733lypqvmx2e)(openai@4.63.0(encoding@0.1.13)(zod@3.23.8)) + redis: 4.6.14 + + '@langchain/textsplitters@0.1.0(@langchain/core@0.3.3(patch_hash=ekay3bw7hexufl733lypqvmx2e)(openai@4.63.0(encoding@0.1.13)(zod@3.23.8)))': + dependencies: + '@langchain/core': 0.3.3(patch_hash=ekay3bw7hexufl733lypqvmx2e)(openai@4.63.0(encoding@0.1.13)(zod@3.23.8)) js-tiktoken: 1.0.12 '@lezer/common@1.1.0': {} @@ -16957,49 +14856,50 @@ snapshots: '@types/react': 18.0.27 react: 18.2.0 - '@microsoft/api-extractor-model@7.28.3(@types/node@18.16.16)': + '@microsoft/api-extractor-model@7.29.6(@types/node@18.16.16)': dependencies: - '@microsoft/tsdoc': 0.14.2 - '@microsoft/tsdoc-config': 0.16.2 - '@rushstack/node-core-library': 3.62.0(@types/node@18.16.16) + '@microsoft/tsdoc': 0.15.0 + '@microsoft/tsdoc-config': 0.17.0 + '@rushstack/node-core-library': 5.7.0(@types/node@18.16.16) transitivePeerDependencies: - '@types/node' - '@microsoft/api-extractor@7.39.0(@types/node@18.16.16)': + '@microsoft/api-extractor@7.47.7(@types/node@18.16.16)': dependencies: - '@microsoft/api-extractor-model': 7.28.3(@types/node@18.16.16) - '@microsoft/tsdoc': 0.14.2 - '@microsoft/tsdoc-config': 0.16.2 - '@rushstack/node-core-library': 3.62.0(@types/node@18.16.16) - '@rushstack/rig-package': 0.5.1 - '@rushstack/ts-command-line': 4.17.1 - colors: 1.2.5 + '@microsoft/api-extractor-model': 7.29.6(@types/node@18.16.16) + '@microsoft/tsdoc': 0.15.0 + '@microsoft/tsdoc-config': 0.17.0 + '@rushstack/node-core-library': 5.7.0(@types/node@18.16.16) + '@rushstack/rig-package': 0.5.3 + '@rushstack/terminal': 0.14.0(@types/node@18.16.16) + '@rushstack/ts-command-line': 4.22.6(@types/node@18.16.16) lodash: 4.17.21 + minimatch: 3.0.8 resolve: 1.22.8 semver: 7.6.0 source-map: 0.6.1 - typescript: 5.5.2 + typescript: 5.6.2 transitivePeerDependencies: - '@types/node' - '@microsoft/tsdoc-config@0.16.2': + '@microsoft/tsdoc-config@0.17.0': dependencies: - '@microsoft/tsdoc': 0.14.2 - ajv: 6.12.6 + '@microsoft/tsdoc': 0.15.0 + ajv: 8.12.0 jju: 1.4.0 - resolve: 1.19.0 + resolve: 1.22.8 - '@microsoft/tsdoc@0.14.2': {} + '@microsoft/tsdoc@0.15.0': {} '@miragejs/pretender-node-polyfill@0.1.2': {} - '@mistralai/mistralai@0.1.3(encoding@0.1.13)': + '@mistralai/mistralai@0.4.0(encoding@0.1.13)': dependencies: node-fetch: 2.7.0(encoding@0.1.13) transitivePeerDependencies: - encoding - '@mongodb-js/saslprep@1.1.0': + '@mongodb-js/saslprep@1.1.9': dependencies: sparse-bitfield: 3.0.3 @@ -17034,12 +14934,10 @@ snapshots: - '@codemirror/view' - '@lezer/common' - '@n8n/localtunnel@2.1.0': + '@n8n/localtunnel@3.0.0': dependencies: - axios: 1.6.7(debug@4.3.4) - debug: 4.3.4(supports-color@8.1.1) - openurl: 1.1.1 - yargs: 17.7.2 + axios: 1.7.3(debug@4.3.6) + debug: 4.3.6(supports-color@8.1.1) transitivePeerDependencies: - supports-color @@ -17049,14 +14947,14 @@ snapshots: '@types/retry': 0.12.5 retry: 0.13.1 - '@n8n/tournament@1.0.2': + '@n8n/tournament@1.0.5': dependencies: '@n8n_io/riot-tmpl': 4.0.1 ast-types: 0.16.1 esprima-next: 5.8.4 recast: 0.22.0 - '@n8n/typeorm@0.3.20-10(@sentry/node@7.87.0)(ioredis@5.3.2)(mssql@10.0.2)(mysql2@3.10.0)(pg@8.11.3)(redis@4.6.12)(sqlite3@5.1.7)': + '@n8n/typeorm@0.3.20-12(@sentry/node@7.87.0)(ioredis@5.3.2)(mssql@10.0.2)(mysql2@3.11.0)(pg@8.12.0)(redis@4.6.12)(sqlite3@5.1.7)(ts-node@10.9.2(@types/node@18.16.16)(typescript@5.6.2))': dependencies: '@n8n/p-retry': 6.2.0-2 '@sqltools/formatter': 1.2.5 @@ -17065,9 +14963,9 @@ snapshots: buffer: 6.0.3 chalk: 4.1.2 dayjs: 1.11.10 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.7 dotenv: 16.3.1 - glob: 10.3.10 + glob: 10.4.5 mkdirp: 2.1.3 reflect-metadata: 0.2.2 sha.js: 2.4.11 @@ -17079,14 +14977,15 @@ snapshots: '@sentry/node': 7.87.0 ioredis: 5.3.2 mssql: 10.0.2 - mysql2: 3.10.0 - pg: 8.11.3 + mysql2: 3.11.0 + pg: 8.12.0 redis: 4.6.12 sqlite3: 5.1.7 + ts-node: 10.9.2(@types/node@18.16.16)(typescript@5.6.2) transitivePeerDependencies: - supports-color - '@n8n/typeorm@0.3.20-10(@sentry/node@7.87.0)(ioredis@5.3.2)(mssql@10.0.2)(mysql2@3.10.0)(pg@8.11.3)(redis@4.6.14)(sqlite3@5.1.7)': + '@n8n/typeorm@0.3.20-12(@sentry/node@7.87.0)(ioredis@5.3.2)(mssql@10.0.2)(mysql2@3.11.0)(pg@8.12.0)(redis@4.6.14)(sqlite3@5.1.7)(ts-node@10.9.2(@types/node@18.16.16)(typescript@5.6.2))': dependencies: '@n8n/p-retry': 6.2.0-2 '@sqltools/formatter': 1.2.5 @@ -17095,9 +14994,9 @@ snapshots: buffer: 6.0.3 chalk: 4.1.2 dayjs: 1.11.10 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.7 dotenv: 16.3.1 - glob: 10.3.10 + glob: 10.4.5 mkdirp: 2.1.3 reflect-metadata: 0.2.2 sha.js: 2.4.11 @@ -17109,24 +15008,27 @@ snapshots: '@sentry/node': 7.87.0 ioredis: 5.3.2 mssql: 10.0.2 - mysql2: 3.10.0 - pg: 8.11.3 + mysql2: 3.11.0 + pg: 8.12.0 redis: 4.6.14 sqlite3: 5.1.7 + ts-node: 10.9.2(@types/node@18.16.16)(typescript@5.6.2) transitivePeerDependencies: - supports-color - '@n8n/vm2@3.9.20': + '@n8n/vm2@3.9.25': dependencies: - acorn: 8.11.2 - acorn-walk: 8.2.0 + acorn: 8.12.1 + acorn-walk: 8.3.2 - '@n8n_io/license-sdk@2.13.0': + '@n8n_io/ai-assistant-sdk@1.10.3': {} + + '@n8n_io/license-sdk@2.13.1': dependencies: crypto-js: 4.2.0 node-machine-id: 1.1.12 node-rsa: 1.1.1 - undici: 6.18.1 + undici: 6.19.7 '@n8n_io/riot-tmpl@4.0.0': dependencies: @@ -17136,12 +15038,6 @@ snapshots: dependencies: eslint-config-riot: 1.0.0 - '@ndelangen/get-tarball@3.0.7': - dependencies: - gunzip-maybe: 1.4.2 - pump: 3.0.0 - tar-fs: 2.1.1 - '@ngneat/falso@7.2.0': dependencies: seedrandom: 3.0.5 @@ -17177,14 +15073,14 @@ snapshots: ansis: 3.2.0 clean-stack: 3.0.1 cli-spinners: 2.9.2 - debug: 4.3.5(supports-color@8.1.1) + debug: 4.3.6(supports-color@8.1.1) ejs: 3.1.10 get-package-type: 0.1.0 globby: 11.1.0 indent-string: 4.0.0 is-wsl: 2.2.0 lilconfig: 3.1.2 - minimatch: 9.0.4 + minimatch: 9.0.5 string-width: 4.2.3 supports-color: 8.1.1 widest-line: 3.1.0 @@ -17218,24 +15114,14 @@ snapshots: '@otplib/plugin-crypto': 12.0.1 '@otplib/plugin-thirty-two': 12.0.1 - '@pinecone-database/pinecone@2.1.0': + '@pinecone-database/pinecone@3.0.3': dependencies: - '@sinclair/typebox': 0.29.6 - ajv: 8.12.0 - cross-fetch: 3.1.8(encoding@0.1.13) encoding: 0.1.13 - '@pinecone-database/pinecone@2.2.1': + '@pinia/testing@0.1.6(pinia@2.2.4(typescript@5.6.2)(vue@3.5.11(typescript@5.6.2)))(vue@3.5.11(typescript@5.6.2))': dependencies: - '@sinclair/typebox': 0.29.6 - ajv: 8.12.0 - cross-fetch: 3.1.8(encoding@0.1.13) - encoding: 0.1.13 - - '@pinia/testing@0.1.3(pinia@2.1.6(typescript@5.5.2)(vue@3.4.21(typescript@5.5.2)))(vue@3.4.21(typescript@5.5.2))': - dependencies: - pinia: 2.1.6(typescript@5.5.2)(vue@3.4.21(typescript@5.5.2)) - vue-demi: 0.14.5(vue@3.4.21(typescript@5.5.2)) + pinia: 2.2.4(typescript@5.6.2)(vue@3.5.11(typescript@5.6.2)) + vue-demi: 0.14.10(vue@3.5.11(typescript@5.6.2)) transitivePeerDependencies: - '@vue/composition-api' - vue @@ -17243,8 +15129,6 @@ snapshots: '@pkgjs/parseargs@0.11.0': optional: true - '@pkgr/core@0.1.1': {} - '@protobufjs/aspromise@1.1.2': {} '@protobufjs/base64@1.1.2': {} @@ -17268,168 +15152,19 @@ snapshots: '@protobufjs/utf8@1.1.0': {} - '@qdrant/js-client-rest@1.9.0(typescript@5.5.2)': + '@qdrant/js-client-rest@1.11.0(typescript@5.6.2)': dependencies: '@qdrant/openapi-typescript-fetch': 1.2.6 '@sevinf/maybe': 0.5.0 - typescript: 5.5.2 + typescript: 5.6.2 undici: 5.28.4 '@qdrant/openapi-typescript-fetch@1.2.6': {} - '@radix-ui/primitive@1.0.1': - dependencies: - '@babel/runtime': 7.23.6 - - '@radix-ui/react-compose-refs@1.0.1(@types/react@18.0.27)(react@18.2.0)': - dependencies: - '@babel/runtime': 7.23.6 - react: 18.2.0 - optionalDependencies: - '@types/react': 18.0.27 - - '@radix-ui/react-context@1.0.1(@types/react@18.0.27)(react@18.2.0)': - dependencies: - '@babel/runtime': 7.23.6 - react: 18.2.0 - optionalDependencies: - '@types/react': 18.0.27 - - '@radix-ui/react-dialog@1.0.5(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@babel/runtime': 7.23.6 - '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-context': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-dismissable-layer': 1.0.5(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-focus-guards': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-focus-scope': 1.0.4(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-id': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-portal': 1.0.4(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-presence': 1.0.1(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-slot': 1.0.2(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.0.27)(react@18.2.0) - aria-hidden: 1.2.4 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - react-remove-scroll: 2.5.5(@types/react@18.0.27)(react@18.2.0) - optionalDependencies: - '@types/react': 18.0.27 - - '@radix-ui/react-dismissable-layer@1.0.5(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@babel/runtime': 7.23.6 - '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-use-escape-keydown': 1.0.3(@types/react@18.0.27)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - optionalDependencies: - '@types/react': 18.0.27 - - '@radix-ui/react-focus-guards@1.0.1(@types/react@18.0.27)(react@18.2.0)': - dependencies: - '@babel/runtime': 7.23.6 - react: 18.2.0 - optionalDependencies: - '@types/react': 18.0.27 - - '@radix-ui/react-focus-scope@1.0.4(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@babel/runtime': 7.23.6 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.0.27)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - optionalDependencies: - '@types/react': 18.0.27 - - '@radix-ui/react-id@1.0.1(@types/react@18.0.27)(react@18.2.0)': - dependencies: - '@babel/runtime': 7.23.6 - '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.0.27)(react@18.2.0) - react: 18.2.0 - optionalDependencies: - '@types/react': 18.0.27 - - '@radix-ui/react-portal@1.0.4(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@babel/runtime': 7.23.6 - '@radix-ui/react-primitive': 1.0.3(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - optionalDependencies: - '@types/react': 18.0.27 - - '@radix-ui/react-presence@1.0.1(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@babel/runtime': 7.23.6 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.0.27)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - optionalDependencies: - '@types/react': 18.0.27 - - '@radix-ui/react-primitive@1.0.3(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@babel/runtime': 7.23.6 - '@radix-ui/react-slot': 1.0.2(@types/react@18.0.27)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - optionalDependencies: - '@types/react': 18.0.27 - - '@radix-ui/react-slot@1.0.2(@types/react@18.0.27)(react@18.2.0)': - dependencies: - '@babel/runtime': 7.23.6 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.0.27)(react@18.2.0) - react: 18.2.0 - optionalDependencies: - '@types/react': 18.0.27 - - '@radix-ui/react-use-callback-ref@1.0.1(@types/react@18.0.27)(react@18.2.0)': - dependencies: - '@babel/runtime': 7.23.6 - react: 18.2.0 - optionalDependencies: - '@types/react': 18.0.27 - - '@radix-ui/react-use-controllable-state@1.0.1(@types/react@18.0.27)(react@18.2.0)': - dependencies: - '@babel/runtime': 7.23.6 - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.0.27)(react@18.2.0) - react: 18.2.0 - optionalDependencies: - '@types/react': 18.0.27 - - '@radix-ui/react-use-escape-keydown@1.0.3(@types/react@18.0.27)(react@18.2.0)': - dependencies: - '@babel/runtime': 7.23.6 - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.0.27)(react@18.2.0) - react: 18.2.0 - optionalDependencies: - '@types/react': 18.0.27 - - '@radix-ui/react-use-layout-effect@1.0.1(@types/react@18.0.27)(react@18.2.0)': - dependencies: - '@babel/runtime': 7.23.6 - react: 18.2.0 - optionalDependencies: - '@types/react': 18.0.27 - '@redis/bloom@1.2.0(@redis/client@1.5.13)': dependencies: '@redis/client': 1.5.13 - '@redis/bloom@1.2.0(@redis/client@1.5.14)': - dependencies: - '@redis/client': 1.5.14 - '@redis/bloom@1.2.0(@redis/client@1.5.16)': dependencies: '@redis/client': 1.5.16 @@ -17440,12 +15175,6 @@ snapshots: generic-pool: 3.9.0 yallist: 4.0.0 - '@redis/client@1.5.14': - dependencies: - cluster-key-slot: 1.1.2 - generic-pool: 3.9.0 - yallist: 4.0.0 - '@redis/client@1.5.16': dependencies: cluster-key-slot: 1.1.2 @@ -17456,10 +15185,6 @@ snapshots: dependencies: '@redis/client': 1.5.13 - '@redis/graph@1.1.1(@redis/client@1.5.14)': - dependencies: - '@redis/client': 1.5.14 - '@redis/graph@1.1.1(@redis/client@1.5.16)': dependencies: '@redis/client': 1.5.16 @@ -17468,10 +15193,6 @@ snapshots: dependencies: '@redis/client': 1.5.13 - '@redis/json@1.0.6(@redis/client@1.5.14)': - dependencies: - '@redis/client': 1.5.14 - '@redis/json@1.0.6(@redis/client@1.5.16)': dependencies: '@redis/client': 1.5.16 @@ -17480,10 +15201,6 @@ snapshots: dependencies: '@redis/client': 1.5.13 - '@redis/search@1.1.6(@redis/client@1.5.14)': - dependencies: - '@redis/client': 1.5.14 - '@redis/search@1.1.6(@redis/client@1.5.16)': dependencies: '@redis/client': 1.5.16 @@ -17492,35 +15209,34 @@ snapshots: dependencies: '@redis/client': 1.5.13 - '@redis/time-series@1.0.5(@redis/client@1.5.14)': - dependencies: - '@redis/client': 1.5.14 - '@redis/time-series@1.0.5(@redis/client@1.5.16)': dependencies: '@redis/client': 1.5.16 - '@redocly/ajv@8.11.0': + '@redocly/ajv@8.11.2': dependencies: fast-deep-equal: 3.1.3 json-schema-traverse: 1.0.0 require-from-string: 2.0.2 - uri-js: 4.4.1 + uri-js-replace: 1.0.1 - '@redocly/cli@1.6.0(encoding@0.1.13)': + '@redocly/cli@1.25.5(encoding@0.1.13)(enzyme@3.11.0)': dependencies: - '@redocly/openapi-core': 1.6.0(encoding@0.1.13) - chokidar: 3.5.2 + '@redocly/openapi-core': 1.25.5(encoding@0.1.13) + abort-controller: 3.0.0 + chokidar: 4.0.1 colorette: 1.4.0 core-js: 3.35.0 + form-data: 4.0.0 get-port-please: 3.1.2 glob: 7.2.3 handlebars: 4.7.8 mobx: 6.12.0 node-fetch: 2.7.0(encoding@0.1.13) + pluralize: 8.0.0 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - redoc: 2.1.3(core-js@3.35.0)(encoding@0.1.13)(mobx@6.12.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(styled-components@6.1.8(react-dom@18.2.0(react@18.2.0))(react@18.2.0)) + redoc: 2.1.5(core-js@3.35.0)(encoding@0.1.13)(enzyme@3.11.0)(mobx@6.12.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(styled-components@6.1.8(react-dom@18.2.0(react@18.2.0))(react@18.2.0)) semver: 7.6.0 simple-websocket: 9.1.0 styled-components: 6.1.8(react-dom@18.2.0(react@18.2.0))(react@18.2.0) @@ -17528,15 +15244,19 @@ snapshots: transitivePeerDependencies: - bufferutil - encoding + - enzyme - react-native - supports-color - utf-8-validate - '@redocly/openapi-core@1.6.0(encoding@0.1.13)': + '@redocly/config@0.12.1': {} + + '@redocly/openapi-core@1.25.5(encoding@0.1.13)': dependencies: - '@redocly/ajv': 8.11.0 - '@types/node': 18.16.16 + '@redocly/ajv': 8.11.2 + '@redocly/config': 0.12.1 colorette: 1.4.0 + https-proxy-agent: 7.0.5 js-levenshtein: 1.1.6 js-yaml: 4.1.0 lodash.isequal: 4.5.0 @@ -17546,115 +15266,67 @@ snapshots: yaml-ast-parser: 0.0.43 transitivePeerDependencies: - encoding + - supports-color - '@rollup/plugin-alias@5.1.0(rollup@3.29.4)': + '@rollup/pluginutils@5.1.0(rollup@4.24.0)': dependencies: - slash: 4.0.0 - optionalDependencies: - rollup: 3.29.4 - - '@rollup/plugin-commonjs@25.0.7(rollup@3.29.4)': - dependencies: - '@rollup/pluginutils': 5.0.5(rollup@3.29.4) - commondir: 1.0.1 - estree-walker: 2.0.2 - glob: 8.1.0 - is-reference: 1.2.1 - magic-string: 0.30.5 - optionalDependencies: - rollup: 3.29.4 - - '@rollup/plugin-json@6.1.0(rollup@3.29.4)': - dependencies: - '@rollup/pluginutils': 5.1.0(rollup@3.29.4) - optionalDependencies: - rollup: 3.29.4 - - '@rollup/plugin-node-resolve@15.2.3(rollup@3.29.4)': - dependencies: - '@rollup/pluginutils': 5.0.5(rollup@3.29.4) - '@types/resolve': 1.20.2 - deepmerge: 4.3.1 - is-builtin-module: 3.2.1 - is-module: 1.0.0 - resolve: 1.22.8 - optionalDependencies: - rollup: 3.29.4 - - '@rollup/plugin-replace@5.0.5(rollup@3.29.4)': - dependencies: - '@rollup/pluginutils': 5.0.5(rollup@3.29.4) - magic-string: 0.30.5 - optionalDependencies: - rollup: 3.29.4 - - '@rollup/pluginutils@5.0.5(rollup@3.29.4)': - dependencies: - '@types/estree': 1.0.0 + '@types/estree': 1.0.6 estree-walker: 2.0.2 picomatch: 2.3.1 optionalDependencies: - rollup: 3.29.4 + rollup: 4.24.0 - '@rollup/pluginutils@5.1.0(rollup@3.29.4)': + '@rollup/rollup-android-arm-eabi@4.24.0': + optional: true + + '@rollup/rollup-android-arm64@4.24.0': + optional: true + + '@rollup/rollup-darwin-arm64@4.24.0': + optional: true + + '@rollup/rollup-darwin-x64@4.24.0': + optional: true + + '@rollup/rollup-linux-arm-gnueabihf@4.24.0': + optional: true + + '@rollup/rollup-linux-arm-musleabihf@4.24.0': + optional: true + + '@rollup/rollup-linux-arm64-gnu@4.24.0': + optional: true + + '@rollup/rollup-linux-arm64-musl@4.24.0': + optional: true + + '@rollup/rollup-linux-powerpc64le-gnu@4.24.0': + optional: true + + '@rollup/rollup-linux-riscv64-gnu@4.24.0': + optional: true + + '@rollup/rollup-linux-s390x-gnu@4.24.0': + optional: true + + '@rollup/rollup-linux-x64-gnu@4.24.0': + optional: true + + '@rollup/rollup-linux-x64-musl@4.24.0': + optional: true + + '@rollup/rollup-win32-arm64-msvc@4.24.0': + optional: true + + '@rollup/rollup-win32-ia32-msvc@4.24.0': + optional: true + + '@rollup/rollup-win32-x64-msvc@4.24.0': + optional: true + + '@rudderstack/rudder-sdk-node@2.0.9(tslib@2.6.2)': dependencies: - '@types/estree': 1.0.5 - estree-walker: 2.0.2 - picomatch: 2.3.1 - optionalDependencies: - rollup: 3.29.4 - - '@rollup/rollup-android-arm-eabi@4.18.0': - optional: true - - '@rollup/rollup-android-arm64@4.18.0': - optional: true - - '@rollup/rollup-darwin-arm64@4.18.0': - optional: true - - '@rollup/rollup-darwin-x64@4.18.0': - optional: true - - '@rollup/rollup-linux-arm-gnueabihf@4.18.0': - optional: true - - '@rollup/rollup-linux-arm-musleabihf@4.18.0': - optional: true - - '@rollup/rollup-linux-arm64-gnu@4.18.0': - optional: true - - '@rollup/rollup-linux-arm64-musl@4.18.0': - optional: true - - '@rollup/rollup-linux-powerpc64le-gnu@4.18.0': - optional: true - - '@rollup/rollup-linux-riscv64-gnu@4.18.0': - optional: true - - '@rollup/rollup-linux-s390x-gnu@4.18.0': - optional: true - - '@rollup/rollup-linux-x64-gnu@4.18.0': - optional: true - - '@rollup/rollup-linux-x64-musl@4.18.0': - optional: true - - '@rollup/rollup-win32-arm64-msvc@4.18.0': - optional: true - - '@rollup/rollup-win32-ia32-msvc@4.18.0': - optional: true - - '@rollup/rollup-win32-x64-msvc@4.18.0': - optional: true - - '@rudderstack/rudder-sdk-node@2.0.7(tslib@2.6.2)': - dependencies: - axios: 1.6.7(debug@3.2.7) + axios: 1.7.4 axios-retry: 3.7.0 component-type: 1.2.1 join-component: 1.1.0 @@ -17672,62 +15344,139 @@ snapshots: - debug - supports-color - '@rushstack/node-core-library@3.62.0(@types/node@18.16.16)': + '@rushstack/node-core-library@5.7.0(@types/node@18.16.16)': dependencies: - colors: 1.2.5 + ajv: 8.13.0 + ajv-draft-04: 1.0.0(ajv@8.13.0) + ajv-formats: 3.0.1(ajv@8.13.0) fs-extra: 7.0.1 import-lazy: 4.0.0 jju: 1.4.0 resolve: 1.22.8 semver: 7.6.0 - z-schema: 5.0.5 optionalDependencies: '@types/node': 18.16.16 - '@rushstack/rig-package@0.5.1': + '@rushstack/rig-package@0.5.3': dependencies: resolve: 1.22.8 strip-json-comments: 3.1.1 - '@rushstack/ts-command-line@4.17.1': + '@rushstack/terminal@0.14.0(@types/node@18.16.16)': dependencies: + '@rushstack/node-core-library': 5.7.0(@types/node@18.16.16) + supports-color: 8.1.1 + optionalDependencies: + '@types/node': 18.16.16 + + '@rushstack/ts-command-line@4.22.6(@types/node@18.16.16)': + dependencies: + '@rushstack/terminal': 0.14.0(@types/node@18.16.16) '@types/argparse': 1.0.38 argparse: 1.0.10 - colors: 1.2.5 string-argv: 0.3.1 + transitivePeerDependencies: + - '@types/node' '@selderee/plugin-htmlparser2@0.11.0': dependencies: domhandler: 5.0.3 selderee: 0.11.0 + '@sentry-internal/browser-utils@8.33.1': + dependencies: + '@sentry/core': 8.33.1 + '@sentry/types': 8.33.1 + '@sentry/utils': 8.33.1 + + '@sentry-internal/feedback@8.33.1': + dependencies: + '@sentry/core': 8.33.1 + '@sentry/types': 8.33.1 + '@sentry/utils': 8.33.1 + + '@sentry-internal/replay-canvas@8.33.1': + dependencies: + '@sentry-internal/replay': 8.33.1 + '@sentry/core': 8.33.1 + '@sentry/types': 8.33.1 + '@sentry/utils': 8.33.1 + + '@sentry-internal/replay@8.33.1': + dependencies: + '@sentry-internal/browser-utils': 8.33.1 + '@sentry/core': 8.33.1 + '@sentry/types': 8.33.1 + '@sentry/utils': 8.33.1 + '@sentry-internal/tracing@7.87.0': dependencies: '@sentry/core': 7.87.0 '@sentry/types': 7.87.0 '@sentry/utils': 7.87.0 - '@sentry/bundler-plugin-core@2.5.0(encoding@0.1.13)': + '@sentry/babel-plugin-component-annotate@2.22.5': {} + + '@sentry/browser@8.33.1': dependencies: - '@sentry/cli': 2.17.0(patch_hash=nchnoezkq6p37qaiku3vrpwraq)(encoding@0.1.13) - '@sentry/node': 7.87.0 - '@sentry/utils': 7.60.1 + '@sentry-internal/browser-utils': 8.33.1 + '@sentry-internal/feedback': 8.33.1 + '@sentry-internal/replay': 8.33.1 + '@sentry-internal/replay-canvas': 8.33.1 + '@sentry/core': 8.33.1 + '@sentry/types': 8.33.1 + '@sentry/utils': 8.33.1 + + '@sentry/bundler-plugin-core@2.22.5(encoding@0.1.13)': + dependencies: + '@babel/core': 7.24.0 + '@sentry/babel-plugin-component-annotate': 2.22.5 + '@sentry/cli': 2.36.2(patch_hash=saib6xuadkfhahfipsdedqib2i)(encoding@0.1.13) dotenv: 16.3.1 find-up: 5.0.0 glob: 9.3.2 - magic-string: 0.27.0 + magic-string: 0.30.8 unplugin: 1.0.1 transitivePeerDependencies: - encoding - supports-color - '@sentry/cli@2.17.0(patch_hash=nchnoezkq6p37qaiku3vrpwraq)(encoding@0.1.13)': + '@sentry/cli-darwin@2.36.2': + optional: true + + '@sentry/cli-linux-arm64@2.36.2': + optional: true + + '@sentry/cli-linux-arm@2.36.2': + optional: true + + '@sentry/cli-linux-i686@2.36.2': + optional: true + + '@sentry/cli-linux-x64@2.36.2': + optional: true + + '@sentry/cli-win32-i686@2.36.2': + optional: true + + '@sentry/cli-win32-x64@2.36.2': + optional: true + + '@sentry/cli@2.36.2(patch_hash=saib6xuadkfhahfipsdedqib2i)(encoding@0.1.13)': dependencies: https-proxy-agent: 5.0.1 node-fetch: 2.7.0(encoding@0.1.13) progress: 2.0.3 proxy-from-env: 1.1.0 which: 2.0.2 + optionalDependencies: + '@sentry/cli-darwin': 2.36.2 + '@sentry/cli-linux-arm': 2.36.2 + '@sentry/cli-linux-arm64': 2.36.2 + '@sentry/cli-linux-i686': 2.36.2 + '@sentry/cli-linux-x64': 2.36.2 + '@sentry/cli-win32-i686': 2.36.2 + '@sentry/cli-win32-x64': 2.36.2 transitivePeerDependencies: - encoding - supports-color @@ -17737,6 +15486,11 @@ snapshots: '@sentry/types': 7.87.0 '@sentry/utils': 7.87.0 + '@sentry/core@8.33.1': + dependencies: + '@sentry/types': 8.33.1 + '@sentry/utils': 8.33.1 + '@sentry/integrations@7.87.0': dependencies: '@sentry/core': 7.87.0 @@ -17754,30 +15508,37 @@ snapshots: transitivePeerDependencies: - supports-color - '@sentry/types@7.60.1': {} - '@sentry/types@7.87.0': {} - '@sentry/utils@7.60.1': - dependencies: - '@sentry/types': 7.60.1 - tslib: 2.6.2 + '@sentry/types@8.33.1': {} '@sentry/utils@7.87.0': dependencies: '@sentry/types': 7.87.0 - '@sentry/vite-plugin@2.5.0(encoding@0.1.13)': + '@sentry/utils@8.33.1': dependencies: - '@sentry/bundler-plugin-core': 2.5.0(encoding@0.1.13) + '@sentry/types': 8.33.1 + + '@sentry/vite-plugin@2.22.5(encoding@0.1.13)': + dependencies: + '@sentry/bundler-plugin-core': 2.22.5(encoding@0.1.13) unplugin: 1.0.1 transitivePeerDependencies: - encoding - supports-color + '@sentry/vue@8.33.1(vue@3.5.11(typescript@5.6.2))': + dependencies: + '@sentry/browser': 8.33.1 + '@sentry/core': 8.33.1 + '@sentry/types': 8.33.1 + '@sentry/utils': 8.33.1 + vue: 3.5.11(typescript@5.6.2) + '@sevinf/maybe@0.5.0': {} - '@sideway/address@4.1.4': + '@sideway/address@4.1.5': dependencies: '@hapi/hoek': 9.3.0 @@ -17789,10 +15550,6 @@ snapshots: '@sinclair/typebox@0.27.8': {} - '@sinclair/typebox@0.29.6': {} - - '@sindresorhus/merge-streams@2.3.0': {} - '@sinonjs/commons@2.0.0': dependencies: type-detect: 4.0.8 @@ -17805,87 +15562,63 @@ snapshots: dependencies: '@sinonjs/commons': 2.0.0 - '@sinonjs/fake-timers@11.2.2': + '@sinonjs/fake-timers@13.0.2': dependencies: '@sinonjs/commons': 3.0.1 - '@smithy/abort-controller@2.0.15': + '@smithy/abort-controller@1.1.0': dependencies: - '@smithy/types': 2.12.0 + '@smithy/types': 1.2.0 tslib: 2.6.2 - '@smithy/abort-controller@2.2.0': + '@smithy/abort-controller@3.1.5': dependencies: - '@smithy/types': 2.12.0 + '@smithy/types': 3.5.0 tslib: 2.6.2 - '@smithy/chunked-blob-reader-native@2.0.1': + '@smithy/chunked-blob-reader-native@3.0.0': dependencies: - '@smithy/util-base64': 2.0.1 + '@smithy/util-base64': 3.0.0 tslib: 2.6.2 - '@smithy/chunked-blob-reader@2.0.0': + '@smithy/chunked-blob-reader@3.0.0': dependencies: tslib: 2.6.2 - '@smithy/config-resolver@2.0.21': + '@smithy/config-resolver@3.0.9': dependencies: - '@smithy/node-config-provider': 2.1.8 - '@smithy/types': 2.12.0 - '@smithy/util-config-provider': 2.0.0 - '@smithy/util-middleware': 2.0.8 + '@smithy/node-config-provider': 3.1.8 + '@smithy/types': 3.5.0 + '@smithy/util-config-provider': 3.0.0 + '@smithy/util-middleware': 3.0.7 tslib: 2.6.2 - '@smithy/config-resolver@2.2.0': + '@smithy/core@2.4.8': dependencies: - '@smithy/node-config-provider': 2.3.0 - '@smithy/types': 2.12.0 - '@smithy/util-config-provider': 2.3.0 - '@smithy/util-middleware': 2.2.0 + '@smithy/middleware-endpoint': 3.1.4 + '@smithy/middleware-retry': 3.0.23 + '@smithy/middleware-serde': 3.0.7 + '@smithy/protocol-http': 4.1.4 + '@smithy/smithy-client': 3.4.0 + '@smithy/types': 3.5.0 + '@smithy/util-body-length-browser': 3.0.0 + '@smithy/util-middleware': 3.0.7 + '@smithy/util-utf8': 3.0.0 tslib: 2.6.2 - '@smithy/core@1.2.0': + '@smithy/credential-provider-imds@3.2.4': dependencies: - '@smithy/middleware-endpoint': 2.2.3 - '@smithy/middleware-retry': 2.0.24 - '@smithy/middleware-serde': 2.0.15 - '@smithy/protocol-http': 3.0.11 - '@smithy/smithy-client': 2.1.18 - '@smithy/types': 2.12.0 - '@smithy/util-middleware': 2.0.8 + '@smithy/node-config-provider': 3.1.8 + '@smithy/property-provider': 3.1.7 + '@smithy/types': 3.5.0 + '@smithy/url-parser': 3.0.7 tslib: 2.6.2 - '@smithy/core@1.4.2': - dependencies: - '@smithy/middleware-endpoint': 2.5.1 - '@smithy/middleware-retry': 2.3.1 - '@smithy/middleware-serde': 2.3.0 - '@smithy/protocol-http': 3.3.0 - '@smithy/smithy-client': 2.5.1 - '@smithy/types': 2.12.0 - '@smithy/util-middleware': 2.2.0 - tslib: 2.6.2 - - '@smithy/credential-provider-imds@2.3.0': - dependencies: - '@smithy/node-config-provider': 2.3.0 - '@smithy/property-provider': 2.2.0 - '@smithy/types': 2.12.0 - '@smithy/url-parser': 2.2.0 - tslib: 2.6.2 - - '@smithy/eventstream-codec@2.0.14': + '@smithy/eventstream-codec@1.1.0': dependencies: '@aws-crypto/crc32': 3.0.0 - '@smithy/types': 2.12.0 - '@smithy/util-hex-encoding': 2.0.0 - tslib: 2.6.2 - - '@smithy/eventstream-codec@2.0.15': - dependencies: - '@aws-crypto/crc32': 3.0.0 - '@smithy/types': 2.12.0 - '@smithy/util-hex-encoding': 2.0.0 + '@smithy/types': 1.2.0 + '@smithy/util-hex-encoding': 1.1.0 tslib: 2.6.2 '@smithy/eventstream-codec@2.2.0': @@ -17894,107 +15627,72 @@ snapshots: '@smithy/types': 2.12.0 '@smithy/util-hex-encoding': 2.2.0 tslib: 2.6.2 + optional: true - '@smithy/eventstream-serde-browser@2.0.15': + '@smithy/eventstream-codec@3.1.6': dependencies: - '@smithy/eventstream-serde-universal': 2.0.15 - '@smithy/types': 2.12.0 + '@aws-crypto/crc32': 5.2.0 + '@smithy/types': 3.5.0 + '@smithy/util-hex-encoding': 3.0.0 tslib: 2.6.2 - '@smithy/eventstream-serde-browser@2.2.0': + '@smithy/eventstream-serde-browser@3.0.10': dependencies: - '@smithy/eventstream-serde-universal': 2.2.0 - '@smithy/types': 2.12.0 + '@smithy/eventstream-serde-universal': 3.0.9 + '@smithy/types': 3.5.0 tslib: 2.6.2 - '@smithy/eventstream-serde-config-resolver@2.0.15': + '@smithy/eventstream-serde-config-resolver@3.0.7': dependencies: - '@smithy/types': 2.12.0 + '@smithy/types': 3.5.0 tslib: 2.6.2 - '@smithy/eventstream-serde-config-resolver@2.2.0': + '@smithy/eventstream-serde-node@3.0.9': dependencies: - '@smithy/types': 2.12.0 + '@smithy/eventstream-serde-universal': 3.0.9 + '@smithy/types': 3.5.0 tslib: 2.6.2 - '@smithy/eventstream-serde-node@2.0.15': + '@smithy/eventstream-serde-universal@3.0.9': dependencies: - '@smithy/eventstream-serde-universal': 2.0.15 - '@smithy/types': 2.12.0 + '@smithy/eventstream-codec': 3.1.6 + '@smithy/types': 3.5.0 tslib: 2.6.2 - '@smithy/eventstream-serde-node@2.2.0': + '@smithy/fetch-http-handler@3.2.9': dependencies: - '@smithy/eventstream-serde-universal': 2.2.0 - '@smithy/types': 2.12.0 + '@smithy/protocol-http': 4.1.4 + '@smithy/querystring-builder': 3.0.7 + '@smithy/types': 3.5.0 + '@smithy/util-base64': 3.0.0 tslib: 2.6.2 - '@smithy/eventstream-serde-universal@2.0.15': + '@smithy/hash-blob-browser@3.1.6': dependencies: - '@smithy/eventstream-codec': 2.0.15 - '@smithy/types': 2.12.0 + '@smithy/chunked-blob-reader': 3.0.0 + '@smithy/chunked-blob-reader-native': 3.0.0 + '@smithy/types': 3.5.0 tslib: 2.6.2 - '@smithy/eventstream-serde-universal@2.2.0': + '@smithy/hash-node@3.0.7': dependencies: - '@smithy/eventstream-codec': 2.2.0 - '@smithy/types': 2.12.0 + '@smithy/types': 3.5.0 + '@smithy/util-buffer-from': 3.0.0 + '@smithy/util-utf8': 3.0.0 tslib: 2.6.2 - '@smithy/fetch-http-handler@2.3.1': + '@smithy/hash-stream-node@3.1.6': dependencies: - '@smithy/protocol-http': 3.0.11 - '@smithy/querystring-builder': 2.0.15 - '@smithy/types': 2.12.0 - '@smithy/util-base64': 2.0.1 + '@smithy/types': 3.5.0 + '@smithy/util-utf8': 3.0.0 tslib: 2.6.2 - '@smithy/fetch-http-handler@2.5.0': + '@smithy/invalid-dependency@3.0.7': dependencies: - '@smithy/protocol-http': 3.3.0 - '@smithy/querystring-builder': 2.2.0 - '@smithy/types': 2.12.0 - '@smithy/util-base64': 2.3.0 + '@smithy/types': 3.5.0 tslib: 2.6.2 - '@smithy/hash-blob-browser@2.0.16': - dependencies: - '@smithy/chunked-blob-reader': 2.0.0 - '@smithy/chunked-blob-reader-native': 2.0.1 - '@smithy/types': 2.12.0 - tslib: 2.6.2 - - '@smithy/hash-node@2.0.17': - dependencies: - '@smithy/types': 2.12.0 - '@smithy/util-buffer-from': 2.0.0 - '@smithy/util-utf8': 2.0.2 - tslib: 2.6.2 - - '@smithy/hash-node@2.2.0': - dependencies: - '@smithy/types': 2.12.0 - '@smithy/util-buffer-from': 2.2.0 - '@smithy/util-utf8': 2.3.0 - tslib: 2.6.2 - - '@smithy/hash-stream-node@2.0.17': - dependencies: - '@smithy/types': 2.12.0 - '@smithy/util-utf8': 2.0.2 - tslib: 2.6.2 - - '@smithy/invalid-dependency@2.0.15': - dependencies: - '@smithy/types': 2.12.0 - tslib: 2.6.2 - - '@smithy/invalid-dependency@2.2.0': - dependencies: - '@smithy/types': 2.12.0 - tslib: 2.6.2 - - '@smithy/is-array-buffer@2.0.0': + '@smithy/is-array-buffer@1.1.0': dependencies: tslib: 2.6.2 @@ -18002,177 +15700,133 @@ snapshots: dependencies: tslib: 2.6.2 - '@smithy/md5-js@2.0.17': + '@smithy/is-array-buffer@3.0.0': dependencies: - '@smithy/types': 2.12.0 - '@smithy/util-utf8': 2.0.2 tslib: 2.6.2 - '@smithy/middleware-content-length@2.0.17': + '@smithy/md5-js@3.0.7': dependencies: - '@smithy/protocol-http': 3.0.11 - '@smithy/types': 2.12.0 + '@smithy/types': 3.5.0 + '@smithy/util-utf8': 3.0.0 tslib: 2.6.2 - '@smithy/middleware-content-length@2.2.0': + '@smithy/middleware-content-length@3.0.9': dependencies: - '@smithy/protocol-http': 3.3.0 - '@smithy/types': 2.12.0 + '@smithy/protocol-http': 4.1.4 + '@smithy/types': 3.5.0 tslib: 2.6.2 - '@smithy/middleware-endpoint@2.2.3': + '@smithy/middleware-endpoint@3.1.4': dependencies: - '@smithy/middleware-serde': 2.0.15 - '@smithy/node-config-provider': 2.1.8 - '@smithy/shared-ini-file-loader': 2.4.0 - '@smithy/types': 2.12.0 - '@smithy/url-parser': 2.0.15 - '@smithy/util-middleware': 2.0.8 + '@smithy/middleware-serde': 3.0.7 + '@smithy/node-config-provider': 3.1.8 + '@smithy/shared-ini-file-loader': 3.1.8 + '@smithy/types': 3.5.0 + '@smithy/url-parser': 3.0.7 + '@smithy/util-middleware': 3.0.7 tslib: 2.6.2 - '@smithy/middleware-endpoint@2.5.1': + '@smithy/middleware-retry@3.0.23': dependencies: - '@smithy/middleware-serde': 2.3.0 - '@smithy/node-config-provider': 2.3.0 - '@smithy/shared-ini-file-loader': 2.4.0 - '@smithy/types': 2.12.0 - '@smithy/url-parser': 2.2.0 - '@smithy/util-middleware': 2.2.0 - tslib: 2.6.2 - - '@smithy/middleware-retry@2.0.24': - dependencies: - '@smithy/node-config-provider': 2.1.8 - '@smithy/protocol-http': 3.0.11 - '@smithy/service-error-classification': 2.0.8 - '@smithy/smithy-client': 2.1.18 - '@smithy/types': 2.12.0 - '@smithy/util-middleware': 2.0.8 - '@smithy/util-retry': 2.0.8 - tslib: 2.6.2 - uuid: 8.3.2 - - '@smithy/middleware-retry@2.3.1': - dependencies: - '@smithy/node-config-provider': 2.3.0 - '@smithy/protocol-http': 3.3.0 - '@smithy/service-error-classification': 2.1.5 - '@smithy/smithy-client': 2.5.1 - '@smithy/types': 2.12.0 - '@smithy/util-middleware': 2.2.0 - '@smithy/util-retry': 2.2.0 + '@smithy/node-config-provider': 3.1.8 + '@smithy/protocol-http': 4.1.4 + '@smithy/service-error-classification': 3.0.7 + '@smithy/smithy-client': 3.4.0 + '@smithy/types': 3.5.0 + '@smithy/util-middleware': 3.0.7 + '@smithy/util-retry': 3.0.7 tslib: 2.6.2 uuid: 9.0.1 - '@smithy/middleware-serde@2.0.15': + '@smithy/middleware-serde@3.0.7': dependencies: - '@smithy/types': 2.12.0 + '@smithy/types': 3.5.0 tslib: 2.6.2 - '@smithy/middleware-serde@2.3.0': + '@smithy/middleware-stack@3.0.7': dependencies: - '@smithy/types': 2.12.0 + '@smithy/types': 3.5.0 tslib: 2.6.2 - '@smithy/middleware-stack@2.0.9': + '@smithy/node-config-provider@3.1.8': dependencies: - '@smithy/types': 2.12.0 + '@smithy/property-provider': 3.1.7 + '@smithy/shared-ini-file-loader': 3.1.8 + '@smithy/types': 3.5.0 tslib: 2.6.2 - '@smithy/middleware-stack@2.2.0': + '@smithy/node-http-handler@1.1.0': dependencies: - '@smithy/types': 2.12.0 + '@smithy/abort-controller': 1.1.0 + '@smithy/protocol-http': 1.2.0 + '@smithy/querystring-builder': 1.1.0 + '@smithy/types': 1.2.0 tslib: 2.6.2 - '@smithy/node-config-provider@2.1.8': + '@smithy/node-http-handler@3.2.4': dependencies: - '@smithy/property-provider': 2.2.0 - '@smithy/shared-ini-file-loader': 2.4.0 - '@smithy/types': 2.12.0 + '@smithy/abort-controller': 3.1.5 + '@smithy/protocol-http': 4.1.4 + '@smithy/querystring-builder': 3.0.7 + '@smithy/types': 3.5.0 tslib: 2.6.2 - '@smithy/node-config-provider@2.3.0': + '@smithy/property-provider@3.1.7': dependencies: - '@smithy/property-provider': 2.2.0 - '@smithy/shared-ini-file-loader': 2.4.0 - '@smithy/types': 2.12.0 + '@smithy/types': 3.5.0 tslib: 2.6.2 - '@smithy/node-http-handler@2.2.1': + '@smithy/protocol-http@1.2.0': dependencies: - '@smithy/abort-controller': 2.0.15 - '@smithy/protocol-http': 3.0.11 - '@smithy/querystring-builder': 2.0.15 - '@smithy/types': 2.12.0 - tslib: 2.6.2 - - '@smithy/node-http-handler@2.5.0': - dependencies: - '@smithy/abort-controller': 2.2.0 - '@smithy/protocol-http': 3.3.0 - '@smithy/querystring-builder': 2.2.0 - '@smithy/types': 2.12.0 - tslib: 2.6.2 - - '@smithy/property-provider@2.2.0': - dependencies: - '@smithy/types': 2.12.0 - tslib: 2.6.2 - - '@smithy/protocol-http@3.0.11': - dependencies: - '@smithy/types': 2.12.0 + '@smithy/types': 1.2.0 tslib: 2.6.2 '@smithy/protocol-http@3.3.0': dependencies: '@smithy/types': 2.12.0 tslib: 2.6.2 + optional: true - '@smithy/querystring-builder@2.0.15': + '@smithy/protocol-http@4.1.4': dependencies: - '@smithy/types': 2.12.0 - '@smithy/util-uri-escape': 2.0.0 + '@smithy/types': 3.5.0 tslib: 2.6.2 - '@smithy/querystring-builder@2.2.0': + '@smithy/querystring-builder@1.1.0': dependencies: - '@smithy/types': 2.12.0 - '@smithy/util-uri-escape': 2.2.0 + '@smithy/types': 1.2.0 + '@smithy/util-uri-escape': 1.1.0 tslib: 2.6.2 - '@smithy/querystring-parser@2.0.15': + '@smithy/querystring-builder@3.0.7': dependencies: - '@smithy/types': 2.12.0 + '@smithy/types': 3.5.0 + '@smithy/util-uri-escape': 3.0.0 tslib: 2.6.2 - '@smithy/querystring-parser@2.2.0': + '@smithy/querystring-parser@3.0.7': dependencies: - '@smithy/types': 2.12.0 + '@smithy/types': 3.5.0 tslib: 2.6.2 - '@smithy/service-error-classification@2.0.8': + '@smithy/service-error-classification@3.0.7': dependencies: - '@smithy/types': 2.12.0 + '@smithy/types': 3.5.0 - '@smithy/service-error-classification@2.1.5': + '@smithy/shared-ini-file-loader@3.1.8': dependencies: - '@smithy/types': 2.12.0 - - '@smithy/shared-ini-file-loader@2.4.0': - dependencies: - '@smithy/types': 2.12.0 + '@smithy/types': 3.5.0 tslib: 2.6.2 - '@smithy/signature-v4@2.0.5': + '@smithy/signature-v4@1.1.0': dependencies: - '@smithy/eventstream-codec': 2.0.14 - '@smithy/is-array-buffer': 2.0.0 - '@smithy/types': 2.12.0 - '@smithy/util-hex-encoding': 2.0.0 - '@smithy/util-middleware': 2.0.8 - '@smithy/util-uri-escape': 2.0.0 - '@smithy/util-utf8': 2.0.2 + '@smithy/eventstream-codec': 1.1.0 + '@smithy/is-array-buffer': 1.1.0 + '@smithy/types': 1.2.0 + '@smithy/util-hex-encoding': 1.1.0 + '@smithy/util-middleware': 1.1.0 + '@smithy/util-uri-escape': 1.1.0 + '@smithy/util-utf8': 1.1.0 tslib: 2.6.2 '@smithy/signature-v4@2.2.1': @@ -18184,69 +15838,64 @@ snapshots: '@smithy/util-uri-escape': 2.2.0 '@smithy/util-utf8': 2.3.0 tslib: 2.6.2 + optional: true - '@smithy/smithy-client@2.1.18': + '@smithy/signature-v4@4.2.0': dependencies: - '@smithy/middleware-stack': 2.0.9 - '@smithy/types': 2.12.0 - '@smithy/util-stream': 2.0.23 + '@smithy/is-array-buffer': 3.0.0 + '@smithy/protocol-http': 4.1.4 + '@smithy/types': 3.5.0 + '@smithy/util-hex-encoding': 3.0.0 + '@smithy/util-middleware': 3.0.7 + '@smithy/util-uri-escape': 3.0.0 + '@smithy/util-utf8': 3.0.0 tslib: 2.6.2 - '@smithy/smithy-client@2.5.1': + '@smithy/smithy-client@3.4.0': + dependencies: + '@smithy/middleware-endpoint': 3.1.4 + '@smithy/middleware-stack': 3.0.7 + '@smithy/protocol-http': 4.1.4 + '@smithy/types': 3.5.0 + '@smithy/util-stream': 3.1.9 + tslib: 2.6.2 + + '@smithy/types@1.2.0': dependencies: - '@smithy/middleware-endpoint': 2.5.1 - '@smithy/middleware-stack': 2.2.0 - '@smithy/protocol-http': 3.3.0 - '@smithy/types': 2.12.0 - '@smithy/util-stream': 2.2.0 tslib: 2.6.2 '@smithy/types@2.12.0': dependencies: tslib: 2.6.2 + optional: true - '@smithy/url-parser@2.0.15': - dependencies: - '@smithy/querystring-parser': 2.0.15 - '@smithy/types': 2.12.0 - tslib: 2.6.2 - - '@smithy/url-parser@2.2.0': - dependencies: - '@smithy/querystring-parser': 2.2.0 - '@smithy/types': 2.12.0 - tslib: 2.6.2 - - '@smithy/util-base64@2.0.1': - dependencies: - '@smithy/util-buffer-from': 2.0.0 - tslib: 2.6.2 - - '@smithy/util-base64@2.3.0': - dependencies: - '@smithy/util-buffer-from': 2.2.0 - '@smithy/util-utf8': 2.3.0 - tslib: 2.6.2 - - '@smithy/util-body-length-browser@2.0.1': + '@smithy/types@3.5.0': dependencies: tslib: 2.6.2 - '@smithy/util-body-length-browser@2.2.0': + '@smithy/url-parser@3.0.7': + dependencies: + '@smithy/querystring-parser': 3.0.7 + '@smithy/types': 3.5.0 + tslib: 2.6.2 + + '@smithy/util-base64@3.0.0': + dependencies: + '@smithy/util-buffer-from': 3.0.0 + '@smithy/util-utf8': 3.0.0 + tslib: 2.6.2 + + '@smithy/util-body-length-browser@3.0.0': dependencies: tslib: 2.6.2 - '@smithy/util-body-length-node@2.1.0': + '@smithy/util-body-length-node@3.0.0': dependencies: tslib: 2.6.2 - '@smithy/util-body-length-node@2.3.0': + '@smithy/util-buffer-from@1.1.0': dependencies: - tslib: 2.6.2 - - '@smithy/util-buffer-from@2.0.0': - dependencies: - '@smithy/is-array-buffer': 2.0.0 + '@smithy/is-array-buffer': 1.1.0 tslib: 2.6.2 '@smithy/util-buffer-from@2.2.0': @@ -18254,125 +15903,100 @@ snapshots: '@smithy/is-array-buffer': 2.2.0 tslib: 2.6.2 - '@smithy/util-config-provider@2.0.0': + '@smithy/util-buffer-from@3.0.0': + dependencies: + '@smithy/is-array-buffer': 3.0.0 + tslib: 2.6.2 + + '@smithy/util-config-provider@3.0.0': dependencies: tslib: 2.6.2 - '@smithy/util-config-provider@2.3.0': + '@smithy/util-defaults-mode-browser@3.0.23': dependencies: - tslib: 2.6.2 - - '@smithy/util-defaults-mode-browser@2.0.22': - dependencies: - '@smithy/property-provider': 2.2.0 - '@smithy/smithy-client': 2.1.18 - '@smithy/types': 2.12.0 + '@smithy/property-provider': 3.1.7 + '@smithy/smithy-client': 3.4.0 + '@smithy/types': 3.5.0 bowser: 2.11.0 tslib: 2.6.2 - '@smithy/util-defaults-mode-browser@2.2.1': + '@smithy/util-defaults-mode-node@3.0.23': dependencies: - '@smithy/property-provider': 2.2.0 - '@smithy/smithy-client': 2.5.1 - '@smithy/types': 2.12.0 - bowser: 2.11.0 + '@smithy/config-resolver': 3.0.9 + '@smithy/credential-provider-imds': 3.2.4 + '@smithy/node-config-provider': 3.1.8 + '@smithy/property-provider': 3.1.7 + '@smithy/smithy-client': 3.4.0 + '@smithy/types': 3.5.0 tslib: 2.6.2 - '@smithy/util-defaults-mode-node@2.0.29': + '@smithy/util-endpoints@2.1.3': dependencies: - '@smithy/config-resolver': 2.0.21 - '@smithy/credential-provider-imds': 2.3.0 - '@smithy/node-config-provider': 2.1.8 - '@smithy/property-provider': 2.2.0 - '@smithy/smithy-client': 2.1.18 - '@smithy/types': 2.12.0 + '@smithy/node-config-provider': 3.1.8 + '@smithy/types': 3.5.0 tslib: 2.6.2 - '@smithy/util-defaults-mode-node@2.3.1': - dependencies: - '@smithy/config-resolver': 2.2.0 - '@smithy/credential-provider-imds': 2.3.0 - '@smithy/node-config-provider': 2.3.0 - '@smithy/property-provider': 2.2.0 - '@smithy/smithy-client': 2.5.1 - '@smithy/types': 2.12.0 - tslib: 2.6.2 - - '@smithy/util-endpoints@1.0.7': - dependencies: - '@smithy/node-config-provider': 2.1.8 - '@smithy/types': 2.12.0 - tslib: 2.6.2 - - '@smithy/util-endpoints@1.2.0': - dependencies: - '@smithy/node-config-provider': 2.3.0 - '@smithy/types': 2.12.0 - tslib: 2.6.2 - - '@smithy/util-hex-encoding@2.0.0': + '@smithy/util-hex-encoding@1.1.0': dependencies: tslib: 2.6.2 '@smithy/util-hex-encoding@2.2.0': dependencies: tslib: 2.6.2 + optional: true - '@smithy/util-middleware@2.0.8': + '@smithy/util-hex-encoding@3.0.0': + dependencies: + tslib: 2.6.2 + + '@smithy/util-middleware@1.1.0': dependencies: - '@smithy/types': 2.12.0 tslib: 2.6.2 '@smithy/util-middleware@2.2.0': dependencies: '@smithy/types': 2.12.0 tslib: 2.6.2 + optional: true - '@smithy/util-retry@2.0.8': + '@smithy/util-middleware@3.0.7': dependencies: - '@smithy/service-error-classification': 2.0.8 - '@smithy/types': 2.12.0 + '@smithy/types': 3.5.0 tslib: 2.6.2 - '@smithy/util-retry@2.2.0': + '@smithy/util-retry@3.0.7': dependencies: - '@smithy/service-error-classification': 2.1.5 - '@smithy/types': 2.12.0 + '@smithy/service-error-classification': 3.0.7 + '@smithy/types': 3.5.0 tslib: 2.6.2 - '@smithy/util-stream@2.0.23': + '@smithy/util-stream@3.1.9': dependencies: - '@smithy/fetch-http-handler': 2.3.1 - '@smithy/node-http-handler': 2.2.1 - '@smithy/types': 2.12.0 - '@smithy/util-base64': 2.0.1 - '@smithy/util-buffer-from': 2.0.0 - '@smithy/util-hex-encoding': 2.0.0 - '@smithy/util-utf8': 2.0.2 + '@smithy/fetch-http-handler': 3.2.9 + '@smithy/node-http-handler': 3.2.4 + '@smithy/types': 3.5.0 + '@smithy/util-base64': 3.0.0 + '@smithy/util-buffer-from': 3.0.0 + '@smithy/util-hex-encoding': 3.0.0 + '@smithy/util-utf8': 3.0.0 tslib: 2.6.2 - '@smithy/util-stream@2.2.0': - dependencies: - '@smithy/fetch-http-handler': 2.5.0 - '@smithy/node-http-handler': 2.5.0 - '@smithy/types': 2.12.0 - '@smithy/util-base64': 2.3.0 - '@smithy/util-buffer-from': 2.2.0 - '@smithy/util-hex-encoding': 2.2.0 - '@smithy/util-utf8': 2.3.0 - tslib: 2.6.2 - - '@smithy/util-uri-escape@2.0.0': + '@smithy/util-uri-escape@1.1.0': dependencies: tslib: 2.6.2 '@smithy/util-uri-escape@2.2.0': dependencies: tslib: 2.6.2 + optional: true - '@smithy/util-utf8@2.0.2': + '@smithy/util-uri-escape@3.0.0': dependencies: - '@smithy/util-buffer-from': 2.0.0 + tslib: 2.6.2 + + '@smithy/util-utf8@1.1.0': + dependencies: + '@smithy/util-buffer-from': 1.1.0 tslib: 2.6.2 '@smithy/util-utf8@2.3.0': @@ -18380,639 +16004,281 @@ snapshots: '@smithy/util-buffer-from': 2.2.0 tslib: 2.6.2 - '@smithy/util-waiter@2.0.15': + '@smithy/util-utf8@3.0.0': dependencies: - '@smithy/abort-controller': 2.0.15 - '@smithy/types': 2.12.0 + '@smithy/util-buffer-from': 3.0.0 + tslib: 2.6.2 + + '@smithy/util-waiter@3.1.6': + dependencies: + '@smithy/abort-controller': 3.1.5 + '@smithy/types': 3.5.0 tslib: 2.6.2 '@sqltools/formatter@1.2.5': {} - '@storybook/addon-a11y@8.1.4': + '@storybook/addon-a11y@8.3.5(storybook@8.3.5)': dependencies: - '@storybook/addon-highlight': 8.1.4 + '@storybook/addon-highlight': 8.3.5(storybook@8.3.5) axe-core: 4.7.2 + storybook: 8.3.5 - '@storybook/addon-actions@8.1.4': + '@storybook/addon-actions@8.3.5(storybook@8.3.5)': dependencies: - '@storybook/core-events': 8.1.4 '@storybook/global': 5.0.0 - '@types/uuid': 9.0.7 + '@types/uuid': 9.0.8 dequal: 2.0.3 polished: 4.2.2 + storybook: 8.3.5 uuid: 9.0.1 - '@storybook/addon-backgrounds@8.1.4': + '@storybook/addon-backgrounds@8.3.5(storybook@8.3.5)': dependencies: '@storybook/global': 5.0.0 memoizerific: 1.11.3 + storybook: 8.3.5 ts-dedent: 2.2.0 - '@storybook/addon-controls@8.1.4(@types/react@18.0.27)(encoding@0.1.13)(prettier@3.2.5)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + '@storybook/addon-controls@8.3.5(storybook@8.3.5)': dependencies: - '@storybook/blocks': 8.1.4(@types/react@18.0.27)(encoding@0.1.13)(prettier@3.2.5)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@storybook/global': 5.0.0 dequal: 2.0.3 lodash: 4.17.21 + storybook: 8.3.5 ts-dedent: 2.2.0 - transitivePeerDependencies: - - '@types/react' - - '@types/react-dom' - - encoding - - prettier - - react - - react-dom - - supports-color - '@storybook/addon-docs@8.1.4(encoding@0.1.13)(prettier@3.2.5)': + '@storybook/addon-docs@8.3.5(storybook@8.3.5)': dependencies: - '@babel/core': 7.24.6 '@mdx-js/react': 3.0.1(@types/react@18.0.27)(react@18.2.0) - '@storybook/blocks': 8.1.4(@types/react@18.0.27)(encoding@0.1.13)(prettier@3.2.5)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@storybook/client-logger': 8.1.4 - '@storybook/components': 8.1.4(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@storybook/csf-plugin': 8.1.4 - '@storybook/csf-tools': 8.1.4 + '@storybook/blocks': 8.3.5(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(storybook@8.3.5) + '@storybook/csf-plugin': 8.3.5(storybook@8.3.5) '@storybook/global': 5.0.0 - '@storybook/node-logger': 8.1.4 - '@storybook/preview-api': 8.1.4 - '@storybook/react-dom-shim': 8.1.4(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@storybook/theming': 8.1.4(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@storybook/types': 8.1.4 + '@storybook/react-dom-shim': 8.3.5(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(storybook@8.3.5) '@types/react': 18.0.27 fs-extra: 11.1.1 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) rehype-external-links: 3.0.0 rehype-slug: 6.0.0 + storybook: 8.3.5 ts-dedent: 2.2.0 - transitivePeerDependencies: - - '@types/react-dom' - - encoding - - prettier - - supports-color - '@storybook/addon-essentials@8.1.4(@types/react@18.0.27)(encoding@0.1.13)(prettier@3.2.5)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + '@storybook/addon-essentials@8.3.5(storybook@8.3.5)': dependencies: - '@storybook/addon-actions': 8.1.4 - '@storybook/addon-backgrounds': 8.1.4 - '@storybook/addon-controls': 8.1.4(@types/react@18.0.27)(encoding@0.1.13)(prettier@3.2.5)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@storybook/addon-docs': 8.1.4(encoding@0.1.13)(prettier@3.2.5) - '@storybook/addon-highlight': 8.1.4 - '@storybook/addon-measure': 8.1.4 - '@storybook/addon-outline': 8.1.4 - '@storybook/addon-toolbars': 8.1.4 - '@storybook/addon-viewport': 8.1.4 - '@storybook/core-common': 8.1.4(encoding@0.1.13)(prettier@3.2.5) - '@storybook/manager-api': 8.1.4(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@storybook/node-logger': 8.1.4 - '@storybook/preview-api': 8.1.4 + '@storybook/addon-actions': 8.3.5(storybook@8.3.5) + '@storybook/addon-backgrounds': 8.3.5(storybook@8.3.5) + '@storybook/addon-controls': 8.3.5(storybook@8.3.5) + '@storybook/addon-docs': 8.3.5(storybook@8.3.5) + '@storybook/addon-highlight': 8.3.5(storybook@8.3.5) + '@storybook/addon-measure': 8.3.5(storybook@8.3.5) + '@storybook/addon-outline': 8.3.5(storybook@8.3.5) + '@storybook/addon-toolbars': 8.3.5(storybook@8.3.5) + '@storybook/addon-viewport': 8.3.5(storybook@8.3.5) + storybook: 8.3.5 ts-dedent: 2.2.0 - transitivePeerDependencies: - - '@types/react' - - '@types/react-dom' - - encoding - - prettier - - react - - react-dom - - supports-color - '@storybook/addon-highlight@8.1.4': + '@storybook/addon-highlight@8.3.5(storybook@8.3.5)': dependencies: '@storybook/global': 5.0.0 + storybook: 8.3.5 - '@storybook/addon-interactions@8.1.4(@jest/globals@29.6.2)(@types/jest@29.5.3)(jest@29.6.2(@types/node@18.16.16))(vitest@1.6.0(@types/node@18.16.16)(jsdom@23.0.1)(sass@1.64.1)(terser@5.16.1))': + '@storybook/addon-interactions@8.3.5(storybook@8.3.5)': dependencies: '@storybook/global': 5.0.0 - '@storybook/instrumenter': 8.1.4 - '@storybook/test': 8.1.4(@jest/globals@29.6.2)(@types/jest@29.5.3)(jest@29.6.2(@types/node@18.16.16))(vitest@1.6.0(@types/node@18.16.16)(jsdom@23.0.1)(sass@1.64.1)(terser@5.16.1)) - '@storybook/types': 8.1.4 + '@storybook/instrumenter': 8.3.5(storybook@8.3.5) + '@storybook/test': 8.3.5(storybook@8.3.5) polished: 4.2.2 + storybook: 8.3.5 ts-dedent: 2.2.0 - transitivePeerDependencies: - - '@jest/globals' - - '@types/bun' - - '@types/jest' - - jest - - vitest - '@storybook/addon-links@8.1.4(react@18.2.0)': + '@storybook/addon-links@8.3.5(react@18.2.0)(storybook@8.3.5)': dependencies: - '@storybook/csf': 0.1.7 + '@storybook/csf': 0.1.11 '@storybook/global': 5.0.0 + storybook: 8.3.5 ts-dedent: 2.2.0 optionalDependencies: react: 18.2.0 - '@storybook/addon-measure@8.1.4': + '@storybook/addon-measure@8.3.5(storybook@8.3.5)': dependencies: '@storybook/global': 5.0.0 + storybook: 8.3.5 tiny-invariant: 1.3.3 - '@storybook/addon-outline@8.1.4': + '@storybook/addon-outline@8.3.5(storybook@8.3.5)': dependencies: '@storybook/global': 5.0.0 + storybook: 8.3.5 ts-dedent: 2.2.0 - '@storybook/addon-themes@8.1.4': + '@storybook/addon-themes@8.3.5(storybook@8.3.5)': dependencies: + storybook: 8.3.5 ts-dedent: 2.2.0 - '@storybook/addon-toolbars@8.1.4': {} + '@storybook/addon-toolbars@8.3.5(storybook@8.3.5)': + dependencies: + storybook: 8.3.5 - '@storybook/addon-viewport@8.1.4': + '@storybook/addon-viewport@8.3.5(storybook@8.3.5)': dependencies: memoizerific: 1.11.3 + storybook: 8.3.5 - '@storybook/blocks@8.1.4(@types/react@18.0.27)(encoding@0.1.13)(prettier@3.2.5)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + '@storybook/blocks@8.3.5(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(storybook@8.3.5)': dependencies: - '@storybook/channels': 8.1.4 - '@storybook/client-logger': 8.1.4 - '@storybook/components': 8.1.4(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@storybook/core-events': 8.1.4 - '@storybook/csf': 0.1.7 - '@storybook/docs-tools': 8.1.4(encoding@0.1.13)(prettier@3.2.5) + '@storybook/csf': 0.1.11 '@storybook/global': 5.0.0 - '@storybook/icons': 1.2.9(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@storybook/manager-api': 8.1.4(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@storybook/preview-api': 8.1.4 - '@storybook/theming': 8.1.4(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@storybook/types': 8.1.4 + '@storybook/icons': 1.2.10(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@types/lodash': 4.14.195 color-convert: 2.0.1 dequal: 2.0.3 lodash: 4.17.21 - markdown-to-jsx: 7.3.2(react@18.2.0) + markdown-to-jsx: 7.5.0(react@18.2.0) memoizerific: 1.11.3 polished: 4.2.2 react-colorful: 5.6.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + storybook: 8.3.5 telejson: 7.2.0 - tocbot: 4.21.0 ts-dedent: 2.2.0 util-deprecate: 1.0.2 optionalDependencies: react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - transitivePeerDependencies: - - '@types/react' - - '@types/react-dom' - - encoding - - prettier - - supports-color - '@storybook/builder-manager@8.1.4(encoding@0.1.13)(prettier@3.2.5)': + '@storybook/builder-vite@8.3.5(storybook@8.3.5)(typescript@5.6.2)(vite@5.4.8(@types/node@18.16.16)(sass@1.64.1)(terser@5.16.1))': dependencies: - '@fal-works/esbuild-plugin-global-externals': 2.1.2 - '@storybook/core-common': 8.1.4(encoding@0.1.13)(prettier@3.2.5) - '@storybook/manager': 8.1.4 - '@storybook/node-logger': 8.1.4 - '@types/ejs': 3.1.1 - '@yarnpkg/esbuild-plugin-pnp': 3.0.0-rc.15(esbuild@0.20.2) - browser-assert: 1.2.1 - ejs: 3.1.10 - esbuild: 0.20.2 - esbuild-plugin-alias: 0.2.1 - express: 4.19.2 - fs-extra: 11.1.1 - process: 0.11.10 - util: 0.12.5 - transitivePeerDependencies: - - encoding - - prettier - - supports-color - - '@storybook/builder-vite@8.1.4(encoding@0.1.13)(prettier@3.2.5)(typescript@5.5.2)(vite@5.2.12(@types/node@18.16.16)(sass@1.64.1)(terser@5.16.1))': - dependencies: - '@storybook/channels': 8.1.4 - '@storybook/client-logger': 8.1.4 - '@storybook/core-common': 8.1.4(encoding@0.1.13)(prettier@3.2.5) - '@storybook/core-events': 8.1.4 - '@storybook/csf-plugin': 8.1.4 - '@storybook/node-logger': 8.1.4 - '@storybook/preview': 8.1.4 - '@storybook/preview-api': 8.1.4 - '@storybook/types': 8.1.4 + '@storybook/csf-plugin': 8.3.5(storybook@8.3.5) '@types/find-cache-dir': 3.2.1 browser-assert: 1.2.1 es-module-lexer: 1.5.3 - express: 4.19.2 + express: 4.21.1 find-cache-dir: 3.3.2 fs-extra: 11.1.1 - magic-string: 0.30.8 + magic-string: 0.30.11 + storybook: 8.3.5 ts-dedent: 2.2.0 - vite: 5.2.12(@types/node@18.16.16)(sass@1.64.1)(terser@5.16.1) + vite: 5.4.8(@types/node@18.16.16)(sass@1.64.1)(terser@5.16.1) optionalDependencies: - typescript: 5.5.2 - transitivePeerDependencies: - - encoding - - prettier - - supports-color - - '@storybook/channels@8.1.4': - dependencies: - '@storybook/client-logger': 8.1.4 - '@storybook/core-events': 8.1.4 - '@storybook/global': 5.0.0 - telejson: 7.2.0 - tiny-invariant: 1.3.3 - - '@storybook/cli@8.1.4(@babel/preset-env@7.24.6(@babel/core@7.24.6))(encoding@0.1.13)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@babel/core': 7.24.6 - '@babel/types': 7.24.0 - '@ndelangen/get-tarball': 3.0.7 - '@storybook/codemod': 8.1.4 - '@storybook/core-common': 8.1.4(encoding@0.1.13)(prettier@3.2.5) - '@storybook/core-events': 8.1.4 - '@storybook/core-server': 8.1.4(encoding@0.1.13)(prettier@3.2.5)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@storybook/csf-tools': 8.1.4 - '@storybook/node-logger': 8.1.4 - '@storybook/telemetry': 8.1.4(encoding@0.1.13)(prettier@3.2.5) - '@storybook/types': 8.1.4 - '@types/semver': 7.5.0 - '@yarnpkg/fslib': 2.10.3 - '@yarnpkg/libzip': 2.3.0 - chalk: 4.1.2 - commander: 6.2.1 - cross-spawn: 7.0.3 - detect-indent: 6.1.0 - envinfo: 7.8.1 - execa: 5.1.1 - find-up: 5.0.0 - fs-extra: 11.1.1 - get-npm-tarball-url: 2.0.3 - giget: 1.0.0 - globby: 14.0.1 - jscodeshift: 0.15.2(@babel/preset-env@7.24.6(@babel/core@7.24.6)) - leven: 3.1.0 - ora: 5.4.1 - prettier: 3.2.5 - prompts: 2.4.2 - read-pkg-up: 7.0.1 - semver: 7.6.0 - strip-json-comments: 3.1.1 - tempy: 1.0.1 - tiny-invariant: 1.3.3 - ts-dedent: 2.2.0 - transitivePeerDependencies: - - '@babel/preset-env' - - bufferutil - - encoding - - react - - react-dom - - supports-color - - utf-8-validate - - '@storybook/client-logger@8.1.4': - dependencies: - '@storybook/global': 5.0.0 - - '@storybook/codemod@8.1.4': - dependencies: - '@babel/core': 7.24.6 - '@babel/preset-env': 7.24.6(@babel/core@7.24.6) - '@babel/types': 7.24.0 - '@storybook/csf': 0.1.7 - '@storybook/csf-tools': 8.1.4 - '@storybook/node-logger': 8.1.4 - '@storybook/types': 8.1.4 - '@types/cross-spawn': 6.0.2 - cross-spawn: 7.0.3 - globby: 14.0.1 - jscodeshift: 0.15.2(@babel/preset-env@7.24.6(@babel/core@7.24.6)) - lodash: 4.17.21 - prettier: 3.2.5 - recast: 0.23.6 - tiny-invariant: 1.3.3 + typescript: 5.6.2 transitivePeerDependencies: - supports-color - '@storybook/components@8.1.4(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + '@storybook/components@8.3.5(storybook@8.3.5)': dependencies: - '@radix-ui/react-dialog': 1.0.5(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-slot': 1.0.2(@types/react@18.0.27)(react@18.2.0) - '@storybook/client-logger': 8.1.4 - '@storybook/csf': 0.1.7 - '@storybook/global': 5.0.0 - '@storybook/icons': 1.2.9(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@storybook/theming': 8.1.4(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@storybook/types': 8.1.4 - memoizerific: 1.11.3 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - util-deprecate: 1.0.2 - transitivePeerDependencies: - - '@types/react' - - '@types/react-dom' + storybook: 8.3.5 - '@storybook/core-common@8.1.4(encoding@0.1.13)(prettier@3.2.5)': + '@storybook/core@8.3.5': dependencies: - '@storybook/core-events': 8.1.4 - '@storybook/csf-tools': 8.1.4 - '@storybook/node-logger': 8.1.4 - '@storybook/types': 8.1.4 - '@yarnpkg/fslib': 2.10.3 - '@yarnpkg/libzip': 2.3.0 - chalk: 4.1.2 - cross-spawn: 7.0.3 - esbuild: 0.20.2 - esbuild-register: 3.5.0(esbuild@0.20.2) - execa: 5.1.1 - file-system-cache: 2.3.0 - find-cache-dir: 3.3.2 - find-up: 5.0.0 - fs-extra: 11.1.1 - glob: 10.3.10 - handlebars: 4.7.8 - lazy-universal-dotenv: 4.0.0 - node-fetch: 2.7.0(encoding@0.1.13) - picomatch: 2.3.1 - pkg-dir: 5.0.0 - prettier-fallback: prettier@3.2.5 - pretty-hrtime: 1.0.3 - resolve-from: 5.0.0 - semver: 7.6.0 - tempy: 1.0.1 - tiny-invariant: 1.3.3 - ts-dedent: 2.2.0 - util: 0.12.5 - optionalDependencies: - prettier: 3.2.5 - transitivePeerDependencies: - - encoding - - supports-color - - '@storybook/core-events@8.1.4': - dependencies: - '@storybook/csf': 0.1.7 - ts-dedent: 2.2.0 - - '@storybook/core-server@8.1.4(encoding@0.1.13)(prettier@3.2.5)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@aw-web-design/x-default-browser': 1.4.126 - '@babel/core': 7.24.6 - '@babel/parser': 7.24.6 - '@discoveryjs/json-ext': 0.5.7 - '@storybook/builder-manager': 8.1.4(encoding@0.1.13)(prettier@3.2.5) - '@storybook/channels': 8.1.4 - '@storybook/core-common': 8.1.4(encoding@0.1.13)(prettier@3.2.5) - '@storybook/core-events': 8.1.4 - '@storybook/csf': 0.1.7 - '@storybook/csf-tools': 8.1.4 - '@storybook/docs-mdx': 3.1.0-next.0 - '@storybook/global': 5.0.0 - '@storybook/manager': 8.1.4 - '@storybook/manager-api': 8.1.4(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@storybook/node-logger': 8.1.4 - '@storybook/preview-api': 8.1.4 - '@storybook/telemetry': 8.1.4(encoding@0.1.13)(prettier@3.2.5) - '@storybook/types': 8.1.4 - '@types/detect-port': 1.3.2 - '@types/diff': 5.2.1 - '@types/node': 18.16.16 - '@types/pretty-hrtime': 1.0.1 - '@types/semver': 7.5.0 + '@storybook/csf': 0.1.11 + '@types/express': 4.17.21 better-opn: 3.0.2 - chalk: 4.1.2 - cli-table3: 0.6.3 - compression: 1.7.4 - detect-port: 1.5.1 - diff: 5.2.0 - express: 4.19.2 - fs-extra: 11.1.1 - globby: 14.0.1 - ip: 2.0.1 - lodash: 4.17.21 - open: 8.4.0 - pretty-hrtime: 1.0.3 - prompts: 2.4.2 - read-pkg-up: 7.0.1 + browser-assert: 1.2.1 + esbuild: 0.24.0 + esbuild-register: 3.5.0(esbuild@0.24.0) + express: 4.21.1 + jsdoc-type-pratt-parser: 4.1.0 + process: 0.11.10 + recast: 0.23.6 semver: 7.6.0 - telejson: 7.2.0 - tiny-invariant: 1.3.3 - ts-dedent: 2.2.0 util: 0.12.5 - util-deprecate: 1.0.2 - watchpack: 2.4.0 ws: 8.17.1 transitivePeerDependencies: - bufferutil - - encoding - - prettier - - react - - react-dom - supports-color - utf-8-validate - '@storybook/csf-plugin@8.1.4': + '@storybook/csf-plugin@8.3.5(storybook@8.3.5)': dependencies: - '@storybook/csf-tools': 8.1.4 - unplugin: 1.5.1 - transitivePeerDependencies: - - supports-color + storybook: 8.3.5 + unplugin: 1.11.0 - '@storybook/csf-tools@8.1.4': - dependencies: - '@babel/generator': 7.24.6 - '@babel/parser': 7.24.6 - '@babel/traverse': 7.24.6 - '@babel/types': 7.24.0 - '@storybook/csf': 0.1.7 - '@storybook/types': 8.1.4 - fs-extra: 11.1.1 - recast: 0.23.6 - ts-dedent: 2.2.0 - transitivePeerDependencies: - - supports-color - - '@storybook/csf@0.1.7': + '@storybook/csf@0.1.11': dependencies: type-fest: 2.19.0 - '@storybook/docs-mdx@3.1.0-next.0': {} - - '@storybook/docs-tools@8.1.4(encoding@0.1.13)(prettier@3.2.5)': - dependencies: - '@storybook/core-common': 8.1.4(encoding@0.1.13)(prettier@3.2.5) - '@storybook/core-events': 8.1.4 - '@storybook/preview-api': 8.1.4 - '@storybook/types': 8.1.4 - '@types/doctrine': 0.0.3 - assert: 2.1.0 - doctrine: 3.0.0 - lodash: 4.17.21 - transitivePeerDependencies: - - encoding - - prettier - - supports-color - '@storybook/global@5.0.0': {} - '@storybook/icons@1.2.9(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + '@storybook/icons@1.2.10(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - '@storybook/instrumenter@8.1.4': + '@storybook/instrumenter@8.3.5(storybook@8.3.5)': dependencies: - '@storybook/channels': 8.1.4 - '@storybook/client-logger': 8.1.4 - '@storybook/core-events': 8.1.4 '@storybook/global': 5.0.0 - '@storybook/preview-api': 8.1.4 - '@vitest/utils': 1.3.1 + '@vitest/utils': 2.1.2 + storybook: 8.3.5 util: 0.12.5 - '@storybook/manager-api@8.1.4(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + '@storybook/manager-api@8.3.5(storybook@8.3.5)': dependencies: - '@storybook/channels': 8.1.4 - '@storybook/client-logger': 8.1.4 - '@storybook/core-events': 8.1.4 - '@storybook/csf': 0.1.7 - '@storybook/global': 5.0.0 - '@storybook/icons': 1.2.9(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@storybook/router': 8.1.4 - '@storybook/theming': 8.1.4(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@storybook/types': 8.1.4 - dequal: 2.0.3 - lodash: 4.17.21 - memoizerific: 1.11.3 - store2: 2.14.2 - telejson: 7.2.0 - ts-dedent: 2.2.0 - transitivePeerDependencies: - - react - - react-dom + storybook: 8.3.5 - '@storybook/manager@8.1.4': {} - - '@storybook/node-logger@8.1.4': {} - - '@storybook/preview-api@8.1.4': + '@storybook/preview-api@8.3.5(storybook@8.3.5)': dependencies: - '@storybook/channels': 8.1.4 - '@storybook/client-logger': 8.1.4 - '@storybook/core-events': 8.1.4 - '@storybook/csf': 0.1.7 - '@storybook/global': 5.0.0 - '@storybook/types': 8.1.4 - '@types/qs': 6.9.7 - dequal: 2.0.3 - lodash: 4.17.21 - memoizerific: 1.11.3 - qs: 6.11.0 - tiny-invariant: 1.3.3 - ts-dedent: 2.2.0 - util-deprecate: 1.0.2 + storybook: 8.3.5 - '@storybook/preview@8.1.4': {} - - '@storybook/react-dom-shim@8.1.4(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + '@storybook/react-dom-shim@8.3.5(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(storybook@8.3.5)': dependencies: react: 18.2.0 react-dom: 18.2.0(react@18.2.0) + storybook: 8.3.5 - '@storybook/router@8.1.4': + '@storybook/test@8.3.5(storybook@8.3.5)': dependencies: - '@storybook/client-logger': 8.1.4 - memoizerific: 1.11.3 - qs: 6.11.0 - - '@storybook/telemetry@8.1.4(encoding@0.1.13)(prettier@3.2.5)': - dependencies: - '@storybook/client-logger': 8.1.4 - '@storybook/core-common': 8.1.4(encoding@0.1.13)(prettier@3.2.5) - '@storybook/csf-tools': 8.1.4 - chalk: 4.1.2 - detect-package-manager: 2.0.1 - fetch-retry: 5.0.3 - fs-extra: 11.1.1 - read-pkg-up: 7.0.1 - transitivePeerDependencies: - - encoding - - prettier - - supports-color - - '@storybook/test@8.1.4(@jest/globals@29.6.2)(@types/jest@29.5.3)(jest@29.6.2(@types/node@18.16.16))(vitest@1.6.0(@types/node@18.16.16)(jsdom@23.0.1)(sass@1.64.1)(terser@5.16.1))': - dependencies: - '@storybook/client-logger': 8.1.4 - '@storybook/core-events': 8.1.4 - '@storybook/instrumenter': 8.1.4 - '@storybook/preview-api': 8.1.4 - '@testing-library/dom': 9.3.4 - '@testing-library/jest-dom': 6.4.2(@jest/globals@29.6.2)(@types/jest@29.5.3)(jest@29.6.2(@types/node@18.16.16))(vitest@1.6.0(@types/node@18.16.16)(jsdom@23.0.1)(sass@1.64.1)(terser@5.16.1)) - '@testing-library/user-event': 14.5.2(@testing-library/dom@9.3.4) - '@vitest/expect': 1.3.1 - '@vitest/spy': 1.3.1 + '@storybook/csf': 0.1.11 + '@storybook/global': 5.0.0 + '@storybook/instrumenter': 8.3.5(storybook@8.3.5) + '@testing-library/dom': 10.4.0 + '@testing-library/jest-dom': 6.5.0 + '@testing-library/user-event': 14.5.2(@testing-library/dom@10.4.0) + '@vitest/expect': 2.0.5 + '@vitest/spy': 2.0.5 + storybook: 8.3.5 util: 0.12.5 - transitivePeerDependencies: - - '@jest/globals' - - '@types/bun' - - '@types/jest' - - jest - - vitest - '@storybook/theming@8.1.4(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + '@storybook/theming@8.3.5(storybook@8.3.5)': dependencies: - '@emotion/use-insertion-effect-with-fallbacks': 1.0.1(react@18.2.0) - '@storybook/client-logger': 8.1.4 - '@storybook/global': 5.0.0 - memoizerific: 1.11.3 - optionalDependencies: - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + storybook: 8.3.5 - '@storybook/types@8.1.4': + '@storybook/vue3-vite@8.3.5(storybook@8.3.5)(vite@5.4.8(@types/node@18.16.16)(sass@1.64.1)(terser@5.16.1))(vue@3.5.11(typescript@5.6.2))': dependencies: - '@storybook/channels': 8.1.4 - '@types/express': 4.17.21 - file-system-cache: 2.3.0 - - '@storybook/vue3-vite@8.1.4(encoding@0.1.13)(prettier@3.2.5)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(vite@5.2.12(@types/node@18.16.16)(sass@1.64.1)(terser@5.16.1))(vue@3.4.21(typescript@5.5.2))': - dependencies: - '@storybook/builder-vite': 8.1.4(encoding@0.1.13)(prettier@3.2.5)(typescript@5.5.2)(vite@5.2.12(@types/node@18.16.16)(sass@1.64.1)(terser@5.16.1)) - '@storybook/core-server': 8.1.4(encoding@0.1.13)(prettier@3.2.5)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@storybook/types': 8.1.4 - '@storybook/vue3': 8.1.4(encoding@0.1.13)(prettier@3.2.5)(vue@3.4.21(typescript@5.5.2)) + '@storybook/builder-vite': 8.3.5(storybook@8.3.5)(typescript@5.6.2)(vite@5.4.8(@types/node@18.16.16)(sass@1.64.1)(terser@5.16.1)) + '@storybook/vue3': 8.3.5(storybook@8.3.5)(vue@3.5.11(typescript@5.6.2)) find-package-json: 1.2.0 - magic-string: 0.30.8 - typescript: 5.5.2 - vite: 5.2.12(@types/node@18.16.16)(sass@1.64.1)(terser@5.16.1) - vue-component-meta: 2.0.19(typescript@5.5.2) - vue-docgen-api: 4.76.0(vue@3.4.21(typescript@5.5.2)) + magic-string: 0.30.11 + storybook: 8.3.5 + typescript: 5.6.2 + vite: 5.4.8(@types/node@18.16.16)(sass@1.64.1)(terser@5.16.1) + vue-component-meta: 2.1.6(typescript@5.6.2) + vue-docgen-api: 4.76.0(vue@3.5.11(typescript@5.6.2)) transitivePeerDependencies: - '@preact/preset-vite' - - bufferutil - - encoding - - prettier - - react - - react-dom - supports-color - - utf-8-validate - vite-plugin-glimmerx - vue - '@storybook/vue3@8.1.4(encoding@0.1.13)(prettier@3.2.5)(vue@3.4.21(typescript@5.5.2))': + '@storybook/vue3@8.3.5(storybook@8.3.5)(vue@3.5.11(typescript@5.6.2))': dependencies: - '@storybook/docs-tools': 8.1.4(encoding@0.1.13)(prettier@3.2.5) + '@storybook/components': 8.3.5(storybook@8.3.5) '@storybook/global': 5.0.0 - '@storybook/preview-api': 8.1.4 - '@storybook/types': 8.1.4 - '@vue/compiler-core': 3.4.21 - lodash: 4.17.21 + '@storybook/manager-api': 8.3.5(storybook@8.3.5) + '@storybook/preview-api': 8.3.5(storybook@8.3.5) + '@storybook/theming': 8.3.5(storybook@8.3.5) + '@vue/compiler-core': 3.5.11 + storybook: 8.3.5 ts-dedent: 2.2.0 type-fest: 2.19.0 - vue: 3.4.21(typescript@5.5.2) - vue-component-type-helpers: 2.0.22 - transitivePeerDependencies: - - encoding - - prettier - - supports-color + vue: 3.5.11(typescript@5.6.2) + vue-component-type-helpers: 2.1.6 - '@supabase/auth-js@2.64.2': + '@supabase/auth-js@2.65.0': dependencies: '@supabase/node-fetch': 2.6.15 - '@supabase/functions-js@2.3.1': + '@supabase/functions-js@2.4.1': dependencies: '@supabase/node-fetch': 2.6.15 @@ -19020,32 +16286,32 @@ snapshots: dependencies: whatwg-url: 5.0.0 - '@supabase/postgrest-js@1.15.2': + '@supabase/postgrest-js@1.16.1': dependencies: '@supabase/node-fetch': 2.6.15 - '@supabase/realtime-js@2.9.5': + '@supabase/realtime-js@2.10.2': dependencies: '@supabase/node-fetch': 2.6.15 '@types/phoenix': 1.6.4 - '@types/ws': 8.5.10 + '@types/ws': 8.5.12 ws: 8.17.1 transitivePeerDependencies: - bufferutil - utf-8-validate - '@supabase/storage-js@2.5.5': + '@supabase/storage-js@2.7.0': dependencies: '@supabase/node-fetch': 2.6.15 - '@supabase/supabase-js@2.43.4': + '@supabase/supabase-js@2.45.4': dependencies: - '@supabase/auth-js': 2.64.2 - '@supabase/functions-js': 2.3.1 + '@supabase/auth-js': 2.65.0 + '@supabase/functions-js': 2.4.1 '@supabase/node-fetch': 2.6.15 - '@supabase/postgrest-js': 1.15.2 - '@supabase/realtime-js': 2.9.5 - '@supabase/storage-js': 2.5.5 + '@supabase/postgrest-js': 1.16.1 + '@supabase/realtime-js': 2.10.2 + '@supabase/storage-js': 2.7.0 transitivePeerDependencies: - bufferutil - utf-8-validate @@ -19064,10 +16330,21 @@ snapshots: '@tediousjs/connection-string@0.5.0': {} + '@testing-library/dom@10.4.0': + dependencies: + '@babel/code-frame': 7.24.6 + '@babel/runtime': 7.24.7 + '@types/aria-query': 5.0.1 + aria-query: 5.3.0 + chalk: 4.1.2 + dom-accessibility-api: 0.5.15 + lz-string: 1.5.0 + pretty-format: 27.5.1 + '@testing-library/dom@9.3.3': dependencies: - '@babel/code-frame': 7.22.5 - '@babel/runtime': 7.23.6 + '@babel/code-frame': 7.24.6 + '@babel/runtime': 7.24.7 '@types/aria-query': 5.0.1 aria-query: 5.1.3 chalk: 4.1.2 @@ -19075,66 +16352,28 @@ snapshots: lz-string: 1.5.0 pretty-format: 27.5.1 - '@testing-library/dom@9.3.4': + '@testing-library/jest-dom@6.5.0': dependencies: - '@babel/code-frame': 7.23.5 - '@babel/runtime': 7.23.6 - '@types/aria-query': 5.0.1 - aria-query: 5.1.3 - chalk: 4.1.2 - dom-accessibility-api: 0.5.15 - lz-string: 1.5.0 - pretty-format: 27.5.1 - - '@testing-library/jest-dom@6.1.5(@jest/globals@29.6.2)(@types/jest@29.5.3)(jest@29.6.2(@types/node@18.16.16))(vitest@1.6.0(@types/node@18.16.16)(jsdom@23.0.1)(sass@1.64.1)(terser@5.16.1))': - dependencies: - '@adobe/css-tools': 4.3.2 - '@babel/runtime': 7.22.6 - aria-query: 5.1.3 - chalk: 3.0.0 - css.escape: 1.5.1 - dom-accessibility-api: 0.5.15 - lodash: 4.17.21 - redent: 3.0.0 - optionalDependencies: - '@jest/globals': 29.6.2 - '@types/jest': 29.5.3 - jest: 29.6.2(@types/node@18.16.16) - vitest: 1.6.0(@types/node@18.16.16)(jsdom@23.0.1)(sass@1.64.1)(terser@5.16.1) - - '@testing-library/jest-dom@6.4.2(@jest/globals@29.6.2)(@types/jest@29.5.3)(jest@29.6.2(@types/node@18.16.16))(vitest@1.6.0(@types/node@18.16.16)(jsdom@23.0.1)(sass@1.64.1)(terser@5.16.1))': - dependencies: - '@adobe/css-tools': 4.3.2 - '@babel/runtime': 7.23.6 - aria-query: 5.1.3 + '@adobe/css-tools': 4.4.0 + aria-query: 5.3.0 chalk: 3.0.0 css.escape: 1.5.1 dom-accessibility-api: 0.6.3 lodash: 4.17.21 redent: 3.0.0 - optionalDependencies: - '@jest/globals': 29.6.2 - '@types/jest': 29.5.3 - jest: 29.6.2(@types/node@18.16.16) - vitest: 1.6.0(@types/node@18.16.16)(jsdom@23.0.1)(sass@1.64.1)(terser@5.16.1) - '@testing-library/user-event@14.5.1(@testing-library/dom@9.3.4)': + '@testing-library/user-event@14.5.2(@testing-library/dom@10.4.0)': dependencies: - '@testing-library/dom': 9.3.4 + '@testing-library/dom': 10.4.0 - '@testing-library/user-event@14.5.2(@testing-library/dom@9.3.4)': + '@testing-library/vue@8.1.0(@vue/compiler-sfc@3.5.11)(vue@3.5.11(typescript@5.6.2))': dependencies: - '@testing-library/dom': 9.3.4 - - '@testing-library/vue@8.0.1(@vue/compiler-sfc@3.4.21)(@vue/server-renderer@3.4.21(vue@3.4.21(typescript@5.5.2)))(vue@3.4.21(typescript@5.5.2))': - dependencies: - '@babel/runtime': 7.23.6 + '@babel/runtime': 7.24.7 '@testing-library/dom': 9.3.3 - '@vue/compiler-sfc': 3.4.21 - '@vue/test-utils': 2.4.3(@vue/server-renderer@3.4.21(vue@3.4.21(typescript@5.5.2)))(vue@3.4.21(typescript@5.5.2)) - vue: 3.4.21(typescript@5.5.2) - transitivePeerDependencies: - - '@vue/server-renderer' + '@vue/test-utils': 2.4.6 + vue: 3.5.11(typescript@5.6.2) + optionalDependencies: + '@vue/compiler-sfc': 3.5.11 '@tokenizer/token@0.3.0': {} @@ -19143,9 +16382,17 @@ snapshots: '@tootallnate/once@2.0.0': {} - '@trysound/sax@0.2.0': {} + '@tsconfig/node10@1.0.11': + optional: true - '@tsconfig/node18@18.2.2': {} + '@tsconfig/node12@1.0.11': + optional: true + + '@tsconfig/node14@1.0.3': + optional: true + + '@tsconfig/node16@1.0.4': + optional: true '@types/amqplib@0.10.1': dependencies: @@ -19165,24 +16412,24 @@ snapshots: '@types/babel__core@7.20.0': dependencies: - '@babel/parser': 7.24.0 - '@babel/types': 7.24.0 + '@babel/parser': 7.25.6 + '@babel/types': 7.25.6 '@types/babel__generator': 7.6.4 '@types/babel__template': 7.4.1 '@types/babel__traverse': 7.18.2 '@types/babel__generator@7.6.4': dependencies: - '@babel/types': 7.24.0 + '@babel/types': 7.25.6 '@types/babel__template@7.4.1': dependencies: - '@babel/parser': 7.24.0 - '@babel/types': 7.24.0 + '@babel/parser': 7.25.6 + '@babel/types': 7.25.6 '@types/babel__traverse@7.18.2': dependencies: - '@babel/types': 7.24.0 + '@babel/types': 7.25.6 '@types/basic-auth@1.1.3': dependencies: @@ -19219,50 +16466,24 @@ snapshots: dependencies: '@types/node': 18.16.16 - '@types/cookie-parser@1.4.3': + '@types/cookie-parser@1.4.7': dependencies: '@types/express': 4.17.21 '@types/cookiejar@2.1.5': {} - '@types/cron@1.7.3': - dependencies: - '@types/node': 18.16.16 - moment: 2.29.4 - - '@types/cross-spawn@6.0.2': - dependencies: - '@types/node': 18.16.16 - '@types/dateformat@3.0.1': {} '@types/deep-equal@1.0.1': {} - '@types/detect-port@1.3.2': {} - - '@types/diff@5.2.1': {} - - '@types/doctrine@0.0.3': {} - - '@types/ejs@3.1.1': {} - - '@types/emscripten@1.39.7': {} - - '@types/eslint-scope@3.7.4': - dependencies: - '@types/eslint': 8.56.5 - '@types/estree': 1.0.5 - '@types/eslint@8.56.5': dependencies: '@types/estree': 1.0.0 '@types/json-schema': 7.0.15 - '@types/estree@0.0.51': {} - '@types/estree@1.0.0': {} - '@types/estree@1.0.5': {} + '@types/estree@1.0.6': {} '@types/eventsource@1.1.9': {} @@ -19284,10 +16505,18 @@ snapshots: '@types/find-cache-dir@3.2.1': {} + '@types/flat@5.0.5': {} + '@types/formidable@3.4.5': dependencies: '@types/node': 18.16.16 + '@types/fs-extra@11.0.4': + dependencies: + '@types/jsonfile': 6.1.4 + '@types/node': 18.16.16 + optional: true + '@types/ftp@0.3.33': dependencies: '@types/node': 18.16.16 @@ -19353,23 +16582,24 @@ snapshots: '@types/tough-cookie': 4.0.2 parse5: 7.1.2 - '@types/jsdom@21.1.6': - dependencies: - '@types/node': 18.16.16 - '@types/tough-cookie': 4.0.2 - parse5: 7.1.2 - '@types/json-diff@1.0.0': {} '@types/json-schema@7.0.15': {} + '@types/jsonfile@6.1.4': + dependencies: + '@types/node': 18.16.16 + optional: true + '@types/jsonpath@0.2.0': {} '@types/jsonwebtoken@9.0.6': dependencies: '@types/node': 18.16.16 - '@types/linkify-it@3.0.2': {} + '@types/k6@0.52.0': {} + + '@types/linkify-it@3.0.5': {} '@types/lodash-es@4.17.6': dependencies: @@ -19383,27 +16613,29 @@ snapshots: '@types/luxon@3.2.0': {} + '@types/luxon@3.4.2': {} + '@types/mailparser@3.4.4': dependencies: '@types/node': 18.16.16 iconv-lite: 0.6.3 - '@types/markdown-it-emoji@2.0.2': + '@types/markdown-it-emoji@2.0.5': dependencies: - '@types/markdown-it': 12.2.3 + '@types/markdown-it': 13.0.9 - '@types/markdown-it-link-attributes@3.0.1': + '@types/markdown-it-link-attributes@3.0.5': dependencies: - '@types/markdown-it': 12.2.3 + '@types/markdown-it': 13.0.9 - '@types/markdown-it@12.2.3': + '@types/markdown-it@13.0.9': dependencies: - '@types/linkify-it': 3.0.2 - '@types/mdurl': 1.0.2 + '@types/linkify-it': 3.0.5 + '@types/mdurl': 1.0.5 '@types/md5@2.3.5': {} - '@types/mdurl@1.0.2': {} + '@types/mdurl@1.0.5': {} '@types/mdx@2.0.3': {} @@ -19423,7 +16655,7 @@ snapshots: '@types/tedious': 4.0.9 tarn: 3.0.2 - '@types/multer@1.4.7': + '@types/multer@1.4.12': dependencies: '@types/express': 4.17.21 @@ -19432,12 +16664,6 @@ snapshots: '@types/node': 18.16.16 form-data: 3.0.1 - '@types/node-ssh@7.0.1': - dependencies: - '@types/node': 18.16.16 - '@types/ssh2': 1.11.6 - '@types/ssh2-streams': 0.1.9 - '@types/node@18.16.16': {} '@types/nodemailer@6.4.14': @@ -19446,9 +16672,13 @@ snapshots: '@types/normalize-package-data@2.4.1': {} - '@types/phoenix@1.6.4': {} + '@types/pg@8.11.6': + dependencies: + '@types/node': 18.16.16 + pg-protocol: 1.6.1 + pg-types: 4.0.2 - '@types/pretty-hrtime@1.0.1': {} + '@types/phoenix@1.6.4': {} '@types/promise-ftp-common@1.1.0': {} @@ -19489,8 +16719,6 @@ snapshots: '@types/tough-cookie': 4.0.2 form-data: 2.5.1 - '@types/resolve@1.20.2': {} - '@types/retry@0.12.0': {} '@types/retry@0.12.5': {} @@ -19526,7 +16754,7 @@ snapshots: '@types/sizzle@2.3.3': {} - '@types/snowflake-sdk@1.6.20': + '@types/snowflake-sdk@1.6.24': dependencies: '@types/node': 18.16.16 generic-pool: 3.9.0 @@ -19535,10 +16763,6 @@ snapshots: dependencies: '@types/ssh2': 1.11.6 - '@types/ssh2-streams@0.1.9': - dependencies: - '@types/node': 18.16.16 - '@types/ssh2@1.11.6': dependencies: '@types/node': 18.16.16 @@ -19584,10 +16808,10 @@ snapshots: dependencies: '@types/node': 18.16.16 - '@types/tmp@0.2.3': {} - '@types/tough-cookie@4.0.2': {} + '@types/triple-beam@1.3.5': {} + '@types/tunnel@0.0.3': dependencies: '@types/node': 18.16.16 @@ -19600,9 +16824,11 @@ snapshots: dependencies: '@types/node': 18.16.16 + '@types/uuid@10.0.0': {} + '@types/uuid@8.3.4': {} - '@types/uuid@9.0.7': {} + '@types/uuid@9.0.8': {} '@types/validator@13.7.10': {} @@ -19610,7 +16836,7 @@ snapshots: '@types/web-bluetooth@0.0.16': {} - '@types/web-bluetooth@0.0.18': {} + '@types/web-bluetooth@0.0.20': {} '@types/webidl-conversions@7.0.0': {} @@ -19618,7 +16844,7 @@ snapshots: dependencies: '@types/webidl-conversions': 7.0.0 - '@types/ws@8.5.10': + '@types/ws@8.5.12': dependencies: '@types/node': 18.16.16 @@ -19643,125 +16869,126 @@ snapshots: '@types/node': 18.16.16 optional: true - '@typescript-eslint/eslint-plugin@7.2.0(@typescript-eslint/parser@7.2.0(eslint@8.57.0)(typescript@5.5.2))(eslint@8.57.0)(typescript@5.5.2)': + '@typescript-eslint/eslint-plugin@7.2.0(@typescript-eslint/parser@7.2.0(eslint@8.57.0)(typescript@5.6.2))(eslint@8.57.0)(typescript@5.6.2)': dependencies: '@eslint-community/regexpp': 4.6.2 - '@typescript-eslint/parser': 7.2.0(eslint@8.57.0)(typescript@5.5.2) + '@typescript-eslint/parser': 7.2.0(eslint@8.57.0)(typescript@5.6.2) '@typescript-eslint/scope-manager': 7.2.0 - '@typescript-eslint/type-utils': 7.2.0(eslint@8.57.0)(typescript@5.5.2) - '@typescript-eslint/utils': 7.2.0(eslint@8.57.0)(typescript@5.5.2) + '@typescript-eslint/type-utils': 7.2.0(eslint@8.57.0)(typescript@5.6.2) + '@typescript-eslint/utils': 7.2.0(eslint@8.57.0)(typescript@5.6.2) '@typescript-eslint/visitor-keys': 7.2.0 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 eslint: 8.57.0 graphemer: 1.4.0 ignore: 5.2.4 natural-compare: 1.4.0 semver: 7.6.0 - ts-api-utils: 1.0.1(typescript@5.5.2) + ts-api-utils: 1.0.1(typescript@5.6.2) optionalDependencies: - typescript: 5.5.2 + typescript: 5.6.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@7.2.0(eslint@8.57.0)(typescript@5.5.2)': + '@typescript-eslint/parser@7.2.0(eslint@8.57.0)(typescript@5.6.2)': dependencies: '@typescript-eslint/scope-manager': 7.2.0 '@typescript-eslint/types': 7.2.0 - '@typescript-eslint/typescript-estree': 7.2.0(typescript@5.5.2) + '@typescript-eslint/typescript-estree': 7.2.0(typescript@5.6.2) '@typescript-eslint/visitor-keys': 7.2.0 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 eslint: 8.57.0 optionalDependencies: - typescript: 5.5.2 + typescript: 5.6.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@6.7.5': + '@typescript-eslint/scope-manager@6.21.0': dependencies: - '@typescript-eslint/types': 6.7.5 - '@typescript-eslint/visitor-keys': 6.7.5 + '@typescript-eslint/types': 6.21.0 + '@typescript-eslint/visitor-keys': 6.21.0 '@typescript-eslint/scope-manager@7.2.0': dependencies: '@typescript-eslint/types': 7.2.0 '@typescript-eslint/visitor-keys': 7.2.0 - '@typescript-eslint/type-utils@7.2.0(eslint@8.57.0)(typescript@5.5.2)': + '@typescript-eslint/type-utils@7.2.0(eslint@8.57.0)(typescript@5.6.2)': dependencies: - '@typescript-eslint/typescript-estree': 7.2.0(typescript@5.5.2) - '@typescript-eslint/utils': 7.2.0(eslint@8.57.0)(typescript@5.5.2) - debug: 4.3.4(supports-color@8.1.1) + '@typescript-eslint/typescript-estree': 7.2.0(typescript@5.6.2) + '@typescript-eslint/utils': 7.2.0(eslint@8.57.0)(typescript@5.6.2) + debug: 4.3.7 eslint: 8.57.0 - ts-api-utils: 1.0.1(typescript@5.5.2) + ts-api-utils: 1.0.1(typescript@5.6.2) optionalDependencies: - typescript: 5.5.2 + typescript: 5.6.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/types@6.7.5': {} + '@typescript-eslint/types@6.21.0': {} '@typescript-eslint/types@7.2.0': {} - '@typescript-eslint/typescript-estree@6.7.5(typescript@5.5.2)': + '@typescript-eslint/typescript-estree@6.21.0(typescript@5.6.2)': dependencies: - '@typescript-eslint/types': 6.7.5 - '@typescript-eslint/visitor-keys': 6.7.5 - debug: 4.3.4(supports-color@8.1.1) - globby: 11.1.0 - is-glob: 4.0.3 - semver: 7.6.0 - ts-api-utils: 1.0.1(typescript@5.5.2) - optionalDependencies: - typescript: 5.5.2 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/typescript-estree@7.2.0(typescript@5.5.2)': - dependencies: - '@typescript-eslint/types': 7.2.0 - '@typescript-eslint/visitor-keys': 7.2.0 - debug: 4.3.4(supports-color@8.1.1) + '@typescript-eslint/types': 6.21.0 + '@typescript-eslint/visitor-keys': 6.21.0 + debug: 4.3.7 globby: 11.1.0 is-glob: 4.0.3 minimatch: 9.0.3 semver: 7.6.0 - ts-api-utils: 1.0.1(typescript@5.5.2) + ts-api-utils: 1.0.1(typescript@5.6.2) optionalDependencies: - typescript: 5.5.2 + typescript: 5.6.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@6.7.5(eslint@8.57.0)(typescript@5.5.2)': + '@typescript-eslint/typescript-estree@7.2.0(typescript@5.6.2)': + dependencies: + '@typescript-eslint/types': 7.2.0 + '@typescript-eslint/visitor-keys': 7.2.0 + debug: 4.3.7 + globby: 11.1.0 + is-glob: 4.0.3 + minimatch: 9.0.3 + semver: 7.6.0 + ts-api-utils: 1.0.1(typescript@5.6.2) + optionalDependencies: + typescript: 5.6.2 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/utils@6.21.0(eslint@8.57.0)(typescript@5.6.2)': dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) '@types/json-schema': 7.0.15 '@types/semver': 7.5.0 - '@typescript-eslint/scope-manager': 6.7.5 - '@typescript-eslint/types': 6.7.5 - '@typescript-eslint/typescript-estree': 6.7.5(typescript@5.5.2) + '@typescript-eslint/scope-manager': 6.21.0 + '@typescript-eslint/types': 6.21.0 + '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.6.2) eslint: 8.57.0 semver: 7.6.0 transitivePeerDependencies: - supports-color - typescript - '@typescript-eslint/utils@7.2.0(eslint@8.57.0)(typescript@5.5.2)': + '@typescript-eslint/utils@7.2.0(eslint@8.57.0)(typescript@5.6.2)': dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) '@types/json-schema': 7.0.15 '@types/semver': 7.5.0 '@typescript-eslint/scope-manager': 7.2.0 '@typescript-eslint/types': 7.2.0 - '@typescript-eslint/typescript-estree': 7.2.0(typescript@5.5.2) + '@typescript-eslint/typescript-estree': 7.2.0(typescript@5.6.2) eslint: 8.57.0 semver: 7.6.0 transitivePeerDependencies: - supports-color - typescript - '@typescript-eslint/visitor-keys@6.7.5': + '@typescript-eslint/visitor-keys@6.21.0': dependencies: - '@typescript-eslint/types': 6.7.5 + '@typescript-eslint/types': 6.21.0 eslint-visitor-keys: 3.4.3 '@typescript-eslint/visitor-keys@7.2.0': @@ -19771,395 +16998,285 @@ snapshots: '@ungap/structured-clone@1.2.0': {} - '@vitejs/plugin-vue@5.0.4(vite@5.2.12(@types/node@18.16.16)(sass@1.64.1)(terser@5.16.1))(vue@3.4.21(typescript@5.5.2))': + '@vitejs/plugin-vue@5.1.4(vite@5.4.8(@types/node@18.16.16)(sass@1.64.1)(terser@5.16.1))(vue@3.5.11(typescript@5.6.2))': dependencies: - vite: 5.2.12(@types/node@18.16.16)(sass@1.64.1)(terser@5.16.1) - vue: 3.4.21(typescript@5.5.2) + vite: 5.4.8(@types/node@18.16.16)(sass@1.64.1)(terser@5.16.1) + vue: 3.5.11(typescript@5.6.2) - '@vitest/coverage-v8@1.6.0(vitest@1.6.0(@types/node@18.16.16)(jsdom@23.0.1)(sass@1.64.1)(terser@5.16.1))': + '@vitest/coverage-v8@2.1.2(vitest@2.1.2(@types/node@18.16.16)(jsdom@23.0.1)(sass@1.64.1)(terser@5.16.1))': dependencies: - '@ampproject/remapping': 2.2.1 + '@ampproject/remapping': 2.3.0 '@bcoe/v8-coverage': 0.2.3 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.7 istanbul-lib-coverage: 3.2.2 istanbul-lib-report: 3.0.1 - istanbul-lib-source-maps: 5.0.4 - istanbul-reports: 3.1.6 - magic-string: 0.30.8 - magicast: 0.3.3 - picocolors: 1.0.0 - std-env: 3.6.0 - strip-literal: 2.0.0 - test-exclude: 6.0.0 - vitest: 1.6.0(@types/node@18.16.16)(jsdom@23.0.1)(sass@1.64.1)(terser@5.16.1) + istanbul-lib-source-maps: 5.0.6 + istanbul-reports: 3.1.7 + magic-string: 0.30.11 + magicast: 0.3.5 + std-env: 3.7.0 + test-exclude: 7.0.1 + tinyrainbow: 1.2.0 + vitest: 2.1.2(@types/node@18.16.16)(jsdom@23.0.1)(sass@1.64.1)(terser@5.16.1) transitivePeerDependencies: - supports-color - '@vitest/expect@1.3.1': + '@vitest/expect@2.0.5': dependencies: - '@vitest/spy': 1.3.1 - '@vitest/utils': 1.3.1 - chai: 4.3.10 + '@vitest/spy': 2.0.5 + '@vitest/utils': 2.0.5 + chai: 5.1.1 + tinyrainbow: 1.2.0 - '@vitest/expect@1.6.0': + '@vitest/expect@2.1.2': dependencies: - '@vitest/spy': 1.6.0 - '@vitest/utils': 1.6.0 - chai: 4.3.10 + '@vitest/spy': 2.1.2 + '@vitest/utils': 2.1.2 + chai: 5.1.1 + tinyrainbow: 1.2.0 - '@vitest/runner@1.6.0': + '@vitest/mocker@2.1.2(@vitest/spy@2.1.2)(vite@5.4.8(@types/node@18.16.16)(sass@1.64.1)(terser@5.16.1))': dependencies: - '@vitest/utils': 1.6.0 - p-limit: 5.0.0 - pathe: 1.1.1 - - '@vitest/snapshot@1.6.0': - dependencies: - magic-string: 0.30.8 - pathe: 1.1.1 - pretty-format: 29.7.0 - - '@vitest/spy@1.3.1': - dependencies: - tinyspy: 2.2.0 - - '@vitest/spy@1.6.0': - dependencies: - tinyspy: 2.2.0 - - '@vitest/utils@1.3.1': - dependencies: - diff-sequences: 29.6.3 + '@vitest/spy': 2.1.2 estree-walker: 3.0.3 - loupe: 2.3.7 - pretty-format: 29.7.0 + magic-string: 0.30.11 + optionalDependencies: + vite: 5.4.8(@types/node@18.16.16)(sass@1.64.1)(terser@5.16.1) - '@vitest/utils@1.6.0': + '@vitest/pretty-format@2.0.5': dependencies: - diff-sequences: 29.6.3 + tinyrainbow: 1.2.0 + + '@vitest/pretty-format@2.1.2': + dependencies: + tinyrainbow: 1.2.0 + + '@vitest/runner@2.1.2': + dependencies: + '@vitest/utils': 2.1.2 + pathe: 1.1.2 + + '@vitest/snapshot@2.1.2': + dependencies: + '@vitest/pretty-format': 2.1.2 + magic-string: 0.30.11 + pathe: 1.1.2 + + '@vitest/spy@2.0.5': + dependencies: + tinyspy: 3.0.2 + + '@vitest/spy@2.1.2': + dependencies: + tinyspy: 3.0.2 + + '@vitest/utils@2.0.5': + dependencies: + '@vitest/pretty-format': 2.0.5 estree-walker: 3.0.3 - loupe: 2.3.7 - pretty-format: 29.7.0 + loupe: 3.1.1 + tinyrainbow: 1.2.0 - '@volar/language-core@1.11.1': + '@vitest/utils@2.1.2': dependencies: - '@volar/source-map': 1.11.1 + '@vitest/pretty-format': 2.1.2 + loupe: 3.1.1 + tinyrainbow: 1.2.0 - '@volar/language-core@2.2.5': + '@volar/language-core@2.4.6': dependencies: - '@volar/source-map': 2.2.5 + '@volar/source-map': 2.4.6 - '@volar/source-map@1.11.1': - dependencies: - muggle-string: 0.3.1 + '@volar/source-map@2.4.6': {} - '@volar/source-map@2.2.5': + '@volar/typescript@2.4.6': dependencies: - muggle-string: 0.4.1 - - '@volar/typescript@1.11.1': - dependencies: - '@volar/language-core': 1.11.1 + '@volar/language-core': 2.4.6 path-browserify: 1.0.1 + vscode-uri: 3.0.8 - '@volar/typescript@2.2.5': + '@vue-flow/background@1.3.0(@vue-flow/core@1.41.2(vue@3.5.11(typescript@5.6.2)))(vue@3.5.11(typescript@5.6.2))': dependencies: - '@volar/language-core': 2.2.5 - path-browserify: 1.0.1 + '@vue-flow/core': 1.41.2(vue@3.5.11(typescript@5.6.2)) + vue: 3.5.11(typescript@5.6.2) - '@vue-flow/background@1.3.0(@vue-flow/core@1.33.5(vue@3.4.21(typescript@5.5.2)))(vue@3.4.21(typescript@5.5.2))': + '@vue-flow/controls@1.1.2(@vue-flow/core@1.41.2(vue@3.5.11(typescript@5.6.2)))(vue@3.5.11(typescript@5.6.2))': dependencies: - '@vue-flow/core': 1.33.5(vue@3.4.21(typescript@5.5.2)) - vue: 3.4.21(typescript@5.5.2) + '@vue-flow/core': 1.41.2(vue@3.5.11(typescript@5.6.2)) + vue: 3.5.11(typescript@5.6.2) - '@vue-flow/controls@1.1.1(@vue-flow/core@1.33.5(vue@3.4.21(typescript@5.5.2)))(vue@3.4.21(typescript@5.5.2))': + '@vue-flow/core@1.41.2(vue@3.5.11(typescript@5.6.2))': dependencies: - '@vue-flow/core': 1.33.5(vue@3.4.21(typescript@5.5.2)) - vue: 3.4.21(typescript@5.5.2) - - '@vue-flow/core@1.33.5(vue@3.4.21(typescript@5.5.2))': - dependencies: - '@vueuse/core': 10.5.0(vue@3.4.21(typescript@5.5.2)) + '@vueuse/core': 10.11.0(vue@3.5.11(typescript@5.6.2)) d3-drag: 3.0.0 d3-selection: 3.0.0 d3-zoom: 3.0.0 - vue: 3.4.21(typescript@5.5.2) + vue: 3.5.11(typescript@5.6.2) transitivePeerDependencies: - '@vue/composition-api' - '@vue-flow/minimap@1.4.0(@vue-flow/core@1.33.5(vue@3.4.21(typescript@5.5.2)))(vue@3.4.21(typescript@5.5.2))': + '@vue-flow/minimap@1.5.0(@vue-flow/core@1.41.2(vue@3.5.11(typescript@5.6.2)))(vue@3.5.11(typescript@5.6.2))': dependencies: - '@vue-flow/core': 1.33.5(vue@3.4.21(typescript@5.5.2)) + '@vue-flow/core': 1.41.2(vue@3.5.11(typescript@5.6.2)) d3-selection: 3.0.0 d3-zoom: 3.0.0 - vue: 3.4.21(typescript@5.5.2) + vue: 3.5.11(typescript@5.6.2) - '@vue-flow/node-toolbar@1.1.0(@vue-flow/core@1.33.5(vue@3.4.21(typescript@5.5.2)))': + '@vue-flow/node-resizer@1.4.0(@vue-flow/core@1.41.2(vue@3.5.11(typescript@5.6.2)))(vue@3.5.11(typescript@5.6.2))': dependencies: - '@vue-flow/core': 1.33.5(vue@3.4.21(typescript@5.5.2)) + '@vue-flow/core': 1.41.2(vue@3.5.11(typescript@5.6.2)) + d3-drag: 3.0.0 + d3-selection: 3.0.0 + vue: 3.5.11(typescript@5.6.2) - '@vue/compiler-core@3.4.21': + '@vue/compiler-core@3.5.11': dependencies: - '@babel/parser': 7.24.0 - '@vue/shared': 3.4.21 + '@babel/parser': 7.25.6 + '@vue/shared': 3.5.11 entities: 4.5.0 estree-walker: 2.0.2 - source-map-js: 1.2.0 + source-map-js: 1.2.1 - '@vue/compiler-dom@3.4.21': + '@vue/compiler-dom@3.5.11': dependencies: - '@vue/compiler-core': 3.4.21 - '@vue/shared': 3.4.21 + '@vue/compiler-core': 3.5.11 + '@vue/shared': 3.5.11 - '@vue/compiler-sfc@3.4.21': + '@vue/compiler-sfc@3.5.11': dependencies: - '@babel/parser': 7.24.0 - '@vue/compiler-core': 3.4.21 - '@vue/compiler-dom': 3.4.21 - '@vue/compiler-ssr': 3.4.21 - '@vue/shared': 3.4.21 + '@babel/parser': 7.25.6 + '@vue/compiler-core': 3.5.11 + '@vue/compiler-dom': 3.5.11 + '@vue/compiler-ssr': 3.5.11 + '@vue/shared': 3.5.11 estree-walker: 2.0.2 - magic-string: 0.30.8 - postcss: 8.4.38 - source-map-js: 1.0.2 + magic-string: 0.30.11 + postcss: 8.4.47 + source-map-js: 1.2.1 - '@vue/compiler-ssr@3.4.21': + '@vue/compiler-ssr@3.5.11': dependencies: - '@vue/compiler-dom': 3.4.21 - '@vue/shared': 3.4.21 + '@vue/compiler-dom': 3.5.11 + '@vue/shared': 3.5.11 + + '@vue/compiler-vue2@2.7.16': + dependencies: + de-indent: 1.0.2 + he: 1.2.0 '@vue/devtools-api@6.4.5': {} - '@vue/devtools-api@6.5.0': {} + '@vue/devtools-api@6.6.4': {} - '@vue/eslint-config-prettier@9.0.0(@types/eslint@8.56.5)(eslint@8.57.0)(prettier@3.2.5)': + '@vue/eslint-config-typescript@13.0.0(eslint-plugin-vue@9.23.0(eslint@8.57.0))(eslint@8.57.0)(typescript@5.6.2)': dependencies: - eslint: 8.57.0 - eslint-config-prettier: 9.1.0(eslint@8.57.0) - eslint-plugin-prettier: 5.1.3(@types/eslint@8.56.5)(eslint-config-prettier@9.1.0(eslint@8.57.0))(eslint@8.57.0)(prettier@3.2.5) - prettier: 3.2.5 - transitivePeerDependencies: - - '@types/eslint' - - '@vue/eslint-config-typescript@13.0.0(eslint-plugin-vue@9.23.0(eslint@8.57.0))(eslint@8.57.0)(typescript@5.5.2)': - dependencies: - '@typescript-eslint/eslint-plugin': 7.2.0(@typescript-eslint/parser@7.2.0(eslint@8.57.0)(typescript@5.5.2))(eslint@8.57.0)(typescript@5.5.2) - '@typescript-eslint/parser': 7.2.0(eslint@8.57.0)(typescript@5.5.2) + '@typescript-eslint/eslint-plugin': 7.2.0(@typescript-eslint/parser@7.2.0(eslint@8.57.0)(typescript@5.6.2))(eslint@8.57.0)(typescript@5.6.2) + '@typescript-eslint/parser': 7.2.0(eslint@8.57.0)(typescript@5.6.2) eslint: 8.57.0 eslint-plugin-vue: 9.23.0(eslint@8.57.0) vue-eslint-parser: 9.4.2(eslint@8.57.0) optionalDependencies: - typescript: 5.5.2 + typescript: 5.6.2 transitivePeerDependencies: - supports-color - '@vue/language-core@1.8.27(typescript@5.5.2)': + '@vue/language-core@2.1.6(typescript@5.6.2)': dependencies: - '@volar/language-core': 1.11.1 - '@volar/source-map': 1.11.1 - '@vue/compiler-dom': 3.4.21 - '@vue/shared': 3.4.21 + '@volar/language-core': 2.4.6 + '@vue/compiler-dom': 3.5.11 + '@vue/compiler-vue2': 2.7.16 + '@vue/shared': 3.5.11 computeds: 0.0.1 - minimatch: 9.0.4 - muggle-string: 0.3.1 + minimatch: 9.0.5 + muggle-string: 0.4.1 path-browserify: 1.0.1 - vue-template-compiler: 2.7.14 optionalDependencies: - typescript: 5.5.2 + typescript: 5.6.2 - '@vue/language-core@2.0.19(typescript@5.5.2)': + '@vue/reactivity@3.5.11': dependencies: - '@volar/language-core': 2.2.5 - '@vue/compiler-dom': 3.4.21 - '@vue/shared': 3.4.21 - computeds: 0.0.1 - minimatch: 9.0.4 - path-browserify: 1.0.1 - vue-template-compiler: 2.7.14 - optionalDependencies: - typescript: 5.5.2 + '@vue/shared': 3.5.11 - '@vue/reactivity@3.4.21': + '@vue/runtime-core@3.5.11': dependencies: - '@vue/shared': 3.4.21 + '@vue/reactivity': 3.5.11 + '@vue/shared': 3.5.11 - '@vue/runtime-core@3.4.21': + '@vue/runtime-dom@3.5.11': dependencies: - '@vue/reactivity': 3.4.21 - '@vue/shared': 3.4.21 - - '@vue/runtime-dom@3.4.21': - dependencies: - '@vue/runtime-core': 3.4.21 - '@vue/shared': 3.4.21 + '@vue/reactivity': 3.5.11 + '@vue/runtime-core': 3.5.11 + '@vue/shared': 3.5.11 csstype: 3.1.3 - '@vue/server-renderer@3.4.21(vue@3.4.21(typescript@5.5.2))': + '@vue/server-renderer@3.5.11(vue@3.5.11(typescript@5.6.2))': dependencies: - '@vue/compiler-ssr': 3.4.21 - '@vue/shared': 3.4.21 - vue: 3.4.21(typescript@5.5.2) + '@vue/compiler-ssr': 3.5.11 + '@vue/shared': 3.5.11 + vue: 3.5.11(typescript@5.6.2) - '@vue/shared@3.4.21': {} + '@vue/shared@3.5.11': {} - '@vue/test-utils@2.4.3(@vue/server-renderer@3.4.21(vue@3.4.21(typescript@5.5.2)))(vue@3.4.21(typescript@5.5.2))': + '@vue/test-utils@2.4.6': dependencies: js-beautify: 1.14.9 - vue: 3.4.21(typescript@5.5.2) - vue-component-type-helpers: 1.8.25 - optionalDependencies: - '@vue/server-renderer': 3.4.21(vue@3.4.21(typescript@5.5.2)) + vue-component-type-helpers: 2.1.6 - '@vue/tsconfig@0.5.1': {} - - '@vueuse/components@10.5.0(vue@3.4.21(typescript@5.5.2))': + '@vueuse/components@10.11.0(vue@3.5.11(typescript@5.6.2))': dependencies: - '@vueuse/core': 10.5.0(vue@3.4.21(typescript@5.5.2)) - '@vueuse/shared': 10.5.0(vue@3.4.21(typescript@5.5.2)) - vue-demi: 0.14.6(vue@3.4.21(typescript@5.5.2)) + '@vueuse/core': 10.11.0(vue@3.5.11(typescript@5.6.2)) + '@vueuse/shared': 10.11.0(vue@3.5.11(typescript@5.6.2)) + vue-demi: 0.14.10(vue@3.5.11(typescript@5.6.2)) transitivePeerDependencies: - '@vue/composition-api' - vue - '@vueuse/core@10.5.0(vue@3.4.21(typescript@5.5.2))': + '@vueuse/core@10.11.0(vue@3.5.11(typescript@5.6.2))': dependencies: - '@types/web-bluetooth': 0.0.18 - '@vueuse/metadata': 10.5.0 - '@vueuse/shared': 10.5.0(vue@3.4.21(typescript@5.5.2)) - vue-demi: 0.14.6(vue@3.4.21(typescript@5.5.2)) + '@types/web-bluetooth': 0.0.20 + '@vueuse/metadata': 10.11.0 + '@vueuse/shared': 10.11.0(vue@3.5.11(typescript@5.6.2)) + vue-demi: 0.14.10(vue@3.5.11(typescript@5.6.2)) transitivePeerDependencies: - '@vue/composition-api' - vue - '@vueuse/core@9.13.0(vue@3.4.21(typescript@5.5.2))': + '@vueuse/core@9.13.0(vue@3.5.11(typescript@5.6.2))': dependencies: '@types/web-bluetooth': 0.0.16 '@vueuse/metadata': 9.13.0 - '@vueuse/shared': 9.13.0(vue@3.4.21(typescript@5.5.2)) - vue-demi: 0.14.5(vue@3.4.21(typescript@5.5.2)) + '@vueuse/shared': 9.13.0(vue@3.5.11(typescript@5.6.2)) + vue-demi: 0.14.10(vue@3.5.11(typescript@5.6.2)) transitivePeerDependencies: - '@vue/composition-api' - vue - '@vueuse/metadata@10.5.0': {} + '@vueuse/metadata@10.11.0': {} '@vueuse/metadata@9.13.0': {} - '@vueuse/shared@10.5.0(vue@3.4.21(typescript@5.5.2))': + '@vueuse/shared@10.11.0(vue@3.5.11(typescript@5.6.2))': dependencies: - vue-demi: 0.14.6(vue@3.4.21(typescript@5.5.2)) + vue-demi: 0.14.10(vue@3.5.11(typescript@5.6.2)) transitivePeerDependencies: - '@vue/composition-api' - vue - '@vueuse/shared@9.13.0(vue@3.4.21(typescript@5.5.2))': + '@vueuse/shared@9.13.0(vue@3.5.11(typescript@5.6.2))': dependencies: - vue-demi: 0.14.5(vue@3.4.21(typescript@5.5.2)) + vue-demi: 0.14.10(vue@3.5.11(typescript@5.6.2)) transitivePeerDependencies: - '@vue/composition-api' - vue - '@webassemblyjs/ast@1.11.1': + '@vvo/tzdb@6.141.0': {} + + '@xata.io/client@0.28.4(typescript@5.6.2)': dependencies: - '@webassemblyjs/helper-numbers': 1.11.1 - '@webassemblyjs/helper-wasm-bytecode': 1.11.1 - - '@webassemblyjs/floating-point-hex-parser@1.11.1': {} - - '@webassemblyjs/helper-api-error@1.11.1': {} - - '@webassemblyjs/helper-buffer@1.11.1': {} - - '@webassemblyjs/helper-numbers@1.11.1': - dependencies: - '@webassemblyjs/floating-point-hex-parser': 1.11.1 - '@webassemblyjs/helper-api-error': 1.11.1 - '@xtuc/long': 4.2.2 - - '@webassemblyjs/helper-wasm-bytecode@1.11.1': {} - - '@webassemblyjs/helper-wasm-section@1.11.1': - dependencies: - '@webassemblyjs/ast': 1.11.1 - '@webassemblyjs/helper-buffer': 1.11.1 - '@webassemblyjs/helper-wasm-bytecode': 1.11.1 - '@webassemblyjs/wasm-gen': 1.11.1 - - '@webassemblyjs/ieee754@1.11.1': - dependencies: - '@xtuc/ieee754': 1.2.0 - - '@webassemblyjs/leb128@1.11.1': - dependencies: - '@xtuc/long': 4.2.2 - - '@webassemblyjs/utf8@1.11.1': {} - - '@webassemblyjs/wasm-edit@1.11.1': - dependencies: - '@webassemblyjs/ast': 1.11.1 - '@webassemblyjs/helper-buffer': 1.11.1 - '@webassemblyjs/helper-wasm-bytecode': 1.11.1 - '@webassemblyjs/helper-wasm-section': 1.11.1 - '@webassemblyjs/wasm-gen': 1.11.1 - '@webassemblyjs/wasm-opt': 1.11.1 - '@webassemblyjs/wasm-parser': 1.11.1 - '@webassemblyjs/wast-printer': 1.11.1 - - '@webassemblyjs/wasm-gen@1.11.1': - dependencies: - '@webassemblyjs/ast': 1.11.1 - '@webassemblyjs/helper-wasm-bytecode': 1.11.1 - '@webassemblyjs/ieee754': 1.11.1 - '@webassemblyjs/leb128': 1.11.1 - '@webassemblyjs/utf8': 1.11.1 - - '@webassemblyjs/wasm-opt@1.11.1': - dependencies: - '@webassemblyjs/ast': 1.11.1 - '@webassemblyjs/helper-buffer': 1.11.1 - '@webassemblyjs/wasm-gen': 1.11.1 - '@webassemblyjs/wasm-parser': 1.11.1 - - '@webassemblyjs/wasm-parser@1.11.1': - dependencies: - '@webassemblyjs/ast': 1.11.1 - '@webassemblyjs/helper-api-error': 1.11.1 - '@webassemblyjs/helper-wasm-bytecode': 1.11.1 - '@webassemblyjs/ieee754': 1.11.1 - '@webassemblyjs/leb128': 1.11.1 - '@webassemblyjs/utf8': 1.11.1 - - '@webassemblyjs/wast-printer@1.11.1': - dependencies: - '@webassemblyjs/ast': 1.11.1 - '@xtuc/long': 4.2.2 - - '@xata.io/client@0.28.4(typescript@5.5.2)': - dependencies: - typescript: 5.5.2 + typescript: 5.6.2 '@xmldom/xmldom@0.8.6': {} - '@xtuc/ieee754@1.2.0': {} - - '@xtuc/long@4.2.2': {} - - '@yarnpkg/esbuild-plugin-pnp@3.0.0-rc.15(esbuild@0.20.2)': - dependencies: - esbuild: 0.20.2 - tslib: 2.6.2 - - '@yarnpkg/fslib@2.10.3': - dependencies: - '@yarnpkg/libzip': 2.3.0 - tslib: 2.6.2 - - '@yarnpkg/libzip@2.3.0': - dependencies: - '@types/emscripten': 1.39.7 - tslib: 2.6.2 - a-sync-waterfall@1.0.1: {} abab@2.0.6: {} @@ -20177,44 +17294,41 @@ snapshots: acorn-globals@7.0.1: dependencies: - acorn: 8.11.2 + acorn: 8.12.1 acorn-walk: 8.3.2 - acorn-import-assertions@1.8.0(acorn@8.11.2): + acorn-jsx@5.3.2(acorn@8.12.1): dependencies: - acorn: 8.11.2 - - acorn-jsx@5.3.2(acorn@8.11.2): - dependencies: - acorn: 8.11.2 - - acorn-walk@8.2.0: {} + acorn: 8.12.1 acorn-walk@8.3.2: {} + acorn-walk@8.3.4: + dependencies: + acorn: 8.12.1 + optional: true + acorn@7.4.1: {} - acorn@8.11.2: {} - - address@1.2.2: {} + acorn@8.12.1: {} adm-zip@0.5.10: {} agent-base@6.0.2: dependencies: - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.7 transitivePeerDependencies: - supports-color agent-base@7.1.0: dependencies: - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.7 transitivePeerDependencies: - supports-color agentkeepalive@4.2.1: dependencies: - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.7 depd: 1.1.2 humanize-ms: 1.2.1 transitivePeerDependencies: @@ -20225,17 +17339,21 @@ snapshots: clean-stack: 2.2.0 indent-string: 4.0.0 - ajv-draft-04@1.0.0(ajv@8.12.0): + ajv-draft-04@1.0.0(ajv@8.13.0): optionalDependencies: - ajv: 8.12.0 + ajv: 8.13.0 - ajv-formats@2.1.1(ajv@8.12.0): + ajv-draft-04@1.0.0(ajv@8.17.1): optionalDependencies: - ajv: 8.12.0 + ajv: 8.17.1 - ajv-keywords@3.5.2(ajv@6.12.6): - dependencies: - ajv: 6.12.6 + ajv-formats@2.1.1(ajv@8.17.1): + optionalDependencies: + ajv: 8.17.1 + + ajv-formats@3.0.1(ajv@8.13.0): + optionalDependencies: + ajv: 8.13.0 ajv@6.12.6: dependencies: @@ -20251,6 +17369,27 @@ snapshots: require-from-string: 2.0.2 uri-js: 4.4.1 + ajv@8.13.0: + dependencies: + fast-deep-equal: 3.1.3 + json-schema-traverse: 1.0.0 + require-from-string: 2.0.2 + uri-js: 4.4.1 + + ajv@8.17.1: + dependencies: + fast-deep-equal: 3.1.3 + fast-uri: 3.0.1 + json-schema-traverse: 1.0.0 + require-from-string: 2.0.2 + + alasql@4.4.0(encoding@0.1.13): + dependencies: + cross-fetch: 4.0.0(encoding@0.1.13) + yargs: 16.2.0 + transitivePeerDependencies: + - encoding + amqplib@0.10.3: dependencies: '@acuminous/bitsyntax': 0.1.2 @@ -20291,8 +17430,6 @@ snapshots: normalize-path: 3.0.0 picomatch: 2.3.1 - app-root-dir@1.0.2: {} - app-root-path@3.1.0: {} append-field@1.0.0: {} @@ -20308,6 +17445,9 @@ snapshots: readable-stream: 3.6.0 optional: true + arg@4.1.3: + optional: true + arg@5.0.2: {} argparse@1.0.10: @@ -20316,14 +17456,14 @@ snapshots: argparse@2.0.1: {} - aria-hidden@1.2.4: - dependencies: - tslib: 2.6.2 - aria-query@5.1.3: dependencies: deep-equal: 2.2.0 + aria-query@5.3.0: + dependencies: + dequal: 2.0.3 + array-buffer-byte-length@1.0.0: dependencies: call-bind: 1.0.7 @@ -20355,6 +17495,15 @@ snapshots: array-union@2.1.0: {} + array.prototype.filter@1.0.4: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + es-array-method-boxes-properly: 1.0.0 + es-object-atoms: 1.0.0 + is-string: 1.0.7 + array.prototype.findlastindex@1.2.3: dependencies: call-bind: 1.0.7 @@ -20423,17 +17572,10 @@ snapshots: assert-never@1.2.1: {} - assert-options@0.8.0: {} + assert-options@0.8.1: {} assert-plus@1.0.0: {} - assert@2.0.0: - dependencies: - es6-object-assign: 1.1.0 - is-nan: 1.3.2 - object-is: 1.1.5 - util: 0.12.5 - assert@2.1.0: dependencies: call-bind: 1.0.7 @@ -20442,7 +17584,7 @@ snapshots: object.assign: 4.1.5 util: 0.12.5 - assertion-error@1.1.0: {} + assertion-error@2.0.1: {} ast-types@0.15.2: dependencies: @@ -20473,15 +17615,13 @@ snapshots: autoprefixer@10.4.19(postcss@8.4.38): dependencies: browserslist: 4.23.0 - caniuse-lite: 1.0.30001617 + caniuse-lite: 1.0.30001667 fraction.js: 4.3.7 normalize-range: 0.1.2 - picocolors: 1.0.0 + picocolors: 1.0.1 postcss: 8.4.38 postcss-value-parser: 4.2.0 - available-typed-arrays@1.0.5: {} - available-typed-arrays@1.0.7: dependencies: possible-typed-array-names: 1.0.0 @@ -20490,34 +17630,48 @@ snapshots: aws-sign2@0.7.0: {} + aws-ssl-profiles@1.1.1: {} + aws4@1.11.0: {} axe-core@4.7.2: {} axios-retry@3.7.0: dependencies: - '@babel/runtime': 7.23.6 + '@babel/runtime': 7.24.7 is-retry-allowed: 2.2.0 - axios@1.6.7(debug@3.2.7): + axios@1.7.3(debug@4.3.6): dependencies: - follow-redirects: 1.15.6(debug@3.2.7) + follow-redirects: 1.15.6(debug@4.3.6) form-data: 4.0.0 proxy-from-env: 1.1.0 transitivePeerDependencies: - debug - axios@1.6.7(debug@4.3.4): + axios@1.7.4: dependencies: - follow-redirects: 1.15.6(debug@4.3.4) + follow-redirects: 1.15.6(debug@4.3.6) form-data: 4.0.0 proxy-from-env: 1.1.0 transitivePeerDependencies: - debug - babel-core@7.0.0-bridge.0(@babel/core@7.24.6): + axios@1.7.7: dependencies: - '@babel/core': 7.24.6 + follow-redirects: 1.15.6(debug@4.3.6) + form-data: 4.0.0 + proxy-from-env: 1.1.0 + transitivePeerDependencies: + - debug + + axios@1.7.7(debug@4.3.7): + dependencies: + follow-redirects: 1.15.6(debug@4.3.7) + form-data: 4.0.0 + proxy-from-env: 1.1.0 + transitivePeerDependencies: + - debug babel-jest@29.6.2(@babel/core@7.24.0): dependencies: @@ -20545,34 +17699,10 @@ snapshots: babel-plugin-jest-hoist@29.5.0: dependencies: '@babel/template': 7.24.0 - '@babel/types': 7.24.0 + '@babel/types': 7.25.6 '@types/babel__core': 7.20.0 '@types/babel__traverse': 7.18.2 - babel-plugin-polyfill-corejs2@0.4.10(@babel/core@7.24.6): - dependencies: - '@babel/compat-data': 7.24.6 - '@babel/core': 7.24.6 - '@babel/helper-define-polyfill-provider': 0.6.1(@babel/core@7.24.6) - semver: 7.6.0 - transitivePeerDependencies: - - supports-color - - babel-plugin-polyfill-corejs3@0.10.4(@babel/core@7.24.6): - dependencies: - '@babel/core': 7.24.6 - '@babel/helper-define-polyfill-provider': 0.6.1(@babel/core@7.24.6) - core-js-compat: 3.37.1 - transitivePeerDependencies: - - supports-color - - babel-plugin-polyfill-regenerator@0.6.2(@babel/core@7.24.6): - dependencies: - '@babel/core': 7.24.6 - '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.24.6) - transitivePeerDependencies: - - supports-color - babel-preset-current-node-syntax@1.0.1(@babel/core@7.24.0): dependencies: '@babel/core': 7.24.0 @@ -20597,12 +17727,10 @@ snapshots: babel-walk@3.0.0-canary-5: dependencies: - '@babel/types': 7.24.6 + '@babel/types': 7.25.6 balanced-match@1.0.2: {} - base-64@0.1.0: {} - base-64@1.0.0: {} base64-js@1.5.1: {} @@ -20623,14 +17751,10 @@ snapshots: big-integer@1.6.51: {} - bignumber.js@9.1.1: {} - bignumber.js@9.1.2: {} binary-extensions@2.2.0: {} - binary-search@1.3.6: {} - binascii@0.0.2: {} bindings@1.5.0: @@ -20664,7 +17788,7 @@ snapshots: bn.js@5.2.1: {} - body-parser@1.20.2: + body-parser@1.20.3: dependencies: bytes: 3.1.2 content-type: 1.0.5 @@ -20674,7 +17798,7 @@ snapshots: http-errors: 2.0.0 iconv-lite: 0.4.24 on-finished: 2.4.1 - qs: 6.11.0 + qs: 6.13.0 raw-body: 2.5.2 type-is: 1.6.18 unpipe: 1.0.0 @@ -20685,10 +17809,6 @@ snapshots: bowser@2.11.0: {} - bplist-parser@0.2.0: - dependencies: - big-integer: 1.6.51 - brace-expansion@1.1.11: dependencies: balanced-match: 1.0.2 @@ -20698,21 +17818,17 @@ snapshots: dependencies: balanced-match: 1.0.2 - braces@3.0.2: + braces@3.0.3: dependencies: - fill-range: 7.0.1 + fill-range: 7.1.1 browser-assert@1.2.1: {} browser-request@0.3.3: {} - browserify-zlib@0.1.4: - dependencies: - pako: 0.2.9 - browserslist@4.23.0: dependencies: - caniuse-lite: 1.0.30001597 + caniuse-lite: 1.0.30001667 electron-to-chromium: 1.4.703 node-releases: 2.0.14 update-browserslist-db: 1.0.13(browserslist@4.23.0) @@ -20725,7 +17841,7 @@ snapshots: dependencies: node-int64: 0.4.0 - bson@6.3.0: {} + bson@6.8.0: {} buffer-crc32@0.2.13: {} @@ -20735,8 +17851,6 @@ snapshots: buffer-more-ints@1.0.0: {} - buffer-writer@2.0.0: {} - buffer@5.7.1: dependencies: base64-js: 1.5.1 @@ -20747,7 +17861,7 @@ snapshots: base64-js: 1.5.1 ieee754: 1.2.1 - buildcheck@0.0.3: + buildcheck@0.0.6: optional: true builtin-modules@3.3.0: {} @@ -20818,11 +17932,6 @@ snapshots: cachedir@2.3.0: {} - call-bind@1.0.2: - dependencies: - function-bind: 1.1.2 - get-intrinsic: 1.2.4 - call-bind@1.0.7: dependencies: es-define-property: 1.0.0 @@ -20835,6 +17944,11 @@ snapshots: callsites@3.1.0: {} + camel-case@3.0.0: + dependencies: + no-case: 2.3.2 + upper-case: 1.1.3 + camel-case@4.1.2: dependencies: pascal-case: 3.1.2 @@ -20848,16 +17962,7 @@ snapshots: camelize@1.0.1: {} - caniuse-api@3.0.0: - dependencies: - browserslist: 4.23.0 - caniuse-lite: 1.0.30001597 - lodash.memoize: 4.1.2 - lodash.uniq: 4.5.0 - - caniuse-lite@1.0.30001597: {} - - caniuse-lite@1.0.30001617: {} + caniuse-lite@1.0.30001667: {} capital-case@1.0.4: dependencies: @@ -20867,15 +17972,13 @@ snapshots: caseless@0.12.0: {} - chai@4.3.10: + chai@5.1.1: dependencies: - assertion-error: 1.1.0 - check-error: 1.0.3 - deep-eql: 4.1.3 - get-func-name: 2.0.2 - loupe: 2.3.7 - pathval: 1.1.1 - type-detect: 4.0.8 + assertion-error: 2.0.1 + check-error: 2.1.1 + deep-eql: 5.0.2 + loupe: 3.1.1 + pathval: 2.0.0 chalk@2.4.2: dependencies: @@ -20893,8 +17996,6 @@ snapshots: ansi-styles: 4.3.0 supports-color: 7.2.0 - chalk@5.3.0: {} - change-case@4.1.2: dependencies: camel-case: 4.1.2 @@ -20910,6 +18011,8 @@ snapshots: snake-case: 3.0.4 tslib: 2.6.2 + change-case@5.4.4: {} + char-regex@1.0.2: {} character-parser@2.2.0: @@ -20924,9 +18027,7 @@ snapshots: dependencies: '@kurkle/color': 0.3.2 - check-error@1.0.3: - dependencies: - get-func-name: 2.0.2 + check-error@2.1.1: {} check-more-types@2.24.0: {} @@ -20945,14 +18046,28 @@ snapshots: css-what: 6.1.0 domelementtype: 2.3.0 domhandler: 5.0.3 - domutils: 3.0.1 + domutils: 3.1.0 + + cheerio@1.0.0: + dependencies: + cheerio-select: 2.1.0 + dom-serializer: 2.0.0 + domhandler: 5.0.3 + domutils: 3.1.0 + encoding-sniffer: 0.2.0 + htmlparser2: 9.1.0 + parse5: 7.1.2 + parse5-htmlparser2-tree-adapter: 7.0.0 + parse5-parser-stream: 7.1.2 + undici: 6.19.7 + whatwg-mimetype: 4.0.0 cheerio@1.0.0-rc.12: dependencies: cheerio-select: 2.1.0 dom-serializer: 2.0.0 domhandler: 5.0.3 - domutils: 3.0.1 + domutils: 3.1.0 htmlparser2: 8.0.2 parse5: 7.1.2 parse5-htmlparser2-tree-adapter: 7.0.0 @@ -20966,34 +18081,20 @@ snapshots: parse5: 6.0.1 parse5-htmlparser2-tree-adapter: 6.0.1 - chokidar@3.5.2: + chokidar@4.0.1: dependencies: - anymatch: 3.1.3 - braces: 3.0.2 - glob-parent: 5.1.2 - is-binary-path: 2.1.0 - is-glob: 4.0.3 - normalize-path: 3.0.0 - readdirp: 3.6.0 - optionalDependencies: - fsevents: 2.3.3 + readdirp: 4.0.2 chownr@1.1.4: {} chownr@2.0.0: {} - chromatic@11.4.1: {} - - chrome-trace-event@1.0.3: {} + chromatic@11.10.2: {} ci-info@3.8.0: {} ci-info@4.0.0: {} - citty@0.1.5: - dependencies: - consola: 3.2.3 - cjs-module-lexer@1.2.2: {} class-transformer@0.5.1: {} @@ -21006,6 +18107,10 @@ snapshots: classnames@2.5.1: {} + clean-css@4.2.4: + dependencies: + source-map: 0.6.1 + clean-regexp@1.0.0: dependencies: escape-string-regexp: 1.0.5 @@ -21020,8 +18125,6 @@ snapshots: dependencies: restore-cursor: 3.1.0 - cli-spinners@2.9.0: {} - cli-spinners@2.9.2: {} cli-table3@0.6.3: @@ -21049,15 +18152,7 @@ snapshots: strip-ansi: 6.0.1 wrap-ansi: 7.0.0 - clone-deep@4.0.1: - dependencies: - is-plain-object: 2.0.4 - kind-of: 6.0.3 - shallow-clone: 3.0.1 - - clone@1.0.4: {} - - clsx@1.2.1: {} + clsx@2.1.1: {} cluster-key-slot@1.1.2: {} @@ -21077,16 +18172,23 @@ snapshots: '@lezer/html': 1.3.0 '@lezer/lr': 1.4.0 - cohere-ai@7.10.1(encoding@0.1.13): + cohere-ai@7.13.2(@aws-sdk/client-sso-oidc@3.666.0(@aws-sdk/client-sts@3.666.0))(encoding@0.1.13): dependencies: + '@aws-sdk/client-sagemaker': 3.666.0 + '@aws-sdk/credential-providers': 3.666.0(@aws-sdk/client-sso-oidc@3.666.0(@aws-sdk/client-sts@3.666.0)) + '@aws-sdk/protocol-http': 3.374.0 + '@aws-sdk/signature-v4': 3.374.0 form-data: 4.0.0 form-data-encoder: 4.0.2 formdata-node: 6.0.3 js-base64: 3.7.2 node-fetch: 2.7.0(encoding@0.1.13) qs: 6.11.2 + readable-stream: 4.5.2 url-join: 4.0.1 transitivePeerDependencies: + - '@aws-sdk/client-sso-oidc' + - aws-crt - encoding collect-v8-coverage@1.0.1: {} @@ -21116,14 +18218,10 @@ snapshots: color-convert: 1.9.3 color-string: 1.9.1 - colord@2.9.3: {} - colorette@1.4.0: {} colorette@2.0.19: {} - colors@1.2.5: {} - colors@1.4.0: {} colorspace@1.1.4: @@ -21147,8 +18245,6 @@ snapshots: commander@6.2.1: {} - commander@7.2.0: {} - commander@9.4.1: {} commist@3.2.0: {} @@ -21157,6 +18253,8 @@ snapshots: commondir@1.0.1: {} + compare-versions@6.1.1: {} + component-emitter@1.3.0: {} component-type@1.2.1: {} @@ -21207,6 +18305,8 @@ snapshots: tree-kill: 1.2.2 yargs: 17.7.2 + confbox@0.1.7: {} + config-chain@1.1.13: dependencies: ini: 1.3.8 @@ -21214,8 +18314,6 @@ snapshots: confusing-browser-globals@1.0.11: {} - consola@3.2.3: {} - console-control-strings@1.1.0: optional: true @@ -21227,8 +18325,8 @@ snapshots: constantinople@4.0.1: dependencies: - '@babel/parser': 7.24.6 - '@babel/types': 7.24.6 + '@babel/parser': 7.25.6 + '@babel/types': 7.25.6 content-disposition@0.5.4: dependencies: @@ -21245,18 +18343,18 @@ snapshots: lodash.clonedeep: 4.5.0 yargs-parser: 20.2.9 - cookie-parser@1.4.6: + cookie-parser@1.4.7: dependencies: - cookie: 0.4.1 + cookie: 0.7.2 cookie-signature: 1.0.6 cookie-signature@1.0.6: {} - cookie@0.4.1: {} - cookie@0.4.2: {} - cookie@0.6.0: {} + cookie@0.7.1: {} + + cookie@0.7.2: {} cookiejar@2.1.4: {} @@ -21264,22 +18362,19 @@ snapshots: dependencies: browserslist: 4.23.0 - core-js-compat@3.37.1: - dependencies: - browserslist: 4.23.0 - - core-js@3.31.0: {} - core-js@3.35.0: {} core-util-is@1.0.2: {} core-util-is@1.0.3: {} - cpu-features@0.0.4: + cpu-features@0.0.10: dependencies: - buildcheck: 0.0.3 - nan: 2.17.0 + buildcheck: 0.0.6 + nan: 2.20.0 + optional: true + + create-require@1.1.1: optional: true crelt@1.0.5: {} @@ -21292,17 +18387,18 @@ snapshots: cron-parser@4.9.0: dependencies: - luxon: 3.4.4 + luxon: 3.5.0 - cron@1.7.2: + cron@3.1.7: dependencies: - moment-timezone: 0.5.37 + '@types/luxon': 3.4.2 + luxon: 3.4.4 cross-env@7.0.3: dependencies: cross-spawn: 7.0.3 - cross-fetch@3.1.8(encoding@0.1.13): + cross-fetch@4.0.0(encoding@0.1.13): dependencies: node-fetch: 2.7.0(encoding@0.1.13) transitivePeerDependencies: @@ -21323,8 +18419,6 @@ snapshots: crypto-js@4.2.0: {} - crypto-random-string@2.0.0: {} - csrf@3.1.0: dependencies: rndm: 1.2.0 @@ -21333,10 +18427,6 @@ snapshots: css-color-keywords@1.0.0: {} - css-declaration-sorter@7.1.1(postcss@8.4.38): - dependencies: - postcss: 8.4.38 - css-select@4.3.0: dependencies: boolbase: 1.0.0 @@ -21350,7 +18440,7 @@ snapshots: boolbase: 1.0.0 css-what: 6.1.0 domhandler: 5.0.3 - domutils: 3.0.1 + domutils: 3.1.0 nth-check: 2.1.1 css-to-react-native@3.2.0: @@ -21359,16 +18449,6 @@ snapshots: css-color-keywords: 1.0.0 postcss-value-parser: 4.2.0 - css-tree@2.2.1: - dependencies: - mdn-data: 2.0.28 - source-map-js: 1.0.2 - - css-tree@2.3.1: - dependencies: - mdn-data: 2.0.30 - source-map-js: 1.0.2 - css-what@6.1.0: {} css.escape@1.5.1: {} @@ -21377,53 +18457,6 @@ snapshots: cssfilter@0.0.10: {} - cssnano-preset-default@6.0.2(postcss@8.4.38): - dependencies: - css-declaration-sorter: 7.1.1(postcss@8.4.38) - cssnano-utils: 4.0.1(postcss@8.4.38) - postcss: 8.4.38 - postcss-calc: 9.0.1(postcss@8.4.38) - postcss-colormin: 6.0.1(postcss@8.4.38) - postcss-convert-values: 6.0.1(postcss@8.4.38) - postcss-discard-comments: 6.0.1(postcss@8.4.38) - postcss-discard-duplicates: 6.0.1(postcss@8.4.38) - postcss-discard-empty: 6.0.1(postcss@8.4.38) - postcss-discard-overridden: 6.0.1(postcss@8.4.38) - postcss-merge-longhand: 6.0.1(postcss@8.4.38) - postcss-merge-rules: 6.0.2(postcss@8.4.38) - postcss-minify-font-values: 6.0.1(postcss@8.4.38) - postcss-minify-gradients: 6.0.1(postcss@8.4.38) - postcss-minify-params: 6.0.1(postcss@8.4.38) - postcss-minify-selectors: 6.0.1(postcss@8.4.38) - postcss-normalize-charset: 6.0.1(postcss@8.4.38) - postcss-normalize-display-values: 6.0.1(postcss@8.4.38) - postcss-normalize-positions: 6.0.1(postcss@8.4.38) - postcss-normalize-repeat-style: 6.0.1(postcss@8.4.38) - postcss-normalize-string: 6.0.1(postcss@8.4.38) - postcss-normalize-timing-functions: 6.0.1(postcss@8.4.38) - postcss-normalize-unicode: 6.0.1(postcss@8.4.38) - postcss-normalize-url: 6.0.1(postcss@8.4.38) - postcss-normalize-whitespace: 6.0.1(postcss@8.4.38) - postcss-ordered-values: 6.0.1(postcss@8.4.38) - postcss-reduce-initial: 6.0.1(postcss@8.4.38) - postcss-reduce-transforms: 6.0.1(postcss@8.4.38) - postcss-svgo: 6.0.1(postcss@8.4.38) - postcss-unique-selectors: 6.0.1(postcss@8.4.38) - - cssnano-utils@4.0.1(postcss@8.4.38): - dependencies: - postcss: 8.4.38 - - cssnano@6.0.2(postcss@8.4.38): - dependencies: - cssnano-preset-default: 6.0.2(postcss@8.4.38) - lilconfig: 3.0.0 - postcss: 8.4.38 - - csso@5.0.5: - dependencies: - css-tree: 2.2.1 - cssom@0.3.8: {} cssom@0.5.0: {} @@ -21442,12 +18475,12 @@ snapshots: csv-parse@5.5.0: {} - curlconverter@3.21.0(chokidar@3.5.2): + curlconverter@3.21.0(chokidar@4.0.1): dependencies: '@curlconverter/yargs': 0.0.2 cookie: 0.4.2 jsesc: 3.0.2 - nunjucks: 3.2.4(chokidar@3.5.2) + nunjucks: 3.2.4(chokidar@4.0.1) query-string: 7.1.3 string.prototype.startswith: 1.0.0 yamljs: 0.3.0 @@ -21463,11 +18496,11 @@ snapshots: dependencies: otplib: 12.0.1 - cypress-real-events@1.12.0(cypress@13.11.0): + cypress-real-events@1.13.0(cypress@13.14.2): dependencies: - cypress: 13.11.0 + cypress: 13.14.2 - cypress@13.11.0: + cypress@13.14.2: dependencies: '@cypress/request': 3.0.1 '@cypress/xvfb': 1.2.4(supports-color@8.1.1) @@ -21485,7 +18518,7 @@ snapshots: commander: 6.2.1 common-tags: 1.8.2 dayjs: 1.11.10 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.6(supports-color@8.1.1) enquirer: 2.3.6 eventemitter2: 6.4.7 execa: 4.1.0 @@ -21508,7 +18541,7 @@ snapshots: request-progress: 3.0.0 semver: 7.6.0 supports-color: 8.1.1 - tmp: 0.2.1 + tmp: 0.2.3 untildify: 4.0.0 yauzl: 2.10.0 @@ -21569,20 +18602,36 @@ snapshots: whatwg-mimetype: 4.0.0 whatwg-url: 14.0.0 + data-view-buffer@1.0.1: + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + is-data-view: 1.0.1 + + data-view-byte-length@1.0.1: + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + is-data-view: 1.0.1 + + data-view-byte-offset@1.0.0: + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + is-data-view: 1.0.1 + date-fns-tz@2.0.0(date-fns@2.30.0): dependencies: date-fns: 2.30.0 date-fns@2.30.0: dependencies: - '@babel/runtime': 7.22.6 + '@babel/runtime': 7.24.7 dateformat@3.0.3: {} dayjs@1.11.10: {} - dayjs@1.11.6: {} - de-indent@1.0.2: {} debug@2.6.9: @@ -21601,17 +18650,23 @@ snapshots: optionalDependencies: supports-color: 8.1.1 - debug@4.3.4(supports-color@8.1.1): + debug@4.3.4: + dependencies: + ms: 2.1.2 + + debug@4.3.5: + dependencies: + ms: 2.1.2 + + debug@4.3.6(supports-color@8.1.1): dependencies: ms: 2.1.2 optionalDependencies: supports-color: 8.1.1 - debug@4.3.5(supports-color@8.1.1): + debug@4.3.7: dependencies: - ms: 2.1.2 - optionalDependencies: - supports-color: 8.1.1 + ms: 2.1.3 decamelize@1.2.0: {} @@ -21631,29 +18686,27 @@ snapshots: dependencies: type-detect: 4.0.8 - deep-eql@4.1.3: - dependencies: - type-detect: 4.0.8 + deep-eql@5.0.2: {} deep-equal@2.2.0: dependencies: - call-bind: 1.0.2 + call-bind: 1.0.7 es-get-iterator: 1.1.3 - get-intrinsic: 1.2.1 + get-intrinsic: 1.2.4 is-arguments: 1.1.1 - is-array-buffer: 3.0.2 + is-array-buffer: 3.0.4 is-date-object: 1.0.5 is-regex: 1.1.4 - is-shared-array-buffer: 1.0.2 + is-shared-array-buffer: 1.0.3 isarray: 2.0.5 object-is: 1.1.5 object-keys: 1.1.1 - object.assign: 4.1.4 - regexp.prototype.flags: 1.5.0 - side-channel: 1.0.4 + object.assign: 4.1.5 + regexp.prototype.flags: 1.5.2 + side-channel: 1.0.6 which-boxed-primitive: 1.0.2 which-collection: 1.0.1 - which-typed-array: 1.1.11 + which-typed-array: 1.1.15 deep-extend@0.6.0: {} @@ -21661,15 +18714,6 @@ snapshots: deepmerge@4.3.1: {} - default-browser-id@3.0.0: - dependencies: - bplist-parser: 0.2.0 - untildify: 4.0.0 - - defaults@1.0.4: - dependencies: - clone: 1.0.4 - define-data-property@1.1.4: dependencies: es-define-property: 1.0.0 @@ -21689,21 +18733,6 @@ snapshots: has-property-descriptors: 1.0.2 object-keys: 1.1.1 - defu@6.1.2: {} - - defu@6.1.3: {} - - del@6.1.1: - dependencies: - globby: 11.1.0 - graceful-fs: 4.2.11 - is-glob: 4.0.3 - is-path-cwd: 2.2.0 - is-path-inside: 3.0.3 - p-map: 4.0.0 - rimraf: 3.0.2 - slash: 3.0.0 - delayed-stream@1.0.0: {} delegates@1.0.0: @@ -21719,24 +18748,11 @@ snapshots: destroy@1.2.0: {} - detect-indent@6.1.0: {} - detect-libc@2.0.1: {} detect-newline@3.1.0: {} - detect-node-es@1.1.0: {} - - detect-package-manager@2.0.1: - dependencies: - execa: 5.1.1 - - detect-port@1.5.1: - dependencies: - address: 1.2.2 - debug: 4.3.4(supports-color@8.1.1) - transitivePeerDependencies: - - supports-color + detect-node@2.1.0: {} dezalgo@1.0.4: dependencies: @@ -21747,12 +18763,8 @@ snapshots: diff-sequences@29.6.3: {} - diff@5.2.0: {} - - digest-fetch@1.3.0: - dependencies: - base-64: 0.1.0 - md5: 2.3.0 + diff@4.0.2: + optional: true dingbat-to-unicode@1.0.1: {} @@ -21760,6 +18772,8 @@ snapshots: dependencies: path-type: 4.0.0 + discontinuous-range@1.0.0: {} + dlv@1.1.3: {} doctrine@2.1.0: @@ -21794,6 +18808,10 @@ snapshots: dependencies: webidl-conversions: 7.0.0 + domhandler@3.3.0: + dependencies: + domelementtype: 2.3.0 + domhandler@4.3.1: dependencies: domelementtype: 2.3.0 @@ -21804,7 +18822,7 @@ snapshots: dommatrix@1.0.3: {} - dompurify@2.4.7: {} + dompurify@3.1.7: {} domutils@2.8.0: dependencies: @@ -21818,13 +18836,17 @@ snapshots: domelementtype: 2.3.0 domhandler: 5.0.3 + domutils@3.1.0: + dependencies: + dom-serializer: 2.0.0 + domelementtype: 2.3.0 + domhandler: 5.0.3 + dot-case@3.0.4: dependencies: no-case: 3.0.4 tslib: 2.6.2 - dotenv-expand@10.0.0: {} - dotenv@16.3.1: {} dotenv@8.6.0: {} @@ -21839,13 +18861,6 @@ snapshots: duplexer@0.1.2: {} - duplexify@3.7.1: - dependencies: - end-of-stream: 1.4.4 - inherits: 2.0.4 - readable-stream: 2.3.7 - stream-shift: 1.0.1 - duplexify@4.1.2: dependencies: end-of-stream: 1.4.4 @@ -21853,6 +18868,13 @@ snapshots: readable-stream: 3.6.0 stream-shift: 1.0.1 + duplexify@4.1.3: + dependencies: + end-of-stream: 1.4.4 + inherits: 2.0.4 + readable-stream: 3.6.0 + stream-shift: 1.0.3 + eastasianwidth@0.2.0: {} ecc-jsbn@0.1.2: @@ -21879,24 +18901,24 @@ snapshots: electron-to-chromium@1.4.703: {} - element-plus@2.3.6(vue@3.4.21(typescript@5.5.2)): + element-plus@2.4.3(vue@3.5.11(typescript@5.6.2)): dependencies: '@ctrl/tinycolor': 3.6.0 - '@element-plus/icons-vue': 2.1.0(vue@3.4.21(typescript@5.5.2)) + '@element-plus/icons-vue': 2.3.1(vue@3.5.11(typescript@5.6.2)) '@floating-ui/dom': 1.4.5 '@popperjs/core': '@sxzz/popperjs-es@2.11.7' '@types/lodash': 4.14.195 '@types/lodash-es': 4.17.6 - '@vueuse/core': 9.13.0(vue@3.4.21(typescript@5.5.2)) + '@vueuse/core': 9.13.0(vue@3.5.11(typescript@5.6.2)) async-validator: 4.2.5 - dayjs: 1.11.6 + dayjs: 1.11.10 escape-html: 1.0.3 lodash: 4.17.21 lodash-es: 4.17.21 lodash-unified: 1.0.3(@types/lodash-es@4.17.6)(lodash-es@4.17.21)(lodash@4.17.21) memoize-one: 6.0.0 normalize-wheel-es: 1.2.0 - vue: 3.4.21(typescript@5.5.2) + vue: 3.5.11(typescript@5.6.2) transitivePeerDependencies: - '@vue/composition-api' @@ -21912,8 +18934,15 @@ snapshots: encodeurl@1.0.2: {} + encodeurl@2.0.0: {} + encoding-japanese@2.0.0: {} + encoding-sniffer@0.2.0: + dependencies: + iconv-lite: 0.6.3 + whatwg-encoding: 3.1.1 + encoding@0.1.13: dependencies: iconv-lite: 0.6.3 @@ -21924,17 +18953,13 @@ snapshots: enhanced-resolve@5.13.0: dependencies: - graceful-fs: 4.2.10 + graceful-fs: 4.2.11 tapable: 2.2.1 enquirer@2.3.6: dependencies: ansi-colors: 4.1.3 - ent@2.2.0: {} - - entities@2.1.0: {} - entities@2.2.0: {} entities@3.0.1: {} @@ -21946,7 +18971,35 @@ snapshots: env-paths@2.2.1: optional: true - envinfo@7.8.1: {} + enzyme-shallow-equal@1.0.7: + dependencies: + hasown: 2.0.2 + object-is: 1.1.5 + + enzyme@3.11.0: + dependencies: + array.prototype.flat: 1.3.2 + cheerio: 1.0.0 + enzyme-shallow-equal: 1.0.7 + function.prototype.name: 1.1.6 + has: 1.0.4 + html-element-map: 1.3.1 + is-boolean-object: 1.1.2 + is-callable: 1.2.7 + is-number-object: 1.0.7 + is-regex: 1.1.4 + is-string: 1.0.7 + is-subset: 0.1.1 + lodash.escape: 4.0.1 + lodash.isequal: 4.5.0 + object-inspect: 1.13.2 + object-is: 1.1.6 + object.assign: 4.1.5 + object.entries: 1.1.8 + object.values: 1.2.0 + raf: 3.4.1 + rst-selector-parser: 2.2.3 + string.prototype.trim: 1.2.9 epub2@3.0.2(ts-toolbelt@9.6.0): dependencies: @@ -21969,7 +19022,7 @@ snapshots: dependencies: array-buffer-byte-length: 1.0.0 arraybuffer.prototype.slice: 1.0.1 - available-typed-arrays: 1.0.5 + available-typed-arrays: 1.0.7 call-bind: 1.0.7 es-set-tostringtag: 2.0.1 es-to-primitive: 1.2.1 @@ -21989,7 +19042,7 @@ snapshots: is-regex: 1.1.4 is-shared-array-buffer: 1.0.2 is-string: 1.0.7 - is-typed-array: 1.1.10 + is-typed-array: 1.1.13 is-weakref: 1.0.2 object-inspect: 1.13.1 object-keys: 1.1.1 @@ -22005,7 +19058,7 @@ snapshots: typed-array-byte-offset: 1.0.0 typed-array-length: 1.0.4 unbox-primitive: 1.0.2 - which-typed-array: 1.1.11 + which-typed-array: 1.1.15 es-abstract@1.22.5: dependencies: @@ -22051,6 +19104,55 @@ snapshots: unbox-primitive: 1.0.2 which-typed-array: 1.1.15 + es-abstract@1.23.3: + dependencies: + array-buffer-byte-length: 1.0.1 + arraybuffer.prototype.slice: 1.0.3 + available-typed-arrays: 1.0.7 + call-bind: 1.0.7 + data-view-buffer: 1.0.1 + data-view-byte-length: 1.0.1 + data-view-byte-offset: 1.0.0 + es-define-property: 1.0.0 + es-errors: 1.3.0 + es-object-atoms: 1.0.0 + es-set-tostringtag: 2.0.3 + es-to-primitive: 1.2.1 + function.prototype.name: 1.1.6 + get-intrinsic: 1.2.4 + get-symbol-description: 1.0.2 + globalthis: 1.0.4 + gopd: 1.0.1 + has-property-descriptors: 1.0.2 + has-proto: 1.0.3 + has-symbols: 1.0.3 + hasown: 2.0.2 + internal-slot: 1.0.7 + is-array-buffer: 3.0.4 + is-callable: 1.2.7 + is-data-view: 1.0.1 + is-negative-zero: 2.0.3 + is-regex: 1.1.4 + is-shared-array-buffer: 1.0.3 + is-string: 1.0.7 + is-typed-array: 1.1.13 + is-weakref: 1.0.2 + object-inspect: 1.13.2 + object-keys: 1.1.1 + object.assign: 4.1.5 + regexp.prototype.flags: 1.5.3 + safe-array-concat: 1.1.2 + safe-regex-test: 1.0.3 + string.prototype.trim: 1.2.9 + string.prototype.trimend: 1.0.8 + string.prototype.trimstart: 1.0.8 + typed-array-buffer: 1.0.2 + typed-array-byte-length: 1.0.1 + typed-array-byte-offset: 1.0.2 + typed-array-length: 1.0.6 + unbox-primitive: 1.0.2 + which-typed-array: 1.1.15 + es-aggregate-error@1.0.12: dependencies: define-data-property: 1.1.4 @@ -22062,6 +19164,8 @@ snapshots: has-property-descriptors: 1.0.2 set-function-name: 2.0.2 + es-array-method-boxes-properly@1.0.0: {} + es-define-property@1.0.0: dependencies: get-intrinsic: 1.2.4 @@ -22080,15 +19184,17 @@ snapshots: isarray: 2.0.5 stop-iteration-iterator: 1.0.0 - es-module-lexer@0.9.3: {} - es-module-lexer@1.5.3: {} + es-object-atoms@1.0.0: + dependencies: + es-errors: 1.3.0 + es-set-tostringtag@2.0.1: dependencies: get-intrinsic: 1.2.4 has: 1.0.3 - has-tostringtag: 1.0.0 + has-tostringtag: 1.0.2 es-set-tostringtag@2.0.3: dependencies: @@ -22106,47 +19212,46 @@ snapshots: is-date-object: 1.0.5 is-symbol: 1.0.4 - es6-object-assign@1.1.0: {} - es6-promise@3.3.1: {} - esbuild-plugin-alias@0.2.1: {} - - esbuild-register@3.5.0(esbuild@0.20.2): + esbuild-register@3.5.0(esbuild@0.24.0): dependencies: - debug: 4.3.4(supports-color@8.1.1) - esbuild: 0.20.2 + debug: 4.3.7 + esbuild: 0.24.0 transitivePeerDependencies: - supports-color - esbuild@0.20.2: + esbuild@0.24.0: optionalDependencies: - '@esbuild/aix-ppc64': 0.20.2 - '@esbuild/android-arm': 0.20.2 - '@esbuild/android-arm64': 0.20.2 - '@esbuild/android-x64': 0.20.2 - '@esbuild/darwin-arm64': 0.20.2 - '@esbuild/darwin-x64': 0.20.2 - '@esbuild/freebsd-arm64': 0.20.2 - '@esbuild/freebsd-x64': 0.20.2 - '@esbuild/linux-arm': 0.20.2 - '@esbuild/linux-arm64': 0.20.2 - '@esbuild/linux-ia32': 0.20.2 - '@esbuild/linux-loong64': 0.20.2 - '@esbuild/linux-mips64el': 0.20.2 - '@esbuild/linux-ppc64': 0.20.2 - '@esbuild/linux-riscv64': 0.20.2 - '@esbuild/linux-s390x': 0.20.2 - '@esbuild/linux-x64': 0.20.2 - '@esbuild/netbsd-x64': 0.20.2 - '@esbuild/openbsd-x64': 0.20.2 - '@esbuild/sunos-x64': 0.20.2 - '@esbuild/win32-arm64': 0.20.2 - '@esbuild/win32-ia32': 0.20.2 - '@esbuild/win32-x64': 0.20.2 + '@esbuild/aix-ppc64': 0.24.0 + '@esbuild/android-arm': 0.24.0 + '@esbuild/android-arm64': 0.24.0 + '@esbuild/android-x64': 0.24.0 + '@esbuild/darwin-arm64': 0.24.0 + '@esbuild/darwin-x64': 0.24.0 + '@esbuild/freebsd-arm64': 0.24.0 + '@esbuild/freebsd-x64': 0.24.0 + '@esbuild/linux-arm': 0.24.0 + '@esbuild/linux-arm64': 0.24.0 + '@esbuild/linux-ia32': 0.24.0 + '@esbuild/linux-loong64': 0.24.0 + '@esbuild/linux-mips64el': 0.24.0 + '@esbuild/linux-ppc64': 0.24.0 + '@esbuild/linux-riscv64': 0.24.0 + '@esbuild/linux-s390x': 0.24.0 + '@esbuild/linux-x64': 0.24.0 + '@esbuild/netbsd-x64': 0.24.0 + '@esbuild/openbsd-arm64': 0.24.0 + '@esbuild/openbsd-x64': 0.24.0 + '@esbuild/sunos-x64': 0.24.0 + '@esbuild/win32-arm64': 0.24.0 + '@esbuild/win32-ia32': 0.24.0 + '@esbuild/win32-x64': 0.24.0 escalade@3.1.1: {} + escape-goat@3.0.0: {} + escape-html@1.0.3: {} escape-string-regexp@1.0.5: {} @@ -22173,21 +19278,21 @@ snapshots: optionalDependencies: source-map: 0.6.1 - eslint-config-airbnb-base@15.0.0(eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.2.0(eslint@8.57.0)(typescript@5.5.2))(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0))(eslint@8.57.0): + eslint-config-airbnb-base@15.0.0(eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.2.0(eslint@8.57.0)(typescript@5.6.2))(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0))(eslint@8.57.0): dependencies: confusing-browser-globals: 1.0.11 eslint: 8.57.0 - eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.2.0(eslint@8.57.0)(typescript@5.5.2))(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.2.0(eslint@8.57.0)(typescript@5.6.2))(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) object.assign: 4.1.5 object.entries: 1.1.5 semver: 7.6.0 - eslint-config-airbnb-typescript@18.0.0(@typescript-eslint/eslint-plugin@7.2.0(@typescript-eslint/parser@7.2.0(eslint@8.57.0)(typescript@5.5.2))(eslint@8.57.0)(typescript@5.5.2))(@typescript-eslint/parser@7.2.0(eslint@8.57.0)(typescript@5.5.2))(eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.2.0(eslint@8.57.0)(typescript@5.5.2))(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0))(eslint@8.57.0): + eslint-config-airbnb-typescript@18.0.0(@typescript-eslint/eslint-plugin@7.2.0(@typescript-eslint/parser@7.2.0(eslint@8.57.0)(typescript@5.6.2))(eslint@8.57.0)(typescript@5.6.2))(@typescript-eslint/parser@7.2.0(eslint@8.57.0)(typescript@5.6.2))(eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.2.0(eslint@8.57.0)(typescript@5.6.2))(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0))(eslint@8.57.0): dependencies: - '@typescript-eslint/eslint-plugin': 7.2.0(@typescript-eslint/parser@7.2.0(eslint@8.57.0)(typescript@5.5.2))(eslint@8.57.0)(typescript@5.5.2) - '@typescript-eslint/parser': 7.2.0(eslint@8.57.0)(typescript@5.5.2) + '@typescript-eslint/eslint-plugin': 7.2.0(@typescript-eslint/parser@7.2.0(eslint@8.57.0)(typescript@5.6.2))(eslint@8.57.0)(typescript@5.6.2) + '@typescript-eslint/parser': 7.2.0(eslint@8.57.0)(typescript@5.6.2) eslint: 8.57.0 - eslint-config-airbnb-base: 15.0.0(eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.2.0(eslint@8.57.0)(typescript@5.5.2))(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0))(eslint@8.57.0) + eslint-config-airbnb-base: 15.0.0(eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.2.0(eslint@8.57.0)(typescript@5.6.2))(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0))(eslint@8.57.0) transitivePeerDependencies: - eslint-plugin-import @@ -22205,13 +19310,13 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.2.0(eslint@8.57.0)(typescript@5.5.2))(eslint-plugin-import@2.29.1)(eslint@8.57.0): + eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.2.0(eslint@8.57.0)(typescript@5.6.2))(eslint-plugin-import@2.29.1)(eslint@8.57.0): dependencies: - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 enhanced-resolve: 5.13.0 eslint: 8.57.0 - eslint-module-utils: 2.8.0(@typescript-eslint/parser@7.2.0(eslint@8.57.0)(typescript@5.5.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.2.0(eslint@8.57.0)(typescript@5.5.2))(eslint-plugin-import@2.29.1)(eslint@8.57.0))(eslint@8.57.0) - eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.2.0(eslint@8.57.0)(typescript@5.5.2))(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) + eslint-module-utils: 2.8.0(@typescript-eslint/parser@7.2.0(eslint@8.57.0)(typescript@5.6.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.2.0(eslint@8.57.0)(typescript@5.6.2))(eslint-plugin-import@2.29.1)(eslint@8.57.0))(eslint@8.57.0) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.2.0(eslint@8.57.0)(typescript@5.6.2))(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) fast-glob: 3.3.2 get-tsconfig: 4.5.0 is-core-module: 2.13.1 @@ -22222,23 +19327,23 @@ snapshots: - eslint-import-resolver-webpack - supports-color - eslint-module-utils@2.8.0(@typescript-eslint/parser@7.2.0(eslint@8.57.0)(typescript@5.5.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.2.0(eslint@8.57.0)(typescript@5.5.2))(eslint-plugin-import@2.29.1)(eslint@8.57.0))(eslint@8.57.0): + eslint-module-utils@2.8.0(@typescript-eslint/parser@7.2.0(eslint@8.57.0)(typescript@5.6.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.2.0(eslint@8.57.0)(typescript@5.6.2))(eslint-plugin-import@2.29.1)(eslint@8.57.0))(eslint@8.57.0): dependencies: debug: 3.2.7(supports-color@5.5.0) optionalDependencies: - '@typescript-eslint/parser': 7.2.0(eslint@8.57.0)(typescript@5.5.2) + '@typescript-eslint/parser': 7.2.0(eslint@8.57.0)(typescript@5.6.2) eslint: 8.57.0 eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@7.2.0(eslint@8.57.0)(typescript@5.5.2))(eslint-plugin-import@2.29.1)(eslint@8.57.0) + eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@7.2.0(eslint@8.57.0)(typescript@5.6.2))(eslint-plugin-import@2.29.1)(eslint@8.57.0) transitivePeerDependencies: - supports-color - eslint-plugin-cypress@3.3.0(eslint@8.57.0): + eslint-plugin-cypress@3.5.0(eslint@8.57.0): dependencies: eslint: 8.57.0 globals: 13.20.0 - eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.2.0(eslint@8.57.0)(typescript@5.5.2))(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0): + eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.2.0(eslint@8.57.0)(typescript@5.6.2))(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0): dependencies: array-includes: 3.1.7 array.prototype.findlastindex: 1.2.3 @@ -22248,7 +19353,7 @@ snapshots: doctrine: 2.1.0 eslint: 8.57.0 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.8.0(@typescript-eslint/parser@7.2.0(eslint@8.57.0)(typescript@5.5.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.2.0(eslint@8.57.0)(typescript@5.5.2))(eslint-plugin-import@2.29.1)(eslint@8.57.0))(eslint@8.57.0) + eslint-module-utils: 2.8.0(@typescript-eslint/parser@7.2.0(eslint@8.57.0)(typescript@5.6.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.2.0(eslint@8.57.0)(typescript@5.6.2))(eslint-plugin-import@2.29.1)(eslint@8.57.0))(eslint@8.57.0) hasown: 2.0.2 is-core-module: 2.13.1 is-glob: 4.0.3 @@ -22259,12 +19364,14 @@ snapshots: semver: 7.6.0 tsconfig-paths: 4.2.0 optionalDependencies: - '@typescript-eslint/parser': 7.2.0(eslint@8.57.0)(typescript@5.5.2) + '@typescript-eslint/parser': 7.2.0(eslint@8.57.0)(typescript@5.6.2) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack - supports-color + eslint-plugin-local@1.0.0: {} + eslint-plugin-lodash@7.4.0(eslint@8.57.0): dependencies: eslint: 8.57.0 @@ -22272,11 +19379,12 @@ snapshots: eslint-plugin-n8n-local-rules@1.0.0: {} - eslint-plugin-n8n-nodes-base@1.16.0(eslint@8.57.0)(typescript@5.5.2): + eslint-plugin-n8n-nodes-base@1.16.3(eslint@8.57.0)(typescript@5.6.2): dependencies: - '@typescript-eslint/utils': 6.7.5(eslint@8.57.0)(typescript@5.5.2) + '@typescript-eslint/utils': 6.21.0(eslint@8.57.0)(typescript@5.6.2) camel-case: 4.1.2 - indefinite: 2.4.3 + eslint-plugin-local: 1.0.0 + indefinite: 2.5.1 pascal-case: 3.1.2 pluralize: 8.0.0 sentence-case: 3.0.4 @@ -22286,16 +19394,6 @@ snapshots: - supports-color - typescript - eslint-plugin-prettier@5.1.3(@types/eslint@8.56.5)(eslint-config-prettier@9.1.0(eslint@8.57.0))(eslint@8.57.0)(prettier@3.2.5): - dependencies: - eslint: 8.57.0 - prettier: 3.2.5 - prettier-linter-helpers: 1.0.0 - synckit: 0.8.8 - optionalDependencies: - '@types/eslint': 8.56.5 - eslint-config-prettier: 9.1.0(eslint@8.57.0) - eslint-plugin-unicorn@51.0.1(eslint@8.57.0): dependencies: '@babel/helper-validator-identifier': 7.22.20 @@ -22318,12 +19416,12 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-plugin-unused-imports@3.1.0(@typescript-eslint/eslint-plugin@7.2.0(@typescript-eslint/parser@7.2.0(eslint@8.57.0)(typescript@5.5.2))(eslint@8.57.0)(typescript@5.5.2))(eslint@8.57.0): + eslint-plugin-unused-imports@3.1.0(@typescript-eslint/eslint-plugin@7.2.0(@typescript-eslint/parser@7.2.0(eslint@8.57.0)(typescript@5.6.2))(eslint@8.57.0)(typescript@5.6.2))(eslint@8.57.0): dependencies: eslint: 8.57.0 eslint-rule-composer: 0.3.0 optionalDependencies: - '@typescript-eslint/eslint-plugin': 7.2.0(@typescript-eslint/parser@7.2.0(eslint@8.57.0)(typescript@5.5.2))(eslint@8.57.0)(typescript@5.5.2) + '@typescript-eslint/eslint-plugin': 7.2.0(@typescript-eslint/parser@7.2.0(eslint@8.57.0)(typescript@5.6.2))(eslint@8.57.0)(typescript@5.6.2) eslint-plugin-vue@9.23.0(eslint@8.57.0): dependencies: @@ -22340,11 +19438,6 @@ snapshots: eslint-rule-composer@0.3.0: {} - eslint-scope@5.1.1: - dependencies: - esrecurse: 4.3.0 - estraverse: 4.3.0 - eslint-scope@7.2.2: dependencies: esrecurse: 4.3.0 @@ -22365,7 +19458,7 @@ snapshots: ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.3 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 doctrine: 3.0.0 escape-string-regexp: 4.0.0 eslint-scope: 7.2.2 @@ -22399,8 +19492,8 @@ snapshots: espree@9.6.1: dependencies: - acorn: 8.11.2 - acorn-jsx: 5.3.2(acorn@8.11.2) + acorn: 8.12.1 + acorn-jsx: 5.3.2(acorn@8.12.1) eslint-visitor-keys: 3.4.3 esprima-next@5.8.4: {} @@ -22425,7 +19518,7 @@ snapshots: estree-walker@3.0.3: dependencies: - '@types/estree': 1.0.5 + '@types/estree': 1.0.6 esutils@2.0.3: {} @@ -22447,6 +19540,8 @@ snapshots: eventemitter3@4.0.7: {} + eventemitter3@5.0.1: {} + events@3.3.0: {} eventsource@2.0.2: {} @@ -22475,18 +19570,6 @@ snapshots: signal-exit: 3.0.7 strip-final-newline: 2.0.0 - execa@8.0.1: - dependencies: - cross-spawn: 7.0.3 - get-stream: 8.0.1 - human-signals: 5.0.0 - is-stream: 3.0.0 - merge-stream: 2.0.0 - npm-run-path: 5.1.0 - onetime: 6.0.0 - signal-exit: 4.1.0 - strip-final-newline: 3.0.0 - executable@4.1.1: dependencies: pify: 2.3.0 @@ -22518,31 +19601,32 @@ snapshots: expr-eval@2.0.2: {} - express-async-errors@3.1.1(express@4.19.2): + express-async-errors@3.1.1(express@4.21.1): dependencies: - express: 4.19.2 + express: 4.21.1 express-handlebars@7.1.2: dependencies: - glob: 10.3.10 + glob: 10.4.5 graceful-fs: 4.2.11 handlebars: 4.7.8 - express-openapi-validator@5.1.6: + express-openapi-validator@5.3.7(express@4.21.1): dependencies: - '@apidevtools/json-schema-ref-parser': 9.1.2 - '@types/multer': 1.4.7 - ajv: 8.12.0 - ajv-draft-04: 1.0.0(ajv@8.12.0) - ajv-formats: 2.1.1(ajv@8.12.0) + '@apidevtools/json-schema-ref-parser': 11.7.0 + '@types/multer': 1.4.12 + ajv: 8.17.1 + ajv-draft-04: 1.0.0(ajv@8.17.1) + ajv-formats: 2.1.1(ajv@8.17.1) content-type: 1.0.5 + express: 4.21.1 json-schema-traverse: 1.0.0 lodash.clonedeep: 4.5.0 lodash.get: 4.4.2 media-typer: 1.1.0 multer: 1.4.5-lts.1 ono: 7.1.3 - path-to-regexp: 6.2.1 + path-to-regexp: 8.2.0 express-prom-bundle@6.6.0(prom-client@13.2.0): dependencies: @@ -22550,38 +19634,38 @@ snapshots: prom-client: 13.2.0 url-value-parser: 2.2.0 - express-rate-limit@7.2.0(express@4.19.2): + express-rate-limit@7.2.0(express@4.21.1): dependencies: - express: 4.19.2 + express: 4.21.1 - express@4.19.2: + express@4.21.1: dependencies: accepts: 1.3.8 array-flatten: 1.1.1 - body-parser: 1.20.2 + body-parser: 1.20.3 content-disposition: 0.5.4 content-type: 1.0.5 - cookie: 0.6.0 + cookie: 0.7.1 cookie-signature: 1.0.6 debug: 2.6.9 depd: 2.0.0 - encodeurl: 1.0.2 + encodeurl: 2.0.0 escape-html: 1.0.3 etag: 1.8.1 - finalhandler: 1.2.0 + finalhandler: 1.3.1 fresh: 0.5.2 http-errors: 2.0.0 - merge-descriptors: 1.0.1 + merge-descriptors: 1.0.3 methods: 1.1.2 on-finished: 2.4.1 parseurl: 1.3.3 - path-to-regexp: 0.1.7 + path-to-regexp: 0.1.10 proxy-addr: 2.0.7 - qs: 6.11.0 + qs: 6.13.0 range-parser: 1.2.1 safe-buffer: 5.2.1 - send: 0.18.0 - serve-static: 1.15.0 + send: 0.19.0 + serve-static: 1.16.2 setprototypeof: 1.2.0 statuses: 2.0.1 type-is: 1.6.18 @@ -22600,7 +19684,7 @@ snapshots: extract-zip@2.0.1(supports-color@8.1.1): dependencies: - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.6(supports-color@8.1.1) get-stream: 5.2.0 yauzl: 2.10.0 optionalDependencies: @@ -22614,15 +19698,13 @@ snapshots: fast-deep-equal@3.1.3: {} - fast-diff@1.2.0: {} - fast-glob@3.2.12: dependencies: '@nodelib/fs.stat': 2.0.5 '@nodelib/fs.walk': 1.2.8 glob-parent: 5.1.2 merge2: 1.4.1 - micromatch: 4.0.5 + micromatch: 4.0.8 fast-glob@3.3.2: dependencies: @@ -22630,7 +19712,7 @@ snapshots: '@nodelib/fs.walk': 1.2.8 glob-parent: 5.1.2 merge2: 1.4.1 - micromatch: 4.0.5 + micromatch: 4.0.8 fast-json-stable-stringify@2.1.0: {} @@ -22645,15 +19727,9 @@ snapshots: '@babel/runtime': 7.24.7 tslib: 2.6.2 - fast-xml-parser@4.2.5: - dependencies: - strnum: 1.0.5 + fast-uri@3.0.1: {} - fast-xml-parser@4.2.7: - dependencies: - strnum: 1.0.5 - - fast-xml-parser@4.3.5: + fast-xml-parser@4.4.1: dependencies: strnum: 1.0.5 @@ -22683,8 +19759,6 @@ snapshots: sprintf-js: 1.1.2 tmp: 0.0.33 - fetch-retry@5.0.3: {} - fflate@0.7.4: {} figures@3.2.0: @@ -22697,11 +19771,6 @@ snapshots: file-saver@2.0.5: {} - file-system-cache@2.3.0: - dependencies: - fs-extra: 11.1.1 - ramda: 0.29.0 - file-type@16.5.4: dependencies: readable-web-to-node-stream: 3.0.2 @@ -22716,16 +19785,16 @@ snapshots: filesize@10.1.0: {} - fill-range@7.0.1: + fill-range@7.1.1: dependencies: to-regex-range: 5.0.1 filter-obj@1.1.0: {} - finalhandler@1.2.0: + finalhandler@1.3.1: dependencies: debug: 2.6.9 - encodeurl: 1.0.2 + encodeurl: 2.0.0 escape-html: 1.0.3 on-finished: 2.4.1 parseurl: 1.3.3 @@ -22734,12 +19803,6 @@ snapshots: transitivePeerDependencies: - supports-color - find-cache-dir@2.1.0: - dependencies: - commondir: 1.0.1 - make-dir: 2.1.0 - pkg-dir: 3.0.0 - find-cache-dir@3.3.2: dependencies: commondir: 1.0.1 @@ -22748,10 +19811,6 @@ snapshots: find-package-json@1.2.0: {} - find-up@3.0.0: - dependencies: - locate-path: 3.0.0 - find-up@4.1.0: dependencies: locate-path: 5.0.0 @@ -22773,17 +19832,15 @@ snapshots: flatted@3.2.7: {} - flow-parser@0.197.0: {} - fn.name@1.1.0: {} - follow-redirects@1.15.6(debug@3.2.7): + follow-redirects@1.15.6(debug@4.3.6): optionalDependencies: - debug: 3.2.7(supports-color@5.5.0) + debug: 4.3.6(supports-color@8.1.1) - follow-redirects@1.15.6(debug@4.3.4): + follow-redirects@1.15.6(debug@4.3.7): optionalDependencies: - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.7 for-each@0.3.3: dependencies: @@ -22895,8 +19952,6 @@ snapshots: functions-have-names@1.2.3: {} - fuse.js@7.0.0: {} - gauge@4.0.4: dependencies: aproba: 2.0.0 @@ -22930,7 +19985,7 @@ snapshots: - encoding - supports-color - gcp-metadata@5.2.0(encoding@0.1.13): + gcp-metadata@5.3.0(encoding@0.1.13): dependencies: gaxios: 5.1.0(encoding@0.1.13) json-bigint: 1.0.0 @@ -22963,13 +20018,6 @@ snapshots: get-func-name@2.0.2: {} - get-intrinsic@1.2.1: - dependencies: - function-bind: 1.1.2 - has: 1.0.3 - has-proto: 1.0.1 - has-symbols: 1.0.3 - get-intrinsic@1.2.4: dependencies: es-errors: 1.3.0 @@ -22978,10 +20026,6 @@ snapshots: has-symbols: 1.0.3 hasown: 2.0.2 - get-nonce@1.0.1: {} - - get-npm-tarball-url@2.0.3: {} - get-package-type@0.1.0: {} get-port-please@3.1.2: {} @@ -22994,8 +20038,6 @@ snapshots: get-stream@6.0.1: {} - get-stream@8.0.1: {} - get-symbol-description@1.0.0: dependencies: call-bind: 1.0.7 @@ -23019,18 +20061,6 @@ snapshots: dependencies: assert-plus: 1.0.0 - giget@1.0.0: - dependencies: - colorette: 2.0.19 - defu: 6.1.3 - https-proxy-agent: 5.0.1 - mri: 1.2.0 - node-fetch-native: 1.0.1 - pathe: 1.1.1 - tar: 6.2.1 - transitivePeerDependencies: - - supports-color - github-from-package@0.0.0: {} github-slugger@2.0.0: {} @@ -23043,23 +20073,22 @@ snapshots: dependencies: is-glob: 4.0.3 - glob-to-regexp@0.4.1: {} - - glob@10.3.10: - dependencies: - foreground-child: 3.1.1 - jackspeak: 2.3.6 - minimatch: 9.0.3 - minipass: 7.0.2 - path-scurry: 1.10.1 - glob@10.3.3: dependencies: foreground-child: 3.1.1 jackspeak: 2.3.6 - minimatch: 9.0.3 - minipass: 7.0.2 - path-scurry: 1.10.1 + minimatch: 9.0.5 + minipass: 7.1.2 + path-scurry: 1.11.1 + + glob@10.4.5: + dependencies: + foreground-child: 3.1.1 + jackspeak: 3.4.3 + minimatch: 9.0.5 + minipass: 7.1.2 + package-json-from-dist: 1.0.0 + path-scurry: 1.11.1 glob@7.2.3: dependencies: @@ -23083,7 +20112,7 @@ snapshots: fs.realpath: 1.0.0 minimatch: 7.4.2 minipass: 4.2.5 - path-scurry: 1.10.1 + path-scurry: 1.11.1 global-dirs@3.0.0: dependencies: @@ -23099,32 +20128,20 @@ snapshots: dependencies: define-properties: 1.2.1 + globalthis@1.0.4: + dependencies: + define-properties: 1.2.1 + gopd: 1.0.1 + globby@11.1.0: dependencies: array-union: 2.1.0 dir-glob: 3.0.1 - fast-glob: 3.2.12 + fast-glob: 3.3.2 ignore: 5.2.4 merge2: 1.4.1 slash: 3.0.0 - globby@13.2.2: - dependencies: - dir-glob: 3.0.1 - fast-glob: 3.3.2 - ignore: 5.2.4 - merge2: 1.4.1 - slash: 4.0.0 - - globby@14.0.1: - dependencies: - '@sindresorhus/merge-streams': 2.3.0 - fast-glob: 3.3.2 - ignore: 5.2.4 - path-type: 5.0.0 - slash: 5.1.0 - unicorn-magic: 0.1.0 - gm@1.25.0: dependencies: array-parallel: 0.1.3 @@ -23134,14 +20151,14 @@ snapshots: transitivePeerDependencies: - supports-color - google-auth-library@8.8.0(encoding@0.1.13): + google-auth-library@8.9.0(encoding@0.1.13): dependencies: arrify: 2.0.1 base64-js: 1.5.1 ecdsa-sig-formatter: 1.0.11 fast-text-encoding: 1.0.6 gaxios: 5.1.0(encoding@0.1.13) - gcp-metadata: 5.2.0(encoding@0.1.13) + gcp-metadata: 5.3.0(encoding@0.1.13) gtoken: 6.1.2(encoding@0.1.13) jws: 4.0.0 lru-cache: 6.0.0 @@ -23164,7 +20181,7 @@ snapshots: google-gax@4.3.4(encoding@0.1.13): dependencies: '@grpc/grpc-js': 1.10.8 - '@grpc/proto-loader': 0.7.10 + '@grpc/proto-loader': 0.7.13 '@types/long': 4.0.2 abort-controller: 3.0.0 duplexify: 4.1.2 @@ -23183,25 +20200,23 @@ snapshots: dependencies: node-forge: 1.3.1 - google-timezones-json@1.1.0: {} - gopd@1.0.1: dependencies: get-intrinsic: 1.2.4 - graceful-fs@4.2.10: {} + graceful-fs@4.2.10: + optional: true graceful-fs@4.2.11: {} graphemer@1.4.0: {} - groq-sdk@0.3.2(encoding@0.1.13): + groq-sdk@0.5.0(encoding@0.1.13): dependencies: '@types/node': 18.16.16 '@types/node-fetch': 2.6.4 abort-controller: 3.0.0 agentkeepalive: 4.2.1 - digest-fetch: 1.3.0 form-data-encoder: 1.7.2 formdata-node: 4.4.1 node-fetch: 2.7.0(encoding@0.1.13) @@ -23227,15 +20242,6 @@ snapshots: - encoding - supports-color - gunzip-maybe@1.4.2: - dependencies: - browserify-zlib: 0.1.4 - is-deflate: 1.0.0 - is-gzip: 1.0.0 - peek-stream: 1.1.3 - pumpify: 1.5.1 - through2: 2.0.5 - handlebars@4.7.8: dependencies: minimist: 1.2.8 @@ -23255,16 +20261,10 @@ snapshots: dependencies: es-define-property: 1.0.0 - has-proto@1.0.1: {} - has-proto@1.0.3: {} has-symbols@1.0.3: {} - has-tostringtag@1.0.0: - dependencies: - has-symbols: 1.0.3 - has-tostringtag@1.0.2: dependencies: has-symbols: 1.0.3 @@ -23276,6 +20276,8 @@ snapshots: dependencies: function-bind: 1.1.2 + has@1.0.4: {} + hash-sum@2.0.0: {} hasown@2.0.0: @@ -23319,10 +20321,13 @@ snapshots: dependencies: parse-passwd: 1.0.0 - hookable@5.5.3: {} - hosted-git-info@2.8.9: {} + html-element-map@1.3.1: + dependencies: + array.prototype.filter: 1.0.4 + call-bind: 1.0.7 + html-encoding-sniffer@3.0.0: dependencies: whatwg-encoding: 2.0.0 @@ -23331,8 +20336,20 @@ snapshots: dependencies: whatwg-encoding: 3.1.1 + html-entities@2.5.2: {} + html-escaper@2.0.2: {} + html-minifier@4.0.0: + dependencies: + camel-case: 3.0.0 + clean-css: 4.2.4 + commander: 2.20.3 + he: 1.2.0 + param-case: 2.1.1 + relateurl: 0.2.7 + uglify-js: 3.17.4 + html-to-text@9.0.5: dependencies: '@selderee/plugin-htmlparser2': 0.11.0 @@ -23341,6 +20358,13 @@ snapshots: htmlparser2: 8.0.2 selderee: 0.11.0 + htmlparser2@5.0.1: + dependencies: + domelementtype: 2.3.0 + domhandler: 3.3.0 + domutils: 2.8.0 + entities: 2.2.0 + htmlparser2@6.1.0: dependencies: domelementtype: 2.3.0 @@ -23353,7 +20377,14 @@ snapshots: domelementtype: 2.3.0 domhandler: 5.0.3 domutils: 3.0.1 - entities: 4.4.0 + entities: 4.5.0 + + htmlparser2@9.1.0: + dependencies: + domelementtype: 2.3.0 + domhandler: 5.0.3 + domutils: 3.1.0 + entities: 4.5.0 http-cache-semantics@4.1.1: optional: true @@ -23370,7 +20401,7 @@ snapshots: dependencies: '@tootallnate/once': 1.1.2 agent-base: 6.0.2 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.7 transitivePeerDependencies: - supports-color optional: true @@ -23379,14 +20410,14 @@ snapshots: dependencies: '@tootallnate/once': 2.0.0 agent-base: 6.0.2 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.7 transitivePeerDependencies: - supports-color http-proxy-agent@7.0.0: dependencies: agent-base: 7.1.0 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.7 transitivePeerDependencies: - supports-color @@ -23401,14 +20432,21 @@ snapshots: https-proxy-agent@5.0.1: dependencies: agent-base: 6.0.2 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.7 transitivePeerDependencies: - supports-color https-proxy-agent@7.0.2: dependencies: agent-base: 7.1.0 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.7 + transitivePeerDependencies: + - supports-color + + https-proxy-agent@7.0.5: + dependencies: + agent-base: 7.1.0 + debug: 4.3.7 transitivePeerDependencies: - supports-color @@ -23416,8 +20454,6 @@ snapshots: human-signals@2.1.0: {} - human-signals@5.0.0: {} - humanize-duration@3.27.3: {} humanize-ms@1.2.1: @@ -23436,7 +20472,7 @@ snapshots: ics@2.40.0: dependencies: - nanoid: 3.3.6 + nanoid: 3.3.7 yup: 0.32.11 ieee754@1.2.1: {} @@ -23468,7 +20504,7 @@ snapshots: imurmurhash@0.1.4: {} - indefinite@2.4.3: {} + indefinite@2.5.1: {} indent-string@4.0.0: {} @@ -23477,7 +20513,7 @@ snapshots: infisical-node@1.3.0: dependencies: - axios: 1.6.7(debug@3.2.7) + axios: 1.7.7 dotenv: 16.3.1 tweetnacl: 1.0.3 tweetnacl-util: 0.15.1 @@ -23517,20 +20553,16 @@ snapshots: dependencies: get-intrinsic: 1.2.4 has: 1.0.3 - side-channel: 1.0.4 + side-channel: 1.0.6 internal-slot@1.0.7: dependencies: es-errors: 1.3.0 hasown: 2.0.2 - side-channel: 1.0.4 + side-channel: 1.0.6 interpret@1.4.0: {} - invariant@2.2.4: - dependencies: - loose-envify: 1.4.0 - ioredis-mock@8.8.1(@types/ioredis-mock@8.2.2)(ioredis@5.3.2): dependencies: '@ioredis/as-callback': 3.0.0 @@ -23545,7 +20577,7 @@ snapshots: dependencies: '@ioredis/commands': 1.2.0 cluster-key-slot: 1.1.2 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.5 denque: 2.1.0 lodash.defaults: 4.2.0 lodash.isarguments: 3.1.0 @@ -23555,24 +20587,23 @@ snapshots: transitivePeerDependencies: - supports-color - ip@2.0.1: {} + ip@2.0.1: + optional: true ipaddr.js@1.9.1: {} is-absolute-url@4.0.1: {} - is-any-array@2.0.1: {} - is-arguments@1.1.1: dependencies: call-bind: 1.0.7 - has-tostringtag: 1.0.0 + has-tostringtag: 1.0.2 is-array-buffer@3.0.2: dependencies: call-bind: 1.0.7 get-intrinsic: 1.2.4 - is-typed-array: 1.1.10 + is-typed-array: 1.1.13 is-array-buffer@3.0.4: dependencies: @@ -23587,14 +20618,10 @@ snapshots: dependencies: has-bigints: 1.0.2 - is-binary-path@2.1.0: - dependencies: - binary-extensions: 2.2.0 - is-boolean-object@1.1.2: dependencies: call-bind: 1.0.7 - has-tostringtag: 1.0.0 + has-tostringtag: 1.0.2 is-buffer@1.1.6: {} @@ -23612,11 +20639,13 @@ snapshots: dependencies: hasown: 2.0.0 + is-data-view@1.0.1: + dependencies: + is-typed-array: 1.1.13 + is-date-object@1.0.5: dependencies: - has-tostringtag: 1.0.0 - - is-deflate@1.0.0: {} + has-tostringtag: 1.0.2 is-docker@2.2.1: {} @@ -23639,22 +20668,16 @@ snapshots: dependencies: is-extglob: 2.1.1 - is-gzip@1.0.0: {} - is-installed-globally@0.4.0: dependencies: global-dirs: 3.0.0 is-path-inside: 3.0.3 - is-interactive@1.0.0: {} - is-lambda@1.0.1: optional: true is-map@2.0.2: {} - is-module@1.0.0: {} - is-nan@1.3.2: dependencies: call-bind: 1.0.7 @@ -23666,18 +20689,12 @@ snapshots: is-number-object@1.0.7: dependencies: - has-tostringtag: 1.0.0 + has-tostringtag: 1.0.2 is-number@7.0.0: {} - is-path-cwd@2.2.0: {} - is-path-inside@3.0.3: {} - is-plain-object@2.0.4: - dependencies: - isobject: 3.0.1 - is-plain-object@5.0.0: {} is-potential-custom-element-name@1.0.1: {} @@ -23686,14 +20703,10 @@ snapshots: is-property@1.0.2: {} - is-reference@1.2.1: - dependencies: - '@types/estree': 1.0.0 - is-regex@1.1.4: dependencies: call-bind: 1.0.7 - has-tostringtag: 1.0.0 + has-tostringtag: 1.0.2 is-retry-allowed@2.2.0: {} @@ -23709,24 +20722,16 @@ snapshots: is-stream@2.0.1: {} - is-stream@3.0.0: {} - is-string@1.0.7: dependencies: has-tostringtag: 1.0.2 + is-subset@0.1.1: {} + is-symbol@1.0.4: dependencies: has-symbols: 1.0.3 - is-typed-array@1.1.10: - dependencies: - available-typed-arrays: 1.0.5 - call-bind: 1.0.7 - for-each: 0.3.3 - gopd: 1.0.1 - has-tostringtag: 1.0.0 - is-typed-array@1.1.13: dependencies: which-typed-array: 1.1.15 @@ -23762,30 +20767,20 @@ snapshots: iso-639-1@2.1.15: {} - isobject@3.0.1: {} - isstream@0.1.2: {} - istanbul-lib-coverage@3.2.0: {} - istanbul-lib-coverage@3.2.2: {} istanbul-lib-instrument@5.2.1: dependencies: '@babel/core': 7.24.0 - '@babel/parser': 7.24.0 + '@babel/parser': 7.25.6 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.2 semver: 7.6.0 transitivePeerDependencies: - supports-color - istanbul-lib-report@3.0.0: - dependencies: - istanbul-lib-coverage: 3.2.2 - make-dir: 3.1.0 - supports-color: 7.2.0 - istanbul-lib-report@3.0.1: dependencies: istanbul-lib-coverage: 3.2.2 @@ -23794,26 +20789,21 @@ snapshots: istanbul-lib-source-maps@4.0.1: dependencies: - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.7 istanbul-lib-coverage: 3.2.2 source-map: 0.6.1 transitivePeerDependencies: - supports-color - istanbul-lib-source-maps@5.0.4: + istanbul-lib-source-maps@5.0.6: dependencies: '@jridgewell/trace-mapping': 0.3.25 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.7 istanbul-lib-coverage: 3.2.2 transitivePeerDependencies: - supports-color - istanbul-reports@3.1.5: - dependencies: - html-escaper: 2.0.2 - istanbul-lib-report: 3.0.1 - - istanbul-reports@3.1.6: + istanbul-reports@3.1.7: dependencies: html-escaper: 2.0.2 istanbul-lib-report: 3.0.1 @@ -23824,6 +20814,12 @@ snapshots: optionalDependencies: '@pkgjs/parseargs': 0.11.0 + jackspeak@3.4.3: + dependencies: + '@isaacs/cliui': 8.0.2 + optionalDependencies: + '@pkgjs/parseargs': 0.11.0 + jake@10.8.5: dependencies: async: 3.2.4 @@ -23862,16 +20858,16 @@ snapshots: - babel-plugin-macros - supports-color - jest-cli@29.6.2(@types/node@18.16.16): + jest-cli@29.6.2(@types/node@18.16.16)(ts-node@10.9.2(@types/node@18.16.16)(typescript@5.6.2)): dependencies: - '@jest/core': 29.6.2 + '@jest/core': 29.6.2(ts-node@10.9.2(@types/node@18.16.16)(typescript@5.6.2)) '@jest/test-result': 29.6.2 '@jest/types': 29.6.1 chalk: 4.1.2 exit: 0.1.2 graceful-fs: 4.2.11 import-local: 3.1.0 - jest-config: 29.6.2(@types/node@18.16.16) + jest-config: 29.6.2(@types/node@18.16.16)(ts-node@10.9.2(@types/node@18.16.16)(typescript@5.6.2)) jest-util: 29.6.2 jest-validate: 29.6.2 prompts: 2.4.2 @@ -23882,7 +20878,7 @@ snapshots: - supports-color - ts-node - jest-config@29.6.2(@types/node@18.16.16): + jest-config@29.6.2(@types/node@18.16.16)(ts-node@10.9.2(@types/node@18.16.16)(typescript@5.6.2)): dependencies: '@babel/core': 7.24.0 '@jest/test-sequencer': 29.6.2 @@ -23901,13 +20897,14 @@ snapshots: jest-runner: 29.6.2 jest-util: 29.6.2 jest-validate: 29.6.2 - micromatch: 4.0.5 + micromatch: 4.0.8 parse-json: 5.2.0 - pretty-format: 29.6.2 + pretty-format: 29.7.0 slash: 3.0.0 strip-json-comments: 3.1.1 optionalDependencies: '@types/node': 18.16.16 + ts-node: 10.9.2(@types/node@18.16.16)(typescript@5.6.2) transitivePeerDependencies: - babel-plugin-macros - supports-color @@ -23977,7 +20974,7 @@ snapshots: jest-regex-util: 29.4.3 jest-util: 29.6.2 jest-worker: 29.6.2 - micromatch: 4.0.5 + micromatch: 4.0.8 walker: 1.0.8 optionalDependencies: fsevents: 2.3.3 @@ -23992,7 +20989,7 @@ snapshots: chalk: 4.1.2 jest-diff: 29.5.0 jest-get-type: 29.4.3 - pretty-format: 29.6.2 + pretty-format: 29.7.0 jest-matcher-utils@29.6.2: dependencies: @@ -24008,8 +21005,8 @@ snapshots: '@types/stack-utils': 2.0.1 chalk: 4.1.2 graceful-fs: 4.2.11 - micromatch: 4.0.5 - pretty-format: 29.6.2 + micromatch: 4.0.8 + pretty-format: 29.7.0 slash: 3.0.0 stack-utils: 2.0.6 @@ -24020,16 +21017,16 @@ snapshots: '@types/stack-utils': 2.0.1 chalk: 4.1.2 graceful-fs: 4.2.11 - micromatch: 4.0.5 - pretty-format: 29.6.2 + micromatch: 4.0.8 + pretty-format: 29.7.0 slash: 3.0.0 stack-utils: 2.0.6 - jest-mock-extended@3.0.4(jest@29.6.2(@types/node@18.16.16))(typescript@5.5.2): + jest-mock-extended@3.0.4(jest@29.6.2(@types/node@18.16.16)(ts-node@10.9.2(@types/node@18.16.16)(typescript@5.6.2)))(typescript@5.6.2): dependencies: - jest: 29.6.2(@types/node@18.16.16) - ts-essentials: 7.0.3(typescript@5.5.2) - typescript: 5.5.2 + jest: 29.6.2(@types/node@18.16.16)(ts-node@10.9.2(@types/node@18.16.16)(typescript@5.6.2)) + ts-essentials: 7.0.3(typescript@5.6.2) + typescript: 5.6.2 jest-mock@29.6.2: dependencies: @@ -24121,7 +21118,7 @@ snapshots: '@babel/generator': 7.22.9 '@babel/plugin-syntax-jsx': 7.18.6(@babel/core@7.24.0) '@babel/plugin-syntax-typescript': 7.20.0(@babel/core@7.24.0) - '@babel/types': 7.24.0 + '@babel/types': 7.25.6 '@jest/expect-utils': 29.6.2 '@jest/transform': 29.6.2 '@jest/types': 29.6.1 @@ -24135,7 +21132,7 @@ snapshots: jest-message-util: 29.6.2 jest-util: 29.6.2 natural-compare: 1.4.0 - pretty-format: 29.6.2 + pretty-format: 29.7.0 semver: 7.6.0 transitivePeerDependencies: - supports-color @@ -24165,7 +21162,7 @@ snapshots: chalk: 4.1.2 jest-get-type: 29.4.3 leven: 3.1.0 - pretty-format: 29.6.2 + pretty-format: 29.7.0 jest-watcher@29.6.2: dependencies: @@ -24178,12 +21175,6 @@ snapshots: jest-util: 29.6.2 string-length: 4.0.2 - jest-worker@27.5.1: - dependencies: - '@types/node': 18.16.16 - merge-stream: 2.0.0 - supports-color: 8.1.1 - jest-worker@29.6.2: dependencies: '@types/node': 18.16.16 @@ -24191,12 +21182,12 @@ snapshots: merge-stream: 2.0.0 supports-color: 8.1.1 - jest@29.6.2(@types/node@18.16.16): + jest@29.6.2(@types/node@18.16.16)(ts-node@10.9.2(@types/node@18.16.16)(typescript@5.6.2)): dependencies: - '@jest/core': 29.6.2 + '@jest/core': 29.6.2(ts-node@10.9.2(@types/node@18.16.16)(typescript@5.6.2)) '@jest/types': 29.6.1 import-local: 3.1.0 - jest-cli: 29.6.2(@types/node@18.16.16) + jest-cli: 29.6.2(@types/node@18.16.16)(ts-node@10.9.2(@types/node@18.16.16)(typescript@5.6.2)) transitivePeerDependencies: - '@types/node' - babel-plugin-macros @@ -24209,11 +21200,11 @@ snapshots: jmespath@0.16.0: {} - joi@17.11.0: + joi@17.13.3: dependencies: '@hapi/hoek': 9.3.0 '@hapi/topo': 5.1.0 - '@sideway/address': 4.1.4 + '@sideway/address': 4.1.5 '@sideway/formula': 3.0.1 '@sideway/pinpoint': 2.0.0 @@ -24244,8 +21235,6 @@ snapshots: js-tokens@4.0.0: {} - js-tokens@8.0.3: {} - js-yaml@3.14.1: dependencies: argparse: 1.0.10 @@ -24259,37 +21248,12 @@ snapshots: jsbn@0.1.1: {} - jscodeshift@0.15.2(@babel/preset-env@7.24.6(@babel/core@7.24.6)): - dependencies: - '@babel/core': 7.24.6 - '@babel/parser': 7.24.0 - '@babel/plugin-transform-class-properties': 7.23.3(@babel/core@7.24.6) - '@babel/plugin-transform-modules-commonjs': 7.23.3(@babel/core@7.24.6) - '@babel/plugin-transform-nullish-coalescing-operator': 7.23.4(@babel/core@7.24.6) - '@babel/plugin-transform-optional-chaining': 7.23.4(@babel/core@7.24.6) - '@babel/plugin-transform-private-methods': 7.23.3(@babel/core@7.24.6) - '@babel/preset-flow': 7.24.0(@babel/core@7.24.6) - '@babel/preset-typescript': 7.23.3(@babel/core@7.24.6) - '@babel/register': 7.23.7(@babel/core@7.24.6) - babel-core: 7.0.0-bridge.0(@babel/core@7.24.6) - chalk: 4.1.2 - flow-parser: 0.197.0 - graceful-fs: 4.2.11 - micromatch: 4.0.5 - neo-async: 2.6.2 - node-dir: 0.1.17 - recast: 0.23.6 - temp: 0.8.4 - write-file-atomic: 2.4.3 - optionalDependencies: - '@babel/preset-env': 7.24.6(@babel/core@7.24.6) - transitivePeerDependencies: - - supports-color + jsdoc-type-pratt-parser@4.1.0: {} jsdom@20.0.2: dependencies: abab: 2.0.6 - acorn: 8.11.2 + acorn: 8.12.1 acorn-globals: 7.0.1 cssom: 0.5.0 cssstyle: 2.3.0 @@ -24302,7 +21266,7 @@ snapshots: http-proxy-agent: 5.0.0 https-proxy-agent: 5.0.1 is-potential-custom-element-name: 1.0.1 - nwsapi: 2.2.2 + nwsapi: 2.2.7 parse5: 7.1.2 saxes: 6.0.0 symbol-tree: 3.2.4 @@ -24355,7 +21319,7 @@ snapshots: json-bigint@1.0.0: dependencies: - bignumber.js: 9.1.1 + bignumber.js: 9.1.2 json-diff@1.0.6: dependencies: @@ -24369,8 +21333,6 @@ snapshots: dependencies: foreach: 2.0.6 - json-schema-to-zod@2.1.0: {} - json-schema-traverse@0.4.1: {} json-schema-traverse@1.0.0: {} @@ -24441,6 +21403,16 @@ snapshots: readable-stream: 2.3.7 setimmediate: 1.0.5 + juice@10.0.1(encoding@0.1.13): + dependencies: + cheerio: 1.0.0-rc.12 + commander: 6.2.1 + mensch: 0.3.4 + slick: 1.12.2 + web-resource-inliner: 6.0.1(encoding@0.1.13) + transitivePeerDependencies: + - encoding + jwa@1.4.1: dependencies: buffer-equal-constant-time: 1.0.1 @@ -24465,124 +21437,86 @@ snapshots: kafkajs@1.16.0: {} - kind-of@6.0.3: {} - kleur@3.0.3: {} kolorist@1.8.0: {} kuler@2.0.0: {} - langchain@0.2.2(@aws-sdk/client-s3@3.478.0)(@aws-sdk/credential-provider-node@3.535.0)(@google-ai/generativelanguage@2.5.0(encoding@0.1.13))(@pinecone-database/pinecone@2.2.1)(@supabase/supabase-js@2.43.4)(@xata.io/client@0.28.4(typescript@5.5.2))(axios@1.6.7)(cheerio@1.0.0-rc.12)(d3-dsv@2.0.0)(encoding@0.1.13)(epub2@3.0.2(ts-toolbelt@9.6.0))(fast-xml-parser@4.3.5)(handlebars@4.7.8)(html-to-text@9.0.5)(ignore@5.2.4)(ioredis@5.3.2)(jsdom@23.0.1)(mammoth@1.7.2)(pdf-parse@1.1.1)(redis@4.6.12)(ws@8.17.1): + langchain@0.3.2(cbdnlo2gcodz2gzix466oterhe): dependencies: - '@langchain/core': 0.2.0 - '@langchain/openai': 0.0.33(encoding@0.1.13) - '@langchain/textsplitters': 0.0.2 - binary-extensions: 2.2.0 + '@langchain/core': 0.3.3(patch_hash=ekay3bw7hexufl733lypqvmx2e)(openai@4.63.0(encoding@0.1.13)(zod@3.23.8)) + '@langchain/openai': 0.3.0(@langchain/core@0.3.3(patch_hash=ekay3bw7hexufl733lypqvmx2e)(openai@4.63.0(encoding@0.1.13)(zod@3.23.8)))(encoding@0.1.13) + '@langchain/textsplitters': 0.1.0(@langchain/core@0.3.3(patch_hash=ekay3bw7hexufl733lypqvmx2e)(openai@4.63.0(encoding@0.1.13)(zod@3.23.8))) js-tiktoken: 1.0.12 js-yaml: 4.1.0 jsonpointer: 5.0.1 - langchainhub: 0.0.8 - langsmith: 0.1.12 - ml-distance: 4.0.1 + langsmith: 0.1.59(openai@4.63.0(encoding@0.1.13)(zod@3.23.8)) openapi-types: 12.1.3 p-retry: 4.6.2 - uuid: 9.0.1 + uuid: 10.0.0 yaml: 2.3.4 zod: 3.23.8 - zod-to-json-schema: 3.23.0(zod@3.23.8) + zod-to-json-schema: 3.23.3(zod@3.23.8) optionalDependencies: - '@aws-sdk/client-s3': 3.478.0 - '@aws-sdk/credential-provider-node': 3.535.0 - '@google-ai/generativelanguage': 2.5.0(encoding@0.1.13) - '@pinecone-database/pinecone': 2.2.1 - '@supabase/supabase-js': 2.43.4 - '@xata.io/client': 0.28.4(typescript@5.5.2) - axios: 1.6.7(debug@3.2.7) - cheerio: 1.0.0-rc.12 - d3-dsv: 2.0.0 - epub2: 3.0.2(ts-toolbelt@9.6.0) - fast-xml-parser: 4.3.5 + '@langchain/anthropic': 0.3.1(@langchain/core@0.3.3(patch_hash=ekay3bw7hexufl733lypqvmx2e)(openai@4.63.0(encoding@0.1.13)(zod@3.23.8)))(encoding@0.1.13) + '@langchain/aws': 0.1.0(@aws-sdk/client-sso-oidc@3.666.0(@aws-sdk/client-sts@3.666.0))(@aws-sdk/client-sts@3.666.0)(@langchain/core@0.3.3(patch_hash=ekay3bw7hexufl733lypqvmx2e)(openai@4.63.0(encoding@0.1.13)(zod@3.23.8))) + '@langchain/cohere': 0.3.0(@aws-sdk/client-sso-oidc@3.666.0(@aws-sdk/client-sts@3.666.0))(@langchain/core@0.3.3(patch_hash=ekay3bw7hexufl733lypqvmx2e)(openai@4.63.0(encoding@0.1.13)(zod@3.23.8)))(encoding@0.1.13) + '@langchain/google-genai': 0.1.0(@langchain/core@0.3.3(patch_hash=ekay3bw7hexufl733lypqvmx2e)(openai@4.63.0(encoding@0.1.13)(zod@3.23.8)))(zod@3.23.8) + '@langchain/google-vertexai': 0.1.0(@langchain/core@0.3.3(patch_hash=ekay3bw7hexufl733lypqvmx2e)(openai@4.63.0(encoding@0.1.13)(zod@3.23.8)))(encoding@0.1.13)(zod@3.23.8) + '@langchain/groq': 0.1.2(@langchain/core@0.3.3(patch_hash=ekay3bw7hexufl733lypqvmx2e)(openai@4.63.0(encoding@0.1.13)(zod@3.23.8)))(encoding@0.1.13) + '@langchain/mistralai': 0.1.1(@langchain/core@0.3.3(patch_hash=ekay3bw7hexufl733lypqvmx2e)(openai@4.63.0(encoding@0.1.13)(zod@3.23.8)))(encoding@0.1.13) + '@langchain/ollama': 0.1.0(@langchain/core@0.3.3(patch_hash=ekay3bw7hexufl733lypqvmx2e)(openai@4.63.0(encoding@0.1.13)(zod@3.23.8))) + axios: 1.7.7 + cheerio: 1.0.0 handlebars: 4.7.8 - html-to-text: 9.0.5 - ignore: 5.2.4 - ioredis: 5.3.2 - jsdom: 23.0.1 - mammoth: 1.7.2 - pdf-parse: 1.1.1 - redis: 4.6.12 - ws: 8.17.1 transitivePeerDependencies: - encoding + - openai - supports-color - langchain@0.2.2(@aws-sdk/client-s3@3.478.0)(@aws-sdk/credential-provider-node@3.535.0)(@pinecone-database/pinecone@2.1.0)(@supabase/supabase-js@2.43.4)(@xata.io/client@0.28.4(typescript@5.5.2))(axios@1.6.7)(cheerio@1.0.0-rc.12)(d3-dsv@2.0.0)(encoding@0.1.13)(epub2@3.0.2)(fast-xml-parser@4.3.5)(handlebars@4.7.8)(html-to-text@9.0.5)(ignore@5.2.4)(ioredis@5.3.2)(jsdom@23.0.1)(mammoth@1.7.2)(pdf-parse@1.1.1)(redis@4.6.14)(ws@8.17.1): + langsmith@0.1.59(openai@4.63.0(encoding@0.1.13)(zod@3.23.8)): dependencies: - '@langchain/core': 0.2.0 - '@langchain/openai': 0.0.33(encoding@0.1.13) - '@langchain/textsplitters': 0.0.2 - binary-extensions: 2.2.0 - js-tiktoken: 1.0.12 - js-yaml: 4.1.0 - jsonpointer: 5.0.1 - langchainhub: 0.0.8 - langsmith: 0.1.12 - ml-distance: 4.0.1 - openapi-types: 12.1.3 - p-retry: 4.6.2 - uuid: 9.0.1 - yaml: 2.3.4 - zod: 3.23.8 - zod-to-json-schema: 3.23.0(zod@3.23.8) - optionalDependencies: - '@aws-sdk/client-s3': 3.478.0 - '@aws-sdk/credential-provider-node': 3.535.0 - '@pinecone-database/pinecone': 2.1.0 - '@supabase/supabase-js': 2.43.4 - '@xata.io/client': 0.28.4(typescript@5.5.2) - axios: 1.6.7(debug@3.2.7) - cheerio: 1.0.0-rc.12 - d3-dsv: 2.0.0 - epub2: 3.0.2(ts-toolbelt@9.6.0) - fast-xml-parser: 4.3.5 - handlebars: 4.7.8 - html-to-text: 9.0.5 - ignore: 5.2.4 - ioredis: 5.3.2 - jsdom: 23.0.1 - mammoth: 1.7.2 - pdf-parse: 1.1.1 - redis: 4.6.14 - ws: 8.17.1 - transitivePeerDependencies: - - encoding - - supports-color - - langchainhub@0.0.8: {} - - langsmith@0.1.12: - dependencies: - '@types/uuid': 9.0.7 + '@types/uuid': 10.0.0 commander: 10.0.1 p-queue: 6.6.2 p-retry: 4.6.2 - uuid: 9.0.1 + semver: 7.6.0 + uuid: 10.0.0 + optionalDependencies: + openai: 4.63.0(encoding@0.1.13)(zod@3.23.8) + + langsmith@0.1.59(openai@4.63.0(zod@3.23.8)): + dependencies: + '@types/uuid': 10.0.0 + commander: 10.0.1 + p-queue: 6.6.2 + p-retry: 4.6.2 + semver: 7.6.0 + uuid: 10.0.0 + optionalDependencies: + openai: 4.63.0(zod@3.23.8) + + langsmith@0.1.59(openai@4.63.0): + dependencies: + '@types/uuid': 10.0.0 + commander: 10.0.1 + p-queue: 6.6.2 + p-retry: 4.6.2 + semver: 7.6.0 + uuid: 10.0.0 + optionalDependencies: + openai: 4.63.0(zod@3.23.8) lazy-ass@1.6.0: {} - lazy-universal-dotenv@4.0.0: - dependencies: - app-root-dir: 1.0.2 - dotenv: 16.3.1 - dotenv-expand: 10.0.0 - ldapts@4.2.6: dependencies: '@types/asn1': 0.2.0 '@types/node': 18.16.16 - '@types/uuid': 9.0.7 + '@types/uuid': 10.0.0 asn1: 0.2.6 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 strict-event-emitter-types: 2.0.0 uuid: 9.0.1 transitivePeerDependencies: @@ -24590,6 +21524,49 @@ snapshots: leac@0.6.0: {} + lefthook-darwin-arm64@1.7.15: + optional: true + + lefthook-darwin-x64@1.7.15: + optional: true + + lefthook-freebsd-arm64@1.7.15: + optional: true + + lefthook-freebsd-x64@1.7.15: + optional: true + + lefthook-linux-arm64@1.7.15: + optional: true + + lefthook-linux-x64@1.7.15: + optional: true + + lefthook-openbsd-arm64@1.7.15: + optional: true + + lefthook-openbsd-x64@1.7.15: + optional: true + + lefthook-windows-arm64@1.7.15: + optional: true + + lefthook-windows-x64@1.7.15: + optional: true + + lefthook@1.7.15: + optionalDependencies: + lefthook-darwin-arm64: 1.7.15 + lefthook-darwin-x64: 1.7.15 + lefthook-freebsd-arm64: 1.7.15 + lefthook-freebsd-x64: 1.7.15 + lefthook-linux-arm64: 1.7.15 + lefthook-linux-x64: 1.7.15 + lefthook-openbsd-arm64: 1.7.15 + lefthook-openbsd-x64: 1.7.15 + lefthook-windows-arm64: 1.7.15 + lefthook-windows-x64: 1.7.15 + leven@3.1.0: {} levn@0.3.0: @@ -24632,23 +21609,17 @@ snapshots: lilconfig@2.1.0: {} - lilconfig@3.0.0: {} - lilconfig@3.1.2: {} lines-and-columns@1.2.4: {} - linkify-it@3.0.3: - dependencies: - uc.micro: 1.0.6 - linkify-it@4.0.1: dependencies: uc.micro: 1.0.6 linkify-it@5.0.0: dependencies: - uc.micro: 2.0.0 + uc.micro: 2.1.0 listr2@3.14.0(enquirer@2.3.6): dependencies: @@ -24663,10 +21634,6 @@ snapshots: optionalDependencies: enquirer: 2.3.6 - loader-runner@4.3.0: {} - - local-pkg@0.4.3: {} - local-pkg@0.5.0: dependencies: mlly: 1.4.2 @@ -24676,11 +21643,6 @@ snapshots: dependencies: lie: 3.1.1 - locate-path@3.0.0: - dependencies: - p-locate: 3.0.0 - path-exists: 3.0.0 - locate-path@5.0.0: dependencies: p-locate: 4.1.0 @@ -24701,10 +21663,12 @@ snapshots: lodash.clonedeep@4.5.0: {} - lodash.debounce@4.0.8: {} - lodash.defaults@4.2.0: {} + lodash.escape@4.0.1: {} + + lodash.flattendeep@4.4.0: {} + lodash.get@4.4.2: {} lodash.includes@4.3.0: {} @@ -24733,8 +21697,6 @@ snapshots: lodash.throttle@4.1.1: {} - lodash.uniq@4.5.0: {} - lodash@4.17.21: {} log-symbols@4.1.0: @@ -24749,9 +21711,10 @@ snapshots: slice-ansi: 4.0.0 wrap-ansi: 6.2.0 - logform@2.4.2: + logform@2.6.1: dependencies: - '@colors/colors': 1.5.0 + '@colors/colors': 1.6.0 + '@types/triple-beam': 1.3.5 fecha: 4.2.3 ms: 2.1.3 safe-stable-stringify: 2.4.0 @@ -24773,10 +21736,12 @@ snapshots: lossless-json@1.0.5: {} - loupe@2.3.7: + loupe@3.1.1: dependencies: get-func-name: 2.0.2 + lower-case@1.1.4: {} + lower-case@2.0.2: dependencies: tslib: 2.6.2 @@ -24804,29 +21769,29 @@ snapshots: lunr@2.3.9: {} - luxon@3.3.0: {} - luxon@3.4.4: {} + luxon@3.5.0: {} + lz-string@1.5.0: {} - magic-string@0.27.0: + magic-string@0.30.10: dependencies: '@jridgewell/sourcemap-codec': 1.4.15 - magic-string@0.30.5: + magic-string@0.30.11: dependencies: - '@jridgewell/sourcemap-codec': 1.4.15 + '@jridgewell/sourcemap-codec': 1.5.0 magic-string@0.30.8: dependencies: - '@jridgewell/sourcemap-codec': 1.4.15 + '@jridgewell/sourcemap-codec': 1.5.0 - magicast@0.3.3: + magicast@0.3.5: dependencies: - '@babel/parser': 7.24.6 - '@babel/types': 7.24.6 - source-map-js: 1.2.0 + '@babel/parser': 7.25.6 + '@babel/types': 7.25.6 + source-map-js: 1.2.1 mailparser@3.6.7: dependencies: @@ -24846,11 +21811,6 @@ snapshots: libmime: 5.2.0 libqp: 2.0.1 - make-dir@2.1.0: - dependencies: - pify: 4.0.1 - semver: 7.6.0 - make-dir@3.1.0: dependencies: semver: 7.6.0 @@ -24905,7 +21865,7 @@ snapshots: map-stream@0.1.0: {} - mappersmith@2.40.0: {} + mappersmith@2.43.4: {} mark.js@8.11.1: {} @@ -24915,15 +21875,7 @@ snapshots: markdown-it-task-lists@2.1.1: {} - markdown-it@12.3.2: - dependencies: - argparse: 2.0.1 - entities: 2.1.0 - linkify-it: 3.0.3 - mdurl: 1.0.1 - uc.micro: 1.0.6 - - markdown-it@13.0.1: + markdown-it@13.0.2: dependencies: argparse: 2.0.1 entities: 3.0.1 @@ -24931,7 +21883,7 @@ snapshots: mdurl: 1.0.1 uc.micro: 1.0.6 - markdown-to-jsx@7.3.2(react@18.2.0): + markdown-to-jsx@7.5.0(react@18.2.0): dependencies: react: 18.2.0 @@ -24943,10 +21895,6 @@ snapshots: crypt: 0.0.2 is-buffer: 1.1.6 - mdn-data@2.0.28: {} - - mdn-data@2.0.30: {} - mdurl@1.0.1: {} media-typer@0.3.0: {} @@ -24961,7 +21909,9 @@ snapshots: memory-pager@1.5.0: {} - merge-descriptors@1.0.1: {} + mensch@0.3.4: {} + + merge-descriptors@1.0.3: {} merge-stream@2.0.0: {} @@ -24969,9 +21919,9 @@ snapshots: methods@1.1.2: {} - micromatch@4.0.5: + micromatch@4.0.8: dependencies: - braces: 3.0.2 + braces: 3.0.3 picomatch: 2.3.1 mime-db@1.52.0: {} @@ -24988,8 +21938,6 @@ snapshots: mimic-fn@2.1.0: {} - mimic-fn@4.0.0: {} - mimic-response@3.1.0: {} min-indent@1.0.1: {} @@ -24997,11 +21945,15 @@ snapshots: minifaker@1.34.1: dependencies: '@types/uuid': 8.3.4 - nanoid: 3.3.6 + nanoid: 3.3.7 uuid: 8.3.2 minimalistic-assert@1.0.1: {} + minimatch@3.0.8: + dependencies: + brace-expansion: 1.1.11 + minimatch@3.1.2: dependencies: brace-expansion: 1.1.11 @@ -25022,7 +21974,7 @@ snapshots: dependencies: brace-expansion: 2.0.1 - minimatch@9.0.4: + minimatch@9.0.5: dependencies: brace-expansion: 2.0.1 @@ -25065,7 +22017,7 @@ snapshots: minipass@5.0.0: {} - minipass@7.0.2: {} + minipass@7.1.2: {} minizlib@2.1.2: dependencies: @@ -25079,6 +22031,303 @@ snapshots: lodash: 4.17.21 pretender: 3.4.7 + mjml-accordion@4.15.3(encoding@0.1.13): + dependencies: + '@babel/runtime': 7.24.7 + lodash: 4.17.21 + mjml-core: 4.15.3(encoding@0.1.13) + transitivePeerDependencies: + - encoding + + mjml-body@4.15.3(encoding@0.1.13): + dependencies: + '@babel/runtime': 7.24.7 + lodash: 4.17.21 + mjml-core: 4.15.3(encoding@0.1.13) + transitivePeerDependencies: + - encoding + + mjml-button@4.15.3(encoding@0.1.13): + dependencies: + '@babel/runtime': 7.24.7 + lodash: 4.17.21 + mjml-core: 4.15.3(encoding@0.1.13) + transitivePeerDependencies: + - encoding + + mjml-carousel@4.15.3(encoding@0.1.13): + dependencies: + '@babel/runtime': 7.24.7 + lodash: 4.17.21 + mjml-core: 4.15.3(encoding@0.1.13) + transitivePeerDependencies: + - encoding + + mjml-cli@4.15.3(encoding@0.1.13): + dependencies: + '@babel/runtime': 7.24.7 + chokidar: 4.0.1 + glob: 10.4.5 + html-minifier: 4.0.0 + js-beautify: 1.14.9 + lodash: 4.17.21 + minimatch: 9.0.5 + mjml-core: 4.15.3(encoding@0.1.13) + mjml-migrate: 4.15.3(encoding@0.1.13) + mjml-parser-xml: 4.15.3 + mjml-validator: 4.15.3 + yargs: 17.7.2 + transitivePeerDependencies: + - encoding + + mjml-column@4.15.3(encoding@0.1.13): + dependencies: + '@babel/runtime': 7.24.7 + lodash: 4.17.21 + mjml-core: 4.15.3(encoding@0.1.13) + transitivePeerDependencies: + - encoding + + mjml-core@4.15.3(encoding@0.1.13): + dependencies: + '@babel/runtime': 7.24.7 + cheerio: 1.0.0-rc.12 + detect-node: 2.1.0 + html-minifier: 4.0.0 + js-beautify: 1.14.9 + juice: 10.0.1(encoding@0.1.13) + lodash: 4.17.21 + mjml-migrate: 4.15.3(encoding@0.1.13) + mjml-parser-xml: 4.15.3 + mjml-validator: 4.15.3 + transitivePeerDependencies: + - encoding + + mjml-divider@4.15.3(encoding@0.1.13): + dependencies: + '@babel/runtime': 7.24.7 + lodash: 4.17.21 + mjml-core: 4.15.3(encoding@0.1.13) + transitivePeerDependencies: + - encoding + + mjml-group@4.15.3(encoding@0.1.13): + dependencies: + '@babel/runtime': 7.24.7 + lodash: 4.17.21 + mjml-core: 4.15.3(encoding@0.1.13) + transitivePeerDependencies: + - encoding + + mjml-head-attributes@4.15.3(encoding@0.1.13): + dependencies: + '@babel/runtime': 7.24.7 + lodash: 4.17.21 + mjml-core: 4.15.3(encoding@0.1.13) + transitivePeerDependencies: + - encoding + + mjml-head-breakpoint@4.15.3(encoding@0.1.13): + dependencies: + '@babel/runtime': 7.24.7 + lodash: 4.17.21 + mjml-core: 4.15.3(encoding@0.1.13) + transitivePeerDependencies: + - encoding + + mjml-head-font@4.15.3(encoding@0.1.13): + dependencies: + '@babel/runtime': 7.24.7 + lodash: 4.17.21 + mjml-core: 4.15.3(encoding@0.1.13) + transitivePeerDependencies: + - encoding + + mjml-head-html-attributes@4.15.3(encoding@0.1.13): + dependencies: + '@babel/runtime': 7.24.7 + lodash: 4.17.21 + mjml-core: 4.15.3(encoding@0.1.13) + transitivePeerDependencies: + - encoding + + mjml-head-preview@4.15.3(encoding@0.1.13): + dependencies: + '@babel/runtime': 7.24.7 + lodash: 4.17.21 + mjml-core: 4.15.3(encoding@0.1.13) + transitivePeerDependencies: + - encoding + + mjml-head-style@4.15.3(encoding@0.1.13): + dependencies: + '@babel/runtime': 7.24.7 + lodash: 4.17.21 + mjml-core: 4.15.3(encoding@0.1.13) + transitivePeerDependencies: + - encoding + + mjml-head-title@4.15.3(encoding@0.1.13): + dependencies: + '@babel/runtime': 7.24.7 + lodash: 4.17.21 + mjml-core: 4.15.3(encoding@0.1.13) + transitivePeerDependencies: + - encoding + + mjml-head@4.15.3(encoding@0.1.13): + dependencies: + '@babel/runtime': 7.24.7 + lodash: 4.17.21 + mjml-core: 4.15.3(encoding@0.1.13) + transitivePeerDependencies: + - encoding + + mjml-hero@4.15.3(encoding@0.1.13): + dependencies: + '@babel/runtime': 7.24.7 + lodash: 4.17.21 + mjml-core: 4.15.3(encoding@0.1.13) + transitivePeerDependencies: + - encoding + + mjml-image@4.15.3(encoding@0.1.13): + dependencies: + '@babel/runtime': 7.24.7 + lodash: 4.17.21 + mjml-core: 4.15.3(encoding@0.1.13) + transitivePeerDependencies: + - encoding + + mjml-migrate@4.15.3(encoding@0.1.13): + dependencies: + '@babel/runtime': 7.24.7 + js-beautify: 1.14.9 + lodash: 4.17.21 + mjml-core: 4.15.3(encoding@0.1.13) + mjml-parser-xml: 4.15.3 + yargs: 17.7.2 + transitivePeerDependencies: + - encoding + + mjml-navbar@4.15.3(encoding@0.1.13): + dependencies: + '@babel/runtime': 7.24.7 + lodash: 4.17.21 + mjml-core: 4.15.3(encoding@0.1.13) + transitivePeerDependencies: + - encoding + + mjml-parser-xml@4.15.3: + dependencies: + '@babel/runtime': 7.24.7 + detect-node: 2.1.0 + htmlparser2: 9.1.0 + lodash: 4.17.21 + + mjml-preset-core@4.15.3(encoding@0.1.13): + dependencies: + '@babel/runtime': 7.24.7 + mjml-accordion: 4.15.3(encoding@0.1.13) + mjml-body: 4.15.3(encoding@0.1.13) + mjml-button: 4.15.3(encoding@0.1.13) + mjml-carousel: 4.15.3(encoding@0.1.13) + mjml-column: 4.15.3(encoding@0.1.13) + mjml-divider: 4.15.3(encoding@0.1.13) + mjml-group: 4.15.3(encoding@0.1.13) + mjml-head: 4.15.3(encoding@0.1.13) + mjml-head-attributes: 4.15.3(encoding@0.1.13) + mjml-head-breakpoint: 4.15.3(encoding@0.1.13) + mjml-head-font: 4.15.3(encoding@0.1.13) + mjml-head-html-attributes: 4.15.3(encoding@0.1.13) + mjml-head-preview: 4.15.3(encoding@0.1.13) + mjml-head-style: 4.15.3(encoding@0.1.13) + mjml-head-title: 4.15.3(encoding@0.1.13) + mjml-hero: 4.15.3(encoding@0.1.13) + mjml-image: 4.15.3(encoding@0.1.13) + mjml-navbar: 4.15.3(encoding@0.1.13) + mjml-raw: 4.15.3(encoding@0.1.13) + mjml-section: 4.15.3(encoding@0.1.13) + mjml-social: 4.15.3(encoding@0.1.13) + mjml-spacer: 4.15.3(encoding@0.1.13) + mjml-table: 4.15.3(encoding@0.1.13) + mjml-text: 4.15.3(encoding@0.1.13) + mjml-wrapper: 4.15.3(encoding@0.1.13) + transitivePeerDependencies: + - encoding + + mjml-raw@4.15.3(encoding@0.1.13): + dependencies: + '@babel/runtime': 7.24.7 + lodash: 4.17.21 + mjml-core: 4.15.3(encoding@0.1.13) + transitivePeerDependencies: + - encoding + + mjml-section@4.15.3(encoding@0.1.13): + dependencies: + '@babel/runtime': 7.24.7 + lodash: 4.17.21 + mjml-core: 4.15.3(encoding@0.1.13) + transitivePeerDependencies: + - encoding + + mjml-social@4.15.3(encoding@0.1.13): + dependencies: + '@babel/runtime': 7.24.7 + lodash: 4.17.21 + mjml-core: 4.15.3(encoding@0.1.13) + transitivePeerDependencies: + - encoding + + mjml-spacer@4.15.3(encoding@0.1.13): + dependencies: + '@babel/runtime': 7.24.7 + lodash: 4.17.21 + mjml-core: 4.15.3(encoding@0.1.13) + transitivePeerDependencies: + - encoding + + mjml-table@4.15.3(encoding@0.1.13): + dependencies: + '@babel/runtime': 7.24.7 + lodash: 4.17.21 + mjml-core: 4.15.3(encoding@0.1.13) + transitivePeerDependencies: + - encoding + + mjml-text@4.15.3(encoding@0.1.13): + dependencies: + '@babel/runtime': 7.24.7 + lodash: 4.17.21 + mjml-core: 4.15.3(encoding@0.1.13) + transitivePeerDependencies: + - encoding + + mjml-validator@4.15.3: + dependencies: + '@babel/runtime': 7.24.7 + + mjml-wrapper@4.15.3(encoding@0.1.13): + dependencies: + '@babel/runtime': 7.24.7 + lodash: 4.17.21 + mjml-core: 4.15.3(encoding@0.1.13) + mjml-section: 4.15.3(encoding@0.1.13) + transitivePeerDependencies: + - encoding + + mjml@4.15.3(encoding@0.1.13): + dependencies: + '@babel/runtime': 7.24.7 + mjml-cli: 4.15.3(encoding@0.1.13) + mjml-core: 4.15.3(encoding@0.1.13) + mjml-migrate: 4.15.3(encoding@0.1.13) + mjml-preset-core: 4.15.3(encoding@0.1.13) + mjml-validator: 4.15.3 + transitivePeerDependencies: + - encoding + mkdirp-classic@0.5.3: {} mkdirp@0.5.6: @@ -25089,64 +22338,32 @@ snapshots: mkdirp@2.1.3: {} - mkdist@1.4.0(sass@1.64.1)(typescript@5.5.2): - dependencies: - autoprefixer: 10.4.19(postcss@8.4.38) - citty: 0.1.5 - cssnano: 6.0.2(postcss@8.4.38) - defu: 6.1.3 - esbuild: 0.20.2 - fs-extra: 11.1.1 - globby: 13.2.2 - jiti: 1.21.0 - mlly: 1.4.2 - mri: 1.2.0 - pathe: 1.1.1 - postcss: 8.4.38 - postcss-nested: 6.0.1(postcss@8.4.38) - optionalDependencies: - sass: 1.64.1 - typescript: 5.5.2 - - ml-array-mean@1.1.6: - dependencies: - ml-array-sum: 1.1.6 - - ml-array-sum@1.1.6: - dependencies: - is-any-array: 2.0.1 - - ml-distance-euclidean@2.0.0: {} - - ml-distance@4.0.1: - dependencies: - ml-array-mean: 1.1.6 - ml-distance-euclidean: 2.0.0 - ml-tree-similarity: 1.0.0 - - ml-tree-similarity@1.0.0: - dependencies: - binary-search: 1.3.6 - num-sort: 2.1.0 - mlly@1.4.2: dependencies: - acorn: 8.11.2 - pathe: 1.1.1 + acorn: 8.12.1 + pathe: 1.1.2 pkg-types: 1.0.3 ufo: 1.3.2 - mobx-react-lite@3.4.3(mobx@6.12.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0): + mlly@1.7.1: + dependencies: + acorn: 8.12.1 + pathe: 1.1.2 + pkg-types: 1.1.3 + ufo: 1.5.4 + + mobx-react-lite@4.0.7(mobx@6.12.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0): dependencies: mobx: 6.12.0 react: 18.2.0 + use-sync-external-store: 1.2.2(react@18.2.0) optionalDependencies: react-dom: 18.2.0(react@18.2.0) - mobx-react@7.6.0(mobx@6.12.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0): + mobx-react@9.1.1(mobx@6.12.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0): dependencies: mobx: 6.12.0 - mobx-react-lite: 3.4.3(mobx@6.12.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + mobx-react-lite: 4.0.7(mobx@6.12.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) react: 18.2.0 optionalDependencies: react-dom: 18.2.0(react@18.2.0) @@ -25164,19 +22381,22 @@ snapshots: '@types/whatwg-url': 11.0.4 whatwg-url: 13.0.0 - mongodb@6.3.0(gcp-metadata@5.2.0(encoding@0.1.13))(socks@2.7.1): + mongodb@6.3.0(@aws-sdk/credential-providers@3.666.0(@aws-sdk/client-sso-oidc@3.666.0(@aws-sdk/client-sts@3.666.0)))(gcp-metadata@5.3.0(encoding@0.1.13))(socks@2.7.1): dependencies: - '@mongodb-js/saslprep': 1.1.0 - bson: 6.3.0 + '@mongodb-js/saslprep': 1.1.9 + bson: 6.8.0 mongodb-connection-string-url: 3.0.0 optionalDependencies: - gcp-metadata: 5.2.0(encoding@0.1.13) + '@aws-sdk/credential-providers': 3.666.0(@aws-sdk/client-sso-oidc@3.666.0(@aws-sdk/client-sts@3.666.0)) + gcp-metadata: 5.3.0(encoding@0.1.13) socks: 2.7.1 + moo@0.5.2: {} + mqtt-packet@9.0.0: dependencies: bl: 6.0.12 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.7 process-nextick-args: 2.0.1 transitivePeerDependencies: - supports-color @@ -25184,10 +22404,10 @@ snapshots: mqtt@5.7.2: dependencies: '@types/readable-stream': 4.0.10 - '@types/ws': 8.5.10 + '@types/ws': 8.5.12 commist: 3.2.0 concat-stream: 2.0.0 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 help-me: 5.0.0 lru-cache: 10.2.2 minimist: 1.2.8 @@ -25204,8 +22424,6 @@ snapshots: - supports-color - utf-8-validate - mri@1.2.0: {} - ms@2.0.0: {} ms@2.1.2: {} @@ -25232,15 +22450,13 @@ snapshots: dependencies: '@tediousjs/connection-string': 0.5.0 commander: 11.1.0 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.6(supports-color@8.1.1) rfdc: 1.3.0 tarn: 3.0.2 tedious: 16.7.1 transitivePeerDependencies: - supports-color - muggle-string@0.3.1: {} - muggle-string@0.4.1: {} multer@1.4.5-lts.1: @@ -25259,8 +22475,9 @@ snapshots: mylas@2.1.13: {} - mysql2@3.10.0: + mysql2@3.11.0: dependencies: + aws-ssl-profiles: 1.1.1 denque: 2.1.0 generate-function: 2.3.1 iconv-lite: 0.6.3 @@ -25280,7 +22497,7 @@ snapshots: dependencies: lru-cache: 7.18.3 - nan@2.17.0: + nan@2.20.0: optional: true nanoclone@0.2.1: {} @@ -25295,10 +22512,21 @@ snapshots: natural-compare@1.4.0: {} + nearley@2.20.1: + dependencies: + commander: 2.20.3 + moo: 0.5.2 + railroad-diagrams: 1.0.0 + randexp: 0.4.6 + negotiator@0.6.3: {} neo-async@2.6.2: {} + no-case@2.3.2: + dependencies: + lower-case: 1.1.4 + no-case@3.0.4: dependencies: lower-case: 2.0.2 @@ -25306,7 +22534,7 @@ snapshots: nock@13.3.2: dependencies: - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 json-stringify-safe: 5.0.1 lodash: 4.17.21 propagate: 2.0.1 @@ -25323,10 +22551,6 @@ snapshots: node-cleanup@2.1.2: {} - node-dir@0.1.17: - dependencies: - minimatch: 3.1.2 - node-domexception@1.0.0: {} node-ensure@0.0.0: {} @@ -25335,8 +22559,6 @@ snapshots: dependencies: http2-client: 1.3.5 - node-fetch-native@1.0.1: {} - node-fetch@2.6.8(encoding@0.1.13): dependencies: whatwg-url: 5.0.0 @@ -25394,20 +22616,20 @@ snapshots: dependencies: asn1: 0.2.6 - node-ssh@12.0.5: + node-ssh@13.2.0: dependencies: is-stream: 2.0.1 make-dir: 3.1.0 sb-promise-queue: 2.1.0 sb-scandir: 3.1.0 shell-escape: 0.2.0 - ssh2: 1.11.0 + ssh2: 1.15.0 nodemailer@6.9.9: {} nodemon@3.0.1: dependencies: - chokidar: 3.5.2 + chokidar: 4.0.1 debug: 3.2.7(supports-color@5.5.0) ignore-by-default: 1.0.1 minimatch: 3.1.2 @@ -25448,10 +22670,6 @@ snapshots: dependencies: path-key: 3.1.1 - npm-run-path@5.1.0: - dependencies: - path-key: 4.0.0 - npmlog@6.0.2: dependencies: are-we-there-yet: 3.0.1 @@ -25466,24 +22684,20 @@ snapshots: nub@0.0.0: {} - num-sort@2.1.0: {} - number-allocator@1.0.14: dependencies: - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.7 js-sdsl: 4.3.0 transitivePeerDependencies: - supports-color - nunjucks@3.2.4(chokidar@3.5.2): + nunjucks@3.2.4(chokidar@4.0.1): dependencies: a-sync-waterfall: 1.0.1 asap: 2.0.6 commander: 5.1.0 optionalDependencies: - chokidar: 3.5.2 - - nwsapi@2.2.2: {} + chokidar: 4.0.1 nwsapi@2.2.7: {} @@ -25524,23 +22738,21 @@ snapshots: object-hash@3.0.0: {} - object-inspect@1.12.3: {} - object-inspect@1.13.1: {} + object-inspect@1.13.2: {} + object-is@1.1.5: dependencies: call-bind: 1.0.7 define-properties: 1.2.0 - object-keys@1.1.1: {} - - object.assign@4.1.4: + object-is@1.1.6: dependencies: call-bind: 1.0.7 - define-properties: 1.2.0 - has-symbols: 1.0.3 - object-keys: 1.1.1 + define-properties: 1.2.1 + + object-keys@1.1.1: {} object.assign@4.1.5: dependencies: @@ -25555,6 +22767,12 @@ snapshots: define-properties: 1.2.1 es-abstract: 1.22.5 + object.entries@1.1.8: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-object-atoms: 1.0.0 + object.fromentries@2.0.7: dependencies: call-bind: 1.0.7 @@ -25574,6 +22792,18 @@ snapshots: define-properties: 1.2.1 es-abstract: 1.22.5 + object.values@1.2.0: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-object-atoms: 1.0.0 + + obuf@1.1.2: {} + + ollama@0.5.6: + dependencies: + whatwg-fetch: 3.6.20 + on-finished@2.4.1: dependencies: ee-first: 1.1.1 @@ -25592,10 +22822,6 @@ snapshots: dependencies: mimic-fn: 2.1.0 - onetime@6.0.0: - dependencies: - mimic-fn: 4.0.0 - ono@7.1.3: dependencies: '@jsdevtools/ono': 7.1.3 @@ -25611,7 +22837,7 @@ snapshots: is-docker: 2.2.1 is-wsl: 2.2.0 - openai@4.47.1(encoding@0.1.13): + openai@4.63.0(encoding@0.1.13)(zod@3.23.8): dependencies: '@types/node': 18.16.16 '@types/node-fetch': 2.6.4 @@ -25620,22 +22846,35 @@ snapshots: form-data-encoder: 1.7.2 formdata-node: 4.4.1 node-fetch: 2.7.0(encoding@0.1.13) - web-streams-polyfill: 3.2.1 + optionalDependencies: + zod: 3.23.8 transitivePeerDependencies: - encoding - supports-color - openapi-sampler@1.4.0: + openai@4.63.0(zod@3.23.8): + dependencies: + '@types/node': 18.16.16 + '@types/node-fetch': 2.6.4 + abort-controller: 3.0.0 + agentkeepalive: 4.2.1 + form-data-encoder: 1.7.2 + formdata-node: 4.4.1 + node-fetch: 2.7.0(encoding@0.1.13) + optionalDependencies: + zod: 3.23.8 + transitivePeerDependencies: + - encoding + - supports-color + optional: true + + openapi-sampler@1.5.1: dependencies: '@types/json-schema': 7.0.15 json-pointer: 0.6.2 - openapi-types@10.0.0: {} - openapi-types@12.1.3: {} - openurl@1.1.1: {} - option@0.2.4: {} optionator@0.8.3: @@ -25656,18 +22895,6 @@ snapshots: prelude-ls: 1.2.1 type-check: 0.4.0 - ora@5.4.1: - dependencies: - bl: 4.1.0 - chalk: 4.1.2 - cli-cursor: 3.1.0 - cli-spinners: 2.9.0 - is-interactive: 1.0.0 - is-unicode-supported: 0.1.0 - log-symbols: 4.1.0 - strip-ansi: 6.0.1 - wcwidth: 1.0.1 - os-tmpdir@1.0.2: {} ospath@1.2.2: {} @@ -25696,14 +22923,6 @@ snapshots: dependencies: yocto-queue: 0.1.0 - p-limit@5.0.0: - dependencies: - yocto-queue: 1.0.0 - - p-locate@3.0.0: - dependencies: - p-limit: 2.3.0 - p-locate@4.1.0: dependencies: p-limit: 2.3.0 @@ -25732,12 +22951,14 @@ snapshots: p-try@2.2.0: {} - packet-reader@1.0.0: {} - - pako@0.2.9: {} + package-json-from-dist@1.0.0: {} pako@1.0.11: {} + param-case@2.1.1: + dependencies: + no-case: 2.3.2 + param-case@3.0.4: dependencies: dot-case: 3.0.4 @@ -25747,6 +22968,8 @@ snapshots: dependencies: callsites: 3.1.0 + parse-diff@0.11.1: {} + parse-json@5.2.0: dependencies: '@babel/code-frame': 7.24.6 @@ -25767,6 +22990,10 @@ snapshots: domhandler: 5.0.3 parse5: 7.1.2 + parse5-parser-stream@7.1.2: + dependencies: + parse5: 7.1.2 + parse5@6.0.1: {} parse5@7.1.2: @@ -25792,34 +23019,28 @@ snapshots: dot-case: 3.0.4 tslib: 2.6.2 - path-exists@3.0.0: {} - path-exists@4.0.0: {} path-is-absolute@1.0.1: {} path-key@3.1.1: {} - path-key@4.0.0: {} - path-parse@1.0.7: {} - path-scurry@1.10.1: + path-scurry@1.11.1: dependencies: - lru-cache: 9.1.2 - minipass: 7.0.2 + lru-cache: 10.2.2 + minipass: 7.1.2 - path-to-regexp@0.1.7: {} + path-to-regexp@0.1.10: {} - path-to-regexp@6.2.1: {} + path-to-regexp@8.2.0: {} path-type@4.0.0: {} - path-type@5.0.0: {} + pathe@1.1.2: {} - pathe@1.1.1: {} - - pathval@1.1.1: {} + pathval@2.0.0: {} pause-stream@0.0.11: dependencies: @@ -25841,12 +23062,6 @@ snapshots: peek-readable@4.1.0: {} - peek-stream@1.1.3: - dependencies: - buffer-from: 1.1.2 - duplexify: 3.7.1 - through2: 2.0.5 - pend@1.2.0: {} perfect-scrollbar@1.5.5: {} @@ -25856,30 +23071,28 @@ snapshots: pg-cloudflare@1.1.1: optional: true - pg-connection-string@2.6.2: {} + pg-connection-string@2.6.4: {} pg-int8@1.0.1: {} - pg-minify@1.6.2: {} + pg-minify@1.6.5: {} - pg-pool@3.6.1(pg@8.11.3): - dependencies: - pg: 8.11.3 + pg-numeric@1.0.2: {} - pg-pool@3.6.1(pg@8.8.0): + pg-pool@3.6.2(pg@8.12.0): dependencies: - pg: 8.8.0 + pg: 8.12.0 - pg-promise@10.15.4: + pg-promise@11.9.1: dependencies: - assert-options: 0.8.0 - pg: 8.8.0 - pg-minify: 1.6.2 - spex: 3.2.0 + assert-options: 0.8.1 + pg: 8.12.0 + pg-minify: 1.6.5 + spex: 3.3.0 transitivePeerDependencies: - pg-native - pg-protocol@1.6.0: {} + pg-protocol@1.6.1: {} pg-types@2.2.0: dependencies: @@ -25889,47 +23102,45 @@ snapshots: postgres-date: 1.0.7 postgres-interval: 1.2.0 - pg@8.11.3: + pg-types@4.0.2: dependencies: - buffer-writer: 2.0.0 - packet-reader: 1.0.0 - pg-connection-string: 2.6.2 - pg-pool: 3.6.1(pg@8.11.3) - pg-protocol: 1.6.0 + pg-int8: 1.0.1 + pg-numeric: 1.0.2 + postgres-array: 3.0.2 + postgres-bytea: 3.0.0 + postgres-date: 2.1.0 + postgres-interval: 3.0.0 + postgres-range: 1.1.4 + + pg@8.12.0: + dependencies: + pg-connection-string: 2.6.4 + pg-pool: 3.6.2(pg@8.12.0) + pg-protocol: 1.6.1 pg-types: 2.2.0 pgpass: 1.0.5 optionalDependencies: pg-cloudflare: 1.1.1 - pg@8.8.0: - dependencies: - buffer-writer: 2.0.0 - packet-reader: 1.0.0 - pg-connection-string: 2.6.2 - pg-pool: 3.6.1(pg@8.8.0) - pg-protocol: 1.6.0 - pg-types: 2.2.0 - pgpass: 1.0.5 - pgpass@1.0.5: dependencies: split2: 4.2.0 - picocolors@1.0.0: {} + picocolors@1.0.1: {} + + picocolors@1.1.0: {} picomatch@2.3.1: {} pify@2.3.0: {} - pify@4.0.1: {} - - pinia@2.1.6(typescript@5.5.2)(vue@3.4.21(typescript@5.5.2)): + pinia@2.2.4(typescript@5.6.2)(vue@3.5.11(typescript@5.6.2)): dependencies: - '@vue/devtools-api': 6.5.0 - vue: 3.4.21(typescript@5.5.2) - vue-demi: 0.14.5(vue@3.4.21(typescript@5.5.2)) + '@vue/devtools-api': 6.6.4 + vue: 3.5.11(typescript@5.6.2) + vue-demi: 0.14.10(vue@3.5.11(typescript@5.6.2)) optionalDependencies: - typescript: 5.5.2 + typescript: 5.6.2 pirates@4.0.6: {} @@ -25937,23 +23148,21 @@ snapshots: dependencies: crypto-js: 4.2.0 - pkg-dir@3.0.0: - dependencies: - find-up: 3.0.0 - pkg-dir@4.2.0: dependencies: find-up: 4.1.0 - pkg-dir@5.0.0: - dependencies: - find-up: 5.0.0 - pkg-types@1.0.3: dependencies: jsonc-parser: 3.2.0 mlly: 1.4.2 - pathe: 1.1.1 + pathe: 1.1.2 + + pkg-types@1.1.3: + dependencies: + confbox: 0.1.7 + mlly: 1.7.1 + pathe: 1.1.2 plimit-lit@1.4.1: dependencies: @@ -25963,46 +23172,10 @@ snapshots: polished@4.2.2: dependencies: - '@babel/runtime': 7.23.6 + '@babel/runtime': 7.24.7 possible-typed-array-names@1.0.0: {} - postcss-calc@9.0.1(postcss@8.4.38): - dependencies: - postcss: 8.4.38 - postcss-selector-parser: 6.0.16 - postcss-value-parser: 4.2.0 - - postcss-colormin@6.0.1(postcss@8.4.38): - dependencies: - browserslist: 4.23.0 - caniuse-api: 3.0.0 - colord: 2.9.3 - postcss: 8.4.38 - postcss-value-parser: 4.2.0 - - postcss-convert-values@6.0.1(postcss@8.4.38): - dependencies: - browserslist: 4.23.0 - postcss: 8.4.38 - postcss-value-parser: 4.2.0 - - postcss-discard-comments@6.0.1(postcss@8.4.38): - dependencies: - postcss: 8.4.38 - - postcss-discard-duplicates@6.0.1(postcss@8.4.38): - dependencies: - postcss: 8.4.38 - - postcss-discard-empty@6.0.1(postcss@8.4.38): - dependencies: - postcss: 8.4.38 - - postcss-discard-overridden@6.0.1(postcss@8.4.38): - dependencies: - postcss: 8.4.38 - postcss-import@15.1.0(postcss@8.4.38): dependencies: postcss: 8.4.38 @@ -26015,161 +23188,69 @@ snapshots: camelcase-css: 2.0.1 postcss: 8.4.38 - postcss-load-config@4.0.2(postcss@8.4.38): + postcss-load-config@4.0.2(postcss@8.4.38)(ts-node@10.9.2(@types/node@18.16.16)(typescript@5.6.2)): dependencies: - lilconfig: 3.0.0 + lilconfig: 3.1.2 yaml: 2.3.4 optionalDependencies: postcss: 8.4.38 - - postcss-merge-longhand@6.0.1(postcss@8.4.38): - dependencies: - postcss: 8.4.38 - postcss-value-parser: 4.2.0 - stylehacks: 6.0.1(postcss@8.4.38) - - postcss-merge-rules@6.0.2(postcss@8.4.38): - dependencies: - browserslist: 4.23.0 - caniuse-api: 3.0.0 - cssnano-utils: 4.0.1(postcss@8.4.38) - postcss: 8.4.38 - postcss-selector-parser: 6.0.16 - - postcss-minify-font-values@6.0.1(postcss@8.4.38): - dependencies: - postcss: 8.4.38 - postcss-value-parser: 4.2.0 - - postcss-minify-gradients@6.0.1(postcss@8.4.38): - dependencies: - colord: 2.9.3 - cssnano-utils: 4.0.1(postcss@8.4.38) - postcss: 8.4.38 - postcss-value-parser: 4.2.0 - - postcss-minify-params@6.0.1(postcss@8.4.38): - dependencies: - browserslist: 4.23.0 - cssnano-utils: 4.0.1(postcss@8.4.38) - postcss: 8.4.38 - postcss-value-parser: 4.2.0 - - postcss-minify-selectors@6.0.1(postcss@8.4.38): - dependencies: - postcss: 8.4.38 - postcss-selector-parser: 6.0.16 + ts-node: 10.9.2(@types/node@18.16.16)(typescript@5.6.2) postcss-nested@6.0.1(postcss@8.4.38): dependencies: postcss: 8.4.38 postcss-selector-parser: 6.0.16 - postcss-normalize-charset@6.0.1(postcss@8.4.38): - dependencies: - postcss: 8.4.38 - - postcss-normalize-display-values@6.0.1(postcss@8.4.38): - dependencies: - postcss: 8.4.38 - postcss-value-parser: 4.2.0 - - postcss-normalize-positions@6.0.1(postcss@8.4.38): - dependencies: - postcss: 8.4.38 - postcss-value-parser: 4.2.0 - - postcss-normalize-repeat-style@6.0.1(postcss@8.4.38): - dependencies: - postcss: 8.4.38 - postcss-value-parser: 4.2.0 - - postcss-normalize-string@6.0.1(postcss@8.4.38): - dependencies: - postcss: 8.4.38 - postcss-value-parser: 4.2.0 - - postcss-normalize-timing-functions@6.0.1(postcss@8.4.38): - dependencies: - postcss: 8.4.38 - postcss-value-parser: 4.2.0 - - postcss-normalize-unicode@6.0.1(postcss@8.4.38): - dependencies: - browserslist: 4.23.0 - postcss: 8.4.38 - postcss-value-parser: 4.2.0 - - postcss-normalize-url@6.0.1(postcss@8.4.38): - dependencies: - postcss: 8.4.38 - postcss-value-parser: 4.2.0 - - postcss-normalize-whitespace@6.0.1(postcss@8.4.38): - dependencies: - postcss: 8.4.38 - postcss-value-parser: 4.2.0 - - postcss-ordered-values@6.0.1(postcss@8.4.38): - dependencies: - cssnano-utils: 4.0.1(postcss@8.4.38) - postcss: 8.4.38 - postcss-value-parser: 4.2.0 - - postcss-reduce-initial@6.0.1(postcss@8.4.38): - dependencies: - browserslist: 4.23.0 - caniuse-api: 3.0.0 - postcss: 8.4.38 - - postcss-reduce-transforms@6.0.1(postcss@8.4.38): - dependencies: - postcss: 8.4.38 - postcss-value-parser: 4.2.0 - postcss-selector-parser@6.0.16: dependencies: cssesc: 3.0.0 util-deprecate: 1.0.2 - postcss-svgo@6.0.1(postcss@8.4.38): - dependencies: - postcss: 8.4.38 - postcss-value-parser: 4.2.0 - svgo: 3.1.0 - - postcss-unique-selectors@6.0.1(postcss@8.4.38): - dependencies: - postcss: 8.4.38 - postcss-selector-parser: 6.0.16 - postcss-value-parser@4.2.0: {} postcss@8.4.31: dependencies: - nanoid: 3.3.6 - picocolors: 1.0.0 - source-map-js: 1.0.2 + nanoid: 3.3.7 + picocolors: 1.0.1 + source-map-js: 1.2.1 postcss@8.4.38: dependencies: nanoid: 3.3.7 - picocolors: 1.0.0 + picocolors: 1.0.1 source-map-js: 1.2.0 + postcss@8.4.47: + dependencies: + nanoid: 3.3.7 + picocolors: 1.1.0 + source-map-js: 1.2.1 + postgres-array@2.0.0: {} + postgres-array@3.0.2: {} + postgres-bytea@1.0.0: {} + postgres-bytea@3.0.0: + dependencies: + obuf: 1.1.2 + postgres-date@1.0.7: {} + postgres-date@2.1.0: {} + postgres-interval@1.2.0: dependencies: xtend: 4.0.2 + postgres-interval@3.0.0: {} + + postgres-range@1.1.4: {} + posthog-node@3.2.1: dependencies: - axios: 1.6.7(debug@3.2.7) + axios: 1.7.7 rusha: 0.8.14 transitivePeerDependencies: - debug @@ -26198,16 +23279,10 @@ snapshots: fake-xml-http-request: 2.1.2 route-recognizer: 0.3.4 - prettier-linter-helpers@1.0.0: - dependencies: - fast-diff: 1.2.0 - - prettier@3.2.5: {} + prettier@3.3.3: {} pretty-bytes@5.6.0: {} - pretty-bytes@6.1.1: {} - pretty-format@27.5.1: dependencies: ansi-regex: 5.0.1 @@ -26220,20 +23295,12 @@ snapshots: ansi-styles: 5.2.0 react-is: 18.2.0 - pretty-format@29.6.2: - dependencies: - '@jest/schemas': 29.6.0 - ansi-styles: 5.2.0 - react-is: 18.2.0 - pretty-format@29.7.0: dependencies: '@jest/schemas': 29.6.3 ansi-styles: 5.2.0 react-is: 18.2.0 - pretty-hrtime@1.0.3: {} - prismjs@1.29.0: {} process-nextick-args@2.0.1: {} @@ -26338,15 +23405,13 @@ snapshots: void-elements: 3.1.0 with: 7.0.2 - pug-error@2.0.0: {} - pug-error@2.1.0: {} pug-filters@4.0.0: dependencies: constantinople: 4.0.1 jstransformer: 1.0.0 - pug-error: 2.0.0 + pug-error: 2.1.0 pug-walk: 2.0.0 resolve: 1.22.8 @@ -26354,11 +23419,11 @@ snapshots: dependencies: character-parser: 2.2.0 is-expression: 4.0.0 - pug-error: 2.0.0 + pug-error: 2.1.0 pug-linker@4.0.0: dependencies: - pug-error: 2.0.0 + pug-error: 2.1.0 pug-walk: 2.0.0 pug-load@3.0.0: @@ -26368,14 +23433,14 @@ snapshots: pug-parser@6.0.0: dependencies: - pug-error: 2.0.0 + pug-error: 2.1.0 token-stream: 1.0.0 pug-runtime@3.0.1: {} pug-strip-comments@2.0.0: dependencies: - pug-error: 2.0.0 + pug-error: 2.1.0 pug-walk@2.0.0: {} @@ -26390,22 +23455,11 @@ snapshots: pug-runtime: 3.0.1 pug-strip-comments: 2.0.0 - pump@2.0.1: - dependencies: - end-of-stream: 1.4.4 - once: 1.4.0 - pump@3.0.0: dependencies: end-of-stream: 1.4.4 once: 1.4.0 - pumpify@1.5.1: - dependencies: - duplexify: 3.7.1 - inherits: 2.0.4 - pump: 2.0.1 - punycode@2.3.1: {} pure-rand@6.0.1: {} @@ -26424,13 +23478,13 @@ snapshots: dependencies: long: 4.0.0 - qrcode.vue@3.3.4(vue@3.4.21(typescript@5.5.2)): + qrcode.vue@3.3.4(vue@3.5.11(typescript@5.6.2)): dependencies: - vue: 3.4.21(typescript@5.5.2) + vue: 3.5.11(typescript@5.6.2) qs@6.10.4: dependencies: - side-channel: 1.0.4 + side-channel: 1.0.6 qs@6.11.0: dependencies: @@ -26440,6 +23494,10 @@ snapshots: dependencies: side-channel: 1.0.4 + qs@6.13.0: + dependencies: + side-channel: 1.0.6 + query-string@7.1.3: dependencies: decode-uri-component: 0.2.2 @@ -26457,7 +23515,16 @@ snapshots: dependencies: utf8: 2.1.2 - ramda@0.29.0: {} + raf@3.4.1: + dependencies: + performance-now: 2.1.0 + + railroad-diagrams@1.0.0: {} + + randexp@0.4.6: + dependencies: + discontinuous-range: 1.0.0 + ret: 0.1.15 random-bytes@1.0.0: {} @@ -26510,37 +23577,15 @@ snapshots: react-is@18.2.0: {} - react-remove-scroll-bar@2.3.6(@types/react@18.0.27)(react@18.2.0): + react-shallow-renderer@16.15.0(react@18.2.0): dependencies: + object-assign: 4.1.1 react: 18.2.0 - react-style-singleton: 2.2.1(@types/react@18.0.27)(react@18.2.0) - tslib: 2.6.2 - optionalDependencies: - '@types/react': 18.0.27 + react-is: 18.2.0 - react-remove-scroll@2.5.5(@types/react@18.0.27)(react@18.2.0): + react-tabs@6.0.2(react@18.2.0): dependencies: - react: 18.2.0 - react-remove-scroll-bar: 2.3.6(@types/react@18.0.27)(react@18.2.0) - react-style-singleton: 2.2.1(@types/react@18.0.27)(react@18.2.0) - tslib: 2.6.2 - use-callback-ref: 1.3.2(@types/react@18.0.27)(react@18.2.0) - use-sidecar: 1.1.2(@types/react@18.0.27)(react@18.2.0) - optionalDependencies: - '@types/react': 18.0.27 - - react-style-singleton@2.2.1(@types/react@18.0.27)(react@18.2.0): - dependencies: - get-nonce: 1.0.1 - invariant: 2.2.4 - react: 18.2.0 - tslib: 2.6.2 - optionalDependencies: - '@types/react': 18.0.27 - - react-tabs@4.3.0(react@18.2.0): - dependencies: - clsx: 1.2.1 + clsx: 2.1.1 prop-types: 15.8.1 react: 18.2.0 @@ -26596,13 +23641,19 @@ snapshots: process: 0.11.10 string_decoder: 1.3.0 + readable-stream@4.5.2: + dependencies: + abort-controller: 3.0.0 + buffer: 6.0.3 + events: 3.3.0 + process: 0.11.10 + string_decoder: 1.3.0 + readable-web-to-node-stream@3.0.2: dependencies: readable-stream: 3.6.0 - readdirp@3.6.0: - dependencies: - picomatch: 2.3.1 + readdirp@4.0.2: {} readline-sync@1.4.10: {} @@ -26615,7 +23666,7 @@ snapshots: recast@0.22.0: dependencies: - assert: 2.0.0 + assert: 2.1.0 ast-types: 0.15.2 esprima: 4.0.1 source-map: 0.6.1 @@ -26653,15 +23704,6 @@ snapshots: '@redis/search': 1.1.6(@redis/client@1.5.13) '@redis/time-series': 1.0.5(@redis/client@1.5.13) - redis@4.6.13: - dependencies: - '@redis/bloom': 1.2.0(@redis/client@1.5.14) - '@redis/client': 1.5.14 - '@redis/graph': 1.1.1(@redis/client@1.5.14) - '@redis/json': 1.0.6(@redis/client@1.5.14) - '@redis/search': 1.1.6(@redis/client@1.5.14) - '@redis/time-series': 1.0.5(@redis/client@1.5.14) - redis@4.6.14: dependencies: '@redis/bloom': 1.2.0(@redis/client@1.5.16) @@ -26671,21 +23713,22 @@ snapshots: '@redis/search': 1.1.6(@redis/client@1.5.16) '@redis/time-series': 1.0.5(@redis/client@1.5.16) - redoc@2.1.3(core-js@3.35.0)(encoding@0.1.13)(mobx@6.12.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(styled-components@6.1.8(react-dom@18.2.0(react@18.2.0))(react@18.2.0)): + redoc@2.1.5(core-js@3.35.0)(encoding@0.1.13)(enzyme@3.11.0)(mobx@6.12.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(styled-components@6.1.8(react-dom@18.2.0(react@18.2.0))(react@18.2.0)): dependencies: - '@redocly/openapi-core': 1.6.0(encoding@0.1.13) + '@cfaester/enzyme-adapter-react-18': 0.8.0(enzyme@3.11.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@redocly/openapi-core': 1.25.5(encoding@0.1.13) classnames: 2.5.1 core-js: 3.35.0 decko: 1.2.0 - dompurify: 2.4.7 - eventemitter3: 4.0.7 + dompurify: 3.1.7 + eventemitter3: 5.0.1 json-pointer: 0.6.2 lunr: 2.3.9 mark.js: 8.11.1 marked: 4.3.0 mobx: 6.12.0 - mobx-react: 7.6.0(mobx@6.12.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - openapi-sampler: 1.4.0 + mobx-react: 9.1.1(mobx@6.12.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + openapi-sampler: 1.5.1 path-browserify: 1.0.1 perfect-scrollbar: 1.5.5 polished: 4.2.2 @@ -26693,7 +23736,7 @@ snapshots: prop-types: 15.8.1 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - react-tabs: 4.3.0(react@18.2.0) + react-tabs: 6.0.2(react@18.2.0) slugify: 1.4.7 stickyfill: 1.1.1 styled-components: 6.1.8(react-dom@18.2.0(react@18.2.0))(react@18.2.0) @@ -26701,26 +23744,16 @@ snapshots: url-template: 2.0.8 transitivePeerDependencies: - encoding + - enzyme - react-native + - supports-color reflect-metadata@0.2.2: {} reftools@1.1.9: {} - regenerate-unicode-properties@10.1.0: - dependencies: - regenerate: 1.4.2 - - regenerate@1.4.2: {} - - regenerator-runtime@0.13.11: {} - regenerator-runtime@0.14.1: {} - regenerator-transform@0.15.2: - dependencies: - '@babel/runtime': 7.23.6 - regexp-tree@0.1.27: {} regexp.prototype.flags@1.5.0: @@ -26736,23 +23769,17 @@ snapshots: es-errors: 1.3.0 set-function-name: 2.0.2 - regexpu-core@5.3.2: + regexp.prototype.flags@1.5.3: dependencies: - '@babel/regjsgen': 0.8.0 - regenerate: 1.4.2 - regenerate-unicode-properties: 10.1.0 - regjsparser: 0.9.1 - unicode-match-property-ecmascript: 2.0.0 - unicode-match-property-value-ecmascript: 2.1.0 + call-bind: 1.0.7 + define-properties: 1.2.1 + es-errors: 1.3.0 + set-function-name: 2.0.2 regjsparser@0.10.0: dependencies: jsesc: 0.5.0 - regjsparser@0.9.1: - dependencies: - jsesc: 0.5.0 - rehype-external-links@3.0.0: dependencies: '@types/hast': 3.0.4 @@ -26772,6 +23799,8 @@ snapshots: reinterval@1.1.0: {} + relateurl@0.2.7: {} + remove-trailing-slash@0.1.1: {} replace-in-file@6.3.5: @@ -26806,11 +23835,6 @@ snapshots: resolve.exports@2.0.0: {} - resolve@1.19.0: - dependencies: - is-core-module: 2.13.1 - path-parse: 1.0.7 - resolve@1.22.3: dependencies: is-core-module: 2.13.1 @@ -26828,12 +23852,7 @@ snapshots: onetime: 5.1.2 signal-exit: 3.0.7 - retry-request@5.0.2: - dependencies: - debug: 4.3.4(supports-color@8.1.1) - extend: 3.0.2 - transitivePeerDependencies: - - supports-color + ret@0.1.15: {} retry-request@7.0.2(encoding@0.1.13): dependencies: @@ -26876,38 +23895,26 @@ snapshots: rndm@1.2.0: {} - rollup-plugin-dts@6.1.0(rollup@3.29.4)(typescript@5.5.2): + rollup@4.24.0: dependencies: - magic-string: 0.30.5 - rollup: 3.29.4 - typescript: 5.5.2 + '@types/estree': 1.0.6 optionalDependencies: - '@babel/code-frame': 7.24.6 - - rollup@3.29.4: - optionalDependencies: - fsevents: 2.3.3 - - rollup@4.18.0: - dependencies: - '@types/estree': 1.0.5 - optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.18.0 - '@rollup/rollup-android-arm64': 4.18.0 - '@rollup/rollup-darwin-arm64': 4.18.0 - '@rollup/rollup-darwin-x64': 4.18.0 - '@rollup/rollup-linux-arm-gnueabihf': 4.18.0 - '@rollup/rollup-linux-arm-musleabihf': 4.18.0 - '@rollup/rollup-linux-arm64-gnu': 4.18.0 - '@rollup/rollup-linux-arm64-musl': 4.18.0 - '@rollup/rollup-linux-powerpc64le-gnu': 4.18.0 - '@rollup/rollup-linux-riscv64-gnu': 4.18.0 - '@rollup/rollup-linux-s390x-gnu': 4.18.0 - '@rollup/rollup-linux-x64-gnu': 4.18.0 - '@rollup/rollup-linux-x64-musl': 4.18.0 - '@rollup/rollup-win32-arm64-msvc': 4.18.0 - '@rollup/rollup-win32-ia32-msvc': 4.18.0 - '@rollup/rollup-win32-x64-msvc': 4.18.0 + '@rollup/rollup-android-arm-eabi': 4.24.0 + '@rollup/rollup-android-arm64': 4.24.0 + '@rollup/rollup-darwin-arm64': 4.24.0 + '@rollup/rollup-darwin-x64': 4.24.0 + '@rollup/rollup-linux-arm-gnueabihf': 4.24.0 + '@rollup/rollup-linux-arm-musleabihf': 4.24.0 + '@rollup/rollup-linux-arm64-gnu': 4.24.0 + '@rollup/rollup-linux-arm64-musl': 4.24.0 + '@rollup/rollup-linux-powerpc64le-gnu': 4.24.0 + '@rollup/rollup-linux-riscv64-gnu': 4.24.0 + '@rollup/rollup-linux-s390x-gnu': 4.24.0 + '@rollup/rollup-linux-x64-gnu': 4.24.0 + '@rollup/rollup-linux-x64-musl': 4.24.0 + '@rollup/rollup-win32-arm64-msvc': 4.24.0 + '@rollup/rollup-win32-ia32-msvc': 4.24.0 + '@rollup/rollup-win32-x64-msvc': 4.24.0 fsevents: 2.3.3 route-recognizer@0.3.4: {} @@ -26923,6 +23930,11 @@ snapshots: entities: 2.2.0 xml2js: 0.5.0 + rst-selector-parser@2.2.3: + dependencies: + lodash.flattendeep: 4.4.0 + nearley: 2.20.1 + run-async@2.4.1: {} run-parallel@1.2.0: @@ -26999,16 +24011,9 @@ snapshots: parse-srcset: 1.0.2 postcss: 8.4.38 - sass-loader@13.3.2(sass@1.64.1)(webpack@5.75.0): - dependencies: - neo-async: 2.6.2 - webpack: 5.75.0 - optionalDependencies: - sass: 1.64.1 - sass@1.64.1: dependencies: - chokidar: 3.5.2 + chokidar: 4.0.1 immutable: 4.2.2 source-map-js: 1.0.2 @@ -27028,14 +24033,6 @@ snapshots: dependencies: loose-envify: 1.4.0 - schema-utils@3.1.1: - dependencies: - '@types/json-schema': 7.0.15 - ajv: 6.12.6 - ajv-keywords: 3.5.2(ajv@6.12.6) - - scule@1.1.1: {} - seedrandom@3.0.5: {} selderee@0.11.0: @@ -27046,7 +24043,7 @@ snapshots: dependencies: lru-cache: 6.0.0 - send@0.18.0: + send@0.19.0: dependencies: debug: 2.6.9 depd: 2.0.0 @@ -27076,12 +24073,12 @@ snapshots: dependencies: randombytes: 2.1.0 - serve-static@1.15.0: + serve-static@1.16.2: dependencies: - encodeurl: 1.0.2 + encodeurl: 2.0.0 escape-html: 1.0.3 parseurl: 1.3.3 - send: 0.18.0 + send: 0.19.0 transitivePeerDependencies: - supports-color @@ -27113,10 +24110,6 @@ snapshots: inherits: 2.0.4 safe-buffer: 5.2.1 - shallow-clone@3.0.1: - dependencies: - kind-of: 6.0.3 - shallowequal@1.1.0: {} shebang-command@2.0.0: @@ -27167,9 +24160,16 @@ snapshots: side-channel@1.0.4: dependencies: - call-bind: 1.0.2 - get-intrinsic: 1.2.1 - object-inspect: 1.12.3 + call-bind: 1.0.7 + get-intrinsic: 1.2.4 + object-inspect: 1.13.1 + + side-channel@1.0.6: + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + get-intrinsic: 1.2.4 + object-inspect: 1.13.1 siginfo@2.0.0: {} @@ -27189,7 +24189,7 @@ snapshots: dependencies: '@kwsites/file-exists': 1.1.1 '@kwsites/promise-deferred': 1.1.1 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 transitivePeerDependencies: - supports-color @@ -27205,7 +24205,7 @@ snapshots: simple-websocket@9.1.0: dependencies: - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.7 queue-microtask: 1.2.3 randombytes: 2.1.0 readable-stream: 3.6.0 @@ -27219,10 +24219,6 @@ snapshots: slash@3.0.0: {} - slash@4.0.0: {} - - slash@5.1.0: {} - slice-ansi@3.0.0: dependencies: ansi-styles: 4.3.0 @@ -27235,6 +24231,8 @@ snapshots: astral-regex: 2.0.0 is-fullwidth-code-point: 3.0.0 + slick@1.12.2: {} + slugify@1.4.7: {} smart-buffer@4.2.0: @@ -27245,29 +24243,27 @@ snapshots: dot-case: 3.0.4 tslib: 2.6.2 - snowflake-sdk@1.9.2(asn1.js@5.4.1)(encoding@0.1.13): + snowflake-sdk@1.12.0(asn1.js@5.4.1)(encoding@0.1.13): dependencies: - '@aws-sdk/client-s3': 3.478.0 - '@azure/storage-blob': 12.11.0(encoding@0.1.13) - '@google-cloud/storage': 6.11.0(encoding@0.1.13) + '@aws-sdk/client-s3': 3.666.0 + '@aws-sdk/node-http-handler': 3.374.0 + '@azure/storage-blob': 12.18.0(encoding@0.1.13) + '@google-cloud/storage': 7.12.1(encoding@0.1.13) '@techteamer/ocsp': 1.0.1 - agent-base: 6.0.2 asn1.js: 5.4.1 asn1.js-rfc2560: 5.0.1(asn1.js@5.4.1) asn1.js-rfc5280: 3.0.0 - axios: 1.6.7(debug@3.2.7) + axios: 1.7.7 big-integer: 1.6.51 bignumber.js: 9.1.2 binascii: 0.0.2 bn.js: 5.2.1 browser-request: 0.3.3 - debug: 3.2.7(supports-color@5.5.0) expand-tilde: 2.0.2 - extend: 3.0.2 - fast-xml-parser: 4.2.7 + fast-xml-parser: 4.4.1 fastest-levenshtein: 1.0.16 generic-pool: 3.9.0 - glob: 9.3.2 + glob: 10.4.5 https-proxy-agent: 7.0.2 jsonwebtoken: 9.0.2 mime-types: 2.1.35 @@ -27277,18 +24273,19 @@ snapshots: open: 7.4.2 python-struct: 1.1.3 simple-lru-cache: 0.0.2 - tmp: 0.2.1 + toml: 3.0.0 uuid: 8.3.2 - winston: 3.8.2 + winston: 3.14.2 transitivePeerDependencies: - aws-crt + - debug - encoding - supports-color socks-proxy-agent@6.2.1: dependencies: agent-base: 6.0.2 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.7 socks: 2.7.1 transitivePeerDependencies: - supports-color @@ -27304,6 +24301,8 @@ snapshots: source-map-js@1.2.0: {} + source-map-js@1.2.1: {} + source-map-support@0.5.13: dependencies: buffer-from: 1.1.2 @@ -27338,7 +24337,7 @@ snapshots: spdx-license-ids@3.0.12: {} - spex@3.2.0: {} + spex@3.3.0: {} split-on-first@1.1.0: {} @@ -27366,21 +24365,19 @@ snapshots: sqlstring@2.3.3: {} - sse-channel@4.0.0: {} - ssh2-sftp-client@7.2.3: dependencies: concat-stream: 2.0.0 promise-retry: 2.0.1 - ssh2: 1.11.0 + ssh2: 1.15.0 - ssh2@1.11.0: + ssh2@1.15.0: dependencies: asn1: 0.2.6 bcrypt-pbkdf: 1.0.2 optionalDependencies: - cpu-features: 0.0.4 - nan: 2.17.0 + cpu-features: 0.0.10 + nan: 2.20.0 sshpk@1.17.0: dependencies: @@ -27409,16 +24406,16 @@ snapshots: standard-as-callback@2.1.0: {} - start-server-and-test@2.0.3: + start-server-and-test@2.0.8: dependencies: arg: 5.0.2 bluebird: 3.7.2 check-more-types: 2.24.0 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.7 execa: 5.1.1 lazy-ass: 1.6.0 ps-tree: 1.2.0 - wait-on: 7.2.0(debug@4.3.4) + wait-on: 8.0.1(debug@4.3.7) transitivePeerDependencies: - supports-color @@ -27428,27 +24425,21 @@ snapshots: statuses@2.0.1: {} - std-env@3.6.0: {} + std-env@3.7.0: {} stickyfill@1.1.1: {} stop-iteration-iterator@1.0.0: dependencies: - internal-slot: 1.0.5 + internal-slot: 1.0.7 stoppable@1.1.0: {} - store2@2.14.2: {} - - storybook@8.1.4(@babel/preset-env@7.24.6(@babel/core@7.24.6))(encoding@0.1.13)(react-dom@18.2.0(react@18.2.0))(react@18.2.0): + storybook@8.3.5: dependencies: - '@storybook/cli': 8.1.4(@babel/preset-env@7.24.6(@babel/core@7.24.6))(encoding@0.1.13)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@storybook/core': 8.3.5 transitivePeerDependencies: - - '@babel/preset-env' - bufferutil - - encoding - - react - - react-dom - supports-color - utf-8-validate @@ -27467,6 +24458,8 @@ snapshots: stream-shift@1.0.1: {} + stream-shift@1.0.3: {} + streamsearch@1.1.0: {} strict-event-emitter-types@2.0.0: {} @@ -27509,6 +24502,13 @@ snapshots: define-properties: 1.2.1 es-abstract: 1.22.5 + string.prototype.trim@1.2.9: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + es-object-atoms: 1.0.0 + string.prototype.trimend@1.0.6: dependencies: call-bind: 1.0.7 @@ -27521,6 +24521,12 @@ snapshots: define-properties: 1.2.1 es-abstract: 1.22.5 + string.prototype.trimend@1.0.8: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-object-atoms: 1.0.0 + string.prototype.trimstart@1.0.6: dependencies: call-bind: 1.0.7 @@ -27533,6 +24539,12 @@ snapshots: define-properties: 1.2.1 es-abstract: 1.22.5 + string.prototype.trimstart@1.0.8: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-object-atoms: 1.0.0 + string_decoder@0.10.31: {} string_decoder@1.1.1: @@ -27557,8 +24569,6 @@ snapshots: strip-final-newline@2.0.0: {} - strip-final-newline@3.0.0: {} - strip-indent@3.0.0: dependencies: min-indent: 1.0.1 @@ -27567,10 +24577,6 @@ snapshots: strip-json-comments@3.1.1: {} - strip-literal@2.0.0: - dependencies: - js-tokens: 8.0.3 - strnum@1.0.5: {} strtok3@6.3.0: @@ -27596,19 +24602,13 @@ snapshots: stylis: 4.3.1 tslib: 2.6.2 - stylehacks@6.0.1(postcss@8.4.38): - dependencies: - browserslist: 4.23.0 - postcss: 8.4.38 - postcss-selector-parser: 6.0.16 - stylis@4.3.1: {} sucrase@3.35.0: dependencies: - '@jridgewell/gen-mapping': 0.3.2 + '@jridgewell/gen-mapping': 0.3.5 commander: 4.1.1 - glob: 10.3.10 + glob: 10.4.5 lines-and-columns: 1.2.4 mz: 2.7.0 pirates: 4.0.6 @@ -27618,7 +24618,7 @@ snapshots: dependencies: component-emitter: 1.3.0 cookiejar: 2.1.4 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.7 fast-safe-stringify: 2.1.1 form-data: 4.0.0 formidable: 3.5.1 @@ -27649,21 +24649,11 @@ snapshots: supports-preserve-symlinks-flag@1.0.0: {} - svgo@3.1.0: - dependencies: - '@trysound/sax': 0.2.0 - commander: 7.2.0 - css-select: 5.1.0 - css-tree: 2.3.1 - css-what: 6.1.0 - csso: 5.0.5 - picocolors: 1.0.0 - swagger-ui-dist@5.11.0: {} - swagger-ui-express@5.0.0(express@4.19.2): + swagger-ui-express@5.0.1(express@4.21.1): dependencies: - express: 4.19.2 + express: 4.21.1 swagger-ui-dist: 5.11.0 swagger2openapi@7.0.8(encoding@0.1.13): @@ -27684,18 +24674,13 @@ snapshots: symbol-tree@3.2.4: {} - synckit@0.8.8: - dependencies: - '@pkgr/core': 0.1.1 - tslib: 2.6.2 - syslog-client@1.1.1: {} - tailwindcss@3.4.3: + tailwindcss@3.4.3(ts-node@10.9.2(@types/node@18.16.16)(typescript@5.6.2)): dependencies: '@alloc/quick-lru': 5.2.0 arg: 5.0.2 - chokidar: 3.5.2 + chokidar: 4.0.1 didyoumean: 1.2.2 dlv: 1.1.3 fast-glob: 3.3.2 @@ -27703,14 +24688,14 @@ snapshots: is-glob: 4.0.3 jiti: 1.21.0 lilconfig: 2.1.0 - micromatch: 4.0.5 + micromatch: 4.0.8 normalize-path: 3.0.0 object-hash: 3.0.0 - picocolors: 1.0.0 + picocolors: 1.0.1 postcss: 8.4.38 postcss-import: 15.1.0(postcss@8.4.38) postcss-js: 4.0.1(postcss@8.4.38) - postcss-load-config: 4.0.2(postcss@8.4.38) + postcss-load-config: 4.0.2(postcss@8.4.38)(ts-node@10.9.2(@types/node@18.16.16)(typescript@5.6.2)) postcss-nested: 6.0.1(postcss@8.4.38) postcss-selector-parser: 6.0.16 resolve: 1.22.8 @@ -27766,17 +24751,6 @@ snapshots: transitivePeerDependencies: - supports-color - teeny-request@8.0.3(encoding@0.1.13): - dependencies: - http-proxy-agent: 5.0.0 - https-proxy-agent: 5.0.1 - node-fetch: 2.7.0(encoding@0.1.13) - stream-events: 1.0.5 - uuid: 9.0.1 - transitivePeerDependencies: - - encoding - - supports-color - teeny-request@9.0.0(encoding@0.1.13): dependencies: http-proxy-agent: 5.0.0 @@ -27792,40 +24766,18 @@ snapshots: dependencies: memoizerific: 1.11.3 - temp-dir@2.0.0: {} - - temp@0.8.4: - dependencies: - rimraf: 2.6.3 - temp@0.9.4: dependencies: mkdirp: 0.5.6 rimraf: 2.6.3 - tempy@1.0.1: - dependencies: - del: 6.1.1 - is-stream: 2.0.1 - temp-dir: 2.0.0 - type-fest: 0.16.0 - unique-string: 2.0.0 - - terser-webpack-plugin@5.3.6(webpack@5.75.0): - dependencies: - '@jridgewell/trace-mapping': 0.3.25 - jest-worker: 27.5.1 - schema-utils: 3.1.1 - serialize-javascript: 6.0.2 - terser: 5.16.1 - webpack: 5.75.0 - terser@5.16.1: dependencies: - '@jridgewell/source-map': 0.3.2 - acorn: 8.11.2 + '@jridgewell/source-map': 0.3.6 + acorn: 8.12.1 commander: 2.20.3 source-map-support: 0.5.21 + optional: true test-exclude@6.0.0: dependencies: @@ -27833,6 +24785,12 @@ snapshots: glob: 7.2.3 minimatch: 3.1.2 + test-exclude@7.0.1: + dependencies: + '@istanbuljs/schema': 0.1.3 + glob: 10.4.5 + minimatch: 9.0.5 + text-hex@1.0.0: {} text-table@0.2.0: {} @@ -27849,22 +24807,21 @@ snapshots: throttleit@1.0.0: {} - through2@2.0.5: - dependencies: - readable-stream: 2.3.7 - xtend: 4.0.2 - through@2.3.8: {} timeago.js@4.0.2: {} tiny-invariant@1.3.3: {} - tinybench@2.5.1: {} + tinybench@2.9.0: {} - tinypool@0.8.4: {} + tinyexec@0.3.0: {} - tinyspy@2.2.0: {} + tinypool@1.0.1: {} + + tinyrainbow@1.2.0: {} + + tinyspy@3.0.2: {} title-case@3.0.3: dependencies: @@ -27884,6 +24841,8 @@ snapshots: dependencies: rimraf: 3.0.2 + tmp@0.2.3: {} + tmpl@1.0.5: {} to-fast-properties@2.0.0: {} @@ -27892,8 +24851,6 @@ snapshots: dependencies: is-number: 7.0.0 - tocbot@4.21.0: {} - toidentifier@1.0.1: {} token-stream@1.0.0: {} @@ -27903,6 +24860,8 @@ snapshots: '@tokenizer/token': 0.3.0 ieee754: 1.2.1 + toml@3.0.0: {} + toposort@2.0.2: {} touch@3.1.0: @@ -27938,19 +24897,19 @@ snapshots: triple-beam@1.3.0: {} - ts-api-utils@1.0.1(typescript@5.5.2): + ts-api-utils@1.0.1(typescript@5.6.2): dependencies: - typescript: 5.5.2 + typescript: 5.6.2 ts-dedent@2.2.0: {} - ts-essentials@7.0.3(typescript@5.5.2): - dependencies: - typescript: 5.5.2 - - ts-essentials@9.4.2(typescript@5.5.2): + ts-essentials@10.0.2(typescript@5.6.2): optionalDependencies: - typescript: 5.5.2 + typescript: 5.6.2 + + ts-essentials@7.0.3(typescript@5.6.2): + dependencies: + typescript: 5.6.2 ts-ics@1.2.2(date-fns@2.30.0)(lodash@4.17.21)(zod@3.23.8): dependencies: @@ -27961,17 +24920,17 @@ snapshots: ts-interface-checker@0.1.13: {} - ts-jest@29.1.1(@babel/core@7.24.0)(@jest/types@29.6.1)(babel-jest@29.6.2(@babel/core@7.24.0))(jest@29.6.2(@types/node@18.16.16))(typescript@5.5.2): + ts-jest@29.1.1(@babel/core@7.24.0)(@jest/types@29.6.1)(babel-jest@29.6.2(@babel/core@7.24.0))(jest@29.6.2(@types/node@18.16.16)(ts-node@10.9.2(@types/node@18.16.16)(typescript@5.6.2)))(typescript@5.6.2): dependencies: bs-logger: 0.2.6 fast-json-stable-stringify: 2.1.0 - jest: 29.6.2(@types/node@18.16.16) + jest: 29.6.2(@types/node@18.16.16)(ts-node@10.9.2(@types/node@18.16.16)(typescript@5.6.2)) jest-util: 29.5.0 json5: 2.2.3 lodash.memoize: 4.1.2 make-error: 1.3.6 semver: 7.6.0 - typescript: 5.5.2 + typescript: 5.6.2 yargs-parser: 21.1.1 optionalDependencies: '@babel/core': 7.24.0 @@ -27980,6 +24939,25 @@ snapshots: ts-map@1.0.3: {} + ts-node@10.9.2(@types/node@18.16.16)(typescript@5.6.2): + dependencies: + '@cspotcode/source-map-support': 0.8.1 + '@tsconfig/node10': 1.0.11 + '@tsconfig/node12': 1.0.11 + '@tsconfig/node14': 1.0.3 + '@tsconfig/node16': 1.0.4 + '@types/node': 18.16.16 + acorn: 8.12.1 + acorn-walk: 8.3.4 + arg: 4.1.3 + create-require: 1.1.1 + diff: 4.0.2 + make-error: 1.3.6 + typescript: 5.6.2 + v8-compile-cache-lib: 3.0.1 + yn: 3.1.1 + optional: true + ts-toolbelt@9.6.0: {} ts-type@3.0.1(ts-toolbelt@9.6.0): @@ -27989,22 +24967,22 @@ snapshots: tslib: 2.6.2 typedarray-dts: 1.0.0 - tsc-alias@1.8.7: + tsc-alias@1.8.10: dependencies: - chokidar: 3.5.2 + chokidar: 4.0.1 commander: 9.4.1 globby: 11.1.0 mylas: 2.1.13 normalize-path: 3.0.0 plimit-lit: 1.4.1 - tsc-watch@6.0.4(typescript@5.5.2): + tsc-watch@6.2.0(typescript@5.6.2): dependencies: cross-spawn: 7.0.3 node-cleanup: 2.1.2 ps-tree: 1.2.0 string-argv: 0.3.1 - typescript: 5.5.2 + typescript: 5.6.2 tsconfig-paths@4.2.0: dependencies: @@ -28022,32 +25000,32 @@ snapshots: tunnel@0.0.6: {} - turbo-darwin-64@1.13.3: + turbo-darwin-64@2.1.2: optional: true - turbo-darwin-arm64@1.13.3: + turbo-darwin-arm64@2.1.2: optional: true - turbo-linux-64@1.13.3: + turbo-linux-64@2.1.2: optional: true - turbo-linux-arm64@1.13.3: + turbo-linux-arm64@2.1.2: optional: true - turbo-windows-64@1.13.3: + turbo-windows-64@2.1.2: optional: true - turbo-windows-arm64@1.13.3: + turbo-windows-arm64@2.1.2: optional: true - turbo@1.13.3: + turbo@2.1.2: optionalDependencies: - turbo-darwin-64: 1.13.3 - turbo-darwin-arm64: 1.13.3 - turbo-linux-64: 1.13.3 - turbo-linux-arm64: 1.13.3 - turbo-windows-64: 1.13.3 - turbo-windows-arm64: 1.13.3 + turbo-darwin-64: 2.1.2 + turbo-darwin-arm64: 2.1.2 + turbo-linux-64: 2.1.2 + turbo-linux-arm64: 2.1.2 + turbo-windows-64: 2.1.2 + turbo-windows-arm64: 2.1.2 tween-functions@1.2.0: {} @@ -28067,8 +25045,6 @@ snapshots: type-detect@4.0.8: {} - type-fest@0.16.0: {} - type-fest@0.20.2: {} type-fest@0.21.3: {} @@ -28079,6 +25055,8 @@ snapshots: type-fest@2.19.0: {} + type-fest@4.26.1: {} + type-is@1.6.18: dependencies: media-typer: 0.3.0 @@ -28090,7 +25068,7 @@ snapshots: dependencies: call-bind: 1.0.7 get-intrinsic: 1.2.4 - is-typed-array: 1.1.10 + is-typed-array: 1.1.13 typed-array-buffer@1.0.2: dependencies: @@ -28103,7 +25081,7 @@ snapshots: call-bind: 1.0.7 for-each: 0.3.3 has-proto: 1.0.3 - is-typed-array: 1.1.10 + is-typed-array: 1.1.13 typed-array-byte-length@1.0.1: dependencies: @@ -28115,11 +25093,11 @@ snapshots: typed-array-byte-offset@1.0.0: dependencies: - available-typed-arrays: 1.0.5 + available-typed-arrays: 1.0.7 call-bind: 1.0.7 for-each: 0.3.3 has-proto: 1.0.3 - is-typed-array: 1.1.10 + is-typed-array: 1.1.13 typed-array-byte-offset@1.0.2: dependencies: @@ -28134,7 +25112,7 @@ snapshots: dependencies: call-bind: 1.0.7 for-each: 0.3.3 - is-typed-array: 1.1.10 + is-typed-array: 1.1.13 typed-array-length@1.0.5: dependencies: @@ -28145,22 +25123,32 @@ snapshots: is-typed-array: 1.1.13 possible-typed-array-names: 1.0.0 + typed-array-length@1.0.6: + dependencies: + call-bind: 1.0.7 + for-each: 0.3.3 + gopd: 1.0.1 + has-proto: 1.0.3 + is-typed-array: 1.1.13 + possible-typed-array-names: 1.0.0 + typedarray-dts@1.0.0: {} typedarray@0.0.6: {} typedi@0.10.0(patch_hash=sk6omkefrosihg7lmqbzh7vfxe): {} - typescript@5.5.2: {} + typescript@5.6.2: {} uc.micro@1.0.6: {} - uc.micro@2.0.0: {} + uc.micro@2.1.0: {} ufo@1.3.2: {} - uglify-js@3.17.4: - optional: true + ufo@1.5.4: {} + + uglify-js@3.17.4: {} uid-safe@2.1.5: dependencies: @@ -28173,38 +25161,6 @@ snapshots: has-symbols: 1.0.3 which-boxed-primitive: 1.0.2 - unbuild@2.0.0(sass@1.64.1)(typescript@5.5.2): - dependencies: - '@rollup/plugin-alias': 5.1.0(rollup@3.29.4) - '@rollup/plugin-commonjs': 25.0.7(rollup@3.29.4) - '@rollup/plugin-json': 6.1.0(rollup@3.29.4) - '@rollup/plugin-node-resolve': 15.2.3(rollup@3.29.4) - '@rollup/plugin-replace': 5.0.5(rollup@3.29.4) - '@rollup/pluginutils': 5.0.5(rollup@3.29.4) - chalk: 5.3.0 - citty: 0.1.5 - consola: 3.2.3 - defu: 6.1.2 - esbuild: 0.20.2 - globby: 13.2.2 - hookable: 5.5.3 - jiti: 1.21.0 - magic-string: 0.30.5 - mkdist: 1.4.0(sass@1.64.1)(typescript@5.5.2) - mlly: 1.4.2 - pathe: 1.1.1 - pkg-types: 1.0.3 - pretty-bytes: 6.1.1 - rollup: 3.29.4 - rollup-plugin-dts: 6.1.0(rollup@3.29.4)(typescript@5.5.2) - scule: 1.1.1 - untyped: 1.4.0 - optionalDependencies: - typescript: 5.5.2 - transitivePeerDependencies: - - sass - - supports-color - undefsafe@2.0.5: {} underscore@1.12.1: {} @@ -28215,20 +25171,7 @@ snapshots: dependencies: '@fastify/busboy': 2.0.0 - undici@6.18.1: {} - - unicode-canonical-property-names-ecmascript@2.0.0: {} - - unicode-match-property-ecmascript@2.0.0: - dependencies: - unicode-canonical-property-names-ecmascript: 2.0.0 - unicode-property-aliases-ecmascript: 2.1.0 - - unicode-match-property-value-ecmascript@2.1.0: {} - - unicode-property-aliases-ecmascript@2.1.0: {} - - unicorn-magic@0.1.0: {} + undici@6.19.7: {} unique-filename@1.1.1: dependencies: @@ -28240,10 +25183,6 @@ snapshots: imurmurhash: 0.1.4 optional: true - unique-string@2.0.0: - dependencies: - crypto-random-string: 2.0.0 - unist-util-is@6.0.0: dependencies: '@types/unist': 3.0.2 @@ -28267,63 +25206,73 @@ snapshots: unpipe@1.0.0: {} - unplugin-icons@0.17.4(@vue/compiler-sfc@3.4.21)(vue-template-compiler@2.7.14): + unplugin-icons@0.19.0(@vue/compiler-sfc@3.5.11): dependencies: - '@antfu/install-pkg': 0.1.1 - '@antfu/utils': 0.7.6 - '@iconify/utils': 2.1.11 - debug: 4.3.4(supports-color@8.1.1) + '@antfu/install-pkg': 0.3.3 + '@antfu/utils': 0.7.10 + '@iconify/utils': 2.1.25 + debug: 4.3.5 kolorist: 1.8.0 local-pkg: 0.5.0 - unplugin: 1.5.1 + unplugin: 1.11.0 optionalDependencies: - '@vue/compiler-sfc': 3.4.21 - vue-template-compiler: 2.7.14 + '@vue/compiler-sfc': 3.5.11 transitivePeerDependencies: - supports-color + unplugin-vue-components@0.27.3(@babel/parser@7.25.6)(rollup@4.24.0)(vue@3.5.11(typescript@5.6.2)): + dependencies: + '@antfu/utils': 0.7.10 + '@rollup/pluginutils': 5.1.0(rollup@4.24.0) + chokidar: 4.0.1 + debug: 4.3.5 + fast-glob: 3.3.2 + local-pkg: 0.5.0 + magic-string: 0.30.10 + minimatch: 9.0.5 + mlly: 1.7.1 + unplugin: 1.11.0 + vue: 3.5.11(typescript@5.6.2) + optionalDependencies: + '@babel/parser': 7.25.6 + transitivePeerDependencies: + - rollup + - supports-color + unplugin@1.0.1: dependencies: - acorn: 8.11.2 - chokidar: 3.5.2 + acorn: 8.12.1 + chokidar: 4.0.1 webpack-sources: 3.2.3 webpack-virtual-modules: 0.5.0 - unplugin@1.5.1: + unplugin@1.11.0: dependencies: - acorn: 8.11.2 - chokidar: 3.5.2 + acorn: 8.12.1 + chokidar: 4.0.1 webpack-sources: 3.2.3 webpack-virtual-modules: 0.6.1 untildify@4.0.0: {} - untyped@1.4.0: - dependencies: - '@babel/core': 7.22.9 - '@babel/standalone': 7.23.6 - '@babel/types': 7.23.6 - defu: 6.1.2 - jiti: 1.21.0 - mri: 1.2.0 - scule: 1.1.1 - transitivePeerDependencies: - - supports-color - update-browserslist-db@1.0.13(browserslist@4.23.0): dependencies: browserslist: 4.23.0 escalade: 3.1.1 - picocolors: 1.0.0 + picocolors: 1.0.1 upper-case-first@2.0.2: dependencies: tslib: 2.6.2 + upper-case@1.1.3: {} + upper-case@2.0.2: dependencies: tslib: 2.6.2 + uri-js-replace@1.0.1: {} + uri-js@4.4.1: dependencies: punycode: 2.3.1 @@ -28339,20 +25288,9 @@ snapshots: url-value-parser@2.2.0: {} - use-callback-ref@1.3.2(@types/react@18.0.27)(react@18.2.0): + use-sync-external-store@1.2.2(react@18.2.0): dependencies: react: 18.2.0 - tslib: 2.6.2 - optionalDependencies: - '@types/react': 18.0.27 - - use-sidecar@1.1.2(@types/react@18.0.27)(react@18.2.0): - dependencies: - detect-node-es: 1.1.0 - react: 18.2.0 - tslib: 2.6.2 - optionalDependencies: - '@types/react': 18.0.27 utf7@1.0.2: dependencies: @@ -28376,18 +25314,25 @@ snapshots: uuencode@0.0.4: {} + uuid@10.0.0: {} + uuid@8.3.2: {} uuid@9.0.1: {} v3-infinite-loading@1.2.2: {} + v8-compile-cache-lib@3.0.1: + optional: true + v8-to-istanbul@9.1.0: dependencies: - '@jridgewell/trace-mapping': 0.3.18 + '@jridgewell/trace-mapping': 0.3.25 '@types/istanbul-lib-coverage': 2.0.4 convert-source-map: 1.9.0 + valid-data-url@3.0.1: {} + validate-npm-package-license@3.0.4: dependencies: spdx-correct: 3.1.1 @@ -28403,85 +25348,89 @@ snapshots: core-util-is: 1.0.2 extsprintf: 1.3.0 - vite-node@1.6.0(@types/node@18.16.16)(sass@1.64.1)(terser@5.16.1): + vite-node@2.1.2(@types/node@18.16.16)(sass@1.64.1)(terser@5.16.1): dependencies: cac: 6.7.14 - debug: 4.3.4(supports-color@8.1.1) - pathe: 1.1.1 - picocolors: 1.0.0 - vite: 5.2.12(@types/node@18.16.16)(sass@1.64.1)(terser@5.16.1) + debug: 4.3.7 + pathe: 1.1.2 + vite: 5.4.8(@types/node@18.16.16)(sass@1.64.1)(terser@5.16.1) transitivePeerDependencies: - '@types/node' - less - lightningcss - sass + - sass-embedded - stylus - sugarss - supports-color - terser - vite-plugin-dts@3.7.3(@types/node@18.16.16)(rollup@3.29.4)(typescript@5.5.2)(vite@5.2.12(@types/node@18.16.16)(sass@1.64.1)(terser@5.16.1)): + vite-plugin-dts@4.2.3(@types/node@18.16.16)(rollup@4.24.0)(typescript@5.6.2)(vite@5.4.8(@types/node@18.16.16)(sass@1.64.1)(terser@5.16.1)): dependencies: - '@microsoft/api-extractor': 7.39.0(@types/node@18.16.16) - '@rollup/pluginutils': 5.1.0(rollup@3.29.4) - '@vue/language-core': 1.8.27(typescript@5.5.2) - debug: 4.3.4(supports-color@8.1.1) + '@microsoft/api-extractor': 7.47.7(@types/node@18.16.16) + '@rollup/pluginutils': 5.1.0(rollup@4.24.0) + '@volar/typescript': 2.4.6 + '@vue/language-core': 2.1.6(typescript@5.6.2) + compare-versions: 6.1.1 + debug: 4.3.7 kolorist: 1.8.0 - typescript: 5.5.2 - vue-tsc: 1.8.27(typescript@5.5.2) + local-pkg: 0.5.0 + magic-string: 0.30.11 + typescript: 5.6.2 optionalDependencies: - vite: 5.2.12(@types/node@18.16.16)(sass@1.64.1)(terser@5.16.1) + vite: 5.4.8(@types/node@18.16.16)(sass@1.64.1)(terser@5.16.1) transitivePeerDependencies: - '@types/node' - rollup - supports-color - vite@5.2.12(@types/node@18.16.16)(sass@1.64.1)(terser@5.16.1): + vite@5.4.8(@types/node@18.16.16)(sass@1.64.1)(terser@5.16.1): dependencies: - esbuild: 0.20.2 - postcss: 8.4.38 - rollup: 4.18.0 + esbuild: 0.24.0 + postcss: 8.4.47 + rollup: 4.24.0 optionalDependencies: '@types/node': 18.16.16 fsevents: 2.3.3 sass: 1.64.1 terser: 5.16.1 - vitest-mock-extended@1.3.1(typescript@5.5.2)(vitest@1.6.0(@types/node@18.16.16)(jsdom@23.0.1)(sass@1.64.1)(terser@5.16.1)): + vitest-mock-extended@2.0.2(typescript@5.6.2)(vitest@2.1.2(@types/node@18.16.16)(jsdom@23.0.1)(sass@1.64.1)(terser@5.16.1)): dependencies: - ts-essentials: 9.4.2(typescript@5.5.2) - typescript: 5.5.2 - vitest: 1.6.0(@types/node@18.16.16)(jsdom@23.0.1)(sass@1.64.1)(terser@5.16.1) + ts-essentials: 10.0.2(typescript@5.6.2) + typescript: 5.6.2 + vitest: 2.1.2(@types/node@18.16.16)(jsdom@23.0.1)(sass@1.64.1)(terser@5.16.1) - vitest@1.6.0(@types/node@18.16.16)(jsdom@23.0.1)(sass@1.64.1)(terser@5.16.1): + vitest@2.1.2(@types/node@18.16.16)(jsdom@23.0.1)(sass@1.64.1)(terser@5.16.1): dependencies: - '@vitest/expect': 1.6.0 - '@vitest/runner': 1.6.0 - '@vitest/snapshot': 1.6.0 - '@vitest/spy': 1.6.0 - '@vitest/utils': 1.6.0 - acorn-walk: 8.3.2 - chai: 4.3.10 - debug: 4.3.4(supports-color@8.1.1) - execa: 8.0.1 - local-pkg: 0.5.0 - magic-string: 0.30.8 - pathe: 1.1.1 - picocolors: 1.0.0 - std-env: 3.6.0 - strip-literal: 2.0.0 - tinybench: 2.5.1 - tinypool: 0.8.4 - vite: 5.2.12(@types/node@18.16.16)(sass@1.64.1)(terser@5.16.1) - vite-node: 1.6.0(@types/node@18.16.16)(sass@1.64.1)(terser@5.16.1) - why-is-node-running: 2.2.2 + '@vitest/expect': 2.1.2 + '@vitest/mocker': 2.1.2(@vitest/spy@2.1.2)(vite@5.4.8(@types/node@18.16.16)(sass@1.64.1)(terser@5.16.1)) + '@vitest/pretty-format': 2.1.2 + '@vitest/runner': 2.1.2 + '@vitest/snapshot': 2.1.2 + '@vitest/spy': 2.1.2 + '@vitest/utils': 2.1.2 + chai: 5.1.1 + debug: 4.3.7 + magic-string: 0.30.11 + pathe: 1.1.2 + std-env: 3.7.0 + tinybench: 2.9.0 + tinyexec: 0.3.0 + tinypool: 1.0.1 + tinyrainbow: 1.2.0 + vite: 5.4.8(@types/node@18.16.16)(sass@1.64.1)(terser@5.16.1) + vite-node: 2.1.2(@types/node@18.16.16)(sass@1.64.1)(terser@5.16.1) + why-is-node-running: 2.3.0 optionalDependencies: '@types/node': 18.16.16 jsdom: 23.0.1 transitivePeerDependencies: - less - lightningcss + - msw - sass + - sass-embedded - stylus - sugarss - supports-color @@ -28489,49 +25438,43 @@ snapshots: void-elements@3.1.0: {} + vscode-uri@3.0.8: {} + vue-agile@2.0.0: dependencies: lodash.orderby: 4.6.0 lodash.throttle: 4.1.1 - vue-boring-avatars@1.3.0(vue@3.4.21(typescript@5.5.2)): + vue-boring-avatars@1.3.0(vue@3.5.11(typescript@5.6.2)): dependencies: - vue: 3.4.21(typescript@5.5.2) + vue: 3.5.11(typescript@5.6.2) - vue-chartjs@5.2.0(chart.js@4.4.0)(vue@3.4.21(typescript@5.5.2)): + vue-chartjs@5.2.0(chart.js@4.4.0)(vue@3.5.11(typescript@5.6.2)): dependencies: chart.js: 4.4.0 - vue: 3.4.21(typescript@5.5.2) + vue: 3.5.11(typescript@5.6.2) - vue-component-meta@2.0.19(typescript@5.5.2): + vue-component-meta@2.1.6(typescript@5.6.2): dependencies: - '@volar/typescript': 2.2.5 - '@vue/language-core': 2.0.19(typescript@5.5.2) + '@volar/typescript': 2.4.6 + '@vue/language-core': 2.1.6(typescript@5.6.2) path-browserify: 1.0.1 - vue-component-type-helpers: 2.0.19 + vue-component-type-helpers: 2.1.6 optionalDependencies: - typescript: 5.5.2 + typescript: 5.6.2 - vue-component-type-helpers@1.8.25: {} + vue-component-type-helpers@2.1.6: {} - vue-component-type-helpers@2.0.19: {} - - vue-component-type-helpers@2.0.22: {} - - vue-demi@0.14.5(vue@3.4.21(typescript@5.5.2)): + vue-demi@0.14.10(vue@3.5.11(typescript@5.6.2)): dependencies: - vue: 3.4.21(typescript@5.5.2) + vue: 3.5.11(typescript@5.6.2) - vue-demi@0.14.6(vue@3.4.21(typescript@5.5.2)): + vue-docgen-api@4.76.0(vue@3.5.11(typescript@5.6.2)): dependencies: - vue: 3.4.21(typescript@5.5.2) - - vue-docgen-api@4.76.0(vue@3.4.21(typescript@5.5.2)): - dependencies: - '@babel/parser': 7.24.0 - '@babel/types': 7.24.0 - '@vue/compiler-dom': 3.4.21 - '@vue/compiler-sfc': 3.4.21 + '@babel/parser': 7.25.6 + '@babel/types': 7.25.6 + '@vue/compiler-dom': 3.5.11 + '@vue/compiler-sfc': 3.5.11 ast-types: 0.16.1 esm-resolve: 1.0.8 hash-sum: 2.0.0 @@ -28539,12 +25482,12 @@ snapshots: pug: 3.0.3 recast: 0.23.6 ts-map: 1.0.3 - vue: 3.4.21(typescript@5.5.2) - vue-inbrowser-compiler-independent-utils: 4.71.1(vue@3.4.21(typescript@5.5.2)) + vue: 3.5.11(typescript@5.6.2) + vue-inbrowser-compiler-independent-utils: 4.71.1(vue@3.5.11(typescript@5.6.2)) vue-eslint-parser@9.4.2(eslint@8.57.0): dependencies: - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 eslint: 8.57.0 eslint-scope: 7.2.2 eslint-visitor-keys: 3.4.3 @@ -28555,69 +25498,50 @@ snapshots: transitivePeerDependencies: - supports-color - vue-i18n@9.2.2(vue@3.4.21(typescript@5.5.2)): + vue-i18n@9.2.2(vue@3.5.11(typescript@5.6.2)): dependencies: '@intlify/core-base': 9.2.2 '@intlify/shared': 9.2.2 '@intlify/vue-devtools': 9.2.2 '@vue/devtools-api': 6.4.5 - vue: 3.4.21(typescript@5.5.2) + vue: 3.5.11(typescript@5.6.2) - vue-inbrowser-compiler-independent-utils@4.71.1(vue@3.4.21(typescript@5.5.2)): + vue-inbrowser-compiler-independent-utils@4.71.1(vue@3.5.11(typescript@5.6.2)): dependencies: - vue: 3.4.21(typescript@5.5.2) + vue: 3.5.11(typescript@5.6.2) - vue-json-pretty@2.2.4(vue@3.4.21(typescript@5.5.2)): + vue-json-pretty@2.2.4(vue@3.5.11(typescript@5.6.2)): dependencies: - vue: 3.4.21(typescript@5.5.2) + vue: 3.5.11(typescript@5.6.2) - vue-markdown-render@2.0.1(typescript@5.5.2): + vue-markdown-render@2.2.1(vue@3.5.11(typescript@5.6.2)): dependencies: - markdown-it: 12.3.2 - vue: 3.4.21(typescript@5.5.2) - transitivePeerDependencies: - - typescript + markdown-it: 13.0.2 + vue: 3.5.11(typescript@5.6.2) - vue-markdown-render@2.1.1(vue@3.4.21(typescript@5.5.2)): + vue-router@4.4.5(vue@3.5.11(typescript@5.6.2)): dependencies: - markdown-it: 12.3.2 - vue: 3.4.21(typescript@5.5.2) + '@vue/devtools-api': 6.6.4 + vue: 3.5.11(typescript@5.6.2) - vue-router@4.2.2(vue@3.4.21(typescript@5.5.2)): + vue-tsc@2.1.6(typescript@5.6.2): dependencies: - '@vue/devtools-api': 6.5.0 - vue: 3.4.21(typescript@5.5.2) - - vue-template-compiler@2.7.14: - dependencies: - de-indent: 1.0.2 - he: 1.2.0 - - vue-tsc@1.8.27(typescript@5.5.2): - dependencies: - '@volar/typescript': 1.11.1 - '@vue/language-core': 1.8.27(typescript@5.5.2) + '@volar/typescript': 2.4.6 + '@vue/language-core': 2.1.6(typescript@5.6.2) semver: 7.6.0 - typescript: 5.5.2 - - vue-tsc@2.0.19(typescript@5.5.2): - dependencies: - '@volar/typescript': 2.2.5 - '@vue/language-core': 2.0.19(typescript@5.5.2) - semver: 7.6.0 - typescript: 5.5.2 + typescript: 5.6.2 vue3-touch-events@4.1.3: {} - vue@3.4.21(typescript@5.5.2): + vue@3.5.11(typescript@5.6.2): dependencies: - '@vue/compiler-dom': 3.4.21 - '@vue/compiler-sfc': 3.4.21 - '@vue/runtime-dom': 3.4.21 - '@vue/server-renderer': 3.4.21(vue@3.4.21(typescript@5.5.2)) - '@vue/shared': 3.4.21 + '@vue/compiler-dom': 3.5.11 + '@vue/compiler-sfc': 3.5.11 + '@vue/runtime-dom': 3.5.11 + '@vue/server-renderer': 3.5.11(vue@3.5.11(typescript@5.6.2)) + '@vue/shared': 3.5.11 optionalDependencies: - typescript: 5.5.2 + typescript: 5.6.2 w3c-keyname@2.2.6: {} @@ -28629,10 +25553,10 @@ snapshots: dependencies: xml-name-validator: 5.0.0 - wait-on@7.2.0(debug@4.3.4): + wait-on@8.0.1(debug@4.3.7): dependencies: - axios: 1.6.7(debug@4.3.4) - joi: 17.11.0 + axios: 1.7.7(debug@4.3.7) + joi: 17.13.3 lodash: 4.17.21 minimist: 1.2.8 rxjs: 7.8.1 @@ -28643,14 +25567,16 @@ snapshots: dependencies: makeerror: 1.0.12 - watchpack@2.4.0: + web-resource-inliner@6.0.1(encoding@0.1.13): dependencies: - glob-to-regexp: 0.4.1 - graceful-fs: 4.2.11 - - wcwidth@1.0.1: - dependencies: - defaults: 1.0.4 + ansi-colors: 4.1.3 + escape-goat: 3.0.0 + htmlparser2: 5.0.1 + mime: 2.6.0 + node-fetch: 2.7.0(encoding@0.1.13) + valid-data-url: 3.0.1 + transitivePeerDependencies: + - encoding web-streams-polyfill@3.2.1: {} @@ -28666,37 +25592,6 @@ snapshots: webpack-virtual-modules@0.6.1: {} - webpack@5.75.0: - dependencies: - '@types/eslint-scope': 3.7.4 - '@types/estree': 0.0.51 - '@webassemblyjs/ast': 1.11.1 - '@webassemblyjs/wasm-edit': 1.11.1 - '@webassemblyjs/wasm-parser': 1.11.1 - acorn: 8.11.2 - acorn-import-assertions: 1.8.0(acorn@8.11.2) - browserslist: 4.23.0 - chrome-trace-event: 1.0.3 - enhanced-resolve: 5.13.0 - es-module-lexer: 0.9.3 - eslint-scope: 5.1.1 - events: 3.3.0 - glob-to-regexp: 0.4.1 - graceful-fs: 4.2.11 - json-parse-even-better-errors: 2.3.1 - loader-runner: 4.3.0 - mime-types: 2.1.35 - neo-async: 2.6.2 - schema-utils: 3.1.1 - tapable: 2.2.1 - terser-webpack-plugin: 5.3.6(webpack@5.75.0) - watchpack: 2.4.0 - webpack-sources: 3.2.3 - transitivePeerDependencies: - - '@swc/core' - - esbuild - - uglify-js - whatwg-encoding@2.0.0: dependencies: iconv-lite: 0.6.3 @@ -28705,6 +25600,8 @@ snapshots: dependencies: iconv-lite: 0.6.3 + whatwg-fetch@3.6.20: {} + whatwg-mimetype@3.0.0: {} whatwg-mimetype@4.0.0: {} @@ -28744,14 +25641,6 @@ snapshots: is-weakmap: 2.0.1 is-weakset: 2.0.2 - which-typed-array@1.1.11: - dependencies: - available-typed-arrays: 1.0.5 - call-bind: 1.0.7 - for-each: 0.3.3 - gopd: 1.0.1 - has-tostringtag: 1.0.0 - which-typed-array@1.1.15: dependencies: available-typed-arrays: 1.0.7 @@ -28768,7 +25657,7 @@ snapshots: dependencies: isexe: 2.0.0 - why-is-node-running@2.2.2: + why-is-node-running@2.3.0: dependencies: siginfo: 2.0.0 stackback: 0.0.2 @@ -28782,30 +25671,30 @@ snapshots: dependencies: string-width: 4.2.3 - winston-transport@4.5.0: + winston-transport@4.8.0: dependencies: - logform: 2.4.2 - readable-stream: 3.6.0 + logform: 2.6.1 + readable-stream: 4.5.2 triple-beam: 1.3.0 - winston@3.8.2: + winston@3.14.2: dependencies: - '@colors/colors': 1.5.0 + '@colors/colors': 1.6.0 '@dabh/diagnostics': 2.0.3 async: 3.2.4 is-stream: 2.0.1 - logform: 2.4.2 + logform: 2.6.1 one-time: 1.0.0 readable-stream: 3.6.0 safe-stable-stringify: 2.4.0 stack-trace: 0.0.10 triple-beam: 1.3.0 - winston-transport: 4.5.0 + winston-transport: 4.8.0 with@7.0.2: dependencies: - '@babel/parser': 7.24.6 - '@babel/types': 7.24.6 + '@babel/parser': 7.25.6 + '@babel/types': 7.25.6 assert-never: 1.2.1 babel-walk: 3.0.0-canary-5 @@ -28852,12 +25741,6 @@ snapshots: wrappy@1.0.2: {} - write-file-atomic@2.4.3: - dependencies: - graceful-fs: 4.2.11 - imurmurhash: 0.1.4 - signal-exit: 3.0.7 - write-file-atomic@4.0.2: dependencies: imurmurhash: 0.1.4 @@ -28900,7 +25783,7 @@ snapshots: xregexp@2.0.0: {} - xss@1.0.14: + xss@1.0.15: dependencies: commander: 2.20.3 cssfilter: 0.0.10 @@ -28930,6 +25813,16 @@ snapshots: yargs-parser@21.1.1: {} + yargs@16.2.0: + dependencies: + cliui: 7.0.4 + escalade: 3.1.1 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.3 + y18n: 5.0.8 + yargs-parser: 20.2.9 + yargs@17.0.1: dependencies: cliui: 7.0.4 @@ -28965,13 +25858,14 @@ snapshots: buffer-crc32: 0.2.13 fd-slicer: 1.1.0 - yocto-queue@0.1.0: {} + yn@3.1.1: + optional: true - yocto-queue@1.0.0: {} + yocto-queue@0.1.0: {} yup@0.32.11: dependencies: - '@babel/runtime': 7.23.6 + '@babel/runtime': 7.24.7 '@types/lodash': 4.14.195 lodash: 4.17.21 lodash-es: 4.17.21 @@ -28979,22 +25873,18 @@ snapshots: property-expr: 2.0.5 toposort: 2.0.2 - z-schema@5.0.5: + zod-class@0.0.15(zod@3.23.8): dependencies: - lodash.get: 4.4.2 - lodash.isequal: 4.5.0 - validator: 13.7.0 - optionalDependencies: - commander: 9.4.1 + type-fest: 4.26.1 + zod: 3.23.8 - zod-to-json-schema@3.22.4(zod@3.22.4): - dependencies: - zod: 3.22.4 - - zod-to-json-schema@3.23.0(zod@3.23.8): + zod-to-json-schema@3.23.3(zod@3.23.8): dependencies: zod: 3.23.8 - zod@3.22.4: {} - zod@3.23.8: {} + + zx@8.1.4: + optionalDependencies: + '@types/fs-extra': 11.0.4 + '@types/node': 18.16.16 diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index add43b6c00..055a466738 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -3,3 +3,37 @@ packages: - packages/@n8n/* - packages/@n8n_io/* - cypress + +catalog: + '@types/basic-auth': ^1.1.3 + '@types/express': ^4.17.21 + '@types/lodash': ^4.14.195 + '@types/uuid': ^10.0.0 + '@types/xml2js': ^0.4.14 + axios: 1.7.4 + basic-auth: 2.0.1 + chokidar: 4.0.1 + fast-glob: 3.2.12 + form-data: 4.0.0 + lodash: 4.17.21 + luxon: 3.4.4 + nanoid: 3.3.6 + typedi: 0.10.0 + uuid: 10.0.0 + xml2js: 0.6.2 + xss: 1.0.15 + zod: 3.23.8 + '@langchain/core': 0.3.3 + +catalogs: + frontend: + '@vitest/coverage-v8': ^2.1.2 + '@sentry/vue': ^8.33.1 + vite: ^5.4.8 + vitest: ^2.1.2 + vitest-mock-extended: ^2.0.2 + vue: ^3.5.11 + vue-router: ^4.4.5 + vue-tsc: ^2.1.6 + vue-markdown-render: ^2.2.1 + highlight.js: ^11.8.0 diff --git a/scripts/ensure-zx.mjs b/scripts/ensure-zx.mjs new file mode 100644 index 0000000000..61f3265bfb --- /dev/null +++ b/scripts/ensure-zx.mjs @@ -0,0 +1,17 @@ +import { accessSync, constants } from 'node:fs'; +import { execSync } from 'node:child_process'; + +const ZX_PATH = 'node_modules/.bin/zx'; + +if (!zxExists()) { + execSync('pnpm --frozen-lockfile --filter n8n-monorepo install', { stdio: 'inherit' }); +} + +function zxExists() { + try { + accessSync(ZX_PATH, constants.F_OK); + return true; + } catch { + return false; + } +} diff --git a/scripts/format.mjs b/scripts/format.mjs index 11b267b477..69bbfce015 100644 --- a/scripts/format.mjs +++ b/scripts/format.mjs @@ -5,42 +5,61 @@ import path from 'path'; import { execSync } from 'child_process'; const prettier = path.resolve('node_modules', '.bin', 'prettier'); +const biome = path.resolve('node_modules', '.bin', 'biome'); -if (!fs.existsSync(prettier)) { - throw new Error( - [`Prettier not found at path: ${prettier}`, 'Please run `pnpm i` first'].join('\n'), - ); -} +[prettier, biome].forEach((bin) => { + if (!fs.existsSync(bin)) { + throw new Error( + [`${path.basename(bin)} not found at path: ${bin}`, 'Please run `pnpm i` first'].join('\n'), + ); + } +}); -const config = path.resolve('.prettierrc.js'); +const prettierConfig = path.resolve('.prettierrc.js'); +const biomeConfig = path.resolve('biome.jsonc'); const ignore = path.resolve('.prettierignore'); -const ROOT_DIRS_TO_SKIP = ['.git', 'node_modules', 'packages']; -const EXTENSIONS_TO_FORMAT = ['.md', '.yml', '.js', '.json', '.ts']; +const ROOT_DIRS_TO_SKIP = ['.git', 'node_modules', 'packages', '.turbo', 'cypress']; +const EXTENSIONS_TO_FORMAT_WITH_PRETTIER = ['.yml']; +const EXTENSIONS_TO_FORMAT_WITH_BIOME = ['.js', '.json', '.ts']; const isDir = (path) => fs.lstatSync(path).isDirectory(); -const isTarget = (path) => EXTENSIONS_TO_FORMAT.some((ext) => path.endsWith(ext)); +const isPrettierTarget = (path) => + EXTENSIONS_TO_FORMAT_WITH_PRETTIER.some((ext) => path.endsWith(ext)); +const isBiomeTarget = (path) => EXTENSIONS_TO_FORMAT_WITH_BIOME.some((ext) => path.endsWith(ext)); -const walk = (dir, test, found = []) => { +const biomeTargets = []; +const prettierTargets = []; + +const walk = (dir) => { fs.readdirSync(dir).forEach((entry) => { const entryPath = path.resolve(dir, entry); - if (isDir(entryPath)) walk(entryPath, test, found); - if (test(entryPath)) found.push(entryPath); + if (isDir(entryPath)) walk(entryPath); + if (isPrettierTarget(entryPath)) prettierTargets.push(entryPath); + if (isBiomeTarget(entryPath)) biomeTargets.push(entryPath); }); - - return found; }; -const targets = fs - .readdirSync('.') - .reduce((acc, cur) => { - if (ROOT_DIRS_TO_SKIP.includes(cur)) return acc; - if (isDir(cur)) return [...acc, ...walk(cur, isTarget)]; - if (isTarget(cur)) return [...acc, cur]; +fs.readdirSync('.').forEach((cur) => { + if (ROOT_DIRS_TO_SKIP.includes(cur)) return; + if (isDir(cur)) walk(cur); + if (isPrettierTarget(cur)) prettierTargets.push(cur); + if (isBiomeTarget(cur)) biomeTargets.push(cur); +}); - return acc; - }, []) - .join(' '); +execSync( + [ + prettier, + '--config', + prettierConfig, + '--ignore-path', + ignore, + '--write', + prettierTargets.join(' '), + ].join(' '), +); -execSync([prettier, '--config', config, '--ignore-path', ignore, '--write', targets].join(' ')); +execSync( + [biome, 'format', '--write', `--config-path=${biomeConfig}`, biomeTargets.join(' ')].join(' '), +); diff --git a/scripts/prepare.mjs b/scripts/prepare.mjs new file mode 100644 index 0000000000..d729715347 --- /dev/null +++ b/scripts/prepare.mjs @@ -0,0 +1,10 @@ +#!/usr/bin/env node + +import { execSync } from 'node:child_process'; + +// Skip lefthook install in CI or Docker build +if (process.env.CI || process.env.DOCKER_BUILD) { + process.exit(0); +} + +execSync('./node_modules/.bin/lefthook install', { stdio: 'inherit' }); diff --git a/scripts/reset.mjs b/scripts/reset.mjs new file mode 100644 index 0000000000..48aecf761b --- /dev/null +++ b/scripts/reset.mjs @@ -0,0 +1,30 @@ +// Resets the repository by deleting all untracked files except for few exceptions. +import { $, echo, fs } from 'zx'; + +$.verbose = true; +process.env.FORCE_COLOR = '1'; + +const excludePatterns = ['/.vscode/', '/.idea/', '.env']; +const excludeFlags = excludePatterns.map((exclude) => ['-e', exclude]).flat(); + +echo( + `This will delete all untracked files except for those matching the following patterns: ${excludePatterns.map((x) => `"${x}"`).join(', ')}.`, +); + +const answer = await question('❓ Do you want to continue? (y/n) '); + +if (!['y', 'Y', ''].includes(answer)) { + echo('Aborting...'); + process.exit(0); +} + +echo('🧹 Cleaning untracked files...'); +await $({ verbose: false })`git clean -fxd ${excludeFlags}`; +// In case node_modules is not removed by git clean +fs.removeSync('node_modules'); + +echo('⏬ Running pnpm install...'); +await $`pnpm install`; + +echo('🏗️ Running pnpm build...'); +await $`pnpm build`; diff --git a/tsconfig.json b/tsconfig.json index 1b0bd25650..5734019388 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -3,8 +3,8 @@ "strict": true, "module": "commonjs", "moduleResolution": "node", - "target": "es2019", - "lib": ["es2019", "es2020", "es2022.error"], + "target": "es2021", + "lib": ["es2021", "es2022.error", "dom"], "removeComments": true, "useUnknownInCatchVariables": true, "forceConsistentCasingInFileNames": true, diff --git a/turbo.json b/turbo.json index f0b0521623..cd38cc5045 100644 --- a/turbo.json +++ b/turbo.json @@ -1,17 +1,80 @@ { - "$schema": "https://turborepo.org/schema.json", - "pipeline": { + "$schema": "https://turbo.build/schema.json", + "ui": "stream", + "globalEnv": ["CI", "COVERAGE_ENABLED"], + "tasks": { "clean": { "cache": false }, + "build:backend": { + "dependsOn": ["n8n#build"] + }, + "build:frontend": { + "dependsOn": ["n8n-editor-ui#build"] + }, + "build:nodes": { + "dependsOn": ["n8n-nodes-base#build", "@n8n/n8n-nodes-langchain#build"] + }, "build": { "dependsOn": ["^build"], "outputs": ["dist/**"] }, - "typecheck": {}, + "typecheck": { + "dependsOn": ["^typecheck"] + }, "format": {}, + "format:check": {}, + "lint:backend": { + "dependsOn": [ + "@n8n/api-types#lint", + "@n8n/config#lint", + "@n8n/client-oauth2#lint", + "@n8n/imap#lint", + "@n8n/permissions#lint", + "n8n-workflow#lint", + "n8n-core#lint", + "n8n-node-dev#lint", + "n8n#lint" + ] + }, + "lint:frontend": { + "dependsOn": [ + "@n8n/chat#lint", + "@n8n/codemirror-lang#lint", + "@n8n/storybook#lint", + "n8n-cypress#lint", + "n8n-design-system#lint", + "n8n-editor-ui#lint" + ] + }, + "lint:nodes": { + "dependsOn": ["n8n-nodes-base#lint", "@n8n/n8n-nodes-langchain#lint"] + }, "lint": {}, "lintfix": {}, + "test:backend": { + "dependsOn": [ + "@n8n/api-types#test", + "@n8n/config#test", + "@n8n/client-oauth2#test", + "@n8n/imap#test", + "@n8n/permissions#test", + "n8n-workflow#test", + "n8n-core#test", + "n8n#test" + ] + }, + "test:frontend": { + "dependsOn": [ + "@n8n/chat#test", + "@n8n/codemirror-lang#test", + "n8n-design-system#test", + "n8n-editor-ui#test" + ] + }, + "test:nodes": { + "dependsOn": ["n8n-nodes-base#test", "@n8n/n8n-nodes-langchain#test"] + }, "test": {}, "watch": { "cache": false,